From 794b27ced80c517841b1b1acc8bddfe2f2f9c87e Mon Sep 17 00:00:00 2001 From: Cory Hall <43035978+corymhall@users.noreply.github.com> Date: Mon, 7 Oct 2024 08:23:31 -0400 Subject: [PATCH] chore(deps): upgrade dependencies (#89) Upgrades project dependencies. See details in [workflow run]. [Workflow Run]: https://github.com/corymhall/cdk-diff-action/actions/runs/11206315819 ------ *Automatically created by projen via the "upgrade-main" workflow* --------- Signed-off-by: github-actions Co-authored-by: github-actions --- db.json.gz | Bin 1830659 -> 1839733 bytes dist/index.js | 10587 +++++++++++++++++++++++--------------------- dist/index.js.map | 2 +- dist/licenses.txt | 24 + package.json | 16 +- yarn.lock | 1571 +++---- 6 files changed, 6449 insertions(+), 5751 deletions(-) diff --git a/db.json.gz b/db.json.gz index 3bba3ef33d59bd98055fb0fa280a32158536c7e6..58a878abdd0f91c442296dea415fee25b1580537 100644 GIT binary patch literal 1839733 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

gKXz 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

Spdg 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¬Ey;S|DI7K{) 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

<( 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 XNa)ptc*335GUm%RWqw^@Y{bV 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

_loDAV5|RSU?!&QYa~7Iy~k7?wkUf zXH^2p>JXGfakmZs<29x+pNQNKoxM#c*%?1o4^8}uBTt5^V$b4hsy3`ITwJYC34ArG zlbc!Ks2ZFxk?@$re_rpNbE;B9v-8lIqt}ew>s<*>P|TMy=sd+NFfj8M7Im-AJgYNU z1rgHuQ%g#-sSS@3bs39gfoKIqmfV_Hsd_srSzhF|Kb?BFQ8N7MNaWmoHyeHx%^I3E zmVsNG!$A&6>F%P^zQ)r*T!QD)0$4zyxbxEhKpwxMks#j)D$kNjQe^=k*Z|iepG_^b zL8&x@%OuNP9~O4;jfwFgFPU1Cm5n>YJSbv3jUpj^mgI-Uc$P>VHIx$D{iigUP0yTK zs@m5gH>1L2)lrhn@X8UC{21obmn2dQEPn4d=;pT+CM%7UqhLe69z~ zbANaz9p0LFU6NZ^g@I`J-ufm=5w&n)EPke8%R6%ppnpJLEQ*p@rhw*q32@|1SUbl5W`uIE5Zr%s0k}JU#D>e0TZ4HxHQl8Y1Vt`1SJmWf2^bQsMg3={4b~ z_qMjTyw3_+LqEmK)XCx&c-3O&kg>h^(&ZlWGQZxMge=DVE=^|RJDIF6pVUp}kL~^6 z@cdvB#t`iDb3iOF5TRp9a=&W`DSNp1lTKe><&{Y*PIO?t8PU@hXD2UBTMqjm$)L1@ zzien01%G$tn@~Hvhc4uvRu|$@*PgnHmb~_soWyn66}fg$s!;D!2;(>vxJ7=Y4LsD} z&_;?b=fOCLydvrJ!6_p=LJ5$W6c2$aDsYx7!I+((Pk~ynLPbn4`vfKVx{pe3b=Lz8 z7Di$$vbR$E4U@?f(W}^7z2W^M31jtVReum96F-cpYMd$nUqiGp=Ll7nJtQf5ETEoJ z#DP!A;MUlR-AOw3V{Yr>M~oC!a#p zc(*oTD@EXtV3#$O`}wT?f#6JE$Dc`YY_R$*@4X*I(B%O%BVovb{M^o!KNd~ag+qp! z_lm1$UwOu;K4!)9O`0bF!~r^*JjnT-2ve_r!kp6L5ssFcaTe?5xY%R{AiraH0$^op z_BBtY9{y)GOofQI6pdfvY7qf(QQw40V-(r5-@S+SpGpV~F$^Hxq`9ptZSc_rQO$9=<5WF6lF6H&h&1-k(7 zeJi2_yp)6`fQO3=bF6t$SFG_t=AnUoJ11aouFO^84Rwz7L<)<6v)NF-ed|C2qDdeC zhD4HL+j%&umDkrja(17|lkPEG9&4)N0t<`lWJSv)?=4XWr3eLaf|_2O=`s!DVL0`p z8-HAsf#O=b+a-FDn^!R+^A)maxPk|2k2Cm30Ejd>EDQe2yfopz=@|*mvN zQqBwPKR4uD*MhLP+E1mH23{-y2#(3fm>>5(<5{$4ax#nZaFhSe{7}JJrIy*ZOc=oS zw<(^Z-e>ATiXU$1mUv)iQJZ)(eW=#MrHpKP1Yl zLOo2Lj=!t8$wt)a1kH?Jk}y7tM@hv_n{OChkd0Yb<+p+N;^NawZmI(Rhc6U9C8Vi8 zgpkLUjPfc|*a6dJ&GRV^^OG=xNaZZd?nKZkeLOHnu-52W6);pik@z{ndQDQ_iV8^o zn|uG9`4NSC-MoG=(vVMp9+OVD_`e{{x>(D1u)n06!cN&W92S2J$Hc+GD%x&jWy&j0 z@)LD@Kf1r$*1#jh16I``6kpI*b?kIoH@h0q)j`$O0YGcQUf%;!y$}aA<@0G zWZm5Yf0kUVVv7mnm86}DmTN9+FOBCv`2V# zL@-OWD^kDa<&)YKG^xn%X~q@bKreF>Nrepx&wHgA&*Fd_qs#M1ww;D<-RB}6JF|sq zoEUZ&QUmV)&QJZJuJ>XDR0OWZ$d-r$-Wz2dfu#<~&@y|J3j8KXF62g0_=i8TzODwb zf1p!Qn1Ia2;+1D_aD0At`R<~Bb@Ju-;_|Ow-d|mO_;P-6+&}+va{BAp@hK;!6ux$I zQT!6}I@8md+3mgUjiZB|js4!X_oBD$eR%hhe0#H4Q$B-r({H^o?l3$TIB5&~>oV!e8@%)4e}kkfLcFgQ$?%jtie7myyk4F+JAmeJijOY zfbWST;|{x+iuhXi>F|#8cxqi{gNm;YWMaXbc#>IW(V+j3QIRy85polY*PlzH~r}}o5#aVpq7axgba&=4vSp!aAkSY z<@2n!S?R4hZbgaRk#TvS-itVYmxjT(Ue3&|w5%W4^2;-b8|GN!2R5-}E#`s1;wlU2 zX!=>UC_iGU)xucb?JV=A;Z#InEPl-3(MfnKn38J-&-_~e0aQN%bUFlIF*ss=S}$|> z#asMQ8HGjMZsO;gx3i2ztGFY^#rJcbPb;?qpbqf>>u(iLI@D~kinqSC%=t9G|0IuO zbve{J4h{AsfCL_L(ekb|DzQ0wQ|Wv0&9RH!CT;OBz^PmmRa^~@uhw4+HbwXa2l8`S zj$rG{!sML3QmWKoTBbZLj-7~?78r+sZNdb!(xuh^nLlYI6V<&pFf&J{)Swkf#jup{ zg`gJF$}Y=iCl-`L22{5P?DeNi86J&%3!C1n{^#p2XZ;VaytiJ(Kw;)xhvS&Ku>PuH z0j|UGuY1LJ{gDwkw0K>k70vI}=|%f{WOJJ`sA*@9P2m@fq}Xu|9#xz-t(~w$yjq>Y zK85jk2?NLJRiR%?OrQ~)0ShGCqLad>G!7e!t>Rvi6q(R2(bn1!WQnH{=DdOeV2t6x zwnJLcVo|O7O`X_Q|7MxXz53Tr@~U5;ey@TIt_OMTx6;GzrtD`WBQZB18&0mxRND>5 z-V>KPea@z85^Gxv5@|$Z-Q1}YN7oN(WYP5_rx+GU2L`b?x@T;pTB}6*5%jBGmt5A8 znzfr}qk*^vOb4;FZfC9zzY`O`k;*(z#vw#8GW;pwRbui1FS4-?mIF#I8AIM4N3$#! zX-8O|#t9wLz%@84WIa7(1h$93ZC$)UA;t;&p;l|wR*|O|aYP+3fA(qK-!>BW&;7}5 z;MW`b=6C9?eEOz0n#JVhlr%58KkOO4$2)^o@SYdm<$gQ(THH?~W#D8U`;+A4UHy*Q z-)iX4y8%xjbt#T@Ij8%ZTames>xXQuXIOzNy?gSvckKxs8G0mw}ZEw4`vr&L~&ul)0 zSq&38HlilNgqvw9APFjGvH8{vkab8t~#$K6^F5kUz=285;1gZA7O+bTXm1kLP z@-+go5#2M2t_gexp<2g%h@oyVo)<4h^>>vvBV?aent(dt-X~un#_Q^q1{3}4$3fI0 zgHjP%LD5vC;JT11kfK+ZN;BkNN?+~8<;~fLv+J9)<1fb-ACEs>U7dbB{wug{uV^9a z7npyN3aISBCKfZID5IszW_@0eK>imNi&8Ee^;4JFuSUCI+yrnJf4aH&aC-IAse4uh zj0bI@Cn6o|4~g0K@@dTT{)cxb{h9$;lNFypke?NW`tmT|I>vrU6)clg@iQeeD<6b9 zF(h%5yZ7tq)%DrMM_4C)*W4{x)X11vYKQ2V5@zOE*z{g~y!ePaa6;g?L2*1n$pVR{ zL>_YhSXm9H8XAZ0UJ*A7w}U_t_|OB90}_LQ#G+S>^!nk13@KUasR1$zeN0rf`^cao%uHB(>_&%`$Jo@?>L5_n45PYjax=X!-~|k-R$wHZVpS0& zU&%si)sr>z20L5ZTidL@IW!0%^~4~2lxKnL|lmRS9T$k6s<0u;vt+A-7)QAqP#Mc3Z#b>^_}4~ z>IXqcTB&cr97*V_MG4Wq`n>~iiZ;Gn{OZuLjZC;5cN>cv_Yv0Cqs)+KXE^TcF4<(v zW%-wL4nPB5CP~zal)dWA9x}U*lW`o<4Vik=B#9hMv3I<)tR6!Ka@n>MQa8T}=w-3k z@411SxKX*1%v1TE%w@dHe#KKj-HqR3x9cx|IsNOv`#;`*GluZr7ni3W&!CFwEqeW#g|Xlr&nJtFD}ln)sNYVE*zuXqCH=dua2apblWileqQ~NS4)UK72~U<_`y5zv*}&KrNjg z$s$LaQFNhA{5d8JLnT8T05&rZ)4%$-p=B8ZVCO&Nb{)3;!Z~cet zEq(v(EZY=*mT&gn?(FRB^m@JC?(XjHTluTElerq~5(&@3j$bG;b`Fd7+n_|a4% zf_eN`wj9BR93~TQbCWALdFnItcge8oz?QTtk!prWG zSrm}?5w=B=l65FS6T{5g)*$-i@>8Wu@FQr-s(S=s4|HV;k+}$aI`C`O1g(Q|V@~zH z!D0_2XF@ft`XdmQJ9r|z*nP9DD11rZE($f+TCyD*$s4-m!0_b`_IVy%@D~OM%mU8* zJX4%18XJ2i>KUr?!p*n9!dUh~D|w`+)3bm~>?<)A-?~+dvWKYb8&ydqAk?#odUnE{ z1<7W^-9ae;$gwzq?)14pT>wuo@)TO8LW`$@Cgkj-LEO0BF>hBN=_wxkjO*Njq7>}g z#qYJ-kFRU{Tb(|vs|}0x&*^9JdurkbQCL)xOCTC7LNKtaw2ghovP9@F#8{PJBSSm_ ze}zqPt9QmWl>t%K4s9%{_!N+#QM_9%;p|(L_eT-i)&f4%ZVbGaEOufd!=QhDe(`w# z4oze7!J;>1sh`FEj!}4Wo{Seb!sQq0l|qz^$B3J2X#w1)hcv_^BsUTU;b;@W5TyQ) zdyq>;f)DF6?#wc7HG{(M(V3=Kd!CH5t0Y>Ovgk~RXBQ=as+N5^h<)s5*^C^y*v%`u zbF&<%DCP@rqn%+i3%~(>n_xd|T44k&Z4@>wnf~43ylWGvY zDy3L$JvKPKOCDn40g6v&ObEp7Y`lR#+^A#534E^$Zfux;!rAd}7JoKup7FO<;#&Xw zTvoBU*%fAZkfpODiX_LFQU9C?bv9f?7-O}N{RhA(v4tOiKahmt1#SdmFS#muaWRPf z&AN)D;y0ZIAV%s<=?BZ)!<@^JuICn3^ermfkPeQ{0NDE2?;B%L%6TF?gB13$xBZ+A z^_&g$oDKDd$%g7xhtk%Y4b|IOUp7>UHX`kJm;}}9JtsjuCqZ?Q1l2R5na32Ys6B!I zKYMS!+%}Ts3%?4YdTzAsOUjgFyKH|G9YIT~Ds^cqkuG;nRgak@k`me=z(#_SRWUbW z-eKNwp5%+OCxqCibH zE%SSXrA+a2s)fXe7Z=C2>`Ps|2iLuk?n46{H5kB7LGW1`4-tmJ)EW%(I0u#%L|zc6 zVBN`I;R4fYGlrR$Dc!D3ytF$clEF}Di$={gw8>*12=UGv7Z>{GQ*zJyB!oO z^$65rOk_}fog2`duzYPx=(wHfcriPw`dZRt@h+K(Sk?#Vj|*2xFNx=(v`p~5?DgQpOOojDZNkZ|tb4~Q;(CSuXB)8Z^bx3?u;43Ix0vv9Z{A(d2G0WjLOw%Yw@bK!V%5WY7I$b3; zPE~_F3Csc(vx`!BQ|%6KwG9xKMKHHR0xv}tgLO1|J3R1~^4{yGd$DS(T|1Yl(OFV{ zEj_kF_Dg4{Rn(1s{wf-Y@=^5U?(XjHNz{#=%x3tXIDQfhqbJwbpb6uTucIeQJ&7KV zqMyHlwk}~=>aBr#{wR8ato2Fs1nQYMA07C_rauB2d=xz)1FCub=d3bbLAcD*MT(1% zXS8uW zZLc~DxcA;>2`DiljSlj>hyiI+#t~3;^yuyI;IUIA*4%a25K#n%swJvK$Cd)*Ycf|W zsHcccjqgAf0-XA}m_VTBPp6c1{g3FU@A5?f|2-6U@AK*V(>yD${}KJ9|I0tWlk&qq zqM!aQMez^AHvLz@LCj828@RNg{TJcg5zKZ8QcbkRm9reBs+laR%o zyomk@JT}ju$WvKi$VA`?S1u;a)u{xjuqG^Fo9piN(@xZQTLMdlt``O@y81E4zl8e~ zhLS6m6Q6<=+ZI^7Vhj2^x5f7uvE&c$2Sjz=Q zD`4?$wNjMBX_A@ptMvo3q9%ur037YNI!%cZ&ky{`Sbg;a}~KK>7?IZ(e{>`-o3eL!@jWWq0> zFG@o+>qXGKJf;Dw<<$QcN)7;$E! zs4+6HaTUN|6g!26Ia06QEgLv=9JLeHJ(`MCNqyaGX2Tuad)X>#=!2~Qh)Hq=mz-IP zF+^`CWkM09HEFVaA$$Tl&bC57N%rd_pX#dJkAgg|zUS5yl5_6#0$cP_g@RnZ^^1+U zzG?20G5sXFqD5S8`Uz}#-2>6InM>Jxt@UIXApd=sdnxDUAG){g@b-QT(l-#x+E(mA z@P-|6zqa9#b}O;(9@fr%>OvEN9cYZf12)M94)9zS6X^QN7;UP8IXnIHG|q2Bdd(7{ zO3V;j3K}PsBeMxQP{dXwx)RR3kT*%bP*qvt&O~_2=@hCCg9?FRT-IM1Ovu^q^}+=q znAY^9*d%aYDytLIT^I6rZW4KmH1#L%jS2U@Hl=}>E6XC8^slZUjB(I9<1-xIs-%CB27Ea?ST9nlLx@} z?lgjPPBKf}rvk$27jbCPE9wpALZVx5d}mFm!t`T?I=Y~Pa)1twW23jg48L&;>7p%8 zNt?7_s!oL%r|BMqHk)a6bYKdpz`*vN>vM{$>y>uGeF!WJx~ccf^6S>X_xLO-h5DdO zy}$Y`YWzJNx9@x!J%gvaJJEOft-OJ9QDZp~V70Pi!b*beqgv5|;0zlUfkw^t9+%Ut z=d5nA!|d;)Y!HavQ&eBw5{7cCyW;FECFwvUoIvu6;jAJR#Vi^Z5W=a=fGK2hQiW|G z4~OzF-iYkQT3A9KT1+|+T85V1#Z_Tv-xqf58a4?x?tM~|0-VuW1Bbsgo7gst^b@s< zSD(<*VZdc8v{Ob3>9D*n9+>&1%Y5Fevjz}0;r|B&eIsy^LbB4 zk63?#v^1P2uP?F4kY}%him~eBkPY-ywv4K~+cd7;O5&$;%0GkT`6r>gx74}<0!&dGg{KLu15}X& zoEDt`6R9kj&t<6_{^^Km@iVC#e_H#qZdV_l$0iTO4LMnjzlj^!AwRTe>EcnY*12kddLR8NJFgI-Hhg2ZK@DfT0hr znMY1*+CSUKDd1f@%6Ym_)y5z1MCYKs+$IVHf2uY$H8q)~))uuq1fCVHEu zU|zX1r-D)|HS2IMVB!^d;r8H2+nNgA!fTsRfy<3PI~BNtS-LTn3pebF(^_cT+i5J! z<5%jbVgDU(zKkXB5t*vYjK9?5FuOM#v|$y$qFh1Lz=_w5dj`1MF8 zXiHdb3BYAFD@Z+xI5uHrHP; zOT!_MCSnF;C+a^o7pslkC(lL4HtM`?Zs;XF+@iyy>d&xIyp^Cf_bPR})lthU_6pmw zdY{9PHPv%GU6>ucKZS)$WcKS+vn>i^(s~%1Heo=LYf5&()2*%82pubdI2pxFWVxkL z|5cbH#56S(G-d(P+az7p_z)K&n)uf3d$X_#r)sx!S6{x5u^YGRd{KUKAB60pRkq0s z@nvV|)+AeBngMnS z%V^Lt!;(-gBC#iZh2)EB!H#_=>!@AU2%>M6D7n>mvz8T^^xRWLhjYmtx02hrUKSp; z?HiHM70CWB9lS*D2R^<|d3z=zjhRz-m@QEZ@K5`d)(d7ifJGH})NfT+ch;T2o44?0 zS3Be?f?^G^r)Cly=Gqm7AU;c$Uq_P1#^-0iCyZAD0*Yr6t~(SZZ0Gi(#xz=paZVIv z(PLK~x}7n$mHMuD%MekM-AY9StWtky(6OdTq3i}YN2ScYk+cZ?7yL0T#nyI?$CPAO zr~*A89ab7xr?JTu8)g_Vr(j^e)&R|$g7 zrPH|9_AMl*ksKjv8zYk-!A`jz++d%kA4&>00lz#HMLuIQGXE|8u`)*(>4^;5`4pKM z5)F`-r6}cawCN%>2}i^+3?t^f82m6;{SuawJy)|+U4%63s(-2OzZP;K!`ppyu-9^% zQesS*&%r7Nd8v>M;JtoT;G#27( z4gJe3TE=w2FuOudYTI(57@bnsc<`JaH7cGjjW~{jjcVDuX>?jX9Ols#M^j?43q5Xl zw}bzW89l^K-FYM#On|=pi3YXVVd`HTU+T?)f4ry0m?ju_1z5?Sl~<}mAYeE!qn}O^ zRi57Grmc;^X;B|%jrf4;vC-P&mz53ROrsKHnaTQKjQYz!t8cTUy}Dk|o0KJGl|;TF zvj0Jkc*No_fGewX%zU1L<*6m@wRw0ZSjJZSX8x!TVn@(3% z!5p|&US56RLmrXJD}F2wH1m|?x4B3dqyqG8Q5fnm#bhuIxu);f_#eyp?-%;hdKrI~ z8`5e_Od0Nog4benxS)2u3qzw2GB!;8^4xkJw&|RzOE=hS)@$FB_uURWDs?J*wwsJw z3ZJkT8xJbk(v4@Z!QT-^8jqU7qXx=9=Y!_q`D$( zCfIb)Z>FfVZKgb z9MK}<$O-RLf|+Vu5B3-pY%1ilg6d@?%91K;u-fS8e|h1qiVZR&bMq`nRY$6M+2ctb&!PmXf!rMtkXhcbNl`>Q6__^)^&igIYpi!w% z*U_V=k2RJ8=F4j|FMsrj;xaAs`P125SES>oUw{2Fezv=}zdPQ2wkvv5w!7n4_#N%e zrQcpX+n@G!zn<>)dSf}6PDhbOiZ3MF*P!`-hc)QxHNcuLf2sbM#DBr)_?4Ft8h6L{ z@9xNSAKq`vx~ML_HY#F>VaY{Pn-7lLziXfMsz&*Pd^XRsaB%l9 z6e)R}spRUqRNjwKrLihTaO^-DvL$t*--YvstB1F6GD`pngK9#h5OM`&1Yu)P$Yx7T z0AElu-$aG9q?K^#R=HKQwq#gA|MHAACa_RhU>-9+&W+-KZC!42`|-AV*Q?cVA<9w~ z*+AZNqrIkNUG}J5emu zbthV6P^4gz7gQ3{F80<;WY6|UnO(M^7L1w^sENi&Osg(&?Es7_WKyNgy%23~i!ht1 zQe>|Ei6>Jd*4k`DU_K4Bd@mvnmJ@0lX_d6=RQ-G&<`t;(l7>)z>bAzn3iKQ%6jfh@s~bbP^g$H?>$2z2Km@EONUnz>k zsRZpP+s+zB0}a-OFDqjU937qy-=7@~-yfV`9$`|g{^8yE<@ZOI{!d45@ZW=Wj2nuYS`%J~@X!4o=<A5QSEi}S(o+sh;U&%gG6?7#o(>EG}l=a>D16Z&A#zj*&$|E&N1 z^zF&;`2E@WVdeM1@!7X0M}Y_59e?|sH(q-DUH|gv;{5n*2+6ji{=xA0$D{X$$CpP3 z!}H6(o1Ejrqi_0ePlg7jzG=VjwaKPgmmZmW_!Jl97m&{&kwkR?6+3LILSkiStk2{( zYb*tYoaD0^!RP2uv%mo{QP?t-6Ck+}P&t=O8PS1Ruj5JUfwZAjUSh(ijZbinI7A+G zmc6Ots<^Nt!G$gm3q0eDdFOfFp~uJ3lP zKUihOR{f^7c20f1B_D5_mD>e*Xr{ipZnnBE79Ax9l*1AimQ1exhz&T2-2RyQmuG7a z$*Ih|tr2G|<{~yV*gtt?JbHzE`A( z`(yQb!y*3%#0WV3+<#Y}y;#|R)qYmI(bo3 z=w_R!AULJiSo7Vb8pejQt?1Ts(FXbKU1EGchDun+k!EIIS_>LY09yu6~yo@5e0MmRf9o{t0WJZ;dJ7H(2O( z?2MMJvqgqlr2HA5FNq*-dS1K862d85*fWoJjr~Tpa`5EfU z@A{W#$7kQ--&hP5|2nul9v&a`PmHSkM9S@1LKp4 zKB}$Q{+z%fu=SC%5oK0{-VS@sX{%*yhJ<6>%6NjaS3La=U=<`cBIOlX7yiY%_AB~|I;mFE+>w=<~iCICuZj~q_&tF34Q*fWvmB#A@5 zCvgPl`0*ZaZA`MdW&ygeeb zY1N`jM%?%PlcUR_`@_lcV0d)KO&%W)@W1_wi<9F6=ju5=J3N0kcz^Wc(b;ei`00Jf za$9}p@GSVL?zHl=YZ`ta^Y>tQbn*V1w`T`tq7b9;ZGU+5uK)M<{ey#}!Jzi@(cg{^ z-kJ}Lef#A6+kyYf@UnlfiV-|u;6BPGImA}2&CB&YA-Ms^*QTnBi^$I!Da|*W+J$Mc zD2o^b8ZCZ0Y)D+eO=NkMZbca=S8bH+EaP5O)u?m;3e1p77s6DZ7;R;DsP(C1abJ|v z?n~1IzUiJIdSUm4{{|A{>qw|cl9(rJi9!!2`j9jGdhOol5N^Jd5SW`?+XQC^Oi0Te zc@do?+2UiQP`rtzNlNXvgYi21j^yIm2BL40RB~zifn24|#qxX1KI~$TU9ZP3^w?#a z1f|Ze@&SyH6(r6>c`&K#xf}4cbu-PjOfz4MFuxxo4F0sWSv+sZy|J@E5WM?Of=B;d z{~%qcQWh6QJ_B^1g*y6(H&V#&-!|~QMmzg={b)j+M7EbmcjFq~VLWI3dk41hl_W$q}UkLH_{8PAjSrwTNhZ@!ovFFK(2B~0Gdv#8|TEWw%ru>+Rm1S z+kD`w-YPBfH6|`JxK8g6tf1TNQoCK|8Z0+gA8Ucx9xH>Eu}u40g4b+U=OQoGm$y0J z1C|wW!O%?Othka;(%qEAXfH#8t-N~i;w2buAXcYJaQiO71x0~-(psp^b~0N*V)(<; z7_RFw>RN?e;&MZJIH1uGxmY}4#CYJf$GA02A*XLN0kW*|tEPAoa|Zz8vmK8NfN)WB zDmoRJxI*HDe=`&=TrY|j%0`y~U=JiKVm78oxvm<%brHDTwUtRp_aj)MNuFhxWngM_ z)Bb^lu3?XG1&$Bz?~H=r(XNSFj|Tk5NQYBZJhq{WzO7I#+@C5A8V=)u#x5^Qn;Ipt)e=mj@Y_g3X zdLLL;=qEw{;rZcqIS?=$_e5HyYbEY8diAXLY~=Buzn=c>?d8eZ<1!d3e?9$M^!D<^ zKl^m9b5(9M=j&WiB_};=kEs-hbO~s^)H^F}98W&_=j`L#%M;4u9$oVgMmh%FEKc=o zIpG<)c2!@&!JVxT;Yn|*s1KNv0ztY7k1Tow!??!s1?9C&3gm$al;wbFX%II+o-A%C zP7m^ULJzF|nd|9VfO#`g{}fp`w56}=1)7N%p#ITFwn)olo>JX_nH;Baz*82yYhV>$T7^f1knjI*u18A4!YNnGZmbNSN=;yD1P=Efa!}%>dz}nJ= zhiuhDw?#yZhbBX>;tt|1-R2fNZ|iLdW+(DzEjlf(o?3>`)h%@OY+U5HqwFflr>heMQ?d%iDarysx@1-!nYFzS3A|i^ z1in8VL?7gx8R>$@$-9g1!1VsC2zigq0YEUg(i}#qQ=DTk1|t}oM$2WX4$S_RU*MeI zz?Cte8{+`)iwjx&0NWLq=aPy9RBMVZCv*8U-BJeLh)4|zMfma}Bgt_Usca`Y%iYT7 zyweES^B0=GQF^%|Q+j8RAR`_+xl&EOGL8;W6Lbu+ismUU26F&Jo07$axZ98=nVZ8D zTEU5d5=i*|BnQz%-6g;R@w$qdWejFW5sWDsFD4%(&QBjr_qNjIO*&4yx?e^Qpyfxh zLb*QNe#e-C46bqkd{o}ZrQb$WOcxNYiy|+YYuGmwpFp7HrePu9syuu{4_C294E8mb zisj8yZ@ambF!1#tL8$IQnL{z>XuuVH4oG3nY^=;_r7?#CUWOT=>~92!Pu{>398gkA5R3fn@Vs_N@JA#jEYykXjQ1;O}62Z$JGl$Q}u@#rmn?Ea`x&S-F>@LrB=K16br z<@J2#7fwoRNJednyIUq_0*jxBbh1e4#jVJl4UHn{!L3lp=tBm@FocSJ{wkyp{rnYf z^Qwxbe(Kbcp^=y%+j>hOb#xoTUpOM}?&@{ZQ*em9* zZLOH7)$yW%TyFV*PCtvnevUWBN#0m~ZdsUZ^KnOL|7P=+TA+nE8max)PoF}N^V2dX z9quU!UQaQ}E{BUD656&DEG*#nVg^N3H%z6wz_Q|&IyP)AdtyGkX~*s^-?Pr{Zk2Ka zJ=To|bGLMbI#sOtp%AAC_&j2;I@BSc{=v#Ozt-9A7adGq$*`=jCe^LJ;E zNAvdNYXje(4uYT3N}!>^rPx(IcNS7dW5BUFo@yxwRpqKNQ!7n%cavInX3Qsl zR-Rzw3|0>$I(B{edaZpb(;04t(mDh%us^^#pAC*KhtcsF*nrR;!7Z@O-``K4PY|bfWf_=|$*UZF?26ehT`@^V#>8ycAU@aYq1~93pI6j~s+L!$>>za5CB);dS$&HAs{U#!0M~7^`%5ax z5BB?$bPJqq=-s!@$|JeyeIx49IuXhX!HemkiD_#h@WXMt@bPTCuPskh#%tEj&b-UM zh2}#8(aweg^UKC$K1nO}tEm?_n#-x#=ZG(>^%0i3FPAwZC)`Y=FTeYHC&{jwVVJXX zrRv7`5-_EnvqhS2>e8&9^%d@`l|bmWz9{}ae(h#hL5`Y&5nM`iULH!QGu&p|9kqS4 ztmuKY6ETFxyFt`n#7SvG(Z!8KMC9nWl`yv7Y88*{ zSd~%I64!^xps=QqrNAi51_2*fGnqN4)jf5RuMTA@uUdD|zR|v4PS_zxrO4?IMCD0iP<>o~E{{-GD^@7Txxhzzk2@Zic&a@lK zG6Mu*DY!!lr^btaEThrIF8D{ zO_7wrE>ubT5Sr?JdV#u4?AfHQHdxF>mi%iGT+_;G*)6*_TJ=V|1;?$wq|Ql;V6V$G zMKJp4QUCJHq$3^oPm!5upkrXe1Gy#2^w|1}ll3kiCy075$>*}^-oc0MSI%uAFtUr7 zrmkRFa^4!-D9I_I>kC>e_#}%IbP+gnfwb*g)#v86l>qSdv*u#B-te6f``Ax3{2C1s zb>AwE{n_4t8(;!Loor-)$!3>HmKG}Rx?m#|PDFuhrJGORV*L6gxq6)H8gfazyJYsjEk^1ij zOhPS*b^OL^WUnpjmRKOZ2aM@f2DFCyP9$d{Nh1-*P!Y)myR4D>5>|n6bLvvgQ!!xz z`f4Wb#!Y8Az((9blZyrh*Qc>o6u*5>H!l;~ zv`{$5sFN~8CU8Pi1GpB+VgX4BeGw*qe5k`!z4~tcm?)nUE4Ah2 z^^X45gh~cKqLSS$>w@{f4duGs8r{x6(3`oH>f1W}xa$_&cK)WNq}USuE;^_%u3zQN zmB!nK9{J0$^*Z7$bLrCdnBB2qGwY9A2a_#xlRV@Ej7dIJ?_44AeS`5=Rm(VPsBl_p zM~}_pxEx0Zd#_(Vz-}43lasxcEg{Aj;0}$)eo6S0UCgI)vgercNnz)qbSq=2Sn`1b zc|Ch}eZA!D!bc-pW%$MeLDQ=~z4r?LYmrPo6msgUu9=br!LA`qd)vH$_6tn3nFj`W zafLA+AC5F1t~`O;2(Chp1Cw>7`r5rjtW8Hw;|q@+W)&FuDiQyyxHRjDBM>S-(0@X9);;2Sn<*Ea1S9 zSlx7;5$m83ZAyQ_*c&5sn=7v22sXCs4RBecbK_NQn(1OQo7~Y@)&_XhG(qeQMF-X} zJ(VT%xh!>~4|OA-X4vj|FUl)N|F>sIhLXv(m>WvmY$I}5ogjtE4iHHS&ZQ@0&9Eo z=-!n44u^%vRI-&gE!$0L8YO|CPJ0xRR8VqSd7DQw@lVJT4>UnctqZv@6Qgw0FAm^H zvWoP{UP;%rr5kRx7n#I z1%$4wb*?R_gQq*1Nd8+v)thv!FOl6L6*pcggw+T*)k;C8HAe+x&OjM$tu}!n{=88= z+NCzFK>r-|*E$dPGey{x6d9#2Nlg00csh}k6xU~~fA}ZGTt<4Mo%q(XK~(1RWD>Ey z%Rm1xfVjAYvOkiJVH=`x?2lOIA=PW&36mpK| zH3ug|{fy{TjP2?EbLz1>%?o?mcD*g$)DS?|5E^WgW`ax9dVB84&rZM@L+%{pX-cv| zNNldXG@?Y2-;%gXbQ()FDUvb!Ei@jEP z+<0JrIY4r)Ats+P4t@aA2slLpk&}Dgbh0VU3)R(abS-Y@Z&;T8H7dGQG5gy>WQ$ZR zg^*uG4w_=*e>S;`gelq9e)V2m6&Oz#Qy^=ZSIM3D)Qy##QJ~yCO|nI)OV)2vE5-pH ztYvm+PdA-mr-%h%m>Bz;dq28?3cNAKr=y$Dm9=nBPLphq{31urFXCh67r+TFWUP@L zohQc``)`l+p>rNy$P5DgLyrcf$l~!`=+Th1>V_|ec`4G+12dGsFnJ__Cp?hA6K5Qu zr!Wlv_jjV0UF3NhTrK?&{@e5{I7Ejl>(^wM^%jyWXiq(WdMFFbl5<$PTaw~fLI=w zWaZNvfmu%g-Vgdi6k{9knX|;OfW|;e+NXip@Y>T+IpRhnsTe0|f^t5l&YB@~s$+oK z&{tByXclSHA`A7L4igZg#)}3cT1y=2%jPO<_PE7P^8vr=nms;S31#}+k>jd9aFcyl zVR4U4z{6u3H>-2DxDh`>sLZ43BAr6$sXdG4(qN(jxW&q~=EPlxH(}L#&Gj0)%M1j$ z;)SLc11vKdzNRchDX)M@=;^OCO$wc8V7E&}mf!J>Gz#wW=1e3C@uW{0DTM1|mWOvZ z5GGXTI_DV?P~XtofXHqAY^^%UV%Dcg|3q0RbPTk|=njuK`y^urrm;$DLAb`M7+_PF zjVYVYr@rDHT@oPh4SI}qC(-r&% zs>$t?Y`{POyj2VU6@VPH3+E7d!_whea}dMps7KLQ{mh`g<}8+R-!myPxYe%;fx42b zhPbOmKB#}fxCl@Ifj0tV5~Y9_tr#GInuCr^OU>GmIpLt?+Mac+fVGH`(h7OtIb?2U zQhDd-LKXlcD6V9GoZraJj}<3C5-rY6t7;8#)wnN&^&%T87|T0gRHG0B092Brk8{X8 z0*qSNBc=f#6>G2Ogg5Q={!eINo#~}^k*E(ut)(oA#hjvShB*R+L=#z{b*8#} zn)u*4m`EG=j$mhSQFf?4dVSViN02naW&3Nt33>B6&+#^!tRemG=>i4bc%IW zg#wWSQ095!Gzn_}Bf0b}FWD2$u>}tA2%Hv%5rarFZ?!x2YPHg%;?e>!9U>N!U`llf z*ou@0?BjV5x1eLx)U5W?QP-L1ytJrFok&cIT+u#RsR^5R4x8&BGEv0vk{$xMmXr+~ z#secWMHXjjps0&Q3D%Kh83@ENL9{}xxZ{S!7>Y33;Y4=p$2fXaNCJzAW&9ZT z)EdJ*-O7FvqUaRjf5HC^ITfMLv1Dh8kh9m7<*ag1BpV4Q8<5xNP8mzPRE(LAB_LfA z(^m=hZZ15JBGy-HDl}LbGZQNpcgXe9$j}`~j(vxcD|ehJ0jb>?WtDw0qqB)-krUKp z!g@#HYaY#KBliS@i1#D12Caf|2Nd+0Pov%c{qO(T>-lomo?h5f@$mwhSzCV4VY);m zkl>7Z1VqQ$(+!Jr%X|*v+{7K5OT9(aida!;6!gOU))l^J-HneYV9&OUg)5zOf|3jj z433(WVcy9o&ha;MmR!Y7RK}*ycR~@#njIt=IN%f-mMl-uicDn?)HyLKSQ=MswKF9= zc{$5(WNj2?wpvU~?+C3~hmn#9$+k&gU`|XV0!HXsV2^(O>gTU)Q7UA4I?3C2uUvB1f{5)bTof+gbe{Lf^&`9URlL{5oRPDZT{rY1G^4^>!;BhG$KA z(;K-Kf*zC>@5xd>KqZUqk7)^SOK4xqC-(KL)hn-7Quk2J*BiGjbefk9=rsN8F0xBd z7kmszxFa;0x3y4Qn}A36&ztDpPIBd#5!oD*5$BcAFmqW2+|$=+YzUtQ*4ED5nfuaw z9pt=WC7>OcNrS)4&C+bWEg<|Jjc-&v&*y1T;fT@rD{y;Y2W`t`Ko%-$V`vC7DOs9z zyJBe+?iXwOk8H5$^ZjxEWBUxK62Rn3hZZPaky?{T;M+Mpzs z+$SMTcg^66a4o7~(_Sv2fl676Dv>i3Rn;|yY6a8^E1gyXrps`^LMTd3D zM2J%yJ0x#lpt&T%4O28o{DH%26zGML(?yC>kq0+Z8KG5^cvVjY*tcYKJVPV-qyFi! zGSLTkKL&fv>3T|3M~A@Sc{@EOxy^*d!MO^7Uq}G~->1iVBg_Yrd^Q&)s-$4;XU$q;4Ypd+2W&B(<%X${)u_k ztKJt4=b|10c7NHoy15r5B!tkPv|i^5RPJU%o@5Jk(^eUGk;-Q^IYwLB@T0&8SVD2m zI~+Ew3s!3JrX}dn7P6_vp%S28O;W6BTPQd<>8%ZfH*j@+JK6@o9B&aGI1sCfJkzaW z6>S_e?9=pKude$xbNhgzT-yul86X{c*#<=fOIYT&qKFw66RT(AF?z>7_7-<+GXrEk ztmSEe4u`Oqyil?Z!s1)BZQMu(scM>x!PA9zfq%#niY~@W^(HB>M%BT^Th)Qm(>YWM zR8%$@JP1X;xVoM%NGqYLu?PSTc5FtSz?LW1q7ai(77)ulF{N5jTF66@U~agDE{)>N z!d?7e!0-y;K=zhjWMz_u@{1M9Nq@ zOAE=(wX&=O6Nhg{iKEj+ksdtvCCsnP{cA?EQ9k4n>vs3mt5-XLlq2E7=GJ!$euk*N ziZoOUoLQk62xcPwkk+mF}T54M5~%=1xS@Tv5o;zM>_Q`db|_8 zRSP&g9kzFuTCqh3r*T>f&5tKhAb`oin__#c&FW}OBH?UdP{b9Jnrbk}hpV5OQ5x`D z6N%&)Wx&1;ty*HX!>*XXUetrjJ&mv-2BM_6WZ5+OcBAg^K@r63!aX*|l4ci&_7D^6 z1GXzA%0$6IF{i+pwQXdlssfpgI6{skD)YsPy=HgyUa3Wj9?3~^Fu?_(fCe&zwWa*R zjbL^R&08)xx}>f%*D$HJnoMiYyN_Sz>9?#t>5N-&0^VA4Kd5|a#2((d(4rkbPB_I* z)Q7D>5h7r$<5KGG#VdJ^RT_476Nh&6k?_@59Gj%qt&fyK9@p#__-jo&9sPJPUmOs0 zIq^x9s7{kNpv>C&J11U;`arnXP6TH9Mdp+v8uc`u6S3&-?_j40@ z>3pRvLshz$w2Q3QCQBF?(-0achlH3l>5kdg>593=`g~99P@%4@2mvj3J(YA5Q3588 zsiWHDN^XpR8QY;lhh{A$JEa8m7W?(%PLNNF&A1r65C_U%7_X}dp}$W#`h%nRgfYnrvgCB?lU|137X zd@C9X+pUToeT(|(Hy7Xb6>6e@TYsF9Q6v%3QaJ;t6hQ7dP;8GCMnMeu%CRD|7haVoOKRG?q8*dDq@tzvJLYrvg^PA6{_O^!e^ zfjW71U<{H*h)#9haQ5Tz;c-8TCD!|Jkjt{0Bu)fJ^fi6mKRpb5DrWJr@7@i9-@)1F z-pX-TnF1uO?fflClk8)lsgL-ey18%zyNgrVP=FfS+D4w3C}MA)yiArn3zPKH?dtFL zdJ&x)yLwO;t$n%p>mLJO->m%g_b+Q7e|Wj#x5H=EPs?YkeR=w#*6ZxWvR;8aFGVc# zEV?N2=*Q=KwMGhj3{19r^L%evgG_HfzI}C}8J1na#jAOU;GFHR&>KRU7%6g1-urSb z-it;swgHk|z?6h?sWU*3h>v-iyxEvdqQw57r^*X+*!XCDd-2v=3}lu>7T3G^PJ~LD?d5*6)N9?324z>w6P>fP&XE}H-kb@jNuO^Mu%q({ND~tr%hS8ip7d6>T+bigK zt>3VlJ8ZlNy15&S38Y}#BbBC=p5Z{f5rqU;)^t5zP)(d0WAqX<6eNExC)d$3ZHy$Q zLlFJ5Khp1vXn;zlNhXiR>W#?a+axZpPsj6hLsi0l-==$I%$-JK-KFO_3JL9Wp^WEC zfRvb$-VFZtzyHUk6d0T1hWhJR*_4KRdh1ud3*RgXRe~~dVOQq9M5LSaR(k__YTJT0 zt(|PR17_r1r%~(I+18%;N8@0=co1ccq!D7CM*BLrctsm83}w&j`zVI?Togk_)#O`nIrs1rYohluyL6u3ycv3wt$?a(iWwApsrz#zwbBGLiHG2K&;3M=FM z8-z;9=q67Wvn_~I&Z7D~Y_@@V4|pB6COGLSj;brY)$7jgMCp`(g?NKhN2r z2gONbd7Bp>jAs1p+M4mJy$v@Yqpq!rj03$&uEaRuEC)scdjz9;yxu18#6Wc@reY#D z@Z-H|MjLJS7jIyfO8B5#Yp5AWhVp} zvRsTL|3E0{fPu8&K;n;9swVnNnI2 z_}gzL;7WlwSK{W~Su)meHZ4cd!M5=f|G6x>c&X)BHomLxI-)$zqUCcmcf~zAj=tox z*F%|yV@AG9#;WYo1-Q*P&r>O~jU-LDSNg-Jc+O8wku}euBlv_XzMlS@q9yF22Ngs`V!J7*E=u2hRZjfeo;=o+`eCK z-!HfCm)m!%x38Ba__fUvtOnOJ25P9lYs0HeDGTBBhWqC$nB<4gn7B|y9Plz2LPccP zNHu7>-TkD9Q}J>0lJbOVh}Q8W1i7(daRl9rM_Vt0wB<(;uSR6SZ@y65hSauVaP=~u z#Wtvr#$a71)b_^I$j$MbO>-VqzOq!=6oS}7luJJOLX#WPo#tF( zeARO+tNZTO79wnT^$YQBNPHVQpI0P1y4+W1fu?Cv!Z?oMr#jvJqmeXM>(a8xHM;c3 zcehHu?Kk?D8+=OyyHSk6Z}Yx><mFq~#UcX!xfZ%?e)|hm-pfX_ro(b8%vSg2Y9tS=keDtVjbt;0#HssW9I`EhTYcvX zx!#+Jw)>?Ygl}S(+hmoxL65W?JjJuTG%(c~$&6YI6gzRNiP(yC2_pY$fpu^;00G!E zY7i&sU#1dVW5=6O<5s9n1GTl%9MhJ5*W}Oz5aJ@0CG$B{Z2HY1#eHjQpHz30D}^?I zqH#UvP0``{gKtT}a_M6uIJnvobz9tOMor&9PXcmA=_zJVXiRv^w*&aG<}HMt%ycHG zp?I6&S(-e>C!A`?0GLlAjUnl*=If(_z4ymwgJJ*d;OPBH|LxhqccWEadVh3zd49R% z)#1_Q>G4^Ac(m$!O|1@(2E+Gf=fmS~jt~071iI0mjyP%i z6EFIoR(`$P)p_NQ!3a=ty(uKG<+L>NH`kv8RN_`uHYcc76NHmA?X^%UpCqDm!AO_~ zid*%10-YGzd96w@`Ot-f)%rpbH#|=BD+tW#CUNa1`Chh{C0M0w9h}z>@(yJ^IP>C4 zl(JuvP~D#Ku&nt3*DZ#pBc0NZfjgCbz&M^cl|6v*l)0B9>(qNS_z*%tv`*Pv@@gm2 z-BXr?*T3#al%>Gt5Qo3a8`?58b0_&6Bj9qpBklOs7#0S$!o|6joeKqtyn5xjkV+AY zQk+wT(69%|dnKT+1$Z`*hbJ#T90#G*_2hSEjTKdD##3QjN9KbaGQKrnsNEhEoM9yWh|lAZ&{$-~wwVtrwWE;z`pAtr%e%ITwdZ9XJ<}x^$B1 z(y0jY&aY^nUvR=Ay%l$ghplRJbYA`cYKvZ-yH_KAN1vmkES~2{FePKNlawguBoJb= z!V;;8qQ7CB$XLu`NgjhCLCfBkAFig;#9+||>#Cv73q*DE(9FK0UlfZh$O!$5ARkO7 zQmF=J;9uA;dQQmFn>3$%I7BexQ!$^zf`&roYHy7^C2S1O85230(HmAPtAD+kt?O5E z>3b6WkzW9d@j{F|h6RE%S7I;nywod0xGo)?`(cfTM{frFFsfKxT|gKglPk35$}RUT z;y59W?6i-x-T*fPWP}1L37n4K9_(I;H`8T;4eNQqQEmw12Q77}r7pJw@(U(_kWdqR zMSk3p+xuv|9(>1(9-)q`&Yh0!GCG?fJo>0?jnGB>kYk?Zbj;fIsMQB#gFX_)49O~3 zU^&9NKf;WSkAnvE(d!;$4_ak8J*Hfav4mgYDQP@@O`L&$MLZs1?zdZr2P)Pg>H8}RYs8SSE zq763n7g^-dqu%2VRg%?kdn40QkF!Z>|CX*%RZm@4Z*Yi68Ig%Z6J9iboKItU^Hjyx zlr#152L5{78ufE%`amMjn6umy!<0t;o?5*p@YY|jt}qoG4`1CKU3bl2u`Gs_nUpr+ z%(rD(cKJFQ9gPt=&^elzK{;|xLp7BN7-mQ?St5}%d3=xF3^o-rqPocPknY`p?9s)2 zq2=dYS;e^<5-I98*&q{hb)A>T@irAyZZtYR)QfGeEC4Oki0NL5D=i8|qaX2QDg%i1 z=|*;#%p~ZQrRAa58@C=LxVKk>hju?%a-QW_X-aS^O^#KUnrMYWd^4!mw*3(`OLBz0 zjz(~>V^PGT=)a;-lJDYwujYIBUsck-)kOckkM5?UY*O6KOBvey&7=gQ325XQXYQRURDM9vRc|a*u;iAY8zOkqE~fu zS^q0g9>N-lX1VnGSgVRiRqmB?O;9&=YnC^oy@IYiG4;^&HgP(wKE$Rkv_f;$_$*pv z)lu<>nKNA729#Y;x!01_ZofYrfExgq1!@=Cbixzz^)MK{GXqkcogD+XVb-uo-FB(U zz%lD-04y}wEzFpWN=Cy#x%Axt;F!ggjLl$?Eln1x%x93U?LP&J$(1PL6!h?X>YW9{ z8*hcvtC?2|$-Y%I6z+r|nyG<0r{CC4T&sNxR)elhl;)ahX2I9B5rdQ4)PCNkCD>M! zjvk#RZ=h;dnG?vB(qT7(Sf9BK0eLtNLNRVU47UXBd{I8l7bOnq`04rM2yR{uAaNs$ zkIyd#fzevlNvw>dGNu$@e~>U<`h>&C}ZbB*1;jT zY_FsJPOsPN?!JKk;G*C|T*=qbZm-vU@yvNdCXLEM-%2N|!FioHFpS|R3oJigBx$Ju z9?p`o$fLoXD&=fzn8{Guu$w{4wuZsuXeT=NeHIAn40o~}ySsCXIgsA|o|z3-G0f-W zk+W-ktD#JsMMgCnSJ*5UY`)gcXk{8d#P@fiM`t;f17`4jN0{j_L3UV(ADuh2@AxXY&r~-65W$y8TW*XfE`rLo{%q7id?r*pV_yw-P z>u7iHx&K_R95&YJ?LAu}Y`da$UK77-!1P$n*ZT-Z<9^feggyv!))oZ$FEBy?oIhT` z491762e0Wm$69J2Yd|VXd7cfioGEY4c7)YBOrkUH1S;S{*ND+#r6@ZL;+GA#o^R{t ztYKr2sw%rqto{Ws!bzFjNN#CaNb0Eliw2cAp#1V57g+oI;jHWYUoJ83+tuqaU2`+J zh(FXd+NaHnzsw?iQEPN-(vlr-CEE0Up7c}kQDYCiDS(^2k=NoT$&0lR=nuJ~JznD6 z057>w%{0@PPC5^P*dr|a+_CMB4pT2jza9{yF7z}re=y5 zG2^+;8bpD4t`t^iVKtc9YQ4Q~TjBFRgP9go0dizf zP>I8l3lkU@nrWFMwR-STdTnB^iUI4D0&-TFYgS-{GwGP@W4ebxOu*V2iMFM4bM@ZY zwL8nR1nlfFr%#|3$WV68A0r~%7;1U&So02=JyfeaE0dJm{~}x93M}R^ zdX-BWM6ETGoa--KESadrV)8+o!Sf=yN-{ep%E_qi-})IE?p1FFHpa%-KDbrNHFvLr z^j85VEMzM1HsG1pdZnx0EfIt)l*XK>Xt&3j65xbEVtE9DJi_%z<3W3!Y zQNY~`Tv=44qAZdLTSYmOW38NvHlOlylp?FOee@=4|^KZCi1Go?t@Fp?1VG?viE@5&u!yM27 zP(M{$Myc+5iyvIL6Qy?D!LxA(f&i~6T@L~uDx z0N%XNfuQb^TNN^<3UwAZxv1o+zVNub)4U`ltHt1As=v8O5<(0o9nqE}A0U z-;OnECps=Em{NQIZ{$?o>fyl4JYM0~Frxk#%E4cAYl4X7TxK!Wmsauyoz_rUk7^t< zq+(SEwGQztcGbgztj6ft#!RmwnG-vJdV!!X8c~&~PpiIY3pUKuY#-)tL-1X!{f+rF z+JDjOX>y4kz3Az6cJdJ{U$HtH+H1y}ONdMatuuIN6b zSJu;69UYH<4~2?(zS$)X&pHEhn3CpoKKBAF)0-qlsc$EurM)A+iPM@39c#ZZT%RjI zC}gETy+w2@?ikyYgVFW7WIp$GaE?M_zH(jR#9EADechKhKV-I%Z@mQ;*oYSju*_xZe@z`DK>De%3*Yt)2uxxUzj>{rxmeNTvqm3P*I+AZWn z!Z|{B2yr<}m6g4=6vgdD6Xf?yFkrnXZzYSyGYOq5&0D-qy$&jb0~a4Migy6sYy2Nm zuB40XtU?s9=k8AzvKV4_BYk)}n3X`HdU|K7ziFIfpzVAbph~Vf8soLYy^jgmTTDs@ zLf7un_zpsXCRK_C(ZD--B<6c-#VPZi-d@)zGMih0LHr`^lCW|On9GV^AR=>wNStn? zMI+A?+R8Dy8bhm9@SFp#0sRQK=I*m72Dt~Ne>~MFfnMi}0zBdHow;EfgxBa%-K7Pb@ss{4{VJ`ShU;$FBpLASAj`w1K7B&z!RgNoU#y2M$IkLyKrw z+5+nsUn4Pw)C;0la-Eyo1>HWO13>XMEC;tRZa;e|*vY0g-nvP*OASLA_bxTw_4Sx- zn0yaRAHbJGGTM3($S)d8Q`p&fN6w!TC22|u7TnH|cAHBv&P`8ChD4mUDXY-})htaI zHNvcOUHDuKq3`mUqcppfzy;q%j>P5Kn0!sczrYw?rTHq(-NZB!8WbdbAgy*hDt?w(%QS>ap(Lw{_33(L?;zfZMRED9VU1l6w z@2SvLi$<~@X*HM2bV#crQ`f1>o&|Cy73~g&`)?9?g8QIb`vztjH zx)4cmpHVfJ)Nyvw6~Ze@C8^WG@xwz=iXRrTNY;eEX}es% zUd7oWE2U?IR|dw1-k11m<> zVdijcX-yzY@6bwOYFnaax@>MnaaSY)^Gr1x^NbC~PymiO)NvFp=uXsk|4ES*{I}K{ zXuCQjPh;#SupX4BO(Gy=)A*M+)AwW>yV}?qRfs-Yw5Vu6E_MYLO0ArKpU`nv~fkIRz9jl3XnX4w_maf8-BW^f2 z!@uf`-6u#^PTe^&-g^!SjaP(`I(E_M2ej>g7KjVsI*vnR-82Gs6+k4x**N$TZoA;n za0^O0V00vA6rU925DP}`8)aEe@m zt2km7N0THf%E$i%KgbeUhNt0lpiux&9l$8wX<(y}ayi7N#7c`s`{x)6@)%TGqE_53 zF6~Q&RIqs1AvEc{MxbZlpdjFZ*U`HKc7_C_y0AmDchO9IFWJa$30Ey7oum{c#DVA- z6bMho9XtUy$6A}$kFFOp0V!J|#;hXOQ(}%W1szp(12zQ5OF>vlP8X@!R}|v_WI&t0 zD!bS*CR&&;IK!e_eQ@ch+nftGkfaprRiu5_BZ&r8&SY+%?)eY}+{ZY0IN-H0OLaugifRbESW5ml&LGKA6OT7c6D z3seFco&;%0b=WA$T!bXCNnS{uCXp0i=G5Ps1r%7Lwt(moZmOzozO1U7Nc&+BIYT}h zg}O(Tz58@RGo3fsB+%IJ8Y2fP5nQno#_dSL)+R*+`d~5RY=5?su6Ogj`f9c4$R&q}w$sF+ z({tcV9sGYa7l0-M12$nARBrf+fin;&W5o{{a#N z4BVNQR!k5^J#*DmzEtmbp#t~#)ORVc({+3SYoiP;!(Va&i4V=G-jI#<2_O$F4TJL}qO zOK<*ql0i+cVHupqFJrP5GUG-m%3ZITeuE+wkb<)n2^$vD#wY?(gmKbZRt}$)@?4mxy*z^y{x*#?N;5_IJm-&vr#``jiHPW8rtY^i!99d-ZI8+S~nly4&lG!P~!WTD8ZMh#NQ z<=N5z%#Lw*{B+3pitt=NUIzRJA?wKmCQEY#DX2*&47Sfa4KzQ4AcZD|+AOM54vd^4 zX0b%gLk!$)J~-~m6}h+473tkRZMS4CO{(>xY`)aK+?8MM%1?P$R%5Ea+?ikQ%rAH5 zmpe0fXYQ{QVD5(kwq2UlY=b3%<}JApf81;HcNlD5A&XBOaK76LiWd%AzOQ7sN>a@i z68{~Mcs2X`(^7aFC`Txbs*SvT)Q48Bry(!vk4xCUJGjWL>sD?gbYh)BIsp!(Y(~Z@ zZ}TWlrg*4zg>M6M;h^CydVE_p-Png0$zCk4c`f`N;!{&d1!?h|Dz4O>YoSS+DICHCa0651#xFe+SGt+ zaf9VnL@J7zP8=O0UM5t$km@>55p3dlj}P)NkIEvsxH->IReM=^Q0#E4BBp1V zN6&kd?{0wWUi3N+6UPAVXq+!H?4MqSR1`!CHox!ocJ4i@XVsDT!)zHEc0IJG3l`XQ2PiTwvvSYOi1VYl_J+;s29t0?(RLo%#w7b!jAk?gWNrAJ7 zR#{mih%DyUvqhS^6UFR-&^K6uG|J=^q1!s2SP0>K^F+YqdvQ&StX>GzFZ%)6FQriV&{j0(Rou*sG;D#KbAnauSe${K*(S(g%ixn0#2JKuyc*zwzoctd^BLwN@mBjSALq9-h~3V!#{@eaO#yN*uC_#M{lY zZY*aai??Em+!jFJumYu9&2spH&-ZZne611aYr?sO^U?b*#GJn9ngO%x$Zt+PPPYxp z!%>jw0OTrhfVM(x-$CRz{6A!Y zb#CJo`T*Tvz4nJrp))YMGl)nK4Dddb^QwVzYQ(T5%JFVLCmp^0G_-|TR6D7HvsB!6 zOYfIuH_FgJnV~&mN&jrf=*RVS3xu`2JOvcX7&^D3$m|zW0<1xYc0G^um()hJ_ z(ew%5;z;w`tPYG$SOPjT$#wYT-bmU!c{;6$(2VYt+Ule<@tBPNbL~X5ZgfB(`odct zjjRo;P9|`~7ePZusK}9*{-tZW8Gz}$uyvk*`D8b;P||5!i=Xx$GXf}P$vWj(%Jx1@ zKWN!=AjIkCHpnWJcU%Pa284lwhesHoRM^(zzG;SRi%9(G{N==5G;>*A#A4GN+7)wV zzvRrXmosnB8P;BW2a4j?leO#*+?O{1CBbS-M5;tjoL) zEO*vo&A!~3pDyjCQl7lF`D7O{m=3yTZh!DCqwiE>rn*tziE?u74$bv_D@~rs5^z?J zz1FOlIlco8+d#bLSo<}~=p!;kOa<4dTdTwKMcLLPK%hh*Z*JbBUn0sW{bPG=wj23o zrn!yGGJfVjzrU#fvM*s{U&6+|gpGX(8(Sr8Y|lvrK4#P7rCcaU_y3wDDKl%~E}#)t zcEJ#VKo={8k-Zbe>>|(8hx0+*iefg;^Ry{=tiiYi1B>80)h3{AEp#15*~RX*gwefF z@;uwfN^grdnVJyBbj_m*6jI|NyGD)YyW&VtGl8RGrKXhgA%4pF%Fs+Dic; z_$MvyreZq+ZHTz$smM$a5&VNUuX21!s)J*ApmuP-gfo_RAHlw$Ise|fgHddXC%C8Y=y)#y?G^6asL)?~T?lgQ-5k}|EM@X!dwcqp#E zNm9VXW!H!OVOxfjy#_6|ui=18aTQIe&*;$y$psS0nE!YuI>M+B^Ntgqfb*S@z8Hz< zgJdH!`vHVP-y#@dxD{__T~!xqg<|L^bWfH#^dLZ!_4oFA+y&jm;);|L7h_A^Wu^FN z-31G(Na)&iY-MS9;Z|g&J=A1?W;Knnw7juf&(^y^y)N+N7Vna?Eg3Eew^v^q=5 z3x>Vkxg}@4PH}C0Vj_ud^u4@e@Kf}d+rVZxl!(zj0Sh&HYdLNNkfC5+x|;56oMc8l z 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∓&rbg*Qf@j#$^955MT3rF?+jxJ|+g zVXwWC%xUkecho=cpIr{lPtK@7L&GkZd?Sj~E2AS+wu|Ugw=02a0a6YmXo{D{HB=M8 z+xr zcKJ(dSe0LyWdr*8r7A8mYWS6dC9%wz<*Dp;Qv-^&%7?Q)I)yMNTr9-)%x}Q`HoU2p z;(SCKhrNU2^ZtLFw^2osMYA-9A)#Lwarbb#o$16q^jf|xM|A-1K#dA8{tM+jp43Vl zaaB6wuhv9lp_Q$R&3uX# z%27T?Wvas7S~!4B_>B%l${sFNRwh+)E9!P9Qb=gnt^$_LgaT63!G5{1#MqpKI8Mr0 z8s8J?TPKXX%vEDgR`JwGy8${ObvW-7_FTmHM!Vmbto6IJ(JfHpP8oRFS2DSW`0N1f^!3)N4`!4l4%lV% zbv523*tnJy+-84X?X)nKq?Uo#?1 zcl_419XJs}Ni{@zJgVOGjQZ03q>3_}q|=j*M^;%v33eXkMWM=BPUgs48Y7SahXbrB z6{KDuG1d@fAu|B_BFz^-LP#R4JVkLjyNRF%gZ&P-Xu+Za&}k2xxU7lF$5imT_Mub#+>C^W6^GMB&Dp#oOVQypvRaXp zt#(@=Fkq&i1Rvp2V}DY-AS7K)ggA<9E!ZEz!wYH+N=yMD4hjAV8i+4;H$Zz=e%kI&y0(aT~x$7+B zU|$y;BJ(4zyHMbxP?^&cJAopCRxw6FajRTFTp(gLAeTQ12Wz|e+1V;Qcsc9t_x}Cx zYO8iX;5Y9ezkG26@M5sOTENGo zV^$3aj4G*%TB$&_%5xCc? zSWKGJ_;WIyPotPKG$$Cwh!IlLB%4V0UL7oBrIcyxlm7jw6@@W3GdYIN;jhMTZD3K>rV4v(@=8DB? z0*5Diy~81YONRt*wbQ&T6Dv5&ZorJ6TnnF-Cw0BK_+; zA4j8`9ONZ}h+5uCJJAt{g_sur%CSjKj_ESBNEL@m3nsVkf zp+l!4Pvm zPPpJ@L3=~U@e+IvDkNLT$xvK(WTpx{>(t@3oTEuqia5YX09IhIXbhqLlOmszK~Gh% zZ*2SPIwvG{mL=pxyq}Uq?8}GSY{4LCLY(QGs$n!q<7>w@EIlBcZM}&_SRiYZOh1E& zNo=oGZWt(8djM}pGUgLds?oeiKop+N(nRX3U#UsXbz7R2;oDfw>MwS=kF< z=aVUG34{q>VBb|H1H0;gCG*1iD4=t2KTVVD6R9tfqh>lxA_QZ5UTS1m`x(E7k!S=v zL5wypsgQ8fJRX;F1yO$(;e$MAg7FG49Jfmus|@gM43J~6KgsW`$=~i)9qJS zcJXHdBizbjn-qNKi>EJaS0?D2{m=0KjTWHrB6JxLDprO3be>VE6;@-RBKv159~JN$ zJl|Jvr!^t9O;>!`q$>`d*H`4Ki#n<*EW#QDF1ajhq-Z8v%dw=E2#NGuvUxyx4UBX`cxIFe~t2wg?wwN)*d;4nN;_L}VO#2_UE)Lg(h40#g z0zjgVPvSKF_{0iZA}pXid3#)aa>htMLBsl~3)$8VuSIhn#WP1Uc!utnZhi(%)wERca) zH;=SE)hIfG!&!$Fem{+q?0X$!uTAU$SZqOVttf_=aT6>p5!f)A&JKZyaIZZaLylZC zxz4Pr4+6HjiEop=0T#_O3~7@~OX74grN%Ys=k>O&&n>OJEudy{K#rO72=$zjFfv;2&e7q@tRNE~0^sa?NPy2QrT^)0!zSKDpM zIQQ+vCOyFhi-D0k!FmI)a6m!$N+;sE34V#XO?~Hyoe{0WOSC# z0RxTpsdJ)W+xX@xmY5htV`04GO)|j@EihAqE5+gsada3@uf}mSnP;Pl`veLjmiM@Z z9Vevn2V*r$^Lu~`-HCc|owzWFs<`|lDG)NIHI{kNjJ1Zc!l)mWXKI$lBUUV)+^bNy zjMHL(@rB3&2%knnh-7*fmud`UTcNTwSibd-he@X5Vi-Nso(UT%p7tSuQP!6$%5twz zmRo*ty&#Ri>Po%XhC(sTxwa)S$G{d3(S1JIZyxge4`em zikSJP^pG)sy)+4jN&Ad-Ve*YxwZJ)j196H(_L(sHTQIOJ^QAs;0fgr)wd;$$#h9~^D#_kkfd3$i zZfIei5DnH3TF$o=ey4T7330MnSLFwaN_hB!2{@i98rI8N3E0mqr6ay^-+*nu1xdTKRT4^YTgWQQ={r1wsN zb9aSOwj9&l94x~+UTiH`#ss{32H(psVgdnb{wf~12zEhc7$B9V7*YK}RsP|ZUi9=k zC&z4@WU5#7fMG?2s^$e+s$0n%5OhS_e!O>acGf@M`x{5>>H-_v62+)u9MFOpqZ2WD zD~!RXb_gNcOQ~i-UYoYV5y`njhlRVL8_y6o<8eY(6P?P}gouvMaO`sUDl6v&Gc-W9 zp~S0sg^PmC{G?{w{##H82|>y(Zf~77;~=XnKYkcNY;UjPPYNWJNeYLOd_7=(vyBW% zMI~ft6G$$b_$0)pJLs}#W<$E-DCb*Mz&bsmuD}Lp$aG;-3J;?PG85fmOVs(L`Rmps zjsGrTx*^kq=Uuw6%-Y0>#-l_`-jxR4Sgx>M8W+<&TY7DnVOW3Dt087G?Ml1xaSY#; ze(AK@B}?t4H^TEQk~^?f@>dW$2u4@xs7nX9g0;08d9&TrYDDV0F@~)~N8^{$=*^1& zvU@s73ApK&9*K6Ll+wTvp$#1K@To(J{GB&ysF5 zgkvwUloq73A|EL=E-}^wr6EKhXMWm1kK*jR5JWa8I1^7?o2snxS^4NGJYKWy@tRil z;&YVJ@&@}X#c_`;!B~Q`2rIF^^teh?=SN?nuu_=SbaADw$=WNl6sq?a!eyYsF^v?2*kfuwHCZ{5y?K?N5a*xIHDu-PhK_WhWxg@<&JVNXVG{7=U_OmO0w}~|x3W0x#fVw78#z0hd zWl`NY8+Qx-gi7iye66c-qo0?{NkrKEre!yNTetn1?#7r67vm7k)vimvmePCY;(T1} zV=zMbRu{Pjk;3GF>ySJRWIf9u8t(T`4^RGf)IUDIeBV1bynsS|9p~r4`N`?!$?;|H zuy=L@55bogcz)LZ_ly4Eyw+#_&2uXiKb@-&g;JTXlQuJkdQ{3)I#-+5Fp48RIi0L) zmrIQ(3~|4Y3aCdE z#`46Xp#ib!6_@sE$)#!8IFBj;#agRm9*B7#yE$s3W#hV>BVuK4h3RtHEwF+Y3RUED z4$5($eb`3SR4An9lZ=a&JTiNZip}H#wCj_B+HZnguSoZU)g z!C>zM`V9B~<6v-paQs0!n0PCWQ@Yuy&S_qlNJ=g_s<)GSF`oYIvUhQQayi)R9UdHi zxcqQ-a&anybC*@grnZg)Nbu2M6k{m|QhF*~NgOQoG@pMx02ir$>QlulSFDqZS#E0} zspZK+?%3vQ)ush(Tq#%aSQNR&vt*m6hpn&8BWJ2onyUhCW zu8D1zQrk^8Jnx?!9US-0F_-hekQP;GiryF;=CA$!>1FTm;HSVishXH%Kz$e9 zvqwuVD6vM>uTr4KLQV5q`<1#BZ;69Ro;{LdzxN78?>JtQs+FHFy9Ju@3)H~7HRkk6 zL))wiR5pctHo?eKj#a8E@iOTNo&uQ9bY#g!wBH_AYWoU<5i@P0*SY3XM36N95;<;m0J`Em=X~lH7r|^SH)K>K4~} zW?yLR4wX~km?c}B)zd+OWDeY%5(j3Ma6tC)k|Zy-tcBF^a#SQu8fr@(Uqrb!l_g(z z`Xf0jdS+oDP_fHm#VVyJqs|o2);}6(I<{g7t0A&+j1XR`;sOT zHM$?A+OC6%+5vxTZAZmXqDy6F&;p`)Xuo;xB(M<6{TrMK6^wnZs`GB1jiG80)PoBx zf2qNS?l&}A0Atl(eI?Zw3&p zZ*!~6nKLraCZ0!YtY@&#rs!5_mTbI0S)__0Cy_^sn=qN}ZK%_BoFOR*2~)ixZbO3+ ziNw+9ZlhT(VGF`Kg3Gs3xiWPNJq&7)u$JHlmQbyIXd#`naoC~V*IHMdUBjO9f=jCm zv{X@|lC^XNt!Nc|^N7q}T{;P?N>WCbb)TAI)^eDohBWTe-AyvOAtM;MZsC=wFYh@0 zYG{SJf>p3vjr)!-`#1ra{ullWa;zT>HNz*l)?|*+MHyysQt%c?2}V<+lO@LW zEe*Kmz^cPc0aY(1Hc-dE}-!6X;QfzcLV)EIcv79mlK z%w8QNF1qG;I4re0I)u01i3cVxqGPJ%?me(8v`t#v5nSU;{#=>ehS!Wc)3Axn5jAhE zFx39ufG@7LE?BlYj;_&kP9YUgLPh(8xgh6#BNDzV*-jpiFlofKS5p&6wQa=$OjZQ) zja%W)?u51e0&nChr~~3}({p>9cFyDL_eokUTa42oY-oQs!H*joyYY8icPPGQJ50Z4i87>D>AWhXbF-*I41!_(4KlkW#s31EBQKa<%LijAJF!4*%N!+vUme;ordZ{8wo4oJn}ZPrbv7zJB%- zr5@_1@LlhC{}SJlk755L?`oN*;tSvmrEtA{;gj}2h5V8j_^w}QPOqrbF%vBuIizI_ z{6Q`iqS;zXD#e3vRZET+3KF|6LQJK4AhDE}PY`T4@O$-5nf#~?j+)L=v?Q1E2_1KK z%)pubS3j*51Ahr>vdZ*T)WF-RdYtVM_}rO*dxI;*}I|ZS+H1 zj7bwD5ZW^InBALO=Q_|=B`NC@k_(F@A!RDzhueO=eHl2(uo+Zt@OOHq_m(@y_AxI1 zxOrE-c`?z(qLg2EU*xI<$^VWn~*Ox$!TX=xyCO|a~U2{N{c@`}0?4K#q zkormm4v%3#LeM-8faS9jD{vANEzz?;z-{6s{(GyilzOaPu48$KU+6-)%Oq*GB*8&d zp6h~Q+^jJ$7NZXy=wxK8mPxjt4o&-^;gS2nxKm{C9h!c^+#^1ZMs< zGtB_MOs@d!wMuiZ8~CMkxm>10lEWiPJ9pc9LgA}U+>b;NeuoX*@a(5?S-NLk6>vdo zpAIx=^yU*;4FP6al3s!kiBGZX+gkxRE9ncc5&cjDrqSS4Hd?&Ojy~=~Vw6ZhvTH+W zLSQxIz-E&fm%^-nvbK$WvxbefdHp&~v89G-?M`0(wpfQhD>WD8^ zz;*xdU7OUxk5?5|!lHto#%9SZZSo4cFl?=`3c~iKZtIDN6b49b%BQeuHsYId=;o$% zc^zvD0(pB==?1^Ge|vsK|1~T|)&e_Ub6yA4i7yC3;2GJ{e=V#YoZ(Pp3AqlX!McU$(1frNb5|RkszpgbP z@dcgR>Ln>kIR9frzZS8NEEqlmvLYb8tG0;|d9SU)kYbn9CRr1E;(N4yX?hv`8ndx@ zikMRDd3ZalWNw|x?cd<78kx87N2l+4=*o7U@E<_3DJ*ZguhA_uD2XO2FLtExz@05V;s zVfa4V-Tk1dUIjMQ49FH_eyOwF!F;tF=wmO%s3llSGNLx3{TwQ(35W;;RM{r;;+fb) z0fgvj@9g*)^|&y=y`QJ42cUnGy$#-EBAhQ5{BoCj3J}nbUkZe7k3}6sAXFshK3@@V z98-`1Ii%mgC(xs}$j4SMmJknV)_1nIw!-n$x{-X8mIiQrK^WW!~RCWH4JLszg0dBaC09~T2eRdK6K7Vkpo zjtAPbOjzXg42?<^`nLq~16XKnOS)hd8o(XmKf_zC+8! zs!{bkm8pWZP5yFIBMd5PT8QWw@O)71>%VlC`l&N{(y5f%dC# zdud#_6y5g(@i-9g7PNX0u*(}bwzsynZMNJTkuL1`Z`orn{HN(w9_*h#E+M>a&z%+?V^P! zoa{*^r>#9$&3~`0Bry8x`EJ9Ofv&T@5oQsD4xsegSo*E6+il0 z->eV+8ofE&TU(EaYFT(tzCl>aDnWF(`bJK(IGC>ai)QZg8{smoYg;)l(I4z9ni}&= zunc@rRm+(g9e~#vMTUZW@W9p8G81;$L@Q;Do?qB%AeLHg>^obZFw22P*musAn#)jA zhz8w_XZ!}`q;1GclCbE>qifZNaAHqDwwYeBdY!#?jnvMbqkPw68xl!+t@0V_-vu`4 zA$7??25+rhliCzCB*bzbzmQeIa;rnD=uD*nLUI6u+OzX15)EA8D0+Z`9H$Cvg2Dry z6?c%#ABmd-JS%cc8HK*}Yz~eF#{*t1)=F^pWkj&mDUu&t6v?AAiFl~!;_LwTpZ{Kv zo8LCl!F~`}dUc9^8%crxrqM>bUZCjUjk8?-&RRxu;0?0b! z{$b(pjxl{F`RF`a9aY@ka1Rpx1ISu?VC@-?r{7r|$l#!Td5^)2$#_nRPTTE2ut;lY7xxcsr9t68XK9&uSV|@*3?S(R9Qg zUYs5390arn8Sf4Ga)9Vyl>eed?!v79M5hl{8jj26`R_sGy2`5?lk*CS8hP(Vg{oTp z?R!!wYmZ>3y0BdS{xq2>=+d@WKb!HJbq(z%zw1_cmnw2~2}4~*dQ$??0O1ahr&Z|i z;pF+V)j6seqk=nvg|5MyWIR?}Vh!YE=vi2z-w-O7fj8}gs{WE+F{8l>VINd=ev=gA z)3~Vay=Tyl>V01PCBG_l*)aai`KIJp<)6VbG@p$rU_Fim>z!x@A%fX;^u7KcP#-Wb zEXz$!w0qXkxSNKQhZynNm3Ud~0(81BB4ryRPL?uKt;Q~F`*V0tI9GeQnwzUlJ~pFz zNNFGsacPW`a+bziyc8uGE^;HJ`7H@JHvGUC>i&JMihF48(hl45u$UBhoy=_mfi58` zZRrsEMufDCT!CoW;hi14Xh+%)b`#$!4xa^Y%s*rmhB_c>HmRbU7-L_T1~X-@OG>+L3AOJDW!=S&ACEG&PTXVKse0M6V?xUwWThE+UTIPE|HUmz%cyT(riL?1s70Jkni3aCKf6(^V1>=&UzPa9n!a+SfE9ag+pWvmm_|*qv2rvAoUszD`NYo}EGt9ptdq-n zcbBemy2*i04?Pze);fl4%Zsx^KDVTfVW2wJ(FAI_O|UmdNFui9^8~3tFRLo4?k|e; zoCTmYa&C~TsQ0f4HFROivocTpb%V29&7w5PKA9#Cgdu$`s?U`wz{^jSVmeS^^rk@& z1G70vObfaNCM8WuiWdNbQI%3h*CHamT14^`K179*KC96j-ug8l)#(*z@LA=vZmMoo z8l`bI#-iGSrDd>-sCq5 zU-4cbDyaMzomDyOC`zK)jGDIuXuDfQt()r!GvZ*9M>TN$AATqv{#D=m7};ObSa zG!diOjS9jU-4w5PsZGGuqK2_O@eqUhoS#Z8HjQpQqcA|r?|aj(9D)WxIMN07wFERO z^0LIR&RmOR_2KRXIIOPhPanDzM#Vi!++k6n%}Boerr8#(hlTrJ2PE;&WXy@HSong# zNr*N~h_i~p&wYeWQRL!QEkSsAG0bc0L#SGgB?5<(HH|z zKo3Wv#V}3}D1S+lM5SZW-RWG?M`cyaM-{}P0A1}`F+4^rSWcUNi0@M9psTMb(d_@( zdD2p-cEvKK`tayfDnOAKQQWg+ME4DC)v=@aMQ)4j5{*~n=ZIpk&y2AW8@^1Bp|v&t zUgcU!_71JU0MUrt8VSIG^KliIri+>_H`XDAQv~|D0nM&v0pxea2eNblfWqZSHqQAp za4o01FS8rA#@=*}{KCL^c1A-H ztM?VAT+VyBhI+vV`}OK_ydT=F&p3qNI&#tI&~(_igZ+;Fckk?2N6W`)5|{9cBmuzR zIu~h_UuVfL(&1V5nM(kZ48*5S^79!80*o#*T{4*TX9FJ&>H-O1F^J*y?uCYolI%85 zZb!`vGO5Cq&V9?8K3Yk} zaSV2`wsBITaTQ%@X@2K=8z~Dq!!D-RikcrG$E;K9nTpFbV5`7kqU+?AS_A`JpsR9S zItGON2iR!c;14?W0RsYZq?Vcx`%vV!aT=MQKvXE%6f#w1X@+BWgfEwhmEeNH6L168 zUP6_YMQ5yOdy?!bpJ&*^BcE6F?@CjGvvD;F+V&`D-%#VK(xdDFW@1()wUbH0_Diy( zt}C}{duwNhV!W0=ccl~0$FNhGcxW%AiZufFDja}zra0XQ2y-$=O>S|P}r{qiEm!zK$YM{){T$-wpaQH8=Iu4f)ptbAhOw-W40{U<$+f61M#KDFu^QvuQ%~OP$Pn>V=Fg#zLW$vaN2)ZzE$0I zjP0?7Yo^NRv%KPLP_#YE`qc_DE478mPjRk)qXuE|405rCL&%!W9`R9|xu~dOf zeR~_dHF^1S^u7t`G9@@3ZA9Vrn)$r!j#Zl6s^Z?Yq-X^2jG^=qcU?{j31Lc#%a$3m z^pMh2%p)W@hB5$8r9((`a;u6W8LQ|$r}*<{j(11?QGR($=-wsWoFVH<@qu7!VGCBI zK{B5VPQurXJxGjUMat=SMkmE%u`ngR2zKH$2``4Qeuim zil-D?4ySC4l8_!T^cSR|IF7i&cszuC8jnY@9J^@emCG;!`()M#{s*#r;#==%LrfTG zG@YkaGQ&o!4thG$e+gB4dMJSiVsRQPaBpg(=4p{k~U8 zly&u7DKPxmagm?`o5>KtiWPG6Lu+37q~!V@6y}l7E7)H= z&%m-c)D|L1F`9~g*0YdokKcR&rqohSzs{5jRe~SW3sEtM{?&6OM*Y7QTUycpxHf}d z=gC=~st2VzogE8t9rTWL*hXPOwQ zfi%kYOo(9adcpo-GDixjau;s$yd+bV&#Qy%D9PrP3Z31SNqSL5-$R9$SQP&$4aKf5 z60D@WB>i%=Xn*EPW8`qC?RPwO)8Nfd8%Hf@(VPb6+QBUG>50aM*FW7gy@~v5iZ6(TIo9Ev)ZgD?dRu zG_Zb}nCC0V;{2psdk=-$f@oM3rudF%$Ea+%Sv6czNTyBLlZv}SE?lbtBn#|UD$VaU zxQh|V8AJRxUhecysIEl+qQE@*_d#}>f8v*WymcsApWJ1^Q?_E79r#Cb&k7J-DbTFI ziiQC-?BfB(Q7A<{7;PmTqh=AFq1;57a|6f*mCDKEaU&`;pWnq0TukRM0dYE;gF>}d2LR%$A^9WFn-b>%4BRt>UO;`01Qq~}G5yJ{n z1T+6_y^o$c8T;;64%gM&j)!QPT;EhIcsQV%P}B~y{yQuTXjhrTZc*mN-_hg~c!yE$&6R8W;|82HPH!axI=cEpSiPv(R4@U`zGGC$5|ZrdwMSQVfHVOYJ)PL3 z{PD@rJ(RTn_~aRK>z?D-uDBPl)eg%Hq(#}X7KIQESfmX~#5$lsw3ocl`LT>#0bYyq zWx%2{c+PsRIgPe}P9av<$`}#z6x>cpN`>a0>5`+oKv>%~6l6nBiXB-WNB?5N<4O^DOztT#3LJ+q$AltX4xTcEK<5!!@|i*G`jdj`~N30yYosqQ?sI z{aIbzS3njs^7$i?gy-@}8M==J}87sUD zObdX5zEjK=8qJFYl5BjCy&bpnz)O`X#3<|3p&9Tf8~G$) zQ$#*+1aI^q1-)d0%SLnpzTdl~WMzO^IDkuy{Kl;s^IziI*g%8@urxl}wPSg9om4mT zEBp!KL%N_iC2hUfGgnPbRBwV0dhE?iM=P~%n-eTjRSgkrPOpyawTy1A8C(7V?)4mLz zui6=J0q7L<*bH!{?rflOO96 zMgkdc;_51|sGuZ@xc0B3G@-JXUI>U+b+VYJ0Wu?K){~M)7ajU4qdoQnXUmrb4K9nF ze#;KR8B~tnV{kmcYGvIp)@tuV>>|B1NaN9`mTzI(j}lNT@<|n)t9aTzo_-f!<%B3M z$x8b9qc>rRGOa#AH6Y$2;TKl2%jvwl8Qf>1P<0@A*3w%OSmJe-RQc}i!IvN7^>!lL^4Z+)70%grdsUUJH?zGmp(H+ z9+69Pn-SH!Sa$j}kka6nB%;s_2g+MvQ7qY8uVh)=s$!6g6&k|! zZq(>gV7INxXf>)kyXb=eftJ^zTP9<%u-uwnQ2~*{oDs%81_I%izQ0&5khqR0y;dSWfECmoicg`yT>b(HMgXlTyDY(rxBcKC3?F@y7^ zf4|(`dH&+%tJiPd@-4cD6u*X268h-)qHuiyK5KejV@(6}Zw0I9xo`Yt7?IqT;hWMb zDJ1A37hk{^LMup>M)^VJMl^oe)v`7?5G4hLGr7#P(*?!7zg?^AmG{=tC%;v8i7 z?$IUqgV0ciYiu{iHO?eknxE^|7nytieOKx-8q}oKShd}PJDvpcn9$dSA|&4Q-a4^T zBSyQzT4(dCG%0UPS|KcwSBziddasKZE0jomM{mfdLY3uxHhM-bH;CqohNtuDOpWql zJOt6f?hoXmy>>(`Hz}a!hzfE9&gTimAjWtXLA?&^bt;X#%3;N=z(V&h$Cp34fZ|xs zw@~bb*Sk`jM2EskdHK~u-LJm!jiUaTb&WW>z;UoMa;cr;OyzR*+;@(W_t}_vdg%Lgy$9f(NrVy-Kbj z@eRlVj#)adRyFc?ZNSe(o*)pJCk(09Y9|^tOgW@Bn6x1%ZiF*mb1U|DB8hTYjy8qT z^0*)poFc+18X`zTE=^27lI1+h7i^i>&^dfod+z+rM*!?#TK4f)(qjNYSd^FBW-Wd3 zx={fm91x0h891R`-Bg4r$lJD$1Q~b>0w<9$R)^i$G)xopHK3I!Nt!Jc&5}AkA!o4W z|4`{8p3S_B``u`GUBt7SjY&LGSKz}NL9{Vkw;=&P+HNp|De?2@Fi z%VZoO@7&$oT+3+BhLOqD2(MhcmZB_cVI0LszysVk-0o+CsmN}aDtRdcDpYevx(CIFV znK$b@4NK$ITh9PbUW+im_p6km@SE-eXrnYQ6^HrQcMzYVgYhZf$CgKXh?&;h$0DRE zusgK_-am3j;2+@1smh-d@Rf5;#c^KY+pI_|?mfCVfa0o1)WiwQF>5o6@Ep}2pUmQ9 z{P78}+mBGf_~R2+j^kvy2F(~IM^y&_5|xE5Q-W+V=(u;n$0teI8&ARMOt2B0Mol?8 z{tA|F7QmdN@Y1RRcABTjDBQoNr=8@+*f!(WH=;eK@i_dfi!@gyc0#$!i*c8#_8-*2UUfM<5m$2a8>4Emx z!ylLK_{>@Xp1)t97W?I9cE{(LJKVFp0UP_Ay7A?p@@Hsl7<9^;jx@DuJ?WR*jnbwN zlaN`-%@{c7T2p6-LuD{^Nz+{?x=EnC;5{KSRoS&^KQd(}fO|e{w~xD~Zv@~Ur{(u| zS~x1`7+bT2#H%)U1V@-LfpAibM}<~P5vO=&TtVa~aP~||XE?gYl0pwcF?ZDB?hq+* z_3UivkjE4)RU`#WNqMrM1w9e-9!%i1?uhf9*HY&dd6Lz1mP0_V98{EQlIngxzF#rd z8;zQ}QQkPdr|dHx--5g3m~UBti+3(X&l(e?a{%ZVG@N9RMy{)rK^{1zLV}o(Kr%7p z)#7G>d{Oy(675q4IST8;*PzIWay`GACY2p6H{1eI&38k>VJ#tOmpXLLu}TJffq~6% za}QfFijF9*)rh(5)YQs~As1iPqH$`hQOZAOId61xH!_2VyYCRS}8i!H-0-098h{{p?8(2Z4 zWUfcYK%;^55VrndJHbgb#N-Yij1HH99g@w{#Ph-z0VJ?qC{IKzVdIU0P^}R+Y@?r? zQn%mkZk4;fq*MUoP1n~4u*)s9$c=N$5EUgAmY@NX?=2*n;3q7-b)vt=<6Fos8k-D> ziHafGc3~JVu1(gV9b4C21kPGHEVwK3Vpk^Y%7nZ^UG^LRRk{duqg(c+6*2OYDstr{dmPmYL;k<@#kwqP+oT7Q8)ZWHvsK3I8DR-{!jhGlhgj0 z?gENO`FFUyj?bikT1uCkI8I6@*GZUOf8Z6R#m0XY(X33x4&8b%AV>9m`UtF~uTgi~ zRx(=B9 z>BXco$fzU=K?xByT5-+h;eY+>tZdc*Tm+5JFCHj8uD~_cAW}N8{=sK{Z_8UVpK(=pI|p=hqo#3B zG~-qut+qH@v5cm%nw8O9Hy&Wc0aFdM#92)~Vp+x6I4;K4$Q|8o+)T##cSCxziw3Dl z@|kp0Z2}2>F;=(w_12OD7bfXLkMbBxOvnPG2Nqox8124%*Toae5ZjoBa6K_jvysU0 zoR_StV@cw8+?6V;kQ5ZpW;!29^AqVpmW`!B^wshbi`Ik)%;p``)qpUXX@W%%fJn+p#p6G0F~37wj3(xjEWJ0(WhG1f57E!m2y{AC z+1S{-Ax!!2KLa`SRy(1qZ2&Kk5?~fF`uf{l4?ydSVp`}^^9NZB>Lc+Cafbz@&C%RnCP z$5p&A5HqAF;62Amh+B`F8;IMU3ght}-Q+oT3y+317y^EHP8#LlT&@6V6^_@pEp$8g zMJ*HOspYuuN=V)_h0fADie8|#QVBBA--aKbu!xqFM+$r|*o)`m6QJ*pPbh9(zwA%O4#|l3a;1 z#X(MEXC+A7NARgGjpRgyh#!)p96Av+n?(kV#)1O*22>tGE)9JPsf!A_%+`VRmutd0 zJMlEuAC*z)DObVsM$)nLv{r5?NjzrVomCm@62b3`1%ncb!*aDXT|6GU%NErI);YB9 zh$H)6uN`}t9kJ@4YEhhyT+skwXcQelF{OK{aWa=@VRa5rU%Y7!uxO@M6#TN_4tl+b zB$TpiDU}>+4)9v9H7Y_IHD&sR-L1BfRW%h_YW%`4z+|Ud zFaxq^&N@HA>_STuZ=JI-55=<+e5qU%fRnUkoX;E-Kl>!ux#K9w8UqR2`9eL8Fs@^n z0@0{a;OB=<6n|cJqUcCMGKBY;$V9ko|A8H%^Juv9KcG1ZoKL&;UTkh>;U#9$?dRKD zuXjMwEuf%gfx!|JbyrVnd1=+_Zn+fN(F#XQR?f0c?unq15LV~*o@~Kq8vT$B#)Da0 zplIb&Er?3%R}}-3=q@-1ZjKahfOA|kUTYVjw`6;*@tWei5CiouY4qSQux2by(9G3< zNv~Qg9GY)tEeSEL#hFcQhf9kFOPnVo^)nlL;M4&w<_B5*y11BCp#U?c43(38zJY<& zdtwZ|&xb8_$q%yIq*8uF+=}vZbBc7$tK=nLQpw+Rluxa9bFm>6l=A^iK;pE_qrdO5 z!wpc4S~h}DE9W(Qsh~uLuB&~1mF`CSrFU!Q=^= zVlZ!w`86uqmSeUa>Ti`#S`^OiT6^8Bp)Yf@)#uO`8m+SyG6D74jG$Q35U$R5xv_WtX&?u|z`s zOkLYKnSurawLxpz974_JH`&gl2<$d@qm)8ix&#fD=%RE~m;)iCbOrKh!`)VAJZR48 zM8ZcXQG>m{z=N1y<4U2$r8>6dIB~KlJ6&RTH*k633_KU2-$KXBV?CAW7o5e8#k*T)WF&+ugB3H_VbT*MHm%i{gk^7mPxI9Pw`=r$z%15RH!QmrI>-5l#Kp= z_TF^6jU+o4eU)6Yy-K7376;Aux{o0cs=_HwO@NZiB_AS*43gPQWTG<@qR{PLtKZ?= zKVIvcm+L3FYY#DIWMUwwQkV6^?h*mSuw%!LJ$_rdoh41_;j?OIIN!t_%zQwl!oz?$ zh@FQUyC;Q7%mH%;!y39-*EpQUWtgz|W#cq9C|ZRL;o`eDgjl`34Z6VgcF+!bDRo}2 zki(?8<{49yBQBxVEf|4U8irBzCpW0O-e9k`+CALFpA4evc5r|D>;HjE0DkvNt@ELnA!P#h`b7(mC#-7M9bsrpN?uh-W}` zLGZe-vhp?T4#GwQZsxlmKSR^58C@a!fnRXDn^6IrMuRtVrqUbdB zxhjpMuL$y{OzaUGXo0Hu_}J@f_fXGIGQvI5ADgWcup1=c;-;DE5Gl{5b8*-oB4w>! zWV14ZACL8bx-1cbByn*!56V2ezK+LMN<0Tu+oR@_^gkiZOqF3Iml*8Zy>)&G~ZDtY-sl*EU`UvC6CoaSCK-f zt$Yjwa4?=>0_G$u4fn&-!TH&ii))8QwX^LG%epXmmt^;=1>0X9yaI$9TM)k3wFRMy zQxLxl__EcgZ$TaZ$!2A;bYi=Yy@m9PSb=gB)w;jXc=A`&};g*NfmMGE| z=k^h_Eb5~QgUSg*%h%-FIjMqS>CN1*(?gsH%xzd$8kocZh$=Y_l;9uMRKn{PJQkB? z&OR%tgO~>Nx4-^Z$ycH&{ZaW_nV|G&MEVx_R)#(^s$VJ88Z~5#%rz$tgAf&wD_T&i z&#@l9U6$b5{3GR=gx@JhZD*}Q=gp&zi#}Pxrv`tdetjP^E4g+mW4R2o!|L@V--?Km z?vTcpL}TM4#O>h|Bai6{qB<@DG$tw~D>4O*FSK)C3&j&UjfJK5!dp3^Y$9VWh9OyN z*>?Q`cXOfJ;zTpaPKqZJ5kW_&WNu%6?7Sh(8kgJ+#>xu=4X*02sq0sY_oq_(=PSJN zeUF5T6L z>n{<@lPqgpr-iw<)=)6M-ON?Nnq18d?Gsdb*#nZrvu7Z3H$ihs42~P5*$GbJr#w#! zeF+lJ6L%wlt*WD9A(Gu}mWS-R-&HjXvd=X9Zq8MhGVnvXc6O~1go$MA@#$e-UhaGV z-~ZcR|F>1@7N%hIj_=GohwK{pv?bwU<}JA4X^SdfTftQ}OUI(cuNSzLwe}G%c&~XTNi9=k4@()3$CRhii%zZ%oS=e{~j3nD6Ov4)j ztAd@Qcm@nc4*a=y-#A6?p z`*m*qTHyx6Pj9)NS8GyIamQA39Sa1IQ%zN`XX%)XD)wFAp&2ic?d?bP5JxdvU~rQ> zT)yg#=aH;C0oOJlN*LcM&F%D#C~s!>^oNuF@bvPq_pWnsG(@)_9VN+EtgynW5rL>}oVsL|N{z8gIi^#ZIycoPAQ8?Fi3&y(xUZrwAjmIJOX^Ljl z^FXAZ;yg9IXIQW9blI2 zc2EiPzdJuYR!TRdcBfezpT~bSwR@81*kXX3kQ_86?lH$`sRDy?Ay{;1l_*Q?(=h~8 z=E4An=;Th;0$dt(jO$z%_sE^gTj{@J_!{8rvM~-f)|0}7@14?v{JX1MMP(SaYWa#H zF)GBue%wbvbEg|j=1&DRt=guymH;cb9w5D@~PZwD>bM$r?E+BK*&*wVvCcB5&N z)t1-V6&^A+dxV99WTv7>W1CVXccB3^D>@wLbN3sKaXowU0`D+6RM|YdZTu>>kLb4m zLGNo`_AuWUROs1@Y*SN-6(u7kB}n#My_*-`hPoTTMNINOU}dQOZj?c*cv!1x3s^WG z*4;6rOLY`onh$r==dj@PIqyna7>R=FTw}e6pW@8ZlB9JRAxjJB0N_=_v`~{ntE_ef zkeT`wC8#e1{e8;zC?^6i+NK;uzU)fkc+^Wn_ORaN^a~m}T9~KQiFXqh+F@)JSy}I@ ztdOm|LTmtfG&YtCJHFLfupo;bIzy1jQQ-D>mW$9U#w9c^DgRhD zG@WKS0zxR4f!8BJT46G$H;=z4JM$P*S@n!4q-AeD<3Vh!GH%xFFb6P8H{^>aoyqaH zlV4s}lhKT_u2@N{Uz(-W#^S5Co6#(5ewSy>txRhBTNSc#8ND9h9Qv-PN<-^Y%vdlo zWj#-nN@5tnu3+{5%74-*C0RC0p4v(qUQ8=DsQg+`O=ifC7Mp*4NAWocT_#a{gt)`Er&I?MHOGEhB< zQMXsXH&jYrR$G3$;a)^W(}HdLh~RgO3Bsg=IB+RPVVkQ`z)BX8N&)K>aTuJ1;K>*V zPX{8Kf%{%>2Zd|JLOpT$$~)RHyPIcQJW?|XgTX9TsJE_sbW?H5NuffKrWERZMq(xl z8V-Bi;rvrTDL@sR%a1G&8ENE<^h6l^fZ}U2w*`qV`PxwIr5n?2v@Y+T1y||wity8} zit^R>ssi;7KSw z8!Fj2gSdzs*x~e+wu5saG<(bD?D*CGNL!Ucu0nry@9Rq7h>Y+z)PV+KK>+EmjeFC%0>CE55+ky)28|E2Zhr{lp- zV%|U8%p;0t3NPSKVs0u9(vo;eA07{aEoj$U??!@NzTogk$N79(BDycbk9vw~3r5x( zQQ?|$3Sk-sEe&{KCQ=L z@~I-&9nx(TXQ9ja6Za%-aVP4H>pKK`^Bd-?Apjx%AX2gBTfsQab^Jv*i#KZg$5w=J zzP6sv&uUZ?Ub+YYVCwUJrn7vS6=1cp>p(dmAU1V=0wa#9umrWpK6Ukeb`3>ybFZh>h2XK@PII!2y_{wqx-2SH7#j+xzA^FKIOBE7)zv{t zuc~u`_NL;35D~$+=$p{P)HbwUhf?_(y6c2&>Gp%H~FG0{Z_;}l}l=>6X1u7_KmyWC=ml!wTN zzYC6`UHl#MjBl5I#;H57hp~?V8F(nbSG7#&Kf-Uep}RDw6A+iFVhCFDwDYUBHKs^~ ze$$P9?FtJlqqkh*dKgbQ^=MWQ1rhm&XzNT0ne$5j3QWS-8VRFv@sC3ZI?un8^?M>(Pn0Czd-FWeAZ}Fz5#*=VukF@{$vLu$%{978bP*E2vNg@Y(Nl*0<9Kf!hqs z0~6_d@3q;^1A^3?^}rYw-q8@B;i*>7b8$A06OrN?tfQm+#h&z z8eT}%4iN;7L=*VcAI!d9R71-Wr(+dIKI>MrJM zG``J%AaVLty_`mI{c<{jLg;d3uTg$3X(GA6$gfubr)a>tiiNo_^ttHh5~X6Drb;lc z&Cs4_-2xiJx1ay+h;gH}nRJ1nujwi*5Oq_>i+Q7&VasPlh(f+4i@YZ#yOyGIc%^sdP`m`g4;qgf>?~7MOme z3Ng;oh&SXoVWcCDYodMAAvrB$v z@Q1-7IO&l=@FJ9esIp!aI-F%Lp_1vqu@orG_!MV3(V&FP$W%zM1GyAQhn%v`Augk+ zg!Jc}_9_?y4RI_tlD_l1Duo@xMIl~oVo$)xULB)3<8xc_q1OAo?)veZs4qthY zz@U4N%8IPALfbiv#pT+4ki!lGs!l|i!wA=z1Q)d&VQh7}OB;uiX&B$6W(vRh zkenS_^npxpnYQBg!-C$*1Trh@Kt*N0sQRCf8rXl0HKtY>=ZE2d2un2Fd0AxU$zt=T{ zz#=hD!kppAfvnJ;b8s83+#0ffO#r+4_l<4%lrsjmh*y!_WO5^zx?UPP1dQoAvHZ|V zoL`JmoMyJ|caE!_;o|5L>r^huSiHQ>a^&kvIcyxs4hf7`R9B)-r7=1pqTdw~R}~r% zBBy5b6*vF0QL0tpmi{623eA!S)tjgI-l&$j_;e5^fRS6PDRLWDQ3X`7ji=B{UjyS3 zG;xZpFBmvx7}AwpSuWDJwnrS=aghB`s9GcG%1}8vW)GeIVT)l9q&9b*i{h5T<%C44 z&`w}j+~zrbX(-#*Mp#@f3ykI0;hX(K63<5WX)N-&&1Si;#Z!c1u9zgE_N?57ZdtoV z?;7zGl9ncthPB!17xgqCJ#YtLVO77V=!-EJM7~3>?=>i|lQ^9*tSOjPQ8?$Wx0Re$< zg9A7IeuzL4WI$l+>}8v-g~4rBKzQMzFJrz0O7S2Kl$P_@8Ys$Fh2`!EQMIry>4gTde^80){2wx?i-j8AmOkJ**PJ-N1$0GJ_MCVXkS5NLT& zdLr_{IGc(ZE<8sWyDCXa&dn z$MkR^*6Xai&2rg^0$1j&X0u(HiZ(gp+H#gQ&$28szwbKQ^mwf6XwPC?$AyO2W3SIY zPwiDjMp)q8w9d3hOSY1byOAi1?f9R=6Pf_iCk*wH2mEeC_En zH{y@+XDZU~@Uu4SVl|QarA4UVFptAEJkyync$e)fA2wZgviGjfP^)NnuUhstN>Pg7XuQ@x=jZb zZba5jDGxIRUDTFJvsKT6>$DRbl9o<+_DP~EvaHMgYIo6P=fhm)ifeMqGg*V&-|qR} z%{|9ULHzMxO(AT^J4VzfiFmj8w%QE7R|!)O!#e@tsb!zBO1O#BWkh6j$AVKd13;>k zr0oA2PBBjBWC<)__HVrWmA_g0OTAeg9j_x6Y?sV~N>VCB_yi0j1a^&!JMVp%#5cEP zfNAOrr6omkfiLHFRCUFD`ilxHHv=wZ#;9$&&x3;8m9<-xRZ%bEX>Ww$1XLiJ@K(JS z$pGJ#&}$jp$GL8dIa(wDJdqF1a&vc}J2uK35Qd3J!qRcAX|zmrhbuyAzg9>!Kfk{s zV||lMUq~|j7~kC1KC+FM_MrCCny)RU9v7HlhDDN)5Yk2-Ax^+}&((a9kU7fkzvL>D z?0$_!9*ZcRO}^whCphEEOSQ$r!2j* z0UQ2}*-M-sp`GWN(X`>dVH<^g3CaOM$VDR35RCRCtiS19W?(g=#@lDRgp*%F6|9XEyaYV$I>qBFVx66Nb^RX2zhhJ^_=Q z!}%Gs0?==9$D*R>zExb14t`*>P4Ggj1eIPNS`$HRLDK)Q{=MhAv4z_6*+j9Tk9-J@q;NW$^V)<3o zFhBAJruj(oONv|DWOI7Ca?@X6B~J1u&ytkQ6nuya!Z8#PXQW_*!Ih)e*#D^QcJ1ZJ zHT_Mleub_f%e+~O%m3vWa}Hloi9}0WeKh5*a4=yeOPFFg4rYRtmG;RpN6tPSNs59K z$Rm}C0{sHa+!OL-&{O_ZagGw7Sh*8o{#WX#+ZJ!F*A8LmZ*;=a&|Ng8>d0?OSQPG~ z04+5>#nBAQ{Zz?~1#ItWMTc(-cZlHx36%ke)kpr3dIK`OuEVeD)L89N&v~@?(CoMH zx%(F4_8Q(mYrPwL^8nf|#3ay?p{~EZc3<0THx!@Cw^`&fu$u3?Y#pLr3Cm`p^oWvJ zml}+U&*e_gB@ZY-|NmG{5}0{Jdf`Z}WMnq<_;GlA)YgN6aw!Ls9NI#<3$y~b(XAZ% zF*gM(`%?QE5TMwDUt9@H#?Nc@epWYKku3%=3~*WR^H^Z^#xm-*`m!o7V0{L?Dwu3( z*E|_5e-mhl)h5FTuN(b=pqzClS4!3V=AZep>avLXXXilpqqy*~=~`I`owW9lA+)d) zoPH8{9?Nz@$V!nI$K-ucEJ9jx;Tm2FDuYx+D;X<_i)j+hMWp)4$7#^*AD+Y2kk_L1 zWN;Txr;ogKV))9|&uO#r-m?EdOV~i=tj_7iM2dI`-i%ZT0>KUpN=!>f-^M)1o8srhnb95&3;H{pHp=5A8FnHBAOQIzfd zH+y?~d;9zQ`v(UH2XF4g{QDJVm+S5%aahnC@L%8e$N`OimJ5{~RXx91ye{vs_(C0A zr_x7#pNV*Sw9eIL}h+DVhS0J)IgL5Q_GVr(PWijF0SLx zX71-KO!T)U@`bTF4T@v*QnlqufI=mOy49!^7%hrbH!K=}eH%2V7tS-#GR${w{>0EF_()^+8>k#n5a#1sN;nTodkXjX zDiYmr=f9thYX!HZqnb!~gmA{~tf4nnP5@@_;~dZBjQ`zDvRM>7eSg;7GT}4KT z@6Wn;<>SI)@i4fFKM5N;BKQ-$F?{depLPHC*Z(S1e@I+R|4>G&2tsBoBAV&r6Iy5c zews}8CX9lRJUe0bd_6;B{7U#!nFC5|dX>#mGH0?`N&hJG@ESM<{>Z3Ph2h%d3$6u#d=38g*Z)cqctxl} z+UU%!IlGCOZv2dN)80L}I(YSJcmMU(Zn*#Ixd<09k)qHKL?MMGx1O{?hBCRw;451$ zKX1~s`{^P@8yF;pZv|S05xuo;tdwH?6yi(iBL|TGmP6$8 z1zP!@&(g@;lSSmfe*JZu}&YZS4m$p>^eg~ z3!V0x`nQGRG&4)Y)OukBqrt(O@4u(Lfl2W_jg5H!*XCsOywL(leX6sjV8^)lu%P8& zhKP;nhM!-Fn>a0W_>*R;9T=n`J**QwwDPZ5t{;`?!8?XGc?7rl9bTmowUj$OK0ELI z*gHAA><->@aiHYkRddu|ziedOn*QPk6$Mq_Xt@xdYfJAhHGD~C@7@}#9CoP4u)$lz zHKg(hwB(Y^u5#)9Cg=p^ebydl$!wAa-NAciEHajo@Jb|T|6Ok|q>bU~0WC8u zLqb2Hu>UmAqS=^UQ7L-D8*v=ofn3e;Ngw6_>MY$b^ajLf@IMEqCqaU#e?;z`pob~v z04J#Il|+<+zRDJ?ZLx$^4kP8Wv{Dj?_;|ZkB3fs514D}FI85Vfa7s5*Pz_Hl2Bj4p z%2{eeL4}uC^fG9Mb(4n{hd-Fp(S@r7t>!!H<;Ri*ym5i_$6;`+jnOgvBlE@@U%;QX zOqDJu#3XJPWj-612+;2zqyE-c4`yRHk*^sia(Ox$1r>5x;AX^i(c48_t60kvCt5+2 z4U&k^5NPm^MwjE^H}U~*jZaK)^NuT#9186D?X7xU%Q>1x2(}?F1&^-U-WQ-h0>@Cv z3M|3ZTnTiSJ~EV73z|j`d?m_z$W39Hjr5+zQxQD<&n+AI4IDbx$VDY&h2-HF`+gOe z2qK4j8ea!-`5jgSVbln!59OD);Ghfu&bVX*dPPNQWJeMVWWN7hmCI4T${4CTOf4`e z)(G|Y40j*-v3S?AI05A`_JY5{3gW9cC9+Q-4OA&nvo!wWjDOq;irM%U$Z*to+dI<# z4|!xLigL4RuXZ&sk9b^`RZmw*=nFD>rfaHwW=^BGQe$l{uQa>n+l#9CW*Hu}p%Dj; z)O5802ogtPEgrDSygrw}h$!YkSYv$P?C_nbgTRA2f%GV?h`*i7(R{BO$2$urc%Z88 zGdZm>Cyw0;B$BpkI0A#P>b3m=fRFL}+deB%dgaCElF-miTIm&hOh-O08EMdHz@x>+efSVF zopHHY9%uq8t15OjWU+wmgk$nkQROII;)vdB3W~#HB$DiYf#0OmOemQ$lYZibVOozj zAdaT(LX@b3z-VnAYJHEuJIbs>SmVxXxRI= z;d!S!yzHEGj(-04-sRzG_X1vTrDo=UXdiN^mQsYJ@`_==Jh;lr+iEzF>QAIeH0-=R z>J3Igo4X$r;3DR}M3!$Tyvk-J_Bkm5hghaEV)qnIpNvfjAW1_;%DdC^*KrnYO64}{o#bscncWo3N|NjZy%ZmGUp&@6fI;sZyV@M~-gPdHhCm|+pVnY^ z8Lx^Y=!ZS4Bz0GF%;kBnbEpbI8s(efPmp0cPy1>fn3V14QYUbSsL9Rzvd9(JmGfDn zQfo!+fD9_+eom z_60BAeYKtfm!@1`@ zsQMfrv9Mo?iO(lcZ@!zpfZ}U$27Ga@^q6Qe%XSDaRhmgL*ZQftDzLQ;3p zO8G-}rC=p-PPE~c}53Ti*!B@`<2Z1&x!Y8au) zHrltvHDAcI=rW=no1FNoObpA--LiZPF^e{GGoE+)CqdhYd0BFu9L$n;rLPGY!}R0f zv}xwP3ucJK=ZwJd+-`N8qYywrdGn)q&D)0s;9h!z;rd(Qf$V2yZ`VN78-_B$e_>V? z892&2?|}opPUiQw!l!i{h3U;Kyb;|+#?AV|Qce+!vq%@*CGxKd3xF0ctNShWzH4bv z>%`#qcK24ayKNd?)90nTU`LkWePAD9UdJCGdjLF8ul-{N1efdS_so0(64PqKfZux=+t@`px*v-xp0`IaHW%c z&SW!j+}odAdjV#5=!v^)HWZ9`@#xUdlq$VtA1K|v-nT$cwo2@_593e30hL12MG@uo zFWVR296ZoH^BB>U2?if)=#B>^PN|)u3da?1f{!25;3-DEu5uCHZMA}rAMtOZ7>85P zE7fQ4Q64-Uhj|{ulSU2e`4_qVh3^Yx@U#rC_`9Y4F8vYQK&{~EIGaqutqPYJIoQ~Y zi4z2CFD!gXXHnYy?W!e7Dyw_NC(B=T|KBkY{4cF1?;)K>ELA47s2J#YuxicEC!Cxh z6hM6a8p~j5X*x34o>ktY5e!9(%9QIO7eROTmv4&W%?J}i9VbVi@12u#|l3T@>wEG+zx_TC5#bt zu!x9Th#T0E6!C*xO9%ny86h{WVVC<>jV3ljx2Sc|l9pbGO~pOKU54#%ypi^6h82Yt z@dhjA@eQ>2vQ{IXE{BdxH*Cl=##@IGD9cBz8Udlb(W12Ft2k95jW8&~8+@=8v;qSz zI$wlQtjb6}{tfP$F zw(@f8SfOzcHJLK@0m5*j>fUr;`PP$Rc=MB39S=$Jl)~SG_ORrfz|EJK{9}^9ZFaL9 z4PgG74QvWhWq9k}BDxJ5+=Ys35RR;IUIbynNDxVp`47A9Ap4O%#l=V-b>~Q!9glT_ zRW7Faa7%LCvMCwzvqJ~_>pzM4sPe4s?b#iHh)RvA+|tv^Qdbe%^P0ufxCI6+ZIz?6 z0;s66Ku9jjWwO`xwcy0bv0By|9mZ> z+!{H}Qg?8bCW;@-X%6#Qqqz#=p+YXVavFeFtXJkRs(L>ZIJ-3+FOG`wT9!c$&IiQIqW;O?;@!J`w+|^$hn-<(#GEYgH;oG;!BG%Ln+%*pSVnil!KxHm zoK~~{NP{G`%-<*&YrN)I`*YOqK-yFbfR;}#t-k=j*Y2g*F$Y$M$}`Y{PELoHowKu} zeiyPcN5*xoUvK4p8({*1nQh8P$Fy2>`!B#aI4N41A+q}v>LP+s=fhxxYndS0 zO+@V03P#^6d1e-~E}sLPG{Lru-t3hrfK(IevTCvA%p1POc(Sb&4%x0lG`0 zZntfArAHSx|5b5`w6!dmT$LuLu(<~z0#?NfOvxuk4mFT?_uK)IXjk}zgL^}cnat-X zI4E*1D6f%ek7q*(LmvjsyLDkVjmzI8b(M4MToO_In;-rhF3UuAFO zP}_mKcV-E_bwhf}^mZOZdLvOz{V)sj2$)&lvEvUpPd1itvkc6qyoINAA)0Beud_}GFrkiQW;_VS;g$5e&_h| ztTPyVI6Xg9>!c>l#@N^eK#|+|kQwWUs}UdJep+|2eKl`~_XTsC*=yM$jz<`iEH)?; zTY1$D(Bts)?+Wwc={_^E>}(`G_z8XkocJOnC%*E{@9n>lKYT+n^%91@OsO+){Wk0e zsMHy!GTSGp_k zIF`zH&}Uo0(#NkcMLHd`mPZ~5WwY3m<+HTj>k!M7EHZH<*yL2?aTdj6nF@&Z{(|e? z(p~}ZJWjFdMEadfHP6)7<-{i8C>6x=)j?dpi;j*H1D$t7nh5}*7V)1%wA4>3YL}5s z;1kE+bg()dtcTCSA-onx*$tG^eiHeDUPXS`Y5X`4pAk7t8rS&hVBUiD9w{$!qtLLc zj!7MdKI7M6Qpl#>^mQn`SlOdcc|qM6Taw+x<7L;X7jsT8^~&q9U-+eIL|PY>UgO`} zA-pt^n?Q&K)f6sNFogJn*eoj(pnZ+CURy8G{VE%$TH>PUl?6)vLW}$%E`OX|1?K|V zSOT_R^8+hCyNS!&*%kf?Ur~sPstLch|JlBQnX2)Gy=SgrMi+gNXjuFBZCkd2lNQ#gWMECGd;?>IYG*d1U+!pln+tLIBkUCW z;4Yehhy(2ngrrZO(a*;rtkE7Zc7=w-YE^HOamEk6hO)%kZpqzn-GH_0BWpeZr1P5W zNkHx@V5wzP#da{1YqD2>=C5VkqwYg^N@n;tE(v%nWbY@%DwUs;c$O+XSJPtGSQ_C9 z;1r%!T29VMI1g?_Dst+XOjUk1C1r0eXD@|%?yO&k&toCD8`6aCTmUOkP%TF7+{u6l zQX@Xhoog{+P=KA{nxA#W=B3`Qx|eHNIHFQ+sVEdte}nA?)3miom5O|BP}wz-{~n_S!w#p`_E z9S66Nn|cz<<(LuW(IGlX(z!1vVan$mXfRH|@C88@guFTth|e(=7gQn_&!9Y6 zuLjB~n`U1-n9H|L&P`csYMta4VcI@&F4f+C8{q>~lU1D}Aphc7oy`zN$@yu16Qva<^H^Y3j9vl2Sb$Ccjjs&8 zI?s{^w?Jgbe>fI(2oh^dodgiWsB`K9+)3bJE7%X103$c&)#%$#L$=)pkC(tQN5Wi31N%~iDEeP$#O z`0-7WU4;pqi#7Ti{2MmGZE@aX3y+Q+R4QyHyBO>}w<~n+tr1j*Uywc?D#*dQk!7Nz`dGQtF?r_!F#tIa`~BO>MU4@F ze^3i*tCg=1ud@n^eb%HV_$p+6x+E8EVIO5b+KOflNVY4*O{{eG?eoTEIg3H5fC~bL zVzCWQ*xtW&k1huN)04}$KVP2r2B#MQyfggy4Dgh;AYss)r@|aGGLFg?4GAk(2Q!V?gfM znllZ4=80GgmX!=&9wavdopMoq3(mxmNA;`qZ?&a8BaMs*`gJ3JRawcaohYfansQ=3 zdpa*-rT3~{TrMdg%nL*niz@yHfhW)?z!T!yS78(tDldn;1gW^U$F{SC$`EpdG(q({ zfRYJJNeoDtzy?b$j_)Bbj!0({vZZTeiosQ~$#QPrQ5qlmz1e!pDo;$MiJCnW$Cg|C zT*^0c;evWn$iAIhg5^O=s~gk|fd3A}Cjo*Q^)gDLbZ^D@4(P>{?t=RR9Pn3jsTy^R z-#y^5mNiZ8qdn#sdC_Q$pi@0`1X^4eccw{$V`Ii(VS+=bq1KAIB>TH{?HEm5aE$^B zttX77Fvk=wb7MXR84^lja~+gl6cYqUrt!n6+Re-c7o2!EE5vD<%uRkou}n*n|H~7c zOHr>Ff4~B?`S3d*23St_P6dvb51{`b!dPN(NlReO0LJWccWotZl=xQs(fl&tS=Ybh zt43ZGVJQN5HA^E16riy~Vf-m2$8z(mM=%TE*)N(@4wX-CKKFKfF;1N~-uMhqj&!c+ zmAHnG<2!Mc&q9bF?C$R?7cvNHHHmk>rXD0`)YsNtRCo;mFlQztIocHZM)S-K)0+Ah zUocx|=C!bz+$rKPI1A~SdHUl#5_xzPMqAa-jzw~n&GJ;>XWcLjqcHdYkUCGhVR94Z zbNrw;1HKNP4yIw8T7UWXSsssX@lX9C4@D9@9f~CAe2PEeACKb*II0)IkQbfa)^Af? zY+*DJp4;<5lO0h%n|#RHnBIo+P5JD zn1XmR1;ADgur?p0#|9$tIuT)Nlt$DG)2HiRnJp41{9f3YXJHgkOH9p_6fmjN&_-m$ ztSUHGBye$?%|JWihgAAmCs`z8rX$l}*b$a+vTh^+9NZsd+()hAXl+DZi@#Bg=dNSA(glgHSC>`2P!q2$gN>xW2Qo zZ3qM9Q6h?B8~ZMq#9B&VmRW#wTuwdmFLaUB6g*w`0dnLOtO$=91wrGfg1W{y{w(QA zDQ#Dw3I+jP)?U@wu(z7Cp~i_W5xmulwGw5gvTFyA^F<%pGIwA>e!~y7Fm&Nxc0qbPnnU}U;TCX`i`JcW!vDz#dJAF6>|dxE?&9esrUI= z7oOs;>%Ct>=NwY-!8sMf>QFyKUEkuCuRwl1U>o?Re{DM3@*8rSLio1ha<3N4Unk=( zrIgFO?M88-@w=*)9@&Sr_L@-$sXB#GBSNFAcr24`WZP8js#1C8(ru|)P%bcfQTb~% zS=(BNuee5Rk)&e}vlR4nR_UGbz(*$ib2tchI86bwFc<6!3BR3r@k=!u2FpDWQY zvZ5aW>NtH{kyrpVCUAVbzB|`=Xfwj#Y*nx?R zv`Gv6=c`VgTvluSdfkqVcBJXgHnTu$N=&{UJ)1`vbf4R0%Ur{%%Ts#oWVEd89zDml5x7T}4guoIt5&1=gF73Rv=VFLM$GV?-7avY#O zql(@CMk8%Ek;%bHrEUV_yH+s%dXup#R`!F^v4C?L)4M9kE71NMfKxDDPE%-^L8^yi zDahllD1C5O7ro6|?Z+B*zYkqD_Ip59npJqQZ-B|xCaW!zi`t+Psr0k4$gvB>;xx3K z;6f_qbq;TVok2tYi)!3Z!-FQH1Afc4(%JjBsNv&7`D1nuWKaMjOJxkKoAvjVcmdS| z>PEJ(TK+-N@z&}xpj`Gzs`s%rCt2y|}Nk~g?)1c|BG#iboHqQA3 z?&6)8w+ZcX8pe5HS*<)zFvU>MRR(Qtt_{Fa!sy?D)~{62i$Fx7LIPBcp@T%EH}vcM z=g*CX(JkHA%{zkr-Lu`-FN_~nEqO(R#l55!x?oa%D#Kj$|Fr2u(9UwklW+mF^P&l% zC%v33tWIS!gMnH+6q6~aDTBfBArDy(Z;rRDbJllIpU1fX1dFh8;z7xyGj=OIHUmVW zF1RTI1Yl{F;OSs+tp2ryrCgDiCfVFKG&QCT)4=>u3wmf4rCO2wDXpS15D(hA%!9PT>X1qwlvt)FptHTY_kg;Hh>D1i03X#K?Wlr^ z2V((8NM5zbCUulgG>7jy)yw28Y-NPwhRIausDbrran-0lGvKh}G01t?SRCrq0K-_q zyK3^m%DW-j=1cU~Sbd`ooRs=8%xP^MBkkPx3ZwiIgb@zd2;WKpZXYmsp225#F49Qk z@3Q>uJs_TjC5a?Uz`U?uoA}1XN_zZjVsWKv zNZEi%Kx06cq6fWXdKl9c$IW7VN3ObXSX={qoh~GqCT_@Gm^{=dRofK=$0+zvxr)7Z zNgQIa+!;0kvxHuDVfNR!Wymf+n@-oIcRm`#pCxF!8U|GvbF9i8sy_;9H+nD9a{exx z<<{75g>DUFeA_dY|3I622du!#F4jLB7SfL}4U~U&AqfdOTV-2?#)=nmh|uY|%6hf_%fsAnM}Su3!sX+&u2{;~aXKrtKvh5MzR0X%p%E3Jiy zL@lGL+qsK)K>vybtFIH+u1WLC4-?Ie*FY2;38IDkm^)SoAZojQCuTi(f^aq~~-C9eDUPfQWhT9-+ zYZT^2UHO}``l~9d%d|INs*0wj-Fe+T_O>AZ*8IGt`MGRHKNO$K2OkxYmQuiC>9m7% z6d55&vKw%wtbT;QviVc9pf76-J)ViOnn@ys@@h88J3E~2xhr>(B|AQl#2WU7; zxc0^#RA+*#!Y#R^Zx+>37FFW`{OUH=S7W$%A1B*v+5eU+{v~t87o=|gT3O-;&rDz* zzUbX7E%VHq9NtNT%GcO@Tfx{m>uaV@&kZM|IN6+<+%msKx^Q5UmcKVjt z6KEo$SOuGLr0PCQbn@p1!LOt3RrfaAj4C5NtaOho63xCfc^I&iHpLU$42t2C& z`xfVC-Uoxvd{h`MLH|Adq8?bhwBMR{;l(!hu&dGJv{SruPH? zs)N-1vKFMJPP8|Qr+-*b@k$%+Ev*~=wSq>9-U&ka&DPE(Nw z>JQi8OhBiBOOTg!1d+@2nGLSDGgLECZl3EY0$+vt3Or%#J5y|KzyW1PHAaQqh-JAca?&jBsL1Y(g&6vf~mD`S2BP+uspj{zUmU&&(MW-VG zm4-Zyu+l(;0K`JsVC&T52YK3@(&L>&ff!4)i@P+osBkCbRWA}0qTqhxge#w6eyb!8UgD@@b z(c70*ss0EuT#f(m3xDvOZoE8(p|!|$7i&0w?X`N8qmzr{-g&=EYEl2>hoj!0chu_+ z@ejk^zYRx^`pB$A!d>q>xV!&s=P};}MZ#bIVKCX`%(`YPNR;QhwGzbug5u3fUeZK> zP_ZGK*&~FG*D_<^i?PKyNH*b+&=Za zx>IM$$isi=!B>vS&j6JJqJAQq)4HGU*K6JKPDx;frUUFK-|DKzcTjtL+F!dY8y&}K zo%hD@%Pu47CoFnNdyu|E3WjcK3Krzf6gEHZFUgO@7fbPCsdB!89G!sJ1|HZ_9(bHq z$m{b*jI(?V4>(LBg0Lv!o0Qz!CIJfbsifu6T9=XGkIw><`>d5cK3mjIE3e)7T^J|p zYtEA}zccv)5?JKO!F3oX)XpSz{wmi9@n}kyiYU&5Emo4m6lXU8Z4vV6qq^p@`oWT{ zZit#?+1-#NP9DrsoX*02zK(x+UJ4}RUsLyE(=m?q)8v$~NK(Jw6r zca2I{XUZL(pPn6_emFtX?Ywi?KSkSZE>1x$ z3e(Jbn&~_AlR}M@3o3Guc^$H?Rw+|q><`R29^VXowZgMerQvE%$6n>>*roJi+&*n> z@l{{$YD=10SDdl9Qwgu<-xQu7rsd2M(dEja zRbTSgORL<~TXPkHuA8M2ZPBX2TH)b0f+{{bn%jGr@L6WvwGP0CGZe%q+_URuX%yF} zV5_~AV>uG~38vFTpF@QNC<#mJM{yCHo%aU4lc6EzD&kEi17dt|Tn5!TNlDI~U=UB@ zB+Q|qZ|s@x^ z55E>sIA?qg@0qX!fPi#`Dfa7`0;n`d;&EL%t+7u?s+Om~*jCH12G00!|0Mwfuq$>} zdLxjldtzar3b_pbSEnrV_zI`1jGaL@yXYtre`34K_Eqz2*oIUx)pm*857z|I3FNedy<@?iqw>Lm#BemCX zIxD{vK{B4Ifg(M4rjH>jePfj9bC zqtg$UN2fn{Y0q;X39nuDpm{HkdMDmFL3M@v@8pwsD~fW%Y}dIMo?>gGqxZebx4prz zmh)`6U^v}=ic?X<#h}bZIB9xVEd$<4oeBdUgjBQwhw|lF!{0Z7L$$bVfVB{3^M>DJ za8SErzgZy*a$~IR8I)NL1u6rPe~QPj1PQFa1=Th98Emjhi?@io|KI{PAcjWqhfN{V z(dcKnxQ;(>aQrC_NP;6B=kuwdi>;`h)E8yw-ULF;Vf&9N2Wr~q?z-x9u)3kE>Y)7Q zMw83*0+5_PiTMT;`)eqs?wp^fq*1-gJE6cgMNrIg%r-JRr!@bzg(lY@z!E4CdO>$@ zw^aj$Jb-!RKOGO?*M)|7mfjwKc!4S_Y$`Y!{Cs@e8=m*OmxsM~or|O4s2R57Zc@}> zzlOzpG7)7SkK0hr2~!Z<>p#eUw)Ho7F$m>hbJXjKe0(2ABHN6R1e#~HQgTDLmhP%N zO?ygo)I*OSi0mPnRh?$5Q_7Z^Q)eQRHcd_fC>hi_#pocSbtr-$Z37~%{C1(mIA$WV zK+kdwHyaj3HYQjL#a}$MY!6bY(A$NA@dzOpu;!7C5c-*RE=&Owq9B*U2Ibvy=HYTu z@8xcVN8iP{fQF6_Wza*QwH!>hNvPvk`OPo%vb)Q1$YR8`O@Rg z#Mgnj*&%~G|Nf$P(Ia#UV1@M-SYI4N-2RXSp8a@w(z`slIDXqZ=VW;MOB+*d?E?(@ zscAS#J#n0+MV5$`=Vn{Kr~X1%4V7n;Y03GJm{k!N(LoK+TOz1c(7C}DiWh_4`Bp3F zeJ(`~2!2mZI&7hcK#mHY;t6g^KT*Ec3BIbY4S*iD4>~~DN#zQ@GOwVRiPi35)kz-m zRq$QKfD#z8dleA?+QaIGd6*X006v)!HN62ZaJ?)e0ym>3C`pJ5`Z9C=k@oJKkzq?1 z&&0z|%6b8plAXr%54SJO+2b_m?d-jH#_zXFf>(yB3U}+FdnZ~OTWx+(;OY_g%BaRd zE=K85B_J&R%dirz+3;C@@rz?0pb>UKZ?VFC8T+sp8jgLLl?gZug8{?{1zI1+VF?xD7wWnNQp`zT^Iqn?nrVbGie}(w2vuXESst zT=9HlC54*Rl}Tfw8X}71Isf!5&#q&M^{EUj{ECgMn_YvDQd}1XQGAV?D7Ac}@?r*^ z<`u|%iaFjohHXmb!F`tB#j*`s=!_9yz(Tcyb>)KDM%_pD2hq^P6js}ntED@}YmG@4 zRJ6`Wu3u9xB6mv$z2vqk?s;CrgB9a}LMTT&%{&n1b71f*fxDN*KD61e_!w0i1VJ2%q}FUw^n1#sp9} zb$(8iD9&Z`N)j27%7r4;tf|*4QmJ_3+0;tzfiRlHDfyzuSvnTevS>4Bx2JR-MO)5c zHX_6M&rNZ(ioklllz(vv&0ivmG2U$AP4`&wxR8p7)L95f1;fsB@=|hl(kmt3X&nsV zr{tA=KR$(VLf8eUsC}j9${X5tY~KzH6(dYlmIpt;nA?>Q#H;6x*I6@4!zq{gQI(J& zGb{azL1S6)@-{pg)TST!b>4RUVpi7s6nLS;mF4lZJn?;ad9rDNjT5@Ksxy8S3s($ zh1_rOC#@RRzu85;Jb3l84tD}9LIV1`kCQ|@&c~3hDO(U!uRb`ok^GOb+B%l3td^U% zFSFWS8g*2NAMR1H(TiVM8l1C{Qvmm-XkOu9b~TAhNb%EkK^v#+-jb9pa51uIP)RVi z4~Bm)_7h~`ojDIg&GS~3-$o}J4~)(xGT(er$=8OjSd*kElzD~7YMyw%OWA7Etx|F#p67HzqTwqC{ZCRSnCSXiP=3-evk zNjP2oHL1Cveg@M`(UqDuQhx(?6Y|mM;`|7bBu>F$bRQR(h>|2b`~jy;V7M?GgE0#7 z3KC6&rwu13sWn2-ixIK*&epFPW@v3t68vVF))sI^T~w17;8ECb9qy{Y0&g4REc|!GlbIk7VS5F*+P4^HM<-n*ohr zpkGs8nj7m?>*~WsS%1f(yv-h#DQ&J-XA@3vU=L>yI=ebzAdpBOo-xDY5Px#myk_#V zqfYYnF%9_Jm7nnFkK<|Vr&{CNez25Z-6Cf$=aMGEAN-Jw&Dxl(t&<+3 z3BZ5EP6{kBElOUKq8c)n$D#(oC=9DIBNV}5+{CiwHmCwF4L_wmV_k55p9 z?0tOF3hoP%;nN!WJACT zZy2t4Ml5*;sz_a{9kQ9Ogo*q@MjymXVu({@c`k}6fEY+~&i6v$Pam!V99lICQUxGw z3c;j(&tIbuTdw$^Z@~hDYDSy5hIbmNs()2;-KuB=3YCS zTfi+08M4%V9;`6*sceNa38WCC*@Ab<*$`6Dl+{S$V@`=3opg?SqhNH{8+6b6XVAih zblUEZy~B&6-r?o2e@rUv?=Sk@pDw$nCnpliT&l)~E{qz9{Ey4dd9S1NVm;E^)6=6~ z=fnU=zcdiiwO+NU_QcY>eDv#rNxcM#;Y3vJ`Auw_bwHt(YS$_ugnUpoK33n~HQZzd zVn-vxkM;LBHwWQn7}?Ig03IB@a}h>Rj)FI9W6u2j-5U1`lw}n9ER4Pyxd@{+`cA+Q z!ca7&9*)BlioYPH6UDN(Yd`%I7x7ghHofkeAVmGTW4RK&ZdPuIQ#ZZ9gVhPk9#V=$ zUdKs7ZH(1om+t-r$7;Aa49)>d(raK!@fb>}r;3Qo<7T_p6JGx!&nj8-azW~9E&zK# zguhP~!}zv2vxY7mhZ;5$eFfCe3tEF32PTskx1g3us%cM(X=@(tU-$i3ffg_9BzvhtG+@lh=p~~BkiHu0&q7j6Y=g9e@=b#go`arUk&VI8*?IeF2OVJneKpY@u@#PLBy^ zX4`QfOLd_RZUJsop|`7a?p=HYb^B-a!G3FZcNhLoju<@Me+DQ{#nw*HLx8AV*_<}Y zposJy`mMrgCP_A?c&}=;8cx7!gK<0E54di`6B0!Mw;)Us@N0zF#R_V*DTpYHpV3b~ z81Qh=telusV0Ix4jBroI|3mm@=;}nT@c1@^qUJ6@Y^fM2wnmEJXIwUmgRAOOc)^0v zK!o}D7Oqw?!qUiAFseP)kyXALr@d=aHUdg6*Iu(v{f?M(+TQ70kC$ z&QAR*S+1ZRP=PdI|V6K(U2Blf?WY8fN=VA;Cu8*?BEXqcESZM@trng&d`ZxDt#cbidis9v|*KUGNa52d@a)ZO*SR zZ$oGWT@?3O9)ZtHl+~}I)e;x>V(>nQFhVJlao+tjk0;e-qp$u9qAYoeUizp1<6r*Q z&YyQ%`!AmVZ1AOHNX#$Ve1@y{PW?(iS}|gn7|Q!dk22NhQ+Fjg?->CD~#%Ad}T5X;~P(8 zN!KC%N&#?Qz)~5^56f6?J?S9O=W#f`jZ<+bO7h6BQ|r9H_sr{)_;4$z&p6J6J%?$w zAd=Ie{&6KlDvO~^GEg$j#c_AP8m)05i^QoK&s?5#EBJ1YeKfDkqw!y=#O+^ms3%6cyRxG>N$ZQb(IqY#K=s^j+L^qc0f%P0*J4&h663A~hE@#y8=HthY zPyT$0c{JcY1jTqq5g-2b7x)J0B^n)jQ}L7iXUlbLd5p7mn9m0TUekk~;;G1&o~21(%(U8Yx|8>u#&SnJ79(sEV0)N7>69*@H>h7w2z^@vn= zIb%cJQf4=?ODIrepXbW$0 zaT90h8_qs#$I%OQV&~@fG zA^ikG0vuxR6jo1*+4vSnJrFmjK!KS#X zMlcLGu48$@wZ`R;;OGw?4e-z1GciaUuK-)tSy@xY(0ky2l-a!fFgb|)R z77(z&7XS|nr7t=;ThevgnNDE=JDw2$VSoY^rWX)gkzDnweodfu(C19thRHQTlu37` zFI#oJbi0l>*$!rg7=sM^(&AM8`{s1&gC%upof$_}ym(es>auMD?p%-nB_jalQff)~ zaka^OM(Pm|d?Sjieuqt67Gnd!MFH<=By#NGSp-inx8Mrj&ZoB`ErO@*Evx|C2?o;; zLbwp&ftYGY6(mG{s#9Idsdn&k=|mPTCDu721St(M&k1;A;d+Fr(bG**le=8ueE_1a zwa{m~OE1*+X_!~ISnCdxfSMFvCT7(6FbIAU^Wazqn^o(PpNx5M_ZwIr%=QC7oG(xS1#Ig+I-fR6wb9ap#M$xND=ai8iEC z2pE=zMM08fcXSzzEt~2?%{6m`gY7GEm}J8zUb*21D~ElTpIdhrs`4F+)06D}5f`8* z@vMM>ARcjgp20KsahTtUGJC|ic?KWl6~M(~QeI6`S%J;`FYK35-}_@M`Fr?f6`#d; z#(A~tT-%Ynw}3NM=LO+q&o^N~q0Ce|0NGO*zQsRmcz9|2*@t5Kk1V}*14^kQ`9U>x z9A*AyFT9Wqzg1FYLN%H9fmyPQId+;JibA(8opaCT5M1+N?U;()V(`s_=7RC!CF|HjT zqU$5u_6F6AP9x%)?a`HvC*n_8y4w5b$Q76f#-O+Ap3>Zv%OjIs4?=vF0Rzvfm>pWm z$Jm*OJRXPNpNRX*pR@dq-gHT?&4ikVnsBgOH`uHsJMA^cZAhEQBsx{H=d;v8ZKNMO zeJ-0RZ|S`3o_ws|<=Nx`r;e1(71}-(gN?JCtjl-;{%`GJPzIlJL1Cu1<%p6LZt4@h zI!_v{vKMkCG>bc%CCPCXt;?DBGLO($0`3wERiFxFoRg)NkP}8a>c|itXK;L_a6VHI z{9b~cUSAht#n`3;=8isNHJG!38RSAKy~3@$ox~7IK*`Bk}FD|8F8PAgX~Lr zw`#JbQMH5-*2-2lU7e2JrFmYWJ5zox{zSq$ar9sJSa5$NFAVt0I8GB7jz)76>uE>N z_Lg!Y*$iWO@KtfDE}8w~3@}|R?-Cm+YJ;}RW}`@2hI>iHjg+<2l7<@vj*2YcJb}Kx znji$$bKm;I_Ex8eYATu`D=P9~ieP1Zc)17%!Tx=$6OUSEA#)|E#r_#pP{?N!PfI2r z)A9ON;a=)J_fq?q@ew$w?wxxoQY%`D-(lS{l^| zNgole$0b?4o2YS7^`7E|i;`}mW@0tEkQ$d(pHQ{%DG3O3H&6n3TztwWySe=9So|Wh4sdi@T{) zTTT>IJba5$<(A5FB9c`eK4Ve#<+llA#1C0uY>Fz2q|g_phg?V#F^qT#i>pl$V+rZ^ zh3O$z)I<-%g|21f#%|40Qn%Vd1@kWt1(=J`Iho!bA~lqrX`C5pwK|#==Xe4F1kS?Z z#g|3$*q2z-$bG@7Ch%~chLd=VF=_%EUyT;j5H`Hw{Bs<$2qGFaxE3Xp;@u$DqPP#9 zLiILwoI?wFOKRQK)yiyP%F4-SX^O~Zek=K<35eq}MppARY6YL%F)*{K*-L-TLQDBD zECpEqV5A|1S2mR`=$@kLNFw)Ku5pbeY@zI~7ndTBLof(tve&|jn{sIF;^Q?1!`QyZ z#~;iCom#jy^Bb>2YXNeAQEKI;ya6^y6y}jVJ*D_qNwRN(OX;rZFh0UrR+M4V%_5=N z*e(N`T;tU$tvn)i+>jzi8RF9Si+ z-V7Jl>`Eyk+VFSsu4Xcz?r#;R7xR;t15(_^@?@UZ;N|I5PiyYwdJ8m36i>?Vb8i|q zMAtp*O69}M!3pinf)qYk)aK)=4t@iV8pS?TRPon+heI6BUNM>TTYp6AG1@3*uWl?L zZ7<-b)RoW$uoB%w7A_hQZlmjgZ(+pnPRyke>BuqJubImX{U1`aa4)zx>Hq$shnu>Z zmAd%!?ELgy{|G-QcGSNJzzS!@od4W{5hb9rhmmAU%OFIwF#uR0a2<2ML?A@+pr48e znD^-P^rwrn%hQvipJmYk5>X42lCmh-Sr7CC7k^el=1vh8rGk)D^~$#nyL&C=&%|NCO7rJP@B_j3~%fqw+K`-5$yuFs(v1!2pt3!(+Z{D79QxTFXok zuOdDS6LB!;u^P(7$&JbYzQ!_sE$K)KH|7tCyj?)PubJyxal#IIr1tw%qLnNj|BPmL z>!)C?V77V`7yPH|Fe%_~>{?G|MOm$reqpFfXIT=D=k;|?O=>)f)g-mN`svq~=ZN#FW z+JMpf)1wQ3S=Qws^0z4Y;xvjs#nCKGf=^j8o51`zngXN#$za$y=~}-K#68%of^Rb%5X{c)bd@8OWsX${>Rdkj^})J(bwVLXMD8J1+#j*lcgr{g*Z6 z42v1mZe*-;xK+)V=O%LtOkn0n(LqraH8l{%+>mk#W|8J_@|e`LcB$We87}+mH@-}= zcLaM+6$W&{nt_OvZeVnPF_tfNmm~JzJfi;6v=P^Vq!$eb8IJE}Q?y5nfSdjbTued; zCP!C_g7q9Ltb>+1$Wiy`^x_b@8!a;sVy6VBvvQi@?IVfJ(%KmG^kR5+IslOj!h%Ib z_0!gZTMv6I;9&>JmT(lNH?zAS-YSe(u`$xUIhGqp7B zbE@2GiFw<<9GWv59I9;u$bZYOOO_?PZw3&8uIbnSqM}9TtZ$$n5h@&(I8040+ z5An+~WCkD-0txbVu88zB*tQAsFKAJ22V2aR==5+TgSDLIdrZx=v$TxUnP7kj$SO57 z0;wld7^KCDJ-9O9v^8K*DbabeRJ8089xWO)*$F#FF%K5hH!oW+6hwz-Wp!&&k`8Qj z6oO2`HO^`gZHqFS@6mshwbaihzXqxC%&;u{3h@ z51iV=r|g;r%7QJ0Pux!6mUK!1b8Wu*MluiBu4xtO72JS@#c z(`pN-tw{t()xC-y0ZxW=9^AyAK;NPkA1g_*m$vwNNg85S6m-hnY&s|N%_qkGP-H9W zMEaCW#08qm@j37g$JrE}g09U;dcc8i9G3=;Ohf&@&0I{ww|oXY$J2oTUdweYrLgMc zuX5=)o6gBraq>hACwAsjD_1@I#wW}U7wlEb4Ly;9)xN+CYOw^;-XXfn+Oum@~rMR(wfI=z7xT<2GSzehYT zcIcIBH%rynk8@KDvrgoTYpw3aQ4M+_BrA(VIdmZPf2A{^EH0?gg$gW?IgbtdAk{6F z$ON(?sZAAPnt$L2h7G(9k?Rxwm1xf;z20+6<_&tjtV2Y{W`zyu6(OBVzun5^JI<1X zTLw_j{(C~UnTD}!NzC3$RpuGVR730;rQC$tHAol>;2Hc0qSccSz@zbDqN*Sn!RYRz z9}W^eg7-9ud@1A9bcB@mnRbS7*LG;E`j1cLj@ogwH3A7S`p2g#FK-JxSCZ;De=(z;guZLCcVp)(vNt*^r~%lhdXC5b|Lyar7`{U)bnk&783 z_n+2UqQ5SqVTmS}DeJ=Ux+?jPYeGa{uUw%HV5UP5ntfP5YMEv%+5S6&rL`uDpI8=_mhXNvT-CNTB4;xRpT|yz2-X~2EFdSY&8!p(y%Z5_j15? zIEmZ*3PX4Ke~6Mvn>V^;YWM5#pdU!V*1`3|T2bNUo58KhERUz9&u&&xc)9CW6ifw2 ztr|2tuMOJ94RB(E|vK#SB~}das=H9W=j`YPcMgGp;24aBY-@Pw-qwAOoLq~XV}bUhKp>i z*(^VkI_gqtbCbH>WgBtF`xJ{472gOfzHCP4LZqvcjB-5R)Fg>li_m(iam&{v82x%7#e%sA^Fp`FgXEJ>VIs(fwYR?;OtQ4REn30z{oUYR zh`R#gLGVIf(W_|m^{TcxUyh)_JgH@6Rx#w@rz+4H7mnWGLf2a=d6D&wLkdBr7;L9!dn%~ z#!XJrzBrE$82iq!lXw3WpW;R(nS#bqZ77gn8?6M0p%N!fgNtFeMevM>Ze#*SGJq=K zUQlNDgkUvpZ{JKND#K4BO>#aU_bU#;OVGZBB#rwxji78=xe1&skVa=Xt#v^xRV0{b zPT!U*pd_)+Ww8G&fOSZRlF79zpN?i46#Oun+1tlTvDHT@<&bRDwTBDB>#&DXgx*ls ztR%Y;_VJ4|QK73#ny&_Ch+XAzbR*;y0gd_wjYVtc#Nk}gKptj&Gw=mNcKuNCaKf`eA@tQEXy1+QAc-abi|{b#tIqx$A% zO>xKN75mcZoMBtJe(Tl<`B|15UIj3n*iz(5RVRwz%lq;Tm>C1gY_EkQa$48r(P_7H z#2IB6m#+p|T5A57i!QEIHi`_)8&3>*oeCqM?8#`eh41<_at-C`k_q$$JR%X$GWKJyd52*6TSS@8^jBpSwtii{$IG6SNe+uIyyo#X~``@#4 zvs#@wcz~l@hHw)V*R_W2)^>&;1ryd~=^HYC{k-ez4^AVuMVmyOViJCiC$kAAnC>n% z;Vc`@HR5WlII~Z(5$Jj76>Eyrgoe+xTG6+zpMSY-H~mT+r1WLuD6`AIjS3ZCR;j2r z@-SLfBR6Ik2$&_j;TTaR57kFr`UbCZ7>iXqhP-&SCZQ`tmMEXP5KRZgczsQ#hBUdo zm29g#RUgpgE8LhAub}36GC<0`L|y05sjJtO1VFBar+7_~X?vW?z+*Ks=tdn|ws#yY zl&Q!kVM@S03i3#XJVlae05zj@%dUghES&O$LZEJ>77FIU|ekccwJ5?QP7senfXR z$5Nba5;S1J&RrwXMtzSHdhBPh`n=gsTWtIlBx>madhKa+j5echtw&i{B`0RW?FXWMhHO;jCK(#K*?Y&2PP8{ zfujV#3i0|YH%Vn{!7q+?Vg21X11XmOMI~vhKeie|jfzM9izf+b{YgB78TZy7cJiIe z-blV3SU|GfsYX_7IB-Gi{;TFo6(C^NgxBvIe||muX`Rm=o{wVFNA|YCf4DcGRx>uR zd%$(mpaUN?>cHAER1X?tIw0PcN;S2oAcQQd{ulp3FR3r>H70h&M^Q&fAMs*7g7=T< z?x^juCOA|UL3T}PU0=6+UD8i`b%i7Y? zAcX3tdVT;YilLEHG#k@xwwCw*v-d9AZDU!M;IE)PHDk#`DlEy4a5%+XmB2hO^4WPnM4EdoGvlG!owLarj4T*+^r2*V_rs#C(G#ojDd z@&fA`yS3>k4Om0iML9&*(Buu~VWIeP5^cRUjWN;fI@}*%rt8leCE7AH)d}5{Ooaj6Vm4JdqkD^tkBWTjgs;}hG>~G(b+PxX zrj>5$lJc>?Q2F>30Q+kQ5&rq2lb)j$h$quNE!k?QNgilIARK_%)7+qq6G|MFkMSiB*&p zd1LwgnrE%HOQXsL+0MD~u;*%_h3T)nbmqUB-DxFf+5EG0xjG$DU&$(4$+}x%qOGD! zTB{y3-G{8(;A^eg-;`rdw8DYcj*?mM5ec4ffEj10Vh)_3ueT(>ttMiqMh#JKi_7$) zuuN88ezT>*mpo{>+2TqyXsPr8k$gx+3sqhsf%=@^$CVJIwUCAD^mtM7s4m4JC9xS8 z3{t+DUd18tv>r?byr3nk3{!QqRS-~aIH$LIddFi^M8_n!UJKo=tr z=z(Tz1Ex_KQe|MC9~~@eeo)HTEiAh$Oe_%e3OQ2W#ke*-w^3C3RL27LHxZv$KMmAW z#evR67$%b&F}EzDS`Z)5ZdLgNn=NrTPLhnECtrwu`zA>YCkQlQhslWXhYO}>nEwXX zhy2!J@G6aE6ZuX=Fdb*mif+#!CU4X6iwA76>)SaBs`fraS}IS!glqH zS&O!6k!)Ea?3H!1fvUxfA#*pGX1KtPJVDuB$Q{)}3MmsE)_`74Ub#ZO;T~D z%EN$>rub&N6hLYIL08z5^J0fX^s+mu4X`X?Wk@EGFsB$sw2CP1wmq} z7A(hO;y}8vn`|j2u+qSU#|WML1NbuwC(=r|S+v@lpUHg5lCC?Kl?S)10RIMoRlL%^ z?$GMmUHpRvSDn57$|iW5!;b3lhOF4)7in@A28BdHr)I71^;#ERt9R_FIG83Od9OnE z7rO2}BF$#`be0Q^N^+|!j1y8{!^)&Ryl4Wd^oUcL`ft$`p=F1x+??kH6$8?EN@q;#oh>)9_}N3x5#pTp2r3pzy*Y9_VAw>zwvh zTzr$P%tX?D-@3Ra@B3b_bwNp2#Sh!MUoGs`E>6Too#yNA0Xj|hZ=uuHhviOdZWVa3 zpZl;Gz0+{SG&((%-i5;=&q|3%TMbi{XY4Mazq(ZdaQX4Qokfw?x;$&ZxyzxfGX6nT zN~e+U)+-)Vy>+0SM8ts)55ipcTIO)rtHXPmJl0Not>I8**<})`O(YQwWu-Xkwobh? z5mo=|$~~efxcu%;m=|k|g+>jb(UQrn{TyMRO#YLv3o6kfYb! zCuAU#<8r1;vH|(GH7(_O0J^u9-OqA}!jsi|8{yY!DP3R~DL-xI!1H7^I)Kvyiw~}% z0Zit7k_Pxk4@>pRclg4KB*hgev$#S@8Yhvdl)IY5hRg(qvS6K9JxkJ5Wz!_aB0Pg7 z`(HY@@Z7BuV&~^n%o%* zLZ%x^#KQf4XeSW{VYcPoJRD|6Qa>o(z*JNW=0A#k#XFXQ6USuyWCdm4i^McjC`g>dDK!o&HI07diAp&0;3i zPY2V;2UNwEoN*ah7B!7dEO&(MBddO*^fASuyovvr1KQf4FoW9j&N*5Ip=J@Q+F$I) z%Pv!Pk@b2f-VkOTYqldN?l_@ww_CebmDoWqi`stMJc<&Iw;d|~@V?74FU&yvQk5LS z<+oc6yqIShpEB+i`u*E2O+;wVCXXMg+e33xI`Au2$+ng7VoLp6V3`tfI``D_&Lmo& zSw5Bvr+#J=Y-H53xSN4-bPr%cn>HFU_;;RsR$4e@TkItHMeQyN)CIZ& za)!~cP)>&E-N;}QAqB#tD0xL}SzMQ8uiB(?qbWEKh}~Pbew}_L>Y>t>yyE zJkNGR&e_!M3~Y(OOHk2nR&2Pa)L6i$^VA5~O=oMBmr=Q# zB+FJs&gm?-bKZ2mJcZw#qi4AvtWy^yBSEJeg|VN`y-Vc>YANCHUz`vCIqb(+M-fl# z(4Xdz3b51ew0DJ6)macxjvnw(ZG8ee?LB8$oI=|PQ#H&le2~qlA4MuUN&FRogyN>e zY-3(S3!f5Z<~&=DCLb3R-sDAz&%yD*EK{Z{pmISskY-mJ{)KKZr&T}75(3W&-;3TN zvrK7M5GW_^OK+7AYq;l~CAn43QdeIGF+22Qi=1VSFt9uY9h=M32I>pv<+U^dj5C#k zlVsFUS+z@Y89$L6BQr)+Y6hit2UPcFnuZfUoqtDEG!TAM`D|L6D8oL>;%f*}D?t$D zeV7l&P=t8T>oS=PeB01d2i){{Rez3?d(IKDQ=jt0gIO~aZb3rlj>HEb-~E7(kRaHR z@7_;CP#JI3(3j^|U&ZC&2E`sa|}f8(s{ASJ;64lUa<3FR=m%HV1;t zlslE?-k{exzkYXoetO)$`~~TM2Jeo~|I|A_8?ffL=b57OWQ;@6n~W{{&iR3Uen{A+ zTka`DC;`ZzD!hR*9hNVbuQR;8ll!>T3SpVUNjPM+)YKff#SZBAW1&R_V_It# zakN9Mot*28XTlatBY&vyUP#q#SOpYcawAlTF}UATiU=fWKxj!h^v=ypU7{=2zINH= zBDQL$ho2bT(4<1Lh!JZpSFl#FYFc8TOu`X5F;#91Ju4MpJGi9Gj2Ls#4SZALfvWmxX^<9MwNLKY|LIvkBth zOXZ)fQJ*9?r~a2-_;;(`J-@|V&rvuDL9>HqCrQAFZ0I2iQ|l(TAgt8PE!s=G|Hy8l zd1CJwGzxow?%HfZo}33)oLjw9FTYaX5ZoP`|Dm~oFCY#4uFD1?-2^+S-Wx2#*8G<_yH9^7pO3Cyh z7m7rmf9=@pV8O)LvDtDYuk@INUOBRA8FiKMRk2HZrzOAX*AZzg46tsM`9c7om{FeEtV=;TVl!YDoys0)}V@C zNrj^Kxy9+KlqJcwSf~a;zglDE2S-sd{9KhIQqL%c0n)&7hlC9*&8818@^0`=COTm! z;2D3rzvT8qPl4ltTjMoe2)b!cH4ML&0?p zCPc_;Y7&nU_+Rbi=p zUH;;IIR2%&LC~6`NJdS?`Gm?GmXt3O*n@UXnLZL^G0_gra!dr}EyL>}U0gD%3jOzM z14$Ou<^>qZt4tle4J(rzYHx{tO2N#k%h7-}+`Dv^V@07o51IsA-AOWUyH7?|a4wP6vMH4Qow)mXF5{~wZuU-36bM!a<)k!isg<0@S zB(5+t7)ra-e&om^T-2Pe183uXGD$`%PG%X&!>K=fke$OPZ>*c=;|=XQ@)5(lbmgco zVMdC&mVX>H@Mdwq=`2`a&uWWv-8tCL4iC^bAI06F!8dDqI%e4-KL>sD&CBuYdpWME zLT3*tEinQnXBOW%ZVCNHhjJHzon>ArBh4YXEiU z1E~$|J_~2J)9)OcIJ`0RAph;-DNeXKA!2dq_?m$=-psvz=eRo1-KB~u5Gtime!p{k zePN>bs{{296{Bb1Pg7{iZeYUkAcS8QM(R9M%q3U;+uX%>%&e8AudQ`dhnFi+DJ zy=Bzjaj>}f*I^(5Ab#E5KS|@)Q8M!G zLUphCNA8pKGt(@^whAh}u>0E35`VA+7-5ImZM)xQ)3L_i?Kn1dI04Y0%4DCRfesn7 zP*sYaVoV3RK8HC;Ok~MGX=>A7B(pqYW$P;Y$ME9uB@Cm~-n&&H(Pa+4l3n!cnQKLZ zgbgg^CMRqoiYWLkn~pLInS#Ty@zB%dkPWuRL}HKOY#waFL_G6t8ea zW$*NBx67QH?6g9W2{tsRwzB5AsfIp;0-u_-SQH3igpzI%yA>cfi6yhWFS`agKS}A zORT>z{)bV^jBR$7oFp|po9h5S#wwbk$`!_-bMsXKntYghpvH?&!8MHZ9=(}+_i2a= zN)}o)Cju!noM7z%1}TsDaAHCvb=EEDTVO?)@N0;*Z{)-*MO7DiGr_4+c4QWP%uY5* zd+ettDjwzIo|^cO6;h?NFHt=7#jZ)SfDa2>B%wDP`>8*~qF@^F69OSdE?z0~NQRC| zp|`TssA3!Z0&2?qys^LsI%vOdU1C5Tx_BREs~i zCscIdfWpM}hJK~zcx`2z_2vxPv3+FV)5oggex$gn)8Q-JPILE}wVe_oi1SP!-@gMG7qFp!8VxY0?BGgpZ4GLJ*OxHX4;NAEyXGM)FRZ zepajAta77yOV=Gc$v{Qq21UQtbNCjjcBOBV^gNEj_(9y;nkMhJpGkBux)WBOE6Z&R zJghhm1&hQoIJ5J(?vDGY3#;CSib|=FE4*Z?7dJy5v#DS zk+uUbY&gjc=*AZYAPv{Y+6jIP0tK$6X&T;zks5K}6_c+@R(U=8PAx{)aB3ia3m{#n zuv(@)-Hr(MVr{nC#{qCJXvXI<9E`n^8=HL^1AWJl(lc<$aIptUkfV_u%w zQH~hiQ`+RlDISH)5qPmAdH9;h%^Fp8=0{eM>`^RFzF_w4>7^2$h@^llA@VZaCV-zH zJQ`(F;wqFE|IPkS-h!j@<}U~THelSz8q3^x%#Jh;8!xCczfIyxm_IFLzbptxf6IHR z%zL?1c{+cHs`ge%QZ-Csana+En`gP2c=vt?g}hz4@NB z>~F+XUlDOt(Wv}7(A3{}tG@A8t-)Jmm81CJ-+uNtWOx87<{L(GPJsm7!`8lPriTUh z;|jV5+84>qU%^bA_|qxFXb4!y??T!Tnt?o-hQlpM60oH*M*@9(j$JvWo;(mg!cm%h zt_gW+mB0&8nB`)0$aLRe!(NmO+4cxyaxBth4I{Wc7-%$xa;(;uMh6v~3s#FRG$|8+ z(eJ@C`nCye!8UIuX)~NY^Im(;Kq-4RD3%Z$e0rjW2hIJ1=HZK%&F_DB)%@}KKCIGo zmaFDIFB>f2FqyoDS}>oUNF(J9WgPdoORXX{zMh`qlsNm$IZTxd91EBD!S>wdzW1J= zMH}-Aq3E+{hBRG;5HxFB>^4lZT=2$(ts`~jwD-Ymse}sLaB0XW1cRRF##m1Qy0S%V zWg65V35p9|Y_0`$i^UKp#zkl2rcsstwrW|^9&^V7VCb6qouWWZD2(k&L`)l7$5CfX!zsZPxqI1Jf|Ze8qRDy4fGoR>E(0%+~Uf+gmtNu=Z%? zTR+)dTrkHDD{n-72o6#{`b7rB%B5YC0kOo|Rpcye&`0j^)$^74S=7w32t>X0hhf|T zQ3vubHjG=g^wae%X$yj4f&S!kp%SQFtyuO;%(ZnewF5VZ7y0pM2IqdK(>d8SbOlmR z%fQJn4PWqg1gh_WGQFmj2|J+yr7c#szm;)VD83{q;7K@vuaTVWfWCDEdui7U+gsRZ{1 z*>J2TKJD9Pj(mg5$8wguS6{Yb-zb;kbJM&0yCe({aEA)v)8}8FO0Wf7y8gWwF5Xyu z@dGssCw`btOT(s31sovC4iY^2tmgV|u+h$p z?8;cx3Ns2nqK!XE;t`)G-EvkC&lm#|JfiRQ=Gl>ohhynK`J$6q=3}|lTO0g^J`Nfj zJciM3Vf#r@k-N3SoN)Gw;YJNbx1OPhdYp@qQhqt#74$(5| z%gI;m34JWiTN?S}Ku59dGIEqY-j48=m#hh1KR*xcl7Nf zDp5@9Kpt~pihwq>I>L)h%dfp2Zd@~SUjOE*_uYjLjShdpFgg%}zVTk0o7fcP7roTv{Xxl*UIJx(d+g!zzf2D?>abTQ(0PYwVYpm|YX8I0m#bxG} z(K`kXdl0FT__+ln2Zx9YbE8V*c=PfnfjUrPFJCNjGh-JsE74XPai+@|RBglT3G2mn z<{BifZj`pxt;z<%nSc~Cgw>JUVcAtWUIk3_p69N_1iTzN;f=9z3FWWJT-Rz{!lqsX zUsYt)L8z3OXFWf-Q)#9=h1I@6Wz%bGjkjSSHlD;lY*Ax}8?h)T-s||f($+}g;%S+d zm*~wtLIJQcBa4V07DV0fC1EcU|5LoRQM{S(IE zt4wDx(v+lX;Wh;JkaL^f@2KI zvN(fE#npQk$L;RhZu`2^>bH(sy<qXQD|q)izzr4bf^V>)Z?K`S7&g>+(gx$4%&b$D z`yh+YL&z#4m$iI;)@`Z603uGYrMJrXV8k^`x=PaO}3B+F15ic1IXKB#^ zLpbg*pV5!$W)p=3bUX;gd7aLQxz(@+0cP{3DnrFA_JZ&hD|+V@CbRV`z-$CE&sCi+ zxg4zG^u5DvtL(5)?j3&BPKO2XE6mc^((hm<;E_rMA68TdKGf_$h{LMma47Wm;j055 zRul&=^!Gu03Vi`Bw9zqFJBHA*S&VUl;v~L_{P?qY97Sya$r=O*m%um{<&Vhg-Q!W% zyA>Hzy+es&(Jfqw-5*qp&ek=<*aJfmb(6!r{k<2s2Vh~+Jr7d@xK#u8aJW1Mz5ZqQ z>|HT~1}%jo_4cNI`nQ?N1$zj_10Ft%plGirj_%%}MyTvJ>gjrRiBe4LEQ_Y8L56CI z{t&uy%`8jUSQJs;`tDXrz-t5j-p{m=liK_rCZuTW35aNRPJ33Dmh;#Y`>B?6)BRS* z&4^*Z* z-Cn%e0D)njiOltb^Rd42=w^U}$zC%ny$!_G7(lQ1;6QT~p(VVCh{M#(w$bmtRg#I~^FN zPBSbJqz#;*sDO5hTkwjf$_ihdPv0i#W(M2q4%Kr`axi{x~fCH=nkx!idvT-2rBD#(E)KkrhX&a za)x>MwnQXoqMR633wOb{=W4YXx2W~+Ou3VD>)vn9Jn2L&Gf~nPPg1ywP|oh{qDd+3 zC9ss|Vw>_h+a2~%Bj|cq_{;^fBVvM5q4}(62ci%qlZ!#1@1(|~YQPt&%rxP7+!?q* zZ)g@~IoLKj7q|MCa>?*MaWZFtr!1>taBBy{E>0yTgAa_cZN6y5!POK*KxS05f3?PDQ)w9inpl==%5` z&B^(6(~9I^uV;4mC!ZUe+QGRm2t4(GcSfMCAZMWafpzGIEchcYrZ$U zp|i4tM)U?y3m}fDDV*iP>&EXvIWDX?j_O!2{YeR>ovcZufE+!^u_chj75y=}xZ3E4 zV2B15p-F)t1nwAD-sF94#=7VAl7>*6X>t}bT+P#3YH{b&lTS}TYCL_q+bB+U>1jVJ zyx6Yj#5#mlUCY-dKTusN9wHWq#^RUJ{;D{+4{|H6V5}@&l`!R37oArBxNvKhET ze?LXS2Y;m8i__I8EHVJOb{gKzjP23|a%-{7$IFd+oLODY7G??HCM|+lN<+dMK<-r& zRI*gJh9w89-tVW%TtNlHz-2>Qarf7{3maAU8pWsKe&HMh^D~Yv4Z1X?R|DtbUb+*U zn|seYn&ogBS9eq|y6F(j7VJKN254|GzBLfH-`VtG(f zp{*STU`p7F@6i;1yQzKB71iRkH}D}JV}ui4BFoBHhYL2<%XZ*-dt+5p5&Rr(nAh4rC3)o*w$8q1bj|9Zf5SWs27 zm-}fBJ{U`cYM0FBd}pxp8$~r~ChSg#D#_r@ga`AB4n5cFW>vKmtQy55GA+lEZP93s zmUXI&W3L=---7&;ZPY55U zZA-lpewu~=9&?I-i^Iv^Fl*M>z}o+;MTPJT!$CLJr3sx6$#*BAcbg^XHB4XA8w|6% zf%lrDY9JTVCFuZ24kZMrYpl@>v>dU7FYBC(k#JJeNmqZ|!GFW?GnelmgQB<5&f)VFdJp7ze6H zR$6IsSur(}`Y}zFSl&BBeCw`Y86>)k3Hv0zu|SWcm%0sRf5%#m$F1pqO;yTT*ZbZ*8I2 z-Sx6?6#LA-sba01pdAcDnPu7`^)#1~Kf1L-ktgb=fggwYqV@|xUMuVko2AOmU9hc^71fM4#vQZ*&|zCa$CJCGw|T;?s>=P)+p?AE1OyL(Ns-Ia_0Bp zuzU#^U!6qpDrJk-K8?OchYtkgGMruGmo+f03U}kvFp5HoxNqU-EEEEkZTdZhr@eLu}!xbWW;qr`RtaiBr z%tiUeb2>5aGn4GlpIfiV$3V+SKhvlR>t`^q_AG@U060{6%3F{*OxdTkYYj_+CcScaz;y*#m_8Q=q&G*!q*x68-Zb)Yl= z!$oi48pQP~O$d)w5At#R;F4>ihigVv5iy5YcQD?;jAdbQ}*8 zI0d!SzmPHlywVVl<3_aW?5Q~L#SeA~X;R&Gzk7bxy8LCp<=nwOxDoDhpg0Wk=F}g4 zmYkDx7B{)hh zVf`lu@*F<0nsJ78GYcam(+NV9Cy-HV8&z0g3fTWu%8n0j6yB+rFBe{P^II%am*{7$ zZ>G%GN2apoWtzpGZKd>Q5)QQ&mW7H=TXKDkwimJBCw;Abl-K*$&j*Fdj-buR*9Y*m zl$Ku#17D^vFGQfQw_$=&XL7ZJ;b|Ce zmRNck#+XWq`V-`nHazjpg|YWJj1uISX|R)`u<{QrBf(p(Wa8r>nl3YkQ%#daGSu83wJ{ zQ=t_G(0{15i4P&AkrpE z+E`QEFKCJzr?M~cS*(}W&ahHV{uLU=H!eJHn;W7r>GI$U5BYxM`HNSLmp^>(eK_)V z_PuvUy9+#F`xMCG$2BH$*|AzC4XmZ0nnUJj*(7F(iosA7qZKxo_Ai4fcgrImjjC7fR=Q{IR4PlyhXPq;Dqz5vkLN5d zGvk|KQ`WL(VS%)KXl$|b2fop0ee*-fw}uYjVp(quV}Yv`U!J6&O@X|GoQIA##Zd4U z?rGaw@yIJU;yb=8bP|VHpm5PpMKin&#)2k@+j;vjnWL?TW16cR z+ad-Ec*hDiqZ?fP=Cu^%>oU226j%`^Y}LUORUm9YD@)T595AT@T#mQn4L*H}2ObqY zxJ>TfL3Sq{gR0gkWKd`KF05v_%{EaBL7&WF`9r=Y_B+-FSw z2{?*WLN+&Qm`v2tJkfn5oyC6gbNq_+l0_}Sz*suLJR#p2dU9ghlxTPZcXn;JCO>CQ zi_|C|y(J1tAog=pEH{sh96yy%}Va z?0cu-(e5Vu8AlRA6?q!T35cOBX`#_xCigVt-4r~)R5zTR$6UL%_>B58)b%}C*EjXW z*}cq!rm^K`XWza!%Qu_FM%fX7T`u;KiyVfKL<+^VDGQxnEq&rH5L@{^do}| z$y@_9t{r-+^!hV4jF;)%pSu^Zn*`ibfDQ@J*|sAkwJ)(yL)K47XcnLMX0fydB9={} zYO@W%oaKOsOQlY6OZkz+q6#NZ97^Ch0~wEs3|s?M2O%pTf{nO*adtJQnqy|0bR(pZ zseIRfraiu+S}DpK5=_Rs>bD8wkG!nDWfN)^UpgK1V+u`=?6T_UXxM_Pc$mX5xScK0Oioi}&w8Jt;k^b#HnWgU%I?$>M%`^7_*g?^!Dg z{qK4znMKb$dfFIp)KD@$yNy7Duz;BrzY-QXoNDM9|Q&`y+ zZes9iB8p-If zPd6vP-j9iJfypb7Ye_In4R3~dg#odQsz@#7v*56yIE@O4^{m&I5*gRbdVYXRXV0WL zugGv-C#!iu4)CKUGItA%BW1>yVv6uuozY>Ys#lj1mYx3A?a#NA<(etWXfXQ1#!IDg z3FW9zCATRhs?(8IWZq{>VYz>>OlLQFbz^K3)gNePkYH@;04`1vM0Yq9%R#lx{tcIr zv9mIYWv?=Em#YFLWM*?hBIToY5EK&1VNs=%WTpQ}MMtBh>YTRFd8Bg(;YpvHBuNuZ`}%OJ6^_4IHA z)XI|c&q#F*X*cJTF=+kN4}pT{f@;XMCG)4=Fr>I$**elb@xhXp4Frxh%vC^(bbcS#^`P6?o$Sa+pcPID#-bx$7Kc-GFSvwAaQe&dFIV>~@aj7Z z258w-v_d8X-nQ4RA;KuHyB#n!{^RLDJ4vx_8CHD5Ft*CbHw^#lFzhC&RORq|Q;VX3 znWI!B1xDl3d%SK(q?+O+>_%6OrvqA;jZBwJy?2ua- zr&wZ~;}VH8|JJ2fHzoR8N$Yh=T9?$W-?+H-AGu^M&u}*O)8LO*Fc$~)4^b@lM`QY2 zsvsMOxA_CruaV~dfaXrUx-fbo9;Z5tG+#D=^f!-Gg4Q$(5yxa!6I0`+s3`Wf`xCV6 zVLc(n3sp{OUFkjaab(%4!u*X<_Yl*nwq724d!8flMt@e zr)!%`XAWB%qmu^<7i+ND>^&f*E=K>jl&&+C3}MEkcdM)cizS*W4HwT7eW)Lnnzvs; zuDdN=ZKVTz>su44V;b>6Dp{!_@O+wWVKFvs}6+VX5jnJWFLAa`GQr$_KS zxN|CsS2@F6wQU~Pds10e7z{nPxNdQOFyeC)ugRsFM*dJiEN=_4RcG6z)TF>eNYGfE zgeK+$1&z4_U3w1tf&7%Sn=B9WnI@+)zjEjekpR2AXrG?^Geo}WbP)aXCZPyavX?N2 zRMBOCfExg35ja}1gpQ1nbshTFkai)eD{taGv`bac-_`K>K z_b9N$Zv=aA6o-FDRvA!u@f8_@reZHkCQ9?DA$V73IB7$GxH#=Gb3qi7@{$s86%}Q8 zjt9;-5Sa#%aLQ82Bf zqm=ki^`RR^P}Dos$#jM@e3ArK!ZzcFGr7LRZb#^_r5Yio3CPerB<$n2KC@@!JM@h~ z_!!dv_R2Zox^si}`32s=lL@Ys)`OiKvSLG{@lw#W6RY5sUlF@sng%eg@f5*CRE8t5K4rT-3#uvl8iF3O8pI-sRpBA z8y*3$8&-{>?f6wn31JI~R78VE;e@)JPB0cq^*GR#b+x%zIR6#5fB4>zsF0c* zPL7}=@I!BLCMiI06u8BKKyT^~9VTY3FDU9O->e%dzgp>CyrE|?7@|Z@BmG&vt07Bb zLp{l4=!6DIkjP7zjYG9f-YuKrV;=*3vn}WGNRb z8Tt|I^3Rg>LcB&qT0{}YEcfH$MPb;Un&{R@Zkr(VO#jFg`?bM+;6@QM&~C2pMt5T<9@eUc(HaX>)>`3_%rk)*i<0V(N6TE~PN z$sJlmg`*RPaVQJctHFMTlqyUG6j4}w4y1Dn9l|gp!ql$!rP+&N?x2b@-WBG76+!Ei zk5aa2V7;e?voy@-6j9IkuV&~^n%tQQ4QGqu&VHtPq7=f4)~A>+32&_Ig!ynBnj$p~ zK{1}zKm~(?xFJprFZae)gqG{n2ykg-0C#y1n?q7zbt)c(g(ZegSQs=BV2_EpfL9Yn z$4Otd>Ui-e@We0wb)F#Q;EM5n%U}DJzozro$dx8(PTjz|d`TwqWd_^8+v&DWcdZmR z--(;@4Oh%@TbDW&s$dV&{$4!g;e zZiF$>>xRUL^Zj z`>fkX{S?gE8-*7#Ysqx#M|i!93+_3Bo8*2Usc*YRmZVtSYtB;Rl2zQPS z%0@7J_(+*fJ))T>4tT|Qr+V(rV}`}UA%h9BgHi<2!l^nsKR-EcopG`6q9+nundCnv zn$DA~o*DtmzOVzR@p#g5?+ks&nsNq67BZ%)6s>*dq<6N2zbr$@(^3#Rb<7v6`X-+}I25Fm?G=Whz; zgDaRD>z5+)zUi0W^vmCee)*6v&xP<#T|x{vdkE#Z0OHB;PB}|L-cXIyH~^%^!E}uc=->rb zPe2@yYdjnn7n@I{4bX(Pv>nAnOkL`qY$+$DLUSHO0I4vThKVSv^Wp=?^#05p#;C6$~?L!%&y1ra9Er z$~ZZ}DF!%@zM=Mqfm_%hxV1a8h5WK>?`~UvC~k7hAt`M3=C82X4_*?VK-Zr@oMNL= zHH_NEWdQRD;ucBD(JRiF4~#PJR_>_CC$xZBl7(N&SBCd6zC=67@`QjyQa}Zbr@{(X zBml1@emi_1vISFvmv>*eW+v3IN>V=!qxte}T;^oZI|hTT`AW$kubuc)I@-N|IdM|- z^Td89zXdwQFQCJe*;#bIW|FnD${JZF^rGS!E)3tLkXqlmUQ}^W5+f}}XxN!@Z9*G# z(s42@+9c=l@Bb>7KX(fHw5d(yYKDhKGdzy`EDwj70`i`1^~3Y2ihJ17A5J%1)4y!Z zz~j(rIqOy4GVa%pfx8k-^ePQ&%LcuOa>%XelB{kwxB7j*f6?Q@(y-Eq-?c=D}!N0~; zivES0xpSYoZfbFd*XJg2?}``ZuIMDgt>L&G{>>i}kxMSwrC4@ESo6YKb793Jw~ayS zMk_**=DXu|E8|k;SGIan>{IaqTX=13d9M|^{Xm!1I*`C6vf_`730whfUPjye8)BQk z?%-&JaQhY@{T(3isxGB(LDFwQ(yuy5`bWpUy|fh1dF)T>r-Iqk40%2NKZ#J1;%ddd zxGP6heyM^Iix$>zuE{=H(IlCPZ52OmrtHhm-#kX8q(6><_Pv!c84lAVOK$Vt-y){+ z-7hLNHHx8WEb+&5V@hSFD$1ce3E z=8-@AJe$_92u=+7NQop9XB#QMfHq=i-lDljZ0k~KiD;6o%?g;*8|(`KR)qToer8CO zee&BCe~9s8_PJGHVv!lz=v!|5?U#Y3xdu%UY0T)%EPL4~P44rtywiB!pzBqrTp*~< z_PqDWJyeB8axc(Hp$;W-a`D-Ktr8D0)LbI? z5xtqPVh5U44Hv^)#g{IM9TNLEQXj^KkmE*b4snrFP%W4-!0*lQ*l&UT=R-;Nv698H_JN-#qD3yqR9ou0cf~E!SvTGAS7u!z za`0U4Xyb?UV=olG7b#tbN`0a-%nC+!84+tzq>eb2wV+@^MoH0w7h~T9r9$tdvVEH; z{2y2NNOg8IHv2D7e7lE&hlmN!2R^?&QX^iUEzbH_gr>*Vwxw2h#?+7r8)!0}ZC@ts zNFAY85CGBXz+$QVx?>o|hae`~%2)>1!$qR?46wKF(quN>&?o6@qhvNURaW_e!>UJc zgG;FyEewkW3TaiqLLNno*5{vEl|hlb!LDqag2L0x({Q585NIaMGnaHf z6DO6fmS)^x<#%e07YOOi3l?Nj+3evP@mo}Bv%+^#a@zl3oc8aA)6+R#wp+RC-?cA1 zZ0D=>&-YP|>4Yk{I43jC5I{SXC9jim1r{+5s|lR(ejY;GuCloR+P$V%oaXG2h!LUf z3R*<`_>mmpTh>Ok6|oF|F5ZT4!sRBTIXki}O$y$Y6*ml>G`F%L?vgNuOGRv=RE_*J zh)}}bnuG>z9ARP;ly(H;7?n;#o@cwj?OKssq*XEwXdv}Uw$hI_blPgJNjnax50Z8! zKBmip3^Cr{ytOgF@5HSeUXZ};EF~ZzeZ^8Lv~xQKlfBA{p$ zD#sSdZdxYZ1!V2e2aaPa2ea@ZUDSigZSmv>!~)_9K9g6RY4soXo?TKMG$it98rLqe zCpt}KRo*w;&S39T;fV8C zVy$5WiayzK8r*MtwC&JA5=DBc;)Jd`njzgRx4}MObM>%~&`L^k9BidBk}3sifxjnl zz0>BR9+6rA+AuaBO%`n*v!yz8x~Pbb`5BIn_g}FB7D%^aawfg@2AR|4H&?yyE_^JO z@e?IFVnE{}iJ~qTxOaXP7HBPkfpKyVEF%ho3d6A)k~jV)jQw;@(ZVG4Vs$U>{O>rJ zaxXTx-YB4T1W`GO^%jZV32I*$rYeo&&C8z#Sf+;>XZMc_aqU*J_#tW70hd$Lg+o``W!>|Day5$9Dj|G7g}NB+EysLd@n?E+A>>EA|0B zCPvd5{^PiF%nQms9qYU8P@2V2JUB|Taunt79?3m*5zR(nTw6hLRjesCVyVSa@5TuO zW>JzaCI=f#M^Q2ghknGi;i*48B5S&p@jo_!z92hV1QO9&Nx{yebwVu=E4-h{-+SKC zTzc84_^o~r;ZTD+NICY?otL|EuizE0ZD6_Yz(7v8aw8uI6#A|gi0(Az9`Qem;=g3} zY^!=pmm|o8nbgSUGDs*n++yM2ZfO(^d{9j^%hDXAEsR8kquBeb<^=jcEk94g(Fp5w z165Bj=S1!Xf9Cn&AYcZom05|9cQb z)EOGvTR)8Y0Hr&RPm-Iy#v5)R4g~i`!6n|l)JwFSNy39`GGStbTLFj9{73_ieGL0E zoGZ-SWM3C?FgQtWPW>-n6;{;4DIZ|2gp8dqK)n;J;vV2@5nN50BBEQxw&zDl;%Of% zdgyWMDdNBqye7Mkp+$|$ey{vAzfpcp^i}mH7{-O9i%owF?*bRq&d1itt~Zuuy<6p@ z2tjl&Om;AvOdOmc$=yV>YXpR9oG^H?JiaDMcMBu`$4L~Bqy?mV6nGz7C+K@>@V*9P z!r-}phY3hS(3I3LG0g}`GMd#kGmg(nO*3zhDulIMM_D}ZCdr*xG`hoX>q8a$X_#bd z%JC!rMn$(_Hr}d&lx~G|mRXvlj%pgLMq0}IYi9)%Qqy^~w)eY$6?&R^V?PeCetdFk zb+hSJ#2XpS%|;PrJNQ8mvcPicur+k`XEPzX9WJ(s*IOruYLc+_6MZ#;jHIQv9HR_z zyo0r$WtQk<4X$c2?hUF`gQtvTjkTksz&%;ux>YSfjA*j}zkL>bU{zD334M%4XXBVm zVqMYBQE-E0Ux$y*Qj-^+tiyxG58uD?J{);FhX=^dy4riE#o^nODDA8AI@Zw=Km=Jr zP+DU$WF{tF*!7q4%{NHmz+sTmD4Au^Ttk}|DZvENT4J^f6>j0sv&huh3A*4NC18c@vKX|3 zAtnZ1Alp$AR{>6nC~-iOlspB<#xOxMA2j?V%P3GvJ|xa0f}~N@eLU9Fu)RB#it6C! z1#@fRykMG5X4qF@Vc7(Nw@@G#U>{yLr_PmMgSyzgpXpWL`pkEJ6b8n{b6Yh{nk3rv z75gRGag+wcGlwsdZzu@NFR5sm-%EL1z*9`*pF~rXqm(1BZ^c~L47JKiL4?k&J=RiwN@a68 z9p*3ChX;FERcrcP=oBX)*n_>WvN=h`aYHbN&#mHW?PM~Y<%;-HE21wBk*Zy46GRW9 z4ngbjrC1$CLhv|Hp8#oYy<5$cqo9o6PH#6)O zMjyy<2ev$R=y@sIoY$NC1Doixn&W$9Y&z@G+8*xX_*QI=XW*l{kx9y=LL}}Aii1hb z$T0@VOp@f1))9ULzr9o=_#9QHpQl4n95HLHTL}d7)6}0oX*^L8u3p8uuXH)wg(Vlj7wuh7lvPGcvQDCvpjAf&G{c`S+Qnwj(z{R6&!#1KssM8?a&nyd zU)uiEABOq-Dh~4%usAUUp1ejk@S1LylKDt1`t(+B2CwyYI_;}$*COQgIWvBR{Nh^2 zS||gLLQ9~Qo%R*hPIz|&Z@+AvHfV14@f$X7kqATg60KLofHe_0q#MC+*ap-=_5Fr- z(C}U~yjKlx|N92GfxPcuG`#%-_~6HbhIjDtd%FA%U%lA#dP$>VY78sBB?0Zi6V~9t z*90v={|3d?vyQG#wguQSblrRdZvu0}HtYDUxF@U&wKuzoRnA9c^UMNlh4(3?tKWu1 zV&i97GQ>&|>+XLHL0XvOKi7r!B9)g7TK+Q+Sz8e;#dIfiTOCQ62%b)C8?C)CL0MCz42ZsHms zt^jT^@aG~%VIKFqpHVPbj;R39^VTCGsUQafjf_E`9Q1>aiu_gm@eKd>Z5opQ%Fngq zsyB;y0@_KO<*AQB5oyxbqO&*~bhCtUjhkh~P2$MtZ#Rj3lkiJ*n{{uKeVwMk`k@F6 zY|SeDM~EwJxAdhLVl(k8{RH+yGH+7~?EA6OsZJ~Q6UqsEU9pI$59GtAW-Haj0q`&Le@(Ag1LAHivW*% zZ9n%RJa1~~^$sfxVKyzXUmbuoh6`X9sk(gv$|u|Y@XbHLXE?%FmD+gQ%1f{YMKUt? zVb;PJv5;7s$*$|>L?C;ITXyfq%I@`@GE-0&GB@loCgDRmMq8IN#A^0n|M{W`Vg?}- z(H5t?Gi8vx#r_07VMCe1Oo#7z#kZTQ{r$yrRk^++KbSvS-6$KkyZAr zv-PYELGfK!aa~Yn(O${N<@78Y^nx@x8zFB9bj^f))vs}n!H?z`^bSvWvn;<546~Ch zrgpe49yHdFB6-Pu3=Sit5hXV1&uYHQBF(u)kQkMglJle5Ht@hi*xH`A zqI%qgJ+Dow9{_vxhCu%WyNfdbi7?KN-_e>*-$rOrxHGr!iu48d&(gh(d6&WnXT`+~*19)k?9Ebccx+$K6}^0D!}a}Vu~vG5dTK!E^IG`^yj!29yMxQDg^CRWT~ z)!Y#@k9JRem=hm-%co@-r{c86X#m`4R(gHuCaKb2_N~(1Z}G67qpQ0rambe4Xd5KA zjN#4f{2>Yz=jm*Sv3n>4N6LIL>O!W~PP_N>Zo@nNGE@p%6*&q#zZ*Q+ zm3!*EqUUgI@fCc95X%G`BPS3JAPTKLuQ56 z>5;qN?1G^%)7x)1$C5-1Pxr;CJ3tGIa7=`#YV4D*m2PHK_et?CZ@>4-4^(6=`} zpMd~cra^Vkd$!Gg8>U(ArOCa>66`AZL@a%EjD29&hmDg({B=X1{V>Ob{PAab(j2K+ z;i)6bbF8SA@qbKw)e0aSB8eXCIZm9qo$*d)bWx^`&M%weN35 zN3n~{U$8|_-3@M4Ic#TlkFmW`$1Ml3EpfWtF7K!ab2jQ$W@mpUB$N3=&MC1sJB4hy zZSO`wuh0_X83j2{it(bG|94=3|bz5k>wVK?h01gw7z##9a-Zfci+N`oP7k)l|;3GxRm5g02gh6Dd zzP970em*wtmr8Z~Li>wqiK?Zy@((x@RVPhrS2!#z-%h(QxwSo4_US5&Mr*H;%ua4Db%%Yy_~R-Mt_ zAsfV*2by@mNgrYA6?<h)>05(J}%* zjc(Tv+&}A_ zi2$m<9Ty1J{#a@%_^8W5Z`BvrHW}54(f3C}EakTUPYc)~I8M{hmsqTOkO=?VMjfc0 z!f-A<69NNEe~^u9t81JF5ZEz#Csu5vB!J;bfulN7CZUoNp37FoBgh;b!nR?S?yCWF zpxQMy4kjRM;P3w z@5M>nyy~ILFCrG!hV6!4JR;1dMXiC(Vybr+)sl`TqUu$>h@$^7pcsJHNfnRzy$MT6Phe zUV;r;*F#~Onq0-j6A4HN3HXJ#9_;~>yk{?ma2d(#vCKw>)?b`RXEYF`;a&CH2*k*; z*`%zN9a!-flI+J?{;t%_w0Oq*0`-R23Q1d+d6kP)zh+yhX5APBchZxjJHTcK6=Ney zGn?IHd6>`eYq7?&h9pWcrdS26mP~Fi>VcatVL!1RosF(~!S*?e-7L+fKntiN>@YT{2(?p1Z3S4f+93=T6A9@$h28bWC|?-zG74tNt2W1y#MKzGTY zcsu}P+LDj)>4Ay;6%!1r#|*Z5Z13MZ0nTn3eEH1KV75Ijti_=Br7Big*;TW9F70iw zRY$7lL~paw;vP7QD^~D|wI$1yELpU6F7scFps%TZ8}imP^>2DN>Z zwn__k?5&L>6Sz%636`92Nymmdtyx|eu#2fHo#S5n_^i`Cd*>z4rG^*osXcE3{HLiJ z0w9qZ1{a|jJoq4?+!qQxokgmBj4f#tcLPeR|&MzU>}&t~;&% zv9RP(JMvB|DDQ=!@#>rbhH%PpG;ADO=7^vwzIYoZJgU+GuzdEHY8Xye2)4wEAxL3K zI`&LyOb23}DE`kXU3pbkjnaw=3liv#n$mx#IFg66acm$;=^gHTzAS^{&JljIN~rv) zbJVtI@wu2A!CgoNv6XH9K2TW>D0~^bHSg3vK>NS~5fBKdt`{Rlsh_p!g8HUANOI-8 zO&flc?PyMgQSQm0c1Qy&Xx z0iC)XaRk^C^lPIk4=hhT9sMN>kI6Z*$WFkC6K2ZLH3QOzD~qK77%sGwU+wz+%Bx`c zMlaF?v^$4ZVI}PXb1h)hA7!WKe$R0SNslM3k$uP+)H(7LsIK^M#)p)N3$&{2M$xS2 zxzwne;0a#hm=T~2fwW8iNGy?`UYggX&A@{X42@cq;BHog+GMKm`v-GW96qlOQ=bT* z1i9X65)+_Ia67Vmwgs(XL49%h3T>=0fAYbC*)pNQ9ta9oXv7!gtZg47EURuK9svRS5Adn=%S>0;?SA$&LJq;5?Ooaiy(wK18 z=y-yx;g@~`@OdgUUvk7BKDWtvaE@6LRa_JD6)A_jQCNS{ek%9!aCg|A2LMBnb;e=N z5NO}VjCnZFRE=;q*v{9Y6ghAY6?;(ri*7<`|zC8Q(Uwz14hl*9tv!GqUnkll3JGTxg>_Wa%17) zFTq^N>nLnY4=1h5^mN=-B#vX&*MCDpLHA)Z8$q{3`kN7h734Y)vonQ? z7TE~y-nYUA%k-w-LvSN3VeZ zrs-YvTGzea8T|A3wADS4&$|8Ynf&{r)$3iHU-qxhu1=4RFX7{h_vdHF*5B}0=d$~A z_w3#ENw*V_4^8Dv+=lJrv+c`e#Lx}9M^i1dS>YelJ z_s6Z1{`>3hS?}tyb=E$neQ^8D*z`$$ewZSHgVuMj5HSeBT#6#9K#&9M^GG zh-gJ*$SZm~%Sehlm12AKaJ+WnPXoDxuz=45ON-Ioi|10hk4zGAhZ{mAm}(wCNV+cc z1d2x^a0U{D#QD7*h_gzS#XgwQgw~|-U#RR84uMu}4KzYE5{t+eOUWE~@SGJAFF!6c z51C`dx|U)T2-rHAh#9}(6bwxZo*#{pG|a~ntx(Cg_Uo}SL1BI_Kp}=!H}N7bF=@r# zKvmSnS4`!FM%m*aUiAXHN$fT6mX$%zmDywrIL3vQRfG*d*;EoM+9(#gj>%RXZdw^t zDu}QjiX!aMm;s78tdzZKCa)~2>Sx;@RQ15g@dqA#l8rKQpTDVh%D5g4Cy$G6cvh7bbQC!XXHm2yyaG2~!g2hn?v@?H)Ynx+J2gVURm3|Q z?L}|nN#K4hmEu<;vZ;dHI=(yt+VWi1 zMtI@!Q@Tv`R_btM7V%$U=Ka@y{=e<_$L$YbRQ=a~{(p>L)1^6lTytcjG{iqulT9 z+`3Z(jb?>33_Bavp}d9Dw1C*SebwuqpI%>{f9&a9i1TZ5A>foAJa0UI{#-wSwb-m= zwUU`pyXG4*VpAbZhanTuteWduSH6=iV0E7cSe`UpqE0Ks?xfT2TuyI{ih%sWZq z(cWq6U$1{|om?Fwp|1Op_s0A2;NbA^hlA&b-@khK;)fqzzIy%x>biB0K+8?k(_6*P z)muD5u$WSFY|+8BY}A@?0omtG8fcXR>Fw3Y2_TVMP(-)6VyfMa?4e7@+GneNUN{sE zHEdq7PfF*vnqTbUjK#$)V;dNcn-Y)J3NS3;ACoZD*KeMBXGv~3jq&ROfR|}sH?vM& zRPzjMk1(}xX=~tj9|V*98)J~yCV#89i+}HAa4+nb>fx`1Z?3WXs*;T#&z^p8tn)%p zZebOyu+l>1uD}q)njR_zm=g?tV=W2r?>pqSRw5AMw~!>AJ!F3DNAoPK68g^cZg^7e z{kbVtXjnRLh!Y5J(+VugX4+cemKNO_=czQ~-xu?LdbygencSG=YAW3>=A9Ihg38m{ z8g8(EU##yBvf|f1=S39qlz3ve!!Q{3H*yZHNy~h=K=6xK)q!BwIj{Ljh~tQrz=_H| zH~WZI0Brc#aHzP%<$w2DCQN0u#lyvZ+imW7-I&vlq1-Cx&zFBMKhb&1RIHR4feuDvpj3O^eZ+Q6^u58{(xA-*tu2&Ux#|czrwU0Qcn{;i7QyZHY2o}#nktl z;>mwmYuR6-0<%6^=HLDU`b70Z`^6Wn{&h9kvHC)_v&!`D?o^ZFDGT|4N&=VZ(Bjx# z;EFWDg}1fsQ7j+Vm6<4E9E5jaFr#wwoX(Hih@l{yHJ;A!R3hh{6l{^>pf?<9yL=uw zC6X*xUt<%{RyHHE@IIW9Zrs$SKc%in(K%n<#KzD;9~W7c!On3eq}la4kv>b!Pfbnv5=yW;@hzDYTX$^!okIN!!oY5I=N4pIM7;U z5f8}X>~yNS!YEe|y%d4V?(h}mH9;Lt)xFf%3`XD4tD3q2E~sf&LUqMcN8PCiX2q$V zygFZhsq4bsVz?b-pHZR5wD5>^xlmRb_%#cTsrkXR(cPHrXpcu6ep=_`&m7y+l>RL%O*TG0JNj1 z)NBfR%Me6xq;lQM90T8hryz(J%^6k$-^Yu6s*7L$7AvwuVNM(_mPV^%?%8XvMI_QH z1{ysevP!AaD0CRvTbV5tdZDdkI)ud%*MIr|&DT)UmMLXGX~T*;-p}3* zt=APS?NKs|H@G`-SKPpFp(+Uhy$uo0pOP^Cpyu`V0JQsA%@OG*FsU%UOQJi`*#4S? zF&E&SBzNjW`9T1YczTb zQxGN_okCN_QMPikm_^mL+=oW;{6vSvm5h?&e6G1 zqcBE7OL(Yw=u5lg;Md(INfi0h4EQ86HJm|c0i5S} z(V_MO>x^m<{S{5e{*B7PBW2FgPRq;3X)+s)y+8j1j&J_s@4KZPvHz>?h^tJUse4eC z-==j9a-zrvDq}EQD20GZ8-rb3h;wzpA8_YamA6`V>22ARkX9%f%L&Z?W*Q4=vQ7&U8CaGzxTgbq)=t>G*cog48LP(TZ9B6Kk$<6v`~6 zu>sgW=w47(+ncJ9rg3he*!pi=lS_cARaLoMaY|15ZA=9tSK*={7np#Ji7#;BE+T=j zv9fDlsc0fOH<*l_bxgkBXK^z|BFvFwtii*3-p-Yd&%yUPotg4A8@hPKsXuLaJq*m? zE!cvk+}mZhlmb;m<0gLpU z;W*Wz+~5Xp=H8(Ax`8Ky+xUFK_!b<^P31|o7}+ctr0=A9*f%*;Rzr#ICZw?J$J<@k ze&f>vbLmG9yjn#7v86M;_6GmW`}D;7-@JeF{&(;H@Sb`*-mdq|`#-&g*Yx(h@4VOE zPu~CKz489L_s`z{?fu33^vU}-?|*pL-oX2J?|*v#;r%}Y)Bjc!J&e>}iy#B@!#&FS;Z6P88=Re=9S^+!=?z*xA78fK(Z5f-XWi4QQ~G!7U-92K z#|lEeemY05|HA>TUM?U zqU;V;6lJ`tO3E&2pP7Or_`)KusefjuztN8?Zdi*D{4IcasF>EqdNlakC15vr+dAnT z^Zlm9-$VM8SIchj74Lzwcn`eAd*m*rD_DCzYYtXU3E7uWLjprY9y?ZxR$8^o^VFYi zbZm02jmF!<^(cdL2X!@eE(G(~pM*p2HkHsXiR?=N|JAj~5iqC;dGN&~D0$EZ`((LR zH^Jn{{0^}N(Fj;=C`_`(d1+TCCzOdZ0--x$9A=cC<|^bAbgmiLt!D6~I}JknrWk#K zg~yzyZ9ZBys`H@vl(L8=;U8`PeLamM6I%**CBV_DolRv19`oP9R)2CtI*Z z>oAG$6ok=|J#*JBT90MBg-tNM*da$HIBOD`)w8cdEXG&Efu3!BLS}asqB_IKpJmGS zD)w59!=*2(GR zYBCAq(Syeg)r3r$NKGbw=ItO{4KG_tIjS(g7a&0q+Hl%EyXqhJ z2HsEJpm*FpKkLxH-=AMy;=fcr+%wwng3Od!i(5=gX$Ws9<0rN`#Rw&(x|bQJf`n75 z22YnO1_)gHs>K0mCDHKu12nXeR&?9D<@U51voVqv37dwtCTg<-k}nw`N@pu^DOst{mufMXa{~_ts_f#0O1Q`R7%RDQ3NeKBmR zYHsSg<4sT=WW6xUBDZ~cn5O{VIteQw0ZUSyjewH?3&6ctP36F2=Bdez3cy(o7DEK| zG3HXF3qGA~WfhWYgz+pk4ZT7C^2#*~%Ls%GBkYS7^&vyP~A&Ji)IbXnvHB-#KPuQ zF>sDvJYhuKRt7ZaF}yb$#Gfk#MF-upv*SzePv_k;nB2knRp0s(6KNBVW#>^{T&R25 z2jK`9x9lrw7Nb1K=Aa0f+i*+$ngdkAwnC-(){gR$`IK#U2y8Rhz!B|0-84=9N`?3u zPp*R76Tha!L0Ezxk7oYJ9TuxovrMH;Nm&uiqh!NCg2e{fxztk~LEf}3uK>kLm(8nc z1slY)9EY2s)WQrNfEIx^n~6G$ia>z)vut*ggJidBPfxIXx6`lVFH=7bATKgyVD%Or zGQ4P{9nShEjOYCSXYb3K+eWfHzY3yyXDm5Ll}?wfiJl1RuuEIk(V}cmw|l~b$Rvp| z39tcBvMPEb<~!_P`}O9NY`iNEAOW7TT~*qM*>;IQ;$`N`m+$;N&`IDAdBQ3;YuwMf zVf-wA9{d~rD^B!31N=9u`;+J{S;p)<4l~1mAyt?+;7C)IBNX&$uYVZyqCR?oER$N0 z&5ST==McOaEM8TSsw^2%N7jtTaP&6({SNP^@ohAi3b-hT+^bl1DX_&$8(9)&RV_5RVV>JR0GzMv}<7J|f%u#rVT`c9n0;1pjoZL!fcED= z_y?D97aR}89~y3B0HQoja=pz#ln1?ON-F_RAU5Ag5nGQ6`ccAJ{*iUIus`_8zt1bS ztOraB)%|RDObXt+uQKmbX$glvpB+96HoD0ui8rn1d2C=St|PofhYi3Y@NWjF00-X+ zZW5y`VD&Cr@B|}qpER83t%IoI?kM3|+=kuHdDQ)!6>XBg|8Uq%MmvB1;V}674;?y# zL96rkAGR=}xmL_7VLVP|Ro%}PfW)dFu?`*ky`+TzFOTM$tYOu>)1pz3mlW!93;V1Q zaL4oq>RtebPTVuFEV$>|!^dzHj=Q%JbT)9IiA%Ci_{t%5irs-tul#j)6Fa_P6-%}yX4Y;X`dj%H$1$mly2nIqOM)`m?4=FT3*x5)@jy1(S4Q8Df_`w#$^ za<8)3IR^yTXfZaHU}pLR0o?^8(}G-Ke9!`$@dC>!EwTo~cNDH74O;}V(VQ=U*Tt_C zA0LKUa0@5Y?w}WQT95U9!r!+D(Aa=>5_o9ii@3)(%07uWIJ^r-JGjg6uU+Z@?@;;D__ciG18!0v->9eDC}_@?w(Jv2$AOu{JTR4K|;;_wB}^jTJ` zABgbN8bW!+XFFVGU1aY?_Suq8`|7Ukle)q;ta+8z*MfO6qGO$M05`q%nT16G4jQjd z7Ay=$SmzH84NVLHPgqnEGL+yYU48^+qGR!R1w+G_{)4%JIF->%)$+nua3DE8=2fNm z26kzeSolH<@lL|u1zM#`mzHqYE(;j{>h${f^x~%V=2R!(O(7xKf}GUVE;d%Z%f>G( zaEPmDq9FWq6ArurLcAtndK={_xFzy%kOdpA;K(*z(P2Q}d3f<%L9Q66HXNHmFJ&?U zKhrp(tF9LG>X@F#PJyYc`%s$pkh-{FnzK z3;hp5fDa;T{bI0~*;-ul&+1`*)R}ocCIbpS^q|C0maj_}rd(o*n7<_i#XxOnneY~x zErb@NJEfR;a60omjc%v@Wd7xh;}`p69M7{Dq5ixa!7|B^IZ~g&G|!g^9--n3?)vY0 z)?craXA3&|#|}B%d5N(rV5hK!9lOg3W$n9*P~J80@E0V6ufrIu#(K^}KT;w-8**7n zz>U7Mw$nhLGI(31%{VAa*UGctKET03y%P+hba)6-Mjkyp)Z!+UjvRJhw2E^j?=S~( zGiJ%CVaU`*Fd05%^e@oK`9EO4)p(NoMxkz2P!KAmW$@pa^dih5FWDR&MpUYOD1g(rkr#ZS~!R3(TLv$BH zsstV4%tT~M2ZR+4ebo4XY9nJE%7r}9q))Czy^z^2Xxdux(EAzzas`%Rf%Xj-Pnv`O$$-lWqsBD?s%ej3;pELVyj(O z+7m7&s!>9#Tu_gslv`j)Ut6Vh7Vswv*|YWQG*w3d}XJhQkm}0@=9%R7-}~ zWO1Y2YHt?WmQkS{#Duay_PPBKBi17i@Q_T?;5_Q4NtX2U0I3OpoS>a2X*eM4@ES|M z-D)#}%xq@O9^$SrDrB1tkVmnpVH6LVA$+`fJ4$YwlE8q>`X}p$EXAzc3CYKO;l@Yjy`u>@>GuG`C;= zYnJ}G`>$Cv_;Yx4^vlVIzuY}c-*<1Wetva&H2Ig^*Z*;I_UiOsc3=O??(6YCc7EFV zm))bkz1#We<$d@5AMgHU@1#>aOO{LHw7W}3sOs!YZ)25Hj;iWTQ%C{9NGMwo&KbdS z8*+Wch+>jRGd0>cO13$D-Nu|R&PaWh1s}(R3&?2DB47~?pH zMVnW4q0BD3ri?H$%6@oIK7?8K(raB`F!UoWodI*kHKKl`^ytS}<@ZVYnJ~Kh;arYA zzeJE;Q&uX8ur1j&Iuj3UzC!iQhmI5M$(*wDl>ZA8}H0g zlkcLG+Fzv69Xk3)$+Q=2yuUi$EHvIMFvC`Hq!y)uN0@sA7>0OBuBMr8 zYg#fUQ)4D2bOZ)vf zc~)Mx7oF&hf8yBzJk2FuYtVPOZbQ6jx71E2;0 z_EHBt-4&z(CcAQ>M&vHVfu3nI9l1;1Ll%v?R2*g5A%)=?(+x?G8#@ff%Em{+an%T; z@jc|2R&Na07En3>2~Bu8Z23rncJZTr6BP*6^GvSx<5n+)lVlu5F@2an$T?ty)`n&s(mkqhIG#3jwvR~K=`-`MQz|b{0w?cYPIY^qKB-e*mg*i8yxs?)vQJubQ^=@BvfOs8m2^ zhQrFb(s&Zj=5gCJF2!0*#l0kGK+6FeOGO1A5KX|D4yS9vu7`0>pC=yCfd~(GY%wot zF|1f!4YSXB0!UsX7|+;V-BVjr#XOTZoK}>$%WQ3Ys8bB=yb;I zc&kPU!4larb{O6%s|5uTkZDn?;=3qKVwgcgvk4jh5S~$l^$X0AS=?c4G_qeMHJlME zM7=tP8)Uh*#6P`Uo1QPtYKUOWBVuJk-)khO@q#)((%K6bnP(Z)(tQ<+c)}kevl!3c z{V>5ZXxO%>0Mcr^s+^Ug)*jzF`!I`!JC)*B#3wX|mN#3ki*aG;O2Gj=DKYfjH66pF z2M9bteMQ4i6;AU6Bo)cr?l4I*rHRwCkp%$k6YTdGt3d)~1(bJ}4|&-O6GCIzx^hI~ z+I~?;c(PLSUlq@BAi@Yvm=eD1xiovj_7SCk=0($HE=eZS}{F^aPsI)xDz*t;S`7_n;; z-b+*l4iP4VG>vii5Dd`y7j$%sQfxopmiF_VK&5GtvU+iTv`6X=@OD?a{Rjuz42Pb< z(SyD8!QR&P)~+6DcZHF5anX33PunYvw5>O?J#%magv|m=kXkDFsqW%HW-R^bvG4$73Ug!MaQPdB6iu)ptFJ8CtfR-XcY7nMzu5RCW&I}9l3zaR%yH)ysk8*_NVqp_nPMdDwR^b+?^{DU{#zu zSL))qn9M`QTAh%%WHqd z%d4;s+%^`u{@3rOY32?=97Hu@4T?uV7cKI1Z57eO^!YN&kNOAkZFVt>qk=YbOt zXT7fL4z3WY3WGaO+e#DyHlbf_vuc9)e#39r7aw>%5&o*u3a7fs%#2!NcZ)`#@3UDq zvbB_QEkFMVSJGa+CMv(>Nixc|B9-^Il63GRD4aj0{qD}ooxRQHk8wQ{b^BY}E77-i zu(xgKd)ymdDBf9#;)542b{vWySxI=mqJmJAT2|=vFUe${RJ*@0N=(uZ;L2BoNV@Tt z%d29dUFK-SfL)j?c&Dp+;9oihiZ`w?VTAFv?F517F6=&tBR4aCsh)7(&tWe~Ccz2B zgRq*X=L*7~Pe2lON7F3#x$UkeT|<9;Dm2Lm&Wrrv?>}5!pS^D#|Ml-bR4h^5R3~Q5 z#7XU$+R5v-rkvt0=HWC|*(8Z6NQDBlGsLCXN+;bdGk!{mGeT@zB;{rwuKQlo$XYyNC?9|?Dey`*T_9gmh&3&aV`Ml z+COXgS)A2#@iLX5=vOH&YXaIPdjgBv0nJllR)o;6LwK2P)s;+Cj2Og#CWHTgH&O*H zAmRbV$?0^mu!>YxAcH)|QoNN99TyAU^x-791@AjX{Aj-^=mPu&V|a3%uaeYPjjVgW z&6k8cAs{vm3u=-@sem}ALK?fH2;uq^rh*ba)6Yqk$LpwI8uCE0*_w{1lAm>*5&V93 z1z3!bKn+oI4wu3pI!$2X1VdC+EqN^GEmOyt0ZfF5|0I zjcaqp9VY>b7psT4l^afnpwdjOJ-RIzcAdGlHRzDFd9?FSv>=Uq=hbcdh9lNSC*Gkm zTc<%3XjwX!JZVNvNC;}`ta2g+Llg2f`dd~G5WTXT9qqkJPMMvuj4Qoq=c=7yoo4=k zM~p!-&Qa4rJj#u;*7+uMNGT?C_&inZz2J7*{jBm?Vuo zIAUz$-eoRTQ5<}PtG}%v#aXWVw0>1HdYA}E%WE4!Dzhx(eCZ!Ern|JRB`eT0nY}!6 zWj!MlPps^FaIaKTC;@!zWaZXx=hDffbEb?gOpbdbUX_l-98PSh%GB;eTda3A zxAo%ZqFkXxJ1h1iR1^ZxdZjqw8=QYz5x z?fz9zdf+SdVax~W{E1e1fWW)-PrL)fRh$|(D1w&?VijOcW_c7>L|KW%m9QoIID|%p zq(*nH;qAHtP$@b)zj}N6>8f>eb9#NjFF#D`0VHcX=Dm}Bp+VR#n_9Pmf%f_D>UpHIK2?sQdEpgbDi52n)&d51L>+NXrmNwMjR)E70h zlOHAj*-5bR?(Af#{^yCY(#eCse|4CPI|elKYt7edH%I-4g`2lJJu5U;uW4El*6|Ty zeNYGs5MC&h!(I2n;z|xmG$T?=>ExO%)+Ho5ULqAaYd(rc4&rJQye zhe7A+^6cW~)7izRo3r!NPsf)R?X&jH>BUV4QAaK>-v0H|>$A6~?N2w?t&8^S)9dTg zlTNTj2Y#fI1n{8)m(w2P5n$fajYz!^@h_Hy zDC`%;GbGlVCq&(YiO^YNIfJB9kR}0!=vUY}E=;s6xlD{>&n=!O;HY{t3cCmbm)iez zqSPd4rQIPEu!(}w9fet@DD2X?xV*q($_s3ahOltqsKlr}bm~^lnS3&uJ@L=F_B2Eu z-y~CO)wdTncCb6eopSy9q_t*;hC+mWVl^?n)48Pg@MZ< zO(4KH3Uf?Vz}9-seDG=o@zqPjffi5xq7iN*4N9}b&?r;|FFlaG6Y;mb3 zDsAG%$V3>-&%={0yUFwHc7m>}{1-}9@$FvcoSu+UdU@>X`m}v|{r(h3`}d%FJffj6 z5PFYqmHdi~f61DiTKFC>_XgJc!<|pYNe=`%HpJkSq>DH&>W(HwRouRBKeYbZwtT)p z(+rQ}!iQN=s2q)s6tgfsyg^E`tr~Bl7TO(#@qh)!ndJ!=%@=~#WGJ#r7E6SqxI0bl zD*zfF4;ag^tI`~6*>%sk!d((nGh3*& zZ_1@GS^*wu%=HSw0VF8pj$uRZg9oCAnl;J1B-I{*GGXKnW9B|lkbbjhE5~|e*b#et ztQ@hV@1LYkc~#V}O8RdHJt9hj+8S}rE*DAiYSO0a3rP1tLBcSx2z^P87M+w=#NA$$ z?;1M;8%8mfHrk_1U4x`~KJHL6CxRTu)LSPy7cF+2)O4S3)f z3xfeul}}S@bszVdNuT8X#_8qjO#}mkD4g#~L2>F6{bOGPr<2gK2~ z@*Wt#kg~pO(n5^p3qr-$kOJFRFLOC`^2@I$P?!{?AL-|9R=UHs3OeQt|G0 zR0QYxFOR3M|CZn^Prbi`*y^Q)VDg`PwU0= zTf6haMDyj2HlnfY#Gp~IWu((9(z2YZZc^-tQ1eyL{VkDg+MCkY4ZIx)CI|Z)LC$n8 zsl1h%UFZ1c*2NoGP&@H3nP4XZROsFp@WhMW!~SHLmga()Q& z?l5=@??9tr##p*ZoGeoPi+I2En{ShW0AH>i>b}vZQ7CVkADWzj-SmE(9cIm-bJS`> zen>O8(v!v&p=O=HR$vZxomBJ<@rP?sh4~YLoF(2g&!`x~8jZ^8p-Jd4=LsRI%%QRq z@L_qH#>+`w9rBMigU;pa*YNF&ggy#Ni)<-%=pr2Sn{cq0!s!**a@PxaF~;?E`wG6ZV4xs>u&P+xE{g9C2psc z9b5DIwT>Qgm0hWny0$MCy>;#?jLwnNxeepqebmc`)SvD4!Bx%+-Ebpow~GMll&>}p zzeMBd7}jVfI6rETf?^6EfE{n2~b!}=W4n}VZzuLh%nAK z^5;%BEFGT=x^koYif(j_c6Sdepl@Ahrv$em?yl?@-vsCK&~fRBW$y#FlhEGEIO~|d z(j+>nq9e04_N&YG*?%;%{K1WB&f&PT8~OQ-P-BX#FF7!{{Q<%RcNL0)zW_Q-^h+(OJ}0r}PN_ngn1S??>6J`;;10Pn00|t|gBpb5y`lNs?3QuNKsJ zOK5xUK3VAHS}E_~B@M&42ODSQh`_1&*?#6{enty@m`j`8S}3{JC-W<0{N;y>)9X(F zYs)cj^WVWC=^7z!Ic}nKJS$pvZW6jonX}97zpGJp3#hn+wkycCp3cJwVclAJ zw4tyQ&h~?NuRs?f3EL>RP%kcTj0<&Mpk5(~T0hY>9lBW0IocLZaL@p*!BNr6xm8&B zPwn5u>NmgPY98C@!Ui}Q$;G@M6H_X*#>p*gWwc@DD}m9MP!-%U6ecG=kpuljeUZUe-zoYi~5j@2*!%E1A)hv;3T@FV2Zv`i1d5^yXU*d-A z90kgi2{TEa?|JfCz3!&~8J1)y{VOF6U)KT^U!|&$|M~C#m$`5nrHoh$018|u?e0+Z z{5i2Yk4X@m9HWdaaPXmHQ2k@ZBQ3jwFk+JjfqGby^cxr}5bX~WeKF_>Cg3ocrkkGp zXeQ)Tw~t@a@nO_cnH%h`pxk#;*#9(0AsA-0vj;YNhqVe2hSYy24b>TqRUy5E+C0QC z389-j6s%-dKo-8CdkBREvgJG2A?Ib#Iu{n|M`@M^A5!!8qP;?} zrQGtN_}%Ow&ciPxq=3SY&&7zoQ*nNjM!kWuHSigIs^Fzte5rg0)U6x=)oVf?c9WBz zO=%A_+za#Rs@^sg@=N>IzOpA~mk&Z2y3%qc?R z*MT?rT$C5~-&lR}D0@Kzs8PsO975YmIxLR2P(p(b9MQj3gNXPIVx7QDrO<_2a715q z)ceglf>x36h2~5kxK1q(lLmgd}iD_#ps_V5Y=wlKdDlg*#7pu zdo^4ua3Ri7rVYk|cHL3xJ14;MNlg`%D3WfZTlx7caz2Z?y2rhA?5(TGak()cUE1u( zDXxHHRAx3?s=#9Sg!|hEbAb(bYvFa_bg_lpbTUf9o_%rA1Zoq49%ZrqWc|e|SpPqb zABd|~322q#5yj~`wIpD6-&4+VoCo)5B0e2A{*3-vX{vfpupZqm^*$jaqh9f?psLJc>b4?XkO+ z0m3jo0g;Kbi{rQNPEI>`KSePpGYsLQeVK`UwP^3ZPQQc#kp*#3_qVB2T}ijc7D~~t zO6t>Lhp<~I988AgnV@Oo5M|2~`_@inlj$BEs92?VTM}XbA4ZCtlD0s7dLVdV0(Le` zk~xid5VMRS#b}J+zaUXXnmSs3#bPQmD;(sD6hu3(&4sHx%_q}*W&z$}Qd@%Wj)b!3 zs+&W-J3nt-|5b~XE4e6R1q%=&oKTJ$2i=l-UmAf)SH;scm3~@mc5AG7BjrmhsAZy;bFelo zbJDj~-kHoSG2@>m7nyn69-|RXqG-_xz4~So0@+zTof{)&7o5`0_BWf7GXsv2FG~H+ zH=}-@gH)sKdYT+A?L5~ABRXrGZYM)!Rlx28{d!p_xCt2`jnobD|2*UQJXw5eogs8;Y zjlif1Y>Ex|xjb{x_Qa40iD^-1+wS&)-JouU8YIby+GqNZ7%JV#=E)@L>U^N`T50?n zOa~Y6KJT|&fSLjwh|8Hk98Cepg-wI0a2Rv9Tv#GBayvgqgJA~_L+4!eqUjhKCV-}p zKalaXXg{a@-JJ!Ow#<5=pIt1LgJe##h}4ul?iD7D*`ZOKfpN}>A=F3S?m~?T>#@Ci zv|$jGj1z*d>2?9zmV=&HcbDhj1`mTtGK#tnD1O*gi0M9=L!H|p83~Qt^ObEmFND2b zv9~#WM|;WDFdX$OrcG%N)`Y}v;d!{cpTKm5`S!h87`6n$V0P%kA)p9CpJlhi<>v z-NZ}bdK2r{p_I?zF17zn)~=)~)mbG3OPdVR5W$l{y@J>w3t%ijVev~@ztpSoV`2m6ltsP7Z5{MCWvWjYD9~h>D638Qg9(f z6XCvCA9y z*sQJ-i%Hn^9onKKu`;1$^y6eSB5wp~Cv(~rtfyeYf9cML{YiOzvKPWQ96kIh+2C<9 z4oA@XNTZ!Wp`@j-lvWw5++Pb7iyBh<-hfAWT0pn^B{<#P&zXyxG@Zbdceb~;`R7?H zP>?26Yk>|3dF#6DP3WzPC*?ZpLh$;s&$ImO*lYi ztZb5mHT1$x%v~hUtyQ%D5Og)?QtcTGFjS)n^_W1={62NZNzy?GNSG$SQjfX?0*$J) zGden%Zgi1{g8>#MXNgu;!Yqph4u;NvG#8-~E9DFnhaMCiYlIGDU_9MJlByAEb$&Ie z;>$)HoIJ$gI5{~Aa`bHJbfw0-Tds4QWcjgz^nAnxI*sq5G>L&p@xQOq1R|aAZ}9F=^My_TT_$^V6_ z!b~+Y6=zW%-I1dbkTBJ#7krMBd)Puu4;}>1v4F2c$j;8r&hGB+?%v+so_xAD<@TEm zvIKG!ju8oLb1S$UN0M=;oN>7a3-U=Q>J4CbjVJj7gOhIsZ==sjuS)hDV4L+A{wbk9 z5+2euo}s01k;G=JrZt%yB~#Fh9zbmX048bIN5?f8a8|xdesu zA#`dzO;Q0zSJ&gfe$-1y@OyMIhQ}z#m=yFt@B(Qg?$A`R+s?D|`KaL~>x0 z=6II-xT-Yklnpkks=&Qtmr}N#v=XD0l=A0b6l_Jftn;H(JP#<^Db{sFxLoWklNl|(o3?fpfwuJP-9>huGIit$KhZgX%$$M#M~Z!Ms}Yo9d#A@2`#>{aR8KJ`zUliBvVs2*b!@Y+;Bl-BWi(I9xrV^m zTjvpUMM?U3>ttoAUbKKhpvRN2l0j4qOJ8G2dvej1KSbQcjmXV3!PI1N z(mh+PO{%*pvM9uu?C}6-2GhGiQ(WZ#z3nIdUxEJ@-^#@TqDyabWBo^SS;~J8ht@eW z`_`F(Ol(GSswz1ybQ0D5ghe}GBm*L%3D~5Pg5Vdq?bA~N+xAu*&j zBpE`Z!eakh>V?MGKD}V0AC5AGG6SKqMGt6HPnJpW&c^8Uf>aFznD;GrAEXAt1Ck@6 zCjoDO&Q$2>nGe-i42lk%vZxz6thH6-H9=w5nib4&9DQ+?3>*JckwAi?eY$WL;&$~e zO6tDTa7MH?K|lEAybVD1Rl|S*iI9agxi|D3<_K&Y-}73;QKqNOpyV+7O71D1bt?s} zC2jCdz@Uw0A9r8_-8!$2u*85jc&po7cZX^mn!+euq7lVC^#y$GCAWkOw=!(Sjr0z| zlP4r-avOvhpwTK|x10wM=C)67xACjg&#U&q3xukm_6)TT9z_7~Nj(_(=ZjVQpSMhF zd*{2QEw}nZxARnm;{_$WcI4CB1&~H<+8`*Jar>h=sapiY@!?K+7U;dek#$-h+J}eo z=HcO+QF0rOZeYkx&=p0Ed%0p8))c@5v|ItR8HEPkuf`suuh0rbnX#)D`>xwqDWy;P zB3Q6G?;~};GBcy&29S1gBSU$CP0Oi9&~ZQ6aUr6yi6g>LN(opqxRfS7AjLF4YJExf%8CSh-Aj-(();k~?7a2n6b8OA zy>}z(=9YnQLypi4~ z5w3*||I8eN`Z4}~AB{$!-;#^8C;e6V%y=#Uq-$kScq2Xac-j2a6QTH==;6~i`o~lS z;TS3+fl^9(=KG3(M)k>{wgwn{TRe4fe}69jfPLGV10<;Pf3fbq|q3jEgWEdhZlaZ5u;t8NlhTG+Ar#%jk>|wk`VVf32`3I&`?i6 zyrrX5ad|`I>&F@5V<&x-{1S{N2Qeh@>Z=}832>R<8(4B967uI(`)4@z5d5XJ{;VGG zmuu(}20vvG-N(O5Ou~7XbA?GfWTc7f$RzZuc|HuYp`qrvL>5#!4*vdw`{Un#2zn}w z?j$upF284BhCuv+KL+7vz~#obB_faJ-JQZ7W&jFKlP7o$XnUl)8VmV=@nfMrM`>YZ zbj#>Ie;AJ8#h5+o6grt!PP_1Hao)h~_u+$4ZcydUcpfeis!Q`^_>eJ|cSmG7QQ#OL z!;pNe_35cp@U-=mOfRPo&r* zdOgWeRz2B#iDE-!#^85;nONbo3NXiL?&fl0vxp5_WTTgP7&!U9>)3$hd&%Vu_he z-MzHm)8o_8fw4VQY>2Mls6(5uP}poFgG;bHK5OVzqk0Ezu(O<`P0d@PSyiu{SbAZQ zb;D7ZHlU!cNyXV_0XKlfp*TB(HPC<7d>CQl!|XU1n|_N|gn zfP#q$MsE>r2h@V|a8kaxeo+q#dy^Ku!qQ}dB&cvS_L;n&lna zi}I^@dP0{~OV@%0*gJ>0Rfo0(fsZNp$GRct+)|MaQpmMZ81s^UmusESFDZ4(_J+~J zqTq{c(J?(x`Ab%m^tE@5sgm5l2_G|6t!bXLiS%WyOFt63wL^{o7L#(VIb_5r=BC%7pJ4@`@FfvK^fGc>M zaYbQc3RXYN%Z^33amBuL=Bsyh^80ffM;RO+ol=W~OgT%=gH7W+8Wrn`q{$QNh(-3| zu3QDoE<)f_;|XN&Y?THiy}@q!7v^Sl3Q^X)$|oX|7hNn8zc%#hny55N0G~dJu{sB2 zYO3tSSI9wzKB;kT<4y=l3^9kCn`hawJn}HVt4Z&>EVAn9Ol)nQ$S}qPDew{AggSxS zNy$ku?L2D~_rvCkU>FUC;P4SDr|7Z>R3ud-P@H4V9c2Swt5E;t9UR(DU}T23t9X?h z3OeJ5H|?_ymKTMkZ}o$nZ6IfwHC349%^gk<>PKH7bJ{}(WUb;WYTCSq8mArq{4rMm zwFPlT;px>}i7`W_El+~o?JYpIU=@?ySkkPj1F~G5#U1A@o9qViwfhB^lEA_ z*!@hUlREfJU?rew`M9dEX7`dWKN*Gb+^lVLvDXjR2yPYXIK|a;yM?6*h$ox^1Oz2X z4;mHUsZ^&nJ0z5j(I!U}F$EuG2Sa$G0tkh3R*Fu|Qg9YJ+?O|L*aZ+IzICtgsywz+ z02WmyUd|N?6W4Vp_jb;N6x1*z^*sEt#+#PYxEH@^UG?RqT}nFVQm(QNAI~0#a>eU*yUjN zhsNj$CjRlkWFo)DzJilt&TVxbwRY7#6c!rqTkty0Oi?I!QVolf4d``Uf>X--gULp^ z)!3(uikhR954XQgwbAH&>q%Q!EaTWtXsDRv_m|Hw{}k7k=}^5mzvD!Q#dxVI1)_5K z8j}5ho#>wOAD+C0>+}{nH^RZTjb&HP6R%N;w4=#%pH2cD+7Yi4UK6gO<|#sOzqyz& zJn$z7R3+DWVHOL%GOpgGxTo(0(n0-c|BZsZjMoEZSBT0V6%+G7c)^-RnJ-6p!R6Sk z%|(G(^0yGuzb3C3xkvj$b?WW^X<+#la(0rQG4|?8B=1$0%~ln-SgohguKN&zt!U8| z2w^o-pbCKNpO7*RIsQAO25k+A7p;uI<$tR5St*gbf-bU-v{6`Z0<5i6KJ4Vh&x%fr=2)ci@1%ql29a+MoC;> zwMzf&p~lg>wQ5$?2reqBT>U_h+aIEQh)j@e9fcV{F(c}B<*()au)xR)fK(^)#nnJk z^Kdrs*k|?7q#KvCX3$TdFpKOEOXAJ!3O`sGs4cwDnnvwuis!qDkY&360m+8->{KE`;E zkkAY$ySXSyZ^Le>2RxlFvb|PR|9{$l{YfImlE4Z z1$lz5HNl6fC~Vi|yNsJ;LRdGWNFvVgSMlG8M>4X26Yy~%zbV0omx%Hg0683^(Iv*T(@L9+TR0HETXlc-+ zWL65+&yFHue3uA9XRZ-H5qe+3vBHwTzRtNsEl0w;+5;kPcFm0NXa_$D*X56LmdeTW z2Ub;Wjp6KH+@-8v|5@-?q0VY!Fc$}0U+^i^-W8!6Jzly7u>t6EY4Rl+hq*$~ktm5z z!d!tZb(N|v8W{`g@e_H|Bz}N>gN+Cs)Kacvh009RPRHFWt1xn=!Bo|$OMQFIdAp%-+fgl&TNr*+?9F-APM z+fgrgq0Ij)I)VJERyl8|LX1|30o`$J-W1udY1!(@RTKr*&+YL`0S^vr0X~Zh*1n}y zG31(exxQePQ}evZZ-qa5@{BQ)YswjCNj|g?ASqAmR^|6f#hhZN7XkC`to&$SKj;EI zi)D0JY1sVjazfr>Y1oY)W~{|;B7gkAssNbj-d`H%tio+yEJl zEY*%9)BX&$11kX^=)OtbMt5pW>t@BzU~KpWMh`Y_Zr*Ns>>u`=%_ZwW5&<)=5g!LTtWfHNqiHnAvIYmV>1c4Lqc$%iD zO=*uGrllhUA>;uJG1k28>G6mqT`aOBE0w5$<@YHPw7o=A zhmur}+wZY;(#c;hTIZK1N1s5bk?;Bp{!yIDC0Z|wI%{7XRHB{vr`9ql-xg<)iN!|K zFu7+qv&j@2gwayus@KpoA17nbHM3=5`YP5PtbJ&6W=6L&df4|ybaj(4oC3}K`Z##K zqc5x|c!BTdVohjAS3Y&sXX+6db56>@E3x;Bdbq-VcI(<8)`7W6UN$5p@&SY7?Y-a< zn?hKnfi7uG6)n-_eXPK{dFt95xh;T99z)W;6Jj2nts#EbD1}yyT{0dg zF+V_liP1>*MW#|bxO`^edcuZ>cBegxH^4_JFfocKw+k&Cy*A((;2h47eN0iD<%kz$ zlkEAD<1wbgxX{O}!HbOi(@JsBC2E#_55dnDFCDn#a(;w&spQ8hZ>JAj-q!j&sR>w+ zj%D9*j;=e*r?cTqazkjAr_*jeO%>a*#cCO>vkAN_u#EZGx;nd-y8zqN zc}LcUWG%4W9JvyU;Juhz9#P29xe36RJ@9C7vVph|EdNYCO=Co0x}i+7C?1@C=_Pu^pnsVrdAN?t@+}y=*}}KuIui`w~FJ`_@P`)v1m}; zUo+y@ws2+m{&!b}{Rgb122$2kP5tj& zMALDo>lnOl#090bqT3RuE(YJt&0Ex#@fTj9a0I@w2U(*n{z$?lDJ~v(Wsx<`QA(?s zLEvw7h1Er7wIKt-!Auyw#jsMXI+E`JEVYc|K~JqSeHl21Ql@8m}#z7Vv<)2F^PA4Q)6X7VoWnP$?OxAl0cK~ws7EE7B>E{ztgQGc?Ox2&2cDF@iZoYFXr9KVNLZ=*3G)>ZPeJ%p&#E6yKwP&Q+A1Rf0DEH;2v?RJ#5=!E30osT8i3JUn{=o^G zDQ`}XcPlgC%rG_{>-TtYUvAr}=vf}dw5ju#AC(goQJJKn^m)VLdMp%_45VwbX~ApQ zG~BXIB@yWV49%6wxA@1_hxXy&>GAI2p$u(}j03Ob>d^Ov>h3m$^DM?gzT@3Ci(Sf^ zO`{~8+0t&Y{hsicxaV0G4YXnB>;i+t>(nk$csyty^{P zbi?==+?@cOQv7g6U`_7f&g?^4j*=Ak1#f2Qw~D4#=_}r~UE|9BA=gt5(bXu-;eb8D zrOoh10QdHgfenw{)E8P;(|Fq=dCfY8yV@(#_(6f*=Aq6swp_4BpiYe_^e5%AS6yvp zHI=WD@(t~$F!mk=zPTvOYCB!aWaf&<9TMfsSz#HgR*b+OtWqiMDWW-==wYVfj5Y^h zhVGN}^C$^>wfDr0Z))qjCTM7V`Rhx(#4QZ1J7mW>BFwhP$=iAu~U-m0dG44gi}ES#WyPZYDyG#RF`TApi02^uDgx z?kW1FlP?HRS-gNpZ9(laz3?@=eP=;6dGFOqyezHBd}s&s9phitRf;?(G$W?@ zFiCme=mb2DH*$T;S=j4?h1?-7mV?)RBaR8)UtI($?qP}C3Rd|%0hCG~mA0xqG&P{! z%@AP{4mz~d&AUn5l!sUKXU#Q>g^b}B#Ut99g6A~nt>X+qZ~sb4IO2pD=dEC@@?p}m zF$$m--n*rB_nS*g{l#`S(Pk_yJgj@z8%ObvE^$rxPkq$zn&X{vpR+8Y4{e+D77PlJ zp%BUnw0Try>tK4M*-27L297^g|Axc?%^AThIkc`h5D$Ml=EkkKO{CcEI`^AhCY% z99a7~3Il80!h#8Nuk$FfxGK!eOb5UCTJ=B=SH0C1+h1?sU+lBidC&$_ChD=1Yplbx zxWH)IK}&IUf>5(bx)^5H&i>0+3lK)13iP+ux%E96w3$(ngO34R@nS_%jt%3?D`Wgq zlq<}PS8Q+OlH~z;z!9#KB)5n<9){6OEnr^2M!x>bq|)tb(=PV~xUob~+P|}EkUs<) z$1Os{igNvyU6K+J_Nz4~1~*NEjn?sb`Odbg!z<2E_1@gno&vKMeHnP>uC&#t&($+9 z=oJt3IEq;f={jJnMt$M*01N?6E?$JVx%g!TVoO_UMWwV1;6+{TX0H(_q{R9pv#b|BqY7k`@!s_heZZCqs{-j1Sd$QSHm*&^k2GmsZlS8A`wn>3kD z*1jME7{Jl#%l_=VTmEOYG7&a zj<4Q9VUrps=>ujco&9*JVbEkgIiv4)#sIP%MlqDx2<)q!oZ(Id9iR-;-?Mt#fZ3W- zEO_=l%nk~l9`8O<5Lk70=L`DsA#-Q5R4JDDp-TRH@cg5>2|jT5L#souRP%BJV5=Zq z&lE4sBvBWbEjw7WRp=idKUvyN#G> zCV-jwmV;WS_VpMpxDac^axzc`t;^sr=uD{wcB3NPvssj#mgywh%UAlm@)E$NyW-;q z3u*A+ZtaQjq4YkBlZM6QG6mMn*~k*N7+QoKTeteMl%FqATi(H$}VnF2$A`!h}~4H6<=ED*?W zaJ#0I!qYq3+uIPhUTER4Dm4#ADug1>SR11K1Ue017OZ&xB)Q=*==jBBC-|rQWHTP} z<9YZ6^`I-@&^3w|fv*V1h#LS{GP>KCZ(rm*LUQdrOA-iOhYy@tOxe4yw6n&YpqD7ZI~9Co&zneRLwcQpkS#qxs}aSB&5-4$ zj~WUlw2@=#?P8KuBqy;*QazBL`(;$AXzm>AUoLOtcABDbs+yKH*3`S%)VtOM{JlbY zN#RFcoFR2USHh94+$F$mhY3=6!0p(_m*x+d29bP+cX4 zwm}i+LQK(AR7_GEUEPP+zP<$4p1 zsWi=$e~X)_ISSy4rL@%&ktaffhX8K!X_>_yBH>OQPe*w)vGu}9l8iEHD_i${BG!!R zGfFoK3NZHSaFp~-G&;etrt!yJA4<&vM9| zX^$0=wM^D#i(X=3p6f>4HVe@1W`$3i#@a>ly2B(>aXpm}$`Np)EWSi2)vTpP<{%SW8?%;PM>bQ@&dOVmovVuxZt>bWy$bRxyBX zHRd5hS0dOBFHYBvGAD%Kll60u+KcW~n&DLEBUS2nedKyT-)0gZJEC*;=Od%?^I-mS zo;$W?$1BkW*|3t@{k(xxKW}kEN2+3e9vl|7^`C{c`=@s*zQ0~sD#3T}5iALa->fsR zZYEEDz;EIQENn@Q3o!VgL}7*=H{-F2O&rw;>PbV?h+qXqfSH@au7TD`LA_k1>68=( z4GK`u#(e;}=<}O|bRP)TH%@`XvhAj{)Ov#ej@aJlwJS_q5AHQT=OEQo3}0g{F7jd;*SJX!ws)6zlS&ieF=QpfvG<)L&C?;l zag5X*8k%X8eFnM7?as_8b4q8=EWvQ3hT&b5th3kLEe|P)TCVbe+4F`jH;72_&@d-S zt*etk>A6YXW$GAC#yaoOLIww^SFAE~@~5S3<5t+}ws9~Ot~#7LKGG>$1s$u0PQjD1 zWod+zhQS8oP=ymvjBPUGo`A3kg;_O;wjto1wO6OTNOA^?F?2yY*YSihU3zJFUou`r z(Kny*e*yGV=t!L9f$H}G-R3sTBD$(Vd?!e!aTb7^T4>eN;SNrgbJCu=@rN0@Q9MJd zv?!h`+o^~zO5PekD5v4Q(;qg5j77Z#Kp57$sW_XaN>8iwaoFZDIGquE2nBJfx(c$f zeM>ebh%t8Y%~(A2BDSM(Gz!zv1KtVa#57E_T$^#?uAGk?x;3Vwat%0A)>rp(b<9ax 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%0DwK(-n7$uSe#wBoIf75pi})bEjUds#lVM9? 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

+E33@d5g4U}b4YAOvG~SS2UmC11T4dy)5SH} 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ⅅfq2IG5$1X1)S{F;KJg9-JQkcL6iYRev~~ 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

jbHyn@d; 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 d`8rsFc^ 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

Dq`RKa`!iSE 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≦PeY4_uwX&7k7>Jxz?$~ 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 Q-(ez#bu%ju>iX#T-H}awD-(B1s3T1J39=xxV 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

>+CSQ!PncIqbRylbYgG>r!<(`Y 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 z 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

lMb{Lf$L}N^Cvr(hPi)I1>)mKYW-1y*hPK`TJ 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

ypt-6_ABY__q!MC%`iP?G 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

w1n;f&OpE2PZO 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Ș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

X5J239s*pyeRoIcxf#R6OB@pZHiaICjK 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

B3id8(DACeK!+7F z>(=Vn=u#@nNvjYrGm&#uf7|l>iNcNoR+aQ)kk#u~8G4ycc^v*)4H%=rVqzJ*%OeuK zJLG-98pEp8It7GTU@|(Wo$HDc+E&FP5l^Xw{ezd54ND@bx+pV+R?N2t&yO7Y7i0^7 zV_txWu>;#-yqJj;X~lr>ZcH?)I;6gnkc~wQ)dg%&Hp2mt;K|*)=V>4Vj=`8B16ILp zqMHEW?DE6;`7hT$UcLYD_Qzk2`^P_?;<8E*T!H98lvTi+lnCJdM(ht? z1-vO;1lmH&B*zb#{P$Sjd>qOvlag2>1IQ^k0_1kI)2SCFQylX9tP5D9LpCI0dco(z z5&|hGAK>l9+vw`!c4)sUUk$(4%;2ZRNTjiVC6SRt06AdKt7pFhJJ*Hu%s@4u_|(Iz z*Zt#1<_P>WK)*Z?s6D#{cufzEyCDNA3QJm@!AweZ!>sRza5T}|a!ljXf5Sgsg9ZuO zolL*9-qDZbJW*=q(l(%Ll;LtY`>4H-aG1^P3Ud%&V7bCO0X7DcyrTB}>r4qxvCkMM zLu=fLNei8OYFC)!ZawBWX@OJAMfNv&rXO1i1{yPa3!gl;&2#R3tt_ooa4N^6JnBUqv!&7@PW?90Jl9G|Mc?7SnVogU+t9)^W&8d`V{616AEeOkr|X zOTBKTZy_6iS!1+JOh**GXV8@U^|kTsQX?ZFja>obh$QdOX~j11_+ym-bn)s*Wik_s z1!6An#wZ}|+$yH)G^t2(j*bt4PC;=1O-0nc4Es@7gvNFXACc(hG6Z-YCjq*hhwz_S zR-i3l16mddwThA$4zBy}PWo3T!xDKiYpvMr;CjF^f!ac`Ez&jIag78XGve&1uK@o| zQUJMePX_L^Y8j{zdX7;!;V}YsDNJo$_l1NLLXNYQ7}%?yVX`AIi_JlH49BbJ&sqOM z(I22DZ^<1Xvb?JsK>G6!qj?wMxw{h)2vQijVK9FLF)GPy2JSObXw2@B5}_wPP6f_| zM_GrZTt=EmPKs^Q7hvk^<|3WhUu;kjI^HzDNd*&IG6Mc>F&G%=9{VJ$*;{cm$ns26 zu&t4_5m?k)-QzG<0n>iJj}^s9H@MV>x(dr=q4ErrOHyGVStHXWL)8E!+d5Wx0elDi z>mO9sLDzk_248D4%Jf1jmS_&nNGHT&r*%lV=thr}B4SfrlIRF&k5X!bc}O`1I3J(N zlVvcdBBARqnk#Vc~7s}`z6KZY^0=C{AfqfUJDVM%;77Lg+ zO3>Dkl1mL87%6JS_!Y06FVcAe*Dgq8zu_qg3c3OY(1*%JR=S5ZLKTg;zIjX;Lmg#EM@MK~GJ!Nj$GV{FIbrKpCdt%F0E8|){ zSiEmth|6KJ+C?c{Av)#{txDx#-;7f8u^r)$;+6hi)d~ zEQIt7eD#Df8-Z$poZCa?2gEETCB{nvh=4x~Y{WR3jiAJ!1Zq%8rW!E=dp{6wboD?S%Q~`zvB!Ap|l!=HnZv(13Wqk;pRqp(5~A57>!7;Vjc%voU;b z=OdIF_KJ*!*ZkhjH;X7Dz~zsGh_M+b!UHNHH7r7QqfwX@E48P@uy%olCnmlF@h!-^ z8zTUHQV}Sneu`nUkQ1?Jjv6ywqzJ~C;paN*ueebtU?|FA-P+@;)Bg3@ySE+I|JXk} zhj_;hJ2^c+r62L}Y4=V4?ELfu7xd!&$=RDfp1pf31Lb7l@IJxZH6H%Sy8*jNvfL4i zaeY9QcKfKP6~6+02};Gw-Pdw9^&n3{m|+Z-h{=U2BkFh{(yuYQLQh|Dj({cAzM@bj z5uWrP4-shWB&@2_;iFMsA-dX&%l zfsr=EV0yk^9gj-`T4Y$|1ll&>622`Yklw9K42aJwmJ-tk-eXexVh?}17(A*)AVzJ3 z=O{QTCD?cFYgIify|m@j<+Bsbh``WP1mg6?ID3~_fm#7WDocq1 z@^y+~N}bY*hp{qsi~F?}xjkei9VTpLEbt&ug$rFgCW^g~JKOk-mPsmBXC?2?T6?E} zW~344N(5oX-VX+--T^u}2>yMm~N0}0a3G=vm8iTRTvd@GvS z*dpuRL%_|x%#OEYW{UaELIz5YEwAX6w>YD>eB=J zW<&>eA!gVj!92@aKVh^~bK3~5Gk_LUfd#Pk6h^Hxdz9#2Jk1>z?uk8XmNI)Xw?1On zur9kr7@#rMor2!MMw4x`3`&}8${$~OZ_<^)#LjQr00t#t;0VW22uER_CexJ9GMVlZ zW4uJ77ZL?uI~Ed27Z196^sYqw+nmFjFy@guh+F#!CeWHWg0hzVM2|%aaNE$Z z5wvb>IH<1|L-cEWp77u`k9a%|?&J2=D0?AVw+<8=e}~li z{ls0n=G?$g{V``_t0^U;x*eDF!mTfg)BXxoqWUClx}64zRk6Y1GK{dFz3Kt{B$_8Z zn%=QyQKca;i)XY= z;#m)zznXYni917WzNeOOif6{=*K7A zJ8w{sUg>KwzQJqL)XaS7H#7HR_ui`-H#wPwXVfdpRkt!eWT^w&dE^oZPd?V)I_}-t zMwZsQPMB9FXHf?|l&MZOw5)>A7806fu88-Gd{-yz+5YMiR-BSO9P7+s_=<+8&=uj; z*^^%#UUG=+#gj)r4Jnyw_kntQ=wTrC#SH(FVRo4nXJ-P_bl{54+Zl-)9!(G@j;FXn znumxlh{Rb@y0?8nUHL#1ut6BX=lJ>r6% zaamBX7o!3*T)*O%608?Cxkx4 zzF{AVZ-i{-9m!5*muH7xU3Rf$6~(MBon38bW))iC3Ba+K}t1z9iPetzwTeXJ-wC* zS=U&6K|awk(S(^KR^j-<5dsd@cxylW5<%II6{Aoyt zpQB&%AY7Li-fj-N4x4qZJncHcm=URz8IetsGpq?V)9KA_S+N~dXjK*S4t1#n^D;)l zVElr1;Gj}Rd)aXGr;`bkXl*iZi^bgE2wfG&PCa#U?yRJu-0ypq}<-2z&Q*HRa~e612Gf?g>yS(aP)9iR&g%E4p_4vl`T3q zIh4hIFBke2>F#7^c7;H-aoChBil#$N4V;cb{YhfyLTCstU0P>IDPgIhL2rSHNvYwV zlM&_$_+Gl;`S?b?v*%z&wHg}sX`mCAWDbGKU(zT*9zLbn6wh?s#p5I<3r^E(E0Bhc z)#sF9awl<`LhFn`Q%=T60Vvhw<@~W1UyyY`-9!~OJ?^vbi zVhrjDki@WpnmooZDpHhWkr{)!keg*wjoazJ6T$NZlwu&w2ja;ob|6BmJ6Vwc;I>0? zzxP<_RhF(QtIf;WPuw&v!(BB4W5M189kc!(cd$>L9Jw1iJi0#XX*gKehTRNJ<>J>Hz=`5F~RXC(- zsR}}bjP1o@jh_Z8dKeklj7Bo#Y21UH$|;|T2rk_}rufz$dOdxf@Hm;%^yKI2lZKX& zKS_aV<9hdfvOs1zpUqX-6EtmTh-JL!%B*c=z*$q{DvnHifuK!kEBO$IU#NASu~`^J zVJ1K_%Gkq+5iHs8^Mn0oN3Wi}dim_=<=)fhFFrp2;l7PvGs`!6=S0ct2&d|MYzpn^ zfKipeM0I@iE;m&QA@X+-h4FNdLlw$t^Z2ou$Zrw~e+|SuN|p*Lt2iHdDkqT;xrH7= z1p)x3q4dQpoZd)>g7zAYlX*xUCiJ1XtwCb}7c&{JyznPYJr zMzw|9+?gPW{;KJU8!Gb$O!QG=4J2vhRDzP&m60cHE&z-=0;lfMQQ8XzmW~$P!?zO99iZTJmUYA+q~gv zP|=tLG_8yO#HxR}i&|-b4}Ugt0d0FAFqjY(f_nC&D7VFaL;*b?Bjjf?Q+-G<2SC}!Oj>Z1dgJL^EJfRPJiIJ#BLtXMgNCgze4x8MN1Rh4w?RDofd!tz+5fXKR-Y>qXiVGH3|BR4NiVy&-T9Tb=V|K zb!;Kschfo>Ey4(O66>?)dtWrVODqLD1b{m~czSSXi*K+1||FJI9?(%q)x$;tM7uW)rnPV3QmNPP->ByqDn4GZL5&a zm?i;It+C5&T&E#x7>JCailNH2>bUE|Z44iLTcPh-v(&B~Ec z%3*A9h)u7aC8ORua#ZnBm)o$n3S|;^2~=GNcl4Eq$Q>aNk|iiy*sFVXX8cxJyBu(2 z)$f`!Dz7IV3stBWNxeBCHp&*u1o+8v0jcHJ*5SWT*zwuP6^M5!;RGkJujrb_(tAc~ zi_}%@U@HL4$rfn_(pZz_hTOdK25Vg~tFDU!d&Va;Qe(ZK1dkDoDf6 zx`JEw`9Y8U{MXM9j>8~@e}8_kfAnha;Q0V*K$X9GOrJP?ca79v_L_JI;)!A^9U70jzm@=oySTm*9I+e5-ST@IU*fjKxuX^0+(PtvRK1YmqVQ>* z+nd6#A=@?=XuN;*%pn8lL5LM=YU!?QeHjKQN7;5WFn7^Ge3 zacKlWQ+x(Ql<5L+qNUwj0g~Dnqbe>7lR>}az?lOQ7vjYIkxG`qC6P|6HV4()9Qt@3l1}%GO0@q55p;HfS{1RFTl3?AnPzdweAERm- z`sXZ(y_@-IAal7fFo!G(5@gp{J!F}}CCnoeJVnTq5gLfI1mrebxWlkb3`UeV(G5=* za$Ic&_0S7hg)_`mE~kv03=Ak~z<|=G(gcbvxrk!A@CXOQb65N8D@jx&tqH_06Q ziwY}e#`DaHpec-USH$Rq=NzhtZY`q)vLRACeuO)wfby_>Kt~s~nBVlofye;-!~C474QR#?omozyu@q+$no2IrE%H$#jEYt1*4)1X_)vW_#*T zp_lb(c5fFv4NeyMve&!d(LGPaWt!v^S9cll`rt)~ypdlq^BEYgP3+>Feiwlo$%>%9 zOWPV((NITPo2^(<2x%snUXR}Mb-hro3QuEOPyXTMi@je+%lt*R`N%5$ZPCK2W%80l z@5??qS@mKwo>@k8EhgwytTIJ8H&o4Q)bes(V3^hRy*nPdyV(E|q# zYE_R`FIR$RZF=8czVIvHa)63<`7$+Et`lKic|lW>sG&gDpgsy}4`eaOO8E-fBL-G_ z3?YvL_E4#3(ee>kD>X1t?v{6}phnjT0K^e?k_0qGZBh-X!={O94a;gMffvo21TUG( zT2n@Fl}le?7Lo%|3(}B-y*%_oc6xDfJhNt(1m*{fdT8+9!pyL3=@0a;nr}{&CD9b? z;pOucyf`nUON1J{6)M{(_|`S=U}M`-?a*IV+rIoDvj)F%6w!DjUf@c#;v9o2yK1E8C-Y zVuh|5^$yI?rQS3O#aGH1f3J?89R;uCzT)UM<+EoL0$WI6t6XV}S_1V~a`saNvC)`e zndMGbxk?@GWeK%Nu4L^;yb4U-1)cVkKsv288=`Z5mZ5szE`i$_hHF~zE-Vq*tSar9 z?%oM;y4DEms|p;WW3O6Pb>vvOh(!Hb4v=>@Rv?d_9{8D-YL1Q5Fc)daO&LnpZM(@@ zSMV+{JT-M8DcD96!L)*USw#QnX%nKq65>tjkvhK|T{ZBFij<+uo)Wm4#R*n{rF}&f zVAAAwN&0m!o09xZAxbkb<8dC2?ae{mt~_t%eLq{qIsd|V0MHRyLbpPn@yb%%nzsR{ z=R5(~9P7mP*gwvo?#3VX{&5z@_`h>VZvDfPf5eEcKbUgq5~9?qyh>;xDaJCSLQ3=S z>LiS?7FB0WqQ~dAiNJ}S<;ohcV zb#c3x_qKhP_vqH4Bs#c3BOzio0D@GL0Bd!eGO4cnftDWKCo~O)WfXU(yEk_ zO{ALn4bL>pYlsJ*jLN1_xV(ls&%-IzxY=H|P@?Ili$QG_rV80%qmn=y z%fZOBY)QD;fLz(Q9xCE2hONkx6fnt;!)!3-@hY$gSkdFN0U0|T$CMo~;%{rW;;?^I zKV+UCC6Y(Ej@_8YTZ_Zht5edURL!n)2%2hd!tmg=h{rcGp5C$u8uxckxuy-Ry+=>0 z%dXYz0d-ZON&-khLsRY1{(kde5FCPE3vclv*AHQuwHVlOv|sO1Jxi{8J*zszB>{~3 zf;+5$IP<MOHBhKWWryCf+!`W!}$t+Qu(D&_U_^F;0nVF zDQgWI1)dnj(^{mLfrutuszD!kJ0SkFa`g2s+Ayg~ez6DIg@(I&$tYqH#ZetIsmD+o z?(E$#Fa7kq>W64(N>d4RB3mar19`t0hodV|MEqab=Lc`%9^gIo^BjZXKR>uwdItab zL5F>Y!G3=5C-%1?<&sdiMi$OO2sA6{=_oi8LjZQ!K5XJ8x!t?4ybN z>1o^*^TwMrnH^_o1&n-aVc-`E*;%8GDX>&bz5y~;a~#_Bm>nI~<4T@=L~uz^3e$B2 z!(shbL(7+M!kl9!_0F^)F|mH^e`19lLN-n+`0PLb{r|}rtWi>Iq>gjor$9iQVXj~V zcN!?{Jh?yTxroP0EYFGDAX9C2X&l9{gD-?3zXK|))PJ&2mRN_Ct@}DjrrE8x{~&xP<0``-$eM;X*FMM|8lO# zLi+^0KGzvZ^JT=BBR;-``paoZ@qJY>5Cy7U`DrC-pUW?>@Ur|wIpJBq?lDH1ozsI=oO|kITOu?ZuH8$=ah4DQV$tX(3 zx1_4-v1bT=gGj{Ei6_x+STdP}2JB!}?5pK2%JKWFfxQ})i$TZ%nH_bneK9m{c7x@C4bE=P ze%5zUsmOb?3jSEY!w_ubck>K70s82Gu2z+F*hz$9|gat_z4FI{dPjF6T&9slO z*bjOSCOpc-Mx6e#h6)hF|F6o{)rMFLL+i3r-o7Hz1sOC#q(ar%)x2E2TE)99wk45Q z!Fi%oRkY}3IjE~pnIVJ(a6~J)6>&WyJ_$3)pV+1KMfa z4uQhmK=;#?qpD=f&{!8*TZ1WEE4*VSY!-b(o{J51Z$*j4VnOq%NFj5-d6I)QFq7O- z9N(*#y{AEMpZECF-u|oJtE1k&=n39?ivJyqd#`x!*#SH{81=*pAK!0Iu*|?@nJW#& zA0#5ftXCC;tg|jxs4aTGFF3}~HTTmf*y1G3RRo!?_|;Xms(>)xdAQ2v_s#LdS|(~M zT$Dhm20&$26Eu9SQV~H?1u6&8EX1X~3)37R`(#NiEFfeNGlYL;;)@JbAsaymQSkut z7pknt3Nl9qMjTXQqSn7WyHduDC;iK_U#!NOQL+Bz8PiQUgiNjKZiyJJ_Ga`8zb%t4 z$n3Zi14=b-7!Y8B0XVk8GMTY%CDY53;tn^98zleSYxyK^s&I zH^vB9{Y9QweDX?+lN6%!wn#ZWswipdMl?%QXRs+*c$hY`Pt{luU5hYGly?S#W@#nA z1FH3Hq(q$lP9?(nq<%>ilax5_9+YweaB%pbPD@%jnvtp@8?Ed zhu;oL?ziF(o^{_PyQnYs@)Muj^5Z0q#W+_8T9?sc8rI`3C^Q^=(+UPP@R)9lrvoab z+xN$|Snqi0UGatXQ)ryoNz^(D_wjVL0(w1_UskvMCX80Z*Vj?2XHUIX;zT9g>lAEv z%P^dIC(wlM{Jv%B;L=c5z>`C%tW9zN=%T7#ods?*{c|Z3H9Z0Tm`HyjzLvXM*si}b ztHiTyi1A>nUze2gKO_xOH6Y*?Fa`g`+|PtU7fDq8X0Zt@XJVLt8B)QT>4ll55c z=v&b^|EXGK+SDrod`FVKMk9I6Gja4x=M72sxAyRj>55pE_+ZZ}uC@VPY>&5Z$5>;@-*o6P7v&WRtG^3bS2QQ>7d+ccqa(1J4$!} z-e&cRh8!X%VwjmwOLX3Xshr>OFhYPaso2u67>!He&Hy#mrJs)@fUYzn87i<8CqKlQ z(6>&KHiK;e`>D`k3ESy}kRV%ZU1Ceh*43k}@}vqYqSg*;;5BYm+l;6lh`);spg5#) z*@C@t+AM=P>ZdY=czaYwvk@9Bwh=LFaRg1P%*nb#*l>$kFB!RD?K<9y6j@^hw_Iku zOraktRYaCH!Sr{@%mn2u8q^AhcDZf))Obti&77IL6>YFp5W`Bel(RwqQqxftKHR^w z-*a28w--c6Nbix3DpP^u^Pv~I^hVchx|{L2G7&(51O+u)J3o!hP@WuRN~_6b9Zk)D z9=;U-dW^r9?$2<`DS}(8u6;R0tM>UW!}9$q5=jN<*N{a*iU6K+F}=PZ0`ek5O4-1%+AwYqKln6spDAXOgCF2jRLs#VuAld zV27|yKNl8iy+F?U`}@5xOE7#h%#toN(1nS2c^q_MC~gI4GPXi+CasTWnl<5>Fi-iI zO(H&(;Y7Nu2uv8a9%PB3Sad&T{6@qXd)R%{0T_)if%?&V5^n=bKxN|u@P8iu@(63os&(cHo>&bN-G}hTyM*F_ zGQ#v%E@ut>Gd!h#5u5R)3)Tz$2_6VvS?4t(g6)OPZjwb5$h!lM!@|kQWGP?uelBap z#R+{wd==xEq?)G>W<#^{k>Bx9kOs`LuO>db6!H2J&<=}hNF~8W=AH4m#bo-3c8XzQ zt{qxlI}yz@nXlPVVUWv?tVBWQPa<~}beGYRMSLWpNE&=+h8U4`pxMc=K4haMR_4eo zYVkuxn~mu-fh=_jgCn~EF@{^Ql;;O&N6Kdc25ycLy{z8FntcfyPKd7LiJ~Krv4HR~ z_6Kqxc>S#u+^nbCM^q=(m_}QJl_%2?R7OZsfly9>i^Sdor2r+xo_k1`I9z7;b4dv? zNEHYjixP-Y@nX_&yF~OOLg5t!jo) z!n}G;2Uyx+p^cHq?}1xz79~>vVl!Wpr~ilIy3Y{M-zM57+QV;Uzd_h(}Ns<9@K7EOj+(~A~JEaRv?BwhtZ zJ@*0kThE#bZjv3Iok(~j)u%*RGY6`0-gcmx-~ebm(Xw(R%ASgUoS388*l&9hW{}U} zV*2_Hy}yuvebvl)U~nKhHau67vNvHWZj#LFZC5iH;BvHJ8gwqT#=NSXLSz3`Y4Nwj zpzyBxE{5KkP+`#3Nf^HqB#rCTKjo{oj%~}Fryc;vtnc5}FjEzQ zU4@f%X+Xv>>s(r8B|{#r*s+YtE-saA$}u-)oKrE}OvHhTFM#RPM$uj_ za+esj$O%hr8~$yrL&eEzx*jxr?>1w9XGUa{@4y<-0kf-fT04kBgEa~3K2d7+Zq};Q zjT><6@F-bP6pYmh>lg9h4K9D-6A5LhV85x5onAD2pGv(si&x&P$DrDPh6Jl9zVLA# zEg89kU0wuN#QEJB%=aZzDv)7A4mg8Qoyfyt6TD}1fB?*A5#`}La@HEvKka9--k{?L z8Q~ftI?A-q#`7Y2bo8K#FQ`FfrBUguZ13uq#ZZ@HcqP(y@WxsZ3f;-5t19$#gpRZH5li>+3PeBS+1B~>~PvT?e|!#MmEf`-tk3JAgK z6v@%GE&kSrYP#Yt$s8?8zRF}$C-fS0Z?C)y)H&1SS-w(W&%$^9*CjN-#?WMzB{N~m zs+kgD*+@`@9KOfHF|CT>H14T2M3h0yzt2U;Hf`Qrh*G*#06^jHZhRIU;rK2B9t z*eIcT=7^GM4{om+e^5x>9n0 z6O9Qmk~CUz-6bw=RmDc1JKO~5M~W5lO5NbM+R?5G}| zixiRbWZI9D8IPb!A=cigN$F5wMC8za%;`f28p1ChD{*MLhd2x z%%kP6$TOhc1O(z_@}@zo77`VZZSkS3c_uHSoC3@!ndAZqGE~(`MMmLW7=t_!_j(J- zUjYQ$yLM{QfI2XZ!(0{_!u1*IZ5e8*8)VT%yvRVLHUrvYXE~08LoC&p7)Wu=^`Ro~ zoWdyNnE)#Q4fGAJqC(r@dUzPN!J|k7>@k70!Jf&taaZnmx-5NXDyVT?M*{L#QWJhi z4j>idMp7wz94uo#3&%|L1>-L;&*48l{==|3%z*^L^JH3B_{KVfqqqW8uy?tj>9sUnBvhpzO5M zS&|{eK!J+QWS1m2x$C+?j*}@nZign6#u4f(2@#ZtYvq%hWbuZrQo}6ePL~z-jfhN? z8`bPmg`BMlksO6zUA_wxiZPLEG^!OkM_CwZI)*60WLPhat4J^<7j&$VV=`*8Kwd~? z+Ga^0A_}QBaQkpaZHlzr}251`EoorR1O^qYrGz{kujwaYQn7pasg8?CWj|JK#VU}>mMZ+Xq(MiX^|%7ux6W6jn!P1DpgV% zSRvKn0W7OpTNzCZw^h!L4Y1zw7FV3w?8kv@ks7owxFi4{!z>(yQJ60)vRLXFzY)qI zg+fQp-|1Gd9J8igd#pdnm0uWz2FgXiY`9Tb@_-M) zcbVfkO~%Ck#{{mn;{GeS}vjyA$sAePrIVd(wyAL;M5=xCJnXt85F(w`C+kjnFbm^7Z&w>Y?2glI@ zs>J$&eE)y;-Zi;xBwH7q3a-zOvVBBbvdS;T?v6`SvWv%(tQKXvtE*0!Ad#f71p;gU zl*~H2BRb*^VeetwQS}7w6mG0XK9Ku zPN%Y+sWne!eg*Ece_RA%6iKa2Gcjw*jUP$F2Y4|#1fUtv)DmJ~eI=QE>H^Y$&hY75 zO={nhDo!or=2G{V+8|ujEJFR*woUQTZd+;bY6#Ynqj@MYH9!5-UF%H*~MCu ze5se5bU0(V>{W)2YS6gIQc8ZAHPKpgtEeUz-h#BXgwjD;RtE|W?jML}8Y`Kwyv{{& zoh2T?2zcj)Wk?C*uQEKuTZzE3EfXbOs27ct1nJSh@wKB|pw^zAX?Z-IO6?U;<4IGq zzYQW-$|Hw*Z`_d(P5+X}giN z006f71-tui?YXfx3#k(1dF4=lwpyWe29hNM=j<$JQ(IyLRCRkPfqsfz7;Unv`#5!L9W5|h~l`rjxYf_#yppH-Fy zsOTfdFpO=}1a5^f;TiBQ6|}0^I(6(u654f`M|UVi$gC%Za<)Z4?5Cg%9E-~=*~n!S zOzJtHEu%vkX-d&ZvS^K2+st3K5P3(-a^@>d9vebEGrexkMF}vL0|s{WblQX>^~#@Y z=R*q6LbDjW*%V|fJ!xt) zdVf`Bc>)&RH+dXQ#pNOq8|##7+Noov_1)gP{77#z;IsOoW-SLKAUhufWj2q;py)8f zGUXDmB`Wxe668iI+m!6}Bb?SCUjP{UHS2^NPxNeCZ&q#~_;+{_6v@;n(H2&>>5>zR2v^J%=^WsFTb}jdyL(y2%A!a!3R_ zrf2K|qjVdvSG_8gt@O03o#NdnYJUe$o`3p>&Ff~sruI8_Gu2O1V{6{p-%j3)7Im-fH3Kfifa_}^Ij^Ll0d_!&nYf33+!AS08%GKhc?M`M0^uR0#y8DXySlqssV z)TO|^?`!cQo>SP>CFyc{5Vqmzq$RzYHh638(6tDY@_HG}Wf#<8o=x*`wsk*qYDWbl z+QZtRlE`eh8Y@Gouh50{FIl=fU$-tIrXWi&x(I%OK9owyAZ=6VrX5P@Fa1)w9!Y7R zGSaVDn2Pu~k~KC|550c9Le6?h)}x8Rt9Cb%aK%}nevy91nxvQeD{GR}g7T5|@Lwg4 z72|6$3n{TndowP3)+Jsp&8!Ey3wBb;{GR*)e;$ z?@uACS`WB+t&6Ru^SqGZw$f9YZ;G`hqn}0~8w#oHmDde8tf-t7G6R@C@fhCDB*y7f z6ab0dpUA`-KmYvmgNy#f$!Y)m(z&4B1|4%Np1bJ;sym`2MOC&W$1G9nb>O^s&7 zI0K4^|5EQ=-WZmI#Obkjbzi>R zf8oC`d-a%dr75E@Y>vXtFw+6^u67DEhX~#afnbQUIAw=SaKkiqs#+(`34p;(7+>pooB49(WB4X;7|+IXGl_P&+UGyrF797IFbhC;1mif$gE>&34tA=RcQ>+WgTl=O4m$lr&X!;v?@)p<~Na*c`n+CVz9eTw9>R7D@?l&<{4ki&mmZD%B#Z%2OLhhiUH(a?$tq#crNj)7OQWsmHKxDaPX9{g zFd*qI5|6uEZWsSEvd#w5B&r-dt5b7QUO+aH5Skt2`pf`9q$FI<8PJ3&oF_?kM|fn@ zJe*%|<{fUG5+3}j20K8$I%ep-oto_=p5IadYz-FUu_%hkB00;_xXf~$!+XuQ{lWLE z7^awzLUkL=s9!UqxoLc$;~1)O(K-`+zNmMO}VbYZ$UNZ9$e62qmG}LQ>5=WYu(A>K%O^EZ0UF4QS#63H}djXi*w!J z{m~Kh4_9F$_%Z<+%8G_s*81A}WYRUfc&m2tTKlCQH(W)daDb~xdi5gEBy6n(Fggml zkiEU*N#BlJ;k(XvC>hAK>g)M7FlzlL$O644&o>n!xAeW?aN;iXR+me$n8AK9FBD%N zjU#;@PHsZhfbUKf`|Qv!tYU96rU$J-0R4s-0)$_1{Usdv zwXrfA$5~^3)9xw;-L~x-WiF6k(Pm~9se!wOF&zs-7;PjWi}J}cZI_FeJGwx&8#W*Ad5%8Qr2CG7)HSV z87MMBGQLaxcj@rI9qR24oAq|*VqPv%>2N(*j5IH)ziqbo_hXj5JwF~=^ zf|u%bX=+MFODTkrO$fMnZZeU`5Jt25rJ~hte$)qNGEWl@donk(Ng229NyVKml<) zLh9~9is%>#o?`HQnCuxS{*pb&iIInco9ageXXjuvqe2IvV6wr;(-y5Mc(Fjj0%#03 zMNj=e7dNA>*3;>r)-Ih1(1Q*B5JaO+%)zF6fucS5Loi!LBUy5=XZ`sM>33)g{t%dM zkbA+KaD20v;}US@DoFqXR11?5Xi;^qf%@xcwdyOA5>S2ormv}%`Lc}30fB;&j~K1- zlvcecWELD}1ffaTXi-X3RJUByMzqL)B%o)kgd(f=unbH=9X(T$gaUb;&8En5dN+?a?m?g1t4jvt96OQ-A%gk;K_LFG4eLPQ)cw;Qu#Rcytifx`Dq z!>h0xyrDt{t%=F642H)pOeUK}j}+?WNpO|x`urrQtE*Jz`uuF@y0G_PkQP_K6*rLt z^le~n#fEF8Sr%0Xc=N$*j)>%*nw5rQd+!`JKL>f|zXKKQ(GmWyCW>GP>RayzL&vN` zw>hhI1Ijit6SFK|c0k`Wi+>Rjl_EM3xZwo?j+@ZQW6F5koV~FbLpvoZJE|=Sq76PG z(?uMKr+3$3*@=rzrK&IY9J~nXC*aAkNCeP!k!OrBK19fD$PzSNAfz*RF&3EEDlI{m z3E}wk5$sdsF{}qyj76@7mziLpkE3A0mLfDSopI$J1;a2;kHWj+NKP15I$9JR5f)|V z;OOAs;NaP_XU`4~4-b#9@aeR3@GLwWjUzGnen>&yMD@C~X^$!|X_bCX(g-oH)_*0F zQy?sh;5O9BYwh}pnv5sbB=OFKJvz>2LvNs$yMfka@r*}CKD63zSSL-P0|$8QYU9mS zZwAL#RmWla9m9`=cv050-IY8C33^nms>&z3ZmodeEDq_i+3b(3o;-RK8! z_FfzYi2#WFVvkiF1q$@n%lWlPSze_iDLFJCRW(ZU81na&`6*068WE{d>QOtW!{xrq zJ4^>z;7j&a$ev7TG0I>{wM3=Ii#bq8*QtMmi8Z8^EXPKq-;6*f@c3&mq?wsyIpEAw z)?Iq-gn&*rl6gt9NiZCg;13OpGvpM$!;c^P$HSoI8oU6>9`r_Feg;Vz-~dXSIq5%Rgd_TV z&8b4D15mx=Fd&Noy+$x^M_B|>HiM0aTcubQrI-Z|kIx5>H0y$kIk^=o?I^Wm`eovY zvB|9v0GrlF1MJ3BFlw)S_YN=e_!iAC;rv?i;i2hL{pq5IsW;MM!7#ta=K~srNpBd; zsU?$Kneau=w;I5wiyqG3F&QV0;3c7-5V1^nBvEi!7A^v`Uf`F1ginOb%gu8&Hg=EN zf5bGv)GRH&Dw73p$Z!d^%LFVvE^}nH%+^tYtk6Q$6~#4l|59u;{)1Lz&t18fMG?ZA zhKNZiHCN>NdM9sJ%CL@wDh2O|b$Q5o$B=IfH0Uh+<^n8>aXLlzzMv$5K^XKTh$XoI zqS-ojQZeI-e4^xJBFx9vRxI6`HuXcl3y0<*r41?_&qS&-T-{P$6EPc!2$Oahm>(m^ z&l5&6{h=X?z@AVGsh{{^5e!xPe;87gC&5|xHTXmD;`!e5!{_&5i>lEUHlzL9^0be6 z)M^b47D22^@jYN4a1E+*X1~NNj47mFR8~dcAv*mt=~OY*8XSH`8j!5i+cWbKU~!5V zkS)OR1L1xR`MzeXH4%Q*x=oIWE%nzC%zRDh7oXw%tVNX(CUJ%0qRST zL_W>O{YYg+TcnZ5i!r?Y3IS=I(7fhmu5#On3+F9hvAe~`B=BJ*5q3o2{{7mSPNtG8;_QeDDMPc-$*~{oE2xl4Q`9pxAU>+ z0JYYCNO|R*;!OD30)DN_yp;dC@)fRM!)usV27FX^?V~xUvVf6b{-9y*YdAuif@v{I zAuw=v#A1Ue7;xOEpGTgY_X!f(2#0B)6Hn3F3l95N5mG-%C`J}-;W?{DtQ|H(XK*mk z+c+0@VUipjU7Zg4DV!0gX^Q~ao}0~LuRd#5DD z%^#yrl)!wOI$3n3pbK_C24(czu(atFNt7t@l^ri?5Ms;Pb1NptZf~tGBOw&o)v)cK7}< zy}Qdro@&c(9WNFV>f}QF|NQ za6$d`*2rZ{{%vt(aHCB}Dl2uiDCrM}k;&Yn+y>rJUQ(C>`*yUl=~~@0i~g=41p-7{ zfUhsBj`2P-uiUs??WR>X4QYkUd69-7&jc{JdwLf1FO(h|-BaL_aV8ttyw$AXtwMUN zcm^tzfN(=dM;nac$W7ReK=%zyYESHP0I7i@9bD;#qzLc*i4(2f zj{F9q%d`6<{@~Xd2(J^eBf0hAGioH zLaqlwL550><U3cI+(BUW0K8EP7WmQx z(@7lS`DS?^%)vKeseGNupOlh~%f~rnRtv_uWk?E871Vz^A)yCSlr(ZNB)Gg*RH23l9P`Jv^&Kpo7lNi7;B#M4$oGICbPS5>6&ksfD(YWC?dHEprw? zNP^y>C?o3^W+VpzK?7adMLQgX(W-fb9{2LBC^~YFEei2CI3iVo8l3hqLc47^hEJSL z#0`*b`|+hnaI5I~IeH8Qoo}{8*w;Hz?z$t{q|wVaS}*MD8=W#Oe#tx0D|BJuY9g1e zy54)nx?znY!xt#Z#S;o_GT13SK$x9QV}4!_@!UOS*R($d$K<>or{iQ133?de_`(G4 zvjPnBsB$tNsWQdbBo;};N;mv>FbkLHhi8U`%##p&MZTg_1HQ~bB)Q7NIDyPPl<|pJ zHsKMkDb2kX%S{xXL-_9Ud?=+jyx;0Lyz8s{q8UBRD_Xr5jjyU^nF+k^WEw1mR-v5b zLPrw952OQ21SNXleq-OKYm{Ko=dcj%v49#7+RPebj%x!*J8deY`V zT~w!OS2sfy8qyqB0&C*gY*C`N4BC+YM&dMns5+y%Hr5zR*in+TBrh>_n?_(cbWke* zTU=r;ayYz(KPD1C(Z+QW8&%d0U_bz|Dxaxm6=cd(^&oEtHHo>iEe9hwaFnC07 z`l{0GHcaBkbR#Vo8O)eUe))eypAAr+uxMgb+5Aq?9{X^FI!KRh*P|Kp?(C0+p%@D& zD?)XTFo!}>);bF`?I5EUWjLFwc~#!fb`d*;&KS;yb^Z$TO4@?Gl#b#ws_xZ{7zph( zC>$l(_@>Y=x1t1f4DLNt=9brD_N4x#V|9I`Vf+{zb(e?pxgdpmiomp76AVRpm=?2` z6zB?tcbteY|1~AP_hPwodGEbg+S1-`JD~<0N${?+~wrE0e;9_;O|{_pc-YV7g=&#nAbisP~)2>2wxCEt&O{eN%Vyu{GZ@@6LVkg zu^cO}?YNXEN7_PIFG(;2h!%)hdfCb7d)H!ogWx<}N#5EUQ4b7vVeLh-khcFY87~s4 zDZ@JjsNf^=@O|&oBaEa0(YYXd24Cg+3v_-5KRe|7a3Vnf!edFZ{l51Jho8;n3mMSQ z;&M6-UIn8iN+XC~fip|JXOrL;k!O3>Y)fY|ppq{aPCl^OYz3VVZL^}1MMZ?6C?{3nWFY-C!?90!KCxN!GJs!(uf_YdJcUc}i z_5{eQk4aDj3NYF&8)wR0ui6qS3XEVL1b+JKLKMm`ATEjp?Eu5L&OzwbPtZ(;{-zIm z-ADL_%!!O~5~G+VH47zWBXCIxi(n23@MtH*xz)O)s>}j4%Qy?r18NgM}YAnHr^qW^S04m+yxPB9kqM$t$2U@9fAw38CQ zqQk^9fkkyVO#P5{liH6%nV;mdz#Jm88N>)qaE>XHd{&Y_kq|C`i z5GY4K1v7LhLMej+8Y`6GcnNy=D_O3kM-eG`tljdRlbcDUY%&j>G2i|}XKwB4q5EbV ze+OahI3qt?U0n=hbR+JekC&&|Jh*)HqisA2UvN^8jr&s`F>HC5|B=VN>P@JMBFm65>VZ8>G!}*HQs9Y7Xzz0K)D$1n_^Y9{zmu$~vCrTxG?XtYCqcRF2|!P{ z|26nL!02_^Z9x478bZzpNkqA;eF`^#ZI_D5MX}oEAV(x)8VSH5T1r?CHT&EuDr+&Z zBkNPikKo&`a}vT)r;fcDl5wt~zhWDa>DB%US$$2Wsxc@4<8%(l0710C)RkknwVA2Y zkzACS2~D>Zp?=k<*}NldyHvMbWUL{B9UjXaJ`s^L9Zd+|AveSoVgjfX=|{!eEdS6y z?rj=Kdk?;?w%h#beC?QAJ+^iyZt2Mfrmx%&w%RMt{HaQ1?0R|a3jzoB_Wo?ZhHm0w zti@!lDEhji-q$15R0kVn0>NuoF&~7*ayA3y7CLhjEs|tEoJmH@gx|v>4^rvKz0MJG zIU9T=esQb(*F20rb?5W#IMm^q9Ev;#6wS~-d2frn0F7JxOStt0^MkFl(S!_A#w>yd zhe=OkSc9frFfVtssT4nV%RDxC{(`6vfaS_D1RiLm7{Leh-iSo(%Nvan?vk2xS zpzYz{^zzZ>8y|0a8RFBShC9$OzrKnj?-(N|PbS3WFQqG*u~Od^NYrj)&NN=WlLwLQ z@-nIdHa$b${vuY9x;4NMJggTI?n(lNf+{o5OvE^6v`>Poa7xY!Fe^wIp=H7IlWG2# z#$(7JsX!2;cp8_KRH+1OR|x3Xl;eFVk3L}s!VxK!vr(25N5PliNpKWA4gL`P&!7|h z-#ZVhd)2HTHpV-dh2hOaFB|RL zMA7j@@N9oyLMxl(z^g*%ZcCQxDH(hKZh99NxFn!q7YbiF595MN{j4jn=3xa@!JhF2 z{@Dj9%BMs47O!b{KFrs&rt=>7s?{??__xd9=FDxO(Wn*24WjPzHSTt^Rh-~zU3`lt zyStfMpX|HRP_6R3svds{5vi3l>!tu|k(mFz$h_`XA5mdxN&#hNz|dlNWR?d%cF#_O zVtg%Tp~PCO6Q@<4Evabov)wY2e^hG$aAN_91(BNSRC*MyK0;+)GV4)j1@TSdG;$#a zIA2>KQFU`YB9lh#+ihHprI;5-3}%GkAgY4Bgb{eLOVOt4PS^v#*X=yNdixdud{dzuK69f*wQ@-t{Rs9=`qcUbBqPx zt{#8Xh!NJ^{upKo7ld5yVF`^z@HW23_5cKB4fAj&2<}5ER!9zFuXbMm@2(X%UNY}l zabxjU-w3(IlQfS>ExFbE+HY926gVx)z69KM0S7<^T&sYRkj^7`oJ-9m&Z?{!L!Q)< zLB>H^QvQH-m;;!dLpLDQ9Bg;?u-T4mwxgT1-sUV$ZGWAhdaJU*K>XbJ#`xxsRO5~6 z4ut#{iFBQNi^QH~Iv&6X7hccedRhm9@qF0jYP|H@Jn<$%hg5T?X&<$kiwR$y1WSe0 z82-YBa~BYBT`=|D=QP%vi#*N%nI9y7Zd9#0?(l)Sk%!|vOFP4WHo9s&pos|RF@x4{ z`4hzXGwwepX;K?1me5)e7-S;>m|SKQxtT?3C|6-4|*e4E1a0xA1(g=k6Q5+H0EnRp0Lj<+;t>@Y=83Z?;(J z=N3SMKKvBt5$&5Lk?6{=z!9x855Ib!H~qS zkw7ws9D(P2Z156k`&EobF*4I^jFf*!$HJ}x2?B489C1`Ydr9$qE!h7wd;_Y}i$y6V zsNq^0Bb>*b+;Ts5+vDBQz39t~f{CY34 zOWjG>ku)b?2~MN1+v5VTt=HwZoX~Yc-H=TDYwL(ulKI@=d9mj?diSK-(L3O`rNYr{ zf){f=bqy!8+3K?O8#-}eWv-kB=E^aXXKEZr^|a;%S5izQV*pz~q`#hK*{#tQKF?WO zLs8EN&Anw-=+(R+^nuycGrDHgjOVh76tos;cUh-jKlf*2ZkCqROV)^V500xpqAgav ztHI6zS7{Yg$-e!ZL<;nlpUpv#j3C)UiM`-Fx(#7yoouM>S#ARYc*eAq1QuoEP6Y^H zbL}=izGXxKz`ibGioaB6h>n6EW7O~Kit{BE=h($Ja9zcIl;7&N%I>rAd&}iaYrL=c z(|;m+=U@$_KA&e7I6~oOoR!U z{3k(I4kRuNzzxG(n=H3<71r_!FajmBaJR15N;7aD2238Y?qnwdkkRVqa$WlreQUYS zHpIzHS}IqgG4QoSItV-3N}PM`XP&mN(gtp{b)$iuk7{h%GF#C8YJXk5k5cxU`2k6( zZf?6>340AwKnTVk^JMJ~cncG#Fht6c_t=D7-5k8@%`iXw4>V(fegk*(KfO+LYmbNx z*vU>MhgbV6ds1C;e7`Tm7?U)H3IZTsHIhWh3ufahi45w4Z=-C|BXe(VMacd6)uP4B z7e%V5vMJfgRj5ZS9bdmyXb|>e4{i6lBYQ!AtNJ5j7Iy0L(|BRG81bFw>veYL+b`<% z+dR}*KOt(6iFR?%yF1F$&BiA0%X8PZEzgVBoNQRRM_~b}WE>$b7mWE@5QrWprX7fJ z4pwWKKBd6Fe=8Tgp4*KscjNQl^M&5F&A#2G{(99*{j(UId<7o^WCLqj0`J5KVA%L; z<2H9&UFk-*KKivBja$MwL7R<^{%No=GlC|&3HEVPTNFQtlW#gvcS0Z@{;DeG%bWH-Ym&D zn~5_~fPsC@9W|q`YD1WOH_8qL(pN7V1=7po0XU-pjw|)$8v>x2c22HN8Ss^5G{ar* zQbfgdJSi>TC9_Sh7;04ULbW;N8@><8?5J8YY)e=11`k`1m`pzyV?wlg3L+q2@862N z2$P_fVaig}AVH_W!;e?JM?T@f81fE$DeOV-G?k>=`0lt~8f4g0m<0H>mjPxnEqO+l zQe~`R8NQ7nqG7$u2vpq@{H`$E!gSl5?MYVAKA3mcF*pvuEmg=U90iUJ8uU?E5ZG5C zG^$$}=8y@>IYp##zYBA5oq^jVUT60dW+@f?NFJm6aJ)9xhiS+~0|-fry8?`G%i~)! zF%G>vncLC({%nA-`RkJlSSVr{Xav1rK+t>-B~HpC0?n>E9x}Q$4@n}ZRQ8@7#UNu3 zQZoY$;+$U|40X7>vKMc4z(4$;2TJX_3tY-lrnAjeuAy$TpsD@4H0wxi0g!9M)! zvR(+h+*|=0v zbks$q?zopVt2@-xj%}i|opQ z)(CjTV*;-n)0F4vb%-#dIi5Z`Yrz{z)#D~VroQyPpR(9*cZ^0%Qz66Q726MMthor#S4;eB<~F zNsUTYu8dKr_s2=e#WXHT0q!o4j6{Ih9WveXsDmVv4nwJ0!NxKB$9u}n-0OHHt!4_L zPVo5gg+?ZP{5a_7X}}r4_i}M~L|S2M%iA~^3kl1lgbr$6YfJ*Sr?+UDS{gf8S>igu zuqd)49coRpIK->hDl$yULm9$lABh55lP#n3lKL2C&hr(XpN7xgLHW=?ytlZ9->pPf z@xG_6;?2czljS_A?#6IYW*y2;LCi8P;Nv?db#bL7lpi&TTdFK8O=F`2NLjpgvxCE6 z9+uapx)ydLshlOiEB1uh%CKjdyN|Ct&;f!0eLfcy+(%#li_tt6llbdUDx}q6$K=Xh z_Xf|I-fB4w{-b(tA6<3XQCs0zZ`r;zzQzWSx*@Ah)znB;sv;6t#?z;CT;<1bBbxg! zf~Lxh6T8b#4JCr4&g&Vuvlo?AP^%l9ti6&5lpUjpVQH#o>;!`%!zqa=NjMUTH1Z<4 z4Fo%3`VGp?O{tcZ$^;F?WEn=|GTzCk{@hbWY`D^=VH*E}kYr&#z6O;ZS%%5jVn0Tj z-rkA>Z|qH|JVlN9Q9IBPWcGNcvIxV77;u4Btl6YMVkElZpPm~^<2+h*TlBL^w1N5pHA`_(SD;y;hu)44}#}WqD*o0s)!(V zobVX4e4YW{Hv}zCO6}dtbaTi(+_-&>9bPMdS2r$-`6CSD^N=RT#Ci+gDfis=TX+n< z-uI^_xT>HNW(*XWnP*nt-dC01q_87}B{O(!C1J_RNN68B1ZglkRhz#_yeg!0!=6x^TnqoXxOr}G8nH}kisp=rhvLf+me$NSj?xWJjMCJTJtUi zn<_u)=R)PT-S%}@=pk?YOuRD9NX&7z;{?mA-b2WJzrY zIoj-JlGGZf(^byllc3vjnB&3~9h8E|kRcQaC~NS2;%RrczIbat8yn`~cl3tb@!i`T z=3S>JUFYsqA9*fc^SPq+E6Rt#I+{vV(yHo}Iqtb(yl6&sI`p=tu1wj8-_gDYG{2m$ z3}wvVu%eHFDqZ;w>3}46^z`Y!(cc}obN*;of$hO^nz#1Tf1}brq7wCUMXjW#)wp!E zqm~gzj673cpz~Jd(}8p@ip5NdA<+3xq?`|fd6vZE zWs4df|2a66+IKjZno4O)YW+~q!nhF`fGNc&{D>+U`wGp3ri4J0xgeEJ?| zhIy&|B!?oM#;L%$d^(iFfdnTjeLV~F8v%#+={TItLpUd@mEW2qtatu@TS@q!*|iOX z+CiD+;Z&T8v_J!Ns}$^hP^*68iUHJ=&LdsVue2%*dZsi`*~C5wQob`|g=pW20({3N z{4d_euv^q01+I(U9?<@po64sJHPuN(3Q{UG z)yZxl!b03B$XO*idA6HZY{GqB5t7`mHx-Z^fMs_=-qm>(ZV(}8rWCUj-kz-nbF`*s zTy4l*lTF~jpQpTm*fH2D^Egy9=b@hMb0K;`M1*7{qI65SX93gDp;LU%54@zHP0X)bo1REtS@GF$Ala#=4mxW0JEohX=FIn2=zF5zv4?BXIg1Em0xUzQQaKT-+bwHWO*F$XT&s&Sk+tl5rYFw<3qcWyummFwBB7D?|duCYUeU5pfRRNlA83 z@0xiYr{j2z0fvU9o7c-f$ zWjMZJhC&J-`gd{2JMqX_GP}@OJ1D#qVYEUUgweEZXS7GwYNfiZp!_s0%C(w-54uTm zwmg>1h3Xb{=>(V;@mtX4L^AZ&U;2$0O^1o=u&P(>$(0$Ft=Vl-dfX`A&>ZO7;Y_My84H|xgN5_P2C z299v!eHT!j%FCc4sdK$;&^$cCkyd76LE?J81sPFIk667#OLY31#=8ME6#KfDP1V3bV zfDnlQEzad4V@NdGm1%b{kUx+;OhY-v1a+QsX!NpPb=G`dMS5#328SivW2r ziUCBj6bcM+9_lJKyWVk*#H}<)F>y(lP8ab0ci#Lh{Ji=s{M+7xVw^9^7{r!QB8&h* zntS=z1MBJ3oD9Uc1RUSsh4S!Ga#s8q-BW14E4VJn0F=7yI?D((<#8^6lRUQG zRrrE>Or4k|jhG>KOxnznw(lMN8yzv9SAZYc%E)rW@tujm5^w(U+2=Id7YZ zLuL!#Sl+5gkK4s;X7>{Fs;=sRR*`RDVflG<6b!>WJqquNBfY_b z$BUwKCyKK3>~U}uJZ2rlmpFPH98nujgU81odYzL$ch4?PPdaZt_THadJq|h@`1bBu zC;a6A{`%S}4u>AqvN0L!LB*lSD%G-**lL~wbB)s?~P|I zaUJ1QoP{?cKRW6q3-DQK$}cJ1oxyUcFC>YacPkd!$C=cgy(AmVOh55EH9XZ-& zBJxq-cRsi};On1SCt;KE^boTekQ{?qIKBpG%|wJbY6xaoB$7fyvrskpl!zesxra7I171Wq&)fXLW?l{0u;SXHZ|gMyL9>&NZ|#&!QUkrTVIZ{%OHQ zubEe1;bL$6gHg772d{>GqQG@wCvFd~Ti+9=uQ75#@qo9^ys*Of-iC3q$TvcRM&X}6 zSGdrtbXt+mc(_|L{-$1=(+IHlHaaKlEc^27XEoWEDd8`NOfYoCN<*kv`#;Uc6u`Kq zm%=lDBFF*D?xy19Q=B6v=>-Evq1YBY{B+TKq|E-gLHECBqhe3OOGzdN{0opT0hUXn zJW;@@^oBI_AQixN^z{PE9jC^TEsT~b(vtka0mQ6H9YWsbirB8|;Zn63+nGZ?UG&yx zopCzJ!=lU=<8qOU4xk7zw2R@k)36~w~;9Dsj?-)85Bo59)EWIg11BDo=-%}2->~*a2w4+Hw<(*md$SE%3QPze?tSPNTZ=U6$Vjr3h!>DIksT zRy;K`6j|7i6J7cu@i6qT)sUsw6h*LRYo7G(MgLMBLe$)FGp7Etg*3G+D$}L8AnYC- zPC?jYQm^PQyJ9op^tMhU+0z`fw_mtf74CxQP7$IvBbp*wqQEO+%!X_w^{!0g8))Q0 zHgXj7;k|=z(l8B9CKE9(fgzLfo<%hI?En~+n6}tnRoMZQfanvCu>f;&%tH{+QCH0b zc3@l`HLfS~Xad}L$6jaOH$&SRPnmwo`=^)9=252ON0I&4x9xmgA zU4MzZnV5kB0G;0xeC@+4U3SYer5uetb5c0-x5r8V0Uq+cIaEHC@V=&5!DzATn!$m- zMJ94Uzv(ExjU$lF@Z%>zcLJOjwQjtyHTy+w1JZjS6#H#xdJ2|x+jI%iiQ#@>1>aiS_8F=;A zg(%pJ!`n*5tkg}GO+5>c-pRVeA?&uxr9yfb&hzhL5N?72=xzwp4IM|-HArSzw12Nhuq$Gkc7y;-z6`+ zAC{!9LNbNJeYg@eTMu`wj(yq*l9INjW1eTx0&kdr1+PshvbgxV+`9f@U6{=psg^24 zc{4_v%yM0tp4ZZ(IVH5aE>ZUae=nb52IjpMb#^U+KW_>A&?5L*GD)(#t2`V-92X?8 zX*MmS!PzN%5y(#h`bNfXuqiVM=8Jp|4n3845r$$8^D>@<5JU%2sEvB7o{FUN_r1P~ zYKEik&^^^Dxw#HPSLM~Cs$pC$;-Y@LifUfWM#%Gy9q;D-5gQaiDmR70Ql6S2==V;Z1@6of@kF;!7UR0?nj zi<^Q}9@k+qkrPHyvo(tME+1WpZWAB#c++ukoIY@8|70m9;c2S3MYl-&&=zI_u>FV`81 zQ0~RnSOKN_Xx`SCvGS^i4eUIl<3{ORc6+(KY|cn#TyBGM5yjbQJQ3sNIFV9Dli?iP zH7du2nh8`pfrXoC1tI(U^IjC*%5~w%o~rkAZPX63dT;otn$I^v$?eYPoEFZEgs7ng zwSAnjd(Df*OLUK%Yu6^4opRkI^Q-QhfV}K?F@mjc?F}~luaQvdilyjLB}Gp2?)_%S z7_VBC-yFF1!(w!FWYJg~du>Dyw0!J~Aqd7IEpy7SY3w}q##a+30ZOE5`$_Nt?3*%p zK=vH`uo$5i`xNIrjAn5fOQWg*dSP7v(q-m4Q&@7%;=Y$+K*lksXp#B3=JjG!byDOR z=~(S|VlcbAK0fZy-B1(h-s4?JKWvv5<8(VbF5l8_l9du6w`Hp9WU0Jwb(-6UA3yew zA2s$Hbb~@9lMY#4Bc~Ez=A~Hx&5+lw(Ky<48@>haz`@Ds+b?I`^X|Ko<1d4g-p9-S z)sJ6(`1l6g1ywrmsJlKdkLZaRq1d!1WhnTeKll*5da-{XBhR1(3Ix8_e)hCI$bWWy zT2IbEdxCPTZ}l6*;J!*rrJM{vCgq&A&BSo5BCzJTU@}A3$V2^!ij43A0ySXJbf@ygd>I(6sEJ4JgzE@l}+Jh4H%{Tr4O+_eGakePAf zDl;l5@0gm_(M$|s3<7D$tc@qPBfXA_U@y2M*Ui~XU=Wzh#^?r)&B8gvS+oUgwMR6| zh5%Xx-$TlQ*YxMZ=XaP33~O7==UHBINQ|TM(;=HK5AnW=>{>=y<*8I#b6vqp2QaO3 z%>L< zD=DWG!LXU9Lgrm<=Vcp5PQ7kX2b(w3+ZdDjbf?oCCO7k$I%_Vq%BRM?CIzK&o)tw$ z!sT;Kyrd9pzOLAik+pl8EC*aq?77&J|B?}luo;VZdJQ3aGHd`0+ewT@0&*M?EEH?$ z8odB1q5!e^`3gzm6fnXh3qq)3#w0aql?oi`9Ef}p@HupBm>`Lf124(%8hXQB;%Q3V zVi5p8Bn5}C)=ihP3j2$(mXQ=h&b^*)vFAh=9n6M3xQvtaEfj{sa;#CLUw=&I|G2?RZ9Y^o|P^suuqj_s>p;wc~EmRHC zwwJ!3)pGnAqk_vk7PopwBWN=nTRM&m1ya)uA+TDbiL;azeC-i=Hj(FUppw%#1xq3r zJJ;&RqdUqxER6Vo;ts+Hppkq>K2KRzn}Z3McxV@Pb_CD(8LB7Do}|GR^_F%0g8U}C z2@88yvNVI&)eKh%PG&X-^#(cX%oJ8!Ardi$^Gs1EbmR=e(Dyo1+eCKB&vl0l6!>^o zZOd$Vl%a?%% z6(9!VpKzCs?PuH`^p}%A_f9UZz6>r-di}TkljEJv!d@W0j>TNdQ|1ckbsO@}L#`YKao>ouuu#ZY}vniBthYRp}Y_Ca4b57fcb^tNZp0LdOD$_pu zC5HwwJ=7F6_8PC;n}`yluS+DsYa-UH_NVUZ0+S$*-R8YhL1bW)OUJzAeK=|=Pa7a3?zak z4Kwp9Edz)WO1(q+o04;w$EBEQOR!uNZTxjI2gMVL!c)u(`vr8grQsc-PMx}Lbkh|5 zfV@)PHJ%TBvurTGFnH4>U?<34ndR3uVO#=*3h9UO-i1p8Py)D}WhbzVt~J+$ z3hzh&t-uO)wUiQNW`(TUHZlc_fOJ?iz_zG;a#f5gRbwuY4Z_|`U_2Y^{c7UZ`NBDq zLD!DXkV00?W_EP_D5^Gd1Zvtl-b<$TgC-sLDj%)OQEao6?RR4wP+B0CvWH5Q%$jd& zD$N#c_0TYI_{8ww+2QxkU%Y(vdjH_r(?!t{VNrGtR&Q=YeY?z_t#t{0Z@Dq%Rvl?u zKdZHe*6agE8TxhcY_ZS1U&NGB%<0r%hU8`qrUn}0ko0_a;j##ZC+FQar|^(4CSemm zqYJvmFvJJ)P=qP3{-mA;@mC1I28h$Q-98e5ahf%Q)U|sj=U12AQ>OV0PcrYN(|8t_ zmjYdT*K=PojVH74Ydl-bjM!NSYrhi}w!tCqxd@}B*Q0b5%Z10#vM4k1!P;;PE`Md) zwj<2>_^Aq&T?YT2G5@mmB0mEQLY*JNWvO0zu42STL?k=b9NcJb5++4$dmx+FG-7x4 z#7YgU!2!8-IflA3DE+bBJ5&;>_MiE{rAMSui#tR3Cd8ZsO+H$lBacff)^qd@7Dhb* z*o1}HYcyP&spI^Z!;Y?X)n13X?XWkLzUDVQN!5KS?Os-jFU|XoPu_Mvo?huq>?!h{p32k^>+&8@ zxP!c+met+)hw~HFm%sU{8n3O3Z*nq;^55>klp)bRDcE!w-1wln&Y)|D-1vQct=;yR0u}025Fg>ABLE%OFIe4PizIQoNe!tth|RkI~Wsr^}N5! zRLD|+qh6!dlA!q9aToN}?=+haWzIXYRQv(je?{oL-AOF3r=eOf0f#$^}RH!9^5&_-HGr zU+wR&5miKv;awifT6&Ahr(S(UsLRQdx@JnTq&}WQYvJ^~hgHQ!UDFMLB5LWZ9RriS z*RXh)$k%XjDgp^A6#`B%;8#u-i8=bc`gn*kyb(np5admzYEcg7CBPlGs6Kiol60)3ChO`$e0$L!7Nx5+X+Df<8=~n*zXBUo$5>S5FYH?~6+vR} zWa!KwZAZ89c0^%(kis}46)h@W*NW-G+ycnJWctVu1Y3!=Q(2Eqp_EOH1F;mPQXr`s zejHZ1V-3P@AR5bDEN^6%e}}K_%VTs?ua~>ReF59>DgCn_RdsINUhl)l^Q)((?rj)& zA*!o!NB_+t3%!vnG_h;XL)CLu9%JcZ?75@%SWLiMZ0+D{xf|A^)q^>#X^jab+i(cp zG1->*bFjaL_(OPEgT+V(<*hCNRX_IH?F*v<8QaV2IFCBut+teqUBoeTY8TsDX*z!9 zVk`g()^FHBXj*0dGD2I}siM-c!u3_obylS?F99b|QfW50BXtXR(P7hQzJWDg1$l&u zP;=6~aUH&jMp70P)uCPj_^L?7hW-Qoo#qv9JXO7Z1vT|H^f5q9i@Q|~OgRJb#@bbr z%!?Dn#BJ$RTkYEo*uw5NW)%mkvkLh~kKUxKvkB)z?<=V(^fdIGbAA}R$K4L(kPv;csUi9CErML^1PYzr1GB{)3F|yKx6(KFtpefgR z0`)dL5{r(EwKzC3Wp-6d?#QQu!zTwy5vmUrIOf7mo3Z1cp)!+1D8ycRQEdpGJIjg^ zWty~<0J<1~0&U80R60bIkvGsg(Z6MQD5MxIwEk>pk~!pU!}rWj!#CjCL^YJMSgx?4 z!Wyp53J#v^SJNJ>*bOs>?nPfh)+6ks#DMqD65Wt9TVWA8(?Y`rQ1>~gP;0O+V#>N8 z#Q@9@K>obNUJ!-FwG0$nq#&_jkQi=<3&r2o2;8rC8GN;W@XVhX$U&iST+p;fV}+UT z1)#)}QXpplG2NBo5}$`7(4feT=R*#2M2VJ^Y`if}!y9pQ)V(WCv+01)Ts>opB7~O< zA>~7|G`PLV%|i96lDP^`*l;25PsrI$Xn>BbGEOzrzY$5iXXp3Tca@pCppt|+OqXVl zxOdW}v|3;$m>4HkYvEP4U`8+ugEC)W;DDus1;s5Mk_18zwK?Sj1S|qcka)%6@gcsr zScq2_Doi^8CKk#g8WPTBQ!*onTTDxUydo~`w371O#SZ~xhmeUFC{}LRvdmzlRB7vF zu+Q*V%taa%AJU=WoT>Xl1s-=(0K9x!#^mwvS!%8QO{lcmN`8{+D8_SV)+t#!P;ZdR zfkZ)=B9ey@u!1vQPj_g%pxA|6`d=!bcTR>hkv_d9Nu`<5L8~rhIEk-YmVr~PtdePJ za9e zT?Iv-=<;G@uJpv$oEVXm%3O@uk`C;o2b3IEU=ybT;Dbb`O% zZl<%jNIT;tBNloxKut#W%*UHwhu8ME$SB@)!CnYOiSuwRp2PJtYt^-w85A`Dm5P5 zPDX@QoN9-LE3N&&u;%e133Dx}X`hM`ol9ibB#q#0X=j47VlY{>p|q0h&?^0mDkGEY zt@9hfLz^Do06G(X zgRc!ov?%`XHX-+h1^i}AC(4LQEb?v&?2v`dIGqYgGNzuZ*tHgehJ;3G%ZxApK7A^V zsjeyH^#{Kl=rt|O_3Qp2-zC?qA9RssYWZ|p*gO^^pRK+O> z)r-2-9U86eL8=8(aM{?|8H(Y_pip4x0B`uDdZeTiZrE6J>}=GBA!!bhp=)4u6{9r18%+~jt4c>M zS)(aHXufD#!^}bWH7crx_dd3ZcYj+tk4M$pH@K+H8+y+e=>6m#A|Ibb_!KgYlOWq0 zT!;BR(dB>0H;}QB4hUQvdZvR zjzO6j{AnQ;B4B*^;Gr!1)8J9?S1dv$R-P@U*TD?EK=IXzS%H7Jy1E$XjEd@U&bN#) zEARvx7^ETXSz0V+%)v)X?bQ0$g~*o@t{LZ71EZGozL5e}B@3M-RqDusB)(CL)&)1A zkgrSIfdW`cut1anN!-Z24FF&kk$TF~a)9 z+^V9P`8_TVzWTg5D-~5+!Jt@spyou@BavEkYy{ zRbZUb$h7#E_)3ag`V+&c3S-gPm-;s$tQj2P*ObqsLVCRkX*?v~*Vw-Ody^5~Y!!*2 zUBoENMw@aG{JPo{)>2pAcs}F%Zl&SXV1Zp}_&n3fbdO|A#q5$`O0b|dgiDlU*CM#f zA%lqWxYVx?i4S3E)|}S(#w#rBRIeC~hF3UL#@DGa1juD#NgW>9*%|V7aBK#6kX-mMvyAes^a6e*&!7%Jr?8Bn;1htEM*M3-+}-5m1(%Cx z%?-8DX7WoazuuE*Q%lofi_7oH;OOWqj1yMEbfYLs`)o04PIU|(2Om;xUQ%b*6bWMv z-cmjdFbYxd(S+(FA|C^24eDX0?r;XNs!K1 zTt8mFw%V-ZaTm2K+|xVFo^6Vna_HL7Csl*}*LJdf21RPwz+sa;cyRcmEH$0{HyD|< z2m8mKet)G5jTj^})mVS*{{`+t;P8kcLD~lv-vE+!gUs`I3<7OX**6Nne^k-jgbv?>cEQPzxld7H zKQVzF)-a$|qGWu>!q14d4v<-u8JV-CdBv7Tw~i?}o%z|uuK1K`Bu3;$DOsXOiAH)u zuGG7dFf6DIXckpAp8&X*-T04!;nn5I`SDr5clqJVr$P6kAN)r!xagk!(ET|0a{T5r z_>Z9b=HsCM=Pzg7{^^(g`PIqkY5(2HdGBQSFRrzFu64K`*UHD&@ol4Igo3Ge#u zR9m}vqBzQ)3gkloW+wOxKd9pos?!={Iu?8R0Tta37vRy+$yYS&Brv9?d5CLY|9qRM z2Eu7w3yL^^K`jsbz zbeKpp-no*DIg}b9d@f`{HNyJ&)4GI{dAg(qPRf) zOLe9$jVMes!4z~h!O9QcX%!4DFT|v)=qBQHoXzwG*&`56 z_yM#enD7X!C1c>3LaQoF* zW`Zg}6RZ5T zrrIsjR`h5DiLfluG?IDGu^B*IQS_O6Z5tiw;fq?nZ2JPQeF8SQy}@iT$zzd5$;TTiTr;Jp+r?_p$-K%a&~$wflzhUBAkr!U|IGLD-h;LAZ?25I2i|?F zbS3Mlu6HXTv{<~Ej4#x9=URW zzWF0+9W2~soU#|b_b!)&doOV;^xfWAa8J%o&@{UaQSTeR3TXy37pZ|0zlQShM*P`t z!?N2nj-In1B;)1(`1^mE$Q^|k=b{9kCyD_?%MNUpaV{c?Y2~b3;Qs0hwdRT2NS$R( z9V(#+#Q_N2s6lhQ)GCb{w5V|C{VW-)Tx7Y=*hy#zGt! zS*rKVzc|SzoaDuNmOks@w<3jV+U z_y5tVflPw4bYWp(S&v1!3?7b>Y<%;GeX}J$nP86GMOi@jZZ^SiX^hP!xd(l;A4xx_ zh{J@WLv3aI`Pj`__?1C{2k|fB&9d||&t`E+rt@Lig975};xrgRYd{X!qUdyBZY0{$ zScP;t_B#FJ@BbC1%MugcC4gv}EBgda6Jz$$J{joo?TYKaIBe(o#;FF@Kv@OV36=x; z@5JJr^SiYroV})G8W-NqSc5%t&0rU~u-Q zMLfP4h;lJMIQuJ_K^@XJ?z zHmrJ*vO@;3c^Ff$;7pVu`kzzqPCQj!>Hdwm`Bew>+P7Sb zhG+2M=%_na!TQba-Jz}sqGG>$7RcDQpeF$KN(nR5_*U2-NNjTx;?3&V@5rR9_yI!f z@+~;3LF>-5idWjd|3hOB2keAfxT5P>QZBC9#Jm1vXtuI1Yddk{6f}C~7|YBU6Wd;( zzOAVNl{cq!w`q3l16R_0)wlxu4$I3h`7p1$S(@&TSNneRM?i0Ag4+s9DMNB-S7tc$Omc>U?`|GwOEfRl9pa?bFcWP7SAFweYgG%ZG!#HD0m_uqJONP*cdPMu1xR zc@UWS;R{N`$8gaOLK`SCtTg3y(WQ#gxeiVze_;Z#2Q8wBT%~j>G+H?wGBl2SjzK>F zN;+CK0w_i+#(bVE*=zaAyrT`kVRk+!-6Veo3YLtahi1CQWGloP@Y7LVs|6+!&d302p61^S`Y{b79xUtON=<-N+mKne3~Qda+s$@CrqPGs@m~n(0E7R1`2flG2s+^ zxJy;i_zk#+c@p}^MxuC}NNBrl`biAsLPYu6jf1G{j$q;p0W_ua!n~}JtQ|^ianaP( z?%x%SzqYnd>T^iK5I!ID-pjk}SR+ziGH=y20@qi+93}Q)CJ9Pk6pV zW&qQRI>;9(nvo^+7Etme=;Qu_A4XvjkAu-7P7uKpEhPpFo~93PE=eLlaF~=Zqz_my zwWb%1?~=Jo;tDiJW!7y5JcuBCv~Ui&yK#-E$5HU?$yeRTqdlduA4x%8L7Llh^e8V5pRihCi&xmPkCsM#V{7F8`9H8$g5^4FrE7xyrb{%|nt4u*ed8;`Wdl zM%M0BQ0_H-I$4p524=NuG0Rw71h4jAy3|4G{hWn(v!%YsD zL?uQgVvWKvLC=;QAmM;5CW=^;n$dSa1}I5PN^?7Y>|+3x$YFH?xYM&mVWv%nj?1vP z;d?}9!ZRA_o%U^CYm(jJLd$MMDy>PH_bZW}9BK(BWWak*Pi4&}m2p$X1E=X#&Rb&b zWtV$t-DT%QW&H6!+cIpn2<9VxD}h=rg7r?;Xd#sqvR0<6|F9cCCIuNO@ZrX)ifNuL z<_toS7cB!M@Y9_PO_9imr{Maef0PJH=8~z35)X2m%|>y`+TU@O0=@?6AeE?0&~mv9 zs+F;@57Fho3~~a4I=x)zazyg@pgna)pUu(5rWFK<;mTB(xTt z!`0@ga`1OYqPzo;ghON7m6+2n zo9LKq^?VHaA1(&cqa#wi!v&H@46ln<3NYd%3!}n9^Jg8ZYAfi=mJav#_p$Ms@`Gn> z6<){+%_{*us3@`Xf_N4KQ$N@He(H<|YVtFb4xm|`BEempI1S##Z-R%@cod_X=%ZG4 zs-6*iO7&BGqbn*8;>dWR>O8D;IxXJ`IRwqUs$Uce@)Y9bB?chgOqPM#5q5nI*?9yZ z@z^Y;uoi?=#`_Odfny4BJI$uYB8hKBzT75K_?15r&1#bHV?=5{Z$vr;pa4wnh&c&$ z4j&umd~@|9UfA^RPnK@-QHyWEoq$QvLQ1-(*lM#L3=$S0uK=Nw^C}fA`f^?CX z^dtVNPd{trbacB(6spiwIxkjVfU$Js8RT~lw2 z3BYbqzs0>i2|mEpdKVX>?n46UlT`9u3O^zB_hVI6;Q*#US-(OK3*G6xcd*~=fTORi ztLr%Jp{_$Y3O#NXpTj3Q)ct6T;xc)#dMt1nmPpT z$S!%JMRbhwT=al(t^YFCJ}b0dg<3-G!r=Bz@IkwqRo*Eup=MCf1wG&f*`&M+^9=+4 zH9l^^?PxS5uov(nk$g9hp(ROe|J&x2-jou9gr3T|xPcL0bEw#%gq?OU7Lj`f003~w zllvmB9)Xx3r)9#{^RATw#rCHBjw4TWYahe9->1gA%m(pm`2#(1LlAf0^+RRE+y6D11s1&fqbziE`+armJ6`7{2yu0Z&_&b^=X z5C*(aND>!yjv^8`npOtkpSH7gZ&}}zk#j?3)+8zNbij_gAJ%Dhbe|x$;9dD%EZP2y z3`aVR0=BI}sUUpYDwp_1${Zs@l~0|6+XF9B^jGHaW>BivXH@#>Dx5ZZ!*)LpdY14i z-D1Jp0y8e5cdTZ@9ocmUWNVc_3HJ(2DN0Hp1n*dkhdCkRIc?-HVaE~^7dcrfySKb; zRMe5p_;>IK_}_m6HZZmB@dwB%;jY@#|2+ChJ{Mk6A}AK(7exn5ft`Z~*cLl}t=!mw zZV4Tj$Fuo3e6aVRxXyBh9D1OB9EbC`gmk%ZeLU#)&Mtc0%ELvuP|Mc~*VFGE%sF9p zIxpNF@fW8%GR(B}bulnIdf|=^3~*r@Cd*$iDBd2WQ|NS$#a*Mgg%Z2IChGfrhbTNp zv%k9J=${=zu;A=ZE07>->dv1Zx}DFHc(SbYEq`^pR=>CPOciywIgMwG?>7CCfNp@H5pMS0N{+54l z?HeoVo}ayXUg;Shu8inWrNAkzP||nGTPd)42 zaIGrSo`Z9J_2e4AS9-rxC9VB)RfB@()%`&4p(+LH_X-6ARnkfUS2ZYj?XvFqyjZ4V zPyh65wRir#y>F;!ux<0k=boj88nO`-<1hi~wnB)%QiU!R@VO|nfv(m{rtdrRvZ?YA z`9+)-5PaY{OP(6F^!AN9D-)|eGAOO=Elii}5+{Fj=utnnkU;f}USGQVX%WTcOhNWo zecMG21yHD=e%k0TYn#-#_fP%CYT8X}Z6WWzdGX8@7Ic5}B&;&vYH=-17qY_2gwYoU zb%)OFFbc;vi@8IS`q8H3jrzH{f39cr`uwG@SHGCzmicH{Sy-{Fn-slvDJsYAO(cJF zDd1n*dWLGc$Cvx=9K;E%5QK3oz>Mg2UM+U$pb9;+LJLXm7Y23DoV$6nh^C^#;qtohEGqr=PTITbotV9R@9@a+!kuvX#p&ncD4T0>04DbC~!~P81xpXdJ}&B?5*I?q^qpVt3BTsRK9Rzvhj6TjduZf!g#!N3?Op!d z)-%>KdVTHAI@HiAAW!dRp@)jMX7LKt==!D&**!DZah|1>?O+!8sF6jhP=a-hhxC4B zUu27@%)>bGQ6URFR9wlT6{w)P1{L19xbs|3R)L3#&#PTjMqPsnSJ4Aj=@5={IIgUT zUF1-bMWSmIw$NhMHmNzRQiIAB4=M8ZDjjcRNjni#)u7;oyDC{Ez-cu0&4wzd($G^y z?L=^0gNm1)c_4pH4;8AQO2x4%YNvwh8oG`BefKiWA~9X$i+P?+;-q@LREw)5y<6mq z3!_3iVb&KWc?X`o3;l!Bj<~BO&nWhjcWG2ujXd>*MV`xovq;S2xk%!)BKp`xRkALO z!gi8WZIhhCgDN=?^64Rkf3A`-;DUA%u%^|$%XGOP?YvdFmAy6mMD^@CtI=nEWRdF1 zRZK{ll{znG4Y6(=Ke^{_t|~Ie71rS6)Kr_DOXm(Agx@umKft_r_-I>ZIR=yaae{PD}eEHm5kNw0IH_Z{r3ls{0hl((D&Qz-}v1j zz$|H@KvlI!c9#9#8itNl4ON} zuFyi5`-MrKYcPwlaWryi;@=!Xvhneo6?(^NR+sLKK=T6d?c>V!w2M3hoan+8=#aH7 za@>=$Ov71Lodo@}Lk1SCG!?R@+5Jn0ZHcjKMyFrwPEUF(7|o%Q(bY@WbT7v4Jxss2 zU9F%Rg-T{u&!4$nxqP2~al2Z9??WZi{_ctyVp8d9;_2$`DqX#`yE=5Znz*TSb>r#k z{VH9(x4UvxyJA*ZtC?r5&Q@8gGi$9XdMGi=8P-SSmGL=cmF|01X)7T{b(5rL?nKXW z%F~#L!b6f(Rv~F%m9~;(R5wXFbmTMUN`PDF5@eM)<#L0BtrB< zzwy&!7W;@AzcDMULYeV}N#4r?FL?lyFbb0}9al}YHC4Q1o@Qb6#;mjwsrFYUxvy3r zx8mAVTdAGoRotCwzB62G_A95BJ}E?)R}{!@nU_dix)N<%-6W~P9?_Q`oM@AU$LQcG zb_l}?msW)q+T1Tp@?71rxCJNv@wJ$R6`o=jIb=cMKo_=GMYLIZ?Zrw@j4x4_lyM5bV;TnZXW>>ECJ*m7u zC!Y7`+g0A5Z_n(mTfYHxlPnkGuyA!=#?MaoMnOyWvZmSnE9V?f@^BH+L$cyr;g&gsK`#*nZl&>9B!sHx(%~t02*Mg&yG9FT zl}{`ZU%4bM-0jLgxr8iM*rr&^=0g~r_3thHaz(Ri_eDL;g-EA) zSP@*U0+#@@sEr0y*CgZh>pC(j!i-Z?N6IRKi&fho=lkk{WQ#N^N}o4^Tjml3r2}2s zMv+qE#rtx+WQ}R329xsAG@obiccTjv6W%T|M7-79qZM zPb&T5boFTk838JpT^+cix-G!(soEX?TIsUKzqfXa6|Jrvejr0#5uDQ{z$tUcFjFtA zK#W!0B*}f{!`>GDNE@ffAqWarj6(NA#By>wytW1 zY3;jgE-NRA5asp4wK3Qw6*AsJ*$-6KN{Fg#k>Va|?hx>dYG~miKQW)Va5ZYMwn>ir zZi%z9h)dz8#we)}Gl)yEGA*jINs1f!8D}MCsV}B^ICu4FmBI=^S6KW`7Pr!5*0;#2 z@|p53PG{jw^@_BMswCaT>6t8SCrH&c$?@=_yEqpft-M`QA?CAD)=G=2Y=#)Rnw^`9 zX6MGE*?GT;X6L=F*?H}5)0=Q|6Z-vpoFb=lC|ud&$Et0T<0=ks{(ttqcDaq*SoBp; zKBuyl4<$?Tw{Pt|MN4v4v1BQtyiT&4GQlAzPCT694u+Ds8>jAT+}FELa;v-XJs5IG zQQplS|43FQFhB!nH2S+mBJJZ3Bz$ z?tv7%MIRxNd`+2Xe+|H}zb^qmb#$i=c~><_)5{!bjsmm73tjud1uuN|!uf0bWVFL# z5ZiE`t zsJ91Buu~v+H$`)VZ9YICYOfH>;dggI3Lk@vPX@z~4w)ZAAoS16X2*VRR*q1Un2Au& zPQL^biWYiy=;TcGs5Vuah+H3%iz#m zT@b<;bIb}K!9@FW0D#l5WPaV#oBl;O{Z&YD)lcEHS1l+j_Hw3s9L5=BMe(tiRgj}> zs`66$Q`ee9FtEds+hG|L{-*bqFQ4Vv{T#M3NYQ@1uOLPQZrMjg*a5E zEeh24rnMDJs=EhLfH#xy8JyIgz0(%Y+^P4hJ$@Xld?G{D1pN|B)O*unrrsNGs_-IC zZg@z7)lb1>@4GFMB4ICYy5Lou@FWeNY5iL;q5gHrjM&YY@<}MOszQ%g1Tz`)G(@FX zdk6~lc;)q223Giq3u4HJPQ);65DyS)dAtzqwtnMuPIMHLS>W)6t*b>$hmE70gLYKf)hGt zyK~k!^IBswNNqUspuY=Nm{163j@bvih6p$U!wV?7moeVM| ztJyFO1;(H$00|p=rf~^CZf_Ty5O<2YVx)*^Mb3I{{H(B-J6)(FD{A)IB4V#SYm?;a z%u8?esOE`VOzK>&{wQ<3+u(<)BN(XTvk zpDhBn9&{3GUj%5Yu#@^HE{I_or(!CxsAUZ@^K%H0e6Jgp!J&HE=^yXzhB&0=NorW@ zHpD?VXyJ3<^!30956UgM9zqhd1;B)@OW^UkyC8*;Thm0dt3}Dfh~8SG57hZV_dqvy z50^s~^moAumEKdH7bTyBvX1j}0E*MF1PI;Jn?68SD8mAYdDEZ6yX3b7K=^G-;BY#- zpo9)O(=?~V=K&n{=Ku(&VF?7fr!)Ot=tZsPfeJ4nTM)Lz0XdqqQbhUPU64Y@4T!A_ zZ;$>h1Yz1HaF@C{Q`SPSr)5#qlp5y8U{dq*l3A&rH*Me_@>5phMb%IKlz%>H!-HZk zce*gN>Ze(ne8jYb;iPUuFf}ywbkh<5Y+nn;lV{=OD{H((8R0E1+W3N9c)nmyo`te% zISdhrehH>JY{4=?CwHn)eO}ILtC~et^{&mT-g&Efz8jolDTZ=fcTaYH4kmRPmdvbs zy3>bfq~~emouVD$Ag#hTMZWRCd=Y{P*@=o0$EbrCG=|_&bI&v{1I_F2f)(m4OYsqt zaMYEkeoF|D*R~8A+t~#re1uCOQz-M4h`KLJ*cO7LTU+_F_}x8_YP&-z`^BeeR+OR) zwJEXo8fe(#$nCKdyx@JveUHmxP{jO7+}{IW zib2uRqr`S~K?oI2WswQV^ZCtK)O1c^TL?-fWY=k329Dd^1u0BsQ-UD}^U?dj=wCxH z%vuaw%n(L<5Py@$lS_+Ep>w*#L zQe=(emJx=#*M{HjdF=Mn-S91wHLgQOSdHFM3+59#IaBS0KB=;%ZjccrL+@>yson-t zg{%6hHq}p&ss7w%sz3Wvg}MtVLzbF;38w0`V5y;#J5`uwSjq_|Mo8-D>9y3RK5*KW zf?ztkpoFfgQclu5!5EGREN)W`m}9qbDKxgX3r?8wNyYEO0;BQY*z<_$DuEdR8`(;AUMAVAh<0{Krmfh5W=7lDUwoDGHws4H3q;? zb8CA@(BB0sG}B0t%*wQy*F^=tr3MhTwGtED&Mqh+Q>V1t39ooogubh_#tx#Ez!%~604 z-43nbv|qU3g)T^PoQhg5Ve?}Eiurj70MyT&_Hl^%=~cZ1jrlQ{*8IF=TI%Ob8@{yZ z1V6bEyw1ti8bdH9sEc@SnwNp&^>@JveUW7)rlVONP5BzO1wd6|`r2(>0+ZL>1*t|d zsU9nzh6OUbh5#69>P}k}%5eI+V1$)bw*#9svABE=BHo$ ziQji$FP{-QIa56g(~sQn5moEtp}NR#sZD+1v@Hd}bap`r!?JGpsOHh8f2&P@-9pz& z-JB_Fp?f!}92Oy6Fh2&9nxB`*dR?=W+e?MVKyv!kS0CtR+!)8~mv$Uir0ZTD)GTuM0+KftIzWP)6RsUK^um)IRoX zw_f?v6srSXmS-X2M>_;(V7v5em&M>kzHz~f6kvoZ&vn?;uQh-!MVr)Ax}!UFsE^=f z@-tA#n6Wi%3&6NI_#3qL+L>Mb?k-4S(b&QMAPpc+JAMtd|vG3Ot%*%Ssx@5 zNHHxw0s9-`N3Agc;ouZ1{WSo@{=NhP)zO*yQ79qX zQd5(9wIQ#`2g25tIz3qqiPzf&=W(Pa$>Ite%c^gzTzMm2b>rFN&>0SJrejZc`mm70Q1D?adAt2Nr0KR{8AVq;o#~&}13YJWGQLTFh6?OqOr_Tp zMpi=Od(*fqzS8OKfb*>G|BXK4v1|xIQ`8B)WhMl#w+l{a8kzDrgux}{d|DMabI4)D zdxTDb*ykYVv&=uR{*eo6$d0-`k}?sYFdb=bcB1SZ9JLUoYhSqFh5X`AgPDxkXWice zkFHlv%Myn!)71gtdH5zNqiRDTj(Tg<jVwi>!L2|$pJ<-l}mD+f7Weg6CB&b?|r6^CM!Do?7Hzu+%A z^Kpu}YW{rrgURq=SNA>7(qW4E1&2j41G+=O&=Am`UsYpPj2NiA*r+Jk%{WcQtQrgE z)cItolru48gE^ZQvyx5A^csG4yYN{xF5vXp{e$jShZQAshk^#|h;bU5EvQEJC1Ho`Dh$$KwhVBekjVJ zC}H~zPP1~B3HkT?O66H|^+CC34d1 z*0H!0pt&r?NR;4|2`&E#zrDQo_}=Hw>)krSC!weHpakmXQ4zdjy&3urtpwlRqZI)( z`0m2P2gR(aQCdmx?6AwRUf00HC?}@U+`mo}SQuRIH#=?>8vSBLWqRdh` z7DEPfg55uSyS2l*?C>oh5NA^SG=q%>OfN;op%_!-JIU@}9KMxXG%NhccnKF6?rKGk z6qHouGPXpIWH~H=gQ-i&RcrJLuLIR?TX-pWNlHzTDU51?j!$q=>!72*=|wK!R3}9# z!j;Mn6Ffmqff$4Y)N!(s@C(lw`SV$HEZP0D&{*4>{}%OYqO64S|)x>!J%hMPDuTw$PRxiV>e>m0~hsB*NjTW-UfMlipk1%^2zA)BjKNuP4OA8TohNwxv-K;1M+YsYIG};FTfvA6=_>u^4gQ5V#$h|c& zxW@G?0)yT?`|N#@y=r0;8sPl3m^SAYI_gE_-sZ=-o4c~nafKhR#EHMXN|7;yIuHo^2gQ8!!=WoRPC{NPqSd>1sUy(?N{gd{`Tq1wB%Jez-En2J1`$B*xgn0KM7-mid8pih9iyv;QL4D%2rMTVfgE%FO7 zok8ME&nW%H@G39z?b1R(BHP8uuZU9z7bk>EnhN}ixD=8nhvK_g$p0vEQSuDE8)8&n zCS^K+Cp~A~-rJo$_LrTVFnQ}Q<%*@)i7^Ys(b-o zVtzz@u4W8S!SPPDZ^t5?Qi3L~1#GB!0v7o=pq_zl23RBTYDiwCazyHpQe4e4UNYsD z4J1>JiP9&~!j;&w9aCIR~~8l_nZ3nHG^8G&c-@-(KSSqE59 zi4TS;Rk4C&o#km2h5NpoC1ZHzB+mpQ*C@?-o`|jWmIPJOG6)pd%t8PgGBu=ym9qr? zU4SP0CdU_ZDV$gVP62tDR@tV6r!K2tG^SxYEq4I0Q@PX8{$1#4u{}jM7|r4!B2@)h zvl-Hmj1(_T^aH^9BNz-fDEYlkOIg|XonAv|TVy+1>m27(@Kwm>t^p9d)9af;Zie7S zbDa)nJlkPMpZH{&p>GX&u>GmrK_>Jcvpg-z4(q9ZOF{pJcl!94%xKj(E$P&c;Z=no z?aeIdpvd8Ta^*S+^tm#tO!WJJiYDCUOjH%Q;KOeZ%uzmIoyK01bU4h^zNF;7DL#QS zrgeUe4&IxUISx%qO=Nt!RaK^gS+zM|x5sznGrZg8rMQKgD%VWhVqWb3{h$B)>pQ3Z zZ$_ubxH&#}$Md3c741ne8Kk-M63L3^LtYM@&&c~xlqt{NQtZ#>NVG?hbPPhs1dzu^qLcWt0-bcA`_B7_yAZ3J2`Ul;6OxCId>Z<;iey*!&LIgAibJ#jIRoPBNsii2gPJkZ1klqN{q+KhYg)wRR#M~G0u0`QI`J92cjA`^m-+#afh9xKcgUp zy#vwmap>r4-sBbzh6`Usd=$5SP3Kti&{)6N7V!Q?-Bayi00RAMoAtQI{UittbG_hy z>;CD{C`@MoOXHu{(#lxAr5{e{S&2yva2JN+z=LaVU-^%Q;H-qT>+OZoS4MV%JSi7h z30*XFoIDR?xiCo4D$PR@Zlm~A;0Yf(f}2O|$xVmBRTUE4$a)tM%CuI%(cbeFO<2bY z+qJ3;FF}k`#PGFIEB`Y$jL30N>?TRvI=Gf>^bHx+#8j zQ~c_t_|;AEe~O!;>a=c&WhSMkDv}UF=KC73kj` z#>w+6xFave+5_OL@erZqIizg zz~0*c*qP>bTEXk!oLgbi+xca@c4VWR;BOqs_h3~KyP+JSvKBd0Q@SN39L5}42Sqh@ z9atN@SDR9i+>s>IZPwwFl67tpce$(Wv)`?6hPfB^TsJOt#`e=k@V&3T-(P*de|6vQ z{f+tke)awSclG_=U)7)af3WZO{;KKlzWRQD_5J>B`F^_@{lEHt|8{-9@4(l4|It@p z@2|ezoA>p0D~31wdUtzo_iV1Sh~tQPxxP9ge|1Fu6&;bMqLgUZt9c}U^&S2_`3{?t z+_>X#Z-!6nU3v}g-&LmJuU^Any@tPf4R79S_KlQ@6iyajCD7~5yV;FneolE05nKhZ-e>f-wuiPR%T`ha9n1i@`ete<16Zpr6 z=8-WiG4TLDyqga1X#VDr_54(+5NjH>(x8GCE>Zh0zybz!SKJMUS8*o6yoK&A?Ecw7 z?|e&VQ-lRS1XhQqN=4~S=A2fRqMPT%$<_{oAy_G@S(&TyO!X5bHL@4`fIf!kFRJvC zSiMSds~kK|EL+TTHp9&t(#*xk9}6J+=qQ^Hx(huOFR;6_FSk9(+JNc+m6G*Aki4>c ze$31O4+zbAqQZA@Hf`SZ3EF4ZPQ7hM+Quqri-CM6;XQ#59}tIm=^0TKp_-sc16BZh zbyWi9NUT9Lr&w15eB#mti6d^auKzO-9zMYOT;Op8&kSOhr#B}*Ah22=<$REd;kU2B zgUG3qML2YmW*HlS;R(bc^o}<@q!E>sQ^i3}7N8QGucs-2bDSUYIXL>1HfjD2fKBxp z2tzIOB%Aenk6z7^kD?;2qb&uc7XjF)Mc5y@cyg@whz;-~ZJchAWSu_kJ*pox4Mij2 zKXwehWivug-{-YO9+X*~3H#b&A zUXBv@AAG%2eX6#=+Fq3@(Lz?_Zth%Uqj|=XF^6oXaIi?W5MckPG^CLuGY`7@Fg!F6 zqO>xB8(%>P@gAk03?}_}50>-t;lm&A!DRGLiT_4OE(=Ac{0k0NqfDp@Bc<{Rph90r z%XD&lLTX?Gv1f2wzZ^{i;suZ>mmCl5Z)C&k)V+8c(Uc}~>T?S#**Bk|eKVpuaFDwg zt^NvjfL`!?-ZAfB#Egk4aUtJ-c8e7}Z?}R_)QG;r?V)x#I44k~ei|)J#ORUUp1{&;>QhWWQq7f_Bve9t2tBNsI@wJX$~ATxiS%vR#IV_SB1}h3|tm3X{!|)?prS#nhueHONkeUODb@nubGNQ6hK*wo($I5~j#2 zaC#f@|qt15byW zG6hI+MhLEQnKxAJ&5N0N95rw4@`TPrb{*q%C_JMEE<_Cr5W6?rMik-T4)F`eE`x9r|FN2=l)2deF6C!umF|LT+ zK=D){pXQZ7!luC*h%vuT(YA)wRSS@KV9mpHgzsn7!C_#>q^J~dW#+<$pqY?I583Ox zW7n&ypCI9YA{}(jU|^f1WaqDn;E6zz8dhJGQdFw?8oJ(8Q2Q0|z;gP^eFz8=7LO%` zqR6pc{F2f*KOCuU`4z1I@NjL3@I2v43BsuoQ&MKz77%4x2=NFsQV!wOI3CJP!G%hA zmdr9;O7B4~K2@XudEmQn9bBA{{{vZ;TRpOs;&WKSE3k^L$xo5-Y$ms_lDaG zfg`{k9ichS2F}AUXS&p>6W^uZVE9JBH+qGCd9wTB`VszqK{xB57$P+4pY6a{1%O~` zqfBNHNN3FtFj7$7$MJlPnYlCyLwoIB)DFN|Ii2rIJOg!%#+hK)fo#5I+8;V24K+x?G^;?nr`jFU8qZKqXkd)a6i1L5Hw)3KxRekty0rPO4 z@my>AmND;ZGZnx?Ow~k-RLl+l7FQjub3^di>OwvWwrMU!NjXp=87$gxxJbT9-tg;p zfxMn_pBN0?v9Ji!4y=s`xO$(6B_0;}HDVwvg&)~99?QaC6WL!YHlJj@3PL2;g zTpV=|JGHqeHZ;XaH04qx9E*MB_3>W4J9u++`QhyS+oOvQuiu@Vd^k9JdwFqo(y`{0 z;wHClVKAS?KGaE3h_q@X?iG>r{LQg8-eJsXF0lBuSK62?SBRz**osxSM=UQav!-2Q zhO}ZW6QNF4GX=H;;(`-TxozXxhGPg7Z;=?sNLO8=I3U2jitMdTb<<-~Md14D{ACC3QjJHlj1uxON@$w2M z>@0f4;o5^EkHdwu)U8!x6H(`dZ0QqL(M=09h_KyS=lN?owb%ni;5{nI*$5R;Mfp)qc@jw$c2ZpZu`FiOZn-$vDCUgay?AR5 zCo5*d_q+mqPI1MqU`V_RMtyWmp%>5!fsH=n3u><&V#n;~cn^^BTg|N{LSW8xNV~hc zj#0W>Cgb#4T+FhV2kC-M1^$!1#hX^&xYsGLryGiJc=Vhi9G1QED6#>0DN}Avm*9g) z|5+whj`fU9;i@!YbliC)hrv!ehC#I-OJGLIIdmL%y-h|hv4UlSm--w=I4r1+q_vJ2 zmPCUU9+zSsosSn&%H!^-CX%2)K>fi(Vl}sU&a?T?qTDtIw@u@2!?=Nh!gG3yWJCo{ zYcZo2Now=sJqpD6@gCf75_w_m6TELVG|*VR5^ib)i9x`Ayr+4bmLR+pKW%b$AkqT7 z>swBLw7J=F_hIU`OFyR*UmW|<<`OE@nL8;A(PyJ_?~}HQ5TXabI5+jNlY_^5YK~)h zrn<&Uwjq^+JAz_q4huoAsqx*s;DbS0o&K2(%HpFaBc3-Gf}%VZi&bqlt5hRtwXpVj z@&LuCyw#$WV{@sr2FHg)kd!Ls^v~>y;u(e2}op z{ZtWBrB@;`=)Djhvw5%LWp$YXPYI?@JPn9@BqMN54*BhG3z%lm=Cl8Jdkowj;jNkFZ$*ClcM^uy>aS zjz0v>tW+V$4pBVT!vm21jpd2j;LBn(0`~(0ql*_#;sSV0ngWZ}1*LPtL?V*ir*K|8 zUpV-b#BsUBZpMYHg!^eGW`f+Vt74ial3WHXDgy$C_qRh<>0D(}Bop-{g*d~Kv~&Ok z##JYf#0s@|Lu2kx7Ig(M^5CUZ%r{(J-~hW>27ypy$%Re z>6quUi73;=(TaE2kjpVs^p$kgW3lHrrtz*uS>go%+UsQ2=Zy zj-Q4$YI>92hQMX_|FvaD-f^Ivmc=+7R8k%F6{Zfy2zzvMgYBjoCgCgt!S=WJc6VKy z0>r-QJYeNYsiGA~qe!RbvkL1v0^r zG9voQaI-@$G1Q!hw|%W)Jm*s06y@!Crl}f8Q$&IyvZoyK3xGSz-hQ~Vogn>{?)g}A zWbP5eA=XF=rLKa6TUn7ye36m2N5j8l_d74YRXOv7c|7qAUg>mnTxzOxP5MT z4llqvOHX4`#s}PhuPFj|nk5WDony~{6wo!-)+vn@#$?vW|8>EQY)$M$4>YBj+F?iN z--VmuJj4{D$R>O!6dnK5>0elgwC}}$sry2q_E%S!A-^3Kt1M3It%8{P%&fyd9w%V= zWXPvIQC^GkR8$;DX5^%_3l904O;ksHD^3o(=SbLzWFv6~M`w6VOvwr5`TR3V7r9VI zbDxc0UnKjkh-)ZX5%^`4zz;EYGbV?t*A{tr=}Zbk)}uEM(f2e>%0d>SN@0o9ZO3{# zf$bJ;+%ztt1Kj9~qJ^q#nQ9CHwvo`O@mnY%PnQ7){kqJRQ_V`nDL`74<8+FJ(a6Hg zCA>m-QOW{PP$gnEvDhX+#KxWFZQ)Q=dfh$f>#VfOq5&GVsxW4&%3C#X_j)F?n>_)_ zw^Lv|VC!!CSSUn*F|}qx--c0|50yONlrZbVFR!>1I+ZiI6MQ2rCl3Arvw^JAYUVld z^ncm?+$W>jxX6Y;scB4a{vaEIrtG#9ha?x9{{2}x{PvgK&s%+yG^Z4aNUz1vgQfou zo{M22`l^zrzuJLF3Sib~IMo$~M0Z?O!p$rPO<~6sY1GNG4~v+n<3RfC>^_yk#H&LAf0f{@dzihOEL*C zon=u1r!ja;0+X*O0V_u4QUN~S>MHdFq_M<0K4q0An08Rk2308xpq4mz0eR5l{^9W@ zvfvsu3lbv`{!~c1XnH)?{RXHLByHBkjQvzK7@?Cx9vcON8X`DDFUZDTHMnE9L0JE` z1xq5=cJf5CS;F)Z2O<|x5b5?8#*)k)jlCLYa_JqMT8m7Isqh{d#ArpA5J6O*R63_x zsid@}JqLZIzc5j!r_Lej@B`cdLbSMtyt$G{>!-JFVC;7LiBE8kydh3T^@%=$sti2Xidk^T&7NyeOgsU%R-(thstM~C@Bg%*n zFSKIfSHz1|aN%yB4dSKNeKuUV*vag4WWoVSDvRZwvVBZd4Gq(+CE7O=`9{o_*!`kT z3p%2H!liN}VD}GB-{36(_XDF_LoxNuX^-81bK29oLd*j%-J*D~M8Y8y`hj^Bl3cBQ zHzcd$MxGw#;?|?+^i6a;&02JCrIBC6s*Yus*m?!XFUtGZfc->#s>XafT^{%mbo#@ZjWFJASI5lIRX} zOu`P8w$It|bL!Lg_CY6LQITRcR5HGtjsXZvAe8b&75CJ;r?XrdeV&316@ymvf?N~g_4j-*6+KX|l@Ds{b#Sr@0jV(G=vFfuvdOUNFp}<1$x75C`3^!j$0CPB z8KBh-Z~?--9n-F&-t16Zi>#PVbdbWIyQ~s?B0~Z~m<&Q6j8{Xpffyljfd*_M$}6q# z!eH9rEYSg5$ZIH8MuDI%x3(w6Zj(!g>KC!$ZpmdgOC`*x%*9%EkHRcNYm?HBiP-Nq zKMa;!EenDK^S8qCb?@G^+%|N6?MsKx>nzQd#40X&RoMW($NVi0%fTW%hq~vY#NEgf zaas&lRC(x$r*;rF0d-e!NnrcW!#<#hfGl`)gGZzT80)ve={=aUk3vjU_zi~BCmglW zWa43BcqNqmNu^oGFzah@1HeQ=HTaPJtH)kX>5B(TAV;4uO08|kdGt=Hm0FU97SxySr0tX9zwW{An?Oo!lLeWx4Eag>5o^|HfCK^Y^- zr?CX?PvRh-&Msh$5NC9*y?hAonEO8gv`+3y#J1(lX;F##gSU=I@)P< z&AEw_qE`=QQpekY;gsx*!+~llpe_C5a_&D5B7I=A3R{& z%&E1@**?}4p)XZ$==*4Quip33?jE~8DZtrhDkeM^d6mt#g4xJAfS!DiUw(#Sm*Pd; zV&e3T^+Tw5c_k_gCe|SA$3WP3nBs7q@Y&=toydB*Z`oP&1475QIZy#nu zD^)t5HYbRvsHW85YC7xb~+ueMCK&z+s>AqKm^$;_Zs|qL$S1jxn9G1?@rru#?x`#uW4OHIt z`<{_f{jsC|tCFNA1;wqjINWp0J$CzzQz^{Us*Gp92Ad=#gkd8WN-4mQ0c@TWvuvG+ z{HhwG>CuVHq_RBeu80PATNa`Emcr6B%jX76 z8V(`pFX*S3MIe>M*i1n@e{o|IT@xX-fghD9Z4jpY5M3U1bw~R#davpHU{R^D9I&im7| z0CPZ$zkS*odz}TWhsXAx>tnPbX-;YaOs)y52zpge z{maeW4|2f3+_Xjgrce^8m8R&{_tZEh+lq@Tj<|TsKX>kd{&uyzncc=?R;f0WR(?}< z^QX_^c5|B#V``=(Mn&BghoXKX1BzgLvzEE5#3k9H1QjT_si<6d(Ua?C#p=dpH=fCT z6J%BdNeP}hst&X3O_a!Vh*Fxc42W{{KsU15S^qQ>6l(w+w>vPZHo!+2U6V0ofT_!i zw~&et7FnhoFzZ!+FnLt5xSD2ceTDi^djUeI6zT6t*$;Qt>cMVFT3`d{nxAbd*VIZ# zj;t`0e8v=GWPu}(kUX}kUk@HU&L~WaciK=`ILaHx7^AaC1m~&dS&KcXRH@X}=5(*& z^9aLW5)Lh640Ojv1|ah0gWYJJt5i_O&Gm*_s$;6bpbk_P;sM8upBnN&F46*3EdMRQZ=>m z3CN9G)b051XSReeGR_b`ONOHV#ZhlFUlqhVD;&qx|wb3101?g5=h@4jkm8DnyKrMkcC{ zD}dW)Kx{qVH?DW<;;CIu=|zN7G7Lp)mZ|ndly~AyoW%&UD3Oko$M8JhpCZ#KBSN4e z36*@#{7?x4VyuU{j)s#YLKU$#x9rQyMAq8d7e6U6PNz_&G@G}Onyf5~^3x9M85T5k zo&U^>2S;ZK)du8pkR&>exyV5gZx6j0dC}Y1$r#(?RiOaEA zk#*lJEE}5#{j_!-*byU6d1b zqDP8LUSwYw7dK{>rXzL)hFXYG$cV4G_6A14)4{3Q7G*KHqcq41rgJxYKXMB}p|~u; zzJL2_U#y@sX|EIx&uclWz3OR2*>FTBeO(d(g>A&mUyHJY2*DK~SqkB2ShKiJi*RV|9#;@i7Z?AR4b^} zf~b6Wp`g!+0BFYrl`$^Osm5JxEaSrBL{j!EekJ>E?q!1x@F4c}RFv<>#l4vS4(Usl zVIKBs`6^T93Q`jo4;*5uw5EkC4y!DMoEGW9;JNJi!aheSw^I(?^W>p0W zpe#*3s`N3+Kg@%no@I48HHhto1yEBO<=duJa!9gC8ZirTWflIfRO*Ey_>N)~eXcvCC*?(+165j-qQ^N(8SG)Z(JIs8=Q zfzr!X9Bcx!(Pw`xFg5NvdHf`ZBc9YaDTV-Gc;g5&tp0B^mbqpF(~t@dL!3l0syW3^ z_;l(zrKs!Ui*d;5k(;EeNW?oCE>B$uq+^AxahWf0W-~D`t6hX=ae1Jg*vGFDTB*nx zN9Ly7toe|oSS%K^I5-~q>zRh)^66$bEt;BUEsVAqYT}j<4Dzm1MxCIHTm{P5F0BQQ z3fkJp)&FBw45De#SB7kXx!DFZDUSkR46bnIY~Bnqxk%tQ_yvzikd9Z{>5PD(ljw;G zuZ=m8rviTaZHi*EOsPqZ!Elp&QNg& z0|B&EZRl{b8pHU^o>rVLXX7pfXcqIjLiTI9{g9ZnsKP!M5=@xyjzgp)^ue^v0JzHm z#+;;7<5HVatH?XY#*_f;fpQQz=nZ+yG~}rAo$D1>>dLJo$ruJQfbxs6!+2w0@-k}W zT1#Krz^b_AJ!-h61$CVo%k^_{?^WDwVtsyU89FrvNi?9>8fpbQsLGJKdBPRB0~BYv zMn2IxC*h9{*a>`AQKnZZXlYd_s+`M8OswVnb$T`7K8bq1>zkMkF1t;%Ni{cXPOz$a zq2D~M(TLU+2G%SR*jC8(!p5iSLsK>l=cbzmD83r2@_a9@uSn%I<8w5b;-Ky{z1d(A zEq8O9X(SHntp+OGZhA2=rk%t^j?n&yeHP&d^;pGESmVjNW5Wg+XC16Rp!_mcMVJLU zvfs!fFT$f{irtKxJ}INo>ISN#Pf&(!Gme^SH-RNisrH+C?q~zO({&7xHO2?J^@ zSw8>k^i%YBSDk$X;~;A>EQEv?kFq$y15k?03U!DNq+1x?0T|FXM*a#mhBSduSDNRK z1H895*UG-UvAxaxi?q+B)G zS}@^+hH%hTsUyoq^XuAGK%3X8YnC`^L1vRR0H9pf>j0p#U~2$eY>!tc-4z_*A*zqp0WBNC32WW(T}nxbel&4^E;$`r>RbsuMYm6)zPzN`dU zpwc`kNu*NBd{xodDUM*Lx^bZAmt1k zQ&|13L3Pm)&!oM45_xG*C*SZ;@ANJ}YLj14Zn(PMjS8gMXl&3#P%Gr_4MVy>W4K zIi5`hIZv|{YpF+{WPMMHl7ta_y(Yj7>qP0QpdMDXBWG^}7)wezORpadZMaLh!m-JF zBuT`y5<@^^o31=Q|+fK8`6qRU*gi?)r6x9YAJaCGzJ>zxu7V6>SJ{UAvO0QV8tJq9cUtU3r#H zQs^9vsDbXKKd;YG;6_N`n$nyN=9LDtel4&(7)MlT1FRX?pqP{=5Yuz(_fgfqvk8bj zGqb@SO)l`)Fp&*hz!L8o6~(0-P_(XV*GtP7x(r*4ep}Nry~gA)9W)J9c$&H($#gcz z(xk5vQw>GM(+u+!#C#T~qMW2s)fmtbRH}3dR)KJrs|#qr-nzdp$<*(+kx>%*Jj~L; zLzVXDp^4R}fgk?#aGLQ7Kz{fS`OwMXuPcbSNAnpT(lRcnf>mVL@%?I@xnd2g_wN3RnIe?96is5`9`5t_;kG&3#-r7^kA^@| z-3XIBFcY7&0*XARy=_!+&Hfw^nt@(gDo(=&{`v#jNL{+uYGe^%xRm*;iFaLqD$Pk^ z8hK?O%7skx(uvy!9D4J)r~Se=>7hc&&GXk7MHBD6im5Mm<#@lWVcz!J}z17IoME9kej zP^fw=vZ>>xr!=LAxlsC7O=j8^SIF5|0ISu(Vnd%QHpq(PV~1iuhAD8pR3Ka$ z=Vz(77pPc-)Da8T25bb+=M6!i8+GKWtt;m6{+-}MB+(t#2W1TWf&TA@v_9osb9ct6 z&|r@nZ53PUtQ2hZC83sQZ6#8R!JByGw&Dl!@>;)E8051X-|Cq5*gx4m`zL$E{>dJ* zf3hd+pX{kRo3k>tv#+oVKAeReMT2NipcROiue-=Ao>8>QHK26@|GI^ZP<@52G_`Ar zg3%3^reLW1g!p-D#n4ao;nJtTMFuqHa1WQ*a%w#nGs$=<8|*rm^p^a+YNVpUZRXHZ z{NI{nxFEm)Hi~p{vR$R*w@V}qpxT#>xa29%xmw@=ZYX$d0`gHVVlHd@>3ger$G-0$ zdk>;j7o9eCSkYt$(|#i<5;nrqs2lP}9U0*_W#VIM@*{l-f zIUfS;+1R8GiGzwWC7aR&;r4g#eP@Wo9WL5ZBDHMy*dIlXefd>)y0t_BmHSCXal!K+ z+a#;2Bf)VJ1p>X1#Yd4}xcl0A^e!{!LGiFdp_spq!ZrArJS+_>Rk54mQ%Xhcs<8+q z*%yvg{Sum$lAz&aoG#H*iN!qWu*D#bLqpT{Fcu(cvz56y<^4MOpN|{4q+29u91y!4`XlF6@;L;Asl*r#=dUr zD-T)+O<|rNy6<~0Uv{VIA9*Ei_#FR!Bj$@$j@|dYgRGbhUuywLmkEVbwpi`+A-|E^ zrJ#p%n@=HV4915)KZ?1k9I87s1Q1?n>CnwQg$m#EW7t7m0n1S?sQ?W0EJ?Byg(&kG zSVzWq8b-NrA`JwVCqPW75u!GS)A5FF^~aIW|s;JA|tS@y3=%xxB%th zl$r!L`jnkX)#xEMJqfVMSkKh+$hy&LZq*i(A_jVg9$QqQWae)a==3+5I3s!k^ZkOY-sH!Z@uP%5cPSSW-%3^z> zs-vgtT+2%E;e4Ay9zj%QXcwe&Y^Xea%5xxcv}H7mg>2P>8&WB9U6Ptl(`|kG6^z@J z89b~~?Hu5t9>*(DeSq)A0nh-fPP|TtR-FdZYs3;etg8L)z=NI=pd>YASKTV;A|Fl* zD1N2aVh>r@`rA+{qb?ZPd=A&XQ>FwU=xv-jc#=(K66vc{Ob*YcW3HXdk})rN0x|8R z6LggK_}zq8$yjmx@Q4GsD8%Xj~-{$tjrY_>Ak0@T_gmi`Y?XOl58eH3smI3SU|0o z6Iyf#v?LEX)ndsw(9?q+Tr2JIn;Q04~^Lq&_wF=;)J3W|huHfOXvdvVFmq$d_$)RBz}faBg39H$9GT zQ*I-ByA1`14y?%Gv2dy=jzQ~hG)F95x2oc5J#KPYf)x)GP2`o|QJsy%m+gS=VuMfG z65-U*>+02dH+)?3>&>?Fv!SHnlyUru$pEL2&@_=7BBb>f zb3)@QHektOkNJs3X6k7b_I4nP-$&7=x*XDwJEw5JQ_7>W*C)A zN=yKLe&CyoJGZUUlEV-kbZqYXZ(`r^bS5T2Nw9%7#VyC_$%9R4UffQOl#6C5xxV}d zBs&~DuBZtWIvdf>SWQY?KeLTcI!Xvd$AjvtQ9Ya%J=RH`x8l}m~>VPSI&hGDS@9pkxArjG0;K(9M<@?O* z_^Ioi;Wp#_U+ud1bLYa=2bB@US416Ub*t>Rdz~>%gQwsRZBr2~+QNth=$1NJ-&KW#yMkHm ztgn{El1zaBPOjwR^hzV#<>d)QzJSJ7{ib`9Z~Z{aK(|w-`mirlt9IDUI0YATtZ`&M zfC}DF3YEn3;R2aF;+Avv`ZYRt9bH_UT^R4K zl%3Z$-3W+XfRZCs$z9$NynC)qj;#x&(LLwY zcxCR@sDr1x8b=k_H@qA&nQ_#4+-LoVeYT|)HN}t!c>iB}eWU!+SupV%5`E1&VFo)O zamFhDGvOJ6LEKjVp$6`uoDKBfeHwA#&;RgWd%DBF_PpN65xI`FWl>Z(O$SZ#IyXN8 ztCqJBl~+7(&7G^f>eDV)d2RG^p&Cm0hR&oI%`n`hDvKFB|6|zw?)fpqvdzec6e9I7 zVBdfzA;1X*d2|3}?*UJfVlol=(AFy$77!h$v?{oSVru+~rpS}vKVh~F>EQwjYsORB zIMSNkR^?PbL5nRmSLkxZQ#X(q?7g9r_Y_a`sh);H+8nxm8_BP}p7xTTON`Jns;Z{+ zsIE-uzPr3UcZa&I{iqQa90h8?fjxKAq6a#V1|}@**HVaDsP;hVsXp+(zW_zEu4pR; zr^pNrEGM5VZt`8}ST)e_7b8`yhD$#KmI;ddPhbGSUD~lDU5?F|{ySJP5VI=Q*I(_Z zdwV?8_8tNLUkGNmT;0;6u9)Tx7`S(^``wGTTY7Z?;YKQdRTi@;a4K)WHkL|CjPW`x z1=QdmlxymL8_mVtiuo7~E-wUTgrRQt=22I`ZYV~Zk|PXb=7R;)^#F*? zb9}M&r`Ag`6!Jk591f%Uf_4-Ab`=Nhx7<-F037#scTlge<7*a5a0WId@@}nJSOp_i z(K*!5X$9TGo)bNAqLQ*VT|(X7=w4~Ex@*&Q+<^rw+`1wzI=p+-l5Z%I};?C2;6w^G5_CD3xf*R#&B%CBv+XS4h>bwQ=P@R?x^&`itB7PPt*p| zTOL}t>SuXz)Vr)(BWf8^mkGbCU0Wz3fTF05w?fU>L;Ul+d->gm^X^6W^yu;kH4gnhzdO44Yw+8}(VyQP^)5er zcho%$etLCw_*eBq@BHj-@5uXy^98Ch%XjQ48Ll;#FC2`kjl-@-}t73Yq z?)fnud-vVtcV`#Je^WSedUkkpqVeIkiGK%baSCtHI{}itQY@&d4T3?SKISwo*{;o9 zy$>ry+}Ry5p;#>>%GJ&pWzB0*4ph-TrA=Fzdi<6SEKV>UD1%`>H>+HqQha$LK`^gO zCd4P6RGCiq$*Y-MnuTu-1d=#1<>o^?(h8dO-l4lVa|gtKuY;H7)NXb7OQR-MJ9al% ziC7LXbj~w8cT)c8N^8rJpz)R16mjvfNOv<}L+*hPV*!gi4na|6Pkeanl`)#}>@t(x zSv7`F7D^Kn?9DDudRQ&V_K)V_(QR#}A!QI}!#JssZ-R9D`rZi;RAA(%l+p^lTZ zHjzkCUV~%Mfr{ioywk~EKv_S-$~T@*b)j`E=s(>(KaM0ufbTGc%xxWn6%O_unIy_8 z#Dq+o2ts9M^K2|!57I#;5H4-Zug%yXdW60!Cc~9-3Dg6>E7R4qdAXA_3k!kO5L0H617+E8A>W=O^LP`8Y#$6$315N zq9{|0jDu~RO@}(Kh@GLMGX!!}vFKB)3f6mMywG#~EuK~#w@pwg5FR_qqFMa|b(4Tu z^z`s1yvR;C){*l1ZqB(v z2aJr#kN1ua|9JG{J)Oi3IHoJIm#;VA#nB&+&)#-V?11{pcF&KSK03cR{=R#8RMSlF zIp&{Z8~zdtLv)&3BOVDccZPI|yI&mN8c!Ce0t*H_`DhHdS}4Mhpe9$CH)6i96!R^y zScg(f%^d6o4HHVjt_LV0Z5%|BE%uWdyeem`6z=#)Jb5N@6l+IoszGsPl=?4jB00#^^fYuJ;A9 z_O-q|DGMphuqy2tShej(3QqK9a1Gs*iEf0tL94KmI!jni331j4b+cv2zMm#1P*K=3 zl(-RWn2)cYnAw2re*69T!H1LMw{M6op5+vAHtZ0)dy`5Lz_?V|v`D2yuXqIo{g?&B z=5nit+tu=hBK10cdwF#6_UMviJUfz&BBE$o{g)<##+EX7TufHg`p3VI0FK!XXxOgiXt@ z+V@X!PjZL#X47ebzM`(C?%?e0_eU3(A1=>6ygGi{z0lH<^ZVt|UoL@a7?*MzFgOrn zew`MjdMy|A7JgRH{}x0*u;bZOA7rJJ=UM0ImjZ7{uy8cx=w{j zHK#nK?8ZZ<;4e(0=6I!m$EVCVj-ts+(q0)L;j3-+869OQFjkRAvsSnDCrs=perfXH zZgik#1kdO6+Cxx}(}U%jT@)(ewTtHzJum~NLv!C{ zkwMf*v&|j{SAg3+hNn}M-$)hCS5!BpoS?JaG1bl{vle_AU*6F$hT>NW+XLRKFd_yX}h6oI`jBP>m1NG(slAt zb$?!~QwHMdn!$V*h5qT;!5ez9gL_4X%`+P5gii)T9$?Lz?w(df^YHcdSYp)>%=AzB^vo)O8FZ^u?Z=E6yilM3|&1N|i zpBDiYZlG}Ci8vGvnt&~ZH_?!`s^qyed@TCWxwE9wPM?lg4tZCo3`r#>kbD}uC{nBq zo9_H3Tdp&xv3!v75tU-}rbiYk123dBH(cYT0zqo6MDV;rX%~}bQ9Uj%S^xcaM{hs8 zJ^OIly*&7?&tB3N%EnXJ%+}gk_Q4#>w#I9ZC7uaSWZ`+JS$FIvg+`!ObfihQK@*m}oeX$$gM>%>+SzhT?n4J*Yz$mvaGY9+e+c<%{&m)n=%R18y2 zgx6Xw`frcE2c_^!HAr-4R~?pCsj@NtRuGC@Vb(p-d#Y@XCkk#V3x*A81a~Q?)&3}D^%q%K}l+unn2Vko-gwxq?RR*+DClprcm&e-al0pTt zLaGCWAQ6_;Rr1-N{gZo`4?@l`n>ZC zY{6$_|FOt}W6J^w=ckz{=X9o2z5%@($f8a8mz6w0DrvoN*HWZ%gf;??3PlI)%v-V< zth>;zdw7@}br9c+tVq!4WA2qLuYz6=#!WpGXNU{+ikWK1Rz_73MCTa6;ipEoY?QSJcv%hP-){g ztP}s3mc^%ez;UBbn>(4SWNO~?1>4)*f4sxG>b)w;2EcW);y_Wc1Yf6mStF#Vgf9Vrs^=l{oWRu z1$mMbB|1T>SL@>S!SjyqfKZE%2odA>HFBde9CU7oZ(G={y*tyyPZN@glG;Hr}{V%2mGoQJh4SG$! zvOo_bA8q|F#BB@sXW{@Tqb`1Dnw&d2n4=*TesqV0GaNyz#ki1Ux@B2We4I^p7_Hn1 zR?{vC-T>4~sXfr{qY`Q7tcy+G(%b!qU#5GXzy0NU@ADs~```X@z5jVay`* zmmcbmAJT_`S@1>FET}a+OU#41TceqS12q0c&FYpCAeN=@n z8k$T2b*q7nUB@0@RKzt4ZIp2vmSNT&7jkR;mGIFZ<|+k?TZk~ar)m`J*P)CWR?H10 zTTV&bp|FiBe)oO_? zy0qJr7x}ig@&$0X#HI-tAl}h_xawbEr?%}*wS_)BG;`qnU_ftx@K}tF5DaPm*>?jH z^o7~5a2^CR8)jV*b!v&yJRiJY^%df;icRjpWTkS-VG7 zW+Ai)vEUZ=qp{^I^m6tQu^cc)) zRI1wR5t!6m++a}keb)c+#~iYTm{hr#h-Q`mXNp;8jz_+doTwpihRWbJn&k-@Xi)~K zHznwTDMLJ zadrCo1+HiNyJ7C91?;7-s0*Gn)E8W(*CMZPm&rq+V_6+VTR0A|BY{5IoW5&Padg4) zU2y6X8zLo!T12a9-|Ot3-icGF*K{Z36i0TPn>;rny^?RFNBta1iiM;$NJa@9RkR@> zq_^V7W;wYtR^)X0LnJ)8wt0VF!$5(OZ&4c4d^1bud+_BbI1rwhaBFa(02?ptkF9#s zz{z>}y&ZAIjhA*XwqcZ1ddq-tX_C3^lcU791^m|LnJq82fsCG7pAx-#lvgOuDbv8N zks5)i>D~18gck}HpOopqlqTq&AAciRMA)V6S^$(o6ttyYXWm%MWUC`kM)fv)$I53%a9^8 zkq|>EKL34l4{qfB!NOZMbS-!--J&s%7UV1F+t$`@+R8!x&iu4XAuB#jTNEO)kuq*Z z1PnPbSe-sB5C%?9#R$XnA=ejV+X5s+EGbI%*Y4?wN>Xr^ zvp?~C2H7O`I&6P;?d8?t%ZFwY;1@lY2UVSYApPLVZo95N+(bXA+vm=XJC2!~ic+zm zN0)pxCDo;O*zh^K&uQdjERv6MHrWbS4Xq}T4`o_&0=!5S;i=?4rc+5{Bb6{)iNQzS zs94uyjrcSyrek8rwsi~{ZJq4cGNwrw##WntokDWBU+%GaM|9tAu!@+=F}@|BEKh&c z_$QM~V-tZ+zYZb$8shX@3vue)`+k~eR6364ti9z?_~S>9f?q*gYNb zBi21R?)FgAP>~BlHg~LS7{O!Kn3FB2Ac0Ms};%m3Ts_uc^kr zrW(JyRO94LwM}^2M8s0*JT>>Wp4+x>v9)u$FS<`vVTyyAZ35i-nh1WSMDS~Fu}44lE&cfO ztf=^cl<|G9L+i`^PVy^pp7G6i-Nr8X3}%>SJYQl2;yN>regh`_Q#zSV7*S*=MGpEb zl*BusH&9iOVqYtiB~rZOocxZ^t4Fzi&`07^B7};c!a1d7mLw!rJ}mP8_kaE`%vxQllczTci;>0&ray{E7`q7wre zh57)Ipc!c+;UO;aw8F$FQl-tt$=`QhFP`{@j~Xb`4IgbMV?KpSp>`TuUD$WHj}_PJTACb}659bcz+RJvIuols;J26^>iSO86;;(R-tlndi4@k{H|Lqo_0j~ohY?OvQ@x-?uT9wJ-|)c! z_`n(fx-lKkTT&=3{Cee-te;}gF6cG4kjj!2oA4>ecwv-4^qZ7r;bRoB(yu2~U#f^V zMW9UP2ZY9vLWuR?5Pu;lU$H~ERNw>|*NE=IVWBd2%yZ{e^aY#Fz4gSV2B4dTCP!WW zsu<1}`n;gXfpX-2~tmEol7Sw4%Zmb(Vrwm7YipM1~qvj9Z(xT+M{X>cL?~X zmgE+%-w^%5@zD>>BMJfS;$1p>M1ZO8>`52M{u6orq0dTu90sX5D0 zq<%{s)w@7n&dT&E%{OLd_q@H6B2$4BXr_kg&_@+#Ty`;m1As3Ur)*nE8|UV2vg}V6Gn@IY|FS&`17I!(69+BIRMgUv4j0U0?>+71i zO@X&ChQv3cd(pv4IQF6~j2@>H6G(UA1(W)2fZ()Mlxj*Z8%gBlcB)FQ{Ny;bAtR|I zR6;uRh$en^oww3gKl}Pj?QV^UWhfNK+p!Bb%cS$5ymtTDaeR=RWWp-6sh;?R4BLA< zyGnn*4}XObPJYG+>aCJ61a40h_5lWmOz<+t2S^qEdS8?u;kiR?n-gvofyrCork+Oi zyBjtxw=;x6y_mm3jvZX;dok!0$mpS`Gs-6ZmydSiUpiRe=IYV&W40c)WU5EIEIwqA zAM%T&)%4*rIW@rq&m);KS5A}}P)SFFf~t+B^wICtNEwwoQv-)sBaCD|`HhoAw+svc zj1OaAkcwTH1&Wf#kK_J+i>+eZ1z=Vczt5<}ztM{BPR~fmhB0-(F3yZjZWmT@w9^QrT zeK$tXo?_h&o=wL*pG`!WCMGv|DHAMRqC<3L$B%ZCZXntZ-R-~e?VoqIUu^Gu_}9ya z|NS3-__p)+|5ElU+}mZlxCqalMDff$xN`AcdvxP*vq`v-bksUFQV(lRYQzA?gVl9xY%&yUZ=+6jv!vcNn_9YN#CtIB~JQMyCb^Z zkKp2tE|J`?^ME#?!{YG_{^z5;^${0Uvitekx@|v`bP(y`aq2Wnd&rq2({0C z7UdctFR9HiX&n5`c#cy)IS|&9JiAoElwtcB1Zq2QDpegym2c2JQR5Uxp+_o}u^EOe z(^Em4v$SqxY=wpXn#{AdP%}O>&i-MiUQ%o@FwWf*r9{H<{rrp0F4o{#tGbOpC1RSt z?5OslHt$_oKCkz;2@LWZ8|9I*gsqxr>lonv^!~C{L}=JAYW=9jAqm6ivp>DR zbTQLcR#j^BzIz8q=wHn+cP!;htX2c!a!hHHbl{?60& zAodH4d0rIR@eos|Ze~OA1`Sg!9&O?p+n`EKt@9!J{3q#@ytP!*pWa`Bo3_gM@cvSl zD8>DUP3`m9u&=VLV~!+gWdq3Y49t_wpbfJsYud%@1NQ96-ivmT`&Ch7awiql2;=tQ zo;@r_2@LQbl63Ifk9YQV9&K%I+uf`AWPhE~vtNtGek~dc#D}WJGN)`Td&s^Pj$OTQ z>=Q@%Yh&wMJ(LaI7bj0>;`_gm^?I?56SVTr`hNdQ)Qr8}U!`j7*-b7=IZmhFi_)Y% zIk32P3qN$jhUeA~U0-O0-!4+)6Hl!6`yO*ZV5cZ}m0FzviX$g;p2|TY0_-jH!XOdA zH*Oj(cn6gI!o(YU*PN2=>paqc4F{*&sL?%V@@g4;~VemB@iwuITuXvvR zOyweggS$eVrPAEJ@3HQ5O8m4<0>&Sd+}ZI*16wR2EZW9US| zIGC*jeTwQt<9qmEWrA8!3ecG_nO2Z~?mv0zI2YX})I=o)x7piVN!6AZ03So}?D~Ok z|J>dF+kb6;yYu1Y!@nD?8>ez69*}$c&mABs#RfcJaNlLc%Swlz-^iCW2gPTOs`z`- zKg1(ex>`L!$zZP0=FFL#=M|KnLJgl36AoHM%Fs%$i7LSmYNt#f^$jOqWb$@1mRd|a zrB(f?q%+zP#4QIOgOTa!r`+61@y}#378A~F6|t}o1AAJ4SUe-@YTTeVxDx-QvrEV!ftC~#gMa89 ze0Ox(RT`j^?&+(;ZXfj@RCi#dxsPnoW;EpW2)}f_EbYg-FpCAxLo5uh=A&ECYaiA0 zv3{l8zaz^1DZ>oBnxS4q5Fum!60}-F`%Y*Tmq?1eN&W((%EGKH#O(p_hW?oV_h7TM444 zO3PNoG)+K07F7C{>R(lmkrCVtfi+C?>*6DDxduGfc4akK;m6t?5Sh~$`v{f3XO;az zDt__^e!zs)P~Uk3`5)G1DQ_s~ZX57z+j5L{PGz`VhbLS&u;{q91)la(WvktUp0(>J z(wqv9gW%ZE?iD>Z)IiL0K8dE|UZ8SNwhd3i>+1Eskv?$)1~~(8bTK>)&NosQY$iJ# zNI!yOwvQpD4`{$R1-4tiD&deq6tf+bAH@*zGt&OmXwdU#ZjJ=3NM4lZAh0RVnMO0+ zfp*QQBYM`|Vu==J>8J(}gd)j!K|%)Z>dz-rKhqyK#gBxv6op4xPX@Gt;)I=;Ch{ zvP({G2<<^)LDXVetlF~=(86pL3lR0iUZbOQ41Nb%V$`RJ@=@MuNIo~?-P zgxn5`+r zAZsER0i)7ZiR)E&D;{~iCRhl7avB!-aFQlvu_8Phy#)vbI|VR|?Q&SelA0|7X(ejE z3?v1DO8HZM6xFIbw9;){295$jNgG2sPDiUEcATwTo7O97mOvpokmgu9d_}lkZ1ln@ z7zm(@Cm&a28Fn`c4FEu(;~!Uhp!fG~&tkdYXdsNFh!*=5LE0$KV1Pi7{stC0 zx$2Q^lwvCoR63baQN9(QW~=g@8zt5V1w$|hmHt0_@4DPJlB|oq3ZmDJXxkyly4sdw zor$0&xmz=`r7g+rGka#jgoq-AF$iz~P%(6G`qM2- zWK~vHR#sMCzEpQgORBmxToe_qL2S6llts8c%h+#!R&!PdxhUtkUKeSjOCtr8%@+Jg zKn8hkxd$|r5)*jUd3&;3wS`+^ROQN~f1?yfAo8xrHv)w)MeUlx1T#A(c{a)kxL#LA z*&Atu3>{;>lkIFY>278otG$}uILt+Hi&c-Ued^}4ihl!~9&37JO%9h-V#-qN7EHj& zJcnYqUHkJ?Nfa08Lswr>pWbmsN7EmR+DN=smQpU9D@a()jCq`2{@oQBnV(~qIaAf0 zhEM8}-^c~XM5kOzch8NWkLJ;w()dOAW1Jo7If+Dpn?$U!{Se5sOUl%2`6lyU1)mBt ziBz8sa^z@0dfF}NSjRTVGUaVU1sAj`-l#BeLt2g-@@6B^l$MEg;P*YQ3~T9+cOeyr z$h5qj+cw>=s3IYgebk}RUNwrblvp@@17)h_`H6zNI5fWi-pa{D8tri|24&mYOrQx% zGBbmlPRT6SIOIGr z6Woo2NP+5mc_-*As-?IHi{d`Z+oN_&_=~buIHxj@sF2zitM$3U%GxC(ak{z)|73Iw zcel3v8=x*I{D>`Oo+8QBv?3mg6)y0czD#$hx>DqCF}OLwRhf5fyQ}s)xmwKyx_7Is zzOt08y&G{GCd0+=)Mf8bOJ2<=o$crBTB9uC$E@^A2n%l%wMnY$JuEjc+8h!k6CLI5 z>Z{uKL=$E8J{Bmr`zmHdYdX&1@4HJV%cV8b0z{EqwRAxFT|TF7%ukh1vhX;hjK$zK zOydHZcg00;nD>8FlANYjJr}#OTvm%<7<$~amy!){%M4s zbXd_o+eV-mPY&8&bB{9}ixAaj-LC7;G~GoD*#wI)aLNNIh=)urp1P51%z#BN{Y7Tg zM!?)zEw&rUSELu_^PCTSJ;UV(=CK@_I4$H>siT6gP?&2W0=jXgm^@f)T7%=DESyVh zF-ez4ua4+gRECmuf3b$@C^L{iwgq_h0`%~f7{^&P7)|MZR~vs9S7M@C3q z#seSr@uGr|UaP{Dn68WrIjvV^R`&0F6*6|W>!SdQ47$>B;~HtP_HNgC)GYd@ne(3U zP|>kJvH3Yt`xaT3-LHLWYCn9ww8!-bTI*Y+JAa-nv35;=l$8&wYpNLrzoMJ`L7c>u zC3_{?;QBIE@hsY7hKT81e%xROoYmQk1^x7xGV-irVP_2*zQFa!q2ay7{Ei0|L(V8! zn_2F4-L1j=Zs&u8G#Fiepi*fbl=D{Z%+fac8bY5IpA26mXV$DWSyE;1R2ia5eOHdk z8dbyKLD_)h{6UufUDg3()r<_T!bdi+b1qgN0r<4mos!;v|LcDW8JWdS9@L@FoeBL$ zRs3ca({M1zrm4i9)KJW0#&xy_Gcn@;e8K2UT2P;1J_54m;`bWQhJ-9#sYJ1)2Z>{= z)UC>6?kVCMN$xxadLJ&(3#otxq8DZGJ?NcP$sSy9i0{E;bCA@iT@aj-_^{6cl?UlD z3BFJLy<@oEP^ur6q5eFBCmk+W$2_10|NUz29n-Zbvw0u(9OxY4-`itv$M8+6yyXWm zA&o3)k2;@!vKNhskQYa39yKlh(N;SEcbH8J{2OR-_szFsIL278A5>CRCij!h_ULTp z&Xe8!klNdD(dpWP2hku_5kW%2-sXK$txLV%Ia~Tn9d9V=c zMmkJX@!Ho8CKKr(pG~yWN6yHH z!$EfXz8E2cTnw^2DmW?kHyauGorXjn@l7C8jemli>(&T` zHbkq=mctBgBRj%52bkd{lh&1AH%#r=F*esRPOdu&AN1-M5xfEVx5MyZS&H$bEEYI? z&^G4J&}k%0RVM)GnZ@#<+mR7=(OdZZX7J)g@6+|q=a;Adr+0mN{_)Gv`SHn%7r~}W zE?D?XtYu$eZhwUtr5j0~&kY2^E<6?-&ft8XGw{Ld4-WP?RXz^$GwifS_%f;0<|sAI zOkmB?+3Cs0>n}%_C&woruTOhtR}HM;Q)w!dXJOOHeZCCe{%qi;mbapCl5{hdIMqOs zu-Qyi!9AL4*v2gQvB=SXZcm?H3hvl)oCYG+9(5z zq*UnmO|y9MGo+1lITpsNdbkq(?ZWXI*CA?mw08K!$zksxBdtt%y(bKdj!*n1%<;{&?7V*&}nO%sa z=dCH(fQx=k72I65%(0mkt8b&X=+ek~^@m$OO?~t=SD1p8umI%W(nSv0&?Kr_f(KBb|};g{50c) zMfJI#v!Yx^AS!C!Eve8Vu&hSit+x)Gf|_P!QThs9z>13t=ofW$b?%|72^yN)b&Aq+ zdhud({RlTR_OxK1U23uiQIbvUoOyNrTy<#!X9amGdKbz?AssQ~i;x-zK0!=~`TE9H zon@meJqy#(G#s@*a|wJqNciipxr)`+EEm*N^(;=m$_sv(+%z>fj~BpzQdCu6aoOQ^ zXmmN3-PO`!DBB2JWO@0K8hTafXlP}I1_bmrrEXvqiMAF_VT0Of7OD~AdF-lboCp^s)%gm5iE!cRzcLDwE;xxDbF)XuSD4@rk&$T@F zoUeH4xpXomcott;C2j@lc@LH7#D+$@a|+;i1Z!BWNv{Uk#H&T?JI6MdFj_bY9CvZu zX$j=+ykf6)-l+3Sy%v4jEOg1$mRZp=xVQ?_=qCGilHSF6mX7^>uUd8;@F1AeMb8Fb zP|&0S{XLqJ7hPx?khpiiF;Nts(zuIkmKz=p@?Ogz#(oA>_86+ul9|0Zg;{G9nVPb! zbv}V{%DUI@?*805pfyAhYO8_P$p@aamJ*R=A>fv(a)%>c2j#$#B z6an_}CM=dxsee3vcZBaq=72L>=}R3SDdG8kX~O^U;u0csaUCO!gPr3vO^K z*5Z;F>UE!p!gu9%pv5C@ZxK4tPqQ@=vqh6amhXL-i`#5k2o*NzP2%~DqG}S<<~340 z?R^OHEa7~LiO9!sIWND+T|vY`gS~X8qg$mBsG!f^o)gR_xo?v!i3g?|B`izKwa8>6 zI7kXQ?NZ%oO(skz6NE@;S@DVk7geXStUH8)x_;7sL2l>shj!zr%w7k_(NL zS=rg04=p^IDQC&eZb-rbzq#SK$+R!jFQ+O+vNcg$=yQ6Ek_hdcu)81UpH=x`YP3a8 z=t3!_jVIPVuIN0g3VklZXcG~8b;?&{RGp;-c)GjX>^g4U*d*=daWwE zOd^`!=W$tL=SU~_l2qZ_;6DR-NB`kJxjXeA{u7srs`w9_z%jyAw6(@QUj_8ls_02d zSH4+Us3=H)&Dp^Nuj;*8N?(u2TFH{&H zR*|hy@z&Omt&=BiX_m{8okgmM)*vE{HAL%Vh%s?3Q+5}re0dP(?1On_Eq84EnBB3{ zLKt`U`z)9J!h31dGvf!XW0Ouc^;iZ;{G>ztlIYlQqnU*$^}>Bc6x0xsuK!e&@bJU> zFF;=!%l7AH`aTClpfVPtJoNAFzB~R9ZSWxNyf!PxSr`v0>}-}P&ySQmStRtG7vGcVO})`oM2z3J*@|jggmPc zvO5+nhnqM%EzV{|m%O6 zW07!ug*7u~p)kz6S>(kTMa}-0`jQx97HL}6eHvjI*H;TW`J;(4;-_w_zI#L7GDGG|E|WsGJ8<~rYklbLZ0{G zgOFy__cS`c!b{;j%I>n!(}jv*$s0q5ME55Nk#F$;&}VR6pmpiah{)lmomxm_t1Gcb z^I`jX%RQ!)J)+8l{4wfU9*&?mvGhC6?!qLF@Y)NlB{^k@6Oo6lt2*}T)8sQ8kbU4c z0{qPI-qL%ldeB&WrWil({z`_HT~JurGg}CKrG-o}9l96j^%BhS;zjT_==butyd8@& z9`u9%3i|Kkq!c;+_#vFg|9=USgnur+(hnjZ3H<3gpQd1u;6HxhedT-wYW@VdPu0R zk?U%HnWs^myS_56tGQ)Hgy)Rc_fqam@^}j0>^0?YolT9w7SC=sl$v$6-^$}yoxi@o ztgG3jZ?8IcV_8{O)0>_&&$c%eldVDFxfED-&MW(ErLDble5ZTgTED89<{C@CfF-=L zFBGkD9(cx&c=&D?a7OmnU&YMbgV!dyc{~~k05KiLqZ&K2q|fO5etb4W;9na9^ucX* zkA4Jno4TMHQ-+UW$14Qf5?}cq6VmbfM?S>yrO)eN*AZZp+=!rmo*s*Fm`43zBj`gI zESe?)|CQxI|Kv`jWk2A16TiP~Daf9`hSw%|fEzL8LnrH{&|6V3ZJWFfW+k{ZC<#j$ zTnLmE98Gg@MkKQhM(I%dM;Q~7NivfjLv!JByJ1DHD2x_CL@o+DjFC_4p5Wf40GTo&-_q728}!HIme#J$t2^We>^ z?Hz~&r%{+2I7a>5?cLqY?fuQ&*Vj9HZ@0JKZf|dHzka*D%_6K8_HB}jqL>%jUC3WV zL$Vv1M|D&LH_XEdOdnT*`xx-)r|AajXz?usKSj`oZ#+8~$LX{b#dBW6`#3Mk6RG0g z=ibJE_4{LsBDfxcJWNMAz93zNWd`mNsHs7S7(4VJqv}A5=||l70R-m%WNEv**3nuZ z6aNI@B)s)ducAuHv9u;rl(SbGWW_!{BxZ(S^bpKBeECt_fBAEkf9(gX2K8LAJTvS} zpOnzmAPH|ovK5?`L6nICU}?hP5E9yMtKM*Q7Ef|f>Sdq|8~Ifd6$);0x%tRQxD>$S z#D!`1A;H?H53#rQW+vNx;-b-CXgay%YM^UF#F(5GNAYxhx;_fB;jo~@JF0zE#8TcE z%OI*1S%k?Ol0)}3% zs(IyCHShqtm?p`Gw(Yw0S&(r%SFW+qbqJ{~gPgpXiJiJbzT!a!JLsnMkcNRIKkL}a zy*S5hUO}T|i0v3AQoxX@;463*mt^-Rd7kCRA{>+u1cA1E zw-74Hysq|!Qo&=+*oFf5f=N~TAshN51`v7`1%zXyvi2IDZZg5j2|(4Rs-$W0GvjGd zV(J+s;3`@41ht81i2ceMTG^=O7m?4sy1iLh7pK7;eOH&@dwD1OFB+kePMSbUd%PyZ zW8pCd49KV)xRknEWPz-G)`OUvxRi0ezrA393;-nI2}+0Eluvok%{t3}OhrDkuc$ht ziT!QwIq|J*-E>vVVV{4#iJA39@4j>!MUPJ1Ud$WaL_&RtZXQ$!(PB8Rk1WUar%90| zcix=)CVJ{&q#9WwXIlXRZoeMXrEzKtWUxxc2Y+Kbz4 znne66REBbpA&Fe6St}9_J6r)Z(|3J~ew0ga<(dR%scrHr`(xWLHo@_|$v8$*E~jip z+{8w`58U$KKmu@c!7zNIz$Zi=8SW!`;vue9I-op2@F=l|EfKBJu5_NU6!v=fay}Jx zOTcH&Xq1bQG=bZ5zW#~}^~g?0W5%3AT;`0;KY&!mcRdLc%UCufx6x3R`Edo4z-BL$ zs|Uu@^=tzCYMcK|V*?NEY2yOY3H~t^<%UL&wy>MP4n<)(^i@=$T&T;V;IaXLt*kv^DI7l7rmO79e=H)RpM*;ZOwA_} zt10?&-&B(R$^U)RD#cEG3aVdUOa}bzo$zS1-?py$UPA{V*Si63mLL_@6#)FbCOA_87y1 zQ^fzo@J{gI-G+9cN}A%tZ*pj5?Nwf+w=pUZCspu6y9df`EbfRC1+l~qZgE5IK{*BA zz9hK_#_{O3idx^y$7}U$(_Dyefg+hJy0Fhf)Cx(2sH-0bUOvI zGouKkrD}WsPyp=om{!GUS%}+5l5S*fNvHaB5@Cg0Bp@h;do!IBA}4$MBrW4|*2&{t z;7~@!Ph7)ym(zBj2Jl^ADd%z}D>he>u?LqwZf08@wQTnNs9%ou!*}BcjL`iYrV(UA zEcI%s_fj<_UpWGD3lvbJBmoq$j3nUztCSd%q;5ytMXd*V`dZKKJF}`xm-ThiE;Nad zrDBZKL*Gt4Am6JukIpuLrwl_s+@n`R&lwN3)|D=gFiyA=73OfHaG6Gz1=_14A7W`}=?!d=LN<0ANoJR=J#d;`CW9aLI6HRlm74$v4>tldhRo2yq6*<>y zY2RV<32(w4S&r|VEDuZm}hxcKeoTrqd1dM9;^w;w=@3qc7lIWCN(MY>QlE-_^ zP9OBS)JmaqRE!K!8G-8b8kU3pI^Jb9`}gB!t|$4SJ49e$UC zEwyi|QoByCGf{1jR`EC2Eo8m!=EYN_*Xa#&Y4y2IX zU44+3P%lX00vSSYAd)jAnsfHmje##9`qbQa5FwDGmYv&|ViE1e3LD*cm8XtkqxW2_ z_^ctU|DuR*AamMYW#PHpjnp3MJxTsKtf7azw5(KRJZyk6xP)?-^iMxtom^h`9d3Si z@0};R8*G3nVryKAVgk9HtL)!_zX{uM&N7h%Z_fs>LsWM^WK7wEi2~~((%V40))s8 zADgi;tfZ^CrTaL$GcGPbZnCl=zq?yk%fZwAYwHFhJ<85;T}LjTCzZ8@`(*)L(MC5k z&@|_je_*6N7}>Dv;FvM|W7Dl33cX5poyww~HVO4ZC)Nk-d9Yu>f9-S!B_PA%0{*={ zWq&J=$Tc4nDF_dKI-VY|4{(82yDhDvMQW07RaO$X@g%m7*FW~)*MOwvNxFZF((UP- zwGJ~!H8XjfHjX0iL0*xIzZ~6+&d2_W^p!GwcPgUN4(dr|SSsVS4==x4casMC`aR{% z1;}&Aoa@H=2H{*bJrKQ`FjH!HyvPRBK;GxR3$()psG zEDhNJtO5D>x|z9qAx)}WB6D%e9ZtfwVD)9jd+*cr`G?;1>5+?p?m<6K5b~Wh_{AxV z2*#T)$2J?Etmse@q6$kuQH zcQu|Ll*^cD4Y_c@4|dWfdtUQvRFaBB2)3LbToZzVz~qH zF%S^T@nGX6hhgtw)F_-;aPf!cZh>~UzHKs6NssteR)*Qx*wF(SIpvDyipmWYH-Q!x zckXUjxh2)zxXQG`lYgK@2u#_KxitbY@=d&-Gz!vbk}#Y%Lmx0qiioy?UQ%Qm_If4k zlUk%fDIn}*Q%DJsEfxNnzMBPu+bkoHCQx$(h_it&DEJu@Ach9iIHs=+W$8;X4zZ3a z3KB?+cY1Pd1UC!EtO7BcWt)vc6sU_dQD)VM;#^1yPDz3k1Vdw?DT*!12%Rf} z#gHBP5H2%gPktMI1!F-^?*;q4U;=tlgOM(Axr{Pe3tB3&)AXMpxe9|}&9x59PPbBq zHg9DZtb@ar8KmWMU{kJ8tPyIg4qi;5i*c~ZMHf5O;DP{SxQw2A<3~S|0DRRWV*>$3 zRe;0EG)d4H52?Y8^L=cDrh_o5i%+!_%laDJa~f$Bw~HHv^8Wg$a1_a*t4J0DE?ZfW z8eq$s+L|=%+ADujTMJ5oaf*wIiuzV3O~m*`XnA5xgthtYPnsz6W1B2XncE;`eoK@l z+Wg7d%hIOFSRI(|RXbq1rHWUL{*lW;#=Tkysj6ijxj|KJ`;`WoUUz#eD-Bv2Te39K z)$IvI3g)+IX(Gsv4Ye#mMkALwty`LC>Q-4W4a)=3z3x^)nD}%JEnb=k@~efVrJIRp zZ2Qtgj{k+WG&w-Q+*UA6^!OFh((|8-(DGAWQ%qYDwjEJ4fpMX$H(XA*}bwLBD>>;fum=0L%T_8m~ypu znyyrV`pSR5eKxanG=WSKQM2KHa}j7D*X!{EN-rc%Wl^V*aIi*{ORldlTd^kWt4Dkk+8sj09r+KI@7{Mw`sX!ySXD2ENn-DRsr1w$D(PO}`q{P>t_⪚I- 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

O057^t0NS_;+)rdu5r&H`CJV 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�dK+}s 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�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

=Q4~>=QyWwf(?L0xIxQ)V@P{S~= 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

W2gvY@jbnK0nfmK9{3{Ln%pFG=om$Jn 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%0Dy?qx>5tAHDA0XWPJ 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

bGZ5I|=PxJ1S)#4RQXXc1>y}xan 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 QE&BFIP5{bZJZ;PW0}Zs~8vp __awaiter(void 0, void 0, void 0, function* () { + const { stdout: version } = yield exec.getExecOutput('powershell -command "(Get-CimInstance -ClassName Win32_OperatingSystem).Version"', undefined, { + silent: true + }); + const { stdout: name } = yield exec.getExecOutput('powershell -command "(Get-CimInstance -ClassName Win32_OperatingSystem).Caption"', undefined, { + silent: true + }); + return { + name: name.trim(), + version: version.trim() + }; +}); +const getMacOsInfo = () => __awaiter(void 0, void 0, void 0, function* () { + var _a, _b, _c, _d; + const { stdout } = yield exec.getExecOutput('sw_vers', undefined, { + silent: true + }); + const version = (_b = (_a = stdout.match(/ProductVersion:\s*(.+)/)) === null || _a === void 0 ? void 0 : _a[1]) !== null && _b !== void 0 ? _b : ''; + const name = (_d = (_c = stdout.match(/ProductName:\s*(.+)/)) === null || _c === void 0 ? void 0 : _c[1]) !== null && _d !== void 0 ? _d : ''; + return { + name, + version + }; +}); +const getLinuxInfo = () => __awaiter(void 0, void 0, void 0, function* () { + const { stdout } = yield exec.getExecOutput('lsb_release', ['-i', '-r', '-s'], { + silent: true + }); + const [name, version] = stdout.trim().split('\n'); + return { + name, + version + }; +}); +exports.platform = os_1.default.platform(); +exports.arch = os_1.default.arch(); +exports.isWindows = exports.platform === 'win32'; +exports.isMacOS = exports.platform === 'darwin'; +exports.isLinux = exports.platform === 'linux'; +function getDetails() { + return __awaiter(this, void 0, void 0, function* () { + return Object.assign(Object.assign({}, (yield (exports.isWindows + ? getWindowsInfo() + : exports.isMacOS + ? getMacOsInfo() + : getLinuxInfo()))), { platform: exports.platform, + arch: exports.arch, + isWindows: exports.isWindows, + isMacOS: exports.isMacOS, + isLinux: exports.isLinux }); + }); +} +exports.getDetails = getDetails; +//# sourceMappingURL=platform.js.map + +/***/ }), + /***/ 71847: /***/ (function(__unused_webpack_module, exports, __nccwpck_require__) { @@ -1782,6 +1903,741 @@ exports.toCommandProperties = toCommandProperties; /***/ }), +/***/ 95236: +/***/ (function(__unused_webpack_module, exports, __nccwpck_require__) { + +"use strict"; + +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +}; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.getExecOutput = exports.exec = void 0; +const string_decoder_1 = __nccwpck_require__(13193); +const tr = __importStar(__nccwpck_require__(6665)); +/** + * Exec a command. + * Output will be streamed to the live console. + * Returns promise with return code + * + * @param commandLine command to execute (can include additional args). Must be correctly escaped. + * @param args optional arguments for tool. Escaping is handled by the lib. + * @param options optional exec options. See ExecOptions + * @returns Promise exit code + */ +function exec(commandLine, args, options) { + return __awaiter(this, void 0, void 0, function* () { + const commandArgs = tr.argStringToArray(commandLine); + if (commandArgs.length === 0) { + throw new Error(`Parameter 'commandLine' cannot be null or empty.`); + } + // Path to tool to execute should be first arg + const toolPath = commandArgs[0]; + args = commandArgs.slice(1).concat(args || []); + const runner = new tr.ToolRunner(toolPath, args, options); + return runner.exec(); + }); +} +exports.exec = exec; +/** + * Exec a command and get the output. + * Output will be streamed to the live console. + * Returns promise with the exit code and collected stdout and stderr + * + * @param commandLine command to execute (can include additional args). Must be correctly escaped. + * @param args optional arguments for tool. Escaping is handled by the lib. + * @param options optional exec options. See ExecOptions + * @returns Promise exit code, stdout, and stderr + */ +function getExecOutput(commandLine, args, options) { + var _a, _b; + return __awaiter(this, void 0, void 0, function* () { + let stdout = ''; + let stderr = ''; + //Using string decoder covers the case where a mult-byte character is split + const stdoutDecoder = new string_decoder_1.StringDecoder('utf8'); + const stderrDecoder = new string_decoder_1.StringDecoder('utf8'); + const originalStdoutListener = (_a = options === null || options === void 0 ? void 0 : options.listeners) === null || _a === void 0 ? void 0 : _a.stdout; + const originalStdErrListener = (_b = options === null || options === void 0 ? void 0 : options.listeners) === null || _b === void 0 ? void 0 : _b.stderr; + const stdErrListener = (data) => { + stderr += stderrDecoder.write(data); + if (originalStdErrListener) { + originalStdErrListener(data); + } + }; + const stdOutListener = (data) => { + stdout += stdoutDecoder.write(data); + if (originalStdoutListener) { + originalStdoutListener(data); + } + }; + const listeners = Object.assign(Object.assign({}, options === null || options === void 0 ? void 0 : options.listeners), { stdout: stdOutListener, stderr: stdErrListener }); + const exitCode = yield exec(commandLine, args, Object.assign(Object.assign({}, options), { listeners })); + //flush any remaining characters + stdout += stdoutDecoder.end(); + stderr += stderrDecoder.end(); + return { + exitCode, + stdout, + stderr + }; + }); +} +exports.getExecOutput = getExecOutput; +//# sourceMappingURL=exec.js.map + +/***/ }), + +/***/ 6665: +/***/ (function(__unused_webpack_module, exports, __nccwpck_require__) { + +"use strict"; + +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +}; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.argStringToArray = exports.ToolRunner = void 0; +const os = __importStar(__nccwpck_require__(70857)); +const events = __importStar(__nccwpck_require__(24434)); +const child = __importStar(__nccwpck_require__(35317)); +const path = __importStar(__nccwpck_require__(16928)); +const io = __importStar(__nccwpck_require__(94994)); +const ioUtil = __importStar(__nccwpck_require__(75207)); +const timers_1 = __nccwpck_require__(53557); +/* eslint-disable @typescript-eslint/unbound-method */ +const IS_WINDOWS = process.platform === 'win32'; +/* + * Class for running command line tools. Handles quoting and arg parsing in a platform agnostic way. + */ +class ToolRunner extends events.EventEmitter { + constructor(toolPath, args, options) { + super(); + if (!toolPath) { + throw new Error("Parameter 'toolPath' cannot be null or empty."); + } + this.toolPath = toolPath; + this.args = args || []; + this.options = options || {}; + } + _debug(message) { + if (this.options.listeners && this.options.listeners.debug) { + this.options.listeners.debug(message); + } + } + _getCommandString(options, noPrefix) { + const toolPath = this._getSpawnFileName(); + const args = this._getSpawnArgs(options); + let cmd = noPrefix ? '' : '[command]'; // omit prefix when piped to a second tool + if (IS_WINDOWS) { + // Windows + cmd file + if (this._isCmdFile()) { + cmd += toolPath; + for (const a of args) { + cmd += ` ${a}`; + } + } + // Windows + verbatim + else if (options.windowsVerbatimArguments) { + cmd += `"${toolPath}"`; + for (const a of args) { + cmd += ` ${a}`; + } + } + // Windows (regular) + else { + cmd += this._windowsQuoteCmdArg(toolPath); + for (const a of args) { + cmd += ` ${this._windowsQuoteCmdArg(a)}`; + } + } + } + else { + // OSX/Linux - this can likely be improved with some form of quoting. + // creating processes on Unix is fundamentally different than Windows. + // on Unix, execvp() takes an arg array. + cmd += toolPath; + for (const a of args) { + cmd += ` ${a}`; + } + } + return cmd; + } + _processLineBuffer(data, strBuffer, onLine) { + try { + let s = strBuffer + data.toString(); + let n = s.indexOf(os.EOL); + while (n > -1) { + const line = s.substring(0, n); + onLine(line); + // the rest of the string ... + s = s.substring(n + os.EOL.length); + n = s.indexOf(os.EOL); + } + return s; + } + catch (err) { + // streaming lines to console is best effort. Don't fail a build. + this._debug(`error processing line. Failed with error ${err}`); + return ''; + } + } + _getSpawnFileName() { + if (IS_WINDOWS) { + if (this._isCmdFile()) { + return process.env['COMSPEC'] || 'cmd.exe'; + } + } + return this.toolPath; + } + _getSpawnArgs(options) { + if (IS_WINDOWS) { + if (this._isCmdFile()) { + let argline = `/D /S /C "${this._windowsQuoteCmdArg(this.toolPath)}`; + for (const a of this.args) { + argline += ' '; + argline += options.windowsVerbatimArguments + ? a + : this._windowsQuoteCmdArg(a); + } + argline += '"'; + return [argline]; + } + } + return this.args; + } + _endsWith(str, end) { + return str.endsWith(end); + } + _isCmdFile() { + const upperToolPath = this.toolPath.toUpperCase(); + return (this._endsWith(upperToolPath, '.CMD') || + this._endsWith(upperToolPath, '.BAT')); + } + _windowsQuoteCmdArg(arg) { + // for .exe, apply the normal quoting rules that libuv applies + if (!this._isCmdFile()) { + return this._uvQuoteCmdArg(arg); + } + // otherwise apply quoting rules specific to the cmd.exe command line parser. + // the libuv rules are generic and are not designed specifically for cmd.exe + // command line parser. + // + // for a detailed description of the cmd.exe command line parser, refer to + // http://stackoverflow.com/questions/4094699/how-does-the-windows-command-interpreter-cmd-exe-parse-scripts/7970912#7970912 + // need quotes for empty arg + if (!arg) { + return '""'; + } + // determine whether the arg needs to be quoted + const cmdSpecialChars = [ + ' ', + '\t', + '&', + '(', + ')', + '[', + ']', + '{', + '}', + '^', + '=', + ';', + '!', + "'", + '+', + ',', + '`', + '~', + '|', + '<', + '>', + '"' + ]; + let needsQuotes = false; + for (const char of arg) { + if (cmdSpecialChars.some(x => x === char)) { + needsQuotes = true; + break; + } + } + // short-circuit if quotes not needed + if (!needsQuotes) { + return arg; + } + // the following quoting rules are very similar to the rules that by libuv applies. + // + // 1) wrap the string in quotes + // + // 2) double-up quotes - i.e. " => "" + // + // this is different from the libuv quoting rules. libuv replaces " with \", which unfortunately + // doesn't work well with a cmd.exe command line. + // + // note, replacing " with "" also works well if the arg is passed to a downstream .NET console app. + // for example, the command line: + // foo.exe "myarg:""my val""" + // is parsed by a .NET console app into an arg array: + // [ "myarg:\"my val\"" ] + // which is the same end result when applying libuv quoting rules. although the actual + // command line from libuv quoting rules would look like: + // foo.exe "myarg:\"my val\"" + // + // 3) double-up slashes that precede a quote, + // e.g. hello \world => "hello \world" + // hello\"world => "hello\\""world" + // hello\\"world => "hello\\\\""world" + // hello world\ => "hello world\\" + // + // technically this is not required for a cmd.exe command line, or the batch argument parser. + // the reasons for including this as a .cmd quoting rule are: + // + // a) this is optimized for the scenario where the argument is passed from the .cmd file to an + // external program. many programs (e.g. .NET console apps) rely on the slash-doubling rule. + // + // b) it's what we've been doing previously (by deferring to node default behavior) and we + // haven't heard any complaints about that aspect. + // + // note, a weakness of the quoting rules chosen here, is that % is not escaped. in fact, % cannot be + // escaped when used on the command line directly - even though within a .cmd file % can be escaped + // by using %%. + // + // the saving grace is, on the command line, %var% is left as-is if var is not defined. this contrasts + // the line parsing rules within a .cmd file, where if var is not defined it is replaced with nothing. + // + // one option that was explored was replacing % with ^% - i.e. %var% => ^%var^%. this hack would + // often work, since it is unlikely that var^ would exist, and the ^ character is removed when the + // variable is used. the problem, however, is that ^ is not removed when %* is used to pass the args + // to an external program. + // + // an unexplored potential solution for the % escaping problem, is to create a wrapper .cmd file. + // % can be escaped within a .cmd file. + let reverse = '"'; + let quoteHit = true; + for (let i = arg.length; i > 0; i--) { + // walk the string in reverse + reverse += arg[i - 1]; + if (quoteHit && arg[i - 1] === '\\') { + reverse += '\\'; // double the slash + } + else if (arg[i - 1] === '"') { + quoteHit = true; + reverse += '"'; // double the quote + } + else { + quoteHit = false; + } + } + reverse += '"'; + return reverse + .split('') + .reverse() + .join(''); + } + _uvQuoteCmdArg(arg) { + // Tool runner wraps child_process.spawn() and needs to apply the same quoting as + // Node in certain cases where the undocumented spawn option windowsVerbatimArguments + // is used. + // + // Since this function is a port of quote_cmd_arg from Node 4.x (technically, lib UV, + // see https://github.com/nodejs/node/blob/v4.x/deps/uv/src/win/process.c for details), + // pasting copyright notice from Node within this function: + // + // Copyright Joyent, Inc. and other Node contributors. All rights reserved. + // + // Permission is hereby granted, free of charge, to any person obtaining a copy + // of this software and associated documentation files (the "Software"), to + // deal in the Software without restriction, including without limitation the + // rights to use, copy, modify, merge, publish, distribute, sublicense, and/or + // sell copies of the Software, and to permit persons to whom the Software is + // furnished to do so, subject to the following conditions: + // + // The above copyright notice and this permission notice shall be included in + // all copies or substantial portions of the Software. + // + // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS + // IN THE SOFTWARE. + if (!arg) { + // Need double quotation for empty argument + return '""'; + } + if (!arg.includes(' ') && !arg.includes('\t') && !arg.includes('"')) { + // No quotation needed + return arg; + } + if (!arg.includes('"') && !arg.includes('\\')) { + // No embedded double quotes or backslashes, so I can just wrap + // quote marks around the whole thing. + return `"${arg}"`; + } + // Expected input/output: + // input : hello"world + // output: "hello\"world" + // input : hello""world + // output: "hello\"\"world" + // input : hello\world + // output: hello\world + // input : hello\\world + // output: hello\\world + // input : hello\"world + // output: "hello\\\"world" + // input : hello\\"world + // output: "hello\\\\\"world" + // input : hello world\ + // output: "hello world\\" - note the comment in libuv actually reads "hello world\" + // but it appears the comment is wrong, it should be "hello world\\" + let reverse = '"'; + let quoteHit = true; + for (let i = arg.length; i > 0; i--) { + // walk the string in reverse + reverse += arg[i - 1]; + if (quoteHit && arg[i - 1] === '\\') { + reverse += '\\'; + } + else if (arg[i - 1] === '"') { + quoteHit = true; + reverse += '\\'; + } + else { + quoteHit = false; + } + } + reverse += '"'; + return reverse + .split('') + .reverse() + .join(''); + } + _cloneExecOptions(options) { + options = options || {}; + const result = { + cwd: options.cwd || process.cwd(), + env: options.env || process.env, + silent: options.silent || false, + windowsVerbatimArguments: options.windowsVerbatimArguments || false, + failOnStdErr: options.failOnStdErr || false, + ignoreReturnCode: options.ignoreReturnCode || false, + delay: options.delay || 10000 + }; + result.outStream = options.outStream || process.stdout; + result.errStream = options.errStream || process.stderr; + return result; + } + _getSpawnOptions(options, toolPath) { + options = options || {}; + const result = {}; + result.cwd = options.cwd; + result.env = options.env; + result['windowsVerbatimArguments'] = + options.windowsVerbatimArguments || this._isCmdFile(); + if (options.windowsVerbatimArguments) { + result.argv0 = `"${toolPath}"`; + } + return result; + } + /** + * Exec a tool. + * Output will be streamed to the live console. + * Returns promise with return code + * + * @param tool path to tool to exec + * @param options optional exec options. See ExecOptions + * @returns number + */ + exec() { + return __awaiter(this, void 0, void 0, function* () { + // root the tool path if it is unrooted and contains relative pathing + if (!ioUtil.isRooted(this.toolPath) && + (this.toolPath.includes('/') || + (IS_WINDOWS && this.toolPath.includes('\\')))) { + // prefer options.cwd if it is specified, however options.cwd may also need to be rooted + this.toolPath = path.resolve(process.cwd(), this.options.cwd || process.cwd(), this.toolPath); + } + // if the tool is only a file name, then resolve it from the PATH + // otherwise verify it exists (add extension on Windows if necessary) + this.toolPath = yield io.which(this.toolPath, true); + return new Promise((resolve, reject) => __awaiter(this, void 0, void 0, function* () { + this._debug(`exec tool: ${this.toolPath}`); + this._debug('arguments:'); + for (const arg of this.args) { + this._debug(` ${arg}`); + } + const optionsNonNull = this._cloneExecOptions(this.options); + if (!optionsNonNull.silent && optionsNonNull.outStream) { + optionsNonNull.outStream.write(this._getCommandString(optionsNonNull) + os.EOL); + } + const state = new ExecState(optionsNonNull, this.toolPath); + state.on('debug', (message) => { + this._debug(message); + }); + if (this.options.cwd && !(yield ioUtil.exists(this.options.cwd))) { + return reject(new Error(`The cwd: ${this.options.cwd} does not exist!`)); + } + const fileName = this._getSpawnFileName(); + const cp = child.spawn(fileName, this._getSpawnArgs(optionsNonNull), this._getSpawnOptions(this.options, fileName)); + let stdbuffer = ''; + if (cp.stdout) { + cp.stdout.on('data', (data) => { + if (this.options.listeners && this.options.listeners.stdout) { + this.options.listeners.stdout(data); + } + if (!optionsNonNull.silent && optionsNonNull.outStream) { + optionsNonNull.outStream.write(data); + } + stdbuffer = this._processLineBuffer(data, stdbuffer, (line) => { + if (this.options.listeners && this.options.listeners.stdline) { + this.options.listeners.stdline(line); + } + }); + }); + } + let errbuffer = ''; + if (cp.stderr) { + cp.stderr.on('data', (data) => { + state.processStderr = true; + if (this.options.listeners && this.options.listeners.stderr) { + this.options.listeners.stderr(data); + } + if (!optionsNonNull.silent && + optionsNonNull.errStream && + optionsNonNull.outStream) { + const s = optionsNonNull.failOnStdErr + ? optionsNonNull.errStream + : optionsNonNull.outStream; + s.write(data); + } + errbuffer = this._processLineBuffer(data, errbuffer, (line) => { + if (this.options.listeners && this.options.listeners.errline) { + this.options.listeners.errline(line); + } + }); + }); + } + cp.on('error', (err) => { + state.processError = err.message; + state.processExited = true; + state.processClosed = true; + state.CheckComplete(); + }); + cp.on('exit', (code) => { + state.processExitCode = code; + state.processExited = true; + this._debug(`Exit code ${code} received from tool '${this.toolPath}'`); + state.CheckComplete(); + }); + cp.on('close', (code) => { + state.processExitCode = code; + state.processExited = true; + state.processClosed = true; + this._debug(`STDIO streams have closed for tool '${this.toolPath}'`); + state.CheckComplete(); + }); + state.on('done', (error, exitCode) => { + if (stdbuffer.length > 0) { + this.emit('stdline', stdbuffer); + } + if (errbuffer.length > 0) { + this.emit('errline', errbuffer); + } + cp.removeAllListeners(); + if (error) { + reject(error); + } + else { + resolve(exitCode); + } + }); + if (this.options.input) { + if (!cp.stdin) { + throw new Error('child process missing stdin'); + } + cp.stdin.end(this.options.input); + } + })); + }); + } +} +exports.ToolRunner = ToolRunner; +/** + * Convert an arg string to an array of args. Handles escaping + * + * @param argString string of arguments + * @returns string[] array of arguments + */ +function argStringToArray(argString) { + const args = []; + let inQuotes = false; + let escaped = false; + let arg = ''; + function append(c) { + // we only escape double quotes. + if (escaped && c !== '"') { + arg += '\\'; + } + arg += c; + escaped = false; + } + for (let i = 0; i < argString.length; i++) { + const c = argString.charAt(i); + if (c === '"') { + if (!escaped) { + inQuotes = !inQuotes; + } + else { + append(c); + } + continue; + } + if (c === '\\' && escaped) { + append(c); + continue; + } + if (c === '\\' && inQuotes) { + escaped = true; + continue; + } + if (c === ' ' && !inQuotes) { + if (arg.length > 0) { + args.push(arg); + arg = ''; + } + continue; + } + append(c); + } + if (arg.length > 0) { + args.push(arg.trim()); + } + return args; +} +exports.argStringToArray = argStringToArray; +class ExecState extends events.EventEmitter { + constructor(options, toolPath) { + super(); + this.processClosed = false; // tracks whether the process has exited and stdio is closed + this.processError = ''; + this.processExitCode = 0; + this.processExited = false; // tracks whether the process has exited + this.processStderr = false; // tracks whether stderr was written to + this.delay = 10000; // 10 seconds + this.done = false; + this.timeout = null; + if (!toolPath) { + throw new Error('toolPath must not be empty'); + } + this.options = options; + this.toolPath = toolPath; + if (options.delay) { + this.delay = options.delay; + } + } + CheckComplete() { + if (this.done) { + return; + } + if (this.processClosed) { + this._setResult(); + } + else if (this.processExited) { + this.timeout = timers_1.setTimeout(ExecState.HandleTimeout, this.delay, this); + } + } + _debug(message) { + this.emit('debug', message); + } + _setResult() { + // determine whether there is an error + let error; + if (this.processExited) { + if (this.processError) { + error = new Error(`There was an error when attempting to execute the process '${this.toolPath}'. This may indicate the process failed to start. Error: ${this.processError}`); + } + else if (this.processExitCode !== 0 && !this.options.ignoreReturnCode) { + error = new Error(`The process '${this.toolPath}' failed with exit code ${this.processExitCode}`); + } + else if (this.processStderr && this.options.failOnStdErr) { + error = new Error(`The process '${this.toolPath}' failed because one or more lines were written to the STDERR stream`); + } + } + // clear the timeout + if (this.timeout) { + clearTimeout(this.timeout); + this.timeout = null; + } + this.done = true; + this.emit('done', error, this.processExitCode); + } + static HandleTimeout(state) { + if (state.done) { + return; + } + if (!state.processClosed && state.processExited) { + const message = `The STDIO streams did not close within ${state.delay / + 1000} seconds of the exit event from process '${state.toolPath}'. This may indicate a child process inherited the STDIO streams and has not yet exited.`; + state._debug(message); + } + state._setResult(); + } +} +//# sourceMappingURL=toolrunner.js.map + +/***/ }), + /***/ 51648: /***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { @@ -2884,6 +3740,502 @@ class DecodedURL extends URL { /***/ }), +/***/ 75207: +/***/ (function(__unused_webpack_module, exports, __nccwpck_require__) { + +"use strict"; + +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +}; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +var _a; +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.getCmdPath = exports.tryGetExecutablePath = exports.isRooted = exports.isDirectory = exports.exists = exports.READONLY = exports.UV_FS_O_EXLOCK = exports.IS_WINDOWS = exports.unlink = exports.symlink = exports.stat = exports.rmdir = exports.rm = exports.rename = exports.readlink = exports.readdir = exports.open = exports.mkdir = exports.lstat = exports.copyFile = exports.chmod = void 0; +const fs = __importStar(__nccwpck_require__(79896)); +const path = __importStar(__nccwpck_require__(16928)); +_a = fs.promises +// export const {open} = 'fs' +, exports.chmod = _a.chmod, exports.copyFile = _a.copyFile, exports.lstat = _a.lstat, exports.mkdir = _a.mkdir, exports.open = _a.open, exports.readdir = _a.readdir, exports.readlink = _a.readlink, exports.rename = _a.rename, exports.rm = _a.rm, exports.rmdir = _a.rmdir, exports.stat = _a.stat, exports.symlink = _a.symlink, exports.unlink = _a.unlink; +// export const {open} = 'fs' +exports.IS_WINDOWS = process.platform === 'win32'; +// See https://github.com/nodejs/node/blob/d0153aee367422d0858105abec186da4dff0a0c5/deps/uv/include/uv/win.h#L691 +exports.UV_FS_O_EXLOCK = 0x10000000; +exports.READONLY = fs.constants.O_RDONLY; +function exists(fsPath) { + return __awaiter(this, void 0, void 0, function* () { + try { + yield exports.stat(fsPath); + } + catch (err) { + if (err.code === 'ENOENT') { + return false; + } + throw err; + } + return true; + }); +} +exports.exists = exists; +function isDirectory(fsPath, useStat = false) { + return __awaiter(this, void 0, void 0, function* () { + const stats = useStat ? yield exports.stat(fsPath) : yield exports.lstat(fsPath); + return stats.isDirectory(); + }); +} +exports.isDirectory = isDirectory; +/** + * On OSX/Linux, true if path starts with '/'. On Windows, true for paths like: + * \, \hello, \\hello\share, C:, and C:\hello (and corresponding alternate separator cases). + */ +function isRooted(p) { + p = normalizeSeparators(p); + if (!p) { + throw new Error('isRooted() parameter "p" cannot be empty'); + } + if (exports.IS_WINDOWS) { + return (p.startsWith('\\') || /^[A-Z]:/i.test(p) // e.g. \ or \hello or \\hello + ); // e.g. C: or C:\hello + } + return p.startsWith('/'); +} +exports.isRooted = isRooted; +/** + * Best effort attempt to determine whether a file exists and is executable. + * @param filePath file path to check + * @param extensions additional file extensions to try + * @return if file exists and is executable, returns the file path. otherwise empty string. + */ +function tryGetExecutablePath(filePath, extensions) { + return __awaiter(this, void 0, void 0, function* () { + let stats = undefined; + try { + // test file exists + stats = yield exports.stat(filePath); + } + catch (err) { + if (err.code !== 'ENOENT') { + // eslint-disable-next-line no-console + console.log(`Unexpected error attempting to determine if executable file exists '${filePath}': ${err}`); + } + } + if (stats && stats.isFile()) { + if (exports.IS_WINDOWS) { + // on Windows, test for valid extension + const upperExt = path.extname(filePath).toUpperCase(); + if (extensions.some(validExt => validExt.toUpperCase() === upperExt)) { + return filePath; + } + } + else { + if (isUnixExecutable(stats)) { + return filePath; + } + } + } + // try each extension + const originalFilePath = filePath; + for (const extension of extensions) { + filePath = originalFilePath + extension; + stats = undefined; + try { + stats = yield exports.stat(filePath); + } + catch (err) { + if (err.code !== 'ENOENT') { + // eslint-disable-next-line no-console + console.log(`Unexpected error attempting to determine if executable file exists '${filePath}': ${err}`); + } + } + if (stats && stats.isFile()) { + if (exports.IS_WINDOWS) { + // preserve the case of the actual file (since an extension was appended) + try { + const directory = path.dirname(filePath); + const upperName = path.basename(filePath).toUpperCase(); + for (const actualName of yield exports.readdir(directory)) { + if (upperName === actualName.toUpperCase()) { + filePath = path.join(directory, actualName); + break; + } + } + } + catch (err) { + // eslint-disable-next-line no-console + console.log(`Unexpected error attempting to determine the actual case of the file '${filePath}': ${err}`); + } + return filePath; + } + else { + if (isUnixExecutable(stats)) { + return filePath; + } + } + } + } + return ''; + }); +} +exports.tryGetExecutablePath = tryGetExecutablePath; +function normalizeSeparators(p) { + p = p || ''; + if (exports.IS_WINDOWS) { + // convert slashes on Windows + p = p.replace(/\//g, '\\'); + // remove redundant slashes + return p.replace(/\\\\+/g, '\\'); + } + // remove redundant slashes + return p.replace(/\/\/+/g, '/'); +} +// on Mac/Linux, test the execute bit +// R W X R W X R W X +// 256 128 64 32 16 8 4 2 1 +function isUnixExecutable(stats) { + return ((stats.mode & 1) > 0 || + ((stats.mode & 8) > 0 && stats.gid === process.getgid()) || + ((stats.mode & 64) > 0 && stats.uid === process.getuid())); +} +// Get the path of cmd.exe in windows +function getCmdPath() { + var _a; + return (_a = process.env['COMSPEC']) !== null && _a !== void 0 ? _a : `cmd.exe`; +} +exports.getCmdPath = getCmdPath; +//# sourceMappingURL=io-util.js.map + +/***/ }), + +/***/ 94994: +/***/ (function(__unused_webpack_module, exports, __nccwpck_require__) { + +"use strict"; + +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +}; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.findInPath = exports.which = exports.mkdirP = exports.rmRF = exports.mv = exports.cp = void 0; +const assert_1 = __nccwpck_require__(42613); +const path = __importStar(__nccwpck_require__(16928)); +const ioUtil = __importStar(__nccwpck_require__(75207)); +/** + * Copies a file or folder. + * Based off of shelljs - https://github.com/shelljs/shelljs/blob/9237f66c52e5daa40458f94f9565e18e8132f5a6/src/cp.js + * + * @param source source path + * @param dest destination path + * @param options optional. See CopyOptions. + */ +function cp(source, dest, options = {}) { + return __awaiter(this, void 0, void 0, function* () { + const { force, recursive, copySourceDirectory } = readCopyOptions(options); + const destStat = (yield ioUtil.exists(dest)) ? yield ioUtil.stat(dest) : null; + // Dest is an existing file, but not forcing + if (destStat && destStat.isFile() && !force) { + return; + } + // If dest is an existing directory, should copy inside. + const newDest = destStat && destStat.isDirectory() && copySourceDirectory + ? path.join(dest, path.basename(source)) + : dest; + if (!(yield ioUtil.exists(source))) { + throw new Error(`no such file or directory: ${source}`); + } + const sourceStat = yield ioUtil.stat(source); + if (sourceStat.isDirectory()) { + if (!recursive) { + throw new Error(`Failed to copy. ${source} is a directory, but tried to copy without recursive flag.`); + } + else { + yield cpDirRecursive(source, newDest, 0, force); + } + } + else { + if (path.relative(source, newDest) === '') { + // a file cannot be copied to itself + throw new Error(`'${newDest}' and '${source}' are the same file`); + } + yield copyFile(source, newDest, force); + } + }); +} +exports.cp = cp; +/** + * Moves a path. + * + * @param source source path + * @param dest destination path + * @param options optional. See MoveOptions. + */ +function mv(source, dest, options = {}) { + return __awaiter(this, void 0, void 0, function* () { + if (yield ioUtil.exists(dest)) { + let destExists = true; + if (yield ioUtil.isDirectory(dest)) { + // If dest is directory copy src into dest + dest = path.join(dest, path.basename(source)); + destExists = yield ioUtil.exists(dest); + } + if (destExists) { + if (options.force == null || options.force) { + yield rmRF(dest); + } + else { + throw new Error('Destination already exists'); + } + } + } + yield mkdirP(path.dirname(dest)); + yield ioUtil.rename(source, dest); + }); +} +exports.mv = mv; +/** + * Remove a path recursively with force + * + * @param inputPath path to remove + */ +function rmRF(inputPath) { + return __awaiter(this, void 0, void 0, function* () { + if (ioUtil.IS_WINDOWS) { + // Check for invalid characters + // https://docs.microsoft.com/en-us/windows/win32/fileio/naming-a-file + if (/[*"<>|]/.test(inputPath)) { + throw new Error('File path must not contain `*`, `"`, `<`, `>` or `|` on Windows'); + } + } + try { + // note if path does not exist, error is silent + yield ioUtil.rm(inputPath, { + force: true, + maxRetries: 3, + recursive: true, + retryDelay: 300 + }); + } + catch (err) { + throw new Error(`File was unable to be removed ${err}`); + } + }); +} +exports.rmRF = rmRF; +/** + * Make a directory. Creates the full path with folders in between + * Will throw if it fails + * + * @param fsPath path to create + * @returns Promise + */ +function mkdirP(fsPath) { + return __awaiter(this, void 0, void 0, function* () { + assert_1.ok(fsPath, 'a path argument must be provided'); + yield ioUtil.mkdir(fsPath, { recursive: true }); + }); +} +exports.mkdirP = mkdirP; +/** + * Returns path of a tool had the tool actually been invoked. Resolves via paths. + * If you check and the tool does not exist, it will throw. + * + * @param tool name of the tool + * @param check whether to check if tool exists + * @returns Promise path to tool + */ +function which(tool, check) { + return __awaiter(this, void 0, void 0, function* () { + if (!tool) { + throw new Error("parameter 'tool' is required"); + } + // recursive when check=true + if (check) { + const result = yield which(tool, false); + if (!result) { + if (ioUtil.IS_WINDOWS) { + throw new Error(`Unable to locate executable file: ${tool}. Please verify either the file path exists or the file can be found within a directory specified by the PATH environment variable. Also verify the file has a valid extension for an executable file.`); + } + else { + throw new Error(`Unable to locate executable file: ${tool}. Please verify either the file path exists or the file can be found within a directory specified by the PATH environment variable. Also check the file mode to verify the file is executable.`); + } + } + return result; + } + const matches = yield findInPath(tool); + if (matches && matches.length > 0) { + return matches[0]; + } + return ''; + }); +} +exports.which = which; +/** + * Returns a list of all occurrences of the given tool on the system path. + * + * @returns Promise the paths of the tool + */ +function findInPath(tool) { + return __awaiter(this, void 0, void 0, function* () { + if (!tool) { + throw new Error("parameter 'tool' is required"); + } + // build the list of extensions to try + const extensions = []; + if (ioUtil.IS_WINDOWS && process.env['PATHEXT']) { + for (const extension of process.env['PATHEXT'].split(path.delimiter)) { + if (extension) { + extensions.push(extension); + } + } + } + // if it's rooted, return it if exists. otherwise return empty. + if (ioUtil.isRooted(tool)) { + const filePath = yield ioUtil.tryGetExecutablePath(tool, extensions); + if (filePath) { + return [filePath]; + } + return []; + } + // if any path separators, return empty + if (tool.includes(path.sep)) { + return []; + } + // build the list of directories + // + // Note, technically "where" checks the current directory on Windows. From a toolkit perspective, + // it feels like we should not do this. Checking the current directory seems like more of a use + // case of a shell, and the which() function exposed by the toolkit should strive for consistency + // across platforms. + const directories = []; + if (process.env.PATH) { + for (const p of process.env.PATH.split(path.delimiter)) { + if (p) { + directories.push(p); + } + } + } + // find all matches + const matches = []; + for (const directory of directories) { + const filePath = yield ioUtil.tryGetExecutablePath(path.join(directory, tool), extensions); + if (filePath) { + matches.push(filePath); + } + } + return matches; + }); +} +exports.findInPath = findInPath; +function readCopyOptions(options) { + const force = options.force == null ? true : options.force; + const recursive = Boolean(options.recursive); + const copySourceDirectory = options.copySourceDirectory == null + ? true + : Boolean(options.copySourceDirectory); + return { force, recursive, copySourceDirectory }; +} +function cpDirRecursive(sourceDir, destDir, currentDepth, force) { + return __awaiter(this, void 0, void 0, function* () { + // Ensure there is not a run away recursive copy + if (currentDepth >= 255) + return; + currentDepth++; + yield mkdirP(destDir); + const files = yield ioUtil.readdir(sourceDir); + for (const fileName of files) { + const srcFile = `${sourceDir}/${fileName}`; + const destFile = `${destDir}/${fileName}`; + const srcFileStat = yield ioUtil.lstat(srcFile); + if (srcFileStat.isDirectory()) { + // Recurse + yield cpDirRecursive(srcFile, destFile, currentDepth, force); + } + else { + yield copyFile(srcFile, destFile, force); + } + } + // Change the mode for the newly created directory + yield ioUtil.chmod(destDir, (yield ioUtil.stat(sourceDir)).mode); + }); +} +// Buffered file copy +function copyFile(srcFile, destFile, force) { + return __awaiter(this, void 0, void 0, function* () { + if ((yield ioUtil.lstat(srcFile)).isSymbolicLink()) { + // unlink/re-link it + try { + yield ioUtil.lstat(destFile); + yield ioUtil.unlink(destFile); + } + catch (e) { + // Try to override file permission + if (e.code === 'EPERM') { + yield ioUtil.chmod(destFile, '0666'); + yield ioUtil.unlink(destFile); + } + // other errors = it doesn't exist, no work to do + } + // Copy over symlink + const symlinkFull = yield ioUtil.readlink(srcFile); + yield ioUtil.symlink(symlinkFull, destFile, ioUtil.IS_WINDOWS ? 'junction' : null); + } + else if (!(yield ioUtil.exists(destFile)) || force) { + yield ioUtil.copyFile(srcFile, destFile); + } + }); +} +//# sourceMappingURL=io.js.map + +/***/ }), + /***/ 620: /***/ (function(__unused_webpack_module, exports, __nccwpck_require__) { @@ -2918,7 +4270,7 @@ exports.loadAwsServiceSpecSync = loadAwsServiceSpecSync; const node_fs_1 = __nccwpck_require__(73024); const path = __importStar(__nccwpck_require__(76760)); const node_zlib_1 = __nccwpck_require__(38522); -const service_spec_types_1 = __nccwpck_require__(25580); +const service_spec_types_1 = __nccwpck_require__(9444); const DB_COMPRESSED = 'db.json.gz'; const DB_PATH = path.join(__dirname, '..', DB_COMPRESSED); /** @@ -2942,122 +4294,7 @@ function loadBufferIntoDatabase(spec) { /***/ }), -/***/ 51318: -/***/ ((__unused_webpack_module, exports) => { - -"use strict"; - -Object.defineProperty(exports, "__esModule", ({ value: true })); -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXJ0aWZhY3Qtc2NoZW1hLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiYXJ0aWZhY3Qtc2NoZW1hLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEluZm9ybWF0aW9uIG5lZWRlZCB0byBhY2Nlc3MgYW4gSUFNIHJvbGUgY3JlYXRlZFxuICogYXMgcGFydCBvZiB0aGUgYm9vdHN0cmFwIHByb2Nlc3NcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBCb290c3RyYXBSb2xlIHtcbiAgLyoqXG4gICAqIFRoZSBBUk4gb2YgdGhlIElBTSByb2xlIGNyZWF0ZWQgYXMgcGFydCBvZiBib290cmFwcGluZ1xuICAgKiBlLmcuIGxvb2t1cFJvbGVBcm5cbiAgICovXG4gIHJlYWRvbmx5IGFybjogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBFeHRlcm5hbCBJRCB0byB1c2Ugd2hlbiBhc3N1bWluZyB0aGUgYm9vdHN0cmFwIHJvbGVcbiAgICpcbiAgICogQGRlZmF1bHQgLSBObyBleHRlcm5hbCBJRFxuICAgKi9cbiAgcmVhZG9ubHkgYXNzdW1lUm9sZUV4dGVybmFsSWQ/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEFkZGl0aW9uYWwgb3B0aW9ucyB0byBwYXNzIHRvIFNUUyB3aGVuIGFzc3VtaW5nIHRoZSByb2xlLlxuICAgKlxuICAgKiAtIGBSb2xlQXJuYCBzaG91bGQgbm90IGJlIHVzZWQuIFVzZSB0aGUgZGVkaWNhdGVkIGBhcm5gIHByb3BlcnR5IGluc3RlYWQuXG4gICAqIC0gYEV4dGVybmFsSWRgIHNob3VsZCBub3QgYmUgdXNlZC4gVXNlIHRoZSBkZWRpY2F0ZWQgYGFzc3VtZVJvbGVFeHRlcm5hbElkYCBpbnN0ZWFkLlxuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NKYXZhU2NyaXB0U0RLL2xhdGVzdC9BV1MvU1RTLmh0bWwjYXNzdW1lUm9sZS1wcm9wZXJ0eVxuICAgKiBAZGVmYXVsdCAtIE5vIGFkZGl0aW9uYWwgb3B0aW9ucy5cbiAgICovXG4gIHJlYWRvbmx5IGFzc3VtZVJvbGVBZGRpdGlvbmFsT3B0aW9ucz86IHsgW2tleTogc3RyaW5nXTogYW55IH07XG5cbiAgLyoqXG4gICAqIFZlcnNpb24gb2YgYm9vdHN0cmFwIHN0YWNrIHJlcXVpcmVkIHRvIHVzZSB0aGlzIHJvbGVcbiAgICpcbiAgICogQGRlZmF1bHQgLSBObyBib290c3RyYXAgc3RhY2sgcmVxdWlyZWRcbiAgICovXG4gIHJlYWRvbmx5IHJlcXVpcmVzQm9vdHN0cmFwU3RhY2tWZXJzaW9uPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBOYW1lIG9mIFNTTSBwYXJhbWV0ZXIgd2l0aCBib290c3RyYXAgc3RhY2sgdmVyc2lvblxuICAgKlxuICAgKiBAZGVmYXVsdCAtIERpc2NvdmVyIFNTTSBwYXJhbWV0ZXIgYnkgcmVhZGluZyBzdGFja1xuICAgKi9cbiAgcmVhZG9ubHkgYm9vdHN0cmFwU3RhY2tWZXJzaW9uU3NtUGFyYW1ldGVyPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIEFydGlmYWN0IHByb3BlcnRpZXMgZm9yIENsb3VkRm9ybWF0aW9uIHN0YWNrcy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBd3NDbG91ZEZvcm1hdGlvblN0YWNrUHJvcGVydGllcyB7XG4gIC8qKlxuICAgKiBBIGZpbGUgcmVsYXRpdmUgdG8gdGhlIGFzc2VtYmx5IHJvb3Qgd2hpY2ggY29udGFpbnMgdGhlIENsb3VkRm9ybWF0aW9uIHRlbXBsYXRlIGZvciB0aGlzIHN0YWNrLlxuICAgKi9cbiAgcmVhZG9ubHkgdGVtcGxhdGVGaWxlOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFZhbHVlcyBmb3IgQ2xvdWRGb3JtYXRpb24gc3RhY2sgcGFyYW1ldGVycyB0aGF0IHNob3VsZCBiZSBwYXNzZWQgd2hlbiB0aGUgc3RhY2sgaXMgZGVwbG95ZWQuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gTm8gcGFyYW1ldGVyc1xuICAgKi9cbiAgcmVhZG9ubHkgcGFyYW1ldGVycz86IHsgW2lkOiBzdHJpbmddOiBzdHJpbmcgfTtcblxuICAvKipcbiAgICogVmFsdWVzIGZvciBDbG91ZEZvcm1hdGlvbiBzdGFjayB0YWdzIHRoYXQgc2hvdWxkIGJlIHBhc3NlZCB3aGVuIHRoZSBzdGFjayBpcyBkZXBsb3llZC5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBObyB0YWdzXG4gICAqL1xuICByZWFkb25seSB0YWdzPzogeyBbaWQ6IHN0cmluZ106IHN0cmluZyB9O1xuXG4gIC8qKlxuICAgKiBTTlMgTm90aWZpY2F0aW9uIEFSTnMgdGhhdCBzaG91bGQgcmVjZWl2ZSBDbG91ZEZvcm1hdGlvbiBTdGFjayBFdmVudHMuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gTm8gbm90aWZpY2F0aW9uIGFybnNcbiAgICovXG4gIHJlYWRvbmx5IG5vdGlmaWNhdGlvbkFybnM/OiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogVGhlIG5hbWUgdG8gdXNlIGZvciB0aGUgQ2xvdWRGb3JtYXRpb24gc3RhY2suXG4gICAqIEBkZWZhdWx0IC0gbmFtZSBkZXJpdmVkIGZyb20gYXJ0aWZhY3QgSURcbiAgICovXG4gIHJlYWRvbmx5IHN0YWNrTmFtZT86IHN0cmluZztcblxuICAvKipcbiAgICogV2hldGhlciB0byBlbmFibGUgdGVybWluYXRpb24gcHJvdGVjdGlvbiBmb3IgdGhpcyBzdGFjay5cbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IHRlcm1pbmF0aW9uUHJvdGVjdGlvbj86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFRoZSByb2xlIHRoYXQgbmVlZHMgdG8gYmUgYXNzdW1lZCB0byBkZXBsb3kgdGhlIHN0YWNrXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gTm8gcm9sZSBpcyBhc3N1bWVkIChjdXJyZW50IGNyZWRlbnRpYWxzIGFyZSB1c2VkKVxuICAgKi9cbiAgcmVhZG9ubHkgYXNzdW1lUm9sZUFybj86IHN0cmluZztcblxuICAvKipcbiAgICogRXh0ZXJuYWwgSUQgdG8gdXNlIHdoZW4gYXNzdW1pbmcgcm9sZSBmb3IgY2xvdWRmb3JtYXRpb24gZGVwbG95bWVudHNcbiAgICpcbiAgICogQGRlZmF1bHQgLSBObyBleHRlcm5hbCBJRFxuICAgKi9cbiAgcmVhZG9ubHkgYXNzdW1lUm9sZUV4dGVybmFsSWQ/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEFkZGl0aW9uYWwgb3B0aW9ucyB0byBwYXNzIHRvIFNUUyB3aGVuIGFzc3VtaW5nIHRoZSByb2xlLlxuICAgKlxuICAgKiAtIGBSb2xlQXJuYCBzaG91bGQgbm90IGJlIHVzZWQuIFVzZSB0aGUgZGVkaWNhdGVkIGBhc3N1bWVSb2xlQXJuYCBwcm9wZXJ0eSBpbnN0ZWFkLlxuICAgKiAtIGBFeHRlcm5hbElkYCBzaG91bGQgbm90IGJlIHVzZWQuIFVzZSB0aGUgZGVkaWNhdGVkIGBhc3N1bWVSb2xlRXh0ZXJuYWxJZGAgaW5zdGVhZC5cbiAgICpcbiAgICogQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTSmF2YVNjcmlwdFNESy9sYXRlc3QvQVdTL1NUUy5odG1sI2Fzc3VtZVJvbGUtcHJvcGVydHlcbiAgICogQGRlZmF1bHQgLSBObyBhZGRpdGlvbmFsIG9wdGlvbnMuXG4gICAqL1xuICByZWFkb25seSBhc3N1bWVSb2xlQWRkaXRpb25hbE9wdGlvbnM/OiB7IFtrZXk6IHN0cmluZ106IGFueSB9O1xuXG4gIC8qKlxuICAgKiBUaGUgcm9sZSB0aGF0IGlzIHBhc3NlZCB0byBDbG91ZEZvcm1hdGlvbiB0byBleGVjdXRlIHRoZSBjaGFuZ2Ugc2V0XG4gICAqXG4gICAqIEBkZWZhdWx0IC0gTm8gcm9sZSBpcyBwYXNzZWQgKGN1cnJlbnRseSBhc3N1bWVkIHJvbGUvY3JlZGVudGlhbHMgYXJlIHVzZWQpXG4gICAqL1xuICByZWFkb25seSBjbG91ZEZvcm1hdGlvbkV4ZWN1dGlvblJvbGVBcm4/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSByb2xlIHRvIHVzZSB0byBsb29rIHVwIHZhbHVlcyBmcm9tIHRoZSB0YXJnZXQgQVdTIGFjY291bnRcbiAgICpcbiAgICogQGRlZmF1bHQgLSBObyByb2xlIGlzIGFzc3VtZWQgKGN1cnJlbnQgY3JlZGVudGlhbHMgYXJlIHVzZWQpXG4gICAqL1xuICByZWFkb25seSBsb29rdXBSb2xlPzogQm9vdHN0cmFwUm9sZTtcblxuICAvKipcbiAgICogSWYgdGhlIHN0YWNrIHRlbXBsYXRlIGhhcyBhbHJlYWR5IGJlZW4gaW5jbHVkZWQgaW4gdGhlIGFzc2V0IG1hbmlmZXN0LCBpdHMgYXNzZXQgVVJMXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gTm90IHVwbG9hZGVkIHlldCwgdXBsb2FkIGp1c3QgYmVmb3JlIGRlcGxveWluZ1xuICAgKi9cbiAgcmVhZG9ubHkgc3RhY2tUZW1wbGF0ZUFzc2V0T2JqZWN0VXJsPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBWZXJzaW9uIG9mIGJvb3RzdHJhcCBzdGFjayByZXF1aXJlZCB0byBkZXBsb3kgdGhpcyBzdGFja1xuICAgKlxuICAgKiBAZGVmYXVsdCAtIE5vIGJvb3RzdHJhcCBzdGFjayByZXF1aXJlZFxuICAgKi9cbiAgcmVhZG9ubHkgcmVxdWlyZXNCb290c3RyYXBTdGFja1ZlcnNpb24/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIFNTTSBwYXJhbWV0ZXIgd2hlcmUgdGhlIGJvb3RzdHJhcCBzdGFjayB2ZXJzaW9uIG51bWJlciBjYW4gYmUgZm91bmRcbiAgICpcbiAgICogT25seSB1c2VkIGlmIGByZXF1aXJlc0Jvb3RzdHJhcFN0YWNrVmVyc2lvbmAgaXMgc2V0LlxuICAgKlxuICAgKiAtIElmIHRoaXMgdmFsdWUgaXMgbm90IHNldCwgdGhlIGJvb3RzdHJhcCBzdGFjayBuYW1lIG11c3QgYmUga25vd24gYXRcbiAgICogICBkZXBsb3ltZW50IHRpbWUgc28gdGhlIHN0YWNrIHZlcnNpb24gY2FuIGJlIGxvb2tlZCB1cCBmcm9tIHRoZSBzdGFja1xuICAgKiAgIG91dHB1dHMuXG4gICAqIC0gSWYgdGhpcyB2YWx1ZSBpcyBzZXQsIHRoZSBib290c3RyYXAgc3RhY2sgY2FuIGhhdmUgYW55IG5hbWUgYmVjYXVzZVxuICAgKiAgIHdlIHdvbid0IG5lZWQgdG8gbG9vayBpdCB1cC5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBCb290c3RyYXAgc3RhY2sgdmVyc2lvbiBudW1iZXIgbG9va2VkIHVwXG4gICAqL1xuICByZWFkb25seSBib290c3RyYXBTdGFja1ZlcnNpb25Tc21QYXJhbWV0ZXI/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhpcyBzdGFjayBzaG91bGQgYmUgdmFsaWRhdGVkIGJ5IHRoZSBDTEkgYWZ0ZXIgc3ludGhlc2lzXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IHZhbGlkYXRlT25TeW50aD86IGJvb2xlYW47XG59XG5cbi8qKlxuICogQ29uZmlndXJhdGlvbiBvcHRpb25zIGZvciB0aGUgQXNzZXQgTWFuaWZlc3RcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBc3NldE1hbmlmZXN0T3B0aW9ucyB7XG4gIC8qKlxuICAgKiBWZXJzaW9uIG9mIGJvb3RzdHJhcCBzdGFjayByZXF1aXJlZCB0byBkZXBsb3kgdGhpcyBzdGFja1xuICAgKlxuICAgKiBAZGVmYXVsdCAtIFZlcnNpb24gMSAoYmFzaWMgbW9kZXJuIGJvb3RzdHJhcCBzdGFjaylcbiAgICovXG4gIHJlYWRvbmx5IHJlcXVpcmVzQm9vdHN0cmFwU3RhY2tWZXJzaW9uPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBTU00gcGFyYW1ldGVyIHdoZXJlIHRoZSBib290c3RyYXAgc3RhY2sgdmVyc2lvbiBudW1iZXIgY2FuIGJlIGZvdW5kXG4gICAqXG4gICAqIC0gSWYgdGhpcyB2YWx1ZSBpcyBub3Qgc2V0LCB0aGUgYm9vdHN0cmFwIHN0YWNrIG5hbWUgbXVzdCBiZSBrbm93biBhdFxuICAgKiAgIGRlcGxveW1lbnQgdGltZSBzbyB0aGUgc3RhY2sgdmVyc2lvbiBjYW4gYmUgbG9va2VkIHVwIGZyb20gdGhlIHN0YWNrXG4gICAqICAgb3V0cHV0cy5cbiAgICogLSBJZiB0aGlzIHZhbHVlIGlzIHNldCwgdGhlIGJvb3RzdHJhcCBzdGFjayBjYW4gaGF2ZSBhbnkgbmFtZSBiZWNhdXNlXG4gICAqICAgd2Ugd29uJ3QgbmVlZCB0byBsb29rIGl0IHVwLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIEJvb3RzdHJhcCBzdGFjayB2ZXJzaW9uIG51bWJlciBsb29rZWQgdXBcbiAgICovXG4gIHJlYWRvbmx5IGJvb3RzdHJhcFN0YWNrVmVyc2lvblNzbVBhcmFtZXRlcj86IHN0cmluZztcbn1cblxuLyoqXG4gKiBBcnRpZmFjdCBwcm9wZXJ0aWVzIGZvciB0aGUgQXNzZXQgTWFuaWZlc3RcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBc3NldE1hbmlmZXN0UHJvcGVydGllcyBleHRlbmRzIEFzc2V0TWFuaWZlc3RPcHRpb25zIHtcbiAgLyoqXG4gICAqIEZpbGVuYW1lIG9mIHRoZSBhc3NldCBtYW5pZmVzdFxuICAgKi9cbiAgcmVhZG9ubHkgZmlsZTogc3RyaW5nO1xufVxuXG4vKipcbiAqIEFydGlmYWN0IHByb3BlcnRpZXMgZm9yIHRoZSBDb25zdHJ1Y3QgVHJlZSBBcnRpZmFjdFxuICovXG5leHBvcnQgaW50ZXJmYWNlIFRyZWVBcnRpZmFjdFByb3BlcnRpZXMge1xuICAvKipcbiAgICogRmlsZW5hbWUgb2YgdGhlIHRyZWUgYXJ0aWZhY3RcbiAgICovXG4gIHJlYWRvbmx5IGZpbGU6IHN0cmluZztcbn1cblxuLyoqXG4gKiBBcnRpZmFjdCBwcm9wZXJ0aWVzIGZvciBuZXN0ZWQgY2xvdWQgYXNzZW1ibGllc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIE5lc3RlZENsb3VkQXNzZW1ibHlQcm9wZXJ0aWVzIHtcbiAgLyoqXG4gICAqIFJlbGF0aXZlIHBhdGggdG8gdGhlIG5lc3RlZCBjbG91ZCBhc3NlbWJseVxuICAgKi9cbiAgcmVhZG9ubHkgZGlyZWN0b3J5TmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBEaXNwbGF5IG5hbWUgZm9yIHRoZSBjbG91ZCBhc3NlbWJseVxuICAgKlxuICAgKiBAZGVmYXVsdCAtIFRoZSBhcnRpZmFjdCBJRFxuICAgKi9cbiAgcmVhZG9ubHkgZGlzcGxheU5hbWU/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogUHJvcGVydGllcyBmb3IgbWFuaWZlc3QgYXJ0aWZhY3RzXG4gKi9cbmV4cG9ydCB0eXBlIEFydGlmYWN0UHJvcGVydGllcyA9XG4gIHwgQXdzQ2xvdWRGb3JtYXRpb25TdGFja1Byb3BlcnRpZXNcbiAgfCBBc3NldE1hbmlmZXN0UHJvcGVydGllc1xuICB8IFRyZWVBcnRpZmFjdFByb3BlcnRpZXNcbiAgfCBOZXN0ZWRDbG91ZEFzc2VtYmx5UHJvcGVydGllcztcbiJdfQ== - -/***/ }), - -/***/ 76534: -/***/ ((__unused_webpack_module, exports) => { - -"use strict"; - -Object.defineProperty(exports, "__esModule", ({ value: true })); -exports.LoadBalancerListenerProtocol = exports.LoadBalancerType = exports.ContextProvider = void 0; -/** - * Identifier for the context provider - */ -var ContextProvider; -(function (ContextProvider) { - /** - * AMI provider - */ - ContextProvider["AMI_PROVIDER"] = "ami"; - /** - * AZ provider - */ - ContextProvider["AVAILABILITY_ZONE_PROVIDER"] = "availability-zones"; - /** - * Route53 Hosted Zone provider - */ - ContextProvider["HOSTED_ZONE_PROVIDER"] = "hosted-zone"; - /** - * SSM Parameter Provider - */ - ContextProvider["SSM_PARAMETER_PROVIDER"] = "ssm"; - /** - * VPC Provider - */ - ContextProvider["VPC_PROVIDER"] = "vpc-provider"; - /** - * VPC Endpoint Service AZ Provider - */ - ContextProvider["ENDPOINT_SERVICE_AVAILABILITY_ZONE_PROVIDER"] = "endpoint-service-availability-zones"; - /** - * Load balancer provider - */ - ContextProvider["LOAD_BALANCER_PROVIDER"] = "load-balancer"; - /** - * Load balancer listener provider - */ - ContextProvider["LOAD_BALANCER_LISTENER_PROVIDER"] = "load-balancer-listener"; - /** - * Security group provider - */ - ContextProvider["SECURITY_GROUP_PROVIDER"] = "security-group"; - /** - * KMS Key Provider - */ - ContextProvider["KEY_PROVIDER"] = "key-provider"; - /** - * A plugin provider (the actual plugin name will be in the properties) - */ - ContextProvider["PLUGIN"] = "plugin"; -})(ContextProvider || (exports.ContextProvider = ContextProvider = {})); -/** - * Type of load balancer - */ -var LoadBalancerType; -(function (LoadBalancerType) { - /** - * Network load balancer - */ - LoadBalancerType["NETWORK"] = "network"; - /** - * Application load balancer - */ - LoadBalancerType["APPLICATION"] = "application"; -})(LoadBalancerType || (exports.LoadBalancerType = LoadBalancerType = {})); -/** - * The protocol for connections from clients to the load balancer - */ -var LoadBalancerListenerProtocol; -(function (LoadBalancerListenerProtocol) { - /** - * HTTP protocol - */ - LoadBalancerListenerProtocol["HTTP"] = "HTTP"; - /** - * HTTPS protocol - */ - LoadBalancerListenerProtocol["HTTPS"] = "HTTPS"; - /** - * TCP protocol - */ - LoadBalancerListenerProtocol["TCP"] = "TCP"; - /** - * TLS protocol - */ - LoadBalancerListenerProtocol["TLS"] = "TLS"; - /** - * UDP protocol - * */ - LoadBalancerListenerProtocol["UDP"] = "UDP"; - /** - * TCP and UDP protocol - * */ - LoadBalancerListenerProtocol["TCP_UDP"] = "TCP_UDP"; -})(LoadBalancerListenerProtocol || (exports.LoadBalancerListenerProtocol = LoadBalancerListenerProtocol = {})); -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGV4dC1xdWVyaWVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiY29udGV4dC1xdWVyaWVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUVBOztHQUVHO0FBQ0gsSUFBWSxlQXVEWDtBQXZERCxXQUFZLGVBQWU7SUFDekI7O09BRUc7SUFDSCx1Q0FBb0IsQ0FBQTtJQUVwQjs7T0FFRztJQUNILG9FQUFpRCxDQUFBO0lBRWpEOztPQUVHO0lBQ0gsdURBQW9DLENBQUE7SUFFcEM7O09BRUc7SUFDSCxpREFBOEIsQ0FBQTtJQUU5Qjs7T0FFRztJQUNILGdEQUE2QixDQUFBO0lBRTdCOztPQUVHO0lBQ0gsc0dBQW1GLENBQUE7SUFFbkY7O09BRUc7SUFDSCwyREFBd0MsQ0FBQTtJQUV4Qzs7T0FFRztJQUNILDZFQUEwRCxDQUFBO0lBRTFEOztPQUVHO0lBQ0gsNkRBQTBDLENBQUE7SUFFMUM7O09BRUc7SUFDSCxnREFBNkIsQ0FBQTtJQUU3Qjs7T0FFRztJQUNILG9DQUFpQixDQUFBO0FBQ25CLENBQUMsRUF2RFcsZUFBZSwrQkFBZixlQUFlLFFBdUQxQjtBQXlKRDs7R0FFRztBQUNILElBQVksZ0JBVVg7QUFWRCxXQUFZLGdCQUFnQjtJQUMxQjs7T0FFRztJQUNILHVDQUFtQixDQUFBO0lBRW5COztPQUVHO0lBQ0gsK0NBQTJCLENBQUE7QUFDN0IsQ0FBQyxFQVZXLGdCQUFnQixnQ0FBaEIsZ0JBQWdCLFFBVTNCO0FBNkJEOztHQUVHO0FBQ0gsSUFBWSw0QkE4Qlg7QUE5QkQsV0FBWSw0QkFBNEI7SUFDdEM7O09BRUc7SUFDSCw2Q0FBYSxDQUFBO0lBRWI7O09BRUc7SUFDSCwrQ0FBZSxDQUFBO0lBRWY7O09BRUc7SUFDSCwyQ0FBVyxDQUFBO0lBRVg7O09BRUc7SUFDSCwyQ0FBVyxDQUFBO0lBRVg7O1NBRUs7SUFDTCwyQ0FBVyxDQUFBO0lBRVg7O1NBRUs7SUFDTCxtREFBbUIsQ0FBQTtBQUNyQixDQUFDLEVBOUJXLDRCQUE0Qiw0Q0FBNUIsNEJBQTRCLFFBOEJ2QyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFRhZyB9IGZyb20gJy4vbWV0YWRhdGEtc2NoZW1hJztcblxuLyoqXG4gKiBJZGVudGlmaWVyIGZvciB0aGUgY29udGV4dCBwcm92aWRlclxuICovXG5leHBvcnQgZW51bSBDb250ZXh0UHJvdmlkZXIge1xuICAvKipcbiAgICogQU1JIHByb3ZpZGVyXG4gICAqL1xuICBBTUlfUFJPVklERVIgPSAnYW1pJyxcblxuICAvKipcbiAgICogQVogcHJvdmlkZXJcbiAgICovXG4gIEFWQUlMQUJJTElUWV9aT05FX1BST1ZJREVSID0gJ2F2YWlsYWJpbGl0eS16b25lcycsXG5cbiAgLyoqXG4gICAqIFJvdXRlNTMgSG9zdGVkIFpvbmUgcHJvdmlkZXJcbiAgICovXG4gIEhPU1RFRF9aT05FX1BST1ZJREVSID0gJ2hvc3RlZC16b25lJyxcblxuICAvKipcbiAgICogU1NNIFBhcmFtZXRlciBQcm92aWRlclxuICAgKi9cbiAgU1NNX1BBUkFNRVRFUl9QUk9WSURFUiA9ICdzc20nLFxuXG4gIC8qKlxuICAgKiBWUEMgUHJvdmlkZXJcbiAgICovXG4gIFZQQ19QUk9WSURFUiA9ICd2cGMtcHJvdmlkZXInLFxuXG4gIC8qKlxuICAgKiBWUEMgRW5kcG9pbnQgU2VydmljZSBBWiBQcm92aWRlclxuICAgKi9cbiAgRU5EUE9JTlRfU0VSVklDRV9BVkFJTEFCSUxJVFlfWk9ORV9QUk9WSURFUiA9ICdlbmRwb2ludC1zZXJ2aWNlLWF2YWlsYWJpbGl0eS16b25lcycsXG5cbiAgLyoqXG4gICAqIExvYWQgYmFsYW5jZXIgcHJvdmlkZXJcbiAgICovXG4gIExPQURfQkFMQU5DRVJfUFJPVklERVIgPSAnbG9hZC1iYWxhbmNlcicsXG5cbiAgLyoqXG4gICAqIExvYWQgYmFsYW5jZXIgbGlzdGVuZXIgcHJvdmlkZXJcbiAgICovXG4gIExPQURfQkFMQU5DRVJfTElTVEVORVJfUFJPVklERVIgPSAnbG9hZC1iYWxhbmNlci1saXN0ZW5lcicsXG5cbiAgLyoqXG4gICAqIFNlY3VyaXR5IGdyb3VwIHByb3ZpZGVyXG4gICAqL1xuICBTRUNVUklUWV9HUk9VUF9QUk9WSURFUiA9ICdzZWN1cml0eS1ncm91cCcsXG5cbiAgLyoqXG4gICAqIEtNUyBLZXkgUHJvdmlkZXJcbiAgICovXG4gIEtFWV9QUk9WSURFUiA9ICdrZXktcHJvdmlkZXInLFxuXG4gIC8qKlxuICAgKiBBIHBsdWdpbiBwcm92aWRlciAodGhlIGFjdHVhbCBwbHVnaW4gbmFtZSB3aWxsIGJlIGluIHRoZSBwcm9wZXJ0aWVzKVxuICAgKi9cbiAgUExVR0lOID0gJ3BsdWdpbicsXG59XG5cbi8qKlxuICogT3B0aW9ucyBmb3IgY29udGV4dCBsb29rdXAgcm9sZXMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ29udGV4dExvb2t1cFJvbGVPcHRpb25zIHtcbiAgLyoqXG4gICAqIFF1ZXJ5IGFjY291bnRcbiAgICovXG4gIHJlYWRvbmx5IGFjY291bnQ6IHN0cmluZztcblxuICAvKipcbiAgICogUXVlcnkgcmVnaW9uXG4gICAqL1xuICByZWFkb25seSByZWdpb246IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIEFSTiBvZiB0aGUgcm9sZSB0aGF0IHNob3VsZCBiZSB1c2VkIHRvIGxvb2sgdXAgdGhlIG1pc3NpbmcgdmFsdWVzXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gTm9uZVxuICAgKi9cbiAgcmVhZG9ubHkgbG9va3VwUm9sZUFybj86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIEV4dGVybmFsSWQgdGhhdCBuZWVkcyB0byBiZSBzdXBwbGllZCB3aGlsZSBhc3N1bWluZyB0aGlzIHJvbGVcbiAgICpcbiAgICogQGRlZmF1bHQgLSBObyBFeHRlcm5hbElkIHdpbGwgYmUgc3VwcGxpZWRcbiAgICovXG4gIHJlYWRvbmx5IGxvb2t1cFJvbGVFeHRlcm5hbElkPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBBZGRpdGlvbmFsIG9wdGlvbnMgdG8gcGFzcyB0byBTVFMgd2hlbiBhc3N1bWluZyB0aGUgbG9va3VwIHJvbGUuXG4gICAqXG4gICAqIC0gYFJvbGVBcm5gIHNob3VsZCBub3QgYmUgdXNlZC4gVXNlIHRoZSBkZWRpY2F0ZWQgYGxvb2t1cFJvbGVBcm5gIHByb3BlcnR5IGluc3RlYWQuXG4gICAqIC0gYEV4dGVybmFsSWRgIHNob3VsZCBub3QgYmUgdXNlZC4gVXNlIHRoZSBkZWRpY2F0ZWQgYGxvb2t1cFJvbGVFeHRlcm5hbElkYCBpbnN0ZWFkLlxuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NKYXZhU2NyaXB0U0RLL2xhdGVzdC9BV1MvU1RTLmh0bWwjYXNzdW1lUm9sZS1wcm9wZXJ0eVxuICAgKiBAZGVmYXVsdCAtIE5vIGFkZGl0aW9uYWwgb3B0aW9ucy5cbiAgICovXG4gIHJlYWRvbmx5IGFzc3VtZVJvbGVBZGRpdGlvbmFsT3B0aW9ucz86IHsgW2tleTogc3RyaW5nXTogYW55IH07XG59XG5cbi8qKlxuICogUXVlcnkgdG8gQU1JIGNvbnRleHQgcHJvdmlkZXJcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBbWlDb250ZXh0UXVlcnkgZXh0ZW5kcyBDb250ZXh0TG9va3VwUm9sZU9wdGlvbnMge1xuICAvKipcbiAgICogT3duZXJzIHRvIERlc2NyaWJlSW1hZ2VzIGNhbGxcbiAgICpcbiAgICogQGRlZmF1bHQgLSBBbGwgb3duZXJzXG4gICAqL1xuICByZWFkb25seSBvd25lcnM/OiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogRmlsdGVycyB0byBEZXNjcmliZUltYWdlcyBjYWxsXG4gICAqL1xuICByZWFkb25seSBmaWx0ZXJzOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZ1tdIH07XG59XG5cbi8qKlxuICogUXVlcnkgdG8gYXZhaWxhYmlsaXR5IHpvbmUgY29udGV4dCBwcm92aWRlclxuICovXG5leHBvcnQgaW50ZXJmYWNlIEF2YWlsYWJpbGl0eVpvbmVzQ29udGV4dFF1ZXJ5IGV4dGVuZHMgQ29udGV4dExvb2t1cFJvbGVPcHRpb25zIHt9XG5cbi8qKlxuICogUXVlcnkgdG8gaG9zdGVkIHpvbmUgY29udGV4dCBwcm92aWRlclxuICovXG5leHBvcnQgaW50ZXJmYWNlIEhvc3RlZFpvbmVDb250ZXh0UXVlcnkgZXh0ZW5kcyBDb250ZXh0TG9va3VwUm9sZU9wdGlvbnMge1xuICAvKipcbiAgICogVGhlIGRvbWFpbiBuYW1lIGUuZy4gZXhhbXBsZS5jb20gdG8gbG9va3VwXG4gICAqL1xuICByZWFkb25seSBkb21haW5OYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRydWUgaWYgdGhlIHpvbmUgeW91IHdhbnQgdG8gZmluZCBpcyBhIHByaXZhdGUgaG9zdGVkIHpvbmVcbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IHByaXZhdGVab25lPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogVGhlIFZQQyBJRCB0byB0aGF0IHRoZSBwcml2YXRlIHpvbmUgbXVzdCBiZSBhc3NvY2lhdGVkIHdpdGhcbiAgICpcbiAgICogSWYgeW91IHByb3ZpZGUgVlBDIElEIGFuZCBwcml2YXRlWm9uZSBpcyBmYWxzZSwgdGhpcyB3aWxsIHJldHVybiBubyByZXN1bHRzXG4gICAqIGFuZCByYWlzZSBhbiBlcnJvci5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBSZXF1aXJlZCBpZiBwcml2YXRlWm9uZT10cnVlXG4gICAqL1xuICByZWFkb25seSB2cGNJZD86IHN0cmluZztcbn1cblxuLyoqXG4gKiBRdWVyeSB0byBTU00gUGFyYW1ldGVyIENvbnRleHQgUHJvdmlkZXJcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTU01QYXJhbWV0ZXJDb250ZXh0UXVlcnkgZXh0ZW5kcyBDb250ZXh0TG9va3VwUm9sZU9wdGlvbnMge1xuICAvKipcbiAgICogUGFyYW1ldGVyIG5hbWUgdG8gcXVlcnlcbiAgICovXG4gIHJlYWRvbmx5IHBhcmFtZXRlck5hbWU6IHN0cmluZztcbn1cblxuLyoqXG4gKiBRdWVyeSBpbnB1dCBmb3IgbG9va2luZyB1cCBhIFZQQ1xuICovXG5leHBvcnQgaW50ZXJmYWNlIFZwY0NvbnRleHRRdWVyeSBleHRlbmRzIENvbnRleHRMb29rdXBSb2xlT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBGaWx0ZXJzIHRvIGFwcGx5IHRvIHRoZSBWUENcbiAgICpcbiAgICogRmlsdGVyIHBhcmFtZXRlcnMgYXJlIHRoZSBzYW1lIGFzIHBhc3NlZCB0byBEZXNjcmliZVZwY3MuXG4gICAqXG4gICAqIEBzZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FXU0VDMi9sYXRlc3QvQVBJUmVmZXJlbmNlL0FQSV9EZXNjcmliZVZwY3MuaHRtbFxuICAgKi9cbiAgcmVhZG9ubHkgZmlsdGVyOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9O1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIHBvcHVsYXRlIHRoZSBzdWJuZXRHcm91cHMgZmllbGQgb2YgdGhlIGBWcGNDb250ZXh0UmVzcG9uc2VgLFxuICAgKiB3aGljaCBjb250YWlucyBwb3RlbnRpYWxseSBhc3ltbWV0cmljIHN1Ym5ldCBncm91cHMuXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByZWFkb25seSByZXR1cm5Bc3ltbWV0cmljU3VibmV0cz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIE9wdGlvbmFsIHRhZyBmb3Igc3VibmV0IGdyb3VwIG5hbWUuXG4gICAqIElmIG5vdCBwcm92aWRlZCwgd2UnbGwgbG9vayBhdCB0aGUgYXdzLWNkazpzdWJuZXQtbmFtZSB0YWcuXG4gICAqIElmIHRoZSBzdWJuZXQgZG9lcyBub3QgaGF2ZSB0aGUgc3BlY2lmaWVkIHRhZyxcbiAgICogd2UnbGwgdXNlIGl0cyB0eXBlIGFzIHRoZSBuYW1lLlxuICAgKlxuICAgKiBAZGVmYXVsdCAnYXdzLWNkazpzdWJuZXQtbmFtZSdcbiAgICovXG4gIHJlYWRvbmx5IHN1Ym5ldEdyb3VwTmFtZVRhZz86IHN0cmluZztcblxuICAvKipcbiAgICogV2hldGhlciB0byBwb3B1bGF0ZSB0aGUgYHZwbkdhdGV3YXlJZGAgZmllbGQgb2YgdGhlIGBWcGNDb250ZXh0UmVzcG9uc2VgLFxuICAgKiB3aGljaCBjb250YWlucyB0aGUgVlBOIEdhdGV3YXkgSUQsIGlmIG9uZSBleGlzdHMuIFlvdSBjYW4gZXhwbGljaXRseVxuICAgKiBkaXNhYmxlIHRoaXMgaW4gb3JkZXIgdG8gYXZvaWQgdGhlIGxvb2t1cCBpZiB5b3Uga25vdyB0aGUgVlBDIGRvZXMgbm90IGhhdmVcbiAgICogYSBWUE4gR2F0d2F5IGF0dGFjaGVkLlxuICAgKlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICByZWFkb25seSByZXR1cm5WcG5HYXRld2F5cz86IGJvb2xlYW47XG59XG5cbi8qKlxuICogUXVlcnkgdG8gZW5kcG9pbnQgc2VydmljZSBjb250ZXh0IHByb3ZpZGVyXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRW5kcG9pbnRTZXJ2aWNlQXZhaWxhYmlsaXR5Wm9uZXNDb250ZXh0UXVlcnkgZXh0ZW5kcyBDb250ZXh0TG9va3VwUm9sZU9wdGlvbnMge1xuICAvKipcbiAgICogUXVlcnkgc2VydmljZSBuYW1lXG4gICAqL1xuICByZWFkb25seSBzZXJ2aWNlTmFtZTogc3RyaW5nO1xufVxuXG4vKipcbiAqIFR5cGUgb2YgbG9hZCBiYWxhbmNlclxuICovXG5leHBvcnQgZW51bSBMb2FkQmFsYW5jZXJUeXBlIHtcbiAgLyoqXG4gICAqIE5ldHdvcmsgbG9hZCBiYWxhbmNlclxuICAgKi9cbiAgTkVUV09SSyA9ICduZXR3b3JrJyxcblxuICAvKipcbiAgICogQXBwbGljYXRpb24gbG9hZCBiYWxhbmNlclxuICAgKi9cbiAgQVBQTElDQVRJT04gPSAnYXBwbGljYXRpb24nLFxufVxuXG4vKipcbiAqIEZpbHRlcnMgZm9yIHNlbGVjdGluZyBsb2FkIGJhbGFuY2Vyc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIExvYWRCYWxhbmNlckZpbHRlciBleHRlbmRzIENvbnRleHRMb29rdXBSb2xlT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBGaWx0ZXIgbG9hZCBiYWxhbmNlcnMgYnkgdGhlaXIgdHlwZVxuICAgKi9cbiAgcmVhZG9ubHkgbG9hZEJhbGFuY2VyVHlwZTogTG9hZEJhbGFuY2VyVHlwZTtcblxuICAvKipcbiAgICogRmluZCBieSBsb2FkIGJhbGFuY2VyJ3MgQVJOXG4gICAqIEBkZWZhdWx0IC0gZG9lcyBub3Qgc2VhcmNoIGJ5IGxvYWQgYmFsYW5jZXIgYXJuXG4gICAqL1xuICByZWFkb25seSBsb2FkQmFsYW5jZXJBcm4/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIE1hdGNoIGxvYWQgYmFsYW5jZXIgdGFnc1xuICAgKiBAZGVmYXVsdCAtIGRvZXMgbm90IG1hdGNoIGxvYWQgYmFsYW5jZXJzIGJ5IHRhZ3NcbiAgICovXG4gIHJlYWRvbmx5IGxvYWRCYWxhbmNlclRhZ3M/OiBUYWdbXTtcbn1cblxuLyoqXG4gKiBRdWVyeSBpbnB1dCBmb3IgbG9va2luZyB1cCBhIGxvYWQgYmFsYW5jZXJcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBMb2FkQmFsYW5jZXJDb250ZXh0UXVlcnkgZXh0ZW5kcyBMb2FkQmFsYW5jZXJGaWx0ZXIge31cblxuLyoqXG4gKiBUaGUgcHJvdG9jb2wgZm9yIGNvbm5lY3Rpb25zIGZyb20gY2xpZW50cyB0byB0aGUgbG9hZCBiYWxhbmNlclxuICovXG5leHBvcnQgZW51bSBMb2FkQmFsYW5jZXJMaXN0ZW5lclByb3RvY29sIHtcbiAgLyoqXG4gICAqIEhUVFAgcHJvdG9jb2xcbiAgICovXG4gIEhUVFAgPSAnSFRUUCcsXG5cbiAgLyoqXG4gICAqIEhUVFBTIHByb3RvY29sXG4gICAqL1xuICBIVFRQUyA9ICdIVFRQUycsXG5cbiAgLyoqXG4gICAqIFRDUCBwcm90b2NvbFxuICAgKi9cbiAgVENQID0gJ1RDUCcsXG5cbiAgLyoqXG4gICAqIFRMUyBwcm90b2NvbFxuICAgKi9cbiAgVExTID0gJ1RMUycsXG5cbiAgLyoqXG4gICAqIFVEUCBwcm90b2NvbFxuICAgKiAqL1xuICBVRFAgPSAnVURQJyxcblxuICAvKipcbiAgICogVENQIGFuZCBVRFAgcHJvdG9jb2xcbiAgICogKi9cbiAgVENQX1VEUCA9ICdUQ1BfVURQJyxcbn1cblxuLyoqXG4gKiBRdWVyeSBpbnB1dCBmb3IgbG9va2luZyB1cCBhIGxvYWQgYmFsYW5jZXIgbGlzdGVuZXJcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBMb2FkQmFsYW5jZXJMaXN0ZW5lckNvbnRleHRRdWVyeSBleHRlbmRzIExvYWRCYWxhbmNlckZpbHRlciB7XG4gIC8qKlxuICAgKiBGaW5kIGJ5IGxpc3RlbmVyJ3MgYXJuXG4gICAqIEBkZWZhdWx0IC0gZG9lcyBub3QgZmluZCBieSBsaXN0ZW5lciBhcm5cbiAgICovXG4gIHJlYWRvbmx5IGxpc3RlbmVyQXJuPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBGaWx0ZXIgYnkgbGlzdGVuZXIgcHJvdG9jb2xcbiAgICogQGRlZmF1bHQgLSBkb2VzIG5vdCBmaWx0ZXIgYnkgbGlzdGVuZXIgcHJvdG9jb2xcbiAgICovXG4gIHJlYWRvbmx5IGxpc3RlbmVyUHJvdG9jb2w/OiBMb2FkQmFsYW5jZXJMaXN0ZW5lclByb3RvY29sO1xuXG4gIC8qKlxuICAgKiBGaWx0ZXIgbGlzdGVuZXJzIGJ5IGxpc3RlbmVyIHBvcnRcbiAgICogQGRlZmF1bHQgLSBkb2VzIG5vdCBmaWx0ZXIgYnkgYSBsaXN0ZW5lciBwb3J0XG4gICAqL1xuICByZWFkb25seSBsaXN0ZW5lclBvcnQ/OiBudW1iZXI7XG59XG5cbi8qKlxuICogUXVlcnkgaW5wdXQgZm9yIGxvb2tpbmcgdXAgYSBzZWN1cml0eSBncm91cFxuICovXG5leHBvcnQgaW50ZXJmYWNlIFNlY3VyaXR5R3JvdXBDb250ZXh0UXVlcnkgZXh0ZW5kcyBDb250ZXh0TG9va3VwUm9sZU9wdGlvbnMge1xuICAvKipcbiAgICogU2VjdXJpdHkgZ3JvdXAgaWRcbiAgICpcbiAgICogQGRlZmF1bHQgLSBOb25lXG4gICAqL1xuICByZWFkb25seSBzZWN1cml0eUdyb3VwSWQ/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFNlY3VyaXR5IGdyb3VwIG5hbWVcbiAgICpcbiAgICogQGRlZmF1bHQgLSBOb25lXG4gICAqL1xuICByZWFkb25seSBzZWN1cml0eUdyb3VwTmFtZT86IHN0cmluZztcblxuICAvKipcbiAgICogVlBDIElEXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gTm9uZVxuICAgKi9cbiAgcmVhZG9ubHkgdnBjSWQ/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogUXVlcnkgaW5wdXQgZm9yIGxvb2tpbmcgdXAgYSBLTVMgS2V5XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgS2V5Q29udGV4dFF1ZXJ5IGV4dGVuZHMgQ29udGV4dExvb2t1cFJvbGVPcHRpb25zIHtcbiAgLyoqXG4gICAqIEFsaWFzIG5hbWUgdXNlZCB0byBzZWFyY2ggdGhlIEtleVxuICAgKi9cbiAgcmVhZG9ubHkgYWxpYXNOYW1lOiBzdHJpbmc7XG59XG5cbi8qKlxuICogUXVlcnkgaW5wdXQgZm9yIHBsdWdpbnNcbiAqXG4gKiBUaGlzIGFsdGVybmF0ZSBicmFuY2ggaXMgbmVjZXNzYXJ5IGJlY2F1c2UgaXQgbmVlZHMgdG8gYmUgYWJsZSB0byBlc2NhcGUgYWxsIHR5cGUgY2hlY2tpbmdcbiAqIHdlIGRvIG9uIG9uIHRoZSBjbG91ZCBhc3NlbWJseSAtLSB3ZSBjYW5ub3Qga25vdyB0aGUgcHJvcGVydGllcyB0aGF0IHdpbGwgYmUgdXNlZCBhIHByaW9yaS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBQbHVnaW5Db250ZXh0UXVlcnkge1xuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIHBsdWdpblxuICAgKi9cbiAgcmVhZG9ubHkgcGx1Z2luTmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBBcmJpdHJhcnkgb3RoZXIgYXJndW1lbnRzIGZvciB0aGUgcGx1Z2luLlxuICAgKlxuICAgKiBUaGlzIGluZGV4IHNpZ25hdHVyZSBpcyBub3QgdXNhYmxlIGluIG5vbi1UeXBlU2NyaXB0L0phdmFTY3JpcHQgbGFuZ3VhZ2VzLlxuICAgKlxuICAgKiBAanNpaSBpZ25vcmVcbiAgICovXG4gIFtrZXk6IHN0cmluZ106IGFueTtcbn1cblxuZXhwb3J0IHR5cGUgQ29udGV4dFF1ZXJ5UHJvcGVydGllcyA9XG4gIHwgQW1pQ29udGV4dFF1ZXJ5XG4gIHwgQXZhaWxhYmlsaXR5Wm9uZXNDb250ZXh0UXVlcnlcbiAgfCBIb3N0ZWRab25lQ29udGV4dFF1ZXJ5XG4gIHwgU1NNUGFyYW1ldGVyQ29udGV4dFF1ZXJ5XG4gIHwgVnBjQ29udGV4dFF1ZXJ5XG4gIHwgRW5kcG9pbnRTZXJ2aWNlQXZhaWxhYmlsaXR5Wm9uZXNDb250ZXh0UXVlcnlcbiAgfCBMb2FkQmFsYW5jZXJDb250ZXh0UXVlcnlcbiAgfCBMb2FkQmFsYW5jZXJMaXN0ZW5lckNvbnRleHRRdWVyeVxuICB8IFNlY3VyaXR5R3JvdXBDb250ZXh0UXVlcnlcbiAgfCBLZXlDb250ZXh0UXVlcnlcbiAgfCBQbHVnaW5Db250ZXh0UXVlcnk7XG4iXX0= - -/***/ }), - -/***/ 77144: +/***/ 9444: /***/ (function(__unused_webpack_module, exports, __nccwpck_require__) { "use strict"; @@ -3077,391 +4314,1006 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) { for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); }; Object.defineProperty(exports, "__esModule", ({ value: true })); -__exportStar(__nccwpck_require__(9129), exports); -__exportStar(__nccwpck_require__(67687), exports); -__exportStar(__nccwpck_require__(51318), exports); -__exportStar(__nccwpck_require__(76534), exports); -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsMkNBQXlCO0FBQ3pCLG9EQUFrQztBQUNsQyxvREFBa0M7QUFDbEMsb0RBQWtDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9zY2hlbWEnO1xuZXhwb3J0ICogZnJvbSAnLi9tZXRhZGF0YS1zY2hlbWEnO1xuZXhwb3J0ICogZnJvbSAnLi9hcnRpZmFjdC1zY2hlbWEnO1xuZXhwb3J0ICogZnJvbSAnLi9jb250ZXh0LXF1ZXJpZXMnO1xuIl19 +__exportStar(__nccwpck_require__(31681), exports); +__exportStar(__nccwpck_require__(33652), exports); +__exportStar(__nccwpck_require__(17343), exports); +__exportStar(__nccwpck_require__(51491), exports); +__exportStar(__nccwpck_require__(29663), exports); +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLG1EQUFpQztBQUNqQyxtREFBaUM7QUFDakMsd0RBQXNDO0FBQ3RDLGtEQUFnQztBQUNoQywrQ0FBNkIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL3R5cGVzL2RhdGFiYXNlJztcbmV4cG9ydCAqIGZyb20gJy4vdHlwZXMvcmVzb3VyY2UnO1xuZXhwb3J0ICogZnJvbSAnLi90eXBlcy9hdWdtZW50YXRpb25zJztcbmV4cG9ydCAqIGZyb20gJy4vdHlwZXMvbWV0cmljcyc7XG5leHBvcnQgKiBmcm9tICcuL3R5cGVzL2RpZmYnO1xuIl19 /***/ }), -/***/ 67687: +/***/ 17343: /***/ ((__unused_webpack_module, exports) => { "use strict"; Object.defineProperty(exports, "__esModule", ({ value: true })); -exports.ArtifactMetadataEntryType = void 0; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXVnbWVudGF0aW9ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90eXBlcy9hdWdtZW50YXRpb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFbnRpdHksIFJlbGF0aW9uc2hpcCB9IGZyb20gJ0BjZGtsYWJzL3Rza2InO1xuaW1wb3J0IHsgUmVzb3VyY2UgfSBmcm9tICcuL3Jlc291cmNlJztcblxuLyoqXG4gKiBBdWdtZW50YXRpb25zIGZvciBhIENsb3VkRm9ybWF0aW9uIHJlc291cmNlIHR5cGVcbiAqXG4gKiBBdWdtZW50YXRpb25zIGFyZSBhIGRlcHJlY2F0ZWQgbWVjaGFuaXNtIGZvciBhdXRvbWF0aWNhbGx5IGdlbmVyYXRpbmcgbWV0cmljc1xuICogZnVuY3Rpb25zIGZvciBjZXJ0YWluIHJlc291cmNlcywgdXRpbGl6aW5nIFR5cGVTY3JpcHQgbWl4aW5zLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJlc291cmNlQXVnbWVudGF0aW9uIGV4dGVuZHMgRW50aXR5IHtcbiAgLyoqXG4gICAqIE1ldHJpYyBhdWdtZW50YXRpb25zIGZvciB0aGlzIHJlc291cmNlIHR5cGVcbiAgICovXG4gIG1ldHJpY3M/OiBSZXNvdXJjZU1ldHJpY0F1Z21lbnRhdGlvbnM7XG5cbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSBmaWxlIGNvbnRhaW5pbmcgdGhlIGNsYXNzIHRvIGJlIFwiYXVnbWVudGVkXCIuXG4gICAqXG4gICAqIEBkZWZhdWx0IGtlYmFiIGNhc2VkIENsb3VkRm9ybWF0aW9uIHJlc291cmNlIG5hbWUgKyAnLWJhc2UnXG4gICAqL1xuICBiYXNlQ2xhc3NGaWxlPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgY2xhc3MgdG8gYmUgXCJhdWdtZW50ZWRcIi5cbiAgICpcbiAgICogQGRlZmF1bHQgQ2xvdWRGb3JtYXRpb24gcmVzb3VyY2UgbmFtZSArICdCYXNlJ1xuICAgKi9cbiAgYmFzZUNsYXNzPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgZmlsZSBjb250YWluaW5nIHRoZSBpbnRlcmZhY2UgdG8gYmUgXCJhdWdtZW50ZWRcIi5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBzYW1lIGFzIGBgY2xhc3NGaWxlYGAuXG4gICAqL1xuICBpbnRlcmZhY2VGaWxlPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgaW50ZXJmYWNlIHRvIGJlIFwiYXVnbWVudGVkXCIuXG4gICAqXG4gICAqIEBkZWZhdWx0ICdJJyArIENsb3VkRm9ybWF0aW9uIHJlc291cmNlIG5hbWVcbiAgICovXG4gIGludGVyZmFjZT86IHN0cmluZztcbn1cblxuZXhwb3J0IHR5cGUgSXNBdWdtZW50ZWRSZXNvdXJjZSA9IFJlbGF0aW9uc2hpcDxSZXNvdXJjZSwgUmVzb3VyY2VBdWdtZW50YXRpb24+O1xuXG5leHBvcnQgaW50ZXJmYWNlIFJlc291cmNlTWV0cmljQXVnbWVudGF0aW9ucyB7XG4gIC8qKlxuICAgKiBUaGUgbmFtZXNwYWNlIG9mIG1ldHJpY3MgZm9yIHRoaXMgc2VydmljZVxuICAgKi9cbiAgbmFtZXNwYWNlOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBwcm9wZXJ0aWVzIG9mIHRoZSByZXNvdXJjZSBjbGFzcyB0aGF0IHByb3ZpZGUgdmFsdWVzIGZvciB0aGUgZGltZW5zaW9uc1xuICAgKlxuICAgKiBGb3IgZXhhbXBsZSwgYHsgUXVldWVOYW1lOiAncXVldWVOYW1lJyB9YCBzYXlzIHRoYXQgdGhlIG1ldHJpYyBoYXMgYSBgUXVldWVOYW1lYFxuICAgKiBkaW1lbnNpb24sIGZvciB3aGljaCB0aGUgdmFsdWUgY2FuIGJlIG9idGFpbmVkIGJ5IHJlYWRpbmcgYHRoaXMucXVldWVOYW1lYC5cbiAgICovXG4gIGRpbWVuc2lvbnM6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH07XG5cbiAgLyoqXG4gICAqIFRoZSBtZXRyaWNzIGZvciB0aGlzIHJlc291cmNlXG4gICAqL1xuICBtZXRyaWNzOiBSZXNvdXJjZU1ldHJpY1tdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFJlc291cmNlTWV0cmljIHtcbiAgLyoqXG4gICAqIFVwcGVyY2FzZS1maXJzdCBtZXRyaWMgbmFtZVxuICAgKi9cbiAgbmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBEb2N1bWVudGF0aW9uIGxpbmVcbiAgICovXG4gIGRvY3VtZW50YXRpb246IHN0cmluZztcblxuICAvKipcbiAgICogV2hldGhlciB0aGlzIGlzIGFuIGV2ZW4gY291bnQgKDEgZ2V0cyBlbWl0dGVkIGV2ZXJ5IHRpbWUgc29tZXRoaW5nIG9jY3VycylcbiAgICpcbiAgICogQGRlZmF1bHQgTWV0cmljVHlwZS5BdHRyaWJcbiAgICovXG4gIHR5cGU/OiBNZXRyaWNUeXBlO1xufVxuXG5leHBvcnQgdHlwZSBNZXRyaWNUeXBlID1cbiAgLyoqXG4gICAqIFRoaXMgbWV0cmljIGlzIGVtaXR0ZWQgZm9yIGV2ZW50cywgbWVhc3VyaW5nIGEgYXR0cmlidXRlIG9mIHRoZSBldmVudC5cbiAgICpcbiAgICogVHlwaWNhbCBleGFtcGxlcyBvZiB0aGlzIHdvdWxkIGJlIGR1cmF0aW9uLCBvciByZXF1ZXN0IHNpemUsIG9yIHNpbWlsYXIuXG4gICAqXG4gICAqIFRoZSBkZWZhdWx0IGFnZ3JlZ2F0ZSBmb3IgdGhpcyB0eXBlIG9mIGV2ZW50IGlzIFwiQXZnXCIuXG4gICAqL1xuICB8ICdhdHRyaWInXG5cbiAgLyoqXG4gICAqIFRoaXMgbWV0cmljIGlzIGVtaXR0ZWQgZm9yIGV2ZW50cywgYW5kIHRoZSB2YWx1ZSBpcyBhbHdheXMgYDFgLlxuICAgKlxuICAgKiBPbmx5IFwiU3VtXCIgaXMgYSBtZWFuaW5nZnVsIGFnZ3JlZ2F0ZSBvZiB0aGlzIHR5cGUgb2YgbWV0cmljOyBhbGwgb3RoZXJcbiAgICogYWdncmVnYXRpb25zIHdpbGwgb25seSBldmVyIHByb2R1Y2UgdGhlIHZhbHVlIGAxYC5cbiAgICovXG4gIHwgJ2NvdW50J1xuXG4gIC8qKlxuICAgKiBUaGlzIG1ldHJpYyBpcyBlbWl0dGVkIHBlcmlvZGljYWxseSwgcmVwcmVzZW50aW5nIGEgc3lzdGVtIHByb3BlcnR5LlxuICAgKlxuICAgKiBUaGUgbWV0cmljIG1lYXN1cmVzIHNvbWUgZ2xvYmFsIGV2ZXItY2hhbmdpbmcgcHJvcGVydHksIGFuZCBkb2VzIG5vdFxuICAgKiBtZWFzdXJlIGV2ZW50cy4gVGhlIG1vc3QgdXNlZnVsIGFnZ3JlZ2F0ZSBvZiB0aGlzIHR5cGUgb2YgbWV0cmljIGlzIFwiTWF4XCIuXG4gICAqL1xuICB8ICdnYXVnZSc7XG4iXX0= + +/***/ }), + +/***/ 31681: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.RichSpecDatabase = exports.loadDatabase = exports.emptyDatabase = void 0; +const fs_1 = __nccwpck_require__(79896); +const zlib_1 = __nccwpck_require__(43106); +const tskb_1 = __nccwpck_require__(25925); +function emptyDatabase() { + return new tskb_1.Database({ + resource: (0, tskb_1.entityCollection)().index({ + cloudFormationType: (0, tskb_1.fieldIndex)('cloudFormationType', tskb_1.stringCmp), + }), + region: (0, tskb_1.entityCollection)().index({ + name: (0, tskb_1.fieldIndex)('name', tskb_1.stringCmp), + }), + service: (0, tskb_1.entityCollection)().index({ + name: (0, tskb_1.fieldIndex)('name', tskb_1.stringCmp), + cloudFormationNamespace: (0, tskb_1.fieldIndex)('cloudFormationNamespace', tskb_1.stringCmp), + }), + typeDefinition: (0, tskb_1.entityCollection)(), + augmentations: (0, tskb_1.entityCollection)(), + metric: (0, tskb_1.entityCollection)().index({ + name: (0, tskb_1.fieldIndex)('name', tskb_1.stringCmp), + namespace: (0, tskb_1.fieldIndex)('namespace', tskb_1.stringCmp), + dedupKey: (0, tskb_1.fieldIndex)('dedupKey', tskb_1.stringCmp), + }), + dimensionSet: (0, tskb_1.entityCollection)().index({ + dedupKey: (0, tskb_1.fieldIndex)('dedupKey', tskb_1.stringCmp), + }), + }, (r) => ({ + hasResource: r.relationship('service', 'resource'), + regionHasResource: r.relationship('region', 'resource'), + regionHasService: r.relationship('region', 'service'), + usesType: r.relationship('resource', 'typeDefinition'), + isAugmented: r.relationship('resource', 'augmentations'), + usesDimensionSet: r.relationship('metric', 'dimensionSet'), + resourceHasMetric: r.relationship('resource', 'metric'), + serviceHasMetric: r.relationship('service', 'metric'), + resourceHasDimensionSet: r.relationship('resource', 'dimensionSet'), + serviceHasDimensionSet: r.relationship('service', 'dimensionSet'), + })); +} +exports.emptyDatabase = emptyDatabase; +async function loadDatabase(pathToDb) { + const db = emptyDatabase(); + const contents = await fs_1.promises.readFile(pathToDb); + const json = pathToDb.endsWith('.gz') ? (0, zlib_1.gunzipSync)(contents).toString('utf-8') : contents.toString('utf-8'); + db.load(JSON.parse(json)); + return db; +} +exports.loadDatabase = loadDatabase; /** - * Type of artifact metadata entry. + * Helpers for working with a SpecDatabase */ -var ArtifactMetadataEntryType; -(function (ArtifactMetadataEntryType) { - /** - * Asset in metadata. - */ - ArtifactMetadataEntryType["ASSET"] = "aws:cdk:asset"; - /** - * Metadata key used to print INFO-level messages by the toolkit when an app is syntheized. - */ - ArtifactMetadataEntryType["INFO"] = "aws:cdk:info"; - /** - * Metadata key used to print WARNING-level messages by the toolkit when an app is syntheized. - */ - ArtifactMetadataEntryType["WARN"] = "aws:cdk:warning"; +class RichSpecDatabase { + constructor(db) { + this.db = db; + } /** - * Metadata key used to print ERROR-level messages by the toolkit when an app is syntheized. + * Find all resources of a given type */ - ArtifactMetadataEntryType["ERROR"] = "aws:cdk:error"; + resourceByType(cfnType, operation = 'resourceByType') { + const res = this.db.lookup('resource', 'cloudFormationType', 'equals', cfnType); + if (res.length === 0) { + throw new Error(`${operation}: no such resource: ${cfnType}`); + } + return res[0]; + } /** - * Represents the CloudFormation logical ID of a resource at a certain path. + * All type definitions used by a certain resource */ - ArtifactMetadataEntryType["LOGICAL_ID"] = "aws:cdk:logicalId"; + resourceTypeDefs(cfnType) { + const resource = this.db.lookup('resource', 'cloudFormationType', 'equals', cfnType).only(); + return this.db.follow('usesType', resource).map((x) => x.entity); + } /** - * Represents tags of a stack. + * Find a type definition from a given property type */ - ArtifactMetadataEntryType["STACK_TAGS"] = "aws:cdk:stack-tags"; -})(ArtifactMetadataEntryType || (exports.ArtifactMetadataEntryType = ArtifactMetadataEntryType = {})); -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWV0YWRhdGEtc2NoZW1hLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsibWV0YWRhdGEtc2NoZW1hLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQStRQTs7R0FFRztBQUNILElBQVkseUJBOEJYO0FBOUJELFdBQVkseUJBQXlCO0lBQ25DOztPQUVHO0lBQ0gsb0RBQXVCLENBQUE7SUFFdkI7O09BRUc7SUFDSCxrREFBcUIsQ0FBQTtJQUVyQjs7T0FFRztJQUNILHFEQUF3QixDQUFBO0lBRXhCOztPQUVHO0lBQ0gsb0RBQXVCLENBQUE7SUFFdkI7O09BRUc7SUFDSCw2REFBZ0MsQ0FBQTtJQUVoQzs7T0FFRztJQUNILDhEQUFpQyxDQUFBO0FBQ25DLENBQUMsRUE5QlcseUJBQXlCLHlDQUF6Qix5QkFBeUIsUUE4QnBDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDb21tb24gcHJvcGVydGllcyBmb3IgYXNzZXQgbWV0YWRhdGEuXG4gKi9cbmludGVyZmFjZSBCYXNlQXNzZXRNZXRhZGF0YUVudHJ5IHtcbiAgLyoqXG4gICAqIFJlcXVlc3RlZCBwYWNrYWdpbmcgc3R5bGVcbiAgICovXG4gIHJlYWRvbmx5IHBhY2thZ2luZzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBMb2dpY2FsIGlkZW50aWZpZXIgZm9yIHRoZSBhc3NldFxuICAgKi9cbiAgcmVhZG9ubHkgaWQ6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIGhhc2ggb2YgdGhlIGFzc2V0IHNvdXJjZS5cbiAgICovXG4gIHJlYWRvbmx5IHNvdXJjZUhhc2g6IHN0cmluZztcblxuICAvKipcbiAgICogUGF0aCBvbiBkaXNrIHRvIHRoZSBhc3NldFxuICAgKi9cbiAgcmVhZG9ubHkgcGF0aDogc3RyaW5nO1xufVxuXG4vKipcbiAqIE1ldGFkYXRhIEVudHJ5IHNwZWMgZm9yIGZpbGVzLlxuICpcbiAqIEBleGFtcGxlXG4gKiBjb25zdCBlbnRyeSA9IHtcbiAqICAgcGFja2FnaW5nOiAnZmlsZScsXG4gKiAgIHMzQnVja2V0UGFyYW1ldGVyOiAnYnVja2V0LXBhcmFtZXRlcicsXG4gKiAgIHMzS2V5UGFyYW1lbnRlcjogJ2tleS1wYXJhbWV0ZXInLFxuICogICBhcnRpZmFjdEhhc2hQYXJhbWV0ZXI6ICdoYXNoLXBhcmFtZXRlcicsXG4gKiB9XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRmlsZUFzc2V0TWV0YWRhdGFFbnRyeSBleHRlbmRzIEJhc2VBc3NldE1ldGFkYXRhRW50cnkge1xuICAvKipcbiAgICogUmVxdWVzdGVkIHBhY2thZ2luZyBzdHlsZVxuICAgKi9cbiAgcmVhZG9ubHkgcGFja2FnaW5nOiAnemlwJyB8ICdmaWxlJztcblxuICAvKipcbiAgICogTmFtZSBvZiBwYXJhbWV0ZXIgd2hlcmUgUzMgYnVja2V0IHNob3VsZCBiZSBwYXNzZWQgaW5cbiAgICovXG4gIHJlYWRvbmx5IHMzQnVja2V0UGFyYW1ldGVyOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIE5hbWUgb2YgcGFyYW1ldGVyIHdoZXJlIFMzIGtleSBzaG91bGQgYmUgcGFzc2VkIGluXG4gICAqL1xuICByZWFkb25seSBzM0tleVBhcmFtZXRlcjogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgcGFyYW1ldGVyIHdoZXJlIHRoZSBoYXNoIG9mIHRoZSBidW5kbGVkIGFzc2V0IHNob3VsZCBiZSBwYXNzZWQgaW4uXG4gICAqL1xuICByZWFkb25seSBhcnRpZmFjdEhhc2hQYXJhbWV0ZXI6IHN0cmluZztcbn1cblxuLyoqXG4gKiBNZXRhZGF0YSBFbnRyeSBzcGVjIGZvciBzdGFjayB0YWcuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVGFnIHtcbiAgLyoqXG4gICAqIFRhZyBrZXkuXG4gICAqXG4gICAqIChJbiB0aGUgYWN0dWFsIGZpbGUgb24gZGlzayB0aGlzIHdpbGwgYmUgY2FzZWQgYXMgXCJLZXlcIiwgYW5kIHRoZSBzdHJ1Y3R1cmUgaXNcbiAgICogcGF0Y2hlZCB0byBtYXRjaCB0aGlzIHN0cnVjdHVyZSB1cG9uIGxvYWRpbmc6XG4gICAqIGh0dHBzOi8vZ2l0aHViLmNvbS9hd3MvYXdzLWNkay9ibG9iLzRhYWRhYTc3OWI0OGYzNTgzOGNjY2Q0ZTI1MTA3YjIzMzhmMDU1NDcvcGFja2FnZXMvJTQwYXdzLWNkay9jbG91ZC1hc3NlbWJseS1zY2hlbWEvbGliL21hbmlmZXN0LnRzI0wxMzcpXG4gICAqL1xuICByZWFkb25seSBrZXk6IHN0cmluZztcblxuICAvKipcbiAgICogVGFnIHZhbHVlLlxuICAgKlxuICAgKiAoSW4gdGhlIGFjdHVhbCBmaWxlIG9uIGRpc2sgdGhpcyB3aWxsIGJlIGNhc2VkIGFzIFwiVmFsdWVcIiwgYW5kIHRoZSBzdHJ1Y3R1cmUgaXNcbiAgICogcGF0Y2hlZCB0byBtYXRjaCB0aGlzIHN0cnVjdHVyZSB1cG9uIGxvYWRpbmc6XG4gICAqIGh0dHBzOi8vZ2l0aHViLmNvbS9hd3MvYXdzLWNkay9ibG9iLzRhYWRhYTc3OWI0OGYzNTgzOGNjY2Q0ZTI1MTA3YjIzMzhmMDU1NDcvcGFja2FnZXMvJTQwYXdzLWNkay9jbG91ZC1hc3NlbWJseS1zY2hlbWEvbGliL21hbmlmZXN0LnRzI0wxMzcpXG4gICAqL1xuICByZWFkb25seSB2YWx1ZTogc3RyaW5nO1xufVxuXG4vKipcbiAqIE9wdGlvbnMgZm9yIGNvbmZpZ3VyaW5nIHRoZSBEb2NrZXIgY2FjaGUgYmFja2VuZFxuICovXG5leHBvcnQgaW50ZXJmYWNlIENvbnRhaW5lckltYWdlQXNzZXRDYWNoZU9wdGlvbiB7XG4gIC8qKlxuICAgKiBUaGUgdHlwZSBvZiBjYWNoZSB0byB1c2UuXG4gICAqIFJlZmVyIHRvIGh0dHBzOi8vZG9jcy5kb2NrZXIuY29tL2J1aWxkL2NhY2hlL2JhY2tlbmRzLyBmb3IgZnVsbCBsaXN0IG9mIGJhY2tlbmRzLlxuICAgKiBAZGVmYXVsdCAtIHVuc3BlY2lmaWVkXG4gICAqXG4gICAqIEBleGFtcGxlICdyZWdpc3RyeSdcbiAgICovXG4gIHJlYWRvbmx5IHR5cGU6IHN0cmluZztcbiAgLyoqXG4gICAqIEFueSBwYXJhbWV0ZXJzIHRvIHBhc3MgaW50byB0aGUgZG9ja2VyIGNhY2hlIGJhY2tlbmQgY29uZmlndXJhdGlvbi5cbiAgICogUmVmZXIgdG8gaHR0cHM6Ly9kb2NzLmRvY2tlci5jb20vYnVpbGQvY2FjaGUvYmFja2VuZHMvIGZvciBjYWNoZSBiYWNrZW5kIGNvbmZpZ3VyYXRpb24uXG4gICAqIEBkZWZhdWx0IHt9IE5vIG9wdGlvbnMgcHJvdmlkZWRcbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogZGVjbGFyZSBjb25zdCBicmFuY2g6IHN0cmluZztcbiAgICpcbiAgICogY29uc3QgcGFyYW1zID0ge1xuICAgKiAgIHJlZjogYDEyMzQ1Njc4LmRrci5lY3IudXMtd2VzdC0yLmFtYXpvbmF3cy5jb20vY2FjaGU6JHticmFuY2h9YCxcbiAgICogICBtb2RlOiBcIm1heFwiLFxuICAgKiB9O1xuICAgKi9cbiAgcmVhZG9ubHkgcGFyYW1zPzogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfTtcbn1cblxuLyoqXG4gKiBNZXRhZGF0YSBFbnRyeSBzcGVjIGZvciBjb250YWluZXIgaW1hZ2VzLlxuICpcbiAqIEBleGFtcGxlXG4gKiBjb25zdCBlbnRyeSA9IHtcbiAqICAgcGFja2FnaW5nOiAnY29udGFpbmVyLWltYWdlJyxcbiAqICAgcmVwb3NpdG9yeU5hbWU6ICdyZXBvc2l0b3J5LW5hbWUnLFxuICogICBpbWFnZVRhZzogJ3RhZycsXG4gKiB9XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ29udGFpbmVySW1hZ2VBc3NldE1ldGFkYXRhRW50cnkgZXh0ZW5kcyBCYXNlQXNzZXRNZXRhZGF0YUVudHJ5IHtcbiAgLyoqXG4gICAqIFR5cGUgb2YgYXNzZXRcbiAgICovXG4gIHJlYWRvbmx5IHBhY2thZ2luZzogJ2NvbnRhaW5lci1pbWFnZSc7XG5cbiAgLyoqXG4gICAqIEVDUiBSZXBvc2l0b3J5IG5hbWUgYW5kIHJlcG8gZGlnZXN0IChzZXBhcmF0ZWQgYnkgXCJAc2hhMjU2OlwiKSB3aGVyZSB0aGlzXG4gICAqIGltYWdlIGlzIHN0b3JlZC5cbiAgICpcbiAgICogQGRlZmF1bHQgdW5kZWZpbmVkIElmIG5vdCBzcGVjaWZpZWQsIGByZXBvc2l0b3J5TmFtZWAgYW5kIGBpbWFnZVRhZ2AgYXJlXG4gICAqIHJlcXVpcmVkIGJlY2F1c2Ugb3RoZXJ3aXNlIGhvdyB3aWxsIHRoZSBzdGFjayBrbm93IHdoZXJlIHRvIGZpbmQgdGhlIGFzc2V0LFxuICAgKiBoYT9cbiAgICogQGRlcHJlY2F0ZWQgc3BlY2lmeSBgcmVwb3NpdG9yeU5hbWVgIGFuZCBgaW1hZ2VUYWdgIGluc3RlYWQsIGFuZCB0aGVuIHlvdVxuICAgKiBrbm93IHdoZXJlIHRoZSBpbWFnZSB3aWxsIGdvLlxuICAgKi9cbiAgcmVhZG9ubHkgaW1hZ2VOYW1lUGFyYW1ldGVyPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBFQ1IgcmVwb3NpdG9yeSBuYW1lLCBpZiBvbWl0dGVkIGEgZGVmYXVsdCBuYW1lIGJhc2VkIG9uIHRoZSBhc3NldCdzIElEIGlzXG4gICAqIHVzZWQgaW5zdGVhZC4gU3BlY2lmeSB0aGlzIHByb3BlcnR5IGlmIHlvdSBuZWVkIHRvIHN0YXRpY2FsbHkgYWRkcmVzcyB0aGVcbiAgICogaW1hZ2UsIGUuZy4gZnJvbSBhIEt1YmVybmV0ZXMgUG9kLiBOb3RlLCB0aGlzIGlzIG9ubHkgdGhlIHJlcG9zaXRvcnkgbmFtZSxcbiAgICogd2l0aG91dCB0aGUgcmVnaXN0cnkgYW5kIHRoZSB0YWcgcGFydHMuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gdGhpcyBwYXJhbWV0ZXIgaXMgUkVRVUlSRUQgYWZ0ZXIgMS4yMS4wXG4gICAqL1xuICByZWFkb25seSByZXBvc2l0b3J5TmFtZT86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIGRvY2tlciBpbWFnZSB0YWcgdG8gdXNlIGZvciB0YWdnaW5nIHB1c2hlZCBpbWFnZXMuIFRoaXMgZmllbGQgaXNcbiAgICogcmVxdWlyZWQgaWYgYGltYWdlUGFyYW1ldGVyTmFtZWAgaXMgb21taXRlZCAob3RoZXJ3aXNlLCB0aGUgYXBwIHdvbid0IGJlXG4gICAqIGFibGUgdG8gZmluZCB0aGUgaW1hZ2UpLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIHRoaXMgcGFyYW1ldGVyIGlzIFJFUVVJUkVEIGFmdGVyIDEuMjEuMFxuICAgKi9cbiAgcmVhZG9ubHkgaW1hZ2VUYWc/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEJ1aWxkIGFyZ3MgdG8gcGFzcyB0byB0aGUgYGRvY2tlciBidWlsZGAgY29tbWFuZFxuICAgKlxuICAgKiBAZGVmYXVsdCBubyBidWlsZCBhcmdzIGFyZSBwYXNzZWRcbiAgICovXG4gIHJlYWRvbmx5IGJ1aWxkQXJncz86IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH07XG5cbiAgLyoqXG4gICAqIFNTSCBhZ2VudCBzb2NrZXQgb3Iga2V5cyB0byBwYXNzIHRvIHRoZSBgZG9ja2VyIGJ1aWxkYCBjb21tYW5kXG4gICAqXG4gICAqIEBkZWZhdWx0IG5vIHNzaCBhcmcgaXMgcGFzc2VkXG4gICAqL1xuICByZWFkb25seSBidWlsZFNzaD86IHN0cmluZztcblxuICAvKipcbiAgICogQnVpbGQgc2VjcmV0cyB0byBwYXNzIHRvIHRoZSBgZG9ja2VyIGJ1aWxkYCBjb21tYW5kXG4gICAqXG4gICAqIEBkZWZhdWx0IG5vIGJ1aWxkIHNlY3JldHMgYXJlIHBhc3NlZFxuICAgKi9cbiAgcmVhZG9ubHkgYnVpbGRTZWNyZXRzPzogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfTtcblxuICAvKipcbiAgICogRG9ja2VyIHRhcmdldCB0byBidWlsZCB0b1xuICAgKlxuICAgKiBAZGVmYXVsdCBubyBidWlsZCB0YXJnZXRcbiAgICovXG4gIHJlYWRvbmx5IHRhcmdldD86IHN0cmluZztcblxuICAvKipcbiAgICogUGF0aCB0byB0aGUgRG9ja2VyZmlsZSAocmVsYXRpdmUgdG8gdGhlIGRpcmVjdG9yeSkuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gbm8gZmlsZSBpcyBwYXNzZWRcbiAgICovXG4gIHJlYWRvbmx5IGZpbGU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIE5ldHdvcmtpbmcgbW9kZSBmb3IgdGhlIFJVTiBjb21tYW5kcyBkdXJpbmcgYnVpbGQuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gbm8gbmV0d29ya2luZyBtb2RlIHNwZWNpZmllZFxuICAgKi9cbiAgcmVhZG9ubHkgbmV0d29ya01vZGU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFBsYXRmb3JtIHRvIGJ1aWxkIGZvci4gX1JlcXVpcmVzIERvY2tlciBCdWlsZHhfLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIGN1cnJlbnQgbWFjaGluZSBwbGF0Zm9ybVxuICAgKi9cbiAgcmVhZG9ubHkgcGxhdGZvcm0/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIE91dHB1dHMgdG8gcGFzcyB0byB0aGUgYGRvY2tlciBidWlsZGAgY29tbWFuZC5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBubyBvdXRwdXRzIGFyZSBwYXNzZWQgdG8gdGhlIGJ1aWxkIGNvbW1hbmQgKGRlZmF1bHQgb3V0cHV0cyBhcmUgdXNlZClcbiAgICogQHNlZSBodHRwczovL2RvY3MuZG9ja2VyLmNvbS9lbmdpbmUvcmVmZXJlbmNlL2NvbW1hbmRsaW5lL2J1aWxkLyNjdXN0b20tYnVpbGQtb3V0cHV0c1xuICAgKi9cbiAgcmVhZG9ubHkgb3V0cHV0cz86IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBDYWNoZSBmcm9tIG9wdGlvbnMgdG8gcGFzcyB0byB0aGUgYGRvY2tlciBidWlsZGAgY29tbWFuZC5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBubyBjYWNoZSBmcm9tIG9wdGlvbnMgYXJlIHBhc3NlZCB0byB0aGUgYnVpbGQgY29tbWFuZFxuICAgKiBAc2VlIGh0dHBzOi8vZG9jcy5kb2NrZXIuY29tL2J1aWxkL2NhY2hlL2JhY2tlbmRzL1xuICAgKi9cbiAgcmVhZG9ubHkgY2FjaGVGcm9tPzogQ29udGFpbmVySW1hZ2VBc3NldENhY2hlT3B0aW9uW107XG5cbiAgLyoqXG4gICAqIENhY2hlIHRvIG9wdGlvbnMgdG8gcGFzcyB0byB0aGUgYGRvY2tlciBidWlsZGAgY29tbWFuZC5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBubyBjYWNoZSB0byBvcHRpb25zIGFyZSBwYXNzZWQgdG8gdGhlIGJ1aWxkIGNvbW1hbmRcbiAgICogQHNlZSBodHRwczovL2RvY3MuZG9ja2VyLmNvbS9idWlsZC9jYWNoZS9iYWNrZW5kcy9cbiAgICovXG4gIHJlYWRvbmx5IGNhY2hlVG8/OiBDb250YWluZXJJbWFnZUFzc2V0Q2FjaGVPcHRpb247XG5cbiAgLyoqXG4gICAqIERpc2FibGUgdGhlIGNhY2hlIGFuZCBwYXNzIGAtLW5vLWNhY2hlYCB0byB0aGUgYGRvY2tlciBidWlsZGAgY29tbWFuZC5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBjYWNoZSBpcyB1c2VkXG4gICAqL1xuICByZWFkb25seSBjYWNoZURpc2FibGVkPzogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBAc2VlIEFydGlmYWN0TWV0YWRhdGFFbnRyeVR5cGUuQVNTRVRcbiAqL1xuZXhwb3J0IHR5cGUgQXNzZXRNZXRhZGF0YUVudHJ5ID0gRmlsZUFzc2V0TWV0YWRhdGFFbnRyeSB8IENvbnRhaW5lckltYWdlQXNzZXRNZXRhZGF0YUVudHJ5O1xuXG4vLyBUeXBlIGFsaWFzZXMgZm9yIG1ldGFkYXRhIGVudHJpZXMuXG4vLyBVc2VkIHNpbXBseSB0byBhc3NpZ24gbmFtZXMgdG8gZGF0YSB0eXBlcyBmb3IgbW9yZSBjbGFyaXR5LlxuXG4vKipcbiAqIEBzZWUgQXJ0aWZhY3RNZXRhZGF0YUVudHJ5VHlwZS5JTkZPXG4gKiBAc2VlIEFydGlmYWN0TWV0YWRhdGFFbnRyeVR5cGUuV0FSTlxuICogQHNlZSBBcnRpZmFjdE1ldGFkYXRhRW50cnlUeXBlLkVSUk9SXG4gKi9cbmV4cG9ydCB0eXBlIExvZ01lc3NhZ2VNZXRhZGF0YUVudHJ5ID0gc3RyaW5nO1xuXG4vKipcbiAqIEBzZWUgQXJ0aWZhY3RNZXRhZGF0YUVudHJ5VHlwZS5MT0dJQ0FMX0lEXG4gKi9cbmV4cG9ydCB0eXBlIExvZ2ljYWxJZE1ldGFkYXRhRW50cnkgPSBzdHJpbmc7XG5cbi8qKlxuICogQHNlZSBBcnRpZmFjdE1ldGFkYXRhRW50cnlUeXBlLlNUQUNLX1RBR1NcbiAqL1xuZXhwb3J0IHR5cGUgU3RhY2tUYWdzTWV0YWRhdGFFbnRyeSA9IFRhZ1tdO1xuXG4vKipcbiAqIFVuaW9uIHR5cGUgZm9yIGFsbCBtZXRhZGF0YSBlbnRyaWVzIHRoYXQgbWlnaHQgZXhpc3QgaW4gdGhlIG1hbmlmZXN0LlxuICovXG5leHBvcnQgdHlwZSBNZXRhZGF0YUVudHJ5RGF0YSA9XG4gIHwgQXNzZXRNZXRhZGF0YUVudHJ5XG4gIHwgTG9nTWVzc2FnZU1ldGFkYXRhRW50cnlcbiAgfCBMb2dpY2FsSWRNZXRhZGF0YUVudHJ5XG4gIHwgU3RhY2tUYWdzTWV0YWRhdGFFbnRyeTtcblxuLyoqXG4gKiBUeXBlIG9mIGFydGlmYWN0IG1ldGFkYXRhIGVudHJ5LlxuICovXG5leHBvcnQgZW51bSBBcnRpZmFjdE1ldGFkYXRhRW50cnlUeXBlIHtcbiAgLyoqXG4gICAqIEFzc2V0IGluIG1ldGFkYXRhLlxuICAgKi9cbiAgQVNTRVQgPSAnYXdzOmNkazphc3NldCcsXG5cbiAgLyoqXG4gICAqIE1ldGFkYXRhIGtleSB1c2VkIHRvIHByaW50IElORk8tbGV2ZWwgbWVzc2FnZXMgYnkgdGhlIHRvb2xraXQgd2hlbiBhbiBhcHAgaXMgc3ludGhlaXplZC5cbiAgICovXG4gIElORk8gPSAnYXdzOmNkazppbmZvJyxcblxuICAvKipcbiAgICogTWV0YWRhdGEga2V5IHVzZWQgdG8gcHJpbnQgV0FSTklORy1sZXZlbCBtZXNzYWdlcyBieSB0aGUgdG9vbGtpdCB3aGVuIGFuIGFwcCBpcyBzeW50aGVpemVkLlxuICAgKi9cbiAgV0FSTiA9ICdhd3M6Y2RrOndhcm5pbmcnLFxuXG4gIC8qKlxuICAgKiBNZXRhZGF0YSBrZXkgdXNlZCB0byBwcmludCBFUlJPUi1sZXZlbCBtZXNzYWdlcyBieSB0aGUgdG9vbGtpdCB3aGVuIGFuIGFwcCBpcyBzeW50aGVpemVkLlxuICAgKi9cbiAgRVJST1IgPSAnYXdzOmNkazplcnJvcicsXG5cbiAgLyoqXG4gICAqIFJlcHJlc2VudHMgdGhlIENsb3VkRm9ybWF0aW9uIGxvZ2ljYWwgSUQgb2YgYSByZXNvdXJjZSBhdCBhIGNlcnRhaW4gcGF0aC5cbiAgICovXG4gIExPR0lDQUxfSUQgPSAnYXdzOmNkazpsb2dpY2FsSWQnLFxuXG4gIC8qKlxuICAgKiBSZXByZXNlbnRzIHRhZ3Mgb2YgYSBzdGFjay5cbiAgICovXG4gIFNUQUNLX1RBR1MgPSAnYXdzOmNkazpzdGFjay10YWdzJyxcbn1cblxuLyoqXG4gKiBBIG1ldGFkYXRhIGVudHJ5IGluIGEgY2xvdWQgYXNzZW1ibHkgYXJ0aWZhY3QuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTWV0YWRhdGFFbnRyeSB7XG4gIC8qKlxuICAgKiBUaGUgdHlwZSBvZiB0aGUgbWV0YWRhdGEgZW50cnkuXG4gICAqL1xuICByZWFkb25seSB0eXBlOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBkYXRhLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIG5vIGRhdGEuXG4gICAqL1xuICByZWFkb25seSBkYXRhPzogTWV0YWRhdGFFbnRyeURhdGE7XG5cbiAgLyoqXG4gICAqIEEgc3RhY2sgdHJhY2UgZm9yIHdoZW4gdGhlIGVudHJ5IHdhcyBjcmVhdGVkLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIG5vIHRyYWNlLlxuICAgKi9cbiAgcmVhZG9ubHkgdHJhY2U/OiBzdHJpbmdbXTtcbn1cbiJdfQ== + tryFindDef(type) { + return type.type === 'ref' ? this.db.get('typeDefinition', type.reference.$ref) : undefined; + } +} +exports.RichSpecDatabase = RichSpecDatabase; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YWJhc2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdHlwZXMvZGF0YWJhc2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsMkJBQW9DO0FBQ3BDLCtCQUFrQztBQUNsQyx3Q0FBa0Y7QUF1QmxGLFNBQWdCLGFBQWE7SUFDM0IsT0FBTyxJQUFJLGVBQVEsQ0FDakI7UUFDRSxRQUFRLEVBQUUsSUFBQSx1QkFBZ0IsR0FBWSxDQUFDLEtBQUssQ0FBQztZQUMzQyxrQkFBa0IsRUFBRSxJQUFBLGlCQUFVLEVBQUMsb0JBQW9CLEVBQUUsZ0JBQVMsQ0FBQztTQUNoRSxDQUFDO1FBQ0YsTUFBTSxFQUFFLElBQUEsdUJBQWdCLEdBQVUsQ0FBQyxLQUFLLENBQUM7WUFDdkMsSUFBSSxFQUFFLElBQUEsaUJBQVUsRUFBQyxNQUFNLEVBQUUsZ0JBQVMsQ0FBQztTQUNwQyxDQUFDO1FBQ0YsT0FBTyxFQUFFLElBQUEsdUJBQWdCLEdBQVcsQ0FBQyxLQUFLLENBQUM7WUFDekMsSUFBSSxFQUFFLElBQUEsaUJBQVUsRUFBQyxNQUFNLEVBQUUsZ0JBQVMsQ0FBQztZQUNuQyx1QkFBdUIsRUFBRSxJQUFBLGlCQUFVLEVBQUMseUJBQXlCLEVBQUUsZ0JBQVMsQ0FBQztTQUMxRSxDQUFDO1FBQ0YsY0FBYyxFQUFFLElBQUEsdUJBQWdCLEdBQWtCO1FBQ2xELGFBQWEsRUFBRSxJQUFBLHVCQUFnQixHQUF3QjtRQUN2RCxNQUFNLEVBQUUsSUFBQSx1QkFBZ0IsR0FBVSxDQUFDLEtBQUssQ0FBQztZQUN2QyxJQUFJLEVBQUUsSUFBQSxpQkFBVSxFQUFDLE1BQU0sRUFBRSxnQkFBUyxDQUFDO1lBQ25DLFNBQVMsRUFBRSxJQUFBLGlCQUFVLEVBQUMsV0FBVyxFQUFFLGdCQUFTLENBQUM7WUFDN0MsUUFBUSxFQUFFLElBQUEsaUJBQVUsRUFBQyxVQUFVLEVBQUUsZ0JBQVMsQ0FBQztTQUM1QyxDQUFDO1FBQ0YsWUFBWSxFQUFFLElBQUEs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QUFDLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDbkUsQ0FBQztJQUVEOztPQUVHO0lBQ0ksVUFBVSxDQUFDLElBQWtCO1FBQ2xDLE9BQU8sSUFBSSxDQUFDLElBQUksS0FBSyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLGdCQUFnQixFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztJQUM5RixDQUFDO0NBQ0Y7QUE1QkQsNENBNEJDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgcHJvbWlzZXMgYXMgZnMgfSBmcm9tICdmcyc7XG5pbXBvcnQgeyBndW56aXBTeW5jIH0gZnJvbSAnemxpYic7XG5pbXBvcnQgeyBEYXRhYmFzZSwgZW50aXR5Q29sbGVjdGlvbiwgZmllbGRJbmRleCwgc3RyaW5nQ21wIH0gZnJvbSAnQGNka2xhYnMvdHNrYic7XG5pbXBvcnQgeyBJc0F1Z21lbnRlZFJlc291cmNlLCBSZXNvdXJjZUF1Z21lbnRhdGlvbiB9IGZyb20gJy4vYXVnbWVudGF0aW9ucyc7XG5pbXBvcnQge1xuICBEaW1lbnNpb25TZXQsXG4gIE1ldHJpYyxcbiAgUmVzb3VyY2VIYXNEaW1lbnNpb25TZXQsXG4gIFNlcnZpY2VIYXNEaW1lbnNpb25TZXQsXG4gIFVzZXNEaW1lbnNpb25TZXQsXG4gIFJlc291cmNlSGFzTWV0cmljLFxuICBTZXJ2aWNlSGFzTWV0cmljLFxufSBmcm9tICcuL21ldHJpY3MnO1xuaW1wb3J0IHtcbiAgUmVzb3VyY2UsXG4gIFNlcnZpY2UsXG4gIFR5cGVEZWZpbml0aW9uLFxuICBQcm9wZXJ0eVR5cGUsXG4gIFJlZ2lvbixcbiAgSGFzUmVzb3VyY2UsXG4gIFJlZ2lvbkhhc1Jlc291cmNlLFxuICBSZWdpb25IYXNTZXJ2aWNlLFxuICBVc2VzVHlwZSxcbn0gZnJvbSAnLi9yZXNvdXJjZSc7XG5cbmV4cG9ydCBmdW5jdGlvbiBlbXB0eURhdGFiYXNlKCkge1xuICByZXR1cm4gbmV3IERhdGFiYXNlKFxuICAgIHtcbiAgICAgIHJlc291cmNlOiBlbnRpdHlDb2xsZWN0aW9uPFJlc291cmNlPigpLmluZGV4KHtcbiAgICAgICAgY2xvdWRGb3JtYXRpb25UeXBlOiBmaWVsZEluZGV4KCdjbG91ZEZvcm1hdGlvblR5cGUnLCBzdHJpbmdDbXApLFxuICAgICAgfSksXG4gICAgICByZWdpb246IGVudGl0eUNvbGxlY3Rpb248UmVnaW9uPigpLmluZGV4KHtcbiAgICAgICAgbmFtZTogZmllbGRJbmRleCgnbmFtZScsIHN0cmluZ0NtcCksXG4gICAgICB9KSxcbiAgICAgIHNlcnZpY2U6IGVudGl0eUNvbGxlY3Rpb248U2VydmljZT4oKS5pbmRleCh7XG4gICAgICAgIG5hbWU6IGZpZWxkSW5kZXgoJ25hbWUnLCBzdHJpbmdDbXApLFxuICAgICAgICBjbG91ZEZvcm1hdGlvbk5hbWVzcGFjZTogZmllbGRJbmRleCgnY2xvdWRGb3JtYXRpb25OYW1lc3BhY2UnLCBzdHJpbmdDbXApLFxuICAgICAgfSksXG4gICAgICB0eXBlRGVmaW5pdGlvbjogZW50aXR5Q29sbGVjdGlvbjxUeXBlRGVmaW5pdGlvbj4oKSxcbiAgICAgIGF1Z21lbnRhdGlvbnM6IGVudGl0eUNvbGxlY3Rpb248UmVzb3VyY2VBdWdtZW50YXRpb24+KCksXG4gICAgICBtZXRyaWM6IGVudGl0eUNvbGxlY3Rpb248TWV0cmljPigpLmluZGV4KHtcbiAgICAgICAgbmFtZTogZmllbGRJbmRleCgnbmFtZScsIHN0cmluZ0NtcCksXG4gICAgICAgIG5hbWVzcGFjZTogZmllbGRJbmRleCgnbmFtZXNwYWNlJywgc3RyaW5nQ21wKSxcbiAgICAgICAgZGVkdXBLZXk6IGZpZWxkSW5kZXgoJ2RlZHVwS2V5Jywgc3RyaW5nQ21wKSxcbiAgICAgIH0pLFxuICAgICAgZGltZW5zaW9uU2V0OiBlbnRpdHlDb2xsZWN0aW9uPERpbWVuc2lvblNldD4oKS5pbmRleCh7XG4gICAgICAgIGRlZHVwS2V5OiBmaWVsZEluZGV4KCdkZWR1cEtleScsIHN0cmluZ0NtcCksXG4gICAgICB9KSxcbiAgICB9LFxuICAgIChyKSA9PiAoe1xuICAgICAgaGFzUmVzb3VyY2U6IHIucmVsYXRpb25zaGlwPEhhc1Jlc291cmNlPignc2VydmljZScsICdyZXNvdXJjZScpLFxuICAgICAgcmVnaW9uSGFzUmVzb3VyY2U6IHIucmVsYXRpb25zaGlwPFJlZ2lvbkhhc1Jlc291cmNlPigncmVnaW9uJywgJ3Jlc291cmNlJyksXG4gICAgICByZWdpb25IYXNTZXJ2aWNlOiByLnJlbGF0aW9uc2hpcDxSZWdpb25IYXNTZXJ2aWNlPigncmVnaW9uJywgJ3NlcnZpY2UnKSxcbiAgICAgIHVzZXNUeXBlOiByLnJlbGF0aW9uc2hpcDxVc2VzVHlwZT4oJ3Jlc291cmNlJywgJ3R5cGVEZWZpbml0aW9uJyksXG4gICAgICBpc0F1Z21lbnRlZDogci5yZWxhdGlvbnNoaXA8SXNBdWdtZW50ZWRSZXNvdXJjZT4oJ3Jlc291cmNlJywgJ2F1Z21lbnRhdGlvbnMnKSxcbiAgICAgIHVzZXNEaW1lbnNpb25TZXQ6IHIucmVsYXRpb25zaGlwPFVzZXNEaW1lbnNpb25TZXQ+KCdtZXRyaWMnLCAnZGltZW5zaW9uU2V0JyksXG4gICAgICByZXNvdXJjZUhhc01ldHJpYzogci5yZWxhdGlvbnNoaXA8UmVzb3VyY2VIYXNNZXRyaWM+KCdyZXNvdXJjZScsICdtZXRyaWMnKSxcbiAgICAgIHNlcnZpY2VIYXNNZXRyaWM6IHIucmVsYXRpb25zaGlwPFNlcnZpY2VIYXNNZXRyaWM+KCdzZXJ2aWNlJywgJ21ldHJpYycpLFxuICAgICAgcmVzb3VyY2VIYXNEaW1lbnNpb25TZXQ6IHIucmVsYXRpb25zaGlwPFJlc291cmNlSGFzRGltZW5zaW9uU2V0PigncmVzb3VyY2UnLCAnZGltZW5zaW9uU2V0JyksXG4gICAgICBzZXJ2aWNlSGFzRGltZW5zaW9uU2V0OiByLnJlbGF0aW9uc2hpcDxTZXJ2aWNlSGFzRGltZW5zaW9uU2V0Pignc2VydmljZScsICdkaW1lbnNpb25TZXQnKSxcbiAgICB9KSxcbiAgKTtcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGxvYWREYXRhYmFzZShwYXRoVG9EYjogc3RyaW5nKSB7XG4gIGNvbnN0IGRiID0gZW1wdHlEYXRhYmFzZSgpO1xuICBjb25zdCBjb250ZW50cyA9IGF3YWl0IGZzLnJlYWRGaWxlKHBhdGhUb0RiKTtcbiAgY29uc3QganNvbiA9IHBhdGhUb0RiLmVuZHNXaXRoKCcuZ3onKSA/IGd1bnppcFN5bmMoY29udGVudHMpLnRvU3RyaW5nKCd1dGYtOCcpIDogY29udGVudHMudG9TdHJpbmcoJ3V0Zi04Jyk7XG4gIGRiLmxvYWQoSlNPTi5wYXJzZShqc29uKSk7XG4gIHJldHVybiBkYjtcbn1cblxuZXhwb3J0IHR5cGUgU3BlY0RhdGFiYXNlID0gUmV0dXJuVHlwZTx0eXBlb2YgZW1wdHlEYXRhYmFzZT47XG5cbi8qKlxuICogSGVscGVycyBmb3Igd29ya2luZyB3aXRoIGEgU3BlY0RhdGFiYXNlXG4gKi9cbmV4cG9ydCBjbGFzcyBSaWNoU3BlY0RhdGFiYXNlIHtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBkYjogU3BlY0RhdGFiYXNlKSB7fVxuXG4gIC8qKlxuICAgKiBGaW5kIGFsbCByZXNvdXJjZXMgb2YgYSBnaXZlbiB0eXBlXG4gICAqL1xuICBwdWJsaWMgcmVzb3VyY2VCeVR5cGUoY2ZuVHlwZTogc3RyaW5nLCBvcGVyYXRpb24gPSAncmVzb3VyY2VCeVR5cGUnKTogUmVzb3VyY2Uge1xuICAgIGNvbnN0IHJlcyA9IHRoaXMuZGIubG9va3VwKCdyZXNvdXJjZScsICdjbG91ZEZvcm1hdGlvblR5cGUnLCAnZXF1YWxzJywgY2ZuVHlwZSk7XG4gICAgaWYgKHJlcy5sZW5ndGggPT09IDApIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgJHtvcGVyYXRpb259OiBubyBzdWNoIHJlc291cmNlOiAke2NmblR5cGV9YCk7XG4gICAgfVxuICAgIHJldHVybiByZXNbMF07XG4gIH1cblxuICAvKipcbiAgICogQWxsIHR5cGUgZGVmaW5pdGlvbnMgdXNlZCBieSBhIGNlcnRhaW4gcmVzb3VyY2VcbiAgICovXG4gIHB1YmxpYyByZXNvdXJjZVR5cGVEZWZzKGNmblR5cGU6IHN0cmluZyk6IHJlYWRvbmx5IFR5cGVEZWZpbml0aW9uW10ge1xuICAgIGNvbnN0IHJlc291cmNlID0gdGhpcy5kYi5sb29rdXAoJ3Jlc291cmNlJywgJ2Nsb3VkRm9ybWF0aW9uVHlwZScsICdlcXVhbHMnLCBjZm5UeXBlKS5vbmx5KCk7XG4gICAgcmV0dXJuIHRoaXMuZGIuZm9sbG93KCd1c2VzVHlwZScsIHJlc291cmNlKS5tYXAoKHgpID0+IHguZW50aXR5KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBGaW5kIGEgdHlwZSBkZWZpbml0aW9uIGZyb20gYSBnaXZlbiBwcm9wZXJ0eSB0eXBlXG4gICAqL1xuICBwdWJsaWMgdHJ5RmluZERlZih0eXBlOiBQcm9wZXJ0eVR5cGUpOiBUeXBlRGVmaW5pdGlvbiB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHR5cGUudHlwZSA9PT0gJ3JlZicgPyB0aGlzLmRiLmdldCgndHlwZURlZmluaXRpb24nLCB0eXBlLnJlZmVyZW5jZS4kcmVmKSA6IHVuZGVmaW5lZDtcbiAgfVxufVxuIl19 /***/ }), -/***/ 9129: +/***/ 29663: /***/ ((__unused_webpack_module, exports) => { "use strict"; Object.defineProperty(exports, "__esModule", ({ value: true })); -exports.ArtifactType = void 0; -/** - * Type of cloud artifact. - */ -var ArtifactType; -(function (ArtifactType) { - /** - * Stub required because of JSII. - */ - ArtifactType["NONE"] = "none"; - /** - * The artifact is an AWS CloudFormation stack. - */ - ArtifactType["AWS_CLOUDFORMATION_STACK"] = "aws:cloudformation:stack"; - /** - * The artifact contains the CDK application's construct tree. - */ - ArtifactType["CDK_TREE"] = "cdk:tree"; - /** - * Manifest for all assets in the Cloud Assembly - */ - ArtifactType["ASSET_MANIFEST"] = "cdk:asset-manifest"; - /** - * Nested Cloud Assembly - */ - ArtifactType["NESTED_CLOUD_ASSEMBLY"] = "cdk:cloud-assembly"; -})(ArtifactType || (exports.ArtifactType = ArtifactType = {})); -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NoZW1hLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsic2NoZW1hLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUlBOztHQUVHO0FBQ0gsSUFBWSxZQXlCWDtBQXpCRCxXQUFZLFlBQVk7SUFDdEI7O09BRUc7SUFDSCw2QkFBYSxDQUFBO0lBRWI7O09BRUc7SUFDSCxxRUFBcUQsQ0FBQTtJQUVyRDs7T0FFRztJQUNILHFDQUFxQixDQUFBO0lBRXJCOztPQUVHO0lBQ0gscURBQXFDLENBQUE7SUFFckM7O09BRUc7SUFDSCw0REFBNEMsQ0FBQTtBQUM5QyxDQUFDLEVBekJXLFlBQVksNEJBQVosWUFBWSxRQXlCdkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBcnRpZmFjdFByb3BlcnRpZXMgfSBmcm9tICcuL2FydGlmYWN0LXNjaGVtYSc7XG5pbXBvcnQgeyBDb250ZXh0UHJvdmlkZXIsIENvbnRleHRRdWVyeVByb3BlcnRpZXMgfSBmcm9tICcuL2NvbnRleHQtcXVlcmllcyc7XG5pbXBvcnQgeyBNZXRhZGF0YUVudHJ5IH0gZnJvbSAnLi9tZXRhZGF0YS1zY2hlbWEnO1xuXG4vKipcbiAqIFR5cGUgb2YgY2xvdWQgYXJ0aWZhY3QuXG4gKi9cbmV4cG9ydCBlbnVtIEFydGlmYWN0VHlwZSB7XG4gIC8qKlxuICAgKiBTdHViIHJlcXVpcmVkIGJlY2F1c2Ugb2YgSlNJSS5cbiAgICovXG4gIE5PTkUgPSAnbm9uZScsIC8vIHJlcXVpcmVkIGR1ZSB0byBhIGpzaWkgYnVnXG5cbiAgLyoqXG4gICAqIFRoZSBhcnRpZmFjdCBpcyBhbiBBV1MgQ2xvdWRGb3JtYXRpb24gc3RhY2suXG4gICAqL1xuICBBV1NfQ0xPVURGT1JNQVRJT05fU1RBQ0sgPSAnYXdzOmNsb3VkZm9ybWF0aW9uOnN0YWNrJyxcblxuICAvKipcbiAgICogVGhlIGFydGlmYWN0IGNvbnRhaW5zIHRoZSBDREsgYXBwbGljYXRpb24ncyBjb25zdHJ1Y3QgdHJlZS5cbiAgICovXG4gIENES19UUkVFID0gJ2Nkazp0cmVlJyxcblxuICAvKipcbiAgICogTWFuaWZlc3QgZm9yIGFsbCBhc3NldHMgaW4gdGhlIENsb3VkIEFzc2VtYmx5XG4gICAqL1xuICBBU1NFVF9NQU5JRkVTVCA9ICdjZGs6YXNzZXQtbWFuaWZlc3QnLFxuXG4gIC8qKlxuICAgKiBOZXN0ZWQgQ2xvdWQgQXNzZW1ibHlcbiAgICovXG4gIE5FU1RFRF9DTE9VRF9BU1NFTUJMWSA9ICdjZGs6Y2xvdWQtYXNzZW1ibHknLFxufVxuXG4vKipcbiAqIEluZm9ybWF0aW9uIGFib3V0IHRoZSBhcHBsaWNhdGlvbidzIHJ1bnRpbWUgY29tcG9uZW50cy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSdW50aW1lSW5mbyB7XG4gIC8qKlxuICAgKiBUaGUgbGlzdCBvZiBsaWJyYXJpZXMgbG9hZGVkIGluIHRoZSBhcHBsaWNhdGlvbiwgYXNzb2NpYXRlZCB3aXRoIHRoZWlyIHZlcnNpb25zLlxuICAgKi9cbiAgcmVhZG9ubHkgbGlicmFyaWVzOiB7IFtuYW1lOiBzdHJpbmddOiBzdHJpbmcgfTtcbn1cblxuLyoqXG4gKiBSZXByZXNlbnRzIGEgbWlzc2luZyBwaWVjZSBvZiBjb250ZXh0LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIE1pc3NpbmdDb250ZXh0IHtcbiAgLyoqXG4gICAqIFRoZSBtaXNzaW5nIGNvbnRleHQga2V5LlxuICAgKi9cbiAgcmVhZG9ubHkga2V5OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBwcm92aWRlciBmcm9tIHdoaWNoIHdlIGV4cGVjdCB0aGlzIGNvbnRleHQga2V5IHRvIGJlIG9idGFpbmVkLlxuICAgKi9cbiAgcmVhZG9ubHkgcHJvdmlkZXI6IENvbnRleHRQcm92aWRlcjtcblxuICAvKipcbiAgICogQSBzZXQgb2YgcHJvdmlkZXItc3BlY2lmaWMgb3B0aW9ucy5cbiAgICovXG4gIHJlYWRvbmx5IHByb3BzOiBDb250ZXh0UXVlcnlQcm9wZXJ0aWVzO1xufVxuXG4vKipcbiAqIEEgbWFuaWZlc3QgZm9yIGEgc2luZ2xlIGFydGlmYWN0IHdpdGhpbiB0aGUgY2xvdWQgYXNzZW1ibHkuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQXJ0aWZhY3RNYW5pZmVzdCB7XG4gIC8qKlxuICAgKiBUaGUgdHlwZSBvZiBhcnRpZmFjdC5cbiAgICovXG4gIHJlYWRvbmx5IHR5cGU6IEFydGlmYWN0VHlwZTtcblxuICAvKipcbiAgICogVGhlIGVudmlyb25tZW50IGludG8gd2hpY2ggdGhpcyBhcnRpZmFjdCBpcyBkZXBsb3llZC5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBubyBlbnZyaW9ubWVudC5cbiAgICovXG4gIHJlYWRvbmx5IGVudmlyb25tZW50Pzogc3RyaW5nOyAvLyBmb3JtYXQ6IGF3czovL2FjY291bnQvcmVnaW9uXG5cbiAgLyoqXG4gICAqIEFzc29jaWF0ZWQgbWV0YWRhdGEuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gbm8gbWV0YWRhdGEuXG4gICAqL1xuICByZWFkb25seSBtZXRhZGF0YT86IHsgW3BhdGg6IHN0cmluZ106IE1ldGFkYXRhRW50cnlbXSB9O1xuXG4gIC8qKlxuICAgKiBJRHMgb2YgYXJ0aWZhY3RzIHRoYXQgbXVzdCBiZSBkZXBsb3llZCBiZWZvcmUgdGhpcyBhcnRpZmFjdC5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBubyBkZXBlbmRlbmNpZXMuXG4gICAqL1xuICByZWFkb25seSBkZXBlbmRlbmNpZXM/OiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogVGhlIHNldCBvZiBwcm9wZXJ0aWVzIGZvciB0aGlzIGFydGlmYWN0IChkZXBlbmRzIG9uIHR5cGUpXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gbm8gcHJvcGVydGllcy5cbiAgICovXG4gIHJlYWRvbmx5IHByb3BlcnRpZXM/OiBBcnRpZmFjdFByb3BlcnRpZXM7XG5cbiAgLyoqXG4gICAqIEEgc3RyaW5nIHRoYXQgcmVwcmVzZW50cyB0aGlzIGFydGlmYWN0LiBTaG91bGQgb25seSBiZSB1c2VkIGluIHVzZXIgaW50ZXJmYWNlcy5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBubyBkaXNwbGF5IG5hbWVcbiAgICovXG4gIHJlYWRvbmx5IGRpc3BsYXlOYW1lPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIEEgbWFuaWZlc3Qgd2hpY2ggZGVzY3JpYmVzIHRoZSBjbG91ZCBhc3NlbWJseS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBc3NlbWJseU1hbmlmZXN0IHtcbiAgLyoqXG4gICAqIFByb3RvY29sIHZlcnNpb25cbiAgICovXG4gIHJlYWRvbmx5IHZlcnNpb246IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHNldCBvZiBhcnRpZmFjdHMgaW4gdGhpcyBhc3NlbWJseS5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBubyBhcnRpZmFjdHMuXG4gICAqL1xuICByZWFkb25seSBhcnRpZmFjdHM/OiB7IFtpZDogc3RyaW5nXTogQXJ0aWZhY3RNYW5pZmVzdCB9O1xuXG4gIC8qKlxuICAgKiBNaXNzaW5nIGNvbnRleHQgaW5mb3JtYXRpb24uIElmIHRoaXMgZmllbGQgaGFzIHZhbHVlcywgaXQgbWVhbnMgdGhhdCB0aGVcbiAgICogY2xvdWQgYXNzZW1ibHkgaXMgbm90IGNvbXBsZXRlIGFuZCBzaG91bGQgbm90IGJlIGRlcGxveWVkLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIG5vIG1pc3NpbmcgY29udGV4dC5cbiAgICovXG4gIHJlYWRvbmx5IG1pc3Npbmc/OiBNaXNzaW5nQ29udGV4dFtdO1xuXG4gIC8qKlxuICAgKiBSdW50aW1lIGluZm9ybWF0aW9uLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIG5vIGluZm8uXG4gICAqL1xuICByZWFkb25seSBydW50aW1lPzogUnVudGltZUluZm87XG59XG4iXX0= +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlmZi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90eXBlcy9kaWZmLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBdHRyaWJ1dGUsIFByb3BlcnR5LCBSZXNvdXJjZSwgU2VydmljZSwgVHlwZURlZmluaXRpb24gfSBmcm9tICcuL3Jlc291cmNlJztcblxuZXhwb3J0IGludGVyZmFjZSBTcGVjRGF0YWJhc2VEaWZmIHtcbiAgc2VydmljZXM6IE1hcERpZmY8U2VydmljZSwgVXBkYXRlZFNlcnZpY2U+O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIExpc3REaWZmPEUsIEVEPiB7XG4gIHJlYWRvbmx5IGFkZGVkPzogRVtdO1xuICByZWFkb25seSByZW1vdmVkPzogRVtdO1xuICByZWFkb25seSB1cGRhdGVkPzogRURbXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBNYXBEaWZmPEUsIEVEPiB7XG4gIHJlYWRvbmx5IGFkZGVkPzogUmVjb3JkPHN0cmluZywgRT47XG4gIHJlYWRvbmx5IHJlbW92ZWQ/OiBSZWNvcmQ8c3RyaW5nLCBFPjtcbiAgcmVhZG9ubHkgdXBkYXRlZD86IFJlY29yZDxzdHJpbmcsIEVEPjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBVcGRhdGVkU2VydmljZSB7XG4gIHJlYWRvbmx5IG5hbWU/OiBTY2FsYXJEaWZmPFNlcnZpY2VbJ25hbWUnXT47XG4gIHJlYWRvbmx5IHNob3J0TmFtZT86IFNjYWxhckRpZmY8U2VydmljZVsnc2hvcnROYW1lJ10+O1xuICByZWFkb25seSBjYXBpdGFsaXplZD86IFNjYWxhckRpZmY8U2VydmljZVsnY2FwaXRhbGl6ZWQnXT47XG4gIHJlYWRvbmx5IGNsb3VkRm9ybWF0aW9uTmFtZXNwYWNlPzogU2NhbGFyRGlmZjxTZXJ2aWNlWydjbG91ZEZvcm1hdGlvbk5hbWVzcGFjZSddPjtcbiAgcmVhZG9ubHkgcmVzb3VyY2VEaWZmPzogTWFwRGlmZjxSZXNvdXJjZSwgVXBkYXRlZFJlc291cmNlPjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBVcGRhdGVkUmVzb3VyY2Uge1xuICByZWFkb25seSBuYW1lPzogU2NhbGFyRGlmZjxzdHJpbmc+O1xuICByZWFkb25seSBjbG91ZEZvcm1hdGlvblR5cGU/OiBTY2FsYXJEaWZmPHN0cmluZz47XG4gIHJlYWRvbmx5IGNsb3VkRm9ybWF0aW9uVHJhbnNmb3JtPzogU2NhbGFyRGlmZjxzdHJpbmc+O1xuICByZWFkb25seSBkb2N1bWVudGF0aW9uPzogU2NhbGFyRGlmZjxzdHJpbmc+O1xuICByZWFkb25seSBwcm9wZXJ0aWVzPzogTWFwRGlmZjxQcm9wZXJ0eSwgVXBkYXRlZFByb3BlcnR5PjtcbiAgcmVhZG9ubHkgYXR0cmlidXRlcz86IE1hcERpZmY8QXR0cmlidXRlLCBVcGRhdGVkQXR0cmlidXRlPjtcbiAgcmVhZG9ubHkgaWRlbnRpZmllcj86IFNjYWxhckRpZmY8UmVzb3VyY2VbJ2lkZW50aWZpZXInXT47XG4gIHJlYWRvbmx5IGlzU3RhdGVmdWw/OiBTY2FsYXJEaWZmPGJvb2xlYW4+O1xuICByZWFkb25seSB0YWdJbmZvcm1hdGlvbj86IFNjYWxhckRpZmY8UmVzb3VyY2VbJ3RhZ0luZm9ybWF0aW9uJ10+O1xuICByZWFkb25seSBzY3J1dGluaXphYmxlPzogU2NhbGFyRGlmZjxSZXNvdXJjZVsnc2NydXRpbml6YWJsZSddPjtcbiAgcmVhZG9ubHkgdHlwZURlZmluaXRpb25EaWZmPzogTWFwRGlmZjxUeXBlRGVmaW5pdGlvbiwgVXBkYXRlZFR5cGVEZWZpbml0aW9uPjtcbiAgcmVhZG9ubHkgcHJpbWFyeUlkZW50aWZpZXI/OiBMaXN0RGlmZjxzdHJpbmcsIHZvaWQ+O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFVwZGF0ZWRQcm9wZXJ0eSB7XG4gIHJlYWRvbmx5IG9sZDogUHJvcGVydHk7XG4gIHJlYWRvbmx5IG5ldzogUHJvcGVydHk7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVXBkYXRlZEF0dHJpYnV0ZSB7XG4gIHJlYWRvbmx5IG9sZDogQXR0cmlidXRlO1xuICByZWFkb25seSBuZXc6IEF0dHJpYnV0ZTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBVcGRhdGVkVHlwZURlZmluaXRpb24ge1xuICByZWFkb25seSBuYW1lPzogU2NhbGFyRGlmZjxzdHJpbmc+O1xuICByZWFkb25seSBkb2N1bWVudGF0aW9uPzogU2NhbGFyRGlmZjxzdHJpbmc+O1xuICByZWFkb25seSBwcm9wZXJ0aWVzPzogTWFwRGlmZjxQcm9wZXJ0eSwgVXBkYXRlZFByb3BlcnR5PjtcbiAgcmVhZG9ubHkgbXVzdFJlbmRlckZvckJ3Q29tcGF0PzogU2NhbGFyRGlmZjxib29sZWFuPjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTY2FsYXJEaWZmPEE+IHtcbiAgcmVhZG9ubHkgb2xkPzogQTtcbiAgcmVhZG9ubHkgbmV3PzogQTtcbn1cbiJdfQ== /***/ }), -/***/ 70606: +/***/ 51491: +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWV0cmljcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90eXBlcy9tZXRyaWNzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFbnRpdHksIFJlbGF0aW9uc2hpcCB9IGZyb20gJ0BjZGtsYWJzL3Rza2InO1xuaW1wb3J0IHsgUmVzb3VyY2UsIFNlcnZpY2UgfSBmcm9tICcuL3Jlc291cmNlJztcblxuLyoqXG4gKiBBIE1ldHJpYyBEaW1lbnNpb24gKG5vdCBhbiBlbnRpdHkpXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRGltZW5zaW9uIHtcbiAgLyoqXG4gICAqIE5hbWUgb2YgdGhlIGRpbWVuc2lvblxuICAgKi9cbiAgcmVhZG9ubHkgbmFtZTogc3RyaW5nO1xuICAvKipcbiAgICogQSBwb3RlbnRpYWwgdmFsdWUgZm9yIHRoaXMgZGltZW5zaW9uXG4gICAqL1xuICByZWFkb25seSB2YWx1ZT86IHN0cmluZztcbn1cblxuLyoqXG4gKiBBIHNldCBvZiBNZXRyaWMgRGltZW5zaW9uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRGltZW5zaW9uU2V0IGV4dGVuZHMgRW50aXR5IHtcbiAgLyoqXG4gICAqIEEgdW5pcXVlIHZhbHVlIHVzZWQgdG8gZGVkdXBsaWNhdGUgdGhlIGVudGl0eVxuICAgKi9cbiAgZGVkdXBLZXk6IHN0cmluZztcbiAgLyoqXG4gICAqIFRoZSBkaW1lbnNpb25zIGluIHRoaXMgc2V0XG4gICAqL1xuICBkaW1lbnNpb25zOiBEaW1lbnNpb25bXTtcbn1cbmV4cG9ydCB0eXBlIFJlc291cmNlSGFzRGltZW5zaW9uU2V0ID0gUmVsYXRpb25zaGlwPFJlc291cmNlLCBEaW1lbnNpb25TZXQ+O1xuZXhwb3J0IHR5cGUgU2VydmljZUhhc0RpbWVuc2lvblNldCA9IFJlbGF0aW9uc2hpcDxTZXJ2aWNlLCBEaW1lbnNpb25TZXQ+O1xuXG4vKipcbiAqIEEgQ2xvdWRXYXRjaCBNZXRyaWNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBNZXRyaWMgZXh0ZW5kcyBFbnRpdHkge1xuICAvKipcbiAgICogTWV0cmljIG5hbWVzcGFjZVxuICAgKi9cbiAgcmVhZG9ubHkgbmFtZXNwYWNlOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBOYW1lIG9mIHRoZSBtZXRyaWNcbiAgICovXG4gIHJlYWRvbmx5IG5hbWU6IHN0cmluZztcbiAgLyoqXG4gICAqIERlZmF1bHQgKHN1Z2dlc3RlZCkgc3RhdGlzdGljIGZvciB0aGlzIG1ldHJpY1xuICAgKi9cbiAgcmVhZG9ubHkgc3RhdGlzdGljOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBBIHVuaXF1ZSB2YWx1ZSB1c2VkIHRvIGRlZHVwbGljYXRlIHRoZSBlbnRpdHlcbiAgICovXG4gIHJlYWRvbmx5IGRlZHVwS2V5OiBzdHJpbmc7XG59XG5leHBvcnQgdHlwZSBVc2VzRGltZW5zaW9uU2V0ID0gUmVsYXRpb25zaGlwPE1ldHJpYywgRGltZW5zaW9uU2V0PjtcbmV4cG9ydCB0eXBlIFJlc291cmNlSGFzTWV0cmljID0gUmVsYXRpb25zaGlwPFJlc291cmNlLCBNZXRyaWM+O1xuZXhwb3J0IHR5cGUgU2VydmljZUhhc01ldHJpYyA9IFJlbGF0aW9uc2hpcDxTZXJ2aWNlLCBNZXRyaWM+O1xuIl19 + +/***/ }), + +/***/ 33652: /***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { "use strict"; -var _a; Object.defineProperty(exports, "__esModule", ({ value: true })); -exports.Manifest = exports.VERSION_MISMATCH = void 0; -const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti"); -const fs = __nccwpck_require__(79896); -const jsonschema = __nccwpck_require__(75282); -const semver = __nccwpck_require__(22955); -const assembly = __nccwpck_require__(77144); -/* eslint-disable @typescript-eslint/no-var-requires */ -/* eslint-disable @typescript-eslint/no-require-imports */ -// this prefix is used by the CLI to identify this specific error. -// in which case we want to instruct the user to upgrade his CLI. -// see exec.ts#createAssembly -exports.VERSION_MISMATCH = 'Cloud assembly schema version mismatch'; -const ASSETS_SCHEMA = __nccwpck_require__(34021); -const ASSEMBLY_SCHEMA = __nccwpck_require__(14454); -const INTEG_SCHEMA = __nccwpck_require__(1459); -/** - * Version is shared for both manifests - */ -const SCHEMA_VERSION = (__nccwpck_require__(49909)/* .version */ .rE); -/** - * Protocol utility class. - */ -class Manifest { +exports.RichPropertyType = exports.PropertyScrutinyType = exports.ResourceScrutinyType = exports.isCollectionType = exports.Deprecation = exports.RichAttribute = exports.RichProperty = exports.RichTypedField = void 0; +const sorting_1 = __nccwpck_require__(61917); +class RichTypedField { + constructor(field) { + this.field = field; + if (field === undefined) { + throw new Error('Field is undefined'); + } + } + types() { + var _a; + return [...((_a = this.field.previousTypes) !== null && _a !== void 0 ? _a : []), this.field.type]; + } /** - * Validates and saves the cloud assembly manifest to file. + * Update the type of this property with a new type * - * @param manifest - manifest. - * @param filePath - output file path. + * Only if it's not in the set of types already. */ - static saveAssemblyManifest(manifest, filePath) { - Manifest.saveManifest(manifest, filePath, ASSEMBLY_SCHEMA, Manifest.patchStackTagsOnWrite); + updateType(type) { + const richType = new RichPropertyType(type); + // Only add this type if we don't already have it. We are only doing comparisons where 'integer' and 'number' + // are treated the same, for all other types we need strict equality. We used to use 'assignableTo' as a + // condition, but these types will be rendered in both co- and contravariant positions, and so we really can't + // do much better than full equality. + if (this.types().some((t) => richType.equals(t))) { + // Nothing to do, type is already in there. + return false; + } + // Special case: if the new type is `string` and the old type is `date-time`, we assume this is + // the same type but we dropped some formatting information. No need to make this a separate type. + if (type.type === 'string' && this.types().some((t) => t.type === 'date-time')) { + return false; + } + if (!this.field.previousTypes) { + this.field.previousTypes = []; + } + this.field.previousTypes.push(this.field.type); + this.field.type = type; + return true; + } +} +exports.RichTypedField = RichTypedField; +class RichProperty extends RichTypedField { + constructor(property) { + super(property); + } +} +exports.RichProperty = RichProperty; +class RichAttribute extends RichTypedField { + constructor(attr) { + super(attr); } +} +exports.RichAttribute = RichAttribute; +var Deprecation; +(function (Deprecation) { /** - * Load and validates the cloud assembly manifest from file. - * - * @param filePath - path to the manifest file. + * Not deprecated */ - static loadAssemblyManifest(filePath, options) { - return Manifest.loadManifest(filePath, ASSEMBLY_SCHEMA, Manifest.patchStackTagsOnRead, options); - } + Deprecation["NONE"] = "NONE"; /** - * Validates and saves the asset manifest to file. - * - * @param manifest - manifest. - * @param filePath - output file path. + * Warn about use */ - static saveAssetManifest(manifest, filePath) { - Manifest.saveManifest(manifest, filePath, ASSETS_SCHEMA, Manifest.patchStackTagsOnRead); - } + Deprecation["WARN"] = "WARN"; /** - * Load and validates the asset manifest from file. + * Do not emit the value at all * - * @param filePath - path to the manifest file. + * (Handle properties that were incorrectly added to the spec) */ - static loadAssetManifest(filePath) { - return this.loadManifest(filePath, ASSETS_SCHEMA); - } + Deprecation["IGNORE"] = "IGNORE"; +})(Deprecation = exports.Deprecation || (exports.Deprecation = {})); +function isCollectionType(x) { + return x.type === 'array' || x.type === 'map'; +} +exports.isCollectionType = isCollectionType; +/** + * Mark a resource as a resource that needs additional scrutiy when added, removed or changed + * + * Used to mark resources that represent security policies. + */ +var ResourceScrutinyType; +(function (ResourceScrutinyType) { /** - * Validates and saves the integ manifest to file. + * No additional scrutiny + */ + ResourceScrutinyType["None"] = "None"; + /** + * An externally attached policy document to a resource * - * @param manifest - manifest. - * @param filePath - output file path. + * (Common for SQS, SNS, S3, ...) */ - static saveIntegManifest(manifest, filePath) { - Manifest.saveManifest(manifest, filePath, INTEG_SCHEMA); - } + ResourceScrutinyType["ResourcePolicyResource"] = "ResourcePolicyResource"; /** - * Load and validates the integ manifest from file. + * This is an IAM policy on an identity resource * - * @param filePath - path to the manifest file. + * (Basically saying: this is AWS::IAM::Policy) */ - static loadIntegManifest(filePath) { - return this.loadManifest(filePath, INTEG_SCHEMA); - } + ResourceScrutinyType["IdentityPolicyResource"] = "IdentityPolicyResource"; /** - * Fetch the current schema version number. + * This is a Lambda Permission policy */ - static version() { - return SCHEMA_VERSION; - } + ResourceScrutinyType["LambdaPermission"] = "LambdaPermission"; /** - * Deprecated - * @deprecated use `saveAssemblyManifest()` + * An ingress rule object */ - static save(manifest, filePath) { - return this.saveAssemblyManifest(manifest, filePath); - } + ResourceScrutinyType["IngressRuleResource"] = "IngressRuleResource"; /** - * Deprecated - * @deprecated use `loadAssemblyManifest()` + * A set of egress rules */ - static load(filePath) { - return this.loadAssemblyManifest(filePath); - } - static validate(manifest, schema, options) { - function parseVersion(version) { - const ver = semver.valid(version); - if (!ver) { - throw new Error(`Invalid semver string: "${version}"`); - } - return ver; - } - const maxSupported = semver.major(parseVersion(Manifest.version())); - const actual = parseVersion(manifest.version); - // first validate the version should be accepted. all versions within the same minor version are fine - if (maxSupported < semver.major(actual) && !options?.skipVersionCheck) { - // we use a well known error prefix so that the CLI can identify this specific error - // and print some more context to the user. - throw new Error(`${exports.VERSION_MISMATCH}: Maximum schema version supported is ${maxSupported}.x.x, but found ${actual}`); - } - // now validate the format is good. - const validator = new jsonschema.Validator(); - const result = validator.validate(manifest, schema, { - // does exist but is not in the TypeScript definitions - nestedErrors: true, - allowUnknownAttributes: false, - preValidateProperty: Manifest.validateAssumeRoleAdditionalOptions, - }); - let errors = result.errors; - if (options?.skipEnumCheck) { - // Enum validations aren't useful when - errors = stripEnumErrors(errors); - } - if (errors.length > 0) { - throw new Error(`Invalid assembly manifest:\n${errors.map((e) => e.stack).join('\n')}`); - } - } - static saveManifest(manifest, filePath, schema, preprocess) { - let withVersion = { ...manifest, version: Manifest.version() }; - Manifest.validate(withVersion, schema); - if (preprocess) { - withVersion = preprocess(withVersion); - } - fs.writeFileSync(filePath, JSON.stringify(withVersion, undefined, 2)); - } - static loadManifest(filePath, schema, preprocess, options) { - const contents = fs.readFileSync(filePath, { encoding: 'utf-8' }); - let obj; - try { - obj = JSON.parse(contents); - } - catch (e) { - throw new Error(`${e.message}, while parsing ${JSON.stringify(contents)}`); - } - if (preprocess) { - obj = preprocess(obj); - } - Manifest.validate(obj, schema, options); - return obj; - } + ResourceScrutinyType["EgressRuleResource"] = "EgressRuleResource"; /** - * This requires some explaining... - * - * We previously used `{ Key, Value }` for the object that represents a stack tag. (Notice the casing) - * @link https://github.com/aws/aws-cdk/blob/v1.27.0/packages/aws-cdk/lib/api/cxapp/stacks.ts#L427. + * AWS::SSO::Assignment * - * When that object moved to this package, it had to be JSII compliant, which meant the property - * names must be `camelCased`, and not `PascalCased`. This meant it no longer matches the structure in the `manifest.json` file. - * In order to support current manifest files, we have to translate the `PascalCased` representation to the new `camelCased` one. + * IAM Identity Center (formerly known as SSO) + */ + ResourceScrutinyType["SsoAssignmentResource"] = "SsoAssignmentResource"; + /** + * AWS::SSO::InstanceAccessControlAttributeConfiguration * - * Note that the serialization itself still writes `PascalCased` because it relates to how CloudFormation expects it. + * IAM Identity Center (formerly known as SSO) + */ + ResourceScrutinyType["SsoInstanceACAConfigResource"] = "SsoInstanceACAConfigResource"; + /** + * AWS::SSO::PermissionSet * - * Ideally, we would start writing the `camelCased` and translate to how CloudFormation expects it when needed. But this requires nasty - * backwards-compatibility code and it just doesn't seem to be worth the effort. + * IAM Identity Center (formerly known as SSO) */ - static patchStackTagsOnRead(manifest) { - return Manifest.replaceStackTags(manifest, (tags) => tags.map((diskTag) => ({ - key: diskTag.Key, - value: diskTag.Value, - }))); - } + ResourceScrutinyType["SsoPermissionSet"] = "SsoPermissionSet"; +})(ResourceScrutinyType = exports.ResourceScrutinyType || (exports.ResourceScrutinyType = {})); +/** + * Mark a property as a property that needs additional scrutiny when it changes + * + * Used to mark sensitive properties that have security-related implications. + */ +var PropertyScrutinyType; +(function (PropertyScrutinyType) { /** - * Validates that `assumeRoleAdditionalOptions` doesn't contain nor `ExternalId` neither `RoleArn`, as they - * should have dedicated properties preceding this (e.g `assumeRoleArn` and `assumeRoleExternalId`). + * No additional scrutiny */ - static validateAssumeRoleAdditionalOptions(instance, key, _schema, _options, _ctx) { - if (key !== 'assumeRoleAdditionalOptions') { - // note that this means that if we happen to have a property named like this, but that - // does want to allow 'RoleArn' or 'ExternalId', this code will have to change to consider the full schema path. - // I decided to make this less granular for now on purpose because it fits our needs and avoids having messy - // validation logic due to various schema paths. - return; - } - const assumeRoleOptions = instance[key]; - if (assumeRoleOptions?.RoleArn) { - throw new Error(`RoleArn is not allowed inside '${key}'`); + PropertyScrutinyType["None"] = "None"; + /** + * This is an IAM policy directly on a resource + */ + PropertyScrutinyType["InlineResourcePolicy"] = "InlineResourcePolicy"; + /** + * Either an AssumeRolePolicyDocument or a dictionary of policy documents + */ + PropertyScrutinyType["InlineIdentityPolicies"] = "InlineIdentityPolicies"; + /** + * A list of managed policies (on an identity resource) + */ + PropertyScrutinyType["ManagedPolicies"] = "ManagedPolicies"; + /** + * A set of ingress rules (on a security group) + */ + PropertyScrutinyType["IngressRules"] = "IngressRules"; + /** + * A set of egress rules (on a security group) + */ + PropertyScrutinyType["EgressRules"] = "EgressRules"; +})(PropertyScrutinyType = exports.PropertyScrutinyType || (exports.PropertyScrutinyType = {})); +class RichPropertyType { + constructor(type) { + this.type = type; + } + equals(rhs) { + switch (this.type.type) { + case 'integer': + case 'boolean': + case 'date-time': + case 'json': + case 'null': + case 'number': + case 'string': + case 'tag': + return rhs.type === this.type.type; + case 'array': + case 'map': + return rhs.type === this.type.type && new RichPropertyType(this.type.element).equals(rhs.element); + case 'ref': + return rhs.type === 'ref' && this.type.reference.$ref === rhs.reference.$ref; + case 'union': + const lhsKey = this.sortKey(); + const rhsKey = new RichPropertyType(rhs).sortKey(); + return lhsKey.length === rhsKey.length && lhsKey.every((l, i) => l === rhsKey[i]); } - if (assumeRoleOptions?.ExternalId) { - throw new Error(`ExternalId is not allowed inside '${key}'`); + } + /** + * Whether the current type is JavaScript-equal to the RHS type + * + * Same as normal equality, but consider `integer` and `number` the same types. + */ + javascriptEquals(rhs) { + switch (this.type.type) { + case 'number': + case 'integer': + // Widening + return rhs.type === 'integer' || rhs.type === 'number'; + case 'array': + case 'map': + return rhs.type === this.type.type && new RichPropertyType(this.type.element).javascriptEquals(rhs.element); + case 'union': + if (rhs.type !== 'union') { + return false; + } + // Every type in this union needs to be equal one type in RHS + return this.type.types.every((t1) => rhs.types.some((t2) => new RichPropertyType(t1).javascriptEquals(t2))); + default: + // For anything else, need strict equality + return this.equals(rhs); } } /** - * See explanation on `patchStackTagsOnRead` + * Whether the current type is assignable to the RHS type. * - * Translate stack tags metadata if it has the "right" casing. + * This is means every type member of the LHS must be present in the RHS type */ - static patchStackTagsOnWrite(manifest) { - return Manifest.replaceStackTags(manifest, (tags) => tags.map((memTag) => - // Might already be uppercased (because stack synthesis generates it in final form yet) - ('Key' in memTag ? memTag : { Key: memTag.key, Value: memTag.value }))); + assignableTo(rhs) { + const extractMembers = (type) => (type.type == 'union' ? type.types : [type]); + const asRichType = (type) => new RichPropertyType(type); + const rhsMembers = extractMembers(rhs); + for (const lhsMember of extractMembers(this.type).map(asRichType)) { + if (!rhsMembers.some((type) => lhsMember.equals(type))) { + return false; + } + } + return true; } /** - * Recursively replace stack tags in the stack metadata + * Return a version of this type, but with all type unions in a regularized order */ - static replaceStackTags(manifest, fn) { - // Need to add in the `noUndefined`s because otherwise jest snapshot tests are going to freak out - // about the keys with values that are `undefined` (even though they would never be JSON.stringified) - return noUndefined({ - ...manifest, - artifacts: mapValues(manifest.artifacts, (artifact) => { - if (artifact.type !== assembly.ArtifactType.AWS_CLOUDFORMATION_STACK) { - return artifact; - } - return noUndefined({ - ...artifact, - metadata: mapValues(artifact.metadata, (metadataEntries) => metadataEntries.map((metadataEntry) => { - if (metadataEntry.type !== assembly.ArtifactMetadataEntryType.STACK_TAGS || - !metadataEntry.data) { - return metadataEntry; - } - return { - ...metadataEntry, - data: fn(metadataEntry.data), - }; - })), + normalize(db) { + switch (this.type.type) { + case 'array': + case 'map': + return new RichPropertyType({ + type: this.type.type, + element: new RichPropertyType(this.type.element).normalize(db).type, }); - }), - }); - } - constructor() { } -} -exports.Manifest = Manifest; -_a = JSII_RTTI_SYMBOL_1; -Manifest[_a] = { fqn: "@aws-cdk/cloud-assembly-schema.Manifest", version: "38.0.1" }; -function mapValues(xs, fn) { - if (!xs) { - return undefined; + case 'union': + const types = this.type.types + .map((t) => new RichPropertyType(t).normalize(db)) + .map((t) => [t, t.sortKey(db)]); + types.sort((0, sorting_1.sortKeyComparator)(([_, sortKey]) => sortKey)); + return new RichPropertyType({ + type: 'union', + types: types.map(([t, _]) => t.type), + }); + default: + return this; + } } - const ret = {}; - for (const [k, v] of Object.entries(xs)) { - ret[k] = fn(v); + stringify(db, withId = true) { + switch (this.type.type) { + case 'integer': + case 'boolean': + case 'date-time': + case 'json': + case 'null': + case 'number': + case 'string': + case 'tag': + return this.type.type; + case 'array': + return `Array<${new RichPropertyType(this.type.element).stringify(db, withId)}>`; + case 'map': + return `Map`; + case 'ref': + const type = db.get('typeDefinition', this.type.reference); + return withId ? `${type.name}(${this.type.reference.$ref})` : type.name; + case 'union': + return this.type.types.map((t) => new RichPropertyType(t).stringify(db, withId)).join(' | '); + } } - return ret; -} -function noUndefined(xs) { - const ret = {}; - for (const [k, v] of Object.entries(xs)) { - if (v !== undefined) { - ret[k] = v; + /** + * Return a sortable key based on this type + * + * If a database is given, type definitions will be sorted based on type name, + * otherwise on identifier + */ + sortKey(db) { + var _a, _b; + switch (this.type.type) { + case 'integer': + case 'boolean': + case 'date-time': + case 'json': + case 'null': + case 'number': + case 'string': + case 'tag': + return ['0', this.type.type]; + case 'array': + case 'map': + return ['1', this.type.type, ...new RichPropertyType(this.type.element).sortKey(db)]; + case 'ref': + return ['2', this.type.type, (_b = (_a = db === null || db === void 0 ? void 0 : db.get('typeDefinition', this.type.reference)) === null || _a === void 0 ? void 0 : _a.name) !== null && _b !== void 0 ? _b : this.type.reference.$ref]; + case 'union': + const typeKeys = this.type.types.map((t) => new RichPropertyType(t).sortKey(db)); + typeKeys.sort((0, sorting_1.sortKeyComparator)((x) => x)); + return ['3', this.type.type, ...typeKeys.flatMap((x) => x)]; } } - return ret; -} -function stripEnumErrors(errors) { - return errors.filter((e) => typeof e.schema === 'string' || !('enum' in e.schema)); } -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFuaWZlc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJtYW5pZmVzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLHlCQUF5QjtBQUN6Qix5Q0FBeUM7QUFDekMsaUNBQWlDO0FBRWpDLDZDQUE2QztBQUc3Qyx1REFBdUQ7QUFDdkQsMERBQTBEO0FBRTFELGtFQUFrRTtBQUNsRSxpRUFBaUU7QUFDakUsNkJBQTZCO0FBQ2hCLFFBQUEsZ0JBQWdCLEdBQVcsd0NBQXdDLENBQUM7QUFFakYsOERBQStEO0FBRS9ELHdFQUF5RTtBQUV6RSw0REFBNkQ7QUFFN0Q7O0dBRUc7QUFDSCxNQUFNLGNBQWMsR0FBRyxPQUFPLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxPQUFPLENBQUM7QUFzQzFEOztHQUVHO0FBQ0gsTUFBYSxRQUFRO0lBQ25COzs7OztPQUtHO0lBQ0ksTUFBTSxDQUFDLG9CQUFvQixDQUFDLFFBQW1DLEVBQUUsUUFBZ0I7UUFDdEYsUUFBUSxDQUFDLFlBQVksQ0FBQyxRQUFRLEVBQUUsUUFBUSxFQUFFLGVBQWUsRUFBRSxRQUFRLENBQUMscUJBQXFCLENBQUMsQ0FBQztJQUM3RixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNJLE1BQU0sQ0FBQyxvQkFBb0IsQ0FDaEMsUUFBZ0IsRUFDaEIsT0FBNkI7UUFFN0IsT0FBTyxRQUFRLENBQUMsWUFBWSxDQUFDLFFBQVEsRUFBRSxlQUFlLEVBQUUsUUFBUSxDQUFDLG9CQUFvQixFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ2xHLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNJLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxRQUE4QixFQUFFLFFBQWdCO1FBQzlFLFFBQVEsQ0FBQyxZQUFZLENBQUMsUUFBUSxFQUFFLFFBQVEsRUFBRSxhQUFhLEVBQUUsUUFBUSxDQUFDLG9CQUFvQixDQUFDLENBQUM7SUFDMUYsQ0FBQztJQUVEOzs7O09BSUc7SUFDSSxNQUFNLENBQUMsaUJBQWlCLENBQUMsUUFBZ0I7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Q0FBQztJQUNMLENBQUM7SUFFRCxnQkFBdUIsQ0FBQzs7QUF2UTFCLDRCQXdRQzs7O0FBSUQsU0FBUyxTQUFTLENBQ2hCLEVBQWlDLEVBQ2pDLEVBQWU7SUFFZixJQUFJLENBQUMsRUFBRSxFQUFFLENBQUM7UUFDUixPQUFPLFNBQVMsQ0FBQztJQUNuQixDQUFDO0lBQ0QsTUFBTSxHQUFHLEdBQWtDLEVBQUUsQ0FBQztJQUM5QyxLQUFLLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDO1FBQ3hDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDakIsQ0FBQztJQUNELE9BQU8sR0FBRyxDQUFDO0FBQ2IsQ0FBQztBQUVELFNBQVMsV0FBVyxDQUFtQixFQUFLO0lBQzFDLE1BQU0sR0FBRyxHQUFRLEVBQUUsQ0FBQztJQUNwQixLQUFLLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDO1FBQ3hDLElBQUksQ0FBQyxLQUFLLFNBQVMsRUFBRSxDQUFDO1lBQ3BCLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDYixDQUFDO0lBQ0gsQ0FBQztJQUNELE9BQU8sR0FBRyxDQUFDO0FBQ2IsQ0FBQztBQUVELFNBQVMsZUFBZSxDQUFDLE1BQW9DO0lBQzNELE9BQU8sTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxLQUFLLFFBQVEsSUFBSSxDQUFDLENBQUMsTUFBTSxJQUFJLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0FBQ3JGLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBmcyBmcm9tICdmcyc7XG5pbXBvcnQgKiBhcyBqc29uc2NoZW1hIGZyb20gJ2pzb25zY2hlbWEnO1xuaW1wb3J0ICogYXMgc2VtdmVyIGZyb20gJ3NlbXZlcic7XG5pbXBvcnQgKiBhcyBhc3NldHMgZnJvbSAnLi9hc3NldHMnO1xuaW1wb3J0ICogYXMgYXNzZW1ibHkgZnJvbSAnLi9jbG91ZC1hc3NlbWJseSc7XG5pbXBvcnQgKiBhcyBpbnRlZyBmcm9tICcuL2ludGVnLXRlc3RzJztcblxuLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXZhci1yZXF1aXJlcyAqL1xuLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXJlcXVpcmUtaW1wb3J0cyAqL1xuXG4vLyB0aGlzIHByZWZpeCBpcyB1c2VkIGJ5IHRoZSBDTEkgdG8gaWRlbnRpZnkgdGhpcyBzcGVjaWZpYyBlcnJvci5cbi8vIGluIHdoaWNoIGNhc2Ugd2Ugd2FudCB0byBpbnN0cnVjdCB0aGUgdXNlciB0byB1cGdyYWRlIGhpcyBDTEkuXG4vLyBzZWUgZXhlYy50cyNjcmVhdGVBc3NlbWJseVxuZXhwb3J0IGNvbnN0IFZFUlNJT05fTUlTTUFUQ0g6IHN0cmluZyA9ICdDbG91ZCBhc3NlbWJseSBzY2hlbWEgdmVyc2lvbiBtaXNtYXRjaCc7XG5cbmltcG9ydCBBU1NFVFNfU0NIRU1BID0gcmVxdWlyZSgnLi4vc2NoZW1hL2Fzc2V0cy5zY2hlbWEuanNvbicpO1xuXG5pbXBvcnQgQVNTRU1CTFlfU0NIRU1BID0gcmVxdWlyZSgnLi4vc2NoZW1hL2Nsb3VkLWFzc2VtYmx5LnNjaGVtYS5qc29uJyk7XG5cbmltcG9ydCBJTlRFR19TQ0hFTUEgPSByZXF1aXJlKCcuLi9zY2hlbWEvaW50ZWcuc2NoZW1hLmpzb24nKTtcblxuLyoqXG4gKiBWZXJzaW9uIGlzIHNoYXJlZCBmb3IgYm90aCBtYW5pZmVzdHNcbiAqL1xuY29uc3QgU0NIRU1BX1ZFUlNJT04gPSByZXF1aXJlKCcuLi9wYWNrYWdlLmpzb24nKS52ZXJzaW9uO1xuXG4vKipcbiAqIE9wdGlvbnMgZm9yIHRoZSBsb2FkTWFuaWZlc3Qgb3BlcmF0aW9uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTG9hZE1hbmlmZXN0T3B0aW9ucyB7XG4gIC8qKlxuICAgKiBTa2lwIHRoZSB2ZXJzaW9uIGNoZWNrXG4gICAqXG4gICAqIFRoaXMgbWVhbnMgeW91IG1heSByZWFkIGEgbmV3ZXIgY2xvdWQgYXNzZW1ibHkgdGhhbiB0aGUgQ1ggQVBJIGlzIGRlc2lnbmVkXG4gICAqIHRvIHN1cHBvcnQsIGFuZCB5b3VyIGFwcGxpY2F0aW9uIG1heSBub3QgYmUgYXdhcmUgb2YgYWxsIGZlYXR1cmVzIHRoYXQgaW4gdXNlXG4gICAqIGluIHRoZSBDbG91ZCBBc3NlbWJseS5cbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IHNraXBWZXJzaW9uQ2hlY2s/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBTa2lwIGVudW0gY2hlY2tzXG4gICAqXG4gICAqIFRoaXMgbWVhbnMgeW91IG1heSByZWFkIGVudW0gdmFsdWVzIHlvdSBkb24ndCBrbm93IGFib3V0IHlldC4gTWFrZSBzdXJlIHRvIGFsd2F5c1xuICAgKiBjaGVjayB0aGUgdmFsdWVzIG9mIGVudW1zIHlvdSBlbmNvdW50ZXIgaW4gdGhlIG1hbmlmZXN0LlxuICAgKlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgc2tpcEVudW1DaGVjaz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFRvcG9sb2dpY2FsbHkgc29ydCBhbGwgYXJ0aWZhY3RzXG4gICAqXG4gICAqIFRoaXMgcGFyYW1ldGVyIGlzIG9ubHkgcmVzcGVjdGVkIGJ5IHRoZSBjb25zdHJ1Y3RvciBvZiBgQ2xvdWRBc3NlbWJseWAuIFRoZVxuICAgKiBwcm9wZXJ0eSBsaXZlcyBoZXJlIGZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eSByZWFzb25zLlxuICAgKlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICByZWFkb25seSB0b3BvU29ydD86IGJvb2xlYW47XG59XG5cbi8qKlxuICogUHJvdG9jb2wgdXRpbGl0eSBjbGFzcy5cbiAqL1xuZXhwb3J0IGNsYXNzIE1hbmlmZXN0IHtcbiAgLyoqXG4gICAqIFZhbGlkYXRlcyBhbmQgc2F2ZXMgdGhlIGNsb3VkIGFzc2VtYmx5IG1hbmlmZXN0IHRvIGZpbGUuXG4gICAqXG4gICAqIEBwYXJhbSBtYW5pZmVzdCAtIG1hbmlmZXN0LlxuICAgKiBAcGFyYW0gZmlsZVBhdGggLSBvdXRwdXQgZmlsZSBwYXRoLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBzYXZlQXNzZW1ibHlNYW5pZmVzdChtYW5pZmVzdDogYXNzZW1ibHkuQXNzZW1ibHlNYW5pZmVzdCwgZmlsZVBhdGg6IHN0cmluZykge1xuICAgIE1hbmlmZXN0LnNhdmVNYW5pZmVzdChtYW5pZmVzdCwgZmlsZVBhdGgsIEFTU0VNQkxZX1NDSEVNQSwgTWFuaWZlc3QucGF0Y2hTdGFja1RhZ3NPbldyaXRlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBMb2FkIGFuZCB2YWxpZGF0ZXMgdGhlIGNsb3VkIGFzc2VtYmx5IG1hbmlmZXN0IGZyb20gZmlsZS5cbiAgICpcbiAgICogQHBhcmFtIGZpbGVQYXRoIC0gcGF0aCB0byB0aGUgbWFuaWZlc3QgZmlsZS5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgbG9hZEFzc2VtYmx5TWFuaWZlc3QoXG4gICAgZmlsZVBhdGg6IHN0cmluZyxcbiAgICBvcHRpb25zPzogTG9hZE1hbmlmZXN0T3B0aW9uc1xuICApOiBhc3NlbWJseS5Bc3NlbWJseU1hbmlmZXN0IHtcbiAgICByZXR1cm4gTWFuaWZlc3QubG9hZE1hbmlmZXN0KGZpbGVQYXRoLCBBU1NFTUJMWV9TQ0hFTUEsIE1hbmlmZXN0LnBhdGNoU3RhY2tUYWdzT25SZWFkLCBvcHRpb25zKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBWYWxpZGF0ZXMgYW5kIHNhdmVzIHRoZSBhc3NldCBtYW5pZmVzdCB0byBmaWxlLlxuICAgKlxuICAgKiBAcGFyYW0gbWFuaWZlc3QgLSBtYW5pZmVzdC5cbiAgICogQHBhcmFtIGZpbGVQYXRoIC0gb3V0cHV0IGZpbGUgcGF0aC5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgc2F2ZUFzc2V0TWFuaWZlc3QobWFuaWZlc3Q6IGFzc2V0cy5Bc3NldE1hbmlmZXN0LCBmaWxlUGF0aDogc3RyaW5nKSB7XG4gICAgTWFuaWZlc3Quc2F2ZU1hbmlmZXN0KG1hbmlmZXN0LCBmaWxlUGF0aCwgQVNTRVRTX1NDSEVNQSwgTWFuaWZlc3QucGF0Y2hTdGFja1RhZ3NPblJlYWQpO1xuICB9XG5cbiAgLyoqXG4gICAqIExvYWQgYW5kIHZhbGlkYXRlcyB0aGUgYXNzZXQgbWFuaWZlc3QgZnJvbSBmaWxlLlxuICAgKlxuICAgKiBAcGFyYW0gZmlsZVBhdGggLSBwYXRoIHRvIHRoZSBtYW5pZmVzdCBmaWxlLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBsb2FkQXNzZXRNYW5pZmVzdChmaWxlUGF0aDogc3RyaW5nKTogYXNzZXRzLkFzc2V0TWFuaWZlc3Qge1xuICAgIHJldHVybiB0aGlzLmxvYWRNYW5pZmVzdChmaWxlUGF0aCwgQVNTRVRTX1NDSEVNQSk7XG4gIH1cblxuICAvKipcbiAgICogVmFsaWRhdGVzIGFuZCBzYXZlcyB0aGUgaW50ZWcgbWFuaWZlc3QgdG8gZmlsZS5cbiAgICpcbiAgICogQHBhcmFtIG1hbmlmZXN0IC0gbWFuaWZlc3QuXG4gICAqIEBwYXJhbSBmaWxlUGF0aCAtIG91dHB1dCBmaWxlIHBhdGguXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHNhdmVJbnRlZ01hbmlmZXN0KG1hbmlmZXN0OiBpbnRlZy5JbnRlZ01hbmlmZXN0LCBmaWxlUGF0aDogc3RyaW5nKSB7XG4gICAgTWFuaWZlc3Quc2F2ZU1hbmlmZXN0KG1hbmlmZXN0LCBmaWxlUGF0aCwgSU5URUdfU0NIRU1BKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBMb2FkIGFuZCB2YWxpZGF0ZXMgdGhlIGludGVnIG1hbmlmZXN0IGZyb20gZmlsZS5cbiAgICpcbiAgICogQHBhcmFtIGZpbGVQYXRoIC0gcGF0aCB0byB0aGUgbWFuaWZlc3QgZmlsZS5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgbG9hZEludGVnTWFuaWZlc3QoZmlsZVBhdGg6IHN0cmluZyk6IGludGVnLkludGVnTWFuaWZlc3Qge1xuICAgIHJldHVybiB0aGlzLmxvYWRNYW5pZmVzdChmaWxlUGF0aCwgSU5URUdfU0NIRU1BKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBGZXRjaCB0aGUgY3VycmVudCBzY2hlbWEgdmVyc2lvbiBudW1iZXIuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHZlcnNpb24oKTogc3RyaW5nIHtcbiAgICByZXR1cm4gU0NIRU1BX1ZFUlNJT047XG4gIH1cblxuICAvKipcbiAgICogRGVwcmVjYXRlZFxuICAgKiBAZGVwcmVjYXRlZCB1c2UgYHNhdmVBc3NlbWJseU1hbmlmZXN0KClgXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHNhdmUobWFuaWZlc3Q6IGFzc2VtYmx5LkFzc2VtYmx5TWFuaWZlc3QsIGZpbGVQYXRoOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy5zYXZlQXNzZW1ibHlNYW5pZmVzdChtYW5pZmVzdCwgZmlsZVBhdGgpO1xuICB9XG5cbiAgLyoqXG4gICAqIERlcHJlY2F0ZWRcbiAgICogQGRlcHJlY2F0ZWQgdXNlIGBsb2FkQXNzZW1ibHlNYW5pZmVzdCgpYFxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBsb2FkKGZpbGVQYXRoOiBzdHJpbmcpOiBhc3NlbWJseS5Bc3NlbWJseU1hbmlmZXN0IHtcbiAgICByZXR1cm4gdGhpcy5sb2FkQXNzZW1ibHlNYW5pZmVzdChmaWxlUGF0aCk7XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyB2YWxpZGF0ZShtYW5pZmVzdDogYW55LCBzY2hlbWE6IGpzb25zY2hlbWEuU2NoZW1hLCBvcHRpb25zPzogTG9hZE1hbmlmZXN0T3B0aW9ucykge1xuICAgIGZ1bmN0aW9uIHBhcnNlVmVyc2lvbih2ZXJzaW9uOiBzdHJpbmcpIHtcbiAgICAgIGNvbnN0IHZlciA9IHNlbXZlci52YWxpZCh2ZXJzaW9uKTtcbiAgICAgIGlmICghdmVyKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCBzZW12ZXIgc3RyaW5nOiBcIiR7dmVyc2lvbn1cImApO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHZlcjtcbiAgICB9XG5cbiAgICBjb25zdCBtYXhTdXBwb3J0ZWQgPSBzZW12ZXIubWFqb3IocGFyc2VWZXJzaW9uKE1hbmlmZXN0LnZlcnNpb24oKSkpO1xuICAgIGNvbnN0IGFjdHVhbCA9IHBhcnNlVmVyc2lvbihtYW5pZmVzdC52ZXJzaW9uKTtcblxuICAgIC8vIGZpcnN0IHZhbGlkYXRlIHRoZSB2ZXJzaW9uIHNob3VsZCBiZSBhY2NlcHRlZC4gYWxsIHZlcnNpb25zIHdpdGhpbiB0aGUgc2FtZSBtaW5vciB2ZXJzaW9uIGFyZSBmaW5lXG4gICAgaWYgKG1heFN1cHBvcnRlZCA8IHNlbXZlci5tYWpvcihhY3R1YWwpICYmICFvcHRpb25zPy5za2lwVmVyc2lvbkNoZWNrKSB7XG4gICAgICAvLyB3ZSB1c2UgYSB3ZWxsIGtub3duIGVycm9yIHByZWZpeCBzbyB0aGF0IHRoZSBDTEkgY2FuIGlkZW50aWZ5IHRoaXMgc3BlY2lmaWMgZXJyb3JcbiAgICAgIC8vIGFuZCBwcmludCBzb21lIG1vcmUgY29udGV4dCB0byB0aGUgdXNlci5cbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgYCR7VkVSU0lPTl9NSVNNQVRDSH06IE1heGltdW0gc2NoZW1hIHZlcnNpb24gc3VwcG9ydGVkIGlzICR7bWF4U3VwcG9ydGVkfS54LngsIGJ1dCBmb3VuZCAke2FjdHVhbH1gXG4gICAgICApO1xuICAgIH1cblxuICAgIC8vIG5vdyB2YWxpZGF0ZSB0aGUgZm9ybWF0IGlzIGdvb2QuXG4gICAgY29uc3QgdmFsaWRhdG9yID0gbmV3IGpzb25zY2hlbWEuVmFsaWRhdG9yKCk7XG4gICAgY29uc3QgcmVzdWx0ID0gdmFsaWRhdG9yLnZhbGlkYXRlKG1hbmlmZXN0LCBzY2hlbWEsIHtcbiAgICAgIC8vIGRvZXMgZXhpc3QgYnV0IGlzIG5vdCBpbiB0aGUgVHlwZVNjcmlwdCBkZWZpbml0aW9uc1xuICAgICAgbmVzdGVkRXJyb3JzOiB0cnVlLFxuXG4gICAgICBhbGxvd1Vua25vd25BdHRyaWJ1dGVzOiBmYWxzZSxcbiAgICAgIHByZVZhbGlkYXRlUHJvcGVydHk6IE1hbmlmZXN0LnZhbGlkYXRlQXNzdW1lUm9sZUFkZGl0aW9uYWxPcHRpb25zLFxuICAgIH0pO1xuXG4gICAgbGV0IGVycm9ycyA9IHJlc3VsdC5lcnJvcnM7XG4gICAgaWYgKG9wdGlvbnM/LnNraXBFbnVtQ2hlY2spIHtcbiAgICAgIC8vIEVudW0gdmFsaWRhdGlvbnMgYXJlbid0IHVzZWZ1bCB3aGVuXG4gICAgICBlcnJvcnMgPSBzdHJpcEVudW1FcnJvcnMoZXJyb3JzKTtcbiAgICB9XG5cbiAgICBpZiAoZXJyb3JzLmxlbmd0aCA+IDApIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCBhc3NlbWJseSBtYW5pZmVzdDpcXG4ke2Vycm9ycy5tYXAoKGUpID0+IGUuc3RhY2spLmpvaW4oJ1xcbicpfWApO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIHNhdmVNYW5pZmVzdChcbiAgICBtYW5pZmVzdDogYW55LFxuICAgIGZpbGVQYXRoOiBzdHJpbmcsXG4gICAgc2NoZW1hOiBqc29uc2NoZW1hLlNjaGVtYSxcbiAgICBwcmVwcm9jZXNzPzogKG9iajogYW55KSA9PiBhbnlcbiAgKSB7XG4gICAgbGV0IHdpdGhWZXJzaW9uID0geyAuLi5tYW5pZmVzdCwgdmVyc2lvbjogTWFuaWZlc3QudmVyc2lvbigpIH07XG4gICAgTWFuaWZlc3QudmFsaWRhdGUod2l0aFZlcnNpb24sIHNjaGVtYSk7XG4gICAgaWYgKHByZXByb2Nlc3MpIHtcbiAgICAgIHdpdGhWZXJzaW9uID0gcHJlcHJvY2Vzcyh3aXRoVmVyc2lvbik7XG4gICAgfVxuICAgIGZzLndyaXRlRmlsZVN5bmMoZmlsZVBhdGgsIEpTT04uc3RyaW5naWZ5KHdpdGhWZXJzaW9uLCB1bmRlZmluZWQsIDIpKTtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIGxvYWRNYW5pZmVzdChcbiAgICBmaWxlUGF0aDogc3RyaW5nLFxuICAgIHNjaGVtYToganNvbnNjaGVtYS5TY2hlbWEsXG4gICAgcHJlcHJvY2Vzcz86IChvYmo6IGFueSkgPT4gYW55LFxuICAgIG9wdGlvbnM/OiBMb2FkTWFuaWZlc3RPcHRpb25zXG4gICkge1xuICAgIGNvbnN0IGNvbnRlbnRzID0gZnMucmVhZEZpbGVTeW5jKGZpbGVQYXRoLCB7IGVuY29kaW5nOiAndXRmLTgnIH0pO1xuICAgIGxldCBvYmo7XG4gICAgdHJ5IHtcbiAgICAgIG9iaiA9IEpTT04ucGFyc2UoY29udGVudHMpO1xuICAgIH0gY2F0Y2ggKGU6IGFueSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGAke2UubWVzc2FnZX0sIHdoaWxlIHBhcnNpbmcgJHtKU09OLnN0cmluZ2lmeShjb250ZW50cyl9YCk7XG4gICAgfVxuICAgIGlmIChwcmVwcm9jZXNzKSB7XG4gICAgICBvYmogPSBwcmVwcm9jZXNzKG9iaik7XG4gICAgfVxuICAgIE1hbmlmZXN0LnZhbGlkYXRlKG9iaiwgc2NoZW1hLCBvcHRpb25zKTtcbiAgICByZXR1cm4gb2JqO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoaXMgcmVxdWlyZXMgc29tZSBleHBsYWluaW5nLi4uXG4gICAqXG4gICAqIFdlIHByZXZpb3VzbHkgdXNlZCBgeyBLZXksIFZhbHVlIH1gIGZvciB0aGUgb2JqZWN0IHRoYXQgcmVwcmVzZW50cyBhIHN0YWNrIHRhZy4gKE5vdGljZSB0aGUgY2FzaW5nKVxuICAgKiBAbGluayBodHRwczovL2dpdGh1Yi5jb20vYXdzL2F3cy1jZGsvYmxvYi92MS4yNy4wL3BhY2thZ2VzL2F3cy1jZGsvbGliL2FwaS9jeGFwcC9zdGFja3MudHMjTDQyNy5cbiAgICpcbiAgICogV2hlbiB0aGF0IG9iamVjdCBtb3ZlZCB0byB0aGlzIHBhY2thZ2UsIGl0IGhhZCB0byBiZSBKU0lJIGNvbXBsaWFudCwgd2hpY2ggbWVhbnQgdGhlIHByb3BlcnR5XG4gICAqIG5hbWVzIG11c3QgYmUgYGNhbWVsQ2FzZWRgLCBhbmQgbm90IGBQYXNjYWxDYXNlZGAuIFRoaXMgbWVhbnQgaXQgbm8gbG9uZ2VyIG1hdGNoZXMgdGhlIHN0cnVjdHVyZSBpbiB0aGUgYG1hbmlmZXN0Lmpzb25gIGZpbGUuXG4gICAqIEluIG9yZGVyIHRvIHN1cHBvcnQgY3VycmVudCBtYW5pZmVzdCBmaWxlcywgd2UgaGF2ZSB0byB0cmFuc2xhdGUgdGhlIGBQYXNjYWxDYXNlZGAgcmVwcmVzZW50YXRpb24gdG8gdGhlIG5ldyBgY2FtZWxDYXNlZGAgb25lLlxuICAgKlxuICAgKiBOb3RlIHRoYXQgdGhlIHNlcmlhbGl6YXRpb24gaXRzZWxmIHN0aWxsIHdyaXRlcyBgUGFzY2FsQ2FzZWRgIGJlY2F1c2UgaXQgcmVsYXRlcyB0byBob3cgQ2xvdWRGb3JtYXRpb24gZXhwZWN0cyBpdC5cbiAgICpcbiAgICogSWRlYWxseSwgd2Ugd291bGQgc3RhcnQgd3JpdGluZyB0aGUgYGNhbWVsQ2FzZWRgIGFuZCB0cmFuc2xhdGUgdG8gaG93IENsb3VkRm9ybWF0aW9uIGV4cGVjdHMgaXQgd2hlbiBuZWVkZWQuIEJ1dCB0aGlzIHJlcXVpcmVzIG5hc3R5XG4gICAqIGJhY2t3YXJkcy1jb21wYXRpYmlsaXR5IGNvZGUgYW5kIGl0IGp1c3QgZG9lc24ndCBzZWVtIHRvIGJlIHdvcnRoIHRoZSBlZmZvcnQuXG4gICAqL1xuICBwcml2YXRlIHN0YXRpYyBwYXRjaFN0YWNrVGFnc09uUmVhZChtYW5pZmVzdDogYXNzZW1ibHkuQXNzZW1ibHlNYW5pZmVzdCkge1xuICAgIHJldHVybiBNYW5pZmVzdC5yZXBsYWNlU3RhY2tUYWdzKG1hbmlmZXN0LCAodGFncykgPT5cbiAgICAgIHRhZ3MubWFwKChkaXNrVGFnOiBhbnkpID0+ICh7XG4gICAgICAgIGtleTogZGlza1RhZy5LZXksXG4gICAgICAgIHZhbHVlOiBkaXNrVGFnLlZhbHVlLFxuICAgICAgfSkpXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBWYWxpZGF0ZXMgdGhhdCBgYXNzdW1lUm9sZUFkZGl0aW9uYWxPcHRpb25zYCBkb2Vzbid0IGNvbnRhaW4gbm9yIGBFeHRlcm5hbElkYCBuZWl0aGVyIGBSb2xlQXJuYCwgYXMgdGhleVxuICAgKiBzaG91bGQgaGF2ZSBkZWRpY2F0ZWQgcHJvcGVydGllcyBwcmVjZWRpbmcgdGhpcyAoZS5nIGBhc3N1bWVSb2xlQXJuYCBhbmQgYGFzc3VtZVJvbGVFeHRlcm5hbElkYCkuXG4gICAqL1xuICBwcml2YXRlIHN0YXRpYyB2YWxpZGF0ZUFzc3VtZVJvbGVBZGRpdGlvbmFsT3B0aW9ucyhcbiAgICBpbnN0YW5jZTogYW55LFxuICAgIGtleTogc3RyaW5nLFxuICAgIF9zY2hlbWE6IGpzb25zY2hlbWEuU2NoZW1hLFxuICAgIF9vcHRpb25zOiBqc29uc2NoZW1hLk9wdGlvbnMsXG4gICAgX2N0eDoganNvbnNjaGVtYS5TY2hlbWFDb250ZXh0XG4gICkge1xuICAgIGlmIChrZXkgIT09ICdhc3N1bWVSb2xlQWRkaXRpb25hbE9wdGlvbnMnKSB7XG4gICAgICAvLyBub3RlIHRoYXQgdGhpcyBtZWFucyB0aGF0IGlmIHdlIGhhcHBlbiB0byBoYXZlIGEgcHJvcGVydHkgbmFtZWQgbGlrZSB0aGlzLCBidXQgdGhhdFxuICAgICAgLy8gZG9lcyB3YW50IHRvIGFsbG93ICdSb2xlQXJuJyBvciAnRXh0ZXJuYWxJZCcsIHRoaXMgY29kZSB3aWxsIGhhdmUgdG8gY2hhbmdlIHRvIGNvbnNpZGVyIHRoZSBmdWxsIHNjaGVtYSBwYXRoLlxuICAgICAgLy8gSSBkZWNpZGVkIHRvIG1ha2UgdGhpcyBsZXNzIGdyYW51bGFyIGZvciBub3cgb24gcHVycG9zZSBiZWNhdXNlIGl0IGZpdHMgb3VyIG5lZWRzIGFuZCBhdm9pZHMgaGF2aW5nIG1lc3N5XG4gICAgICAvLyB2YWxpZGF0aW9uIGxvZ2ljIGR1ZSB0byB2YXJpb3VzIHNjaGVtYSBwYXRocy5cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBhc3N1bWVSb2xlT3B0aW9ucyA9IGluc3RhbmNlW2tleV07XG4gICAgaWYgKGFzc3VtZVJvbGVPcHRpb25zPy5Sb2xlQXJuKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFJvbGVBcm4gaXMgbm90IGFsbG93ZWQgaW5zaWRlICcke2tleX0nYCk7XG4gICAgfVxuICAgIGlmIChhc3N1bWVSb2xlT3B0aW9ucz8uRXh0ZXJuYWxJZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBFeHRlcm5hbElkIGlzIG5vdCBhbGxvd2VkIGluc2lkZSAnJHtrZXl9J2ApO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBTZWUgZXhwbGFuYXRpb24gb24gYHBhdGNoU3RhY2tUYWdzT25SZWFkYFxuICAgKlxuICAgKiBUcmFuc2xhdGUgc3RhY2sgdGFncyBtZXRhZGF0YSBpZiBpdCBoYXMgdGhlIFwicmlnaHRcIiBjYXNpbmcuXG4gICAqL1xuICBwcml2YXRlIHN0YXRpYyBwYXRjaFN0YWNrVGFnc09uV3JpdGUobWFuaWZlc3Q6IGFzc2VtYmx5LkFzc2VtYmx5TWFuaWZlc3QpIHtcbiAgICByZXR1cm4gTWFuaWZlc3QucmVwbGFjZVN0YWNrVGFncyhtYW5pZmVzdCwgKHRhZ3MpID0+XG4gICAgICB0YWdzLm1hcChcbiAgICAgICAgKG1lbVRhZykgPT5cbiAgICAgICAgICAvLyBNaWdodCBhbHJlYWR5IGJlIHVwcGVyY2FzZWQgKGJlY2F1c2Ugc3RhY2sgc3ludGhlc2lzIGdlbmVyYXRlcyBpdCBpbiBmaW5hbCBmb3JtIHlldClcbiAgICAgICAgICAoJ0tleScgaW4gbWVtVGFnID8gbWVtVGFnIDogeyBLZXk6IG1lbVRhZy5rZXksIFZhbHVlOiBtZW1UYWcudmFsdWUgfSkgYXMgYW55XG4gICAgICApXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZWN1cnNpdmVseSByZXBsYWNlIHN0YWNrIHRhZ3MgaW4gdGhlIHN0YWNrIG1ldGFkYXRhXG4gICAqL1xuICBwcml2YXRlIHN0YXRpYyByZXBsYWNlU3RhY2tUYWdzKFxuICAgIG1hbmlmZXN0OiBhc3NlbWJseS5Bc3NlbWJseU1hbmlmZXN0LFxuICAgIGZuOiBFbmRvZnVuY3Rvcjxhc3NlbWJseS5TdGFja1RhZ3NNZXRhZGF0YUVudHJ5PlxuICApOiBhc3NlbWJseS5Bc3NlbWJseU1hbmlmZXN0IHtcbiAgICAvLyBOZWVkIHRvIGFkZCBpbiB0aGUgYG5vVW5kZWZpbmVkYHMgYmVjYXVzZSBvdGhlcndpc2UgamVzdCBzbmFwc2hvdCB0ZXN0cyBhcmUgZ29pbmcgdG8gZnJlYWsgb3V0XG4gICAgLy8gYWJvdXQgdGhlIGtleXMgd2l0aCB2YWx1ZXMgdGhhdCBhcmUgYHVuZGVmaW5lZGAgKGV2ZW4gdGhvdWdoIHRoZXkgd291bGQgbmV2ZXIgYmUgSlNPTi5zdHJpbmdpZmllZClcbiAgICByZXR1cm4gbm9VbmRlZmluZWQoe1xuICAgICAgLi4ubWFuaWZlc3QsXG4gICAgICBhcnRpZmFjdHM6IG1hcFZhbHVlcyhtYW5pZmVzdC5hcnRpZmFjdHMsIChhcnRpZmFjdCkgPT4ge1xuICAgICAgICBpZiAoYXJ0aWZhY3QudHlwZSAhPT0gYXNzZW1ibHkuQXJ0aWZhY3RUeXBlLkFXU19DTE9VREZPUk1BVElPTl9TVEFDSykge1xuICAgICAgICAgIHJldHVybiBhcnRpZmFjdDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbm9VbmRlZmluZWQoe1xuICAgICAgICAgIC4uLmFydGlmYWN0LFxuICAgICAgICAgIG1ldGFkYXRhOiBtYXBWYWx1ZXMoYXJ0aWZhY3QubWV0YWRhdGEsIChtZXRhZGF0YUVudHJpZXMpID0+XG4gICAgICAgICAgICBtZXRhZGF0YUVudHJpZXMubWFwKChtZXRhZGF0YUVudHJ5KSA9PiB7XG4gICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICBtZXRhZGF0YUVudHJ5LnR5cGUgIT09IGFzc2VtYmx5LkFydGlmYWN0TWV0YWRhdGFFbnRyeVR5cGUuU1RBQ0tfVEFHUyB8fFxuICAgICAgICAgICAgICAgICFtZXRhZGF0YUVudHJ5LmRhdGFcbiAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG1ldGFkYXRhRW50cnk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAuLi5tZXRhZGF0YUVudHJ5LFxuICAgICAgICAgICAgICAgIGRhdGE6IGZuKG1ldGFkYXRhRW50cnkuZGF0YSBhcyBhc3NlbWJseS5TdGFja1RhZ3NNZXRhZGF0YUVudHJ5KSxcbiAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgKSxcbiAgICAgICAgfSBhcyBhc3NlbWJseS5BcnRpZmFjdE1hbmlmZXN0KTtcbiAgICAgIH0pLFxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBjb25zdHJ1Y3RvcigpIHt9XG59XG5cbnR5cGUgRW5kb2Z1bmN0b3I8QT4gPSAoeDogQSkgPT4gQTtcblxuZnVuY3Rpb24gbWFwVmFsdWVzPEEsIEI+KFxuICB4czogUmVjb3JkPHN0cmluZywgQT4gfCB1bmRlZmluZWQsXG4gIGZuOiAoeDogQSkgPT4gQlxuKTogUmVjb3JkPHN0cmluZywgQj4gfCB1bmRlZmluZWQge1xuICBpZiAoIXhzKSB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuICBjb25zdCByZXQ6IFJlY29yZDxzdHJpbmcsIEI+IHwgdW5kZWZpbmVkID0ge307XG4gIGZvciAoY29uc3QgW2ssIHZdIG9mIE9iamVjdC5lbnRyaWVzKHhzKSkge1xuICAgIHJldFtrXSA9IGZuKHYpO1xuICB9XG4gIHJldHVybiByZXQ7XG59XG5cbmZ1bmN0aW9uIG5vVW5kZWZpbmVkPEEgZXh0ZW5kcyBvYmplY3Q+KHhzOiBBKTogQSB7XG4gIGNvbnN0IHJldDogYW55ID0ge307XG4gIGZvciAoY29uc3QgW2ssIHZdIG9mIE9iamVjdC5lbnRyaWVzKHhzKSkge1xuICAgIGlmICh2ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldFtrXSA9IHY7XG4gICAgfVxuICB9XG4gIHJldHVybiByZXQ7XG59XG5cbmZ1bmN0aW9uIHN0cmlwRW51bUVycm9ycyhlcnJvcnM6IGpzb25zY2hlbWEuVmFsaWRhdGlvbkVycm9yW10pIHtcbiAgcmV0dXJuIGVycm9ycy5maWx0ZXIoKGUpID0+IHR5cGVvZiBlLnNjaGVtYSA9PT0gJ3N0cmluZycgfHwgISgnZW51bScgaW4gZS5zY2hlbWEpKTtcbn1cbiJdfQ== +exports.RichPropertyType = RichPropertyType; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzb3VyY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdHlwZXMvcmVzb3VyY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBRUEsNkNBQW9EO0FBdUtwRCxNQUFhLGNBQWM7SUFDekIsWUFBNkIsS0FBK0M7UUFBL0MsVUFBSyxHQUFMLEtBQUssQ0FBMEM7UUFDMUUsSUFBSSxLQUFLLEtBQUssU0FBUyxFQUFFO1lBQ3ZCLE1BQU0sSUFBSSxLQUFLLENBQUMsb0JBQW9CLENBQUMsQ0FBQztTQUN2QztJQUNILENBQUM7SUFFTSxLQUFLOztRQUNWLE9BQU8sQ0FBQyxHQUFHLENBQUMsTUFBQSxJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsbUNBQUksRUFBRSxDQUFDLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNoRSxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNJLFVBQVUsQ0FBQyxJQUFrQjtRQUNsQyxNQUFNLFFBQVEsR0FBRyxJQUFJLGdCQUFnQixDQUFDLElBQUksQ0FBQyxDQUFDO1FBRTVDLDZHQUE2RztRQUM3Ryx3R0FBd0c7UUFDeEcsOEdBQThHO1FBQzlHLHFDQUFxQztRQUNyQyxJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRTtZQUNoRCwyQ0FBMkM7WUFDM0MsT0FBTyxLQUFLLENBQUM7U0FDZDtRQUVELCtGQUErRjtRQUMvRixrR0FBa0c7UUFDbEcsSUFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLFFBQVEsSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLFdBQVcsQ0FBQyxFQUFFO1lBQzlFLE9BQU8sS0FBSyxDQUFDO1NBQ2Q7UUFFRCxJQUFJ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QyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsSUFBSSxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztnQkFDakYsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFBLDJCQUFpQixFQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUMzQyxPQUFPLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLEdBQUcsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUMvRDtJQUNILENBQUM7Q0FDRjtBQXRKRCw0Q0FzSkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFbnRpdHksIFJlZmVyZW5jZSwgUmVsYXRpb25zaGlwIH0gZnJvbSAnQGNka2xhYnMvdHNrYic7XG5pbXBvcnQgeyBTcGVjRGF0YWJhc2UgfSBmcm9tICcuL2RhdGFiYXNlJztcbmltcG9ydCB7IHNvcnRLZXlDb21wYXJhdG9yIH0gZnJvbSAnLi4vdXRpbC9zb3J0aW5nJztcblxuZXhwb3J0IGludGVyZmFjZSBQYXJ0aXRpb24gZXh0ZW5kcyBFbnRpdHkge1xuICByZWFkb25seSBwYXJ0aXRpb246IHN0cmluZztcbn1cblxuZXhwb3J0IHR5cGUgSGFzUmVnaW9uID0gUmVsYXRpb25zaGlwPFBhcnRpdGlvbiwgUmVnaW9uLCB7IGlzUHJpbWFyeT86IGJvb2xlYW4gfT47XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2VydmljZSBleHRlbmRzIEVudGl0eSB7XG4gIC8qKlxuICAgKiBUaGUgZnVsbCBuYW1lIG9mIHRoZSBzZXJ2aWNlIGluY2x1ZGluZyB0aGUgZ3JvdXAgcHJlZml4LCBsb3dlcmNhc2VkIGFuZCBoeXBoZW5hdGVkLlxuICAgKlxuICAgKiBFLmcuIGBBV1M6OkR5bmFtb0RCYCAtPiBgYXdzLWR5bmFtb2RiYFxuICAgKlxuICAgKiBAZXhhbXBsZSBhd3MtZHluYW1vZGJcbiAgICovXG4gIHJlYWRvbmx5IG5hbWU6IHN0cmluZztcbiAgLyoqXG4gICAqIE9ubHkgdGhlIHNlcnZpY2UgcGFydCBvZiB0aGUgbmFtZSwgbG93ZXJjYXNlZC5cbiAgICpcbiAgICogRS5nLiBgQVdTOjpEeW5hbW9EQmAgLT4gYGR5bmFtb2RiYFxuICAgKlxuICAgKiBAZXhhbXBsZSBkeW5hbW9kYlxuICAgKi9cbiAgcmVhZG9ubHkgc2hvcnROYW1lOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBUaGUgc2hvcnRuYW1lIG9mIHRoZSBzZXJ2aWNlIGluIGNhcGl0YWxpemVkIGZvcm1cbiAgICpcbiAgICogRS5nLiBgQVdTOjpEeW5hbW9EQmAgLT4gYER5bmFtb0RCYFxuICAgKlxuICAgKiBAZXhhbXBsZSBkeW5hbW9kYlxuICAgKi9cbiAgcmVhZG9ubHkgY2FwaXRhbGl6ZWQ6IHN0cmluZztcbiAgLyoqXG4gICAqIFRoZSBjb21wbGV0ZSBjbG91ZGZvcm1hdGlvbiBzdHlsZSBuYW1lc3BhY2Ugb2YgdGhlIHNlcnZpY2VcbiAgICpcbiAgICogRS5nLiBgQVdTOjpEeW5hbW9EQmBcbiAgICpcbiAgICogQGV4YW1wbGUgZHluYW1vZGJcbiAgICovXG4gIHJlYWRvbmx5IGNsb3VkRm9ybWF0aW9uTmFtZXNwYWNlOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVnaW9uIGV4dGVuZHMgRW50aXR5IHtcbiAgcmVhZG9ubHkgbmFtZTogc3RyaW5nO1xuICByZWFkb25seSBkZXNjcmlwdGlvbj86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBEb2N1bWVudGF0aW9uIGV4dGVuZHMgRW50aXR5IHtcbiAgcmVhZG9ubHkgbWFya2Rvd246IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBSZXNvdXJjZSBleHRlbmRzIEVudGl0eSB7XG4gIHJlYWRvbmx5IG5hbWU6IHN0cmluZztcbiAgcmVhZG9ubHkgY2xvdWRGb3JtYXRpb25UeXBlOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBJZiBzZXQsIHRoaXMgQ2xvdWRGb3JtYXRpb24gVHJhbnNmb3JtIGlzIHJlcXVpcmVkIGJ5IHRoZSByZXNvdXJjZVxuICAgKi9cbiAgY2xvdWRGb3JtYXRpb25UcmFuc2Zvcm0/OiBzdHJpbmc7XG4gIGRvY3VtZW50YXRpb24/OiBzdHJpbmc7XG4gIHByaW1hcnlJZGVudGlmaWVyPzogc3RyaW5nW107XG4gIHJlYWRvbmx5IHByb3BlcnRpZXM6IFJlc291cmNlUHJvcGVydGllcztcbiAgcmVhZG9ubHkgYXR0cmlidXRlczogUmVjb3JkPHN0cmluZywgQXR0cmlidXRlPjtcbiAgcmVhZG9ubHkgdmFsaWRhdGlvbnM/OiB1bmtub3duO1xuICBpZGVudGlmaWVyPzogUmVzb3VyY2VJZGVudGlmaWVyO1xuICBpc1N0YXRlZnVsPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogSW5mb3JtYXRpb24gYWJvdXQgdGhlIHRhZ2dhYmlsaXR5IG9mIHRoaXMgcmVzb3VyY2VcbiAgICpcbiAgICogVW5kZWZpbmVkIGlmIHRoZSByZXNvdXJjZSBpcyBub3QgdGFnZ2FibGUuXG4gICAqL1xuICB0YWdJbmZvcm1hdGlvbj86IFRhZ0luZm9ybWF0aW9uO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIGNoYW5nZXMgdG8gdGhpcyByZXNvdXJjZSBuZWVkIHRvIGJlIHNjcnV0aW5pemVkXG4gICAqXG4gICAqIEBkZWZhdWx0IFJlc291cmNlU2NydXRpbnlUeXBlLk5PTkVcbiAgICovXG4gIHNjcnV0aW5pemFibGU/OiBSZXNvdXJjZVNjcnV0aW55VHlwZTtcblxuICAvKipcbiAgICogQWRkaXRpb25hbCBwYXRocyB0byBwcm9wZXJ0aWVzIHRoYXQgYWxzbyBjYXVzZSByZXBsYWNlbWVudC5cbiAgICpcbiAgICogVGhpcyBpcyB0byBpbmRpY2F0ZSB0aGF0IGNlcnRhaW4gcHJvcGVydHkgcGF0aHMgaW50byB0aGlzIHJlc291cmNlXG4gICAqIHdpbGwgY2F1c2UgcmVwbGFjZW1lbnQ7IG9ubHkgcmVwbGFjZW1lbnRzIHRoYXQgY2Fubm90IGJlIHJlcHJlc2VudGVkXG4gICAqIGJ5IHRhZ2dpbmcgdGhlIHByb3BlcnR5IGluIGEgdHlwZSBkZWZpbml0aW9uIHdpbGwgYmUgaW5jbHVkZWQgaGVyZVxuICAgKiAoZm9yIGV4YW1wbGUsIGJlY2F1c2UgdGhlIHRhZ2dlZCBwcm9wZXJ0eSB3b3VsZCBiZSBpbiBhIHByZWRlZmluZWRcbiAgICogdHlwZSBsaWtlIGB0YWdgKS5cbiAgICpcbiAgICogQWxsIHByb3BlcnRpZXMgaW4gdGhpcyBsaXN0IHNob3VsZCBiZSB0cmVhdGVkIGFzIGBjYXVzZXNSZXBsYWNlbWVudDogJ3llcydgLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtXG4gICAqL1xuICBhZGRpdGlvbmFsUmVwbGFjZW1lbnRQcm9wZXJ0aWVzPzogc3RyaW5nW11bXTtcbn1cblxuZXhwb3J0IHR5cGUgUmVzb3VyY2VQcm9wZXJ0aWVzID0gUmVjb3JkPHN0cmluZywgUHJvcGVydHk+O1xuXG5leHBvcnQgaW50ZXJmYWNlIFR5cGVEZWZpbml0aW9uIGV4dGVuZHMgRW50aXR5IHtcbiAgcmVhZG9ubHkgbmFtZTogc3RyaW5nO1xuICBkb2N1bWVudGF0aW9uPzogc3RyaW5nO1xuICByZWFkb25seSBwcm9wZXJ0aWVzOiBSZXNvdXJjZVByb3BlcnRpZXM7XG5cbiAgLyoqXG4gICAqIElmIHRydWUsIHJlbmRlciB0aGlzIHR5cGUgZXZlbiBpZiBpdCBpcyB1bnVzZWQuXG4gICAqL1xuICBtdXN0UmVuZGVyRm9yQndDb21wYXQ/OiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFByb3BlcnR5IHtcbiAgLyoqXG4gICAqIERlc2NyaXB0aW9uIG9mIHRoZSBwcm9wZXJ0eVxuICAgKi9cbiAgZG9jdW1lbnRhdGlvbj86IHN0cmluZztcblxuICAvKipcbiAgICogSXMgdGhpcyBwcm9wZXJ0eSByZXF1aXJlZFxuICAgKlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVxdWlyZWQ/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBUaGUgY3VycmVudCB0eXBlIG9mIHRoaXMgcHJvcGVydHlcbiAgICovXG4gIHR5cGU6IFByb3BlcnR5VHlwZTtcblxuICAvKipcbiAgICogQW4gb3JkZXJlZCBsaXN0IG9mIHByZXZpb3VzIHR5cGVzIG9mIHRoaXMgcHJvcGVydHkgaW4gYXNjZW5kaW5nIG9yZGVyXG4gICAqXG4gICAqIERvZXMgbm90IGluY2x1ZGUgdGhlIGN1cnJlbnQgdHlwZSwgdXNlIGB0eXBlYCBmb3IgdGhpcy5cbiAgICovXG4gIHByZXZpb3VzVHlwZXM/OiBQcm9wZXJ0eVR5cGVbXTtcblxuICAvKipcbiAgICogQSBzdHJpbmcgcmVwcmVzZW50YXRpb24gdGhlIGRlZmF1bHQgdmFsdWUgb2YgdGhpcyBwcm9wZXJ0eVxuICAgKlxuICAgKiBUaGlzIHZhbHVlIGlzIG5vdCBkaXJlY3RseSBmdW5jdGlvbmFsOyBpdCBkZXNjcmliZXMgaG93IHRoZSB1bmRlcmx5aW5nIHJlc291cmNlXG4gICAqIHdpbGwgYmVoYXZlIGlmIHRoZSB2YWx1ZSBpcyBub3Qgc3BlY2lmaWVkLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIERlZmF1bHQgdW5rbm93blxuICAgKi9cbiAgZGVmYXVsdFZhbHVlPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoaXMgcHJvcGVydHkgaXMgZGVwcmVjYXRlZFxuICAgKlxuICAgKiBAZGVmYXVsdCAtIE5vdCBkZXByZWNhdGVkXG4gICAqL1xuICBkZXByZWNhdGVkPzogRGVwcmVjYXRpb247XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgY2hhbmdlcyB0byB0aGlzIHByb3BlcnR5IG5lZWRzIHRvIGJlIHNjcnV0aW5pemVkIHNwZWNpYWxseVxuICAgKlxuICAgKiBAZGVmYXVsdCBQcm9wZXJ0eVNjcnV0aW55VHlwZS5OT05FXG4gICAqL1xuICBzY3J1dGluaXphYmxlPzogUHJvcGVydHlTY3J1dGlueVR5cGU7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhlIGNvbnRhaW5pbmcgcmVzb3VyY2Ugd2lsbCBiZSByZXBsYWNlZCBpZiB0aGlzIHByb3BlcnR5IGlzIGNoYW5nZWRcbiAgICpcbiAgICogQGRlZmF1bHQgJ25vJ1xuICAgKi9cbiAgY2F1c2VzUmVwbGFjZW1lbnQ/OiAneWVzJyB8ICdubycgfCAnbWF5YmUnO1xufVxuXG5leHBvcnQgY2xhc3MgUmljaFR5cGVkRmllbGQge1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IGZpZWxkOiBQaWNrPFByb3BlcnR5LCAndHlwZScgfCAncHJldmlvdXNUeXBlcyc+KSB7XG4gICAgaWYgKGZpZWxkID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignRmllbGQgaXMgdW5kZWZpbmVkJyk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHR5cGVzKCk6IFByb3BlcnR5VHlwZVtdIHtcbiAgICByZXR1cm4gWy4uLih0aGlzLmZpZWxkLnByZXZpb3VzVHlwZXMgPz8gW10pLCB0aGlzLmZpZWxkLnR5cGVdO1xuICB9XG5cbiAgLyoqXG4gICAqIFVwZGF0ZSB0aGUgdHlwZSBvZiB0aGlzIHByb3BlcnR5IHdpdGggYSBuZXcgdHlwZVxuICAgKlxuICAgKiBPbmx5IGlmIGl0J3Mgbm90IGluIHRoZSBzZXQgb2YgdHlwZXMgYWxyZWFkeS5cbiAgICovXG4gIHB1YmxpYyB1cGRhdGVUeXBlKHR5cGU6IFByb3BlcnR5VHlwZSk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IHJpY2hUeXBlID0gbmV3IFJpY2hQcm9wZXJ0eVR5cGUodHlwZSk7XG5cbiAgICAvLyBPbmx5IGFkZCB0aGlzIHR5cGUgaWYgd2UgZG9uJ3QgYWxyZWFkeSBoYXZlIGl0LiBXZSBhcmUgb25seSBkb2luZyBjb21wYXJpc29ucyB3aGVyZSAnaW50ZWdlcicgYW5kICdudW1iZXInXG4gICAgLy8gYXJlIHRyZWF0ZWQgdGhlIHNhbWUsIGZvciBhbGwgb3RoZXIgdHlwZXMgd2UgbmVlZCBzdHJpY3QgZXF1YWxpdHkuIFdlIHVzZWQgdG8gdXNlICdhc3NpZ25hYmxlVG8nIGFzIGFcbiAgICAvLyBjb25kaXRpb24sIGJ1dCB0aGVzZSB0eXBlcyB3aWxsIGJlIHJlbmRlcmVkIGluIGJvdGggY28tIGFuZCBjb250cmF2YXJpYW50IHBvc2l0aW9ucywgYW5kIHNvIHdlIHJlYWxseSBjYW4ndFxuICAgIC8vIGRvIG11Y2ggYmV0dGVyIHRoYW4gZnVsbCBlcXVhbGl0eS5cbiAgICBpZiAodGhpcy50eXBlcygpLnNvbWUoKHQpID0+IHJpY2hUeXBlLmVxdWFscyh0KSkpIHtcbiAgICAgIC8vIE5vdGhpbmcgdG8gZG8sIHR5cGUgaXMgYWxyZWFkeSBpbiB0aGVyZS5cbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICAvLyBTcGVjaWFsIGNhc2U6IGlmIHRoZSBuZXcgdHlwZSBpcyBgc3RyaW5nYCBhbmQgdGhlIG9sZCB0eXBlIGlzIGBkYXRlLXRpbWVgLCB3ZSBhc3N1bWUgdGhpcyBpc1xuICAgIC8vIHRoZSBzYW1lIHR5cGUgYnV0IHdlIGRyb3BwZWQgc29tZSBmb3JtYXR0aW5nIGluZm9ybWF0aW9uLiBObyBuZWVkIHRvIG1ha2UgdGhpcyBhIHNlcGFyYXRlIHR5cGUuXG4gICAgaWYgKHR5cGUudHlwZSA9PT0gJ3N0cmluZycgJiYgdGhpcy50eXBlcygpLnNvbWUoKHQpID0+IHQudHlwZSA9PT0gJ2RhdGUtdGltZScpKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLmZpZWxkLnByZXZpb3VzVHlwZXMpIHtcbiAgICAgIHRoaXMuZmllbGQucHJldmlvdXNUeXBlcyA9IFtdO1xuICAgIH1cbiAgICB0aGlzLmZpZWxkLnByZXZpb3VzVHlwZXMucHVzaCh0aGlzLmZpZWxkLnR5cGUpO1xuICAgIHRoaXMuZmllbGQudHlwZSA9IHR5cGU7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIFJpY2hQcm9wZXJ0eSBleHRlbmRzIFJpY2hUeXBlZEZpZWxkIHtcbiAgY29uc3RydWN0b3IocHJvcGVydHk6IFByb3BlcnR5KSB7XG4gICAgc3VwZXIocHJvcGVydHkpO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBSaWNoQXR0cmlidXRlIGV4dGVuZHMgUmljaFR5cGVkRmllbGQge1xuICBjb25zdHJ1Y3RvcihhdHRyOiBBdHRyaWJ1dGUpIHtcbiAgICBzdXBlcihhdHRyKTtcbiAgfVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIEF0dHJpYnV0ZSB7XG4gIGRvY3VtZW50YXRpb24/OiBzdHJpbmc7XG4gIHR5cGU6IFByb3BlcnR5VHlwZTtcbiAgLyoqXG4gICAqIEFuIG9yZGVyZWQgbGlzdCBvZiBwcmV2aW91cyB0eXBlcyBvZiB0aGlzIHByb3BlcnR5IGluIGFzY2VuZGluZyBvcmRlclxuICAgKlxuICAgKiBEb2VzIG5vdCBpbmNsdWRlIHRoZSBjdXJyZW50IHR5cGUsIHVzZSBgdHlwZWAgZm9yIHRoaXMuXG4gICAqL1xuICBwcmV2aW91c1R5cGVzPzogUHJvcGVydHlUeXBlW107XG59XG5cbmV4cG9ydCBlbnVtIERlcHJlY2F0aW9uIHtcbiAgLyoqXG4gICAqIE5vdCBkZXByZWNhdGVkXG4gICAqL1xuICBOT05FID0gJ05PTkUnLFxuXG4gIC8qKlxuICAgKiBXYXJuIGFib3V0IHVzZVxuICAgKi9cbiAgV0FSTiA9ICdXQVJOJyxcblxuICAvKipcbiAgICogRG8gbm90IGVtaXQgdGhlIHZhbHVlIGF0IGFsbFxuICAgKlxuICAgKiAoSGFuZGxlIHByb3BlcnRpZXMgdGhhdCB3ZXJlIGluY29ycmVjdGx5IGFkZGVkIHRvIHRoZSBzcGVjKVxuICAgKi9cbiAgSUdOT1JFID0gJ0lHTk9SRScsXG59XG5cbmV4cG9ydCB0eXBlIFByb3BlcnR5VHlwZSA9XG4gIHwgUHJpbWl0aXZlVHlwZVxuICB8IERlZmluaXRpb25SZWZlcmVuY2VcbiAgfCBCdWlsdGluVGFnVHlwZVxuICB8IEFycmF5VHlwZTxQcm9wZXJ0eVR5cGU+XG4gIHwgTWFwVHlwZTxQcm9wZXJ0eVR5cGU+XG4gIHwgVHlwZVVuaW9uPFByb3BlcnR5VHlwZT47XG5cbmV4cG9ydCB0eXBlIFByaW1pdGl2ZVR5cGUgPVxuICB8IFN0cmluZ1R5cGVcbiAgfCBOdW1iZXJUeXBlXG4gIHwgSW50ZWdlclR5cGVcbiAgfCBCb29sZWFuVHlwZVxuICB8IEpzb25UeXBlXG4gIHwgRGF0ZVRpbWVUeXBlXG4gIHwgTnVsbFR5cGVcbiAgfCBCdWlsdGluVGFnVHlwZTtcblxuZXhwb3J0IGZ1bmN0aW9uIGlzQ29sbGVjdGlvblR5cGUoeDogUHJvcGVydHlUeXBlKTogeCBpcyBBcnJheVR5cGU8YW55PiB8IE1hcFR5cGU8YW55PiB7XG4gIHJldHVybiB4LnR5cGUgPT09ICdhcnJheScgfHwgeC50eXBlID09PSAnbWFwJztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBUYWdJbmZvcm1hdGlvbiB7XG4gIC8qKlxuICAgKiBOYW1lIG9mIHRoZSBwcm9wZXJ0eSB0aGF0IGhvbGRzIHRoZSB0YWdzXG4gICAqL1xuICByZWFkb25seSB0YWdQcm9wZXJ0eU5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogVXNlZCB0byBpbnN0cnVjdCBjZGsuVGFnTWFuYWdlciBob3cgdG8gaGFuZGxlIHRhZ3NcbiAgICovXG4gIHJlYWRvbmx5IHZhcmlhbnQ6IFRhZ1ZhcmlhbnQ7XG59XG5cbmV4cG9ydCB0eXBlIFRhZ1ZhcmlhbnQgPSAnc3RhbmRhcmQnIHwgJ2FzZycgfCAnbWFwJztcblxuZXhwb3J0IGludGVyZmFjZSBTdHJpbmdUeXBlIHtcbiAgcmVhZG9ubHkgdHlwZTogJ3N0cmluZyc7XG59XG5leHBvcnQgaW50ZXJmYWNlIEJ1aWx0aW5UYWdUeXBlIHtcbiAgcmVhZG9ubHkgdHlwZTogJ3RhZyc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTnVtYmVyVHlwZSB7XG4gIHJlYWRvbmx5IHR5cGU6ICdudW1iZXInO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEludGVnZXJUeXBlIHtcbiAgcmVhZG9ubHkgdHlwZTogJ2ludGVnZXInO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEJvb2xlYW5UeXBlIHtcbiAgcmVhZG9ubHkgdHlwZTogJ2Jvb2xlYW4nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEpzb25UeXBlIHtcbiAgcmVhZG9ubHkgdHlwZTogJ2pzb24nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE51bGxUeXBlIHtcbiAgcmVhZG9ubHkgdHlwZTogJ251bGwnO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIERhdGVUaW1lVHlwZSB7XG4gIHJlYWRvbmx5IHR5cGU6ICdkYXRlLXRpbWUnO1xufVxuXG4vKipcbiAqIFRoZSBcImxlZ2FjeVwiIHRhZyB0eXBlICh1c2VkIGluIHRoZSBvbGQgcmVzb3VyY2Ugc3BlYylcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBCdWlsdGluVGFnVHlwZSB7XG4gIHJlYWRvbmx5IHR5cGU6ICd0YWcnO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIERlZmluaXRpb25SZWZlcmVuY2Uge1xuICByZWFkb25seSB0eXBlOiAncmVmJztcbiAgcmVhZG9ubHkgcmVmZXJlbmNlOiBSZWZlcmVuY2U8VHlwZURlZmluaXRpb24+O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFycmF5VHlwZTxFPiB7XG4gIHJlYWRvbmx5IHR5cGU6ICdhcnJheSc7XG4gIHJlYWRvbmx5IGVsZW1lbnQ6IEU7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTWFwVHlwZTxFPiB7XG4gIHJlYWRvbmx5IHR5cGU6ICdtYXAnO1xuICByZWFkb25seSBlbGVtZW50OiBFO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFR5cGVVbmlvbjxFPiB7XG4gIHJlYWRvbmx5IHR5cGU6ICd1bmlvbic7XG4gIHJlYWRvbmx5IHR5cGVzOiBFW107XG59XG5cbmV4cG9ydCB0eXBlIEhhc1Jlc291cmNlID0gUmVsYXRpb25zaGlwPFNlcnZpY2UsIFJlc291cmNlPjtcbmV4cG9ydCB0eXBlIFJlZ2lvbkhhc1Jlc291cmNlID0gUmVsYXRpb25zaGlwPFJlZ2lvbiwgUmVzb3VyY2U+O1xuZXhwb3J0IHR5cGUgUmVnaW9uSGFzU2VydmljZSA9IFJlbGF0aW9uc2hpcDxSZWdpb24sIFNlcnZpY2U+O1xuZXhwb3J0IHR5cGUgUmVzb3VyY2VEb2MgPSBSZWxhdGlvbnNoaXA8UmVzb3VyY2UsIERvY3VtZW50YXRpb24+O1xuXG5leHBvcnQgdHlwZSBTZXJ2aWNlSW5SZWdpb24gPSBSZWxhdGlvbnNoaXA8UmVnaW9uLCBTZXJ2aWNlPjtcbmV4cG9ydCB0eXBlIFJlc291cmNlSW5SZWdpb24gPSBSZWxhdGlvbnNoaXA8UmVnaW9uLCBSZXNvdXJjZT47XG5cbmV4cG9ydCB0eXBlIFVzZXNUeXBlID0gUmVsYXRpb25zaGlwPFJlc291cmNlLCBUeXBlRGVmaW5pdGlvbj47XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVzb3VyY2VJZGVudGlmaWVyIGV4dGVuZHMgRW50aXR5IHtcbiAgcmVhZG9ubHkgYXJuVGVtcGxhdGU/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IHByaW1hcnlJZGVudGlmaWVyPzogc3RyaW5nW107XG59XG5cbi8qKlxuICogTWFyayBhIHJlc291cmNlIGFzIGEgcmVzb3VyY2UgdGhhdCBuZWVkcyBhZGRpdGlvbmFsIHNjcnV0aXkgd2hlbiBhZGRlZCwgcmVtb3ZlZCBvciBjaGFuZ2VkXG4gKlxuICogVXNlZCB0byBtYXJrIHJlc291cmNlcyB0aGF0IHJlcHJlc2VudCBzZWN1cml0eSBwb2xpY2llcy5cbiAqL1xuZXhwb3J0IGVudW0gUmVzb3VyY2VTY3J1dGlueVR5cGUge1xuICAvKipcbiAgICogTm8gYWRkaXRpb25hbCBzY3J1dGlueVxuICAgKi9cbiAgTm9uZSA9ICdOb25lJyxcblxuICAvKipcbiAgICogQW4gZXh0ZXJuYWxseSBhdHRhY2hlZCBwb2xpY3kgZG9jdW1lbnQgdG8gYSByZXNvdXJjZVxuICAgKlxuICAgKiAoQ29tbW9uIGZvciBTUVMsIFNOUywgUzMsIC4uLilcbiAgICovXG4gIFJlc291cmNlUG9saWN5UmVzb3VyY2UgPSAnUmVzb3VyY2VQb2xpY3lSZXNvdXJjZScsXG5cbiAgLyoqXG4gICAqIFRoaXMgaXMgYW4gSUFNIHBvbGljeSBvbiBhbiBpZGVudGl0eSByZXNvdXJjZVxuICAgKlxuICAgKiAoQmFzaWNhbGx5IHNheWluZzogdGhpcyBpcyBBV1M6OklBTTo6UG9saWN5KVxuICAgKi9cbiAgSWRlbnRpdHlQb2xpY3lSZXNvdXJjZSA9ICdJZGVudGl0eVBvbGljeVJlc291cmNlJyxcblxuICAvKipcbiAgICogVGhpcyBpcyBhIExhbWJkYSBQZXJtaXNzaW9uIHBvbGljeVxuICAgKi9cbiAgTGFtYmRhUGVybWlzc2lvbiA9ICdMYW1iZGFQZXJtaXNzaW9uJyxcblxuICAvKipcbiAgICogQW4gaW5ncmVzcyBydWxlIG9iamVjdFxuICAgKi9cbiAgSW5ncmVzc1J1bGVSZXNvdXJjZSA9ICdJbmdyZXNzUnVsZVJlc291cmNlJyxcblxuICAvKipcbiAgICogQSBzZXQgb2YgZWdyZXNzIHJ1bGVzXG4gICAqL1xuICBFZ3Jlc3NSdWxlUmVzb3VyY2UgPSAnRWdyZXNzUnVsZVJlc291cmNlJyxcblxuICAvKipcbiAgICogQVdTOjpTU086OkFzc2lnbm1lbnRcbiAgICpcbiAgICogSUFNIElkZW50aXR5IENlbnRlciAoZm9ybWVybHkga25vd24gYXMgU1NPKVxuICAgKi9cbiAgU3NvQXNzaWdubWVudFJlc291cmNlID0gJ1Nzb0Fzc2lnbm1lbnRSZXNvdXJjZScsXG5cbiAgLyoqXG4gICAqIEFXUzo6U1NPOjpJbnN0YW5jZUFjY2Vzc0NvbnRyb2xBdHRyaWJ1dGVDb25maWd1cmF0aW9uXG4gICAqXG4gICAqIElBTSBJZGVudGl0eSBDZW50ZXIgKGZvcm1lcmx5IGtub3duIGFzIFNTTylcbiAgICovXG4gIFNzb0luc3RhbmNlQUNBQ29uZmlnUmVzb3VyY2UgPSAnU3NvSW5zdGFuY2VBQ0FDb25maWdSZXNvdXJjZScsXG5cbiAgLyoqXG4gICAqIEFXUzo6U1NPOjpQZXJtaXNzaW9uU2V0XG4gICAqXG4gICAqIElBTSBJZGVudGl0eSBDZW50ZXIgKGZvcm1lcmx5IGtub3duIGFzIFNTTylcbiAgICovXG4gIFNzb1Blcm1pc3Npb25TZXQgPSAnU3NvUGVybWlzc2lvblNldCcsXG59XG5cbi8qKlxuICogTWFyayBhIHByb3BlcnR5IGFzIGEgcHJvcGVydHkgdGhhdCBuZWVkcyBhZGRpdGlvbmFsIHNjcnV0aW55IHdoZW4gaXQgY2hhbmdlc1xuICpcbiAqIFVzZWQgdG8gbWFyayBzZW5zaXRpdmUgcHJvcGVydGllcyB0aGF0IGhhdmUgc2VjdXJpdHktcmVsYXRlZCBpbXBsaWNhdGlvbnMuXG4gKi9cbmV4cG9ydCBlbnVtIFByb3BlcnR5U2NydXRpbnlUeXBlIHtcbiAgLyoqXG4gICAqIE5vIGFkZGl0aW9uYWwgc2NydXRpbnlcbiAgICovXG4gIE5vbmUgPSAnTm9uZScsXG5cbiAgLyoqXG4gICAqIFRoaXMgaXMgYW4gSUFNIHBvbGljeSBkaXJlY3RseSBvbiBhIHJlc291cmNlXG4gICAqL1xuICBJbmxpbmVSZXNvdXJjZVBvbGljeSA9ICdJbmxpbmVSZXNvdXJjZVBvbGljeScsXG5cbiAgLyoqXG4gICAqIEVpdGhlciBhbiBBc3N1bWVSb2xlUG9saWN5RG9jdW1lbnQgb3IgYSBkaWN0aW9uYXJ5IG9mIHBvbGljeSBkb2N1bWVudHNcbiAgICovXG4gIElubGluZUlkZW50aXR5UG9saWNpZXMgPSAnSW5saW5lSWRlbnRpdHlQb2xpY2llcycsXG5cbiAgLyoqXG4gICAqIEEgbGlzdCBvZiBtYW5hZ2VkIHBvbGljaWVzIChvbiBhbiBpZGVudGl0eSByZXNvdXJjZSlcbiAgICovXG4gIE1hbmFnZWRQb2xpY2llcyA9ICdNYW5hZ2VkUG9saWNpZXMnLFxuXG4gIC8qKlxuICAgKiBBIHNldCBvZiBpbmdyZXNzIHJ1bGVzIChvbiBhIHNlY3VyaXR5IGdyb3VwKVxuICAgKi9cbiAgSW5ncmVzc1J1bGVzID0gJ0luZ3Jlc3NSdWxlcycsXG5cbiAgLyoqXG4gICAqIEEgc2V0IG9mIGVncmVzcyBydWxlcyAob24gYSBzZWN1cml0eSBncm91cClcbiAgICovXG4gIEVncmVzc1J1bGVzID0gJ0VncmVzc1J1bGVzJyxcbn1cblxuZXhwb3J0IGNsYXNzIFJpY2hQcm9wZXJ0eVR5cGUge1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IHR5cGU6IFByb3BlcnR5VHlwZSkge31cblxuICBwdWJsaWMgZXF1YWxzKHJoczogUHJvcGVydHlUeXBlKTogYm9vbGVhbiB7XG4gICAgc3dpdGNoICh0aGlzLnR5cGUudHlwZSkge1xuICAgICAgY2FzZSAnaW50ZWdlcic6XG4gICAgICBjYXNlICdib29sZWFuJzpcbiAgICAgIGNhc2UgJ2RhdGUtdGltZSc6XG4gICAgICBjYXNlICdqc29uJzpcbiAgICAgIGNhc2UgJ251bGwnOlxuICAgICAgY2FzZSAnbnVtYmVyJzpcbiAgICAgIGNhc2UgJ3N0cmluZyc6XG4gICAgICBjYXNlICd0YWcnOlxuICAgICAgICByZXR1cm4gcmhzLnR5cGUgPT09IHRoaXMudHlwZS50eXBlO1xuICAgICAgY2FzZSAnYXJyYXknOlxuICAgICAgY2FzZSAnbWFwJzpcbiAgICAgICAgcmV0dXJuIHJocy50eXBlID09PSB0aGlzLnR5cGUudHlwZSAmJiBuZXcgUmljaFByb3BlcnR5VHlwZSh0aGlzLnR5cGUuZWxlbWVudCkuZXF1YWxzKHJocy5lbGVtZW50KTtcbiAgICAgIGNhc2UgJ3JlZic6XG4gICAgICAgIHJldHVybiByaHMudHlwZSA9PT0gJ3JlZicgJiYgdGhpcy50eXBlLnJlZmVyZW5jZS4kcmVmID09PSByaHMucmVmZXJlbmNlLiRyZWY7XG4gICAgICBjYXNlICd1bmlvbic6XG4gICAgICAgIGNvbnN0IGxoc0tleSA9IHRoaXMuc29ydEtleSgpO1xuICAgICAgICBjb25zdCByaHNLZXkgPSBuZXcgUmljaFByb3BlcnR5VHlwZShyaHMpLnNvcnRLZXkoKTtcbiAgICAgICAgcmV0dXJuIGxoc0tleS5sZW5ndGggPT09IHJoc0tleS5sZW5ndGggJiYgbGhzS2V5LmV2ZXJ5KChsLCBpKSA9PiBsID09PSByaHNLZXlbaV0pO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoZSBjdXJyZW50IHR5cGUgaXMgSmF2YVNjcmlwdC1lcXVhbCB0byB0aGUgUkhTIHR5cGVcbiAgICpcbiAgICogU2FtZSBhcyBub3JtYWwgZXF1YWxpdHksIGJ1dCBjb25zaWRlciBgaW50ZWdlcmAgYW5kIGBudW1iZXJgIHRoZSBzYW1lIHR5cGVzLlxuICAgKi9cbiAgcHVibGljIGphdmFzY3JpcHRFcXVhbHMocmhzOiBQcm9wZXJ0eVR5cGUpOiBib29sZWFuIHtcbiAgICBzd2l0Y2ggKHRoaXMudHlwZS50eXBlKSB7XG4gICAgICBjYXNlICdudW1iZXInOlxuICAgICAgY2FzZSAnaW50ZWdlcic6XG4gICAgICAgIC8vIFdpZGVuaW5nXG4gICAgICAgIHJldHVybiByaHMudHlwZSA9PT0gJ2ludGVnZXInIHx8IHJocy50eXBlID09PSAnbnVtYmVyJztcblxuICAgICAgY2FzZSAnYXJyYXknOlxuICAgICAgY2FzZSAnbWFwJzpcbiAgICAgICAgcmV0dXJuIHJocy50eXBlID09PSB0aGlzLnR5cGUudHlwZSAmJiBuZXcgUmljaFByb3BlcnR5VHlwZSh0aGlzLnR5cGUuZWxlbWVudCkuamF2YXNjcmlwdEVxdWFscyhyaHMuZWxlbWVudCk7XG5cbiAgICAgIGNhc2UgJ3VuaW9uJzpcbiAgICAgICAgaWYgKHJocy50eXBlICE9PSAndW5pb24nKSB7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIC8vIEV2ZXJ5IHR5cGUgaW4gdGhpcyB1bmlvbiBuZWVkcyB0byBiZSBlcXVhbCBvbmUgdHlwZSBpbiBSSFNcbiAgICAgICAgcmV0dXJuIHRoaXMudHlwZS50eXBlcy5ldmVyeSgodDEpID0+IHJocy50eXBlcy5zb21lKCh0MikgPT4gbmV3IFJpY2hQcm9wZXJ0eVR5cGUodDEpLmphdmFzY3JpcHRFcXVhbHModDIpKSk7XG5cbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIC8vIEZvciBhbnl0aGluZyBlbHNlLCBuZWVkIHN0cmljdCBlcXVhbGl0eVxuICAgICAgICByZXR1cm4gdGhpcy5lcXVhbHMocmhzKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogV2hldGhlciB0aGUgY3VycmVudCB0eXBlIGlzIGFzc2lnbmFibGUgdG8gdGhlIFJIUyB0eXBlLlxuICAgKlxuICAgKiBUaGlzIGlzIG1lYW5zIGV2ZXJ5IHR5cGUgbWVtYmVyIG9mIHRoZSBMSFMgbXVzdCBiZSBwcmVzZW50IGluIHRoZSBSSFMgdHlwZVxuICAgKi9cbiAgcHVibGljIGFzc2lnbmFibGVUbyhyaHM6IFByb3BlcnR5VHlwZSk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGV4dHJhY3RNZW1iZXJzID0gKHR5cGU6IFByb3BlcnR5VHlwZSk6IFByb3BlcnR5VHlwZVtdID0+ICh0eXBlLnR5cGUgPT0gJ3VuaW9uJyA/IHR5cGUudHlwZXMgOiBbdHlwZV0pO1xuICAgIGNvbnN0IGFzUmljaFR5cGUgPSAodHlwZTogUHJvcGVydHlUeXBlKTogUmljaFByb3BlcnR5VHlwZSA9PiBuZXcgUmljaFByb3BlcnR5VHlwZSh0eXBlKTtcblxuICAgIGNvbnN0IHJoc01lbWJlcnMgPSBleHRyYWN0TWVtYmVycyhyaHMpO1xuICAgIGZvciAoY29uc3QgbGhzTWVtYmVyIG9mIGV4dHJhY3RNZW1iZXJzKHRoaXMudHlwZSkubWFwKGFzUmljaFR5cGUpKSB7XG4gICAgICBpZiAoIXJoc01lbWJlcnMuc29tZSgodHlwZSkgPT4gbGhzTWVtYmVyLmVxdWFscyh0eXBlKSkpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybiBhIHZlcnNpb24gb2YgdGhpcyB0eXBlLCBidXQgd2l0aCBhbGwgdHlwZSB1bmlvbnMgaW4gYSByZWd1bGFyaXplZCBvcmRlclxuICAgKi9cbiAgcHVibGljIG5vcm1hbGl6ZShkYjogU3BlY0RhdGFiYXNlKTogUmljaFByb3BlcnR5VHlwZSB7XG4gICAgc3dpdGNoICh0aGlzLnR5cGUudHlwZSkge1xuICAgICAgY2FzZSAnYXJyYXknOlxuICAgICAgY2FzZSAnbWFwJzpcbiAgICAgICAgcmV0dXJuIG5ldyBSaWNoUHJvcGVydHlUeXBlKHtcbiAgICAgICAgICB0eXBlOiB0aGlzLnR5cGUudHlwZSxcbiAgICAgICAgICBlbGVtZW50OiBuZXcgUmljaFByb3BlcnR5VHlwZSh0aGlzLnR5cGUuZWxlbWVudCkubm9ybWFsaXplKGRiKS50eXBlLFxuICAgICAgICB9KTtcbiAgICAgIGNhc2UgJ3VuaW9uJzpcbiAgICAgICAgY29uc3QgdHlwZXMgPSB0aGlzLnR5cGUudHlwZXNcbiAgICAgICAgICAubWFwKCh0KSA9PiBuZXcgUmljaFByb3BlcnR5VHlwZSh0KS5ub3JtYWxpemUoZGIpKVxuICAgICAgICAgIC5tYXAoKHQpID0+IFt0LCB0LnNvcnRLZXkoZGIpXSBhcyBjb25zdCk7XG4gICAgICAgIHR5cGVzLnNvcnQoc29ydEtleUNvbXBhcmF0b3IoKFtfLCBzb3J0S2V5XSkgPT4gc29ydEtleSkpO1xuICAgICAgICByZXR1cm4gbmV3IFJpY2hQcm9wZXJ0eVR5cGUoe1xuICAgICAgICAgIHR5cGU6ICd1bmlvbicsXG4gICAgICAgICAgdHlwZXM6IHR5cGVzLm1hcCgoW3QsIF9dKSA9PiB0LnR5cGUpLFxuICAgICAgICB9KTtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBzdHJpbmdpZnkoZGI6IFNwZWNEYXRhYmFzZSwgd2l0aElkID0gdHJ1ZSk6IHN0cmluZyB7XG4gICAgc3dpdGNoICh0aGlzLnR5cGUudHlwZSkge1xuICAgICAgY2FzZSAnaW50ZWdlcic6XG4gICAgICBjYXNlICdib29sZWFuJzpcbiAgICAgIGNhc2UgJ2RhdGUtdGltZSc6XG4gICAgICBjYXNlICdqc29uJzpcbiAgICAgIGNhc2UgJ251bGwnOlxuICAgICAgY2FzZSAnbnVtYmVyJzpcbiAgICAgIGNhc2UgJ3N0cmluZyc6XG4gICAgICBjYXNlICd0YWcnOlxuICAgICAgICByZXR1cm4gdGhpcy50eXBlLnR5cGU7XG4gICAgICBjYXNlICdhcnJheSc6XG4gICAgICAgIHJldHVybiBgQXJyYXk8JHtuZXcgUmljaFByb3BlcnR5VHlwZSh0aGlzLnR5cGUuZWxlbWVudCkuc3RyaW5naWZ5KGRiLCB3aXRoSWQpfT5gO1xuICAgICAgY2FzZSAnbWFwJzpcbiAgICAgICAgcmV0dXJuIGBNYXA8c3RyaW5nLCAke25ldyBSaWNoUHJvcGVydHlUeXBlKHRoaXMudHlwZS5lbGVtZW50KS5zdHJpbmdpZnkoZGIsIHdpdGhJZCl9PmA7XG4gICAgICBjYXNlICdyZWYnOlxuICAgICAgICBjb25zdCB0eXBlID0gZGIuZ2V0KCd0eXBlRGVmaW5pdGlvbicsIHRoaXMudHlwZS5yZWZlcmVuY2UpO1xuICAgICAgICByZXR1cm4gd2l0aElkID8gYCR7dHlwZS5uYW1lfSgke3RoaXMudHlwZS5yZWZlcmVuY2UuJHJlZn0pYCA6IHR5cGUubmFtZTtcbiAgICAgIGNhc2UgJ3VuaW9uJzpcbiAgICAgICAgcmV0dXJuIHRoaXMudHlwZS50eXBlcy5tYXAoKHQpID0+IG5ldyBSaWNoUHJvcGVydHlUeXBlKHQpLnN0cmluZ2lmeShkYiwgd2l0aElkKSkuam9pbignIHwgJyk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybiBhIHNvcnRhYmxlIGtleSBiYXNlZCBvbiB0aGlzIHR5cGVcbiAgICpcbiAgICogSWYgYSBkYXRhYmFzZSBpcyBnaXZlbiwgdHlwZSBkZWZpbml0aW9ucyB3aWxsIGJlIHNvcnRlZCBiYXNlZCBvbiB0eXBlIG5hbWUsXG4gICAqIG90aGVyd2lzZSBvbiBpZGVudGlmaWVyXG4gICAqL1xuICBwdWJsaWMgc29ydEtleShkYj86IFNwZWNEYXRhYmFzZSk6IHN0cmluZ1tdIHtcbiAgICBzd2l0Y2ggKHRoaXMudHlwZS50eXBlKSB7XG4gICAgICBjYXNlICdpbnRlZ2VyJzpcbiAgICAgIGNhc2UgJ2Jvb2xlYW4nOlxuICAgICAgY2FzZSAnZGF0ZS10aW1lJzpcbiAgICAgIGNhc2UgJ2pzb24nOlxuICAgICAgY2FzZSAnbnVsbCc6XG4gICAgICBjYXNlICdudW1iZXInOlxuICAgICAgY2FzZSAnc3RyaW5nJzpcbiAgICAgIGNhc2UgJ3RhZyc6XG4gICAgICAgIHJldHVybiBbJzAnLCB0aGlzLnR5cGUudHlwZV07XG4gICAgICBjYXNlICdhcnJheSc6XG4gICAgICBjYXNlICdtYXAnOlxuICAgICAgICByZXR1cm4gWycxJywgdGhpcy50eXBlLnR5cGUsIC4uLm5ldyBSaWNoUHJvcGVydHlUeXBlKHRoaXMudHlwZS5lbGVtZW50KS5zb3J0S2V5KGRiKV07XG4gICAgICBjYXNlICdyZWYnOlxuICAgICAgICByZXR1cm4gWycyJywgdGhpcy50eXBlLnR5cGUsIGRiPy5nZXQoJ3R5cGVEZWZpbml0aW9uJywgdGhpcy50eXBlLnJlZmVyZW5jZSk/Lm5hbWUgPz8gdGhpcy50eXBlLnJlZmVyZW5jZS4kcmVmXTtcbiAgICAgIGNhc2UgJ3VuaW9uJzpcbiAgICAgICAgY29uc3QgdHlwZUtleXMgPSB0aGlzLnR5cGUudHlwZXMubWFwKCh0KSA9PiBuZXcgUmljaFByb3BlcnR5VHlwZSh0KS5zb3J0S2V5KGRiKSk7XG4gICAgICAgIHR5cGVLZXlzLnNvcnQoc29ydEtleUNvbXBhcmF0b3IoKHgpID0+IHgpKTtcbiAgICAgICAgcmV0dXJuIFsnMycsIHRoaXMudHlwZS50eXBlLCAuLi50eXBlS2V5cy5mbGF0TWFwKCh4KSA9PiB4KV07XG4gICAgfVxuICB9XG59XG4iXX0= /***/ }), -/***/ 32610: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { +/***/ 61917: +/***/ ((__unused_webpack_module, exports) => { "use strict"; +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.sortKeyComparator = void 0; +/** + * Make a sorting comparator that will sort by a given sort key + */ +function sortKeyComparator(keyFn) { + return (a, b) => { + const ak = keyFn(a); + const bk = keyFn(b); + for (let i = 0; i < ak.length && i < bk.length; i++) { + const av = ak[i]; + const bv = bk[i]; + let diff = 0; + if (typeof av === 'number' && typeof bv === 'number') { + diff = av - bv; + } + else if (typeof av === 'string' && typeof bv === 'string') { + diff = av.localeCompare(bv); + } + if (diff !== 0) { + return diff; + } + } + return bk.length - ak.length; + }; +} +exports.sortKeyComparator = sortKeyComparator; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic29ydGluZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsL3NvcnRpbmcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUE7O0dBRUc7QUFDSCxTQUFnQixpQkFBaUIsQ0FBSSxLQUF1QztJQUMxRSxPQUFPLENBQUMsQ0FBSSxFQUFFLENBQUksRUFBVSxFQUFFO1FBQzVCLE1BQU0sRUFBRSxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNwQixNQUFNLEVBQUUsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFFcEIsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxNQUFNLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7WUFDbkQsTUFBTSxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ2pCLE1BQU0sRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUVqQixJQUFJLElBQUksR0FBRyxDQUFDLENBQUM7WUFDYixJQUFJLE9BQU8sRUFBRSxLQUFLLFFBQVEsSUFBSSxPQUFPLEVBQUUsS0FBSyxRQUFRLEVBQUU7Z0JBQ3BELElBQUksR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDO2FBQ2hCO2lCQUFNLElBQUksT0FBTyxFQUFFLEtBQUssUUFBUSxJQUFJLE9BQU8sRUFBRSxLQUFLLFFBQVEsRUFBRTtnQkFDM0QsSUFBSSxHQUFHLEVBQUUsQ0FBQyxhQUFhLENBQUMsRUFBRSxDQUFDLENBQUM7YUFDN0I7WUFFRCxJQUFJLElBQUksS0FBSyxDQUFDLEVBQUU7Z0JBQ2QsT0FBTyxJQUFJLENBQUM7YUFDYjtTQUNGO1FBRUQsT0FBTyxFQUFFLENBQUMsTUFBTSxHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUM7SUFDL0IsQ0FBQyxDQUFDO0FBQ0osQ0FBQztBQXZCRCw4Q0F1QkMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIE1ha2UgYSBzb3J0aW5nIGNvbXBhcmF0b3IgdGhhdCB3aWxsIHNvcnQgYnkgYSBnaXZlbiBzb3J0IGtleVxuICovXG5leHBvcnQgZnVuY3Rpb24gc29ydEtleUNvbXBhcmF0b3I8QT4oa2V5Rm46ICh4OiBBKSA9PiBBcnJheTxzdHJpbmcgfCBudW1iZXI+KSB7XG4gIHJldHVybiAoYTogQSwgYjogQSk6IG51bWJlciA9PiB7XG4gICAgY29uc3QgYWsgPSBrZXlGbihhKTtcbiAgICBjb25zdCBiayA9IGtleUZuKGIpO1xuXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhay5sZW5ndGggJiYgaSA8IGJrLmxlbmd0aDsgaSsrKSB7XG4gICAgICBjb25zdCBhdiA9IGFrW2ldO1xuICAgICAgY29uc3QgYnYgPSBia1tpXTtcblxuICAgICAgbGV0IGRpZmYgPSAwO1xuICAgICAgaWYgKHR5cGVvZiBhdiA9PT0gJ251bWJlcicgJiYgdHlwZW9mIGJ2ID09PSAnbnVtYmVyJykge1xuICAgICAgICBkaWZmID0gYXYgLSBidjtcbiAgICAgIH0gZWxzZSBpZiAodHlwZW9mIGF2ID09PSAnc3RyaW5nJyAmJiB0eXBlb2YgYnYgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIGRpZmYgPSBhdi5sb2NhbGVDb21wYXJlKGJ2KTtcbiAgICAgIH1cblxuICAgICAgaWYgKGRpZmYgIT09IDApIHtcbiAgICAgICAgcmV0dXJuIGRpZmY7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGJrLmxlbmd0aCAtIGFrLmxlbmd0aDtcbiAgfTtcbn1cbiJdfQ== -var helpers = __nccwpck_require__(34099); +/***/ }), -/** @type ValidatorResult */ -var ValidatorResult = helpers.ValidatorResult; -/** @type SchemaError */ -var SchemaError = helpers.SchemaError; +/***/ 51318: +/***/ ((__unused_webpack_module, exports) => { -var attribute = {}; +"use strict"; -attribute.ignoreProperties = { - // informative properties - 'id': true, - 'default': true, - 'description': true, - 'title': true, - // arguments to other properties - 'additionalItems': true, - 'then': true, - 'else': true, - // special-handled properties - '$schema': true, - '$ref': true, - 'extends': true, -}; +Object.defineProperty(exports, "__esModule", ({ value: true })); +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXJ0aWZhY3Qtc2NoZW1hLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiYXJ0aWZhY3Qtc2NoZW1hLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEluZm9ybWF0aW9uIG5lZWRlZCB0byBhY2Nlc3MgYW4gSUFNIHJvbGUgY3JlYXRlZFxuICogYXMgcGFydCBvZiB0aGUgYm9vdHN0cmFwIHByb2Nlc3NcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBCb290c3RyYXBSb2xlIHtcbiAgLyoqXG4gICAqIFRoZSBBUk4gb2YgdGhlIElBTSByb2xlIGNyZWF0ZWQgYXMgcGFydCBvZiBib290cmFwcGluZ1xuICAgKiBlLmcuIGxvb2t1cFJvbGVBcm5cbiAgICovXG4gIHJlYWRvbmx5IGFybjogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBFeHRlcm5hbCBJRCB0byB1c2Ugd2hlbiBhc3N1bWluZyB0aGUgYm9vdHN0cmFwIHJvbGVcbiAgICpcbiAgICogQGRlZmF1bHQgLSBObyBleHRlcm5hbCBJRFxuICAgKi9cbiAgcmVhZG9ubHkgYXNzdW1lUm9sZUV4dGVybmFsSWQ/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEFkZGl0aW9uYWwgb3B0aW9ucyB0byBwYXNzIHRvIFNUUyB3aGVuIGFzc3VtaW5nIHRoZSByb2xlLlxuICAgKlxuICAgKiAtIGBSb2xlQXJuYCBzaG91bGQgbm90IGJlIHVzZWQuIFVzZSB0aGUgZGVkaWNhdGVkIGBhcm5gIHByb3BlcnR5IGluc3RlYWQuXG4gICAqIC0gYEV4dGVybmFsSWRgIHNob3VsZCBub3QgYmUgdXNlZC4gVXNlIHRoZSBkZWRpY2F0ZWQgYGFzc3VtZVJvbGVFeHRlcm5hbElkYCBpbnN0ZWFkLlxuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NKYXZhU2NyaXB0U0RLL2xhdGVzdC9BV1MvU1RTLmh0bWwjYXNzdW1lUm9sZS1wcm9wZXJ0eVxuICAgKiBAZGVmYXVsdCAtIE5vIGFkZGl0aW9uYWwgb3B0aW9ucy5cbiAgICovXG4gIHJlYWRvbmx5IGFzc3VtZVJvbGVBZGRpdGlvbmFsT3B0aW9ucz86IHsgW2tleTogc3RyaW5nXTogYW55IH07XG5cbiAgLyoqXG4gICAqIFZlcnNpb24gb2YgYm9vdHN0cmFwIHN0YWNrIHJlcXVpcmVkIHRvIHVzZSB0aGlzIHJvbGVcbiAgICpcbiAgICogQGRlZmF1bHQgLSBObyBib290c3RyYXAgc3RhY2sgcmVxdWlyZWRcbiAgICovXG4gIHJlYWRvbmx5IHJlcXVpcmVzQm9vdHN0cmFwU3RhY2tWZXJzaW9uPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBOYW1lIG9mIFNTTSBwYXJhbWV0ZXIgd2l0aCBib290c3RyYXAgc3RhY2sgdmVyc2lvblxuICAgKlxuICAgKiBAZGVmYXVsdCAtIERpc2NvdmVyIFNTTSBwYXJhbWV0ZXIgYnkgcmVhZGluZyBzdGFja1xuICAgKi9cbiAgcmVhZG9ubHkgYm9vdHN0cmFwU3RhY2tWZXJzaW9uU3NtUGFyYW1ldGVyPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIEFydGlmYWN0IHByb3BlcnRpZXMgZm9yIENsb3VkRm9ybWF0aW9uIHN0YWNrcy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBd3NDbG91ZEZvcm1hdGlvblN0YWNrUHJvcGVydGllcyB7XG4gIC8qKlxuICAgKiBBIGZpbGUgcmVsYXRpdmUgdG8gdGhlIGFzc2VtYmx5IHJvb3Qgd2hpY2ggY29udGFpbnMgdGhlIENsb3VkRm9ybWF0aW9uIHRlbXBsYXRlIGZvciB0aGlzIHN0YWNrLlxuICAgKi9cbiAgcmVhZG9ubHkgdGVtcGxhdGVGaWxlOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFZhbHVlcyBmb3IgQ2xvdWRGb3JtYXRpb24gc3RhY2sgcGFyYW1ldGVycyB0aGF0IHNob3VsZCBiZSBwYXNzZWQgd2hlbiB0aGUgc3RhY2sgaXMgZGVwbG95ZWQuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gTm8gcGFyYW1ldGVyc1xuICAgKi9cbiAgcmVhZG9ubHkgcGFyYW1ldGVycz86IHsgW2lkOiBzdHJpbmddOiBzdHJpbmcgfTtcblxuICAvKipcbiAgICogVmFsdWVzIGZvciBDbG91ZEZvcm1hdGlvbiBzdGFjayB0YWdzIHRoYXQgc2hvdWxkIGJlIHBhc3NlZCB3aGVuIHRoZSBzdGFjayBpcyBkZXBsb3llZC5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBObyB0YWdzXG4gICAqL1xuICByZWFkb25seSB0YWdzPzogeyBbaWQ6IHN0cmluZ106IHN0cmluZyB9O1xuXG4gIC8qKlxuICAgKiBTTlMgTm90aWZpY2F0aW9uIEFSTnMgdGhhdCBzaG91bGQgcmVjZWl2ZSBDbG91ZEZvcm1hdGlvbiBTdGFjayBFdmVudHMuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gTm8gbm90aWZpY2F0aW9uIGFybnNcbiAgICovXG4gIHJlYWRvbmx5IG5vdGlmaWNhdGlvbkFybnM/OiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogVGhlIG5hbWUgdG8gdXNlIGZvciB0aGUgQ2xvdWRGb3JtYXRpb24gc3RhY2suXG4gICAqIEBkZWZhdWx0IC0gbmFtZSBkZXJpdmVkIGZyb20gYXJ0aWZhY3QgSURcbiAgICovXG4gIHJlYWRvbmx5IHN0YWNrTmFtZT86IHN0cmluZztcblxuICAvKipcbiAgICogV2hldGhlciB0byBlbmFibGUgdGVybWluYXRpb24gcHJvdGVjdGlvbiBmb3IgdGhpcyBzdGFjay5cbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IHRlcm1pbmF0aW9uUHJvdGVjdGlvbj86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFRoZSByb2xlIHRoYXQgbmVlZHMgdG8gYmUgYXNzdW1lZCB0byBkZXBsb3kgdGhlIHN0YWNrXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gTm8gcm9sZSBpcyBhc3N1bWVkIChjdXJyZW50IGNyZWRlbnRpYWxzIGFyZSB1c2VkKVxuICAgKi9cbiAgcmVhZG9ubHkgYXNzdW1lUm9sZUFybj86IHN0cmluZztcblxuICAvKipcbiAgICogRXh0ZXJuYWwgSUQgdG8gdXNlIHdoZW4gYXNzdW1pbmcgcm9sZSBmb3IgY2xvdWRmb3JtYXRpb24gZGVwbG95bWVudHNcbiAgICpcbiAgICogQGRlZmF1bHQgLSBObyBleHRlcm5hbCBJRFxuICAgKi9cbiAgcmVhZG9ubHkgYXNzdW1lUm9sZUV4dGVybmFsSWQ/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEFkZGl0aW9uYWwgb3B0aW9ucyB0byBwYXNzIHRvIFNUUyB3aGVuIGFzc3VtaW5nIHRoZSByb2xlLlxuICAgKlxuICAgKiAtIGBSb2xlQXJuYCBzaG91bGQgbm90IGJlIHVzZWQuIFVzZSB0aGUgZGVkaWNhdGVkIGBhc3N1bWVSb2xlQXJuYCBwcm9wZXJ0eSBpbnN0ZWFkLlxuICAgKiAtIGBFeHRlcm5hbElkYCBzaG91bGQgbm90IGJlIHVzZWQuIFVzZSB0aGUgZGVkaWNhdGVkIGBhc3N1bWVSb2xlRXh0ZXJuYWxJZGAgaW5zdGVhZC5cbiAgICpcbiAgICogQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTSmF2YVNjcmlwdFNESy9sYXRlc3QvQVdTL1NUUy5odG1sI2Fzc3VtZVJvbGUtcHJvcGVydHlcbiAgICogQGRlZmF1bHQgLSBObyBhZGRpdGlvbmFsIG9wdGlvbnMuXG4gICAqL1xuICByZWFkb25seSBhc3N1bWVSb2xlQWRkaXRpb25hbE9wdGlvbnM/OiB7IFtrZXk6IHN0cmluZ106IGFueSB9O1xuXG4gIC8qKlxuICAgKiBUaGUgcm9sZSB0aGF0IGlzIHBhc3NlZCB0byBDbG91ZEZvcm1hdGlvbiB0byBleGVjdXRlIHRoZSBjaGFuZ2Ugc2V0XG4gICAqXG4gICAqIEBkZWZhdWx0IC0gTm8gcm9sZSBpcyBwYXNzZWQgKGN1cnJlbnRseSBhc3N1bWVkIHJvbGUvY3JlZGVudGlhbHMgYXJlIHVzZWQpXG4gICAqL1xuICByZWFkb25seSBjbG91ZEZvcm1hdGlvbkV4ZWN1dGlvblJvbGVBcm4/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSByb2xlIHRvIHVzZSB0byBsb29rIHVwIHZhbHVlcyBmcm9tIHRoZSB0YXJnZXQgQVdTIGFjY291bnRcbiAgICpcbiAgICogQGRlZmF1bHQgLSBObyByb2xlIGlzIGFzc3VtZWQgKGN1cnJlbnQgY3JlZGVudGlhbHMgYXJlIHVzZWQpXG4gICAqL1xuICByZWFkb25seSBsb29rdXBSb2xlPzogQm9vdHN0cmFwUm9sZTtcblxuICAvKipcbiAgICogSWYgdGhlIHN0YWNrIHRlbXBsYXRlIGhhcyBhbHJlYWR5IGJlZW4gaW5jbHVkZWQgaW4gdGhlIGFzc2V0IG1hbmlmZXN0LCBpdHMgYXNzZXQgVVJMXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gTm90IHVwbG9hZGVkIHlldCwgdXBsb2FkIGp1c3QgYmVmb3JlIGRlcGxveWluZ1xuICAgKi9cbiAgcmVhZG9ubHkgc3RhY2tUZW1wbGF0ZUFzc2V0T2JqZWN0VXJsPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBWZXJzaW9uIG9mIGJvb3RzdHJhcCBzdGFjayByZXF1aXJlZCB0byBkZXBsb3kgdGhpcyBzdGFja1xuICAgKlxuICAgKiBAZGVmYXVsdCAtIE5vIGJvb3RzdHJhcCBzdGFjayByZXF1aXJlZFxuICAgKi9cbiAgcmVhZG9ubHkgcmVxdWlyZXNCb290c3RyYXBTdGFja1ZlcnNpb24/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIFNTTSBwYXJhbWV0ZXIgd2hlcmUgdGhlIGJvb3RzdHJhcCBzdGFjayB2ZXJzaW9uIG51bWJlciBjYW4gYmUgZm91bmRcbiAgICpcbiAgICogT25seSB1c2VkIGlmIGByZXF1aXJlc0Jvb3RzdHJhcFN0YWNrVmVyc2lvbmAgaXMgc2V0LlxuICAgKlxuICAgKiAtIElmIHRoaXMgdmFsdWUgaXMgbm90IHNldCwgdGhlIGJvb3RzdHJhcCBzdGFjayBuYW1lIG11c3QgYmUga25vd24gYXRcbiAgICogICBkZXBsb3ltZW50IHRpbWUgc28gdGhlIHN0YWNrIHZlcnNpb24gY2FuIGJlIGxvb2tlZCB1cCBmcm9tIHRoZSBzdGFja1xuICAgKiAgIG91dHB1dHMuXG4gICAqIC0gSWYgdGhpcyB2YWx1ZSBpcyBzZXQsIHRoZSBib290c3RyYXAgc3RhY2sgY2FuIGhhdmUgYW55IG5hbWUgYmVjYXVzZVxuICAgKiAgIHdlIHdvbid0IG5lZWQgdG8gbG9vayBpdCB1cC5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBCb290c3RyYXAgc3RhY2sgdmVyc2lvbiBudW1iZXIgbG9va2VkIHVwXG4gICAqL1xuICByZWFkb25seSBib290c3RyYXBTdGFja1ZlcnNpb25Tc21QYXJhbWV0ZXI/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhpcyBzdGFjayBzaG91bGQgYmUgdmFsaWRhdGVkIGJ5IHRoZSBDTEkgYWZ0ZXIgc3ludGhlc2lzXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IHZhbGlkYXRlT25TeW50aD86IGJvb2xlYW47XG59XG5cbi8qKlxuICogQ29uZmlndXJhdGlvbiBvcHRpb25zIGZvciB0aGUgQXNzZXQgTWFuaWZlc3RcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBc3NldE1hbmlmZXN0T3B0aW9ucyB7XG4gIC8qKlxuICAgKiBWZXJzaW9uIG9mIGJvb3RzdHJhcCBzdGFjayByZXF1aXJlZCB0byBkZXBsb3kgdGhpcyBzdGFja1xuICAgKlxuICAgKiBAZGVmYXVsdCAtIFZlcnNpb24gMSAoYmFzaWMgbW9kZXJuIGJvb3RzdHJhcCBzdGFjaylcbiAgICovXG4gIHJlYWRvbmx5IHJlcXVpcmVzQm9vdHN0cmFwU3RhY2tWZXJzaW9uPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBTU00gcGFyYW1ldGVyIHdoZXJlIHRoZSBib290c3RyYXAgc3RhY2sgdmVyc2lvbiBudW1iZXIgY2FuIGJlIGZvdW5kXG4gICAqXG4gICAqIC0gSWYgdGhpcyB2YWx1ZSBpcyBub3Qgc2V0LCB0aGUgYm9vdHN0cmFwIHN0YWNrIG5hbWUgbXVzdCBiZSBrbm93biBhdFxuICAgKiAgIGRlcGxveW1lbnQgdGltZSBzbyB0aGUgc3RhY2sgdmVyc2lvbiBjYW4gYmUgbG9va2VkIHVwIGZyb20gdGhlIHN0YWNrXG4gICAqICAgb3V0cHV0cy5cbiAgICogLSBJZiB0aGlzIHZhbHVlIGlzIHNldCwgdGhlIGJvb3RzdHJhcCBzdGFjayBjYW4gaGF2ZSBhbnkgbmFtZSBiZWNhdXNlXG4gICAqICAgd2Ugd29uJ3QgbmVlZCB0byBsb29rIGl0IHVwLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIEJvb3RzdHJhcCBzdGFjayB2ZXJzaW9uIG51bWJlciBsb29rZWQgdXBcbiAgICovXG4gIHJlYWRvbmx5IGJvb3RzdHJhcFN0YWNrVmVyc2lvblNzbVBhcmFtZXRlcj86IHN0cmluZztcbn1cblxuLyoqXG4gKiBBcnRpZmFjdCBwcm9wZXJ0aWVzIGZvciB0aGUgQXNzZXQgTWFuaWZlc3RcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBc3NldE1hbmlmZXN0UHJvcGVydGllcyBleHRlbmRzIEFzc2V0TWFuaWZlc3RPcHRpb25zIHtcbiAgLyoqXG4gICAqIEZpbGVuYW1lIG9mIHRoZSBhc3NldCBtYW5pZmVzdFxuICAgKi9cbiAgcmVhZG9ubHkgZmlsZTogc3RyaW5nO1xufVxuXG4vKipcbiAqIEFydGlmYWN0IHByb3BlcnRpZXMgZm9yIHRoZSBDb25zdHJ1Y3QgVHJlZSBBcnRpZmFjdFxuICovXG5leHBvcnQgaW50ZXJmYWNlIFRyZWVBcnRpZmFjdFByb3BlcnRpZXMge1xuICAvKipcbiAgICogRmlsZW5hbWUgb2YgdGhlIHRyZWUgYXJ0aWZhY3RcbiAgICovXG4gIHJlYWRvbmx5IGZpbGU6IHN0cmluZztcbn1cblxuLyoqXG4gKiBBcnRpZmFjdCBwcm9wZXJ0aWVzIGZvciBuZXN0ZWQgY2xvdWQgYXNzZW1ibGllc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIE5lc3RlZENsb3VkQXNzZW1ibHlQcm9wZXJ0aWVzIHtcbiAgLyoqXG4gICAqIFJlbGF0aXZlIHBhdGggdG8gdGhlIG5lc3RlZCBjbG91ZCBhc3NlbWJseVxuICAgKi9cbiAgcmVhZG9ubHkgZGlyZWN0b3J5TmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBEaXNwbGF5IG5hbWUgZm9yIHRoZSBjbG91ZCBhc3NlbWJseVxuICAgKlxuICAgKiBAZGVmYXVsdCAtIFRoZSBhcnRpZmFjdCBJRFxuICAgKi9cbiAgcmVhZG9ubHkgZGlzcGxheU5hbWU/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogUHJvcGVydGllcyBmb3IgbWFuaWZlc3QgYXJ0aWZhY3RzXG4gKi9cbmV4cG9ydCB0eXBlIEFydGlmYWN0UHJvcGVydGllcyA9XG4gIHwgQXdzQ2xvdWRGb3JtYXRpb25TdGFja1Byb3BlcnRpZXNcbiAgfCBBc3NldE1hbmlmZXN0UHJvcGVydGllc1xuICB8IFRyZWVBcnRpZmFjdFByb3BlcnRpZXNcbiAgfCBOZXN0ZWRDbG91ZEFzc2VtYmx5UHJvcGVydGllcztcbiJdfQ== -/** +/***/ }), + +/***/ 76534: +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.LoadBalancerListenerProtocol = exports.LoadBalancerType = exports.ContextProvider = void 0; +/** + * Identifier for the context provider + */ +var ContextProvider; +(function (ContextProvider) { + /** + * AMI provider + */ + ContextProvider["AMI_PROVIDER"] = "ami"; + /** + * AZ provider + */ + ContextProvider["AVAILABILITY_ZONE_PROVIDER"] = "availability-zones"; + /** + * Route53 Hosted Zone provider + */ + ContextProvider["HOSTED_ZONE_PROVIDER"] = "hosted-zone"; + /** + * SSM Parameter Provider + */ + ContextProvider["SSM_PARAMETER_PROVIDER"] = "ssm"; + /** + * VPC Provider + */ + ContextProvider["VPC_PROVIDER"] = "vpc-provider"; + /** + * VPC Endpoint Service AZ Provider + */ + ContextProvider["ENDPOINT_SERVICE_AVAILABILITY_ZONE_PROVIDER"] = "endpoint-service-availability-zones"; + /** + * Load balancer provider + */ + ContextProvider["LOAD_BALANCER_PROVIDER"] = "load-balancer"; + /** + * Load balancer listener provider + */ + ContextProvider["LOAD_BALANCER_LISTENER_PROVIDER"] = "load-balancer-listener"; + /** + * Security group provider + */ + ContextProvider["SECURITY_GROUP_PROVIDER"] = "security-group"; + /** + * KMS Key Provider + */ + ContextProvider["KEY_PROVIDER"] = "key-provider"; + /** + * A plugin provider (the actual plugin name will be in the properties) + */ + ContextProvider["PLUGIN"] = "plugin"; +})(ContextProvider || (exports.ContextProvider = ContextProvider = {})); +/** + * Type of load balancer + */ +var LoadBalancerType; +(function (LoadBalancerType) { + /** + * Network load balancer + */ + LoadBalancerType["NETWORK"] = "network"; + /** + * Application load balancer + */ + LoadBalancerType["APPLICATION"] = "application"; +})(LoadBalancerType || (exports.LoadBalancerType = LoadBalancerType = {})); +/** + * The protocol for connections from clients to the load balancer + */ +var LoadBalancerListenerProtocol; +(function (LoadBalancerListenerProtocol) { + /** + * HTTP protocol + */ + LoadBalancerListenerProtocol["HTTP"] = "HTTP"; + /** + * HTTPS protocol + */ + LoadBalancerListenerProtocol["HTTPS"] = "HTTPS"; + /** + * TCP protocol + */ + LoadBalancerListenerProtocol["TCP"] = "TCP"; + /** + * TLS protocol + */ + LoadBalancerListenerProtocol["TLS"] = "TLS"; + /** + * UDP protocol + * */ + LoadBalancerListenerProtocol["UDP"] = "UDP"; + /** + * TCP and UDP protocol + * */ + LoadBalancerListenerProtocol["TCP_UDP"] = "TCP_UDP"; +})(LoadBalancerListenerProtocol || (exports.LoadBalancerListenerProtocol = LoadBalancerListenerProtocol = {})); +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGV4dC1xdWVyaWVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiY29udGV4dC1xdWVyaWVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUVBOztHQUVHO0FBQ0gsSUFBWSxlQXVEWDtBQXZERCxXQUFZLGVBQWU7SUFDekI7O09BRUc7SUFDSCx1Q0FBb0IsQ0FBQTtJQUVwQjs7T0FFRztJQUNILG9FQUFpRCxDQUFBO0lBRWpEOztPQUVHO0lBQ0gsdURBQW9DLENBQUE7SUFFcEM7O09BRUc7SUFDSCxpREFBOEIsQ0FBQTtJQUU5Qjs7T0FFRztJQUNILGdEQUE2QixDQUFBO0lBRTdCOztPQUVHO0lBQ0gsc0dBQW1GLENBQUE7SUFFbkY7O09BRUc7SUFDSCwyREFBd0MsQ0FBQTtJQUV4Qzs7T0FFRztJQUNILDZFQUEwRCxDQUFBO0lBRTFEOztPQUVHO0lBQ0gsNkRBQTBDLENBQUE7SUFFMUM7O09BRUc7SUFDSCxnREFBNkIsQ0FBQTtJQUU3Qjs7T0FFRztJQUNILG9DQUFpQixDQUFBO0FBQ25CLENBQUMsRUF2RFcsZUFBZSwrQkFBZixlQUFlLFFBdUQxQjtBQXlKRDs7R0FFRztBQUNILElBQVksZ0JBVVg7QUFWRCxXQUFZLGdCQUFnQjtJQUMxQjs7T0FFRztJQUNILHVDQUFtQixDQUFBO0lBRW5COztPQUVHO0lBQ0gsK0NBQTJCLENBQUE7QUFDN0IsQ0FBQyxFQVZXLGdCQUFnQixnQ0FBaEIsZ0JBQWdCLFFBVTNCO0FBNkJEOztHQUVHO0FBQ0gsSUFBWSw0QkE4Qlg7QUE5QkQsV0FBWSw0QkFBNEI7SUFDdEM7O09BRUc7SUFDSCw2Q0FBYSxDQUFBO0lBRWI7O09BRUc7SUFDSCwrQ0FBZSxDQUFBO0lBRWY7O09BRUc7SUFDSCwyQ0FBVyxDQUFBO0lBRVg7O09BRUc7SUFDSCwyQ0FBVyxDQUFBO0lBRVg7O1NBRUs7SUFDTCwyQ0FBVyxDQUFBO0lBRVg7O1NBRUs7SUFDTCxtREFBbUIsQ0FBQTtBQUNyQixDQUFDLEVBOUJXLDRCQUE0Qiw0Q0FBNUIsNEJBQTRCLFFBOEJ2QyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFRhZyB9IGZyb20gJy4vbWV0YWRhdGEtc2NoZW1hJztcblxuLyoqXG4gKiBJZGVudGlmaWVyIGZvciB0aGUgY29udGV4dCBwcm92aWRlclxuICovXG5leHBvcnQgZW51bSBDb250ZXh0UHJvdmlkZXIge1xuICAvKipcbiAgICogQU1JIHByb3ZpZGVyXG4gICAqL1xuICBBTUlfUFJPVklERVIgPSAnYW1pJyxcblxuICAvKipcbiAgICogQVogcHJvdmlkZXJcbiAgICovXG4gIEFWQUlMQUJJTElUWV9aT05FX1BST1ZJREVSID0gJ2F2YWlsYWJpbGl0eS16b25lcycsXG5cbiAgLyoqXG4gICAqIFJvdXRlNTMgSG9zdGVkIFpvbmUgcHJvdmlkZXJcbiAgICovXG4gIEhPU1RFRF9aT05FX1BST1ZJREVSID0gJ2hvc3RlZC16b25lJyxcblxuICAvKipcbiAgICogU1NNIFBhcmFtZXRlciBQcm92aWRlclxuICAgKi9cbiAgU1NNX1BBUkFNRVRFUl9QUk9WSURFUiA9ICdzc20nLFxuXG4gIC8qKlxuICAgKiBWUEMgUHJvdmlkZXJcbiAgICovXG4gIFZQQ19QUk9WSURFUiA9ICd2cGMtcHJvdmlkZXInLFxuXG4gIC8qKlxuICAgKiBWUEMgRW5kcG9pbnQgU2VydmljZSBBWiBQcm92aWRlclxuICAgKi9cbiAgRU5EUE9JTlRfU0VSVklDRV9BVkFJTEFCSUxJVFlfWk9ORV9QUk9WSURFUiA9ICdlbmRwb2ludC1zZXJ2aWNlLWF2YWlsYWJpbGl0eS16b25lcycsXG5cbiAgLyoqXG4gICAqIExvYWQgYmFsYW5jZXIgcHJvdmlkZXJcbiAgICovXG4gIExPQURfQkFMQU5DRVJfUFJPVklERVIgPSAnbG9hZC1iYWxhbmNlcicsXG5cbiAgLyoqXG4gICAqIExvYWQgYmFsYW5jZXIgbGlzdGVuZXIgcHJvdmlkZXJcbiAgICovXG4gIExPQURfQkFMQU5DRVJfTElTVEVORVJfUFJPVklERVIgPSAnbG9hZC1iYWxhbmNlci1saXN0ZW5lcicsXG5cbiAgLyoqXG4gICAqIFNlY3VyaXR5IGdyb3VwIHByb3ZpZGVyXG4gICAqL1xuICBTRUNVUklUWV9HUk9VUF9QUk9WSURFUiA9ICdzZWN1cml0eS1ncm91cCcsXG5cbiAgLyoqXG4gICAqIEtNUyBLZXkgUHJvdmlkZXJcbiAgICovXG4gIEtFWV9QUk9WSURFUiA9ICdrZXktcHJvdmlkZXInLFxuXG4gIC8qKlxuICAgKiBBIHBsdWdpbiBwcm92aWRlciAodGhlIGFjdHVhbCBwbHVnaW4gbmFtZSB3aWxsIGJlIGluIHRoZSBwcm9wZXJ0aWVzKVxuICAgKi9cbiAgUExVR0lOID0gJ3BsdWdpbicsXG59XG5cbi8qKlxuICogT3B0aW9ucyBmb3IgY29udGV4dCBsb29rdXAgcm9sZXMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ29udGV4dExvb2t1cFJvbGVPcHRpb25zIHtcbiAgLyoqXG4gICAqIFF1ZXJ5IGFjY291bnRcbiAgICovXG4gIHJlYWRvbmx5IGFjY291bnQ6IHN0cmluZztcblxuICAvKipcbiAgICogUXVlcnkgcmVnaW9uXG4gICAqL1xuICByZWFkb25seSByZWdpb246IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIEFSTiBvZiB0aGUgcm9sZSB0aGF0IHNob3VsZCBiZSB1c2VkIHRvIGxvb2sgdXAgdGhlIG1pc3NpbmcgdmFsdWVzXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gTm9uZVxuICAgKi9cbiAgcmVhZG9ubHkgbG9va3VwUm9sZUFybj86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIEV4dGVybmFsSWQgdGhhdCBuZWVkcyB0byBiZSBzdXBwbGllZCB3aGlsZSBhc3N1bWluZyB0aGlzIHJvbGVcbiAgICpcbiAgICogQGRlZmF1bHQgLSBObyBFeHRlcm5hbElkIHdpbGwgYmUgc3VwcGxpZWRcbiAgICovXG4gIHJlYWRvbmx5IGxvb2t1cFJvbGVFeHRlcm5hbElkPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBBZGRpdGlvbmFsIG9wdGlvbnMgdG8gcGFzcyB0byBTVFMgd2hlbiBhc3N1bWluZyB0aGUgbG9va3VwIHJvbGUuXG4gICAqXG4gICAqIC0gYFJvbGVBcm5gIHNob3VsZCBub3QgYmUgdXNlZC4gVXNlIHRoZSBkZWRpY2F0ZWQgYGxvb2t1cFJvbGVBcm5gIHByb3BlcnR5IGluc3RlYWQuXG4gICAqIC0gYEV4dGVybmFsSWRgIHNob3VsZCBub3QgYmUgdXNlZC4gVXNlIHRoZSBkZWRpY2F0ZWQgYGxvb2t1cFJvbGVFeHRlcm5hbElkYCBpbnN0ZWFkLlxuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NKYXZhU2NyaXB0U0RLL2xhdGVzdC9BV1MvU1RTLmh0bWwjYXNzdW1lUm9sZS1wcm9wZXJ0eVxuICAgKiBAZGVmYXVsdCAtIE5vIGFkZGl0aW9uYWwgb3B0aW9ucy5cbiAgICovXG4gIHJlYWRvbmx5IGFzc3VtZVJvbGVBZGRpdGlvbmFsT3B0aW9ucz86IHsgW2tleTogc3RyaW5nXTogYW55IH07XG59XG5cbi8qKlxuICogUXVlcnkgdG8gQU1JIGNvbnRleHQgcHJvdmlkZXJcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBbWlDb250ZXh0UXVlcnkgZXh0ZW5kcyBDb250ZXh0TG9va3VwUm9sZU9wdGlvbnMge1xuICAvKipcbiAgICogT3duZXJzIHRvIERlc2NyaWJlSW1hZ2VzIGNhbGxcbiAgICpcbiAgICogQGRlZmF1bHQgLSBBbGwgb3duZXJzXG4gICAqL1xuICByZWFkb25seSBvd25lcnM/OiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogRmlsdGVycyB0byBEZXNjcmliZUltYWdlcyBjYWxsXG4gICAqL1xuICByZWFkb25seSBmaWx0ZXJzOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZ1tdIH07XG59XG5cbi8qKlxuICogUXVlcnkgdG8gYXZhaWxhYmlsaXR5IHpvbmUgY29udGV4dCBwcm92aWRlclxuICovXG5leHBvcnQgaW50ZXJmYWNlIEF2YWlsYWJpbGl0eVpvbmVzQ29udGV4dFF1ZXJ5IGV4dGVuZHMgQ29udGV4dExvb2t1cFJvbGVPcHRpb25zIHt9XG5cbi8qKlxuICogUXVlcnkgdG8gaG9zdGVkIHpvbmUgY29udGV4dCBwcm92aWRlclxuICovXG5leHBvcnQgaW50ZXJmYWNlIEhvc3RlZFpvbmVDb250ZXh0UXVlcnkgZXh0ZW5kcyBDb250ZXh0TG9va3VwUm9sZU9wdGlvbnMge1xuICAvKipcbiAgICogVGhlIGRvbWFpbiBuYW1lIGUuZy4gZXhhbXBsZS5jb20gdG8gbG9va3VwXG4gICAqL1xuICByZWFkb25seSBkb21haW5OYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRydWUgaWYgdGhlIHpvbmUgeW91IHdhbnQgdG8gZmluZCBpcyBhIHByaXZhdGUgaG9zdGVkIHpvbmVcbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IHByaXZhdGVab25lPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogVGhlIFZQQyBJRCB0byB0aGF0IHRoZSBwcml2YXRlIHpvbmUgbXVzdCBiZSBhc3NvY2lhdGVkIHdpdGhcbiAgICpcbiAgICogSWYgeW91IHByb3ZpZGUgVlBDIElEIGFuZCBwcml2YXRlWm9uZSBpcyBmYWxzZSwgdGhpcyB3aWxsIHJldHVybiBubyByZXN1bHRzXG4gICAqIGFuZCByYWlzZSBhbiBlcnJvci5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBSZXF1aXJlZCBpZiBwcml2YXRlWm9uZT10cnVlXG4gICAqL1xuICByZWFkb25seSB2cGNJZD86IHN0cmluZztcbn1cblxuLyoqXG4gKiBRdWVyeSB0byBTU00gUGFyYW1ldGVyIENvbnRleHQgUHJvdmlkZXJcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTU01QYXJhbWV0ZXJDb250ZXh0UXVlcnkgZXh0ZW5kcyBDb250ZXh0TG9va3VwUm9sZU9wdGlvbnMge1xuICAvKipcbiAgICogUGFyYW1ldGVyIG5hbWUgdG8gcXVlcnlcbiAgICovXG4gIHJlYWRvbmx5IHBhcmFtZXRlck5hbWU6IHN0cmluZztcbn1cblxuLyoqXG4gKiBRdWVyeSBpbnB1dCBmb3IgbG9va2luZyB1cCBhIFZQQ1xuICovXG5leHBvcnQgaW50ZXJmYWNlIFZwY0NvbnRleHRRdWVyeSBleHRlbmRzIENvbnRleHRMb29rdXBSb2xlT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBGaWx0ZXJzIHRvIGFwcGx5IHRvIHRoZSBWUENcbiAgICpcbiAgICogRmlsdGVyIHBhcmFtZXRlcnMgYXJlIHRoZSBzYW1lIGFzIHBhc3NlZCB0byBEZXNjcmliZVZwY3MuXG4gICAqXG4gICAqIEBzZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FXU0VDMi9sYXRlc3QvQVBJUmVmZXJlbmNlL0FQSV9EZXNjcmliZVZwY3MuaHRtbFxuICAgKi9cbiAgcmVhZG9ubHkgZmlsdGVyOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9O1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIHBvcHVsYXRlIHRoZSBzdWJuZXRHcm91cHMgZmllbGQgb2YgdGhlIGBWcGNDb250ZXh0UmVzcG9uc2VgLFxuICAgKiB3aGljaCBjb250YWlucyBwb3RlbnRpYWxseSBhc3ltbWV0cmljIHN1Ym5ldCBncm91cHMuXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByZWFkb25seSByZXR1cm5Bc3ltbWV0cmljU3VibmV0cz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIE9wdGlvbmFsIHRhZyBmb3Igc3VibmV0IGdyb3VwIG5hbWUuXG4gICAqIElmIG5vdCBwcm92aWRlZCwgd2UnbGwgbG9vayBhdCB0aGUgYXdzLWNkazpzdWJuZXQtbmFtZSB0YWcuXG4gICAqIElmIHRoZSBzdWJuZXQgZG9lcyBub3QgaGF2ZSB0aGUgc3BlY2lmaWVkIHRhZyxcbiAgICogd2UnbGwgdXNlIGl0cyB0eXBlIGFzIHRoZSBuYW1lLlxuICAgKlxuICAgKiBAZGVmYXVsdCAnYXdzLWNkazpzdWJuZXQtbmFtZSdcbiAgICovXG4gIHJlYWRvbmx5IHN1Ym5ldEdyb3VwTmFtZVRhZz86IHN0cmluZztcblxuICAvKipcbiAgICogV2hldGhlciB0byBwb3B1bGF0ZSB0aGUgYHZwbkdhdGV3YXlJZGAgZmllbGQgb2YgdGhlIGBWcGNDb250ZXh0UmVzcG9uc2VgLFxuICAgKiB3aGljaCBjb250YWlucyB0aGUgVlBOIEdhdGV3YXkgSUQsIGlmIG9uZSBleGlzdHMuIFlvdSBjYW4gZXhwbGljaXRseVxuICAgKiBkaXNhYmxlIHRoaXMgaW4gb3JkZXIgdG8gYXZvaWQgdGhlIGxvb2t1cCBpZiB5b3Uga25vdyB0aGUgVlBDIGRvZXMgbm90IGhhdmVcbiAgICogYSBWUE4gR2F0d2F5IGF0dGFjaGVkLlxuICAgKlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICByZWFkb25seSByZXR1cm5WcG5HYXRld2F5cz86IGJvb2xlYW47XG59XG5cbi8qKlxuICogUXVlcnkgdG8gZW5kcG9pbnQgc2VydmljZSBjb250ZXh0IHByb3ZpZGVyXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRW5kcG9pbnRTZXJ2aWNlQXZhaWxhYmlsaXR5Wm9uZXNDb250ZXh0UXVlcnkgZXh0ZW5kcyBDb250ZXh0TG9va3VwUm9sZU9wdGlvbnMge1xuICAvKipcbiAgICogUXVlcnkgc2VydmljZSBuYW1lXG4gICAqL1xuICByZWFkb25seSBzZXJ2aWNlTmFtZTogc3RyaW5nO1xufVxuXG4vKipcbiAqIFR5cGUgb2YgbG9hZCBiYWxhbmNlclxuICovXG5leHBvcnQgZW51bSBMb2FkQmFsYW5jZXJUeXBlIHtcbiAgLyoqXG4gICAqIE5ldHdvcmsgbG9hZCBiYWxhbmNlclxuICAgKi9cbiAgTkVUV09SSyA9ICduZXR3b3JrJyxcblxuICAvKipcbiAgICogQXBwbGljYXRpb24gbG9hZCBiYWxhbmNlclxuICAgKi9cbiAgQVBQTElDQVRJT04gPSAnYXBwbGljYXRpb24nLFxufVxuXG4vKipcbiAqIEZpbHRlcnMgZm9yIHNlbGVjdGluZyBsb2FkIGJhbGFuY2Vyc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIExvYWRCYWxhbmNlckZpbHRlciBleHRlbmRzIENvbnRleHRMb29rdXBSb2xlT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBGaWx0ZXIgbG9hZCBiYWxhbmNlcnMgYnkgdGhlaXIgdHlwZVxuICAgKi9cbiAgcmVhZG9ubHkgbG9hZEJhbGFuY2VyVHlwZTogTG9hZEJhbGFuY2VyVHlwZTtcblxuICAvKipcbiAgICogRmluZCBieSBsb2FkIGJhbGFuY2VyJ3MgQVJOXG4gICAqIEBkZWZhdWx0IC0gZG9lcyBub3Qgc2VhcmNoIGJ5IGxvYWQgYmFsYW5jZXIgYXJuXG4gICAqL1xuICByZWFkb25seSBsb2FkQmFsYW5jZXJBcm4/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIE1hdGNoIGxvYWQgYmFsYW5jZXIgdGFnc1xuICAgKiBAZGVmYXVsdCAtIGRvZXMgbm90IG1hdGNoIGxvYWQgYmFsYW5jZXJzIGJ5IHRhZ3NcbiAgICovXG4gIHJlYWRvbmx5IGxvYWRCYWxhbmNlclRhZ3M/OiBUYWdbXTtcbn1cblxuLyoqXG4gKiBRdWVyeSBpbnB1dCBmb3IgbG9va2luZyB1cCBhIGxvYWQgYmFsYW5jZXJcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBMb2FkQmFsYW5jZXJDb250ZXh0UXVlcnkgZXh0ZW5kcyBMb2FkQmFsYW5jZXJGaWx0ZXIge31cblxuLyoqXG4gKiBUaGUgcHJvdG9jb2wgZm9yIGNvbm5lY3Rpb25zIGZyb20gY2xpZW50cyB0byB0aGUgbG9hZCBiYWxhbmNlclxuICovXG5leHBvcnQgZW51bSBMb2FkQmFsYW5jZXJMaXN0ZW5lclByb3RvY29sIHtcbiAgLyoqXG4gICAqIEhUVFAgcHJvdG9jb2xcbiAgICovXG4gIEhUVFAgPSAnSFRUUCcsXG5cbiAgLyoqXG4gICAqIEhUVFBTIHByb3RvY29sXG4gICAqL1xuICBIVFRQUyA9ICdIVFRQUycsXG5cbiAgLyoqXG4gICAqIFRDUCBwcm90b2NvbFxuICAgKi9cbiAgVENQID0gJ1RDUCcsXG5cbiAgLyoqXG4gICAqIFRMUyBwcm90b2NvbFxuICAgKi9cbiAgVExTID0gJ1RMUycsXG5cbiAgLyoqXG4gICAqIFVEUCBwcm90b2NvbFxuICAgKiAqL1xuICBVRFAgPSAnVURQJyxcblxuICAvKipcbiAgICogVENQIGFuZCBVRFAgcHJvdG9jb2xcbiAgICogKi9cbiAgVENQX1VEUCA9ICdUQ1BfVURQJyxcbn1cblxuLyoqXG4gKiBRdWVyeSBpbnB1dCBmb3IgbG9va2luZyB1cCBhIGxvYWQgYmFsYW5jZXIgbGlzdGVuZXJcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBMb2FkQmFsYW5jZXJMaXN0ZW5lckNvbnRleHRRdWVyeSBleHRlbmRzIExvYWRCYWxhbmNlckZpbHRlciB7XG4gIC8qKlxuICAgKiBGaW5kIGJ5IGxpc3RlbmVyJ3MgYXJuXG4gICAqIEBkZWZhdWx0IC0gZG9lcyBub3QgZmluZCBieSBsaXN0ZW5lciBhcm5cbiAgICovXG4gIHJlYWRvbmx5IGxpc3RlbmVyQXJuPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBGaWx0ZXIgYnkgbGlzdGVuZXIgcHJvdG9jb2xcbiAgICogQGRlZmF1bHQgLSBkb2VzIG5vdCBmaWx0ZXIgYnkgbGlzdGVuZXIgcHJvdG9jb2xcbiAgICovXG4gIHJlYWRvbmx5IGxpc3RlbmVyUHJvdG9jb2w/OiBMb2FkQmFsYW5jZXJMaXN0ZW5lclByb3RvY29sO1xuXG4gIC8qKlxuICAgKiBGaWx0ZXIgbGlzdGVuZXJzIGJ5IGxpc3RlbmVyIHBvcnRcbiAgICogQGRlZmF1bHQgLSBkb2VzIG5vdCBmaWx0ZXIgYnkgYSBsaXN0ZW5lciBwb3J0XG4gICAqL1xuICByZWFkb25seSBsaXN0ZW5lclBvcnQ/OiBudW1iZXI7XG59XG5cbi8qKlxuICogUXVlcnkgaW5wdXQgZm9yIGxvb2tpbmcgdXAgYSBzZWN1cml0eSBncm91cFxuICovXG5leHBvcnQgaW50ZXJmYWNlIFNlY3VyaXR5R3JvdXBDb250ZXh0UXVlcnkgZXh0ZW5kcyBDb250ZXh0TG9va3VwUm9sZU9wdGlvbnMge1xuICAvKipcbiAgICogU2VjdXJpdHkgZ3JvdXAgaWRcbiAgICpcbiAgICogQGRlZmF1bHQgLSBOb25lXG4gICAqL1xuICByZWFkb25seSBzZWN1cml0eUdyb3VwSWQ/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFNlY3VyaXR5IGdyb3VwIG5hbWVcbiAgICpcbiAgICogQGRlZmF1bHQgLSBOb25lXG4gICAqL1xuICByZWFkb25seSBzZWN1cml0eUdyb3VwTmFtZT86IHN0cmluZztcblxuICAvKipcbiAgICogVlBDIElEXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gTm9uZVxuICAgKi9cbiAgcmVhZG9ubHkgdnBjSWQ/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogUXVlcnkgaW5wdXQgZm9yIGxvb2tpbmcgdXAgYSBLTVMgS2V5XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgS2V5Q29udGV4dFF1ZXJ5IGV4dGVuZHMgQ29udGV4dExvb2t1cFJvbGVPcHRpb25zIHtcbiAgLyoqXG4gICAqIEFsaWFzIG5hbWUgdXNlZCB0byBzZWFyY2ggdGhlIEtleVxuICAgKi9cbiAgcmVhZG9ubHkgYWxpYXNOYW1lOiBzdHJpbmc7XG59XG5cbi8qKlxuICogUXVlcnkgaW5wdXQgZm9yIHBsdWdpbnNcbiAqXG4gKiBUaGlzIGFsdGVybmF0ZSBicmFuY2ggaXMgbmVjZXNzYXJ5IGJlY2F1c2UgaXQgbmVlZHMgdG8gYmUgYWJsZSB0byBlc2NhcGUgYWxsIHR5cGUgY2hlY2tpbmdcbiAqIHdlIGRvIG9uIG9uIHRoZSBjbG91ZCBhc3NlbWJseSAtLSB3ZSBjYW5ub3Qga25vdyB0aGUgcHJvcGVydGllcyB0aGF0IHdpbGwgYmUgdXNlZCBhIHByaW9yaS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBQbHVnaW5Db250ZXh0UXVlcnkge1xuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIHBsdWdpblxuICAgKi9cbiAgcmVhZG9ubHkgcGx1Z2luTmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBBcmJpdHJhcnkgb3RoZXIgYXJndW1lbnRzIGZvciB0aGUgcGx1Z2luLlxuICAgKlxuICAgKiBUaGlzIGluZGV4IHNpZ25hdHVyZSBpcyBub3QgdXNhYmxlIGluIG5vbi1UeXBlU2NyaXB0L0phdmFTY3JpcHQgbGFuZ3VhZ2VzLlxuICAgKlxuICAgKiBAanNpaSBpZ25vcmVcbiAgICovXG4gIFtrZXk6IHN0cmluZ106IGFueTtcbn1cblxuZXhwb3J0IHR5cGUgQ29udGV4dFF1ZXJ5UHJvcGVydGllcyA9XG4gIHwgQW1pQ29udGV4dFF1ZXJ5XG4gIHwgQXZhaWxhYmlsaXR5Wm9uZXNDb250ZXh0UXVlcnlcbiAgfCBIb3N0ZWRab25lQ29udGV4dFF1ZXJ5XG4gIHwgU1NNUGFyYW1ldGVyQ29udGV4dFF1ZXJ5XG4gIHwgVnBjQ29udGV4dFF1ZXJ5XG4gIHwgRW5kcG9pbnRTZXJ2aWNlQXZhaWxhYmlsaXR5Wm9uZXNDb250ZXh0UXVlcnlcbiAgfCBMb2FkQmFsYW5jZXJDb250ZXh0UXVlcnlcbiAgfCBMb2FkQmFsYW5jZXJMaXN0ZW5lckNvbnRleHRRdWVyeVxuICB8IFNlY3VyaXR5R3JvdXBDb250ZXh0UXVlcnlcbiAgfCBLZXlDb250ZXh0UXVlcnlcbiAgfCBQbHVnaW5Db250ZXh0UXVlcnk7XG4iXX0= + +/***/ }), + +/***/ 77144: +/***/ (function(__unused_webpack_module, exports, __nccwpck_require__) { + +"use strict"; + +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __exportStar = (this && this.__exportStar) || function(m, exports) { + for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); +}; +Object.defineProperty(exports, "__esModule", ({ value: true })); +__exportStar(__nccwpck_require__(9129), exports); +__exportStar(__nccwpck_require__(67687), exports); +__exportStar(__nccwpck_require__(51318), exports); +__exportStar(__nccwpck_require__(76534), exports); +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsMkNBQXlCO0FBQ3pCLG9EQUFrQztBQUNsQyxvREFBa0M7QUFDbEMsb0RBQWtDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9zY2hlbWEnO1xuZXhwb3J0ICogZnJvbSAnLi9tZXRhZGF0YS1zY2hlbWEnO1xuZXhwb3J0ICogZnJvbSAnLi9hcnRpZmFjdC1zY2hlbWEnO1xuZXhwb3J0ICogZnJvbSAnLi9jb250ZXh0LXF1ZXJpZXMnO1xuIl19 + +/***/ }), + +/***/ 67687: +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.ArtifactMetadataEntryType = void 0; +/** + * Type of artifact metadata entry. + */ +var ArtifactMetadataEntryType; +(function (ArtifactMetadataEntryType) { + /** + * Asset in metadata. + */ + ArtifactMetadataEntryType["ASSET"] = "aws:cdk:asset"; + /** + * Metadata key used to print INFO-level messages by the toolkit when an app is syntheized. + */ + ArtifactMetadataEntryType["INFO"] = "aws:cdk:info"; + /** + * Metadata key used to print WARNING-level messages by the toolkit when an app is syntheized. + */ + ArtifactMetadataEntryType["WARN"] = "aws:cdk:warning"; + /** + * Metadata key used to print ERROR-level messages by the toolkit when an app is syntheized. + */ + ArtifactMetadataEntryType["ERROR"] = "aws:cdk:error"; + /** + * Represents the CloudFormation logical ID of a resource at a certain path. + */ + ArtifactMetadataEntryType["LOGICAL_ID"] = "aws:cdk:logicalId"; + /** + * Represents tags of a stack. + */ + ArtifactMetadataEntryType["STACK_TAGS"] = "aws:cdk:stack-tags"; +})(ArtifactMetadataEntryType || (exports.ArtifactMetadataEntryType = ArtifactMetadataEntryType = {})); +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWV0YWRhdGEtc2NoZW1hLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsibWV0YWRhdGEtc2NoZW1hLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQStRQTs7R0FFRztBQUNILElBQVkseUJBOEJYO0FBOUJELFdBQVkseUJBQXlCO0lBQ25DOztPQUVHO0lBQ0gsb0RBQXVCLENBQUE7SUFFdkI7O09BRUc7SUFDSCxrREFBcUIsQ0FBQTtJQUVyQjs7T0FFRztJQUNILHFEQUF3QixDQUFBO0lBRXhCOztPQUVHO0lBQ0gsb0RBQXVCLENBQUE7SUFFdkI7O09BRUc7SUFDSCw2REFBZ0MsQ0FBQTtJQUVoQzs7T0FFRztJQUNILDhEQUFpQyxDQUFBO0FBQ25DLENBQUMsRUE5QlcseUJBQXlCLHlDQUF6Qix5QkFBeUIsUUE4QnBDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDb21tb24gcHJvcGVydGllcyBmb3IgYXNzZXQgbWV0YWRhdGEuXG4gKi9cbmludGVyZmFjZSBCYXNlQXNzZXRNZXRhZGF0YUVudHJ5IHtcbiAgLyoqXG4gICAqIFJlcXVlc3RlZCBwYWNrYWdpbmcgc3R5bGVcbiAgICovXG4gIHJlYWRvbmx5IHBhY2thZ2luZzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBMb2dpY2FsIGlkZW50aWZpZXIgZm9yIHRoZSBhc3NldFxuICAgKi9cbiAgcmVhZG9ubHkgaWQ6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIGhhc2ggb2YgdGhlIGFzc2V0IHNvdXJjZS5cbiAgICovXG4gIHJlYWRvbmx5IHNvdXJjZUhhc2g6IHN0cmluZztcblxuICAvKipcbiAgICogUGF0aCBvbiBkaXNrIHRvIHRoZSBhc3NldFxuICAgKi9cbiAgcmVhZG9ubHkgcGF0aDogc3RyaW5nO1xufVxuXG4vKipcbiAqIE1ldGFkYXRhIEVudHJ5IHNwZWMgZm9yIGZpbGVzLlxuICpcbiAqIEBleGFtcGxlXG4gKiBjb25zdCBlbnRyeSA9IHtcbiAqICAgcGFja2FnaW5nOiAnZmlsZScsXG4gKiAgIHMzQnVja2V0UGFyYW1ldGVyOiAnYnVja2V0LXBhcmFtZXRlcicsXG4gKiAgIHMzS2V5UGFyYW1lbnRlcjogJ2tleS1wYXJhbWV0ZXInLFxuICogICBhcnRpZmFjdEhhc2hQYXJhbWV0ZXI6ICdoYXNoLXBhcmFtZXRlcicsXG4gKiB9XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRmlsZUFzc2V0TWV0YWRhdGFFbnRyeSBleHRlbmRzIEJhc2VBc3NldE1ldGFkYXRhRW50cnkge1xuICAvKipcbiAgICogUmVxdWVzdGVkIHBhY2thZ2luZyBzdHlsZVxuICAgKi9cbiAgcmVhZG9ubHkgcGFja2FnaW5nOiAnemlwJyB8ICdmaWxlJztcblxuICAvKipcbiAgICogTmFtZSBvZiBwYXJhbWV0ZXIgd2hlcmUgUzMgYnVja2V0IHNob3VsZCBiZSBwYXNzZWQgaW5cbiAgICovXG4gIHJlYWRvbmx5IHMzQnVja2V0UGFyYW1ldGVyOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIE5hbWUgb2YgcGFyYW1ldGVyIHdoZXJlIFMzIGtleSBzaG91bGQgYmUgcGFzc2VkIGluXG4gICAqL1xuICByZWFkb25seSBzM0tleVBhcmFtZXRlcjogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgcGFyYW1ldGVyIHdoZXJlIHRoZSBoYXNoIG9mIHRoZSBidW5kbGVkIGFzc2V0IHNob3VsZCBiZSBwYXNzZWQgaW4uXG4gICAqL1xuICByZWFkb25seSBhcnRpZmFjdEhhc2hQYXJhbWV0ZXI6IHN0cmluZztcbn1cblxuLyoqXG4gKiBNZXRhZGF0YSBFbnRyeSBzcGVjIGZvciBzdGFjayB0YWcuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVGFnIHtcbiAgLyoqXG4gICAqIFRhZyBrZXkuXG4gICAqXG4gICAqIChJbiB0aGUgYWN0dWFsIGZpbGUgb24gZGlzayB0aGlzIHdpbGwgYmUgY2FzZWQgYXMgXCJLZXlcIiwgYW5kIHRoZSBzdHJ1Y3R1cmUgaXNcbiAgICogcGF0Y2hlZCB0byBtYXRjaCB0aGlzIHN0cnVjdHVyZSB1cG9uIGxvYWRpbmc6XG4gICAqIGh0dHBzOi8vZ2l0aHViLmNvbS9hd3MvYXdzLWNkay9ibG9iLzRhYWRhYTc3OWI0OGYzNTgzOGNjY2Q0ZTI1MTA3YjIzMzhmMDU1NDcvcGFja2FnZXMvJTQwYXdzLWNkay9jbG91ZC1hc3NlbWJseS1zY2hlbWEvbGliL21hbmlmZXN0LnRzI0wxMzcpXG4gICAqL1xuICByZWFkb25seSBrZXk6IHN0cmluZztcblxuICAvKipcbiAgICogVGFnIHZhbHVlLlxuICAgKlxuICAgKiAoSW4gdGhlIGFjdHVhbCBmaWxlIG9uIGRpc2sgdGhpcyB3aWxsIGJlIGNhc2VkIGFzIFwiVmFsdWVcIiwgYW5kIHRoZSBzdHJ1Y3R1cmUgaXNcbiAgICogcGF0Y2hlZCB0byBtYXRjaCB0aGlzIHN0cnVjdHVyZSB1cG9uIGxvYWRpbmc6XG4gICAqIGh0dHBzOi8vZ2l0aHViLmNvbS9hd3MvYXdzLWNkay9ibG9iLzRhYWRhYTc3OWI0OGYzNTgzOGNjY2Q0ZTI1MTA3YjIzMzhmMDU1NDcvcGFja2FnZXMvJTQwYXdzLWNkay9jbG91ZC1hc3NlbWJseS1zY2hlbWEvbGliL21hbmlmZXN0LnRzI0wxMzcpXG4gICAqL1xuICByZWFkb25seSB2YWx1ZTogc3RyaW5nO1xufVxuXG4vKipcbiAqIE9wdGlvbnMgZm9yIGNvbmZpZ3VyaW5nIHRoZSBEb2NrZXIgY2FjaGUgYmFja2VuZFxuICovXG5leHBvcnQgaW50ZXJmYWNlIENvbnRhaW5lckltYWdlQXNzZXRDYWNoZU9wdGlvbiB7XG4gIC8qKlxuICAgKiBUaGUgdHlwZSBvZiBjYWNoZSB0byB1c2UuXG4gICAqIFJlZmVyIHRvIGh0dHBzOi8vZG9jcy5kb2NrZXIuY29tL2J1aWxkL2NhY2hlL2JhY2tlbmRzLyBmb3IgZnVsbCBsaXN0IG9mIGJhY2tlbmRzLlxuICAgKiBAZGVmYXVsdCAtIHVuc3BlY2lmaWVkXG4gICAqXG4gICAqIEBleGFtcGxlICdyZWdpc3RyeSdcbiAgICovXG4gIHJlYWRvbmx5IHR5cGU6IHN0cmluZztcbiAgLyoqXG4gICAqIEFueSBwYXJhbWV0ZXJzIHRvIHBhc3MgaW50byB0aGUgZG9ja2VyIGNhY2hlIGJhY2tlbmQgY29uZmlndXJhdGlvbi5cbiAgICogUmVmZXIgdG8gaHR0cHM6Ly9kb2NzLmRvY2tlci5jb20vYnVpbGQvY2FjaGUvYmFja2VuZHMvIGZvciBjYWNoZSBiYWNrZW5kIGNvbmZpZ3VyYXRpb24uXG4gICAqIEBkZWZhdWx0IHt9IE5vIG9wdGlvbnMgcHJvdmlkZWRcbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogZGVjbGFyZSBjb25zdCBicmFuY2g6IHN0cmluZztcbiAgICpcbiAgICogY29uc3QgcGFyYW1zID0ge1xuICAgKiAgIHJlZjogYDEyMzQ1Njc4LmRrci5lY3IudXMtd2VzdC0yLmFtYXpvbmF3cy5jb20vY2FjaGU6JHticmFuY2h9YCxcbiAgICogICBtb2RlOiBcIm1heFwiLFxuICAgKiB9O1xuICAgKi9cbiAgcmVhZG9ubHkgcGFyYW1zPzogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfTtcbn1cblxuLyoqXG4gKiBNZXRhZGF0YSBFbnRyeSBzcGVjIGZvciBjb250YWluZXIgaW1hZ2VzLlxuICpcbiAqIEBleGFtcGxlXG4gKiBjb25zdCBlbnRyeSA9IHtcbiAqICAgcGFja2FnaW5nOiAnY29udGFpbmVyLWltYWdlJyxcbiAqICAgcmVwb3NpdG9yeU5hbWU6ICdyZXBvc2l0b3J5LW5hbWUnLFxuICogICBpbWFnZVRhZzogJ3RhZycsXG4gKiB9XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ29udGFpbmVySW1hZ2VBc3NldE1ldGFkYXRhRW50cnkgZXh0ZW5kcyBCYXNlQXNzZXRNZXRhZGF0YUVudHJ5IHtcbiAgLyoqXG4gICAqIFR5cGUgb2YgYXNzZXRcbiAgICovXG4gIHJlYWRvbmx5IHBhY2thZ2luZzogJ2NvbnRhaW5lci1pbWFnZSc7XG5cbiAgLyoqXG4gICAqIEVDUiBSZXBvc2l0b3J5IG5hbWUgYW5kIHJlcG8gZGlnZXN0IChzZXBhcmF0ZWQgYnkgXCJAc2hhMjU2OlwiKSB3aGVyZSB0aGlzXG4gICAqIGltYWdlIGlzIHN0b3JlZC5cbiAgICpcbiAgICogQGRlZmF1bHQgdW5kZWZpbmVkIElmIG5vdCBzcGVjaWZpZWQsIGByZXBvc2l0b3J5TmFtZWAgYW5kIGBpbWFnZVRhZ2AgYXJlXG4gICAqIHJlcXVpcmVkIGJlY2F1c2Ugb3RoZXJ3aXNlIGhvdyB3aWxsIHRoZSBzdGFjayBrbm93IHdoZXJlIHRvIGZpbmQgdGhlIGFzc2V0LFxuICAgKiBoYT9cbiAgICogQGRlcHJlY2F0ZWQgc3BlY2lmeSBgcmVwb3NpdG9yeU5hbWVgIGFuZCBgaW1hZ2VUYWdgIGluc3RlYWQsIGFuZCB0aGVuIHlvdVxuICAgKiBrbm93IHdoZXJlIHRoZSBpbWFnZSB3aWxsIGdvLlxuICAgKi9cbiAgcmVhZG9ubHkgaW1hZ2VOYW1lUGFyYW1ldGVyPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBFQ1IgcmVwb3NpdG9yeSBuYW1lLCBpZiBvbWl0dGVkIGEgZGVmYXVsdCBuYW1lIGJhc2VkIG9uIHRoZSBhc3NldCdzIElEIGlzXG4gICAqIHVzZWQgaW5zdGVhZC4gU3BlY2lmeSB0aGlzIHByb3BlcnR5IGlmIHlvdSBuZWVkIHRvIHN0YXRpY2FsbHkgYWRkcmVzcyB0aGVcbiAgICogaW1hZ2UsIGUuZy4gZnJvbSBhIEt1YmVybmV0ZXMgUG9kLiBOb3RlLCB0aGlzIGlzIG9ubHkgdGhlIHJlcG9zaXRvcnkgbmFtZSxcbiAgICogd2l0aG91dCB0aGUgcmVnaXN0cnkgYW5kIHRoZSB0YWcgcGFydHMuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gdGhpcyBwYXJhbWV0ZXIgaXMgUkVRVUlSRUQgYWZ0ZXIgMS4yMS4wXG4gICAqL1xuICByZWFkb25seSByZXBvc2l0b3J5TmFtZT86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIGRvY2tlciBpbWFnZSB0YWcgdG8gdXNlIGZvciB0YWdnaW5nIHB1c2hlZCBpbWFnZXMuIFRoaXMgZmllbGQgaXNcbiAgICogcmVxdWlyZWQgaWYgYGltYWdlUGFyYW1ldGVyTmFtZWAgaXMgb21taXRlZCAob3RoZXJ3aXNlLCB0aGUgYXBwIHdvbid0IGJlXG4gICAqIGFibGUgdG8gZmluZCB0aGUgaW1hZ2UpLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIHRoaXMgcGFyYW1ldGVyIGlzIFJFUVVJUkVEIGFmdGVyIDEuMjEuMFxuICAgKi9cbiAgcmVhZG9ubHkgaW1hZ2VUYWc/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEJ1aWxkIGFyZ3MgdG8gcGFzcyB0byB0aGUgYGRvY2tlciBidWlsZGAgY29tbWFuZFxuICAgKlxuICAgKiBAZGVmYXVsdCBubyBidWlsZCBhcmdzIGFyZSBwYXNzZWRcbiAgICovXG4gIHJlYWRvbmx5IGJ1aWxkQXJncz86IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH07XG5cbiAgLyoqXG4gICAqIFNTSCBhZ2VudCBzb2NrZXQgb3Iga2V5cyB0byBwYXNzIHRvIHRoZSBgZG9ja2VyIGJ1aWxkYCBjb21tYW5kXG4gICAqXG4gICAqIEBkZWZhdWx0IG5vIHNzaCBhcmcgaXMgcGFzc2VkXG4gICAqL1xuICByZWFkb25seSBidWlsZFNzaD86IHN0cmluZztcblxuICAvKipcbiAgICogQnVpbGQgc2VjcmV0cyB0byBwYXNzIHRvIHRoZSBgZG9ja2VyIGJ1aWxkYCBjb21tYW5kXG4gICAqXG4gICAqIEBkZWZhdWx0IG5vIGJ1aWxkIHNlY3JldHMgYXJlIHBhc3NlZFxuICAgKi9cbiAgcmVhZG9ubHkgYnVpbGRTZWNyZXRzPzogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfTtcblxuICAvKipcbiAgICogRG9ja2VyIHRhcmdldCB0byBidWlsZCB0b1xuICAgKlxuICAgKiBAZGVmYXVsdCBubyBidWlsZCB0YXJnZXRcbiAgICovXG4gIHJlYWRvbmx5IHRhcmdldD86IHN0cmluZztcblxuICAvKipcbiAgICogUGF0aCB0byB0aGUgRG9ja2VyZmlsZSAocmVsYXRpdmUgdG8gdGhlIGRpcmVjdG9yeSkuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gbm8gZmlsZSBpcyBwYXNzZWRcbiAgICovXG4gIHJlYWRvbmx5IGZpbGU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIE5ldHdvcmtpbmcgbW9kZSBmb3IgdGhlIFJVTiBjb21tYW5kcyBkdXJpbmcgYnVpbGQuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gbm8gbmV0d29ya2luZyBtb2RlIHNwZWNpZmllZFxuICAgKi9cbiAgcmVhZG9ubHkgbmV0d29ya01vZGU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFBsYXRmb3JtIHRvIGJ1aWxkIGZvci4gX1JlcXVpcmVzIERvY2tlciBCdWlsZHhfLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIGN1cnJlbnQgbWFjaGluZSBwbGF0Zm9ybVxuICAgKi9cbiAgcmVhZG9ubHkgcGxhdGZvcm0/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIE91dHB1dHMgdG8gcGFzcyB0byB0aGUgYGRvY2tlciBidWlsZGAgY29tbWFuZC5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBubyBvdXRwdXRzIGFyZSBwYXNzZWQgdG8gdGhlIGJ1aWxkIGNvbW1hbmQgKGRlZmF1bHQgb3V0cHV0cyBhcmUgdXNlZClcbiAgICogQHNlZSBodHRwczovL2RvY3MuZG9ja2VyLmNvbS9lbmdpbmUvcmVmZXJlbmNlL2NvbW1hbmRsaW5lL2J1aWxkLyNjdXN0b20tYnVpbGQtb3V0cHV0c1xuICAgKi9cbiAgcmVhZG9ubHkgb3V0cHV0cz86IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBDYWNoZSBmcm9tIG9wdGlvbnMgdG8gcGFzcyB0byB0aGUgYGRvY2tlciBidWlsZGAgY29tbWFuZC5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBubyBjYWNoZSBmcm9tIG9wdGlvbnMgYXJlIHBhc3NlZCB0byB0aGUgYnVpbGQgY29tbWFuZFxuICAgKiBAc2VlIGh0dHBzOi8vZG9jcy5kb2NrZXIuY29tL2J1aWxkL2NhY2hlL2JhY2tlbmRzL1xuICAgKi9cbiAgcmVhZG9ubHkgY2FjaGVGcm9tPzogQ29udGFpbmVySW1hZ2VBc3NldENhY2hlT3B0aW9uW107XG5cbiAgLyoqXG4gICAqIENhY2hlIHRvIG9wdGlvbnMgdG8gcGFzcyB0byB0aGUgYGRvY2tlciBidWlsZGAgY29tbWFuZC5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBubyBjYWNoZSB0byBvcHRpb25zIGFyZSBwYXNzZWQgdG8gdGhlIGJ1aWxkIGNvbW1hbmRcbiAgICogQHNlZSBodHRwczovL2RvY3MuZG9ja2VyLmNvbS9idWlsZC9jYWNoZS9iYWNrZW5kcy9cbiAgICovXG4gIHJlYWRvbmx5IGNhY2hlVG8/OiBDb250YWluZXJJbWFnZUFzc2V0Q2FjaGVPcHRpb247XG5cbiAgLyoqXG4gICAqIERpc2FibGUgdGhlIGNhY2hlIGFuZCBwYXNzIGAtLW5vLWNhY2hlYCB0byB0aGUgYGRvY2tlciBidWlsZGAgY29tbWFuZC5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBjYWNoZSBpcyB1c2VkXG4gICAqL1xuICByZWFkb25seSBjYWNoZURpc2FibGVkPzogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBAc2VlIEFydGlmYWN0TWV0YWRhdGFFbnRyeVR5cGUuQVNTRVRcbiAqL1xuZXhwb3J0IHR5cGUgQXNzZXRNZXRhZGF0YUVudHJ5ID0gRmlsZUFzc2V0TWV0YWRhdGFFbnRyeSB8IENvbnRhaW5lckltYWdlQXNzZXRNZXRhZGF0YUVudHJ5O1xuXG4vLyBUeXBlIGFsaWFzZXMgZm9yIG1ldGFkYXRhIGVudHJpZXMuXG4vLyBVc2VkIHNpbXBseSB0byBhc3NpZ24gbmFtZXMgdG8gZGF0YSB0eXBlcyBmb3IgbW9yZSBjbGFyaXR5LlxuXG4vKipcbiAqIEBzZWUgQXJ0aWZhY3RNZXRhZGF0YUVudHJ5VHlwZS5JTkZPXG4gKiBAc2VlIEFydGlmYWN0TWV0YWRhdGFFbnRyeVR5cGUuV0FSTlxuICogQHNlZSBBcnRpZmFjdE1ldGFkYXRhRW50cnlUeXBlLkVSUk9SXG4gKi9cbmV4cG9ydCB0eXBlIExvZ01lc3NhZ2VNZXRhZGF0YUVudHJ5ID0gc3RyaW5nO1xuXG4vKipcbiAqIEBzZWUgQXJ0aWZhY3RNZXRhZGF0YUVudHJ5VHlwZS5MT0dJQ0FMX0lEXG4gKi9cbmV4cG9ydCB0eXBlIExvZ2ljYWxJZE1ldGFkYXRhRW50cnkgPSBzdHJpbmc7XG5cbi8qKlxuICogQHNlZSBBcnRpZmFjdE1ldGFkYXRhRW50cnlUeXBlLlNUQUNLX1RBR1NcbiAqL1xuZXhwb3J0IHR5cGUgU3RhY2tUYWdzTWV0YWRhdGFFbnRyeSA9IFRhZ1tdO1xuXG4vKipcbiAqIFVuaW9uIHR5cGUgZm9yIGFsbCBtZXRhZGF0YSBlbnRyaWVzIHRoYXQgbWlnaHQgZXhpc3QgaW4gdGhlIG1hbmlmZXN0LlxuICovXG5leHBvcnQgdHlwZSBNZXRhZGF0YUVudHJ5RGF0YSA9XG4gIHwgQXNzZXRNZXRhZGF0YUVudHJ5XG4gIHwgTG9nTWVzc2FnZU1ldGFkYXRhRW50cnlcbiAgfCBMb2dpY2FsSWRNZXRhZGF0YUVudHJ5XG4gIHwgU3RhY2tUYWdzTWV0YWRhdGFFbnRyeTtcblxuLyoqXG4gKiBUeXBlIG9mIGFydGlmYWN0IG1ldGFkYXRhIGVudHJ5LlxuICovXG5leHBvcnQgZW51bSBBcnRpZmFjdE1ldGFkYXRhRW50cnlUeXBlIHtcbiAgLyoqXG4gICAqIEFzc2V0IGluIG1ldGFkYXRhLlxuICAgKi9cbiAgQVNTRVQgPSAnYXdzOmNkazphc3NldCcsXG5cbiAgLyoqXG4gICAqIE1ldGFkYXRhIGtleSB1c2VkIHRvIHByaW50IElORk8tbGV2ZWwgbWVzc2FnZXMgYnkgdGhlIHRvb2xraXQgd2hlbiBhbiBhcHAgaXMgc3ludGhlaXplZC5cbiAgICovXG4gIElORk8gPSAnYXdzOmNkazppbmZvJyxcblxuICAvKipcbiAgICogTWV0YWRhdGEga2V5IHVzZWQgdG8gcHJpbnQgV0FSTklORy1sZXZlbCBtZXNzYWdlcyBieSB0aGUgdG9vbGtpdCB3aGVuIGFuIGFwcCBpcyBzeW50aGVpemVkLlxuICAgKi9cbiAgV0FSTiA9ICdhd3M6Y2RrOndhcm5pbmcnLFxuXG4gIC8qKlxuICAgKiBNZXRhZGF0YSBrZXkgdXNlZCB0byBwcmludCBFUlJPUi1sZXZlbCBtZXNzYWdlcyBieSB0aGUgdG9vbGtpdCB3aGVuIGFuIGFwcCBpcyBzeW50aGVpemVkLlxuICAgKi9cbiAgRVJST1IgPSAnYXdzOmNkazplcnJvcicsXG5cbiAgLyoqXG4gICAqIFJlcHJlc2VudHMgdGhlIENsb3VkRm9ybWF0aW9uIGxvZ2ljYWwgSUQgb2YgYSByZXNvdXJjZSBhdCBhIGNlcnRhaW4gcGF0aC5cbiAgICovXG4gIExPR0lDQUxfSUQgPSAnYXdzOmNkazpsb2dpY2FsSWQnLFxuXG4gIC8qKlxuICAgKiBSZXByZXNlbnRzIHRhZ3Mgb2YgYSBzdGFjay5cbiAgICovXG4gIFNUQUNLX1RBR1MgPSAnYXdzOmNkazpzdGFjay10YWdzJyxcbn1cblxuLyoqXG4gKiBBIG1ldGFkYXRhIGVudHJ5IGluIGEgY2xvdWQgYXNzZW1ibHkgYXJ0aWZhY3QuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTWV0YWRhdGFFbnRyeSB7XG4gIC8qKlxuICAgKiBUaGUgdHlwZSBvZiB0aGUgbWV0YWRhdGEgZW50cnkuXG4gICAqL1xuICByZWFkb25seSB0eXBlOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBkYXRhLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIG5vIGRhdGEuXG4gICAqL1xuICByZWFkb25seSBkYXRhPzogTWV0YWRhdGFFbnRyeURhdGE7XG5cbiAgLyoqXG4gICAqIEEgc3RhY2sgdHJhY2UgZm9yIHdoZW4gdGhlIGVudHJ5IHdhcyBjcmVhdGVkLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIG5vIHRyYWNlLlxuICAgKi9cbiAgcmVhZG9ubHkgdHJhY2U/OiBzdHJpbmdbXTtcbn1cbiJdfQ== + +/***/ }), + +/***/ 9129: +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.ArtifactType = void 0; +/** + * Type of cloud artifact. + */ +var ArtifactType; +(function (ArtifactType) { + /** + * Stub required because of JSII. + */ + ArtifactType["NONE"] = "none"; + /** + * The artifact is an AWS CloudFormation stack. + */ + ArtifactType["AWS_CLOUDFORMATION_STACK"] = "aws:cloudformation:stack"; + /** + * The artifact contains the CDK application's construct tree. + */ + ArtifactType["CDK_TREE"] = "cdk:tree"; + /** + * Manifest for all assets in the Cloud Assembly + */ + ArtifactType["ASSET_MANIFEST"] = "cdk:asset-manifest"; + /** + * Nested Cloud Assembly + */ + ArtifactType["NESTED_CLOUD_ASSEMBLY"] = "cdk:cloud-assembly"; +})(ArtifactType || (exports.ArtifactType = ArtifactType = {})); +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NoZW1hLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsic2NoZW1hLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUlBOztHQUVHO0FBQ0gsSUFBWSxZQXlCWDtBQXpCRCxXQUFZLFlBQVk7SUFDdEI7O09BRUc7SUFDSCw2QkFBYSxDQUFBO0lBRWI7O09BRUc7SUFDSCxxRUFBcUQsQ0FBQTtJQUVyRDs7T0FFRztJQUNILHFDQUFxQixDQUFBO0lBRXJCOztPQUVHO0lBQ0gscURBQXFDLENBQUE7SUFFckM7O09BRUc7SUFDSCw0REFBNEMsQ0FBQTtBQUM5QyxDQUFDLEVBekJXLFlBQVksNEJBQVosWUFBWSxRQXlCdkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBcnRpZmFjdFByb3BlcnRpZXMgfSBmcm9tICcuL2FydGlmYWN0LXNjaGVtYSc7XG5pbXBvcnQgeyBDb250ZXh0UHJvdmlkZXIsIENvbnRleHRRdWVyeVByb3BlcnRpZXMgfSBmcm9tICcuL2NvbnRleHQtcXVlcmllcyc7XG5pbXBvcnQgeyBNZXRhZGF0YUVudHJ5IH0gZnJvbSAnLi9tZXRhZGF0YS1zY2hlbWEnO1xuXG4vKipcbiAqIFR5cGUgb2YgY2xvdWQgYXJ0aWZhY3QuXG4gKi9cbmV4cG9ydCBlbnVtIEFydGlmYWN0VHlwZSB7XG4gIC8qKlxuICAgKiBTdHViIHJlcXVpcmVkIGJlY2F1c2Ugb2YgSlNJSS5cbiAgICovXG4gIE5PTkUgPSAnbm9uZScsIC8vIHJlcXVpcmVkIGR1ZSB0byBhIGpzaWkgYnVnXG5cbiAgLyoqXG4gICAqIFRoZSBhcnRpZmFjdCBpcyBhbiBBV1MgQ2xvdWRGb3JtYXRpb24gc3RhY2suXG4gICAqL1xuICBBV1NfQ0xPVURGT1JNQVRJT05fU1RBQ0sgPSAnYXdzOmNsb3VkZm9ybWF0aW9uOnN0YWNrJyxcblxuICAvKipcbiAgICogVGhlIGFydGlmYWN0IGNvbnRhaW5zIHRoZSBDREsgYXBwbGljYXRpb24ncyBjb25zdHJ1Y3QgdHJlZS5cbiAgICovXG4gIENES19UUkVFID0gJ2Nkazp0cmVlJyxcblxuICAvKipcbiAgICogTWFuaWZlc3QgZm9yIGFsbCBhc3NldHMgaW4gdGhlIENsb3VkIEFzc2VtYmx5XG4gICAqL1xuICBBU1NFVF9NQU5JRkVTVCA9ICdjZGs6YXNzZXQtbWFuaWZlc3QnLFxuXG4gIC8qKlxuICAgKiBOZXN0ZWQgQ2xvdWQgQXNzZW1ibHlcbiAgICovXG4gIE5FU1RFRF9DTE9VRF9BU1NFTUJMWSA9ICdjZGs6Y2xvdWQtYXNzZW1ibHknLFxufVxuXG4vKipcbiAqIEluZm9ybWF0aW9uIGFib3V0IHRoZSBhcHBsaWNhdGlvbidzIHJ1bnRpbWUgY29tcG9uZW50cy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSdW50aW1lSW5mbyB7XG4gIC8qKlxuICAgKiBUaGUgbGlzdCBvZiBsaWJyYXJpZXMgbG9hZGVkIGluIHRoZSBhcHBsaWNhdGlvbiwgYXNzb2NpYXRlZCB3aXRoIHRoZWlyIHZlcnNpb25zLlxuICAgKi9cbiAgcmVhZG9ubHkgbGlicmFyaWVzOiB7IFtuYW1lOiBzdHJpbmddOiBzdHJpbmcgfTtcbn1cblxuLyoqXG4gKiBSZXByZXNlbnRzIGEgbWlzc2luZyBwaWVjZSBvZiBjb250ZXh0LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIE1pc3NpbmdDb250ZXh0IHtcbiAgLyoqXG4gICAqIFRoZSBtaXNzaW5nIGNvbnRleHQga2V5LlxuICAgKi9cbiAgcmVhZG9ubHkga2V5OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBwcm92aWRlciBmcm9tIHdoaWNoIHdlIGV4cGVjdCB0aGlzIGNvbnRleHQga2V5IHRvIGJlIG9idGFpbmVkLlxuICAgKi9cbiAgcmVhZG9ubHkgcHJvdmlkZXI6IENvbnRleHRQcm92aWRlcjtcblxuICAvKipcbiAgICogQSBzZXQgb2YgcHJvdmlkZXItc3BlY2lmaWMgb3B0aW9ucy5cbiAgICovXG4gIHJlYWRvbmx5IHByb3BzOiBDb250ZXh0UXVlcnlQcm9wZXJ0aWVzO1xufVxuXG4vKipcbiAqIEEgbWFuaWZlc3QgZm9yIGEgc2luZ2xlIGFydGlmYWN0IHdpdGhpbiB0aGUgY2xvdWQgYXNzZW1ibHkuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQXJ0aWZhY3RNYW5pZmVzdCB7XG4gIC8qKlxuICAgKiBUaGUgdHlwZSBvZiBhcnRpZmFjdC5cbiAgICovXG4gIHJlYWRvbmx5IHR5cGU6IEFydGlmYWN0VHlwZTtcblxuICAvKipcbiAgICogVGhlIGVudmlyb25tZW50IGludG8gd2hpY2ggdGhpcyBhcnRpZmFjdCBpcyBkZXBsb3llZC5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBubyBlbnZyaW9ubWVudC5cbiAgICovXG4gIHJlYWRvbmx5IGVudmlyb25tZW50Pzogc3RyaW5nOyAvLyBmb3JtYXQ6IGF3czovL2FjY291bnQvcmVnaW9uXG5cbiAgLyoqXG4gICAqIEFzc29jaWF0ZWQgbWV0YWRhdGEuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gbm8gbWV0YWRhdGEuXG4gICAqL1xuICByZWFkb25seSBtZXRhZGF0YT86IHsgW3BhdGg6IHN0cmluZ106IE1ldGFkYXRhRW50cnlbXSB9O1xuXG4gIC8qKlxuICAgKiBJRHMgb2YgYXJ0aWZhY3RzIHRoYXQgbXVzdCBiZSBkZXBsb3llZCBiZWZvcmUgdGhpcyBhcnRpZmFjdC5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBubyBkZXBlbmRlbmNpZXMuXG4gICAqL1xuICByZWFkb25seSBkZXBlbmRlbmNpZXM/OiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogVGhlIHNldCBvZiBwcm9wZXJ0aWVzIGZvciB0aGlzIGFydGlmYWN0IChkZXBlbmRzIG9uIHR5cGUpXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gbm8gcHJvcGVydGllcy5cbiAgICovXG4gIHJlYWRvbmx5IHByb3BlcnRpZXM/OiBBcnRpZmFjdFByb3BlcnRpZXM7XG5cbiAgLyoqXG4gICAqIEEgc3RyaW5nIHRoYXQgcmVwcmVzZW50cyB0aGlzIGFydGlmYWN0LiBTaG91bGQgb25seSBiZSB1c2VkIGluIHVzZXIgaW50ZXJmYWNlcy5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBubyBkaXNwbGF5IG5hbWVcbiAgICovXG4gIHJlYWRvbmx5IGRpc3BsYXlOYW1lPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIEEgbWFuaWZlc3Qgd2hpY2ggZGVzY3JpYmVzIHRoZSBjbG91ZCBhc3NlbWJseS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBc3NlbWJseU1hbmlmZXN0IHtcbiAgLyoqXG4gICAqIFByb3RvY29sIHZlcnNpb25cbiAgICovXG4gIHJlYWRvbmx5IHZlcnNpb246IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHNldCBvZiBhcnRpZmFjdHMgaW4gdGhpcyBhc3NlbWJseS5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBubyBhcnRpZmFjdHMuXG4gICAqL1xuICByZWFkb25seSBhcnRpZmFjdHM/OiB7IFtpZDogc3RyaW5nXTogQXJ0aWZhY3RNYW5pZmVzdCB9O1xuXG4gIC8qKlxuICAgKiBNaXNzaW5nIGNvbnRleHQgaW5mb3JtYXRpb24uIElmIHRoaXMgZmllbGQgaGFzIHZhbHVlcywgaXQgbWVhbnMgdGhhdCB0aGVcbiAgICogY2xvdWQgYXNzZW1ibHkgaXMgbm90IGNvbXBsZXRlIGFuZCBzaG91bGQgbm90IGJlIGRlcGxveWVkLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIG5vIG1pc3NpbmcgY29udGV4dC5cbiAgICovXG4gIHJlYWRvbmx5IG1pc3Npbmc/OiBNaXNzaW5nQ29udGV4dFtdO1xuXG4gIC8qKlxuICAgKiBSdW50aW1lIGluZm9ybWF0aW9uLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIG5vIGluZm8uXG4gICAqL1xuICByZWFkb25seSBydW50aW1lPzogUnVudGltZUluZm87XG59XG4iXX0= + +/***/ }), + +/***/ 70606: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + +var _a; +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.Manifest = exports.VERSION_MISMATCH = void 0; +const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti"); +const fs = __nccwpck_require__(79896); +const jsonschema = __nccwpck_require__(75282); +const semver = __nccwpck_require__(22955); +const assembly = __nccwpck_require__(77144); +/* eslint-disable @typescript-eslint/no-var-requires */ +/* eslint-disable @typescript-eslint/no-require-imports */ +// this prefix is used by the CLI to identify this specific error. +// in which case we want to instruct the user to upgrade his CLI. +// see exec.ts#createAssembly +exports.VERSION_MISMATCH = 'Cloud assembly schema version mismatch'; +const ASSETS_SCHEMA = __nccwpck_require__(34021); +const ASSEMBLY_SCHEMA = __nccwpck_require__(14454); +const INTEG_SCHEMA = __nccwpck_require__(1459); +/** + * Version is shared for both manifests + */ +const SCHEMA_VERSION = (__nccwpck_require__(49909)/* .version */ .rE); +/** + * Protocol utility class. + */ +class Manifest { + /** + * Validates and saves the cloud assembly manifest to file. + * + * @param manifest - manifest. + * @param filePath - output file path. + */ + static saveAssemblyManifest(manifest, filePath) { + Manifest.saveManifest(manifest, filePath, ASSEMBLY_SCHEMA, Manifest.patchStackTagsOnWrite); + } + /** + * Load and validates the cloud assembly manifest from file. + * + * @param filePath - path to the manifest file. + */ + static loadAssemblyManifest(filePath, options) { + return Manifest.loadManifest(filePath, ASSEMBLY_SCHEMA, Manifest.patchStackTagsOnRead, options); + } + /** + * Validates and saves the asset manifest to file. + * + * @param manifest - manifest. + * @param filePath - output file path. + */ + static saveAssetManifest(manifest, filePath) { + Manifest.saveManifest(manifest, filePath, ASSETS_SCHEMA, Manifest.patchStackTagsOnRead); + } + /** + * Load and validates the asset manifest from file. + * + * @param filePath - path to the manifest file. + */ + static loadAssetManifest(filePath) { + return this.loadManifest(filePath, ASSETS_SCHEMA); + } + /** + * Validates and saves the integ manifest to file. + * + * @param manifest - manifest. + * @param filePath - output file path. + */ + static saveIntegManifest(manifest, filePath) { + Manifest.saveManifest(manifest, filePath, INTEG_SCHEMA); + } + /** + * Load and validates the integ manifest from file. + * + * @param filePath - path to the manifest file. + */ + static loadIntegManifest(filePath) { + return this.loadManifest(filePath, INTEG_SCHEMA); + } + /** + * Fetch the current schema version number. + */ + static version() { + return SCHEMA_VERSION; + } + /** + * Deprecated + * @deprecated use `saveAssemblyManifest()` + */ + static save(manifest, filePath) { + return this.saveAssemblyManifest(manifest, filePath); + } + /** + * Deprecated + * @deprecated use `loadAssemblyManifest()` + */ + static load(filePath) { + return this.loadAssemblyManifest(filePath); + } + static validate(manifest, schema, options) { + function parseVersion(version) { + const ver = semver.valid(version); + if (!ver) { + throw new Error(`Invalid semver string: "${version}"`); + } + return ver; + } + const maxSupported = semver.major(parseVersion(Manifest.version())); + const actual = parseVersion(manifest.version); + // first validate the version should be accepted. all versions within the same minor version are fine + if (maxSupported < semver.major(actual) && !options?.skipVersionCheck) { + // we use a well known error prefix so that the CLI can identify this specific error + // and print some more context to the user. + throw new Error(`${exports.VERSION_MISMATCH}: Maximum schema version supported is ${maxSupported}.x.x, but found ${actual}`); + } + // now validate the format is good. + const validator = new jsonschema.Validator(); + const result = validator.validate(manifest, schema, { + // does exist but is not in the TypeScript definitions + nestedErrors: true, + allowUnknownAttributes: false, + preValidateProperty: Manifest.validateAssumeRoleAdditionalOptions, + }); + let errors = result.errors; + if (options?.skipEnumCheck) { + // Enum validations aren't useful when + errors = stripEnumErrors(errors); + } + if (errors.length > 0) { + throw new Error(`Invalid assembly manifest:\n${errors.map((e) => e.stack).join('\n')}`); + } + } + static saveManifest(manifest, filePath, schema, preprocess) { + let withVersion = { ...manifest, version: Manifest.version() }; + Manifest.validate(withVersion, schema); + if (preprocess) { + withVersion = preprocess(withVersion); + } + fs.writeFileSync(filePath, JSON.stringify(withVersion, undefined, 2)); + } + static loadManifest(filePath, schema, preprocess, options) { + const contents = fs.readFileSync(filePath, { encoding: 'utf-8' }); + let obj; + try { + obj = JSON.parse(contents); + } + catch (e) { + throw new Error(`${e.message}, while parsing ${JSON.stringify(contents)}`); + } + if (preprocess) { + obj = preprocess(obj); + } + Manifest.validate(obj, schema, options); + return obj; + } + /** + * This requires some explaining... + * + * We previously used `{ Key, Value }` for the object that represents a stack tag. (Notice the casing) + * @link https://github.com/aws/aws-cdk/blob/v1.27.0/packages/aws-cdk/lib/api/cxapp/stacks.ts#L427. + * + * When that object moved to this package, it had to be JSII compliant, which meant the property + * names must be `camelCased`, and not `PascalCased`. This meant it no longer matches the structure in the `manifest.json` file. + * In order to support current manifest files, we have to translate the `PascalCased` representation to the new `camelCased` one. + * + * Note that the serialization itself still writes `PascalCased` because it relates to how CloudFormation expects it. + * + * Ideally, we would start writing the `camelCased` and translate to how CloudFormation expects it when needed. But this requires nasty + * backwards-compatibility code and it just doesn't seem to be worth the effort. + */ + static patchStackTagsOnRead(manifest) { + return Manifest.replaceStackTags(manifest, (tags) => tags.map((diskTag) => ({ + key: diskTag.Key, + value: diskTag.Value, + }))); + } + /** + * Validates that `assumeRoleAdditionalOptions` doesn't contain nor `ExternalId` neither `RoleArn`, as they + * should have dedicated properties preceding this (e.g `assumeRoleArn` and `assumeRoleExternalId`). + */ + static validateAssumeRoleAdditionalOptions(instance, key, _schema, _options, _ctx) { + if (key !== 'assumeRoleAdditionalOptions') { + // note that this means that if we happen to have a property named like this, but that + // does want to allow 'RoleArn' or 'ExternalId', this code will have to change to consider the full schema path. + // I decided to make this less granular for now on purpose because it fits our needs and avoids having messy + // validation logic due to various schema paths. + return; + } + const assumeRoleOptions = instance[key]; + if (assumeRoleOptions?.RoleArn) { + throw new Error(`RoleArn is not allowed inside '${key}'`); + } + if (assumeRoleOptions?.ExternalId) { + throw new Error(`ExternalId is not allowed inside '${key}'`); + } + } + /** + * See explanation on `patchStackTagsOnRead` + * + * Translate stack tags metadata if it has the "right" casing. + */ + static patchStackTagsOnWrite(manifest) { + return Manifest.replaceStackTags(manifest, (tags) => tags.map((memTag) => + // Might already be uppercased (because stack synthesis generates it in final form yet) + ('Key' in memTag ? memTag : { Key: memTag.key, Value: memTag.value }))); + } + /** + * Recursively replace stack tags in the stack metadata + */ + static replaceStackTags(manifest, fn) { + // Need to add in the `noUndefined`s because otherwise jest snapshot tests are going to freak out + // about the keys with values that are `undefined` (even though they would never be JSON.stringified) + return noUndefined({ + ...manifest, + artifacts: mapValues(manifest.artifacts, (artifact) => { + if (artifact.type !== assembly.ArtifactType.AWS_CLOUDFORMATION_STACK) { + return artifact; + } + return noUndefined({ + ...artifact, + metadata: mapValues(artifact.metadata, (metadataEntries) => metadataEntries.map((metadataEntry) => { + if (metadataEntry.type !== assembly.ArtifactMetadataEntryType.STACK_TAGS || + !metadataEntry.data) { + return metadataEntry; + } + return { + ...metadataEntry, + data: fn(metadataEntry.data), + }; + })), + }); + }), + }); + } + constructor() { } +} +exports.Manifest = Manifest; +_a = JSII_RTTI_SYMBOL_1; +Manifest[_a] = { fqn: "@aws-cdk/cloud-assembly-schema.Manifest", version: "38.0.1" }; +function mapValues(xs, fn) { + if (!xs) { + return undefined; + } + const ret = {}; + for (const [k, v] of Object.entries(xs)) { + ret[k] = fn(v); + } + return ret; +} +function noUndefined(xs) { + const ret = {}; + for (const [k, v] of Object.entries(xs)) { + if (v !== undefined) { + ret[k] = v; + } + } + return ret; +} +function stripEnumErrors(errors) { + return errors.filter((e) => typeof e.schema === 'string' || !('enum' in e.schema)); +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFuaWZlc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJtYW5pZmVzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLHlCQUF5QjtBQUN6Qix5Q0FBeUM7QUFDekMsaUNBQWlDO0FBRWpDLDZDQUE2QztBQUc3Qyx1REFBdUQ7QUFDdkQsMERBQTBEO0FBRTFELGtFQUFrRTtBQUNsRSxpRUFBaUU7QUFDakUsNkJBQTZCO0FBQ2hCLFFBQUEsZ0JBQWdCLEdBQVcsd0NBQXdDLENBQUM7QUFFakYsOERBQStEO0FBRS9ELHdFQUF5RTtBQUV6RSw0REFBNkQ7QUFFN0Q7O0dBRUc7QUFDSCxNQUFNLGNBQWMsR0FBRyxPQUFPLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxPQUFPLENBQUM7QUFzQzFEOztHQUVHO0FBQ0gsTUFBYSxRQUFRO0lBQ25COzs7OztPQUtHO0lBQ0ksTUFBTSxDQUFDLG9CQUFvQixDQUFDLFFBQW1DLEVBQUUsUUFBZ0I7UUFDdEYsUUFBUSxDQUFDLFlBQVksQ0FBQyxRQUFRLEVBQUUsUUFBUSxFQUFFLGVBQWUsRUFBRSxRQUFRLENBQUMscUJBQXFCLENBQUMsQ0FBQztJQUM3RixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNJLE1BQU0sQ0FBQyxvQkFBb0IsQ0FDaEMsUUFBZ0IsRUFDaEIsT0FBNkI7UUFFN0IsT0FBTyxRQUFRLENBQUMsWUFBWSxDQUFDLFFBQVEsRUFBRSxlQUFlLEVBQUUsUUFBUSxDQUFDLG9CQUFvQixFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ2xHLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNJLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxRQUE4QixFQUFFLFFBQWdCO1FBQzlFLFFBQVEsQ0FBQyxZQUFZLENBQUMsUUFBUSxFQUFFLFFBQVEsRUFBRSxhQUFhLEVBQUUsUUFBUSxDQUFDLG9CQUFvQixDQUFDLENBQUM7SUFDMUYsQ0FBQztJQUVEOzs7O09BSUc7SUFDSSxNQUFNLENBQUMsaUJBQWlCLENBQUMsUUFBZ0I7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Q0FBQztJQUNMLENBQUM7SUFFRCxnQkFBdUIsQ0FBQzs7QUF2UTFCLDRCQXdRQzs7O0FBSUQsU0FBUyxTQUFTLENBQ2hCLEVBQWlDLEVBQ2pDLEVBQWU7SUFFZixJQUFJLENBQUMsRUFBRSxFQUFFLENBQUM7UUFDUixPQUFPLFNBQVMsQ0FBQztJQUNuQixDQUFDO0lBQ0QsTUFBTSxHQUFHLEdBQWtDLEVBQUUsQ0FBQztJQUM5QyxLQUFLLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDO1FBQ3hDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDakIsQ0FBQztJQUNELE9BQU8sR0FBRyxDQUFDO0FBQ2IsQ0FBQztBQUVELFNBQVMsV0FBVyxDQUFtQixFQUFLO0lBQzFDLE1BQU0sR0FBRyxHQUFRLEVBQUUsQ0FBQztJQUNwQixLQUFLLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDO1FBQ3hDLElBQUksQ0FBQyxLQUFLLFNBQVMsRUFBRSxDQUFDO1lBQ3BCLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDYixDQUFDO0lBQ0gsQ0FBQztJQUNELE9BQU8sR0FBRyxDQUFDO0FBQ2IsQ0FBQztBQUVELFNBQVMsZUFBZSxDQUFDLE1BQW9DO0lBQzNELE9BQU8sTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxLQUFLLFFBQVEsSUFBSSxDQUFDLENBQUMsTUFBTSxJQUFJLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0FBQ3JGLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBmcyBmcm9tICdmcyc7XG5pbXBvcnQgKiBhcyBqc29uc2NoZW1hIGZyb20gJ2pzb25zY2hlbWEnO1xuaW1wb3J0ICogYXMgc2VtdmVyIGZyb20gJ3NlbXZlcic7XG5pbXBvcnQgKiBhcyBhc3NldHMgZnJvbSAnLi9hc3NldHMnO1xuaW1wb3J0ICogYXMgYXNzZW1ibHkgZnJvbSAnLi9jbG91ZC1hc3NlbWJseSc7XG5pbXBvcnQgKiBhcyBpbnRlZyBmcm9tICcuL2ludGVnLXRlc3RzJztcblxuLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXZhci1yZXF1aXJlcyAqL1xuLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXJlcXVpcmUtaW1wb3J0cyAqL1xuXG4vLyB0aGlzIHByZWZpeCBpcyB1c2VkIGJ5IHRoZSBDTEkgdG8gaWRlbnRpZnkgdGhpcyBzcGVjaWZpYyBlcnJvci5cbi8vIGluIHdoaWNoIGNhc2Ugd2Ugd2FudCB0byBpbnN0cnVjdCB0aGUgdXNlciB0byB1cGdyYWRlIGhpcyBDTEkuXG4vLyBzZWUgZXhlYy50cyNjcmVhdGVBc3NlbWJseVxuZXhwb3J0IGNvbnN0IFZFUlNJT05fTUlTTUFUQ0g6IHN0cmluZyA9ICdDbG91ZCBhc3NlbWJseSBzY2hlbWEgdmVyc2lvbiBtaXNtYXRjaCc7XG5cbmltcG9ydCBBU1NFVFNfU0NIRU1BID0gcmVxdWlyZSgnLi4vc2NoZW1hL2Fzc2V0cy5zY2hlbWEuanNvbicpO1xuXG5pbXBvcnQgQVNTRU1CTFlfU0NIRU1BID0gcmVxdWlyZSgnLi4vc2NoZW1hL2Nsb3VkLWFzc2VtYmx5LnNjaGVtYS5qc29uJyk7XG5cbmltcG9ydCBJTlRFR19TQ0hFTUEgPSByZXF1aXJlKCcuLi9zY2hlbWEvaW50ZWcuc2NoZW1hLmpzb24nKTtcblxuLyoqXG4gKiBWZXJzaW9uIGlzIHNoYXJlZCBmb3IgYm90aCBtYW5pZmVzdHNcbiAqL1xuY29uc3QgU0NIRU1BX1ZFUlNJT04gPSByZXF1aXJlKCcuLi9wYWNrYWdlLmpzb24nKS52ZXJzaW9uO1xuXG4vKipcbiAqIE9wdGlvbnMgZm9yIHRoZSBsb2FkTWFuaWZlc3Qgb3BlcmF0aW9uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTG9hZE1hbmlmZXN0T3B0aW9ucyB7XG4gIC8qKlxuICAgKiBTa2lwIHRoZSB2ZXJzaW9uIGNoZWNrXG4gICAqXG4gICAqIFRoaXMgbWVhbnMgeW91IG1heSByZWFkIGEgbmV3ZXIgY2xvdWQgYXNzZW1ibHkgdGhhbiB0aGUgQ1ggQVBJIGlzIGRlc2lnbmVkXG4gICAqIHRvIHN1cHBvcnQsIGFuZCB5b3VyIGFwcGxpY2F0aW9uIG1heSBub3QgYmUgYXdhcmUgb2YgYWxsIGZlYXR1cmVzIHRoYXQgaW4gdXNlXG4gICAqIGluIHRoZSBDbG91ZCBBc3NlbWJseS5cbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IHNraXBWZXJzaW9uQ2hlY2s/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBTa2lwIGVudW0gY2hlY2tzXG4gICAqXG4gICAqIFRoaXMgbWVhbnMgeW91IG1heSByZWFkIGVudW0gdmFsdWVzIHlvdSBkb24ndCBrbm93IGFib3V0IHlldC4gTWFrZSBzdXJlIHRvIGFsd2F5c1xuICAgKiBjaGVjayB0aGUgdmFsdWVzIG9mIGVudW1zIHlvdSBlbmNvdW50ZXIgaW4gdGhlIG1hbmlmZXN0LlxuICAgKlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgc2tpcEVudW1DaGVjaz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFRvcG9sb2dpY2FsbHkgc29ydCBhbGwgYXJ0aWZhY3RzXG4gICAqXG4gICAqIFRoaXMgcGFyYW1ldGVyIGlzIG9ubHkgcmVzcGVjdGVkIGJ5IHRoZSBjb25zdHJ1Y3RvciBvZiBgQ2xvdWRBc3NlbWJseWAuIFRoZVxuICAgKiBwcm9wZXJ0eSBsaXZlcyBoZXJlIGZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eSByZWFzb25zLlxuICAgKlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICByZWFkb25seSB0b3BvU29ydD86IGJvb2xlYW47XG59XG5cbi8qKlxuICogUHJvdG9jb2wgdXRpbGl0eSBjbGFzcy5cbiAqL1xuZXhwb3J0IGNsYXNzIE1hbmlmZXN0IHtcbiAgLyoqXG4gICAqIFZhbGlkYXRlcyBhbmQgc2F2ZXMgdGhlIGNsb3VkIGFzc2VtYmx5IG1hbmlmZXN0IHRvIGZpbGUuXG4gICAqXG4gICAqIEBwYXJhbSBtYW5pZmVzdCAtIG1hbmlmZXN0LlxuICAgKiBAcGFyYW0gZmlsZVBhdGggLSBvdXRwdXQgZmlsZSBwYXRoLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBzYXZlQXNzZW1ibHlNYW5pZmVzdChtYW5pZmVzdDogYXNzZW1ibHkuQXNzZW1ibHlNYW5pZmVzdCwgZmlsZVBhdGg6IHN0cmluZykge1xuICAgIE1hbmlmZXN0LnNhdmVNYW5pZmVzdChtYW5pZmVzdCwgZmlsZVBhdGgsIEFTU0VNQkxZX1NDSEVNQSwgTWFuaWZlc3QucGF0Y2hTdGFja1RhZ3NPbldyaXRlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBMb2FkIGFuZCB2YWxpZGF0ZXMgdGhlIGNsb3VkIGFzc2VtYmx5IG1hbmlmZXN0IGZyb20gZmlsZS5cbiAgICpcbiAgICogQHBhcmFtIGZpbGVQYXRoIC0gcGF0aCB0byB0aGUgbWFuaWZlc3QgZmlsZS5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgbG9hZEFzc2VtYmx5TWFuaWZlc3QoXG4gICAgZmlsZVBhdGg6IHN0cmluZyxcbiAgICBvcHRpb25zPzogTG9hZE1hbmlmZXN0T3B0aW9uc1xuICApOiBhc3NlbWJseS5Bc3NlbWJseU1hbmlmZXN0IHtcbiAgICByZXR1cm4gTWFuaWZlc3QubG9hZE1hbmlmZXN0KGZpbGVQYXRoLCBBU1NFTUJMWV9TQ0hFTUEsIE1hbmlmZXN0LnBhdGNoU3RhY2tUYWdzT25SZWFkLCBvcHRpb25zKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBWYWxpZGF0ZXMgYW5kIHNhdmVzIHRoZSBhc3NldCBtYW5pZmVzdCB0byBmaWxlLlxuICAgKlxuICAgKiBAcGFyYW0gbWFuaWZlc3QgLSBtYW5pZmVzdC5cbiAgICogQHBhcmFtIGZpbGVQYXRoIC0gb3V0cHV0IGZpbGUgcGF0aC5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgc2F2ZUFzc2V0TWFuaWZlc3QobWFuaWZlc3Q6IGFzc2V0cy5Bc3NldE1hbmlmZXN0LCBmaWxlUGF0aDogc3RyaW5nKSB7XG4gICAgTWFuaWZlc3Quc2F2ZU1hbmlmZXN0KG1hbmlmZXN0LCBmaWxlUGF0aCwgQVNTRVRTX1NDSEVNQSwgTWFuaWZlc3QucGF0Y2hTdGFja1RhZ3NPblJlYWQpO1xuICB9XG5cbiAgLyoqXG4gICAqIExvYWQgYW5kIHZhbGlkYXRlcyB0aGUgYXNzZXQgbWFuaWZlc3QgZnJvbSBmaWxlLlxuICAgKlxuICAgKiBAcGFyYW0gZmlsZVBhdGggLSBwYXRoIHRvIHRoZSBtYW5pZmVzdCBmaWxlLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBsb2FkQXNzZXRNYW5pZmVzdChmaWxlUGF0aDogc3RyaW5nKTogYXNzZXRzLkFzc2V0TWFuaWZlc3Qge1xuICAgIHJldHVybiB0aGlzLmxvYWRNYW5pZmVzdChmaWxlUGF0aCwgQVNTRVRTX1NDSEVNQSk7XG4gIH1cblxuICAvKipcbiAgICogVmFsaWRhdGVzIGFuZCBzYXZlcyB0aGUgaW50ZWcgbWFuaWZlc3QgdG8gZmlsZS5cbiAgICpcbiAgICogQHBhcmFtIG1hbmlmZXN0IC0gbWFuaWZlc3QuXG4gICAqIEBwYXJhbSBmaWxlUGF0aCAtIG91dHB1dCBmaWxlIHBhdGguXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHNhdmVJbnRlZ01hbmlmZXN0KG1hbmlmZXN0OiBpbnRlZy5JbnRlZ01hbmlmZXN0LCBmaWxlUGF0aDogc3RyaW5nKSB7XG4gICAgTWFuaWZlc3Quc2F2ZU1hbmlmZXN0KG1hbmlmZXN0LCBmaWxlUGF0aCwgSU5URUdfU0NIRU1BKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBMb2FkIGFuZCB2YWxpZGF0ZXMgdGhlIGludGVnIG1hbmlmZXN0IGZyb20gZmlsZS5cbiAgICpcbiAgICogQHBhcmFtIGZpbGVQYXRoIC0gcGF0aCB0byB0aGUgbWFuaWZlc3QgZmlsZS5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgbG9hZEludGVnTWFuaWZlc3QoZmlsZVBhdGg6IHN0cmluZyk6IGludGVnLkludGVnTWFuaWZlc3Qge1xuICAgIHJldHVybiB0aGlzLmxvYWRNYW5pZmVzdChmaWxlUGF0aCwgSU5URUdfU0NIRU1BKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBGZXRjaCB0aGUgY3VycmVudCBzY2hlbWEgdmVyc2lvbiBudW1iZXIuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHZlcnNpb24oKTogc3RyaW5nIHtcbiAgICByZXR1cm4gU0NIRU1BX1ZFUlNJT047XG4gIH1cblxuICAvKipcbiAgICogRGVwcmVjYXRlZFxuICAgKiBAZGVwcmVjYXRlZCB1c2UgYHNhdmVBc3NlbWJseU1hbmlmZXN0KClgXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHNhdmUobWFuaWZlc3Q6IGFzc2VtYmx5LkFzc2VtYmx5TWFuaWZlc3QsIGZpbGVQYXRoOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy5zYXZlQXNzZW1ibHlNYW5pZmVzdChtYW5pZmVzdCwgZmlsZVBhdGgpO1xuICB9XG5cbiAgLyoqXG4gICAqIERlcHJlY2F0ZWRcbiAgICogQGRlcHJlY2F0ZWQgdXNlIGBsb2FkQXNzZW1ibHlNYW5pZmVzdCgpYFxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBsb2FkKGZpbGVQYXRoOiBzdHJpbmcpOiBhc3NlbWJseS5Bc3NlbWJseU1hbmlmZXN0IHtcbiAgICByZXR1cm4gdGhpcy5sb2FkQXNzZW1ibHlNYW5pZmVzdChmaWxlUGF0aCk7XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyB2YWxpZGF0ZShtYW5pZmVzdDogYW55LCBzY2hlbWE6IGpzb25zY2hlbWEuU2NoZW1hLCBvcHRpb25zPzogTG9hZE1hbmlmZXN0T3B0aW9ucykge1xuICAgIGZ1bmN0aW9uIHBhcnNlVmVyc2lvbih2ZXJzaW9uOiBzdHJpbmcpIHtcbiAgICAgIGNvbnN0IHZlciA9IHNlbXZlci52YWxpZCh2ZXJzaW9uKTtcbiAgICAgIGlmICghdmVyKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCBzZW12ZXIgc3RyaW5nOiBcIiR7dmVyc2lvbn1cImApO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHZlcjtcbiAgICB9XG5cbiAgICBjb25zdCBtYXhTdXBwb3J0ZWQgPSBzZW12ZXIubWFqb3IocGFyc2VWZXJzaW9uKE1hbmlmZXN0LnZlcnNpb24oKSkpO1xuICAgIGNvbnN0IGFjdHVhbCA9IHBhcnNlVmVyc2lvbihtYW5pZmVzdC52ZXJzaW9uKTtcblxuICAgIC8vIGZpcnN0IHZhbGlkYXRlIHRoZSB2ZXJzaW9uIHNob3VsZCBiZSBhY2NlcHRlZC4gYWxsIHZlcnNpb25zIHdpdGhpbiB0aGUgc2FtZSBtaW5vciB2ZXJzaW9uIGFyZSBmaW5lXG4gICAgaWYgKG1heFN1cHBvcnRlZCA8IHNlbXZlci5tYWpvcihhY3R1YWwpICYmICFvcHRpb25zPy5za2lwVmVyc2lvbkNoZWNrKSB7XG4gICAgICAvLyB3ZSB1c2UgYSB3ZWxsIGtub3duIGVycm9yIHByZWZpeCBzbyB0aGF0IHRoZSBDTEkgY2FuIGlkZW50aWZ5IHRoaXMgc3BlY2lmaWMgZXJyb3JcbiAgICAgIC8vIGFuZCBwcmludCBzb21lIG1vcmUgY29udGV4dCB0byB0aGUgdXNlci5cbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgYCR7VkVSU0lPTl9NSVNNQVRDSH06IE1heGltdW0gc2NoZW1hIHZlcnNpb24gc3VwcG9ydGVkIGlzICR7bWF4U3VwcG9ydGVkfS54LngsIGJ1dCBmb3VuZCAke2FjdHVhbH1gXG4gICAgICApO1xuICAgIH1cblxuICAgIC8vIG5vdyB2YWxpZGF0ZSB0aGUgZm9ybWF0IGlzIGdvb2QuXG4gICAgY29uc3QgdmFsaWRhdG9yID0gbmV3IGpzb25zY2hlbWEuVmFsaWRhdG9yKCk7XG4gICAgY29uc3QgcmVzdWx0ID0gdmFsaWRhdG9yLnZhbGlkYXRlKG1hbmlmZXN0LCBzY2hlbWEsIHtcbiAgICAgIC8vIGRvZXMgZXhpc3QgYnV0IGlzIG5vdCBpbiB0aGUgVHlwZVNjcmlwdCBkZWZpbml0aW9uc1xuICAgICAgbmVzdGVkRXJyb3JzOiB0cnVlLFxuXG4gICAgICBhbGxvd1Vua25vd25BdHRyaWJ1dGVzOiBmYWxzZSxcbiAgICAgIHByZVZhbGlkYXRlUHJvcGVydHk6IE1hbmlmZXN0LnZhbGlkYXRlQXNzdW1lUm9sZUFkZGl0aW9uYWxPcHRpb25zLFxuICAgIH0pO1xuXG4gICAgbGV0IGVycm9ycyA9IHJlc3VsdC5lcnJvcnM7XG4gICAgaWYgKG9wdGlvbnM/LnNraXBFbnVtQ2hlY2spIHtcbiAgICAgIC8vIEVudW0gdmFsaWRhdGlvbnMgYXJlbid0IHVzZWZ1bCB3aGVuXG4gICAgICBlcnJvcnMgPSBzdHJpcEVudW1FcnJvcnMoZXJyb3JzKTtcbiAgICB9XG5cbiAgICBpZiAoZXJyb3JzLmxlbmd0aCA+IDApIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCBhc3NlbWJseSBtYW5pZmVzdDpcXG4ke2Vycm9ycy5tYXAoKGUpID0+IGUuc3RhY2spLmpvaW4oJ1xcbicpfWApO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIHNhdmVNYW5pZmVzdChcbiAgICBtYW5pZmVzdDogYW55LFxuICAgIGZpbGVQYXRoOiBzdHJpbmcsXG4gICAgc2NoZW1hOiBqc29uc2NoZW1hLlNjaGVtYSxcbiAgICBwcmVwcm9jZXNzPzogKG9iajogYW55KSA9PiBhbnlcbiAgKSB7XG4gICAgbGV0IHdpdGhWZXJzaW9uID0geyAuLi5tYW5pZmVzdCwgdmVyc2lvbjogTWFuaWZlc3QudmVyc2lvbigpIH07XG4gICAgTWFuaWZlc3QudmFsaWRhdGUod2l0aFZlcnNpb24sIHNjaGVtYSk7XG4gICAgaWYgKHByZXByb2Nlc3MpIHtcbiAgICAgIHdpdGhWZXJzaW9uID0gcHJlcHJvY2Vzcyh3aXRoVmVyc2lvbik7XG4gICAgfVxuICAgIGZzLndyaXRlRmlsZVN5bmMoZmlsZVBhdGgsIEpTT04uc3RyaW5naWZ5KHdpdGhWZXJzaW9uLCB1bmRlZmluZWQsIDIpKTtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIGxvYWRNYW5pZmVzdChcbiAgICBmaWxlUGF0aDogc3RyaW5nLFxuICAgIHNjaGVtYToganNvbnNjaGVtYS5TY2hlbWEsXG4gICAgcHJlcHJvY2Vzcz86IChvYmo6IGFueSkgPT4gYW55LFxuICAgIG9wdGlvbnM/OiBMb2FkTWFuaWZlc3RPcHRpb25zXG4gICkge1xuICAgIGNvbnN0IGNvbnRlbnRzID0gZnMucmVhZEZpbGVTeW5jKGZpbGVQYXRoLCB7IGVuY29kaW5nOiAndXRmLTgnIH0pO1xuICAgIGxldCBvYmo7XG4gICAgdHJ5IHtcbiAgICAgIG9iaiA9IEpTT04ucGFyc2UoY29udGVudHMpO1xuICAgIH0gY2F0Y2ggKGU6IGFueSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGAke2UubWVzc2FnZX0sIHdoaWxlIHBhcnNpbmcgJHtKU09OLnN0cmluZ2lmeShjb250ZW50cyl9YCk7XG4gICAgfVxuICAgIGlmIChwcmVwcm9jZXNzKSB7XG4gICAgICBvYmogPSBwcmVwcm9jZXNzKG9iaik7XG4gICAgfVxuICAgIE1hbmlmZXN0LnZhbGlkYXRlKG9iaiwgc2NoZW1hLCBvcHRpb25zKTtcbiAgICByZXR1cm4gb2JqO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoaXMgcmVxdWlyZXMgc29tZSBleHBsYWluaW5nLi4uXG4gICAqXG4gICAqIFdlIHByZXZpb3VzbHkgdXNlZCBgeyBLZXksIFZhbHVlIH1gIGZvciB0aGUgb2JqZWN0IHRoYXQgcmVwcmVzZW50cyBhIHN0YWNrIHRhZy4gKE5vdGljZSB0aGUgY2FzaW5nKVxuICAgKiBAbGluayBodHRwczovL2dpdGh1Yi5jb20vYXdzL2F3cy1jZGsvYmxvYi92MS4yNy4wL3BhY2thZ2VzL2F3cy1jZGsvbGliL2FwaS9jeGFwcC9zdGFja3MudHMjTDQyNy5cbiAgICpcbiAgICogV2hlbiB0aGF0IG9iamVjdCBtb3ZlZCB0byB0aGlzIHBhY2thZ2UsIGl0IGhhZCB0byBiZSBKU0lJIGNvbXBsaWFudCwgd2hpY2ggbWVhbnQgdGhlIHByb3BlcnR5XG4gICAqIG5hbWVzIG11c3QgYmUgYGNhbWVsQ2FzZWRgLCBhbmQgbm90IGBQYXNjYWxDYXNlZGAuIFRoaXMgbWVhbnQgaXQgbm8gbG9uZ2VyIG1hdGNoZXMgdGhlIHN0cnVjdHVyZSBpbiB0aGUgYG1hbmlmZXN0Lmpzb25gIGZpbGUuXG4gICAqIEluIG9yZGVyIHRvIHN1cHBvcnQgY3VycmVudCBtYW5pZmVzdCBmaWxlcywgd2UgaGF2ZSB0byB0cmFuc2xhdGUgdGhlIGBQYXNjYWxDYXNlZGAgcmVwcmVzZW50YXRpb24gdG8gdGhlIG5ldyBgY2FtZWxDYXNlZGAgb25lLlxuICAgKlxuICAgKiBOb3RlIHRoYXQgdGhlIHNlcmlhbGl6YXRpb24gaXRzZWxmIHN0aWxsIHdyaXRlcyBgUGFzY2FsQ2FzZWRgIGJlY2F1c2UgaXQgcmVsYXRlcyB0byBob3cgQ2xvdWRGb3JtYXRpb24gZXhwZWN0cyBpdC5cbiAgICpcbiAgICogSWRlYWxseSwgd2Ugd291bGQgc3RhcnQgd3JpdGluZyB0aGUgYGNhbWVsQ2FzZWRgIGFuZCB0cmFuc2xhdGUgdG8gaG93IENsb3VkRm9ybWF0aW9uIGV4cGVjdHMgaXQgd2hlbiBuZWVkZWQuIEJ1dCB0aGlzIHJlcXVpcmVzIG5hc3R5XG4gICAqIGJhY2t3YXJkcy1jb21wYXRpYmlsaXR5IGNvZGUgYW5kIGl0IGp1c3QgZG9lc24ndCBzZWVtIHRvIGJlIHdvcnRoIHRoZSBlZmZvcnQuXG4gICAqL1xuICBwcml2YXRlIHN0YXRpYyBwYXRjaFN0YWNrVGFnc09uUmVhZChtYW5pZmVzdDogYXNzZW1ibHkuQXNzZW1ibHlNYW5pZmVzdCkge1xuICAgIHJldHVybiBNYW5pZmVzdC5yZXBsYWNlU3RhY2tUYWdzKG1hbmlmZXN0LCAodGFncykgPT5cbiAgICAgIHRhZ3MubWFwKChkaXNrVGFnOiBhbnkpID0+ICh7XG4gICAgICAgIGtleTogZGlza1RhZy5LZXksXG4gICAgICAgIHZhbHVlOiBkaXNrVGFnLlZhbHVlLFxuICAgICAgfSkpXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBWYWxpZGF0ZXMgdGhhdCBgYXNzdW1lUm9sZUFkZGl0aW9uYWxPcHRpb25zYCBkb2Vzbid0IGNvbnRhaW4gbm9yIGBFeHRlcm5hbElkYCBuZWl0aGVyIGBSb2xlQXJuYCwgYXMgdGhleVxuICAgKiBzaG91bGQgaGF2ZSBkZWRpY2F0ZWQgcHJvcGVydGllcyBwcmVjZWRpbmcgdGhpcyAoZS5nIGBhc3N1bWVSb2xlQXJuYCBhbmQgYGFzc3VtZVJvbGVFeHRlcm5hbElkYCkuXG4gICAqL1xuICBwcml2YXRlIHN0YXRpYyB2YWxpZGF0ZUFzc3VtZVJvbGVBZGRpdGlvbmFsT3B0aW9ucyhcbiAgICBpbnN0YW5jZTogYW55LFxuICAgIGtleTogc3RyaW5nLFxuICAgIF9zY2hlbWE6IGpzb25zY2hlbWEuU2NoZW1hLFxuICAgIF9vcHRpb25zOiBqc29uc2NoZW1hLk9wdGlvbnMsXG4gICAgX2N0eDoganNvbnNjaGVtYS5TY2hlbWFDb250ZXh0XG4gICkge1xuICAgIGlmIChrZXkgIT09ICdhc3N1bWVSb2xlQWRkaXRpb25hbE9wdGlvbnMnKSB7XG4gICAgICAvLyBub3RlIHRoYXQgdGhpcyBtZWFucyB0aGF0IGlmIHdlIGhhcHBlbiB0byBoYXZlIGEgcHJvcGVydHkgbmFtZWQgbGlrZSB0aGlzLCBidXQgdGhhdFxuICAgICAgLy8gZG9lcyB3YW50IHRvIGFsbG93ICdSb2xlQXJuJyBvciAnRXh0ZXJuYWxJZCcsIHRoaXMgY29kZSB3aWxsIGhhdmUgdG8gY2hhbmdlIHRvIGNvbnNpZGVyIHRoZSBmdWxsIHNjaGVtYSBwYXRoLlxuICAgICAgLy8gSSBkZWNpZGVkIHRvIG1ha2UgdGhpcyBsZXNzIGdyYW51bGFyIGZvciBub3cgb24gcHVycG9zZSBiZWNhdXNlIGl0IGZpdHMgb3VyIG5lZWRzIGFuZCBhdm9pZHMgaGF2aW5nIG1lc3N5XG4gICAgICAvLyB2YWxpZGF0aW9uIGxvZ2ljIGR1ZSB0byB2YXJpb3VzIHNjaGVtYSBwYXRocy5cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBhc3N1bWVSb2xlT3B0aW9ucyA9IGluc3RhbmNlW2tleV07XG4gICAgaWYgKGFzc3VtZVJvbGVPcHRpb25zPy5Sb2xlQXJuKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFJvbGVBcm4gaXMgbm90IGFsbG93ZWQgaW5zaWRlICcke2tleX0nYCk7XG4gICAgfVxuICAgIGlmIChhc3N1bWVSb2xlT3B0aW9ucz8uRXh0ZXJuYWxJZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBFeHRlcm5hbElkIGlzIG5vdCBhbGxvd2VkIGluc2lkZSAnJHtrZXl9J2ApO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBTZWUgZXhwbGFuYXRpb24gb24gYHBhdGNoU3RhY2tUYWdzT25SZWFkYFxuICAgKlxuICAgKiBUcmFuc2xhdGUgc3RhY2sgdGFncyBtZXRhZGF0YSBpZiBpdCBoYXMgdGhlIFwicmlnaHRcIiBjYXNpbmcuXG4gICAqL1xuICBwcml2YXRlIHN0YXRpYyBwYXRjaFN0YWNrVGFnc09uV3JpdGUobWFuaWZlc3Q6IGFzc2VtYmx5LkFzc2VtYmx5TWFuaWZlc3QpIHtcbiAgICByZXR1cm4gTWFuaWZlc3QucmVwbGFjZVN0YWNrVGFncyhtYW5pZmVzdCwgKHRhZ3MpID0+XG4gICAgICB0YWdzLm1hcChcbiAgICAgICAgKG1lbVRhZykgPT5cbiAgICAgICAgICAvLyBNaWdodCBhbHJlYWR5IGJlIHVwcGVyY2FzZWQgKGJlY2F1c2Ugc3RhY2sgc3ludGhlc2lzIGdlbmVyYXRlcyBpdCBpbiBmaW5hbCBmb3JtIHlldClcbiAgICAgICAgICAoJ0tleScgaW4gbWVtVGFnID8gbWVtVGFnIDogeyBLZXk6IG1lbVRhZy5rZXksIFZhbHVlOiBtZW1UYWcudmFsdWUgfSkgYXMgYW55XG4gICAgICApXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZWN1cnNpdmVseSByZXBsYWNlIHN0YWNrIHRhZ3MgaW4gdGhlIHN0YWNrIG1ldGFkYXRhXG4gICAqL1xuICBwcml2YXRlIHN0YXRpYyByZXBsYWNlU3RhY2tUYWdzKFxuICAgIG1hbmlmZXN0OiBhc3NlbWJseS5Bc3NlbWJseU1hbmlmZXN0LFxuICAgIGZuOiBFbmRvZnVuY3Rvcjxhc3NlbWJseS5TdGFja1RhZ3NNZXRhZGF0YUVudHJ5PlxuICApOiBhc3NlbWJseS5Bc3NlbWJseU1hbmlmZXN0IHtcbiAgICAvLyBOZWVkIHRvIGFkZCBpbiB0aGUgYG5vVW5kZWZpbmVkYHMgYmVjYXVzZSBvdGhlcndpc2UgamVzdCBzbmFwc2hvdCB0ZXN0cyBhcmUgZ29pbmcgdG8gZnJlYWsgb3V0XG4gICAgLy8gYWJvdXQgdGhlIGtleXMgd2l0aCB2YWx1ZXMgdGhhdCBhcmUgYHVuZGVmaW5lZGAgKGV2ZW4gdGhvdWdoIHRoZXkgd291bGQgbmV2ZXIgYmUgSlNPTi5zdHJpbmdpZmllZClcbiAgICByZXR1cm4gbm9VbmRlZmluZWQoe1xuICAgICAgLi4ubWFuaWZlc3QsXG4gICAgICBhcnRpZmFjdHM6IG1hcFZhbHVlcyhtYW5pZmVzdC5hcnRpZmFjdHMsIChhcnRpZmFjdCkgPT4ge1xuICAgICAgICBpZiAoYXJ0aWZhY3QudHlwZSAhPT0gYXNzZW1ibHkuQXJ0aWZhY3RUeXBlLkFXU19DTE9VREZPUk1BVElPTl9TVEFDSykge1xuICAgICAgICAgIHJldHVybiBhcnRpZmFjdDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbm9VbmRlZmluZWQoe1xuICAgICAgICAgIC4uLmFydGlmYWN0LFxuICAgICAgICAgIG1ldGFkYXRhOiBtYXBWYWx1ZXMoYXJ0aWZhY3QubWV0YWRhdGEsIChtZXRhZGF0YUVudHJpZXMpID0+XG4gICAgICAgICAgICBtZXRhZGF0YUVudHJpZXMubWFwKChtZXRhZGF0YUVudHJ5KSA9PiB7XG4gICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICBtZXRhZGF0YUVudHJ5LnR5cGUgIT09IGFzc2VtYmx5LkFydGlmYWN0TWV0YWRhdGFFbnRyeVR5cGUuU1RBQ0tfVEFHUyB8fFxuICAgICAgICAgICAgICAgICFtZXRhZGF0YUVudHJ5LmRhdGFcbiAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG1ldGFkYXRhRW50cnk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAuLi5tZXRhZGF0YUVudHJ5LFxuICAgICAgICAgICAgICAgIGRhdGE6IGZuKG1ldGFkYXRhRW50cnkuZGF0YSBhcyBhc3NlbWJseS5TdGFja1RhZ3NNZXRhZGF0YUVudHJ5KSxcbiAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgKSxcbiAgICAgICAgfSBhcyBhc3NlbWJseS5BcnRpZmFjdE1hbmlmZXN0KTtcbiAgICAgIH0pLFxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBjb25zdHJ1Y3RvcigpIHt9XG59XG5cbnR5cGUgRW5kb2Z1bmN0b3I8QT4gPSAoeDogQSkgPT4gQTtcblxuZnVuY3Rpb24gbWFwVmFsdWVzPEEsIEI+KFxuICB4czogUmVjb3JkPHN0cmluZywgQT4gfCB1bmRlZmluZWQsXG4gIGZuOiAoeDogQSkgPT4gQlxuKTogUmVjb3JkPHN0cmluZywgQj4gfCB1bmRlZmluZWQge1xuICBpZiAoIXhzKSB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuICBjb25zdCByZXQ6IFJlY29yZDxzdHJpbmcsIEI+IHwgdW5kZWZpbmVkID0ge307XG4gIGZvciAoY29uc3QgW2ssIHZdIG9mIE9iamVjdC5lbnRyaWVzKHhzKSkge1xuICAgIHJldFtrXSA9IGZuKHYpO1xuICB9XG4gIHJldHVybiByZXQ7XG59XG5cbmZ1bmN0aW9uIG5vVW5kZWZpbmVkPEEgZXh0ZW5kcyBvYmplY3Q+KHhzOiBBKTogQSB7XG4gIGNvbnN0IHJldDogYW55ID0ge307XG4gIGZvciAoY29uc3QgW2ssIHZdIG9mIE9iamVjdC5lbnRyaWVzKHhzKSkge1xuICAgIGlmICh2ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldFtrXSA9IHY7XG4gICAgfVxuICB9XG4gIHJldHVybiByZXQ7XG59XG5cbmZ1bmN0aW9uIHN0cmlwRW51bUVycm9ycyhlcnJvcnM6IGpzb25zY2hlbWEuVmFsaWRhdGlvbkVycm9yW10pIHtcbiAgcmV0dXJuIGVycm9ycy5maWx0ZXIoKGUpID0+IHR5cGVvZiBlLnNjaGVtYSA9PT0gJ3N0cmluZycgfHwgISgnZW51bScgaW4gZS5zY2hlbWEpKTtcbn1cbiJdfQ== + +/***/ }), + +/***/ 32610: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +var helpers = __nccwpck_require__(34099); + +/** @type ValidatorResult */ +var ValidatorResult = helpers.ValidatorResult; +/** @type SchemaError */ +var SchemaError = helpers.SchemaError; + +var attribute = {}; + +attribute.ignoreProperties = { + // informative properties + 'id': true, + 'default': true, + 'description': true, + 'title': true, + // arguments to other properties + 'additionalItems': true, + 'then': true, + 'else': true, + // special-handled properties + '$schema': true, + '$ref': true, + 'extends': true, +}; + +/** * @name validators */ var validators = attribute.validators = {}; @@ -11790,7 +13642,7 @@ var import_middleware_serde = __nccwpck_require__(83255); var import_core2 = __nccwpck_require__(8704); -var import_uuid = __nccwpck_require__(47799); +var import_uuid = __nccwpck_require__(12048); // src/models/CloudFormationServiceException.ts @@ -22921,6 +24773,7 @@ const getRuntimeConfig = (config) => { streamCollector: config?.streamCollector ?? node_http_handler_1.streamCollector, useDualstackEndpoint: config?.useDualstackEndpoint ?? (0, node_config_provider_1.loadConfig)(config_resolver_1.NODE_USE_DUALSTACK_ENDPOINT_CONFIG_OPTIONS), useFipsEndpoint: config?.useFipsEndpoint ?? (0, node_config_provider_1.loadConfig)(config_resolver_1.NODE_USE_FIPS_ENDPOINT_CONFIG_OPTIONS), + userAgentAppId: config?.userAgentAppId ?? (0, node_config_provider_1.loadConfig)(util_user_agent_node_1.NODE_APP_ID_CONFIG_OPTIONS), }; }; exports.getRuntimeConfig = getRuntimeConfig; @@ -22970,1192 +24823,511 @@ exports.getRuntimeConfig = getRuntimeConfig; /***/ }), -/***/ 47799: -/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -Object.defineProperty(exports, "NIL", ({ - enumerable: true, - get: function () { - return _nil.default; - } -})); -Object.defineProperty(exports, "parse", ({ - enumerable: true, - get: function () { - return _parse.default; - } -})); -Object.defineProperty(exports, "stringify", ({ - enumerable: true, - get: function () { - return _stringify.default; - } -})); -Object.defineProperty(exports, "v1", ({ - enumerable: true, - get: function () { - return _v.default; - } -})); -Object.defineProperty(exports, "v3", ({ - enumerable: true, - get: function () { - return _v2.default; - } -})); -Object.defineProperty(exports, "v4", ({ - enumerable: true, - get: function () { - return _v3.default; - } -})); -Object.defineProperty(exports, "v5", ({ - enumerable: true, - get: function () { - return _v4.default; - } -})); -Object.defineProperty(exports, "validate", ({ - enumerable: true, - get: function () { - return _validate.default; - } -})); -Object.defineProperty(exports, "version", ({ - enumerable: true, - get: function () { - return _version.default; - } -})); - -var _v = _interopRequireDefault(__nccwpck_require__(97526)); - -var _v2 = _interopRequireDefault(__nccwpck_require__(51084)); - -var _v3 = _interopRequireDefault(__nccwpck_require__(2969)); - -var _v4 = _interopRequireDefault(__nccwpck_require__(13482)); - -var _nil = _interopRequireDefault(__nccwpck_require__(4096)); - -var _version = _interopRequireDefault(__nccwpck_require__(85095)); - -var _validate = _interopRequireDefault(__nccwpck_require__(38805)); - -var _stringify = _interopRequireDefault(__nccwpck_require__(76334)); - -var _parse = _interopRequireDefault(__nccwpck_require__(59312)); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -/***/ }), - -/***/ 23983: +/***/ 9826: /***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { "use strict"; - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports["default"] = void 0; - -var _crypto = _interopRequireDefault(__nccwpck_require__(76982)); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -function md5(bytes) { - if (Array.isArray(bytes)) { - bytes = Buffer.from(bytes); - } else if (typeof bytes === 'string') { - bytes = Buffer.from(bytes, 'utf8'); - } - - return _crypto.default.createHash('md5').update(bytes).digest(); +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.resolveHttpAuthSchemeConfig = exports.defaultCognitoIdentityHttpAuthSchemeProvider = exports.defaultCognitoIdentityHttpAuthSchemeParametersProvider = void 0; +const core_1 = __nccwpck_require__(8704); +const util_middleware_1 = __nccwpck_require__(76324); +const defaultCognitoIdentityHttpAuthSchemeParametersProvider = async (config, context, input) => { + return { + operation: (0, util_middleware_1.getSmithyContext)(context).operation, + region: (await (0, util_middleware_1.normalizeProvider)(config.region)()) || + (() => { + throw new Error("expected `region` to be configured for `aws.auth#sigv4`"); + })(), + }; +}; +exports.defaultCognitoIdentityHttpAuthSchemeParametersProvider = defaultCognitoIdentityHttpAuthSchemeParametersProvider; +function createAwsAuthSigv4HttpAuthOption(authParameters) { + return { + schemeId: "aws.auth#sigv4", + signingProperties: { + name: "cognito-identity", + region: authParameters.region, + }, + propertiesExtractor: (config, context) => ({ + signingProperties: { + config, + context, + }, + }), + }; +} +function createSmithyApiNoAuthHttpAuthOption(authParameters) { + return { + schemeId: "smithy.api#noAuth", + }; } +const defaultCognitoIdentityHttpAuthSchemeProvider = (authParameters) => { + const options = []; + switch (authParameters.operation) { + case "GetCredentialsForIdentity": { + options.push(createSmithyApiNoAuthHttpAuthOption(authParameters)); + break; + } + case "GetId": { + options.push(createSmithyApiNoAuthHttpAuthOption(authParameters)); + break; + } + case "GetOpenIdToken": { + options.push(createSmithyApiNoAuthHttpAuthOption(authParameters)); + break; + } + case "UnlinkIdentity": { + options.push(createSmithyApiNoAuthHttpAuthOption(authParameters)); + break; + } + default: { + options.push(createAwsAuthSigv4HttpAuthOption(authParameters)); + } + } + return options; +}; +exports.defaultCognitoIdentityHttpAuthSchemeProvider = defaultCognitoIdentityHttpAuthSchemeProvider; +const resolveHttpAuthSchemeConfig = (config) => { + const config_0 = (0, core_1.resolveAwsSdkSigV4Config)(config); + return { + ...config_0, + }; +}; +exports.resolveHttpAuthSchemeConfig = resolveHttpAuthSchemeConfig; -var _default = md5; -exports["default"] = _default; /***/ }), -/***/ 82084: +/***/ 2620: /***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { "use strict"; - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports["default"] = void 0; - -var _crypto = _interopRequireDefault(__nccwpck_require__(76982)); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -var _default = { - randomUUID: _crypto.default.randomUUID +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.defaultEndpointResolver = void 0; +const util_endpoints_1 = __nccwpck_require__(83068); +const util_endpoints_2 = __nccwpck_require__(79674); +const ruleset_1 = __nccwpck_require__(87025); +const cache = new util_endpoints_2.EndpointCache({ + size: 50, + params: ["Endpoint", "Region", "UseDualStack", "UseFIPS"], +}); +const defaultEndpointResolver = (endpointParams, context = {}) => { + return cache.get(endpointParams, () => (0, util_endpoints_2.resolveEndpoint)(ruleset_1.ruleSet, { + endpointParams: endpointParams, + logger: context.logger, + })); }; -exports["default"] = _default; +exports.defaultEndpointResolver = defaultEndpointResolver; +util_endpoints_2.customEndpointFunctions.aws = util_endpoints_1.awsEndpointFunctions; + /***/ }), -/***/ 4096: +/***/ 87025: /***/ ((__unused_webpack_module, exports) => { "use strict"; +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.ruleSet = void 0; +const s = "required", t = "fn", u = "argv", v = "ref"; +const a = true, b = "isSet", c = "booleanEquals", d = "error", e = "endpoint", f = "tree", g = "PartitionResult", h = { [s]: false, "type": "String" }, i = { [s]: true, "default": false, "type": "Boolean" }, j = { [v]: "Endpoint" }, k = { [t]: c, [u]: [{ [v]: "UseFIPS" }, true] }, l = { [t]: c, [u]: [{ [v]: "UseDualStack" }, true] }, m = {}, n = { [t]: "getAttr", [u]: [{ [v]: g }, "supportsFIPS"] }, o = { [t]: c, [u]: [true, { [t]: "getAttr", [u]: [{ [v]: g }, "supportsDualStack"] }] }, p = [k], q = [l], r = [{ [v]: "Region" }]; +const _data = { version: "1.0", parameters: { Region: h, UseDualStack: i, UseFIPS: i, Endpoint: h }, rules: [{ conditions: [{ [t]: b, [u]: [j] }], rules: [{ conditions: p, error: "Invalid Configuration: FIPS and custom endpoint are not supported", type: d }, { conditions: q, error: "Invalid Configuration: Dualstack and custom endpoint are not supported", type: d }, { endpoint: { url: j, properties: m, headers: m }, type: e }], type: f }, { conditions: [{ [t]: b, [u]: r }], rules: [{ conditions: [{ [t]: "aws.partition", [u]: r, assign: g }], rules: [{ conditions: [k, l], rules: [{ conditions: [{ [t]: c, [u]: [a, n] }, o], rules: [{ endpoint: { url: "https://cognito-identity-fips.{Region}.{PartitionResult#dualStackDnsSuffix}", properties: m, headers: m }, type: e }], type: f }, { error: "FIPS and DualStack are enabled, but this partition does not support one or both", type: d }], type: f }, { conditions: p, rules: [{ conditions: [{ [t]: c, [u]: [n, a] }], rules: [{ endpoint: { url: "https://cognito-identity-fips.{Region}.{PartitionResult#dnsSuffix}", properties: m, headers: m }, type: e }], type: f }, { error: "FIPS is enabled but this partition does not support FIPS", type: d }], type: f }, { conditions: q, rules: [{ conditions: [o], rules: [{ endpoint: { url: "https://cognito-identity.{Region}.{PartitionResult#dualStackDnsSuffix}", properties: m, headers: m }, type: e }], type: f }, { error: "DualStack is enabled but this partition does not support DualStack", type: d }], type: f }, { endpoint: { url: "https://cognito-identity.{Region}.{PartitionResult#dnsSuffix}", properties: m, headers: m }, type: e }], type: f }], type: f }, { error: "Invalid Configuration: Missing Region", type: d }] }; +exports.ruleSet = _data; -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports["default"] = void 0; -var _default = '00000000-0000-0000-0000-000000000000'; -exports["default"] = _default; /***/ }), -/***/ 59312: -/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { +/***/ 16473: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { "use strict"; - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports["default"] = void 0; - -var _validate = _interopRequireDefault(__nccwpck_require__(38805)); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -function parse(uuid) { - if (!(0, _validate.default)(uuid)) { - throw TypeError('Invalid UUID'); +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __name = (target, value) => __defProp(target, "name", { value, configurable: true }); +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); - let v; - const arr = new Uint8Array(16); // Parse ########-....-....-....-............ - - arr[0] = (v = parseInt(uuid.slice(0, 8), 16)) >>> 24; - arr[1] = v >>> 16 & 0xff; - arr[2] = v >>> 8 & 0xff; - arr[3] = v & 0xff; // Parse ........-####-....-....-............ - - arr[4] = (v = parseInt(uuid.slice(9, 13), 16)) >>> 8; - arr[5] = v & 0xff; // Parse ........-....-####-....-............ - - arr[6] = (v = parseInt(uuid.slice(14, 18), 16)) >>> 8; - arr[7] = v & 0xff; // Parse ........-....-....-####-............ - - arr[8] = (v = parseInt(uuid.slice(19, 23), 16)) >>> 8; - arr[9] = v & 0xff; // Parse ........-....-....-....-############ - // (Use "/" to avoid 32-bit truncation when bit-shifting high-order bytes) +// src/index.ts +var src_exports = {}; +__export(src_exports, { + AmbiguousRoleResolutionType: () => AmbiguousRoleResolutionType, + CognitoIdentity: () => CognitoIdentity, + CognitoIdentityClient: () => CognitoIdentityClient, + CognitoIdentityServiceException: () => CognitoIdentityServiceException, + ConcurrentModificationException: () => ConcurrentModificationException, + CreateIdentityPoolCommand: () => CreateIdentityPoolCommand, + CredentialsFilterSensitiveLog: () => CredentialsFilterSensitiveLog, + DeleteIdentitiesCommand: () => DeleteIdentitiesCommand, + DeleteIdentityPoolCommand: () => DeleteIdentityPoolCommand, + DescribeIdentityCommand: () => DescribeIdentityCommand, + DescribeIdentityPoolCommand: () => DescribeIdentityPoolCommand, + DeveloperUserAlreadyRegisteredException: () => DeveloperUserAlreadyRegisteredException, + ErrorCode: () => ErrorCode, + ExternalServiceException: () => ExternalServiceException, + GetCredentialsForIdentityCommand: () => GetCredentialsForIdentityCommand, + GetCredentialsForIdentityInputFilterSensitiveLog: () => GetCredentialsForIdentityInputFilterSensitiveLog, + GetCredentialsForIdentityResponseFilterSensitiveLog: () => GetCredentialsForIdentityResponseFilterSensitiveLog, + GetIdCommand: () => GetIdCommand, + GetIdInputFilterSensitiveLog: () => GetIdInputFilterSensitiveLog, + GetIdentityPoolRolesCommand: () => GetIdentityPoolRolesCommand, + GetOpenIdTokenCommand: () => GetOpenIdTokenCommand, + GetOpenIdTokenForDeveloperIdentityCommand: () => GetOpenIdTokenForDeveloperIdentityCommand, + GetOpenIdTokenForDeveloperIdentityInputFilterSensitiveLog: () => GetOpenIdTokenForDeveloperIdentityInputFilterSensitiveLog, + GetOpenIdTokenForDeveloperIdentityResponseFilterSensitiveLog: () => GetOpenIdTokenForDeveloperIdentityResponseFilterSensitiveLog, + GetOpenIdTokenInputFilterSensitiveLog: () => GetOpenIdTokenInputFilterSensitiveLog, + GetOpenIdTokenResponseFilterSensitiveLog: () => GetOpenIdTokenResponseFilterSensitiveLog, + GetPrincipalTagAttributeMapCommand: () => GetPrincipalTagAttributeMapCommand, + InternalErrorException: () => InternalErrorException, + InvalidIdentityPoolConfigurationException: () => InvalidIdentityPoolConfigurationException, + InvalidParameterException: () => InvalidParameterException, + LimitExceededException: () => LimitExceededException, + ListIdentitiesCommand: () => ListIdentitiesCommand, + ListIdentityPoolsCommand: () => ListIdentityPoolsCommand, + ListTagsForResourceCommand: () => ListTagsForResourceCommand, + LookupDeveloperIdentityCommand: () => LookupDeveloperIdentityCommand, + MappingRuleMatchType: () => MappingRuleMatchType, + MergeDeveloperIdentitiesCommand: () => MergeDeveloperIdentitiesCommand, + NotAuthorizedException: () => NotAuthorizedException, + ResourceConflictException: () => ResourceConflictException, + ResourceNotFoundException: () => ResourceNotFoundException, + RoleMappingType: () => RoleMappingType, + SetIdentityPoolRolesCommand: () => SetIdentityPoolRolesCommand, + SetPrincipalTagAttributeMapCommand: () => SetPrincipalTagAttributeMapCommand, + TagResourceCommand: () => TagResourceCommand, + TooManyRequestsException: () => TooManyRequestsException, + UnlinkDeveloperIdentityCommand: () => UnlinkDeveloperIdentityCommand, + UnlinkIdentityCommand: () => UnlinkIdentityCommand, + UnlinkIdentityInputFilterSensitiveLog: () => UnlinkIdentityInputFilterSensitiveLog, + UntagResourceCommand: () => UntagResourceCommand, + UpdateIdentityPoolCommand: () => UpdateIdentityPoolCommand, + __Client: () => import_smithy_client.Client, + paginateListIdentityPools: () => paginateListIdentityPools +}); +module.exports = __toCommonJS(src_exports); - arr[10] = (v = parseInt(uuid.slice(24, 36), 16)) / 0x10000000000 & 0xff; - arr[11] = v / 0x100000000 & 0xff; - arr[12] = v >>> 24 & 0xff; - arr[13] = v >>> 16 & 0xff; - arr[14] = v >>> 8 & 0xff; - arr[15] = v & 0xff; - return arr; -} +// src/CognitoIdentityClient.ts +var import_middleware_host_header = __nccwpck_require__(52590); +var import_middleware_logger = __nccwpck_require__(85242); +var import_middleware_recursion_detection = __nccwpck_require__(81568); +var import_middleware_user_agent = __nccwpck_require__(32959); +var import_config_resolver = __nccwpck_require__(39316); +var import_core = __nccwpck_require__(90402); +var import_middleware_content_length = __nccwpck_require__(47212); +var import_middleware_endpoint = __nccwpck_require__(40099); +var import_middleware_retry = __nccwpck_require__(19618); -var _default = parse; -exports["default"] = _default; +var import_httpAuthSchemeProvider = __nccwpck_require__(9826); -/***/ }), +// src/endpoint/EndpointParameters.ts +var resolveClientEndpointParameters = /* @__PURE__ */ __name((options) => { + return { + ...options, + useDualstackEndpoint: options.useDualstackEndpoint ?? false, + useFipsEndpoint: options.useFipsEndpoint ?? false, + defaultSigningName: "cognito-identity" + }; +}, "resolveClientEndpointParameters"); +var commonParams = { + UseFIPS: { type: "builtInParams", name: "useFipsEndpoint" }, + Endpoint: { type: "builtInParams", name: "endpoint" }, + Region: { type: "builtInParams", name: "region" }, + UseDualStack: { type: "builtInParams", name: "useDualstackEndpoint" } +}; -/***/ 71280: -/***/ ((__unused_webpack_module, exports) => { +// src/CognitoIdentityClient.ts +var import_runtimeConfig = __nccwpck_require__(86483); -"use strict"; +// src/runtimeExtensions.ts +var import_region_config_resolver = __nccwpck_require__(36463); +var import_protocol_http = __nccwpck_require__(72356); +var import_smithy_client = __nccwpck_require__(61411); +// src/auth/httpAuthExtensionConfiguration.ts +var getHttpAuthExtensionConfiguration = /* @__PURE__ */ __name((runtimeConfig) => { + const _httpAuthSchemes = runtimeConfig.httpAuthSchemes; + let _httpAuthSchemeProvider = runtimeConfig.httpAuthSchemeProvider; + let _credentials = runtimeConfig.credentials; + return { + setHttpAuthScheme(httpAuthScheme) { + const index = _httpAuthSchemes.findIndex((scheme) => scheme.schemeId === httpAuthScheme.schemeId); + if (index === -1) { + _httpAuthSchemes.push(httpAuthScheme); + } else { + _httpAuthSchemes.splice(index, 1, httpAuthScheme); + } + }, + httpAuthSchemes() { + return _httpAuthSchemes; + }, + setHttpAuthSchemeProvider(httpAuthSchemeProvider) { + _httpAuthSchemeProvider = httpAuthSchemeProvider; + }, + httpAuthSchemeProvider() { + return _httpAuthSchemeProvider; + }, + setCredentials(credentials) { + _credentials = credentials; + }, + credentials() { + return _credentials; + } + }; +}, "getHttpAuthExtensionConfiguration"); +var resolveHttpAuthRuntimeConfig = /* @__PURE__ */ __name((config) => { + return { + httpAuthSchemes: config.httpAuthSchemes(), + httpAuthSchemeProvider: config.httpAuthSchemeProvider(), + credentials: config.credentials() + }; +}, "resolveHttpAuthRuntimeConfig"); -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports["default"] = void 0; -var _default = /^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i; -exports["default"] = _default; +// src/runtimeExtensions.ts +var asPartial = /* @__PURE__ */ __name((t) => t, "asPartial"); +var resolveRuntimeExtensions = /* @__PURE__ */ __name((runtimeConfig, extensions) => { + const extensionConfiguration = { + ...asPartial((0, import_region_config_resolver.getAwsRegionExtensionConfiguration)(runtimeConfig)), + ...asPartial((0, import_smithy_client.getDefaultExtensionConfiguration)(runtimeConfig)), + ...asPartial((0, import_protocol_http.getHttpHandlerExtensionConfiguration)(runtimeConfig)), + ...asPartial(getHttpAuthExtensionConfiguration(runtimeConfig)) + }; + extensions.forEach((extension) => extension.configure(extensionConfiguration)); + return { + ...runtimeConfig, + ...(0, import_region_config_resolver.resolveAwsRegionExtensionConfiguration)(extensionConfiguration), + ...(0, import_smithy_client.resolveDefaultRuntimeConfig)(extensionConfiguration), + ...(0, import_protocol_http.resolveHttpHandlerRuntimeConfig)(extensionConfiguration), + ...resolveHttpAuthRuntimeConfig(extensionConfiguration) + }; +}, "resolveRuntimeExtensions"); -/***/ }), +// src/CognitoIdentityClient.ts +var _CognitoIdentityClient = class _CognitoIdentityClient extends import_smithy_client.Client { + constructor(...[configuration]) { + const _config_0 = (0, import_runtimeConfig.getRuntimeConfig)(configuration || {}); + const _config_1 = resolveClientEndpointParameters(_config_0); + const _config_2 = (0, import_middleware_user_agent.resolveUserAgentConfig)(_config_1); + const _config_3 = (0, import_middleware_retry.resolveRetryConfig)(_config_2); + const _config_4 = (0, import_config_resolver.resolveRegionConfig)(_config_3); + const _config_5 = (0, import_middleware_host_header.resolveHostHeaderConfig)(_config_4); + const _config_6 = (0, import_middleware_endpoint.resolveEndpointConfig)(_config_5); + const _config_7 = (0, import_httpAuthSchemeProvider.resolveHttpAuthSchemeConfig)(_config_6); + const _config_8 = resolveRuntimeExtensions(_config_7, (configuration == null ? void 0 : configuration.extensions) || []); + super(_config_8); + this.config = _config_8; + this.middlewareStack.use((0, import_middleware_user_agent.getUserAgentPlugin)(this.config)); + this.middlewareStack.use((0, import_middleware_retry.getRetryPlugin)(this.config)); + this.middlewareStack.use((0, import_middleware_content_length.getContentLengthPlugin)(this.config)); + this.middlewareStack.use((0, import_middleware_host_header.getHostHeaderPlugin)(this.config)); + this.middlewareStack.use((0, import_middleware_logger.getLoggerPlugin)(this.config)); + this.middlewareStack.use((0, import_middleware_recursion_detection.getRecursionDetectionPlugin)(this.config)); + this.middlewareStack.use( + (0, import_core.getHttpAuthSchemeEndpointRuleSetPlugin)(this.config, { + httpAuthSchemeParametersProvider: import_httpAuthSchemeProvider.defaultCognitoIdentityHttpAuthSchemeParametersProvider, + identityProviderConfigProvider: async (config) => new import_core.DefaultIdentityProviderConfig({ + "aws.auth#sigv4": config.credentials + }) + }) + ); + this.middlewareStack.use((0, import_core.getHttpSigningPlugin)(this.config)); + } + /** + * Destroy underlying resources, like sockets. It's usually not necessary to do this. + * However in Node.js, it's best to explicitly shut down the client's agent when it is no longer needed. + * Otherwise, sockets might stay open for quite a long time before the server terminates them. + */ + destroy() { + super.destroy(); + } +}; +__name(_CognitoIdentityClient, "CognitoIdentityClient"); +var CognitoIdentityClient = _CognitoIdentityClient; -/***/ 79250: -/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { +// src/CognitoIdentity.ts -"use strict"; +// src/commands/CreateIdentityPoolCommand.ts -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports["default"] = rng; +var import_middleware_serde = __nccwpck_require__(83255); -var _crypto = _interopRequireDefault(__nccwpck_require__(76982)); -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } +// src/protocols/Aws_json1_1.ts +var import_core2 = __nccwpck_require__(8704); -const rnds8Pool = new Uint8Array(256); // # of random values to pre-allocate -let poolPtr = rnds8Pool.length; -function rng() { - if (poolPtr > rnds8Pool.length - 16) { - _crypto.default.randomFillSync(rnds8Pool); +// src/models/CognitoIdentityServiceException.ts - poolPtr = 0; +var _CognitoIdentityServiceException = class _CognitoIdentityServiceException extends import_smithy_client.ServiceException { + /** + * @internal + */ + constructor(options) { + super(options); + Object.setPrototypeOf(this, _CognitoIdentityServiceException.prototype); } +}; +__name(_CognitoIdentityServiceException, "CognitoIdentityServiceException"); +var CognitoIdentityServiceException = _CognitoIdentityServiceException; - return rnds8Pool.slice(poolPtr, poolPtr += 16); -} - -/***/ }), - -/***/ 18410: -/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports["default"] = void 0; - -var _crypto = _interopRequireDefault(__nccwpck_require__(76982)); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } +// src/models/models_0.ts -function sha1(bytes) { - if (Array.isArray(bytes)) { - bytes = Buffer.from(bytes); - } else if (typeof bytes === 'string') { - bytes = Buffer.from(bytes, 'utf8'); +var AmbiguousRoleResolutionType = { + AUTHENTICATED_ROLE: "AuthenticatedRole", + DENY: "Deny" +}; +var _InternalErrorException = class _InternalErrorException extends CognitoIdentityServiceException { + /** + * @internal + */ + constructor(opts) { + super({ + name: "InternalErrorException", + $fault: "server", + ...opts + }); + this.name = "InternalErrorException"; + this.$fault = "server"; + Object.setPrototypeOf(this, _InternalErrorException.prototype); } - - return _crypto.default.createHash('sha1').update(bytes).digest(); -} - -var _default = sha1; -exports["default"] = _default; - -/***/ }), - -/***/ 76334: -/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports["default"] = void 0; -exports.unsafeStringify = unsafeStringify; - -var _validate = _interopRequireDefault(__nccwpck_require__(38805)); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -/** - * Convert array of 16 byte values to UUID string format of the form: - * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX - */ -const byteToHex = []; - -for (let i = 0; i < 256; ++i) { - byteToHex.push((i + 0x100).toString(16).slice(1)); -} - -function unsafeStringify(arr, offset = 0) { - // Note: Be careful editing this code! It's been tuned for performance - // and works in ways you may not expect. See https://github.com/uuidjs/uuid/pull/434 - return byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + '-' + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + '-' + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + '-' + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + '-' + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]]; -} - -function stringify(arr, offset = 0) { - const uuid = unsafeStringify(arr, offset); // Consistency check for valid UUID. If this throws, it's likely due to one - // of the following: - // - One or more input array values don't map to a hex octet (leading to - // "undefined" in the uuid) - // - Invalid input values for the RFC `version` or `variant` fields - - if (!(0, _validate.default)(uuid)) { - throw TypeError('Stringified UUID is invalid'); +}; +__name(_InternalErrorException, "InternalErrorException"); +var InternalErrorException = _InternalErrorException; +var _InvalidParameterException = class _InvalidParameterException extends CognitoIdentityServiceException { + /** + * @internal + */ + constructor(opts) { + super({ + name: "InvalidParameterException", + $fault: "client", + ...opts + }); + this.name = "InvalidParameterException"; + this.$fault = "client"; + Object.setPrototypeOf(this, _InvalidParameterException.prototype); } - - return uuid; -} - -var _default = stringify; -exports["default"] = _default; - -/***/ }), - -/***/ 97526: -/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports["default"] = void 0; - -var _rng = _interopRequireDefault(__nccwpck_require__(79250)); - -var _stringify = __nccwpck_require__(76334); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -// **`v1()` - Generate time-based UUID** -// -// Inspired by https://github.com/LiosK/UUID.js -// and http://docs.python.org/library/uuid.html -let _nodeId; - -let _clockseq; // Previous uuid creation time - - -let _lastMSecs = 0; -let _lastNSecs = 0; // See https://github.com/uuidjs/uuid for API details - -function v1(options, buf, offset) { - let i = buf && offset || 0; - const b = buf || new Array(16); - options = options || {}; - let node = options.node || _nodeId; - let clockseq = options.clockseq !== undefined ? options.clockseq : _clockseq; // node and clockseq need to be initialized to random values if they're not - // specified. We do this lazily to minimize issues related to insufficient - // system entropy. See #189 - - if (node == null || clockseq == null) { - const seedBytes = options.random || (options.rng || _rng.default)(); - - if (node == null) { - // Per 4.5, create and 48-bit node id, (47 random bits + multicast bit = 1) - node = _nodeId = [seedBytes[0] | 0x01, seedBytes[1], seedBytes[2], seedBytes[3], seedBytes[4], seedBytes[5]]; - } - - if (clockseq == null) { - // Per 4.2.2, randomize (14 bit) clockseq - clockseq = _clockseq = (seedBytes[6] << 8 | seedBytes[7]) & 0x3fff; - } - } // UUID timestamps are 100 nano-second units since the Gregorian epoch, - // (1582-10-15 00:00). JSNumbers aren't precise enough for this, so - // time is handled internally as 'msecs' (integer milliseconds) and 'nsecs' - // (100-nanoseconds offset from msecs) since unix epoch, 1970-01-01 00:00. - - - let msecs = options.msecs !== undefined ? options.msecs : Date.now(); // Per 4.2.1.2, use count of uuid's generated during the current clock - // cycle to simulate higher resolution clock - - let nsecs = options.nsecs !== undefined ? options.nsecs : _lastNSecs + 1; // Time since last uuid creation (in msecs) - - const dt = msecs - _lastMSecs + (nsecs - _lastNSecs) / 10000; // Per 4.2.1.2, Bump clockseq on clock regression - - if (dt < 0 && options.clockseq === undefined) { - clockseq = clockseq + 1 & 0x3fff; - } // Reset nsecs if clock regresses (new clockseq) or we've moved onto a new - // time interval - - - if ((dt < 0 || msecs > _lastMSecs) && options.nsecs === undefined) { - nsecs = 0; - } // Per 4.2.1.2 Throw error if too many uuids are requested - - - if (nsecs >= 10000) { - throw new Error("uuid.v1(): Can't create more than 10M uuids/sec"); +}; +__name(_InvalidParameterException, "InvalidParameterException"); +var InvalidParameterException = _InvalidParameterException; +var _LimitExceededException = class _LimitExceededException extends CognitoIdentityServiceException { + /** + * @internal + */ + constructor(opts) { + super({ + name: "LimitExceededException", + $fault: "client", + ...opts + }); + this.name = "LimitExceededException"; + this.$fault = "client"; + Object.setPrototypeOf(this, _LimitExceededException.prototype); } - - _lastMSecs = msecs; - _lastNSecs = nsecs; - _clockseq = clockseq; // Per 4.1.4 - Convert from unix epoch to Gregorian epoch - - msecs += 12219292800000; // `time_low` - - const tl = ((msecs & 0xfffffff) * 10000 + nsecs) % 0x100000000; - b[i++] = tl >>> 24 & 0xff; - b[i++] = tl >>> 16 & 0xff; - b[i++] = tl >>> 8 & 0xff; - b[i++] = tl & 0xff; // `time_mid` - - const tmh = msecs / 0x100000000 * 10000 & 0xfffffff; - b[i++] = tmh >>> 8 & 0xff; - b[i++] = tmh & 0xff; // `time_high_and_version` - - b[i++] = tmh >>> 24 & 0xf | 0x10; // include version - - b[i++] = tmh >>> 16 & 0xff; // `clock_seq_hi_and_reserved` (Per 4.2.2 - include variant) - - b[i++] = clockseq >>> 8 | 0x80; // `clock_seq_low` - - b[i++] = clockseq & 0xff; // `node` - - for (let n = 0; n < 6; ++n) { - b[i + n] = node[n]; +}; +__name(_LimitExceededException, "LimitExceededException"); +var LimitExceededException = _LimitExceededException; +var _NotAuthorizedException = class _NotAuthorizedException extends CognitoIdentityServiceException { + /** + * @internal + */ + constructor(opts) { + super({ + name: "NotAuthorizedException", + $fault: "client", + ...opts + }); + this.name = "NotAuthorizedException"; + this.$fault = "client"; + Object.setPrototypeOf(this, _NotAuthorizedException.prototype); } - - return buf || (0, _stringify.unsafeStringify)(b); -} - -var _default = v1; -exports["default"] = _default; - -/***/ }), - -/***/ 51084: -/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports["default"] = void 0; - -var _v = _interopRequireDefault(__nccwpck_require__(93545)); - -var _md = _interopRequireDefault(__nccwpck_require__(23983)); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -const v3 = (0, _v.default)('v3', 0x30, _md.default); -var _default = v3; -exports["default"] = _default; - -/***/ }), - -/***/ 93545: -/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.URL = exports.DNS = void 0; -exports["default"] = v35; - -var _stringify = __nccwpck_require__(76334); - -var _parse = _interopRequireDefault(__nccwpck_require__(59312)); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -function stringToBytes(str) { - str = unescape(encodeURIComponent(str)); // UTF8 escape - - const bytes = []; - - for (let i = 0; i < str.length; ++i) { - bytes.push(str.charCodeAt(i)); +}; +__name(_NotAuthorizedException, "NotAuthorizedException"); +var NotAuthorizedException = _NotAuthorizedException; +var _ResourceConflictException = class _ResourceConflictException extends CognitoIdentityServiceException { + /** + * @internal + */ + constructor(opts) { + super({ + name: "ResourceConflictException", + $fault: "client", + ...opts + }); + this.name = "ResourceConflictException"; + this.$fault = "client"; + Object.setPrototypeOf(this, _ResourceConflictException.prototype); } - - return bytes; -} - -const DNS = '6ba7b810-9dad-11d1-80b4-00c04fd430c8'; -exports.DNS = DNS; -const URL = '6ba7b811-9dad-11d1-80b4-00c04fd430c8'; -exports.URL = URL; - -function v35(name, version, hashfunc) { - function generateUUID(value, namespace, buf, offset) { - var _namespace; - - if (typeof value === 'string') { - value = stringToBytes(value); - } - - if (typeof namespace === 'string') { - namespace = (0, _parse.default)(namespace); - } - - if (((_namespace = namespace) === null || _namespace === void 0 ? void 0 : _namespace.length) !== 16) { - throw TypeError('Namespace must be array-like (16 iterable integer values, 0-255)'); - } // Compute hash of namespace and value, Per 4.3 - // Future: Use spread syntax when supported on all platforms, e.g. `bytes = - // hashfunc([...namespace, ... value])` - - - let bytes = new Uint8Array(16 + value.length); - bytes.set(namespace); - bytes.set(value, namespace.length); - bytes = hashfunc(bytes); - bytes[6] = bytes[6] & 0x0f | version; - bytes[8] = bytes[8] & 0x3f | 0x80; - - if (buf) { - offset = offset || 0; - - for (let i = 0; i < 16; ++i) { - buf[offset + i] = bytes[i]; - } - - return buf; - } - - return (0, _stringify.unsafeStringify)(bytes); - } // Function#name is not settable on some platforms (#270) - - - try { - generateUUID.name = name; // eslint-disable-next-line no-empty - } catch (err) {} // For CommonJS default export support - - - generateUUID.DNS = DNS; - generateUUID.URL = URL; - return generateUUID; -} - -/***/ }), - -/***/ 2969: -/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports["default"] = void 0; - -var _native = _interopRequireDefault(__nccwpck_require__(82084)); - -var _rng = _interopRequireDefault(__nccwpck_require__(79250)); - -var _stringify = __nccwpck_require__(76334); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -function v4(options, buf, offset) { - if (_native.default.randomUUID && !buf && !options) { - return _native.default.randomUUID(); +}; +__name(_ResourceConflictException, "ResourceConflictException"); +var ResourceConflictException = _ResourceConflictException; +var _TooManyRequestsException = class _TooManyRequestsException extends CognitoIdentityServiceException { + /** + * @internal + */ + constructor(opts) { + super({ + name: "TooManyRequestsException", + $fault: "client", + ...opts + }); + this.name = "TooManyRequestsException"; + this.$fault = "client"; + Object.setPrototypeOf(this, _TooManyRequestsException.prototype); } - - options = options || {}; - - const rnds = options.random || (options.rng || _rng.default)(); // Per 4.4, set bits for version and `clock_seq_hi_and_reserved` - - - rnds[6] = rnds[6] & 0x0f | 0x40; - rnds[8] = rnds[8] & 0x3f | 0x80; // Copy bytes to buffer, if provided - - if (buf) { - offset = offset || 0; - - for (let i = 0; i < 16; ++i) { - buf[offset + i] = rnds[i]; - } - - return buf; +}; +__name(_TooManyRequestsException, "TooManyRequestsException"); +var TooManyRequestsException = _TooManyRequestsException; +var ErrorCode = { + ACCESS_DENIED: "AccessDenied", + INTERNAL_SERVER_ERROR: "InternalServerError" +}; +var _ResourceNotFoundException = class _ResourceNotFoundException extends CognitoIdentityServiceException { + /** + * @internal + */ + constructor(opts) { + super({ + name: "ResourceNotFoundException", + $fault: "client", + ...opts + }); + this.name = "ResourceNotFoundException"; + this.$fault = "client"; + Object.setPrototypeOf(this, _ResourceNotFoundException.prototype); } - - return (0, _stringify.unsafeStringify)(rnds); -} - -var _default = v4; -exports["default"] = _default; - -/***/ }), - -/***/ 13482: -/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports["default"] = void 0; - -var _v = _interopRequireDefault(__nccwpck_require__(93545)); - -var _sha = _interopRequireDefault(__nccwpck_require__(18410)); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -const v5 = (0, _v.default)('v5', 0x50, _sha.default); -var _default = v5; -exports["default"] = _default; - -/***/ }), - -/***/ 38805: -/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports["default"] = void 0; - -var _regex = _interopRequireDefault(__nccwpck_require__(71280)); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -function validate(uuid) { - return typeof uuid === 'string' && _regex.default.test(uuid); -} - -var _default = validate; -exports["default"] = _default; - -/***/ }), - -/***/ 85095: -/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports["default"] = void 0; - -var _validate = _interopRequireDefault(__nccwpck_require__(38805)); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -function version(uuid) { - if (!(0, _validate.default)(uuid)) { - throw TypeError('Invalid UUID'); - } - - return parseInt(uuid.slice(14, 15), 16); -} - -var _default = version; -exports["default"] = _default; - -/***/ }), - -/***/ 9826: -/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { - -"use strict"; - -Object.defineProperty(exports, "__esModule", ({ value: true })); -exports.resolveHttpAuthSchemeConfig = exports.defaultCognitoIdentityHttpAuthSchemeProvider = exports.defaultCognitoIdentityHttpAuthSchemeParametersProvider = void 0; -const core_1 = __nccwpck_require__(8704); -const util_middleware_1 = __nccwpck_require__(76324); -const defaultCognitoIdentityHttpAuthSchemeParametersProvider = async (config, context, input) => { - return { - operation: (0, util_middleware_1.getSmithyContext)(context).operation, - region: (await (0, util_middleware_1.normalizeProvider)(config.region)()) || - (() => { - throw new Error("expected `region` to be configured for `aws.auth#sigv4`"); - })(), - }; -}; -exports.defaultCognitoIdentityHttpAuthSchemeParametersProvider = defaultCognitoIdentityHttpAuthSchemeParametersProvider; -function createAwsAuthSigv4HttpAuthOption(authParameters) { - return { - schemeId: "aws.auth#sigv4", - signingProperties: { - name: "cognito-identity", - region: authParameters.region, - }, - propertiesExtractor: (config, context) => ({ - signingProperties: { - config, - context, - }, - }), - }; -} -function createSmithyApiNoAuthHttpAuthOption(authParameters) { - return { - schemeId: "smithy.api#noAuth", - }; -} -const defaultCognitoIdentityHttpAuthSchemeProvider = (authParameters) => { - const options = []; - switch (authParameters.operation) { - case "GetCredentialsForIdentity": { - options.push(createSmithyApiNoAuthHttpAuthOption(authParameters)); - break; - } - case "GetId": { - options.push(createSmithyApiNoAuthHttpAuthOption(authParameters)); - break; - } - case "GetOpenIdToken": { - options.push(createSmithyApiNoAuthHttpAuthOption(authParameters)); - break; - } - case "UnlinkIdentity": { - options.push(createSmithyApiNoAuthHttpAuthOption(authParameters)); - break; - } - default: { - options.push(createAwsAuthSigv4HttpAuthOption(authParameters)); - } - } - return options; -}; -exports.defaultCognitoIdentityHttpAuthSchemeProvider = defaultCognitoIdentityHttpAuthSchemeProvider; -const resolveHttpAuthSchemeConfig = (config) => { - const config_0 = (0, core_1.resolveAwsSdkSigV4Config)(config); - return { - ...config_0, - }; -}; -exports.resolveHttpAuthSchemeConfig = resolveHttpAuthSchemeConfig; - - -/***/ }), - -/***/ 2620: -/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { - -"use strict"; - -Object.defineProperty(exports, "__esModule", ({ value: true })); -exports.defaultEndpointResolver = void 0; -const util_endpoints_1 = __nccwpck_require__(83068); -const util_endpoints_2 = __nccwpck_require__(79674); -const ruleset_1 = __nccwpck_require__(87025); -const cache = new util_endpoints_2.EndpointCache({ - size: 50, - params: ["Endpoint", "Region", "UseDualStack", "UseFIPS"], -}); -const defaultEndpointResolver = (endpointParams, context = {}) => { - return cache.get(endpointParams, () => (0, util_endpoints_2.resolveEndpoint)(ruleset_1.ruleSet, { - endpointParams: endpointParams, - logger: context.logger, - })); -}; -exports.defaultEndpointResolver = defaultEndpointResolver; -util_endpoints_2.customEndpointFunctions.aws = util_endpoints_1.awsEndpointFunctions; - - -/***/ }), - -/***/ 87025: -/***/ ((__unused_webpack_module, exports) => { - -"use strict"; - -Object.defineProperty(exports, "__esModule", ({ value: true })); -exports.ruleSet = void 0; -const s = "required", t = "fn", u = "argv", v = "ref"; -const a = true, b = "isSet", c = "booleanEquals", d = "error", e = "endpoint", f = "tree", g = "PartitionResult", h = { [s]: false, "type": "String" }, i = { [s]: true, "default": false, "type": "Boolean" }, j = { [v]: "Endpoint" }, k = { [t]: c, [u]: [{ [v]: "UseFIPS" }, true] }, l = { [t]: c, [u]: [{ [v]: "UseDualStack" }, true] }, m = {}, n = { [t]: "getAttr", [u]: [{ [v]: g }, "supportsFIPS"] }, o = { [t]: c, [u]: [true, { [t]: "getAttr", [u]: [{ [v]: g }, "supportsDualStack"] }] }, p = [k], q = [l], r = [{ [v]: "Region" }]; -const _data = { version: "1.0", parameters: { Region: h, UseDualStack: i, UseFIPS: i, Endpoint: h }, rules: [{ conditions: [{ [t]: b, [u]: [j] }], rules: [{ conditions: p, error: "Invalid Configuration: FIPS and custom endpoint are not supported", type: d }, { conditions: q, error: "Invalid Configuration: Dualstack and custom endpoint are not supported", type: d }, { endpoint: { url: j, properties: m, headers: m }, type: e }], type: f }, { conditions: [{ [t]: b, [u]: r }], rules: [{ conditions: [{ [t]: "aws.partition", [u]: r, assign: g }], rules: [{ conditions: [k, l], rules: [{ conditions: [{ [t]: c, [u]: [a, n] }, o], rules: [{ endpoint: { url: "https://cognito-identity-fips.{Region}.{PartitionResult#dualStackDnsSuffix}", properties: m, headers: m }, type: e }], type: f }, { error: "FIPS and DualStack are enabled, but this partition does not support one or both", type: d }], type: f }, { conditions: p, rules: [{ conditions: [{ [t]: c, [u]: [n, a] }], rules: [{ endpoint: { url: "https://cognito-identity-fips.{Region}.{PartitionResult#dnsSuffix}", properties: m, headers: m }, type: e }], type: f }, { error: "FIPS is enabled but this partition does not support FIPS", type: d }], type: f }, { conditions: q, rules: [{ conditions: [o], rules: [{ endpoint: { url: "https://cognito-identity.{Region}.{PartitionResult#dualStackDnsSuffix}", properties: m, headers: m }, type: e }], type: f }, { error: "DualStack is enabled but this partition does not support DualStack", type: d }], type: f }, { endpoint: { url: "https://cognito-identity.{Region}.{PartitionResult#dnsSuffix}", properties: m, headers: m }, type: e }], type: f }], type: f }, { error: "Invalid Configuration: Missing Region", type: d }] }; -exports.ruleSet = _data; - - -/***/ }), - -/***/ 16473: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - -"use strict"; - -var __defProp = Object.defineProperty; -var __getOwnPropDesc = Object.getOwnPropertyDescriptor; -var __getOwnPropNames = Object.getOwnPropertyNames; -var __hasOwnProp = Object.prototype.hasOwnProperty; -var __name = (target, value) => __defProp(target, "name", { value, configurable: true }); -var __export = (target, all) => { - for (var name in all) - __defProp(target, name, { get: all[name], enumerable: true }); -}; -var __copyProps = (to, from, except, desc) => { - if (from && typeof from === "object" || typeof from === "function") { - for (let key of __getOwnPropNames(from)) - if (!__hasOwnProp.call(to, key) && key !== except) - __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); - } - return to; -}; -var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); - -// src/index.ts -var src_exports = {}; -__export(src_exports, { - AmbiguousRoleResolutionType: () => AmbiguousRoleResolutionType, - CognitoIdentity: () => CognitoIdentity, - CognitoIdentityClient: () => CognitoIdentityClient, - CognitoIdentityServiceException: () => CognitoIdentityServiceException, - ConcurrentModificationException: () => ConcurrentModificationException, - CreateIdentityPoolCommand: () => CreateIdentityPoolCommand, - CredentialsFilterSensitiveLog: () => CredentialsFilterSensitiveLog, - DeleteIdentitiesCommand: () => DeleteIdentitiesCommand, - DeleteIdentityPoolCommand: () => DeleteIdentityPoolCommand, - DescribeIdentityCommand: () => DescribeIdentityCommand, - DescribeIdentityPoolCommand: () => DescribeIdentityPoolCommand, - DeveloperUserAlreadyRegisteredException: () => DeveloperUserAlreadyRegisteredException, - ErrorCode: () => ErrorCode, - ExternalServiceException: () => ExternalServiceException, - GetCredentialsForIdentityCommand: () => GetCredentialsForIdentityCommand, - GetCredentialsForIdentityInputFilterSensitiveLog: () => GetCredentialsForIdentityInputFilterSensitiveLog, - GetCredentialsForIdentityResponseFilterSensitiveLog: () => GetCredentialsForIdentityResponseFilterSensitiveLog, - GetIdCommand: () => GetIdCommand, - GetIdInputFilterSensitiveLog: () => GetIdInputFilterSensitiveLog, - GetIdentityPoolRolesCommand: () => GetIdentityPoolRolesCommand, - GetOpenIdTokenCommand: () => GetOpenIdTokenCommand, - GetOpenIdTokenForDeveloperIdentityCommand: () => GetOpenIdTokenForDeveloperIdentityCommand, - GetOpenIdTokenForDeveloperIdentityInputFilterSensitiveLog: () => GetOpenIdTokenForDeveloperIdentityInputFilterSensitiveLog, - GetOpenIdTokenForDeveloperIdentityResponseFilterSensitiveLog: () => GetOpenIdTokenForDeveloperIdentityResponseFilterSensitiveLog, - GetOpenIdTokenInputFilterSensitiveLog: () => GetOpenIdTokenInputFilterSensitiveLog, - GetOpenIdTokenResponseFilterSensitiveLog: () => GetOpenIdTokenResponseFilterSensitiveLog, - GetPrincipalTagAttributeMapCommand: () => GetPrincipalTagAttributeMapCommand, - InternalErrorException: () => InternalErrorException, - InvalidIdentityPoolConfigurationException: () => InvalidIdentityPoolConfigurationException, - InvalidParameterException: () => InvalidParameterException, - LimitExceededException: () => LimitExceededException, - ListIdentitiesCommand: () => ListIdentitiesCommand, - ListIdentityPoolsCommand: () => ListIdentityPoolsCommand, - ListTagsForResourceCommand: () => ListTagsForResourceCommand, - LookupDeveloperIdentityCommand: () => LookupDeveloperIdentityCommand, - MappingRuleMatchType: () => MappingRuleMatchType, - MergeDeveloperIdentitiesCommand: () => MergeDeveloperIdentitiesCommand, - NotAuthorizedException: () => NotAuthorizedException, - ResourceConflictException: () => ResourceConflictException, - ResourceNotFoundException: () => ResourceNotFoundException, - RoleMappingType: () => RoleMappingType, - SetIdentityPoolRolesCommand: () => SetIdentityPoolRolesCommand, - SetPrincipalTagAttributeMapCommand: () => SetPrincipalTagAttributeMapCommand, - TagResourceCommand: () => TagResourceCommand, - TooManyRequestsException: () => TooManyRequestsException, - UnlinkDeveloperIdentityCommand: () => UnlinkDeveloperIdentityCommand, - UnlinkIdentityCommand: () => UnlinkIdentityCommand, - UnlinkIdentityInputFilterSensitiveLog: () => UnlinkIdentityInputFilterSensitiveLog, - UntagResourceCommand: () => UntagResourceCommand, - UpdateIdentityPoolCommand: () => UpdateIdentityPoolCommand, - __Client: () => import_smithy_client.Client, - paginateListIdentityPools: () => paginateListIdentityPools -}); -module.exports = __toCommonJS(src_exports); - -// src/CognitoIdentityClient.ts -var import_middleware_host_header = __nccwpck_require__(52590); -var import_middleware_logger = __nccwpck_require__(85242); -var import_middleware_recursion_detection = __nccwpck_require__(81568); -var import_middleware_user_agent = __nccwpck_require__(32959); -var import_config_resolver = __nccwpck_require__(39316); -var import_core = __nccwpck_require__(90402); -var import_middleware_content_length = __nccwpck_require__(47212); -var import_middleware_endpoint = __nccwpck_require__(40099); -var import_middleware_retry = __nccwpck_require__(19618); - -var import_httpAuthSchemeProvider = __nccwpck_require__(9826); - -// src/endpoint/EndpointParameters.ts -var resolveClientEndpointParameters = /* @__PURE__ */ __name((options) => { - return { - ...options, - useDualstackEndpoint: options.useDualstackEndpoint ?? false, - useFipsEndpoint: options.useFipsEndpoint ?? false, - defaultSigningName: "cognito-identity" - }; -}, "resolveClientEndpointParameters"); -var commonParams = { - UseFIPS: { type: "builtInParams", name: "useFipsEndpoint" }, - Endpoint: { type: "builtInParams", name: "endpoint" }, - Region: { type: "builtInParams", name: "region" }, - UseDualStack: { type: "builtInParams", name: "useDualstackEndpoint" } -}; - -// src/CognitoIdentityClient.ts -var import_runtimeConfig = __nccwpck_require__(86483); - -// src/runtimeExtensions.ts -var import_region_config_resolver = __nccwpck_require__(36463); -var import_protocol_http = __nccwpck_require__(72356); -var import_smithy_client = __nccwpck_require__(61411); - -// src/auth/httpAuthExtensionConfiguration.ts -var getHttpAuthExtensionConfiguration = /* @__PURE__ */ __name((runtimeConfig) => { - const _httpAuthSchemes = runtimeConfig.httpAuthSchemes; - let _httpAuthSchemeProvider = runtimeConfig.httpAuthSchemeProvider; - let _credentials = runtimeConfig.credentials; - return { - setHttpAuthScheme(httpAuthScheme) { - const index = _httpAuthSchemes.findIndex((scheme) => scheme.schemeId === httpAuthScheme.schemeId); - if (index === -1) { - _httpAuthSchemes.push(httpAuthScheme); - } else { - _httpAuthSchemes.splice(index, 1, httpAuthScheme); - } - }, - httpAuthSchemes() { - return _httpAuthSchemes; - }, - setHttpAuthSchemeProvider(httpAuthSchemeProvider) { - _httpAuthSchemeProvider = httpAuthSchemeProvider; - }, - httpAuthSchemeProvider() { - return _httpAuthSchemeProvider; - }, - setCredentials(credentials) { - _credentials = credentials; - }, - credentials() { - return _credentials; - } - }; -}, "getHttpAuthExtensionConfiguration"); -var resolveHttpAuthRuntimeConfig = /* @__PURE__ */ __name((config) => { - return { - httpAuthSchemes: config.httpAuthSchemes(), - httpAuthSchemeProvider: config.httpAuthSchemeProvider(), - credentials: config.credentials() - }; -}, "resolveHttpAuthRuntimeConfig"); - -// src/runtimeExtensions.ts -var asPartial = /* @__PURE__ */ __name((t) => t, "asPartial"); -var resolveRuntimeExtensions = /* @__PURE__ */ __name((runtimeConfig, extensions) => { - const extensionConfiguration = { - ...asPartial((0, import_region_config_resolver.getAwsRegionExtensionConfiguration)(runtimeConfig)), - ...asPartial((0, import_smithy_client.getDefaultExtensionConfiguration)(runtimeConfig)), - ...asPartial((0, import_protocol_http.getHttpHandlerExtensionConfiguration)(runtimeConfig)), - ...asPartial(getHttpAuthExtensionConfiguration(runtimeConfig)) - }; - extensions.forEach((extension) => extension.configure(extensionConfiguration)); - return { - ...runtimeConfig, - ...(0, import_region_config_resolver.resolveAwsRegionExtensionConfiguration)(extensionConfiguration), - ...(0, import_smithy_client.resolveDefaultRuntimeConfig)(extensionConfiguration), - ...(0, import_protocol_http.resolveHttpHandlerRuntimeConfig)(extensionConfiguration), - ...resolveHttpAuthRuntimeConfig(extensionConfiguration) - }; -}, "resolveRuntimeExtensions"); - -// src/CognitoIdentityClient.ts -var _CognitoIdentityClient = class _CognitoIdentityClient extends import_smithy_client.Client { - constructor(...[configuration]) { - const _config_0 = (0, import_runtimeConfig.getRuntimeConfig)(configuration || {}); - const _config_1 = resolveClientEndpointParameters(_config_0); - const _config_2 = (0, import_middleware_user_agent.resolveUserAgentConfig)(_config_1); - const _config_3 = (0, import_middleware_retry.resolveRetryConfig)(_config_2); - const _config_4 = (0, import_config_resolver.resolveRegionConfig)(_config_3); - const _config_5 = (0, import_middleware_host_header.resolveHostHeaderConfig)(_config_4); - const _config_6 = (0, import_middleware_endpoint.resolveEndpointConfig)(_config_5); - const _config_7 = (0, import_httpAuthSchemeProvider.resolveHttpAuthSchemeConfig)(_config_6); - const _config_8 = resolveRuntimeExtensions(_config_7, (configuration == null ? void 0 : configuration.extensions) || []); - super(_config_8); - this.config = _config_8; - this.middlewareStack.use((0, import_middleware_user_agent.getUserAgentPlugin)(this.config)); - this.middlewareStack.use((0, import_middleware_retry.getRetryPlugin)(this.config)); - this.middlewareStack.use((0, import_middleware_content_length.getContentLengthPlugin)(this.config)); - this.middlewareStack.use((0, import_middleware_host_header.getHostHeaderPlugin)(this.config)); - this.middlewareStack.use((0, import_middleware_logger.getLoggerPlugin)(this.config)); - this.middlewareStack.use((0, import_middleware_recursion_detection.getRecursionDetectionPlugin)(this.config)); - this.middlewareStack.use( - (0, import_core.getHttpAuthSchemeEndpointRuleSetPlugin)(this.config, { - httpAuthSchemeParametersProvider: import_httpAuthSchemeProvider.defaultCognitoIdentityHttpAuthSchemeParametersProvider, - identityProviderConfigProvider: async (config) => new import_core.DefaultIdentityProviderConfig({ - "aws.auth#sigv4": config.credentials - }) - }) - ); - this.middlewareStack.use((0, import_core.getHttpSigningPlugin)(this.config)); - } - /** - * Destroy underlying resources, like sockets. It's usually not necessary to do this. - * However in Node.js, it's best to explicitly shut down the client's agent when it is no longer needed. - * Otherwise, sockets might stay open for quite a long time before the server terminates them. - */ - destroy() { - super.destroy(); - } -}; -__name(_CognitoIdentityClient, "CognitoIdentityClient"); -var CognitoIdentityClient = _CognitoIdentityClient; - -// src/CognitoIdentity.ts - - -// src/commands/CreateIdentityPoolCommand.ts - -var import_middleware_serde = __nccwpck_require__(83255); - - -// src/protocols/Aws_json1_1.ts -var import_core2 = __nccwpck_require__(8704); - - - -// src/models/CognitoIdentityServiceException.ts - -var _CognitoIdentityServiceException = class _CognitoIdentityServiceException extends import_smithy_client.ServiceException { - /** - * @internal - */ - constructor(options) { - super(options); - Object.setPrototypeOf(this, _CognitoIdentityServiceException.prototype); - } -}; -__name(_CognitoIdentityServiceException, "CognitoIdentityServiceException"); -var CognitoIdentityServiceException = _CognitoIdentityServiceException; - -// src/models/models_0.ts - -var AmbiguousRoleResolutionType = { - AUTHENTICATED_ROLE: "AuthenticatedRole", - DENY: "Deny" -}; -var _InternalErrorException = class _InternalErrorException extends CognitoIdentityServiceException { - /** - * @internal - */ - constructor(opts) { - super({ - name: "InternalErrorException", - $fault: "server", - ...opts - }); - this.name = "InternalErrorException"; - this.$fault = "server"; - Object.setPrototypeOf(this, _InternalErrorException.prototype); - } -}; -__name(_InternalErrorException, "InternalErrorException"); -var InternalErrorException = _InternalErrorException; -var _InvalidParameterException = class _InvalidParameterException extends CognitoIdentityServiceException { - /** - * @internal - */ - constructor(opts) { - super({ - name: "InvalidParameterException", - $fault: "client", - ...opts - }); - this.name = "InvalidParameterException"; - this.$fault = "client"; - Object.setPrototypeOf(this, _InvalidParameterException.prototype); - } -}; -__name(_InvalidParameterException, "InvalidParameterException"); -var InvalidParameterException = _InvalidParameterException; -var _LimitExceededException = class _LimitExceededException extends CognitoIdentityServiceException { - /** - * @internal - */ - constructor(opts) { - super({ - name: "LimitExceededException", - $fault: "client", - ...opts - }); - this.name = "LimitExceededException"; - this.$fault = "client"; - Object.setPrototypeOf(this, _LimitExceededException.prototype); - } -}; -__name(_LimitExceededException, "LimitExceededException"); -var LimitExceededException = _LimitExceededException; -var _NotAuthorizedException = class _NotAuthorizedException extends CognitoIdentityServiceException { - /** - * @internal - */ - constructor(opts) { - super({ - name: "NotAuthorizedException", - $fault: "client", - ...opts - }); - this.name = "NotAuthorizedException"; - this.$fault = "client"; - Object.setPrototypeOf(this, _NotAuthorizedException.prototype); - } -}; -__name(_NotAuthorizedException, "NotAuthorizedException"); -var NotAuthorizedException = _NotAuthorizedException; -var _ResourceConflictException = class _ResourceConflictException extends CognitoIdentityServiceException { - /** - * @internal - */ - constructor(opts) { - super({ - name: "ResourceConflictException", - $fault: "client", - ...opts - }); - this.name = "ResourceConflictException"; - this.$fault = "client"; - Object.setPrototypeOf(this, _ResourceConflictException.prototype); - } -}; -__name(_ResourceConflictException, "ResourceConflictException"); -var ResourceConflictException = _ResourceConflictException; -var _TooManyRequestsException = class _TooManyRequestsException extends CognitoIdentityServiceException { - /** - * @internal - */ - constructor(opts) { - super({ - name: "TooManyRequestsException", - $fault: "client", - ...opts - }); - this.name = "TooManyRequestsException"; - this.$fault = "client"; - Object.setPrototypeOf(this, _TooManyRequestsException.prototype); - } -}; -__name(_TooManyRequestsException, "TooManyRequestsException"); -var TooManyRequestsException = _TooManyRequestsException; -var ErrorCode = { - ACCESS_DENIED: "AccessDenied", - INTERNAL_SERVER_ERROR: "InternalServerError" -}; -var _ResourceNotFoundException = class _ResourceNotFoundException extends CognitoIdentityServiceException { - /** - * @internal - */ - constructor(opts) { - super({ - name: "ResourceNotFoundException", - $fault: "client", - ...opts - }); - this.name = "ResourceNotFoundException"; - this.$fault = "client"; - Object.setPrototypeOf(this, _ResourceNotFoundException.prototype); - } -}; -__name(_ResourceNotFoundException, "ResourceNotFoundException"); -var ResourceNotFoundException = _ResourceNotFoundException; -var _ExternalServiceException = class _ExternalServiceException extends CognitoIdentityServiceException { - /** - * @internal - */ - constructor(opts) { - super({ - name: "ExternalServiceException", - $fault: "client", - ...opts - }); - this.name = "ExternalServiceException"; - this.$fault = "client"; - Object.setPrototypeOf(this, _ExternalServiceException.prototype); +}; +__name(_ResourceNotFoundException, "ResourceNotFoundException"); +var ResourceNotFoundException = _ResourceNotFoundException; +var _ExternalServiceException = class _ExternalServiceException extends CognitoIdentityServiceException { + /** + * @internal + */ + constructor(opts) { + super({ + name: "ExternalServiceException", + $fault: "client", + ...opts + }); + this.name = "ExternalServiceException"; + this.$fault = "client"; + Object.setPrototypeOf(this, _ExternalServiceException.prototype); } }; __name(_ExternalServiceException, "ExternalServiceException"); @@ -25315,6 +26487,7 @@ const getRuntimeConfig = (config) => { streamCollector: config?.streamCollector ?? node_http_handler_1.streamCollector, useDualstackEndpoint: config?.useDualstackEndpoint ?? (0, node_config_provider_1.loadConfig)(config_resolver_1.NODE_USE_DUALSTACK_ENDPOINT_CONFIG_OPTIONS), useFipsEndpoint: config?.useFipsEndpoint ?? (0, node_config_provider_1.loadConfig)(config_resolver_1.NODE_USE_FIPS_ENDPOINT_CONFIG_OPTIONS), + userAgentAppId: config?.userAgentAppId ?? (0, node_config_provider_1.loadConfig)(util_user_agent_node_1.NODE_APP_ID_CONFIG_OPTIONS), }; }; exports.getRuntimeConfig = getRuntimeConfig; @@ -26563,6 +27736,7 @@ const getRuntimeConfig = (config) => { streamCollector: config?.streamCollector ?? node_http_handler_1.streamCollector, useDualstackEndpoint: config?.useDualstackEndpoint ?? (0, node_config_provider_1.loadConfig)(config_resolver_1.NODE_USE_DUALSTACK_ENDPOINT_CONFIG_OPTIONS), useFipsEndpoint: config?.useFipsEndpoint ?? (0, node_config_provider_1.loadConfig)(config_resolver_1.NODE_USE_FIPS_ENDPOINT_CONFIG_OPTIONS), + userAgentAppId: config?.userAgentAppId ?? (0, node_config_provider_1.loadConfig)(util_user_agent_node_1.NODE_APP_ID_CONFIG_OPTIONS), }; }; exports.getRuntimeConfig = getRuntimeConfig; @@ -27380,6 +28554,7 @@ const getRuntimeConfig = (config) => { streamCollector: config?.streamCollector ?? node_http_handler_1.streamCollector, useDualstackEndpoint: config?.useDualstackEndpoint ?? (0, node_config_provider_1.loadConfig)(config_resolver_1.NODE_USE_DUALSTACK_ENDPOINT_CONFIG_OPTIONS), useFipsEndpoint: config?.useFipsEndpoint ?? (0, node_config_provider_1.loadConfig)(config_resolver_1.NODE_USE_FIPS_ENDPOINT_CONFIG_OPTIONS), + userAgentAppId: config?.userAgentAppId ?? (0, node_config_provider_1.loadConfig)(util_user_agent_node_1.NODE_APP_ID_CONFIG_OPTIONS), }; }; exports.getRuntimeConfig = getRuntimeConfig; @@ -29177,6 +30352,7 @@ const getRuntimeConfig = (config) => { streamCollector: config?.streamCollector ?? node_http_handler_1.streamCollector, useDualstackEndpoint: config?.useDualstackEndpoint ?? (0, node_config_provider_1.loadConfig)(config_resolver_1.NODE_USE_DUALSTACK_ENDPOINT_CONFIG_OPTIONS), useFipsEndpoint: config?.useFipsEndpoint ?? (0, node_config_provider_1.loadConfig)(config_resolver_1.NODE_USE_FIPS_ENDPOINT_CONFIG_OPTIONS), + userAgentAppId: config?.userAgentAppId ?? (0, node_config_provider_1.loadConfig)(util_user_agent_node_1.NODE_APP_ID_CONFIG_OPTIONS), }; }; exports.getRuntimeConfig = getRuntimeConfig; @@ -29306,7 +30482,8 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru // src/submodules/client/index.ts var client_exports = {}; __export(client_exports, { - emitWarningIfUnsupportedVersion: () => emitWarningIfUnsupportedVersion + emitWarningIfUnsupportedVersion: () => emitWarningIfUnsupportedVersion, + setFeature: () => setFeature }); module.exports = __toCommonJS(client_exports); @@ -29326,6 +30503,19 @@ More information can be found at: https://a.co/74kJMmI` ); } }, "emitWarningIfUnsupportedVersion"); + +// src/submodules/client/setFeature.ts +function setFeature(context, feature, value) { + if (!context.__aws_sdk_context) { + context.__aws_sdk_context = { + features: {} + }; + } else if (!context.__aws_sdk_context.features) { + context.__aws_sdk_context.features = {}; + } + context.__aws_sdk_context.features[feature] = value; +} +__name(setFeature, "setFeature"); // Annotate the CommonJS export names for ESM import in node: 0 && (0); @@ -31915,6 +33105,7 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru // src/index.ts var src_exports = {}; __export(src_exports, { + DEFAULT_UA_APP_ID: () => DEFAULT_UA_APP_ID, getUserAgentMiddlewareOptions: () => getUserAgentMiddlewareOptions, getUserAgentPlugin: () => getUserAgentPlugin, resolveUserAgentConfig: () => resolveUserAgentConfig, @@ -31923,10 +33114,33 @@ __export(src_exports, { module.exports = __toCommonJS(src_exports); // src/configurations.ts +var import_core = __nccwpck_require__(90402); +var DEFAULT_UA_APP_ID = void 0; +function isValidUserAgentAppId(appId) { + if (appId === void 0) { + return true; + } + return typeof appId === "string" && appId.length <= 50; +} +__name(isValidUserAgentAppId, "isValidUserAgentAppId"); function resolveUserAgentConfig(input) { + const normalizedAppIdProvider = (0, import_core.normalizeProvider)(input.userAgentAppId ?? DEFAULT_UA_APP_ID); return { ...input, - customUserAgent: typeof input.customUserAgent === "string" ? [[input.customUserAgent]] : input.customUserAgent + customUserAgent: typeof input.customUserAgent === "string" ? [[input.customUserAgent]] : input.customUserAgent, + userAgentAppId: async () => { + var _a, _b; + const appId = await normalizedAppIdProvider(); + if (!isValidUserAgentAppId(appId)) { + const logger = ((_b = (_a = input.logger) == null ? void 0 : _a.constructor) == null ? void 0 : _b.name) === "NoOpLogger" || !input.logger ? console : input.logger; + if (typeof appId !== "string") { + logger == null ? void 0 : logger.warn("userAgentAppId must be a string or undefined."); + } else if (appId.length > 50) { + logger == null ? void 0 : logger.warn("The provided userAgentAppId exceeds the maximum length of 50 characters."); + } + } + return appId; + } }; } __name(resolveUserAgentConfig, "resolveUserAgentConfig"); @@ -31944,16 +33158,47 @@ var UA_NAME_ESCAPE_REGEX = /[^\!\$\%\&\'\*\+\-\.\^\_\`\|\~\d\w]/g; var UA_VALUE_ESCAPE_REGEX = /[^\!\$\%\&\'\*\+\-\.\^\_\`\|\~\d\w\#]/g; var UA_ESCAPE_CHAR = "-"; +// src/encode-features.ts +var BYTE_LIMIT = 1024; +function encodeFeatures(features) { + let buffer = ""; + for (const key in features) { + const val = features[key]; + if (buffer.length + val.length + 1 <= BYTE_LIMIT) { + if (buffer.length) { + buffer += "," + val; + } else { + buffer += val; + } + continue; + } + break; + } + return buffer; +} +__name(encodeFeatures, "encodeFeatures"); + // src/user-agent-middleware.ts var userAgentMiddleware = /* @__PURE__ */ __name((options) => (next, context) => async (args) => { - var _a, _b; + var _a, _b, _c, _d; const { request } = args; - if (!import_protocol_http.HttpRequest.isInstance(request)) + if (!import_protocol_http.HttpRequest.isInstance(request)) { return next(args); + } const { headers } = request; const userAgent = ((_a = context == null ? void 0 : context.userAgent) == null ? void 0 : _a.map(escapeUserAgent)) || []; const defaultUserAgent = (await options.defaultUserAgentProvider()).map(escapeUserAgent); - const customUserAgent = ((_b = options == null ? void 0 : options.customUserAgent) == null ? void 0 : _b.map(escapeUserAgent)) || []; + const awsContext = context; + defaultUserAgent.push( + `m/${encodeFeatures( + Object.assign({}, (_b = context.__smithy_context) == null ? void 0 : _b.features, (_c = awsContext.__aws_sdk_context) == null ? void 0 : _c.features) + )}` + ); + const customUserAgent = ((_d = options == null ? void 0 : options.customUserAgent) == null ? void 0 : _d.map(escapeUserAgent)) || []; + const appId = await options.userAgentAppId(); + if (appId) { + defaultUserAgent.push(escapeUserAgent([`app/${appId}`])); + } const prefix = (0, import_util_endpoints.getUserAgentPrefix)(); const sdkUserAgentValue = (prefix ? [prefix] : []).concat([...defaultUserAgent, ...userAgent, ...customUserAgent]).join(SPACE); const normalUAValue = [ @@ -32786,13 +34031,16 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru // src/index.ts var src_exports = {}; __export(src_exports, { + NODE_APP_ID_CONFIG_OPTIONS: () => NODE_APP_ID_CONFIG_OPTIONS, UA_APP_ID_ENV_NAME: () => UA_APP_ID_ENV_NAME, UA_APP_ID_INI_NAME: () => UA_APP_ID_INI_NAME, + createDefaultUserAgentProvider: () => createDefaultUserAgentProvider, crtAvailability: () => crtAvailability, defaultUserAgent: () => defaultUserAgent }); module.exports = __toCommonJS(src_exports); -var import_node_config_provider = __nccwpck_require__(55704); + +// src/defaultUserAgent.ts var import_os = __nccwpck_require__(70857); var import_process = __nccwpck_require__(932); @@ -32809,46 +34057,48 @@ var isCrtAvailable = /* @__PURE__ */ __name(() => { return null; }, "isCrtAvailable"); -// src/index.ts -var UA_APP_ID_ENV_NAME = "AWS_SDK_UA_APP_ID"; -var UA_APP_ID_INI_NAME = "sdk-ua-app-id"; -var defaultUserAgent = /* @__PURE__ */ __name(({ serviceId, clientVersion }) => { - const sections = [ - // sdk-metadata - ["aws-sdk-js", clientVersion], - // ua-metadata - ["ua", "2.0"], - // os-metadata - [`os/${(0, import_os.platform)()}`, (0, import_os.release)()], - // language-metadata - // ECMAScript edition doesn't matter in JS, so no version needed. - ["lang/js"], - ["md/nodejs", `${import_process.versions.node}`] - ]; - const crtAvailable = isCrtAvailable(); - if (crtAvailable) { - sections.push(crtAvailable); - } - if (serviceId) { - sections.push([`api/${serviceId}`, clientVersion]); - } - if (import_process.env.AWS_EXECUTION_ENV) { - sections.push([`exec-env/${import_process.env.AWS_EXECUTION_ENV}`]); - } - const appIdPromise = (0, import_node_config_provider.loadConfig)({ - environmentVariableSelector: (env2) => env2[UA_APP_ID_ENV_NAME], - configFileSelector: (profile) => profile[UA_APP_ID_INI_NAME], - default: void 0 - })(); - let resolvedUserAgent = void 0; - return async () => { - if (!resolvedUserAgent) { - const appId = await appIdPromise; - resolvedUserAgent = appId ? [...sections, [`app/${appId}`]] : [...sections]; +// src/defaultUserAgent.ts +var createDefaultUserAgentProvider = /* @__PURE__ */ __name(({ serviceId, clientVersion }) => { + return async (config) => { + var _a; + const sections = [ + // sdk-metadata + ["aws-sdk-js", clientVersion], + // ua-metadata + ["ua", "2.1"], + // os-metadata + [`os/${(0, import_os.platform)()}`, (0, import_os.release)()], + // language-metadata + // ECMAScript edition doesn't matter in JS, so no version needed. + ["lang/js"], + ["md/nodejs", `${import_process.versions.node}`] + ]; + const crtAvailable = isCrtAvailable(); + if (crtAvailable) { + sections.push(crtAvailable); + } + if (serviceId) { + sections.push([`api/${serviceId}`, clientVersion]); + } + if (import_process.env.AWS_EXECUTION_ENV) { + sections.push([`exec-env/${import_process.env.AWS_EXECUTION_ENV}`]); } + const appId = await ((_a = config == null ? void 0 : config.userAgentAppId) == null ? void 0 : _a.call(config)); + const resolvedUserAgent = appId ? [...sections, [`app/${appId}`]] : [...sections]; return resolvedUserAgent; }; -}, "defaultUserAgent"); +}, "createDefaultUserAgentProvider"); +var defaultUserAgent = createDefaultUserAgentProvider; + +// src/nodeAppIdConfigOptions.ts +var import_middleware_user_agent = __nccwpck_require__(32959); +var UA_APP_ID_ENV_NAME = "AWS_SDK_UA_APP_ID"; +var UA_APP_ID_INI_NAME = "sdk-ua-app-id"; +var NODE_APP_ID_CONFIG_OPTIONS = { + environmentVariableSelector: (env2) => env2[UA_APP_ID_ENV_NAME], + configFileSelector: (profile) => profile[UA_APP_ID_INI_NAME], + default: import_middleware_user_agent.DEFAULT_UA_APP_ID +}; // Annotate the CommonJS export names for ESM import in node: 0 && (0); @@ -36649,1817 +37899,202 @@ var Endpoints = { listFollowedByAuthenticatedUser: ["GET /user/following"], listFollowersForAuthenticatedUser: ["GET /user/followers"], listFollowersForUser: ["GET /users/{username}/followers"], - listFollowingForUser: ["GET /users/{username}/following"], - listGpgKeysForAuthenticated: [ - "GET /user/gpg_keys", - {}, - { renamed: ["users", "listGpgKeysForAuthenticatedUser"] } - ], - listGpgKeysForAuthenticatedUser: ["GET /user/gpg_keys"], - listGpgKeysForUser: ["GET /users/{username}/gpg_keys"], - listPublicEmailsForAuthenticated: [ - "GET /user/public_emails", - {}, - { renamed: ["users", "listPublicEmailsForAuthenticatedUser"] } - ], - listPublicEmailsForAuthenticatedUser: ["GET /user/public_emails"], - listPublicKeysForUser: ["GET /users/{username}/keys"], - listPublicSshKeysForAuthenticated: [ - "GET /user/keys", - {}, - { renamed: ["users", "listPublicSshKeysForAuthenticatedUser"] } - ], - listPublicSshKeysForAuthenticatedUser: ["GET /user/keys"], - listSocialAccountsForAuthenticatedUser: ["GET /user/social_accounts"], - listSocialAccountsForUser: ["GET /users/{username}/social_accounts"], - listSshSigningKeysForAuthenticatedUser: ["GET /user/ssh_signing_keys"], - listSshSigningKeysForUser: ["GET /users/{username}/ssh_signing_keys"], - setPrimaryEmailVisibilityForAuthenticated: [ - "PATCH /user/email/visibility", - {}, - { renamed: ["users", "setPrimaryEmailVisibilityForAuthenticatedUser"] } - ], - setPrimaryEmailVisibilityForAuthenticatedUser: [ - "PATCH /user/email/visibility" - ], - unblock: ["DELETE /user/blocks/{username}"], - unfollow: ["DELETE /user/following/{username}"], - updateAuthenticated: ["PATCH /user"] - } -}; -var endpoints_default = Endpoints; - -// pkg/dist-src/endpoints-to-methods.js -var endpointMethodsMap = /* @__PURE__ */ new Map(); -for (const [scope, endpoints] of Object.entries(endpoints_default)) { - for (const [methodName, endpoint] of Object.entries(endpoints)) { - const [route, defaults, decorations] = endpoint; - const [method, url] = route.split(/ /); - const endpointDefaults = Object.assign( - { - method, - url - }, - defaults - ); - if (!endpointMethodsMap.has(scope)) { - endpointMethodsMap.set(scope, /* @__PURE__ */ new Map()); - } - endpointMethodsMap.get(scope).set(methodName, { - scope, - methodName, - endpointDefaults, - decorations - }); - } -} -var handler = { - has({ scope }, methodName) { - return endpointMethodsMap.get(scope).has(methodName); - }, - getOwnPropertyDescriptor(target, methodName) { - return { - value: this.get(target, methodName), - // ensures method is in the cache - configurable: true, - writable: true, - enumerable: true - }; - }, - defineProperty(target, methodName, descriptor) { - Object.defineProperty(target.cache, methodName, descriptor); - return true; - }, - deleteProperty(target, methodName) { - delete target.cache[methodName]; - return true; - }, - ownKeys({ scope }) { - return [...endpointMethodsMap.get(scope).keys()]; - }, - set(target, methodName, value) { - return target.cache[methodName] = value; - }, - get({ octokit, scope, cache }, methodName) { - if (cache[methodName]) { - return cache[methodName]; - } - const method = endpointMethodsMap.get(scope).get(methodName); - if (!method) { - return void 0; - } - const { endpointDefaults, decorations } = method; - if (decorations) { - cache[methodName] = decorate( - octokit, - scope, - methodName, - endpointDefaults, - decorations - ); - } else { - cache[methodName] = octokit.request.defaults(endpointDefaults); - } - return cache[methodName]; - } -}; -function endpointsToMethods(octokit) { - const newMethods = {}; - for (const scope of endpointMethodsMap.keys()) { - newMethods[scope] = new Proxy({ octokit, scope, cache: {} }, handler); - } - return newMethods; -} -function decorate(octokit, scope, methodName, defaults, decorations) { - const requestWithDefaults = octokit.request.defaults(defaults); - function withDecorations(...args) { - let options = requestWithDefaults.endpoint.merge(...args); - if (decorations.mapToData) { - options = Object.assign({}, options, { - data: options[decorations.mapToData], - [decorations.mapToData]: void 0 - }); - return requestWithDefaults(options); - } - if (decorations.renamed) { - const [newScope, newMethodName] = decorations.renamed; - octokit.log.warn( - `octokit.${scope}.${methodName}() has been renamed to octokit.${newScope}.${newMethodName}()` - ); - } - if (decorations.deprecated) { - octokit.log.warn(decorations.deprecated); - } - if (decorations.renamedParameters) { - const options2 = requestWithDefaults.endpoint.merge(...args); - for (const [name, alias] of Object.entries( - decorations.renamedParameters - )) { - if (name in options2) { - octokit.log.warn( - `"${name}" parameter is deprecated for "octokit.${scope}.${methodName}()". Use "${alias}" instead` - ); - if (!(alias in options2)) { - options2[alias] = options2[name]; - } - delete options2[name]; - } - } - return requestWithDefaults(options2); - } - return requestWithDefaults(...args); - } - return Object.assign(withDecorations, requestWithDefaults); -} - -// pkg/dist-src/index.js -function restEndpointMethods(octokit) { - const api = endpointsToMethods(octokit); - return { - rest: api - }; -} -restEndpointMethods.VERSION = VERSION; -function legacyRestEndpointMethods(octokit) { - const api = endpointsToMethods(octokit); - return { - ...api, - rest: api - }; -} -legacyRestEndpointMethods.VERSION = VERSION; -// Annotate the CommonJS export names for ESM import in node: -0 && (0); - - -/***/ }), - -/***/ 93708: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - -"use strict"; - -var __create = Object.create; -var __defProp = Object.defineProperty; -var __getOwnPropDesc = Object.getOwnPropertyDescriptor; -var __getOwnPropNames = Object.getOwnPropertyNames; -var __getProtoOf = Object.getPrototypeOf; -var __hasOwnProp = Object.prototype.hasOwnProperty; -var __export = (target, all) => { - for (var name in all) - __defProp(target, name, { get: all[name], enumerable: true }); -}; -var __copyProps = (to, from, except, desc) => { - if (from && typeof from === "object" || typeof from === "function") { - for (let key of __getOwnPropNames(from)) - if (!__hasOwnProp.call(to, key) && key !== except) - __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); - } - return to; -}; -var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( - // If the importer is in node compatibility mode or this is not an ESM - // file that has been converted to a CommonJS file using a Babel- - // compatible transform (i.e. "__esModule" has not been set), then set - // "default" to the CommonJS "module.exports" for node compatibility. - isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, - mod -)); -var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); - -// pkg/dist-src/index.js -var dist_src_exports = {}; -__export(dist_src_exports, { - RequestError: () => RequestError -}); -module.exports = __toCommonJS(dist_src_exports); -var import_deprecation = __nccwpck_require__(14150); -var import_once = __toESM(__nccwpck_require__(55560)); -var logOnceCode = (0, import_once.default)((deprecation) => console.warn(deprecation)); -var logOnceHeaders = (0, import_once.default)((deprecation) => console.warn(deprecation)); -var RequestError = class extends Error { - constructor(message, statusCode, options) { - super(message); - if (Error.captureStackTrace) { - Error.captureStackTrace(this, this.constructor); - } - this.name = "HttpError"; - this.status = statusCode; - let headers; - if ("headers" in options && typeof options.headers !== "undefined") { - headers = options.headers; - } - if ("response" in options) { - this.response = options.response; - headers = options.response.headers; - } - const requestCopy = Object.assign({}, options.request); - if (options.request.headers.authorization) { - requestCopy.headers = Object.assign({}, options.request.headers, { - authorization: options.request.headers.authorization.replace( - / .*$/, - " [REDACTED]" - ) - }); - } - requestCopy.url = requestCopy.url.replace(/\bclient_secret=\w+/g, "client_secret=[REDACTED]").replace(/\baccess_token=\w+/g, "access_token=[REDACTED]"); - this.request = requestCopy; - Object.defineProperty(this, "code", { - get() { - logOnceCode( - new import_deprecation.Deprecation( - "[@octokit/request-error] `error.code` is deprecated, use `error.status`." - ) - ); - return statusCode; - } - }); - Object.defineProperty(this, "headers", { - get() { - logOnceHeaders( - new import_deprecation.Deprecation( - "[@octokit/request-error] `error.headers` is deprecated, use `error.response.headers`." - ) - ); - return headers || {}; - } - }); - } -}; -// Annotate the CommonJS export names for ESM import in node: -0 && (0); - - -/***/ }), - -/***/ 66255: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - -"use strict"; - -var __defProp = Object.defineProperty; -var __getOwnPropDesc = Object.getOwnPropertyDescriptor; -var __getOwnPropNames = Object.getOwnPropertyNames; -var __hasOwnProp = Object.prototype.hasOwnProperty; -var __export = (target, all) => { - for (var name in all) - __defProp(target, name, { get: all[name], enumerable: true }); -}; -var __copyProps = (to, from, except, desc) => { - if (from && typeof from === "object" || typeof from === "function") { - for (let key of __getOwnPropNames(from)) - if (!__hasOwnProp.call(to, key) && key !== except) - __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); - } - return to; -}; -var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); - -// pkg/dist-src/index.js -var dist_src_exports = {}; -__export(dist_src_exports, { - request: () => request -}); -module.exports = __toCommonJS(dist_src_exports); -var import_endpoint = __nccwpck_require__(54471); -var import_universal_user_agent = __nccwpck_require__(33843); - -// pkg/dist-src/version.js -var VERSION = "8.4.0"; - -// pkg/dist-src/is-plain-object.js -function isPlainObject(value) { - if (typeof value !== "object" || value === null) - return false; - if (Object.prototype.toString.call(value) !== "[object Object]") - return false; - const proto = Object.getPrototypeOf(value); - if (proto === null) - return true; - const Ctor = Object.prototype.hasOwnProperty.call(proto, "constructor") && proto.constructor; - return typeof Ctor === "function" && Ctor instanceof Ctor && Function.prototype.call(Ctor) === Function.prototype.call(value); -} - -// pkg/dist-src/fetch-wrapper.js -var import_request_error = __nccwpck_require__(93708); - -// pkg/dist-src/get-buffer-response.js -function getBufferResponse(response) { - return response.arrayBuffer(); -} - -// pkg/dist-src/fetch-wrapper.js -function fetchWrapper(requestOptions) { - var _a, _b, _c, _d; - const log = requestOptions.request && requestOptions.request.log ? requestOptions.request.log : console; - const parseSuccessResponseBody = ((_a = requestOptions.request) == null ? void 0 : _a.parseSuccessResponseBody) !== false; - if (isPlainObject(requestOptions.body) || Array.isArray(requestOptions.body)) { - requestOptions.body = JSON.stringify(requestOptions.body); - } - let headers = {}; - let status; - let url; - let { fetch } = globalThis; - if ((_b = requestOptions.request) == null ? void 0 : _b.fetch) { - fetch = requestOptions.request.fetch; - } - if (!fetch) { - throw new Error( - "fetch is not set. Please pass a fetch implementation as new Octokit({ request: { fetch }}). Learn more at https://github.com/octokit/octokit.js/#fetch-missing" - ); - } - return fetch(requestOptions.url, { - method: requestOptions.method, - body: requestOptions.body, - redirect: (_c = requestOptions.request) == null ? void 0 : _c.redirect, - headers: requestOptions.headers, - signal: (_d = requestOptions.request) == null ? void 0 : _d.signal, - // duplex must be set if request.body is ReadableStream or Async Iterables. - // See https://fetch.spec.whatwg.org/#dom-requestinit-duplex. - ...requestOptions.body && { duplex: "half" } - }).then(async (response) => { - url = response.url; - status = response.status; - for (const keyAndValue of response.headers) { - headers[keyAndValue[0]] = keyAndValue[1]; - } - if ("deprecation" in headers) { - const matches = headers.link && headers.link.match(/<([^>]+)>; rel="deprecation"/); - const deprecationLink = matches && matches.pop(); - log.warn( - `[@octokit/request] "${requestOptions.method} ${requestOptions.url}" is deprecated. It is scheduled to be removed on ${headers.sunset}${deprecationLink ? `. See ${deprecationLink}` : ""}` - ); - } - if (status === 204 || status === 205) { - return; - } - if (requestOptions.method === "HEAD") { - if (status < 400) { - return; - } - throw new import_request_error.RequestError(response.statusText, status, { - response: { - url, - status, - headers, - data: void 0 - }, - request: requestOptions - }); - } - if (status === 304) { - throw new import_request_error.RequestError("Not modified", status, { - response: { - url, - status, - headers, - data: await getResponseData(response) - }, - request: requestOptions - }); - } - if (status >= 400) { - const data = await getResponseData(response); - const error = new import_request_error.RequestError(toErrorMessage(data), status, { - response: { - url, - status, - headers, - data - }, - request: requestOptions - }); - throw error; - } - return parseSuccessResponseBody ? await getResponseData(response) : response.body; - }).then((data) => { - return { - status, - url, - headers, - data - }; - }).catch((error) => { - if (error instanceof import_request_error.RequestError) - throw error; - else if (error.name === "AbortError") - throw error; - let message = error.message; - if (error.name === "TypeError" && "cause" in error) { - if (error.cause instanceof Error) { - message = error.cause.message; - } else if (typeof error.cause === "string") { - message = error.cause; - } - } - throw new import_request_error.RequestError(message, 500, { - request: requestOptions - }); - }); -} -async function getResponseData(response) { - const contentType = response.headers.get("content-type"); - if (/application\/json/.test(contentType)) { - return response.json().catch(() => response.text()).catch(() => ""); - } - if (!contentType || /^text\/|charset=utf-8$/.test(contentType)) { - return response.text(); - } - return getBufferResponse(response); -} -function toErrorMessage(data) { - if (typeof data === "string") - return data; - let suffix; - if ("documentation_url" in data) { - suffix = ` - ${data.documentation_url}`; - } else { - suffix = ""; - } - if ("message" in data) { - if (Array.isArray(data.errors)) { - return `${data.message}: ${data.errors.map(JSON.stringify).join(", ")}${suffix}`; - } - return `${data.message}${suffix}`; - } - return `Unknown error: ${JSON.stringify(data)}`; -} - -// pkg/dist-src/with-defaults.js -function withDefaults(oldEndpoint, newDefaults) { - const endpoint2 = oldEndpoint.defaults(newDefaults); - const newApi = function(route, parameters) { - const endpointOptions = endpoint2.merge(route, parameters); - if (!endpointOptions.request || !endpointOptions.request.hook) { - return fetchWrapper(endpoint2.parse(endpointOptions)); - } - const request2 = (route2, parameters2) => { - return fetchWrapper( - endpoint2.parse(endpoint2.merge(route2, parameters2)) - ); - }; - Object.assign(request2, { - endpoint: endpoint2, - defaults: withDefaults.bind(null, endpoint2) - }); - return endpointOptions.request.hook(request2, endpointOptions); - }; - return Object.assign(newApi, { - endpoint: endpoint2, - defaults: withDefaults.bind(null, endpoint2) - }); -} - -// pkg/dist-src/index.js -var request = withDefaults(import_endpoint.endpoint, { - headers: { - "user-agent": `octokit-request.js/${VERSION} ${(0, import_universal_user_agent.getUserAgent)()}` - } -}); -// Annotate the CommonJS export names for ESM import in node: -0 && (0); - - -/***/ }), - -/***/ 39316: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - -var __defProp = Object.defineProperty; -var __getOwnPropDesc = Object.getOwnPropertyDescriptor; -var __getOwnPropNames = Object.getOwnPropertyNames; -var __hasOwnProp = Object.prototype.hasOwnProperty; -var __name = (target, value) => __defProp(target, "name", { value, configurable: true }); -var __export = (target, all) => { - for (var name in all) - __defProp(target, name, { get: all[name], enumerable: true }); -}; -var __copyProps = (to, from, except, desc) => { - if (from && typeof from === "object" || typeof from === "function") { - for (let key of __getOwnPropNames(from)) - if (!__hasOwnProp.call(to, key) && key !== except) - __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); - } - return to; -}; -var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); - -// src/index.ts -var src_exports = {}; -__export(src_exports, { - CONFIG_USE_DUALSTACK_ENDPOINT: () => CONFIG_USE_DUALSTACK_ENDPOINT, - CONFIG_USE_FIPS_ENDPOINT: () => CONFIG_USE_FIPS_ENDPOINT, - DEFAULT_USE_DUALSTACK_ENDPOINT: () => DEFAULT_USE_DUALSTACK_ENDPOINT, - DEFAULT_USE_FIPS_ENDPOINT: () => DEFAULT_USE_FIPS_ENDPOINT, - ENV_USE_DUALSTACK_ENDPOINT: () => ENV_USE_DUALSTACK_ENDPOINT, - ENV_USE_FIPS_ENDPOINT: () => ENV_USE_FIPS_ENDPOINT, - NODE_REGION_CONFIG_FILE_OPTIONS: () => NODE_REGION_CONFIG_FILE_OPTIONS, - NODE_REGION_CONFIG_OPTIONS: () => NODE_REGION_CONFIG_OPTIONS, - NODE_USE_DUALSTACK_ENDPOINT_CONFIG_OPTIONS: () => NODE_USE_DUALSTACK_ENDPOINT_CONFIG_OPTIONS, - NODE_USE_FIPS_ENDPOINT_CONFIG_OPTIONS: () => NODE_USE_FIPS_ENDPOINT_CONFIG_OPTIONS, - REGION_ENV_NAME: () => REGION_ENV_NAME, - REGION_INI_NAME: () => REGION_INI_NAME, - getRegionInfo: () => getRegionInfo, - resolveCustomEndpointsConfig: () => resolveCustomEndpointsConfig, - resolveEndpointsConfig: () => resolveEndpointsConfig, - resolveRegionConfig: () => resolveRegionConfig -}); -module.exports = __toCommonJS(src_exports); - -// src/endpointsConfig/NodeUseDualstackEndpointConfigOptions.ts -var import_util_config_provider = __nccwpck_require__(56716); -var ENV_USE_DUALSTACK_ENDPOINT = "AWS_USE_DUALSTACK_ENDPOINT"; -var CONFIG_USE_DUALSTACK_ENDPOINT = "use_dualstack_endpoint"; -var DEFAULT_USE_DUALSTACK_ENDPOINT = false; -var NODE_USE_DUALSTACK_ENDPOINT_CONFIG_OPTIONS = { - environmentVariableSelector: (env) => (0, import_util_config_provider.booleanSelector)(env, ENV_USE_DUALSTACK_ENDPOINT, import_util_config_provider.SelectorType.ENV), - configFileSelector: (profile) => (0, import_util_config_provider.booleanSelector)(profile, CONFIG_USE_DUALSTACK_ENDPOINT, import_util_config_provider.SelectorType.CONFIG), - default: false -}; - -// src/endpointsConfig/NodeUseFipsEndpointConfigOptions.ts - -var ENV_USE_FIPS_ENDPOINT = "AWS_USE_FIPS_ENDPOINT"; -var CONFIG_USE_FIPS_ENDPOINT = "use_fips_endpoint"; -var DEFAULT_USE_FIPS_ENDPOINT = false; -var NODE_USE_FIPS_ENDPOINT_CONFIG_OPTIONS = { - environmentVariableSelector: (env) => (0, import_util_config_provider.booleanSelector)(env, ENV_USE_FIPS_ENDPOINT, import_util_config_provider.SelectorType.ENV), - configFileSelector: (profile) => (0, import_util_config_provider.booleanSelector)(profile, CONFIG_USE_FIPS_ENDPOINT, import_util_config_provider.SelectorType.CONFIG), - default: false -}; - -// src/endpointsConfig/resolveCustomEndpointsConfig.ts -var import_util_middleware = __nccwpck_require__(76324); -var resolveCustomEndpointsConfig = /* @__PURE__ */ __name((input) => { - const { endpoint, urlParser } = input; - return { - ...input, - tls: input.tls ?? true, - endpoint: (0, import_util_middleware.normalizeProvider)(typeof endpoint === "string" ? urlParser(endpoint) : endpoint), - isCustomEndpoint: true, - useDualstackEndpoint: (0, import_util_middleware.normalizeProvider)(input.useDualstackEndpoint ?? false) - }; -}, "resolveCustomEndpointsConfig"); - -// src/endpointsConfig/resolveEndpointsConfig.ts - - -// src/endpointsConfig/utils/getEndpointFromRegion.ts -var getEndpointFromRegion = /* @__PURE__ */ __name(async (input) => { - const { tls = true } = input; - const region = await input.region(); - const dnsHostRegex = new RegExp(/^([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9-]{0,61}[a-zA-Z0-9])$/); - if (!dnsHostRegex.test(region)) { - throw new Error("Invalid region in client config"); - } - const useDualstackEndpoint = await input.useDualstackEndpoint(); - const useFipsEndpoint = await input.useFipsEndpoint(); - const { hostname } = await input.regionInfoProvider(region, { useDualstackEndpoint, useFipsEndpoint }) ?? {}; - if (!hostname) { - throw new Error("Cannot resolve hostname from client config"); - } - return input.urlParser(`${tls ? "https:" : "http:"}//${hostname}`); -}, "getEndpointFromRegion"); - -// src/endpointsConfig/resolveEndpointsConfig.ts -var resolveEndpointsConfig = /* @__PURE__ */ __name((input) => { - const useDualstackEndpoint = (0, import_util_middleware.normalizeProvider)(input.useDualstackEndpoint ?? false); - const { endpoint, useFipsEndpoint, urlParser } = input; - return { - ...input, - tls: input.tls ?? true, - endpoint: endpoint ? (0, import_util_middleware.normalizeProvider)(typeof endpoint === "string" ? urlParser(endpoint) : endpoint) : () => getEndpointFromRegion({ ...input, useDualstackEndpoint, useFipsEndpoint }), - isCustomEndpoint: !!endpoint, - useDualstackEndpoint - }; -}, "resolveEndpointsConfig"); - -// src/regionConfig/config.ts -var REGION_ENV_NAME = "AWS_REGION"; -var REGION_INI_NAME = "region"; -var NODE_REGION_CONFIG_OPTIONS = { - environmentVariableSelector: (env) => env[REGION_ENV_NAME], - configFileSelector: (profile) => profile[REGION_INI_NAME], - default: () => { - throw new Error("Region is missing"); - } -}; -var NODE_REGION_CONFIG_FILE_OPTIONS = { - preferredFile: "credentials" -}; - -// src/regionConfig/isFipsRegion.ts -var isFipsRegion = /* @__PURE__ */ __name((region) => typeof region === "string" && (region.startsWith("fips-") || region.endsWith("-fips")), "isFipsRegion"); - -// src/regionConfig/getRealRegion.ts -var getRealRegion = /* @__PURE__ */ __name((region) => isFipsRegion(region) ? ["fips-aws-global", "aws-fips"].includes(region) ? "us-east-1" : region.replace(/fips-(dkr-|prod-)?|-fips/, "") : region, "getRealRegion"); - -// src/regionConfig/resolveRegionConfig.ts -var resolveRegionConfig = /* @__PURE__ */ __name((input) => { - const { region, useFipsEndpoint } = input; - if (!region) { - throw new Error("Region is missing"); - } - return { - ...input, - region: async () => { - if (typeof region === "string") { - return getRealRegion(region); - } - const providedRegion = await region(); - return getRealRegion(providedRegion); - }, - useFipsEndpoint: async () => { - const providedRegion = typeof region === "string" ? region : await region(); - if (isFipsRegion(providedRegion)) { - return true; - } - return typeof useFipsEndpoint !== "function" ? Promise.resolve(!!useFipsEndpoint) : useFipsEndpoint(); - } - }; -}, "resolveRegionConfig"); - -// src/regionInfo/getHostnameFromVariants.ts -var getHostnameFromVariants = /* @__PURE__ */ __name((variants = [], { useFipsEndpoint, useDualstackEndpoint }) => { - var _a; - return (_a = variants.find( - ({ tags }) => useFipsEndpoint === tags.includes("fips") && useDualstackEndpoint === tags.includes("dualstack") - )) == null ? void 0 : _a.hostname; -}, "getHostnameFromVariants"); - -// src/regionInfo/getResolvedHostname.ts -var getResolvedHostname = /* @__PURE__ */ __name((resolvedRegion, { regionHostname, partitionHostname }) => regionHostname ? regionHostname : partitionHostname ? partitionHostname.replace("{region}", resolvedRegion) : void 0, "getResolvedHostname"); - -// src/regionInfo/getResolvedPartition.ts -var getResolvedPartition = /* @__PURE__ */ __name((region, { partitionHash }) => Object.keys(partitionHash || {}).find((key) => partitionHash[key].regions.includes(region)) ?? "aws", "getResolvedPartition"); - -// src/regionInfo/getResolvedSigningRegion.ts -var getResolvedSigningRegion = /* @__PURE__ */ __name((hostname, { signingRegion, regionRegex, useFipsEndpoint }) => { - if (signingRegion) { - return signingRegion; - } else if (useFipsEndpoint) { - const regionRegexJs = regionRegex.replace("\\\\", "\\").replace(/^\^/g, "\\.").replace(/\$$/g, "\\."); - const regionRegexmatchArray = hostname.match(regionRegexJs); - if (regionRegexmatchArray) { - return regionRegexmatchArray[0].slice(1, -1); - } - } -}, "getResolvedSigningRegion"); - -// src/regionInfo/getRegionInfo.ts -var getRegionInfo = /* @__PURE__ */ __name((region, { - useFipsEndpoint = false, - useDualstackEndpoint = false, - signingService, - regionHash, - partitionHash -}) => { - var _a, _b, _c, _d, _e; - const partition = getResolvedPartition(region, { partitionHash }); - const resolvedRegion = region in regionHash ? region : ((_a = partitionHash[partition]) == null ? void 0 : _a.endpoint) ?? region; - const hostnameOptions = { useFipsEndpoint, useDualstackEndpoint }; - const regionHostname = getHostnameFromVariants((_b = regionHash[resolvedRegion]) == null ? void 0 : _b.variants, hostnameOptions); - const partitionHostname = getHostnameFromVariants((_c = partitionHash[partition]) == null ? void 0 : _c.variants, hostnameOptions); - const hostname = getResolvedHostname(resolvedRegion, { regionHostname, partitionHostname }); - if (hostname === void 0) { - throw new Error(`Endpoint resolution failed for: ${{ resolvedRegion, useFipsEndpoint, useDualstackEndpoint }}`); - } - const signingRegion = getResolvedSigningRegion(hostname, { - signingRegion: (_d = regionHash[resolvedRegion]) == null ? void 0 : _d.signingRegion, - regionRegex: partitionHash[partition].regionRegex, - useFipsEndpoint - }); - return { - partition, - signingService, - hostname, - ...signingRegion && { signingRegion }, - ...((_e = regionHash[resolvedRegion]) == null ? void 0 : _e.signingService) && { - signingService: regionHash[resolvedRegion].signingService - } - }; -}, "getRegionInfo"); -// Annotate the CommonJS export names for ESM import in node: - -0 && (0); - - - -/***/ }), - -/***/ 90402: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - -var __defProp = Object.defineProperty; -var __getOwnPropDesc = Object.getOwnPropertyDescriptor; -var __getOwnPropNames = Object.getOwnPropertyNames; -var __hasOwnProp = Object.prototype.hasOwnProperty; -var __name = (target, value) => __defProp(target, "name", { value, configurable: true }); -var __export = (target, all) => { - for (var name in all) - __defProp(target, name, { get: all[name], enumerable: true }); -}; -var __copyProps = (to, from, except, desc) => { - if (from && typeof from === "object" || typeof from === "function") { - for (let key of __getOwnPropNames(from)) - if (!__hasOwnProp.call(to, key) && key !== except) - __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); - } - return to; -}; -var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); - -// src/index.ts -var src_exports = {}; -__export(src_exports, { - DefaultIdentityProviderConfig: () => DefaultIdentityProviderConfig, - EXPIRATION_MS: () => EXPIRATION_MS, - HttpApiKeyAuthSigner: () => HttpApiKeyAuthSigner, - HttpBearerAuthSigner: () => HttpBearerAuthSigner, - NoAuthSigner: () => NoAuthSigner, - RequestBuilder: () => RequestBuilder, - createIsIdentityExpiredFunction: () => createIsIdentityExpiredFunction, - createPaginator: () => createPaginator, - doesIdentityRequireRefresh: () => doesIdentityRequireRefresh, - getHttpAuthSchemeEndpointRuleSetPlugin: () => getHttpAuthSchemeEndpointRuleSetPlugin, - getHttpAuthSchemePlugin: () => getHttpAuthSchemePlugin, - getHttpSigningPlugin: () => getHttpSigningPlugin, - getSmithyContext: () => getSmithyContext3, - httpAuthSchemeEndpointRuleSetMiddlewareOptions: () => httpAuthSchemeEndpointRuleSetMiddlewareOptions, - httpAuthSchemeMiddleware: () => httpAuthSchemeMiddleware, - httpAuthSchemeMiddlewareOptions: () => httpAuthSchemeMiddlewareOptions, - httpSigningMiddleware: () => httpSigningMiddleware, - httpSigningMiddlewareOptions: () => httpSigningMiddlewareOptions, - isIdentityExpired: () => isIdentityExpired, - memoizeIdentityProvider: () => memoizeIdentityProvider, - normalizeProvider: () => normalizeProvider, - requestBuilder: () => requestBuilder -}); -module.exports = __toCommonJS(src_exports); - -// src/middleware-http-auth-scheme/httpAuthSchemeMiddleware.ts -var import_util_middleware = __nccwpck_require__(76324); -function convertHttpAuthSchemesToMap(httpAuthSchemes) { - const map = /* @__PURE__ */ new Map(); - for (const scheme of httpAuthSchemes) { - map.set(scheme.schemeId, scheme); - } - return map; -} -__name(convertHttpAuthSchemesToMap, "convertHttpAuthSchemesToMap"); -var httpAuthSchemeMiddleware = /* @__PURE__ */ __name((config, mwOptions) => (next, context) => async (args) => { - var _a; - const options = config.httpAuthSchemeProvider( - await mwOptions.httpAuthSchemeParametersProvider(config, context, args.input) - ); - const authSchemes = convertHttpAuthSchemesToMap(config.httpAuthSchemes); - const smithyContext = (0, import_util_middleware.getSmithyContext)(context); - const failureReasons = []; - for (const option of options) { - const scheme = authSchemes.get(option.schemeId); - if (!scheme) { - failureReasons.push(`HttpAuthScheme \`${option.schemeId}\` was not enabled for this service.`); - continue; - } - const identityProvider = scheme.identityProvider(await mwOptions.identityProviderConfigProvider(config)); - if (!identityProvider) { - failureReasons.push(`HttpAuthScheme \`${option.schemeId}\` did not have an IdentityProvider configured.`); - continue; - } - const { identityProperties = {}, signingProperties = {} } = ((_a = option.propertiesExtractor) == null ? void 0 : _a.call(option, config, context)) || {}; - option.identityProperties = Object.assign(option.identityProperties || {}, identityProperties); - option.signingProperties = Object.assign(option.signingProperties || {}, signingProperties); - smithyContext.selectedHttpAuthScheme = { - httpAuthOption: option, - identity: await identityProvider(option.identityProperties), - signer: scheme.signer - }; - break; - } - if (!smithyContext.selectedHttpAuthScheme) { - throw new Error(failureReasons.join("\n")); - } - return next(args); -}, "httpAuthSchemeMiddleware"); - -// src/middleware-http-auth-scheme/getHttpAuthSchemeEndpointRuleSetPlugin.ts -var import_middleware_endpoint = __nccwpck_require__(40099); -var httpAuthSchemeEndpointRuleSetMiddlewareOptions = { - step: "serialize", - tags: ["HTTP_AUTH_SCHEME"], - name: "httpAuthSchemeMiddleware", - override: true, - relation: "before", - toMiddleware: import_middleware_endpoint.endpointMiddlewareOptions.name -}; -var getHttpAuthSchemeEndpointRuleSetPlugin = /* @__PURE__ */ __name((config, { - httpAuthSchemeParametersProvider, - identityProviderConfigProvider -}) => ({ - applyToStack: (clientStack) => { - clientStack.addRelativeTo( - httpAuthSchemeMiddleware(config, { - httpAuthSchemeParametersProvider, - identityProviderConfigProvider - }), - httpAuthSchemeEndpointRuleSetMiddlewareOptions - ); - } -}), "getHttpAuthSchemeEndpointRuleSetPlugin"); - -// src/middleware-http-auth-scheme/getHttpAuthSchemePlugin.ts -var import_middleware_serde = __nccwpck_require__(83255); -var httpAuthSchemeMiddlewareOptions = { - step: "serialize", - tags: ["HTTP_AUTH_SCHEME"], - name: "httpAuthSchemeMiddleware", - override: true, - relation: "before", - toMiddleware: import_middleware_serde.serializerMiddlewareOption.name -}; -var getHttpAuthSchemePlugin = /* @__PURE__ */ __name((config, { - httpAuthSchemeParametersProvider, - identityProviderConfigProvider -}) => ({ - applyToStack: (clientStack) => { - clientStack.addRelativeTo( - httpAuthSchemeMiddleware(config, { - httpAuthSchemeParametersProvider, - identityProviderConfigProvider - }), - httpAuthSchemeMiddlewareOptions - ); - } -}), "getHttpAuthSchemePlugin"); - -// src/middleware-http-signing/httpSigningMiddleware.ts -var import_protocol_http = __nccwpck_require__(72356); - -var defaultErrorHandler = /* @__PURE__ */ __name((signingProperties) => (error) => { - throw error; -}, "defaultErrorHandler"); -var defaultSuccessHandler = /* @__PURE__ */ __name((httpResponse, signingProperties) => { -}, "defaultSuccessHandler"); -var httpSigningMiddleware = /* @__PURE__ */ __name((config) => (next, context) => async (args) => { - if (!import_protocol_http.HttpRequest.isInstance(args.request)) { - return next(args); - } - const smithyContext = (0, import_util_middleware.getSmithyContext)(context); - const scheme = smithyContext.selectedHttpAuthScheme; - if (!scheme) { - throw new Error(`No HttpAuthScheme was selected: unable to sign request`); - } - const { - httpAuthOption: { signingProperties = {} }, - identity, - signer - } = scheme; - const output = await next({ - ...args, - request: await signer.sign(args.request, identity, signingProperties) - }).catch((signer.errorHandler || defaultErrorHandler)(signingProperties)); - (signer.successHandler || defaultSuccessHandler)(output.response, signingProperties); - return output; -}, "httpSigningMiddleware"); - -// src/middleware-http-signing/getHttpSigningMiddleware.ts -var import_middleware_retry = __nccwpck_require__(19618); -var httpSigningMiddlewareOptions = { - step: "finalizeRequest", - tags: ["HTTP_SIGNING"], - name: "httpSigningMiddleware", - aliases: ["apiKeyMiddleware", "tokenMiddleware", "awsAuthMiddleware"], - override: true, - relation: "after", - toMiddleware: import_middleware_retry.retryMiddlewareOptions.name -}; -var getHttpSigningPlugin = /* @__PURE__ */ __name((config) => ({ - applyToStack: (clientStack) => { - clientStack.addRelativeTo(httpSigningMiddleware(config), httpSigningMiddlewareOptions); - } -}), "getHttpSigningPlugin"); - -// src/util-identity-and-auth/DefaultIdentityProviderConfig.ts -var _DefaultIdentityProviderConfig = class _DefaultIdentityProviderConfig { - /** - * Creates an IdentityProviderConfig with a record of scheme IDs to identity providers. - * - * @param config scheme IDs and identity providers to configure - */ - constructor(config) { - this.authSchemes = /* @__PURE__ */ new Map(); - for (const [key, value] of Object.entries(config)) { - if (value !== void 0) { - this.authSchemes.set(key, value); - } - } - } - getIdentityProvider(schemeId) { - return this.authSchemes.get(schemeId); - } -}; -__name(_DefaultIdentityProviderConfig, "DefaultIdentityProviderConfig"); -var DefaultIdentityProviderConfig = _DefaultIdentityProviderConfig; - -// src/util-identity-and-auth/httpAuthSchemes/httpApiKeyAuth.ts - -var import_types = __nccwpck_require__(82526); -var _HttpApiKeyAuthSigner = class _HttpApiKeyAuthSigner { - async sign(httpRequest, identity, signingProperties) { - if (!signingProperties) { - throw new Error( - "request could not be signed with `apiKey` since the `name` and `in` signer properties are missing" - ); - } - if (!signingProperties.name) { - throw new Error("request could not be signed with `apiKey` since the `name` signer property is missing"); - } - if (!signingProperties.in) { - throw new Error("request could not be signed with `apiKey` since the `in` signer property is missing"); - } - if (!identity.apiKey) { - throw new Error("request could not be signed with `apiKey` since the `apiKey` is not defined"); - } - const clonedRequest = import_protocol_http.HttpRequest.clone(httpRequest); - if (signingProperties.in === import_types.HttpApiKeyAuthLocation.QUERY) { - clonedRequest.query[signingProperties.name] = identity.apiKey; - } else if (signingProperties.in === import_types.HttpApiKeyAuthLocation.HEADER) { - clonedRequest.headers[signingProperties.name] = signingProperties.scheme ? `${signingProperties.scheme} ${identity.apiKey}` : identity.apiKey; - } else { - throw new Error( - "request can only be signed with `apiKey` locations `query` or `header`, but found: `" + signingProperties.in + "`" - ); - } - return clonedRequest; - } -}; -__name(_HttpApiKeyAuthSigner, "HttpApiKeyAuthSigner"); -var HttpApiKeyAuthSigner = _HttpApiKeyAuthSigner; - -// src/util-identity-and-auth/httpAuthSchemes/httpBearerAuth.ts - -var _HttpBearerAuthSigner = class _HttpBearerAuthSigner { - async sign(httpRequest, identity, signingProperties) { - const clonedRequest = import_protocol_http.HttpRequest.clone(httpRequest); - if (!identity.token) { - throw new Error("request could not be signed with `token` since the `token` is not defined"); - } - clonedRequest.headers["Authorization"] = `Bearer ${identity.token}`; - return clonedRequest; - } -}; -__name(_HttpBearerAuthSigner, "HttpBearerAuthSigner"); -var HttpBearerAuthSigner = _HttpBearerAuthSigner; - -// src/util-identity-and-auth/httpAuthSchemes/noAuth.ts -var _NoAuthSigner = class _NoAuthSigner { - async sign(httpRequest, identity, signingProperties) { - return httpRequest; - } -}; -__name(_NoAuthSigner, "NoAuthSigner"); -var NoAuthSigner = _NoAuthSigner; - -// src/util-identity-and-auth/memoizeIdentityProvider.ts -var createIsIdentityExpiredFunction = /* @__PURE__ */ __name((expirationMs) => (identity) => doesIdentityRequireRefresh(identity) && identity.expiration.getTime() - Date.now() < expirationMs, "createIsIdentityExpiredFunction"); -var EXPIRATION_MS = 3e5; -var isIdentityExpired = createIsIdentityExpiredFunction(EXPIRATION_MS); -var doesIdentityRequireRefresh = /* @__PURE__ */ __name((identity) => identity.expiration !== void 0, "doesIdentityRequireRefresh"); -var memoizeIdentityProvider = /* @__PURE__ */ __name((provider, isExpired, requiresRefresh) => { - if (provider === void 0) { - return void 0; - } - const normalizedProvider = typeof provider !== "function" ? async () => Promise.resolve(provider) : provider; - let resolved; - let pending; - let hasResult; - let isConstant = false; - const coalesceProvider = /* @__PURE__ */ __name(async (options) => { - if (!pending) { - pending = normalizedProvider(options); - } - try { - resolved = await pending; - hasResult = true; - isConstant = false; - } finally { - pending = void 0; - } - return resolved; - }, "coalesceProvider"); - if (isExpired === void 0) { - return async (options) => { - if (!hasResult || (options == null ? void 0 : options.forceRefresh)) { - resolved = await coalesceProvider(options); - } - return resolved; - }; - } - return async (options) => { - if (!hasResult || (options == null ? void 0 : options.forceRefresh)) { - resolved = await coalesceProvider(options); - } - if (isConstant) { - return resolved; - } - if (!requiresRefresh(resolved)) { - isConstant = true; - return resolved; - } - if (isExpired(resolved)) { - await coalesceProvider(options); - return resolved; - } - return resolved; - }; -}, "memoizeIdentityProvider"); - -// src/getSmithyContext.ts - -var getSmithyContext3 = /* @__PURE__ */ __name((context) => context[import_types.SMITHY_CONTEXT_KEY] || (context[import_types.SMITHY_CONTEXT_KEY] = {}), "getSmithyContext"); - -// src/normalizeProvider.ts -var normalizeProvider = /* @__PURE__ */ __name((input) => { - if (typeof input === "function") - return input; - const promisified = Promise.resolve(input); - return () => promisified; -}, "normalizeProvider"); - -// src/protocols/requestBuilder.ts - -var import_smithy_client = __nccwpck_require__(61411); -function requestBuilder(input, context) { - return new RequestBuilder(input, context); -} -__name(requestBuilder, "requestBuilder"); -var _RequestBuilder = class _RequestBuilder { - constructor(input, context) { - this.input = input; - this.context = context; - this.query = {}; - this.method = ""; - this.headers = {}; - this.path = ""; - this.body = null; - this.hostname = ""; - this.resolvePathStack = []; - } - async build() { - const { hostname, protocol = "https", port, path: basePath } = await this.context.endpoint(); - this.path = basePath; - for (const resolvePath of this.resolvePathStack) { - resolvePath(this.path); - } - return new import_protocol_http.HttpRequest({ - protocol, - hostname: this.hostname || hostname, - port, - method: this.method, - path: this.path, - query: this.query, - body: this.body, - headers: this.headers - }); - } - /** - * Brevity setter for "hostname". - */ - hn(hostname) { - this.hostname = hostname; - return this; - } - /** - * Brevity initial builder for "basepath". - */ - bp(uriLabel) { - this.resolvePathStack.push((basePath) => { - this.path = `${(basePath == null ? void 0 : basePath.endsWith("/")) ? basePath.slice(0, -1) : basePath || ""}` + uriLabel; - }); - return this; - } - /** - * Brevity incremental builder for "path". - */ - p(memberName, labelValueProvider, uriLabel, isGreedyLabel) { - this.resolvePathStack.push((path) => { - this.path = (0, import_smithy_client.resolvedPath)(path, this.input, memberName, labelValueProvider, uriLabel, isGreedyLabel); - }); - return this; - } - /** - * Brevity setter for "headers". - */ - h(headers) { - this.headers = headers; - return this; - } - /** - * Brevity setter for "query". - */ - q(query) { - this.query = query; - return this; - } - /** - * Brevity setter for "body". - */ - b(body) { - this.body = body; - return this; - } - /** - * Brevity setter for "method". - */ - m(method) { - this.method = method; - return this; - } -}; -__name(_RequestBuilder, "RequestBuilder"); -var RequestBuilder = _RequestBuilder; - -// src/pagination/createPaginator.ts -var makePagedClientRequest = /* @__PURE__ */ __name(async (CommandCtor, client, input, ...args) => { - return await client.send(new CommandCtor(input), ...args); -}, "makePagedClientRequest"); -function createPaginator(ClientCtor, CommandCtor, inputTokenName, outputTokenName, pageSizeTokenName) { - return /* @__PURE__ */ __name(async function* paginateOperation(config, input, ...additionalArguments) { - let token = config.startingToken || void 0; - let hasNext = true; - let page; - while (hasNext) { - input[inputTokenName] = token; - if (pageSizeTokenName) { - input[pageSizeTokenName] = input[pageSizeTokenName] ?? config.pageSize; - } - if (config.client instanceof ClientCtor) { - page = await makePagedClientRequest(CommandCtor, config.client, input, ...additionalArguments); - } else { - throw new Error(`Invalid client, expected instance of ${ClientCtor.name}`); - } - yield page; - const prevToken = token; - token = get(page, outputTokenName); - hasNext = !!(token && (!config.stopOnSameToken || token !== prevToken)); - } - return void 0; - }, "paginateOperation"); -} -__name(createPaginator, "createPaginator"); -var get = /* @__PURE__ */ __name((fromObject, path) => { - let cursor = fromObject; - const pathComponents = path.split("."); - for (const step of pathComponents) { - if (!cursor || typeof cursor !== "object") { - return void 0; - } - cursor = cursor[step]; - } - return cursor; -}, "get"); -// Annotate the CommonJS export names for ESM import in node: - -0 && (0); - - - -/***/ }), - -/***/ 82526: -/***/ ((module) => { - -var __defProp = Object.defineProperty; -var __getOwnPropDesc = Object.getOwnPropertyDescriptor; -var __getOwnPropNames = Object.getOwnPropertyNames; -var __hasOwnProp = Object.prototype.hasOwnProperty; -var __name = (target, value) => __defProp(target, "name", { value, configurable: true }); -var __export = (target, all) => { - for (var name in all) - __defProp(target, name, { get: all[name], enumerable: true }); -}; -var __copyProps = (to, from, except, desc) => { - if (from && typeof from === "object" || typeof from === "function") { - for (let key of __getOwnPropNames(from)) - if (!__hasOwnProp.call(to, key) && key !== except) - __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); - } - return to; -}; -var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); - -// src/index.ts -var src_exports = {}; -__export(src_exports, { - AlgorithmId: () => AlgorithmId, - EndpointURLScheme: () => EndpointURLScheme, - FieldPosition: () => FieldPosition, - HttpApiKeyAuthLocation: () => HttpApiKeyAuthLocation, - HttpAuthLocation: () => HttpAuthLocation, - IniSectionType: () => IniSectionType, - RequestHandlerProtocol: () => RequestHandlerProtocol, - SMITHY_CONTEXT_KEY: () => SMITHY_CONTEXT_KEY, - getDefaultClientConfiguration: () => getDefaultClientConfiguration, - resolveDefaultRuntimeConfig: () => resolveDefaultRuntimeConfig -}); -module.exports = __toCommonJS(src_exports); - -// src/auth/auth.ts -var HttpAuthLocation = /* @__PURE__ */ ((HttpAuthLocation2) => { - HttpAuthLocation2["HEADER"] = "header"; - HttpAuthLocation2["QUERY"] = "query"; - return HttpAuthLocation2; -})(HttpAuthLocation || {}); - -// src/auth/HttpApiKeyAuth.ts -var HttpApiKeyAuthLocation = /* @__PURE__ */ ((HttpApiKeyAuthLocation2) => { - HttpApiKeyAuthLocation2["HEADER"] = "header"; - HttpApiKeyAuthLocation2["QUERY"] = "query"; - return HttpApiKeyAuthLocation2; -})(HttpApiKeyAuthLocation || {}); - -// src/endpoint.ts -var EndpointURLScheme = /* @__PURE__ */ ((EndpointURLScheme2) => { - EndpointURLScheme2["HTTP"] = "http"; - EndpointURLScheme2["HTTPS"] = "https"; - return EndpointURLScheme2; -})(EndpointURLScheme || {}); - -// src/extensions/checksum.ts -var AlgorithmId = /* @__PURE__ */ ((AlgorithmId2) => { - AlgorithmId2["MD5"] = "md5"; - AlgorithmId2["CRC32"] = "crc32"; - AlgorithmId2["CRC32C"] = "crc32c"; - AlgorithmId2["SHA1"] = "sha1"; - AlgorithmId2["SHA256"] = "sha256"; - return AlgorithmId2; -})(AlgorithmId || {}); -var getChecksumConfiguration = /* @__PURE__ */ __name((runtimeConfig) => { - const checksumAlgorithms = []; - if (runtimeConfig.sha256 !== void 0) { - checksumAlgorithms.push({ - algorithmId: () => "sha256" /* SHA256 */, - checksumConstructor: () => runtimeConfig.sha256 - }); - } - if (runtimeConfig.md5 != void 0) { - checksumAlgorithms.push({ - algorithmId: () => "md5" /* MD5 */, - checksumConstructor: () => runtimeConfig.md5 - }); - } - return { - _checksumAlgorithms: checksumAlgorithms, - addChecksumAlgorithm(algo) { - this._checksumAlgorithms.push(algo); - }, - checksumAlgorithms() { - return this._checksumAlgorithms; - } - }; -}, "getChecksumConfiguration"); -var resolveChecksumRuntimeConfig = /* @__PURE__ */ __name((clientConfig) => { - const runtimeConfig = {}; - clientConfig.checksumAlgorithms().forEach((checksumAlgorithm) => { - runtimeConfig[checksumAlgorithm.algorithmId()] = checksumAlgorithm.checksumConstructor(); - }); - return runtimeConfig; -}, "resolveChecksumRuntimeConfig"); - -// src/extensions/defaultClientConfiguration.ts -var getDefaultClientConfiguration = /* @__PURE__ */ __name((runtimeConfig) => { - return { - ...getChecksumConfiguration(runtimeConfig) - }; -}, "getDefaultClientConfiguration"); -var resolveDefaultRuntimeConfig = /* @__PURE__ */ __name((config) => { - return { - ...resolveChecksumRuntimeConfig(config) - }; -}, "resolveDefaultRuntimeConfig"); - -// src/http.ts -var FieldPosition = /* @__PURE__ */ ((FieldPosition2) => { - FieldPosition2[FieldPosition2["HEADER"] = 0] = "HEADER"; - FieldPosition2[FieldPosition2["TRAILER"] = 1] = "TRAILER"; - return FieldPosition2; -})(FieldPosition || {}); - -// src/middleware.ts -var SMITHY_CONTEXT_KEY = "__smithy_context"; - -// src/profile.ts -var IniSectionType = /* @__PURE__ */ ((IniSectionType2) => { - IniSectionType2["PROFILE"] = "profile"; - IniSectionType2["SSO_SESSION"] = "sso-session"; - IniSectionType2["SERVICES"] = "services"; - return IniSectionType2; -})(IniSectionType || {}); - -// src/transfer.ts -var RequestHandlerProtocol = /* @__PURE__ */ ((RequestHandlerProtocol2) => { - RequestHandlerProtocol2["HTTP_0_9"] = "http/0.9"; - RequestHandlerProtocol2["HTTP_1_0"] = "http/1.0"; - RequestHandlerProtocol2["TDS_8_0"] = "tds/8.0"; - return RequestHandlerProtocol2; -})(RequestHandlerProtocol || {}); -// Annotate the CommonJS export names for ESM import in node: - -0 && (0); - - - -/***/ }), - -/***/ 40566: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - -var __defProp = Object.defineProperty; -var __getOwnPropDesc = Object.getOwnPropertyDescriptor; -var __getOwnPropNames = Object.getOwnPropertyNames; -var __hasOwnProp = Object.prototype.hasOwnProperty; -var __name = (target, value) => __defProp(target, "name", { value, configurable: true }); -var __export = (target, all) => { - for (var name in all) - __defProp(target, name, { get: all[name], enumerable: true }); -}; -var __copyProps = (to, from, except, desc) => { - if (from && typeof from === "object" || typeof from === "function") { - for (let key of __getOwnPropNames(from)) - if (!__hasOwnProp.call(to, key) && key !== except) - __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + listFollowingForUser: ["GET /users/{username}/following"], + listGpgKeysForAuthenticated: [ + "GET /user/gpg_keys", + {}, + { renamed: ["users", "listGpgKeysForAuthenticatedUser"] } + ], + listGpgKeysForAuthenticatedUser: ["GET /user/gpg_keys"], + listGpgKeysForUser: ["GET /users/{username}/gpg_keys"], + listPublicEmailsForAuthenticated: [ + "GET /user/public_emails", + {}, + { renamed: ["users", "listPublicEmailsForAuthenticatedUser"] } + ], + listPublicEmailsForAuthenticatedUser: ["GET /user/public_emails"], + listPublicKeysForUser: ["GET /users/{username}/keys"], + listPublicSshKeysForAuthenticated: [ + "GET /user/keys", + {}, + { renamed: ["users", "listPublicSshKeysForAuthenticatedUser"] } + ], + listPublicSshKeysForAuthenticatedUser: ["GET /user/keys"], + listSocialAccountsForAuthenticatedUser: ["GET /user/social_accounts"], + listSocialAccountsForUser: ["GET /users/{username}/social_accounts"], + listSshSigningKeysForAuthenticatedUser: ["GET /user/ssh_signing_keys"], + listSshSigningKeysForUser: ["GET /users/{username}/ssh_signing_keys"], + setPrimaryEmailVisibilityForAuthenticated: [ + "PATCH /user/email/visibility", + {}, + { renamed: ["users", "setPrimaryEmailVisibilityForAuthenticatedUser"] } + ], + setPrimaryEmailVisibilityForAuthenticatedUser: [ + "PATCH /user/email/visibility" + ], + unblock: ["DELETE /user/blocks/{username}"], + unfollow: ["DELETE /user/following/{username}"], + updateAuthenticated: ["PATCH /user"] } - return to; }; -var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); - -// src/index.ts -var src_exports = {}; -__export(src_exports, { - DEFAULT_MAX_RETRIES: () => DEFAULT_MAX_RETRIES, - DEFAULT_TIMEOUT: () => DEFAULT_TIMEOUT, - ENV_CMDS_AUTH_TOKEN: () => ENV_CMDS_AUTH_TOKEN, - ENV_CMDS_FULL_URI: () => ENV_CMDS_FULL_URI, - ENV_CMDS_RELATIVE_URI: () => ENV_CMDS_RELATIVE_URI, - Endpoint: () => Endpoint, - fromContainerMetadata: () => fromContainerMetadata, - fromInstanceMetadata: () => fromInstanceMetadata, - getInstanceMetadataEndpoint: () => getInstanceMetadataEndpoint, - httpRequest: () => httpRequest, - providerConfigFromInit: () => providerConfigFromInit -}); -module.exports = __toCommonJS(src_exports); - -// src/fromContainerMetadata.ts - -var import_url = __nccwpck_require__(87016); - -// src/remoteProvider/httpRequest.ts -var import_property_provider = __nccwpck_require__(71238); -var import_buffer = __nccwpck_require__(20181); -var import_http = __nccwpck_require__(58611); -function httpRequest(options) { - return new Promise((resolve, reject) => { - var _a; - const req = (0, import_http.request)({ - method: "GET", - ...options, - // Node.js http module doesn't accept hostname with square brackets - // Refs: https://github.com/nodejs/node/issues/39738 - hostname: (_a = options.hostname) == null ? void 0 : _a.replace(/^\[(.+)\]$/, "$1") - }); - req.on("error", (err) => { - reject(Object.assign(new import_property_provider.ProviderError("Unable to connect to instance metadata service"), err)); - req.destroy(); - }); - req.on("timeout", () => { - reject(new import_property_provider.ProviderError("TimeoutError from instance metadata service")); - req.destroy(); - }); - req.on("response", (res) => { - const { statusCode = 400 } = res; - if (statusCode < 200 || 300 <= statusCode) { - reject( - Object.assign(new import_property_provider.ProviderError("Error response received from instance metadata service"), { statusCode }) - ); - req.destroy(); - } - const chunks = []; - res.on("data", (chunk) => { - chunks.push(chunk); - }); - res.on("end", () => { - resolve(import_buffer.Buffer.concat(chunks)); - req.destroy(); - }); - }); - req.end(); - }); -} -__name(httpRequest, "httpRequest"); - -// src/remoteProvider/ImdsCredentials.ts -var isImdsCredentials = /* @__PURE__ */ __name((arg) => Boolean(arg) && typeof arg === "object" && typeof arg.AccessKeyId === "string" && typeof arg.SecretAccessKey === "string" && typeof arg.Token === "string" && typeof arg.Expiration === "string", "isImdsCredentials"); -var fromImdsCredentials = /* @__PURE__ */ __name((creds) => ({ - accessKeyId: creds.AccessKeyId, - secretAccessKey: creds.SecretAccessKey, - sessionToken: creds.Token, - expiration: new Date(creds.Expiration), - ...creds.AccountId && { accountId: creds.AccountId } -}), "fromImdsCredentials"); - -// src/remoteProvider/RemoteProviderInit.ts -var DEFAULT_TIMEOUT = 1e3; -var DEFAULT_MAX_RETRIES = 0; -var providerConfigFromInit = /* @__PURE__ */ __name(({ - maxRetries = DEFAULT_MAX_RETRIES, - timeout = DEFAULT_TIMEOUT -}) => ({ maxRetries, timeout }), "providerConfigFromInit"); - -// src/remoteProvider/retry.ts -var retry = /* @__PURE__ */ __name((toRetry, maxRetries) => { - let promise = toRetry(); - for (let i = 0; i < maxRetries; i++) { - promise = promise.catch(toRetry); - } - return promise; -}, "retry"); +var endpoints_default = Endpoints; -// src/fromContainerMetadata.ts -var ENV_CMDS_FULL_URI = "AWS_CONTAINER_CREDENTIALS_FULL_URI"; -var ENV_CMDS_RELATIVE_URI = "AWS_CONTAINER_CREDENTIALS_RELATIVE_URI"; -var ENV_CMDS_AUTH_TOKEN = "AWS_CONTAINER_AUTHORIZATION_TOKEN"; -var fromContainerMetadata = /* @__PURE__ */ __name((init = {}) => { - const { timeout, maxRetries } = providerConfigFromInit(init); - return () => retry(async () => { - const requestOptions = await getCmdsUri({ logger: init.logger }); - const credsResponse = JSON.parse(await requestFromEcsImds(timeout, requestOptions)); - if (!isImdsCredentials(credsResponse)) { - throw new import_property_provider.CredentialsProviderError("Invalid response received from instance metadata service.", { - logger: init.logger - }); +// pkg/dist-src/endpoints-to-methods.js +var endpointMethodsMap = /* @__PURE__ */ new Map(); +for (const [scope, endpoints] of Object.entries(endpoints_default)) { + for (const [methodName, endpoint] of Object.entries(endpoints)) { + const [route, defaults, decorations] = endpoint; + const [method, url] = route.split(/ /); + const endpointDefaults = Object.assign( + { + method, + url + }, + defaults + ); + if (!endpointMethodsMap.has(scope)) { + endpointMethodsMap.set(scope, /* @__PURE__ */ new Map()); } - return fromImdsCredentials(credsResponse); - }, maxRetries); -}, "fromContainerMetadata"); -var requestFromEcsImds = /* @__PURE__ */ __name(async (timeout, options) => { - if (process.env[ENV_CMDS_AUTH_TOKEN]) { - options.headers = { - ...options.headers, - Authorization: process.env[ENV_CMDS_AUTH_TOKEN] - }; + endpointMethodsMap.get(scope).set(methodName, { + scope, + methodName, + endpointDefaults, + decorations + }); } - const buffer = await httpRequest({ - ...options, - timeout - }); - return buffer.toString(); -}, "requestFromEcsImds"); -var CMDS_IP = "169.254.170.2"; -var GREENGRASS_HOSTS = { - localhost: true, - "127.0.0.1": true -}; -var GREENGRASS_PROTOCOLS = { - "http:": true, - "https:": true -}; -var getCmdsUri = /* @__PURE__ */ __name(async ({ logger }) => { - if (process.env[ENV_CMDS_RELATIVE_URI]) { +} +var handler = { + has({ scope }, methodName) { + return endpointMethodsMap.get(scope).has(methodName); + }, + getOwnPropertyDescriptor(target, methodName) { return { - hostname: CMDS_IP, - path: process.env[ENV_CMDS_RELATIVE_URI] + value: this.get(target, methodName), + // ensures method is in the cache + configurable: true, + writable: true, + enumerable: true }; - } - if (process.env[ENV_CMDS_FULL_URI]) { - const parsed = (0, import_url.parse)(process.env[ENV_CMDS_FULL_URI]); - if (!parsed.hostname || !(parsed.hostname in GREENGRASS_HOSTS)) { - throw new import_property_provider.CredentialsProviderError(`${parsed.hostname} is not a valid container metadata service hostname`, { - tryNextLink: false, - logger - }); + }, + defineProperty(target, methodName, descriptor) { + Object.defineProperty(target.cache, methodName, descriptor); + return true; + }, + deleteProperty(target, methodName) { + delete target.cache[methodName]; + return true; + }, + ownKeys({ scope }) { + return [...endpointMethodsMap.get(scope).keys()]; + }, + set(target, methodName, value) { + return target.cache[methodName] = value; + }, + get({ octokit, scope, cache }, methodName) { + if (cache[methodName]) { + return cache[methodName]; } - if (!parsed.protocol || !(parsed.protocol in GREENGRASS_PROTOCOLS)) { - throw new import_property_provider.CredentialsProviderError(`${parsed.protocol} is not a valid container metadata service protocol`, { - tryNextLink: false, - logger - }); + const method = endpointMethodsMap.get(scope).get(methodName); + if (!method) { + return void 0; } - return { - ...parsed, - port: parsed.port ? parseInt(parsed.port, 10) : void 0 - }; - } - throw new import_property_provider.CredentialsProviderError( - `The container metadata credential provider cannot be used unless the ${ENV_CMDS_RELATIVE_URI} or ${ENV_CMDS_FULL_URI} environment variable is set`, - { - tryNextLink: false, - logger + const { endpointDefaults, decorations } = method; + if (decorations) { + cache[methodName] = decorate( + octokit, + scope, + methodName, + endpointDefaults, + decorations + ); + } else { + cache[methodName] = octokit.request.defaults(endpointDefaults); } - ); -}, "getCmdsUri"); - -// src/fromInstanceMetadata.ts - - - -// src/error/InstanceMetadataV1FallbackError.ts - -var _InstanceMetadataV1FallbackError = class _InstanceMetadataV1FallbackError extends import_property_provider.CredentialsProviderError { - constructor(message, tryNextLink = true) { - super(message, tryNextLink); - this.tryNextLink = tryNextLink; - this.name = "InstanceMetadataV1FallbackError"; - Object.setPrototypeOf(this, _InstanceMetadataV1FallbackError.prototype); + return cache[methodName]; } }; -__name(_InstanceMetadataV1FallbackError, "InstanceMetadataV1FallbackError"); -var InstanceMetadataV1FallbackError = _InstanceMetadataV1FallbackError; - -// src/utils/getInstanceMetadataEndpoint.ts -var import_node_config_provider = __nccwpck_require__(55704); -var import_url_parser = __nccwpck_require__(14494); - -// src/config/Endpoint.ts -var Endpoint = /* @__PURE__ */ ((Endpoint2) => { - Endpoint2["IPv4"] = "http://169.254.169.254"; - Endpoint2["IPv6"] = "http://[fd00:ec2::254]"; - return Endpoint2; -})(Endpoint || {}); - -// src/config/EndpointConfigOptions.ts -var ENV_ENDPOINT_NAME = "AWS_EC2_METADATA_SERVICE_ENDPOINT"; -var CONFIG_ENDPOINT_NAME = "ec2_metadata_service_endpoint"; -var ENDPOINT_CONFIG_OPTIONS = { - environmentVariableSelector: (env) => env[ENV_ENDPOINT_NAME], - configFileSelector: (profile) => profile[CONFIG_ENDPOINT_NAME], - default: void 0 -}; - -// src/config/EndpointMode.ts -var EndpointMode = /* @__PURE__ */ ((EndpointMode2) => { - EndpointMode2["IPv4"] = "IPv4"; - EndpointMode2["IPv6"] = "IPv6"; - return EndpointMode2; -})(EndpointMode || {}); - -// src/config/EndpointModeConfigOptions.ts -var ENV_ENDPOINT_MODE_NAME = "AWS_EC2_METADATA_SERVICE_ENDPOINT_MODE"; -var CONFIG_ENDPOINT_MODE_NAME = "ec2_metadata_service_endpoint_mode"; -var ENDPOINT_MODE_CONFIG_OPTIONS = { - environmentVariableSelector: (env) => env[ENV_ENDPOINT_MODE_NAME], - configFileSelector: (profile) => profile[CONFIG_ENDPOINT_MODE_NAME], - default: "IPv4" /* IPv4 */ -}; - -// src/utils/getInstanceMetadataEndpoint.ts -var getInstanceMetadataEndpoint = /* @__PURE__ */ __name(async () => (0, import_url_parser.parseUrl)(await getFromEndpointConfig() || await getFromEndpointModeConfig()), "getInstanceMetadataEndpoint"); -var getFromEndpointConfig = /* @__PURE__ */ __name(async () => (0, import_node_config_provider.loadConfig)(ENDPOINT_CONFIG_OPTIONS)(), "getFromEndpointConfig"); -var getFromEndpointModeConfig = /* @__PURE__ */ __name(async () => { - const endpointMode = await (0, import_node_config_provider.loadConfig)(ENDPOINT_MODE_CONFIG_OPTIONS)(); - switch (endpointMode) { - case "IPv4" /* IPv4 */: - return "http://169.254.169.254" /* IPv4 */; - case "IPv6" /* IPv6 */: - return "http://[fd00:ec2::254]" /* IPv6 */; - default: - throw new Error(`Unsupported endpoint mode: ${endpointMode}. Select from ${Object.values(EndpointMode)}`); +function endpointsToMethods(octokit) { + const newMethods = {}; + for (const scope of endpointMethodsMap.keys()) { + newMethods[scope] = new Proxy({ octokit, scope, cache: {} }, handler); } -}, "getFromEndpointModeConfig"); - -// src/utils/getExtendedInstanceMetadataCredentials.ts -var STATIC_STABILITY_REFRESH_INTERVAL_SECONDS = 5 * 60; -var STATIC_STABILITY_REFRESH_INTERVAL_JITTER_WINDOW_SECONDS = 5 * 60; -var STATIC_STABILITY_DOC_URL = "https://docs.aws.amazon.com/sdkref/latest/guide/feature-static-credentials.html"; -var getExtendedInstanceMetadataCredentials = /* @__PURE__ */ __name((credentials, logger) => { - const refreshInterval = STATIC_STABILITY_REFRESH_INTERVAL_SECONDS + Math.floor(Math.random() * STATIC_STABILITY_REFRESH_INTERVAL_JITTER_WINDOW_SECONDS); - const newExpiration = new Date(Date.now() + refreshInterval * 1e3); - logger.warn( - `Attempting credential expiration extension due to a credential service availability issue. A refresh of these credentials will be attempted after ${new Date(newExpiration)}. -For more information, please visit: ` + STATIC_STABILITY_DOC_URL - ); - const originalExpiration = credentials.originalExpiration ?? credentials.expiration; - return { - ...credentials, - ...originalExpiration ? { originalExpiration } : {}, - expiration: newExpiration - }; -}, "getExtendedInstanceMetadataCredentials"); - -// src/utils/staticStabilityProvider.ts -var staticStabilityProvider = /* @__PURE__ */ __name((provider, options = {}) => { - const logger = (options == null ? void 0 : options.logger) || console; - let pastCredentials; - return async () => { - let credentials; - try { - credentials = await provider(); - if (credentials.expiration && credentials.expiration.getTime() < Date.now()) { - credentials = getExtendedInstanceMetadataCredentials(credentials, logger); - } - } catch (e) { - if (pastCredentials) { - logger.warn("Credential renew failed: ", e); - credentials = getExtendedInstanceMetadataCredentials(pastCredentials, logger); - } else { - throw e; - } + return newMethods; +} +function decorate(octokit, scope, methodName, defaults, decorations) { + const requestWithDefaults = octokit.request.defaults(defaults); + function withDecorations(...args) { + let options = requestWithDefaults.endpoint.merge(...args); + if (decorations.mapToData) { + options = Object.assign({}, options, { + data: options[decorations.mapToData], + [decorations.mapToData]: void 0 + }); + return requestWithDefaults(options); } - pastCredentials = credentials; - return credentials; - }; -}, "staticStabilityProvider"); - -// src/fromInstanceMetadata.ts -var IMDS_PATH = "/latest/meta-data/iam/security-credentials/"; -var IMDS_TOKEN_PATH = "/latest/api/token"; -var AWS_EC2_METADATA_V1_DISABLED = "AWS_EC2_METADATA_V1_DISABLED"; -var PROFILE_AWS_EC2_METADATA_V1_DISABLED = "ec2_metadata_v1_disabled"; -var X_AWS_EC2_METADATA_TOKEN = "x-aws-ec2-metadata-token"; -var fromInstanceMetadata = /* @__PURE__ */ __name((init = {}) => staticStabilityProvider(getInstanceMetadataProvider(init), { logger: init.logger }), "fromInstanceMetadata"); -var getInstanceMetadataProvider = /* @__PURE__ */ __name((init = {}) => { - let disableFetchToken = false; - const { logger, profile } = init; - const { timeout, maxRetries } = providerConfigFromInit(init); - const getCredentials = /* @__PURE__ */ __name(async (maxRetries2, options) => { - var _a; - const isImdsV1Fallback = disableFetchToken || ((_a = options.headers) == null ? void 0 : _a[X_AWS_EC2_METADATA_TOKEN]) == null; - if (isImdsV1Fallback) { - let fallbackBlockedFromProfile = false; - let fallbackBlockedFromProcessEnv = false; - const configValue = await (0, import_node_config_provider.loadConfig)( - { - environmentVariableSelector: (env) => { - const envValue = env[AWS_EC2_METADATA_V1_DISABLED]; - fallbackBlockedFromProcessEnv = !!envValue && envValue !== "false"; - if (envValue === void 0) { - throw new import_property_provider.CredentialsProviderError( - `${AWS_EC2_METADATA_V1_DISABLED} not set in env, checking config file next.`, - { logger: init.logger } - ); - } - return fallbackBlockedFromProcessEnv; - }, - configFileSelector: (profile2) => { - const profileValue = profile2[PROFILE_AWS_EC2_METADATA_V1_DISABLED]; - fallbackBlockedFromProfile = !!profileValue && profileValue !== "false"; - return fallbackBlockedFromProfile; - }, - default: false - }, - { - profile - } - )(); - if (init.ec2MetadataV1Disabled || configValue) { - const causes = []; - if (init.ec2MetadataV1Disabled) - causes.push("credential provider initialization (runtime option ec2MetadataV1Disabled)"); - if (fallbackBlockedFromProfile) - causes.push(`config file profile (${PROFILE_AWS_EC2_METADATA_V1_DISABLED})`); - if (fallbackBlockedFromProcessEnv) - causes.push(`process environment variable (${AWS_EC2_METADATA_V1_DISABLED})`); - throw new InstanceMetadataV1FallbackError( - `AWS EC2 Metadata v1 fallback has been blocked by AWS SDK configuration in the following: [${causes.join( - ", " - )}].` - ); - } + if (decorations.renamed) { + const [newScope, newMethodName] = decorations.renamed; + octokit.log.warn( + `octokit.${scope}.${methodName}() has been renamed to octokit.${newScope}.${newMethodName}()` + ); } - const imdsProfile = (await retry(async () => { - let profile2; - try { - profile2 = await getProfile(options); - } catch (err) { - if (err.statusCode === 401) { - disableFetchToken = false; - } - throw err; - } - return profile2; - }, maxRetries2)).trim(); - return retry(async () => { - let creds; - try { - creds = await getCredentialsFromProfile(imdsProfile, options, init); - } catch (err) { - if (err.statusCode === 401) { - disableFetchToken = false; - } - throw err; - } - return creds; - }, maxRetries2); - }, "getCredentials"); - return async () => { - const endpoint = await getInstanceMetadataEndpoint(); - if (disableFetchToken) { - logger == null ? void 0 : logger.debug("AWS SDK Instance Metadata", "using v1 fallback (no token fetch)"); - return getCredentials(maxRetries, { ...endpoint, timeout }); - } else { - let token; - try { - token = (await getMetadataToken({ ...endpoint, timeout })).toString(); - } catch (error) { - if ((error == null ? void 0 : error.statusCode) === 400) { - throw Object.assign(error, { - message: "EC2 Metadata token request returned error" - }); - } else if (error.message === "TimeoutError" || [403, 404, 405].includes(error.statusCode)) { - disableFetchToken = true; - } - logger == null ? void 0 : logger.debug("AWS SDK Instance Metadata", "using v1 fallback (initial)"); - return getCredentials(maxRetries, { ...endpoint, timeout }); - } - return getCredentials(maxRetries, { - ...endpoint, - headers: { - [X_AWS_EC2_METADATA_TOKEN]: token - }, - timeout - }); + if (decorations.deprecated) { + octokit.log.warn(decorations.deprecated); + } + if (decorations.renamedParameters) { + const options2 = requestWithDefaults.endpoint.merge(...args); + for (const [name, alias] of Object.entries( + decorations.renamedParameters + )) { + if (name in options2) { + octokit.log.warn( + `"${name}" parameter is deprecated for "octokit.${scope}.${methodName}()". Use "${alias}" instead` + ); + if (!(alias in options2)) { + options2[alias] = options2[name]; + } + delete options2[name]; + } + } + return requestWithDefaults(options2); } - }; -}, "getInstanceMetadataProvider"); -var getMetadataToken = /* @__PURE__ */ __name(async (options) => httpRequest({ - ...options, - path: IMDS_TOKEN_PATH, - method: "PUT", - headers: { - "x-aws-ec2-metadata-token-ttl-seconds": "21600" - } -}), "getMetadataToken"); -var getProfile = /* @__PURE__ */ __name(async (options) => (await httpRequest({ ...options, path: IMDS_PATH })).toString(), "getProfile"); -var getCredentialsFromProfile = /* @__PURE__ */ __name(async (profile, options, init) => { - const credentialsResponse = JSON.parse( - (await httpRequest({ - ...options, - path: IMDS_PATH + profile - })).toString() - ); - if (!isImdsCredentials(credentialsResponse)) { - throw new import_property_provider.CredentialsProviderError("Invalid response received from instance metadata service.", { - logger: init.logger - }); + return requestWithDefaults(...args); } - return fromImdsCredentials(credentialsResponse); -}, "getCredentialsFromProfile"); -// Annotate the CommonJS export names for ESM import in node: + return Object.assign(withDecorations, requestWithDefaults); +} +// pkg/dist-src/index.js +function restEndpointMethods(octokit) { + const api = endpointsToMethods(octokit); + return { + rest: api + }; +} +restEndpointMethods.VERSION = VERSION; +function legacyRestEndpointMethods(octokit) { + const api = endpointsToMethods(octokit); + return { + ...api, + rest: api + }; +} +legacyRestEndpointMethods.VERSION = VERSION; +// Annotate the CommonJS export names for ESM import in node: 0 && (0); - /***/ }), -/***/ 47809: +/***/ 93708: /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { +"use strict"; + +var __create = Object.create; var __defProp = Object.defineProperty; var __getOwnPropDesc = Object.getOwnPropertyDescriptor; var __getOwnPropNames = Object.getOwnPropertyNames; +var __getProtoOf = Object.getPrototypeOf; var __hasOwnProp = Object.prototype.hasOwnProperty; -var __name = (target, value) => __defProp(target, "name", { value, configurable: true }); var __export = (target, all) => { for (var name in all) __defProp(target, name, { get: all[name], enumerable: true }); @@ -38472,252 +38107,90 @@ var __copyProps = (to, from, except, desc) => { } return to; }; +var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( + // If the importer is in node compatibility mode or this is not an ESM + // file that has been converted to a CommonJS file using a Babel- + // compatible transform (i.e. "__esModule" has not been set), then set + // "default" to the CommonJS "module.exports" for node compatibility. + isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, + mod +)); var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); -// src/index.ts -var src_exports = {}; -__export(src_exports, { - FetchHttpHandler: () => FetchHttpHandler, - keepAliveSupport: () => keepAliveSupport, - streamCollector: () => streamCollector +// pkg/dist-src/index.js +var dist_src_exports = {}; +__export(dist_src_exports, { + RequestError: () => RequestError }); -module.exports = __toCommonJS(src_exports); - -// src/fetch-http-handler.ts -var import_protocol_http = __nccwpck_require__(72356); -var import_querystring_builder = __nccwpck_require__(18256); - -// src/request-timeout.ts -function requestTimeout(timeoutInMs = 0) { - return new Promise((resolve, reject) => { - if (timeoutInMs) { - setTimeout(() => { - const timeoutError = new Error(`Request did not complete within ${timeoutInMs} ms`); - timeoutError.name = "TimeoutError"; - reject(timeoutError); - }, timeoutInMs); - } - }); -} -__name(requestTimeout, "requestTimeout"); - -// src/fetch-http-handler.ts -var keepAliveSupport = { - supported: void 0 -}; -var _FetchHttpHandler = class _FetchHttpHandler { - /** - * @returns the input if it is an HttpHandler of any class, - * or instantiates a new instance of this handler. - */ - static create(instanceOrOptions) { - if (typeof (instanceOrOptions == null ? void 0 : instanceOrOptions.handle) === "function") { - return instanceOrOptions; - } - return new _FetchHttpHandler(instanceOrOptions); - } - constructor(options) { - if (typeof options === "function") { - this.configProvider = options().then((opts) => opts || {}); - } else { - this.config = options ?? {}; - this.configProvider = Promise.resolve(this.config); - } - if (keepAliveSupport.supported === void 0) { - keepAliveSupport.supported = Boolean( - typeof Request !== "undefined" && "keepalive" in new Request("https://[::1]") - ); - } - } - destroy() { - } - async handle(request, { abortSignal } = {}) { - var _a; - if (!this.config) { - this.config = await this.configProvider; - } - const requestTimeoutInMs = this.config.requestTimeout; - const keepAlive = this.config.keepAlive === true; - const credentials = this.config.credentials; - if (abortSignal == null ? void 0 : abortSignal.aborted) { - const abortError = new Error("Request aborted"); - abortError.name = "AbortError"; - return Promise.reject(abortError); - } - let path = request.path; - const queryString = (0, import_querystring_builder.buildQueryString)(request.query || {}); - if (queryString) { - path += `?${queryString}`; - } - if (request.fragment) { - path += `#${request.fragment}`; - } - let auth = ""; - if (request.username != null || request.password != null) { - const username = request.username ?? ""; - const password = request.password ?? ""; - auth = `${username}:${password}@`; - } - const { port, method } = request; - const url = `${request.protocol}//${auth}${request.hostname}${port ? `:${port}` : ""}${path}`; - const body = method === "GET" || method === "HEAD" ? void 0 : request.body; - const requestOptions = { - body, - headers: new Headers(request.headers), - method, - credentials - }; - if ((_a = this.config) == null ? void 0 : _a.cache) { - requestOptions.cache = this.config.cache; - } - if (body) { - requestOptions.duplex = "half"; - } - if (typeof AbortController !== "undefined") { - requestOptions.signal = abortSignal; +module.exports = __toCommonJS(dist_src_exports); +var import_deprecation = __nccwpck_require__(14150); +var import_once = __toESM(__nccwpck_require__(55560)); +var logOnceCode = (0, import_once.default)((deprecation) => console.warn(deprecation)); +var logOnceHeaders = (0, import_once.default)((deprecation) => console.warn(deprecation)); +var RequestError = class extends Error { + constructor(message, statusCode, options) { + super(message); + if (Error.captureStackTrace) { + Error.captureStackTrace(this, this.constructor); } - if (keepAliveSupport.supported) { - requestOptions.keepalive = keepAlive; + this.name = "HttpError"; + this.status = statusCode; + let headers; + if ("headers" in options && typeof options.headers !== "undefined") { + headers = options.headers; } - if (typeof this.config.requestInit === "function") { - Object.assign(requestOptions, this.config.requestInit(request)); + if ("response" in options) { + this.response = options.response; + headers = options.response.headers; } - let removeSignalEventListener = /* @__PURE__ */ __name(() => { - }, "removeSignalEventListener"); - const fetchRequest = new Request(url, requestOptions); - const raceOfPromises = [ - fetch(fetchRequest).then((response) => { - const fetchHeaders = response.headers; - const transformedHeaders = {}; - for (const pair of fetchHeaders.entries()) { - transformedHeaders[pair[0]] = pair[1]; - } - const hasReadableStream = response.body != void 0; - if (!hasReadableStream) { - return response.blob().then((body2) => ({ - response: new import_protocol_http.HttpResponse({ - headers: transformedHeaders, - reason: response.statusText, - statusCode: response.status, - body: body2 - }) - })); - } - return { - response: new import_protocol_http.HttpResponse({ - headers: transformedHeaders, - reason: response.statusText, - statusCode: response.status, - body: response.body - }) - }; - }), - requestTimeout(requestTimeoutInMs) - ]; - if (abortSignal) { - raceOfPromises.push( - new Promise((resolve, reject) => { - const onAbort = /* @__PURE__ */ __name(() => { - const abortError = new Error("Request aborted"); - abortError.name = "AbortError"; - reject(abortError); - }, "onAbort"); - if (typeof abortSignal.addEventListener === "function") { - const signal = abortSignal; - signal.addEventListener("abort", onAbort, { once: true }); - removeSignalEventListener = /* @__PURE__ */ __name(() => signal.removeEventListener("abort", onAbort), "removeSignalEventListener"); - } else { - abortSignal.onabort = onAbort; - } - }) - ); + const requestCopy = Object.assign({}, options.request); + if (options.request.headers.authorization) { + requestCopy.headers = Object.assign({}, options.request.headers, { + authorization: options.request.headers.authorization.replace( + / .*$/, + " [REDACTED]" + ) + }); } - return Promise.race(raceOfPromises).finally(removeSignalEventListener); - } - updateHttpClientConfig(key, value) { - this.config = void 0; - this.configProvider = this.configProvider.then((config) => { - config[key] = value; - return config; + requestCopy.url = requestCopy.url.replace(/\bclient_secret=\w+/g, "client_secret=[REDACTED]").replace(/\baccess_token=\w+/g, "access_token=[REDACTED]"); + this.request = requestCopy; + Object.defineProperty(this, "code", { + get() { + logOnceCode( + new import_deprecation.Deprecation( + "[@octokit/request-error] `error.code` is deprecated, use `error.status`." + ) + ); + return statusCode; + } + }); + Object.defineProperty(this, "headers", { + get() { + logOnceHeaders( + new import_deprecation.Deprecation( + "[@octokit/request-error] `error.headers` is deprecated, use `error.response.headers`." + ) + ); + return headers || {}; + } }); - } - httpHandlerConfigs() { - return this.config ?? {}; } }; -__name(_FetchHttpHandler, "FetchHttpHandler"); -var FetchHttpHandler = _FetchHttpHandler; - -// src/stream-collector.ts -var import_util_base64 = __nccwpck_require__(68385); -var streamCollector = /* @__PURE__ */ __name((stream) => { - if (typeof Blob === "function" && stream instanceof Blob) { - return collectBlob(stream); - } - return collectStream(stream); -}, "streamCollector"); -async function collectBlob(blob) { - const base64 = await readToBase64(blob); - const arrayBuffer = (0, import_util_base64.fromBase64)(base64); - return new Uint8Array(arrayBuffer); -} -__name(collectBlob, "collectBlob"); -async function collectStream(stream) { - const chunks = []; - const reader = stream.getReader(); - let isDone = false; - let length = 0; - while (!isDone) { - const { done, value } = await reader.read(); - if (value) { - chunks.push(value); - length += value.length; - } - isDone = done; - } - const collected = new Uint8Array(length); - let offset = 0; - for (const chunk of chunks) { - collected.set(chunk, offset); - offset += chunk.length; - } - return collected; -} -__name(collectStream, "collectStream"); -function readToBase64(blob) { - return new Promise((resolve, reject) => { - const reader = new FileReader(); - reader.onloadend = () => { - if (reader.readyState !== 2) { - return reject(new Error("Reader aborted too early")); - } - const result = reader.result ?? ""; - const commaIndex = result.indexOf(","); - const dataOffset = commaIndex > -1 ? commaIndex + 1 : result.length; - resolve(result.substring(dataOffset)); - }; - reader.onabort = () => reject(new Error("Read aborted")); - reader.onerror = () => reject(reader.error); - reader.readAsDataURL(blob); - }); -} -__name(readToBase64, "readToBase64"); // Annotate the CommonJS export names for ESM import in node: - 0 && (0); - /***/ }), -/***/ 5092: +/***/ 66255: /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { +"use strict"; + var __defProp = Object.defineProperty; var __getOwnPropDesc = Object.getOwnPropertyDescriptor; var __getOwnPropNames = Object.getOwnPropertyNames; var __hasOwnProp = Object.prototype.hasOwnProperty; -var __name = (target, value) => __defProp(target, "name", { value, configurable: true }); var __export = (target, all) => { for (var name in all) __defProp(target, name, { get: all[name], enumerable: true }); @@ -38732,225 +38205,214 @@ var __copyProps = (to, from, except, desc) => { }; var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); -// src/index.ts -var src_exports = {}; -__export(src_exports, { - Hash: () => Hash +// pkg/dist-src/index.js +var dist_src_exports = {}; +__export(dist_src_exports, { + request: () => request }); -module.exports = __toCommonJS(src_exports); -var import_util_buffer_from = __nccwpck_require__(44151); -var import_util_utf8 = __nccwpck_require__(71577); -var import_buffer = __nccwpck_require__(20181); -var import_crypto = __nccwpck_require__(76982); -var _Hash = class _Hash { - constructor(algorithmIdentifier, secret) { - this.algorithmIdentifier = algorithmIdentifier; - this.secret = secret; - this.reset(); - } - update(toHash, encoding) { - this.hash.update((0, import_util_utf8.toUint8Array)(castSourceData(toHash, encoding))); - } - digest() { - return Promise.resolve(this.hash.digest()); +module.exports = __toCommonJS(dist_src_exports); +var import_endpoint = __nccwpck_require__(54471); +var import_universal_user_agent = __nccwpck_require__(33843); + +// pkg/dist-src/version.js +var VERSION = "8.4.0"; + +// pkg/dist-src/is-plain-object.js +function isPlainObject(value) { + if (typeof value !== "object" || value === null) + return false; + if (Object.prototype.toString.call(value) !== "[object Object]") + return false; + const proto = Object.getPrototypeOf(value); + if (proto === null) + return true; + const Ctor = Object.prototype.hasOwnProperty.call(proto, "constructor") && proto.constructor; + return typeof Ctor === "function" && Ctor instanceof Ctor && Function.prototype.call(Ctor) === Function.prototype.call(value); +} + +// pkg/dist-src/fetch-wrapper.js +var import_request_error = __nccwpck_require__(93708); + +// pkg/dist-src/get-buffer-response.js +function getBufferResponse(response) { + return response.arrayBuffer(); +} + +// pkg/dist-src/fetch-wrapper.js +function fetchWrapper(requestOptions) { + var _a, _b, _c, _d; + const log = requestOptions.request && requestOptions.request.log ? requestOptions.request.log : console; + const parseSuccessResponseBody = ((_a = requestOptions.request) == null ? void 0 : _a.parseSuccessResponseBody) !== false; + if (isPlainObject(requestOptions.body) || Array.isArray(requestOptions.body)) { + requestOptions.body = JSON.stringify(requestOptions.body); } - reset() { - this.hash = this.secret ? (0, import_crypto.createHmac)(this.algorithmIdentifier, castSourceData(this.secret)) : (0, import_crypto.createHash)(this.algorithmIdentifier); + let headers = {}; + let status; + let url; + let { fetch } = globalThis; + if ((_b = requestOptions.request) == null ? void 0 : _b.fetch) { + fetch = requestOptions.request.fetch; } -}; -__name(_Hash, "Hash"); -var Hash = _Hash; -function castSourceData(toCast, encoding) { - if (import_buffer.Buffer.isBuffer(toCast)) { - return toCast; + if (!fetch) { + throw new Error( + "fetch is not set. Please pass a fetch implementation as new Octokit({ request: { fetch }}). Learn more at https://github.com/octokit/octokit.js/#fetch-missing" + ); } - if (typeof toCast === "string") { - return (0, import_util_buffer_from.fromString)(toCast, encoding); + return fetch(requestOptions.url, { + method: requestOptions.method, + body: requestOptions.body, + redirect: (_c = requestOptions.request) == null ? void 0 : _c.redirect, + headers: requestOptions.headers, + signal: (_d = requestOptions.request) == null ? void 0 : _d.signal, + // duplex must be set if request.body is ReadableStream or Async Iterables. + // See https://fetch.spec.whatwg.org/#dom-requestinit-duplex. + ...requestOptions.body && { duplex: "half" } + }).then(async (response) => { + url = response.url; + status = response.status; + for (const keyAndValue of response.headers) { + headers[keyAndValue[0]] = keyAndValue[1]; + } + if ("deprecation" in headers) { + const matches = headers.link && headers.link.match(/<([^>]+)>; rel="deprecation"/); + const deprecationLink = matches && matches.pop(); + log.warn( + `[@octokit/request] "${requestOptions.method} ${requestOptions.url}" is deprecated. It is scheduled to be removed on ${headers.sunset}${deprecationLink ? `. See ${deprecationLink}` : ""}` + ); + } + if (status === 204 || status === 205) { + return; + } + if (requestOptions.method === "HEAD") { + if (status < 400) { + return; + } + throw new import_request_error.RequestError(response.statusText, status, { + response: { + url, + status, + headers, + data: void 0 + }, + request: requestOptions + }); + } + if (status === 304) { + throw new import_request_error.RequestError("Not modified", status, { + response: { + url, + status, + headers, + data: await getResponseData(response) + }, + request: requestOptions + }); + } + if (status >= 400) { + const data = await getResponseData(response); + const error = new import_request_error.RequestError(toErrorMessage(data), status, { + response: { + url, + status, + headers, + data + }, + request: requestOptions + }); + throw error; + } + return parseSuccessResponseBody ? await getResponseData(response) : response.body; + }).then((data) => { + return { + status, + url, + headers, + data + }; + }).catch((error) => { + if (error instanceof import_request_error.RequestError) + throw error; + else if (error.name === "AbortError") + throw error; + let message = error.message; + if (error.name === "TypeError" && "cause" in error) { + if (error.cause instanceof Error) { + message = error.cause.message; + } else if (typeof error.cause === "string") { + message = error.cause; + } + } + throw new import_request_error.RequestError(message, 500, { + request: requestOptions + }); + }); +} +async function getResponseData(response) { + const contentType = response.headers.get("content-type"); + if (/application\/json/.test(contentType)) { + return response.json().catch(() => response.text()).catch(() => ""); } - if (ArrayBuffer.isView(toCast)) { - return (0, import_util_buffer_from.fromArrayBuffer)(toCast.buffer, toCast.byteOffset, toCast.byteLength); + if (!contentType || /^text\/|charset=utf-8$/.test(contentType)) { + return response.text(); } - return (0, import_util_buffer_from.fromArrayBuffer)(toCast); + return getBufferResponse(response); } -__name(castSourceData, "castSourceData"); -// Annotate the CommonJS export names for ESM import in node: - -0 && (0); - - - -/***/ }), - -/***/ 86130: -/***/ ((module) => { - -var __defProp = Object.defineProperty; -var __getOwnPropDesc = Object.getOwnPropertyDescriptor; -var __getOwnPropNames = Object.getOwnPropertyNames; -var __hasOwnProp = Object.prototype.hasOwnProperty; -var __name = (target, value) => __defProp(target, "name", { value, configurable: true }); -var __export = (target, all) => { - for (var name in all) - __defProp(target, name, { get: all[name], enumerable: true }); -}; -var __copyProps = (to, from, except, desc) => { - if (from && typeof from === "object" || typeof from === "function") { - for (let key of __getOwnPropNames(from)) - if (!__hasOwnProp.call(to, key) && key !== except) - __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); +function toErrorMessage(data) { + if (typeof data === "string") + return data; + let suffix; + if ("documentation_url" in data) { + suffix = ` - ${data.documentation_url}`; + } else { + suffix = ""; } - return to; -}; -var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); - -// src/index.ts -var src_exports = {}; -__export(src_exports, { - isArrayBuffer: () => isArrayBuffer -}); -module.exports = __toCommonJS(src_exports); -var isArrayBuffer = /* @__PURE__ */ __name((arg) => typeof ArrayBuffer === "function" && arg instanceof ArrayBuffer || Object.prototype.toString.call(arg) === "[object ArrayBuffer]", "isArrayBuffer"); -// Annotate the CommonJS export names for ESM import in node: - -0 && (0); - - - -/***/ }), - -/***/ 47212: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - -var __defProp = Object.defineProperty; -var __getOwnPropDesc = Object.getOwnPropertyDescriptor; -var __getOwnPropNames = Object.getOwnPropertyNames; -var __hasOwnProp = Object.prototype.hasOwnProperty; -var __name = (target, value) => __defProp(target, "name", { value, configurable: true }); -var __export = (target, all) => { - for (var name in all) - __defProp(target, name, { get: all[name], enumerable: true }); -}; -var __copyProps = (to, from, except, desc) => { - if (from && typeof from === "object" || typeof from === "function") { - for (let key of __getOwnPropNames(from)) - if (!__hasOwnProp.call(to, key) && key !== except) - __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + if ("message" in data) { + if (Array.isArray(data.errors)) { + return `${data.message}: ${data.errors.map(JSON.stringify).join(", ")}${suffix}`; + } + return `${data.message}${suffix}`; } - return to; -}; -var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + return `Unknown error: ${JSON.stringify(data)}`; +} -// src/index.ts -var src_exports = {}; -__export(src_exports, { - contentLengthMiddleware: () => contentLengthMiddleware, - contentLengthMiddlewareOptions: () => contentLengthMiddlewareOptions, - getContentLengthPlugin: () => getContentLengthPlugin -}); -module.exports = __toCommonJS(src_exports); -var import_protocol_http = __nccwpck_require__(72356); -var CONTENT_LENGTH_HEADER = "content-length"; -function contentLengthMiddleware(bodyLengthChecker) { - return (next) => async (args) => { - const request = args.request; - if (import_protocol_http.HttpRequest.isInstance(request)) { - const { body, headers } = request; - if (body && Object.keys(headers).map((str) => str.toLowerCase()).indexOf(CONTENT_LENGTH_HEADER) === -1) { - try { - const length = bodyLengthChecker(body); - request.headers = { - ...request.headers, - [CONTENT_LENGTH_HEADER]: String(length) - }; - } catch (error) { - } - } +// pkg/dist-src/with-defaults.js +function withDefaults(oldEndpoint, newDefaults) { + const endpoint2 = oldEndpoint.defaults(newDefaults); + const newApi = function(route, parameters) { + const endpointOptions = endpoint2.merge(route, parameters); + if (!endpointOptions.request || !endpointOptions.request.hook) { + return fetchWrapper(endpoint2.parse(endpointOptions)); } - return next({ - ...args, - request + const request2 = (route2, parameters2) => { + return fetchWrapper( + endpoint2.parse(endpoint2.merge(route2, parameters2)) + ); + }; + Object.assign(request2, { + endpoint: endpoint2, + defaults: withDefaults.bind(null, endpoint2) }); + return endpointOptions.request.hook(request2, endpointOptions); }; + return Object.assign(newApi, { + endpoint: endpoint2, + defaults: withDefaults.bind(null, endpoint2) + }); } -__name(contentLengthMiddleware, "contentLengthMiddleware"); -var contentLengthMiddlewareOptions = { - step: "build", - tags: ["SET_CONTENT_LENGTH", "CONTENT_LENGTH"], - name: "contentLengthMiddleware", - override: true -}; -var getContentLengthPlugin = /* @__PURE__ */ __name((options) => ({ - applyToStack: (clientStack) => { - clientStack.add(contentLengthMiddleware(options.bodyLengthChecker), contentLengthMiddlewareOptions); + +// pkg/dist-src/index.js +var request = withDefaults(import_endpoint.endpoint, { + headers: { + "user-agent": `octokit-request.js/${VERSION} ${(0, import_universal_user_agent.getUserAgent)()}` } -}), "getContentLengthPlugin"); +}); // Annotate the CommonJS export names for ESM import in node: - 0 && (0); - -/***/ }), - -/***/ 76041: -/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { - -"use strict"; - -Object.defineProperty(exports, "__esModule", ({ value: true })); -exports.getEndpointFromConfig = void 0; -const node_config_provider_1 = __nccwpck_require__(55704); -const getEndpointUrlConfig_1 = __nccwpck_require__(18008); -const getEndpointFromConfig = async (serviceId) => (0, node_config_provider_1.loadConfig)((0, getEndpointUrlConfig_1.getEndpointUrlConfig)(serviceId !== null && serviceId !== void 0 ? serviceId : ""))(); -exports.getEndpointFromConfig = getEndpointFromConfig; - - -/***/ }), - -/***/ 18008: -/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { - -"use strict"; - -Object.defineProperty(exports, "__esModule", ({ value: true })); -exports.getEndpointUrlConfig = void 0; -const shared_ini_file_loader_1 = __nccwpck_require__(94964); -const ENV_ENDPOINT_URL = "AWS_ENDPOINT_URL"; -const CONFIG_ENDPOINT_URL = "endpoint_url"; -const getEndpointUrlConfig = (serviceId) => ({ - environmentVariableSelector: (env) => { - const serviceSuffixParts = serviceId.split(" ").map((w) => w.toUpperCase()); - const serviceEndpointUrl = env[[ENV_ENDPOINT_URL, ...serviceSuffixParts].join("_")]; - if (serviceEndpointUrl) - return serviceEndpointUrl; - const endpointUrl = env[ENV_ENDPOINT_URL]; - if (endpointUrl) - return endpointUrl; - return undefined; - }, - configFileSelector: (profile, config) => { - if (config && profile.services) { - const servicesSection = config[["services", profile.services].join(shared_ini_file_loader_1.CONFIG_PREFIX_SEPARATOR)]; - if (servicesSection) { - const servicePrefixParts = serviceId.split(" ").map((w) => w.toLowerCase()); - const endpointUrl = servicesSection[[servicePrefixParts.join("_"), CONFIG_ENDPOINT_URL].join(shared_ini_file_loader_1.CONFIG_PREFIX_SEPARATOR)]; - if (endpointUrl) - return endpointUrl; - } - } - const endpointUrl = profile[CONFIG_ENDPOINT_URL]; - if (endpointUrl) - return endpointUrl; - return undefined; - }, - default: undefined, -}); -exports.getEndpointUrlConfig = getEndpointUrlConfig; - - /***/ }), -/***/ 40099: +/***/ 39316: /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { var __defProp = Object.defineProperty; @@ -38975,247 +38437,198 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru // src/index.ts var src_exports = {}; __export(src_exports, { - endpointMiddleware: () => endpointMiddleware, - endpointMiddlewareOptions: () => endpointMiddlewareOptions, - getEndpointFromInstructions: () => getEndpointFromInstructions, - getEndpointPlugin: () => getEndpointPlugin, - resolveEndpointConfig: () => resolveEndpointConfig, - resolveParams: () => resolveParams, - toEndpointV1: () => toEndpointV1 + CONFIG_USE_DUALSTACK_ENDPOINT: () => CONFIG_USE_DUALSTACK_ENDPOINT, + CONFIG_USE_FIPS_ENDPOINT: () => CONFIG_USE_FIPS_ENDPOINT, + DEFAULT_USE_DUALSTACK_ENDPOINT: () => DEFAULT_USE_DUALSTACK_ENDPOINT, + DEFAULT_USE_FIPS_ENDPOINT: () => DEFAULT_USE_FIPS_ENDPOINT, + ENV_USE_DUALSTACK_ENDPOINT: () => ENV_USE_DUALSTACK_ENDPOINT, + ENV_USE_FIPS_ENDPOINT: () => ENV_USE_FIPS_ENDPOINT, + NODE_REGION_CONFIG_FILE_OPTIONS: () => NODE_REGION_CONFIG_FILE_OPTIONS, + NODE_REGION_CONFIG_OPTIONS: () => NODE_REGION_CONFIG_OPTIONS, + NODE_USE_DUALSTACK_ENDPOINT_CONFIG_OPTIONS: () => NODE_USE_DUALSTACK_ENDPOINT_CONFIG_OPTIONS, + NODE_USE_FIPS_ENDPOINT_CONFIG_OPTIONS: () => NODE_USE_FIPS_ENDPOINT_CONFIG_OPTIONS, + REGION_ENV_NAME: () => REGION_ENV_NAME, + REGION_INI_NAME: () => REGION_INI_NAME, + getRegionInfo: () => getRegionInfo, + resolveCustomEndpointsConfig: () => resolveCustomEndpointsConfig, + resolveEndpointsConfig: () => resolveEndpointsConfig, + resolveRegionConfig: () => resolveRegionConfig }); module.exports = __toCommonJS(src_exports); -// src/service-customizations/s3.ts -var resolveParamsForS3 = /* @__PURE__ */ __name(async (endpointParams) => { - const bucket = (endpointParams == null ? void 0 : endpointParams.Bucket) || ""; - if (typeof endpointParams.Bucket === "string") { - endpointParams.Bucket = bucket.replace(/#/g, encodeURIComponent("#")).replace(/\?/g, encodeURIComponent("?")); - } - if (isArnBucketName(bucket)) { - if (endpointParams.ForcePathStyle === true) { - throw new Error("Path-style addressing cannot be used with ARN buckets"); - } - } else if (!isDnsCompatibleBucketName(bucket) || bucket.indexOf(".") !== -1 && !String(endpointParams.Endpoint).startsWith("http:") || bucket.toLowerCase() !== bucket || bucket.length < 3) { - endpointParams.ForcePathStyle = true; - } - if (endpointParams.DisableMultiRegionAccessPoints) { - endpointParams.disableMultiRegionAccessPoints = true; - endpointParams.DisableMRAP = true; - } - return endpointParams; -}, "resolveParamsForS3"); -var DOMAIN_PATTERN = /^[a-z0-9][a-z0-9\.\-]{1,61}[a-z0-9]$/; -var IP_ADDRESS_PATTERN = /(\d+\.){3}\d+/; -var DOTS_PATTERN = /\.\./; -var isDnsCompatibleBucketName = /* @__PURE__ */ __name((bucketName) => DOMAIN_PATTERN.test(bucketName) && !IP_ADDRESS_PATTERN.test(bucketName) && !DOTS_PATTERN.test(bucketName), "isDnsCompatibleBucketName"); -var isArnBucketName = /* @__PURE__ */ __name((bucketName) => { - const [arn, partition, service, , , bucket] = bucketName.split(":"); - const isArn = arn === "arn" && bucketName.split(":").length >= 6; - const isValidArn = Boolean(isArn && partition && service && bucket); - if (isArn && !isValidArn) { - throw new Error(`Invalid ARN: ${bucketName} was an invalid ARN.`); - } - return isValidArn; -}, "isArnBucketName"); +// src/endpointsConfig/NodeUseDualstackEndpointConfigOptions.ts +var import_util_config_provider = __nccwpck_require__(56716); +var ENV_USE_DUALSTACK_ENDPOINT = "AWS_USE_DUALSTACK_ENDPOINT"; +var CONFIG_USE_DUALSTACK_ENDPOINT = "use_dualstack_endpoint"; +var DEFAULT_USE_DUALSTACK_ENDPOINT = false; +var NODE_USE_DUALSTACK_ENDPOINT_CONFIG_OPTIONS = { + environmentVariableSelector: (env) => (0, import_util_config_provider.booleanSelector)(env, ENV_USE_DUALSTACK_ENDPOINT, import_util_config_provider.SelectorType.ENV), + configFileSelector: (profile) => (0, import_util_config_provider.booleanSelector)(profile, CONFIG_USE_DUALSTACK_ENDPOINT, import_util_config_provider.SelectorType.CONFIG), + default: false +}; -// src/adaptors/createConfigValueProvider.ts -var createConfigValueProvider = /* @__PURE__ */ __name((configKey, canonicalEndpointParamKey, config) => { - const configProvider = /* @__PURE__ */ __name(async () => { - const configValue = config[configKey] ?? config[canonicalEndpointParamKey]; - if (typeof configValue === "function") { - return configValue(); - } - return configValue; - }, "configProvider"); - if (configKey === "credentialScope" || canonicalEndpointParamKey === "CredentialScope") { - return async () => { - const credentials = typeof config.credentials === "function" ? await config.credentials() : config.credentials; - const configValue = (credentials == null ? void 0 : credentials.credentialScope) ?? (credentials == null ? void 0 : credentials.CredentialScope); - return configValue; - }; - } - if (configKey === "accountId" || canonicalEndpointParamKey === "AccountId") { - return async () => { - const credentials = typeof config.credentials === "function" ? await config.credentials() : config.credentials; - const configValue = (credentials == null ? void 0 : credentials.accountId) ?? (credentials == null ? void 0 : credentials.AccountId); - return configValue; - }; - } - if (configKey === "endpoint" || canonicalEndpointParamKey === "endpoint") { - return async () => { - const endpoint = await configProvider(); - if (endpoint && typeof endpoint === "object") { - if ("url" in endpoint) { - return endpoint.url.href; - } - if ("hostname" in endpoint) { - const { protocol, hostname, port, path } = endpoint; - return `${protocol}//${hostname}${port ? ":" + port : ""}${path}`; - } - } - return endpoint; - }; - } - return configProvider; -}, "createConfigValueProvider"); +// src/endpointsConfig/NodeUseFipsEndpointConfigOptions.ts -// src/adaptors/getEndpointFromInstructions.ts -var import_getEndpointFromConfig = __nccwpck_require__(76041); +var ENV_USE_FIPS_ENDPOINT = "AWS_USE_FIPS_ENDPOINT"; +var CONFIG_USE_FIPS_ENDPOINT = "use_fips_endpoint"; +var DEFAULT_USE_FIPS_ENDPOINT = false; +var NODE_USE_FIPS_ENDPOINT_CONFIG_OPTIONS = { + environmentVariableSelector: (env) => (0, import_util_config_provider.booleanSelector)(env, ENV_USE_FIPS_ENDPOINT, import_util_config_provider.SelectorType.ENV), + configFileSelector: (profile) => (0, import_util_config_provider.booleanSelector)(profile, CONFIG_USE_FIPS_ENDPOINT, import_util_config_provider.SelectorType.CONFIG), + default: false +}; -// src/adaptors/toEndpointV1.ts -var import_url_parser = __nccwpck_require__(14494); -var toEndpointV1 = /* @__PURE__ */ __name((endpoint) => { - if (typeof endpoint === "object") { - if ("url" in endpoint) { - return (0, import_url_parser.parseUrl)(endpoint.url); - } - return endpoint; - } - return (0, import_url_parser.parseUrl)(endpoint); -}, "toEndpointV1"); +// src/endpointsConfig/resolveCustomEndpointsConfig.ts +var import_util_middleware = __nccwpck_require__(76324); +var resolveCustomEndpointsConfig = /* @__PURE__ */ __name((input) => { + const { endpoint, urlParser } = input; + return { + ...input, + tls: input.tls ?? true, + endpoint: (0, import_util_middleware.normalizeProvider)(typeof endpoint === "string" ? urlParser(endpoint) : endpoint), + isCustomEndpoint: true, + useDualstackEndpoint: (0, import_util_middleware.normalizeProvider)(input.useDualstackEndpoint ?? false) + }; +}, "resolveCustomEndpointsConfig"); -// src/adaptors/getEndpointFromInstructions.ts -var getEndpointFromInstructions = /* @__PURE__ */ __name(async (commandInput, instructionsSupplier, clientConfig, context) => { - if (!clientConfig.endpoint) { - let endpointFromConfig; - if (clientConfig.serviceConfiguredEndpoint) { - endpointFromConfig = await clientConfig.serviceConfiguredEndpoint(); - } else { - endpointFromConfig = await (0, import_getEndpointFromConfig.getEndpointFromConfig)(clientConfig.serviceId); - } - if (endpointFromConfig) { - clientConfig.endpoint = () => Promise.resolve(toEndpointV1(endpointFromConfig)); - } - } - const endpointParams = await resolveParams(commandInput, instructionsSupplier, clientConfig); - if (typeof clientConfig.endpointProvider !== "function") { - throw new Error("config.endpointProvider is not set."); - } - const endpoint = clientConfig.endpointProvider(endpointParams, context); - return endpoint; -}, "getEndpointFromInstructions"); -var resolveParams = /* @__PURE__ */ __name(async (commandInput, instructionsSupplier, clientConfig) => { - var _a; - const endpointParams = {}; - const instructions = ((_a = instructionsSupplier == null ? void 0 : instructionsSupplier.getEndpointParameterInstructions) == null ? void 0 : _a.call(instructionsSupplier)) || {}; - for (const [name, instruction] of Object.entries(instructions)) { - switch (instruction.type) { - case "staticContextParams": - endpointParams[name] = instruction.value; - break; - case "contextParams": - endpointParams[name] = commandInput[instruction.name]; - break; - case "clientContextParams": - case "builtInParams": - endpointParams[name] = await createConfigValueProvider(instruction.name, name, clientConfig)(); - break; - default: - throw new Error("Unrecognized endpoint parameter instruction: " + JSON.stringify(instruction)); - } - } - if (Object.keys(instructions).length === 0) { - Object.assign(endpointParams, clientConfig); +// src/endpointsConfig/resolveEndpointsConfig.ts + + +// src/endpointsConfig/utils/getEndpointFromRegion.ts +var getEndpointFromRegion = /* @__PURE__ */ __name(async (input) => { + const { tls = true } = input; + const region = await input.region(); + const dnsHostRegex = new RegExp(/^([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9-]{0,61}[a-zA-Z0-9])$/); + if (!dnsHostRegex.test(region)) { + throw new Error("Invalid region in client config"); } - if (String(clientConfig.serviceId).toLowerCase() === "s3") { - await resolveParamsForS3(endpointParams); + const useDualstackEndpoint = await input.useDualstackEndpoint(); + const useFipsEndpoint = await input.useFipsEndpoint(); + const { hostname } = await input.regionInfoProvider(region, { useDualstackEndpoint, useFipsEndpoint }) ?? {}; + if (!hostname) { + throw new Error("Cannot resolve hostname from client config"); } - return endpointParams; -}, "resolveParams"); + return input.urlParser(`${tls ? "https:" : "http:"}//${hostname}`); +}, "getEndpointFromRegion"); -// src/endpointMiddleware.ts -var import_util_middleware = __nccwpck_require__(76324); -var endpointMiddleware = /* @__PURE__ */ __name(({ - config, - instructions -}) => { - return (next, context) => async (args) => { - var _a, _b, _c; - const endpoint = await getEndpointFromInstructions( - args.input, - { - getEndpointParameterInstructions() { - return instructions; - } - }, - { ...config }, - context - ); - context.endpointV2 = endpoint; - context.authSchemes = (_a = endpoint.properties) == null ? void 0 : _a.authSchemes; - const authScheme = (_b = context.authSchemes) == null ? void 0 : _b[0]; - if (authScheme) { - context["signing_region"] = authScheme.signingRegion; - context["signing_service"] = authScheme.signingName; - const smithyContext = (0, import_util_middleware.getSmithyContext)(context); - const httpAuthOption = (_c = smithyContext == null ? void 0 : smithyContext.selectedHttpAuthScheme) == null ? void 0 : _c.httpAuthOption; - if (httpAuthOption) { - httpAuthOption.signingProperties = Object.assign( - httpAuthOption.signingProperties || {}, - { - signing_region: authScheme.signingRegion, - signingRegion: authScheme.signingRegion, - signing_service: authScheme.signingName, - signingName: authScheme.signingName, - signingRegionSet: authScheme.signingRegionSet - }, - authScheme.properties - ); - } - } - return next({ - ...args - }); +// src/endpointsConfig/resolveEndpointsConfig.ts +var resolveEndpointsConfig = /* @__PURE__ */ __name((input) => { + const useDualstackEndpoint = (0, import_util_middleware.normalizeProvider)(input.useDualstackEndpoint ?? false); + const { endpoint, useFipsEndpoint, urlParser } = input; + return { + ...input, + tls: input.tls ?? true, + endpoint: endpoint ? (0, import_util_middleware.normalizeProvider)(typeof endpoint === "string" ? urlParser(endpoint) : endpoint) : () => getEndpointFromRegion({ ...input, useDualstackEndpoint, useFipsEndpoint }), + isCustomEndpoint: !!endpoint, + useDualstackEndpoint }; -}, "endpointMiddleware"); +}, "resolveEndpointsConfig"); -// src/getEndpointPlugin.ts -var import_middleware_serde = __nccwpck_require__(83255); -var endpointMiddlewareOptions = { - step: "serialize", - tags: ["ENDPOINT_PARAMETERS", "ENDPOINT_V2", "ENDPOINT"], - name: "endpointV2Middleware", - override: true, - relation: "before", - toMiddleware: import_middleware_serde.serializerMiddlewareOption.name -}; -var getEndpointPlugin = /* @__PURE__ */ __name((config, instructions) => ({ - applyToStack: (clientStack) => { - clientStack.addRelativeTo( - endpointMiddleware({ - config, - instructions - }), - endpointMiddlewareOptions - ); +// src/regionConfig/config.ts +var REGION_ENV_NAME = "AWS_REGION"; +var REGION_INI_NAME = "region"; +var NODE_REGION_CONFIG_OPTIONS = { + environmentVariableSelector: (env) => env[REGION_ENV_NAME], + configFileSelector: (profile) => profile[REGION_INI_NAME], + default: () => { + throw new Error("Region is missing"); } -}), "getEndpointPlugin"); +}; +var NODE_REGION_CONFIG_FILE_OPTIONS = { + preferredFile: "credentials" +}; -// src/resolveEndpointConfig.ts +// src/regionConfig/isFipsRegion.ts +var isFipsRegion = /* @__PURE__ */ __name((region) => typeof region === "string" && (region.startsWith("fips-") || region.endsWith("-fips")), "isFipsRegion"); + +// src/regionConfig/getRealRegion.ts +var getRealRegion = /* @__PURE__ */ __name((region) => isFipsRegion(region) ? ["fips-aws-global", "aws-fips"].includes(region) ? "us-east-1" : region.replace(/fips-(dkr-|prod-)?|-fips/, "") : region, "getRealRegion"); -var import_getEndpointFromConfig2 = __nccwpck_require__(76041); -var resolveEndpointConfig = /* @__PURE__ */ __name((input) => { - const tls = input.tls ?? true; - const { endpoint } = input; - const customEndpointProvider = endpoint != null ? async () => toEndpointV1(await (0, import_util_middleware.normalizeProvider)(endpoint)()) : void 0; - const isCustomEndpoint = !!endpoint; - const resolvedConfig = { +// src/regionConfig/resolveRegionConfig.ts +var resolveRegionConfig = /* @__PURE__ */ __name((input) => { + const { region, useFipsEndpoint } = input; + if (!region) { + throw new Error("Region is missing"); + } + return { ...input, - endpoint: customEndpointProvider, - tls, - isCustomEndpoint, - useDualstackEndpoint: (0, import_util_middleware.normalizeProvider)(input.useDualstackEndpoint ?? false), - useFipsEndpoint: (0, import_util_middleware.normalizeProvider)(input.useFipsEndpoint ?? false) + region: async () => { + if (typeof region === "string") { + return getRealRegion(region); + } + const providedRegion = await region(); + return getRealRegion(providedRegion); + }, + useFipsEndpoint: async () => { + const providedRegion = typeof region === "string" ? region : await region(); + if (isFipsRegion(providedRegion)) { + return true; + } + return typeof useFipsEndpoint !== "function" ? Promise.resolve(!!useFipsEndpoint) : useFipsEndpoint(); + } }; - let configuredEndpointPromise = void 0; - resolvedConfig.serviceConfiguredEndpoint = async () => { - if (input.serviceId && !configuredEndpointPromise) { - configuredEndpointPromise = (0, import_getEndpointFromConfig2.getEndpointFromConfig)(input.serviceId); +}, "resolveRegionConfig"); + +// src/regionInfo/getHostnameFromVariants.ts +var getHostnameFromVariants = /* @__PURE__ */ __name((variants = [], { useFipsEndpoint, useDualstackEndpoint }) => { + var _a; + return (_a = variants.find( + ({ tags }) => useFipsEndpoint === tags.includes("fips") && useDualstackEndpoint === tags.includes("dualstack") + )) == null ? void 0 : _a.hostname; +}, "getHostnameFromVariants"); + +// src/regionInfo/getResolvedHostname.ts +var getResolvedHostname = /* @__PURE__ */ __name((resolvedRegion, { regionHostname, partitionHostname }) => regionHostname ? regionHostname : partitionHostname ? partitionHostname.replace("{region}", resolvedRegion) : void 0, "getResolvedHostname"); + +// src/regionInfo/getResolvedPartition.ts +var getResolvedPartition = /* @__PURE__ */ __name((region, { partitionHash }) => Object.keys(partitionHash || {}).find((key) => partitionHash[key].regions.includes(region)) ?? "aws", "getResolvedPartition"); + +// src/regionInfo/getResolvedSigningRegion.ts +var getResolvedSigningRegion = /* @__PURE__ */ __name((hostname, { signingRegion, regionRegex, useFipsEndpoint }) => { + if (signingRegion) { + return signingRegion; + } else if (useFipsEndpoint) { + const regionRegexJs = regionRegex.replace("\\\\", "\\").replace(/^\^/g, "\\.").replace(/\$$/g, "\\."); + const regionRegexmatchArray = hostname.match(regionRegexJs); + if (regionRegexmatchArray) { + return regionRegexmatchArray[0].slice(1, -1); + } + } +}, "getResolvedSigningRegion"); + +// src/regionInfo/getRegionInfo.ts +var getRegionInfo = /* @__PURE__ */ __name((region, { + useFipsEndpoint = false, + useDualstackEndpoint = false, + signingService, + regionHash, + partitionHash +}) => { + var _a, _b, _c, _d, _e; + const partition = getResolvedPartition(region, { partitionHash }); + const resolvedRegion = region in regionHash ? region : ((_a = partitionHash[partition]) == null ? void 0 : _a.endpoint) ?? region; + const hostnameOptions = { useFipsEndpoint, useDualstackEndpoint }; + const regionHostname = getHostnameFromVariants((_b = regionHash[resolvedRegion]) == null ? void 0 : _b.variants, hostnameOptions); + const partitionHostname = getHostnameFromVariants((_c = partitionHash[partition]) == null ? void 0 : _c.variants, hostnameOptions); + const hostname = getResolvedHostname(resolvedRegion, { regionHostname, partitionHostname }); + if (hostname === void 0) { + throw new Error(`Endpoint resolution failed for: ${{ resolvedRegion, useFipsEndpoint, useDualstackEndpoint }}`); + } + const signingRegion = getResolvedSigningRegion(hostname, { + signingRegion: (_d = regionHash[resolvedRegion]) == null ? void 0 : _d.signingRegion, + regionRegex: partitionHash[partition].regionRegex, + useFipsEndpoint + }); + return { + partition, + signingService, + hostname, + ...signingRegion && { signingRegion }, + ...((_e = regionHash[resolvedRegion]) == null ? void 0 : _e.signingService) && { + signingService: regionHash[resolvedRegion].signingService } - return configuredEndpointPromise; }; - return resolvedConfig; -}, "resolveEndpointConfig"); +}, "getRegionInfo"); // Annotate the CommonJS export names for ESM import in node: 0 && (0); @@ -39224,7 +38637,7 @@ var resolveEndpointConfig = /* @__PURE__ */ __name((input) => { /***/ }), -/***/ 19618: +/***/ 90402: /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { var __defProp = Object.defineProperty; @@ -39249,1087 +38662,2243 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru // src/index.ts var src_exports = {}; __export(src_exports, { - AdaptiveRetryStrategy: () => AdaptiveRetryStrategy, - CONFIG_MAX_ATTEMPTS: () => CONFIG_MAX_ATTEMPTS, - CONFIG_RETRY_MODE: () => CONFIG_RETRY_MODE, - ENV_MAX_ATTEMPTS: () => ENV_MAX_ATTEMPTS, - ENV_RETRY_MODE: () => ENV_RETRY_MODE, - NODE_MAX_ATTEMPT_CONFIG_OPTIONS: () => NODE_MAX_ATTEMPT_CONFIG_OPTIONS, - NODE_RETRY_MODE_CONFIG_OPTIONS: () => NODE_RETRY_MODE_CONFIG_OPTIONS, - StandardRetryStrategy: () => StandardRetryStrategy, - defaultDelayDecider: () => defaultDelayDecider, - defaultRetryDecider: () => defaultRetryDecider, - getOmitRetryHeadersPlugin: () => getOmitRetryHeadersPlugin, - getRetryAfterHint: () => getRetryAfterHint, - getRetryPlugin: () => getRetryPlugin, - omitRetryHeadersMiddleware: () => omitRetryHeadersMiddleware, - omitRetryHeadersMiddlewareOptions: () => omitRetryHeadersMiddlewareOptions, - resolveRetryConfig: () => resolveRetryConfig, - retryMiddleware: () => retryMiddleware, - retryMiddlewareOptions: () => retryMiddlewareOptions + DefaultIdentityProviderConfig: () => DefaultIdentityProviderConfig, + EXPIRATION_MS: () => EXPIRATION_MS, + HttpApiKeyAuthSigner: () => HttpApiKeyAuthSigner, + HttpBearerAuthSigner: () => HttpBearerAuthSigner, + NoAuthSigner: () => NoAuthSigner, + RequestBuilder: () => RequestBuilder, + createIsIdentityExpiredFunction: () => createIsIdentityExpiredFunction, + createPaginator: () => createPaginator, + doesIdentityRequireRefresh: () => doesIdentityRequireRefresh, + getHttpAuthSchemeEndpointRuleSetPlugin: () => getHttpAuthSchemeEndpointRuleSetPlugin, + getHttpAuthSchemePlugin: () => getHttpAuthSchemePlugin, + getHttpSigningPlugin: () => getHttpSigningPlugin, + getSmithyContext: () => getSmithyContext3, + httpAuthSchemeEndpointRuleSetMiddlewareOptions: () => httpAuthSchemeEndpointRuleSetMiddlewareOptions, + httpAuthSchemeMiddleware: () => httpAuthSchemeMiddleware, + httpAuthSchemeMiddlewareOptions: () => httpAuthSchemeMiddlewareOptions, + httpSigningMiddleware: () => httpSigningMiddleware, + httpSigningMiddlewareOptions: () => httpSigningMiddlewareOptions, + isIdentityExpired: () => isIdentityExpired, + memoizeIdentityProvider: () => memoizeIdentityProvider, + normalizeProvider: () => normalizeProvider, + requestBuilder: () => requestBuilder }); module.exports = __toCommonJS(src_exports); -// src/AdaptiveRetryStrategy.ts - - -// src/StandardRetryStrategy.ts -var import_protocol_http = __nccwpck_require__(72356); - - -var import_uuid = __nccwpck_require__(37708); - -// src/defaultRetryQuota.ts -var import_util_retry = __nccwpck_require__(15518); -var getDefaultRetryQuota = /* @__PURE__ */ __name((initialRetryTokens, options) => { - const MAX_CAPACITY = initialRetryTokens; - const noRetryIncrement = (options == null ? void 0 : options.noRetryIncrement) ?? import_util_retry.NO_RETRY_INCREMENT; - const retryCost = (options == null ? void 0 : options.retryCost) ?? import_util_retry.RETRY_COST; - const timeoutRetryCost = (options == null ? void 0 : options.timeoutRetryCost) ?? import_util_retry.TIMEOUT_RETRY_COST; - let availableCapacity = initialRetryTokens; - const getCapacityAmount = /* @__PURE__ */ __name((error) => error.name === "TimeoutError" ? timeoutRetryCost : retryCost, "getCapacityAmount"); - const hasRetryTokens = /* @__PURE__ */ __name((error) => getCapacityAmount(error) <= availableCapacity, "hasRetryTokens"); - const retrieveRetryTokens = /* @__PURE__ */ __name((error) => { - if (!hasRetryTokens(error)) { - throw new Error("No retry token available"); - } - const capacityAmount = getCapacityAmount(error); - availableCapacity -= capacityAmount; - return capacityAmount; - }, "retrieveRetryTokens"); - const releaseRetryTokens = /* @__PURE__ */ __name((capacityReleaseAmount) => { - availableCapacity += capacityReleaseAmount ?? noRetryIncrement; - availableCapacity = Math.min(availableCapacity, MAX_CAPACITY); - }, "releaseRetryTokens"); - return Object.freeze({ - hasRetryTokens, - retrieveRetryTokens, - releaseRetryTokens - }); -}, "getDefaultRetryQuota"); - -// src/delayDecider.ts - -var defaultDelayDecider = /* @__PURE__ */ __name((delayBase, attempts) => Math.floor(Math.min(import_util_retry.MAXIMUM_RETRY_DELAY, Math.random() * 2 ** attempts * delayBase)), "defaultDelayDecider"); - -// src/retryDecider.ts -var import_service_error_classification = __nccwpck_require__(42058); -var defaultRetryDecider = /* @__PURE__ */ __name((error) => { - if (!error) { - return false; - } - return (0, import_service_error_classification.isRetryableByTrait)(error) || (0, import_service_error_classification.isClockSkewError)(error) || (0, import_service_error_classification.isThrottlingError)(error) || (0, import_service_error_classification.isTransientError)(error); -}, "defaultRetryDecider"); - -// src/util.ts -var asSdkError = /* @__PURE__ */ __name((error) => { - if (error instanceof Error) - return error; - if (error instanceof Object) - return Object.assign(new Error(), error); - if (typeof error === "string") - return new Error(error); - return new Error(`AWS SDK error wrapper for ${error}`); -}, "asSdkError"); - -// src/StandardRetryStrategy.ts -var _StandardRetryStrategy = class _StandardRetryStrategy { - constructor(maxAttemptsProvider, options) { - this.maxAttemptsProvider = maxAttemptsProvider; - this.mode = import_util_retry.RETRY_MODES.STANDARD; - this.retryDecider = (options == null ? void 0 : options.retryDecider) ?? defaultRetryDecider; - this.delayDecider = (options == null ? void 0 : options.delayDecider) ?? defaultDelayDecider; - this.retryQuota = (options == null ? void 0 : options.retryQuota) ?? getDefaultRetryQuota(import_util_retry.INITIAL_RETRY_TOKENS); - } - shouldRetry(error, attempts, maxAttempts) { - return attempts < maxAttempts && this.retryDecider(error) && this.retryQuota.hasRetryTokens(error); - } - async getMaxAttempts() { - let maxAttempts; - try { - maxAttempts = await this.maxAttemptsProvider(); - } catch (error) { - maxAttempts = import_util_retry.DEFAULT_MAX_ATTEMPTS; - } - return maxAttempts; +// src/middleware-http-auth-scheme/httpAuthSchemeMiddleware.ts +var import_util_middleware = __nccwpck_require__(76324); +function convertHttpAuthSchemesToMap(httpAuthSchemes) { + const map = /* @__PURE__ */ new Map(); + for (const scheme of httpAuthSchemes) { + map.set(scheme.schemeId, scheme); } - async retry(next, args, options) { - let retryTokenAmount; - let attempts = 0; - let totalDelay = 0; - const maxAttempts = await this.getMaxAttempts(); - const { request } = args; - if (import_protocol_http.HttpRequest.isInstance(request)) { - request.headers[import_util_retry.INVOCATION_ID_HEADER] = (0, import_uuid.v4)(); + return map; +} +__name(convertHttpAuthSchemesToMap, "convertHttpAuthSchemesToMap"); +var httpAuthSchemeMiddleware = /* @__PURE__ */ __name((config, mwOptions) => (next, context) => async (args) => { + var _a; + const options = config.httpAuthSchemeProvider( + await mwOptions.httpAuthSchemeParametersProvider(config, context, args.input) + ); + const authSchemes = convertHttpAuthSchemesToMap(config.httpAuthSchemes); + const smithyContext = (0, import_util_middleware.getSmithyContext)(context); + const failureReasons = []; + for (const option of options) { + const scheme = authSchemes.get(option.schemeId); + if (!scheme) { + failureReasons.push(`HttpAuthScheme \`${option.schemeId}\` was not enabled for this service.`); + continue; } - while (true) { - try { - if (import_protocol_http.HttpRequest.isInstance(request)) { - request.headers[import_util_retry.REQUEST_HEADER] = `attempt=${attempts + 1}; max=${maxAttempts}`; - } - if (options == null ? void 0 : options.beforeRequest) { - await options.beforeRequest(); - } - const { response, output } = await next(args); - if (options == null ? void 0 : options.afterRequest) { - options.afterRequest(response); - } - this.retryQuota.releaseRetryTokens(retryTokenAmount); - output.$metadata.attempts = attempts + 1; - output.$metadata.totalRetryDelay = totalDelay; - return { response, output }; - } catch (e) { - const err = asSdkError(e); - attempts++; - if (this.shouldRetry(err, attempts, maxAttempts)) { - retryTokenAmount = this.retryQuota.retrieveRetryTokens(err); - const delayFromDecider = this.delayDecider( - (0, import_service_error_classification.isThrottlingError)(err) ? import_util_retry.THROTTLING_RETRY_DELAY_BASE : import_util_retry.DEFAULT_RETRY_DELAY_BASE, - attempts - ); - const delayFromResponse = getDelayFromRetryAfterHeader(err.$response); - const delay = Math.max(delayFromResponse || 0, delayFromDecider); - totalDelay += delay; - await new Promise((resolve) => setTimeout(resolve, delay)); - continue; - } - if (!err.$metadata) { - err.$metadata = {}; - } - err.$metadata.attempts = attempts; - err.$metadata.totalRetryDelay = totalDelay; - throw err; - } + const identityProvider = scheme.identityProvider(await mwOptions.identityProviderConfigProvider(config)); + if (!identityProvider) { + failureReasons.push(`HttpAuthScheme \`${option.schemeId}\` did not have an IdentityProvider configured.`); + continue; } + const { identityProperties = {}, signingProperties = {} } = ((_a = option.propertiesExtractor) == null ? void 0 : _a.call(option, config, context)) || {}; + option.identityProperties = Object.assign(option.identityProperties || {}, identityProperties); + option.signingProperties = Object.assign(option.signingProperties || {}, signingProperties); + smithyContext.selectedHttpAuthScheme = { + httpAuthOption: option, + identity: await identityProvider(option.identityProperties), + signer: scheme.signer + }; + break; } -}; -__name(_StandardRetryStrategy, "StandardRetryStrategy"); -var StandardRetryStrategy = _StandardRetryStrategy; -var getDelayFromRetryAfterHeader = /* @__PURE__ */ __name((response) => { - if (!import_protocol_http.HttpResponse.isInstance(response)) - return; - const retryAfterHeaderName = Object.keys(response.headers).find((key) => key.toLowerCase() === "retry-after"); - if (!retryAfterHeaderName) - return; - const retryAfter = response.headers[retryAfterHeaderName]; - const retryAfterSeconds = Number(retryAfter); - if (!Number.isNaN(retryAfterSeconds)) - return retryAfterSeconds * 1e3; - const retryAfterDate = new Date(retryAfter); - return retryAfterDate.getTime() - Date.now(); -}, "getDelayFromRetryAfterHeader"); - -// src/AdaptiveRetryStrategy.ts -var _AdaptiveRetryStrategy = class _AdaptiveRetryStrategy extends StandardRetryStrategy { - constructor(maxAttemptsProvider, options) { - const { rateLimiter, ...superOptions } = options ?? {}; - super(maxAttemptsProvider, superOptions); - this.rateLimiter = rateLimiter ?? new import_util_retry.DefaultRateLimiter(); - this.mode = import_util_retry.RETRY_MODES.ADAPTIVE; - } - async retry(next, args) { - return super.retry(next, args, { - beforeRequest: async () => { - return this.rateLimiter.getSendToken(); - }, - afterRequest: (response) => { - this.rateLimiter.updateClientSendingRate(response); - } - }); - } -}; -__name(_AdaptiveRetryStrategy, "AdaptiveRetryStrategy"); -var AdaptiveRetryStrategy = _AdaptiveRetryStrategy; - -// src/configurations.ts -var import_util_middleware = __nccwpck_require__(76324); - -var ENV_MAX_ATTEMPTS = "AWS_MAX_ATTEMPTS"; -var CONFIG_MAX_ATTEMPTS = "max_attempts"; -var NODE_MAX_ATTEMPT_CONFIG_OPTIONS = { - environmentVariableSelector: (env) => { - const value = env[ENV_MAX_ATTEMPTS]; - if (!value) - return void 0; - const maxAttempt = parseInt(value); - if (Number.isNaN(maxAttempt)) { - throw new Error(`Environment variable ${ENV_MAX_ATTEMPTS} mast be a number, got "${value}"`); - } - return maxAttempt; - }, - configFileSelector: (profile) => { - const value = profile[CONFIG_MAX_ATTEMPTS]; - if (!value) - return void 0; - const maxAttempt = parseInt(value); - if (Number.isNaN(maxAttempt)) { - throw new Error(`Shared config file entry ${CONFIG_MAX_ATTEMPTS} mast be a number, got "${value}"`); - } - return maxAttempt; - }, - default: import_util_retry.DEFAULT_MAX_ATTEMPTS -}; -var resolveRetryConfig = /* @__PURE__ */ __name((input) => { - const { retryStrategy } = input; - const maxAttempts = (0, import_util_middleware.normalizeProvider)(input.maxAttempts ?? import_util_retry.DEFAULT_MAX_ATTEMPTS); - return { - ...input, - maxAttempts, - retryStrategy: async () => { - if (retryStrategy) { - return retryStrategy; - } - const retryMode = await (0, import_util_middleware.normalizeProvider)(input.retryMode)(); - if (retryMode === import_util_retry.RETRY_MODES.ADAPTIVE) { - return new import_util_retry.AdaptiveRetryStrategy(maxAttempts); - } - return new import_util_retry.StandardRetryStrategy(maxAttempts); - } - }; -}, "resolveRetryConfig"); -var ENV_RETRY_MODE = "AWS_RETRY_MODE"; -var CONFIG_RETRY_MODE = "retry_mode"; -var NODE_RETRY_MODE_CONFIG_OPTIONS = { - environmentVariableSelector: (env) => env[ENV_RETRY_MODE], - configFileSelector: (profile) => profile[CONFIG_RETRY_MODE], - default: import_util_retry.DEFAULT_RETRY_MODE -}; - -// src/omitRetryHeadersMiddleware.ts - - -var omitRetryHeadersMiddleware = /* @__PURE__ */ __name(() => (next) => async (args) => { - const { request } = args; - if (import_protocol_http.HttpRequest.isInstance(request)) { - delete request.headers[import_util_retry.INVOCATION_ID_HEADER]; - delete request.headers[import_util_retry.REQUEST_HEADER]; + if (!smithyContext.selectedHttpAuthScheme) { + throw new Error(failureReasons.join("\n")); } return next(args); -}, "omitRetryHeadersMiddleware"); -var omitRetryHeadersMiddlewareOptions = { - name: "omitRetryHeadersMiddleware", - tags: ["RETRY", "HEADERS", "OMIT_RETRY_HEADERS"], +}, "httpAuthSchemeMiddleware"); + +// src/middleware-http-auth-scheme/getHttpAuthSchemeEndpointRuleSetPlugin.ts +var import_middleware_endpoint = __nccwpck_require__(40099); +var httpAuthSchemeEndpointRuleSetMiddlewareOptions = { + step: "serialize", + tags: ["HTTP_AUTH_SCHEME"], + name: "httpAuthSchemeMiddleware", + override: true, relation: "before", - toMiddleware: "awsAuthMiddleware", - override: true + toMiddleware: import_middleware_endpoint.endpointMiddlewareOptions.name }; -var getOmitRetryHeadersPlugin = /* @__PURE__ */ __name((options) => ({ +var getHttpAuthSchemeEndpointRuleSetPlugin = /* @__PURE__ */ __name((config, { + httpAuthSchemeParametersProvider, + identityProviderConfigProvider +}) => ({ applyToStack: (clientStack) => { - clientStack.addRelativeTo(omitRetryHeadersMiddleware(), omitRetryHeadersMiddlewareOptions); + clientStack.addRelativeTo( + httpAuthSchemeMiddleware(config, { + httpAuthSchemeParametersProvider, + identityProviderConfigProvider + }), + httpAuthSchemeEndpointRuleSetMiddlewareOptions + ); } -}), "getOmitRetryHeadersPlugin"); - -// src/retryMiddleware.ts - - -var import_smithy_client = __nccwpck_require__(61411); - +}), "getHttpAuthSchemeEndpointRuleSetPlugin"); -var import_isStreamingPayload = __nccwpck_require__(49831); -var retryMiddleware = /* @__PURE__ */ __name((options) => (next, context) => async (args) => { - var _a; - let retryStrategy = await options.retryStrategy(); - const maxAttempts = await options.maxAttempts(); - if (isRetryStrategyV2(retryStrategy)) { - retryStrategy = retryStrategy; - let retryToken = await retryStrategy.acquireInitialRetryToken(context["partition_id"]); - let lastError = new Error(); - let attempts = 0; - let totalRetryDelay = 0; - const { request } = args; - const isRequest = import_protocol_http.HttpRequest.isInstance(request); - if (isRequest) { - request.headers[import_util_retry.INVOCATION_ID_HEADER] = (0, import_uuid.v4)(); - } - while (true) { - try { - if (isRequest) { - request.headers[import_util_retry.REQUEST_HEADER] = `attempt=${attempts + 1}; max=${maxAttempts}`; - } - const { response, output } = await next(args); - retryStrategy.recordSuccess(retryToken); - output.$metadata.attempts = attempts + 1; - output.$metadata.totalRetryDelay = totalRetryDelay; - return { response, output }; - } catch (e) { - const retryErrorInfo = getRetryErrorInfo(e); - lastError = asSdkError(e); - if (isRequest && (0, import_isStreamingPayload.isStreamingPayload)(request)) { - (_a = context.logger instanceof import_smithy_client.NoOpLogger ? console : context.logger) == null ? void 0 : _a.warn( - "An error was encountered in a non-retryable streaming request." - ); - throw lastError; - } - try { - retryToken = await retryStrategy.refreshRetryTokenForRetry(retryToken, retryErrorInfo); - } catch (refreshError) { - if (!lastError.$metadata) { - lastError.$metadata = {}; - } - lastError.$metadata.attempts = attempts + 1; - lastError.$metadata.totalRetryDelay = totalRetryDelay; - throw lastError; - } - attempts = retryToken.getRetryCount(); - const delay = retryToken.getRetryDelay(); - totalRetryDelay += delay; - await new Promise((resolve) => setTimeout(resolve, delay)); - } - } - } else { - retryStrategy = retryStrategy; - if (retryStrategy == null ? void 0 : retryStrategy.mode) - context.userAgent = [...context.userAgent || [], ["cfg/retry-mode", retryStrategy.mode]]; - return retryStrategy.retry(next, args); +// src/middleware-http-auth-scheme/getHttpAuthSchemePlugin.ts +var import_middleware_serde = __nccwpck_require__(83255); +var httpAuthSchemeMiddlewareOptions = { + step: "serialize", + tags: ["HTTP_AUTH_SCHEME"], + name: "httpAuthSchemeMiddleware", + override: true, + relation: "before", + toMiddleware: import_middleware_serde.serializerMiddlewareOption.name +}; +var getHttpAuthSchemePlugin = /* @__PURE__ */ __name((config, { + httpAuthSchemeParametersProvider, + identityProviderConfigProvider +}) => ({ + applyToStack: (clientStack) => { + clientStack.addRelativeTo( + httpAuthSchemeMiddleware(config, { + httpAuthSchemeParametersProvider, + identityProviderConfigProvider + }), + httpAuthSchemeMiddlewareOptions + ); } -}, "retryMiddleware"); -var isRetryStrategyV2 = /* @__PURE__ */ __name((retryStrategy) => typeof retryStrategy.acquireInitialRetryToken !== "undefined" && typeof retryStrategy.refreshRetryTokenForRetry !== "undefined" && typeof retryStrategy.recordSuccess !== "undefined", "isRetryStrategyV2"); -var getRetryErrorInfo = /* @__PURE__ */ __name((error) => { - const errorInfo = { - error, - errorType: getRetryErrorType(error) - }; - const retryAfterHint = getRetryAfterHint(error.$response); - if (retryAfterHint) { - errorInfo.retryAfterHint = retryAfterHint; +}), "getHttpAuthSchemePlugin"); + +// src/middleware-http-signing/httpSigningMiddleware.ts +var import_protocol_http = __nccwpck_require__(72356); + +var defaultErrorHandler = /* @__PURE__ */ __name((signingProperties) => (error) => { + throw error; +}, "defaultErrorHandler"); +var defaultSuccessHandler = /* @__PURE__ */ __name((httpResponse, signingProperties) => { +}, "defaultSuccessHandler"); +var httpSigningMiddleware = /* @__PURE__ */ __name((config) => (next, context) => async (args) => { + if (!import_protocol_http.HttpRequest.isInstance(args.request)) { + return next(args); } - return errorInfo; -}, "getRetryErrorInfo"); -var getRetryErrorType = /* @__PURE__ */ __name((error) => { - if ((0, import_service_error_classification.isThrottlingError)(error)) - return "THROTTLING"; - if ((0, import_service_error_classification.isTransientError)(error)) - return "TRANSIENT"; - if ((0, import_service_error_classification.isServerError)(error)) - return "SERVER_ERROR"; - return "CLIENT_ERROR"; -}, "getRetryErrorType"); -var retryMiddlewareOptions = { - name: "retryMiddleware", - tags: ["RETRY"], + const smithyContext = (0, import_util_middleware.getSmithyContext)(context); + const scheme = smithyContext.selectedHttpAuthScheme; + if (!scheme) { + throw new Error(`No HttpAuthScheme was selected: unable to sign request`); + } + const { + httpAuthOption: { signingProperties = {} }, + identity, + signer + } = scheme; + const output = await next({ + ...args, + request: await signer.sign(args.request, identity, signingProperties) + }).catch((signer.errorHandler || defaultErrorHandler)(signingProperties)); + (signer.successHandler || defaultSuccessHandler)(output.response, signingProperties); + return output; +}, "httpSigningMiddleware"); + +// src/middleware-http-signing/getHttpSigningMiddleware.ts +var import_middleware_retry = __nccwpck_require__(19618); +var httpSigningMiddlewareOptions = { step: "finalizeRequest", - priority: "high", - override: true + tags: ["HTTP_SIGNING"], + name: "httpSigningMiddleware", + aliases: ["apiKeyMiddleware", "tokenMiddleware", "awsAuthMiddleware"], + override: true, + relation: "after", + toMiddleware: import_middleware_retry.retryMiddlewareOptions.name }; -var getRetryPlugin = /* @__PURE__ */ __name((options) => ({ +var getHttpSigningPlugin = /* @__PURE__ */ __name((config) => ({ applyToStack: (clientStack) => { - clientStack.add(retryMiddleware(options), retryMiddlewareOptions); + clientStack.addRelativeTo(httpSigningMiddleware(config), httpSigningMiddlewareOptions); } -}), "getRetryPlugin"); -var getRetryAfterHint = /* @__PURE__ */ __name((response) => { - if (!import_protocol_http.HttpResponse.isInstance(response)) - return; - const retryAfterHeaderName = Object.keys(response.headers).find((key) => key.toLowerCase() === "retry-after"); - if (!retryAfterHeaderName) - return; - const retryAfter = response.headers[retryAfterHeaderName]; - const retryAfterSeconds = Number(retryAfter); - if (!Number.isNaN(retryAfterSeconds)) - return new Date(retryAfterSeconds * 1e3); - const retryAfterDate = new Date(retryAfter); - return retryAfterDate; -}, "getRetryAfterHint"); -// Annotate the CommonJS export names for ESM import in node: - -0 && (0); +}), "getHttpSigningPlugin"); +// src/util-identity-and-auth/DefaultIdentityProviderConfig.ts +var _DefaultIdentityProviderConfig = class _DefaultIdentityProviderConfig { + /** + * Creates an IdentityProviderConfig with a record of scheme IDs to identity providers. + * + * @param config scheme IDs and identity providers to configure + */ + constructor(config) { + this.authSchemes = /* @__PURE__ */ new Map(); + for (const [key, value] of Object.entries(config)) { + if (value !== void 0) { + this.authSchemes.set(key, value); + } + } + } + getIdentityProvider(schemeId) { + return this.authSchemes.get(schemeId); + } +}; +__name(_DefaultIdentityProviderConfig, "DefaultIdentityProviderConfig"); +var DefaultIdentityProviderConfig = _DefaultIdentityProviderConfig; +// src/util-identity-and-auth/httpAuthSchemes/httpApiKeyAuth.ts -/***/ }), +var import_types = __nccwpck_require__(82526); +var _HttpApiKeyAuthSigner = class _HttpApiKeyAuthSigner { + async sign(httpRequest, identity, signingProperties) { + if (!signingProperties) { + throw new Error( + "request could not be signed with `apiKey` since the `name` and `in` signer properties are missing" + ); + } + if (!signingProperties.name) { + throw new Error("request could not be signed with `apiKey` since the `name` signer property is missing"); + } + if (!signingProperties.in) { + throw new Error("request could not be signed with `apiKey` since the `in` signer property is missing"); + } + if (!identity.apiKey) { + throw new Error("request could not be signed with `apiKey` since the `apiKey` is not defined"); + } + const clonedRequest = import_protocol_http.HttpRequest.clone(httpRequest); + if (signingProperties.in === import_types.HttpApiKeyAuthLocation.QUERY) { + clonedRequest.query[signingProperties.name] = identity.apiKey; + } else if (signingProperties.in === import_types.HttpApiKeyAuthLocation.HEADER) { + clonedRequest.headers[signingProperties.name] = signingProperties.scheme ? `${signingProperties.scheme} ${identity.apiKey}` : identity.apiKey; + } else { + throw new Error( + "request can only be signed with `apiKey` locations `query` or `header`, but found: `" + signingProperties.in + "`" + ); + } + return clonedRequest; + } +}; +__name(_HttpApiKeyAuthSigner, "HttpApiKeyAuthSigner"); +var HttpApiKeyAuthSigner = _HttpApiKeyAuthSigner; -/***/ 49831: -/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { +// src/util-identity-and-auth/httpAuthSchemes/httpBearerAuth.ts -"use strict"; +var _HttpBearerAuthSigner = class _HttpBearerAuthSigner { + async sign(httpRequest, identity, signingProperties) { + const clonedRequest = import_protocol_http.HttpRequest.clone(httpRequest); + if (!identity.token) { + throw new Error("request could not be signed with `token` since the `token` is not defined"); + } + clonedRequest.headers["Authorization"] = `Bearer ${identity.token}`; + return clonedRequest; + } +}; +__name(_HttpBearerAuthSigner, "HttpBearerAuthSigner"); +var HttpBearerAuthSigner = _HttpBearerAuthSigner; -Object.defineProperty(exports, "__esModule", ({ value: true })); -exports.isStreamingPayload = void 0; -const stream_1 = __nccwpck_require__(2203); -const isStreamingPayload = (request) => (request === null || request === void 0 ? void 0 : request.body) instanceof stream_1.Readable || - (typeof ReadableStream !== "undefined" && (request === null || request === void 0 ? void 0 : request.body) instanceof ReadableStream); -exports.isStreamingPayload = isStreamingPayload; +// src/util-identity-and-auth/httpAuthSchemes/noAuth.ts +var _NoAuthSigner = class _NoAuthSigner { + async sign(httpRequest, identity, signingProperties) { + return httpRequest; + } +}; +__name(_NoAuthSigner, "NoAuthSigner"); +var NoAuthSigner = _NoAuthSigner; +// src/util-identity-and-auth/memoizeIdentityProvider.ts +var createIsIdentityExpiredFunction = /* @__PURE__ */ __name((expirationMs) => (identity) => doesIdentityRequireRefresh(identity) && identity.expiration.getTime() - Date.now() < expirationMs, "createIsIdentityExpiredFunction"); +var EXPIRATION_MS = 3e5; +var isIdentityExpired = createIsIdentityExpiredFunction(EXPIRATION_MS); +var doesIdentityRequireRefresh = /* @__PURE__ */ __name((identity) => identity.expiration !== void 0, "doesIdentityRequireRefresh"); +var memoizeIdentityProvider = /* @__PURE__ */ __name((provider, isExpired, requiresRefresh) => { + if (provider === void 0) { + return void 0; + } + const normalizedProvider = typeof provider !== "function" ? async () => Promise.resolve(provider) : provider; + let resolved; + let pending; + let hasResult; + let isConstant = false; + const coalesceProvider = /* @__PURE__ */ __name(async (options) => { + if (!pending) { + pending = normalizedProvider(options); + } + try { + resolved = await pending; + hasResult = true; + isConstant = false; + } finally { + pending = void 0; + } + return resolved; + }, "coalesceProvider"); + if (isExpired === void 0) { + return async (options) => { + if (!hasResult || (options == null ? void 0 : options.forceRefresh)) { + resolved = await coalesceProvider(options); + } + return resolved; + }; + } + return async (options) => { + if (!hasResult || (options == null ? void 0 : options.forceRefresh)) { + resolved = await coalesceProvider(options); + } + if (isConstant) { + return resolved; + } + if (!requiresRefresh(resolved)) { + isConstant = true; + return resolved; + } + if (isExpired(resolved)) { + await coalesceProvider(options); + return resolved; + } + return resolved; + }; +}, "memoizeIdentityProvider"); -/***/ }), +// src/getSmithyContext.ts -/***/ 37708: -/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { +var getSmithyContext3 = /* @__PURE__ */ __name((context) => context[import_types.SMITHY_CONTEXT_KEY] || (context[import_types.SMITHY_CONTEXT_KEY] = {}), "getSmithyContext"); -"use strict"; +// src/normalizeProvider.ts +var normalizeProvider = /* @__PURE__ */ __name((input) => { + if (typeof input === "function") + return input; + const promisified = Promise.resolve(input); + return () => promisified; +}, "normalizeProvider"); +// src/protocols/requestBuilder.ts -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -Object.defineProperty(exports, "NIL", ({ - enumerable: true, - get: function () { - return _nil.default; +var import_smithy_client = __nccwpck_require__(61411); +function requestBuilder(input, context) { + return new RequestBuilder(input, context); +} +__name(requestBuilder, "requestBuilder"); +var _RequestBuilder = class _RequestBuilder { + constructor(input, context) { + this.input = input; + this.context = context; + this.query = {}; + this.method = ""; + this.headers = {}; + this.path = ""; + this.body = null; + this.hostname = ""; + this.resolvePathStack = []; } -})); -Object.defineProperty(exports, "parse", ({ - enumerable: true, - get: function () { - return _parse.default; + async build() { + const { hostname, protocol = "https", port, path: basePath } = await this.context.endpoint(); + this.path = basePath; + for (const resolvePath of this.resolvePathStack) { + resolvePath(this.path); + } + return new import_protocol_http.HttpRequest({ + protocol, + hostname: this.hostname || hostname, + port, + method: this.method, + path: this.path, + query: this.query, + body: this.body, + headers: this.headers + }); } -})); -Object.defineProperty(exports, "stringify", ({ - enumerable: true, - get: function () { - return _stringify.default; + /** + * Brevity setter for "hostname". + */ + hn(hostname) { + this.hostname = hostname; + return this; } -})); -Object.defineProperty(exports, "v1", ({ - enumerable: true, - get: function () { - return _v.default; + /** + * Brevity initial builder for "basepath". + */ + bp(uriLabel) { + this.resolvePathStack.push((basePath) => { + this.path = `${(basePath == null ? void 0 : basePath.endsWith("/")) ? basePath.slice(0, -1) : basePath || ""}` + uriLabel; + }); + return this; } -})); -Object.defineProperty(exports, "v3", ({ - enumerable: true, - get: function () { - return _v2.default; + /** + * Brevity incremental builder for "path". + */ + p(memberName, labelValueProvider, uriLabel, isGreedyLabel) { + this.resolvePathStack.push((path) => { + this.path = (0, import_smithy_client.resolvedPath)(path, this.input, memberName, labelValueProvider, uriLabel, isGreedyLabel); + }); + return this; } -})); -Object.defineProperty(exports, "v4", ({ - enumerable: true, - get: function () { - return _v3.default; + /** + * Brevity setter for "headers". + */ + h(headers) { + this.headers = headers; + return this; } -})); -Object.defineProperty(exports, "v5", ({ - enumerable: true, - get: function () { - return _v4.default; + /** + * Brevity setter for "query". + */ + q(query) { + this.query = query; + return this; } -})); -Object.defineProperty(exports, "validate", ({ - enumerable: true, - get: function () { - return _validate.default; + /** + * Brevity setter for "body". + */ + b(body) { + this.body = body; + return this; } -})); -Object.defineProperty(exports, "version", ({ - enumerable: true, - get: function () { - return _version.default; + /** + * Brevity setter for "method". + */ + m(method) { + this.method = method; + return this; } -})); +}; +__name(_RequestBuilder, "RequestBuilder"); +var RequestBuilder = _RequestBuilder; -var _v = _interopRequireDefault(__nccwpck_require__(76323)); +// src/pagination/createPaginator.ts +var makePagedClientRequest = /* @__PURE__ */ __name(async (CommandCtor, client, input, ...args) => { + return await client.send(new CommandCtor(input), ...args); +}, "makePagedClientRequest"); +function createPaginator(ClientCtor, CommandCtor, inputTokenName, outputTokenName, pageSizeTokenName) { + return /* @__PURE__ */ __name(async function* paginateOperation(config, input, ...additionalArguments) { + let token = config.startingToken || void 0; + let hasNext = true; + let page; + while (hasNext) { + input[inputTokenName] = token; + if (pageSizeTokenName) { + input[pageSizeTokenName] = input[pageSizeTokenName] ?? config.pageSize; + } + if (config.client instanceof ClientCtor) { + page = await makePagedClientRequest(CommandCtor, config.client, input, ...additionalArguments); + } else { + throw new Error(`Invalid client, expected instance of ${ClientCtor.name}`); + } + yield page; + const prevToken = token; + token = get(page, outputTokenName); + hasNext = !!(token && (!config.stopOnSameToken || token !== prevToken)); + } + return void 0; + }, "paginateOperation"); +} +__name(createPaginator, "createPaginator"); +var get = /* @__PURE__ */ __name((fromObject, path) => { + let cursor = fromObject; + const pathComponents = path.split("."); + for (const step of pathComponents) { + if (!cursor || typeof cursor !== "object") { + return void 0; + } + cursor = cursor[step]; + } + return cursor; +}, "get"); +// Annotate the CommonJS export names for ESM import in node: -var _v2 = _interopRequireDefault(__nccwpck_require__(85285)); +0 && (0); -var _v3 = _interopRequireDefault(__nccwpck_require__(18960)); -var _v4 = _interopRequireDefault(__nccwpck_require__(25831)); -var _nil = _interopRequireDefault(__nccwpck_require__(74143)); +/***/ }), -var _version = _interopRequireDefault(__nccwpck_require__(72224)); +/***/ 82526: +/***/ ((module) => { -var _validate = _interopRequireDefault(__nccwpck_require__(19820)); +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __name = (target, value) => __defProp(target, "name", { value, configurable: true }); +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); -var _stringify = _interopRequireDefault(__nccwpck_require__(73601)); +// src/index.ts +var src_exports = {}; +__export(src_exports, { + AlgorithmId: () => AlgorithmId, + EndpointURLScheme: () => EndpointURLScheme, + FieldPosition: () => FieldPosition, + HttpApiKeyAuthLocation: () => HttpApiKeyAuthLocation, + HttpAuthLocation: () => HttpAuthLocation, + IniSectionType: () => IniSectionType, + RequestHandlerProtocol: () => RequestHandlerProtocol, + SMITHY_CONTEXT_KEY: () => SMITHY_CONTEXT_KEY, + getDefaultClientConfiguration: () => getDefaultClientConfiguration, + resolveDefaultRuntimeConfig: () => resolveDefaultRuntimeConfig +}); +module.exports = __toCommonJS(src_exports); -var _parse = _interopRequireDefault(__nccwpck_require__(88351)); +// src/auth/auth.ts +var HttpAuthLocation = /* @__PURE__ */ ((HttpAuthLocation2) => { + HttpAuthLocation2["HEADER"] = "header"; + HttpAuthLocation2["QUERY"] = "query"; + return HttpAuthLocation2; +})(HttpAuthLocation || {}); -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } +// src/auth/HttpApiKeyAuth.ts +var HttpApiKeyAuthLocation = /* @__PURE__ */ ((HttpApiKeyAuthLocation2) => { + HttpApiKeyAuthLocation2["HEADER"] = "header"; + HttpApiKeyAuthLocation2["QUERY"] = "query"; + return HttpApiKeyAuthLocation2; +})(HttpApiKeyAuthLocation || {}); -/***/ }), +// src/endpoint.ts +var EndpointURLScheme = /* @__PURE__ */ ((EndpointURLScheme2) => { + EndpointURLScheme2["HTTP"] = "http"; + EndpointURLScheme2["HTTPS"] = "https"; + return EndpointURLScheme2; +})(EndpointURLScheme || {}); -/***/ 20276: -/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { +// src/extensions/checksum.ts +var AlgorithmId = /* @__PURE__ */ ((AlgorithmId2) => { + AlgorithmId2["MD5"] = "md5"; + AlgorithmId2["CRC32"] = "crc32"; + AlgorithmId2["CRC32C"] = "crc32c"; + AlgorithmId2["SHA1"] = "sha1"; + AlgorithmId2["SHA256"] = "sha256"; + return AlgorithmId2; +})(AlgorithmId || {}); +var getChecksumConfiguration = /* @__PURE__ */ __name((runtimeConfig) => { + const checksumAlgorithms = []; + if (runtimeConfig.sha256 !== void 0) { + checksumAlgorithms.push({ + algorithmId: () => "sha256" /* SHA256 */, + checksumConstructor: () => runtimeConfig.sha256 + }); + } + if (runtimeConfig.md5 != void 0) { + checksumAlgorithms.push({ + algorithmId: () => "md5" /* MD5 */, + checksumConstructor: () => runtimeConfig.md5 + }); + } + return { + _checksumAlgorithms: checksumAlgorithms, + addChecksumAlgorithm(algo) { + this._checksumAlgorithms.push(algo); + }, + checksumAlgorithms() { + return this._checksumAlgorithms; + } + }; +}, "getChecksumConfiguration"); +var resolveChecksumRuntimeConfig = /* @__PURE__ */ __name((clientConfig) => { + const runtimeConfig = {}; + clientConfig.checksumAlgorithms().forEach((checksumAlgorithm) => { + runtimeConfig[checksumAlgorithm.algorithmId()] = checksumAlgorithm.checksumConstructor(); + }); + return runtimeConfig; +}, "resolveChecksumRuntimeConfig"); -"use strict"; +// src/extensions/defaultClientConfiguration.ts +var getDefaultClientConfiguration = /* @__PURE__ */ __name((runtimeConfig) => { + return { + ...getChecksumConfiguration(runtimeConfig) + }; +}, "getDefaultClientConfiguration"); +var resolveDefaultRuntimeConfig = /* @__PURE__ */ __name((config) => { + return { + ...resolveChecksumRuntimeConfig(config) + }; +}, "resolveDefaultRuntimeConfig"); +// src/http.ts +var FieldPosition = /* @__PURE__ */ ((FieldPosition2) => { + FieldPosition2[FieldPosition2["HEADER"] = 0] = "HEADER"; + FieldPosition2[FieldPosition2["TRAILER"] = 1] = "TRAILER"; + return FieldPosition2; +})(FieldPosition || {}); -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports["default"] = void 0; +// src/middleware.ts +var SMITHY_CONTEXT_KEY = "__smithy_context"; -var _crypto = _interopRequireDefault(__nccwpck_require__(76982)); +// src/profile.ts +var IniSectionType = /* @__PURE__ */ ((IniSectionType2) => { + IniSectionType2["PROFILE"] = "profile"; + IniSectionType2["SSO_SESSION"] = "sso-session"; + IniSectionType2["SERVICES"] = "services"; + return IniSectionType2; +})(IniSectionType || {}); -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } +// src/transfer.ts +var RequestHandlerProtocol = /* @__PURE__ */ ((RequestHandlerProtocol2) => { + RequestHandlerProtocol2["HTTP_0_9"] = "http/0.9"; + RequestHandlerProtocol2["HTTP_1_0"] = "http/1.0"; + RequestHandlerProtocol2["TDS_8_0"] = "tds/8.0"; + return RequestHandlerProtocol2; +})(RequestHandlerProtocol || {}); +// Annotate the CommonJS export names for ESM import in node: -function md5(bytes) { - if (Array.isArray(bytes)) { - bytes = Buffer.from(bytes); - } else if (typeof bytes === 'string') { - bytes = Buffer.from(bytes, 'utf8'); - } +0 && (0); - return _crypto.default.createHash('md5').update(bytes).digest(); -} -var _default = md5; -exports["default"] = _default; /***/ }), -/***/ 52921: -/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports["default"] = void 0; - -var _crypto = _interopRequireDefault(__nccwpck_require__(76982)); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } +/***/ 40566: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { -var _default = { - randomUUID: _crypto.default.randomUUID +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __name = (target, value) => __defProp(target, "name", { value, configurable: true }); +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); }; -exports["default"] = _default; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); -/***/ }), +// src/index.ts +var src_exports = {}; +__export(src_exports, { + DEFAULT_MAX_RETRIES: () => DEFAULT_MAX_RETRIES, + DEFAULT_TIMEOUT: () => DEFAULT_TIMEOUT, + ENV_CMDS_AUTH_TOKEN: () => ENV_CMDS_AUTH_TOKEN, + ENV_CMDS_FULL_URI: () => ENV_CMDS_FULL_URI, + ENV_CMDS_RELATIVE_URI: () => ENV_CMDS_RELATIVE_URI, + Endpoint: () => Endpoint, + fromContainerMetadata: () => fromContainerMetadata, + fromInstanceMetadata: () => fromInstanceMetadata, + getInstanceMetadataEndpoint: () => getInstanceMetadataEndpoint, + httpRequest: () => httpRequest, + providerConfigFromInit: () => providerConfigFromInit +}); +module.exports = __toCommonJS(src_exports); -/***/ 74143: -/***/ ((__unused_webpack_module, exports) => { +// src/fromContainerMetadata.ts -"use strict"; +var import_url = __nccwpck_require__(87016); +// src/remoteProvider/httpRequest.ts +var import_property_provider = __nccwpck_require__(71238); +var import_buffer = __nccwpck_require__(20181); +var import_http = __nccwpck_require__(58611); +function httpRequest(options) { + return new Promise((resolve, reject) => { + var _a; + const req = (0, import_http.request)({ + method: "GET", + ...options, + // Node.js http module doesn't accept hostname with square brackets + // Refs: https://github.com/nodejs/node/issues/39738 + hostname: (_a = options.hostname) == null ? void 0 : _a.replace(/^\[(.+)\]$/, "$1") + }); + req.on("error", (err) => { + reject(Object.assign(new import_property_provider.ProviderError("Unable to connect to instance metadata service"), err)); + req.destroy(); + }); + req.on("timeout", () => { + reject(new import_property_provider.ProviderError("TimeoutError from instance metadata service")); + req.destroy(); + }); + req.on("response", (res) => { + const { statusCode = 400 } = res; + if (statusCode < 200 || 300 <= statusCode) { + reject( + Object.assign(new import_property_provider.ProviderError("Error response received from instance metadata service"), { statusCode }) + ); + req.destroy(); + } + const chunks = []; + res.on("data", (chunk) => { + chunks.push(chunk); + }); + res.on("end", () => { + resolve(import_buffer.Buffer.concat(chunks)); + req.destroy(); + }); + }); + req.end(); + }); +} +__name(httpRequest, "httpRequest"); -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports["default"] = void 0; -var _default = '00000000-0000-0000-0000-000000000000'; -exports["default"] = _default; +// src/remoteProvider/ImdsCredentials.ts +var isImdsCredentials = /* @__PURE__ */ __name((arg) => Boolean(arg) && typeof arg === "object" && typeof arg.AccessKeyId === "string" && typeof arg.SecretAccessKey === "string" && typeof arg.Token === "string" && typeof arg.Expiration === "string", "isImdsCredentials"); +var fromImdsCredentials = /* @__PURE__ */ __name((creds) => ({ + accessKeyId: creds.AccessKeyId, + secretAccessKey: creds.SecretAccessKey, + sessionToken: creds.Token, + expiration: new Date(creds.Expiration), + ...creds.AccountId && { accountId: creds.AccountId } +}), "fromImdsCredentials"); -/***/ }), +// src/remoteProvider/RemoteProviderInit.ts +var DEFAULT_TIMEOUT = 1e3; +var DEFAULT_MAX_RETRIES = 0; +var providerConfigFromInit = /* @__PURE__ */ __name(({ + maxRetries = DEFAULT_MAX_RETRIES, + timeout = DEFAULT_TIMEOUT +}) => ({ maxRetries, timeout }), "providerConfigFromInit"); -/***/ 88351: -/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { +// src/remoteProvider/retry.ts +var retry = /* @__PURE__ */ __name((toRetry, maxRetries) => { + let promise = toRetry(); + for (let i = 0; i < maxRetries; i++) { + promise = promise.catch(toRetry); + } + return promise; +}, "retry"); -"use strict"; +// src/fromContainerMetadata.ts +var ENV_CMDS_FULL_URI = "AWS_CONTAINER_CREDENTIALS_FULL_URI"; +var ENV_CMDS_RELATIVE_URI = "AWS_CONTAINER_CREDENTIALS_RELATIVE_URI"; +var ENV_CMDS_AUTH_TOKEN = "AWS_CONTAINER_AUTHORIZATION_TOKEN"; +var fromContainerMetadata = /* @__PURE__ */ __name((init = {}) => { + const { timeout, maxRetries } = providerConfigFromInit(init); + return () => retry(async () => { + const requestOptions = await getCmdsUri({ logger: init.logger }); + const credsResponse = JSON.parse(await requestFromEcsImds(timeout, requestOptions)); + if (!isImdsCredentials(credsResponse)) { + throw new import_property_provider.CredentialsProviderError("Invalid response received from instance metadata service.", { + logger: init.logger + }); + } + return fromImdsCredentials(credsResponse); + }, maxRetries); +}, "fromContainerMetadata"); +var requestFromEcsImds = /* @__PURE__ */ __name(async (timeout, options) => { + if (process.env[ENV_CMDS_AUTH_TOKEN]) { + options.headers = { + ...options.headers, + Authorization: process.env[ENV_CMDS_AUTH_TOKEN] + }; + } + const buffer = await httpRequest({ + ...options, + timeout + }); + return buffer.toString(); +}, "requestFromEcsImds"); +var CMDS_IP = "169.254.170.2"; +var GREENGRASS_HOSTS = { + localhost: true, + "127.0.0.1": true +}; +var GREENGRASS_PROTOCOLS = { + "http:": true, + "https:": true +}; +var getCmdsUri = /* @__PURE__ */ __name(async ({ logger }) => { + if (process.env[ENV_CMDS_RELATIVE_URI]) { + return { + hostname: CMDS_IP, + path: process.env[ENV_CMDS_RELATIVE_URI] + }; + } + if (process.env[ENV_CMDS_FULL_URI]) { + const parsed = (0, import_url.parse)(process.env[ENV_CMDS_FULL_URI]); + if (!parsed.hostname || !(parsed.hostname in GREENGRASS_HOSTS)) { + throw new import_property_provider.CredentialsProviderError(`${parsed.hostname} is not a valid container metadata service hostname`, { + tryNextLink: false, + logger + }); + } + if (!parsed.protocol || !(parsed.protocol in GREENGRASS_PROTOCOLS)) { + throw new import_property_provider.CredentialsProviderError(`${parsed.protocol} is not a valid container metadata service protocol`, { + tryNextLink: false, + logger + }); + } + return { + ...parsed, + port: parsed.port ? parseInt(parsed.port, 10) : void 0 + }; + } + throw new import_property_provider.CredentialsProviderError( + `The container metadata credential provider cannot be used unless the ${ENV_CMDS_RELATIVE_URI} or ${ENV_CMDS_FULL_URI} environment variable is set`, + { + tryNextLink: false, + logger + } + ); +}, "getCmdsUri"); +// src/fromInstanceMetadata.ts -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports["default"] = void 0; -var _validate = _interopRequireDefault(__nccwpck_require__(19820)); -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } +// src/error/InstanceMetadataV1FallbackError.ts -function parse(uuid) { - if (!(0, _validate.default)(uuid)) { - throw TypeError('Invalid UUID'); +var _InstanceMetadataV1FallbackError = class _InstanceMetadataV1FallbackError extends import_property_provider.CredentialsProviderError { + constructor(message, tryNextLink = true) { + super(message, tryNextLink); + this.tryNextLink = tryNextLink; + this.name = "InstanceMetadataV1FallbackError"; + Object.setPrototypeOf(this, _InstanceMetadataV1FallbackError.prototype); } +}; +__name(_InstanceMetadataV1FallbackError, "InstanceMetadataV1FallbackError"); +var InstanceMetadataV1FallbackError = _InstanceMetadataV1FallbackError; - let v; - const arr = new Uint8Array(16); // Parse ########-....-....-....-............ +// src/utils/getInstanceMetadataEndpoint.ts +var import_node_config_provider = __nccwpck_require__(55704); +var import_url_parser = __nccwpck_require__(14494); - arr[0] = (v = parseInt(uuid.slice(0, 8), 16)) >>> 24; - arr[1] = v >>> 16 & 0xff; - arr[2] = v >>> 8 & 0xff; - arr[3] = v & 0xff; // Parse ........-####-....-....-............ +// src/config/Endpoint.ts +var Endpoint = /* @__PURE__ */ ((Endpoint2) => { + Endpoint2["IPv4"] = "http://169.254.169.254"; + Endpoint2["IPv6"] = "http://[fd00:ec2::254]"; + return Endpoint2; +})(Endpoint || {}); - arr[4] = (v = parseInt(uuid.slice(9, 13), 16)) >>> 8; - arr[5] = v & 0xff; // Parse ........-....-####-....-............ +// src/config/EndpointConfigOptions.ts +var ENV_ENDPOINT_NAME = "AWS_EC2_METADATA_SERVICE_ENDPOINT"; +var CONFIG_ENDPOINT_NAME = "ec2_metadata_service_endpoint"; +var ENDPOINT_CONFIG_OPTIONS = { + environmentVariableSelector: (env) => env[ENV_ENDPOINT_NAME], + configFileSelector: (profile) => profile[CONFIG_ENDPOINT_NAME], + default: void 0 +}; - arr[6] = (v = parseInt(uuid.slice(14, 18), 16)) >>> 8; - arr[7] = v & 0xff; // Parse ........-....-....-####-............ +// src/config/EndpointMode.ts +var EndpointMode = /* @__PURE__ */ ((EndpointMode2) => { + EndpointMode2["IPv4"] = "IPv4"; + EndpointMode2["IPv6"] = "IPv6"; + return EndpointMode2; +})(EndpointMode || {}); - arr[8] = (v = parseInt(uuid.slice(19, 23), 16)) >>> 8; - arr[9] = v & 0xff; // Parse ........-....-....-....-############ - // (Use "/" to avoid 32-bit truncation when bit-shifting high-order bytes) +// src/config/EndpointModeConfigOptions.ts +var ENV_ENDPOINT_MODE_NAME = "AWS_EC2_METADATA_SERVICE_ENDPOINT_MODE"; +var CONFIG_ENDPOINT_MODE_NAME = "ec2_metadata_service_endpoint_mode"; +var ENDPOINT_MODE_CONFIG_OPTIONS = { + environmentVariableSelector: (env) => env[ENV_ENDPOINT_MODE_NAME], + configFileSelector: (profile) => profile[CONFIG_ENDPOINT_MODE_NAME], + default: "IPv4" /* IPv4 */ +}; - arr[10] = (v = parseInt(uuid.slice(24, 36), 16)) / 0x10000000000 & 0xff; - arr[11] = v / 0x100000000 & 0xff; - arr[12] = v >>> 24 & 0xff; - arr[13] = v >>> 16 & 0xff; - arr[14] = v >>> 8 & 0xff; - arr[15] = v & 0xff; - return arr; -} +// src/utils/getInstanceMetadataEndpoint.ts +var getInstanceMetadataEndpoint = /* @__PURE__ */ __name(async () => (0, import_url_parser.parseUrl)(await getFromEndpointConfig() || await getFromEndpointModeConfig()), "getInstanceMetadataEndpoint"); +var getFromEndpointConfig = /* @__PURE__ */ __name(async () => (0, import_node_config_provider.loadConfig)(ENDPOINT_CONFIG_OPTIONS)(), "getFromEndpointConfig"); +var getFromEndpointModeConfig = /* @__PURE__ */ __name(async () => { + const endpointMode = await (0, import_node_config_provider.loadConfig)(ENDPOINT_MODE_CONFIG_OPTIONS)(); + switch (endpointMode) { + case "IPv4" /* IPv4 */: + return "http://169.254.169.254" /* IPv4 */; + case "IPv6" /* IPv6 */: + return "http://[fd00:ec2::254]" /* IPv6 */; + default: + throw new Error(`Unsupported endpoint mode: ${endpointMode}. Select from ${Object.values(EndpointMode)}`); + } +}, "getFromEndpointModeConfig"); -var _default = parse; -exports["default"] = _default; +// src/utils/getExtendedInstanceMetadataCredentials.ts +var STATIC_STABILITY_REFRESH_INTERVAL_SECONDS = 5 * 60; +var STATIC_STABILITY_REFRESH_INTERVAL_JITTER_WINDOW_SECONDS = 5 * 60; +var STATIC_STABILITY_DOC_URL = "https://docs.aws.amazon.com/sdkref/latest/guide/feature-static-credentials.html"; +var getExtendedInstanceMetadataCredentials = /* @__PURE__ */ __name((credentials, logger) => { + const refreshInterval = STATIC_STABILITY_REFRESH_INTERVAL_SECONDS + Math.floor(Math.random() * STATIC_STABILITY_REFRESH_INTERVAL_JITTER_WINDOW_SECONDS); + const newExpiration = new Date(Date.now() + refreshInterval * 1e3); + logger.warn( + `Attempting credential expiration extension due to a credential service availability issue. A refresh of these credentials will be attempted after ${new Date(newExpiration)}. +For more information, please visit: ` + STATIC_STABILITY_DOC_URL + ); + const originalExpiration = credentials.originalExpiration ?? credentials.expiration; + return { + ...credentials, + ...originalExpiration ? { originalExpiration } : {}, + expiration: newExpiration + }; +}, "getExtendedInstanceMetadataCredentials"); -/***/ }), +// src/utils/staticStabilityProvider.ts +var staticStabilityProvider = /* @__PURE__ */ __name((provider, options = {}) => { + const logger = (options == null ? void 0 : options.logger) || console; + let pastCredentials; + return async () => { + let credentials; + try { + credentials = await provider(); + if (credentials.expiration && credentials.expiration.getTime() < Date.now()) { + credentials = getExtendedInstanceMetadataCredentials(credentials, logger); + } + } catch (e) { + if (pastCredentials) { + logger.warn("Credential renew failed: ", e); + credentials = getExtendedInstanceMetadataCredentials(pastCredentials, logger); + } else { + throw e; + } + } + pastCredentials = credentials; + return credentials; + }; +}, "staticStabilityProvider"); -/***/ 49555: -/***/ ((__unused_webpack_module, exports) => { +// src/fromInstanceMetadata.ts +var IMDS_PATH = "/latest/meta-data/iam/security-credentials/"; +var IMDS_TOKEN_PATH = "/latest/api/token"; +var AWS_EC2_METADATA_V1_DISABLED = "AWS_EC2_METADATA_V1_DISABLED"; +var PROFILE_AWS_EC2_METADATA_V1_DISABLED = "ec2_metadata_v1_disabled"; +var X_AWS_EC2_METADATA_TOKEN = "x-aws-ec2-metadata-token"; +var fromInstanceMetadata = /* @__PURE__ */ __name((init = {}) => staticStabilityProvider(getInstanceMetadataProvider(init), { logger: init.logger }), "fromInstanceMetadata"); +var getInstanceMetadataProvider = /* @__PURE__ */ __name((init = {}) => { + let disableFetchToken = false; + const { logger, profile } = init; + const { timeout, maxRetries } = providerConfigFromInit(init); + const getCredentials = /* @__PURE__ */ __name(async (maxRetries2, options) => { + var _a; + const isImdsV1Fallback = disableFetchToken || ((_a = options.headers) == null ? void 0 : _a[X_AWS_EC2_METADATA_TOKEN]) == null; + if (isImdsV1Fallback) { + let fallbackBlockedFromProfile = false; + let fallbackBlockedFromProcessEnv = false; + const configValue = await (0, import_node_config_provider.loadConfig)( + { + environmentVariableSelector: (env) => { + const envValue = env[AWS_EC2_METADATA_V1_DISABLED]; + fallbackBlockedFromProcessEnv = !!envValue && envValue !== "false"; + if (envValue === void 0) { + throw new import_property_provider.CredentialsProviderError( + `${AWS_EC2_METADATA_V1_DISABLED} not set in env, checking config file next.`, + { logger: init.logger } + ); + } + return fallbackBlockedFromProcessEnv; + }, + configFileSelector: (profile2) => { + const profileValue = profile2[PROFILE_AWS_EC2_METADATA_V1_DISABLED]; + fallbackBlockedFromProfile = !!profileValue && profileValue !== "false"; + return fallbackBlockedFromProfile; + }, + default: false + }, + { + profile + } + )(); + if (init.ec2MetadataV1Disabled || configValue) { + const causes = []; + if (init.ec2MetadataV1Disabled) + causes.push("credential provider initialization (runtime option ec2MetadataV1Disabled)"); + if (fallbackBlockedFromProfile) + causes.push(`config file profile (${PROFILE_AWS_EC2_METADATA_V1_DISABLED})`); + if (fallbackBlockedFromProcessEnv) + causes.push(`process environment variable (${AWS_EC2_METADATA_V1_DISABLED})`); + throw new InstanceMetadataV1FallbackError( + `AWS EC2 Metadata v1 fallback has been blocked by AWS SDK configuration in the following: [${causes.join( + ", " + )}].` + ); + } + } + const imdsProfile = (await retry(async () => { + let profile2; + try { + profile2 = await getProfile(options); + } catch (err) { + if (err.statusCode === 401) { + disableFetchToken = false; + } + throw err; + } + return profile2; + }, maxRetries2)).trim(); + return retry(async () => { + let creds; + try { + creds = await getCredentialsFromProfile(imdsProfile, options, init); + } catch (err) { + if (err.statusCode === 401) { + disableFetchToken = false; + } + throw err; + } + return creds; + }, maxRetries2); + }, "getCredentials"); + return async () => { + const endpoint = await getInstanceMetadataEndpoint(); + if (disableFetchToken) { + logger == null ? void 0 : logger.debug("AWS SDK Instance Metadata", "using v1 fallback (no token fetch)"); + return getCredentials(maxRetries, { ...endpoint, timeout }); + } else { + let token; + try { + token = (await getMetadataToken({ ...endpoint, timeout })).toString(); + } catch (error) { + if ((error == null ? void 0 : error.statusCode) === 400) { + throw Object.assign(error, { + message: "EC2 Metadata token request returned error" + }); + } else if (error.message === "TimeoutError" || [403, 404, 405].includes(error.statusCode)) { + disableFetchToken = true; + } + logger == null ? void 0 : logger.debug("AWS SDK Instance Metadata", "using v1 fallback (initial)"); + return getCredentials(maxRetries, { ...endpoint, timeout }); + } + return getCredentials(maxRetries, { + ...endpoint, + headers: { + [X_AWS_EC2_METADATA_TOKEN]: token + }, + timeout + }); + } + }; +}, "getInstanceMetadataProvider"); +var getMetadataToken = /* @__PURE__ */ __name(async (options) => httpRequest({ + ...options, + path: IMDS_TOKEN_PATH, + method: "PUT", + headers: { + "x-aws-ec2-metadata-token-ttl-seconds": "21600" + } +}), "getMetadataToken"); +var getProfile = /* @__PURE__ */ __name(async (options) => (await httpRequest({ ...options, path: IMDS_PATH })).toString(), "getProfile"); +var getCredentialsFromProfile = /* @__PURE__ */ __name(async (profile, options, init) => { + const credentialsResponse = JSON.parse( + (await httpRequest({ + ...options, + path: IMDS_PATH + profile + })).toString() + ); + if (!isImdsCredentials(credentialsResponse)) { + throw new import_property_provider.CredentialsProviderError("Invalid response received from instance metadata service.", { + logger: init.logger + }); + } + return fromImdsCredentials(credentialsResponse); +}, "getCredentialsFromProfile"); +// Annotate the CommonJS export names for ESM import in node: -"use strict"; +0 && (0); -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports["default"] = void 0; -var _default = /^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i; -exports["default"] = _default; /***/ }), -/***/ 37281: -/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports["default"] = rng; - -var _crypto = _interopRequireDefault(__nccwpck_require__(76982)); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -const rnds8Pool = new Uint8Array(256); // # of random values to pre-allocate - -let poolPtr = rnds8Pool.length; - -function rng() { - if (poolPtr > rnds8Pool.length - 16) { - _crypto.default.randomFillSync(rnds8Pool); +/***/ 47809: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - poolPtr = 0; +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __name = (target, value) => __defProp(target, "name", { value, configurable: true }); +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); - return rnds8Pool.slice(poolPtr, poolPtr += 16); -} - -/***/ }), - -/***/ 25287: -/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports["default"] = void 0; +// src/index.ts +var src_exports = {}; +__export(src_exports, { + FetchHttpHandler: () => FetchHttpHandler, + keepAliveSupport: () => keepAliveSupport, + streamCollector: () => streamCollector +}); +module.exports = __toCommonJS(src_exports); -var _crypto = _interopRequireDefault(__nccwpck_require__(76982)); +// src/fetch-http-handler.ts +var import_protocol_http = __nccwpck_require__(72356); +var import_querystring_builder = __nccwpck_require__(18256); -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } +// src/request-timeout.ts +function requestTimeout(timeoutInMs = 0) { + return new Promise((resolve, reject) => { + if (timeoutInMs) { + setTimeout(() => { + const timeoutError = new Error(`Request did not complete within ${timeoutInMs} ms`); + timeoutError.name = "TimeoutError"; + reject(timeoutError); + }, timeoutInMs); + } + }); +} +__name(requestTimeout, "requestTimeout"); -function sha1(bytes) { - if (Array.isArray(bytes)) { - bytes = Buffer.from(bytes); - } else if (typeof bytes === 'string') { - bytes = Buffer.from(bytes, 'utf8'); +// src/fetch-http-handler.ts +var keepAliveSupport = { + supported: void 0 +}; +var _FetchHttpHandler = class _FetchHttpHandler { + /** + * @returns the input if it is an HttpHandler of any class, + * or instantiates a new instance of this handler. + */ + static create(instanceOrOptions) { + if (typeof (instanceOrOptions == null ? void 0 : instanceOrOptions.handle) === "function") { + return instanceOrOptions; + } + return new _FetchHttpHandler(instanceOrOptions); + } + constructor(options) { + if (typeof options === "function") { + this.configProvider = options().then((opts) => opts || {}); + } else { + this.config = options ?? {}; + this.configProvider = Promise.resolve(this.config); + } + if (keepAliveSupport.supported === void 0) { + keepAliveSupport.supported = Boolean( + typeof Request !== "undefined" && "keepalive" in new Request("https://[::1]") + ); + } + } + destroy() { + } + async handle(request, { abortSignal } = {}) { + var _a; + if (!this.config) { + this.config = await this.configProvider; + } + const requestTimeoutInMs = this.config.requestTimeout; + const keepAlive = this.config.keepAlive === true; + const credentials = this.config.credentials; + if (abortSignal == null ? void 0 : abortSignal.aborted) { + const abortError = new Error("Request aborted"); + abortError.name = "AbortError"; + return Promise.reject(abortError); + } + let path = request.path; + const queryString = (0, import_querystring_builder.buildQueryString)(request.query || {}); + if (queryString) { + path += `?${queryString}`; + } + if (request.fragment) { + path += `#${request.fragment}`; + } + let auth = ""; + if (request.username != null || request.password != null) { + const username = request.username ?? ""; + const password = request.password ?? ""; + auth = `${username}:${password}@`; + } + const { port, method } = request; + const url = `${request.protocol}//${auth}${request.hostname}${port ? `:${port}` : ""}${path}`; + const body = method === "GET" || method === "HEAD" ? void 0 : request.body; + const requestOptions = { + body, + headers: new Headers(request.headers), + method, + credentials + }; + if ((_a = this.config) == null ? void 0 : _a.cache) { + requestOptions.cache = this.config.cache; + } + if (body) { + requestOptions.duplex = "half"; + } + if (typeof AbortController !== "undefined") { + requestOptions.signal = abortSignal; + } + if (keepAliveSupport.supported) { + requestOptions.keepalive = keepAlive; + } + if (typeof this.config.requestInit === "function") { + Object.assign(requestOptions, this.config.requestInit(request)); + } + let removeSignalEventListener = /* @__PURE__ */ __name(() => { + }, "removeSignalEventListener"); + const fetchRequest = new Request(url, requestOptions); + const raceOfPromises = [ + fetch(fetchRequest).then((response) => { + const fetchHeaders = response.headers; + const transformedHeaders = {}; + for (const pair of fetchHeaders.entries()) { + transformedHeaders[pair[0]] = pair[1]; + } + const hasReadableStream = response.body != void 0; + if (!hasReadableStream) { + return response.blob().then((body2) => ({ + response: new import_protocol_http.HttpResponse({ + headers: transformedHeaders, + reason: response.statusText, + statusCode: response.status, + body: body2 + }) + })); + } + return { + response: new import_protocol_http.HttpResponse({ + headers: transformedHeaders, + reason: response.statusText, + statusCode: response.status, + body: response.body + }) + }; + }), + requestTimeout(requestTimeoutInMs) + ]; + if (abortSignal) { + raceOfPromises.push( + new Promise((resolve, reject) => { + const onAbort = /* @__PURE__ */ __name(() => { + const abortError = new Error("Request aborted"); + abortError.name = "AbortError"; + reject(abortError); + }, "onAbort"); + if (typeof abortSignal.addEventListener === "function") { + const signal = abortSignal; + signal.addEventListener("abort", onAbort, { once: true }); + removeSignalEventListener = /* @__PURE__ */ __name(() => signal.removeEventListener("abort", onAbort), "removeSignalEventListener"); + } else { + abortSignal.onabort = onAbort; + } + }) + ); + } + return Promise.race(raceOfPromises).finally(removeSignalEventListener); } + updateHttpClientConfig(key, value) { + this.config = void 0; + this.configProvider = this.configProvider.then((config) => { + config[key] = value; + return config; + }); + } + httpHandlerConfigs() { + return this.config ?? {}; + } +}; +__name(_FetchHttpHandler, "FetchHttpHandler"); +var FetchHttpHandler = _FetchHttpHandler; - return _crypto.default.createHash('sha1').update(bytes).digest(); +// src/stream-collector.ts +var import_util_base64 = __nccwpck_require__(68385); +var streamCollector = /* @__PURE__ */ __name((stream) => { + if (typeof Blob === "function" && stream instanceof Blob) { + return collectBlob(stream); + } + return collectStream(stream); +}, "streamCollector"); +async function collectBlob(blob) { + const base64 = await readToBase64(blob); + const arrayBuffer = (0, import_util_base64.fromBase64)(base64); + return new Uint8Array(arrayBuffer); } - -var _default = sha1; -exports["default"] = _default; - -/***/ }), - -/***/ 73601: -/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports["default"] = void 0; -exports.unsafeStringify = unsafeStringify; - -var _validate = _interopRequireDefault(__nccwpck_require__(19820)); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -/** - * Convert array of 16 byte values to UUID string format of the form: - * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX - */ -const byteToHex = []; - -for (let i = 0; i < 256; ++i) { - byteToHex.push((i + 0x100).toString(16).slice(1)); +__name(collectBlob, "collectBlob"); +async function collectStream(stream) { + const chunks = []; + const reader = stream.getReader(); + let isDone = false; + let length = 0; + while (!isDone) { + const { done, value } = await reader.read(); + if (value) { + chunks.push(value); + length += value.length; + } + isDone = done; + } + const collected = new Uint8Array(length); + let offset = 0; + for (const chunk of chunks) { + collected.set(chunk, offset); + offset += chunk.length; + } + return collected; } - -function unsafeStringify(arr, offset = 0) { - // Note: Be careful editing this code! It's been tuned for performance - // and works in ways you may not expect. See https://github.com/uuidjs/uuid/pull/434 - return byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + '-' + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + '-' + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + '-' + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + '-' + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]]; +__name(collectStream, "collectStream"); +function readToBase64(blob) { + return new Promise((resolve, reject) => { + const reader = new FileReader(); + reader.onloadend = () => { + if (reader.readyState !== 2) { + return reject(new Error("Reader aborted too early")); + } + const result = reader.result ?? ""; + const commaIndex = result.indexOf(","); + const dataOffset = commaIndex > -1 ? commaIndex + 1 : result.length; + resolve(result.substring(dataOffset)); + }; + reader.onabort = () => reject(new Error("Read aborted")); + reader.onerror = () => reject(reader.error); + reader.readAsDataURL(blob); + }); } +__name(readToBase64, "readToBase64"); +// Annotate the CommonJS export names for ESM import in node: -function stringify(arr, offset = 0) { - const uuid = unsafeStringify(arr, offset); // Consistency check for valid UUID. If this throws, it's likely due to one - // of the following: - // - One or more input array values don't map to a hex octet (leading to - // "undefined" in the uuid) - // - Invalid input values for the RFC `version` or `variant` fields - - if (!(0, _validate.default)(uuid)) { - throw TypeError('Stringified UUID is invalid'); - } +0 && (0); - return uuid; -} -var _default = stringify; -exports["default"] = _default; /***/ }), -/***/ 76323: -/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports["default"] = void 0; - -var _rng = _interopRequireDefault(__nccwpck_require__(37281)); - -var _stringify = __nccwpck_require__(73601); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -// **`v1()` - Generate time-based UUID** -// -// Inspired by https://github.com/LiosK/UUID.js -// and http://docs.python.org/library/uuid.html -let _nodeId; - -let _clockseq; // Previous uuid creation time - - -let _lastMSecs = 0; -let _lastNSecs = 0; // See https://github.com/uuidjs/uuid for API details - -function v1(options, buf, offset) { - let i = buf && offset || 0; - const b = buf || new Array(16); - options = options || {}; - let node = options.node || _nodeId; - let clockseq = options.clockseq !== undefined ? options.clockseq : _clockseq; // node and clockseq need to be initialized to random values if they're not - // specified. We do this lazily to minimize issues related to insufficient - // system entropy. See #189 - - if (node == null || clockseq == null) { - const seedBytes = options.random || (options.rng || _rng.default)(); - - if (node == null) { - // Per 4.5, create and 48-bit node id, (47 random bits + multicast bit = 1) - node = _nodeId = [seedBytes[0] | 0x01, seedBytes[1], seedBytes[2], seedBytes[3], seedBytes[4], seedBytes[5]]; - } - - if (clockseq == null) { - // Per 4.2.2, randomize (14 bit) clockseq - clockseq = _clockseq = (seedBytes[6] << 8 | seedBytes[7]) & 0x3fff; - } - } // UUID timestamps are 100 nano-second units since the Gregorian epoch, - // (1582-10-15 00:00). JSNumbers aren't precise enough for this, so - // time is handled internally as 'msecs' (integer milliseconds) and 'nsecs' - // (100-nanoseconds offset from msecs) since unix epoch, 1970-01-01 00:00. - +/***/ 5092: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - let msecs = options.msecs !== undefined ? options.msecs : Date.now(); // Per 4.2.1.2, use count of uuid's generated during the current clock - // cycle to simulate higher resolution clock +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __name = (target, value) => __defProp(target, "name", { value, configurable: true }); +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); - let nsecs = options.nsecs !== undefined ? options.nsecs : _lastNSecs + 1; // Time since last uuid creation (in msecs) +// src/index.ts +var src_exports = {}; +__export(src_exports, { + Hash: () => Hash +}); +module.exports = __toCommonJS(src_exports); +var import_util_buffer_from = __nccwpck_require__(44151); +var import_util_utf8 = __nccwpck_require__(71577); +var import_buffer = __nccwpck_require__(20181); +var import_crypto = __nccwpck_require__(76982); +var _Hash = class _Hash { + constructor(algorithmIdentifier, secret) { + this.algorithmIdentifier = algorithmIdentifier; + this.secret = secret; + this.reset(); + } + update(toHash, encoding) { + this.hash.update((0, import_util_utf8.toUint8Array)(castSourceData(toHash, encoding))); + } + digest() { + return Promise.resolve(this.hash.digest()); + } + reset() { + this.hash = this.secret ? (0, import_crypto.createHmac)(this.algorithmIdentifier, castSourceData(this.secret)) : (0, import_crypto.createHash)(this.algorithmIdentifier); + } +}; +__name(_Hash, "Hash"); +var Hash = _Hash; +function castSourceData(toCast, encoding) { + if (import_buffer.Buffer.isBuffer(toCast)) { + return toCast; + } + if (typeof toCast === "string") { + return (0, import_util_buffer_from.fromString)(toCast, encoding); + } + if (ArrayBuffer.isView(toCast)) { + return (0, import_util_buffer_from.fromArrayBuffer)(toCast.buffer, toCast.byteOffset, toCast.byteLength); + } + return (0, import_util_buffer_from.fromArrayBuffer)(toCast); +} +__name(castSourceData, "castSourceData"); +// Annotate the CommonJS export names for ESM import in node: - const dt = msecs - _lastMSecs + (nsecs - _lastNSecs) / 10000; // Per 4.2.1.2, Bump clockseq on clock regression +0 && (0); - if (dt < 0 && options.clockseq === undefined) { - clockseq = clockseq + 1 & 0x3fff; - } // Reset nsecs if clock regresses (new clockseq) or we've moved onto a new - // time interval - if ((dt < 0 || msecs > _lastMSecs) && options.nsecs === undefined) { - nsecs = 0; - } // Per 4.2.1.2 Throw error if too many uuids are requested +/***/ }), +/***/ 86130: +/***/ ((module) => { - if (nsecs >= 10000) { - throw new Error("uuid.v1(): Can't create more than 10M uuids/sec"); +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __name = (target, value) => __defProp(target, "name", { value, configurable: true }); +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); - _lastMSecs = msecs; - _lastNSecs = nsecs; - _clockseq = clockseq; // Per 4.1.4 - Convert from unix epoch to Gregorian epoch - - msecs += 12219292800000; // `time_low` - - const tl = ((msecs & 0xfffffff) * 10000 + nsecs) % 0x100000000; - b[i++] = tl >>> 24 & 0xff; - b[i++] = tl >>> 16 & 0xff; - b[i++] = tl >>> 8 & 0xff; - b[i++] = tl & 0xff; // `time_mid` - - const tmh = msecs / 0x100000000 * 10000 & 0xfffffff; - b[i++] = tmh >>> 8 & 0xff; - b[i++] = tmh & 0xff; // `time_high_and_version` +// src/index.ts +var src_exports = {}; +__export(src_exports, { + isArrayBuffer: () => isArrayBuffer +}); +module.exports = __toCommonJS(src_exports); +var isArrayBuffer = /* @__PURE__ */ __name((arg) => typeof ArrayBuffer === "function" && arg instanceof ArrayBuffer || Object.prototype.toString.call(arg) === "[object ArrayBuffer]", "isArrayBuffer"); +// Annotate the CommonJS export names for ESM import in node: - b[i++] = tmh >>> 24 & 0xf | 0x10; // include version +0 && (0); - b[i++] = tmh >>> 16 & 0xff; // `clock_seq_hi_and_reserved` (Per 4.2.2 - include variant) - b[i++] = clockseq >>> 8 | 0x80; // `clock_seq_low` - b[i++] = clockseq & 0xff; // `node` +/***/ }), - for (let n = 0; n < 6; ++n) { - b[i + n] = node[n]; +/***/ 47212: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __name = (target, value) => __defProp(target, "name", { value, configurable: true }); +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); - return buf || (0, _stringify.unsafeStringify)(b); +// src/index.ts +var src_exports = {}; +__export(src_exports, { + contentLengthMiddleware: () => contentLengthMiddleware, + contentLengthMiddlewareOptions: () => contentLengthMiddlewareOptions, + getContentLengthPlugin: () => getContentLengthPlugin +}); +module.exports = __toCommonJS(src_exports); +var import_protocol_http = __nccwpck_require__(72356); +var CONTENT_LENGTH_HEADER = "content-length"; +function contentLengthMiddleware(bodyLengthChecker) { + return (next) => async (args) => { + const request = args.request; + if (import_protocol_http.HttpRequest.isInstance(request)) { + const { body, headers } = request; + if (body && Object.keys(headers).map((str) => str.toLowerCase()).indexOf(CONTENT_LENGTH_HEADER) === -1) { + try { + const length = bodyLengthChecker(body); + request.headers = { + ...request.headers, + [CONTENT_LENGTH_HEADER]: String(length) + }; + } catch (error) { + } + } + } + return next({ + ...args, + request + }); + }; } +__name(contentLengthMiddleware, "contentLengthMiddleware"); +var contentLengthMiddlewareOptions = { + step: "build", + tags: ["SET_CONTENT_LENGTH", "CONTENT_LENGTH"], + name: "contentLengthMiddleware", + override: true +}; +var getContentLengthPlugin = /* @__PURE__ */ __name((options) => ({ + applyToStack: (clientStack) => { + clientStack.add(contentLengthMiddleware(options.bodyLengthChecker), contentLengthMiddlewareOptions); + } +}), "getContentLengthPlugin"); +// Annotate the CommonJS export names for ESM import in node: + +0 && (0); + -var _default = v1; -exports["default"] = _default; /***/ }), -/***/ 85285: +/***/ 76041: /***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { "use strict"; +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.getEndpointFromConfig = void 0; +const node_config_provider_1 = __nccwpck_require__(55704); +const getEndpointUrlConfig_1 = __nccwpck_require__(18008); +const getEndpointFromConfig = async (serviceId) => (0, node_config_provider_1.loadConfig)((0, getEndpointUrlConfig_1.getEndpointUrlConfig)(serviceId !== null && serviceId !== void 0 ? serviceId : ""))(); +exports.getEndpointFromConfig = getEndpointFromConfig; -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports["default"] = void 0; - -var _v = _interopRequireDefault(__nccwpck_require__(21606)); - -var _md = _interopRequireDefault(__nccwpck_require__(20276)); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -const v3 = (0, _v.default)('v3', 0x30, _md.default); -var _default = v3; -exports["default"] = _default; /***/ }), -/***/ 21606: +/***/ 18008: /***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { "use strict"; +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.getEndpointUrlConfig = void 0; +const shared_ini_file_loader_1 = __nccwpck_require__(94964); +const ENV_ENDPOINT_URL = "AWS_ENDPOINT_URL"; +const CONFIG_ENDPOINT_URL = "endpoint_url"; +const getEndpointUrlConfig = (serviceId) => ({ + environmentVariableSelector: (env) => { + const serviceSuffixParts = serviceId.split(" ").map((w) => w.toUpperCase()); + const serviceEndpointUrl = env[[ENV_ENDPOINT_URL, ...serviceSuffixParts].join("_")]; + if (serviceEndpointUrl) + return serviceEndpointUrl; + const endpointUrl = env[ENV_ENDPOINT_URL]; + if (endpointUrl) + return endpointUrl; + return undefined; + }, + configFileSelector: (profile, config) => { + if (config && profile.services) { + const servicesSection = config[["services", profile.services].join(shared_ini_file_loader_1.CONFIG_PREFIX_SEPARATOR)]; + if (servicesSection) { + const servicePrefixParts = serviceId.split(" ").map((w) => w.toLowerCase()); + const endpointUrl = servicesSection[[servicePrefixParts.join("_"), CONFIG_ENDPOINT_URL].join(shared_ini_file_loader_1.CONFIG_PREFIX_SEPARATOR)]; + if (endpointUrl) + return endpointUrl; + } + } + const endpointUrl = profile[CONFIG_ENDPOINT_URL]; + if (endpointUrl) + return endpointUrl; + return undefined; + }, + default: undefined, +}); +exports.getEndpointUrlConfig = getEndpointUrlConfig; -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.URL = exports.DNS = void 0; -exports["default"] = v35; - -var _stringify = __nccwpck_require__(73601); - -var _parse = _interopRequireDefault(__nccwpck_require__(88351)); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } -function stringToBytes(str) { - str = unescape(encodeURIComponent(str)); // UTF8 escape +/***/ }), - const bytes = []; +/***/ 40099: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - for (let i = 0; i < str.length; ++i) { - bytes.push(str.charCodeAt(i)); +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __name = (target, value) => __defProp(target, "name", { value, configurable: true }); +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); - return bytes; -} - -const DNS = '6ba7b810-9dad-11d1-80b4-00c04fd430c8'; -exports.DNS = DNS; -const URL = '6ba7b811-9dad-11d1-80b4-00c04fd430c8'; -exports.URL = URL; - -function v35(name, version, hashfunc) { - function generateUUID(value, namespace, buf, offset) { - var _namespace; +// src/index.ts +var src_exports = {}; +__export(src_exports, { + endpointMiddleware: () => endpointMiddleware, + endpointMiddlewareOptions: () => endpointMiddlewareOptions, + getEndpointFromInstructions: () => getEndpointFromInstructions, + getEndpointPlugin: () => getEndpointPlugin, + resolveEndpointConfig: () => resolveEndpointConfig, + resolveParams: () => resolveParams, + toEndpointV1: () => toEndpointV1 +}); +module.exports = __toCommonJS(src_exports); - if (typeof value === 'string') { - value = stringToBytes(value); +// src/service-customizations/s3.ts +var resolveParamsForS3 = /* @__PURE__ */ __name(async (endpointParams) => { + const bucket = (endpointParams == null ? void 0 : endpointParams.Bucket) || ""; + if (typeof endpointParams.Bucket === "string") { + endpointParams.Bucket = bucket.replace(/#/g, encodeURIComponent("#")).replace(/\?/g, encodeURIComponent("?")); + } + if (isArnBucketName(bucket)) { + if (endpointParams.ForcePathStyle === true) { + throw new Error("Path-style addressing cannot be used with ARN buckets"); } + } else if (!isDnsCompatibleBucketName(bucket) || bucket.indexOf(".") !== -1 && !String(endpointParams.Endpoint).startsWith("http:") || bucket.toLowerCase() !== bucket || bucket.length < 3) { + endpointParams.ForcePathStyle = true; + } + if (endpointParams.DisableMultiRegionAccessPoints) { + endpointParams.disableMultiRegionAccessPoints = true; + endpointParams.DisableMRAP = true; + } + return endpointParams; +}, "resolveParamsForS3"); +var DOMAIN_PATTERN = /^[a-z0-9][a-z0-9\.\-]{1,61}[a-z0-9]$/; +var IP_ADDRESS_PATTERN = /(\d+\.){3}\d+/; +var DOTS_PATTERN = /\.\./; +var isDnsCompatibleBucketName = /* @__PURE__ */ __name((bucketName) => DOMAIN_PATTERN.test(bucketName) && !IP_ADDRESS_PATTERN.test(bucketName) && !DOTS_PATTERN.test(bucketName), "isDnsCompatibleBucketName"); +var isArnBucketName = /* @__PURE__ */ __name((bucketName) => { + const [arn, partition, service, , , bucket] = bucketName.split(":"); + const isArn = arn === "arn" && bucketName.split(":").length >= 6; + const isValidArn = Boolean(isArn && partition && service && bucket); + if (isArn && !isValidArn) { + throw new Error(`Invalid ARN: ${bucketName} was an invalid ARN.`); + } + return isValidArn; +}, "isArnBucketName"); - if (typeof namespace === 'string') { - namespace = (0, _parse.default)(namespace); +// src/adaptors/createConfigValueProvider.ts +var createConfigValueProvider = /* @__PURE__ */ __name((configKey, canonicalEndpointParamKey, config) => { + const configProvider = /* @__PURE__ */ __name(async () => { + const configValue = config[configKey] ?? config[canonicalEndpointParamKey]; + if (typeof configValue === "function") { + return configValue(); } + return configValue; + }, "configProvider"); + if (configKey === "credentialScope" || canonicalEndpointParamKey === "CredentialScope") { + return async () => { + const credentials = typeof config.credentials === "function" ? await config.credentials() : config.credentials; + const configValue = (credentials == null ? void 0 : credentials.credentialScope) ?? (credentials == null ? void 0 : credentials.CredentialScope); + return configValue; + }; + } + if (configKey === "accountId" || canonicalEndpointParamKey === "AccountId") { + return async () => { + const credentials = typeof config.credentials === "function" ? await config.credentials() : config.credentials; + const configValue = (credentials == null ? void 0 : credentials.accountId) ?? (credentials == null ? void 0 : credentials.AccountId); + return configValue; + }; + } + if (configKey === "endpoint" || canonicalEndpointParamKey === "endpoint") { + return async () => { + const endpoint = await configProvider(); + if (endpoint && typeof endpoint === "object") { + if ("url" in endpoint) { + return endpoint.url.href; + } + if ("hostname" in endpoint) { + const { protocol, hostname, port, path } = endpoint; + return `${protocol}//${hostname}${port ? ":" + port : ""}${path}`; + } + } + return endpoint; + }; + } + return configProvider; +}, "createConfigValueProvider"); - if (((_namespace = namespace) === null || _namespace === void 0 ? void 0 : _namespace.length) !== 16) { - throw TypeError('Namespace must be array-like (16 iterable integer values, 0-255)'); - } // Compute hash of namespace and value, Per 4.3 - // Future: Use spread syntax when supported on all platforms, e.g. `bytes = - // hashfunc([...namespace, ... value])` - +// src/adaptors/getEndpointFromInstructions.ts +var import_getEndpointFromConfig = __nccwpck_require__(76041); - let bytes = new Uint8Array(16 + value.length); - bytes.set(namespace); - bytes.set(value, namespace.length); - bytes = hashfunc(bytes); - bytes[6] = bytes[6] & 0x0f | version; - bytes[8] = bytes[8] & 0x3f | 0x80; +// src/adaptors/toEndpointV1.ts +var import_url_parser = __nccwpck_require__(14494); +var toEndpointV1 = /* @__PURE__ */ __name((endpoint) => { + if (typeof endpoint === "object") { + if ("url" in endpoint) { + return (0, import_url_parser.parseUrl)(endpoint.url); + } + return endpoint; + } + return (0, import_url_parser.parseUrl)(endpoint); +}, "toEndpointV1"); - if (buf) { - offset = offset || 0; +// src/adaptors/getEndpointFromInstructions.ts +var getEndpointFromInstructions = /* @__PURE__ */ __name(async (commandInput, instructionsSupplier, clientConfig, context) => { + if (!clientConfig.endpoint) { + let endpointFromConfig; + if (clientConfig.serviceConfiguredEndpoint) { + endpointFromConfig = await clientConfig.serviceConfiguredEndpoint(); + } else { + endpointFromConfig = await (0, import_getEndpointFromConfig.getEndpointFromConfig)(clientConfig.serviceId); + } + if (endpointFromConfig) { + clientConfig.endpoint = () => Promise.resolve(toEndpointV1(endpointFromConfig)); + } + } + const endpointParams = await resolveParams(commandInput, instructionsSupplier, clientConfig); + if (typeof clientConfig.endpointProvider !== "function") { + throw new Error("config.endpointProvider is not set."); + } + const endpoint = clientConfig.endpointProvider(endpointParams, context); + return endpoint; +}, "getEndpointFromInstructions"); +var resolveParams = /* @__PURE__ */ __name(async (commandInput, instructionsSupplier, clientConfig) => { + var _a; + const endpointParams = {}; + const instructions = ((_a = instructionsSupplier == null ? void 0 : instructionsSupplier.getEndpointParameterInstructions) == null ? void 0 : _a.call(instructionsSupplier)) || {}; + for (const [name, instruction] of Object.entries(instructions)) { + switch (instruction.type) { + case "staticContextParams": + endpointParams[name] = instruction.value; + break; + case "contextParams": + endpointParams[name] = commandInput[instruction.name]; + break; + case "clientContextParams": + case "builtInParams": + endpointParams[name] = await createConfigValueProvider(instruction.name, name, clientConfig)(); + break; + default: + throw new Error("Unrecognized endpoint parameter instruction: " + JSON.stringify(instruction)); + } + } + if (Object.keys(instructions).length === 0) { + Object.assign(endpointParams, clientConfig); + } + if (String(clientConfig.serviceId).toLowerCase() === "s3") { + await resolveParamsForS3(endpointParams); + } + return endpointParams; +}, "resolveParams"); - for (let i = 0; i < 16; ++i) { - buf[offset + i] = bytes[i]; +// src/endpointMiddleware.ts +var import_util_middleware = __nccwpck_require__(76324); +var endpointMiddleware = /* @__PURE__ */ __name(({ + config, + instructions +}) => { + return (next, context) => async (args) => { + var _a, _b, _c; + const endpoint = await getEndpointFromInstructions( + args.input, + { + getEndpointParameterInstructions() { + return instructions; + } + }, + { ...config }, + context + ); + context.endpointV2 = endpoint; + context.authSchemes = (_a = endpoint.properties) == null ? void 0 : _a.authSchemes; + const authScheme = (_b = context.authSchemes) == null ? void 0 : _b[0]; + if (authScheme) { + context["signing_region"] = authScheme.signingRegion; + context["signing_service"] = authScheme.signingName; + const smithyContext = (0, import_util_middleware.getSmithyContext)(context); + const httpAuthOption = (_c = smithyContext == null ? void 0 : smithyContext.selectedHttpAuthScheme) == null ? void 0 : _c.httpAuthOption; + if (httpAuthOption) { + httpAuthOption.signingProperties = Object.assign( + httpAuthOption.signingProperties || {}, + { + signing_region: authScheme.signingRegion, + signingRegion: authScheme.signingRegion, + signing_service: authScheme.signingName, + signingName: authScheme.signingName, + signingRegionSet: authScheme.signingRegionSet + }, + authScheme.properties + ); } - - return buf; } + return next({ + ...args + }); + }; +}, "endpointMiddleware"); - return (0, _stringify.unsafeStringify)(bytes); - } // Function#name is not settable on some platforms (#270) - - - try { - generateUUID.name = name; // eslint-disable-next-line no-empty - } catch (err) {} // For CommonJS default export support - - - generateUUID.DNS = DNS; - generateUUID.URL = URL; - return generateUUID; -} - -/***/ }), - -/***/ 18960: -/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { +// src/getEndpointPlugin.ts +var import_middleware_serde = __nccwpck_require__(83255); +var endpointMiddlewareOptions = { + step: "serialize", + tags: ["ENDPOINT_PARAMETERS", "ENDPOINT_V2", "ENDPOINT"], + name: "endpointV2Middleware", + override: true, + relation: "before", + toMiddleware: import_middleware_serde.serializerMiddlewareOption.name +}; +var getEndpointPlugin = /* @__PURE__ */ __name((config, instructions) => ({ + applyToStack: (clientStack) => { + clientStack.addRelativeTo( + endpointMiddleware({ + config, + instructions + }), + endpointMiddlewareOptions + ); + } +}), "getEndpointPlugin"); -"use strict"; +// src/resolveEndpointConfig.ts +var import_getEndpointFromConfig2 = __nccwpck_require__(76041); +var resolveEndpointConfig = /* @__PURE__ */ __name((input) => { + const tls = input.tls ?? true; + const { endpoint } = input; + const customEndpointProvider = endpoint != null ? async () => toEndpointV1(await (0, import_util_middleware.normalizeProvider)(endpoint)()) : void 0; + const isCustomEndpoint = !!endpoint; + const resolvedConfig = { + ...input, + endpoint: customEndpointProvider, + tls, + isCustomEndpoint, + useDualstackEndpoint: (0, import_util_middleware.normalizeProvider)(input.useDualstackEndpoint ?? false), + useFipsEndpoint: (0, import_util_middleware.normalizeProvider)(input.useFipsEndpoint ?? false) + }; + let configuredEndpointPromise = void 0; + resolvedConfig.serviceConfiguredEndpoint = async () => { + if (input.serviceId && !configuredEndpointPromise) { + configuredEndpointPromise = (0, import_getEndpointFromConfig2.getEndpointFromConfig)(input.serviceId); + } + return configuredEndpointPromise; + }; + return resolvedConfig; +}, "resolveEndpointConfig"); +// Annotate the CommonJS export names for ESM import in node: -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports["default"] = void 0; +0 && (0); -var _native = _interopRequireDefault(__nccwpck_require__(52921)); -var _rng = _interopRequireDefault(__nccwpck_require__(37281)); -var _stringify = __nccwpck_require__(73601); +/***/ }), -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } +/***/ 19618: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { -function v4(options, buf, offset) { - if (_native.default.randomUUID && !buf && !options) { - return _native.default.randomUUID(); +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __name = (target, value) => __defProp(target, "name", { value, configurable: true }); +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// src/index.ts +var src_exports = {}; +__export(src_exports, { + AdaptiveRetryStrategy: () => AdaptiveRetryStrategy, + CONFIG_MAX_ATTEMPTS: () => CONFIG_MAX_ATTEMPTS, + CONFIG_RETRY_MODE: () => CONFIG_RETRY_MODE, + ENV_MAX_ATTEMPTS: () => ENV_MAX_ATTEMPTS, + ENV_RETRY_MODE: () => ENV_RETRY_MODE, + NODE_MAX_ATTEMPT_CONFIG_OPTIONS: () => NODE_MAX_ATTEMPT_CONFIG_OPTIONS, + NODE_RETRY_MODE_CONFIG_OPTIONS: () => NODE_RETRY_MODE_CONFIG_OPTIONS, + StandardRetryStrategy: () => StandardRetryStrategy, + defaultDelayDecider: () => defaultDelayDecider, + defaultRetryDecider: () => defaultRetryDecider, + getOmitRetryHeadersPlugin: () => getOmitRetryHeadersPlugin, + getRetryAfterHint: () => getRetryAfterHint, + getRetryPlugin: () => getRetryPlugin, + omitRetryHeadersMiddleware: () => omitRetryHeadersMiddleware, + omitRetryHeadersMiddlewareOptions: () => omitRetryHeadersMiddlewareOptions, + resolveRetryConfig: () => resolveRetryConfig, + retryMiddleware: () => retryMiddleware, + retryMiddlewareOptions: () => retryMiddlewareOptions +}); +module.exports = __toCommonJS(src_exports); - options = options || {}; +// src/AdaptiveRetryStrategy.ts - const rnds = options.random || (options.rng || _rng.default)(); // Per 4.4, set bits for version and `clock_seq_hi_and_reserved` +// src/StandardRetryStrategy.ts +var import_protocol_http = __nccwpck_require__(72356); - rnds[6] = rnds[6] & 0x0f | 0x40; - rnds[8] = rnds[8] & 0x3f | 0x80; // Copy bytes to buffer, if provided - if (buf) { - offset = offset || 0; +var import_uuid = __nccwpck_require__(12048); - for (let i = 0; i < 16; ++i) { - buf[offset + i] = rnds[i]; +// src/defaultRetryQuota.ts +var import_util_retry = __nccwpck_require__(15518); +var getDefaultRetryQuota = /* @__PURE__ */ __name((initialRetryTokens, options) => { + const MAX_CAPACITY = initialRetryTokens; + const noRetryIncrement = (options == null ? void 0 : options.noRetryIncrement) ?? import_util_retry.NO_RETRY_INCREMENT; + const retryCost = (options == null ? void 0 : options.retryCost) ?? import_util_retry.RETRY_COST; + const timeoutRetryCost = (options == null ? void 0 : options.timeoutRetryCost) ?? import_util_retry.TIMEOUT_RETRY_COST; + let availableCapacity = initialRetryTokens; + const getCapacityAmount = /* @__PURE__ */ __name((error) => error.name === "TimeoutError" ? timeoutRetryCost : retryCost, "getCapacityAmount"); + const hasRetryTokens = /* @__PURE__ */ __name((error) => getCapacityAmount(error) <= availableCapacity, "hasRetryTokens"); + const retrieveRetryTokens = /* @__PURE__ */ __name((error) => { + if (!hasRetryTokens(error)) { + throw new Error("No retry token available"); } + const capacityAmount = getCapacityAmount(error); + availableCapacity -= capacityAmount; + return capacityAmount; + }, "retrieveRetryTokens"); + const releaseRetryTokens = /* @__PURE__ */ __name((capacityReleaseAmount) => { + availableCapacity += capacityReleaseAmount ?? noRetryIncrement; + availableCapacity = Math.min(availableCapacity, MAX_CAPACITY); + }, "releaseRetryTokens"); + return Object.freeze({ + hasRetryTokens, + retrieveRetryTokens, + releaseRetryTokens + }); +}, "getDefaultRetryQuota"); - return buf; - } - - return (0, _stringify.unsafeStringify)(rnds); -} - -var _default = v4; -exports["default"] = _default; +// src/delayDecider.ts -/***/ }), +var defaultDelayDecider = /* @__PURE__ */ __name((delayBase, attempts) => Math.floor(Math.min(import_util_retry.MAXIMUM_RETRY_DELAY, Math.random() * 2 ** attempts * delayBase)), "defaultDelayDecider"); -/***/ 25831: -/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { +// src/retryDecider.ts +var import_service_error_classification = __nccwpck_require__(42058); +var defaultRetryDecider = /* @__PURE__ */ __name((error) => { + if (!error) { + return false; + } + return (0, import_service_error_classification.isRetryableByTrait)(error) || (0, import_service_error_classification.isClockSkewError)(error) || (0, import_service_error_classification.isThrottlingError)(error) || (0, import_service_error_classification.isTransientError)(error); +}, "defaultRetryDecider"); -"use strict"; +// src/util.ts +var asSdkError = /* @__PURE__ */ __name((error) => { + if (error instanceof Error) + return error; + if (error instanceof Object) + return Object.assign(new Error(), error); + if (typeof error === "string") + return new Error(error); + return new Error(`AWS SDK error wrapper for ${error}`); +}, "asSdkError"); +// src/StandardRetryStrategy.ts +var _StandardRetryStrategy = class _StandardRetryStrategy { + constructor(maxAttemptsProvider, options) { + this.maxAttemptsProvider = maxAttemptsProvider; + this.mode = import_util_retry.RETRY_MODES.STANDARD; + this.retryDecider = (options == null ? void 0 : options.retryDecider) ?? defaultRetryDecider; + this.delayDecider = (options == null ? void 0 : options.delayDecider) ?? defaultDelayDecider; + this.retryQuota = (options == null ? void 0 : options.retryQuota) ?? getDefaultRetryQuota(import_util_retry.INITIAL_RETRY_TOKENS); + } + shouldRetry(error, attempts, maxAttempts) { + return attempts < maxAttempts && this.retryDecider(error) && this.retryQuota.hasRetryTokens(error); + } + async getMaxAttempts() { + let maxAttempts; + try { + maxAttempts = await this.maxAttemptsProvider(); + } catch (error) { + maxAttempts = import_util_retry.DEFAULT_MAX_ATTEMPTS; + } + return maxAttempts; + } + async retry(next, args, options) { + let retryTokenAmount; + let attempts = 0; + let totalDelay = 0; + const maxAttempts = await this.getMaxAttempts(); + const { request } = args; + if (import_protocol_http.HttpRequest.isInstance(request)) { + request.headers[import_util_retry.INVOCATION_ID_HEADER] = (0, import_uuid.v4)(); + } + while (true) { + try { + if (import_protocol_http.HttpRequest.isInstance(request)) { + request.headers[import_util_retry.REQUEST_HEADER] = `attempt=${attempts + 1}; max=${maxAttempts}`; + } + if (options == null ? void 0 : options.beforeRequest) { + await options.beforeRequest(); + } + const { response, output } = await next(args); + if (options == null ? void 0 : options.afterRequest) { + options.afterRequest(response); + } + this.retryQuota.releaseRetryTokens(retryTokenAmount); + output.$metadata.attempts = attempts + 1; + output.$metadata.totalRetryDelay = totalDelay; + return { response, output }; + } catch (e) { + const err = asSdkError(e); + attempts++; + if (this.shouldRetry(err, attempts, maxAttempts)) { + retryTokenAmount = this.retryQuota.retrieveRetryTokens(err); + const delayFromDecider = this.delayDecider( + (0, import_service_error_classification.isThrottlingError)(err) ? import_util_retry.THROTTLING_RETRY_DELAY_BASE : import_util_retry.DEFAULT_RETRY_DELAY_BASE, + attempts + ); + const delayFromResponse = getDelayFromRetryAfterHeader(err.$response); + const delay = Math.max(delayFromResponse || 0, delayFromDecider); + totalDelay += delay; + await new Promise((resolve) => setTimeout(resolve, delay)); + continue; + } + if (!err.$metadata) { + err.$metadata = {}; + } + err.$metadata.attempts = attempts; + err.$metadata.totalRetryDelay = totalDelay; + throw err; + } + } + } +}; +__name(_StandardRetryStrategy, "StandardRetryStrategy"); +var StandardRetryStrategy = _StandardRetryStrategy; +var getDelayFromRetryAfterHeader = /* @__PURE__ */ __name((response) => { + if (!import_protocol_http.HttpResponse.isInstance(response)) + return; + const retryAfterHeaderName = Object.keys(response.headers).find((key) => key.toLowerCase() === "retry-after"); + if (!retryAfterHeaderName) + return; + const retryAfter = response.headers[retryAfterHeaderName]; + const retryAfterSeconds = Number(retryAfter); + if (!Number.isNaN(retryAfterSeconds)) + return retryAfterSeconds * 1e3; + const retryAfterDate = new Date(retryAfter); + return retryAfterDate.getTime() - Date.now(); +}, "getDelayFromRetryAfterHeader"); -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports["default"] = void 0; +// src/AdaptiveRetryStrategy.ts +var _AdaptiveRetryStrategy = class _AdaptiveRetryStrategy extends StandardRetryStrategy { + constructor(maxAttemptsProvider, options) { + const { rateLimiter, ...superOptions } = options ?? {}; + super(maxAttemptsProvider, superOptions); + this.rateLimiter = rateLimiter ?? new import_util_retry.DefaultRateLimiter(); + this.mode = import_util_retry.RETRY_MODES.ADAPTIVE; + } + async retry(next, args) { + return super.retry(next, args, { + beforeRequest: async () => { + return this.rateLimiter.getSendToken(); + }, + afterRequest: (response) => { + this.rateLimiter.updateClientSendingRate(response); + } + }); + } +}; +__name(_AdaptiveRetryStrategy, "AdaptiveRetryStrategy"); +var AdaptiveRetryStrategy = _AdaptiveRetryStrategy; -var _v = _interopRequireDefault(__nccwpck_require__(21606)); +// src/configurations.ts +var import_util_middleware = __nccwpck_require__(76324); -var _sha = _interopRequireDefault(__nccwpck_require__(25287)); +var ENV_MAX_ATTEMPTS = "AWS_MAX_ATTEMPTS"; +var CONFIG_MAX_ATTEMPTS = "max_attempts"; +var NODE_MAX_ATTEMPT_CONFIG_OPTIONS = { + environmentVariableSelector: (env) => { + const value = env[ENV_MAX_ATTEMPTS]; + if (!value) + return void 0; + const maxAttempt = parseInt(value); + if (Number.isNaN(maxAttempt)) { + throw new Error(`Environment variable ${ENV_MAX_ATTEMPTS} mast be a number, got "${value}"`); + } + return maxAttempt; + }, + configFileSelector: (profile) => { + const value = profile[CONFIG_MAX_ATTEMPTS]; + if (!value) + return void 0; + const maxAttempt = parseInt(value); + if (Number.isNaN(maxAttempt)) { + throw new Error(`Shared config file entry ${CONFIG_MAX_ATTEMPTS} mast be a number, got "${value}"`); + } + return maxAttempt; + }, + default: import_util_retry.DEFAULT_MAX_ATTEMPTS +}; +var resolveRetryConfig = /* @__PURE__ */ __name((input) => { + const { retryStrategy } = input; + const maxAttempts = (0, import_util_middleware.normalizeProvider)(input.maxAttempts ?? import_util_retry.DEFAULT_MAX_ATTEMPTS); + return { + ...input, + maxAttempts, + retryStrategy: async () => { + if (retryStrategy) { + return retryStrategy; + } + const retryMode = await (0, import_util_middleware.normalizeProvider)(input.retryMode)(); + if (retryMode === import_util_retry.RETRY_MODES.ADAPTIVE) { + return new import_util_retry.AdaptiveRetryStrategy(maxAttempts); + } + return new import_util_retry.StandardRetryStrategy(maxAttempts); + } + }; +}, "resolveRetryConfig"); +var ENV_RETRY_MODE = "AWS_RETRY_MODE"; +var CONFIG_RETRY_MODE = "retry_mode"; +var NODE_RETRY_MODE_CONFIG_OPTIONS = { + environmentVariableSelector: (env) => env[ENV_RETRY_MODE], + configFileSelector: (profile) => profile[CONFIG_RETRY_MODE], + default: import_util_retry.DEFAULT_RETRY_MODE +}; -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } +// src/omitRetryHeadersMiddleware.ts -const v5 = (0, _v.default)('v5', 0x50, _sha.default); -var _default = v5; -exports["default"] = _default; -/***/ }), +var omitRetryHeadersMiddleware = /* @__PURE__ */ __name(() => (next) => async (args) => { + const { request } = args; + if (import_protocol_http.HttpRequest.isInstance(request)) { + delete request.headers[import_util_retry.INVOCATION_ID_HEADER]; + delete request.headers[import_util_retry.REQUEST_HEADER]; + } + return next(args); +}, "omitRetryHeadersMiddleware"); +var omitRetryHeadersMiddlewareOptions = { + name: "omitRetryHeadersMiddleware", + tags: ["RETRY", "HEADERS", "OMIT_RETRY_HEADERS"], + relation: "before", + toMiddleware: "awsAuthMiddleware", + override: true +}; +var getOmitRetryHeadersPlugin = /* @__PURE__ */ __name((options) => ({ + applyToStack: (clientStack) => { + clientStack.addRelativeTo(omitRetryHeadersMiddleware(), omitRetryHeadersMiddlewareOptions); + } +}), "getOmitRetryHeadersPlugin"); -/***/ 19820: -/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { +// src/retryMiddleware.ts -"use strict"; +var import_smithy_client = __nccwpck_require__(61411); -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports["default"] = void 0; -var _regex = _interopRequireDefault(__nccwpck_require__(49555)); +var import_isStreamingPayload = __nccwpck_require__(49831); +var retryMiddleware = /* @__PURE__ */ __name((options) => (next, context) => async (args) => { + var _a; + let retryStrategy = await options.retryStrategy(); + const maxAttempts = await options.maxAttempts(); + if (isRetryStrategyV2(retryStrategy)) { + retryStrategy = retryStrategy; + let retryToken = await retryStrategy.acquireInitialRetryToken(context["partition_id"]); + let lastError = new Error(); + let attempts = 0; + let totalRetryDelay = 0; + const { request } = args; + const isRequest = import_protocol_http.HttpRequest.isInstance(request); + if (isRequest) { + request.headers[import_util_retry.INVOCATION_ID_HEADER] = (0, import_uuid.v4)(); + } + while (true) { + try { + if (isRequest) { + request.headers[import_util_retry.REQUEST_HEADER] = `attempt=${attempts + 1}; max=${maxAttempts}`; + } + const { response, output } = await next(args); + retryStrategy.recordSuccess(retryToken); + output.$metadata.attempts = attempts + 1; + output.$metadata.totalRetryDelay = totalRetryDelay; + return { response, output }; + } catch (e) { + const retryErrorInfo = getRetryErrorInfo(e); + lastError = asSdkError(e); + if (isRequest && (0, import_isStreamingPayload.isStreamingPayload)(request)) { + (_a = context.logger instanceof import_smithy_client.NoOpLogger ? console : context.logger) == null ? void 0 : _a.warn( + "An error was encountered in a non-retryable streaming request." + ); + throw lastError; + } + try { + retryToken = await retryStrategy.refreshRetryTokenForRetry(retryToken, retryErrorInfo); + } catch (refreshError) { + if (!lastError.$metadata) { + lastError.$metadata = {}; + } + lastError.$metadata.attempts = attempts + 1; + lastError.$metadata.totalRetryDelay = totalRetryDelay; + throw lastError; + } + attempts = retryToken.getRetryCount(); + const delay = retryToken.getRetryDelay(); + totalRetryDelay += delay; + await new Promise((resolve) => setTimeout(resolve, delay)); + } + } + } else { + retryStrategy = retryStrategy; + if (retryStrategy == null ? void 0 : retryStrategy.mode) + context.userAgent = [...context.userAgent || [], ["cfg/retry-mode", retryStrategy.mode]]; + return retryStrategy.retry(next, args); + } +}, "retryMiddleware"); +var isRetryStrategyV2 = /* @__PURE__ */ __name((retryStrategy) => typeof retryStrategy.acquireInitialRetryToken !== "undefined" && typeof retryStrategy.refreshRetryTokenForRetry !== "undefined" && typeof retryStrategy.recordSuccess !== "undefined", "isRetryStrategyV2"); +var getRetryErrorInfo = /* @__PURE__ */ __name((error) => { + const errorInfo = { + error, + errorType: getRetryErrorType(error) + }; + const retryAfterHint = getRetryAfterHint(error.$response); + if (retryAfterHint) { + errorInfo.retryAfterHint = retryAfterHint; + } + return errorInfo; +}, "getRetryErrorInfo"); +var getRetryErrorType = /* @__PURE__ */ __name((error) => { + if ((0, import_service_error_classification.isThrottlingError)(error)) + return "THROTTLING"; + if ((0, import_service_error_classification.isTransientError)(error)) + return "TRANSIENT"; + if ((0, import_service_error_classification.isServerError)(error)) + return "SERVER_ERROR"; + return "CLIENT_ERROR"; +}, "getRetryErrorType"); +var retryMiddlewareOptions = { + name: "retryMiddleware", + tags: ["RETRY"], + step: "finalizeRequest", + priority: "high", + override: true +}; +var getRetryPlugin = /* @__PURE__ */ __name((options) => ({ + applyToStack: (clientStack) => { + clientStack.add(retryMiddleware(options), retryMiddlewareOptions); + } +}), "getRetryPlugin"); +var getRetryAfterHint = /* @__PURE__ */ __name((response) => { + if (!import_protocol_http.HttpResponse.isInstance(response)) + return; + const retryAfterHeaderName = Object.keys(response.headers).find((key) => key.toLowerCase() === "retry-after"); + if (!retryAfterHeaderName) + return; + const retryAfter = response.headers[retryAfterHeaderName]; + const retryAfterSeconds = Number(retryAfter); + if (!Number.isNaN(retryAfterSeconds)) + return new Date(retryAfterSeconds * 1e3); + const retryAfterDate = new Date(retryAfter); + return retryAfterDate; +}, "getRetryAfterHint"); +// Annotate the CommonJS export names for ESM import in node: -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } +0 && (0); -function validate(uuid) { - return typeof uuid === 'string' && _regex.default.test(uuid); -} -var _default = validate; -exports["default"] = _default; /***/ }), -/***/ 72224: +/***/ 49831: /***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { "use strict"; +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.isStreamingPayload = void 0; +const stream_1 = __nccwpck_require__(2203); +const isStreamingPayload = (request) => (request === null || request === void 0 ? void 0 : request.body) instanceof stream_1.Readable || + (typeof ReadableStream !== "undefined" && (request === null || request === void 0 ? void 0 : request.body) instanceof ReadableStream); +exports.isStreamingPayload = isStreamingPayload; -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports["default"] = void 0; - -var _validate = _interopRequireDefault(__nccwpck_require__(19820)); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -function version(uuid) { - if (!(0, _validate.default)(uuid)) { - throw TypeError('Invalid UUID'); - } - - return parseInt(uuid.slice(14, 15), 16); -} - -var _default = version; -exports["default"] = _default; /***/ }), @@ -43202,11 +43771,11 @@ var hasHeader = /* @__PURE__ */ __name((soughtHeader, headers) => { // src/moveHeadersToQuery.ts var import_protocol_http = __nccwpck_require__(72356); var moveHeadersToQuery = /* @__PURE__ */ __name((request, options = {}) => { - var _a; + var _a, _b; const { headers, query = {} } = import_protocol_http.HttpRequest.clone(request); for (const name of Object.keys(headers)) { const lname = name.toLowerCase(); - if (lname.slice(0, 6) === "x-amz-" && !((_a = options.unhoistableHeaders) == null ? void 0 : _a.has(lname))) { + if (lname.slice(0, 6) === "x-amz-" && !((_a = options.unhoistableHeaders) == null ? void 0 : _a.has(lname)) || ((_b = options.hoistableHeaders) == null ? void 0 : _b.has(lname))) { query[name] = headers[name]; delete headers[name]; } @@ -43270,6 +43839,7 @@ var _SignatureV4 = class _SignatureV4 { unsignableHeaders, unhoistableHeaders, signableHeaders, + hoistableHeaders, signingRegion, signingService } = options; @@ -43283,7 +43853,7 @@ var _SignatureV4 = class _SignatureV4 { ); } const scope = createScope(shortDate, region, signingService ?? this.service); - const request = moveHeadersToQuery(prepareRequest(originalRequest), { unhoistableHeaders }); + const request = moveHeadersToQuery(prepareRequest(originalRequest), { unhoistableHeaders, hoistableHeaders }); if (credentials.sessionToken) { request.query[TOKEN_QUERY_PARAM] = credentials.sessionToken; } @@ -43530,11 +44100,13 @@ __export(src_exports, { parseRfc3339DateTime: () => parseRfc3339DateTime, parseRfc3339DateTimeWithOffset: () => parseRfc3339DateTimeWithOffset, parseRfc7231DateTime: () => parseRfc7231DateTime, + quoteHeader: () => quoteHeader, resolveDefaultRuntimeConfig: () => resolveDefaultRuntimeConfig, resolvedPath: () => resolvedPath, serializeDateTime: () => serializeDateTime, serializeFloat: () => serializeFloat, splitEvery: () => splitEvery, + splitHeader: () => splitHeader, strictParseByte: () => strictParseByte, strictParseDouble: () => strictParseDouble, strictParseFloat: () => strictParseFloat, @@ -44603,6 +45175,15 @@ var applyInstruction = /* @__PURE__ */ __name((target, source, instructions, tar var nonNullish = /* @__PURE__ */ __name((_) => _ != null, "nonNullish"); var pass = /* @__PURE__ */ __name((_) => _, "pass"); +// src/quote-header.ts +function quoteHeader(part) { + if (part.includes(",") || part.includes('"')) { + part = `"${part.replace(/"/g, '\\"')}"`; + } + return part; +} +__name(quoteHeader, "quoteHeader"); + // src/resolve-path.ts var resolvedPath = /* @__PURE__ */ __name((resolvedPath2, input, memberName, labelValueProvider, uriLabel, isGreedyLabel) => { if (input != null && input[memberName] !== void 0) { @@ -44685,6 +45266,45 @@ function splitEvery(value, delimiter, numDelimiters) { return compoundSegments; } __name(splitEvery, "splitEvery"); + +// src/split-header.ts +var splitHeader = /* @__PURE__ */ __name((value) => { + const z = value.length; + const values = []; + let withinQuotes = false; + let prevChar = void 0; + let anchor = 0; + for (let i = 0; i < z; ++i) { + const char = value[i]; + switch (char) { + case `"`: + if (prevChar !== "\\") { + withinQuotes = !withinQuotes; + } + break; + case ",": + if (!withinQuotes) { + values.push(value.slice(anchor, i)); + anchor = i + 1; + } + break; + default: + } + prevChar = char; + } + values.push(value.slice(anchor)); + return values.map((v) => { + v = v.trim(); + const z2 = v.length; + if (z2 < 2) { + return v; + } + if (v[0] === `"` && v[z2 - 1] === `"`) { + v = v.slice(1, z2 - 1); + } + return v.replace(/\\"/g, '"'); + }); +}, "splitHeader"); // Annotate the CommonJS export names for ESM import in node: 0 && (0); @@ -85492,58 +86112,58 @@ exports.fromPromise = function (fn) { Object.defineProperty(exports, "__esModule", ({ value: true })); -Object.defineProperty(exports, "v1", ({ +Object.defineProperty(exports, "NIL", ({ enumerable: true, get: function () { - return _v.default; + return _nil.default; } })); -Object.defineProperty(exports, "v3", ({ +Object.defineProperty(exports, "parse", ({ enumerable: true, get: function () { - return _v2.default; + return _parse.default; } })); -Object.defineProperty(exports, "v4", ({ +Object.defineProperty(exports, "stringify", ({ enumerable: true, get: function () { - return _v3.default; + return _stringify.default; } })); -Object.defineProperty(exports, "v5", ({ +Object.defineProperty(exports, "v1", ({ enumerable: true, get: function () { - return _v4.default; + return _v.default; } })); -Object.defineProperty(exports, "NIL", ({ +Object.defineProperty(exports, "v3", ({ enumerable: true, get: function () { - return _nil.default; + return _v2.default; } })); -Object.defineProperty(exports, "version", ({ +Object.defineProperty(exports, "v4", ({ enumerable: true, get: function () { - return _version.default; + return _v3.default; } })); -Object.defineProperty(exports, "validate", ({ +Object.defineProperty(exports, "v5", ({ enumerable: true, get: function () { - return _validate.default; + return _v4.default; } })); -Object.defineProperty(exports, "stringify", ({ +Object.defineProperty(exports, "validate", ({ enumerable: true, get: function () { - return _stringify.default; + return _validate.default; } })); -Object.defineProperty(exports, "parse", ({ +Object.defineProperty(exports, "version", ({ enumerable: true, get: function () { - return _parse.default; + return _version.default; } })); @@ -85599,6 +86219,28 @@ exports["default"] = _default; /***/ }), +/***/ 54221: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = void 0; + +var _crypto = _interopRequireDefault(__nccwpck_require__(76982)); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +var _default = { + randomUUID: _crypto.default.randomUUID +}; +exports["default"] = _default; + +/***/ }), + /***/ 37723: /***/ ((__unused_webpack_module, exports) => { @@ -85752,6 +86394,7 @@ Object.defineProperty(exports, "__esModule", ({ value: true })); exports["default"] = void 0; +exports.unsafeStringify = unsafeStringify; var _validate = _interopRequireDefault(__nccwpck_require__(36200)); @@ -85764,13 +86407,17 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de const byteToHex = []; for (let i = 0; i < 256; ++i) { - byteToHex.push((i + 0x100).toString(16).substr(1)); + byteToHex.push((i + 0x100).toString(16).slice(1)); } -function stringify(arr, offset = 0) { +function unsafeStringify(arr, offset = 0) { // Note: Be careful editing this code! It's been tuned for performance // and works in ways you may not expect. See https://github.com/uuidjs/uuid/pull/434 - const uuid = (byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + '-' + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + '-' + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + '-' + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + '-' + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]]).toLowerCase(); // Consistency check for valid UUID. If this throws, it's likely due to one + return byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + '-' + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + '-' + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + '-' + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + '-' + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]]; +} + +function stringify(arr, offset = 0) { + const uuid = unsafeStringify(arr, offset); // Consistency check for valid UUID. If this throws, it's likely due to one // of the following: // - One or more input array values don't map to a hex octet (leading to // "undefined" in the uuid) @@ -85801,7 +86448,7 @@ exports["default"] = void 0; var _rng = _interopRequireDefault(__nccwpck_require__(12973)); -var _stringify = _interopRequireDefault(__nccwpck_require__(37597)); +var _stringify = __nccwpck_require__(37597); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } @@ -85894,7 +86541,7 @@ function v1(options, buf, offset) { b[i + n] = node[n]; } - return buf || (0, _stringify.default)(b); + return buf || (0, _stringify.unsafeStringify)(b); } var _default = v1; @@ -85934,10 +86581,10 @@ exports["default"] = _default; Object.defineProperty(exports, "__esModule", ({ value: true })); -exports["default"] = _default; exports.URL = exports.DNS = void 0; +exports["default"] = v35; -var _stringify = _interopRequireDefault(__nccwpck_require__(37597)); +var _stringify = __nccwpck_require__(37597); var _parse = _interopRequireDefault(__nccwpck_require__(17267)); @@ -85960,8 +86607,10 @@ exports.DNS = DNS; const URL = '6ba7b811-9dad-11d1-80b4-00c04fd430c8'; exports.URL = URL; -function _default(name, version, hashfunc) { +function v35(name, version, hashfunc) { function generateUUID(value, namespace, buf, offset) { + var _namespace; + if (typeof value === 'string') { value = stringToBytes(value); } @@ -85970,7 +86619,7 @@ function _default(name, version, hashfunc) { namespace = (0, _parse.default)(namespace); } - if (namespace.length !== 16) { + if (((_namespace = namespace) === null || _namespace === void 0 ? void 0 : _namespace.length) !== 16) { throw TypeError('Namespace must be array-like (16 iterable integer values, 0-255)'); } // Compute hash of namespace and value, Per 4.3 // Future: Use spread syntax when supported on all platforms, e.g. `bytes = @@ -85994,7 +86643,7 @@ function _default(name, version, hashfunc) { return buf; } - return (0, _stringify.default)(bytes); + return (0, _stringify.unsafeStringify)(bytes); } // Function#name is not settable on some platforms (#270) @@ -86021,13 +86670,19 @@ Object.defineProperty(exports, "__esModule", ({ })); exports["default"] = void 0; +var _native = _interopRequireDefault(__nccwpck_require__(54221)); + var _rng = _interopRequireDefault(__nccwpck_require__(12973)); -var _stringify = _interopRequireDefault(__nccwpck_require__(37597)); +var _stringify = __nccwpck_require__(37597); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function v4(options, buf, offset) { + if (_native.default.randomUUID && !buf && !options) { + return _native.default.randomUUID(); + } + options = options || {}; const rnds = options.random || (options.rng || _rng.default)(); // Per 4.4, set bits for version and `clock_seq_hi_and_reserved` @@ -86046,7 +86701,7 @@ function v4(options, buf, offset) { return buf; } - return (0, _stringify.default)(rnds); + return (0, _stringify.unsafeStringify)(rnds); } var _default = v4; @@ -86121,7 +86776,7 @@ function version(uuid) { throw TypeError('Invalid UUID'); } - return parseInt(uuid.substr(14, 1), 16); + return parseInt(uuid.slice(14, 15), 16); } var _default = version; @@ -86401,6 +87056,14 @@ module.exports = require("string_decoder"); /***/ }), +/***/ 53557: +/***/ ((module) => { + +"use strict"; +module.exports = require("timers"); + +/***/ }), + /***/ 64756: /***/ ((module) => { @@ -88118,7 +88781,7 @@ module.exports = /*#__PURE__*/JSON.parse('{"$ref":"#/definitions/IntegManifest", /***/ ((module) => { "use strict"; -module.exports = /*#__PURE__*/JSON.parse('{"name":"@aws-sdk/client-cloudformation","description":"AWS SDK for JavaScript Cloudformation Client for Node.js, Browser and React Native","version":"3.658.1","scripts":{"build":"concurrently \'yarn:build:cjs\' \'yarn:build:es\' \'yarn:build:types\'","build:cjs":"node ../../scripts/compilation/inline client-cloudformation","build:es":"tsc -p tsconfig.es.json","build:include:deps":"lerna run --scope $npm_package_name --include-dependencies build","build:types":"tsc -p tsconfig.types.json","build:types:downlevel":"downlevel-dts dist-types dist-types/ts3.4","clean":"rimraf ./dist-* && rimraf *.tsbuildinfo","extract:docs":"api-extractor run --local","generate:client":"node ../../scripts/generate-clients/single-service --solo cloudformation"},"main":"./dist-cjs/index.js","types":"./dist-types/index.d.ts","module":"./dist-es/index.js","sideEffects":false,"dependencies":{"@aws-crypto/sha256-browser":"5.2.0","@aws-crypto/sha256-js":"5.2.0","@aws-sdk/client-sso-oidc":"3.658.1","@aws-sdk/client-sts":"3.658.1","@aws-sdk/core":"3.658.1","@aws-sdk/credential-provider-node":"3.658.1","@aws-sdk/middleware-host-header":"3.654.0","@aws-sdk/middleware-logger":"3.654.0","@aws-sdk/middleware-recursion-detection":"3.654.0","@aws-sdk/middleware-user-agent":"3.654.0","@aws-sdk/region-config-resolver":"3.654.0","@aws-sdk/types":"3.654.0","@aws-sdk/util-endpoints":"3.654.0","@aws-sdk/util-user-agent-browser":"3.654.0","@aws-sdk/util-user-agent-node":"3.654.0","@smithy/config-resolver":"^3.0.8","@smithy/core":"^2.4.6","@smithy/fetch-http-handler":"^3.2.8","@smithy/hash-node":"^3.0.6","@smithy/invalid-dependency":"^3.0.6","@smithy/middleware-content-length":"^3.0.8","@smithy/middleware-endpoint":"^3.1.3","@smithy/middleware-retry":"^3.0.21","@smithy/middleware-serde":"^3.0.6","@smithy/middleware-stack":"^3.0.6","@smithy/node-config-provider":"^3.1.7","@smithy/node-http-handler":"^3.2.3","@smithy/protocol-http":"^4.1.3","@smithy/smithy-client":"^3.3.5","@smithy/types":"^3.4.2","@smithy/url-parser":"^3.0.6","@smithy/util-base64":"^3.0.0","@smithy/util-body-length-browser":"^3.0.0","@smithy/util-body-length-node":"^3.0.0","@smithy/util-defaults-mode-browser":"^3.0.21","@smithy/util-defaults-mode-node":"^3.0.21","@smithy/util-endpoints":"^2.1.2","@smithy/util-middleware":"^3.0.6","@smithy/util-retry":"^3.0.6","@smithy/util-utf8":"^3.0.0","@smithy/util-waiter":"^3.1.5","tslib":"^2.6.2","uuid":"^9.0.1"},"devDependencies":{"@tsconfig/node16":"16.1.3","@types/node":"^16.18.96","@types/uuid":"^9.0.4","concurrently":"7.0.0","downlevel-dts":"0.10.1","rimraf":"3.0.2","typescript":"~4.9.5"},"engines":{"node":">=16.0.0"},"typesVersions":{"<4.0":{"dist-types/*":["dist-types/ts3.4/*"]}},"files":["dist-*/**"],"author":{"name":"AWS SDK for JavaScript Team","url":"https://aws.amazon.com/javascript/"},"license":"Apache-2.0","browser":{"./dist-es/runtimeConfig":"./dist-es/runtimeConfig.browser"},"react-native":{"./dist-es/runtimeConfig":"./dist-es/runtimeConfig.native"},"homepage":"https://github.com/aws/aws-sdk-js-v3/tree/main/clients/client-cloudformation","repository":{"type":"git","url":"https://github.com/aws/aws-sdk-js-v3.git","directory":"clients/client-cloudformation"}}'); +module.exports = /*#__PURE__*/JSON.parse('{"name":"@aws-sdk/client-cloudformation","description":"AWS SDK for JavaScript Cloudformation Client for Node.js, Browser and React Native","version":"3.665.0","scripts":{"build":"concurrently \'yarn:build:cjs\' \'yarn:build:es\' \'yarn:build:types\'","build:cjs":"node ../../scripts/compilation/inline client-cloudformation","build:es":"tsc -p tsconfig.es.json","build:include:deps":"lerna run --scope $npm_package_name --include-dependencies build","build:types":"tsc -p tsconfig.types.json","build:types:downlevel":"downlevel-dts dist-types dist-types/ts3.4","clean":"rimraf ./dist-* && rimraf *.tsbuildinfo","extract:docs":"api-extractor run --local","generate:client":"node ../../scripts/generate-clients/single-service --solo cloudformation"},"main":"./dist-cjs/index.js","types":"./dist-types/index.d.ts","module":"./dist-es/index.js","sideEffects":false,"dependencies":{"@aws-crypto/sha256-browser":"5.2.0","@aws-crypto/sha256-js":"5.2.0","@aws-sdk/client-sso-oidc":"3.665.0","@aws-sdk/client-sts":"3.665.0","@aws-sdk/core":"3.665.0","@aws-sdk/credential-provider-node":"3.665.0","@aws-sdk/middleware-host-header":"3.664.0","@aws-sdk/middleware-logger":"3.664.0","@aws-sdk/middleware-recursion-detection":"3.664.0","@aws-sdk/middleware-user-agent":"3.664.0","@aws-sdk/region-config-resolver":"3.664.0","@aws-sdk/types":"3.664.0","@aws-sdk/util-endpoints":"3.664.0","@aws-sdk/util-user-agent-browser":"3.664.0","@aws-sdk/util-user-agent-node":"3.664.0","@smithy/config-resolver":"^3.0.9","@smithy/core":"^2.4.7","@smithy/fetch-http-handler":"^3.2.9","@smithy/hash-node":"^3.0.7","@smithy/invalid-dependency":"^3.0.7","@smithy/middleware-content-length":"^3.0.9","@smithy/middleware-endpoint":"^3.1.4","@smithy/middleware-retry":"^3.0.22","@smithy/middleware-serde":"^3.0.7","@smithy/middleware-stack":"^3.0.7","@smithy/node-config-provider":"^3.1.8","@smithy/node-http-handler":"^3.2.4","@smithy/protocol-http":"^4.1.4","@smithy/smithy-client":"^3.3.6","@smithy/types":"^3.5.0","@smithy/url-parser":"^3.0.7","@smithy/util-base64":"^3.0.0","@smithy/util-body-length-browser":"^3.0.0","@smithy/util-body-length-node":"^3.0.0","@smithy/util-defaults-mode-browser":"^3.0.22","@smithy/util-defaults-mode-node":"^3.0.22","@smithy/util-endpoints":"^2.1.3","@smithy/util-middleware":"^3.0.7","@smithy/util-retry":"^3.0.7","@smithy/util-utf8":"^3.0.0","@smithy/util-waiter":"^3.1.6","tslib":"^2.6.2","uuid":"^9.0.1"},"devDependencies":{"@tsconfig/node16":"16.1.3","@types/node":"^16.18.96","@types/uuid":"^9.0.4","concurrently":"7.0.0","downlevel-dts":"0.10.1","rimraf":"3.0.2","typescript":"~4.9.5"},"engines":{"node":">=16.0.0"},"typesVersions":{"<4.0":{"dist-types/*":["dist-types/ts3.4/*"]}},"files":["dist-*/**"],"author":{"name":"AWS SDK for JavaScript Team","url":"https://aws.amazon.com/javascript/"},"license":"Apache-2.0","browser":{"./dist-es/runtimeConfig":"./dist-es/runtimeConfig.browser"},"react-native":{"./dist-es/runtimeConfig":"./dist-es/runtimeConfig.native"},"homepage":"https://github.com/aws/aws-sdk-js-v3/tree/main/clients/client-cloudformation","repository":{"type":"git","url":"https://github.com/aws/aws-sdk-js-v3.git","directory":"clients/client-cloudformation"}}'); /***/ }), @@ -88126,7 +88789,7 @@ module.exports = /*#__PURE__*/JSON.parse('{"name":"@aws-sdk/client-cloudformatio /***/ ((module) => { "use strict"; -module.exports = /*#__PURE__*/JSON.parse('{"name":"@aws-sdk/client-cognito-identity","description":"AWS SDK for JavaScript Cognito Identity Client for Node.js, Browser and React Native","version":"3.658.1","scripts":{"build":"concurrently \'yarn:build:cjs\' \'yarn:build:es\' \'yarn:build:types\'","build:cjs":"node ../../scripts/compilation/inline client-cognito-identity","build:es":"tsc -p tsconfig.es.json","build:include:deps":"lerna run --scope $npm_package_name --include-dependencies build","build:types":"tsc -p tsconfig.types.json","build:types:downlevel":"downlevel-dts dist-types dist-types/ts3.4","clean":"rimraf ./dist-* && rimraf *.tsbuildinfo","extract:docs":"api-extractor run --local","generate:client":"node ../../scripts/generate-clients/single-service --solo cognito-identity","test:e2e":"ts-mocha test/**/*.ispec.ts && karma start karma.conf.js"},"main":"./dist-cjs/index.js","types":"./dist-types/index.d.ts","module":"./dist-es/index.js","sideEffects":false,"dependencies":{"@aws-crypto/sha256-browser":"5.2.0","@aws-crypto/sha256-js":"5.2.0","@aws-sdk/client-sso-oidc":"3.658.1","@aws-sdk/client-sts":"3.658.1","@aws-sdk/core":"3.658.1","@aws-sdk/credential-provider-node":"3.658.1","@aws-sdk/middleware-host-header":"3.654.0","@aws-sdk/middleware-logger":"3.654.0","@aws-sdk/middleware-recursion-detection":"3.654.0","@aws-sdk/middleware-user-agent":"3.654.0","@aws-sdk/region-config-resolver":"3.654.0","@aws-sdk/types":"3.654.0","@aws-sdk/util-endpoints":"3.654.0","@aws-sdk/util-user-agent-browser":"3.654.0","@aws-sdk/util-user-agent-node":"3.654.0","@smithy/config-resolver":"^3.0.8","@smithy/core":"^2.4.6","@smithy/fetch-http-handler":"^3.2.8","@smithy/hash-node":"^3.0.6","@smithy/invalid-dependency":"^3.0.6","@smithy/middleware-content-length":"^3.0.8","@smithy/middleware-endpoint":"^3.1.3","@smithy/middleware-retry":"^3.0.21","@smithy/middleware-serde":"^3.0.6","@smithy/middleware-stack":"^3.0.6","@smithy/node-config-provider":"^3.1.7","@smithy/node-http-handler":"^3.2.3","@smithy/protocol-http":"^4.1.3","@smithy/smithy-client":"^3.3.5","@smithy/types":"^3.4.2","@smithy/url-parser":"^3.0.6","@smithy/util-base64":"^3.0.0","@smithy/util-body-length-browser":"^3.0.0","@smithy/util-body-length-node":"^3.0.0","@smithy/util-defaults-mode-browser":"^3.0.21","@smithy/util-defaults-mode-node":"^3.0.21","@smithy/util-endpoints":"^2.1.2","@smithy/util-middleware":"^3.0.6","@smithy/util-retry":"^3.0.6","@smithy/util-utf8":"^3.0.0","tslib":"^2.6.2"},"devDependencies":{"@aws-sdk/client-iam":"3.658.1","@tsconfig/node16":"16.1.3","@types/chai":"^4.2.11","@types/mocha":"^8.0.4","@types/node":"^16.18.96","concurrently":"7.0.0","downlevel-dts":"0.10.1","rimraf":"3.0.2","typescript":"~4.9.5"},"engines":{"node":">=16.0.0"},"typesVersions":{"<4.0":{"dist-types/*":["dist-types/ts3.4/*"]}},"files":["dist-*/**"],"author":{"name":"AWS SDK for JavaScript Team","url":"https://aws.amazon.com/javascript/"},"license":"Apache-2.0","browser":{"./dist-es/runtimeConfig":"./dist-es/runtimeConfig.browser"},"react-native":{"./dist-es/runtimeConfig":"./dist-es/runtimeConfig.native"},"homepage":"https://github.com/aws/aws-sdk-js-v3/tree/main/clients/client-cognito-identity","repository":{"type":"git","url":"https://github.com/aws/aws-sdk-js-v3.git","directory":"clients/client-cognito-identity"}}'); +module.exports = /*#__PURE__*/JSON.parse('{"name":"@aws-sdk/client-cognito-identity","description":"AWS SDK for JavaScript Cognito Identity Client for Node.js, Browser and React Native","version":"3.665.0","scripts":{"build":"concurrently \'yarn:build:cjs\' \'yarn:build:es\' \'yarn:build:types\'","build:cjs":"node ../../scripts/compilation/inline client-cognito-identity","build:es":"tsc -p tsconfig.es.json","build:include:deps":"lerna run --scope $npm_package_name --include-dependencies build","build:types":"tsc -p tsconfig.types.json","build:types:downlevel":"downlevel-dts dist-types dist-types/ts3.4","clean":"rimraf ./dist-* && rimraf *.tsbuildinfo","extract:docs":"api-extractor run --local","generate:client":"node ../../scripts/generate-clients/single-service --solo cognito-identity","test:e2e":"ts-mocha test/**/*.ispec.ts && karma start karma.conf.js"},"main":"./dist-cjs/index.js","types":"./dist-types/index.d.ts","module":"./dist-es/index.js","sideEffects":false,"dependencies":{"@aws-crypto/sha256-browser":"5.2.0","@aws-crypto/sha256-js":"5.2.0","@aws-sdk/client-sso-oidc":"3.665.0","@aws-sdk/client-sts":"3.665.0","@aws-sdk/core":"3.665.0","@aws-sdk/credential-provider-node":"3.665.0","@aws-sdk/middleware-host-header":"3.664.0","@aws-sdk/middleware-logger":"3.664.0","@aws-sdk/middleware-recursion-detection":"3.664.0","@aws-sdk/middleware-user-agent":"3.664.0","@aws-sdk/region-config-resolver":"3.664.0","@aws-sdk/types":"3.664.0","@aws-sdk/util-endpoints":"3.664.0","@aws-sdk/util-user-agent-browser":"3.664.0","@aws-sdk/util-user-agent-node":"3.664.0","@smithy/config-resolver":"^3.0.9","@smithy/core":"^2.4.7","@smithy/fetch-http-handler":"^3.2.9","@smithy/hash-node":"^3.0.7","@smithy/invalid-dependency":"^3.0.7","@smithy/middleware-content-length":"^3.0.9","@smithy/middleware-endpoint":"^3.1.4","@smithy/middleware-retry":"^3.0.22","@smithy/middleware-serde":"^3.0.7","@smithy/middleware-stack":"^3.0.7","@smithy/node-config-provider":"^3.1.8","@smithy/node-http-handler":"^3.2.4","@smithy/protocol-http":"^4.1.4","@smithy/smithy-client":"^3.3.6","@smithy/types":"^3.5.0","@smithy/url-parser":"^3.0.7","@smithy/util-base64":"^3.0.0","@smithy/util-body-length-browser":"^3.0.0","@smithy/util-body-length-node":"^3.0.0","@smithy/util-defaults-mode-browser":"^3.0.22","@smithy/util-defaults-mode-node":"^3.0.22","@smithy/util-endpoints":"^2.1.3","@smithy/util-middleware":"^3.0.7","@smithy/util-retry":"^3.0.7","@smithy/util-utf8":"^3.0.0","tslib":"^2.6.2"},"devDependencies":{"@aws-sdk/client-iam":"3.665.0","@tsconfig/node16":"16.1.3","@types/chai":"^4.2.11","@types/mocha":"^8.0.4","@types/node":"^16.18.96","concurrently":"7.0.0","downlevel-dts":"0.10.1","rimraf":"3.0.2","typescript":"~4.9.5"},"engines":{"node":">=16.0.0"},"typesVersions":{"<4.0":{"dist-types/*":["dist-types/ts3.4/*"]}},"files":["dist-*/**"],"author":{"name":"AWS SDK for JavaScript Team","url":"https://aws.amazon.com/javascript/"},"license":"Apache-2.0","browser":{"./dist-es/runtimeConfig":"./dist-es/runtimeConfig.browser"},"react-native":{"./dist-es/runtimeConfig":"./dist-es/runtimeConfig.native"},"homepage":"https://github.com/aws/aws-sdk-js-v3/tree/main/clients/client-cognito-identity","repository":{"type":"git","url":"https://github.com/aws/aws-sdk-js-v3.git","directory":"clients/client-cognito-identity"}}'); /***/ }), @@ -88134,7 +88797,7 @@ module.exports = /*#__PURE__*/JSON.parse('{"name":"@aws-sdk/client-cognito-ident /***/ ((module) => { "use strict"; -module.exports = /*#__PURE__*/JSON.parse('{"name":"@aws-sdk/client-sso-oidc","description":"AWS SDK for JavaScript Sso Oidc Client for Node.js, Browser and React Native","version":"3.658.1","scripts":{"build":"concurrently \'yarn:build:cjs\' \'yarn:build:es\' \'yarn:build:types\'","build:cjs":"node ../../scripts/compilation/inline client-sso-oidc","build:es":"tsc -p tsconfig.es.json","build:include:deps":"lerna run --scope $npm_package_name --include-dependencies build","build:types":"tsc -p tsconfig.types.json","build:types:downlevel":"downlevel-dts dist-types dist-types/ts3.4","clean":"rimraf ./dist-* && rimraf *.tsbuildinfo","extract:docs":"api-extractor run --local","generate:client":"node ../../scripts/generate-clients/single-service --solo sso-oidc"},"main":"./dist-cjs/index.js","types":"./dist-types/index.d.ts","module":"./dist-es/index.js","sideEffects":false,"dependencies":{"@aws-crypto/sha256-browser":"5.2.0","@aws-crypto/sha256-js":"5.2.0","@aws-sdk/core":"3.658.1","@aws-sdk/credential-provider-node":"3.658.1","@aws-sdk/middleware-host-header":"3.654.0","@aws-sdk/middleware-logger":"3.654.0","@aws-sdk/middleware-recursion-detection":"3.654.0","@aws-sdk/middleware-user-agent":"3.654.0","@aws-sdk/region-config-resolver":"3.654.0","@aws-sdk/types":"3.654.0","@aws-sdk/util-endpoints":"3.654.0","@aws-sdk/util-user-agent-browser":"3.654.0","@aws-sdk/util-user-agent-node":"3.654.0","@smithy/config-resolver":"^3.0.8","@smithy/core":"^2.4.6","@smithy/fetch-http-handler":"^3.2.8","@smithy/hash-node":"^3.0.6","@smithy/invalid-dependency":"^3.0.6","@smithy/middleware-content-length":"^3.0.8","@smithy/middleware-endpoint":"^3.1.3","@smithy/middleware-retry":"^3.0.21","@smithy/middleware-serde":"^3.0.6","@smithy/middleware-stack":"^3.0.6","@smithy/node-config-provider":"^3.1.7","@smithy/node-http-handler":"^3.2.3","@smithy/protocol-http":"^4.1.3","@smithy/smithy-client":"^3.3.5","@smithy/types":"^3.4.2","@smithy/url-parser":"^3.0.6","@smithy/util-base64":"^3.0.0","@smithy/util-body-length-browser":"^3.0.0","@smithy/util-body-length-node":"^3.0.0","@smithy/util-defaults-mode-browser":"^3.0.21","@smithy/util-defaults-mode-node":"^3.0.21","@smithy/util-endpoints":"^2.1.2","@smithy/util-middleware":"^3.0.6","@smithy/util-retry":"^3.0.6","@smithy/util-utf8":"^3.0.0","tslib":"^2.6.2"},"devDependencies":{"@tsconfig/node16":"16.1.3","@types/node":"^16.18.96","concurrently":"7.0.0","downlevel-dts":"0.10.1","rimraf":"3.0.2","typescript":"~4.9.5"},"engines":{"node":">=16.0.0"},"typesVersions":{"<4.0":{"dist-types/*":["dist-types/ts3.4/*"]}},"files":["dist-*/**"],"author":{"name":"AWS SDK for JavaScript Team","url":"https://aws.amazon.com/javascript/"},"license":"Apache-2.0","peerDependencies":{"@aws-sdk/client-sts":"^3.658.1"},"browser":{"./dist-es/runtimeConfig":"./dist-es/runtimeConfig.browser"},"react-native":{"./dist-es/runtimeConfig":"./dist-es/runtimeConfig.native"},"homepage":"https://github.com/aws/aws-sdk-js-v3/tree/main/clients/client-sso-oidc","repository":{"type":"git","url":"https://github.com/aws/aws-sdk-js-v3.git","directory":"clients/client-sso-oidc"}}'); +module.exports = /*#__PURE__*/JSON.parse('{"name":"@aws-sdk/client-sso-oidc","description":"AWS SDK for JavaScript Sso Oidc Client for Node.js, Browser and React Native","version":"3.665.0","scripts":{"build":"concurrently \'yarn:build:cjs\' \'yarn:build:es\' \'yarn:build:types\'","build:cjs":"node ../../scripts/compilation/inline client-sso-oidc","build:es":"tsc -p tsconfig.es.json","build:include:deps":"lerna run --scope $npm_package_name --include-dependencies build","build:types":"tsc -p tsconfig.types.json","build:types:downlevel":"downlevel-dts dist-types dist-types/ts3.4","clean":"rimraf ./dist-* && rimraf *.tsbuildinfo","extract:docs":"api-extractor run --local","generate:client":"node ../../scripts/generate-clients/single-service --solo sso-oidc"},"main":"./dist-cjs/index.js","types":"./dist-types/index.d.ts","module":"./dist-es/index.js","sideEffects":false,"dependencies":{"@aws-crypto/sha256-browser":"5.2.0","@aws-crypto/sha256-js":"5.2.0","@aws-sdk/core":"3.665.0","@aws-sdk/credential-provider-node":"3.665.0","@aws-sdk/middleware-host-header":"3.664.0","@aws-sdk/middleware-logger":"3.664.0","@aws-sdk/middleware-recursion-detection":"3.664.0","@aws-sdk/middleware-user-agent":"3.664.0","@aws-sdk/region-config-resolver":"3.664.0","@aws-sdk/types":"3.664.0","@aws-sdk/util-endpoints":"3.664.0","@aws-sdk/util-user-agent-browser":"3.664.0","@aws-sdk/util-user-agent-node":"3.664.0","@smithy/config-resolver":"^3.0.9","@smithy/core":"^2.4.7","@smithy/fetch-http-handler":"^3.2.9","@smithy/hash-node":"^3.0.7","@smithy/invalid-dependency":"^3.0.7","@smithy/middleware-content-length":"^3.0.9","@smithy/middleware-endpoint":"^3.1.4","@smithy/middleware-retry":"^3.0.22","@smithy/middleware-serde":"^3.0.7","@smithy/middleware-stack":"^3.0.7","@smithy/node-config-provider":"^3.1.8","@smithy/node-http-handler":"^3.2.4","@smithy/protocol-http":"^4.1.4","@smithy/smithy-client":"^3.3.6","@smithy/types":"^3.5.0","@smithy/url-parser":"^3.0.7","@smithy/util-base64":"^3.0.0","@smithy/util-body-length-browser":"^3.0.0","@smithy/util-body-length-node":"^3.0.0","@smithy/util-defaults-mode-browser":"^3.0.22","@smithy/util-defaults-mode-node":"^3.0.22","@smithy/util-endpoints":"^2.1.3","@smithy/util-middleware":"^3.0.7","@smithy/util-retry":"^3.0.7","@smithy/util-utf8":"^3.0.0","tslib":"^2.6.2"},"devDependencies":{"@tsconfig/node16":"16.1.3","@types/node":"^16.18.96","concurrently":"7.0.0","downlevel-dts":"0.10.1","rimraf":"3.0.2","typescript":"~4.9.5"},"engines":{"node":">=16.0.0"},"typesVersions":{"<4.0":{"dist-types/*":["dist-types/ts3.4/*"]}},"files":["dist-*/**"],"author":{"name":"AWS SDK for JavaScript Team","url":"https://aws.amazon.com/javascript/"},"license":"Apache-2.0","peerDependencies":{"@aws-sdk/client-sts":"^3.665.0"},"browser":{"./dist-es/runtimeConfig":"./dist-es/runtimeConfig.browser"},"react-native":{"./dist-es/runtimeConfig":"./dist-es/runtimeConfig.native"},"homepage":"https://github.com/aws/aws-sdk-js-v3/tree/main/clients/client-sso-oidc","repository":{"type":"git","url":"https://github.com/aws/aws-sdk-js-v3.git","directory":"clients/client-sso-oidc"}}'); /***/ }), @@ -88142,7 +88805,7 @@ module.exports = /*#__PURE__*/JSON.parse('{"name":"@aws-sdk/client-sso-oidc","de /***/ ((module) => { "use strict"; -module.exports = /*#__PURE__*/JSON.parse('{"name":"@aws-sdk/client-sso","description":"AWS SDK for JavaScript Sso Client for Node.js, Browser and React Native","version":"3.658.1","scripts":{"build":"concurrently \'yarn:build:cjs\' \'yarn:build:es\' \'yarn:build:types\'","build:cjs":"node ../../scripts/compilation/inline client-sso","build:es":"tsc -p tsconfig.es.json","build:include:deps":"lerna run --scope $npm_package_name --include-dependencies build","build:types":"tsc -p tsconfig.types.json","build:types:downlevel":"downlevel-dts dist-types dist-types/ts3.4","clean":"rimraf ./dist-* && rimraf *.tsbuildinfo","extract:docs":"api-extractor run --local","generate:client":"node ../../scripts/generate-clients/single-service --solo sso"},"main":"./dist-cjs/index.js","types":"./dist-types/index.d.ts","module":"./dist-es/index.js","sideEffects":false,"dependencies":{"@aws-crypto/sha256-browser":"5.2.0","@aws-crypto/sha256-js":"5.2.0","@aws-sdk/core":"3.658.1","@aws-sdk/middleware-host-header":"3.654.0","@aws-sdk/middleware-logger":"3.654.0","@aws-sdk/middleware-recursion-detection":"3.654.0","@aws-sdk/middleware-user-agent":"3.654.0","@aws-sdk/region-config-resolver":"3.654.0","@aws-sdk/types":"3.654.0","@aws-sdk/util-endpoints":"3.654.0","@aws-sdk/util-user-agent-browser":"3.654.0","@aws-sdk/util-user-agent-node":"3.654.0","@smithy/config-resolver":"^3.0.8","@smithy/core":"^2.4.6","@smithy/fetch-http-handler":"^3.2.8","@smithy/hash-node":"^3.0.6","@smithy/invalid-dependency":"^3.0.6","@smithy/middleware-content-length":"^3.0.8","@smithy/middleware-endpoint":"^3.1.3","@smithy/middleware-retry":"^3.0.21","@smithy/middleware-serde":"^3.0.6","@smithy/middleware-stack":"^3.0.6","@smithy/node-config-provider":"^3.1.7","@smithy/node-http-handler":"^3.2.3","@smithy/protocol-http":"^4.1.3","@smithy/smithy-client":"^3.3.5","@smithy/types":"^3.4.2","@smithy/url-parser":"^3.0.6","@smithy/util-base64":"^3.0.0","@smithy/util-body-length-browser":"^3.0.0","@smithy/util-body-length-node":"^3.0.0","@smithy/util-defaults-mode-browser":"^3.0.21","@smithy/util-defaults-mode-node":"^3.0.21","@smithy/util-endpoints":"^2.1.2","@smithy/util-middleware":"^3.0.6","@smithy/util-retry":"^3.0.6","@smithy/util-utf8":"^3.0.0","tslib":"^2.6.2"},"devDependencies":{"@tsconfig/node16":"16.1.3","@types/node":"^16.18.96","concurrently":"7.0.0","downlevel-dts":"0.10.1","rimraf":"3.0.2","typescript":"~4.9.5"},"engines":{"node":">=16.0.0"},"typesVersions":{"<4.0":{"dist-types/*":["dist-types/ts3.4/*"]}},"files":["dist-*/**"],"author":{"name":"AWS SDK for JavaScript Team","url":"https://aws.amazon.com/javascript/"},"license":"Apache-2.0","browser":{"./dist-es/runtimeConfig":"./dist-es/runtimeConfig.browser"},"react-native":{"./dist-es/runtimeConfig":"./dist-es/runtimeConfig.native"},"homepage":"https://github.com/aws/aws-sdk-js-v3/tree/main/clients/client-sso","repository":{"type":"git","url":"https://github.com/aws/aws-sdk-js-v3.git","directory":"clients/client-sso"}}'); +module.exports = /*#__PURE__*/JSON.parse('{"name":"@aws-sdk/client-sso","description":"AWS SDK for JavaScript Sso Client for Node.js, Browser and React Native","version":"3.665.0","scripts":{"build":"concurrently \'yarn:build:cjs\' \'yarn:build:es\' \'yarn:build:types\'","build:cjs":"node ../../scripts/compilation/inline client-sso","build:es":"tsc -p tsconfig.es.json","build:include:deps":"lerna run --scope $npm_package_name --include-dependencies build","build:types":"tsc -p tsconfig.types.json","build:types:downlevel":"downlevel-dts dist-types dist-types/ts3.4","clean":"rimraf ./dist-* && rimraf *.tsbuildinfo","extract:docs":"api-extractor run --local","generate:client":"node ../../scripts/generate-clients/single-service --solo sso"},"main":"./dist-cjs/index.js","types":"./dist-types/index.d.ts","module":"./dist-es/index.js","sideEffects":false,"dependencies":{"@aws-crypto/sha256-browser":"5.2.0","@aws-crypto/sha256-js":"5.2.0","@aws-sdk/core":"3.665.0","@aws-sdk/middleware-host-header":"3.664.0","@aws-sdk/middleware-logger":"3.664.0","@aws-sdk/middleware-recursion-detection":"3.664.0","@aws-sdk/middleware-user-agent":"3.664.0","@aws-sdk/region-config-resolver":"3.664.0","@aws-sdk/types":"3.664.0","@aws-sdk/util-endpoints":"3.664.0","@aws-sdk/util-user-agent-browser":"3.664.0","@aws-sdk/util-user-agent-node":"3.664.0","@smithy/config-resolver":"^3.0.9","@smithy/core":"^2.4.7","@smithy/fetch-http-handler":"^3.2.9","@smithy/hash-node":"^3.0.7","@smithy/invalid-dependency":"^3.0.7","@smithy/middleware-content-length":"^3.0.9","@smithy/middleware-endpoint":"^3.1.4","@smithy/middleware-retry":"^3.0.22","@smithy/middleware-serde":"^3.0.7","@smithy/middleware-stack":"^3.0.7","@smithy/node-config-provider":"^3.1.8","@smithy/node-http-handler":"^3.2.4","@smithy/protocol-http":"^4.1.4","@smithy/smithy-client":"^3.3.6","@smithy/types":"^3.5.0","@smithy/url-parser":"^3.0.7","@smithy/util-base64":"^3.0.0","@smithy/util-body-length-browser":"^3.0.0","@smithy/util-body-length-node":"^3.0.0","@smithy/util-defaults-mode-browser":"^3.0.22","@smithy/util-defaults-mode-node":"^3.0.22","@smithy/util-endpoints":"^2.1.3","@smithy/util-middleware":"^3.0.7","@smithy/util-retry":"^3.0.7","@smithy/util-utf8":"^3.0.0","tslib":"^2.6.2"},"devDependencies":{"@tsconfig/node16":"16.1.3","@types/node":"^16.18.96","concurrently":"7.0.0","downlevel-dts":"0.10.1","rimraf":"3.0.2","typescript":"~4.9.5"},"engines":{"node":">=16.0.0"},"typesVersions":{"<4.0":{"dist-types/*":["dist-types/ts3.4/*"]}},"files":["dist-*/**"],"author":{"name":"AWS SDK for JavaScript Team","url":"https://aws.amazon.com/javascript/"},"license":"Apache-2.0","browser":{"./dist-es/runtimeConfig":"./dist-es/runtimeConfig.browser"},"react-native":{"./dist-es/runtimeConfig":"./dist-es/runtimeConfig.native"},"homepage":"https://github.com/aws/aws-sdk-js-v3/tree/main/clients/client-sso","repository":{"type":"git","url":"https://github.com/aws/aws-sdk-js-v3.git","directory":"clients/client-sso"}}'); /***/ }), @@ -88150,7 +88813,7 @@ module.exports = /*#__PURE__*/JSON.parse('{"name":"@aws-sdk/client-sso","descrip /***/ ((module) => { "use strict"; -module.exports = /*#__PURE__*/JSON.parse('{"name":"@aws-sdk/client-sts","description":"AWS SDK for JavaScript Sts Client for Node.js, Browser and React Native","version":"3.658.1","scripts":{"build":"concurrently \'yarn:build:cjs\' \'yarn:build:es\' \'yarn:build:types\'","build:cjs":"node ../../scripts/compilation/inline client-sts","build:es":"tsc -p tsconfig.es.json","build:include:deps":"lerna run --scope $npm_package_name --include-dependencies build","build:types":"rimraf ./dist-types tsconfig.types.tsbuildinfo && tsc -p tsconfig.types.json","build:types:downlevel":"downlevel-dts dist-types dist-types/ts3.4","clean":"rimraf ./dist-* && rimraf *.tsbuildinfo","extract:docs":"api-extractor run --local","generate:client":"node ../../scripts/generate-clients/single-service --solo sts","test":"yarn test:unit","test:unit":"jest"},"main":"./dist-cjs/index.js","types":"./dist-types/index.d.ts","module":"./dist-es/index.js","sideEffects":false,"dependencies":{"@aws-crypto/sha256-browser":"5.2.0","@aws-crypto/sha256-js":"5.2.0","@aws-sdk/client-sso-oidc":"3.658.1","@aws-sdk/core":"3.658.1","@aws-sdk/credential-provider-node":"3.658.1","@aws-sdk/middleware-host-header":"3.654.0","@aws-sdk/middleware-logger":"3.654.0","@aws-sdk/middleware-recursion-detection":"3.654.0","@aws-sdk/middleware-user-agent":"3.654.0","@aws-sdk/region-config-resolver":"3.654.0","@aws-sdk/types":"3.654.0","@aws-sdk/util-endpoints":"3.654.0","@aws-sdk/util-user-agent-browser":"3.654.0","@aws-sdk/util-user-agent-node":"3.654.0","@smithy/config-resolver":"^3.0.8","@smithy/core":"^2.4.6","@smithy/fetch-http-handler":"^3.2.8","@smithy/hash-node":"^3.0.6","@smithy/invalid-dependency":"^3.0.6","@smithy/middleware-content-length":"^3.0.8","@smithy/middleware-endpoint":"^3.1.3","@smithy/middleware-retry":"^3.0.21","@smithy/middleware-serde":"^3.0.6","@smithy/middleware-stack":"^3.0.6","@smithy/node-config-provider":"^3.1.7","@smithy/node-http-handler":"^3.2.3","@smithy/protocol-http":"^4.1.3","@smithy/smithy-client":"^3.3.5","@smithy/types":"^3.4.2","@smithy/url-parser":"^3.0.6","@smithy/util-base64":"^3.0.0","@smithy/util-body-length-browser":"^3.0.0","@smithy/util-body-length-node":"^3.0.0","@smithy/util-defaults-mode-browser":"^3.0.21","@smithy/util-defaults-mode-node":"^3.0.21","@smithy/util-endpoints":"^2.1.2","@smithy/util-middleware":"^3.0.6","@smithy/util-retry":"^3.0.6","@smithy/util-utf8":"^3.0.0","tslib":"^2.6.2"},"devDependencies":{"@tsconfig/node16":"16.1.3","@types/node":"^16.18.96","concurrently":"7.0.0","downlevel-dts":"0.10.1","rimraf":"3.0.2","typescript":"~4.9.5"},"engines":{"node":">=16.0.0"},"typesVersions":{"<4.0":{"dist-types/*":["dist-types/ts3.4/*"]}},"files":["dist-*/**"],"author":{"name":"AWS SDK for JavaScript Team","url":"https://aws.amazon.com/javascript/"},"license":"Apache-2.0","browser":{"./dist-es/runtimeConfig":"./dist-es/runtimeConfig.browser"},"react-native":{"./dist-es/runtimeConfig":"./dist-es/runtimeConfig.native"},"homepage":"https://github.com/aws/aws-sdk-js-v3/tree/main/clients/client-sts","repository":{"type":"git","url":"https://github.com/aws/aws-sdk-js-v3.git","directory":"clients/client-sts"}}'); +module.exports = /*#__PURE__*/JSON.parse('{"name":"@aws-sdk/client-sts","description":"AWS SDK for JavaScript Sts Client for Node.js, Browser and React Native","version":"3.665.0","scripts":{"build":"concurrently \'yarn:build:cjs\' \'yarn:build:es\' \'yarn:build:types\'","build:cjs":"node ../../scripts/compilation/inline client-sts","build:es":"tsc -p tsconfig.es.json","build:include:deps":"lerna run --scope $npm_package_name --include-dependencies build","build:types":"rimraf ./dist-types tsconfig.types.tsbuildinfo && tsc -p tsconfig.types.json","build:types:downlevel":"downlevel-dts dist-types dist-types/ts3.4","clean":"rimraf ./dist-* && rimraf *.tsbuildinfo","extract:docs":"api-extractor run --local","generate:client":"node ../../scripts/generate-clients/single-service --solo sts","test":"yarn test:unit","test:unit":"jest"},"main":"./dist-cjs/index.js","types":"./dist-types/index.d.ts","module":"./dist-es/index.js","sideEffects":false,"dependencies":{"@aws-crypto/sha256-browser":"5.2.0","@aws-crypto/sha256-js":"5.2.0","@aws-sdk/client-sso-oidc":"3.665.0","@aws-sdk/core":"3.665.0","@aws-sdk/credential-provider-node":"3.665.0","@aws-sdk/middleware-host-header":"3.664.0","@aws-sdk/middleware-logger":"3.664.0","@aws-sdk/middleware-recursion-detection":"3.664.0","@aws-sdk/middleware-user-agent":"3.664.0","@aws-sdk/region-config-resolver":"3.664.0","@aws-sdk/types":"3.664.0","@aws-sdk/util-endpoints":"3.664.0","@aws-sdk/util-user-agent-browser":"3.664.0","@aws-sdk/util-user-agent-node":"3.664.0","@smithy/config-resolver":"^3.0.9","@smithy/core":"^2.4.7","@smithy/fetch-http-handler":"^3.2.9","@smithy/hash-node":"^3.0.7","@smithy/invalid-dependency":"^3.0.7","@smithy/middleware-content-length":"^3.0.9","@smithy/middleware-endpoint":"^3.1.4","@smithy/middleware-retry":"^3.0.22","@smithy/middleware-serde":"^3.0.7","@smithy/middleware-stack":"^3.0.7","@smithy/node-config-provider":"^3.1.8","@smithy/node-http-handler":"^3.2.4","@smithy/protocol-http":"^4.1.4","@smithy/smithy-client":"^3.3.6","@smithy/types":"^3.5.0","@smithy/url-parser":"^3.0.7","@smithy/util-base64":"^3.0.0","@smithy/util-body-length-browser":"^3.0.0","@smithy/util-body-length-node":"^3.0.0","@smithy/util-defaults-mode-browser":"^3.0.22","@smithy/util-defaults-mode-node":"^3.0.22","@smithy/util-endpoints":"^2.1.3","@smithy/util-middleware":"^3.0.7","@smithy/util-retry":"^3.0.7","@smithy/util-utf8":"^3.0.0","tslib":"^2.6.2"},"devDependencies":{"@tsconfig/node16":"16.1.3","@types/node":"^16.18.96","concurrently":"7.0.0","downlevel-dts":"0.10.1","rimraf":"3.0.2","typescript":"~4.9.5"},"engines":{"node":">=16.0.0"},"typesVersions":{"<4.0":{"dist-types/*":["dist-types/ts3.4/*"]}},"files":["dist-*/**"],"author":{"name":"AWS SDK for JavaScript Team","url":"https://aws.amazon.com/javascript/"},"license":"Apache-2.0","browser":{"./dist-es/runtimeConfig":"./dist-es/runtimeConfig.browser"},"react-native":{"./dist-es/runtimeConfig":"./dist-es/runtimeConfig.native"},"homepage":"https://github.com/aws/aws-sdk-js-v3/tree/main/clients/client-sts","repository":{"type":"git","url":"https://github.com/aws/aws-sdk-js-v3.git","directory":"clients/client-sts"}}'); /***/ }) diff --git a/dist/index.js.map b/dist/index.js.map index 58fe9ac..41d25f5 100644 --- a/dist/index.js.map +++ b/dist/index.js.map @@ -1 +1 @@ -{"version":3,"file":"index.js","mappings":";;;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC9EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AChIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACvEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACpLA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC9BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC7PA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC3FA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC/UA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACzDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC5EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACzDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC1RA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACvCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACtDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACxCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACrEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC1DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AChFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC3oBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC9FA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AClDA;AACA;AACA;;;;;;;;ACFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACjGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACpBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACjCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC7BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACnQA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACj9BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACrYA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACdA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC1EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC/UA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC5IA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACziBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC7SA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACLA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACnDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC3DA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACNA;AACA;AACA;;;;;;;;ACFA;AACA;AACA;AACA;AACA;;;;;;;;ACJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AChEA;AACA;AACA;;;;;;;;ACFA;AACA;AACA;;;;;;;;ACFA;AACA;AACA;;;;;;;;ACFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AClBA;AACA;AACA;;;;;;;;ACFA;AACA;AACA;;;;;;;;ACFA;AACA;AACA;;;;;;;;ACFA;AACA;AACA;;;;;;;;ACFA;AACA;AACA;;;;;;;;ACFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACfA;AACA;AACA;;;;;;;;ACFA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACLA;AACA;AACA;;;;;;;;ACFA;AACA;AACA;;;;;;;;ACFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACTA;AACA;AACA;;;;;;;;ACFA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACLA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACxFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AClCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACtBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACvCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACdA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACxNA;AACA;AACA;AACA;;;;;;;;ACHA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACNA;AACA;AACA;AACA;;;;;;;;ACHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACxBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACvBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC5DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC/EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC9CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACtPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACpNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC3FA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACdA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACzHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACjfA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACxMA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC9CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC5GA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACnbA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AChaA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC7CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AChCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC7QA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACvBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AClGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC/FA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC9EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC9DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACrBA;AACA;AACA;;;;;;;;ACFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AClFA;AACA;AACA;;;;;;;;ACFA;AACA;AACA;;;;;;;;ACFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACnTA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC5BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC9CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACjBA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA2NA;;;;;;;;;ACr6WA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AChDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACjCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC9EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACtBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACdA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC5CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACvBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACtBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC3CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC1GA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACfA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC/EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC1CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACfA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AChBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACpBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACnEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACjBA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAuDA;;;;;;;;;ACtgDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AChDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACvCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC/DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACjBA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA+BA;;;;;;;;;AC3hCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AChDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACvCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACnEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACjBA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAuBA;;;;;;;;;AClmBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC9CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACvCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACjDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC1CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AClEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACnBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACjBA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAkCA;;;;;;;;;ACz6CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC9DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACvCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACxBA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACLA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC5CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AChSA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACxNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAIA;;;;;;;;;AC/RA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AASA;;;;;;;;;ACzEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC7CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AClEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACrDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AChBA;AACA;AACA;AACA;AACA;;;;;;;;;ACJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAGA;;;;;;;;;ACtPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAKA;;;;;;;;;ACzJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAGA;;;;;;;;;AC1GA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAKA;;;;;;;;;ACzOA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC1BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AChDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAIA;;;;;;;;;AC3BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACxBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACRA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACLA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACPA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACLA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AChEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AClBA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACLA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAMA;;;;;;;;;ACtEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAKA;;;;;;;;;AC/EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAKA;;;;;;;;;ACnEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAMA;;;;;;;;;AC1HA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AASA;;;;;;;;;ACnHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAKA;;;;;;;;;AChNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAUA;;;;;;;;;AChaA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAMA;;;;;;;;;AC9FA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACrKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACpHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACpBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AChEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC9GA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC1DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC5EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AChKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACvXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACrJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACxYA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACjnEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACzFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC7NA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAkBA;;;;;;;;AC1OA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAwBA;;;;;;;;AC9eA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAYA;;;;;;;;ACpJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAaA;;;;;;;;AC7bA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAKA;;;;;;;;AC9PA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAGA;;;;;;;;ACjEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAGA;;;;;;;;AC/BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAKA;;;;;;;;;ACtEA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AClCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AASA;;;;;;;;AClRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAoBA;;;;;;;;;ACxaA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC9EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACtBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACdA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC5CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACvBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACtBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC3CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC1GA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACfA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC/EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC1CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACfA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AChBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACpBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAOA;;;;;;;;ACrGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAGA;;;;;;;;AChUA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAGA;;;;;;;;ACxGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAMA;;;;;;;;ACpxBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAQA;;;;;;;;ACvKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AASA;;;;;;;;AClQA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAYA;;;;;;;;ACpJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAGA;;;;;;;;ACnDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAGA;;;;;;;;ACpDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAQA;;;;;;;;;ACjGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACzBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAYA;;;;;;;;;AC7MA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAYA;;;;;;;;ACpJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAWA;;;;;;;;AC9jBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA8DA;;;;;;;;ACrwCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAYA;;;;;;;;ACpJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAGA;;;;;;;;;AChDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACfA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAIA;;;;;;;;;AC1BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AClBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAGA;;;;;;;;ACpDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAIA;;;;;;;;AC9CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAKA;;;;;;;;AC/DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAGA;;;;;;;;ACtHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAQA;;;;;;;;ACjiBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAYA;;;;;;;;ACpJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAIA;;;;;;;;AClEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAIA;;;;;;;;AC5CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAYA;;;;;;;;ACpJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAkBA;;;;;;;;;AC3VA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC7BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACnCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC7CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAQA;;;;;;;;;AC9FA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACpEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACvDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AChBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAIA;;;;;;;;AC1CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAKA;;;;;;;;AChEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAMA;;;;;;;;;AC/JA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;ACTA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AClKA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACLA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC5DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC7CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC1BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AClBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACpOA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACrIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACtCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACt0BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AChFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AChGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACvJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACnBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC/BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACzCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC5CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACrWA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACpCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACxCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AClKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC7FA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACxCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC3GA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACzOA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC7OA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACnRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACpmBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACtKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC9DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC/BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACxDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACvBA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACLA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC7CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACvEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACxaA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACxRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACtIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACvJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC/CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACxlBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACzDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AChHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACxBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AChKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AChLA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACtCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACjEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACtBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC/DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACpGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACjCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AClEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC3IA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACfA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACfA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACbA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC1BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACpBA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACtDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC1DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC9BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AChBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC7JA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACnCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACtBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC/bA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACrHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AClWA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACjDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACvFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACbA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACvnBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACzCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACtGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC9CA;AACA;AACA;AACA;;;;;;;;ACHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC3HA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACtIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC/CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC3DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACnBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACnCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACTA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACzCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACzBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACzEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACzMA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AClDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACxBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC9BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACroFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACxGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACpBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC5BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACjBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC1CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC7DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACnDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACtBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC9FA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC/BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACvBA;AACA;AACA;;;;;;;;ACFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACrIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC1BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC7CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC/BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AChCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC1BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACzCA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC5aA;;;;;;;;;ACAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACvQA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACtKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACnJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACrDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACvGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACxPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACnLA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC3NA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACxGA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACjUA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC7CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC7LA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACr0BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC/IA;AACA;AACA;AACA;AACA;;;;;;;;;ACJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AChDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC1uEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC/CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACvLA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC5TA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AClSA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC5LA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACrHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACrOA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AClfA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC9DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACzgBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC/LA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AClBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC5lBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACtJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AClnBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACvVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACxQA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACvCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC5kBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACnmEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACj7BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC1jBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACTA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACvnCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACroBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACjSA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACvVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC7EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACTA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACvYA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC/BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AClCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC5NA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC/UA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACpBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACrRA;;;;;;;;ACAA;;;;;;;;;ACAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACdA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC1KA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC1DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AChBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC7MA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC1DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACtBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC9VA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACvCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC5BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACpHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACjMA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACjCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC7FA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC5LA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AChGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AClSA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AClDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC9SA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACxEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACvVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACvMA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AChoBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACjBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACvBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC9EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACtBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC5CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACvBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACtBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACtCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC1GA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACfA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC7EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACpCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACfA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AChBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACpBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AChCA;;;;;;;;ACAA;;;;;;;;ACAA;;;;;;;;ACAA;;;;;;;;ACAA;;;;;;;;ACAA;;;;;;;;ACAA;;;;;;;;ACAA;;;;;;;;ACAA;;;;;;;;ACAA;;;;;;;;ACAA;;;;;;;;ACAA;;;;;;;;ACAA;;;;;;;;ACAA;;;;;;;;ACAA;;;;;;;;ACAA;;;;;;;;ACAA;;;;;;;;ACAA;;;;;;;;ACAA;;;;;;;;ACAA;;;;;;;;ACAA;;;;;;;;ACAA;;;;;;;;ACAA;;;;;;;;ACAA;;;;;;;;ACAA;;;;;;;;ACAA;;;;;;;;ACAA;;;;;;;;ACAA;;;;;;;;ACAA;;;;;;;;ACAA;;;;;;;;ACAA;;;;;;;;ACAA;;;;;;;;ACAA;;;;;;;;ACAA;;;;;;;;ACAA;;;;;;;;ACAA;;;;;;;;ACAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACpNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACnGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACnOA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACpFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACjTA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC7LA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACrDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACbA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACjHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACfA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACnMA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;AChCA;AACA;AACA;AACA;AACA;;;;ACJA;AACA;;;;AEDA;AACA;AACA;AACA","sources":[".././lib/action.js",".././lib/assembly.js",".././lib/comment.js",".././lib/diff.js",".././lib/index.js",".././lib/stage-processor.js",".././node_modules/@actions/core/lib/command.js",".././node_modules/@actions/core/lib/core.js",".././node_modules/@actions/core/lib/file-command.js",".././node_modules/@actions/core/lib/oidc-utils.js",".././node_modules/@actions/core/lib/path-utils.js",".././node_modules/@actions/core/lib/summary.js",".././node_modules/@actions/core/lib/utils.js",".././node_modules/@actions/github/lib/context.js",".././node_modules/@actions/github/lib/github.js",".././node_modules/@actions/github/lib/internal/utils.js",".././node_modules/@actions/github/lib/utils.js",".././node_modules/@actions/http-client/lib/auth.js",".././node_modules/@actions/http-client/lib/index.js",".././node_modules/@actions/http-client/lib/proxy.js",".././node_modules/@aws-cdk/aws-service-spec/lib/index.js",".././node_modules/@aws-cdk/cloud-assembly-schema/lib/cloud-assembly/artifact-schema.js",".././node_modules/@aws-cdk/cloud-assembly-schema/lib/cloud-assembly/context-queries.js",".././node_modules/@aws-cdk/cloud-assembly-schema/lib/cloud-assembly/index.js",".././node_modules/@aws-cdk/cloud-assembly-schema/lib/cloud-assembly/metadata-schema.js",".././node_modules/@aws-cdk/cloud-assembly-schema/lib/cloud-assembly/schema.js",".././node_modules/@aws-cdk/cloud-assembly-schema/lib/manifest.js",".././node_modules/@aws-cdk/cloud-assembly-schema/node_modules/jsonschema/lib/attribute.js",".././node_modules/@aws-cdk/cloud-assembly-schema/node_modules/jsonschema/lib/helpers.js",".././node_modules/@aws-cdk/cloud-assembly-schema/node_modules/jsonschema/lib/index.js",".././node_modules/@aws-cdk/cloud-assembly-schema/node_modules/jsonschema/lib/scan.js",".././node_modules/@aws-cdk/cloud-assembly-schema/node_modules/jsonschema/lib/validator.js",".././node_modules/@aws-cdk/cloud-assembly-schema/node_modules/semver/classes/comparator.js",".././node_modules/@aws-cdk/cloud-assembly-schema/node_modules/semver/classes/range.js",".././node_modules/@aws-cdk/cloud-assembly-schema/node_modules/semver/classes/semver.js",".././node_modules/@aws-cdk/cloud-assembly-schema/node_modules/semver/functions/clean.js",".././node_modules/@aws-cdk/cloud-assembly-schema/node_modules/semver/functions/cmp.js",".././node_modules/@aws-cdk/cloud-assembly-schema/node_modules/semver/functions/coerce.js",".././node_modules/@aws-cdk/cloud-assembly-schema/node_modules/semver/functions/compare-build.js",".././node_modules/@aws-cdk/cloud-assembly-schema/node_modules/semver/functions/compare-loose.js",".././node_modules/@aws-cdk/cloud-assembly-schema/node_modules/semver/functions/compare.js",".././node_modules/@aws-cdk/cloud-assembly-schema/node_modules/semver/functions/diff.js",".././node_modules/@aws-cdk/cloud-assembly-schema/node_modules/semver/functions/eq.js",".././node_modules/@aws-cdk/cloud-assembly-schema/node_modules/semver/functions/gt.js",".././node_modules/@aws-cdk/cloud-assembly-schema/node_modules/semver/functions/gte.js",".././node_modules/@aws-cdk/cloud-assembly-schema/node_modules/semver/functions/inc.js",".././node_modules/@aws-cdk/cloud-assembly-schema/node_modules/semver/functions/lt.js",".././node_modules/@aws-cdk/cloud-assembly-schema/node_modules/semver/functions/lte.js",".././node_modules/@aws-cdk/cloud-assembly-schema/node_modules/semver/functions/major.js",".././node_modules/@aws-cdk/cloud-assembly-schema/node_modules/semver/functions/minor.js",".././node_modules/@aws-cdk/cloud-assembly-schema/node_modules/semver/functions/neq.js",".././node_modules/@aws-cdk/cloud-assembly-schema/node_modules/semver/functions/parse.js",".././node_modules/@aws-cdk/cloud-assembly-schema/node_modules/semver/functions/patch.js",".././node_modules/@aws-cdk/cloud-assembly-schema/node_modules/semver/functions/prerelease.js",".././node_modules/@aws-cdk/cloud-assembly-schema/node_modules/semver/functions/rcompare.js",".././node_modules/@aws-cdk/cloud-assembly-schema/node_modules/semver/functions/rsort.js",".././node_modules/@aws-cdk/cloud-assembly-schema/node_modules/semver/functions/satisfies.js",".././node_modules/@aws-cdk/cloud-assembly-schema/node_modules/semver/functions/sort.js",".././node_modules/@aws-cdk/cloud-assembly-schema/node_modules/semver/functions/valid.js",".././node_modules/@aws-cdk/cloud-assembly-schema/node_modules/semver/index.js",".././node_modules/@aws-cdk/cloud-assembly-schema/node_modules/semver/internal/constants.js",".././node_modules/@aws-cdk/cloud-assembly-schema/node_modules/semver/internal/debug.js",".././node_modules/@aws-cdk/cloud-assembly-schema/node_modules/semver/internal/identifiers.js",".././node_modules/@aws-cdk/cloud-assembly-schema/node_modules/semver/internal/lrucache.js",".././node_modules/@aws-cdk/cloud-assembly-schema/node_modules/semver/internal/parse-options.js",".././node_modules/@aws-cdk/cloud-assembly-schema/node_modules/semver/internal/re.js",".././node_modules/@aws-cdk/cloud-assembly-schema/node_modules/semver/ranges/gtr.js",".././node_modules/@aws-cdk/cloud-assembly-schema/node_modules/semver/ranges/intersects.js",".././node_modules/@aws-cdk/cloud-assembly-schema/node_modules/semver/ranges/ltr.js",".././node_modules/@aws-cdk/cloud-assembly-schema/node_modules/semver/ranges/max-satisfying.js",".././node_modules/@aws-cdk/cloud-assembly-schema/node_modules/semver/ranges/min-satisfying.js",".././node_modules/@aws-cdk/cloud-assembly-schema/node_modules/semver/ranges/min-version.js",".././node_modules/@aws-cdk/cloud-assembly-schema/node_modules/semver/ranges/outside.js",".././node_modules/@aws-cdk/cloud-assembly-schema/node_modules/semver/ranges/simplify.js",".././node_modules/@aws-cdk/cloud-assembly-schema/node_modules/semver/ranges/subset.js",".././node_modules/@aws-cdk/cloud-assembly-schema/node_modules/semver/ranges/to-comparators.js",".././node_modules/@aws-cdk/cloud-assembly-schema/node_modules/semver/ranges/valid.js",".././node_modules/@aws-cdk/cloudformation-diff/lib/diff-template.js",".././node_modules/@aws-cdk/cloudformation-diff/lib/diff/index.js",".././node_modules/@aws-cdk/cloudformation-diff/lib/diff/maybe-parsed.js",".././node_modules/@aws-cdk/cloudformation-diff/lib/diff/template-and-changeset-diff-merger.js",".././node_modules/@aws-cdk/cloudformation-diff/lib/diff/types.js",".././node_modules/@aws-cdk/cloudformation-diff/lib/diff/util.js",".././node_modules/@aws-cdk/cloudformation-diff/lib/diffable.js",".././node_modules/@aws-cdk/cloudformation-diff/lib/format-table.js",".././node_modules/@aws-cdk/cloudformation-diff/lib/format.js",".././node_modules/@aws-cdk/cloudformation-diff/lib/iam/iam-changes.js",".././node_modules/@aws-cdk/cloudformation-diff/lib/iam/iam-identity-center.js",".././node_modules/@aws-cdk/cloudformation-diff/lib/iam/managed-policy.js",".././node_modules/@aws-cdk/cloudformation-diff/lib/iam/statement.js",".././node_modules/@aws-cdk/cloudformation-diff/lib/index.js",".././node_modules/@aws-cdk/cloudformation-diff/lib/network/security-group-changes.js",".././node_modules/@aws-cdk/cloudformation-diff/lib/network/security-group-rule.js",".././node_modules/@aws-cdk/cloudformation-diff/lib/render-intrinsics.js",".././node_modules/@aws-cdk/cloudformation-diff/lib/util.js",".././node_modules/@aws-cdk/service-spec-types/lib/index.js",".././node_modules/@aws-cdk/service-spec-types/lib/types/augmentations.js",".././node_modules/@aws-cdk/service-spec-types/lib/types/database.js",".././node_modules/@aws-cdk/service-spec-types/lib/types/diff.js",".././node_modules/@aws-cdk/service-spec-types/lib/types/metrics.js",".././node_modules/@aws-cdk/service-spec-types/lib/types/resource.js",".././node_modules/@aws-cdk/service-spec-types/lib/util/sorting.js",".././node_modules/@aws-sdk/client-cloudformation/dist-cjs/auth/httpAuthSchemeProvider.js",".././node_modules/@aws-sdk/client-cloudformation/dist-cjs/endpoint/endpointResolver.js",".././node_modules/@aws-sdk/client-cloudformation/dist-cjs/endpoint/ruleset.js",".././node_modules/@aws-sdk/client-cloudformation/dist-cjs/index.js",".././node_modules/@aws-sdk/client-cloudformation/dist-cjs/runtimeConfig.js",".././node_modules/@aws-sdk/client-cloudformation/dist-cjs/runtimeConfig.shared.js",".././node_modules/@aws-sdk/client-cloudformation/node_modules/uuid/dist/index.js",".././node_modules/@aws-sdk/client-cloudformation/node_modules/uuid/dist/md5.js",".././node_modules/@aws-sdk/client-cloudformation/node_modules/uuid/dist/native.js",".././node_modules/@aws-sdk/client-cloudformation/node_modules/uuid/dist/nil.js",".././node_modules/@aws-sdk/client-cloudformation/node_modules/uuid/dist/parse.js",".././node_modules/@aws-sdk/client-cloudformation/node_modules/uuid/dist/regex.js",".././node_modules/@aws-sdk/client-cloudformation/node_modules/uuid/dist/rng.js",".././node_modules/@aws-sdk/client-cloudformation/node_modules/uuid/dist/sha1.js",".././node_modules/@aws-sdk/client-cloudformation/node_modules/uuid/dist/stringify.js",".././node_modules/@aws-sdk/client-cloudformation/node_modules/uuid/dist/v1.js",".././node_modules/@aws-sdk/client-cloudformation/node_modules/uuid/dist/v3.js",".././node_modules/@aws-sdk/client-cloudformation/node_modules/uuid/dist/v35.js",".././node_modules/@aws-sdk/client-cloudformation/node_modules/uuid/dist/v4.js",".././node_modules/@aws-sdk/client-cloudformation/node_modules/uuid/dist/v5.js",".././node_modules/@aws-sdk/client-cloudformation/node_modules/uuid/dist/validate.js",".././node_modules/@aws-sdk/client-cloudformation/node_modules/uuid/dist/version.js",".././node_modules/@aws-sdk/client-cognito-identity/dist-cjs/auth/httpAuthSchemeProvider.js",".././node_modules/@aws-sdk/client-cognito-identity/dist-cjs/endpoint/endpointResolver.js",".././node_modules/@aws-sdk/client-cognito-identity/dist-cjs/endpoint/ruleset.js",".././node_modules/@aws-sdk/client-cognito-identity/dist-cjs/index.js",".././node_modules/@aws-sdk/client-cognito-identity/dist-cjs/runtimeConfig.js",".././node_modules/@aws-sdk/client-cognito-identity/dist-cjs/runtimeConfig.shared.js",".././node_modules/@aws-sdk/client-sso-oidc/dist-cjs/auth/httpAuthSchemeProvider.js",".././node_modules/@aws-sdk/client-sso-oidc/dist-cjs/endpoint/endpointResolver.js",".././node_modules/@aws-sdk/client-sso-oidc/dist-cjs/endpoint/ruleset.js",".././node_modules/@aws-sdk/client-sso-oidc/dist-cjs/index.js",".././node_modules/@aws-sdk/client-sso-oidc/dist-cjs/runtimeConfig.js",".././node_modules/@aws-sdk/client-sso-oidc/dist-cjs/runtimeConfig.shared.js",".././node_modules/@aws-sdk/client-sso/dist-cjs/auth/httpAuthSchemeProvider.js",".././node_modules/@aws-sdk/client-sso/dist-cjs/endpoint/endpointResolver.js",".././node_modules/@aws-sdk/client-sso/dist-cjs/endpoint/ruleset.js",".././node_modules/@aws-sdk/client-sso/dist-cjs/index.js",".././node_modules/@aws-sdk/client-sso/dist-cjs/runtimeConfig.js",".././node_modules/@aws-sdk/client-sso/dist-cjs/runtimeConfig.shared.js",".././node_modules/@aws-sdk/client-sts/dist-cjs/STSClient.js",".././node_modules/@aws-sdk/client-sts/dist-cjs/auth/httpAuthExtensionConfiguration.js",".././node_modules/@aws-sdk/client-sts/dist-cjs/auth/httpAuthSchemeProvider.js",".././node_modules/@aws-sdk/client-sts/dist-cjs/endpoint/EndpointParameters.js",".././node_modules/@aws-sdk/client-sts/dist-cjs/endpoint/endpointResolver.js",".././node_modules/@aws-sdk/client-sts/dist-cjs/endpoint/ruleset.js",".././node_modules/@aws-sdk/client-sts/dist-cjs/index.js",".././node_modules/@aws-sdk/client-sts/dist-cjs/runtimeConfig.js",".././node_modules/@aws-sdk/client-sts/dist-cjs/runtimeConfig.shared.js",".././node_modules/@aws-sdk/client-sts/dist-cjs/runtimeExtensions.js",".././node_modules/@aws-sdk/core/dist-cjs/index.js",".././node_modules/@aws-sdk/core/dist-cjs/submodules/client/index.js",".././node_modules/@aws-sdk/core/dist-cjs/submodules/httpAuthSchemes/index.js",".././node_modules/@aws-sdk/core/dist-cjs/submodules/protocols/index.js",".././node_modules/@aws-sdk/credential-provider-cognito-identity/dist-cjs/index.js",".././node_modules/@aws-sdk/credential-provider-env/dist-cjs/index.js",".././node_modules/@aws-sdk/credential-provider-http/dist-cjs/fromHttp/checkUrl.js",".././node_modules/@aws-sdk/credential-provider-http/dist-cjs/fromHttp/fromHttp.js",".././node_modules/@aws-sdk/credential-provider-http/dist-cjs/fromHttp/requestHelpers.js",".././node_modules/@aws-sdk/credential-provider-http/dist-cjs/fromHttp/retry-wrapper.js",".././node_modules/@aws-sdk/credential-provider-http/dist-cjs/index.js",".././node_modules/@aws-sdk/credential-provider-ini/dist-cjs/index.js",".././node_modules/@aws-sdk/credential-provider-node/dist-cjs/index.js",".././node_modules/@aws-sdk/credential-provider-process/dist-cjs/index.js",".././node_modules/@aws-sdk/credential-provider-sso/dist-cjs/index.js",".././node_modules/@aws-sdk/credential-provider-web-identity/dist-cjs/fromTokenFile.js",".././node_modules/@aws-sdk/credential-provider-web-identity/dist-cjs/fromWebToken.js",".././node_modules/@aws-sdk/credential-provider-web-identity/dist-cjs/index.js",".././node_modules/@aws-sdk/credential-providers/dist-cjs/createCredentialChain.js",".././node_modules/@aws-sdk/credential-providers/dist-cjs/fromCognitoIdentity.js",".././node_modules/@aws-sdk/credential-providers/dist-cjs/fromCognitoIdentityPool.js",".././node_modules/@aws-sdk/credential-providers/dist-cjs/fromContainerMetadata.js",".././node_modules/@aws-sdk/credential-providers/dist-cjs/fromEnv.js",".././node_modules/@aws-sdk/credential-providers/dist-cjs/fromIni.js",".././node_modules/@aws-sdk/credential-providers/dist-cjs/fromInstanceMetadata.js",".././node_modules/@aws-sdk/credential-providers/dist-cjs/fromNodeProviderChain.js",".././node_modules/@aws-sdk/credential-providers/dist-cjs/fromProcess.js",".././node_modules/@aws-sdk/credential-providers/dist-cjs/fromSSO.js",".././node_modules/@aws-sdk/credential-providers/dist-cjs/fromTemporaryCredentials.js",".././node_modules/@aws-sdk/credential-providers/dist-cjs/fromTokenFile.js",".././node_modules/@aws-sdk/credential-providers/dist-cjs/fromWebToken.js",".././node_modules/@aws-sdk/credential-providers/dist-cjs/index.js",".././node_modules/@aws-sdk/credential-providers/dist-cjs/loadSts.js",".././node_modules/@aws-sdk/middleware-host-header/dist-cjs/index.js",".././node_modules/@aws-sdk/middleware-logger/dist-cjs/index.js",".././node_modules/@aws-sdk/middleware-recursion-detection/dist-cjs/index.js",".././node_modules/@aws-sdk/middleware-user-agent/dist-cjs/index.js",".././node_modules/@aws-sdk/region-config-resolver/dist-cjs/index.js",".././node_modules/@aws-sdk/token-providers/dist-cjs/index.js",".././node_modules/@aws-sdk/util-endpoints/dist-cjs/index.js",".././node_modules/@aws-sdk/util-user-agent-node/dist-cjs/index.js",".././node_modules/@cdklabs/tskb/lib/database.js",".././node_modules/@cdklabs/tskb/lib/entity.js",".././node_modules/@cdklabs/tskb/lib/index.js",".././node_modules/@cdklabs/tskb/lib/invariant.js",".././node_modules/@cdklabs/tskb/lib/relationship.js",".././node_modules/@cdklabs/tskb/lib/result.js",".././node_modules/@cdklabs/tskb/lib/sorted-map.js",".././node_modules/@octokit/auth-token/dist-node/index.js",".././node_modules/@octokit/core/dist-node/index.js",".././node_modules/@octokit/endpoint/dist-node/index.js",".././node_modules/@octokit/graphql/dist-node/index.js",".././node_modules/@octokit/plugin-paginate-rest/dist-node/index.js",".././node_modules/@octokit/plugin-rest-endpoint-methods/dist-node/index.js",".././node_modules/@octokit/request-error/dist-node/index.js",".././node_modules/@octokit/request/dist-node/index.js",".././node_modules/@smithy/config-resolver/dist-cjs/index.js",".././node_modules/@smithy/core/dist-cjs/index.js",".././node_modules/@smithy/core/node_modules/@smithy/types/dist-cjs/index.js",".././node_modules/@smithy/credential-provider-imds/dist-cjs/index.js",".././node_modules/@smithy/fetch-http-handler/dist-cjs/index.js",".././node_modules/@smithy/hash-node/dist-cjs/index.js",".././node_modules/@smithy/is-array-buffer/dist-cjs/index.js",".././node_modules/@smithy/middleware-content-length/dist-cjs/index.js",".././node_modules/@smithy/middleware-endpoint/dist-cjs/adaptors/getEndpointFromConfig.js",".././node_modules/@smithy/middleware-endpoint/dist-cjs/adaptors/getEndpointUrlConfig.js",".././node_modules/@smithy/middleware-endpoint/dist-cjs/index.js",".././node_modules/@smithy/middleware-retry/dist-cjs/index.js",".././node_modules/@smithy/middleware-retry/dist-cjs/isStreamingPayload/isStreamingPayload.js",".././node_modules/@smithy/middleware-retry/node_modules/uuid/dist/index.js",".././node_modules/@smithy/middleware-retry/node_modules/uuid/dist/md5.js",".././node_modules/@smithy/middleware-retry/node_modules/uuid/dist/native.js",".././node_modules/@smithy/middleware-retry/node_modules/uuid/dist/nil.js",".././node_modules/@smithy/middleware-retry/node_modules/uuid/dist/parse.js",".././node_modules/@smithy/middleware-retry/node_modules/uuid/dist/regex.js",".././node_modules/@smithy/middleware-retry/node_modules/uuid/dist/rng.js",".././node_modules/@smithy/middleware-retry/node_modules/uuid/dist/sha1.js",".././node_modules/@smithy/middleware-retry/node_modules/uuid/dist/stringify.js",".././node_modules/@smithy/middleware-retry/node_modules/uuid/dist/v1.js",".././node_modules/@smithy/middleware-retry/node_modules/uuid/dist/v3.js",".././node_modules/@smithy/middleware-retry/node_modules/uuid/dist/v35.js",".././node_modules/@smithy/middleware-retry/node_modules/uuid/dist/v4.js",".././node_modules/@smithy/middleware-retry/node_modules/uuid/dist/v5.js",".././node_modules/@smithy/middleware-retry/node_modules/uuid/dist/validate.js",".././node_modules/@smithy/middleware-retry/node_modules/uuid/dist/version.js",".././node_modules/@smithy/middleware-serde/dist-cjs/index.js",".././node_modules/@smithy/middleware-stack/dist-cjs/index.js",".././node_modules/@smithy/node-config-provider/dist-cjs/index.js",".././node_modules/@smithy/node-http-handler/dist-cjs/index.js",".././node_modules/@smithy/property-provider/dist-cjs/index.js",".././node_modules/@smithy/protocol-http/dist-cjs/index.js",".././node_modules/@smithy/protocol-http/node_modules/@smithy/types/dist-cjs/index.js",".././node_modules/@smithy/querystring-builder/dist-cjs/index.js",".././node_modules/@smithy/querystring-parser/dist-cjs/index.js",".././node_modules/@smithy/service-error-classification/dist-cjs/index.js",".././node_modules/@smithy/shared-ini-file-loader/dist-cjs/getHomeDir.js",".././node_modules/@smithy/shared-ini-file-loader/dist-cjs/getSSOTokenFilepath.js",".././node_modules/@smithy/shared-ini-file-loader/dist-cjs/getSSOTokenFromFile.js",".././node_modules/@smithy/shared-ini-file-loader/dist-cjs/index.js",".././node_modules/@smithy/shared-ini-file-loader/dist-cjs/slurpFile.js",".././node_modules/@smithy/shared-ini-file-loader/node_modules/@smithy/types/dist-cjs/index.js",".././node_modules/@smithy/signature-v4/dist-cjs/index.js",".././node_modules/@smithy/smithy-client/dist-cjs/index.js",".././node_modules/@smithy/smithy-client/node_modules/@smithy/types/dist-cjs/index.js",".././node_modules/@smithy/url-parser/dist-cjs/index.js",".././node_modules/@smithy/util-base64/dist-cjs/fromBase64.js",".././node_modules/@smithy/util-base64/dist-cjs/index.js",".././node_modules/@smithy/util-base64/dist-cjs/toBase64.js",".././node_modules/@smithy/util-body-length-node/dist-cjs/index.js",".././node_modules/@smithy/util-buffer-from/dist-cjs/index.js",".././node_modules/@smithy/util-config-provider/dist-cjs/index.js",".././node_modules/@smithy/util-defaults-mode-node/dist-cjs/index.js",".././node_modules/@smithy/util-endpoints/dist-cjs/index.js",".././node_modules/@smithy/util-endpoints/node_modules/@smithy/types/dist-cjs/index.js",".././node_modules/@smithy/util-hex-encoding/dist-cjs/index.js",".././node_modules/@smithy/util-middleware/dist-cjs/index.js",".././node_modules/@smithy/util-middleware/node_modules/@smithy/types/dist-cjs/index.js",".././node_modules/@smithy/util-retry/dist-cjs/index.js",".././node_modules/@smithy/util-stream/dist-cjs/getAwsChunkedEncodingStream.js",".././node_modules/@smithy/util-stream/dist-cjs/headStream.browser.js",".././node_modules/@smithy/util-stream/dist-cjs/headStream.js",".././node_modules/@smithy/util-stream/dist-cjs/index.js",".././node_modules/@smithy/util-stream/dist-cjs/sdk-stream-mixin.browser.js",".././node_modules/@smithy/util-stream/dist-cjs/sdk-stream-mixin.js",".././node_modules/@smithy/util-stream/dist-cjs/splitStream.browser.js",".././node_modules/@smithy/util-stream/dist-cjs/splitStream.js",".././node_modules/@smithy/util-stream/dist-cjs/stream-type-check.js",".././node_modules/@smithy/util-uri-escape/dist-cjs/index.js",".././node_modules/@smithy/util-utf8/dist-cjs/index.js",".././node_modules/@smithy/util-waiter/dist-cjs/index.js",".././node_modules/ansi-regex/index.js",".././node_modules/ansi-styles/index.js",".././node_modules/astral-regex/index.js",".././node_modules/before-after-hook/index.js",".././node_modules/before-after-hook/lib/add.js",".././node_modules/before-after-hook/lib/register.js",".././node_modules/before-after-hook/lib/remove.js",".././node_modules/chalk/source/index.js",".././node_modules/chalk/source/templates.js",".././node_modules/chalk/source/util.js",".././node_modules/color-convert/conversions.js",".././node_modules/color-convert/index.js",".././node_modules/color-convert/route.js",".././node_modules/color-name/index.js",".././node_modules/deprecation/dist-node/index.js",".././node_modules/diff/lib/convert/dmp.js",".././node_modules/diff/lib/convert/xml.js",".././node_modules/diff/lib/diff/array.js",".././node_modules/diff/lib/diff/base.js",".././node_modules/diff/lib/diff/character.js",".././node_modules/diff/lib/diff/css.js",".././node_modules/diff/lib/diff/json.js",".././node_modules/diff/lib/diff/line.js",".././node_modules/diff/lib/diff/sentence.js",".././node_modules/diff/lib/diff/word.js",".././node_modules/diff/lib/index.js",".././node_modules/diff/lib/patch/apply.js",".././node_modules/diff/lib/patch/create.js",".././node_modules/diff/lib/patch/merge.js",".././node_modules/diff/lib/patch/parse.js",".././node_modules/diff/lib/patch/reverse.js",".././node_modules/diff/lib/util/array.js",".././node_modules/diff/lib/util/distance-iterator.js",".././node_modules/diff/lib/util/params.js",".././node_modules/emoji-regex/index.js",".././node_modules/fast-deep-equal/index.js",".././node_modules/fast-xml-parser/src/fxp.js",".././node_modules/fast-xml-parser/src/util.js",".././node_modules/fast-xml-parser/src/validator.js",".././node_modules/fast-xml-parser/src/xmlbuilder/json2xml.js",".././node_modules/fast-xml-parser/src/xmlbuilder/orderedJs2Xml.js",".././node_modules/fast-xml-parser/src/xmlparser/DocTypeReader.js",".././node_modules/fast-xml-parser/src/xmlparser/OptionsBuilder.js",".././node_modules/fast-xml-parser/src/xmlparser/OrderedObjParser.js",".././node_modules/fast-xml-parser/src/xmlparser/XMLParser.js",".././node_modules/fast-xml-parser/src/xmlparser/node2json.js",".././node_modules/fast-xml-parser/src/xmlparser/xmlNode.js",".././node_modules/fs-extra/lib/copy/copy-sync.js",".././node_modules/fs-extra/lib/copy/copy.js",".././node_modules/fs-extra/lib/copy/index.js",".././node_modules/fs-extra/lib/empty/index.js",".././node_modules/fs-extra/lib/ensure/file.js",".././node_modules/fs-extra/lib/ensure/index.js",".././node_modules/fs-extra/lib/ensure/link.js",".././node_modules/fs-extra/lib/ensure/symlink-paths.js",".././node_modules/fs-extra/lib/ensure/symlink-type.js",".././node_modules/fs-extra/lib/ensure/symlink.js",".././node_modules/fs-extra/lib/fs/index.js",".././node_modules/fs-extra/lib/index.js",".././node_modules/fs-extra/lib/json/index.js",".././node_modules/fs-extra/lib/json/jsonfile.js",".././node_modules/fs-extra/lib/json/output-json-sync.js",".././node_modules/fs-extra/lib/json/output-json.js",".././node_modules/fs-extra/lib/mkdirs/index.js",".././node_modules/fs-extra/lib/mkdirs/make-dir.js",".././node_modules/fs-extra/lib/mkdirs/utils.js",".././node_modules/fs-extra/lib/move/index.js",".././node_modules/fs-extra/lib/move/move-sync.js",".././node_modules/fs-extra/lib/move/move.js",".././node_modules/fs-extra/lib/output-file/index.js",".././node_modules/fs-extra/lib/path-exists/index.js",".././node_modules/fs-extra/lib/remove/index.js",".././node_modules/fs-extra/lib/util/stat.js",".././node_modules/fs-extra/lib/util/utimes.js",".././node_modules/graceful-fs/clone.js",".././node_modules/graceful-fs/graceful-fs.js",".././node_modules/graceful-fs/legacy-streams.js",".././node_modules/graceful-fs/polyfills.js",".././node_modules/has-flag/index.js",".././node_modules/is-fullwidth-code-point/index.js",".././node_modules/jsonfile/index.js",".././node_modules/jsonfile/utils.js",".././node_modules/lodash.truncate/index.js",".././node_modules/once/once.js",".././node_modules/slice-ansi/index.js",".././node_modules/string-width/index.js",".././node_modules/strip-ansi/index.js",".././node_modules/strnum/strnum.js",".././node_modules/supports-color/index.js",".././node_modules/table/dist/src/alignSpanningCell.js",".././node_modules/table/dist/src/alignString.js",".././node_modules/table/dist/src/alignTableData.js",".././node_modules/table/dist/src/calculateCellHeight.js",".././node_modules/table/dist/src/calculateMaximumColumnWidths.js",".././node_modules/table/dist/src/calculateOutputColumnWidths.js",".././node_modules/table/dist/src/calculateRowHeights.js",".././node_modules/table/dist/src/calculateSpanningCellWidth.js",".././node_modules/table/dist/src/createStream.js",".././node_modules/table/dist/src/drawBorder.js",".././node_modules/table/dist/src/drawContent.js",".././node_modules/table/dist/src/drawRow.js",".././node_modules/table/dist/src/drawTable.js",".././node_modules/table/dist/src/generated/validators.js",".././node_modules/table/dist/src/getBorderCharacters.js",".././node_modules/table/dist/src/index.js",".././node_modules/table/dist/src/injectHeaderConfig.js",".././node_modules/table/dist/src/makeRangeConfig.js",".././node_modules/table/dist/src/makeStreamConfig.js",".././node_modules/table/dist/src/makeTableConfig.js",".././node_modules/table/dist/src/mapDataUsingRowHeights.js",".././node_modules/table/dist/src/padTableData.js",".././node_modules/table/dist/src/spanningCellManager.js",".././node_modules/table/dist/src/stringifyTableData.js",".././node_modules/table/dist/src/table.js",".././node_modules/table/dist/src/truncateTableData.js",".././node_modules/table/dist/src/types/api.js",".././node_modules/table/dist/src/utils.js",".././node_modules/table/dist/src/validateConfig.js",".././node_modules/table/dist/src/validateSpanningCellConfig.js",".././node_modules/table/dist/src/validateTableData.js",".././node_modules/table/dist/src/wrapCell.js",".././node_modules/table/dist/src/wrapString.js",".././node_modules/table/dist/src/wrapWord.js",".././node_modules/table/node_modules/ajv/dist/runtime/equal.js",".././node_modules/tslib/tslib.js",".././node_modules/tunnel/index.js",".././node_modules/tunnel/lib/tunnel.js",".././node_modules/undici/index.js",".././node_modules/undici/lib/agent.js",".././node_modules/undici/lib/api/abort-signal.js",".././node_modules/undici/lib/api/api-connect.js",".././node_modules/undici/lib/api/api-pipeline.js",".././node_modules/undici/lib/api/api-request.js",".././node_modules/undici/lib/api/api-stream.js",".././node_modules/undici/lib/api/api-upgrade.js",".././node_modules/undici/lib/api/index.js",".././node_modules/undici/lib/api/readable.js",".././node_modules/undici/lib/api/util.js",".././node_modules/undici/lib/balanced-pool.js",".././node_modules/undici/lib/cache/cache.js",".././node_modules/undici/lib/cache/cachestorage.js",".././node_modules/undici/lib/cache/symbols.js",".././node_modules/undici/lib/cache/util.js",".././node_modules/undici/lib/client.js",".././node_modules/undici/lib/compat/dispatcher-weakref.js",".././node_modules/undici/lib/cookies/constants.js",".././node_modules/undici/lib/cookies/index.js",".././node_modules/undici/lib/cookies/parse.js",".././node_modules/undici/lib/cookies/util.js",".././node_modules/undici/lib/core/connect.js",".././node_modules/undici/lib/core/constants.js",".././node_modules/undici/lib/core/errors.js",".././node_modules/undici/lib/core/request.js",".././node_modules/undici/lib/core/symbols.js",".././node_modules/undici/lib/core/util.js",".././node_modules/undici/lib/dispatcher-base.js",".././node_modules/undici/lib/dispatcher.js",".././node_modules/undici/lib/fetch/body.js",".././node_modules/undici/lib/fetch/constants.js",".././node_modules/undici/lib/fetch/dataURL.js",".././node_modules/undici/lib/fetch/file.js",".././node_modules/undici/lib/fetch/formdata.js",".././node_modules/undici/lib/fetch/global.js",".././node_modules/undici/lib/fetch/headers.js",".././node_modules/undici/lib/fetch/index.js",".././node_modules/undici/lib/fetch/request.js",".././node_modules/undici/lib/fetch/response.js",".././node_modules/undici/lib/fetch/symbols.js",".././node_modules/undici/lib/fetch/util.js",".././node_modules/undici/lib/fetch/webidl.js",".././node_modules/undici/lib/fileapi/encoding.js",".././node_modules/undici/lib/fileapi/filereader.js",".././node_modules/undici/lib/fileapi/progressevent.js",".././node_modules/undici/lib/fileapi/symbols.js",".././node_modules/undici/lib/fileapi/util.js",".././node_modules/undici/lib/global.js",".././node_modules/undici/lib/handler/DecoratorHandler.js",".././node_modules/undici/lib/handler/RedirectHandler.js",".././node_modules/undici/lib/handler/RetryHandler.js",".././node_modules/undici/lib/interceptor/redirectInterceptor.js",".././node_modules/undici/lib/llhttp/constants.js",".././node_modules/undici/lib/llhttp/llhttp-wasm.js",".././node_modules/undici/lib/llhttp/llhttp_simd-wasm.js",".././node_modules/undici/lib/llhttp/utils.js",".././node_modules/undici/lib/mock/mock-agent.js",".././node_modules/undici/lib/mock/mock-client.js",".././node_modules/undici/lib/mock/mock-errors.js",".././node_modules/undici/lib/mock/mock-interceptor.js",".././node_modules/undici/lib/mock/mock-pool.js",".././node_modules/undici/lib/mock/mock-symbols.js",".././node_modules/undici/lib/mock/mock-utils.js",".././node_modules/undici/lib/mock/pending-interceptors-formatter.js",".././node_modules/undici/lib/mock/pluralizer.js",".././node_modules/undici/lib/node/fixed-queue.js",".././node_modules/undici/lib/pool-base.js",".././node_modules/undici/lib/pool-stats.js",".././node_modules/undici/lib/pool.js",".././node_modules/undici/lib/proxy-agent.js",".././node_modules/undici/lib/timers.js",".././node_modules/undici/lib/websocket/connection.js",".././node_modules/undici/lib/websocket/constants.js",".././node_modules/undici/lib/websocket/events.js",".././node_modules/undici/lib/websocket/frame.js",".././node_modules/undici/lib/websocket/receiver.js",".././node_modules/undici/lib/websocket/symbols.js",".././node_modules/undici/lib/websocket/util.js",".././node_modules/undici/lib/websocket/websocket.js",".././node_modules/universal-user-agent/dist-node/index.js",".././node_modules/universalify/index.js",".././node_modules/uuid/dist/index.js",".././node_modules/uuid/dist/md5.js",".././node_modules/uuid/dist/nil.js",".././node_modules/uuid/dist/parse.js",".././node_modules/uuid/dist/regex.js",".././node_modules/uuid/dist/rng.js",".././node_modules/uuid/dist/sha1.js",".././node_modules/uuid/dist/stringify.js",".././node_modules/uuid/dist/v1.js",".././node_modules/uuid/dist/v3.js",".././node_modules/uuid/dist/v35.js",".././node_modules/uuid/dist/v4.js",".././node_modules/uuid/dist/v5.js",".././node_modules/uuid/dist/validate.js",".././node_modules/uuid/dist/version.js",".././node_modules/wrappy/wrappy.js","../external node-commonjs \"assert\"","../external node-commonjs \"async_hooks\"","../external node-commonjs \"buffer\"","../external node-commonjs \"child_process\"","../external node-commonjs \"console\"","../external node-commonjs \"constants\"","../external node-commonjs \"crypto\"","../external node-commonjs \"diagnostics_channel\"","../external node-commonjs \"events\"","../external node-commonjs \"fs\"","../external node-commonjs \"fs/promises\"","../external node-commonjs \"http\"","../external node-commonjs \"http2\"","../external node-commonjs \"https\"","../external node-commonjs \"net\"","../external node-commonjs \"node:events\"","../external node-commonjs \"node:fs\"","../external node-commonjs \"node:path\"","../external node-commonjs \"node:stream\"","../external node-commonjs \"node:util\"","../external node-commonjs \"node:zlib\"","../external node-commonjs \"os\"","../external node-commonjs \"path\"","../external node-commonjs \"perf_hooks\"","../external node-commonjs \"process\"","../external node-commonjs \"querystring\"","../external node-commonjs \"stream\"","../external node-commonjs \"stream/web\"","../external node-commonjs \"string_decoder\"","../external node-commonjs \"tls\"","../external node-commonjs \"tty\"","../external node-commonjs \"url\"","../external node-commonjs \"util\"","../external node-commonjs \"util/types\"","../external node-commonjs \"worker_threads\"","../external node-commonjs \"zlib\"",".././node_modules/@fastify/busboy/deps/dicer/lib/Dicer.js",".././node_modules/@fastify/busboy/deps/dicer/lib/HeaderParser.js",".././node_modules/@fastify/busboy/deps/dicer/lib/PartStream.js",".././node_modules/@fastify/busboy/deps/streamsearch/sbmh.js",".././node_modules/@fastify/busboy/lib/main.js",".././node_modules/@fastify/busboy/lib/types/multipart.js",".././node_modules/@fastify/busboy/lib/types/urlencoded.js",".././node_modules/@fastify/busboy/lib/utils/Decoder.js",".././node_modules/@fastify/busboy/lib/utils/basename.js",".././node_modules/@fastify/busboy/lib/utils/decodeText.js",".././node_modules/@fastify/busboy/lib/utils/getLimit.js",".././node_modules/@fastify/busboy/lib/utils/parseParams.js","../webpack/bootstrap","../webpack/runtime/node module decorator","../webpack/runtime/compat","../webpack/before-startup","../webpack/startup","../webpack/after-startup"],"sourcesContent":["\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.run = run;\nconst core_1 = require(\"@actions/core\");\nconst github = __importStar(require(\"@actions/github\"));\nconst assembly_1 = require(\"./assembly\");\nconst comment_1 = require(\"./comment\");\nconst stage_processor_1 = require(\"./stage-processor\");\nasync function run() {\n var _a;\n const inputs = {\n allowedDestroyTypes: (0, core_1.getInput)('allowedDestroyTypes').split(','),\n failOnDestructiveChanges: (0, core_1.getBooleanInput)('failOnDestructiveChanges'),\n githubToken: (0, core_1.getInput)('githubToken'),\n noDiffForStages: (0, core_1.getInput)('noDiffForStages').split(','),\n noFailOnDestructiveChanges: (0, core_1.getInput)('noFailOnDestructiveChanges').split(','),\n cdkOutDir: (_a = (0, core_1.getInput)('cdkOutDir')) !== null && _a !== void 0 ? _a : 'cdk.out',\n };\n const octokit = github.getOctokit(inputs.githubToken);\n const context = github.context;\n try {\n const assembly = assembly_1.AssemblyManifestReader.fromPath(inputs.cdkOutDir);\n const stages = assembly.stages;\n if (assembly.stacks.length) {\n stages.push({\n name: 'DefaultStage',\n stacks: assembly.stacks,\n });\n }\n const comments = new comment_1.Comments(octokit, context);\n const processor = new stage_processor_1.StageProcessor(stages, inputs.allowedDestroyTypes);\n try {\n await processor.processStages(inputs.noFailOnDestructiveChanges);\n }\n catch (e) {\n console.error('Error running process stages: ', e);\n throw e;\n }\n try {\n await processor.commentStages(comments);\n }\n catch (e) {\n console.error('Error commenting stages: ', e);\n throw e;\n }\n if (processor.hasDestructiveChanges && inputs.failOnDestructiveChanges) {\n throw new Error('There are destructive changes! See PR comment for details.');\n }\n }\n catch (e) {\n console.error('Error performing diff: ', e);\n throw e;\n }\n return;\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2FjdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBT0Esa0JBNkNDO0FBcERELHdDQUEwRDtBQUMxRCx3REFBMEM7QUFDMUMseUNBQW9EO0FBQ3BELHVDQUFxQztBQUVyQyx1REFBbUQ7QUFFNUMsS0FBSyxVQUFVLEdBQUc7O0lBQ3ZCLE1BQU0sTUFBTSxHQUFXO1FBQ3JCLG1CQUFtQixFQUFFLElBQUEsZUFBUSxFQUFDLHFCQUFxQixDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQztRQUMvRCx3QkFBd0IsRUFBRSxJQUFBLHNCQUFlLEVBQUMsMEJBQTBCLENBQUM7UUFDckUsV0FBVyxFQUFFLElBQUEsZUFBUSxFQUFDLGFBQWEsQ0FBQztRQUNwQyxlQUFlLEVBQUUsSUFBQSxlQUFRLEVBQUMsaUJBQWlCLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDO1FBQ3ZELDBCQUEwQixFQUFFLElBQUEsZUFBUSxFQUFDLDRCQUE0QixDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQztRQUM3RSxTQUFTLEVBQUUsTUFBQSxJQUFBLGVBQVEsRUFBQyxXQUFXLENBQUMsbUNBQUksU0FBUztLQUM5QyxDQUFDO0lBQ0YsTUFBTSxPQUFPLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDdEQsTUFBTSxPQUFPLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQztJQUMvQixJQUFJLENBQUM7UUFDSCxNQUFNLFFBQVEsR0FBRyxpQ0FBc0IsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ25FLE1BQU0sTUFBTSxHQUFHLFFBQVEsQ0FBQyxNQUFNLENBQUM7UUFDL0IsSUFBSSxRQUFRLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQzNCLE1BQU0sQ0FBQyxJQUFJLENBQUM7Z0JBQ1YsSUFBSSxFQUFFLGNBQWM7Z0JBQ3BCLE1BQU0sRUFBRSxRQUFRLENBQUMsTUFBTTthQUN4QixDQUFDLENBQUM7UUFDTCxDQUFDO1FBQ0QsTUFBTSxRQUFRLEdBQUcsSUFBSSxrQkFBUSxDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQztRQUNoRCxNQUFNLFNBQVMsR0FBRyxJQUFJLGdDQUFjLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO1FBQ3pFLElBQUksQ0FBQztZQUNILE1BQU0sU0FBUyxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsMEJBQTBCLENBQUMsQ0FBQztRQUNuRSxDQUFDO1FBQUMsT0FBTyxDQUFNLEVBQUUsQ0FBQztZQUNoQixPQUFPLENBQUMsS0FBSyxDQUFDLGdDQUFnQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQ25ELE1BQU0sQ0FBQyxDQUFDO1FBQ1YsQ0FBQztRQUVELElBQUksQ0FBQztZQUNILE1BQU0sU0FBUyxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUUxQyxDQUFDO1FBQUMsT0FBTyxDQUFNLEVBQUUsQ0FBQztZQUNoQixPQUFPLENBQUMsS0FBSyxDQUFDLDJCQUEyQixFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQzlDLE1BQU0sQ0FBQyxDQUFDO1FBQ1YsQ0FBQztRQUVELElBQUksU0FBUyxDQUFDLHFCQUFxQixJQUFJLE1BQU0sQ0FBQyx3QkFBd0IsRUFBRSxDQUFDO1lBQ3ZFLE1BQU0sSUFBSSxLQUFLLENBQUMsNERBQTRELENBQUMsQ0FBQztRQUNoRixDQUFDO0lBQ0gsQ0FBQztJQUFDLE9BQU8sQ0FBTSxFQUFFLENBQUM7UUFDaEIsT0FBTyxDQUFDLEtBQUssQ0FBQyx5QkFBeUIsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUM1QyxNQUFNLENBQUMsQ0FBQztJQUNWLENBQUM7SUFDRCxPQUFPO0FBQ1QsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGdldElucHV0LCBnZXRCb29sZWFuSW5wdXQgfSBmcm9tICdAYWN0aW9ucy9jb3JlJztcbmltcG9ydCAqIGFzIGdpdGh1YiBmcm9tICdAYWN0aW9ucy9naXRodWInO1xuaW1wb3J0IHsgQXNzZW1ibHlNYW5pZmVzdFJlYWRlciB9IGZyb20gJy4vYXNzZW1ibHknO1xuaW1wb3J0IHsgQ29tbWVudHMgfSBmcm9tICcuL2NvbW1lbnQnO1xuaW1wb3J0IHsgSW5wdXRzIH0gZnJvbSAnLi9pbnB1dHMnO1xuaW1wb3J0IHsgU3RhZ2VQcm9jZXNzb3IgfSBmcm9tICcuL3N0YWdlLXByb2Nlc3Nvcic7XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBydW4oKSB7XG4gIGNvbnN0IGlucHV0czogSW5wdXRzID0ge1xuICAgIGFsbG93ZWREZXN0cm95VHlwZXM6IGdldElucHV0KCdhbGxvd2VkRGVzdHJveVR5cGVzJykuc3BsaXQoJywnKSxcbiAgICBmYWlsT25EZXN0cnVjdGl2ZUNoYW5nZXM6IGdldEJvb2xlYW5JbnB1dCgnZmFpbE9uRGVzdHJ1Y3RpdmVDaGFuZ2VzJyksXG4gICAgZ2l0aHViVG9rZW46IGdldElucHV0KCdnaXRodWJUb2tlbicpLFxuICAgIG5vRGlmZkZvclN0YWdlczogZ2V0SW5wdXQoJ25vRGlmZkZvclN0YWdlcycpLnNwbGl0KCcsJyksXG4gICAgbm9GYWlsT25EZXN0cnVjdGl2ZUNoYW5nZXM6IGdldElucHV0KCdub0ZhaWxPbkRlc3RydWN0aXZlQ2hhbmdlcycpLnNwbGl0KCcsJyksXG4gICAgY2RrT3V0RGlyOiBnZXRJbnB1dCgnY2RrT3V0RGlyJykgPz8gJ2Nkay5vdXQnLFxuICB9O1xuICBjb25zdCBvY3Rva2l0ID0gZ2l0aHViLmdldE9jdG9raXQoaW5wdXRzLmdpdGh1YlRva2VuKTtcbiAgY29uc3QgY29udGV4dCA9IGdpdGh1Yi5jb250ZXh0O1xuICB0cnkge1xuICAgIGNvbnN0IGFzc2VtYmx5ID0gQXNzZW1ibHlNYW5pZmVzdFJlYWRlci5mcm9tUGF0aChpbnB1dHMuY2RrT3V0RGlyKTtcbiAgICBjb25zdCBzdGFnZXMgPSBhc3NlbWJseS5zdGFnZXM7XG4gICAgaWYgKGFzc2VtYmx5LnN0YWNrcy5sZW5ndGgpIHtcbiAgICAgIHN0YWdlcy5wdXNoKHtcbiAgICAgICAgbmFtZTogJ0RlZmF1bHRTdGFnZScsXG4gICAgICAgIHN0YWNrczogYXNzZW1ibHkuc3RhY2tzLFxuICAgICAgfSk7XG4gICAgfVxuICAgIGNvbnN0IGNvbW1lbnRzID0gbmV3IENvbW1lbnRzKG9jdG9raXQsIGNvbnRleHQpO1xuICAgIGNvbnN0IHByb2Nlc3NvciA9IG5ldyBTdGFnZVByb2Nlc3NvcihzdGFnZXMsIGlucHV0cy5hbGxvd2VkRGVzdHJveVR5cGVzKTtcbiAgICB0cnkge1xuICAgICAgYXdhaXQgcHJvY2Vzc29yLnByb2Nlc3NTdGFnZXMoaW5wdXRzLm5vRmFpbE9uRGVzdHJ1Y3RpdmVDaGFuZ2VzKTtcbiAgICB9IGNhdGNoIChlOiBhbnkpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIHJ1bm5pbmcgcHJvY2VzcyBzdGFnZXM6ICcsIGUpO1xuICAgICAgdGhyb3cgZTtcbiAgICB9XG5cbiAgICB0cnkge1xuICAgICAgYXdhaXQgcHJvY2Vzc29yLmNvbW1lbnRTdGFnZXMoY29tbWVudHMpO1xuXG4gICAgfSBjYXRjaCAoZTogYW55KSB7XG4gICAgICBjb25zb2xlLmVycm9yKCdFcnJvciBjb21tZW50aW5nIHN0YWdlczogJywgZSk7XG4gICAgICB0aHJvdyBlO1xuICAgIH1cblxuICAgIGlmIChwcm9jZXNzb3IuaGFzRGVzdHJ1Y3RpdmVDaGFuZ2VzICYmIGlucHV0cy5mYWlsT25EZXN0cnVjdGl2ZUNoYW5nZXMpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignVGhlcmUgYXJlIGRlc3RydWN0aXZlIGNoYW5nZXMhIFNlZSBQUiBjb21tZW50IGZvciBkZXRhaWxzLicpO1xuICAgIH1cbiAgfSBjYXRjaCAoZTogYW55KSB7XG4gICAgY29uc29sZS5lcnJvcignRXJyb3IgcGVyZm9ybWluZyBkaWZmOiAnLCBlKTtcbiAgICB0aHJvdyBlO1xuICB9XG4gIHJldHVybjtcbn1cblxuIl19","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.AssemblyManifestReader = void 0;\nconst path = __importStar(require(\"path\"));\nconst cloud_assembly_1 = require(\"@aws-cdk/cloud-assembly-schema/lib/cloud-assembly\");\nconst manifest_1 = require(\"@aws-cdk/cloud-assembly-schema/lib/manifest\");\nconst fs = __importStar(require(\"fs-extra\"));\n/**\n * Reads a Cloud Assembly manifest\n */\nclass AssemblyManifestReader {\n /**\n * Reads a Cloud Assembly manifest from a file\n */\n static fromFile(fileName) {\n try {\n // skipVersionCheck since we should always be able to load newer versions\n const obj = manifest_1.Manifest.loadAssemblyManifest(fileName, { skipVersionCheck: true });\n return new AssemblyManifestReader(path.dirname(fileName), obj);\n }\n catch (e) {\n throw new Error(`Cannot read integ manifest '${fileName}': ${e.message}`);\n }\n }\n /**\n * Reads a Cloud Assembly manifest from a file or a directory\n * If the given filePath is a directory then it will look for\n * a file within the directory with the DEFAULT_FILENAME\n */\n static fromPath(filePath) {\n let st;\n try {\n st = fs.statSync(filePath);\n }\n catch (e) {\n throw new Error(`Cannot read integ manifest at '${filePath}': ${e.message}`);\n }\n if (st.isDirectory()) {\n return AssemblyManifestReader.fromFile(path.join(filePath, AssemblyManifestReader.DEFAULT_FILENAME));\n }\n return AssemblyManifestReader.fromFile(filePath);\n }\n constructor(directory, manifest) {\n this.manifest = manifest;\n this.directory = directory;\n }\n /**\n * Get the stacks from the manifest\n * returns a map of artifactId to CloudFormation template\n */\n get stacks() {\n var _a, _b, _c;\n const stacks = [];\n for (const [artifactId, artifact] of Object.entries((_a = this.manifest.artifacts) !== null && _a !== void 0 ? _a : {})) {\n if (artifact.type !== cloud_assembly_1.ArtifactType.AWS_CLOUDFORMATION_STACK) {\n continue;\n }\n const props = artifact.properties;\n const template = fs.readJSONSync(path.resolve(this.directory, props.templateFile));\n const env = (_b = artifact.environment) === null || _b === void 0 ? void 0 : _b.split(/\\/\\/?/);\n const validEnv = env && env.length === 3;\n let region;\n let account;\n if (validEnv) {\n region = env[2];\n account = env[1];\n }\n if (region === 'unknown-region') {\n region = undefined;\n }\n if (account === 'unknown-account') {\n account = undefined;\n }\n stacks.push({\n content: template,\n region,\n account,\n lookupRole: props.lookupRole,\n name: (_c = props.stackName) !== null && _c !== void 0 ? _c : artifactId,\n });\n }\n return stacks;\n }\n /**\n * Get the stages in the assembly\n */\n get stages() {\n var _a, _b;\n const stages = [];\n for (const [artifactId, artifact] of Object.entries((_a = this.manifest.artifacts) !== null && _a !== void 0 ? _a : {})) {\n if (artifact.type !== cloud_assembly_1.ArtifactType.NESTED_CLOUD_ASSEMBLY) {\n continue;\n }\n const props = artifact.properties;\n const nestedAssembly = AssemblyManifestReader.fromPath(path.join(this.directory, props.directoryName));\n stages.push({\n name: (_b = props.displayName) !== null && _b !== void 0 ? _b : artifactId,\n stacks: nestedAssembly.stacks,\n });\n }\n return stages;\n }\n}\nexports.AssemblyManifestReader = AssemblyManifestReader;\nAssemblyManifestReader.DEFAULT_FILENAME = 'manifest.json';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNzZW1ibHkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvYXNzZW1ibHkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSwyQ0FBNkI7QUFDN0Isc0ZBQW1MO0FBQ25MLDBFQUF1RTtBQUN2RSw2Q0FBK0I7QUFxRC9COztHQUVHO0FBQ0gsTUFBYSxzQkFBc0I7SUFHakM7O09BRUc7SUFDSSxNQUFNLENBQUMsUUFBUSxDQUFDLFFBQWdCO1FBQ3JDLElBQUksQ0FBQztZQUNILHlFQUF5RTtZQUN6RSxNQUFNLEdBQUcsR0FBRyxtQkFBUSxDQUFDLG9CQUFvQixDQUFDLFFBQVEsRUFBRSxFQUFFLGdCQUFnQixFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7WUFDaEYsT0FBTyxJQUFJLHNCQUFzQixDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFFakUsQ0FBQztRQUFDLE9BQU8sQ0FBTSxFQUFFLENBQUM7WUFDaEIsTUFBTSxJQUFJLEtBQUssQ0FBQywrQkFBK0IsUUFBUSxNQUFNLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO1FBQzVFLENBQUM7SUFDSCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNJLE1BQU0sQ0FBQyxRQUFRLENBQUMsUUFBZ0I7UUFDckMsSUFBSSxFQUFFLENBQUM7UUFDUCxJQUFJLENBQUM7WUFDSCxFQUFFLEdBQUcsRUFBRSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUM3QixDQUFDO1FBQUMsT0FBTyxDQUFNLEVBQUUsQ0FBQztZQUNoQixNQUFNLElBQUksS0FBSyxDQUFDLGtDQUFrQyxRQUFRLE1BQU0sQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7UUFDL0UsQ0FBQztRQUNELElBQUksRUFBRSxDQUFDLFdBQVcsRUFBRSxFQUFFLENBQUM7WUFDckIsT0FBTyxzQkFBc0IsQ0FBQyxRQUFR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QyxNQUFNLEVBQUUsY0FBYyxDQUFDLE1BQU07YUFDOUIsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztRQUNELE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7O0FBOUZILHdEQStGQztBQTlGd0IsdUNBQWdCLEdBQUcsZUFBZSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCB7IEFzc2VtYmx5TWFuaWZlc3QsIEFydGlmYWN0VHlwZSwgQXdzQ2xvdWRGb3JtYXRpb25TdGFja1Byb3BlcnRpZXMsIE5lc3RlZENsb3VkQXNzZW1ibHlQcm9wZXJ0aWVzLCBCb290c3RyYXBSb2xlIH0gZnJvbSAnQGF3cy1jZGsvY2xvdWQtYXNzZW1ibHktc2NoZW1hL2xpYi9jbG91ZC1hc3NlbWJseSc7XG5pbXBvcnQgeyBNYW5pZmVzdCB9IGZyb20gJ0Bhd3MtY2RrL2Nsb3VkLWFzc2VtYmx5LXNjaGVtYS9saWIvbWFuaWZlc3QnO1xuaW1wb3J0ICogYXMgZnMgZnJvbSAnZnMtZXh0cmEnO1xuXG4vKipcbiAqIEluZm9ybWF0aW9uIG9uIHRoZSBDREsgU3RhZ2VcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTdGFnZUluZm8ge1xuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIHN0YWdlXG4gICAqL1xuICBuYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBzdGFja3Mgd2l0aGluIHRoZSBzdGFnZVxuICAgKi9cbiAgc3RhY2tzOiBTdGFja0luZm9bXTtcbn1cblxuLyoqXG4gKiBJbmZvcm1hdGlvbiBvbiBhIHN0YWNrXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU3RhY2tJbmZvIHtcbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSBzdGFja1xuICAgKi9cbiAgbmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgcmVnaW9uIHRoZSBzdGFjayBpcyBkZXBsb3llZCB0b1xuICAgKlxuICAgKiBAZGVmYXVsdCAtIHVua25vd24tcmVnaW9uXG4gICAqL1xuICByZWdpb24/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBhY2NvdW50IHRoZSBzdGFjayBpcyBkZXBsb3llZCB0b1xuICAgKlxuICAgKiBAZGVmYXVsdCAtIHVua25vd24tYWNjb3VudFxuICAgKi9cbiAgYWNjb3VudD86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIGxvb2t1cCByb2xlIHRvIHVzZVxuICAgKlxuICAgKiBAZGVmYXVsdCAtIG5vIGxvb2t1cCByb2xlXG4gICAqL1xuICBsb29rdXBSb2xlPzogQm9vdHN0cmFwUm9sZTtcblxuICAvKipcbiAgICogVGhlIEpTT04gY29udGVudCBvZiB0aGUgc3RhY2tcbiAgICovXG4gIGNvbnRlbnQ6IHsgW2tleTogc3RyaW5nXTogYW55IH07XG59XG5cbi8qKlxuICogUmVhZHMgYSBDbG91ZCBBc3NlbWJseSBtYW5pZmVzdFxuICovXG5leHBvcnQgY2xhc3MgQXNzZW1ibHlNYW5pZmVzdFJlYWRlciB7XG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgREVGQVVMVF9GSUxFTkFNRSA9ICdtYW5pZmVzdC5qc29uJztcblxuICAvKipcbiAgICogUmVhZHMgYSBDbG91ZCBBc3NlbWJseSBtYW5pZmVzdCBmcm9tIGEgZmlsZVxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBmcm9tRmlsZShmaWxlTmFtZTogc3RyaW5nKTogQXNzZW1ibHlNYW5pZmVzdFJlYWRlciB7XG4gICAgdHJ5IHtcbiAgICAgIC8vIHNraXBWZXJzaW9uQ2hlY2sgc2luY2Ugd2Ugc2hvdWxkIGFsd2F5cyBiZSBhYmxlIHRvIGxvYWQgbmV3ZXIgdmVyc2lvbnNcbiAgICAgIGNvbnN0IG9iaiA9IE1hbmlmZXN0LmxvYWRBc3NlbWJseU1hbmlmZXN0KGZpbGVOYW1lLCB7IHNraXBWZXJzaW9uQ2hlY2s6IHRydWUgfSk7XG4gICAgICByZXR1cm4gbmV3IEFzc2VtYmx5TWFuaWZlc3RSZWFkZXIocGF0aC5kaXJuYW1lKGZpbGVOYW1lKSwgb2JqKTtcblxuICAgIH0gY2F0Y2ggKGU6IGFueSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBDYW5ub3QgcmVhZCBpbnRlZyBtYW5pZmVzdCAnJHtmaWxlTmFtZX0nOiAke2UubWVzc2FnZX1gKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUmVhZHMgYSBDbG91ZCBBc3NlbWJseSBtYW5pZmVzdCBmcm9tIGEgZmlsZSBvciBhIGRpcmVjdG9yeVxuICAgKiBJZiB0aGUgZ2l2ZW4gZmlsZVBhdGggaXMgYSBkaXJlY3RvcnkgdGhlbiBpdCB3aWxsIGxvb2sgZm9yXG4gICAqIGEgZmlsZSB3aXRoaW4gdGhlIGRpcmVjdG9yeSB3aXRoIHRoZSBERUZBVUxUX0ZJTEVOQU1FXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGZyb21QYXRoKGZpbGVQYXRoOiBzdHJpbmcpOiBBc3NlbWJseU1hbmlmZXN0UmVhZGVyIHtcbiAgICBsZXQgc3Q7XG4gICAgdHJ5IHtcbiAgICAgIHN0ID0gZnMuc3RhdFN5bmMoZmlsZVBhdGgpO1xuICAgIH0gY2F0Y2ggKGU6IGFueSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBDYW5ub3QgcmVhZCBpbnRlZyBtYW5pZmVzdCBhdCAnJHtmaWxlUGF0aH0nOiAke2UubWVzc2FnZX1gKTtcbiAgICB9XG4gICAgaWYgKHN0LmlzRGlyZWN0b3J5KCkpIHtcbiAgICAgIHJldHVybiBBc3NlbWJseU1hbmlmZXN0UmVhZGVyLmZyb21GaWxlKHBhdGguam9pbihmaWxlUGF0aCwgQXNzZW1ibHlNYW5pZmVzdFJlYWRlci5ERUZBVUxUX0ZJTEVOQU1FKSk7XG4gICAgfVxuICAgIHJldHVybiBBc3NlbWJseU1hbmlmZXN0UmVhZGVyLmZyb21GaWxlKGZpbGVQYXRoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgZGlyZWN0b3J5IHdoZXJlIHRoZSBtYW5pZmVzdCB3YXMgZm91bmRcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBkaXJlY3Rvcnk6IHN0cmluZztcblxuICBjb25zdHJ1Y3RvcihkaXJlY3Rvcnk6IHN0cmluZywgcHJpdmF0ZSByZWFkb25seSBtYW5pZmVzdDogQXNzZW1ibHlNYW5pZmVzdCkge1xuICAgIHRoaXMuZGlyZWN0b3J5ID0gZGlyZWN0b3J5O1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgc3RhY2tzIGZyb20gdGhlIG1hbmlmZXN0XG4gICAqIHJldHVybnMgYSBtYXAgb2YgYXJ0aWZhY3RJZCB0byBDbG91ZEZvcm1hdGlvbiB0ZW1wbGF0ZVxuICAgKi9cbiAgcHVibGljIGdldCBzdGFja3MoKTogU3RhY2tJbmZvW10ge1xuICAgIGNvbnN0IHN0YWNrczogU3RhY2tJbmZvW10gPSBbXTtcbiAgICBmb3IgKGNvbnN0IFthcnRpZmFjdElkLCBhcnRpZmFjdF0gb2YgT2JqZWN0LmVudHJpZXModGhpcy5tYW5pZmVzdC5hcnRpZmFjdHMgPz8ge30pKSB7XG4gICAgICBpZiAoYXJ0aWZhY3QudHlwZSAhPT0gQXJ0aWZhY3RUeXBlLkFXU19DTE9VREZPUk1BVElPTl9TVEFDSykgeyBjb250aW51ZTsgfVxuICAgICAgY29uc3QgcHJvcHMgPSBhcnRpZmFjdC5wcm9wZXJ0aWVzIGFzIEF3c0Nsb3VkRm9ybWF0aW9uU3RhY2tQcm9wZXJ0aWVzO1xuICAgICAgY29uc3QgdGVtcGxhdGUgPSBmcy5yZWFkSlNPTlN5bmMocGF0aC5yZXNvbHZlKHRoaXMuZGlyZWN0b3J5LCBwcm9wcy50ZW1wbGF0ZUZpbGUpKTtcbiAgICAgIGNvbnN0IGVudiA9IGFydGlmYWN0LmVudmlyb25tZW50Py5zcGxpdCgvXFwvXFwvPy8pO1xuICAgICAgY29uc3QgdmFsaWRFbnYgPSBlbnYgJiYgZW52Lmxlbmd0aCA9PT0gMztcbiAgICAgIGxldCByZWdpb246IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICAgIGxldCBhY2NvdW50OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgICBpZiAodmFsaWRFbnYpIHtcbiAgICAgICAgcmVnaW9uID0gZW52WzJdO1xuICAgICAgICBhY2NvdW50ID0gZW52WzFdO1xuICAgICAgfVxuICAgICAgaWYgKHJlZ2lvbiA9PT0gJ3Vua25vd24tcmVnaW9uJykge1xuICAgICAgICByZWdpb24gPSB1bmRlZmluZWQ7XG4gICAgICB9XG4gICAgICBpZiAoYWNjb3VudCA9PT0gJ3Vua25vd24tYWNjb3VudCcpIHtcbiAgICAgICAgYWNjb3VudCA9IHVuZGVmaW5lZDtcbiAgICAgIH1cbiAgICAgIHN0YWNrcy5wdXNoKHtcbiAgICAgICAgY29udGVudDogdGVtcGxhdGUsXG4gICAgICAgIHJlZ2lvbixcbiAgICAgICAgYWNjb3VudCxcbiAgICAgICAgbG9va3VwUm9sZTogcHJvcHMubG9va3VwUm9sZSxcbiAgICAgICAgbmFtZTogcHJvcHMuc3RhY2tOYW1lID8/IGFydGlmYWN0SWQsXG4gICAgICB9KTtcbiAgICB9XG4gICAgcmV0dXJuIHN0YWNrcztcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIHN0YWdlcyBpbiB0aGUgYXNzZW1ibHlcbiAgICovXG4gIHB1YmxpYyBnZXQgc3RhZ2VzKCk6IFN0YWdlSW5mb1tdIHtcbiAgICBjb25zdCBzdGFnZXM6IFN0YWdlSW5mb1tdID0gW107XG4gICAgZm9yIChjb25zdCBbYXJ0aWZhY3RJZCwgYXJ0aWZhY3RdIG9mIE9iamVjdC5lbnRyaWVzKHRoaXMubWFuaWZlc3QuYXJ0aWZhY3RzID8/IHt9KSkge1xuICAgICAgaWYgKGFydGlmYWN0LnR5cGUgIT09IEFydGlmYWN0VHlwZS5ORVNURURfQ0xPVURfQVNTRU1CTFkpIHsgY29udGludWU7IH1cbiAgICAgIGNvbnN0IHByb3BzID0gYXJ0aWZhY3QucHJvcGVydGllcyBhcyBOZXN0ZWRDbG91ZEFzc2VtYmx5UHJvcGVydGllcztcbiAgICAgIGNvbnN0IG5lc3RlZEFzc2VtYmx5ID0gQXNzZW1ibHlNYW5pZmVzdFJlYWRlci5mcm9tUGF0aChwYXRoLmpvaW4odGhpcy5kaXJlY3RvcnksIHByb3BzLmRpcmVjdG9yeU5hbWUpKTtcbiAgICAgIHN0YWdlcy5wdXNoKHtcbiAgICAgICAgbmFtZTogcHJvcHMuZGlzcGxheU5hbWUgPz8gYXJ0aWZhY3RJZCxcbiAgICAgICAgc3RhY2tzOiBuZXN0ZWRBc3NlbWJseS5zdGFja3MsXG4gICAgICB9KTtcbiAgICB9XG4gICAgcmV0dXJuIHN0YWdlcztcbiAgfVxufVxuIl19","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Comments = void 0;\n/**\n * Comments controls interacting with GitHub to make comments\n */\nclass Comments {\n constructor(octokit, context) {\n var _a;\n this.octokit = octokit;\n this.context = context;\n const payload = context.payload;\n this.commitSha = payload.pull_request.head.sha;\n if (!payload.pull_request.number) {\n throw new Error('Cannot find PR number, is this from a pull request?');\n }\n this.issueNumber = (_a = this.context.payload.pull_request) === null || _a === void 0 ? void 0 : _a.number;\n }\n /**\n * Find the previous comment with the given hash\n *\n * @param hash the unique hash identifying the stage comment to look for\n * @returns the PR comment id or undefined if there is no previous comment\n */\n async findPrevious(hash) {\n var _a;\n const comments = await this.octokit.rest.issues.listComments({\n ...this.context.repo,\n issue_number: this.issueNumber,\n });\n return (_a = comments.data.find(comment => { var _a; return (_a = comment.body) === null || _a === void 0 ? void 0 : _a.includes(hash); })) === null || _a === void 0 ? void 0 : _a.id;\n }\n /**\n * Update an existing comment\n *\n * @param hash the unique hash identifying the stage comment to look for\n * @param content the content of the comment\n * @param commentId the id of the comment to update\n */\n async updateComment(commentId, hash, content) {\n await this.octokit.rest.issues.updateComment({\n ...this.context.repo,\n body: [\n ``,\n ...content,\n '',\n `_Generated for commit ${this.commitSha}_`,\n ].join('\\n'),\n comment_id: commentId,\n });\n }\n /**\n * Create a new comment\n *\n * @param hash the unique hash identifying the stage comment to look for\n * @param content the content of the comment\n */\n async createComment(hash, content) {\n await this.octokit.rest.issues.createComment({\n ...this.context.repo,\n body: [\n ``,\n ...content,\n '',\n `_Generated for commit ${this.commitSha}_`,\n ].join('\\n'),\n issue_number: this.issueNumber,\n });\n }\n}\nexports.Comments = Comments;\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbWVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9jb21tZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUlBOztHQUVHO0FBQ0gsTUFBYSxRQUFRO0lBR25CLFlBQ21CLE9BQW9DLEVBQ3BDLE9BQWdCOztRQURoQixZQUFPLEdBQVAsT0FBTyxDQUE2QjtRQUNwQyxZQUFPLEdBQVAsT0FBTyxDQUFTO1FBRWpDLE1BQU0sT0FBTyxHQUFHLE9BQU8sQ0FBQyxPQUEyQixDQUFDO1FBQ3BELElBQUksQ0FBQyxTQUFTLEdBQUcsT0FBTyxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDO1FBQy9DLElBQUksQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ2pDLE1BQU0sSUFBSSxLQUFLLENBQUMscURBQXFELENBQUMsQ0FBQztRQUN6RSxDQUFDO1FBQ0QsSUFBSSxDQUFDLFdBQVcsR0FBRyxNQUFBLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLFlBQVksMENBQUUsTUFBTyxDQUFDO0lBQ2hFLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNJLEtBQUssQ0FBQyxZQUFZLENBQUMsSUFBWTs7UUFDcEMsTUFBTSxRQUFRLEdBQUcsTUFBTSxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDO1lBQzNELEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJO1lBQ3BCLFlBQVksRUFBRSxJQUFJLENBQUMsV0FBVztTQUMvQixDQUFDLENBQUM7UUFDSCxPQUFPLE1BQUEsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEVBQUUsV0FBQyxPQUFBLE1BQUEsT0FBTyxDQUFDLElBQUksMENBQUUsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFBLEVBQUEsQ0FBQywwQ0FBRSxFQUFFLENBQUM7SUFDekUsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNJLEtBQUssQ0FBQyxhQUFhLENBQUMsU0FBaUIsRUFBRSxJQUFZLEVBQUUsT0FBaUI7UUFDM0UsTUFBTSxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDO1lBQzNDLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJO1lBQ3BCLElBQUksRUFBRTtnQkFDSixrQ0FBa0MsSUFBSSxNQUFNO2dCQUM1QyxHQUFHLE9BQU87Z0JBQ1YsRUFBRTtnQkFDRix5QkFBeUIsSUFBSSxDQUFDLFNBQVMsR0FBRzthQUMzQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7WUFDWixVQUFVLEVBQUUsU0FBUztTQUN0QixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSSxLQUFLLENBQUMsYUFBYSxDQUFDLElBQVksRUFBRSxPQUFpQjtRQUN4RCxNQUFNLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUM7WUFDM0MsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUk7WUFDcEIsSUFBSSxFQUFFO2dCQUNKLGtDQUFrQyxJQUFJLE1BQU07Z0JBQzVDLEdBQUcsT0FBTztnQkFDVixFQUFFO2dCQUNGLHlCQUF5QixJQUFJLENBQUMsU0FBUyxHQUFHO2FBQzNDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQztZQUNaLFlBQVksRUFBRSxJQUFJLENBQUMsV0FBVztTQUMvQixDQUFDLENBQUM7SUFDTCxDQUFDO0NBQ0Y7QUFuRUQsNEJBbUVDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29udGV4dCB9IGZyb20gJ0BhY3Rpb25zL2dpdGh1Yi9saWIvY29udGV4dCc7XG5pbXBvcnQgeyBHaXRIdWIgfSBmcm9tICdAYWN0aW9ucy9naXRodWIvbGliL3V0aWxzJztcbmltcG9ydCB7IFB1bGxSZXF1ZXN0RXZlbnQgfSBmcm9tICdAb2N0b2tpdC93ZWJob29rcy1kZWZpbml0aW9ucy9zY2hlbWEnO1xuXG4vKipcbiAqIENvbW1lbnRzIGNvbnRyb2xzIGludGVyYWN0aW5nIHdpdGggR2l0SHViIHRvIG1ha2UgY29tbWVudHNcbiAqL1xuZXhwb3J0IGNsYXNzIENvbW1lbnRzIHtcbiAgcHJpdmF0ZSByZWFkb25seSBpc3N1ZU51bWJlcjogbnVtYmVyO1xuICBwcml2YXRlIHJlYWRvbmx5IGNvbW1pdFNoYTogc3RyaW5nO1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IG9jdG9raXQ6IEluc3RhbmNlVHlwZTx0eXBlb2YgR2l0SHViPixcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNvbnRleHQ6IENvbnRleHQsXG4gICkge1xuICAgIGNvbnN0IHBheWxvYWQgPSBjb250ZXh0LnBheWxvYWQgYXMgUHVsbFJlcXVlc3RFdmVudDtcbiAgICB0aGlzLmNvbW1pdFNoYSA9IHBheWxvYWQucHVsbF9yZXF1ZXN0LmhlYWQuc2hhO1xuICAgIGlmICghcGF5bG9hZC5wdWxsX3JlcXVlc3QubnVtYmVyKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0Nhbm5vdCBmaW5kIFBSIG51bWJlciwgaXMgdGhpcyBmcm9tIGEgcHVsbCByZXF1ZXN0PycpO1xuICAgIH1cbiAgICB0aGlzLmlzc3VlTnVtYmVyID0gdGhpcy5jb250ZXh0LnBheWxvYWQucHVsbF9yZXF1ZXN0Py5udW1iZXIhO1xuICB9XG5cbiAgLyoqXG4gICAqIEZpbmQgdGhlIHByZXZpb3VzIGNvbW1lbnQgd2l0aCB0aGUgZ2l2ZW4gaGFzaFxuICAgKlxuICAgKiBAcGFyYW0gaGFzaCB0aGUgdW5pcXVlIGhhc2ggaWRlbnRpZnlpbmcgdGhlIHN0YWdlIGNvbW1lbnQgdG8gbG9vayBmb3JcbiAgICogQHJldHVybnMgdGhlIFBSIGNvbW1lbnQgaWQgb3IgdW5kZWZpbmVkIGlmIHRoZXJlIGlzIG5vIHByZXZpb3VzIGNvbW1lbnRcbiAgICovXG4gIHB1YmxpYyBhc3luYyBmaW5kUHJldmlvdXMoaGFzaDogc3RyaW5nKTogUHJvbWlzZTxudW1iZXIgfCB1bmRlZmluZWQ+IHtcbiAgICBjb25zdCBjb21tZW50cyA9IGF3YWl0IHRoaXMub2N0b2tpdC5yZXN0Lmlzc3Vlcy5saXN0Q29tbWVudHMoe1xuICAgICAgLi4udGhpcy5jb250ZXh0LnJlcG8sXG4gICAgICBpc3N1ZV9udW1iZXI6IHRoaXMuaXNzdWVOdW1iZXIsXG4gICAgfSk7XG4gICAgcmV0dXJuIGNvbW1lbnRzLmRhdGEuZmluZChjb21tZW50ID0+IGNvbW1lbnQuYm9keT8uaW5jbHVkZXMoaGFzaCkpPy5pZDtcbiAgfVxuXG4gIC8qKlxuICAgKiBVcGRhdGUgYW4gZXhpc3RpbmcgY29tbWVudFxuICAgKlxuICAgKiBAcGFyYW0gaGFzaCB0aGUgdW5pcXVlIGhhc2ggaWRlbnRpZnlpbmcgdGhlIHN0YWdlIGNvbW1lbnQgdG8gbG9vayBmb3JcbiAgICogQHBhcmFtIGNvbnRlbnQgdGhlIGNvbnRlbnQgb2YgdGhlIGNvbW1lbnRcbiAgICogQHBhcmFtIGNvbW1lbnRJZCB0aGUgaWQgb2YgdGhlIGNvbW1lbnQgdG8gdXBkYXRlXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgdXBkYXRlQ29tbWVudChjb21tZW50SWQ6IG51bWJlciwgaGFzaDogc3RyaW5nLCBjb250ZW50OiBzdHJpbmdbXSkge1xuICAgIGF3YWl0IHRoaXMub2N0b2tpdC5yZXN0Lmlzc3Vlcy51cGRhdGVDb21tZW50KHtcbiAgICAgIC4uLnRoaXMuY29udGV4dC5yZXBvLFxuICAgICAgYm9keTogW1xuICAgICAgICBgPCEtLSBjZGsgZGlmZiBhY3Rpb24gd2l0aCBoYXNoICR7aGFzaH0gLS0+YCxcbiAgICAgICAgLi4uY29udGVudCxcbiAgICAgICAgJycsXG4gICAgICAgIGBfR2VuZXJhdGVkIGZvciBjb21taXQgJHt0aGlzLmNvbW1pdFNoYX1fYCxcbiAgICAgIF0uam9pbignXFxuJyksXG4gICAgICBjb21tZW50X2lkOiBjb21tZW50SWQsXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIGEgbmV3IGNvbW1lbnRcbiAgICpcbiAgICogQHBhcmFtIGhhc2ggdGhlIHVuaXF1ZSBoYXNoIGlkZW50aWZ5aW5nIHRoZSBzdGFnZSBjb21tZW50IHRvIGxvb2sgZm9yXG4gICAqIEBwYXJhbSBjb250ZW50IHRoZSBjb250ZW50IG9mIHRoZSBjb21tZW50XG4gICAqL1xuICBwdWJsaWMgYXN5bmMgY3JlYXRlQ29tbWVudChoYXNoOiBzdHJpbmcsIGNvbnRlbnQ6IHN0cmluZ1tdKSB7XG4gICAgYXdhaXQgdGhpcy5vY3Rva2l0LnJlc3QuaXNzdWVzLmNyZWF0ZUNvbW1lbnQoe1xuICAgICAgLi4udGhpcy5jb250ZXh0LnJlcG8sXG4gICAgICBib2R5OiBbXG4gICAgICAgIGA8IS0tIGNkayBkaWZmIGFjdGlvbiB3aXRoIGhhc2ggJHtoYXNofSAtLT5gLFxuICAgICAgICAuLi5jb250ZW50LFxuICAgICAgICAnJyxcbiAgICAgICAgYF9HZW5lcmF0ZWQgZm9yIGNvbW1pdCAke3RoaXMuY29tbWl0U2hhfV9gLFxuICAgICAgXS5qb2luKCdcXG4nKSxcbiAgICAgIGlzc3VlX251bWJlcjogdGhpcy5pc3N1ZU51bWJlcixcbiAgICB9KTtcbiAgfVxufVxuIl19","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.StackDiff = void 0;\nconst cloudformation_diff_1 = require(\"@aws-cdk/cloudformation-diff\");\nconst client_cloudformation_1 = require(\"@aws-sdk/client-cloudformation\");\nconst client_sts_1 = require(\"@aws-sdk/client-sts\");\nconst credential_providers_1 = require(\"@aws-sdk/credential-providers\");\n/**\n * StackDiff performs the diff on a stack\n */\nclass StackDiff {\n constructor(stack, allowedDestroyTypes) {\n this.stack = stack;\n this.allowedDestroyTypes = allowedDestroyTypes;\n let credentials;\n // if there is a lookup role then assume that, otherwise\n // just use the default credentials\n credentials = stack.lookupRole ? (0, credential_providers_1.fromTemporaryCredentials)({\n params: {\n RoleArn: stack.lookupRole.arn.replace('${AWS::Partition}', this.getPartition()),\n RoleSessionName: 'cdk-diff-action',\n ExternalId: stack.lookupRole.assumeRoleExternalId,\n DurationSeconds: 900,\n },\n }) : undefined;\n this.credentials = credentials;\n this.client = new client_cloudformation_1.CloudFormationClient({\n credentials,\n region: this.stack.region,\n });\n }\n getPartition() {\n var _a, _b;\n if ((_a = this.stack.region) === null || _a === void 0 ? void 0 : _a.startsWith('us-gov-')) {\n return 'aws-us-gov';\n }\n else if ((_b = this.stack.region) === null || _b === void 0 ? void 0 : _b.startsWith('cn-')) {\n return 'aws-cn';\n }\n else {\n return 'aws';\n }\n }\n /**\n * Validates the environment of the stack and whether it matches\n * the credentials being used by the GitHub action\n *\n * There are two cases that we care about:\n * 1. The stack has an account and region defined _and_ the credentials\n * being used by the GitHub action are for a different account and region.\n * In this case we throw an error because the stack diff would not be correct\n * 2. The stack has an account and region that are _not_ defined. In this case\n * We will return true to indicate that the environment is unknown. This will be used\n * later to print a warning in the stack diff.\n *\n * @returns whether or not the environment is unknown\n */\n async validateEnvironment() {\n let unknownAccount = false;\n let unknownRegion = false;\n const stsClient = new client_sts_1.STSClient({\n credentials: this.credentials,\n });\n const callerIdentity = new client_sts_1.GetCallerIdentityCommand({});\n const identity = await stsClient.send(callerIdentity);\n const configRegion = await this.client.config.region();\n if (!this.stack.region) {\n unknownRegion = true;\n }\n if (!this.stack.account) {\n unknownAccount = true;\n }\n if (this.stack.account && identity.Account !== this.stack.account) {\n throw new Error(`Credentials are for account ${identity.Account} but stack is in account ${this.stack.account}`);\n }\n if (this.stack.region && configRegion !== this.stack.region) {\n throw new Error(`Credentials are for region ${configRegion} but stack is in region ${this.stack.region}`);\n }\n if (unknownAccount || unknownRegion) {\n return `aws://${identity.Account}/${configRegion}`;\n }\n return;\n }\n /** Performs the diff on the CloudFormation stack\n * This reads the existing stack from CFN and then uses the cloudformation-diff\n * package to perform the diff and collect additional information on the type of changes\n */\n async diffStack() {\n const unknownEnv = await this.validateEnvironment();\n const cmd = new client_cloudformation_1.GetTemplateCommand({\n StackName: this.stack.name,\n });\n let existingTemplate = {};\n try {\n const res = await this.client.send(cmd);\n existingTemplate = res.TemplateBody ? JSON.parse(res.TemplateBody) : {};\n }\n catch (e) {\n if (e instanceof client_cloudformation_1.StackNotFoundException) {\n existingTemplate = {};\n }\n }\n try {\n const diff = (0, cloudformation_diff_1.fullDiff)(existingTemplate, this.stack.content);\n const changes = this.evaluateDiff(this.stack.name, diff);\n changes.unknownEnvironment = unknownEnv;\n return {\n diff,\n changes,\n };\n }\n catch (e) {\n console.error('Error getting remote template: ', e);\n throw e;\n }\n }\n evaluateDiff(templateId, templateDiff) {\n const changes = {\n createdResources: 0,\n removedResources: 0,\n updatedResources: 0,\n destructiveChanges: [],\n };\n // go through all the resource differences and check for any\n // \"destructive\" changes\n templateDiff.resources.forEachDifference((logicalId, change) => {\n var _a, _b, _c;\n // if the change is a removal it will not show up as a 'changeImpact'\n // so need to check for it separately, unless it is a resourceType that\n // has been \"allowed\" to be destroyed\n const resourceType = (_b = (_a = change.oldValue) === null || _a === void 0 ? void 0 : _a.Type) !== null && _b !== void 0 ? _b : (_c = change.newValue) === null || _c === void 0 ? void 0 : _c.Type;\n switch (resourceType) {\n case 'AWS::CDK::Metadata':\n return;\n case 'AWS::Lambda::Function':\n const keys = Object.keys(change.propertyUpdates);\n if (keys.length <= 2 &&\n keys.includes('Code') ||\n keys.includes('Metadata')) {\n return;\n }\n }\n if (change.isUpdate) {\n changes.updatedResources += 1;\n }\n else if (change.isRemoval) {\n changes.removedResources += 1;\n }\n else if (change.isAddition) {\n changes.createdResources += 1;\n }\n if (resourceType && this.allowedDestroyTypes.includes(resourceType)) {\n return;\n }\n if (change.isRemoval) {\n changes.destructiveChanges.push({\n impact: cloudformation_diff_1.ResourceImpact.WILL_DESTROY,\n logicalId,\n stackName: templateId,\n });\n }\n else {\n switch (change.changeImpact) {\n case cloudformation_diff_1.ResourceImpact.MAY_REPLACE:\n case cloudformation_diff_1.ResourceImpact.WILL_ORPHAN:\n case cloudformation_diff_1.ResourceImpact.WILL_DESTROY:\n case cloudformation_diff_1.ResourceImpact.WILL_REPLACE:\n changes.destructiveChanges.push({\n impact: change.changeImpact,\n logicalId,\n stackName: templateId,\n });\n break;\n }\n }\n });\n return changes;\n }\n}\nexports.StackDiff = StackDiff;\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlmZi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9kaWZmLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLHNFQUEwRztBQUMxRywwRUFBa0g7QUFDbEgsb0RBQTBFO0FBQzFFLHdFQUF5RTtBQTBEekU7O0dBRUc7QUFDSCxNQUFhLFNBQVM7SUFHcEIsWUFDbUIsS0FBZ0IsRUFDaEIsbUJBQTZCO1FBRDdCLFVBQUssR0FBTCxLQUFLLENBQVc7UUFDaEIsd0JBQW1CLEdBQW5CLG1CQUFtQixDQUFVO1FBRTlDLElBQUksV0FBc0QsQ0FBQztRQUMzRCx3REFBd0Q7UUFDeEQsbUNBQW1DO1FBQ25DLFdBQVcsR0FBRyxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxJQUFBLCtDQUF3QixFQUFDO1lBQ3hELE1BQU0sRUFBRTtnQkFDTixPQUFPLEVBQUUsS0FBSyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLG1CQUFtQixFQUFFLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztnQkFDL0UsZUFBZSxFQUFFLGlCQUFpQjtnQkFDbEMsVUFBVSxFQUFFLEtBQUssQ0FBQyxVQUFVLENBQUMsb0JBQW9CO2dCQUNqRCxlQUFlLEVBQUUsR0FBRzthQUNyQjtTQUNGLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO1FBQ2YsSUFBSSxDQUFDLFdBQVcsR0FBRyxXQUFXLENBQUM7UUFDL0IsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLDRDQUFvQixDQUFDO1lBQ3JDLFdBQVc7WUFDWCxNQUFNLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNO1NBQzFCLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFTyxZQUFZOztRQUNsQixJQUFJLE1BQUEsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLDBDQUFFLFVBQVUsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDO1lBQzdDLE9BQU8sWUFBWSxDQUFDO1FBQ3RCLENBQUM7YUFBTSxJQUFJLE1BQUEsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLDBDQUFFLFVBQVUsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQ2hELE9BQU8sUUFBUSxDQUFDO1FBQ2xCLENBQUM7YUFBTSxDQUFDO1lBQ04sT0FBTyxLQUFLLENBQUM7UUFDZixDQUFDO0lBQ0gsQ0FBQztJQUVEOzs7Ozs7Ozs7Ozs7O09BYUc7SUFDSyxLQUFLLENBQUMsbUJBQW1CO1FBQy9CLElBQUksY0FBYyxHQUFHLEtBQUssQ0FBQztRQUMzQixJQUFJLGFBQWEsR0FBRyxLQUFLLENBQUM7UUFDMUIsTUFBTSxTQUFTLEdBQUcsSUFBSSxzQkFBUyxDQUFDO1lBQzlCLFdBQVcsRUFBRSxJQUFJLENBQUMsV0FBVztTQUM5QixDQUFDLENBQUM7UUFDSCxNQUFNLGNBQWMsR0FBRyxJQUFJLHFDQUF3QixDQUFDLEVBQUcsQ0FBQyxDQUFDO1FBQ3pELE1BQU0sUUFBUSxHQUFHLE1BQU0sU0FBUyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUN0RCxNQUFNLFlBQVksR0FBRyxNQUFNLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ3ZELElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ3ZCLGFBQWEsR0FBRyxJQUFJLENBQUM7UUFDdkIsQ0FBQztRQUNELElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ3hCLGNBQWMsR0FBRyxJQUFJLENBQUM7UUFDeEIsQ0FBQztRQUNELElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLElBQUksUUFBUSxDQUFDLE9BQU8sS0FBSyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ2xFLE1BQU0sSUFBSSxLQUFLLENBQUMsK0JBQStCLFFBQVEsQ0FBQyxPQUFPLDRCQUE0QixJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7UUFDbkgsQ0FBQztRQUVELElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLElBQUksWUFBWSxLQUFLLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDNUQsTUFBTSxJQUFJLEtBQUssQ0FBQyw4QkFBOEIsWUFBWSwyQkFBMkIsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO1FBQzVHLENBQUM7UUFFRCxJQUFJLGNBQWMsSUFBSSxhQUFhLEVBQUUsQ0FBQztZQUNwQyxPQUFPLFNBQVMsUUFBUSxDQUFDLE9BQU8sSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUNyRCxDQUFDO1FBRUQsT0FBTztJQUNULENBQUM7SUFFRDs7O09BR0c7SUFDSSxLQUFLLENBQUMsU0FBUztRQUNwQixNQUFNLFVBQVUsR0FBRyxNQUFNLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO1FBRXBELE1BQU0sR0FBRyxHQUFHLElBQUksMENBQWtCLENBQUM7WUFDakMsU0FBUyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSTtTQUMzQixDQUFDLENBQUM7UUFDSCxJQUFJLGdCQUFnQixHQUEyQixFQUFFLENBQUM7UUFDbEQsSUFBSSxDQUFDO1lBQ0gsTUFBTSxHQUFHLEdBQUcsTUFBTSxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUN4QyxnQkFBZ0IsR0FBRyxHQUFHLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQzFFLENBQUM7UUFBQyxPQUFPLENBQU0sRUFBRSxDQUFDO1lBQ2hCLElBQUksQ0FBQyxZQUFZLDhDQUFzQixFQUFFLENBQUM7Z0JBQ3hDLGdCQUFnQixHQUFHLEVBQUUsQ0FBQztZQUN4QixDQUFDO1FBQ0gsQ0FBQztRQUNELElBQUksQ0FBQztZQUNILE1BQU0sSUFBSSxHQUFHLElBQUEsOEJBQVEsRUFBQyxnQkFBZ0IsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQzVELE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7WUFDekQsT0FBTyxDQUFDLGtCQUFrQixHQUFHLFVBQVUsQ0FBQztZQUN4QyxPQUFPO2dCQUNMLElBQUk7Z0JBQ0osT0FBTzthQUNSLENBQUM7UUFFSixDQUFDO1FBQUMsT0FBTyxDQUFNLEVBQUUsQ0FBQztZQUNoQixPQUFPLENBQUMsS0FBSyxDQUFDLGlDQUFpQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQ3BELE1BQU0sQ0FBQyxDQUFDO1FBQ1YsQ0FBQztJQUNILENBQUM7SUFFTyxZQUFZLENBQUMsVUFBa0IsRUFBRSxZQUEwQjtRQUNqRSxNQUFNLE9BQU8sR0FBa0I7WUFDN0IsZ0JBQWdCLEVBQUUsQ0FBQztZQUNuQixnQkFBZ0IsRUFBRSxDQUFDO1lBQ25CLGdCQUFnQixFQUFFLENBQUM7WUFDbkIsa0JBQWtCLEVBQUUsRUFBRTtTQUN2QixDQUFDO1FBQ0YsNERBQTREO1FBQzVELHdCQUF3QjtRQUN4QixZQUFZLENBQUMsU0FBUyxDQUFDLGlCQUFpQixDQUFDLENBQUMsU0FBaUIsRUFBRSxNQUEwQixFQUFFLEVBQUU7O1lBQ3pGLHFFQUFxRTtZQUNyRSx1RUFBdUU7WUFDdkUscUNBQXFDO1lBQ3JDLE1BQU0sWUFBWSxHQUFHLE1BQUEsTUFBQSxNQUFNLENBQUMsUUFBUSwwQ0FBRSxJQUFJLG1DQUFJLE1BQUEsTUFBTSxDQUFDLFFBQVEsMENBQUUsSUFBSSxDQUFDO1lBQ3BFLFFBQVEsWUFBWSxFQUFFLENBQUM7Z0JBQ3JCLEtBQUssb0JBQW9CO29CQUN2QixPQUFPO2dCQUNULEtBQUssdUJBQXVCO29CQUMxQixNQUFNLElBQUksR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxlQUFlLENBQUMsQ0FBQztvQkFDakQsSUFDRSxJQUFJLENBQUMsTUFBTSxJQUFJLENBQUM7d0JBQ2hCLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDO3dCQUNyQixJQUFJLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxFQUN6QixDQUFDO3dCQUNELE9BQU87b0JBQ1QsQ0FBQztZQUNMLENBQUM7WUFDRCxJQUFJLE1BQU0sQ0FBQyxRQUFRLEVBQUUsQ0FBQztnQkFDcEIsT0FBTyxDQUFDLGdCQUFnQixJQUFJLENBQUMsQ0FBQztZQUNoQyxDQUFDO2lCQUFNLElBQUksTUFBTSxDQUFDLFNBQVMsRUFBRSxDQUFDO2dCQUM1QixPQUFPLENBQUMsZ0JBQWdCLElBQUksQ0FBQyxDQUFDO1lBQ2hDLENBQUM7aUJBQU0sSUFBSSxNQUFNLENBQUMsVUFBVSxFQUFFLENBQUM7Z0JBQzdCLE9BQU8sQ0FBQyxnQkFBZ0IsSUFBSSxDQUFDLENBQUM7WUFDaEMsQ0FBQztZQUNELElBQUksWUFBWSxJQUFJLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQztnQkFDcEUsT0FBTztZQUNULENBQUM7WUFFRCxJQUFJLE1BQU0sQ0FBQyxTQUFTLEVBQUUsQ0FBQztnQkFDckIsT0FBTyxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQztvQkFDOUIsTUFBTSxFQUFFLG9DQUFjLENBQUMsWUFBWTtvQkFDbkMsU0FBUztvQkFDVCxTQUFTLEVBQUUsVUFBVTtpQkFDdEIsQ0FBQyxDQUFDO1lBQ0wsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLFFBQVEsTUFBTSxDQUFDLFlBQVksRUFBRSxDQUFDO29CQUM1QixLQUFLLG9DQUFjLENBQUMsV0FBVyxDQUFDO29CQUNoQyxLQUFLLG9DQUFjLENBQUMsV0FBVyxDQUFDO29CQUNoQyxLQUFLLG9DQUFjLENBQUMsWUFBWSxDQUFDO29CQUNqQyxLQUFLLG9DQUFjLENBQUMsWUFBWTt3QkFDOUIsT0FBTyxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQzs0QkFDOUIsTUFBTSxFQUFFLE1BQU0sQ0FBQyxZQUFZOzRCQUMzQixTQUFTOzRCQUNULFNBQVMsRUFBRSxVQUFVO3lCQUN0QixDQUFDLENBQUM7d0JBQ0gsTUFBTTtnQkFDVixDQUFDO1lBQ0gsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFDO1FBQ0gsT0FBTyxPQUFPLENBQUM7SUFDakIsQ0FBQztDQUNGO0FBOUtELDhCQThLQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFJlc291cmNlRGlmZmVyZW5jZSwgUmVzb3VyY2VJbXBhY3QsIFRlbXBsYXRlRGlmZiwgZnVsbERpZmYgfSBmcm9tICdAYXdzLWNkay9jbG91ZGZvcm1hdGlvbi1kaWZmJztcbmltcG9ydCB7IENsb3VkRm9ybWF0aW9uQ2xpZW50LCBHZXRUZW1wbGF0ZUNvbW1hbmQsIFN0YWNrTm90Rm91bmRFeGNlcHRpb24gfSBmcm9tICdAYXdzLXNkay9jbGllbnQtY2xvdWRmb3JtYXRpb24nO1xuaW1wb3J0IHsgU1RTQ2xpZW50LCBHZXRDYWxsZXJJZGVudGl0eUNvbW1hbmQgfSBmcm9tICdAYXdzLXNkay9jbGllbnQtc3RzJztcbmltcG9ydCB7IGZyb21UZW1wb3JhcnlDcmVkZW50aWFscyB9IGZyb20gJ0Bhd3Mtc2RrL2NyZWRlbnRpYWwtcHJvdmlkZXJzJztcbmltcG9ydCB7IEF3c0NyZWRlbnRpYWxJZGVudGl0eVByb3ZpZGVyIH0gZnJvbSAnQHNtaXRoeS90eXBlcyc7XG5pbXBvcnQgeyBTdGFja0luZm8gfSBmcm9tICcuL2Fzc2VtYmx5JztcblxuLyoqXG4gKiBEZXRhaWxzIG9uIHdoYXQgY2hhbmdlcyBhcmUgb2NjdXJyaW5nIGluIHRoaXMgc3RhY2tcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDaGFuZ2VEZXRhaWxzIHtcbiAgLyoqXG4gICAqIFRoZSBudW1iZXIgb2YgcmVzb3VyY2VzIHRoYXQgYXJlIGJlaW5nIHVwZGF0ZWRcbiAgICovXG4gIHVwZGF0ZWRSZXNvdXJjZXM6IG51bWJlcjtcblxuICAvKipcbiAgICogVGhlIG51bWJlciBvZiByZXNvdXJjZXMgdGhhdCBhcmUgYmVpbmcgcmVtb3ZlZFxuICAgKi9cbiAgcmVtb3ZlZFJlc291cmNlczogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBUaGUgbnVtYmVyIG9mIHJlc291cmNlcyB0aGF0IGFyZSBiZWluZyBjcmVhdGVkXG4gICAqL1xuICBjcmVhdGVkUmVzb3VyY2VzOiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIEluZm9ybWF0aW9uIG9uIGFueSBkZXN0cnVjdGl2ZSBjaGFuZ2VzXG4gICAqL1xuICBkZXN0cnVjdGl2ZUNoYW5nZXM6IERlc3RydWN0aXZlQ2hhbmdlW107XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhpcyBzdGFjayBoYXMgYW4gdW5rbm93biBlbnYuIElmIHRoYXQgaXMgdGhlIGNhc2VcbiAgICogdGhlbiB0aGlzIHJldHVybnMgdGhlIGVudmlyb25tZW50IGNyZWRlbnRpYWxzIHRoYXQgYXJlIGJlaW5nIHVzZWRcbiAgICogaW4gdGhlIGZvcm1hdCBhd3M6Ly88YWNjb3VudD4vPHJlZ2lvbj5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBhY2NvdW50IGlzIGtub3duXG4gICAqL1xuICB1bmtub3duRW52aXJvbm1lbnQ/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogSW5mb3JtYXRpb24gb24gYW55IGRlc3RydWN0aXZlIGNoYW5nZXNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBEZXN0cnVjdGl2ZUNoYW5nZSB7XG4gIC8qKlxuICAgKiBUaGUgbG9naWNhbElkIG9mIHRoZSByZXNvdXJjZSB3aXRoIGEgZGVzdHJ1Y3RpdmUgY2hhbmdlXG4gICAqL1xuICByZWFkb25seSBsb2dpY2FsSWQ6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIHN0YWNrIHRoYXQgY29udGFpbnMgdGhlIGRlc3RydWN0aXZlIGNoYW5nZVxuICAgKi9cbiAgcmVhZG9ubHkgc3RhY2tOYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBpbXBhY3Qgb2YgdGhlIGRlc3RydWN0aXZlIGNoYW5nZVxuICAgKi9cbiAgcmVhZG9ubHkgaW1wYWN0OiBSZXNvdXJjZUltcGFjdDtcbn1cblxuLyoqXG4gKiBTdGFja0RpZmYgcGVyZm9ybXMgdGhlIGRpZmYgb24gYSBzdGFja1xuICovXG5leHBvcnQgY2xhc3MgU3RhY2tEaWZmIHtcbiAgcHJpdmF0ZSByZWFkb25seSBjbGllbnQ6IENsb3VkRm9ybWF0aW9uQ2xpZW50O1xuICBwcml2YXRlIHJlYWRvbmx5IGNyZWRlbnRpYWxzOiBBd3NDcmVkZW50aWFsSWRlbnRpdHlQcm92aWRlciB8IHVuZGVmaW5lZDtcbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWFkb25seSBzdGFjazogU3RhY2tJbmZvLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgYWxsb3dlZERlc3Ryb3lUeXBlczogc3RyaW5nW10sXG4gICkge1xuICAgIGxldCBjcmVkZW50aWFsczogQXdzQ3JlZGVudGlhbElkZW50aXR5UHJvdmlkZXIgfCB1bmRlZmluZWQ7XG4gICAgLy8gaWYgdGhlcmUgaXMgYSBsb29rdXAgcm9sZSB0aGVuIGFzc3VtZSB0aGF0LCBvdGhlcndpc2VcbiAgICAvLyBqdXN0IHVzZSB0aGUgZGVmYXVsdCBjcmVkZW50aWFsc1xuICAgIGNyZWRlbnRpYWxzID0gc3RhY2subG9va3VwUm9sZSA/IGZyb21UZW1wb3JhcnlDcmVkZW50aWFscyh7XG4gICAgICBwYXJhbXM6IHtcbiAgICAgICAgUm9sZUFybjogc3RhY2subG9va3VwUm9sZS5hcm4ucmVwbGFjZSgnJHtBV1M6OlBhcnRpdGlvbn0nLCB0aGlzLmdldFBhcnRpdGlvbigpKSxcbiAgICAgICAgUm9sZVNlc3Npb25OYW1lOiAnY2RrLWRpZmYtYWN0aW9uJyxcbiAgICAgICAgRXh0ZXJuYWxJZDogc3RhY2subG9va3VwUm9sZS5hc3N1bWVSb2xlRXh0ZXJuYWxJZCxcbiAgICAgICAgRHVyYXRpb25TZWNvbmRzOiA5MDAsXG4gICAgICB9LFxuICAgIH0pIDogdW5kZWZpbmVkO1xuICAgIHRoaXMuY3JlZGVudGlhbHMgPSBjcmVkZW50aWFscztcbiAgICB0aGlzLmNsaWVudCA9IG5ldyBDbG91ZEZvcm1hdGlvbkNsaWVudCh7XG4gICAgICBjcmVkZW50aWFscyxcbiAgICAgIHJlZ2lvbjogdGhpcy5zdGFjay5yZWdpb24sXG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGdldFBhcnRpdGlvbigpOiBzdHJpbmcge1xuICAgIGlmICh0aGlzLnN0YWNrLnJlZ2lvbj8uc3RhcnRzV2l0aCgndXMtZ292LScpKSB7XG4gICAgICByZXR1cm4gJ2F3cy11cy1nb3YnO1xuICAgIH0gZWxzZSBpZiAodGhpcy5zdGFjay5yZWdpb24/LnN0YXJ0c1dpdGgoJ2NuLScpKSB7XG4gICAgICByZXR1cm4gJ2F3cy1jbic7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiAnYXdzJztcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogVmFsaWRhdGVzIHRoZSBlbnZpcm9ubWVudCBvZiB0aGUgc3RhY2sgYW5kIHdoZXRoZXIgaXQgbWF0Y2hlc1xuICAgKiB0aGUgY3JlZGVudGlhbHMgYmVpbmcgdXNlZCBieSB0aGUgR2l0SHViIGFjdGlvblxuICAgKlxuICAgKiBUaGVyZSBhcmUgdHdvIGNhc2VzIHRoYXQgd2UgY2FyZSBhYm91dDpcbiAgICogMS4gVGhlIHN0YWNrIGhhcyBhbiBhY2NvdW50IGFuZCByZWdpb24gZGVmaW5lZCBfYW5kXyB0aGUgY3JlZGVudGlhbHNcbiAgICogICBiZWluZyB1c2VkIGJ5IHRoZSBHaXRIdWIgYWN0aW9uIGFyZSBmb3IgYSBkaWZmZXJlbnQgYWNjb3VudCBhbmQgcmVnaW9uLlxuICAgKiAgIEluIHRoaXMgY2FzZSB3ZSB0aHJvdyBhbiBlcnJvciBiZWNhdXNlIHRoZSBzdGFjayBkaWZmIHdvdWxkIG5vdCBiZSBjb3JyZWN0XG4gICAqIDIuIFRoZSBzdGFjayBoYXMgYW4gYWNjb3VudCBhbmQgcmVnaW9uIHRoYXQgYXJlIF9ub3RfIGRlZmluZWQuIEluIHRoaXMgY2FzZVxuICAgKiAgICBXZSB3aWxsIHJldHVybiB0cnVlIHRvIGluZGljYXRlIHRoYXQgdGhlIGVudmlyb25tZW50IGlzIHVua25vd24uIFRoaXMgd2lsbCBiZSB1c2VkXG4gICAqICAgIGxhdGVyIHRvIHByaW50IGEgd2FybmluZyBpbiB0aGUgc3RhY2sgZGlmZi5cbiAgICpcbiAgICogQHJldHVybnMgd2hldGhlciBvciBub3QgdGhlIGVudmlyb25tZW50IGlzIHVua25vd25cbiAgICovXG4gIHByaXZhdGUgYXN5bmMgdmFsaWRhdGVFbnZpcm9ubWVudCgpOiBQcm9taXNlPHN0cmluZyB8IHVuZGVmaW5lZD4ge1xuICAgIGxldCB1bmtub3duQWNjb3VudCA9IGZhbHNlO1xuICAgIGxldCB1bmtub3duUmVnaW9uID0gZmFsc2U7XG4gICAgY29uc3Qgc3RzQ2xpZW50ID0gbmV3IFNUU0NsaWVudCh7XG4gICAgICBjcmVkZW50aWFsczogdGhpcy5jcmVkZW50aWFscyxcbiAgICB9KTtcbiAgICBjb25zdCBjYWxsZXJJZGVudGl0eSA9IG5ldyBHZXRDYWxsZXJJZGVudGl0eUNvbW1hbmQoeyB9KTtcbiAgICBjb25zdCBpZGVudGl0eSA9IGF3YWl0IHN0c0NsaWVudC5zZW5kKGNhbGxlcklkZW50aXR5KTtcbiAgICBjb25zdCBjb25maWdSZWdpb24gPSBhd2FpdCB0aGlzLmNsaWVudC5jb25maWcucmVnaW9uKCk7XG4gICAgaWYgKCF0aGlzLnN0YWNrLnJlZ2lvbikge1xuICAgICAgdW5rbm93blJlZ2lvbiA9IHRydWU7XG4gICAgfVxuICAgIGlmICghdGhpcy5zdGFjay5hY2NvdW50KSB7XG4gICAgICB1bmtub3duQWNjb3VudCA9IHRydWU7XG4gICAgfVxuICAgIGlmICh0aGlzLnN0YWNrLmFjY291bnQgJiYgaWRlbnRpdHkuQWNjb3VudCAhPT0gdGhpcy5zdGFjay5hY2NvdW50KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYENyZWRlbnRpYWxzIGFyZSBmb3IgYWNjb3VudCAke2lkZW50aXR5LkFjY291bnR9IGJ1dCBzdGFjayBpcyBpbiBhY2NvdW50ICR7dGhpcy5zdGFjay5hY2NvdW50fWApO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnN0YWNrLnJlZ2lvbiAmJiBjb25maWdSZWdpb24gIT09IHRoaXMuc3RhY2sucmVnaW9uKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYENyZWRlbnRpYWxzIGFyZSBmb3IgcmVnaW9uICR7Y29uZmlnUmVnaW9ufSBidXQgc3RhY2sgaXMgaW4gcmVnaW9uICR7dGhpcy5zdGFjay5yZWdpb259YCk7XG4gICAgfVxuXG4gICAgaWYgKHVua25vd25BY2NvdW50IHx8IHVua25vd25SZWdpb24pIHtcbiAgICAgIHJldHVybiBgYXdzOi8vJHtpZGVudGl0eS5BY2NvdW50fS8ke2NvbmZpZ1JlZ2lvbn1gO1xuICAgIH1cblxuICAgIHJldHVybjtcbiAgfVxuXG4gIC8qKiBQZXJmb3JtcyB0aGUgZGlmZiBvbiB0aGUgQ2xvdWRGb3JtYXRpb24gc3RhY2tcbiAgICogVGhpcyByZWFkcyB0aGUgZXhpc3Rpbmcgc3RhY2sgZnJvbSBDRk4gYW5kIHRoZW4gdXNlcyB0aGUgY2xvdWRmb3JtYXRpb24tZGlmZlxuICAgKiBwYWNrYWdlIHRvIHBlcmZvcm0gdGhlIGRpZmYgYW5kIGNvbGxlY3QgYWRkaXRpb25hbCBpbmZvcm1hdGlvbiBvbiB0aGUgdHlwZSBvZiBjaGFuZ2VzXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgZGlmZlN0YWNrKCk6IFByb21pc2U8eyBkaWZmOiBUZW1wbGF0ZURpZmY7IGNoYW5nZXM6IENoYW5nZURldGFpbHMgfT4ge1xuICAgIGNvbnN0IHVua25vd25FbnYgPSBhd2FpdCB0aGlzLnZhbGlkYXRlRW52aXJvbm1lbnQoKTtcblxuICAgIGNvbnN0IGNtZCA9IG5ldyBHZXRUZW1wbGF0ZUNvbW1hbmQoe1xuICAgICAgU3RhY2tOYW1lOiB0aGlzLnN0YWNrLm5hbWUsXG4gICAgfSk7XG4gICAgbGV0IGV4aXN0aW5nVGVtcGxhdGU6IHsgW2tleTogc3RyaW5nXTogYW55IH0gPSB7fTtcbiAgICB0cnkge1xuICAgICAgY29uc3QgcmVzID0gYXdhaXQgdGhpcy5jbGllbnQuc2VuZChjbWQpO1xuICAgICAgZXhpc3RpbmdUZW1wbGF0ZSA9IHJlcy5UZW1wbGF0ZUJvZHkgPyBKU09OLnBhcnNlKHJlcy5UZW1wbGF0ZUJvZHkpIDoge307XG4gICAgfSBjYXRjaCAoZTogYW55KSB7XG4gICAgICBpZiAoZSBpbnN0YW5jZW9mIFN0YWNrTm90Rm91bmRFeGNlcHRpb24pIHtcbiAgICAgICAgZXhpc3RpbmdUZW1wbGF0ZSA9IHt9O1xuICAgICAgfVxuICAgIH1cbiAgICB0cnkge1xuICAgICAgY29uc3QgZGlmZiA9IGZ1bGxEaWZmKGV4aXN0aW5nVGVtcGxhdGUsIHRoaXMuc3RhY2suY29udGVudCk7XG4gICAgICBjb25zdCBjaGFuZ2VzID0gdGhpcy5ldmFsdWF0ZURpZmYodGhpcy5zdGFjay5uYW1lLCBkaWZmKTtcbiAgICAgIGNoYW5nZXMudW5rbm93bkVudmlyb25tZW50ID0gdW5rbm93bkVudjtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGRpZmYsXG4gICAgICAgIGNoYW5nZXMsXG4gICAgICB9O1xuXG4gICAgfSBjYXRjaCAoZTogYW55KSB7XG4gICAgICBjb25zb2xlLmVycm9yKCdFcnJvciBnZXR0aW5nIHJlbW90ZSB0ZW1wbGF0ZTogJywgZSk7XG4gICAgICB0aHJvdyBlO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZXZhbHVhdGVEaWZmKHRlbXBsYXRlSWQ6IHN0cmluZywgdGVtcGxhdGVEaWZmOiBUZW1wbGF0ZURpZmYpOiBDaGFuZ2VEZXRhaWxzIHtcbiAgICBjb25zdCBjaGFuZ2VzOiBDaGFuZ2VEZXRhaWxzID0ge1xuICAgICAgY3JlYXRlZFJlc291cmNlczogMCxcbiAgICAgIHJlbW92ZWRSZXNvdXJjZXM6IDAsXG4gICAgICB1cGRhdGVkUmVzb3VyY2VzOiAwLFxuICAgICAgZGVzdHJ1Y3RpdmVDaGFuZ2VzOiBbXSxcbiAgICB9O1xuICAgIC8vIGdvIHRocm91Z2ggYWxsIHRoZSByZXNvdXJjZSBkaWZmZXJlbmNlcyBhbmQgY2hlY2sgZm9yIGFueVxuICAgIC8vIFwiZGVzdHJ1Y3RpdmVcIiBjaGFuZ2VzXG4gICAgdGVtcGxhdGVEaWZmLnJlc291cmNlcy5mb3JFYWNoRGlmZmVyZW5jZSgobG9naWNhbElkOiBzdHJpbmcsIGNoYW5nZTogUmVzb3VyY2VEaWZmZXJlbmNlKSA9PiB7XG4gICAgICAvLyBpZiB0aGUgY2hhbmdlIGlzIGEgcmVtb3ZhbCBpdCB3aWxsIG5vdCBzaG93IHVwIGFzIGEgJ2NoYW5nZUltcGFjdCdcbiAgICAgIC8vIHNvIG5lZWQgdG8gY2hlY2sgZm9yIGl0IHNlcGFyYXRlbHksIHVubGVzcyBpdCBpcyBhIHJlc291cmNlVHlwZSB0aGF0XG4gICAgICAvLyBoYXMgYmVlbiBcImFsbG93ZWRcIiB0byBiZSBkZXN0cm95ZWRcbiAgICAgIGNvbnN0IHJlc291cmNlVHlwZSA9IGNoYW5nZS5vbGRWYWx1ZT8uVHlwZSA/PyBjaGFuZ2UubmV3VmFsdWU/LlR5cGU7XG4gICAgICBzd2l0Y2ggKHJlc291cmNlVHlwZSkge1xuICAgICAgICBjYXNlICdBV1M6OkNESzo6TWV0YWRhdGEnOlxuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgY2FzZSAnQVdTOjpMYW1iZGE6OkZ1bmN0aW9uJzpcbiAgICAgICAgICBjb25zdCBrZXlzID0gT2JqZWN0LmtleXMoY2hhbmdlLnByb3BlcnR5VXBkYXRlcyk7XG4gICAgICAgICAgaWYgKFxuICAgICAgICAgICAga2V5cy5sZW5ndGggPD0gMiAmJlxuICAgICAgICAgICAga2V5cy5pbmNsdWRlcygnQ29kZScpIHx8XG4gICAgICAgICAgICBrZXlzLmluY2x1ZGVzKCdNZXRhZGF0YScpXG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKGNoYW5nZS5pc1VwZGF0ZSkge1xuICAgICAgICBjaGFuZ2VzLnVwZGF0ZWRSZXNvdXJjZXMgKz0gMTtcbiAgICAgIH0gZWxzZSBpZiAoY2hhbmdlLmlzUmVtb3ZhbCkge1xuICAgICAgICBjaGFuZ2VzLnJlbW92ZWRSZXNvdXJjZXMgKz0gMTtcbiAgICAgIH0gZWxzZSBpZiAoY2hhbmdlLmlzQWRkaXRpb24pIHtcbiAgICAgICAgY2hhbmdlcy5jcmVhdGVkUmVzb3VyY2VzICs9IDE7XG4gICAgICB9XG4gICAgICBpZiAocmVzb3VyY2VUeXBlICYmIHRoaXMuYWxsb3dlZERlc3Ryb3lUeXBlcy5pbmNsdWRlcyhyZXNvdXJjZVR5cGUpKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgaWYgKGNoYW5nZS5pc1JlbW92YWwpIHtcbiAgICAgICAgY2hhbmdlcy5kZXN0cnVjdGl2ZUNoYW5nZXMucHVzaCh7XG4gICAgICAgICAgaW1wYWN0OiBSZXNvdXJjZUltcGFjdC5XSUxMX0RFU1RST1ksXG4gICAgICAgICAgbG9naWNhbElkLFxuICAgICAgICAgIHN0YWNrTmFtZTogdGVtcGxhdGVJZCxcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzd2l0Y2ggKGNoYW5nZS5jaGFuZ2VJbXBhY3QpIHtcbiAgICAgICAgICBjYXNlIFJlc291cmNlSW1wYWN0Lk1BWV9SRVBMQUNFOlxuICAgICAgICAgIGNhc2UgUmVzb3VyY2VJbXBhY3QuV0lMTF9PUlBIQU46XG4gICAgICAgICAgY2FzZSBSZXNvdXJjZUltcGFjdC5XSUxMX0RFU1RST1k6XG4gICAgICAgICAgY2FzZSBSZXNvdXJjZUltcGFjdC5XSUxMX1JFUExBQ0U6XG4gICAgICAgICAgICBjaGFuZ2VzLmRlc3RydWN0aXZlQ2hhbmdlcy5wdXNoKHtcbiAgICAgICAgICAgICAgaW1wYWN0OiBjaGFuZ2UuY2hhbmdlSW1wYWN0LFxuICAgICAgICAgICAgICBsb2dpY2FsSWQsXG4gICAgICAgICAgICAgIHN0YWNrTmFtZTogdGVtcGxhdGVJZCxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gY2hhbmdlcztcbiAgfVxufVxuIl19","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst core = __importStar(require(\"@actions/core\"));\nconst action_1 = require(\"./action\");\n(0, action_1.run)().catch((error) => {\n core.setFailed(error.message);\n});\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLG9EQUFzQztBQUN0QyxxQ0FBK0I7QUFFL0IsSUFBQSxZQUFHLEdBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxLQUFVLEVBQUUsRUFBRTtJQUN6QixJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUNoQyxDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIGNvcmUgZnJvbSAnQGFjdGlvbnMvY29yZSc7XG5pbXBvcnQgeyBydW4gfSBmcm9tICcuL2FjdGlvbic7XG5cbnJ1bigpLmNhdGNoKChlcnJvcjogYW55KSA9PiB7XG4gIGNvcmUuc2V0RmFpbGVkKGVycm9yLm1lc3NhZ2UpO1xufSk7XG4iXX0=","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.StageProcessor = void 0;\nconst crypto = __importStar(require(\"crypto\"));\nconst stream_1 = require(\"stream\");\nconst string_decoder_1 = require(\"string_decoder\");\nconst cloudformation_diff_1 = require(\"@aws-cdk/cloudformation-diff\");\nconst diff_1 = require(\"./diff\");\n// the max comment length allowed by GitHub\nconst MAX_COMMENT_LENGTH = 65536;\n/**\n * StageProcessor processes a CDK stage and creates a comment on the GitHub PR\n * detailing the stack diffs\n */\nclass StageProcessor {\n constructor(stages, allowedDestroyTypes) {\n this.stages = stages;\n this.allowedDestroyTypes = allowedDestroyTypes;\n this.stageComments = {};\n this.stages.forEach(stage => {\n this.stageComments[stage.name] = {\n destructiveChanges: 0,\n stackComments: stage.stacks.reduce((prev, curr) => {\n prev[curr.name] = [];\n return prev;\n }, {}),\n hash: md5Hash(JSON.stringify({\n stageName: stage.name,\n ...stage.stacks.reduce((prev, curr) => {\n prev.stacks.push({\n name: curr.name,\n lookupRole: curr.lookupRole,\n account: curr.account,\n region: curr.region,\n });\n return prev;\n }, { stacks: [] }), // we don't want the content to be part of the hash\n })),\n };\n });\n }\n /**\n * Process all of the stages. Once this has been run\n * the comment can be created with `commentStages()`\n */\n async processStages(ignoreDestructiveChanges = []) {\n for (const stage of this.stages) {\n for (const stack of stage.stacks) {\n try {\n const { comment, changes } = await this.diffStack(stack);\n this.stageComments[stage.name].stackComments[stack.name].push(...comment);\n if (!ignoreDestructiveChanges.includes(stage.name)) {\n this.stageComments[stage.name].destructiveChanges += changes;\n }\n }\n catch (e) {\n console.error('Error processing stages: ', e);\n throw e;\n }\n }\n }\n }\n async commentStacks(comments) {\n for (const [stageName, stage] of Object.entries(this.stageComments)) {\n for (const [stackName, comment] of Object.entries(stage.stackComments)) {\n const hash = md5Hash(JSON.stringify({\n stageName,\n stackName,\n }));\n const stackComment = this.getCommentForStack(stageName, stackName, comment);\n if (stackComment.join('\\n').length > MAX_COMMENT_LENGTH) {\n throw new Error(`Comment for stack ${stackName} is too long, please report this as a bug https://github.com/corymhall/cdk-diff-action/issues/new`);\n }\n const previous = await comments.findPrevious(hash);\n if (previous) {\n await comments.updateComment(previous, hash, stackComment);\n }\n else {\n await comments.createComment(hash, stackComment);\n }\n }\n }\n }\n async commentStage(comments, hash, comment) {\n const previous = await comments.findPrevious(hash);\n if (previous) {\n await comments.updateComment(previous, hash, comment);\n }\n else {\n await comments.createComment(hash, comment);\n }\n }\n /**\n * Create the GitHub comment for the stage\n * This will try to create a single comment per stage, but if the comment\n * is too long it will create a comment per stack\n * @param comments the comments object to use to create the comment\n */\n async commentStages(comments) {\n for (const [stageName, info] of Object.entries(this.stageComments)) {\n const stageComment = this.getCommentForStage(stageName);\n if (stageComment.join('\\n').length > MAX_COMMENT_LENGTH) {\n await this.commentStacks(comments);\n }\n else {\n await this.commentStage(comments, info.hash, stageComment);\n }\n }\n }\n /**\n * Returns whether or not there are destructive changes in this stage\n */\n get hasDestructiveChanges() {\n for (const comments of Object.values(this.stageComments)) {\n if (comments.destructiveChanges) {\n return true;\n }\n }\n return false;\n }\n async diffStack(stack) {\n try {\n const stackDiff = new diff_1.StackDiff(stack, this.allowedDestroyTypes);\n const { diff, changes } = await stackDiff.diffStack();\n return {\n comment: this.formatStackComment(stack.name, diff, changes),\n changes: changes.destructiveChanges.length,\n };\n }\n catch (e) {\n console.error('Error performing stack diff: ', e);\n throw e;\n }\n }\n getEmoji(changes) {\n if (changes.destructiveChanges.length || changes.removedResources) {\n return ':x:';\n }\n else if (changes.updatedResources) {\n return ':yellow_circle:';\n }\n else if (changes.createdResources) {\n return ':sparkle:';\n }\n return ':white_check_mark:';\n }\n formatStackComment(stackName, diff, changes) {\n const output = [];\n const emoji = this.getEmoji(changes);\n if (diff.isEmpty) {\n output.push(`No Changes for stack: ${stackName} ${emoji}`);\n return output;\n }\n output.push(...[\n `#### Diff for stack: ${stackName} - ` +\n `***${changes.createdResources} to add, ${changes.updatedResources} to update, ${changes.removedResources} to destroy*** ` +\n emoji,\n '

Details',\n '',\n ]);\n if (changes.unknownEnvironment) {\n output.push('> [!INFO]\\n> ***Unknown Environment*** :information_source:');\n output.push('> This stack has an unknown environment which may mean the diff is performed against the wrong environment');\n output.push(`> Environmment used ${changes.unknownEnvironment}`);\n output.push('');\n }\n if (changes.destructiveChanges.length) {\n output.push('');\n output.push('> [!WARNING]\\n> ***Destructive Changes*** :bangbang:'),\n changes.destructiveChanges.forEach(change => {\n output.push(`> **Stack: ${change.stackName} - Resource: ${change.logicalId} - Impact:** ***${change.impact}***`);\n output.push('');\n });\n }\n const writable = new StringWritable({});\n (0, cloudformation_diff_1.formatDifferences)(writable, diff);\n output.push('');\n output.push('```shell');\n output.push(writable.data);\n output.push('```');\n output.push('
');\n output.push('');\n return output;\n }\n getCommentForStack(stageName, stackName, comment) {\n const output = [];\n if (!comment.length) {\n return output;\n }\n output.push(`### Diff for stack: ${stageName} / ${stackName}`);\n return output.concat(comment);\n }\n getCommentForStage(stageName) {\n const output = [];\n const stageComments = this.stageComments[stageName];\n const comments = Object.values(this.stageComments[stageName].stackComments).flatMap(x => x);\n if (!comments.length) {\n return output;\n }\n output.push(`### Diff for stage: ${stageName}`);\n if (stageComments.destructiveChanges) {\n output.push(`> [!WARNING]\\n> ${stageComments.destructiveChanges} Destructive Changes`);\n output.push('');\n }\n return output.concat(comments);\n }\n}\nexports.StageProcessor = StageProcessor;\nclass StringWritable extends stream_1.Writable {\n constructor(options) {\n super(options);\n this._decoder = new string_decoder_1.StringDecoder();\n this.data = '';\n }\n _write(chunk, encoding, callback) {\n if (encoding === 'buffer') {\n chunk = this._decoder.write(chunk);\n }\n this.data += chunk;\n callback();\n }\n _final(callback) {\n this.data += this._decoder.end();\n callback();\n }\n}\nfunction md5Hash(val) {\n return crypto.createHash('md5').update(val).digest('hex');\n}\n;\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhZ2UtcHJvY2Vzc29yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL3N0YWdlLXByb2Nlc3Nvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLCtDQUFpQztBQUNqQyxtQ0FBbUQ7QUFDbkQsbURBQStDO0FBQy9DLHNFQUErRTtBQUcvRSxpQ0FBa0Q7QUFFbEQsMkNBQTJDO0FBQzNDLE1BQU0sa0JBQWtCLEdBQUcsS0FBSyxDQUFDO0FBd0JqQzs7O0dBR0c7QUFDSCxNQUFhLGNBQWM7SUFFekIsWUFDbUIsTUFBbUIsRUFDbkIsbUJBQTZCO1FBRDdCLFdBQU0sR0FBTixNQUFNLENBQWE7UUFDbkIsd0JBQW1CLEdBQW5CLG1CQUFtQixDQUFVO1FBSC9CLGtCQUFhLEdBQTBDLEVBQUUsQ0FBQztRQUt6RSxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUMxQixJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRztnQkFDL0Isa0JBQWtCLEVBQUUsQ0FBQztnQkFDckIsYUFBYSxFQUFFLEtBQUssQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxFQUFFO29CQUNoRCxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztvQkFDckIsT0FBTyxJQUFJLENBQUM7Z0JBQ2QsQ0FBQyxFQUFFLEVBQXVDLENBQUM7Z0JBQzNDLElBQUksRUFBRSxPQUFPLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQztvQkFDM0IsU0FBUyxFQUFFLEtBQUssQ0FBQyxJQUFJO29CQUNyQixHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxFQUFFO3dCQUNwQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQzs0QkFDZixJ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LENBQUMsR0FBVztJQUMxQixPQUFPLE1BQU0sQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUM1RCxDQUFDO0FBQUEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIGNyeXB0byBmcm9tICdjcnlwdG8nO1xuaW1wb3J0IHsgV3JpdGFibGUsIFdyaXRhYmxlT3B0aW9ucyB9IGZyb20gJ3N0cmVhbSc7XG5pbXBvcnQgeyBTdHJpbmdEZWNvZGVyIH0gZnJvbSAnc3RyaW5nX2RlY29kZXInO1xuaW1wb3J0IHsgVGVtcGxhdGVEaWZmLCBmb3JtYXREaWZmZXJlbmNlcyB9IGZyb20gJ0Bhd3MtY2RrL2Nsb3VkZm9ybWF0aW9uLWRpZmYnO1xuaW1wb3J0IHsgU3RhY2tJbmZvLCBTdGFnZUluZm8gfSBmcm9tICcuL2Fzc2VtYmx5JztcbmltcG9ydCB7IENvbW1lbnRzIH0gZnJvbSAnLi9jb21tZW50JztcbmltcG9ydCB7IENoYW5nZURldGFpbHMsIFN0YWNrRGlmZiB9IGZyb20gJy4vZGlmZic7XG5cbi8vIHRoZSBtYXggY29tbWVudCBsZW5ndGggYWxsb3dlZCBieSBHaXRIdWJcbmNvbnN0IE1BWF9DT01NRU5UX0xFTkdUSCA9IDY1NTM2O1xuXG4vKipcbiAqIEluZm9ybWF0aW9uIG5lZWRlZCB0byBtYWtlIGEgY29tbWVudCBmb3IgYSBDREsgU3RhZ2VcbiAqL1xuaW50ZXJmYWNlIFN0YWdlQ29tbWVudCB7XG4gIC8qKlxuICAgKiBUaGUgZnVsbCBjb21tZW50IGZvciBlYWNoIHN0YWNrLiBUaGUgbGlzdCB3aWxsIGJlIGpvaW5lZCB3aXRoIFxcblxuICAgKi9cbiAgc3RhY2tDb21tZW50czogeyBbc3RhY2tOYW1lOiBzdHJpbmddOiBzdHJpbmdbXSB9O1xuXG4gIC8qKlxuICAgKiBUaGUgdW5pcXVlIGhhc2ggZm9yIHRoZSBzdGFnZSBjb21tZW50XG4gICAqIFRoaXMgd2lsbCBiZSB1c2VkIHRvIGxvb2t1cCB0aGUgc3RhZ2UgY29tbWVudCBvbiB0aGUgUFJcbiAgICogc28gdGhhdCBpdCBjYW4gYmUgb3ZlcndyaXR0ZW5cbiAgICovXG4gIGhhc2g6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIG51bWJlciBvZiBkZXN0cnVjdGl2ZSBjaGFuZ2VzIGluIHRoaXMgc3RhZ2VcbiAgICovXG4gIGRlc3RydWN0aXZlQ2hhbmdlczogbnVtYmVyO1xufVxuXG4vKipcbiAqIFN0YWdlUHJvY2Vzc29yIHByb2Nlc3NlcyBhIENESyBzdGFnZSBhbmQgY3JlYXRlcyBhIGNvbW1lbnQgb24gdGhlIEdpdEh1YiBQUlxuICogZGV0YWlsaW5nIHRoZSBzdGFjayBkaWZmc1xuICovXG5leHBvcnQgY2xhc3MgU3RhZ2VQcm9jZXNzb3Ige1xuICBwcml2YXRlIHJlYWRvbmx5IHN0YWdlQ29tbWVudHM6IHsgW3N0YWdlTmFtZTogc3RyaW5nXTogU3RhZ2VDb21tZW50IH0gPSB7fTtcbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWFkb25seSBzdGFnZXM6IFN0YWdlSW5mb1tdLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgYWxsb3dlZERlc3Ryb3lUeXBlczogc3RyaW5nW10sXG4gICkge1xuICAgIHRoaXMuc3RhZ2VzLmZvckVhY2goc3RhZ2UgPT4ge1xuICAgICAgdGhpcy5zdGFnZUNvbW1lbnRzW3N0YWdlLm5hbWVdID0ge1xuICAgICAgICBkZXN0cnVjdGl2ZUNoYW5nZXM6IDAsXG4gICAgICAgIHN0YWNrQ29tbWVudHM6IHN0YWdlLnN0YWNrcy5yZWR1Y2UoKHByZXYsIGN1cnIpID0+IHtcbiAgICAgICAgICBwcmV2W2N1cnIubmFtZV0gPSBbXTtcbiAgICAgICAgICByZXR1cm4gcHJldjtcbiAgICAgICAgfSwge30gYXMgeyBbc3RhY2tOYW1lOiBzdHJpbmddOiBzdHJpbmdbXSB9KSxcbiAgICAgICAgaGFzaDogbWQ1SGFzaChKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgICAgc3RhZ2VOYW1lOiBzdGFnZS5uYW1lLFxuICAgICAgICAgIC4uLnN0YWdlLnN0YWNrcy5yZWR1Y2UoKHByZXYsIGN1cnIpID0+IHtcbiAgICAgICAgICAgIHByZXYuc3RhY2tzLnB1c2goe1xuICAgICAgICAgICAgICBuYW1lOiBjdXJyLm5hbWUsXG4gICAgICAgICAgICAgIGxvb2t1cFJvbGU6IGN1cnIubG9va3VwUm9sZSxcbiAgICAgICAgICAgICAgYWNjb3VudDogY3Vyci5hY2NvdW50LFxuICAgICAgICAgICAgICByZWdpb246IGN1cnIucmVnaW9uLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICByZXR1cm4gcHJldjtcbiAgICAgICAgICB9LCB7IHN0YWNrczogW10gfSBhcyB7IHN0YWNrczogT21pdDxTdGFja0luZm8sICdjb250ZW50Jz5bXSB9KSwgLy8gd2UgZG9uJ3Qgd2FudCB0aGUgY29udGVudCB0byBiZSBwYXJ0IG9mIHRoZSBoYXNoXG4gICAgICAgIH0pKSxcbiAgICAgIH07XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogUHJvY2VzcyBhbGwgb2YgdGhlIHN0YWdlcy4gT25jZSB0aGlzIGhhcyBiZWVuIHJ1blxuICAgKiB0aGUgY29tbWVudCBjYW4gYmUgY3JlYXRlZCB3aXRoIGBjb21tZW50U3RhZ2VzKClgXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgcHJvY2Vzc1N0YWdlcyhpZ25vcmVEZXN0cnVjdGl2ZUNoYW5nZXM6IHN0cmluZ1tdID0gW10pIHtcbiAgICBmb3IgKGNvbnN0IHN0YWdlIG9mIHRoaXMuc3RhZ2VzKSB7XG4gICAgICBmb3IgKGNvbnN0IHN0YWNrIG9mIHN0YWdlLnN0YWNrcykge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGNvbnN0IHsgY29tbWVudCwgY2hhbmdlcyB9ID0gYXdhaXQgdGhpcy5kaWZmU3RhY2soc3RhY2spO1xuICAgICAgICAgIHRoaXMuc3RhZ2VDb21tZW50c1tzdGFnZS5uYW1lXS5zdGFja0NvbW1lbnRzW3N0YWNrLm5hbWVdLnB1c2goLi4uY29tbWVudCk7XG4gICAgICAgICAgaWYgKCFpZ25vcmVEZXN0cnVjdGl2ZUNoYW5nZXMuaW5jbHVkZXMoc3RhZ2UubmFtZSkpIHtcbiAgICAgICAgICAgIHRoaXMuc3RhZ2VDb21tZW50c1tzdGFnZS5uYW1lXS5kZXN0cnVjdGl2ZUNoYW5nZXMgKz0gY2hhbmdlcztcbiAgICAgICAgICB9XG4gICAgICAgIH0gY2F0Y2ggKGU6IGFueSkge1xuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIHByb2Nlc3Npbmcgc3RhZ2VzOiAnLCBlKTtcbiAgICAgICAgICB0aHJvdyBlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBjb21tZW50U3RhY2tzKGNvbW1lbnRzOiBDb21tZW50cykge1xuICAgIGZvciAoY29uc3QgW3N0YWdlTmFtZSwgc3RhZ2VdIG9mIE9iamVjdC5lbnRyaWVzKHRoaXMuc3RhZ2VDb21tZW50cykpIHtcbiAgICAgIGZvciAoY29uc3QgW3N0YWNrTmFtZSwgY29tbWVudF0gb2YgT2JqZWN0LmVudHJpZXMoc3RhZ2Uuc3RhY2tDb21tZW50cykpIHtcbiAgICAgICAgY29uc3QgaGFzaCA9IG1kNUhhc2goSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICAgIHN0YWdlTmFtZSxcbiAgICAgICAgICBzdGFja05hbWUsXG4gICAgICAgIH0pKTtcbiAgICAgICAgY29uc3Qgc3RhY2tDb21tZW50ID0gdGhpcy5nZXRDb21tZW50Rm9yU3RhY2soc3RhZ2VOYW1lLCBzdGFja05hbWUsIGNvbW1lbnQpO1xuICAgICAgICBpZiAoc3RhY2tDb21tZW50LmpvaW4oJ1xcbicpLmxlbmd0aCA+IE1BWF9DT01NRU5UX0xFTkdUSCkge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgQ29tbWVudCBmb3Igc3RhY2sgJHtzdGFja05hbWV9IGlzIHRvbyBsb25nLCBwbGVhc2UgcmVwb3J0IHRoaXMgYXMgYSBidWcgaHR0cHM6Ly9naXRodWIuY29tL2NvcnltaGFsbC9jZGstZGlmZi1hY3Rpb24vaXNzdWVzL25ld2ApO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHByZXZpb3VzID0gYXdhaXQgY29tbWVudHMuZmluZFByZXZpb3VzKGhhc2gpO1xuICAgICAgICBpZiAocHJldmlvdXMpIHtcbiAgICAgICAgICBhd2FpdCBjb21tZW50cy51cGRhdGVDb21tZW50KHByZXZpb3VzLCBoYXNoLCBzdGFja0NvbW1lbnQpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGF3YWl0IGNvbW1lbnRzLmNyZWF0ZUNvbW1lbnQoaGFzaCwgc3RhY2tDb21tZW50KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgY29tbWVudFN0YWdlKGNvbW1lbnRzOiBDb21tZW50cywgaGFzaDogc3RyaW5nLCBjb21tZW50OiBzdHJpbmdbXSkge1xuICAgIGNvbnN0IHByZXZpb3VzID0gYXdhaXQgY29tbWVudHMuZmluZFByZXZpb3VzKGhhc2gpO1xuICAgIGlmIChwcmV2aW91cykge1xuICAgICAgYXdhaXQgY29tbWVudHMudXBkYXRlQ29tbWVudChwcmV2aW91cywgaGFzaCwgY29tbWVudCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGF3YWl0IGNvbW1lbnRzLmNyZWF0ZUNvbW1lbnQoaGFzaCwgY29tbWVudCk7XG4gICAgfVxuXG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIHRoZSBHaXRIdWIgY29tbWVudCBmb3IgdGhlIHN0YWdlXG4gICAqIFRoaXMgd2lsbCB0cnkgdG8gY3JlYXRlIGEgc2luZ2xlIGNvbW1lbnQgcGVyIHN0YWdlLCBidXQgaWYgdGhlIGNvbW1lbnRcbiAgICogaXMgdG9vIGxvbmcgaXQgd2lsbCBjcmVhdGUgYSBjb21tZW50IHBlciBzdGFja1xuICAgKiBAcGFyYW0gY29tbWVudHMgdGhlIGNvbW1lbnRzIG9iamVjdCB0byB1c2UgdG8gY3JlYXRlIHRoZSBjb21tZW50XG4gICAqL1xuICBwdWJsaWMgYXN5bmMgY29tbWVudFN0YWdlcyhjb21tZW50czogQ29tbWVudHMpIHtcbiAgICBmb3IgKGNvbnN0IFtzdGFnZU5hbWUsIGluZm9dIG9mIE9iamVjdC5lbnRyaWVzKHRoaXMuc3RhZ2VDb21tZW50cykpIHtcbiAgICAgIGNvbnN0IHN0YWdlQ29tbWVudCA9IHRoaXMuZ2V0Q29tbWVudEZvclN0YWdlKHN0YWdlTmFtZSk7XG4gICAgICBpZiAoc3RhZ2VDb21tZW50LmpvaW4oJ1xcbicpLmxlbmd0aCA+IE1BWF9DT01NRU5UX0xFTkdUSCkge1xuICAgICAgICBhd2FpdCB0aGlzLmNvbW1lbnRTdGFja3MoY29tbWVudHMpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgYXdhaXQgdGhpcy5jb21tZW50U3RhZ2UoY29tbWVudHMsIGluZm8uaGFzaCwgc3RhZ2VDb21tZW50KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB3aGV0aGVyIG9yIG5vdCB0aGVyZSBhcmUgZGVzdHJ1Y3RpdmUgY2hhbmdlcyBpbiB0aGlzIHN0YWdlXG4gICAqL1xuICBwdWJsaWMgZ2V0IGhhc0Rlc3RydWN0aXZlQ2hhbmdlcygpOiBib29sZWFuIHtcbiAgICBmb3IgKGNvbnN0IGNvbW1lbnRzIG9mIE9iamVjdC52YWx1ZXModGhpcy5zdGFnZUNvbW1lbnRzKSkge1xuICAgICAgaWYgKGNvbW1lbnRzLmRlc3RydWN0aXZlQ2hhbmdlcykge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBkaWZmU3RhY2soc3RhY2s6IFN0YWNrSW5mbyk6IFByb21pc2U8e2NvbW1lbnQ6IHN0cmluZ1tdOyBjaGFuZ2VzOiBudW1iZXJ9PiB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHN0YWNrRGlmZiA9IG5ldyBTdGFja0RpZmYoc3RhY2ssIHRoaXMuYWxsb3dlZERlc3Ryb3lUeXBlcyk7XG4gICAgICBjb25zdCB7IGRpZmYsIGNoYW5nZXMgfSA9IGF3YWl0IHN0YWNrRGlmZi5kaWZmU3RhY2soKTtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGNvbW1lbnQ6IHRoaXMuZm9ybWF0U3RhY2tDb21tZW50KHN0YWNrLm5hbWUsIGRpZmYsIGNoYW5nZXMpLFxuICAgICAgICBjaGFuZ2VzOiBjaGFuZ2VzLmRlc3RydWN0aXZlQ2hhbmdlcy5sZW5ndGgsXG4gICAgICB9O1xuXG4gICAgfSBjYXRjaCAoZTogYW55KSB7XG4gICAgICBjb25zb2xlLmVycm9yKCdFcnJvciBwZXJmb3JtaW5nIHN0YWNrIGRpZmY6ICcsIGUpO1xuICAgICAgdGhyb3cgZTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGdldEVtb2ppKGNoYW5nZXM6IENoYW5nZURldGFpbHMpOiBzdHJpbmcge1xuICAgIGlmIChjaGFuZ2VzLmRlc3RydWN0aXZlQ2hhbmdlcy5sZW5ndGggfHwgY2hhbmdlcy5yZW1vdmVkUmVzb3VyY2VzKSB7XG4gICAgICByZXR1cm4gJzp4Oic7XG4gICAgfSBlbHNlIGlmIChjaGFuZ2VzLnVwZGF0ZWRSZXNvdXJjZXMpIHtcbiAgICAgIHJldHVybiAnOnllbGxvd19jaXJjbGU6JztcbiAgICB9IGVsc2UgaWYgKGNoYW5nZXMuY3JlYXRlZFJlc291cmNlcykge1xuICAgICAgcmV0dXJuICc6c3BhcmtsZTonO1xuICAgIH1cbiAgICByZXR1cm4gJzp3aGl0ZV9jaGVja19tYXJrOic7XG4gIH1cblxuICBwcml2YXRlIGZvcm1hdFN0YWNrQ29tbWVudChzdGFja05hbWU6IHN0cmluZywgZGlmZjogVGVtcGxhdGVEaWZmLCBjaGFuZ2VzOiBDaGFuZ2VEZXRhaWxzKTogc3RyaW5nW10ge1xuICAgIGNvbnN0IG91dHB1dDogc3RyaW5nW10gPSBbXTtcbiAgICBjb25zdCBlbW9qaSA9IHRoaXMuZ2V0RW1vamkoY2hhbmdlcyk7XG4gICAgaWYgKGRpZmYuaXNFbXB0eSkge1xuICAgICAgb3V0cHV0LnB1c2goYE5vIENoYW5nZXMgZm9yIHN0YWNrOiAke3N0YWNrTmFtZX0gJHtlbW9qaX1gKTtcbiAgICAgIHJldHVybiBvdXRwdXQ7XG4gICAgfVxuICAgIG91dHB1dC5wdXNoKC4uLltcbiAgICAgIGAjIyMjIERpZmYgZm9yIHN0YWNrOiAke3N0YWNrTmFtZX0gLSBgK1xuICAgICAgICBgKioqJHtjaGFuZ2VzLmNyZWF0ZWRSZXNvdXJjZXN9IHRvIGFkZCwgJHtjaGFuZ2VzLnVwZGF0ZWRSZXNvdXJjZXN9IHRvIHVwZGF0ZSwgJHtjaGFuZ2VzLnJlbW92ZWRSZXNvdXJjZXN9IHRvIGRlc3Ryb3kqKiogIGArXG4gICAgICAgIGVtb2ppLFxuICAgICAgJzxkZXRhaWxzPjxzdW1tYXJ5PkRldGFpbHM8L3N1bW1hcnk+JyxcbiAgICAgICcnLFxuICAgIF0pO1xuICAgIGlmIChjaGFuZ2VzLnVua25vd25FbnZpcm9ubWVudCkge1xuICAgICAgb3V0cHV0LnB1c2goJz4gWyFJTkZPXVxcbj4gKioqVW5rbm93biBFbnZpcm9ubWVudCoqKiA6aW5mb3JtYXRpb25fc291cmNlOicpO1xuICAgICAgb3V0cHV0LnB1c2goJz4gVGhpcyBzdGFjayBoYXMgYW4gdW5rbm93biBlbnZpcm9ubWVudCB3aGljaCBtYXkgbWVhbiB0aGUgZGlmZiBpcyBwZXJmb3JtZWQgYWdhaW5zdCB0aGUgd3JvbmcgZW52aXJvbm1lbnQnKTtcbiAgICAgIG91dHB1dC5wdXNoKGA+IEVudmlyb25tbWVudCB1c2VkICR7Y2hhbmdlcy51bmtub3duRW52aXJvbm1lbnR9YCk7XG4gICAgICBvdXRwdXQucHVzaCgnJyk7XG4gICAgfVxuICAgIGlmIChjaGFuZ2VzLmRlc3RydWN0aXZlQ2hhbmdlcy5sZW5ndGgpIHtcbiAgICAgIG91dHB1dC5wdXNoKCcnKTtcbiAgICAgIG91dHB1dC5wdXNoKCc+IFshV0FSTklOR11cXG4+ICoqKkRlc3RydWN0aXZlIENoYW5nZXMqKiogOmJhbmdiYW5nOicpLFxuICAgICAgY2hhbmdlcy5kZXN0cnVjdGl2ZUNoYW5nZXMuZm9yRWFjaChjaGFuZ2UgPT4ge1xuICAgICAgICBvdXRwdXQucHVzaChcbiAgICAgICAgICBgPiAqKlN0YWNrOiAke2NoYW5nZS5zdGFja05hbWV9IC0gUmVzb3VyY2U6ICR7Y2hhbmdlLmxvZ2ljYWxJZH0gLSBJbXBhY3Q6KiogKioqJHtjaGFuZ2UuaW1wYWN0fSoqKmAsXG4gICAgICAgICk7XG4gICAgICAgIG91dHB1dC5wdXNoKCcnKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgICBjb25zdCB3cml0YWJsZSA9IG5ldyBTdHJpbmdXcml0YWJsZSh7fSk7XG4gICAgZm9ybWF0RGlmZmVyZW5jZXMod3JpdGFibGUsIGRpZmYpO1xuXG4gICAgb3V0cHV0LnB1c2goJycpO1xuICAgIG91dHB1dC5wdXNoKCdgYGBzaGVsbCcpO1xuICAgIG91dHB1dC5wdXNoKHdyaXRhYmxlLmRhdGEpO1xuICAgIG91dHB1dC5wdXNoKCdgYGAnKTtcbiAgICBvdXRwdXQucHVzaCgnPC9kZXRhaWxzPicpO1xuICAgIG91dHB1dC5wdXNoKCcnKTtcbiAgICByZXR1cm4gb3V0cHV0O1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRDb21tZW50Rm9yU3RhY2soc3RhZ2VOYW1lOiBzdHJpbmcsIHN0YWNrTmFtZTogc3RyaW5nLCBjb21tZW50OiBzdHJpbmdbXSk6IHN0cmluZ1tdIHtcbiAgICBjb25zdCBvdXRwdXQ6IHN0cmluZ1tdID0gW107XG4gICAgaWYgKCFjb21tZW50Lmxlbmd0aCkge1xuICAgICAgcmV0dXJuIG91dHB1dDtcbiAgICB9XG4gICAgb3V0cHV0LnB1c2goYCMjIyBEaWZmIGZvciBzdGFjazogJHtzdGFnZU5hbWV9IC8gJHtzdGFja05hbWV9YCk7XG5cbiAgICByZXR1cm4gb3V0cHV0LmNvbmNhdChjb21tZW50KTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0Q29tbWVudEZvclN0YWdlKHN0YWdlTmFtZTogc3RyaW5nKTogc3RyaW5nW10ge1xuICAgIGNvbnN0IG91dHB1dDogc3RyaW5nW10gPSBbXTtcbiAgICBjb25zdCBzdGFnZUNvbW1lbnRzID0gdGhpcy5zdGFnZUNvbW1lbnRzW3N0YWdlTmFtZV07XG4gICAgY29uc3QgY29tbWVudHMgPSBPYmplY3QudmFsdWVzKHRoaXMuc3RhZ2VDb21tZW50c1tzdGFnZU5hbWVdLnN0YWNrQ29tbWVudHMpLmZsYXRNYXAoeCA9PiB4KTtcbiAgICBpZiAoIWNvbW1lbnRzLmxlbmd0aCkge1xuICAgICAgcmV0dXJuIG91dHB1dDtcbiAgICB9XG4gICAgb3V0cHV0LnB1c2goYCMjIyBEaWZmIGZvciBzdGFnZTogJHtzdGFnZU5hbWV9YCk7XG5cbiAgICBpZiAoc3RhZ2VDb21tZW50cy5kZXN0cnVjdGl2ZUNoYW5nZXMpIHtcbiAgICAgIG91dHB1dC5wdXNoKGA+IFshV0FSTklOR11cXG4+ICR7c3RhZ2VDb21tZW50cy5kZXN0cnVjdGl2ZUNoYW5nZXN9IERlc3RydWN0aXZlIENoYW5nZXNgKTtcbiAgICAgIG91dHB1dC5wdXNoKCcnKTtcbiAgICB9XG4gICAgcmV0dXJuIG91dHB1dC5jb25jYXQoY29tbWVudHMpO1xuICB9XG59XG5cbmNsYXNzIFN0cmluZ1dyaXRhYmxlIGV4dGVuZHMgV3JpdGFibGUge1xuICBwdWJsaWMgZGF0YTogc3RyaW5nO1xuICBwcml2YXRlIF9kZWNvZGVyOiBTdHJpbmdEZWNvZGVyO1xuICBjb25zdHJ1Y3RvcihvcHRpb25zOiBXcml0YWJsZU9wdGlvbnMpIHtcbiAgICBzdXBlcihvcHRpb25zKTtcbiAgICB0aGlzLl9kZWNvZGVyID0gbmV3IFN0cmluZ0RlY29kZXIoKTtcbiAgICB0aGlzLmRhdGEgPSAnJztcbiAgfVxuXG4gIF93cml0ZShjaHVuazogYW55LCBlbmNvZGluZzogc3RyaW5nLCBjYWxsYmFjazogKGVycm9yPzogRXJyb3IgfCBudWxsKSA9PiB2b2lkKTogdm9pZCB7XG4gICAgaWYgKGVuY29kaW5nID09PSAnYnVmZmVyJykge1xuICAgICAgY2h1bmsgPSB0aGlzLl9kZWNvZGVyLndyaXRlKGNodW5rKTtcbiAgICB9XG5cbiAgICB0aGlzLmRhdGEgKz0gY2h1bms7XG4gICAgY2FsbGJhY2soKTtcbiAgfVxuXG4gIF9maW5hbChjYWxsYmFjazogKGVycm9yPzogRXJyb3IgfCBudWxsKSA9PiB2b2lkKTogdm9pZCB7XG4gICAgdGhpcy5kYXRhICs9IHRoaXMuX2RlY29kZXIuZW5kKCk7XG4gICAgY2FsbGJhY2soKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBtZDVIYXNoKHZhbDogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIGNyeXB0by5jcmVhdGVIYXNoKCdtZDUnKS51cGRhdGUodmFsKS5kaWdlc3QoJ2hleCcpO1xufTtcbiJdfQ==","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.issue = exports.issueCommand = void 0;\nconst os = __importStar(require(\"os\"));\nconst utils_1 = require(\"./utils\");\n/**\n * Commands\n *\n * Command Format:\n * ::name key=value,key=value::message\n *\n * Examples:\n * ::warning::This is the message\n * ::set-env name=MY_VAR::some value\n */\nfunction issueCommand(command, properties, message) {\n const cmd = new Command(command, properties, message);\n process.stdout.write(cmd.toString() + os.EOL);\n}\nexports.issueCommand = issueCommand;\nfunction issue(name, message = '') {\n issueCommand(name, {}, message);\n}\nexports.issue = issue;\nconst CMD_STRING = '::';\nclass Command {\n constructor(command, properties, message) {\n if (!command) {\n command = 'missing.command';\n }\n this.command = command;\n this.properties = properties;\n this.message = message;\n }\n toString() {\n let cmdStr = CMD_STRING + this.command;\n if (this.properties && Object.keys(this.properties).length > 0) {\n cmdStr += ' ';\n let first = true;\n for (const key in this.properties) {\n if (this.properties.hasOwnProperty(key)) {\n const val = this.properties[key];\n if (val) {\n if (first) {\n first = false;\n }\n else {\n cmdStr += ',';\n }\n cmdStr += `${key}=${escapeProperty(val)}`;\n }\n }\n }\n }\n cmdStr += `${CMD_STRING}${escapeData(this.message)}`;\n return cmdStr;\n }\n}\nfunction escapeData(s) {\n return utils_1.toCommandValue(s)\n .replace(/%/g, '%25')\n .replace(/\\r/g, '%0D')\n .replace(/\\n/g, '%0A');\n}\nfunction escapeProperty(s) {\n return utils_1.toCommandValue(s)\n .replace(/%/g, '%25')\n .replace(/\\r/g, '%0D')\n .replace(/\\n/g, '%0A')\n .replace(/:/g, '%3A')\n .replace(/,/g, '%2C');\n}\n//# sourceMappingURL=command.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getIDToken = exports.getState = exports.saveState = exports.group = exports.endGroup = exports.startGroup = exports.info = exports.notice = exports.warning = exports.error = exports.debug = exports.isDebug = exports.setFailed = exports.setCommandEcho = exports.setOutput = exports.getBooleanInput = exports.getMultilineInput = exports.getInput = exports.addPath = exports.setSecret = exports.exportVariable = exports.ExitCode = void 0;\nconst command_1 = require(\"./command\");\nconst file_command_1 = require(\"./file-command\");\nconst utils_1 = require(\"./utils\");\nconst os = __importStar(require(\"os\"));\nconst path = __importStar(require(\"path\"));\nconst oidc_utils_1 = require(\"./oidc-utils\");\n/**\n * The code to exit an action\n */\nvar ExitCode;\n(function (ExitCode) {\n /**\n * A code indicating that the action was successful\n */\n ExitCode[ExitCode[\"Success\"] = 0] = \"Success\";\n /**\n * A code indicating that the action was a failure\n */\n ExitCode[ExitCode[\"Failure\"] = 1] = \"Failure\";\n})(ExitCode = exports.ExitCode || (exports.ExitCode = {}));\n//-----------------------------------------------------------------------\n// Variables\n//-----------------------------------------------------------------------\n/**\n * Sets env variable for this action and future actions in the job\n * @param name the name of the variable to set\n * @param val the value of the variable. Non-string values will be converted to a string via JSON.stringify\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction exportVariable(name, val) {\n const convertedVal = utils_1.toCommandValue(val);\n process.env[name] = convertedVal;\n const filePath = process.env['GITHUB_ENV'] || '';\n if (filePath) {\n return file_command_1.issueFileCommand('ENV', file_command_1.prepareKeyValueMessage(name, val));\n }\n command_1.issueCommand('set-env', { name }, convertedVal);\n}\nexports.exportVariable = exportVariable;\n/**\n * Registers a secret which will get masked from logs\n * @param secret value of the secret\n */\nfunction setSecret(secret) {\n command_1.issueCommand('add-mask', {}, secret);\n}\nexports.setSecret = setSecret;\n/**\n * Prepends inputPath to the PATH (for this action and future actions)\n * @param inputPath\n */\nfunction addPath(inputPath) {\n const filePath = process.env['GITHUB_PATH'] || '';\n if (filePath) {\n file_command_1.issueFileCommand('PATH', inputPath);\n }\n else {\n command_1.issueCommand('add-path', {}, inputPath);\n }\n process.env['PATH'] = `${inputPath}${path.delimiter}${process.env['PATH']}`;\n}\nexports.addPath = addPath;\n/**\n * Gets the value of an input.\n * Unless trimWhitespace is set to false in InputOptions, the value is also trimmed.\n * Returns an empty string if the value is not defined.\n *\n * @param name name of the input to get\n * @param options optional. See InputOptions.\n * @returns string\n */\nfunction getInput(name, options) {\n const val = process.env[`INPUT_${name.replace(/ /g, '_').toUpperCase()}`] || '';\n if (options && options.required && !val) {\n throw new Error(`Input required and not supplied: ${name}`);\n }\n if (options && options.trimWhitespace === false) {\n return val;\n }\n return val.trim();\n}\nexports.getInput = getInput;\n/**\n * Gets the values of an multiline input. Each value is also trimmed.\n *\n * @param name name of the input to get\n * @param options optional. See InputOptions.\n * @returns string[]\n *\n */\nfunction getMultilineInput(name, options) {\n const inputs = getInput(name, options)\n .split('\\n')\n .filter(x => x !== '');\n if (options && options.trimWhitespace === false) {\n return inputs;\n }\n return inputs.map(input => input.trim());\n}\nexports.getMultilineInput = getMultilineInput;\n/**\n * Gets the input value of the boolean type in the YAML 1.2 \"core schema\" specification.\n * Support boolean input list: `true | True | TRUE | false | False | FALSE` .\n * The return value is also in boolean type.\n * ref: https://yaml.org/spec/1.2/spec.html#id2804923\n *\n * @param name name of the input to get\n * @param options optional. See InputOptions.\n * @returns boolean\n */\nfunction getBooleanInput(name, options) {\n const trueValue = ['true', 'True', 'TRUE'];\n const falseValue = ['false', 'False', 'FALSE'];\n const val = getInput(name, options);\n if (trueValue.includes(val))\n return true;\n if (falseValue.includes(val))\n return false;\n throw new TypeError(`Input does not meet YAML 1.2 \"Core Schema\" specification: ${name}\\n` +\n `Support boolean input list: \\`true | True | TRUE | false | False | FALSE\\``);\n}\nexports.getBooleanInput = getBooleanInput;\n/**\n * Sets the value of an output.\n *\n * @param name name of the output to set\n * @param value value to store. Non-string values will be converted to a string via JSON.stringify\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction setOutput(name, value) {\n const filePath = process.env['GITHUB_OUTPUT'] || '';\n if (filePath) {\n return file_command_1.issueFileCommand('OUTPUT', file_command_1.prepareKeyValueMessage(name, value));\n }\n process.stdout.write(os.EOL);\n command_1.issueCommand('set-output', { name }, utils_1.toCommandValue(value));\n}\nexports.setOutput = setOutput;\n/**\n * Enables or disables the echoing of commands into stdout for the rest of the step.\n * Echoing is disabled by default if ACTIONS_STEP_DEBUG is not set.\n *\n */\nfunction setCommandEcho(enabled) {\n command_1.issue('echo', enabled ? 'on' : 'off');\n}\nexports.setCommandEcho = setCommandEcho;\n//-----------------------------------------------------------------------\n// Results\n//-----------------------------------------------------------------------\n/**\n * Sets the action status to failed.\n * When the action exits it will be with an exit code of 1\n * @param message add error issue message\n */\nfunction setFailed(message) {\n process.exitCode = ExitCode.Failure;\n error(message);\n}\nexports.setFailed = setFailed;\n//-----------------------------------------------------------------------\n// Logging Commands\n//-----------------------------------------------------------------------\n/**\n * Gets whether Actions Step Debug is on or not\n */\nfunction isDebug() {\n return process.env['RUNNER_DEBUG'] === '1';\n}\nexports.isDebug = isDebug;\n/**\n * Writes debug message to user log\n * @param message debug message\n */\nfunction debug(message) {\n command_1.issueCommand('debug', {}, message);\n}\nexports.debug = debug;\n/**\n * Adds an error issue\n * @param message error issue message. Errors will be converted to string via toString()\n * @param properties optional properties to add to the annotation.\n */\nfunction error(message, properties = {}) {\n command_1.issueCommand('error', utils_1.toCommandProperties(properties), message instanceof Error ? message.toString() : message);\n}\nexports.error = error;\n/**\n * Adds a warning issue\n * @param message warning issue message. Errors will be converted to string via toString()\n * @param properties optional properties to add to the annotation.\n */\nfunction warning(message, properties = {}) {\n command_1.issueCommand('warning', utils_1.toCommandProperties(properties), message instanceof Error ? message.toString() : message);\n}\nexports.warning = warning;\n/**\n * Adds a notice issue\n * @param message notice issue message. Errors will be converted to string via toString()\n * @param properties optional properties to add to the annotation.\n */\nfunction notice(message, properties = {}) {\n command_1.issueCommand('notice', utils_1.toCommandProperties(properties), message instanceof Error ? message.toString() : message);\n}\nexports.notice = notice;\n/**\n * Writes info to log with console.log.\n * @param message info message\n */\nfunction info(message) {\n process.stdout.write(message + os.EOL);\n}\nexports.info = info;\n/**\n * Begin an output group.\n *\n * Output until the next `groupEnd` will be foldable in this group\n *\n * @param name The name of the output group\n */\nfunction startGroup(name) {\n command_1.issue('group', name);\n}\nexports.startGroup = startGroup;\n/**\n * End an output group.\n */\nfunction endGroup() {\n command_1.issue('endgroup');\n}\nexports.endGroup = endGroup;\n/**\n * Wrap an asynchronous function call in a group.\n *\n * Returns the same type as the function itself.\n *\n * @param name The name of the group\n * @param fn The function to wrap in the group\n */\nfunction group(name, fn) {\n return __awaiter(this, void 0, void 0, function* () {\n startGroup(name);\n let result;\n try {\n result = yield fn();\n }\n finally {\n endGroup();\n }\n return result;\n });\n}\nexports.group = group;\n//-----------------------------------------------------------------------\n// Wrapper action state\n//-----------------------------------------------------------------------\n/**\n * Saves state for current action, the state can only be retrieved by this action's post job execution.\n *\n * @param name name of the state to store\n * @param value value to store. Non-string values will be converted to a string via JSON.stringify\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction saveState(name, value) {\n const filePath = process.env['GITHUB_STATE'] || '';\n if (filePath) {\n return file_command_1.issueFileCommand('STATE', file_command_1.prepareKeyValueMessage(name, value));\n }\n command_1.issueCommand('save-state', { name }, utils_1.toCommandValue(value));\n}\nexports.saveState = saveState;\n/**\n * Gets the value of an state set by this action's main execution.\n *\n * @param name name of the state to get\n * @returns string\n */\nfunction getState(name) {\n return process.env[`STATE_${name}`] || '';\n}\nexports.getState = getState;\nfunction getIDToken(aud) {\n return __awaiter(this, void 0, void 0, function* () {\n return yield oidc_utils_1.OidcClient.getIDToken(aud);\n });\n}\nexports.getIDToken = getIDToken;\n/**\n * Summary exports\n */\nvar summary_1 = require(\"./summary\");\nObject.defineProperty(exports, \"summary\", { enumerable: true, get: function () { return summary_1.summary; } });\n/**\n * @deprecated use core.summary\n */\nvar summary_2 = require(\"./summary\");\nObject.defineProperty(exports, \"markdownSummary\", { enumerable: true, get: function () { return summary_2.markdownSummary; } });\n/**\n * Path exports\n */\nvar path_utils_1 = require(\"./path-utils\");\nObject.defineProperty(exports, \"toPosixPath\", { enumerable: true, get: function () { return path_utils_1.toPosixPath; } });\nObject.defineProperty(exports, \"toWin32Path\", { enumerable: true, get: function () { return path_utils_1.toWin32Path; } });\nObject.defineProperty(exports, \"toPlatformPath\", { enumerable: true, get: function () { return path_utils_1.toPlatformPath; } });\n//# sourceMappingURL=core.js.map","\"use strict\";\n// For internal use, subject to change.\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.prepareKeyValueMessage = exports.issueFileCommand = void 0;\n// We use any as a valid input type\n/* eslint-disable @typescript-eslint/no-explicit-any */\nconst fs = __importStar(require(\"fs\"));\nconst os = __importStar(require(\"os\"));\nconst uuid_1 = require(\"uuid\");\nconst utils_1 = require(\"./utils\");\nfunction issueFileCommand(command, message) {\n const filePath = process.env[`GITHUB_${command}`];\n if (!filePath) {\n throw new Error(`Unable to find environment variable for file command ${command}`);\n }\n if (!fs.existsSync(filePath)) {\n throw new Error(`Missing file at path: ${filePath}`);\n }\n fs.appendFileSync(filePath, `${utils_1.toCommandValue(message)}${os.EOL}`, {\n encoding: 'utf8'\n });\n}\nexports.issueFileCommand = issueFileCommand;\nfunction prepareKeyValueMessage(key, value) {\n const delimiter = `ghadelimiter_${uuid_1.v4()}`;\n const convertedValue = utils_1.toCommandValue(value);\n // These should realistically never happen, but just in case someone finds a\n // way to exploit uuid generation let's not allow keys or values that contain\n // the delimiter.\n if (key.includes(delimiter)) {\n throw new Error(`Unexpected input: name should not contain the delimiter \"${delimiter}\"`);\n }\n if (convertedValue.includes(delimiter)) {\n throw new Error(`Unexpected input: value should not contain the delimiter \"${delimiter}\"`);\n }\n return `${key}<<${delimiter}${os.EOL}${convertedValue}${os.EOL}${delimiter}`;\n}\nexports.prepareKeyValueMessage = prepareKeyValueMessage;\n//# sourceMappingURL=file-command.js.map","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.OidcClient = void 0;\nconst http_client_1 = require(\"@actions/http-client\");\nconst auth_1 = require(\"@actions/http-client/lib/auth\");\nconst core_1 = require(\"./core\");\nclass OidcClient {\n static createHttpClient(allowRetry = true, maxRetry = 10) {\n const requestOptions = {\n allowRetries: allowRetry,\n maxRetries: maxRetry\n };\n return new http_client_1.HttpClient('actions/oidc-client', [new auth_1.BearerCredentialHandler(OidcClient.getRequestToken())], requestOptions);\n }\n static getRequestToken() {\n const token = process.env['ACTIONS_ID_TOKEN_REQUEST_TOKEN'];\n if (!token) {\n throw new Error('Unable to get ACTIONS_ID_TOKEN_REQUEST_TOKEN env variable');\n }\n return token;\n }\n static getIDTokenUrl() {\n const runtimeUrl = process.env['ACTIONS_ID_TOKEN_REQUEST_URL'];\n if (!runtimeUrl) {\n throw new Error('Unable to get ACTIONS_ID_TOKEN_REQUEST_URL env variable');\n }\n return runtimeUrl;\n }\n static getCall(id_token_url) {\n var _a;\n return __awaiter(this, void 0, void 0, function* () {\n const httpclient = OidcClient.createHttpClient();\n const res = yield httpclient\n .getJson(id_token_url)\n .catch(error => {\n throw new Error(`Failed to get ID Token. \\n \n Error Code : ${error.statusCode}\\n \n Error Message: ${error.message}`);\n });\n const id_token = (_a = res.result) === null || _a === void 0 ? void 0 : _a.value;\n if (!id_token) {\n throw new Error('Response json body do not have ID Token field');\n }\n return id_token;\n });\n }\n static getIDToken(audience) {\n return __awaiter(this, void 0, void 0, function* () {\n try {\n // New ID Token is requested from action service\n let id_token_url = OidcClient.getIDTokenUrl();\n if (audience) {\n const encodedAudience = encodeURIComponent(audience);\n id_token_url = `${id_token_url}&audience=${encodedAudience}`;\n }\n core_1.debug(`ID token url is ${id_token_url}`);\n const id_token = yield OidcClient.getCall(id_token_url);\n core_1.setSecret(id_token);\n return id_token;\n }\n catch (error) {\n throw new Error(`Error message: ${error.message}`);\n }\n });\n }\n}\nexports.OidcClient = OidcClient;\n//# sourceMappingURL=oidc-utils.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.toPlatformPath = exports.toWin32Path = exports.toPosixPath = void 0;\nconst path = __importStar(require(\"path\"));\n/**\n * toPosixPath converts the given path to the posix form. On Windows, \\\\ will be\n * replaced with /.\n *\n * @param pth. Path to transform.\n * @return string Posix path.\n */\nfunction toPosixPath(pth) {\n return pth.replace(/[\\\\]/g, '/');\n}\nexports.toPosixPath = toPosixPath;\n/**\n * toWin32Path converts the given path to the win32 form. On Linux, / will be\n * replaced with \\\\.\n *\n * @param pth. Path to transform.\n * @return string Win32 path.\n */\nfunction toWin32Path(pth) {\n return pth.replace(/[/]/g, '\\\\');\n}\nexports.toWin32Path = toWin32Path;\n/**\n * toPlatformPath converts the given path to a platform-specific path. It does\n * this by replacing instances of / and \\ with the platform-specific path\n * separator.\n *\n * @param pth The path to platformize.\n * @return string The platform-specific path.\n */\nfunction toPlatformPath(pth) {\n return pth.replace(/[/\\\\]/g, path.sep);\n}\nexports.toPlatformPath = toPlatformPath;\n//# sourceMappingURL=path-utils.js.map","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.summary = exports.markdownSummary = exports.SUMMARY_DOCS_URL = exports.SUMMARY_ENV_VAR = void 0;\nconst os_1 = require(\"os\");\nconst fs_1 = require(\"fs\");\nconst { access, appendFile, writeFile } = fs_1.promises;\nexports.SUMMARY_ENV_VAR = 'GITHUB_STEP_SUMMARY';\nexports.SUMMARY_DOCS_URL = 'https://docs.github.com/actions/using-workflows/workflow-commands-for-github-actions#adding-a-job-summary';\nclass Summary {\n constructor() {\n this._buffer = '';\n }\n /**\n * Finds the summary file path from the environment, rejects if env var is not found or file does not exist\n * Also checks r/w permissions.\n *\n * @returns step summary file path\n */\n filePath() {\n return __awaiter(this, void 0, void 0, function* () {\n if (this._filePath) {\n return this._filePath;\n }\n const pathFromEnv = process.env[exports.SUMMARY_ENV_VAR];\n if (!pathFromEnv) {\n throw new Error(`Unable to find environment variable for $${exports.SUMMARY_ENV_VAR}. Check if your runtime environment supports job summaries.`);\n }\n try {\n yield access(pathFromEnv, fs_1.constants.R_OK | fs_1.constants.W_OK);\n }\n catch (_a) {\n throw new Error(`Unable to access summary file: '${pathFromEnv}'. Check if the file has correct read/write permissions.`);\n }\n this._filePath = pathFromEnv;\n return this._filePath;\n });\n }\n /**\n * Wraps content in an HTML tag, adding any HTML attributes\n *\n * @param {string} tag HTML tag to wrap\n * @param {string | null} content content within the tag\n * @param {[attribute: string]: string} attrs key-value list of HTML attributes to add\n *\n * @returns {string} content wrapped in HTML element\n */\n wrap(tag, content, attrs = {}) {\n const htmlAttrs = Object.entries(attrs)\n .map(([key, value]) => ` ${key}=\"${value}\"`)\n .join('');\n if (!content) {\n return `<${tag}${htmlAttrs}>`;\n }\n return `<${tag}${htmlAttrs}>${content}`;\n }\n /**\n * Writes text in the buffer to the summary buffer file and empties buffer. Will append by default.\n *\n * @param {SummaryWriteOptions} [options] (optional) options for write operation\n *\n * @returns {Promise} summary instance\n */\n write(options) {\n return __awaiter(this, void 0, void 0, function* () {\n const overwrite = !!(options === null || options === void 0 ? void 0 : options.overwrite);\n const filePath = yield this.filePath();\n const writeFunc = overwrite ? writeFile : appendFile;\n yield writeFunc(filePath, this._buffer, { encoding: 'utf8' });\n return this.emptyBuffer();\n });\n }\n /**\n * Clears the summary buffer and wipes the summary file\n *\n * @returns {Summary} summary instance\n */\n clear() {\n return __awaiter(this, void 0, void 0, function* () {\n return this.emptyBuffer().write({ overwrite: true });\n });\n }\n /**\n * Returns the current summary buffer as a string\n *\n * @returns {string} string of summary buffer\n */\n stringify() {\n return this._buffer;\n }\n /**\n * If the summary buffer is empty\n *\n * @returns {boolen} true if the buffer is empty\n */\n isEmptyBuffer() {\n return this._buffer.length === 0;\n }\n /**\n * Resets the summary buffer without writing to summary file\n *\n * @returns {Summary} summary instance\n */\n emptyBuffer() {\n this._buffer = '';\n return this;\n }\n /**\n * Adds raw text to the summary buffer\n *\n * @param {string} text content to add\n * @param {boolean} [addEOL=false] (optional) append an EOL to the raw text (default: false)\n *\n * @returns {Summary} summary instance\n */\n addRaw(text, addEOL = false) {\n this._buffer += text;\n return addEOL ? this.addEOL() : this;\n }\n /**\n * Adds the operating system-specific end-of-line marker to the buffer\n *\n * @returns {Summary} summary instance\n */\n addEOL() {\n return this.addRaw(os_1.EOL);\n }\n /**\n * Adds an HTML codeblock to the summary buffer\n *\n * @param {string} code content to render within fenced code block\n * @param {string} lang (optional) language to syntax highlight code\n *\n * @returns {Summary} summary instance\n */\n addCodeBlock(code, lang) {\n const attrs = Object.assign({}, (lang && { lang }));\n const element = this.wrap('pre', this.wrap('code', code), attrs);\n return this.addRaw(element).addEOL();\n }\n /**\n * Adds an HTML list to the summary buffer\n *\n * @param {string[]} items list of items to render\n * @param {boolean} [ordered=false] (optional) if the rendered list should be ordered or not (default: false)\n *\n * @returns {Summary} summary instance\n */\n addList(items, ordered = false) {\n const tag = ordered ? 'ol' : 'ul';\n const listItems = items.map(item => this.wrap('li', item)).join('');\n const element = this.wrap(tag, listItems);\n return this.addRaw(element).addEOL();\n }\n /**\n * Adds an HTML table to the summary buffer\n *\n * @param {SummaryTableCell[]} rows table rows\n *\n * @returns {Summary} summary instance\n */\n addTable(rows) {\n const tableBody = rows\n .map(row => {\n const cells = row\n .map(cell => {\n if (typeof cell === 'string') {\n return this.wrap('td', cell);\n }\n const { header, data, colspan, rowspan } = cell;\n const tag = header ? 'th' : 'td';\n const attrs = Object.assign(Object.assign({}, (colspan && { colspan })), (rowspan && { rowspan }));\n return this.wrap(tag, data, attrs);\n })\n .join('');\n return this.wrap('tr', cells);\n })\n .join('');\n const element = this.wrap('table', tableBody);\n return this.addRaw(element).addEOL();\n }\n /**\n * Adds a collapsable HTML details element to the summary buffer\n *\n * @param {string} label text for the closed state\n * @param {string} content collapsable content\n *\n * @returns {Summary} summary instance\n */\n addDetails(label, content) {\n const element = this.wrap('details', this.wrap('summary', label) + content);\n return this.addRaw(element).addEOL();\n }\n /**\n * Adds an HTML image tag to the summary buffer\n *\n * @param {string} src path to the image you to embed\n * @param {string} alt text description of the image\n * @param {SummaryImageOptions} options (optional) addition image attributes\n *\n * @returns {Summary} summary instance\n */\n addImage(src, alt, options) {\n const { width, height } = options || {};\n const attrs = Object.assign(Object.assign({}, (width && { width })), (height && { height }));\n const element = this.wrap('img', null, Object.assign({ src, alt }, attrs));\n return this.addRaw(element).addEOL();\n }\n /**\n * Adds an HTML section heading element\n *\n * @param {string} text heading text\n * @param {number | string} [level=1] (optional) the heading level, default: 1\n *\n * @returns {Summary} summary instance\n */\n addHeading(text, level) {\n const tag = `h${level}`;\n const allowedTag = ['h1', 'h2', 'h3', 'h4', 'h5', 'h6'].includes(tag)\n ? tag\n : 'h1';\n const element = this.wrap(allowedTag, text);\n return this.addRaw(element).addEOL();\n }\n /**\n * Adds an HTML thematic break (
) to the summary buffer\n *\n * @returns {Summary} summary instance\n */\n addSeparator() {\n const element = this.wrap('hr', null);\n return this.addRaw(element).addEOL();\n }\n /**\n * Adds an HTML line break (
) to the summary buffer\n *\n * @returns {Summary} summary instance\n */\n addBreak() {\n const element = this.wrap('br', null);\n return this.addRaw(element).addEOL();\n }\n /**\n * Adds an HTML blockquote to the summary buffer\n *\n * @param {string} text quote text\n * @param {string} cite (optional) citation url\n *\n * @returns {Summary} summary instance\n */\n addQuote(text, cite) {\n const attrs = Object.assign({}, (cite && { cite }));\n const element = this.wrap('blockquote', text, attrs);\n return this.addRaw(element).addEOL();\n }\n /**\n * Adds an HTML anchor tag to the summary buffer\n *\n * @param {string} text link text/content\n * @param {string} href hyperlink\n *\n * @returns {Summary} summary instance\n */\n addLink(text, href) {\n const element = this.wrap('a', text, { href });\n return this.addRaw(element).addEOL();\n }\n}\nconst _summary = new Summary();\n/**\n * @deprecated use `core.summary`\n */\nexports.markdownSummary = _summary;\nexports.summary = _summary;\n//# sourceMappingURL=summary.js.map","\"use strict\";\n// We use any as a valid input type\n/* eslint-disable @typescript-eslint/no-explicit-any */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.toCommandProperties = exports.toCommandValue = void 0;\n/**\n * Sanitizes an input into a string so it can be passed into issueCommand safely\n * @param input input to sanitize into a string\n */\nfunction toCommandValue(input) {\n if (input === null || input === undefined) {\n return '';\n }\n else if (typeof input === 'string' || input instanceof String) {\n return input;\n }\n return JSON.stringify(input);\n}\nexports.toCommandValue = toCommandValue;\n/**\n *\n * @param annotationProperties\n * @returns The command properties to send with the actual annotation command\n * See IssueCommandProperties: https://github.com/actions/runner/blob/main/src/Runner.Worker/ActionCommandManager.cs#L646\n */\nfunction toCommandProperties(annotationProperties) {\n if (!Object.keys(annotationProperties).length) {\n return {};\n }\n return {\n title: annotationProperties.title,\n file: annotationProperties.file,\n line: annotationProperties.startLine,\n endLine: annotationProperties.endLine,\n col: annotationProperties.startColumn,\n endColumn: annotationProperties.endColumn\n };\n}\nexports.toCommandProperties = toCommandProperties;\n//# sourceMappingURL=utils.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Context = void 0;\nconst fs_1 = require(\"fs\");\nconst os_1 = require(\"os\");\nclass Context {\n /**\n * Hydrate the context from the environment\n */\n constructor() {\n var _a, _b, _c;\n this.payload = {};\n if (process.env.GITHUB_EVENT_PATH) {\n if ((0, fs_1.existsSync)(process.env.GITHUB_EVENT_PATH)) {\n this.payload = JSON.parse((0, fs_1.readFileSync)(process.env.GITHUB_EVENT_PATH, { encoding: 'utf8' }));\n }\n else {\n const path = process.env.GITHUB_EVENT_PATH;\n process.stdout.write(`GITHUB_EVENT_PATH ${path} does not exist${os_1.EOL}`);\n }\n }\n this.eventName = process.env.GITHUB_EVENT_NAME;\n this.sha = process.env.GITHUB_SHA;\n this.ref = process.env.GITHUB_REF;\n this.workflow = process.env.GITHUB_WORKFLOW;\n this.action = process.env.GITHUB_ACTION;\n this.actor = process.env.GITHUB_ACTOR;\n this.job = process.env.GITHUB_JOB;\n this.runNumber = parseInt(process.env.GITHUB_RUN_NUMBER, 10);\n this.runId = parseInt(process.env.GITHUB_RUN_ID, 10);\n this.apiUrl = (_a = process.env.GITHUB_API_URL) !== null && _a !== void 0 ? _a : `https://api.github.com`;\n this.serverUrl = (_b = process.env.GITHUB_SERVER_URL) !== null && _b !== void 0 ? _b : `https://github.com`;\n this.graphqlUrl =\n (_c = process.env.GITHUB_GRAPHQL_URL) !== null && _c !== void 0 ? _c : `https://api.github.com/graphql`;\n }\n get issue() {\n const payload = this.payload;\n return Object.assign(Object.assign({}, this.repo), { number: (payload.issue || payload.pull_request || payload).number });\n }\n get repo() {\n if (process.env.GITHUB_REPOSITORY) {\n const [owner, repo] = process.env.GITHUB_REPOSITORY.split('/');\n return { owner, repo };\n }\n if (this.payload.repository) {\n return {\n owner: this.payload.repository.owner.login,\n repo: this.payload.repository.name\n };\n }\n throw new Error(\"context.repo requires a GITHUB_REPOSITORY environment variable like 'owner/repo'\");\n }\n}\nexports.Context = Context;\n//# sourceMappingURL=context.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getOctokit = exports.context = void 0;\nconst Context = __importStar(require(\"./context\"));\nconst utils_1 = require(\"./utils\");\nexports.context = new Context.Context();\n/**\n * Returns a hydrated octokit ready to use for GitHub Actions\n *\n * @param token the repo PAT or GITHUB_TOKEN\n * @param options other options to set\n */\nfunction getOctokit(token, options, ...additionalPlugins) {\n const GitHubWithPlugins = utils_1.GitHub.plugin(...additionalPlugins);\n return new GitHubWithPlugins((0, utils_1.getOctokitOptions)(token, options));\n}\nexports.getOctokit = getOctokit;\n//# sourceMappingURL=github.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getApiBaseUrl = exports.getProxyFetch = exports.getProxyAgentDispatcher = exports.getProxyAgent = exports.getAuthString = void 0;\nconst httpClient = __importStar(require(\"@actions/http-client\"));\nconst undici_1 = require(\"undici\");\nfunction getAuthString(token, options) {\n if (!token && !options.auth) {\n throw new Error('Parameter token or opts.auth is required');\n }\n else if (token && options.auth) {\n throw new Error('Parameters token and opts.auth may not both be specified');\n }\n return typeof options.auth === 'string' ? options.auth : `token ${token}`;\n}\nexports.getAuthString = getAuthString;\nfunction getProxyAgent(destinationUrl) {\n const hc = new httpClient.HttpClient();\n return hc.getAgent(destinationUrl);\n}\nexports.getProxyAgent = getProxyAgent;\nfunction getProxyAgentDispatcher(destinationUrl) {\n const hc = new httpClient.HttpClient();\n return hc.getAgentDispatcher(destinationUrl);\n}\nexports.getProxyAgentDispatcher = getProxyAgentDispatcher;\nfunction getProxyFetch(destinationUrl) {\n const httpDispatcher = getProxyAgentDispatcher(destinationUrl);\n const proxyFetch = (url, opts) => __awaiter(this, void 0, void 0, function* () {\n return (0, undici_1.fetch)(url, Object.assign(Object.assign({}, opts), { dispatcher: httpDispatcher }));\n });\n return proxyFetch;\n}\nexports.getProxyFetch = getProxyFetch;\nfunction getApiBaseUrl() {\n return process.env['GITHUB_API_URL'] || 'https://api.github.com';\n}\nexports.getApiBaseUrl = getApiBaseUrl;\n//# sourceMappingURL=utils.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getOctokitOptions = exports.GitHub = exports.defaults = exports.context = void 0;\nconst Context = __importStar(require(\"./context\"));\nconst Utils = __importStar(require(\"./internal/utils\"));\n// octokit + plugins\nconst core_1 = require(\"@octokit/core\");\nconst plugin_rest_endpoint_methods_1 = require(\"@octokit/plugin-rest-endpoint-methods\");\nconst plugin_paginate_rest_1 = require(\"@octokit/plugin-paginate-rest\");\nexports.context = new Context.Context();\nconst baseUrl = Utils.getApiBaseUrl();\nexports.defaults = {\n baseUrl,\n request: {\n agent: Utils.getProxyAgent(baseUrl),\n fetch: Utils.getProxyFetch(baseUrl)\n }\n};\nexports.GitHub = core_1.Octokit.plugin(plugin_rest_endpoint_methods_1.restEndpointMethods, plugin_paginate_rest_1.paginateRest).defaults(exports.defaults);\n/**\n * Convience function to correctly format Octokit Options to pass into the constructor.\n *\n * @param token the repo PAT or GITHUB_TOKEN\n * @param options other options to set\n */\nfunction getOctokitOptions(token, options) {\n const opts = Object.assign({}, options || {}); // Shallow clone - don't mutate the object provided by the caller\n // Auth\n const auth = Utils.getAuthString(token, opts);\n if (auth) {\n opts.auth = auth;\n }\n return opts;\n}\nexports.getOctokitOptions = getOctokitOptions;\n//# sourceMappingURL=utils.js.map","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.PersonalAccessTokenCredentialHandler = exports.BearerCredentialHandler = exports.BasicCredentialHandler = void 0;\nclass BasicCredentialHandler {\n constructor(username, password) {\n this.username = username;\n this.password = password;\n }\n prepareRequest(options) {\n if (!options.headers) {\n throw Error('The request has no headers');\n }\n options.headers['Authorization'] = `Basic ${Buffer.from(`${this.username}:${this.password}`).toString('base64')}`;\n }\n // This handler cannot handle 401\n canHandleAuthentication() {\n return false;\n }\n handleAuthentication() {\n return __awaiter(this, void 0, void 0, function* () {\n throw new Error('not implemented');\n });\n }\n}\nexports.BasicCredentialHandler = BasicCredentialHandler;\nclass BearerCredentialHandler {\n constructor(token) {\n this.token = token;\n }\n // currently implements pre-authorization\n // TODO: support preAuth = false where it hooks on 401\n prepareRequest(options) {\n if (!options.headers) {\n throw Error('The request has no headers');\n }\n options.headers['Authorization'] = `Bearer ${this.token}`;\n }\n // This handler cannot handle 401\n canHandleAuthentication() {\n return false;\n }\n handleAuthentication() {\n return __awaiter(this, void 0, void 0, function* () {\n throw new Error('not implemented');\n });\n }\n}\nexports.BearerCredentialHandler = BearerCredentialHandler;\nclass PersonalAccessTokenCredentialHandler {\n constructor(token) {\n this.token = token;\n }\n // currently implements pre-authorization\n // TODO: support preAuth = false where it hooks on 401\n prepareRequest(options) {\n if (!options.headers) {\n throw Error('The request has no headers');\n }\n options.headers['Authorization'] = `Basic ${Buffer.from(`PAT:${this.token}`).toString('base64')}`;\n }\n // This handler cannot handle 401\n canHandleAuthentication() {\n return false;\n }\n handleAuthentication() {\n return __awaiter(this, void 0, void 0, function* () {\n throw new Error('not implemented');\n });\n }\n}\nexports.PersonalAccessTokenCredentialHandler = PersonalAccessTokenCredentialHandler;\n//# sourceMappingURL=auth.js.map","\"use strict\";\n/* eslint-disable @typescript-eslint/no-explicit-any */\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.HttpClient = exports.isHttps = exports.HttpClientResponse = exports.HttpClientError = exports.getProxyUrl = exports.MediaTypes = exports.Headers = exports.HttpCodes = void 0;\nconst http = __importStar(require(\"http\"));\nconst https = __importStar(require(\"https\"));\nconst pm = __importStar(require(\"./proxy\"));\nconst tunnel = __importStar(require(\"tunnel\"));\nconst undici_1 = require(\"undici\");\nvar HttpCodes;\n(function (HttpCodes) {\n HttpCodes[HttpCodes[\"OK\"] = 200] = \"OK\";\n HttpCodes[HttpCodes[\"MultipleChoices\"] = 300] = \"MultipleChoices\";\n HttpCodes[HttpCodes[\"MovedPermanently\"] = 301] = \"MovedPermanently\";\n HttpCodes[HttpCodes[\"ResourceMoved\"] = 302] = \"ResourceMoved\";\n HttpCodes[HttpCodes[\"SeeOther\"] = 303] = \"SeeOther\";\n HttpCodes[HttpCodes[\"NotModified\"] = 304] = \"NotModified\";\n HttpCodes[HttpCodes[\"UseProxy\"] = 305] = \"UseProxy\";\n HttpCodes[HttpCodes[\"SwitchProxy\"] = 306] = \"SwitchProxy\";\n HttpCodes[HttpCodes[\"TemporaryRedirect\"] = 307] = \"TemporaryRedirect\";\n HttpCodes[HttpCodes[\"PermanentRedirect\"] = 308] = \"PermanentRedirect\";\n HttpCodes[HttpCodes[\"BadRequest\"] = 400] = \"BadRequest\";\n HttpCodes[HttpCodes[\"Unauthorized\"] = 401] = \"Unauthorized\";\n HttpCodes[HttpCodes[\"PaymentRequired\"] = 402] = \"PaymentRequired\";\n HttpCodes[HttpCodes[\"Forbidden\"] = 403] = \"Forbidden\";\n HttpCodes[HttpCodes[\"NotFound\"] = 404] = \"NotFound\";\n HttpCodes[HttpCodes[\"MethodNotAllowed\"] = 405] = \"MethodNotAllowed\";\n HttpCodes[HttpCodes[\"NotAcceptable\"] = 406] = \"NotAcceptable\";\n HttpCodes[HttpCodes[\"ProxyAuthenticationRequired\"] = 407] = \"ProxyAuthenticationRequired\";\n HttpCodes[HttpCodes[\"RequestTimeout\"] = 408] = \"RequestTimeout\";\n HttpCodes[HttpCodes[\"Conflict\"] = 409] = \"Conflict\";\n HttpCodes[HttpCodes[\"Gone\"] = 410] = \"Gone\";\n HttpCodes[HttpCodes[\"TooManyRequests\"] = 429] = \"TooManyRequests\";\n HttpCodes[HttpCodes[\"InternalServerError\"] = 500] = \"InternalServerError\";\n HttpCodes[HttpCodes[\"NotImplemented\"] = 501] = \"NotImplemented\";\n HttpCodes[HttpCodes[\"BadGateway\"] = 502] = \"BadGateway\";\n HttpCodes[HttpCodes[\"ServiceUnavailable\"] = 503] = \"ServiceUnavailable\";\n HttpCodes[HttpCodes[\"GatewayTimeout\"] = 504] = \"GatewayTimeout\";\n})(HttpCodes || (exports.HttpCodes = HttpCodes = {}));\nvar Headers;\n(function (Headers) {\n Headers[\"Accept\"] = \"accept\";\n Headers[\"ContentType\"] = \"content-type\";\n})(Headers || (exports.Headers = Headers = {}));\nvar MediaTypes;\n(function (MediaTypes) {\n MediaTypes[\"ApplicationJson\"] = \"application/json\";\n})(MediaTypes || (exports.MediaTypes = MediaTypes = {}));\n/**\n * Returns the proxy URL, depending upon the supplied url and proxy environment variables.\n * @param serverUrl The server URL where the request will be sent. For example, https://api.github.com\n */\nfunction getProxyUrl(serverUrl) {\n const proxyUrl = pm.getProxyUrl(new URL(serverUrl));\n return proxyUrl ? proxyUrl.href : '';\n}\nexports.getProxyUrl = getProxyUrl;\nconst HttpRedirectCodes = [\n HttpCodes.MovedPermanently,\n HttpCodes.ResourceMoved,\n HttpCodes.SeeOther,\n HttpCodes.TemporaryRedirect,\n HttpCodes.PermanentRedirect\n];\nconst HttpResponseRetryCodes = [\n HttpCodes.BadGateway,\n HttpCodes.ServiceUnavailable,\n HttpCodes.GatewayTimeout\n];\nconst RetryableHttpVerbs = ['OPTIONS', 'GET', 'DELETE', 'HEAD'];\nconst ExponentialBackoffCeiling = 10;\nconst ExponentialBackoffTimeSlice = 5;\nclass HttpClientError extends Error {\n constructor(message, statusCode) {\n super(message);\n this.name = 'HttpClientError';\n this.statusCode = statusCode;\n Object.setPrototypeOf(this, HttpClientError.prototype);\n }\n}\nexports.HttpClientError = HttpClientError;\nclass HttpClientResponse {\n constructor(message) {\n this.message = message;\n }\n readBody() {\n return __awaiter(this, void 0, void 0, function* () {\n return new Promise((resolve) => __awaiter(this, void 0, void 0, function* () {\n let output = Buffer.alloc(0);\n this.message.on('data', (chunk) => {\n output = Buffer.concat([output, chunk]);\n });\n this.message.on('end', () => {\n resolve(output.toString());\n });\n }));\n });\n }\n readBodyBuffer() {\n return __awaiter(this, void 0, void 0, function* () {\n return new Promise((resolve) => __awaiter(this, void 0, void 0, function* () {\n const chunks = [];\n this.message.on('data', (chunk) => {\n chunks.push(chunk);\n });\n this.message.on('end', () => {\n resolve(Buffer.concat(chunks));\n });\n }));\n });\n }\n}\nexports.HttpClientResponse = HttpClientResponse;\nfunction isHttps(requestUrl) {\n const parsedUrl = new URL(requestUrl);\n return parsedUrl.protocol === 'https:';\n}\nexports.isHttps = isHttps;\nclass HttpClient {\n constructor(userAgent, handlers, requestOptions) {\n this._ignoreSslError = false;\n this._allowRedirects = true;\n this._allowRedirectDowngrade = false;\n this._maxRedirects = 50;\n this._allowRetries = false;\n this._maxRetries = 1;\n this._keepAlive = false;\n this._disposed = false;\n this.userAgent = userAgent;\n this.handlers = handlers || [];\n this.requestOptions = requestOptions;\n if (requestOptions) {\n if (requestOptions.ignoreSslError != null) {\n this._ignoreSslError = requestOptions.ignoreSslError;\n }\n this._socketTimeout = requestOptions.socketTimeout;\n if (requestOptions.allowRedirects != null) {\n this._allowRedirects = requestOptions.allowRedirects;\n }\n if (requestOptions.allowRedirectDowngrade != null) {\n this._allowRedirectDowngrade = requestOptions.allowRedirectDowngrade;\n }\n if (requestOptions.maxRedirects != null) {\n this._maxRedirects = Math.max(requestOptions.maxRedirects, 0);\n }\n if (requestOptions.keepAlive != null) {\n this._keepAlive = requestOptions.keepAlive;\n }\n if (requestOptions.allowRetries != null) {\n this._allowRetries = requestOptions.allowRetries;\n }\n if (requestOptions.maxRetries != null) {\n this._maxRetries = requestOptions.maxRetries;\n }\n }\n }\n options(requestUrl, additionalHeaders) {\n return __awaiter(this, void 0, void 0, function* () {\n return this.request('OPTIONS', requestUrl, null, additionalHeaders || {});\n });\n }\n get(requestUrl, additionalHeaders) {\n return __awaiter(this, void 0, void 0, function* () {\n return this.request('GET', requestUrl, null, additionalHeaders || {});\n });\n }\n del(requestUrl, additionalHeaders) {\n return __awaiter(this, void 0, void 0, function* () {\n return this.request('DELETE', requestUrl, null, additionalHeaders || {});\n });\n }\n post(requestUrl, data, additionalHeaders) {\n return __awaiter(this, void 0, void 0, function* () {\n return this.request('POST', requestUrl, data, additionalHeaders || {});\n });\n }\n patch(requestUrl, data, additionalHeaders) {\n return __awaiter(this, void 0, void 0, function* () {\n return this.request('PATCH', requestUrl, data, additionalHeaders || {});\n });\n }\n put(requestUrl, data, additionalHeaders) {\n return __awaiter(this, void 0, void 0, function* () {\n return this.request('PUT', requestUrl, data, additionalHeaders || {});\n });\n }\n head(requestUrl, additionalHeaders) {\n return __awaiter(this, void 0, void 0, function* () {\n return this.request('HEAD', requestUrl, null, additionalHeaders || {});\n });\n }\n sendStream(verb, requestUrl, stream, additionalHeaders) {\n return __awaiter(this, void 0, void 0, function* () {\n return this.request(verb, requestUrl, stream, additionalHeaders);\n });\n }\n /**\n * Gets a typed object from an endpoint\n * Be aware that not found returns a null. Other errors (4xx, 5xx) reject the promise\n */\n getJson(requestUrl, additionalHeaders = {}) {\n return __awaiter(this, void 0, void 0, function* () {\n additionalHeaders[Headers.Accept] = this._getExistingOrDefaultHeader(additionalHeaders, Headers.Accept, MediaTypes.ApplicationJson);\n const res = yield this.get(requestUrl, additionalHeaders);\n return this._processResponse(res, this.requestOptions);\n });\n }\n postJson(requestUrl, obj, additionalHeaders = {}) {\n return __awaiter(this, void 0, void 0, function* () {\n const data = JSON.stringify(obj, null, 2);\n additionalHeaders[Headers.Accept] = this._getExistingOrDefaultHeader(additionalHeaders, Headers.Accept, MediaTypes.ApplicationJson);\n additionalHeaders[Headers.ContentType] = this._getExistingOrDefaultHeader(additionalHeaders, Headers.ContentType, MediaTypes.ApplicationJson);\n const res = yield this.post(requestUrl, data, additionalHeaders);\n return this._processResponse(res, this.requestOptions);\n });\n }\n putJson(requestUrl, obj, additionalHeaders = {}) {\n return __awaiter(this, void 0, void 0, function* () {\n const data = JSON.stringify(obj, null, 2);\n additionalHeaders[Headers.Accept] = this._getExistingOrDefaultHeader(additionalHeaders, Headers.Accept, MediaTypes.ApplicationJson);\n additionalHeaders[Headers.ContentType] = this._getExistingOrDefaultHeader(additionalHeaders, Headers.ContentType, MediaTypes.ApplicationJson);\n const res = yield this.put(requestUrl, data, additionalHeaders);\n return this._processResponse(res, this.requestOptions);\n });\n }\n patchJson(requestUrl, obj, additionalHeaders = {}) {\n return __awaiter(this, void 0, void 0, function* () {\n const data = JSON.stringify(obj, null, 2);\n additionalHeaders[Headers.Accept] = this._getExistingOrDefaultHeader(additionalHeaders, Headers.Accept, MediaTypes.ApplicationJson);\n additionalHeaders[Headers.ContentType] = this._getExistingOrDefaultHeader(additionalHeaders, Headers.ContentType, MediaTypes.ApplicationJson);\n const res = yield this.patch(requestUrl, data, additionalHeaders);\n return this._processResponse(res, this.requestOptions);\n });\n }\n /**\n * Makes a raw http request.\n * All other methods such as get, post, patch, and request ultimately call this.\n * Prefer get, del, post and patch\n */\n request(verb, requestUrl, data, headers) {\n return __awaiter(this, void 0, void 0, function* () {\n if (this._disposed) {\n throw new Error('Client has already been disposed.');\n }\n const parsedUrl = new URL(requestUrl);\n let info = this._prepareRequest(verb, parsedUrl, headers);\n // Only perform retries on reads since writes may not be idempotent.\n const maxTries = this._allowRetries && RetryableHttpVerbs.includes(verb)\n ? this._maxRetries + 1\n : 1;\n let numTries = 0;\n let response;\n do {\n response = yield this.requestRaw(info, data);\n // Check if it's an authentication challenge\n if (response &&\n response.message &&\n response.message.statusCode === HttpCodes.Unauthorized) {\n let authenticationHandler;\n for (const handler of this.handlers) {\n if (handler.canHandleAuthentication(response)) {\n authenticationHandler = handler;\n break;\n }\n }\n if (authenticationHandler) {\n return authenticationHandler.handleAuthentication(this, info, data);\n }\n else {\n // We have received an unauthorized response but have no handlers to handle it.\n // Let the response return to the caller.\n return response;\n }\n }\n let redirectsRemaining = this._maxRedirects;\n while (response.message.statusCode &&\n HttpRedirectCodes.includes(response.message.statusCode) &&\n this._allowRedirects &&\n redirectsRemaining > 0) {\n const redirectUrl = response.message.headers['location'];\n if (!redirectUrl) {\n // if there's no location to redirect to, we won't\n break;\n }\n const parsedRedirectUrl = new URL(redirectUrl);\n if (parsedUrl.protocol === 'https:' &&\n parsedUrl.protocol !== parsedRedirectUrl.protocol &&\n !this._allowRedirectDowngrade) {\n throw new Error('Redirect from HTTPS to HTTP protocol. This downgrade is not allowed for security reasons. If you want to allow this behavior, set the allowRedirectDowngrade option to true.');\n }\n // we need to finish reading the response before reassigning response\n // which will leak the open socket.\n yield response.readBody();\n // strip authorization header if redirected to a different hostname\n if (parsedRedirectUrl.hostname !== parsedUrl.hostname) {\n for (const header in headers) {\n // header names are case insensitive\n if (header.toLowerCase() === 'authorization') {\n delete headers[header];\n }\n }\n }\n // let's make the request with the new redirectUrl\n info = this._prepareRequest(verb, parsedRedirectUrl, headers);\n response = yield this.requestRaw(info, data);\n redirectsRemaining--;\n }\n if (!response.message.statusCode ||\n !HttpResponseRetryCodes.includes(response.message.statusCode)) {\n // If not a retry code, return immediately instead of retrying\n return response;\n }\n numTries += 1;\n if (numTries < maxTries) {\n yield response.readBody();\n yield this._performExponentialBackoff(numTries);\n }\n } while (numTries < maxTries);\n return response;\n });\n }\n /**\n * Needs to be called if keepAlive is set to true in request options.\n */\n dispose() {\n if (this._agent) {\n this._agent.destroy();\n }\n this._disposed = true;\n }\n /**\n * Raw request.\n * @param info\n * @param data\n */\n requestRaw(info, data) {\n return __awaiter(this, void 0, void 0, function* () {\n return new Promise((resolve, reject) => {\n function callbackForResult(err, res) {\n if (err) {\n reject(err);\n }\n else if (!res) {\n // If `err` is not passed, then `res` must be passed.\n reject(new Error('Unknown error'));\n }\n else {\n resolve(res);\n }\n }\n this.requestRawWithCallback(info, data, callbackForResult);\n });\n });\n }\n /**\n * Raw request with callback.\n * @param info\n * @param data\n * @param onResult\n */\n requestRawWithCallback(info, data, onResult) {\n if (typeof data === 'string') {\n if (!info.options.headers) {\n info.options.headers = {};\n }\n info.options.headers['Content-Length'] = Buffer.byteLength(data, 'utf8');\n }\n let callbackCalled = false;\n function handleResult(err, res) {\n if (!callbackCalled) {\n callbackCalled = true;\n onResult(err, res);\n }\n }\n const req = info.httpModule.request(info.options, (msg) => {\n const res = new HttpClientResponse(msg);\n handleResult(undefined, res);\n });\n let socket;\n req.on('socket', sock => {\n socket = sock;\n });\n // If we ever get disconnected, we want the socket to timeout eventually\n req.setTimeout(this._socketTimeout || 3 * 60000, () => {\n if (socket) {\n socket.end();\n }\n handleResult(new Error(`Request timeout: ${info.options.path}`));\n });\n req.on('error', function (err) {\n // err has statusCode property\n // res should have headers\n handleResult(err);\n });\n if (data && typeof data === 'string') {\n req.write(data, 'utf8');\n }\n if (data && typeof data !== 'string') {\n data.on('close', function () {\n req.end();\n });\n data.pipe(req);\n }\n else {\n req.end();\n }\n }\n /**\n * Gets an http agent. This function is useful when you need an http agent that handles\n * routing through a proxy server - depending upon the url and proxy environment variables.\n * @param serverUrl The server URL where the request will be sent. For example, https://api.github.com\n */\n getAgent(serverUrl) {\n const parsedUrl = new URL(serverUrl);\n return this._getAgent(parsedUrl);\n }\n getAgentDispatcher(serverUrl) {\n const parsedUrl = new URL(serverUrl);\n const proxyUrl = pm.getProxyUrl(parsedUrl);\n const useProxy = proxyUrl && proxyUrl.hostname;\n if (!useProxy) {\n return;\n }\n return this._getProxyAgentDispatcher(parsedUrl, proxyUrl);\n }\n _prepareRequest(method, requestUrl, headers) {\n const info = {};\n info.parsedUrl = requestUrl;\n const usingSsl = info.parsedUrl.protocol === 'https:';\n info.httpModule = usingSsl ? https : http;\n const defaultPort = usingSsl ? 443 : 80;\n info.options = {};\n info.options.host = info.parsedUrl.hostname;\n info.options.port = info.parsedUrl.port\n ? parseInt(info.parsedUrl.port)\n : defaultPort;\n info.options.path =\n (info.parsedUrl.pathname || '') + (info.parsedUrl.search || '');\n info.options.method = method;\n info.options.headers = this._mergeHeaders(headers);\n if (this.userAgent != null) {\n info.options.headers['user-agent'] = this.userAgent;\n }\n info.options.agent = this._getAgent(info.parsedUrl);\n // gives handlers an opportunity to participate\n if (this.handlers) {\n for (const handler of this.handlers) {\n handler.prepareRequest(info.options);\n }\n }\n return info;\n }\n _mergeHeaders(headers) {\n if (this.requestOptions && this.requestOptions.headers) {\n return Object.assign({}, lowercaseKeys(this.requestOptions.headers), lowercaseKeys(headers || {}));\n }\n return lowercaseKeys(headers || {});\n }\n _getExistingOrDefaultHeader(additionalHeaders, header, _default) {\n let clientHeader;\n if (this.requestOptions && this.requestOptions.headers) {\n clientHeader = lowercaseKeys(this.requestOptions.headers)[header];\n }\n return additionalHeaders[header] || clientHeader || _default;\n }\n _getAgent(parsedUrl) {\n let agent;\n const proxyUrl = pm.getProxyUrl(parsedUrl);\n const useProxy = proxyUrl && proxyUrl.hostname;\n if (this._keepAlive && useProxy) {\n agent = this._proxyAgent;\n }\n if (!useProxy) {\n agent = this._agent;\n }\n // if agent is already assigned use that agent.\n if (agent) {\n return agent;\n }\n const usingSsl = parsedUrl.protocol === 'https:';\n let maxSockets = 100;\n if (this.requestOptions) {\n maxSockets = this.requestOptions.maxSockets || http.globalAgent.maxSockets;\n }\n // This is `useProxy` again, but we need to check `proxyURl` directly for TypeScripts's flow analysis.\n if (proxyUrl && proxyUrl.hostname) {\n const agentOptions = {\n maxSockets,\n keepAlive: this._keepAlive,\n proxy: Object.assign(Object.assign({}, ((proxyUrl.username || proxyUrl.password) && {\n proxyAuth: `${proxyUrl.username}:${proxyUrl.password}`\n })), { host: proxyUrl.hostname, port: proxyUrl.port })\n };\n let tunnelAgent;\n const overHttps = proxyUrl.protocol === 'https:';\n if (usingSsl) {\n tunnelAgent = overHttps ? tunnel.httpsOverHttps : tunnel.httpsOverHttp;\n }\n else {\n tunnelAgent = overHttps ? tunnel.httpOverHttps : tunnel.httpOverHttp;\n }\n agent = tunnelAgent(agentOptions);\n this._proxyAgent = agent;\n }\n // if tunneling agent isn't assigned create a new agent\n if (!agent) {\n const options = { keepAlive: this._keepAlive, maxSockets };\n agent = usingSsl ? new https.Agent(options) : new http.Agent(options);\n this._agent = agent;\n }\n if (usingSsl && this._ignoreSslError) {\n // we don't want to set NODE_TLS_REJECT_UNAUTHORIZED=0 since that will affect request for entire process\n // http.RequestOptions doesn't expose a way to modify RequestOptions.agent.options\n // we have to cast it to any and change it directly\n agent.options = Object.assign(agent.options || {}, {\n rejectUnauthorized: false\n });\n }\n return agent;\n }\n _getProxyAgentDispatcher(parsedUrl, proxyUrl) {\n let proxyAgent;\n if (this._keepAlive) {\n proxyAgent = this._proxyAgentDispatcher;\n }\n // if agent is already assigned use that agent.\n if (proxyAgent) {\n return proxyAgent;\n }\n const usingSsl = parsedUrl.protocol === 'https:';\n proxyAgent = new undici_1.ProxyAgent(Object.assign({ uri: proxyUrl.href, pipelining: !this._keepAlive ? 0 : 1 }, ((proxyUrl.username || proxyUrl.password) && {\n token: `Basic ${Buffer.from(`${proxyUrl.username}:${proxyUrl.password}`).toString('base64')}`\n })));\n this._proxyAgentDispatcher = proxyAgent;\n if (usingSsl && this._ignoreSslError) {\n // we don't want to set NODE_TLS_REJECT_UNAUTHORIZED=0 since that will affect request for entire process\n // http.RequestOptions doesn't expose a way to modify RequestOptions.agent.options\n // we have to cast it to any and change it directly\n proxyAgent.options = Object.assign(proxyAgent.options.requestTls || {}, {\n rejectUnauthorized: false\n });\n }\n return proxyAgent;\n }\n _performExponentialBackoff(retryNumber) {\n return __awaiter(this, void 0, void 0, function* () {\n retryNumber = Math.min(ExponentialBackoffCeiling, retryNumber);\n const ms = ExponentialBackoffTimeSlice * Math.pow(2, retryNumber);\n return new Promise(resolve => setTimeout(() => resolve(), ms));\n });\n }\n _processResponse(res, options) {\n return __awaiter(this, void 0, void 0, function* () {\n return new Promise((resolve, reject) => __awaiter(this, void 0, void 0, function* () {\n const statusCode = res.message.statusCode || 0;\n const response = {\n statusCode,\n result: null,\n headers: {}\n };\n // not found leads to null obj returned\n if (statusCode === HttpCodes.NotFound) {\n resolve(response);\n }\n // get the result from the body\n function dateTimeDeserializer(key, value) {\n if (typeof value === 'string') {\n const a = new Date(value);\n if (!isNaN(a.valueOf())) {\n return a;\n }\n }\n return value;\n }\n let obj;\n let contents;\n try {\n contents = yield res.readBody();\n if (contents && contents.length > 0) {\n if (options && options.deserializeDates) {\n obj = JSON.parse(contents, dateTimeDeserializer);\n }\n else {\n obj = JSON.parse(contents);\n }\n response.result = obj;\n }\n response.headers = res.message.headers;\n }\n catch (err) {\n // Invalid resource (contents not json); leaving result obj null\n }\n // note that 3xx redirects are handled by the http layer.\n if (statusCode > 299) {\n let msg;\n // if exception/error in body, attempt to get better error\n if (obj && obj.message) {\n msg = obj.message;\n }\n else if (contents && contents.length > 0) {\n // it may be the case that the exception is in the body message as string\n msg = contents;\n }\n else {\n msg = `Failed request: (${statusCode})`;\n }\n const err = new HttpClientError(msg, statusCode);\n err.result = response.result;\n reject(err);\n }\n else {\n resolve(response);\n }\n }));\n });\n }\n}\nexports.HttpClient = HttpClient;\nconst lowercaseKeys = (obj) => Object.keys(obj).reduce((c, k) => ((c[k.toLowerCase()] = obj[k]), c), {});\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.checkBypass = exports.getProxyUrl = void 0;\nfunction getProxyUrl(reqUrl) {\n const usingSsl = reqUrl.protocol === 'https:';\n if (checkBypass(reqUrl)) {\n return undefined;\n }\n const proxyVar = (() => {\n if (usingSsl) {\n return process.env['https_proxy'] || process.env['HTTPS_PROXY'];\n }\n else {\n return process.env['http_proxy'] || process.env['HTTP_PROXY'];\n }\n })();\n if (proxyVar) {\n try {\n return new DecodedURL(proxyVar);\n }\n catch (_a) {\n if (!proxyVar.startsWith('http://') && !proxyVar.startsWith('https://'))\n return new DecodedURL(`http://${proxyVar}`);\n }\n }\n else {\n return undefined;\n }\n}\nexports.getProxyUrl = getProxyUrl;\nfunction checkBypass(reqUrl) {\n if (!reqUrl.hostname) {\n return false;\n }\n const reqHost = reqUrl.hostname;\n if (isLoopbackAddress(reqHost)) {\n return true;\n }\n const noProxy = process.env['no_proxy'] || process.env['NO_PROXY'] || '';\n if (!noProxy) {\n return false;\n }\n // Determine the request port\n let reqPort;\n if (reqUrl.port) {\n reqPort = Number(reqUrl.port);\n }\n else if (reqUrl.protocol === 'http:') {\n reqPort = 80;\n }\n else if (reqUrl.protocol === 'https:') {\n reqPort = 443;\n }\n // Format the request hostname and hostname with port\n const upperReqHosts = [reqUrl.hostname.toUpperCase()];\n if (typeof reqPort === 'number') {\n upperReqHosts.push(`${upperReqHosts[0]}:${reqPort}`);\n }\n // Compare request host against noproxy\n for (const upperNoProxyItem of noProxy\n .split(',')\n .map(x => x.trim().toUpperCase())\n .filter(x => x)) {\n if (upperNoProxyItem === '*' ||\n upperReqHosts.some(x => x === upperNoProxyItem ||\n x.endsWith(`.${upperNoProxyItem}`) ||\n (upperNoProxyItem.startsWith('.') &&\n x.endsWith(`${upperNoProxyItem}`)))) {\n return true;\n }\n }\n return false;\n}\nexports.checkBypass = checkBypass;\nfunction isLoopbackAddress(host) {\n const hostLower = host.toLowerCase();\n return (hostLower === 'localhost' ||\n hostLower.startsWith('127.') ||\n hostLower.startsWith('[::1]') ||\n hostLower.startsWith('[0:0:0:0:0:0:0:1]'));\n}\nclass DecodedURL extends URL {\n constructor(url, base) {\n super(url, base);\n this._decodedUsername = decodeURIComponent(super.username);\n this._decodedPassword = decodeURIComponent(super.password);\n }\n get username() {\n return this._decodedUsername;\n }\n get password() {\n return this._decodedPassword;\n }\n}\n//# sourceMappingURL=proxy.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.loadAwsServiceSpec = loadAwsServiceSpec;\nexports.loadAwsServiceSpecSync = loadAwsServiceSpecSync;\nconst node_fs_1 = require(\"node:fs\");\nconst path = __importStar(require(\"node:path\"));\nconst node_zlib_1 = require(\"node:zlib\");\nconst service_spec_types_1 = require(\"@aws-cdk/service-spec-types\");\nconst DB_COMPRESSED = 'db.json.gz';\nconst DB_PATH = path.join(__dirname, '..', DB_COMPRESSED);\n/**\n * Load the provided built-in database\n */\nasync function loadAwsServiceSpec() {\n return loadBufferIntoDatabase(await node_fs_1.promises.readFile(DB_PATH));\n}\n/**\n * Synchronously load the provided built-in database\n */\nfunction loadAwsServiceSpecSync() {\n return loadBufferIntoDatabase((0, node_fs_1.readFileSync)(DB_PATH));\n}\nfunction loadBufferIntoDatabase(spec) {\n const db = (0, service_spec_types_1.emptyDatabase)();\n db.load(JSON.parse((0, node_zlib_1.gunzipSync)(spec).toString('utf-8')));\n return db;\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQVdBLGdEQUVDO0FBS0Qsd0RBRUM7QUFwQkQscUNBQXVEO0FBQ3ZELGdEQUFrQztBQUNsQyx5Q0FBdUM7QUFDdkMsb0VBQTBFO0FBRTFFLE1BQU0sYUFBYSxHQUFHLFlBQVksQ0FBQztBQUNuQyxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxJQUFJLEVBQUUsYUFBYSxDQUFDLENBQUM7QUFFMUQ7O0dBRUc7QUFDSSxLQUFLLFVBQVUsa0JBQWtCO0lBQ3RDLE9BQU8sc0JBQXNCLENBQUMsTUFBTSxrQkFBRSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO0FBQzVELENBQUM7QUFFRDs7R0FFRztBQUNILFNBQWdCLHNCQUFzQjtJQUNwQyxPQUFPLHNCQUFzQixDQUFDLElBQUEsc0JBQVksRUFBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO0FBQ3ZELENBQUM7QUFFRCxTQUFTLHNCQUFzQixDQUFDLElBQVk7SUFDMUMsTUFBTSxFQUFFLEdBQUcsSUFBQSxrQ0FBYSxHQUFFLENBQUM7SUFDM0IsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUEsc0JBQVUsRUFBQyxJQUFJLENBQUMsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3hELE9BQU8sRUFBRSxDQUFDO0FBQ1osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHByb21pc2VzIGFzIGZzLCByZWFkRmlsZVN5bmMgfSBmcm9tICdub2RlOmZzJztcbmltcG9ydCAqIGFzIHBhdGggZnJvbSAnbm9kZTpwYXRoJztcbmltcG9ydCB7IGd1bnppcFN5bmMgfSBmcm9tICdub2RlOnpsaWInO1xuaW1wb3J0IHsgZW1wdHlEYXRhYmFzZSwgU3BlY0RhdGFiYXNlIH0gZnJvbSAnQGF3cy1jZGsvc2VydmljZS1zcGVjLXR5cGVzJztcblxuY29uc3QgREJfQ09NUFJFU1NFRCA9ICdkYi5qc29uLmd6JztcbmNvbnN0IERCX1BBVEggPSBwYXRoLmpvaW4oX19kaXJuYW1lLCAnLi4nLCBEQl9DT01QUkVTU0VEKTtcblxuLyoqXG4gKiBMb2FkIHRoZSBwcm92aWRlZCBidWlsdC1pbiBkYXRhYmFzZVxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gbG9hZEF3c1NlcnZpY2VTcGVjKCk6IFByb21pc2U8U3BlY0RhdGFiYXNlPiB7XG4gIHJldHVybiBsb2FkQnVmZmVySW50b0RhdGFiYXNlKGF3YWl0IGZzLnJlYWRGaWxlKERCX1BBVEgpKTtcbn1cblxuLyoqXG4gKiBTeW5jaHJvbm91c2x5IGxvYWQgdGhlIHByb3ZpZGVkIGJ1aWx0LWluIGRhdGFiYXNlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBsb2FkQXdzU2VydmljZVNwZWNTeW5jKCk6IFNwZWNEYXRhYmFzZSB7XG4gIHJldHVybiBsb2FkQnVmZmVySW50b0RhdGFiYXNlKHJlYWRGaWxlU3luYyhEQl9QQVRIKSk7XG59XG5cbmZ1bmN0aW9uIGxvYWRCdWZmZXJJbnRvRGF0YWJhc2Uoc3BlYzogQnVmZmVyKTogU3BlY0RhdGFiYXNlIHtcbiAgY29uc3QgZGIgPSBlbXB0eURhdGFiYXNlKCk7XG4gIGRiLmxvYWQoSlNPTi5wYXJzZShndW56aXBTeW5jKHNwZWMpLnRvU3RyaW5nKCd1dGYtOCcpKSk7XG4gIHJldHVybiBkYjtcbn1cbiJdfQ==","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXJ0aWZhY3Qtc2NoZW1hLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiYXJ0aWZhY3Qtc2NoZW1hLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEluZm9ybWF0aW9uIG5lZWRlZCB0byBhY2Nlc3MgYW4gSUFNIHJvbGUgY3JlYXRlZFxuICogYXMgcGFydCBvZiB0aGUgYm9vdHN0cmFwIHByb2Nlc3NcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBCb290c3RyYXBSb2xlIHtcbiAgLyoqXG4gICAqIFRoZSBBUk4gb2YgdGhlIElBTSByb2xlIGNyZWF0ZWQgYXMgcGFydCBvZiBib290cmFwcGluZ1xuICAgKiBlLmcuIGxvb2t1cFJvbGVBcm5cbiAgICovXG4gIHJlYWRvbmx5IGFybjogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBFeHRlcm5hbCBJRCB0byB1c2Ugd2hlbiBhc3N1bWluZyB0aGUgYm9vdHN0cmFwIHJvbGVcbiAgICpcbiAgICogQGRlZmF1bHQgLSBObyBleHRlcm5hbCBJRFxuICAgKi9cbiAgcmVhZG9ubHkgYXNzdW1lUm9sZUV4dGVybmFsSWQ/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEFkZGl0aW9uYWwgb3B0aW9ucyB0byBwYXNzIHRvIFNUUyB3aGVuIGFzc3VtaW5nIHRoZSByb2xlLlxuICAgKlxuICAgKiAtIGBSb2xlQXJuYCBzaG91bGQgbm90IGJlIHVzZWQuIFVzZSB0aGUgZGVkaWNhdGVkIGBhcm5gIHByb3BlcnR5IGluc3RlYWQuXG4gICAqIC0gYEV4dGVybmFsSWRgIHNob3VsZCBub3QgYmUgdXNlZC4gVXNlIHRoZSBkZWRpY2F0ZWQgYGFzc3VtZVJvbGVFeHRlcm5hbElkYCBpbnN0ZWFkLlxuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NKYXZhU2NyaXB0U0RLL2xhdGVzdC9BV1MvU1RTLmh0bWwjYXNzdW1lUm9sZS1wcm9wZXJ0eVxuICAgKiBAZGVmYXVsdCAtIE5vIGFkZGl0aW9uYWwgb3B0aW9ucy5cbiAgICovXG4gIHJlYWRvbmx5IGFzc3VtZVJvbGVBZGRpdGlvbmFsT3B0aW9ucz86IHsgW2tleTogc3RyaW5nXTogYW55IH07XG5cbiAgLyoqXG4gICAqIFZlcnNpb24gb2YgYm9vdHN0cmFwIHN0YWNrIHJlcXVpcmVkIHRvIHVzZSB0aGlzIHJvbGVcbiAgICpcbiAgICogQGRlZmF1bHQgLSBObyBib290c3RyYXAgc3RhY2sgcmVxdWlyZWRcbiAgICovXG4gIHJlYWRvbmx5IHJlcXVpcmVzQm9vdHN0cmFwU3RhY2tWZXJzaW9uPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBOYW1lIG9mIFNTTSBwYXJhbWV0ZXIgd2l0aCBib290c3RyYXAgc3RhY2sgdmVyc2lvblxuICAgKlxuICAgKiBAZGVmYXVsdCAtIERpc2NvdmVyIFNTTSBwYXJhbWV0ZXIgYnkgcmVhZGluZyBzdGFja1xuICAgKi9cbiAgcmVhZG9ubHkgYm9vdHN0cmFwU3RhY2tWZXJzaW9uU3NtUGFyYW1ldGVyPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIEFydGlmYWN0IHByb3BlcnRpZXMgZm9yIENsb3VkRm9ybWF0aW9uIHN0YWNrcy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBd3NDbG91ZEZvcm1hdGlvblN0YWNrUHJvcGVydGllcyB7XG4gIC8qKlxuICAgKiBBIGZpbGUgcmVsYXRpdmUgdG8gdGhlIGFzc2VtYmx5IHJvb3Qgd2hpY2ggY29udGFpbnMgdGhlIENsb3VkRm9ybWF0aW9uIHRlbXBsYXRlIGZvciB0aGlzIHN0YWNrLlxuICAgKi9cbiAgcmVhZG9ubHkgdGVtcGxhdGVGaWxlOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFZhbHVlcyBmb3IgQ2xvdWRGb3JtYXRpb24gc3RhY2sgcGFyYW1ldGVycyB0aGF0IHNob3VsZCBiZSBwYXNzZWQgd2hlbiB0aGUgc3RhY2sgaXMgZGVwbG95ZWQuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gTm8gcGFyYW1ldGVyc1xuICAgKi9cbiAgcmVhZG9ubHkgcGFyYW1ldGVycz86IHsgW2lkOiBzdHJpbmddOiBzdHJpbmcgfTtcblxuICAvKipcbiAgICogVmFsdWVzIGZvciBDbG91ZEZvcm1hdGlvbiBzdGFjayB0YWdzIHRoYXQgc2hvdWxkIGJlIHBhc3NlZCB3aGVuIHRoZSBzdGFjayBpcyBkZXBsb3llZC5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBObyB0YWdzXG4gICAqL1xuICByZWFkb25seSB0YWdzPzogeyBbaWQ6IHN0cmluZ106IHN0cmluZyB9O1xuXG4gIC8qKlxuICAgKiBTTlMgTm90aWZpY2F0aW9uIEFSTnMgdGhhdCBzaG91bGQgcmVjZWl2ZSBDbG91ZEZvcm1hdGlvbiBTdGFjayBFdmVudHMuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gTm8gbm90aWZpY2F0aW9uIGFybnNcbiAgICovXG4gIHJlYWRvbmx5IG5vdGlmaWNhdGlvbkFybnM/OiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogVGhlIG5hbWUgdG8gdXNlIGZvciB0aGUgQ2xvdWRGb3JtYXRpb24gc3RhY2suXG4gICAqIEBkZWZhdWx0IC0gbmFtZSBkZXJpdmVkIGZyb20gYXJ0aWZhY3QgSURcbiAgICovXG4gIHJlYWRvbmx5IHN0YWNrTmFtZT86IHN0cmluZztcblxuICAvKipcbiAgICogV2hldGhlciB0byBlbmFibGUgdGVybWluYXRpb24gcHJvdGVjdGlvbiBmb3IgdGhpcyBzdGFjay5cbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IHRlcm1pbmF0aW9uUHJvdGVjdGlvbj86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFRoZSByb2xlIHRoYXQgbmVlZHMgdG8gYmUgYXNzdW1lZCB0byBkZXBsb3kgdGhlIHN0YWNrXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gTm8gcm9sZSBpcyBhc3N1bWVkIChjdXJyZW50IGNyZWRlbnRpYWxzIGFyZSB1c2VkKVxuICAgKi9cbiAgcmVhZG9ubHkgYXNzdW1lUm9sZUFybj86IHN0cmluZztcblxuICAvKipcbiAgICogRXh0ZXJuYWwgSUQgdG8gdXNlIHdoZW4gYXNzdW1pbmcgcm9sZSBmb3IgY2xvdWRmb3JtYXRpb24gZGVwbG95bWVudHNcbiAgICpcbiAgICogQGRlZmF1bHQgLSBObyBleHRlcm5hbCBJRFxuICAgKi9cbiAgcmVhZG9ubHkgYXNzdW1lUm9sZUV4dGVybmFsSWQ/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEFkZGl0aW9uYWwgb3B0aW9ucyB0byBwYXNzIHRvIFNUUyB3aGVuIGFzc3VtaW5nIHRoZSByb2xlLlxuICAgKlxuICAgKiAtIGBSb2xlQXJuYCBzaG91bGQgbm90IGJlIHVzZWQuIFVzZSB0aGUgZGVkaWNhdGVkIGBhc3N1bWVSb2xlQXJuYCBwcm9wZXJ0eSBpbnN0ZWFkLlxuICAgKiAtIGBFeHRlcm5hbElkYCBzaG91bGQgbm90IGJlIHVzZWQuIFVzZSB0aGUgZGVkaWNhdGVkIGBhc3N1bWVSb2xlRXh0ZXJuYWxJZGAgaW5zdGVhZC5cbiAgICpcbiAgICogQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTSmF2YVNjcmlwdFNESy9sYXRlc3QvQVdTL1NUUy5odG1sI2Fzc3VtZVJvbGUtcHJvcGVydHlcbiAgICogQGRlZmF1bHQgLSBObyBhZGRpdGlvbmFsIG9wdGlvbnMuXG4gICAqL1xuICByZWFkb25seSBhc3N1bWVSb2xlQWRkaXRpb25hbE9wdGlvbnM/OiB7IFtrZXk6IHN0cmluZ106IGFueSB9O1xuXG4gIC8qKlxuICAgKiBUaGUgcm9sZSB0aGF0IGlzIHBhc3NlZCB0byBDbG91ZEZvcm1hdGlvbiB0byBleGVjdXRlIHRoZSBjaGFuZ2Ugc2V0XG4gICAqXG4gICAqIEBkZWZhdWx0IC0gTm8gcm9sZSBpcyBwYXNzZWQgKGN1cnJlbnRseSBhc3N1bWVkIHJvbGUvY3JlZGVudGlhbHMgYXJlIHVzZWQpXG4gICAqL1xuICByZWFkb25seSBjbG91ZEZvcm1hdGlvbkV4ZWN1dGlvblJvbGVBcm4/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSByb2xlIHRvIHVzZSB0byBsb29rIHVwIHZhbHVlcyBmcm9tIHRoZSB0YXJnZXQgQVdTIGFjY291bnRcbiAgICpcbiAgICogQGRlZmF1bHQgLSBObyByb2xlIGlzIGFzc3VtZWQgKGN1cnJlbnQgY3JlZGVudGlhbHMgYXJlIHVzZWQpXG4gICAqL1xuICByZWFkb25seSBsb29rdXBSb2xlPzogQm9vdHN0cmFwUm9sZTtcblxuICAvKipcbiAgICogSWYgdGhlIHN0YWNrIHRlbXBsYXRlIGhhcyBhbHJlYWR5IGJlZW4gaW5jbHVkZWQgaW4gdGhlIGFzc2V0IG1hbmlmZXN0LCBpdHMgYXNzZXQgVVJMXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gTm90IHVwbG9hZGVkIHlldCwgdXBsb2FkIGp1c3QgYmVmb3JlIGRlcGxveWluZ1xuICAgKi9cbiAgcmVhZG9ubHkgc3RhY2tUZW1wbGF0ZUFzc2V0T2JqZWN0VXJsPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBWZXJzaW9uIG9mIGJvb3RzdHJhcCBzdGFjayByZXF1aXJlZCB0byBkZXBsb3kgdGhpcyBzdGFja1xuICAgKlxuICAgKiBAZGVmYXVsdCAtIE5vIGJvb3RzdHJhcCBzdGFjayByZXF1aXJlZFxuICAgKi9cbiAgcmVhZG9ubHkgcmVxdWlyZXNCb290c3RyYXBTdGFja1ZlcnNpb24/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIFNTTSBwYXJhbWV0ZXIgd2hlcmUgdGhlIGJvb3RzdHJhcCBzdGFjayB2ZXJzaW9uIG51bWJlciBjYW4gYmUgZm91bmRcbiAgICpcbiAgICogT25seSB1c2VkIGlmIGByZXF1aXJlc0Jvb3RzdHJhcFN0YWNrVmVyc2lvbmAgaXMgc2V0LlxuICAgKlxuICAgKiAtIElmIHRoaXMgdmFsdWUgaXMgbm90IHNldCwgdGhlIGJvb3RzdHJhcCBzdGFjayBuYW1lIG11c3QgYmUga25vd24gYXRcbiAgICogICBkZXBsb3ltZW50IHRpbWUgc28gdGhlIHN0YWNrIHZlcnNpb24gY2FuIGJlIGxvb2tlZCB1cCBmcm9tIHRoZSBzdGFja1xuICAgKiAgIG91dHB1dHMuXG4gICAqIC0gSWYgdGhpcyB2YWx1ZSBpcyBzZXQsIHRoZSBib290c3RyYXAgc3RhY2sgY2FuIGhhdmUgYW55IG5hbWUgYmVjYXVzZVxuICAgKiAgIHdlIHdvbid0IG5lZWQgdG8gbG9vayBpdCB1cC5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBCb290c3RyYXAgc3RhY2sgdmVyc2lvbiBudW1iZXIgbG9va2VkIHVwXG4gICAqL1xuICByZWFkb25seSBib290c3RyYXBTdGFja1ZlcnNpb25Tc21QYXJhbWV0ZXI/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhpcyBzdGFjayBzaG91bGQgYmUgdmFsaWRhdGVkIGJ5IHRoZSBDTEkgYWZ0ZXIgc3ludGhlc2lzXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IHZhbGlkYXRlT25TeW50aD86IGJvb2xlYW47XG59XG5cbi8qKlxuICogQ29uZmlndXJhdGlvbiBvcHRpb25zIGZvciB0aGUgQXNzZXQgTWFuaWZlc3RcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBc3NldE1hbmlmZXN0T3B0aW9ucyB7XG4gIC8qKlxuICAgKiBWZXJzaW9uIG9mIGJvb3RzdHJhcCBzdGFjayByZXF1aXJlZCB0byBkZXBsb3kgdGhpcyBzdGFja1xuICAgKlxuICAgKiBAZGVmYXVsdCAtIFZlcnNpb24gMSAoYmFzaWMgbW9kZXJuIGJvb3RzdHJhcCBzdGFjaylcbiAgICovXG4gIHJlYWRvbmx5IHJlcXVpcmVzQm9vdHN0cmFwU3RhY2tWZXJzaW9uPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBTU00gcGFyYW1ldGVyIHdoZXJlIHRoZSBib290c3RyYXAgc3RhY2sgdmVyc2lvbiBudW1iZXIgY2FuIGJlIGZvdW5kXG4gICAqXG4gICAqIC0gSWYgdGhpcyB2YWx1ZSBpcyBub3Qgc2V0LCB0aGUgYm9vdHN0cmFwIHN0YWNrIG5hbWUgbXVzdCBiZSBrbm93biBhdFxuICAgKiAgIGRlcGxveW1lbnQgdGltZSBzbyB0aGUgc3RhY2sgdmVyc2lvbiBjYW4gYmUgbG9va2VkIHVwIGZyb20gdGhlIHN0YWNrXG4gICAqICAgb3V0cHV0cy5cbiAgICogLSBJZiB0aGlzIHZhbHVlIGlzIHNldCwgdGhlIGJvb3RzdHJhcCBzdGFjayBjYW4gaGF2ZSBhbnkgbmFtZSBiZWNhdXNlXG4gICAqICAgd2Ugd29uJ3QgbmVlZCB0byBsb29rIGl0IHVwLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIEJvb3RzdHJhcCBzdGFjayB2ZXJzaW9uIG51bWJlciBsb29rZWQgdXBcbiAgICovXG4gIHJlYWRvbmx5IGJvb3RzdHJhcFN0YWNrVmVyc2lvblNzbVBhcmFtZXRlcj86IHN0cmluZztcbn1cblxuLyoqXG4gKiBBcnRpZmFjdCBwcm9wZXJ0aWVzIGZvciB0aGUgQXNzZXQgTWFuaWZlc3RcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBc3NldE1hbmlmZXN0UHJvcGVydGllcyBleHRlbmRzIEFzc2V0TWFuaWZlc3RPcHRpb25zIHtcbiAgLyoqXG4gICAqIEZpbGVuYW1lIG9mIHRoZSBhc3NldCBtYW5pZmVzdFxuICAgKi9cbiAgcmVhZG9ubHkgZmlsZTogc3RyaW5nO1xufVxuXG4vKipcbiAqIEFydGlmYWN0IHByb3BlcnRpZXMgZm9yIHRoZSBDb25zdHJ1Y3QgVHJlZSBBcnRpZmFjdFxuICovXG5leHBvcnQgaW50ZXJmYWNlIFRyZWVBcnRpZmFjdFByb3BlcnRpZXMge1xuICAvKipcbiAgICogRmlsZW5hbWUgb2YgdGhlIHRyZWUgYXJ0aWZhY3RcbiAgICovXG4gIHJlYWRvbmx5IGZpbGU6IHN0cmluZztcbn1cblxuLyoqXG4gKiBBcnRpZmFjdCBwcm9wZXJ0aWVzIGZvciBuZXN0ZWQgY2xvdWQgYXNzZW1ibGllc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIE5lc3RlZENsb3VkQXNzZW1ibHlQcm9wZXJ0aWVzIHtcbiAgLyoqXG4gICAqIFJlbGF0aXZlIHBhdGggdG8gdGhlIG5lc3RlZCBjbG91ZCBhc3NlbWJseVxuICAgKi9cbiAgcmVhZG9ubHkgZGlyZWN0b3J5TmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBEaXNwbGF5IG5hbWUgZm9yIHRoZSBjbG91ZCBhc3NlbWJseVxuICAgKlxuICAgKiBAZGVmYXVsdCAtIFRoZSBhcnRpZmFjdCBJRFxuICAgKi9cbiAgcmVhZG9ubHkgZGlzcGxheU5hbWU/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogUHJvcGVydGllcyBmb3IgbWFuaWZlc3QgYXJ0aWZhY3RzXG4gKi9cbmV4cG9ydCB0eXBlIEFydGlmYWN0UHJvcGVydGllcyA9XG4gIHwgQXdzQ2xvdWRGb3JtYXRpb25TdGFja1Byb3BlcnRpZXNcbiAgfCBBc3NldE1hbmlmZXN0UHJvcGVydGllc1xuICB8IFRyZWVBcnRpZmFjdFByb3BlcnRpZXNcbiAgfCBOZXN0ZWRDbG91ZEFzc2VtYmx5UHJvcGVydGllcztcbiJdfQ==","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.LoadBalancerListenerProtocol = exports.LoadBalancerType = exports.ContextProvider = void 0;\n/**\n * Identifier for the context provider\n */\nvar ContextProvider;\n(function (ContextProvider) {\n /**\n * AMI provider\n */\n ContextProvider[\"AMI_PROVIDER\"] = \"ami\";\n /**\n * AZ provider\n */\n ContextProvider[\"AVAILABILITY_ZONE_PROVIDER\"] = \"availability-zones\";\n /**\n * Route53 Hosted Zone provider\n */\n ContextProvider[\"HOSTED_ZONE_PROVIDER\"] = \"hosted-zone\";\n /**\n * SSM Parameter Provider\n */\n ContextProvider[\"SSM_PARAMETER_PROVIDER\"] = \"ssm\";\n /**\n * VPC Provider\n */\n ContextProvider[\"VPC_PROVIDER\"] = \"vpc-provider\";\n /**\n * VPC Endpoint Service AZ Provider\n */\n ContextProvider[\"ENDPOINT_SERVICE_AVAILABILITY_ZONE_PROVIDER\"] = \"endpoint-service-availability-zones\";\n /**\n * Load balancer provider\n */\n ContextProvider[\"LOAD_BALANCER_PROVIDER\"] = \"load-balancer\";\n /**\n * Load balancer listener provider\n */\n ContextProvider[\"LOAD_BALANCER_LISTENER_PROVIDER\"] = \"load-balancer-listener\";\n /**\n * Security group provider\n */\n ContextProvider[\"SECURITY_GROUP_PROVIDER\"] = \"security-group\";\n /**\n * KMS Key Provider\n */\n ContextProvider[\"KEY_PROVIDER\"] = \"key-provider\";\n /**\n * A plugin provider (the actual plugin name will be in the properties)\n */\n ContextProvider[\"PLUGIN\"] = \"plugin\";\n})(ContextProvider || (exports.ContextProvider = ContextProvider = {}));\n/**\n * Type of load balancer\n */\nvar LoadBalancerType;\n(function (LoadBalancerType) {\n /**\n * Network load balancer\n */\n LoadBalancerType[\"NETWORK\"] = \"network\";\n /**\n * Application load balancer\n */\n LoadBalancerType[\"APPLICATION\"] = \"application\";\n})(LoadBalancerType || (exports.LoadBalancerType = LoadBalancerType = {}));\n/**\n * The protocol for connections from clients to the load balancer\n */\nvar LoadBalancerListenerProtocol;\n(function (LoadBalancerListenerProtocol) {\n /**\n * HTTP protocol\n */\n LoadBalancerListenerProtocol[\"HTTP\"] = \"HTTP\";\n /**\n * HTTPS protocol\n */\n LoadBalancerListenerProtocol[\"HTTPS\"] = \"HTTPS\";\n /**\n * TCP protocol\n */\n LoadBalancerListenerProtocol[\"TCP\"] = \"TCP\";\n /**\n * TLS protocol\n */\n LoadBalancerListenerProtocol[\"TLS\"] = \"TLS\";\n /**\n * UDP protocol\n * */\n LoadBalancerListenerProtocol[\"UDP\"] = \"UDP\";\n /**\n * TCP and UDP protocol\n * */\n LoadBalancerListenerProtocol[\"TCP_UDP\"] = \"TCP_UDP\";\n})(LoadBalancerListenerProtocol || (exports.LoadBalancerListenerProtocol = LoadBalancerListenerProtocol = {}));\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGV4dC1xdWVyaWVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiY29udGV4dC1xdWVyaWVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUVBOztHQUVHO0FBQ0gsSUFBWSxlQXVEWDtBQXZERCxXQUFZLGVBQWU7SUFDekI7O09BRUc7SUFDSCx1Q0FBb0IsQ0FBQTtJQUVwQjs7T0FFRztJQUNILG9FQUFpRCxDQUFBO0lBRWpEOztPQUVHO0lBQ0gsdURBQW9DLENBQUE7SUFFcEM7O09BRUc7SUFDSCxpREFBOEIsQ0FBQTtJQUU5Qjs7T0FFRztJQUNILGdEQUE2QixDQUFBO0lBRTdCOztPQUVHO0lBQ0gsc0dBQW1GLENBQUE7SUFFbkY7O09BRUc7SUFDSCwyREFBd0MsQ0FBQTtJQUV4Qzs7T0FFRztJQUNILDZFQUEwRCxDQUFBO0lBRTFEOztPQUVHO0lBQ0gsNkRBQTBDLENBQUE7SUFFMUM7O09BRUc7SUFDSCxnREFBNkIsQ0FBQTtJQUU3Qjs7T0FFRztJQUNILG9DQUFpQixDQUFBO0FBQ25CLENBQUMsRUF2RFcsZUFBZSwrQkFBZixlQUFlLFFBdUQxQjtBQXlKRDs7R0FFRztBQUNILElBQVksZ0JBVVg7QUFWRCxXQUFZLGdCQUFnQjtJQUMxQjs7T0FFRztJQUNILHVDQUFtQixDQUFBO0lBRW5COztPQUVHO0lBQ0gsK0NBQTJCLENBQUE7QUFDN0IsQ0FBQyxFQVZXLGdCQUFnQixnQ0FBaEIsZ0JBQWdCLFFBVTNCO0FBNkJEOztHQUVHO0FBQ0gsSUFBWSw0QkE4Qlg7QUE5QkQsV0FBWSw0QkFBNEI7SUFDdEM7O09BRUc7SUFDSCw2Q0FBYSxDQUFBO0lBRWI7O09BRUc7SUFDSCwrQ0FBZSxDQUFBO0lBRWY7O09BRUc7SUFDSCwyQ0FBVyxDQUFBO0lBRVg7O09BRUc7SUFDSCwyQ0FBVyxDQUFBO0lBRVg7O1NBRUs7SUFDTCwyQ0FBVyxDQUFBO0lBRVg7O1NBRUs7SUFDTCxtREFBbUIsQ0FBQTtBQUNyQixDQUFDLEVBOUJXLDRCQUE0Qiw0Q0FBNUIsNEJBQTRCLFFBOEJ2QyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFRhZyB9IGZyb20gJy4vbWV0YWRhdGEtc2NoZW1hJztcblxuLyoqXG4gKiBJZGVudGlmaWVyIGZvciB0aGUgY29udGV4dCBwcm92aWRlclxuICovXG5leHBvcnQgZW51bSBDb250ZXh0UHJvdmlkZXIge1xuICAvKipcbiAgICogQU1JIHByb3ZpZGVyXG4gICAqL1xuICBBTUlfUFJPVklERVIgPSAnYW1pJyxcblxuICAvKipcbiAgICogQVogcHJvdmlkZXJcbiAgICovXG4gIEFWQUlMQUJJTElUWV9aT05FX1BST1ZJREVSID0gJ2F2YWlsYWJpbGl0eS16b25lcycsXG5cbiAgLyoqXG4gICAqIFJvdXRlNTMgSG9zdGVkIFpvbmUgcHJvdmlkZXJcbiAgICovXG4gIEhPU1RFRF9aT05FX1BST1ZJREVSID0gJ2hvc3RlZC16b25lJyxcblxuICAvKipcbiAgICogU1NNIFBhcmFtZXRlciBQcm92aWRlclxuICAgKi9cbiAgU1NNX1BBUkFNRVRFUl9QUk9WSURFUiA9ICdzc20nLFxuXG4gIC8qKlxuICAgKiBWUEMgUHJvdmlkZXJcbiAgICovXG4gIFZQQ19QUk9WSURFUiA9ICd2cGMtcHJvdmlkZXInLFxuXG4gIC8qKlxuICAgKiBWUEMgRW5kcG9pbnQgU2VydmljZSBBWiBQcm92aWRlclxuICAgKi9cbiAgRU5EUE9JTlRfU0VSVklDRV9BVkFJTEFCSUxJVFlfWk9ORV9QUk9WSURFUiA9ICdlbmRwb2ludC1zZXJ2aWNlLWF2YWlsYWJpbGl0eS16b25lcycsXG5cbiAgLyoqXG4gICAqIExvYWQgYmFsYW5jZXIgcHJvdmlkZXJcbiAgICovXG4gIExPQURfQkFMQU5DRVJfUFJPVklERVIgPSAnbG9hZC1iYWxhbmNlcicsXG5cbiAgLyoqXG4gICAqIExvYWQgYmFsYW5jZXIgbGlzdGVuZXIgcHJvdmlkZXJcbiAgICovXG4gIExPQURfQkFMQU5DRVJfTElTVEVORVJfUFJPVklERVIgPSAnbG9hZC1iYWxhbmNlci1saXN0ZW5lcicsXG5cbiAgLyoqXG4gICAqIFNlY3VyaXR5IGdyb3VwIHByb3ZpZGVyXG4gICAqL1xuICBTRUNVUklUWV9HUk9VUF9QUk9WSURFUiA9ICdzZWN1cml0eS1ncm91cCcsXG5cbiAgLyoqXG4gICAqIEtNUyBLZXkgUHJvdmlkZXJcbiAgICovXG4gIEtFWV9QUk9WSURFUiA9ICdrZXktcHJvdmlkZXInLFxuXG4gIC8qKlxuICAgKiBBIHBsdWdpbiBwcm92aWRlciAodGhlIGFjdHVhbCBwbHVnaW4gbmFtZSB3aWxsIGJlIGluIHRoZSBwcm9wZXJ0aWVzKVxuICAgKi9cbiAgUExVR0lOID0gJ3BsdWdpbicsXG59XG5cbi8qKlxuICogT3B0aW9ucyBmb3IgY29udGV4dCBsb29rdXAgcm9sZXMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ29udGV4dExvb2t1cFJvbGVPcHRpb25zIHtcbiAgLyoqXG4gICAqIFF1ZXJ5IGFjY291bnRcbiAgICovXG4gIHJlYWRvbmx5IGFjY291bnQ6IHN0cmluZztcblxuICAvKipcbiAgICogUXVlcnkgcmVnaW9uXG4gICAqL1xuICByZWFkb25seSByZWdpb246IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIEFSTiBvZiB0aGUgcm9sZSB0aGF0IHNob3VsZCBiZSB1c2VkIHRvIGxvb2sgdXAgdGhlIG1pc3NpbmcgdmFsdWVzXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gTm9uZVxuICAgKi9cbiAgcmVhZG9ubHkgbG9va3VwUm9sZUFybj86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIEV4dGVybmFsSWQgdGhhdCBuZWVkcyB0byBiZSBzdXBwbGllZCB3aGlsZSBhc3N1bWluZyB0aGlzIHJvbGVcbiAgICpcbiAgICogQGRlZmF1bHQgLSBObyBFeHRlcm5hbElkIHdpbGwgYmUgc3VwcGxpZWRcbiAgICovXG4gIHJlYWRvbmx5IGxvb2t1cFJvbGVFeHRlcm5hbElkPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBBZGRpdGlvbmFsIG9wdGlvbnMgdG8gcGFzcyB0byBTVFMgd2hlbiBhc3N1bWluZyB0aGUgbG9va3VwIHJvbGUuXG4gICAqXG4gICAqIC0gYFJvbGVBcm5gIHNob3VsZCBub3QgYmUgdXNlZC4gVXNlIHRoZSBkZWRpY2F0ZWQgYGxvb2t1cFJvbGVBcm5gIHByb3BlcnR5IGluc3RlYWQuXG4gICAqIC0gYEV4dGVybmFsSWRgIHNob3VsZCBub3QgYmUgdXNlZC4gVXNlIHRoZSBkZWRpY2F0ZWQgYGxvb2t1cFJvbGVFeHRlcm5hbElkYCBpbnN0ZWFkLlxuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NKYXZhU2NyaXB0U0RLL2xhdGVzdC9BV1MvU1RTLmh0bWwjYXNzdW1lUm9sZS1wcm9wZXJ0eVxuICAgKiBAZGVmYXVsdCAtIE5vIGFkZGl0aW9uYWwgb3B0aW9ucy5cbiAgICovXG4gIHJlYWRvbmx5IGFzc3VtZVJvbGVBZGRpdGlvbmFsT3B0aW9ucz86IHsgW2tleTogc3RyaW5nXTogYW55IH07XG59XG5cbi8qKlxuICogUXVlcnkgdG8gQU1JIGNvbnRleHQgcHJvdmlkZXJcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBbWlDb250ZXh0UXVlcnkgZXh0ZW5kcyBDb250ZXh0TG9va3VwUm9sZU9wdGlvbnMge1xuICAvKipcbiAgICogT3duZXJzIHRvIERlc2NyaWJlSW1hZ2VzIGNhbGxcbiAgICpcbiAgICogQGRlZmF1bHQgLSBBbGwgb3duZXJzXG4gICAqL1xuICByZWFkb25seSBvd25lcnM/OiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogRmlsdGVycyB0byBEZXNjcmliZUltYWdlcyBjYWxsXG4gICAqL1xuICByZWFkb25seSBmaWx0ZXJzOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZ1tdIH07XG59XG5cbi8qKlxuICogUXVlcnkgdG8gYXZhaWxhYmlsaXR5IHpvbmUgY29udGV4dCBwcm92aWRlclxuICovXG5leHBvcnQgaW50ZXJmYWNlIEF2YWlsYWJpbGl0eVpvbmVzQ29udGV4dFF1ZXJ5IGV4dGVuZHMgQ29udGV4dExvb2t1cFJvbGVPcHRpb25zIHt9XG5cbi8qKlxuICogUXVlcnkgdG8gaG9zdGVkIHpvbmUgY29udGV4dCBwcm92aWRlclxuICovXG5leHBvcnQgaW50ZXJmYWNlIEhvc3RlZFpvbmVDb250ZXh0UXVlcnkgZXh0ZW5kcyBDb250ZXh0TG9va3VwUm9sZU9wdGlvbnMge1xuICAvKipcbiAgICogVGhlIGRvbWFpbiBuYW1lIGUuZy4gZXhhbXBsZS5jb20gdG8gbG9va3VwXG4gICAqL1xuICByZWFkb25seSBkb21haW5OYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRydWUgaWYgdGhlIHpvbmUgeW91IHdhbnQgdG8gZmluZCBpcyBhIHByaXZhdGUgaG9zdGVkIHpvbmVcbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IHByaXZhdGVab25lPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogVGhlIFZQQyBJRCB0byB0aGF0IHRoZSBwcml2YXRlIHpvbmUgbXVzdCBiZSBhc3NvY2lhdGVkIHdpdGhcbiAgICpcbiAgICogSWYgeW91IHByb3ZpZGUgVlBDIElEIGFuZCBwcml2YXRlWm9uZSBpcyBmYWxzZSwgdGhpcyB3aWxsIHJldHVybiBubyByZXN1bHRzXG4gICAqIGFuZCByYWlzZSBhbiBlcnJvci5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBSZXF1aXJlZCBpZiBwcml2YXRlWm9uZT10cnVlXG4gICAqL1xuICByZWFkb25seSB2cGNJZD86IHN0cmluZztcbn1cblxuLyoqXG4gKiBRdWVyeSB0byBTU00gUGFyYW1ldGVyIENvbnRleHQgUHJvdmlkZXJcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTU01QYXJhbWV0ZXJDb250ZXh0UXVlcnkgZXh0ZW5kcyBDb250ZXh0TG9va3VwUm9sZU9wdGlvbnMge1xuICAvKipcbiAgICogUGFyYW1ldGVyIG5hbWUgdG8gcXVlcnlcbiAgICovXG4gIHJlYWRvbmx5IHBhcmFtZXRlck5hbWU6IHN0cmluZztcbn1cblxuLyoqXG4gKiBRdWVyeSBpbnB1dCBmb3IgbG9va2luZyB1cCBhIFZQQ1xuICovXG5leHBvcnQgaW50ZXJmYWNlIFZwY0NvbnRleHRRdWVyeSBleHRlbmRzIENvbnRleHRMb29rdXBSb2xlT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBGaWx0ZXJzIHRvIGFwcGx5IHRvIHRoZSBWUENcbiAgICpcbiAgICogRmlsdGVyIHBhcmFtZXRlcnMgYXJlIHRoZSBzYW1lIGFzIHBhc3NlZCB0byBEZXNjcmliZVZwY3MuXG4gICAqXG4gICAqIEBzZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FXU0VDMi9sYXRlc3QvQVBJUmVmZXJlbmNlL0FQSV9EZXNjcmliZVZwY3MuaHRtbFxuICAgKi9cbiAgcmVhZG9ubHkgZmlsdGVyOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9O1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIHBvcHVsYXRlIHRoZSBzdWJuZXRHcm91cHMgZmllbGQgb2YgdGhlIGBWcGNDb250ZXh0UmVzcG9uc2VgLFxuICAgKiB3aGljaCBjb250YWlucyBwb3RlbnRpYWxseSBhc3ltbWV0cmljIHN1Ym5ldCBncm91cHMuXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByZWFkb25seSByZXR1cm5Bc3ltbWV0cmljU3VibmV0cz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIE9wdGlvbmFsIHRhZyBmb3Igc3VibmV0IGdyb3VwIG5hbWUuXG4gICAqIElmIG5vdCBwcm92aWRlZCwgd2UnbGwgbG9vayBhdCB0aGUgYXdzLWNkazpzdWJuZXQtbmFtZSB0YWcuXG4gICAqIElmIHRoZSBzdWJuZXQgZG9lcyBub3QgaGF2ZSB0aGUgc3BlY2lmaWVkIHRhZyxcbiAgICogd2UnbGwgdXNlIGl0cyB0eXBlIGFzIHRoZSBuYW1lLlxuICAgKlxuICAgKiBAZGVmYXVsdCAnYXdzLWNkazpzdWJuZXQtbmFtZSdcbiAgICovXG4gIHJlYWRvbmx5IHN1Ym5ldEdyb3VwTmFtZVRhZz86IHN0cmluZztcblxuICAvKipcbiAgICogV2hldGhlciB0byBwb3B1bGF0ZSB0aGUgYHZwbkdhdGV3YXlJZGAgZmllbGQgb2YgdGhlIGBWcGNDb250ZXh0UmVzcG9uc2VgLFxuICAgKiB3aGljaCBjb250YWlucyB0aGUgVlBOIEdhdGV3YXkgSUQsIGlmIG9uZSBleGlzdHMuIFlvdSBjYW4gZXhwbGljaXRseVxuICAgKiBkaXNhYmxlIHRoaXMgaW4gb3JkZXIgdG8gYXZvaWQgdGhlIGxvb2t1cCBpZiB5b3Uga25vdyB0aGUgVlBDIGRvZXMgbm90IGhhdmVcbiAgICogYSBWUE4gR2F0d2F5IGF0dGFjaGVkLlxuICAgKlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICByZWFkb25seSByZXR1cm5WcG5HYXRld2F5cz86IGJvb2xlYW47XG59XG5cbi8qKlxuICogUXVlcnkgdG8gZW5kcG9pbnQgc2VydmljZSBjb250ZXh0IHByb3ZpZGVyXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRW5kcG9pbnRTZXJ2aWNlQXZhaWxhYmlsaXR5Wm9uZXNDb250ZXh0UXVlcnkgZXh0ZW5kcyBDb250ZXh0TG9va3VwUm9sZU9wdGlvbnMge1xuICAvKipcbiAgICogUXVlcnkgc2VydmljZSBuYW1lXG4gICAqL1xuICByZWFkb25seSBzZXJ2aWNlTmFtZTogc3RyaW5nO1xufVxuXG4vKipcbiAqIFR5cGUgb2YgbG9hZCBiYWxhbmNlclxuICovXG5leHBvcnQgZW51bSBMb2FkQmFsYW5jZXJUeXBlIHtcbiAgLyoqXG4gICAqIE5ldHdvcmsgbG9hZCBiYWxhbmNlclxuICAgKi9cbiAgTkVUV09SSyA9ICduZXR3b3JrJyxcblxuICAvKipcbiAgICogQXBwbGljYXRpb24gbG9hZCBiYWxhbmNlclxuICAgKi9cbiAgQVBQTElDQVRJT04gPSAnYXBwbGljYXRpb24nLFxufVxuXG4vKipcbiAqIEZpbHRlcnMgZm9yIHNlbGVjdGluZyBsb2FkIGJhbGFuY2Vyc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIExvYWRCYWxhbmNlckZpbHRlciBleHRlbmRzIENvbnRleHRMb29rdXBSb2xlT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBGaWx0ZXIgbG9hZCBiYWxhbmNlcnMgYnkgdGhlaXIgdHlwZVxuICAgKi9cbiAgcmVhZG9ubHkgbG9hZEJhbGFuY2VyVHlwZTogTG9hZEJhbGFuY2VyVHlwZTtcblxuICAvKipcbiAgICogRmluZCBieSBsb2FkIGJhbGFuY2VyJ3MgQVJOXG4gICAqIEBkZWZhdWx0IC0gZG9lcyBub3Qgc2VhcmNoIGJ5IGxvYWQgYmFsYW5jZXIgYXJuXG4gICAqL1xuICByZWFkb25seSBsb2FkQmFsYW5jZXJBcm4/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIE1hdGNoIGxvYWQgYmFsYW5jZXIgdGFnc1xuICAgKiBAZGVmYXVsdCAtIGRvZXMgbm90IG1hdGNoIGxvYWQgYmFsYW5jZXJzIGJ5IHRhZ3NcbiAgICovXG4gIHJlYWRvbmx5IGxvYWRCYWxhbmNlclRhZ3M/OiBUYWdbXTtcbn1cblxuLyoqXG4gKiBRdWVyeSBpbnB1dCBmb3IgbG9va2luZyB1cCBhIGxvYWQgYmFsYW5jZXJcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBMb2FkQmFsYW5jZXJDb250ZXh0UXVlcnkgZXh0ZW5kcyBMb2FkQmFsYW5jZXJGaWx0ZXIge31cblxuLyoqXG4gKiBUaGUgcHJvdG9jb2wgZm9yIGNvbm5lY3Rpb25zIGZyb20gY2xpZW50cyB0byB0aGUgbG9hZCBiYWxhbmNlclxuICovXG5leHBvcnQgZW51bSBMb2FkQmFsYW5jZXJMaXN0ZW5lclByb3RvY29sIHtcbiAgLyoqXG4gICAqIEhUVFAgcHJvdG9jb2xcbiAgICovXG4gIEhUVFAgPSAnSFRUUCcsXG5cbiAgLyoqXG4gICAqIEhUVFBTIHByb3RvY29sXG4gICAqL1xuICBIVFRQUyA9ICdIVFRQUycsXG5cbiAgLyoqXG4gICAqIFRDUCBwcm90b2NvbFxuICAgKi9cbiAgVENQID0gJ1RDUCcsXG5cbiAgLyoqXG4gICAqIFRMUyBwcm90b2NvbFxuICAgKi9cbiAgVExTID0gJ1RMUycsXG5cbiAgLyoqXG4gICAqIFVEUCBwcm90b2NvbFxuICAgKiAqL1xuICBVRFAgPSAnVURQJyxcblxuICAvKipcbiAgICogVENQIGFuZCBVRFAgcHJvdG9jb2xcbiAgICogKi9cbiAgVENQX1VEUCA9ICdUQ1BfVURQJyxcbn1cblxuLyoqXG4gKiBRdWVyeSBpbnB1dCBmb3IgbG9va2luZyB1cCBhIGxvYWQgYmFsYW5jZXIgbGlzdGVuZXJcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBMb2FkQmFsYW5jZXJMaXN0ZW5lckNvbnRleHRRdWVyeSBleHRlbmRzIExvYWRCYWxhbmNlckZpbHRlciB7XG4gIC8qKlxuICAgKiBGaW5kIGJ5IGxpc3RlbmVyJ3MgYXJuXG4gICAqIEBkZWZhdWx0IC0gZG9lcyBub3QgZmluZCBieSBsaXN0ZW5lciBhcm5cbiAgICovXG4gIHJlYWRvbmx5IGxpc3RlbmVyQXJuPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBGaWx0ZXIgYnkgbGlzdGVuZXIgcHJvdG9jb2xcbiAgICogQGRlZmF1bHQgLSBkb2VzIG5vdCBmaWx0ZXIgYnkgbGlzdGVuZXIgcHJvdG9jb2xcbiAgICovXG4gIHJlYWRvbmx5IGxpc3RlbmVyUHJvdG9jb2w/OiBMb2FkQmFsYW5jZXJMaXN0ZW5lclByb3RvY29sO1xuXG4gIC8qKlxuICAgKiBGaWx0ZXIgbGlzdGVuZXJzIGJ5IGxpc3RlbmVyIHBvcnRcbiAgICogQGRlZmF1bHQgLSBkb2VzIG5vdCBmaWx0ZXIgYnkgYSBsaXN0ZW5lciBwb3J0XG4gICAqL1xuICByZWFkb25seSBsaXN0ZW5lclBvcnQ/OiBudW1iZXI7XG59XG5cbi8qKlxuICogUXVlcnkgaW5wdXQgZm9yIGxvb2tpbmcgdXAgYSBzZWN1cml0eSBncm91cFxuICovXG5leHBvcnQgaW50ZXJmYWNlIFNlY3VyaXR5R3JvdXBDb250ZXh0UXVlcnkgZXh0ZW5kcyBDb250ZXh0TG9va3VwUm9sZU9wdGlvbnMge1xuICAvKipcbiAgICogU2VjdXJpdHkgZ3JvdXAgaWRcbiAgICpcbiAgICogQGRlZmF1bHQgLSBOb25lXG4gICAqL1xuICByZWFkb25seSBzZWN1cml0eUdyb3VwSWQ/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFNlY3VyaXR5IGdyb3VwIG5hbWVcbiAgICpcbiAgICogQGRlZmF1bHQgLSBOb25lXG4gICAqL1xuICByZWFkb25seSBzZWN1cml0eUdyb3VwTmFtZT86IHN0cmluZztcblxuICAvKipcbiAgICogVlBDIElEXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gTm9uZVxuICAgKi9cbiAgcmVhZG9ubHkgdnBjSWQ/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogUXVlcnkgaW5wdXQgZm9yIGxvb2tpbmcgdXAgYSBLTVMgS2V5XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgS2V5Q29udGV4dFF1ZXJ5IGV4dGVuZHMgQ29udGV4dExvb2t1cFJvbGVPcHRpb25zIHtcbiAgLyoqXG4gICAqIEFsaWFzIG5hbWUgdXNlZCB0byBzZWFyY2ggdGhlIEtleVxuICAgKi9cbiAgcmVhZG9ubHkgYWxpYXNOYW1lOiBzdHJpbmc7XG59XG5cbi8qKlxuICogUXVlcnkgaW5wdXQgZm9yIHBsdWdpbnNcbiAqXG4gKiBUaGlzIGFsdGVybmF0ZSBicmFuY2ggaXMgbmVjZXNzYXJ5IGJlY2F1c2UgaXQgbmVlZHMgdG8gYmUgYWJsZSB0byBlc2NhcGUgYWxsIHR5cGUgY2hlY2tpbmdcbiAqIHdlIGRvIG9uIG9uIHRoZSBjbG91ZCBhc3NlbWJseSAtLSB3ZSBjYW5ub3Qga25vdyB0aGUgcHJvcGVydGllcyB0aGF0IHdpbGwgYmUgdXNlZCBhIHByaW9yaS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBQbHVnaW5Db250ZXh0UXVlcnkge1xuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIHBsdWdpblxuICAgKi9cbiAgcmVhZG9ubHkgcGx1Z2luTmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBBcmJpdHJhcnkgb3RoZXIgYXJndW1lbnRzIGZvciB0aGUgcGx1Z2luLlxuICAgKlxuICAgKiBUaGlzIGluZGV4IHNpZ25hdHVyZSBpcyBub3QgdXNhYmxlIGluIG5vbi1UeXBlU2NyaXB0L0phdmFTY3JpcHQgbGFuZ3VhZ2VzLlxuICAgKlxuICAgKiBAanNpaSBpZ25vcmVcbiAgICovXG4gIFtrZXk6IHN0cmluZ106IGFueTtcbn1cblxuZXhwb3J0IHR5cGUgQ29udGV4dFF1ZXJ5UHJvcGVydGllcyA9XG4gIHwgQW1pQ29udGV4dFF1ZXJ5XG4gIHwgQXZhaWxhYmlsaXR5Wm9uZXNDb250ZXh0UXVlcnlcbiAgfCBIb3N0ZWRab25lQ29udGV4dFF1ZXJ5XG4gIHwgU1NNUGFyYW1ldGVyQ29udGV4dFF1ZXJ5XG4gIHwgVnBjQ29udGV4dFF1ZXJ5XG4gIHwgRW5kcG9pbnRTZXJ2aWNlQXZhaWxhYmlsaXR5Wm9uZXNDb250ZXh0UXVlcnlcbiAgfCBMb2FkQmFsYW5jZXJDb250ZXh0UXVlcnlcbiAgfCBMb2FkQmFsYW5jZXJMaXN0ZW5lckNvbnRleHRRdWVyeVxuICB8IFNlY3VyaXR5R3JvdXBDb250ZXh0UXVlcnlcbiAgfCBLZXlDb250ZXh0UXVlcnlcbiAgfCBQbHVnaW5Db250ZXh0UXVlcnk7XG4iXX0=","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./schema\"), exports);\n__exportStar(require(\"./metadata-schema\"), exports);\n__exportStar(require(\"./artifact-schema\"), exports);\n__exportStar(require(\"./context-queries\"), exports);\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsMkNBQXlCO0FBQ3pCLG9EQUFrQztBQUNsQyxvREFBa0M7QUFDbEMsb0RBQWtDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9zY2hlbWEnO1xuZXhwb3J0ICogZnJvbSAnLi9tZXRhZGF0YS1zY2hlbWEnO1xuZXhwb3J0ICogZnJvbSAnLi9hcnRpZmFjdC1zY2hlbWEnO1xuZXhwb3J0ICogZnJvbSAnLi9jb250ZXh0LXF1ZXJpZXMnO1xuIl19","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ArtifactMetadataEntryType = void 0;\n/**\n * Type of artifact metadata entry.\n */\nvar ArtifactMetadataEntryType;\n(function (ArtifactMetadataEntryType) {\n /**\n * Asset in metadata.\n */\n ArtifactMetadataEntryType[\"ASSET\"] = \"aws:cdk:asset\";\n /**\n * Metadata key used to print INFO-level messages by the toolkit when an app is syntheized.\n */\n ArtifactMetadataEntryType[\"INFO\"] = \"aws:cdk:info\";\n /**\n * Metadata key used to print WARNING-level messages by the toolkit when an app is syntheized.\n */\n ArtifactMetadataEntryType[\"WARN\"] = \"aws:cdk:warning\";\n /**\n * Metadata key used to print ERROR-level messages by the toolkit when an app is syntheized.\n */\n ArtifactMetadataEntryType[\"ERROR\"] = \"aws:cdk:error\";\n /**\n * Represents the CloudFormation logical ID of a resource at a certain path.\n */\n ArtifactMetadataEntryType[\"LOGICAL_ID\"] = \"aws:cdk:logicalId\";\n /**\n * Represents tags of a stack.\n */\n ArtifactMetadataEntryType[\"STACK_TAGS\"] = \"aws:cdk:stack-tags\";\n})(ArtifactMetadataEntryType || (exports.ArtifactMetadataEntryType = ArtifactMetadataEntryType = {}));\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWV0YWRhdGEtc2NoZW1hLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsibWV0YWRhdGEtc2NoZW1hLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQStRQTs7R0FFRztBQUNILElBQVkseUJBOEJYO0FBOUJELFdBQVkseUJBQXlCO0lBQ25DOztPQUVHO0lBQ0gsb0RBQXVCLENBQUE7SUFFdkI7O09BRUc7SUFDSCxrREFBcUIsQ0FBQTtJQUVyQjs7T0FFRztJQUNILHFEQUF3QixDQUFBO0lBRXhCOztPQUVHO0lBQ0gsb0RBQXVCLENBQUE7SUFFdkI7O09BRUc7SUFDSCw2REFBZ0MsQ0FBQTtJQUVoQzs7T0FFRztJQUNILDhEQUFpQyxDQUFBO0FBQ25DLENBQUMsRUE5QlcseUJBQXlCLHlDQUF6Qix5QkFBeUIsUUE4QnBDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDb21tb24gcHJvcGVydGllcyBmb3IgYXNzZXQgbWV0YWRhdGEuXG4gKi9cbmludGVyZmFjZSBCYXNlQXNzZXRNZXRhZGF0YUVudHJ5IHtcbiAgLyoqXG4gICAqIFJlcXVlc3RlZCBwYWNrYWdpbmcgc3R5bGVcbiAgICovXG4gIHJlYWRvbmx5IHBhY2thZ2luZzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBMb2dpY2FsIGlkZW50aWZpZXIgZm9yIHRoZSBhc3NldFxuICAgKi9cbiAgcmVhZG9ubHkgaWQ6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIGhhc2ggb2YgdGhlIGFzc2V0IHNvdXJjZS5cbiAgICovXG4gIHJlYWRvbmx5IHNvdXJjZUhhc2g6IHN0cmluZztcblxuICAvKipcbiAgICogUGF0aCBvbiBkaXNrIHRvIHRoZSBhc3NldFxuICAgKi9cbiAgcmVhZG9ubHkgcGF0aDogc3RyaW5nO1xufVxuXG4vKipcbiAqIE1ldGFkYXRhIEVudHJ5IHNwZWMgZm9yIGZpbGVzLlxuICpcbiAqIEBleGFtcGxlXG4gKiBjb25zdCBlbnRyeSA9IHtcbiAqICAgcGFja2FnaW5nOiAnZmlsZScsXG4gKiAgIHMzQnVja2V0UGFyYW1ldGVyOiAnYnVja2V0LXBhcmFtZXRlcicsXG4gKiAgIHMzS2V5UGFyYW1lbnRlcjogJ2tleS1wYXJhbWV0ZXInLFxuICogICBhcnRpZmFjdEhhc2hQYXJhbWV0ZXI6ICdoYXNoLXBhcmFtZXRlcicsXG4gKiB9XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRmlsZUFzc2V0TWV0YWRhdGFFbnRyeSBleHRlbmRzIEJhc2VBc3NldE1ldGFkYXRhRW50cnkge1xuICAvKipcbiAgICogUmVxdWVzdGVkIHBhY2thZ2luZyBzdHlsZVxuICAgKi9cbiAgcmVhZG9ubHkgcGFja2FnaW5nOiAnemlwJyB8ICdmaWxlJztcblxuICAvKipcbiAgICogTmFtZSBvZiBwYXJhbWV0ZXIgd2hlcmUgUzMgYnVja2V0IHNob3VsZCBiZSBwYXNzZWQgaW5cbiAgICovXG4gIHJlYWRvbmx5IHMzQnVja2V0UGFyYW1ldGVyOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIE5hbWUgb2YgcGFyYW1ldGVyIHdoZXJlIFMzIGtleSBzaG91bGQgYmUgcGFzc2VkIGluXG4gICAqL1xuICByZWFkb25seSBzM0tleVBhcmFtZXRlcjogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgcGFyYW1ldGVyIHdoZXJlIHRoZSBoYXNoIG9mIHRoZSBidW5kbGVkIGFzc2V0IHNob3VsZCBiZSBwYXNzZWQgaW4uXG4gICAqL1xuICByZWFkb25seSBhcnRpZmFjdEhhc2hQYXJhbWV0ZXI6IHN0cmluZztcbn1cblxuLyoqXG4gKiBNZXRhZGF0YSBFbnRyeSBzcGVjIGZvciBzdGFjayB0YWcuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVGFnIHtcbiAgLyoqXG4gICAqIFRhZyBrZXkuXG4gICAqXG4gICAqIChJbiB0aGUgYWN0dWFsIGZpbGUgb24gZGlzayB0aGlzIHdpbGwgYmUgY2FzZWQgYXMgXCJLZXlcIiwgYW5kIHRoZSBzdHJ1Y3R1cmUgaXNcbiAgICogcGF0Y2hlZCB0byBtYXRjaCB0aGlzIHN0cnVjdHVyZSB1cG9uIGxvYWRpbmc6XG4gICAqIGh0dHBzOi8vZ2l0aHViLmNvbS9hd3MvYXdzLWNkay9ibG9iLzRhYWRhYTc3OWI0OGYzNTgzOGNjY2Q0ZTI1MTA3YjIzMzhmMDU1NDcvcGFja2FnZXMvJTQwYXdzLWNkay9jbG91ZC1hc3NlbWJseS1zY2hlbWEvbGliL21hbmlmZXN0LnRzI0wxMzcpXG4gICAqL1xuICByZWFkb25seSBrZXk6IHN0cmluZztcblxuICAvKipcbiAgICogVGFnIHZhbHVlLlxuICAgKlxuICAgKiAoSW4gdGhlIGFjdHVhbCBmaWxlIG9uIGRpc2sgdGhpcyB3aWxsIGJlIGNhc2VkIGFzIFwiVmFsdWVcIiwgYW5kIHRoZSBzdHJ1Y3R1cmUgaXNcbiAgICogcGF0Y2hlZCB0byBtYXRjaCB0aGlzIHN0cnVjdHVyZSB1cG9uIGxvYWRpbmc6XG4gICAqIGh0dHBzOi8vZ2l0aHViLmNvbS9hd3MvYXdzLWNkay9ibG9iLzRhYWRhYTc3OWI0OGYzNTgzOGNjY2Q0ZTI1MTA3YjIzMzhmMDU1NDcvcGFja2FnZXMvJTQwYXdzLWNkay9jbG91ZC1hc3NlbWJseS1zY2hlbWEvbGliL21hbmlmZXN0LnRzI0wxMzcpXG4gICAqL1xuICByZWFkb25seSB2YWx1ZTogc3RyaW5nO1xufVxuXG4vKipcbiAqIE9wdGlvbnMgZm9yIGNvbmZpZ3VyaW5nIHRoZSBEb2NrZXIgY2FjaGUgYmFja2VuZFxuICovXG5leHBvcnQgaW50ZXJmYWNlIENvbnRhaW5lckltYWdlQXNzZXRDYWNoZU9wdGlvbiB7XG4gIC8qKlxuICAgKiBUaGUgdHlwZSBvZiBjYWNoZSB0byB1c2UuXG4gICAqIFJlZmVyIHRvIGh0dHBzOi8vZG9jcy5kb2NrZXIuY29tL2J1aWxkL2NhY2hlL2JhY2tlbmRzLyBmb3IgZnVsbCBsaXN0IG9mIGJhY2tlbmRzLlxuICAgKiBAZGVmYXVsdCAtIHVuc3BlY2lmaWVkXG4gICAqXG4gICAqIEBleGFtcGxlICdyZWdpc3RyeSdcbiAgICovXG4gIHJlYWRvbmx5IHR5cGU6IHN0cmluZztcbiAgLyoqXG4gICAqIEFueSBwYXJhbWV0ZXJzIHRvIHBhc3MgaW50byB0aGUgZG9ja2VyIGNhY2hlIGJhY2tlbmQgY29uZmlndXJhdGlvbi5cbiAgICogUmVmZXIgdG8gaHR0cHM6Ly9kb2NzLmRvY2tlci5jb20vYnVpbGQvY2FjaGUvYmFja2VuZHMvIGZvciBjYWNoZSBiYWNrZW5kIGNvbmZpZ3VyYXRpb24uXG4gICAqIEBkZWZhdWx0IHt9IE5vIG9wdGlvbnMgcHJvdmlkZWRcbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogZGVjbGFyZSBjb25zdCBicmFuY2g6IHN0cmluZztcbiAgICpcbiAgICogY29uc3QgcGFyYW1zID0ge1xuICAgKiAgIHJlZjogYDEyMzQ1Njc4LmRrci5lY3IudXMtd2VzdC0yLmFtYXpvbmF3cy5jb20vY2FjaGU6JHticmFuY2h9YCxcbiAgICogICBtb2RlOiBcIm1heFwiLFxuICAgKiB9O1xuICAgKi9cbiAgcmVhZG9ubHkgcGFyYW1zPzogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfTtcbn1cblxuLyoqXG4gKiBNZXRhZGF0YSBFbnRyeSBzcGVjIGZvciBjb250YWluZXIgaW1hZ2VzLlxuICpcbiAqIEBleGFtcGxlXG4gKiBjb25zdCBlbnRyeSA9IHtcbiAqICAgcGFja2FnaW5nOiAnY29udGFpbmVyLWltYWdlJyxcbiAqICAgcmVwb3NpdG9yeU5hbWU6ICdyZXBvc2l0b3J5LW5hbWUnLFxuICogICBpbWFnZVRhZzogJ3RhZycsXG4gKiB9XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ29udGFpbmVySW1hZ2VBc3NldE1ldGFkYXRhRW50cnkgZXh0ZW5kcyBCYXNlQXNzZXRNZXRhZGF0YUVudHJ5IHtcbiAgLyoqXG4gICAqIFR5cGUgb2YgYXNzZXRcbiAgICovXG4gIHJlYWRvbmx5IHBhY2thZ2luZzogJ2NvbnRhaW5lci1pbWFnZSc7XG5cbiAgLyoqXG4gICAqIEVDUiBSZXBvc2l0b3J5IG5hbWUgYW5kIHJlcG8gZGlnZXN0IChzZXBhcmF0ZWQgYnkgXCJAc2hhMjU2OlwiKSB3aGVyZSB0aGlzXG4gICAqIGltYWdlIGlzIHN0b3JlZC5cbiAgICpcbiAgICogQGRlZmF1bHQgdW5kZWZpbmVkIElmIG5vdCBzcGVjaWZpZWQsIGByZXBvc2l0b3J5TmFtZWAgYW5kIGBpbWFnZVRhZ2AgYXJlXG4gICAqIHJlcXVpcmVkIGJlY2F1c2Ugb3RoZXJ3aXNlIGhvdyB3aWxsIHRoZSBzdGFjayBrbm93IHdoZXJlIHRvIGZpbmQgdGhlIGFzc2V0LFxuICAgKiBoYT9cbiAgICogQGRlcHJlY2F0ZWQgc3BlY2lmeSBgcmVwb3NpdG9yeU5hbWVgIGFuZCBgaW1hZ2VUYWdgIGluc3RlYWQsIGFuZCB0aGVuIHlvdVxuICAgKiBrbm93IHdoZXJlIHRoZSBpbWFnZSB3aWxsIGdvLlxuICAgKi9cbiAgcmVhZG9ubHkgaW1hZ2VOYW1lUGFyYW1ldGVyPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBFQ1IgcmVwb3NpdG9yeSBuYW1lLCBpZiBvbWl0dGVkIGEgZGVmYXVsdCBuYW1lIGJhc2VkIG9uIHRoZSBhc3NldCdzIElEIGlzXG4gICAqIHVzZWQgaW5zdGVhZC4gU3BlY2lmeSB0aGlzIHByb3BlcnR5IGlmIHlvdSBuZWVkIHRvIHN0YXRpY2FsbHkgYWRkcmVzcyB0aGVcbiAgICogaW1hZ2UsIGUuZy4gZnJvbSBhIEt1YmVybmV0ZXMgUG9kLiBOb3RlLCB0aGlzIGlzIG9ubHkgdGhlIHJlcG9zaXRvcnkgbmFtZSxcbiAgICogd2l0aG91dCB0aGUgcmVnaXN0cnkgYW5kIHRoZSB0YWcgcGFydHMuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gdGhpcyBwYXJhbWV0ZXIgaXMgUkVRVUlSRUQgYWZ0ZXIgMS4yMS4wXG4gICAqL1xuICByZWFkb25seSByZXBvc2l0b3J5TmFtZT86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIGRvY2tlciBpbWFnZSB0YWcgdG8gdXNlIGZvciB0YWdnaW5nIHB1c2hlZCBpbWFnZXMuIFRoaXMgZmllbGQgaXNcbiAgICogcmVxdWlyZWQgaWYgYGltYWdlUGFyYW1ldGVyTmFtZWAgaXMgb21taXRlZCAob3RoZXJ3aXNlLCB0aGUgYXBwIHdvbid0IGJlXG4gICAqIGFibGUgdG8gZmluZCB0aGUgaW1hZ2UpLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIHRoaXMgcGFyYW1ldGVyIGlzIFJFUVVJUkVEIGFmdGVyIDEuMjEuMFxuICAgKi9cbiAgcmVhZG9ubHkgaW1hZ2VUYWc/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEJ1aWxkIGFyZ3MgdG8gcGFzcyB0byB0aGUgYGRvY2tlciBidWlsZGAgY29tbWFuZFxuICAgKlxuICAgKiBAZGVmYXVsdCBubyBidWlsZCBhcmdzIGFyZSBwYXNzZWRcbiAgICovXG4gIHJlYWRvbmx5IGJ1aWxkQXJncz86IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH07XG5cbiAgLyoqXG4gICAqIFNTSCBhZ2VudCBzb2NrZXQgb3Iga2V5cyB0byBwYXNzIHRvIHRoZSBgZG9ja2VyIGJ1aWxkYCBjb21tYW5kXG4gICAqXG4gICAqIEBkZWZhdWx0IG5vIHNzaCBhcmcgaXMgcGFzc2VkXG4gICAqL1xuICByZWFkb25seSBidWlsZFNzaD86IHN0cmluZztcblxuICAvKipcbiAgICogQnVpbGQgc2VjcmV0cyB0byBwYXNzIHRvIHRoZSBgZG9ja2VyIGJ1aWxkYCBjb21tYW5kXG4gICAqXG4gICAqIEBkZWZhdWx0IG5vIGJ1aWxkIHNlY3JldHMgYXJlIHBhc3NlZFxuICAgKi9cbiAgcmVhZG9ubHkgYnVpbGRTZWNyZXRzPzogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfTtcblxuICAvKipcbiAgICogRG9ja2VyIHRhcmdldCB0byBidWlsZCB0b1xuICAgKlxuICAgKiBAZGVmYXVsdCBubyBidWlsZCB0YXJnZXRcbiAgICovXG4gIHJlYWRvbmx5IHRhcmdldD86IHN0cmluZztcblxuICAvKipcbiAgICogUGF0aCB0byB0aGUgRG9ja2VyZmlsZSAocmVsYXRpdmUgdG8gdGhlIGRpcmVjdG9yeSkuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gbm8gZmlsZSBpcyBwYXNzZWRcbiAgICovXG4gIHJlYWRvbmx5IGZpbGU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIE5ldHdvcmtpbmcgbW9kZSBmb3IgdGhlIFJVTiBjb21tYW5kcyBkdXJpbmcgYnVpbGQuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gbm8gbmV0d29ya2luZyBtb2RlIHNwZWNpZmllZFxuICAgKi9cbiAgcmVhZG9ubHkgbmV0d29ya01vZGU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFBsYXRmb3JtIHRvIGJ1aWxkIGZvci4gX1JlcXVpcmVzIERvY2tlciBCdWlsZHhfLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIGN1cnJlbnQgbWFjaGluZSBwbGF0Zm9ybVxuICAgKi9cbiAgcmVhZG9ubHkgcGxhdGZvcm0/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIE91dHB1dHMgdG8gcGFzcyB0byB0aGUgYGRvY2tlciBidWlsZGAgY29tbWFuZC5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBubyBvdXRwdXRzIGFyZSBwYXNzZWQgdG8gdGhlIGJ1aWxkIGNvbW1hbmQgKGRlZmF1bHQgb3V0cHV0cyBhcmUgdXNlZClcbiAgICogQHNlZSBodHRwczovL2RvY3MuZG9ja2VyLmNvbS9lbmdpbmUvcmVmZXJlbmNlL2NvbW1hbmRsaW5lL2J1aWxkLyNjdXN0b20tYnVpbGQtb3V0cHV0c1xuICAgKi9cbiAgcmVhZG9ubHkgb3V0cHV0cz86IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBDYWNoZSBmcm9tIG9wdGlvbnMgdG8gcGFzcyB0byB0aGUgYGRvY2tlciBidWlsZGAgY29tbWFuZC5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBubyBjYWNoZSBmcm9tIG9wdGlvbnMgYXJlIHBhc3NlZCB0byB0aGUgYnVpbGQgY29tbWFuZFxuICAgKiBAc2VlIGh0dHBzOi8vZG9jcy5kb2NrZXIuY29tL2J1aWxkL2NhY2hlL2JhY2tlbmRzL1xuICAgKi9cbiAgcmVhZG9ubHkgY2FjaGVGcm9tPzogQ29udGFpbmVySW1hZ2VBc3NldENhY2hlT3B0aW9uW107XG5cbiAgLyoqXG4gICAqIENhY2hlIHRvIG9wdGlvbnMgdG8gcGFzcyB0byB0aGUgYGRvY2tlciBidWlsZGAgY29tbWFuZC5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBubyBjYWNoZSB0byBvcHRpb25zIGFyZSBwYXNzZWQgdG8gdGhlIGJ1aWxkIGNvbW1hbmRcbiAgICogQHNlZSBodHRwczovL2RvY3MuZG9ja2VyLmNvbS9idWlsZC9jYWNoZS9iYWNrZW5kcy9cbiAgICovXG4gIHJlYWRvbmx5IGNhY2hlVG8/OiBDb250YWluZXJJbWFnZUFzc2V0Q2FjaGVPcHRpb247XG5cbiAgLyoqXG4gICAqIERpc2FibGUgdGhlIGNhY2hlIGFuZCBwYXNzIGAtLW5vLWNhY2hlYCB0byB0aGUgYGRvY2tlciBidWlsZGAgY29tbWFuZC5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBjYWNoZSBpcyB1c2VkXG4gICAqL1xuICByZWFkb25seSBjYWNoZURpc2FibGVkPzogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBAc2VlIEFydGlmYWN0TWV0YWRhdGFFbnRyeVR5cGUuQVNTRVRcbiAqL1xuZXhwb3J0IHR5cGUgQXNzZXRNZXRhZGF0YUVudHJ5ID0gRmlsZUFzc2V0TWV0YWRhdGFFbnRyeSB8IENvbnRhaW5lckltYWdlQXNzZXRNZXRhZGF0YUVudHJ5O1xuXG4vLyBUeXBlIGFsaWFzZXMgZm9yIG1ldGFkYXRhIGVudHJpZXMuXG4vLyBVc2VkIHNpbXBseSB0byBhc3NpZ24gbmFtZXMgdG8gZGF0YSB0eXBlcyBmb3IgbW9yZSBjbGFyaXR5LlxuXG4vKipcbiAqIEBzZWUgQXJ0aWZhY3RNZXRhZGF0YUVudHJ5VHlwZS5JTkZPXG4gKiBAc2VlIEFydGlmYWN0TWV0YWRhdGFFbnRyeVR5cGUuV0FSTlxuICogQHNlZSBBcnRpZmFjdE1ldGFkYXRhRW50cnlUeXBlLkVSUk9SXG4gKi9cbmV4cG9ydCB0eXBlIExvZ01lc3NhZ2VNZXRhZGF0YUVudHJ5ID0gc3RyaW5nO1xuXG4vKipcbiAqIEBzZWUgQXJ0aWZhY3RNZXRhZGF0YUVudHJ5VHlwZS5MT0dJQ0FMX0lEXG4gKi9cbmV4cG9ydCB0eXBlIExvZ2ljYWxJZE1ldGFkYXRhRW50cnkgPSBzdHJpbmc7XG5cbi8qKlxuICogQHNlZSBBcnRpZmFjdE1ldGFkYXRhRW50cnlUeXBlLlNUQUNLX1RBR1NcbiAqL1xuZXhwb3J0IHR5cGUgU3RhY2tUYWdzTWV0YWRhdGFFbnRyeSA9IFRhZ1tdO1xuXG4vKipcbiAqIFVuaW9uIHR5cGUgZm9yIGFsbCBtZXRhZGF0YSBlbnRyaWVzIHRoYXQgbWlnaHQgZXhpc3QgaW4gdGhlIG1hbmlmZXN0LlxuICovXG5leHBvcnQgdHlwZSBNZXRhZGF0YUVudHJ5RGF0YSA9XG4gIHwgQXNzZXRNZXRhZGF0YUVudHJ5XG4gIHwgTG9nTWVzc2FnZU1ldGFkYXRhRW50cnlcbiAgfCBMb2dpY2FsSWRNZXRhZGF0YUVudHJ5XG4gIHwgU3RhY2tUYWdzTWV0YWRhdGFFbnRyeTtcblxuLyoqXG4gKiBUeXBlIG9mIGFydGlmYWN0IG1ldGFkYXRhIGVudHJ5LlxuICovXG5leHBvcnQgZW51bSBBcnRpZmFjdE1ldGFkYXRhRW50cnlUeXBlIHtcbiAgLyoqXG4gICAqIEFzc2V0IGluIG1ldGFkYXRhLlxuICAgKi9cbiAgQVNTRVQgPSAnYXdzOmNkazphc3NldCcsXG5cbiAgLyoqXG4gICAqIE1ldGFkYXRhIGtleSB1c2VkIHRvIHByaW50IElORk8tbGV2ZWwgbWVzc2FnZXMgYnkgdGhlIHRvb2xraXQgd2hlbiBhbiBhcHAgaXMgc3ludGhlaXplZC5cbiAgICovXG4gIElORk8gPSAnYXdzOmNkazppbmZvJyxcblxuICAvKipcbiAgICogTWV0YWRhdGEga2V5IHVzZWQgdG8gcHJpbnQgV0FSTklORy1sZXZlbCBtZXNzYWdlcyBieSB0aGUgdG9vbGtpdCB3aGVuIGFuIGFwcCBpcyBzeW50aGVpemVkLlxuICAgKi9cbiAgV0FSTiA9ICdhd3M6Y2RrOndhcm5pbmcnLFxuXG4gIC8qKlxuICAgKiBNZXRhZGF0YSBrZXkgdXNlZCB0byBwcmludCBFUlJPUi1sZXZlbCBtZXNzYWdlcyBieSB0aGUgdG9vbGtpdCB3aGVuIGFuIGFwcCBpcyBzeW50aGVpemVkLlxuICAgKi9cbiAgRVJST1IgPSAnYXdzOmNkazplcnJvcicsXG5cbiAgLyoqXG4gICAqIFJlcHJlc2VudHMgdGhlIENsb3VkRm9ybWF0aW9uIGxvZ2ljYWwgSUQgb2YgYSByZXNvdXJjZSBhdCBhIGNlcnRhaW4gcGF0aC5cbiAgICovXG4gIExPR0lDQUxfSUQgPSAnYXdzOmNkazpsb2dpY2FsSWQnLFxuXG4gIC8qKlxuICAgKiBSZXByZXNlbnRzIHRhZ3Mgb2YgYSBzdGFjay5cbiAgICovXG4gIFNUQUNLX1RBR1MgPSAnYXdzOmNkazpzdGFjay10YWdzJyxcbn1cblxuLyoqXG4gKiBBIG1ldGFkYXRhIGVudHJ5IGluIGEgY2xvdWQgYXNzZW1ibHkgYXJ0aWZhY3QuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTWV0YWRhdGFFbnRyeSB7XG4gIC8qKlxuICAgKiBUaGUgdHlwZSBvZiB0aGUgbWV0YWRhdGEgZW50cnkuXG4gICAqL1xuICByZWFkb25seSB0eXBlOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBkYXRhLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIG5vIGRhdGEuXG4gICAqL1xuICByZWFkb25seSBkYXRhPzogTWV0YWRhdGFFbnRyeURhdGE7XG5cbiAgLyoqXG4gICAqIEEgc3RhY2sgdHJhY2UgZm9yIHdoZW4gdGhlIGVudHJ5IHdhcyBjcmVhdGVkLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIG5vIHRyYWNlLlxuICAgKi9cbiAgcmVhZG9ubHkgdHJhY2U/OiBzdHJpbmdbXTtcbn1cbiJdfQ==","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ArtifactType = void 0;\n/**\n * Type of cloud artifact.\n */\nvar ArtifactType;\n(function (ArtifactType) {\n /**\n * Stub required because of JSII.\n */\n ArtifactType[\"NONE\"] = \"none\";\n /**\n * The artifact is an AWS CloudFormation stack.\n */\n ArtifactType[\"AWS_CLOUDFORMATION_STACK\"] = \"aws:cloudformation:stack\";\n /**\n * The artifact contains the CDK application's construct tree.\n */\n ArtifactType[\"CDK_TREE\"] = \"cdk:tree\";\n /**\n * Manifest for all assets in the Cloud Assembly\n */\n ArtifactType[\"ASSET_MANIFEST\"] = \"cdk:asset-manifest\";\n /**\n * Nested Cloud Assembly\n */\n ArtifactType[\"NESTED_CLOUD_ASSEMBLY\"] = \"cdk:cloud-assembly\";\n})(ArtifactType || (exports.ArtifactType = ArtifactType = {}));\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NoZW1hLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsic2NoZW1hLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUlBOztHQUVHO0FBQ0gsSUFBWSxZQXlCWDtBQXpCRCxXQUFZLFlBQVk7SUFDdEI7O09BRUc7SUFDSCw2QkFBYSxDQUFBO0lBRWI7O09BRUc7SUFDSCxxRUFBcUQsQ0FBQTtJQUVyRDs7T0FFRztJQUNILHFDQUFxQixDQUFBO0lBRXJCOztPQUVHO0lBQ0gscURBQXFDLENBQUE7SUFFckM7O09BRUc7SUFDSCw0REFBNEMsQ0FBQTtBQUM5QyxDQUFDLEVBekJXLFlBQVksNEJBQVosWUFBWSxRQXlCdkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBcnRpZmFjdFByb3BlcnRpZXMgfSBmcm9tICcuL2FydGlmYWN0LXNjaGVtYSc7XG5pbXBvcnQgeyBDb250ZXh0UHJvdmlkZXIsIENvbnRleHRRdWVyeVByb3BlcnRpZXMgfSBmcm9tICcuL2NvbnRleHQtcXVlcmllcyc7XG5pbXBvcnQgeyBNZXRhZGF0YUVudHJ5IH0gZnJvbSAnLi9tZXRhZGF0YS1zY2hlbWEnO1xuXG4vKipcbiAqIFR5cGUgb2YgY2xvdWQgYXJ0aWZhY3QuXG4gKi9cbmV4cG9ydCBlbnVtIEFydGlmYWN0VHlwZSB7XG4gIC8qKlxuICAgKiBTdHViIHJlcXVpcmVkIGJlY2F1c2Ugb2YgSlNJSS5cbiAgICovXG4gIE5PTkUgPSAnbm9uZScsIC8vIHJlcXVpcmVkIGR1ZSB0byBhIGpzaWkgYnVnXG5cbiAgLyoqXG4gICAqIFRoZSBhcnRpZmFjdCBpcyBhbiBBV1MgQ2xvdWRGb3JtYXRpb24gc3RhY2suXG4gICAqL1xuICBBV1NfQ0xPVURGT1JNQVRJT05fU1RBQ0sgPSAnYXdzOmNsb3VkZm9ybWF0aW9uOnN0YWNrJyxcblxuICAvKipcbiAgICogVGhlIGFydGlmYWN0IGNvbnRhaW5zIHRoZSBDREsgYXBwbGljYXRpb24ncyBjb25zdHJ1Y3QgdHJlZS5cbiAgICovXG4gIENES19UUkVFID0gJ2Nkazp0cmVlJyxcblxuICAvKipcbiAgICogTWFuaWZlc3QgZm9yIGFsbCBhc3NldHMgaW4gdGhlIENsb3VkIEFzc2VtYmx5XG4gICAqL1xuICBBU1NFVF9NQU5JRkVTVCA9ICdjZGs6YXNzZXQtbWFuaWZlc3QnLFxuXG4gIC8qKlxuICAgKiBOZXN0ZWQgQ2xvdWQgQXNzZW1ibHlcbiAgICovXG4gIE5FU1RFRF9DTE9VRF9BU1NFTUJMWSA9ICdjZGs6Y2xvdWQtYXNzZW1ibHknLFxufVxuXG4vKipcbiAqIEluZm9ybWF0aW9uIGFib3V0IHRoZSBhcHBsaWNhdGlvbidzIHJ1bnRpbWUgY29tcG9uZW50cy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSdW50aW1lSW5mbyB7XG4gIC8qKlxuICAgKiBUaGUgbGlzdCBvZiBsaWJyYXJpZXMgbG9hZGVkIGluIHRoZSBhcHBsaWNhdGlvbiwgYXNzb2NpYXRlZCB3aXRoIHRoZWlyIHZlcnNpb25zLlxuICAgKi9cbiAgcmVhZG9ubHkgbGlicmFyaWVzOiB7IFtuYW1lOiBzdHJpbmddOiBzdHJpbmcgfTtcbn1cblxuLyoqXG4gKiBSZXByZXNlbnRzIGEgbWlzc2luZyBwaWVjZSBvZiBjb250ZXh0LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIE1pc3NpbmdDb250ZXh0IHtcbiAgLyoqXG4gICAqIFRoZSBtaXNzaW5nIGNvbnRleHQga2V5LlxuICAgKi9cbiAgcmVhZG9ubHkga2V5OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBwcm92aWRlciBmcm9tIHdoaWNoIHdlIGV4cGVjdCB0aGlzIGNvbnRleHQga2V5IHRvIGJlIG9idGFpbmVkLlxuICAgKi9cbiAgcmVhZG9ubHkgcHJvdmlkZXI6IENvbnRleHRQcm92aWRlcjtcblxuICAvKipcbiAgICogQSBzZXQgb2YgcHJvdmlkZXItc3BlY2lmaWMgb3B0aW9ucy5cbiAgICovXG4gIHJlYWRvbmx5IHByb3BzOiBDb250ZXh0UXVlcnlQcm9wZXJ0aWVzO1xufVxuXG4vKipcbiAqIEEgbWFuaWZlc3QgZm9yIGEgc2luZ2xlIGFydGlmYWN0IHdpdGhpbiB0aGUgY2xvdWQgYXNzZW1ibHkuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQXJ0aWZhY3RNYW5pZmVzdCB7XG4gIC8qKlxuICAgKiBUaGUgdHlwZSBvZiBhcnRpZmFjdC5cbiAgICovXG4gIHJlYWRvbmx5IHR5cGU6IEFydGlmYWN0VHlwZTtcblxuICAvKipcbiAgICogVGhlIGVudmlyb25tZW50IGludG8gd2hpY2ggdGhpcyBhcnRpZmFjdCBpcyBkZXBsb3llZC5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBubyBlbnZyaW9ubWVudC5cbiAgICovXG4gIHJlYWRvbmx5IGVudmlyb25tZW50Pzogc3RyaW5nOyAvLyBmb3JtYXQ6IGF3czovL2FjY291bnQvcmVnaW9uXG5cbiAgLyoqXG4gICAqIEFzc29jaWF0ZWQgbWV0YWRhdGEuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gbm8gbWV0YWRhdGEuXG4gICAqL1xuICByZWFkb25seSBtZXRhZGF0YT86IHsgW3BhdGg6IHN0cmluZ106IE1ldGFkYXRhRW50cnlbXSB9O1xuXG4gIC8qKlxuICAgKiBJRHMgb2YgYXJ0aWZhY3RzIHRoYXQgbXVzdCBiZSBkZXBsb3llZCBiZWZvcmUgdGhpcyBhcnRpZmFjdC5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBubyBkZXBlbmRlbmNpZXMuXG4gICAqL1xuICByZWFkb25seSBkZXBlbmRlbmNpZXM/OiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogVGhlIHNldCBvZiBwcm9wZXJ0aWVzIGZvciB0aGlzIGFydGlmYWN0IChkZXBlbmRzIG9uIHR5cGUpXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gbm8gcHJvcGVydGllcy5cbiAgICovXG4gIHJlYWRvbmx5IHByb3BlcnRpZXM/OiBBcnRpZmFjdFByb3BlcnRpZXM7XG5cbiAgLyoqXG4gICAqIEEgc3RyaW5nIHRoYXQgcmVwcmVzZW50cyB0aGlzIGFydGlmYWN0LiBTaG91bGQgb25seSBiZSB1c2VkIGluIHVzZXIgaW50ZXJmYWNlcy5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBubyBkaXNwbGF5IG5hbWVcbiAgICovXG4gIHJlYWRvbmx5IGRpc3BsYXlOYW1lPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIEEgbWFuaWZlc3Qgd2hpY2ggZGVzY3JpYmVzIHRoZSBjbG91ZCBhc3NlbWJseS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBc3NlbWJseU1hbmlmZXN0IHtcbiAgLyoqXG4gICAqIFByb3RvY29sIHZlcnNpb25cbiAgICovXG4gIHJlYWRvbmx5IHZlcnNpb246IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHNldCBvZiBhcnRpZmFjdHMgaW4gdGhpcyBhc3NlbWJseS5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBubyBhcnRpZmFjdHMuXG4gICAqL1xuICByZWFkb25seSBhcnRpZmFjdHM/OiB7IFtpZDogc3RyaW5nXTogQXJ0aWZhY3RNYW5pZmVzdCB9O1xuXG4gIC8qKlxuICAgKiBNaXNzaW5nIGNvbnRleHQgaW5mb3JtYXRpb24uIElmIHRoaXMgZmllbGQgaGFzIHZhbHVlcywgaXQgbWVhbnMgdGhhdCB0aGVcbiAgICogY2xvdWQgYXNzZW1ibHkgaXMgbm90IGNvbXBsZXRlIGFuZCBzaG91bGQgbm90IGJlIGRlcGxveWVkLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIG5vIG1pc3NpbmcgY29udGV4dC5cbiAgICovXG4gIHJlYWRvbmx5IG1pc3Npbmc/OiBNaXNzaW5nQ29udGV4dFtdO1xuXG4gIC8qKlxuICAgKiBSdW50aW1lIGluZm9ybWF0aW9uLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIG5vIGluZm8uXG4gICAqL1xuICByZWFkb25seSBydW50aW1lPzogUnVudGltZUluZm87XG59XG4iXX0=","\"use strict\";\nvar _a;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Manifest = exports.VERSION_MISMATCH = void 0;\nconst JSII_RTTI_SYMBOL_1 = Symbol.for(\"jsii.rtti\");\nconst fs = require(\"fs\");\nconst jsonschema = require(\"jsonschema\");\nconst semver = require(\"semver\");\nconst assembly = require(\"./cloud-assembly\");\n/* eslint-disable @typescript-eslint/no-var-requires */\n/* eslint-disable @typescript-eslint/no-require-imports */\n// this prefix is used by the CLI to identify this specific error.\n// in which case we want to instruct the user to upgrade his CLI.\n// see exec.ts#createAssembly\nexports.VERSION_MISMATCH = 'Cloud assembly schema version mismatch';\nconst ASSETS_SCHEMA = require(\"../schema/assets.schema.json\");\nconst ASSEMBLY_SCHEMA = require(\"../schema/cloud-assembly.schema.json\");\nconst INTEG_SCHEMA = require(\"../schema/integ.schema.json\");\n/**\n * Version is shared for both manifests\n */\nconst SCHEMA_VERSION = require('../package.json').version;\n/**\n * Protocol utility class.\n */\nclass Manifest {\n /**\n * Validates and saves the cloud assembly manifest to file.\n *\n * @param manifest - manifest.\n * @param filePath - output file path.\n */\n static saveAssemblyManifest(manifest, filePath) {\n Manifest.saveManifest(manifest, filePath, ASSEMBLY_SCHEMA, Manifest.patchStackTagsOnWrite);\n }\n /**\n * Load and validates the cloud assembly manifest from file.\n *\n * @param filePath - path to the manifest file.\n */\n static loadAssemblyManifest(filePath, options) {\n return Manifest.loadManifest(filePath, ASSEMBLY_SCHEMA, Manifest.patchStackTagsOnRead, options);\n }\n /**\n * Validates and saves the asset manifest to file.\n *\n * @param manifest - manifest.\n * @param filePath - output file path.\n */\n static saveAssetManifest(manifest, filePath) {\n Manifest.saveManifest(manifest, filePath, ASSETS_SCHEMA, Manifest.patchStackTagsOnRead);\n }\n /**\n * Load and validates the asset manifest from file.\n *\n * @param filePath - path to the manifest file.\n */\n static loadAssetManifest(filePath) {\n return this.loadManifest(filePath, ASSETS_SCHEMA);\n }\n /**\n * Validates and saves the integ manifest to file.\n *\n * @param manifest - manifest.\n * @param filePath - output file path.\n */\n static saveIntegManifest(manifest, filePath) {\n Manifest.saveManifest(manifest, filePath, INTEG_SCHEMA);\n }\n /**\n * Load and validates the integ manifest from file.\n *\n * @param filePath - path to the manifest file.\n */\n static loadIntegManifest(filePath) {\n return this.loadManifest(filePath, INTEG_SCHEMA);\n }\n /**\n * Fetch the current schema version number.\n */\n static version() {\n return SCHEMA_VERSION;\n }\n /**\n * Deprecated\n * @deprecated use `saveAssemblyManifest()`\n */\n static save(manifest, filePath) {\n return this.saveAssemblyManifest(manifest, filePath);\n }\n /**\n * Deprecated\n * @deprecated use `loadAssemblyManifest()`\n */\n static load(filePath) {\n return this.loadAssemblyManifest(filePath);\n }\n static validate(manifest, schema, options) {\n function parseVersion(version) {\n const ver = semver.valid(version);\n if (!ver) {\n throw new Error(`Invalid semver string: \"${version}\"`);\n }\n return ver;\n }\n const maxSupported = semver.major(parseVersion(Manifest.version()));\n const actual = parseVersion(manifest.version);\n // first validate the version should be accepted. all versions within the same minor version are fine\n if (maxSupported < semver.major(actual) && !options?.skipVersionCheck) {\n // we use a well known error prefix so that the CLI can identify this specific error\n // and print some more context to the user.\n throw new Error(`${exports.VERSION_MISMATCH}: Maximum schema version supported is ${maxSupported}.x.x, but found ${actual}`);\n }\n // now validate the format is good.\n const validator = new jsonschema.Validator();\n const result = validator.validate(manifest, schema, {\n // does exist but is not in the TypeScript definitions\n nestedErrors: true,\n allowUnknownAttributes: false,\n preValidateProperty: Manifest.validateAssumeRoleAdditionalOptions,\n });\n let errors = result.errors;\n if (options?.skipEnumCheck) {\n // Enum validations aren't useful when\n errors = stripEnumErrors(errors);\n }\n if (errors.length > 0) {\n throw new Error(`Invalid assembly manifest:\\n${errors.map((e) => e.stack).join('\\n')}`);\n }\n }\n static saveManifest(manifest, filePath, schema, preprocess) {\n let withVersion = { ...manifest, version: Manifest.version() };\n Manifest.validate(withVersion, schema);\n if (preprocess) {\n withVersion = preprocess(withVersion);\n }\n fs.writeFileSync(filePath, JSON.stringify(withVersion, undefined, 2));\n }\n static loadManifest(filePath, schema, preprocess, options) {\n const contents = fs.readFileSync(filePath, { encoding: 'utf-8' });\n let obj;\n try {\n obj = JSON.parse(contents);\n }\n catch (e) {\n throw new Error(`${e.message}, while parsing ${JSON.stringify(contents)}`);\n }\n if (preprocess) {\n obj = preprocess(obj);\n }\n Manifest.validate(obj, schema, options);\n return obj;\n }\n /**\n * This requires some explaining...\n *\n * We previously used `{ Key, Value }` for the object that represents a stack tag. (Notice the casing)\n * @link https://github.com/aws/aws-cdk/blob/v1.27.0/packages/aws-cdk/lib/api/cxapp/stacks.ts#L427.\n *\n * When that object moved to this package, it had to be JSII compliant, which meant the property\n * names must be `camelCased`, and not `PascalCased`. This meant it no longer matches the structure in the `manifest.json` file.\n * In order to support current manifest files, we have to translate the `PascalCased` representation to the new `camelCased` one.\n *\n * Note that the serialization itself still writes `PascalCased` because it relates to how CloudFormation expects it.\n *\n * Ideally, we would start writing the `camelCased` and translate to how CloudFormation expects it when needed. But this requires nasty\n * backwards-compatibility code and it just doesn't seem to be worth the effort.\n */\n static patchStackTagsOnRead(manifest) {\n return Manifest.replaceStackTags(manifest, (tags) => tags.map((diskTag) => ({\n key: diskTag.Key,\n value: diskTag.Value,\n })));\n }\n /**\n * Validates that `assumeRoleAdditionalOptions` doesn't contain nor `ExternalId` neither `RoleArn`, as they\n * should have dedicated properties preceding this (e.g `assumeRoleArn` and `assumeRoleExternalId`).\n */\n static validateAssumeRoleAdditionalOptions(instance, key, _schema, _options, _ctx) {\n if (key !== 'assumeRoleAdditionalOptions') {\n // note that this means that if we happen to have a property named like this, but that\n // does want to allow 'RoleArn' or 'ExternalId', this code will have to change to consider the full schema path.\n // I decided to make this less granular for now on purpose because it fits our needs and avoids having messy\n // validation logic due to various schema paths.\n return;\n }\n const assumeRoleOptions = instance[key];\n if (assumeRoleOptions?.RoleArn) {\n throw new Error(`RoleArn is not allowed inside '${key}'`);\n }\n if (assumeRoleOptions?.ExternalId) {\n throw new Error(`ExternalId is not allowed inside '${key}'`);\n }\n }\n /**\n * See explanation on `patchStackTagsOnRead`\n *\n * Translate stack tags metadata if it has the \"right\" casing.\n */\n static patchStackTagsOnWrite(manifest) {\n return Manifest.replaceStackTags(manifest, (tags) => tags.map((memTag) => \n // Might already be uppercased (because stack synthesis generates it in final form yet)\n ('Key' in memTag ? memTag : { Key: memTag.key, Value: memTag.value })));\n }\n /**\n * Recursively replace stack tags in the stack metadata\n */\n static replaceStackTags(manifest, fn) {\n // Need to add in the `noUndefined`s because otherwise jest snapshot tests are going to freak out\n // about the keys with values that are `undefined` (even though they would never be JSON.stringified)\n return noUndefined({\n ...manifest,\n artifacts: mapValues(manifest.artifacts, (artifact) => {\n if (artifact.type !== assembly.ArtifactType.AWS_CLOUDFORMATION_STACK) {\n return artifact;\n }\n return noUndefined({\n ...artifact,\n metadata: mapValues(artifact.metadata, (metadataEntries) => metadataEntries.map((metadataEntry) => {\n if (metadataEntry.type !== assembly.ArtifactMetadataEntryType.STACK_TAGS ||\n !metadataEntry.data) {\n return metadataEntry;\n }\n return {\n ...metadataEntry,\n data: fn(metadataEntry.data),\n };\n })),\n });\n }),\n });\n }\n constructor() { }\n}\nexports.Manifest = Manifest;\n_a = JSII_RTTI_SYMBOL_1;\nManifest[_a] = { fqn: \"@aws-cdk/cloud-assembly-schema.Manifest\", version: \"38.0.1\" };\nfunction mapValues(xs, fn) {\n if (!xs) {\n return undefined;\n }\n const ret = {};\n for (const [k, v] of Object.entries(xs)) {\n ret[k] = fn(v);\n }\n return ret;\n}\nfunction noUndefined(xs) {\n const ret = {};\n for (const [k, v] of Object.entries(xs)) {\n if (v !== undefined) {\n ret[k] = v;\n }\n }\n return ret;\n}\nfunction stripEnumErrors(errors) {\n return errors.filter((e) => typeof e.schema === 'string' || !('enum' in e.schema));\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFuaWZlc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJtYW5pZmVzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLHlCQUF5QjtBQUN6Qix5Q0FBeUM7QUFDekMsaUNBQWlDO0FBRWpDLDZDQUE2QztBQUc3Qyx1REFBdUQ7QUFDdkQsMERBQTBEO0FBRTFELGtFQUFrRTtBQUNsRSxpRUFBaUU7QUFDakUsNkJBQTZCO0FBQ2hCLFFBQUEsZ0JBQWdCLEdBQVcsd0NBQXdDLENBQUM7QUFFakYsOERBQStEO0FBRS9ELHdFQUF5RTtBQUV6RSw0REFBNkQ7QUFFN0Q7O0dBRUc7QUFDSCxNQUFNLGNBQWMsR0FBRyxPQUFPLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxPQUFPLENBQUM7QUFzQzFEOztHQUVHO0FBQ0gsTUFBYSxRQUFRO0lBQ25COzs7OztPQUtHO0lBQ0ksTUFBTSxDQUFDLG9CQUFvQixDQUFDLFFBQW1DLEVBQUUsUUFBZ0I7UUFDdEYsUUFBUSxDQUFDLFlBQVksQ0FBQyxRQUFRLEVBQUUsUUFBUSxFQUFFLGVBQWUsRUFBRSxRQUFRLENBQUMscUJBQXFCLENBQUMsQ0FBQztJQUM3RixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNJLE1BQU0sQ0FBQyxvQkFBb0IsQ0FDaEMsUUFBZ0IsRUFDaEIsT0FBNkI7UUFFN0IsT0FBTyxRQUFRLENBQUMsWUFBWSxDQUFDLFFBQVEsRUFBRSxlQUFlLEVBQUUsUUFBUSxDQUFDLG9CQUFvQixFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ2xHLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNJLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxRQUE4QixFQUFFLFFBQWdCO1FBQzlFLFFBQVEsQ0FBQyxZQUFZLENBQUMsUUFBUSxFQUFFLFFBQVEsRUFBRSxhQUFhLEVBQUUsUUFBUSxDQUFDLG9CQUFvQixDQUFDLENBQUM7SUFDMUYsQ0FBQztJQUVEOzs7O09BSUc7SUFDSSxNQUFNLENBQUMsaUJBQWlCLENBQUMsUUFBZ0I7UUFDOUMsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsRUFBRSxhQUFhLENBQUMsQ0FBQztJQUNwRCxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSSxNQUFNLENBQUMsaUJBQWlCLENBQUMsUUFBNkIsRUFBRSxRQUFnQjtRQUM3RSxRQUFRLENBQUMsWUFBWSxDQUFDLFFBQVEsRUFBRSxRQUFRLEVBQUUsWUFBWSxDQUFDLENBQUM7SUFDMUQsQ0FBQztJQUVEOzs7O09BSUc7SUFDSSxNQUFNLENBQUMsaUJBQWlCLENBQUMsUUFBZ0I7UUFDOUMsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsRUFBRSxZQUFZLENBQUMsQ0FBQztJQUNuRCxDQUFDO0lBRUQ7O09BRUc7SUFDSSxNQUFNLENBQUMsT0FBTztRQUNuQixPQUFPLGNBQWMsQ0FBQztJQUN4QixDQUFDO0lBRUQ7OztPQUdHO0lBQ0ksTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFtQyxFQUFFLFFBQWdCO1FBQ3RFLE9BQU8sSUFBSSxDQUFDLG9CQUFvQixDQUFDLFFBQVEsRUFBRSxRQUFRLENBQUMsQ0FBQztJQUN2RCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0ksTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFnQjtRQUNqQyxPQUFPLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUM3QyxDQUFDO0lBRU8sTUFBTSxDQUFDLFFBQVEsQ0FBQyxRQUFhLEVBQUUsTUFBeUIsRUFBRSxPQUE2QjtRQUM3RixTQUFTLFlBQVksQ0FBQyxPQUFlO1lBQ25DLE1BQU0sR0FBRyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDbEMsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO2dCQUNULE1BQU0sSUFBSSxLQUFLLENBQUMsMkJBQTJCLE9BQU8sR0FBRyxDQUFDLENBQUM7WUFDekQsQ0FBQztZQUNELE9BQU8sR0FBRyxDQUFDO1FBQ2IsQ0FBQztRQUVELE1BQU0sWUFBWSxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDcEUsTUFBTSxNQUFNLEdBQUcsWUFBWSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUU5QyxxR0FBcUc7UUFDckcsSUFBSSxZQUFZLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxDQUFDO1lBQ3RFLG9GQUFvRjtZQUNwRiwyQ0FBMkM7WUFDM0MsTUFBTSxJQUFJLEtBQUssQ0FDYixHQUFHLHdCQUFnQix5Q0FBeUMsWUFBWSxtQkFBbUIsTUFBTSxFQUFFLENBQ3BHLENBQUM7UUFDSixDQUFDO1FBRUQsbUNBQW1DO1FBQ25DLE1BQU0sU0FBUyxHQUFHLElBQUksVUFBVSxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQzdDLE1BQU0sTUFBTSxHQUFHLFNBQVMsQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLE1BQU0sRUFBRTtZQUNsRCxzREFBc0Q7WUFDdEQsWUFBWSxFQUFFLElBQUk7WUFFbEIsc0JBQXNCLEVBQUUsS0FBSztZQUM3QixtQkFBbUIsRUFBRSxRQUFRLENBQUMsbUNBQW1DO1NBQ2xFLENBQUMsQ0FBQztRQUVILElBQUksTUFBTSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUM7UUFDM0IsSUFBSSxPQUFPLEVBQUUsYUFBYSxFQUFFLENBQUM7WUFDM0Isc0NBQXNDO1lBQ3RDLE1BQU0sR0FBRyxlQUFlLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDbkMsQ0FBQztRQUVELElBQUksTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUN0QixNQUFNLElBQUksS0FBSyxDQUFDLCtCQUErQixNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUMxRixDQUFDO0lBQ0gsQ0FBQztJQUVPLE1BQU0sQ0FBQyxZQUFZLENBQ3pCLFFBQWEsRUFDYixRQUFnQixFQUNoQixNQUF5QixFQUN6QixVQUE4QjtRQUU5QixJQUFJLFdBQVcsR0FBRyxFQUFFLEdBQUcsUUFBUSxFQUFFLE9BQU8sRUFBRSxRQUFRLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQztRQUMvRCxRQUFRLENBQUMsUUFBUSxDQUFDLFdBQVcsRUFBRSxNQUFNLENBQUMsQ0FBQztRQUN2QyxJQUFJLFVBQVUsRUFBRSxDQUFDO1lBQ2YsV0FBVyxHQUFHLFVBQVUsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUN4QyxDQUFDO1FBQ0QsRUFBRSxDQUFDLGFBQWEsQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxXQUFXLEVBQUUsU0FBUyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDeEUsQ0FBQztJQUVPLE1BQU0sQ0FBQyxZQUFZLENBQ3pCLFFBQWdCLEVBQ2hCLE1BQXlCLEVBQ3pCLFVBQThCLEVBQzlCLE9BQTZCO1FBRTdCLE1BQU0sUUFBUSxHQUFHLEVBQUUsQ0FBQyxZQUFZLENBQUMsUUFBUSxFQUFFLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUM7UUFDbEUsSUFBSSxHQUFHLENBQUM7UUFDUixJQUFJLENBQUM7WUFDSCxHQUFHLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUM3QixDQUFDO1FBQUMsT0FBTyxDQUFNLEVBQUUsQ0FBQztZQUNoQixNQUFNLElBQUksS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sbUJBQW1CLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQzdFLENBQUM7UUFDRCxJQUFJLFVBQVUsRUFBRSxDQUFDO1lBQ2YsR0FBRyxHQUFHLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUN4QixDQUFDO1FBQ0QsUUFBUSxDQUFDLFFBQVEsQ0FBQyxHQUFHLEVBQUUsTUFBTSxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQ3hDLE9BQU8sR0FBRyxDQUFDO0lBQ2IsQ0FBQztJQUVEOzs7Ozs7Ozs7Ozs7OztPQWNHO0lBQ0ssTUFBTSxDQUFDLG9CQUFvQixDQUFDLFFBQW1DO1FBQ3JFLE9BQU8sUUFBUSxDQUFDLGdCQUFnQixDQUFDLFFBQVEsRUFBRSxDQUFDLElBQUksRUFBRSxFQUFFLENBQ2xELElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxPQUFZLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDMUIsR0FBRyxFQUFFLE9BQU8sQ0FBQyxHQUFHO1lBQ2hCLEtBQUssRUFBRSxPQUFPLENBQUMsS0FBSztTQUNyQixDQUFDLENBQUMsQ0FDSixDQUFDO0lBQ0osQ0FBQztJQUVEOzs7T0FHRztJQUNLLE1BQU0sQ0FBQyxtQ0FBbUMsQ0FDaEQsUUFBYSxFQUNiLEdBQVcsRUFDWCxPQUEwQixFQUMxQixRQUE0QixFQUM1QixJQUE4QjtRQUU5QixJQUFJLEdBQUcsS0FBSyw2QkFBNkIsRUFBRSxDQUFDO1lBQzFDLHNGQUFzRjtZQUN0RixnSEFBZ0g7WUFDaEgsNEdBQTRHO1lBQzVHLGdEQUFnRDtZQUNoRCxPQUFPO1FBQ1QsQ0FBQztRQUVELE1BQU0saUJBQWlCLEdBQUcsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3hDLElBQUksaUJBQWlCLEVBQUUsT0FBTyxFQUFFLENBQUM7WUFDL0IsTUFBTSxJQUFJLEtBQUssQ0FBQyxrQ0FBa0MsR0FBRyxHQUFHLENBQUMsQ0FBQztRQUM1RCxDQUFDO1FBQ0QsSUFBSSxpQkFBaUIsRUFBRSxVQUFVLEVBQUUsQ0FBQztZQUNsQyxNQUFNLElBQUksS0FBSyxDQUFDLHFDQUFxQyxHQUFHLEdBQUcsQ0FBQyxDQUFDO1FBQy9ELENBQUM7SUFDSCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNLLE1BQU0sQ0FBQyxxQkFBcUIsQ0FBQyxRQUFtQztRQUN0RSxPQUFPLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUNsRCxJQUFJLENBQUMsR0FBRyxDQUNOLENBQUMsTUFBTSxFQUFFLEVBQUU7UUFDVCx1RkFBdUY7UUFDdkYsQ0FBQyxLQUFLLElBQUksTUFBTSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxFQUFFLE1BQU0sQ0FBQyxHQUFHLEVBQUUsS0FBSyxFQUFFLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBUSxDQUMvRSxDQUNGLENBQUM7SUFDSixDQUFDO0lBRUQ7O09BRUc7SUFDSyxNQUFNLENBQUMsZ0JBQWdCLENBQzdCLFFBQW1DLEVBQ25DLEVBQWdEO1FBRWhELGlHQUFpRztRQUNqRyxxR0FBcUc7UUFDckcsT0FBTyxXQUFXLENBQUM7WUFDakIsR0FBRyxRQUFRO1lBQ1gsU0FBUyxFQUFFLFNBQVMsQ0FBQyxRQUFRLENBQUMsU0FBUyxFQUFFLENBQUMsUUFBUSxFQUFFLEVBQUU7Z0JBQ3BELElBQUksUUFBUSxDQUFDLElBQUksS0FBSyxRQUFRLENBQUMsWUFBWSxDQUFDLHdCQUF3QixFQUFFLENBQUM7b0JBQ3JFLE9BQU8sUUFBUSxDQUFDO2dCQUNsQixDQUFDO2dCQUNELE9BQU8sV0FBVyxDQUFDO29CQUNqQixHQUFHLFFBQVE7b0JBQ1gsUUFBUSxFQUFFLFNBQVMsQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLENBQUMsZUFBZSxFQUFFLEVBQUUsQ0FDekQsZUFBZSxDQUFDLEdBQUcsQ0FBQyxDQUFDLGFBQWEsRUFBRSxFQUFFO3dCQUNwQyxJQUNFLGFBQWEsQ0FBQyxJQUFJLEtBQUssUUFBUSxDQUFDLHlCQUF5QixDQUFDLFVBQVU7NEJBQ3BFLENBQUMsYUFBYSxDQUFDLElBQUksRUFDbkIsQ0FBQzs0QkFDRCxPQUFPLGFBQWEsQ0FBQzt3QkFDdkIsQ0FBQzt3QkFDRCxPQUFPOzRCQUNMLEdBQUcsYUFBYTs0QkFDaEIsSUFBSSxFQUFFLEVBQUUsQ0FBQyxhQUFhLENBQUMsSUFBdUMsQ0FBQzt5QkFDaEUsQ0FBQztvQkFDSixDQUFDLENBQUMsQ0FDSDtpQkFDMkIsQ0FBQyxDQUFDO1lBQ2xDLENBQUMsQ0FBQztTQUNILENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxnQkFBdUIsQ0FBQzs7QUF2UTFCLDRCQXdRQzs7O0FBSUQsU0FBUyxTQUFTLENBQ2hCLEVBQWlDLEVBQ2pDLEVBQWU7SUFFZixJQUFJLENBQUMsRUFBRSxFQUFFLENBQUM7UUFDUixPQUFPLFNBQVMsQ0FBQztJQUNuQixDQUFDO0lBQ0QsTUFBTSxHQUFHLEdBQWtDLEVBQUUsQ0FBQztJQUM5QyxLQUFLLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDO1FBQ3hDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDakIsQ0FBQztJQUNELE9BQU8sR0FBRyxDQUFDO0FBQ2IsQ0FBQztBQUVELFNBQVMsV0FBVyxDQUFtQixFQUFLO0lBQzFDLE1BQU0sR0FBRyxHQUFRLEVBQUUsQ0FBQztJQUNwQixLQUFLLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDO1FBQ3hDLElBQUksQ0FBQyxLQUFLLFNBQVMsRUFBRSxDQUFDO1lBQ3BCLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDYixDQUFDO0lBQ0gsQ0FBQztJQUNELE9BQU8sR0FBRyxDQUFDO0FBQ2IsQ0FBQztBQUVELFNBQVMsZUFBZSxDQUFDLE1BQW9DO0lBQzNELE9BQU8sTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxLQUFLLFFBQVEsSUFBSSxDQUFDLENBQUMsTUFBTSxJQUFJLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0FBQ3JGLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBmcyBmcm9tICdmcyc7XG5pbXBvcnQgKiBhcyBqc29uc2NoZW1hIGZyb20gJ2pzb25zY2hlbWEnO1xuaW1wb3J0ICogYXMgc2VtdmVyIGZyb20gJ3NlbXZlcic7XG5pbXBvcnQgKiBhcyBhc3NldHMgZnJvbSAnLi9hc3NldHMnO1xuaW1wb3J0ICogYXMgYXNzZW1ibHkgZnJvbSAnLi9jbG91ZC1hc3NlbWJseSc7XG5pbXBvcnQgKiBhcyBpbnRlZyBmcm9tICcuL2ludGVnLXRlc3RzJztcblxuLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXZhci1yZXF1aXJlcyAqL1xuLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXJlcXVpcmUtaW1wb3J0cyAqL1xuXG4vLyB0aGlzIHByZWZpeCBpcyB1c2VkIGJ5IHRoZSBDTEkgdG8gaWRlbnRpZnkgdGhpcyBzcGVjaWZpYyBlcnJvci5cbi8vIGluIHdoaWNoIGNhc2Ugd2Ugd2FudCB0byBpbnN0cnVjdCB0aGUgdXNlciB0byB1cGdyYWRlIGhpcyBDTEkuXG4vLyBzZWUgZXhlYy50cyNjcmVhdGVBc3NlbWJseVxuZXhwb3J0IGNvbnN0IFZFUlNJT05fTUlTTUFUQ0g6IHN0cmluZyA9ICdDbG91ZCBhc3NlbWJseSBzY2hlbWEgdmVyc2lvbiBtaXNtYXRjaCc7XG5cbmltcG9ydCBBU1NFVFNfU0NIRU1BID0gcmVxdWlyZSgnLi4vc2NoZW1hL2Fzc2V0cy5zY2hlbWEuanNvbicpO1xuXG5pbXBvcnQgQVNTRU1CTFlfU0NIRU1BID0gcmVxdWlyZSgnLi4vc2NoZW1hL2Nsb3VkLWFzc2VtYmx5LnNjaGVtYS5qc29uJyk7XG5cbmltcG9ydCBJTlRFR19TQ0hFTUEgPSByZXF1aXJlKCcuLi9zY2hlbWEvaW50ZWcuc2NoZW1hLmpzb24nKTtcblxuLyoqXG4gKiBWZXJzaW9uIGlzIHNoYXJlZCBmb3IgYm90aCBtYW5pZmVzdHNcbiAqL1xuY29uc3QgU0NIRU1BX1ZFUlNJT04gPSByZXF1aXJlKCcuLi9wYWNrYWdlLmpzb24nKS52ZXJzaW9uO1xuXG4vKipcbiAqIE9wdGlvbnMgZm9yIHRoZSBsb2FkTWFuaWZlc3Qgb3BlcmF0aW9uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTG9hZE1hbmlmZXN0T3B0aW9ucyB7XG4gIC8qKlxuICAgKiBTa2lwIHRoZSB2ZXJzaW9uIGNoZWNrXG4gICAqXG4gICAqIFRoaXMgbWVhbnMgeW91IG1heSByZWFkIGEgbmV3ZXIgY2xvdWQgYXNzZW1ibHkgdGhhbiB0aGUgQ1ggQVBJIGlzIGRlc2lnbmVkXG4gICAqIHRvIHN1cHBvcnQsIGFuZCB5b3VyIGFwcGxpY2F0aW9uIG1heSBub3QgYmUgYXdhcmUgb2YgYWxsIGZlYXR1cmVzIHRoYXQgaW4gdXNlXG4gICAqIGluIHRoZSBDbG91ZCBBc3NlbWJseS5cbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IHNraXBWZXJzaW9uQ2hlY2s/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBTa2lwIGVudW0gY2hlY2tzXG4gICAqXG4gICAqIFRoaXMgbWVhbnMgeW91IG1heSByZWFkIGVudW0gdmFsdWVzIHlvdSBkb24ndCBrbm93IGFib3V0IHlldC4gTWFrZSBzdXJlIHRvIGFsd2F5c1xuICAgKiBjaGVjayB0aGUgdmFsdWVzIG9mIGVudW1zIHlvdSBlbmNvdW50ZXIgaW4gdGhlIG1hbmlmZXN0LlxuICAgKlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgc2tpcEVudW1DaGVjaz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFRvcG9sb2dpY2FsbHkgc29ydCBhbGwgYXJ0aWZhY3RzXG4gICAqXG4gICAqIFRoaXMgcGFyYW1ldGVyIGlzIG9ubHkgcmVzcGVjdGVkIGJ5IHRoZSBjb25zdHJ1Y3RvciBvZiBgQ2xvdWRBc3NlbWJseWAuIFRoZVxuICAgKiBwcm9wZXJ0eSBsaXZlcyBoZXJlIGZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eSByZWFzb25zLlxuICAgKlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICByZWFkb25seSB0b3BvU29ydD86IGJvb2xlYW47XG59XG5cbi8qKlxuICogUHJvdG9jb2wgdXRpbGl0eSBjbGFzcy5cbiAqL1xuZXhwb3J0IGNsYXNzIE1hbmlmZXN0IHtcbiAgLyoqXG4gICAqIFZhbGlkYXRlcyBhbmQgc2F2ZXMgdGhlIGNsb3VkIGFzc2VtYmx5IG1hbmlmZXN0IHRvIGZpbGUuXG4gICAqXG4gICAqIEBwYXJhbSBtYW5pZmVzdCAtIG1hbmlmZXN0LlxuICAgKiBAcGFyYW0gZmlsZVBhdGggLSBvdXRwdXQgZmlsZSBwYXRoLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBzYXZlQXNzZW1ibHlNYW5pZmVzdChtYW5pZmVzdDogYXNzZW1ibHkuQXNzZW1ibHlNYW5pZmVzdCwgZmlsZVBhdGg6IHN0cmluZykge1xuICAgIE1hbmlmZXN0LnNhdmVNYW5pZmVzdChtYW5pZmVzdCwgZmlsZVBhdGgsIEFTU0VNQkxZX1NDSEVNQSwgTWFuaWZlc3QucGF0Y2hTdGFja1RhZ3NPbldyaXRlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBMb2FkIGFuZCB2YWxpZGF0ZXMgdGhlIGNsb3VkIGFzc2VtYmx5IG1hbmlmZXN0IGZyb20gZmlsZS5cbiAgICpcbiAgICogQHBhcmFtIGZpbGVQYXRoIC0gcGF0aCB0byB0aGUgbWFuaWZlc3QgZmlsZS5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgbG9hZEFzc2VtYmx5TWFuaWZlc3QoXG4gICAgZmlsZVBhdGg6IHN0cmluZyxcbiAgICBvcHRpb25zPzogTG9hZE1hbmlmZXN0T3B0aW9uc1xuICApOiBhc3NlbWJseS5Bc3NlbWJseU1hbmlmZXN0IHtcbiAgICByZXR1cm4gTWFuaWZlc3QubG9hZE1hbmlmZXN0KGZpbGVQYXRoLCBBU1NFTUJMWV9TQ0hFTUEsIE1hbmlmZXN0LnBhdGNoU3RhY2tUYWdzT25SZWFkLCBvcHRpb25zKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBWYWxpZGF0ZXMgYW5kIHNhdmVzIHRoZSBhc3NldCBtYW5pZmVzdCB0byBmaWxlLlxuICAgKlxuICAgKiBAcGFyYW0gbWFuaWZlc3QgLSBtYW5pZmVzdC5cbiAgICogQHBhcmFtIGZpbGVQYXRoIC0gb3V0cHV0IGZpbGUgcGF0aC5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgc2F2ZUFzc2V0TWFuaWZlc3QobWFuaWZlc3Q6IGFzc2V0cy5Bc3NldE1hbmlmZXN0LCBmaWxlUGF0aDogc3RyaW5nKSB7XG4gICAgTWFuaWZlc3Quc2F2ZU1hbmlmZXN0KG1hbmlmZXN0LCBmaWxlUGF0aCwgQVNTRVRTX1NDSEVNQSwgTWFuaWZlc3QucGF0Y2hTdGFja1RhZ3NPblJlYWQpO1xuICB9XG5cbiAgLyoqXG4gICAqIExvYWQgYW5kIHZhbGlkYXRlcyB0aGUgYXNzZXQgbWFuaWZlc3QgZnJvbSBmaWxlLlxuICAgKlxuICAgKiBAcGFyYW0gZmlsZVBhdGggLSBwYXRoIHRvIHRoZSBtYW5pZmVzdCBmaWxlLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBsb2FkQXNzZXRNYW5pZmVzdChmaWxlUGF0aDogc3RyaW5nKTogYXNzZXRzLkFzc2V0TWFuaWZlc3Qge1xuICAgIHJldHVybiB0aGlzLmxvYWRNYW5pZmVzdChmaWxlUGF0aCwgQVNTRVRTX1NDSEVNQSk7XG4gIH1cblxuICAvKipcbiAgICogVmFsaWRhdGVzIGFuZCBzYXZlcyB0aGUgaW50ZWcgbWFuaWZlc3QgdG8gZmlsZS5cbiAgICpcbiAgICogQHBhcmFtIG1hbmlmZXN0IC0gbWFuaWZlc3QuXG4gICAqIEBwYXJhbSBmaWxlUGF0aCAtIG91dHB1dCBmaWxlIHBhdGguXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHNhdmVJbnRlZ01hbmlmZXN0KG1hbmlmZXN0OiBpbnRlZy5JbnRlZ01hbmlmZXN0LCBmaWxlUGF0aDogc3RyaW5nKSB7XG4gICAgTWFuaWZlc3Quc2F2ZU1hbmlmZXN0KG1hbmlmZXN0LCBmaWxlUGF0aCwgSU5URUdfU0NIRU1BKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBMb2FkIGFuZCB2YWxpZGF0ZXMgdGhlIGludGVnIG1hbmlmZXN0IGZyb20gZmlsZS5cbiAgICpcbiAgICogQHBhcmFtIGZpbGVQYXRoIC0gcGF0aCB0byB0aGUgbWFuaWZlc3QgZmlsZS5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgbG9hZEludGVnTWFuaWZlc3QoZmlsZVBhdGg6IHN0cmluZyk6IGludGVnLkludGVnTWFuaWZlc3Qge1xuICAgIHJldHVybiB0aGlzLmxvYWRNYW5pZmVzdChmaWxlUGF0aCwgSU5URUdfU0NIRU1BKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBGZXRjaCB0aGUgY3VycmVudCBzY2hlbWEgdmVyc2lvbiBudW1iZXIuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHZlcnNpb24oKTogc3RyaW5nIHtcbiAgICByZXR1cm4gU0NIRU1BX1ZFUlNJT047XG4gIH1cblxuICAvKipcbiAgICogRGVwcmVjYXRlZFxuICAgKiBAZGVwcmVjYXRlZCB1c2UgYHNhdmVBc3NlbWJseU1hbmlmZXN0KClgXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHNhdmUobWFuaWZlc3Q6IGFzc2VtYmx5LkFzc2VtYmx5TWFuaWZlc3QsIGZpbGVQYXRoOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy5zYXZlQXNzZW1ibHlNYW5pZmVzdChtYW5pZmVzdCwgZmlsZVBhdGgpO1xuICB9XG5cbiAgLyoqXG4gICAqIERlcHJlY2F0ZWRcbiAgICogQGRlcHJlY2F0ZWQgdXNlIGBsb2FkQXNzZW1ibHlNYW5pZmVzdCgpYFxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBsb2FkKGZpbGVQYXRoOiBzdHJpbmcpOiBhc3NlbWJseS5Bc3NlbWJseU1hbmlmZXN0IHtcbiAgICByZXR1cm4gdGhpcy5sb2FkQXNzZW1ibHlNYW5pZmVzdChmaWxlUGF0aCk7XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyB2YWxpZGF0ZShtYW5pZmVzdDogYW55LCBzY2hlbWE6IGpzb25zY2hlbWEuU2NoZW1hLCBvcHRpb25zPzogTG9hZE1hbmlmZXN0T3B0aW9ucykge1xuICAgIGZ1bmN0aW9uIHBhcnNlVmVyc2lvbih2ZXJzaW9uOiBzdHJpbmcpIHtcbiAgICAgIGNvbnN0IHZlciA9IHNlbXZlci52YWxpZCh2ZXJzaW9uKTtcbiAgICAgIGlmICghdmVyKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCBzZW12ZXIgc3RyaW5nOiBcIiR7dmVyc2lvbn1cImApO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHZlcjtcbiAgICB9XG5cbiAgICBjb25zdCBtYXhTdXBwb3J0ZWQgPSBzZW12ZXIubWFqb3IocGFyc2VWZXJzaW9uKE1hbmlmZXN0LnZlcnNpb24oKSkpO1xuICAgIGNvbnN0IGFjdHVhbCA9IHBhcnNlVmVyc2lvbihtYW5pZmVzdC52ZXJzaW9uKTtcblxuICAgIC8vIGZpcnN0IHZhbGlkYXRlIHRoZSB2ZXJzaW9uIHNob3VsZCBiZSBhY2NlcHRlZC4gYWxsIHZlcnNpb25zIHdpdGhpbiB0aGUgc2FtZSBtaW5vciB2ZXJzaW9uIGFyZSBmaW5lXG4gICAgaWYgKG1heFN1cHBvcnRlZCA8IHNlbXZlci5tYWpvcihhY3R1YWwpICYmICFvcHRpb25zPy5za2lwVmVyc2lvbkNoZWNrKSB7XG4gICAgICAvLyB3ZSB1c2UgYSB3ZWxsIGtub3duIGVycm9yIHByZWZpeCBzbyB0aGF0IHRoZSBDTEkgY2FuIGlkZW50aWZ5IHRoaXMgc3BlY2lmaWMgZXJyb3JcbiAgICAgIC8vIGFuZCBwcmludCBzb21lIG1vcmUgY29udGV4dCB0byB0aGUgdXNlci5cbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgYCR7VkVSU0lPTl9NSVNNQVRDSH06IE1heGltdW0gc2NoZW1hIHZlcnNpb24gc3VwcG9ydGVkIGlzICR7bWF4U3VwcG9ydGVkfS54LngsIGJ1dCBmb3VuZCAke2FjdHVhbH1gXG4gICAgICApO1xuICAgIH1cblxuICAgIC8vIG5vdyB2YWxpZGF0ZSB0aGUgZm9ybWF0IGlzIGdvb2QuXG4gICAgY29uc3QgdmFsaWRhdG9yID0gbmV3IGpzb25zY2hlbWEuVmFsaWRhdG9yKCk7XG4gICAgY29uc3QgcmVzdWx0ID0gdmFsaWRhdG9yLnZhbGlkYXRlKG1hbmlmZXN0LCBzY2hlbWEsIHtcbiAgICAgIC8vIGRvZXMgZXhpc3QgYnV0IGlzIG5vdCBpbiB0aGUgVHlwZVNjcmlwdCBkZWZpbml0aW9uc1xuICAgICAgbmVzdGVkRXJyb3JzOiB0cnVlLFxuXG4gICAgICBhbGxvd1Vua25vd25BdHRyaWJ1dGVzOiBmYWxzZSxcbiAgICAgIHByZVZhbGlkYXRlUHJvcGVydHk6IE1hbmlmZXN0LnZhbGlkYXRlQXNzdW1lUm9sZUFkZGl0aW9uYWxPcHRpb25zLFxuICAgIH0pO1xuXG4gICAgbGV0IGVycm9ycyA9IHJlc3VsdC5lcnJvcnM7XG4gICAgaWYgKG9wdGlvbnM/LnNraXBFbnVtQ2hlY2spIHtcbiAgICAgIC8vIEVudW0gdmFsaWRhdGlvbnMgYXJlbid0IHVzZWZ1bCB3aGVuXG4gICAgICBlcnJvcnMgPSBzdHJpcEVudW1FcnJvcnMoZXJyb3JzKTtcbiAgICB9XG5cbiAgICBpZiAoZXJyb3JzLmxlbmd0aCA+IDApIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCBhc3NlbWJseSBtYW5pZmVzdDpcXG4ke2Vycm9ycy5tYXAoKGUpID0+IGUuc3RhY2spLmpvaW4oJ1xcbicpfWApO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIHNhdmVNYW5pZmVzdChcbiAgICBtYW5pZmVzdDogYW55LFxuICAgIGZpbGVQYXRoOiBzdHJpbmcsXG4gICAgc2NoZW1hOiBqc29uc2NoZW1hLlNjaGVtYSxcbiAgICBwcmVwcm9jZXNzPzogKG9iajogYW55KSA9PiBhbnlcbiAgKSB7XG4gICAgbGV0IHdpdGhWZXJzaW9uID0geyAuLi5tYW5pZmVzdCwgdmVyc2lvbjogTWFuaWZlc3QudmVyc2lvbigpIH07XG4gICAgTWFuaWZlc3QudmFsaWRhdGUod2l0aFZlcnNpb24sIHNjaGVtYSk7XG4gICAgaWYgKHByZXByb2Nlc3MpIHtcbiAgICAgIHdpdGhWZXJzaW9uID0gcHJlcHJvY2Vzcyh3aXRoVmVyc2lvbik7XG4gICAgfVxuICAgIGZzLndyaXRlRmlsZVN5bmMoZmlsZVBhdGgsIEpTT04uc3RyaW5naWZ5KHdpdGhWZXJzaW9uLCB1bmRlZmluZWQsIDIpKTtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIGxvYWRNYW5pZmVzdChcbiAgICBmaWxlUGF0aDogc3RyaW5nLFxuICAgIHNjaGVtYToganNvbnNjaGVtYS5TY2hlbWEsXG4gICAgcHJlcHJvY2Vzcz86IChvYmo6IGFueSkgPT4gYW55LFxuICAgIG9wdGlvbnM/OiBMb2FkTWFuaWZlc3RPcHRpb25zXG4gICkge1xuICAgIGNvbnN0IGNvbnRlbnRzID0gZnMucmVhZEZpbGVTeW5jKGZpbGVQYXRoLCB7IGVuY29kaW5nOiAndXRmLTgnIH0pO1xuICAgIGxldCBvYmo7XG4gICAgdHJ5IHtcbiAgICAgIG9iaiA9IEpTT04ucGFyc2UoY29udGVudHMpO1xuICAgIH0gY2F0Y2ggKGU6IGFueSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGAke2UubWVzc2FnZX0sIHdoaWxlIHBhcnNpbmcgJHtKU09OLnN0cmluZ2lmeShjb250ZW50cyl9YCk7XG4gICAgfVxuICAgIGlmIChwcmVwcm9jZXNzKSB7XG4gICAgICBvYmogPSBwcmVwcm9jZXNzKG9iaik7XG4gICAgfVxuICAgIE1hbmlmZXN0LnZhbGlkYXRlKG9iaiwgc2NoZW1hLCBvcHRpb25zKTtcbiAgICByZXR1cm4gb2JqO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoaXMgcmVxdWlyZXMgc29tZSBleHBsYWluaW5nLi4uXG4gICAqXG4gICAqIFdlIHByZXZpb3VzbHkgdXNlZCBgeyBLZXksIFZhbHVlIH1gIGZvciB0aGUgb2JqZWN0IHRoYXQgcmVwcmVzZW50cyBhIHN0YWNrIHRhZy4gKE5vdGljZSB0aGUgY2FzaW5nKVxuICAgKiBAbGluayBodHRwczovL2dpdGh1Yi5jb20vYXdzL2F3cy1jZGsvYmxvYi92MS4yNy4wL3BhY2thZ2VzL2F3cy1jZGsvbGliL2FwaS9jeGFwcC9zdGFja3MudHMjTDQyNy5cbiAgICpcbiAgICogV2hlbiB0aGF0IG9iamVjdCBtb3ZlZCB0byB0aGlzIHBhY2thZ2UsIGl0IGhhZCB0byBiZSBKU0lJIGNvbXBsaWFudCwgd2hpY2ggbWVhbnQgdGhlIHByb3BlcnR5XG4gICAqIG5hbWVzIG11c3QgYmUgYGNhbWVsQ2FzZWRgLCBhbmQgbm90IGBQYXNjYWxDYXNlZGAuIFRoaXMgbWVhbnQgaXQgbm8gbG9uZ2VyIG1hdGNoZXMgdGhlIHN0cnVjdHVyZSBpbiB0aGUgYG1hbmlmZXN0Lmpzb25gIGZpbGUuXG4gICAqIEluIG9yZGVyIHRvIHN1cHBvcnQgY3VycmVudCBtYW5pZmVzdCBmaWxlcywgd2UgaGF2ZSB0byB0cmFuc2xhdGUgdGhlIGBQYXNjYWxDYXNlZGAgcmVwcmVzZW50YXRpb24gdG8gdGhlIG5ldyBgY2FtZWxDYXNlZGAgb25lLlxuICAgKlxuICAgKiBOb3RlIHRoYXQgdGhlIHNlcmlhbGl6YXRpb24gaXRzZWxmIHN0aWxsIHdyaXRlcyBgUGFzY2FsQ2FzZWRgIGJlY2F1c2UgaXQgcmVsYXRlcyB0byBob3cgQ2xvdWRGb3JtYXRpb24gZXhwZWN0cyBpdC5cbiAgICpcbiAgICogSWRlYWxseSwgd2Ugd291bGQgc3RhcnQgd3JpdGluZyB0aGUgYGNhbWVsQ2FzZWRgIGFuZCB0cmFuc2xhdGUgdG8gaG93IENsb3VkRm9ybWF0aW9uIGV4cGVjdHMgaXQgd2hlbiBuZWVkZWQuIEJ1dCB0aGlzIHJlcXVpcmVzIG5hc3R5XG4gICAqIGJhY2t3YXJkcy1jb21wYXRpYmlsaXR5IGNvZGUgYW5kIGl0IGp1c3QgZG9lc24ndCBzZWVtIHRvIGJlIHdvcnRoIHRoZSBlZmZvcnQuXG4gICAqL1xuICBwcml2YXRlIHN0YXRpYyBwYXRjaFN0YWNrVGFnc09uUmVhZChtYW5pZmVzdDogYXNzZW1ibHkuQXNzZW1ibHlNYW5pZmVzdCkge1xuICAgIHJldHVybiBNYW5pZmVzdC5yZXBsYWNlU3RhY2tUYWdzKG1hbmlmZXN0LCAodGFncykgPT5cbiAgICAgIHRhZ3MubWFwKChkaXNrVGFnOiBhbnkpID0+ICh7XG4gICAgICAgIGtleTogZGlza1RhZy5LZXksXG4gICAgICAgIHZhbHVlOiBkaXNrVGFnLlZhbHVlLFxuICAgICAgfSkpXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBWYWxpZGF0ZXMgdGhhdCBgYXNzdW1lUm9sZUFkZGl0aW9uYWxPcHRpb25zYCBkb2Vzbid0IGNvbnRhaW4gbm9yIGBFeHRlcm5hbElkYCBuZWl0aGVyIGBSb2xlQXJuYCwgYXMgdGhleVxuICAgKiBzaG91bGQgaGF2ZSBkZWRpY2F0ZWQgcHJvcGVydGllcyBwcmVjZWRpbmcgdGhpcyAoZS5nIGBhc3N1bWVSb2xlQXJuYCBhbmQgYGFzc3VtZVJvbGVFeHRlcm5hbElkYCkuXG4gICAqL1xuICBwcml2YXRlIHN0YXRpYyB2YWxpZGF0ZUFzc3VtZVJvbGVBZGRpdGlvbmFsT3B0aW9ucyhcbiAgICBpbnN0YW5jZTogYW55LFxuICAgIGtleTogc3RyaW5nLFxuICAgIF9zY2hlbWE6IGpzb25zY2hlbWEuU2NoZW1hLFxuICAgIF9vcHRpb25zOiBqc29uc2NoZW1hLk9wdGlvbnMsXG4gICAgX2N0eDoganNvbnNjaGVtYS5TY2hlbWFDb250ZXh0XG4gICkge1xuICAgIGlmIChrZXkgIT09ICdhc3N1bWVSb2xlQWRkaXRpb25hbE9wdGlvbnMnKSB7XG4gICAgICAvLyBub3RlIHRoYXQgdGhpcyBtZWFucyB0aGF0IGlmIHdlIGhhcHBlbiB0byBoYXZlIGEgcHJvcGVydHkgbmFtZWQgbGlrZSB0aGlzLCBidXQgdGhhdFxuICAgICAgLy8gZG9lcyB3YW50IHRvIGFsbG93ICdSb2xlQXJuJyBvciAnRXh0ZXJuYWxJZCcsIHRoaXMgY29kZSB3aWxsIGhhdmUgdG8gY2hhbmdlIHRvIGNvbnNpZGVyIHRoZSBmdWxsIHNjaGVtYSBwYXRoLlxuICAgICAgLy8gSSBkZWNpZGVkIHRvIG1ha2UgdGhpcyBsZXNzIGdyYW51bGFyIGZvciBub3cgb24gcHVycG9zZSBiZWNhdXNlIGl0IGZpdHMgb3VyIG5lZWRzIGFuZCBhdm9pZHMgaGF2aW5nIG1lc3N5XG4gICAgICAvLyB2YWxpZGF0aW9uIGxvZ2ljIGR1ZSB0byB2YXJpb3VzIHNjaGVtYSBwYXRocy5cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBhc3N1bWVSb2xlT3B0aW9ucyA9IGluc3RhbmNlW2tleV07XG4gICAgaWYgKGFzc3VtZVJvbGVPcHRpb25zPy5Sb2xlQXJuKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFJvbGVBcm4gaXMgbm90IGFsbG93ZWQgaW5zaWRlICcke2tleX0nYCk7XG4gICAgfVxuICAgIGlmIChhc3N1bWVSb2xlT3B0aW9ucz8uRXh0ZXJuYWxJZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBFeHRlcm5hbElkIGlzIG5vdCBhbGxvd2VkIGluc2lkZSAnJHtrZXl9J2ApO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBTZWUgZXhwbGFuYXRpb24gb24gYHBhdGNoU3RhY2tUYWdzT25SZWFkYFxuICAgKlxuICAgKiBUcmFuc2xhdGUgc3RhY2sgdGFncyBtZXRhZGF0YSBpZiBpdCBoYXMgdGhlIFwicmlnaHRcIiBjYXNpbmcuXG4gICAqL1xuICBwcml2YXRlIHN0YXRpYyBwYXRjaFN0YWNrVGFnc09uV3JpdGUobWFuaWZlc3Q6IGFzc2VtYmx5LkFzc2VtYmx5TWFuaWZlc3QpIHtcbiAgICByZXR1cm4gTWFuaWZlc3QucmVwbGFjZVN0YWNrVGFncyhtYW5pZmVzdCwgKHRhZ3MpID0+XG4gICAgICB0YWdzLm1hcChcbiAgICAgICAgKG1lbVRhZykgPT5cbiAgICAgICAgICAvLyBNaWdodCBhbHJlYWR5IGJlIHVwcGVyY2FzZWQgKGJlY2F1c2Ugc3RhY2sgc3ludGhlc2lzIGdlbmVyYXRlcyBpdCBpbiBmaW5hbCBmb3JtIHlldClcbiAgICAgICAgICAoJ0tleScgaW4gbWVtVGFnID8gbWVtVGFnIDogeyBLZXk6IG1lbVRhZy5rZXksIFZhbHVlOiBtZW1UYWcudmFsdWUgfSkgYXMgYW55XG4gICAgICApXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZWN1cnNpdmVseSByZXBsYWNlIHN0YWNrIHRhZ3MgaW4gdGhlIHN0YWNrIG1ldGFkYXRhXG4gICAqL1xuICBwcml2YXRlIHN0YXRpYyByZXBsYWNlU3RhY2tUYWdzKFxuICAgIG1hbmlmZXN0OiBhc3NlbWJseS5Bc3NlbWJseU1hbmlmZXN0LFxuICAgIGZuOiBFbmRvZnVuY3Rvcjxhc3NlbWJseS5TdGFja1RhZ3NNZXRhZGF0YUVudHJ5PlxuICApOiBhc3NlbWJseS5Bc3NlbWJseU1hbmlmZXN0IHtcbiAgICAvLyBOZWVkIHRvIGFkZCBpbiB0aGUgYG5vVW5kZWZpbmVkYHMgYmVjYXVzZSBvdGhlcndpc2UgamVzdCBzbmFwc2hvdCB0ZXN0cyBhcmUgZ29pbmcgdG8gZnJlYWsgb3V0XG4gICAgLy8gYWJvdXQgdGhlIGtleXMgd2l0aCB2YWx1ZXMgdGhhdCBhcmUgYHVuZGVmaW5lZGAgKGV2ZW4gdGhvdWdoIHRoZXkgd291bGQgbmV2ZXIgYmUgSlNPTi5zdHJpbmdpZmllZClcbiAgICByZXR1cm4gbm9VbmRlZmluZWQoe1xuICAgICAgLi4ubWFuaWZlc3QsXG4gICAgICBhcnRpZmFjdHM6IG1hcFZhbHVlcyhtYW5pZmVzdC5hcnRpZmFjdHMsIChhcnRpZmFjdCkgPT4ge1xuICAgICAgICBpZiAoYXJ0aWZhY3QudHlwZSAhPT0gYXNzZW1ibHkuQXJ0aWZhY3RUeXBlLkFXU19DTE9VREZPUk1BVElPTl9TVEFDSykge1xuICAgICAgICAgIHJldHVybiBhcnRpZmFjdDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbm9VbmRlZmluZWQoe1xuICAgICAgICAgIC4uLmFydGlmYWN0LFxuICAgICAgICAgIG1ldGFkYXRhOiBtYXBWYWx1ZXMoYXJ0aWZhY3QubWV0YWRhdGEsIChtZXRhZGF0YUVudHJpZXMpID0+XG4gICAgICAgICAgICBtZXRhZGF0YUVudHJpZXMubWFwKChtZXRhZGF0YUVudHJ5KSA9PiB7XG4gICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICBtZXRhZGF0YUVudHJ5LnR5cGUgIT09IGFzc2VtYmx5LkFydGlmYWN0TWV0YWRhdGFFbnRyeVR5cGUuU1RBQ0tfVEFHUyB8fFxuICAgICAgICAgICAgICAgICFtZXRhZGF0YUVudHJ5LmRhdGFcbiAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG1ldGFkYXRhRW50cnk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAuLi5tZXRhZGF0YUVudHJ5LFxuICAgICAgICAgICAgICAgIGRhdGE6IGZuKG1ldGFkYXRhRW50cnkuZGF0YSBhcyBhc3NlbWJseS5TdGFja1RhZ3NNZXRhZGF0YUVudHJ5KSxcbiAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgKSxcbiAgICAgICAgfSBhcyBhc3NlbWJseS5BcnRpZmFjdE1hbmlmZXN0KTtcbiAgICAgIH0pLFxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBjb25zdHJ1Y3RvcigpIHt9XG59XG5cbnR5cGUgRW5kb2Z1bmN0b3I8QT4gPSAoeDogQSkgPT4gQTtcblxuZnVuY3Rpb24gbWFwVmFsdWVzPEEsIEI+KFxuICB4czogUmVjb3JkPHN0cmluZywgQT4gfCB1bmRlZmluZWQsXG4gIGZuOiAoeDogQSkgPT4gQlxuKTogUmVjb3JkPHN0cmluZywgQj4gfCB1bmRlZmluZWQge1xuICBpZiAoIXhzKSB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuICBjb25zdCByZXQ6IFJlY29yZDxzdHJpbmcsIEI+IHwgdW5kZWZpbmVkID0ge307XG4gIGZvciAoY29uc3QgW2ssIHZdIG9mIE9iamVjdC5lbnRyaWVzKHhzKSkge1xuICAgIHJldFtrXSA9IGZuKHYpO1xuICB9XG4gIHJldHVybiByZXQ7XG59XG5cbmZ1bmN0aW9uIG5vVW5kZWZpbmVkPEEgZXh0ZW5kcyBvYmplY3Q+KHhzOiBBKTogQSB7XG4gIGNvbnN0IHJldDogYW55ID0ge307XG4gIGZvciAoY29uc3QgW2ssIHZdIG9mIE9iamVjdC5lbnRyaWVzKHhzKSkge1xuICAgIGlmICh2ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldFtrXSA9IHY7XG4gICAgfVxuICB9XG4gIHJldHVybiByZXQ7XG59XG5cbmZ1bmN0aW9uIHN0cmlwRW51bUVycm9ycyhlcnJvcnM6IGpzb25zY2hlbWEuVmFsaWRhdGlvbkVycm9yW10pIHtcbiAgcmV0dXJuIGVycm9ycy5maWx0ZXIoKGUpID0+IHR5cGVvZiBlLnNjaGVtYSA9PT0gJ3N0cmluZycgfHwgISgnZW51bScgaW4gZS5zY2hlbWEpKTtcbn1cbiJdfQ==","'use strict';\n\nvar helpers = require('./helpers');\n\n/** @type ValidatorResult */\nvar ValidatorResult = helpers.ValidatorResult;\n/** @type SchemaError */\nvar SchemaError = helpers.SchemaError;\n\nvar attribute = {};\n\nattribute.ignoreProperties = {\n // informative properties\n 'id': true,\n 'default': true,\n 'description': true,\n 'title': true,\n // arguments to other properties\n 'additionalItems': true,\n 'then': true,\n 'else': true,\n // special-handled properties\n '$schema': true,\n '$ref': true,\n 'extends': true,\n};\n\n/**\n * @name validators\n */\nvar validators = attribute.validators = {};\n\n/**\n * Validates whether the instance if of a certain type\n * @param instance\n * @param schema\n * @param options\n * @param ctx\n * @return {ValidatorResult|null}\n */\nvalidators.type = function validateType (instance, schema, options, ctx) {\n // Ignore undefined instances\n if (instance === undefined) {\n return null;\n }\n var result = new ValidatorResult(instance, schema, options, ctx);\n var types = Array.isArray(schema.type) ? schema.type : [schema.type];\n if (!types.some(this.testType.bind(this, instance, schema, options, ctx))) {\n var list = types.map(function (v) {\n if(!v) return;\n var id = v.$id || v.id;\n return id ? ('<' + id + '>') : (v+'');\n });\n result.addError({\n name: 'type',\n argument: list,\n message: \"is not of a type(s) \" + list,\n });\n }\n return result;\n};\n\nfunction testSchemaNoThrow(instance, options, ctx, callback, schema){\n var throwError = options.throwError;\n var throwAll = options.throwAll;\n options.throwError = false;\n options.throwAll = false;\n var res = this.validateSchema(instance, schema, options, ctx);\n options.throwError = throwError;\n options.throwAll = throwAll;\n\n if (!res.valid && callback instanceof Function) {\n callback(res);\n }\n return res.valid;\n}\n\n/**\n * Validates whether the instance matches some of the given schemas\n * @param instance\n * @param schema\n * @param options\n * @param ctx\n * @return {ValidatorResult|null}\n */\nvalidators.anyOf = function validateAnyOf (instance, schema, options, ctx) {\n // Ignore undefined instances\n if (instance === undefined) {\n return null;\n }\n var result = new ValidatorResult(instance, schema, options, ctx);\n var inner = new ValidatorResult(instance, schema, options, ctx);\n if (!Array.isArray(schema.anyOf)){\n throw new SchemaError(\"anyOf must be an array\");\n }\n if (!schema.anyOf.some(\n testSchemaNoThrow.bind(\n this, instance, options, ctx, function(res){inner.importErrors(res);}\n ))) {\n var list = schema.anyOf.map(function (v, i) {\n var id = v.$id || v.id;\n if(id) return '<' + id + '>';\n return(v.title && JSON.stringify(v.title)) || (v['$ref'] && ('<' + v['$ref'] + '>')) || '[subschema '+i+']';\n });\n if (options.nestedErrors) {\n result.importErrors(inner);\n }\n result.addError({\n name: 'anyOf',\n argument: list,\n message: \"is not any of \" + list.join(','),\n });\n }\n return result;\n};\n\n/**\n * Validates whether the instance matches every given schema\n * @param instance\n * @param schema\n * @param options\n * @param ctx\n * @return {String|null}\n */\nvalidators.allOf = function validateAllOf (instance, schema, options, ctx) {\n // Ignore undefined instances\n if (instance === undefined) {\n return null;\n }\n if (!Array.isArray(schema.allOf)){\n throw new SchemaError(\"allOf must be an array\");\n }\n var result = new ValidatorResult(instance, schema, options, ctx);\n var self = this;\n schema.allOf.forEach(function(v, i){\n var valid = self.validateSchema(instance, v, options, ctx);\n if(!valid.valid){\n var id = v.$id || v.id;\n var msg = id || (v.title && JSON.stringify(v.title)) || (v['$ref'] && ('<' + v['$ref'] + '>')) || '[subschema '+i+']';\n result.addError({\n name: 'allOf',\n argument: { id: msg, length: valid.errors.length, valid: valid },\n message: 'does not match allOf schema ' + msg + ' with ' + valid.errors.length + ' error[s]:',\n });\n result.importErrors(valid);\n }\n });\n return result;\n};\n\n/**\n * Validates whether the instance matches exactly one of the given schemas\n * @param instance\n * @param schema\n * @param options\n * @param ctx\n * @return {String|null}\n */\nvalidators.oneOf = function validateOneOf (instance, schema, options, ctx) {\n // Ignore undefined instances\n if (instance === undefined) {\n return null;\n }\n if (!Array.isArray(schema.oneOf)){\n throw new SchemaError(\"oneOf must be an array\");\n }\n var result = new ValidatorResult(instance, schema, options, ctx);\n var inner = new ValidatorResult(instance, schema, options, ctx);\n var count = schema.oneOf.filter(\n testSchemaNoThrow.bind(\n this, instance, options, ctx, function(res) {inner.importErrors(res);}\n ) ).length;\n var list = schema.oneOf.map(function (v, i) {\n var id = v.$id || v.id;\n return id || (v.title && JSON.stringify(v.title)) || (v['$ref'] && ('<' + v['$ref'] + '>')) || '[subschema '+i+']';\n });\n if (count!==1) {\n if (options.nestedErrors) {\n result.importErrors(inner);\n }\n result.addError({\n name: 'oneOf',\n argument: list,\n message: \"is not exactly one from \" + list.join(','),\n });\n }\n return result;\n};\n\n/**\n * Validates \"then\" or \"else\" depending on the result of validating \"if\"\n * @param instance\n * @param schema\n * @param options\n * @param ctx\n * @return {String|null}\n */\nvalidators.if = function validateIf (instance, schema, options, ctx) {\n // Ignore undefined instances\n if (instance === undefined) return null;\n if (!helpers.isSchema(schema.if)) throw new Error('Expected \"if\" keyword to be a schema');\n var ifValid = testSchemaNoThrow.call(this, instance, options, ctx, null, schema.if);\n var result = new ValidatorResult(instance, schema, options, ctx);\n var res;\n if(ifValid){\n if (schema.then === undefined) return;\n if (!helpers.isSchema(schema.then)) throw new Error('Expected \"then\" keyword to be a schema');\n res = this.validateSchema(instance, schema.then, options, ctx.makeChild(schema.then));\n result.importErrors(res);\n }else{\n if (schema.else === undefined) return;\n if (!helpers.isSchema(schema.else)) throw new Error('Expected \"else\" keyword to be a schema');\n res = this.validateSchema(instance, schema.else, options, ctx.makeChild(schema.else));\n result.importErrors(res);\n }\n return result;\n};\n\nfunction getEnumerableProperty(object, key){\n // Determine if `key` shows up in `for(var key in object)`\n // First test Object.hasOwnProperty.call as an optimization: that guarantees it does\n if(Object.hasOwnProperty.call(object, key)) return object[key];\n // Test `key in object` as an optimization; false means it won't\n if(!(key in object)) return;\n while( (object = Object.getPrototypeOf(object)) ){\n if(Object.propertyIsEnumerable.call(object, key)) return object[key];\n }\n}\n\n/**\n * Validates propertyNames\n * @param instance\n * @param schema\n * @param options\n * @param ctx\n * @return {String|null|ValidatorResult}\n */\nvalidators.propertyNames = function validatePropertyNames (instance, schema, options, ctx) {\n if(!this.types.object(instance)) return;\n var result = new ValidatorResult(instance, schema, options, ctx);\n var subschema = schema.propertyNames!==undefined ? schema.propertyNames : {};\n if(!helpers.isSchema(subschema)) throw new SchemaError('Expected \"propertyNames\" to be a schema (object or boolean)');\n\n for (var property in instance) {\n if(getEnumerableProperty(instance, property) !== undefined){\n var res = this.validateSchema(property, subschema, options, ctx.makeChild(subschema));\n result.importErrors(res);\n }\n }\n\n return result;\n};\n\n/**\n * Validates properties\n * @param instance\n * @param schema\n * @param options\n * @param ctx\n * @return {String|null|ValidatorResult}\n */\nvalidators.properties = function validateProperties (instance, schema, options, ctx) {\n if(!this.types.object(instance)) return;\n var result = new ValidatorResult(instance, schema, options, ctx);\n var properties = schema.properties || {};\n for (var property in properties) {\n var subschema = properties[property];\n if(subschema===undefined){\n continue;\n }else if(subschema===null){\n throw new SchemaError('Unexpected null, expected schema in \"properties\"');\n }\n if (typeof options.preValidateProperty == 'function') {\n options.preValidateProperty(instance, property, subschema, options, ctx);\n }\n var prop = getEnumerableProperty(instance, property);\n var res = this.validateSchema(prop, subschema, options, ctx.makeChild(subschema, property));\n if(res.instance !== result.instance[property]) result.instance[property] = res.instance;\n result.importErrors(res);\n }\n return result;\n};\n\n/**\n * Test a specific property within in instance against the additionalProperties schema attribute\n * This ignores properties with definitions in the properties schema attribute, but no other attributes.\n * If too many more types of property-existence tests pop up they may need their own class of tests (like `type` has)\n * @private\n * @return {boolean}\n */\nfunction testAdditionalProperty (instance, schema, options, ctx, property, result) {\n if(!this.types.object(instance)) return;\n if (schema.properties && schema.properties[property] !== undefined) {\n return;\n }\n if (schema.additionalProperties === false) {\n result.addError({\n name: 'additionalProperties',\n argument: property,\n message: \"is not allowed to have the additional property \" + JSON.stringify(property),\n });\n } else {\n var additionalProperties = schema.additionalProperties || {};\n\n if (typeof options.preValidateProperty == 'function') {\n options.preValidateProperty(instance, property, additionalProperties, options, ctx);\n }\n\n var res = this.validateSchema(instance[property], additionalProperties, options, ctx.makeChild(additionalProperties, property));\n if(res.instance !== result.instance[property]) result.instance[property] = res.instance;\n result.importErrors(res);\n }\n}\n\n/**\n * Validates patternProperties\n * @param instance\n * @param schema\n * @param options\n * @param ctx\n * @return {String|null|ValidatorResult}\n */\nvalidators.patternProperties = function validatePatternProperties (instance, schema, options, ctx) {\n if(!this.types.object(instance)) return;\n var result = new ValidatorResult(instance, schema, options, ctx);\n var patternProperties = schema.patternProperties || {};\n\n for (var property in instance) {\n var test = true;\n for (var pattern in patternProperties) {\n var subschema = patternProperties[pattern];\n if(subschema===undefined){\n continue;\n }else if(subschema===null){\n throw new SchemaError('Unexpected null, expected schema in \"patternProperties\"');\n }\n try {\n var regexp = new RegExp(pattern, 'u');\n } catch(_e) {\n // In the event the stricter handling causes an error, fall back on the forgiving handling\n // DEPRECATED\n regexp = new RegExp(pattern);\n }\n if (!regexp.test(property)) {\n continue;\n }\n test = false;\n\n if (typeof options.preValidateProperty == 'function') {\n options.preValidateProperty(instance, property, subschema, options, ctx);\n }\n\n var res = this.validateSchema(instance[property], subschema, options, ctx.makeChild(subschema, property));\n if(res.instance !== result.instance[property]) result.instance[property] = res.instance;\n result.importErrors(res);\n }\n if (test) {\n testAdditionalProperty.call(this, instance, schema, options, ctx, property, result);\n }\n }\n\n return result;\n};\n\n/**\n * Validates additionalProperties\n * @param instance\n * @param schema\n * @param options\n * @param ctx\n * @return {String|null|ValidatorResult}\n */\nvalidators.additionalProperties = function validateAdditionalProperties (instance, schema, options, ctx) {\n if(!this.types.object(instance)) return;\n // if patternProperties is defined then we'll test when that one is called instead\n if (schema.patternProperties) {\n return null;\n }\n var result = new ValidatorResult(instance, schema, options, ctx);\n for (var property in instance) {\n testAdditionalProperty.call(this, instance, schema, options, ctx, property, result);\n }\n return result;\n};\n\n/**\n * Validates whether the instance value is at least of a certain length, when the instance value is a string.\n * @param instance\n * @param schema\n * @return {String|null}\n */\nvalidators.minProperties = function validateMinProperties (instance, schema, options, ctx) {\n if (!this.types.object(instance)) return;\n var result = new ValidatorResult(instance, schema, options, ctx);\n var keys = Object.keys(instance);\n if (!(keys.length >= schema.minProperties)) {\n result.addError({\n name: 'minProperties',\n argument: schema.minProperties,\n message: \"does not meet minimum property length of \" + schema.minProperties,\n });\n }\n return result;\n};\n\n/**\n * Validates whether the instance value is at most of a certain length, when the instance value is a string.\n * @param instance\n * @param schema\n * @return {String|null}\n */\nvalidators.maxProperties = function validateMaxProperties (instance, schema, options, ctx) {\n if (!this.types.object(instance)) return;\n var result = new ValidatorResult(instance, schema, options, ctx);\n var keys = Object.keys(instance);\n if (!(keys.length <= schema.maxProperties)) {\n result.addError({\n name: 'maxProperties',\n argument: schema.maxProperties,\n message: \"does not meet maximum property length of \" + schema.maxProperties,\n });\n }\n return result;\n};\n\n/**\n * Validates items when instance is an array\n * @param instance\n * @param schema\n * @param options\n * @param ctx\n * @return {String|null|ValidatorResult}\n */\nvalidators.items = function validateItems (instance, schema, options, ctx) {\n var self = this;\n if (!this.types.array(instance)) return;\n if (schema.items===undefined) return;\n var result = new ValidatorResult(instance, schema, options, ctx);\n instance.every(function (value, i) {\n if(Array.isArray(schema.items)){\n var items = schema.items[i]===undefined ? schema.additionalItems : schema.items[i];\n }else{\n var items = schema.items;\n }\n if (items === undefined) {\n return true;\n }\n if (items === false) {\n result.addError({\n name: 'items',\n message: \"additionalItems not permitted\",\n });\n return false;\n }\n var res = self.validateSchema(value, items, options, ctx.makeChild(items, i));\n if(res.instance !== result.instance[i]) result.instance[i] = res.instance;\n result.importErrors(res);\n return true;\n });\n return result;\n};\n\n/**\n * Validates the \"contains\" keyword\n * @param instance\n * @param schema\n * @param options\n * @param ctx\n * @return {String|null|ValidatorResult}\n */\nvalidators.contains = function validateContains (instance, schema, options, ctx) {\n var self = this;\n if (!this.types.array(instance)) return;\n if (schema.contains===undefined) return;\n if (!helpers.isSchema(schema.contains)) throw new Error('Expected \"contains\" keyword to be a schema');\n var result = new ValidatorResult(instance, schema, options, ctx);\n var count = instance.some(function (value, i) {\n var res = self.validateSchema(value, schema.contains, options, ctx.makeChild(schema.contains, i));\n return res.errors.length===0;\n });\n if(count===false){\n result.addError({\n name: 'contains',\n argument: schema.contains,\n message: \"must contain an item matching given schema\",\n });\n }\n return result;\n};\n\n/**\n * Validates minimum and exclusiveMinimum when the type of the instance value is a number.\n * @param instance\n * @param schema\n * @return {String|null}\n */\nvalidators.minimum = function validateMinimum (instance, schema, options, ctx) {\n if (!this.types.number(instance)) return;\n var result = new ValidatorResult(instance, schema, options, ctx);\n if (schema.exclusiveMinimum && schema.exclusiveMinimum === true) {\n if(!(instance > schema.minimum)){\n result.addError({\n name: 'minimum',\n argument: schema.minimum,\n message: \"must be greater than \" + schema.minimum,\n });\n }\n } else {\n if(!(instance >= schema.minimum)){\n result.addError({\n name: 'minimum',\n argument: schema.minimum,\n message: \"must be greater than or equal to \" + schema.minimum,\n });\n }\n }\n return result;\n};\n\n/**\n * Validates maximum and exclusiveMaximum when the type of the instance value is a number.\n * @param instance\n * @param schema\n * @return {String|null}\n */\nvalidators.maximum = function validateMaximum (instance, schema, options, ctx) {\n if (!this.types.number(instance)) return;\n var result = new ValidatorResult(instance, schema, options, ctx);\n if (schema.exclusiveMaximum && schema.exclusiveMaximum === true) {\n if(!(instance < schema.maximum)){\n result.addError({\n name: 'maximum',\n argument: schema.maximum,\n message: \"must be less than \" + schema.maximum,\n });\n }\n } else {\n if(!(instance <= schema.maximum)){\n result.addError({\n name: 'maximum',\n argument: schema.maximum,\n message: \"must be less than or equal to \" + schema.maximum,\n });\n }\n }\n return result;\n};\n\n/**\n * Validates the number form of exclusiveMinimum when the type of the instance value is a number.\n * @param instance\n * @param schema\n * @return {String|null}\n */\nvalidators.exclusiveMinimum = function validateExclusiveMinimum (instance, schema, options, ctx) {\n // Support the boolean form of exclusiveMinimum, which is handled by the \"minimum\" keyword.\n if(typeof schema.exclusiveMinimum === 'boolean') return;\n if (!this.types.number(instance)) return;\n var result = new ValidatorResult(instance, schema, options, ctx);\n var valid = instance > schema.exclusiveMinimum;\n if (!valid) {\n result.addError({\n name: 'exclusiveMinimum',\n argument: schema.exclusiveMinimum,\n message: \"must be strictly greater than \" + schema.exclusiveMinimum,\n });\n }\n return result;\n};\n\n/**\n * Validates the number form of exclusiveMaximum when the type of the instance value is a number.\n * @param instance\n * @param schema\n * @return {String|null}\n */\nvalidators.exclusiveMaximum = function validateExclusiveMaximum (instance, schema, options, ctx) {\n // Support the boolean form of exclusiveMaximum, which is handled by the \"maximum\" keyword.\n if(typeof schema.exclusiveMaximum === 'boolean') return;\n if (!this.types.number(instance)) return;\n var result = new ValidatorResult(instance, schema, options, ctx);\n var valid = instance < schema.exclusiveMaximum;\n if (!valid) {\n result.addError({\n name: 'exclusiveMaximum',\n argument: schema.exclusiveMaximum,\n message: \"must be strictly less than \" + schema.exclusiveMaximum,\n });\n }\n return result;\n};\n\n/**\n * Perform validation for multipleOf and divisibleBy, which are essentially the same.\n * @param instance\n * @param schema\n * @param validationType\n * @param errorMessage\n * @returns {String|null}\n */\nvar validateMultipleOfOrDivisbleBy = function validateMultipleOfOrDivisbleBy (instance, schema, options, ctx, validationType, errorMessage) {\n if (!this.types.number(instance)) return;\n\n var validationArgument = schema[validationType];\n if (validationArgument == 0) {\n throw new SchemaError(validationType + \" cannot be zero\");\n }\n\n var result = new ValidatorResult(instance, schema, options, ctx);\n\n var instanceDecimals = helpers.getDecimalPlaces(instance);\n var divisorDecimals = helpers.getDecimalPlaces(validationArgument);\n\n var maxDecimals = Math.max(instanceDecimals , divisorDecimals);\n var multiplier = Math.pow(10, maxDecimals);\n\n if (Math.round(instance * multiplier) % Math.round(validationArgument * multiplier) !== 0) {\n result.addError({\n name: validationType,\n argument: validationArgument,\n message: errorMessage + JSON.stringify(validationArgument),\n });\n }\n\n return result;\n};\n\n/**\n * Validates divisibleBy when the type of the instance value is a number.\n * @param instance\n * @param schema\n * @return {String|null}\n */\nvalidators.multipleOf = function validateMultipleOf (instance, schema, options, ctx) {\n return validateMultipleOfOrDivisbleBy.call(this, instance, schema, options, ctx, \"multipleOf\", \"is not a multiple of (divisible by) \");\n};\n\n/**\n * Validates multipleOf when the type of the instance value is a number.\n * @param instance\n * @param schema\n * @return {String|null}\n */\nvalidators.divisibleBy = function validateDivisibleBy (instance, schema, options, ctx) {\n return validateMultipleOfOrDivisbleBy.call(this, instance, schema, options, ctx, \"divisibleBy\", \"is not divisible by (multiple of) \");\n};\n\n/**\n * Validates whether the instance value is present.\n * @param instance\n * @param schema\n * @return {String|null}\n */\nvalidators.required = function validateRequired (instance, schema, options, ctx) {\n var result = new ValidatorResult(instance, schema, options, ctx);\n if (instance === undefined && schema.required === true) {\n // A boolean form is implemented for reverse-compatibility with schemas written against older drafts\n result.addError({\n name: 'required',\n message: \"is required\",\n });\n } else if (this.types.object(instance) && Array.isArray(schema.required)) {\n schema.required.forEach(function(n){\n if(getEnumerableProperty(instance, n)===undefined){\n result.addError({\n name: 'required',\n argument: n,\n message: \"requires property \" + JSON.stringify(n),\n });\n }\n });\n }\n return result;\n};\n\n/**\n * Validates whether the instance value matches the regular expression, when the instance value is a string.\n * @param instance\n * @param schema\n * @return {String|null}\n */\nvalidators.pattern = function validatePattern (instance, schema, options, ctx) {\n if (!this.types.string(instance)) return;\n var result = new ValidatorResult(instance, schema, options, ctx);\n var pattern = schema.pattern;\n try {\n var regexp = new RegExp(pattern, 'u');\n } catch(_e) {\n // In the event the stricter handling causes an error, fall back on the forgiving handling\n // DEPRECATED\n regexp = new RegExp(pattern);\n }\n if (!instance.match(regexp)) {\n result.addError({\n name: 'pattern',\n argument: schema.pattern,\n message: \"does not match pattern \" + JSON.stringify(schema.pattern.toString()),\n });\n }\n return result;\n};\n\n/**\n * Validates whether the instance value is of a certain defined format or a custom\n * format.\n * The following formats are supported for string types:\n * - date-time\n * - date\n * - time\n * - ip-address\n * - ipv6\n * - uri\n * - color\n * - host-name\n * - alpha\n * - alpha-numeric\n * - utc-millisec\n * @param instance\n * @param schema\n * @param [options]\n * @param [ctx]\n * @return {String|null}\n */\nvalidators.format = function validateFormat (instance, schema, options, ctx) {\n if (instance===undefined) return;\n var result = new ValidatorResult(instance, schema, options, ctx);\n if (!result.disableFormat && !helpers.isFormat(instance, schema.format, this)) {\n result.addError({\n name: 'format',\n argument: schema.format,\n message: \"does not conform to the \" + JSON.stringify(schema.format) + \" format\",\n });\n }\n return result;\n};\n\n/**\n * Validates whether the instance value is at least of a certain length, when the instance value is a string.\n * @param instance\n * @param schema\n * @return {String|null}\n */\nvalidators.minLength = function validateMinLength (instance, schema, options, ctx) {\n if (!this.types.string(instance)) return;\n var result = new ValidatorResult(instance, schema, options, ctx);\n var hsp = instance.match(/[\\uDC00-\\uDFFF]/g);\n var length = instance.length - (hsp ? hsp.length : 0);\n if (!(length >= schema.minLength)) {\n result.addError({\n name: 'minLength',\n argument: schema.minLength,\n message: \"does not meet minimum length of \" + schema.minLength,\n });\n }\n return result;\n};\n\n/**\n * Validates whether the instance value is at most of a certain length, when the instance value is a string.\n * @param instance\n * @param schema\n * @return {String|null}\n */\nvalidators.maxLength = function validateMaxLength (instance, schema, options, ctx) {\n if (!this.types.string(instance)) return;\n var result = new ValidatorResult(instance, schema, options, ctx);\n // TODO if this was already computed in \"minLength\", use that value instead of re-computing\n var hsp = instance.match(/[\\uDC00-\\uDFFF]/g);\n var length = instance.length - (hsp ? hsp.length : 0);\n if (!(length <= schema.maxLength)) {\n result.addError({\n name: 'maxLength',\n argument: schema.maxLength,\n message: \"does not meet maximum length of \" + schema.maxLength,\n });\n }\n return result;\n};\n\n/**\n * Validates whether instance contains at least a minimum number of items, when the instance is an Array.\n * @param instance\n * @param schema\n * @return {String|null}\n */\nvalidators.minItems = function validateMinItems (instance, schema, options, ctx) {\n if (!this.types.array(instance)) return;\n var result = new ValidatorResult(instance, schema, options, ctx);\n if (!(instance.length >= schema.minItems)) {\n result.addError({\n name: 'minItems',\n argument: schema.minItems,\n message: \"does not meet minimum length of \" + schema.minItems,\n });\n }\n return result;\n};\n\n/**\n * Validates whether instance contains no more than a maximum number of items, when the instance is an Array.\n * @param instance\n * @param schema\n * @return {String|null}\n */\nvalidators.maxItems = function validateMaxItems (instance, schema, options, ctx) {\n if (!this.types.array(instance)) return;\n var result = new ValidatorResult(instance, schema, options, ctx);\n if (!(instance.length <= schema.maxItems)) {\n result.addError({\n name: 'maxItems',\n argument: schema.maxItems,\n message: \"does not meet maximum length of \" + schema.maxItems,\n });\n }\n return result;\n};\n\n/**\n * Deep compares arrays for duplicates\n * @param v\n * @param i\n * @param a\n * @private\n * @return {boolean}\n */\nfunction testArrays (v, i, a) {\n var j, len = a.length;\n for (j = i + 1, len; j < len; j++) {\n if (helpers.deepCompareStrict(v, a[j])) {\n return false;\n }\n }\n return true;\n}\n\n/**\n * Validates whether there are no duplicates, when the instance is an Array.\n * @param instance\n * @return {String|null}\n */\nvalidators.uniqueItems = function validateUniqueItems (instance, schema, options, ctx) {\n if (schema.uniqueItems!==true) return;\n if (!this.types.array(instance)) return;\n var result = new ValidatorResult(instance, schema, options, ctx);\n if (!instance.every(testArrays)) {\n result.addError({\n name: 'uniqueItems',\n message: \"contains duplicate item\",\n });\n }\n return result;\n};\n\n/**\n * Validate for the presence of dependency properties, if the instance is an object.\n * @param instance\n * @param schema\n * @param options\n * @param ctx\n * @return {null|ValidatorResult}\n */\nvalidators.dependencies = function validateDependencies (instance, schema, options, ctx) {\n if (!this.types.object(instance)) return;\n var result = new ValidatorResult(instance, schema, options, ctx);\n for (var property in schema.dependencies) {\n if (instance[property] === undefined) {\n continue;\n }\n var dep = schema.dependencies[property];\n var childContext = ctx.makeChild(dep, property);\n if (typeof dep == 'string') {\n dep = [dep];\n }\n if (Array.isArray(dep)) {\n dep.forEach(function (prop) {\n if (instance[prop] === undefined) {\n result.addError({\n // FIXME there's two different \"dependencies\" errors here with slightly different outputs\n // Can we make these the same? Or should we create different error types?\n name: 'dependencies',\n argument: childContext.propertyPath,\n message: \"property \" + prop + \" not found, required by \" + childContext.propertyPath,\n });\n }\n });\n } else {\n var res = this.validateSchema(instance, dep, options, childContext);\n if(result.instance !== res.instance) result.instance = res.instance;\n if (res && res.errors.length) {\n result.addError({\n name: 'dependencies',\n argument: childContext.propertyPath,\n message: \"does not meet dependency required by \" + childContext.propertyPath,\n });\n result.importErrors(res);\n }\n }\n }\n return result;\n};\n\n/**\n * Validates whether the instance value is one of the enumerated values.\n *\n * @param instance\n * @param schema\n * @return {ValidatorResult|null}\n */\nvalidators['enum'] = function validateEnum (instance, schema, options, ctx) {\n if (instance === undefined) {\n return null;\n }\n if (!Array.isArray(schema['enum'])) {\n throw new SchemaError(\"enum expects an array\", schema);\n }\n var result = new ValidatorResult(instance, schema, options, ctx);\n if (!schema['enum'].some(helpers.deepCompareStrict.bind(null, instance))) {\n result.addError({\n name: 'enum',\n argument: schema['enum'],\n message: \"is not one of enum values: \" + schema['enum'].map(String).join(','),\n });\n }\n return result;\n};\n\n/**\n * Validates whether the instance exactly matches a given value\n *\n * @param instance\n * @param schema\n * @return {ValidatorResult|null}\n */\nvalidators['const'] = function validateEnum (instance, schema, options, ctx) {\n if (instance === undefined) {\n return null;\n }\n var result = new ValidatorResult(instance, schema, options, ctx);\n if (!helpers.deepCompareStrict(schema['const'], instance)) {\n result.addError({\n name: 'const',\n argument: schema['const'],\n message: \"does not exactly match expected constant: \" + schema['const'],\n });\n }\n return result;\n};\n\n/**\n * Validates whether the instance if of a prohibited type.\n * @param instance\n * @param schema\n * @param options\n * @param ctx\n * @return {null|ValidatorResult}\n */\nvalidators.not = validators.disallow = function validateNot (instance, schema, options, ctx) {\n var self = this;\n if(instance===undefined) return null;\n var result = new ValidatorResult(instance, schema, options, ctx);\n var notTypes = schema.not || schema.disallow;\n if(!notTypes) return null;\n if(!Array.isArray(notTypes)) notTypes=[notTypes];\n notTypes.forEach(function (type) {\n if (self.testType(instance, schema, options, ctx, type)) {\n var id = type && (type.$id || type.id);\n var schemaId = id || type;\n result.addError({\n name: 'not',\n argument: schemaId,\n message: \"is of prohibited type \" + schemaId,\n });\n }\n });\n return result;\n};\n\nmodule.exports = attribute;\n","'use strict';\n\nvar uri = require('url');\n\nvar ValidationError = exports.ValidationError = function ValidationError (message, instance, schema, path, name, argument) {\n if(Array.isArray(path)){\n this.path = path;\n this.property = path.reduce(function(sum, item){\n return sum + makeSuffix(item);\n }, 'instance');\n }else if(path !== undefined){\n this.property = path;\n }\n if (message) {\n this.message = message;\n }\n if (schema) {\n var id = schema.$id || schema.id;\n this.schema = id || schema;\n }\n if (instance !== undefined) {\n this.instance = instance;\n }\n this.name = name;\n this.argument = argument;\n this.stack = this.toString();\n};\n\nValidationError.prototype.toString = function toString() {\n return this.property + ' ' + this.message;\n};\n\nvar ValidatorResult = exports.ValidatorResult = function ValidatorResult(instance, schema, options, ctx) {\n this.instance = instance;\n this.schema = schema;\n this.options = options;\n this.path = ctx.path;\n this.propertyPath = ctx.propertyPath;\n this.errors = [];\n this.throwError = options && options.throwError;\n this.throwFirst = options && options.throwFirst;\n this.throwAll = options && options.throwAll;\n this.disableFormat = options && options.disableFormat === true;\n};\n\nValidatorResult.prototype.addError = function addError(detail) {\n var err;\n if (typeof detail == 'string') {\n err = new ValidationError(detail, this.instance, this.schema, this.path);\n } else {\n if (!detail) throw new Error('Missing error detail');\n if (!detail.message) throw new Error('Missing error message');\n if (!detail.name) throw new Error('Missing validator type');\n err = new ValidationError(detail.message, this.instance, this.schema, this.path, detail.name, detail.argument);\n }\n\n this.errors.push(err);\n if (this.throwFirst) {\n throw new ValidatorResultError(this);\n }else if(this.throwError){\n throw err;\n }\n return err;\n};\n\nValidatorResult.prototype.importErrors = function importErrors(res) {\n if (typeof res == 'string' || (res && res.validatorType)) {\n this.addError(res);\n } else if (res && res.errors) {\n this.errors = this.errors.concat(res.errors);\n }\n};\n\nfunction stringizer (v,i){\n return i+': '+v.toString()+'\\n';\n}\nValidatorResult.prototype.toString = function toString(res) {\n return this.errors.map(stringizer).join('');\n};\n\nObject.defineProperty(ValidatorResult.prototype, \"valid\", { get: function() {\n return !this.errors.length;\n} });\n\nmodule.exports.ValidatorResultError = ValidatorResultError;\nfunction ValidatorResultError(result) {\n if(Error.captureStackTrace){\n Error.captureStackTrace(this, ValidatorResultError);\n }\n this.instance = result.instance;\n this.schema = result.schema;\n this.options = result.options;\n this.errors = result.errors;\n}\nValidatorResultError.prototype = new Error();\nValidatorResultError.prototype.constructor = ValidatorResultError;\nValidatorResultError.prototype.name = \"Validation Error\";\n\n/**\n * Describes a problem with a Schema which prevents validation of an instance\n * @name SchemaError\n * @constructor\n */\nvar SchemaError = exports.SchemaError = function SchemaError (msg, schema) {\n this.message = msg;\n this.schema = schema;\n Error.call(this, msg);\n Error.captureStackTrace(this, SchemaError);\n};\nSchemaError.prototype = Object.create(Error.prototype,\n {\n constructor: {value: SchemaError, enumerable: false},\n name: {value: 'SchemaError', enumerable: false},\n });\n\nvar SchemaContext = exports.SchemaContext = function SchemaContext (schema, options, path, base, schemas) {\n this.schema = schema;\n this.options = options;\n if(Array.isArray(path)){\n this.path = path;\n this.propertyPath = path.reduce(function(sum, item){\n return sum + makeSuffix(item);\n }, 'instance');\n }else{\n this.propertyPath = path;\n }\n this.base = base;\n this.schemas = schemas;\n};\n\nSchemaContext.prototype.resolve = function resolve (target) {\n return uri.resolve(this.base, target);\n};\n\nSchemaContext.prototype.makeChild = function makeChild(schema, propertyName){\n var path = (propertyName===undefined) ? this.path : this.path.concat([propertyName]);\n var id = schema.$id || schema.id;\n var base = uri.resolve(this.base, id||'');\n var ctx = new SchemaContext(schema, this.options, path, base, Object.create(this.schemas));\n if(id && !ctx.schemas[base]){\n ctx.schemas[base] = schema;\n }\n return ctx;\n};\n\nvar FORMAT_REGEXPS = exports.FORMAT_REGEXPS = {\n // 7.3.1. Dates, Times, and Duration\n 'date-time': /^\\d{4}-(?:0[0-9]{1}|1[0-2]{1})-(3[01]|0[1-9]|[12][0-9])[tT ](2[0-4]|[01][0-9]):([0-5][0-9]):(60|[0-5][0-9])(\\.\\d+)?([zZ]|[+-]([0-5][0-9]):(60|[0-5][0-9]))$/,\n 'date': /^\\d{4}-(?:0[0-9]{1}|1[0-2]{1})-(3[01]|0[1-9]|[12][0-9])$/,\n 'time': /^(2[0-4]|[01][0-9]):([0-5][0-9]):(60|[0-5][0-9])$/,\n 'duration': /P(T\\d+(H(\\d+M(\\d+S)?)?|M(\\d+S)?|S)|\\d+(D|M(\\d+D)?|Y(\\d+M(\\d+D)?)?)(T\\d+(H(\\d+M(\\d+S)?)?|M(\\d+S)?|S))?|\\d+W)/i,\n\n // 7.3.2. Email Addresses\n // TODO: fix the email production\n 'email': /^(?:[\\w\\!\\#\\$\\%\\&\\'\\*\\+\\-\\/\\=\\?\\^\\`\\{\\|\\}\\~]+\\.)*[\\w\\!\\#\\$\\%\\&\\'\\*\\+\\-\\/\\=\\?\\^\\`\\{\\|\\}\\~]+@(?:(?:(?:[a-zA-Z0-9](?:[a-zA-Z0-9\\-](?!\\.)){0,61}[a-zA-Z0-9]?\\.)+[a-zA-Z0-9](?:[a-zA-Z0-9\\-](?!$)){0,61}[a-zA-Z0-9]?)|(?:\\[(?:(?:[01]?\\d{1,2}|2[0-4]\\d|25[0-5])\\.){3}(?:[01]?\\d{1,2}|2[0-4]\\d|25[0-5])\\]))$/,\n 'idn-email': /^(\"(?:[!#-\\[\\]-\\u{10FFFF}]|\\\\[\\t -\\u{10FFFF}])*\"|[!#-'*+\\-/-9=?A-Z\\^-\\u{10FFFF}](?:\\.?[!#-'*+\\-/-9=?A-Z\\^-\\u{10FFFF}])*)@([!#-'*+\\-/-9=?A-Z\\^-\\u{10FFFF}](?:\\.?[!#-'*+\\-/-9=?A-Z\\^-\\u{10FFFF}])*|\\[[!-Z\\^-\\u{10FFFF}]*\\])$/u,\n\n // 7.3.3. Hostnames\n\n // 7.3.4. IP Addresses\n 'ip-address': /^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/,\n // FIXME whitespace is invalid\n 'ipv6': /^\\s*((([0-9A-Fa-f]{1,4}:){7}([0-9A-Fa-f]{1,4}|:))|(([0-9A-Fa-f]{1,4}:){6}(:[0-9A-Fa-f]{1,4}|((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){5}(((:[0-9A-Fa-f]{1,4}){1,2})|:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){4}(((:[0-9A-Fa-f]{1,4}){1,3})|((:[0-9A-Fa-f]{1,4})?:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){3}(((:[0-9A-Fa-f]{1,4}){1,4})|((:[0-9A-Fa-f]{1,4}){0,2}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){2}(((:[0-9A-Fa-f]{1,4}){1,5})|((:[0-9A-Fa-f]{1,4}){0,3}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){1}(((:[0-9A-Fa-f]{1,4}){1,6})|((:[0-9A-Fa-f]{1,4}){0,4}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(:(((:[0-9A-Fa-f]{1,4}){1,7})|((:[0-9A-Fa-f]{1,4}){0,5}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:)))(%.+)?\\s*$/,\n\n // 7.3.5. Resource Identifiers\n // TODO: A more accurate regular expression for \"uri\" goes:\n // [A-Za-z][+\\-.0-9A-Za-z]*:((/(/((%[0-9A-Fa-f]{2}|[!$&-.0-9;=A-Z_a-z~])+|(\\[(([Vv][0-9A-Fa-f]+\\.[!$&-.0-;=A-Z_a-z~]+)?|[.0-:A-Fa-f]+)\\])?)(:\\d*)?)?)?#(%[0-9A-Fa-f]{2}|[!$&-;=?-Z_a-z~])*|(/(/((%[0-9A-Fa-f]{2}|[!$&-.0-9;=A-Z_a-z~])+|(\\[(([Vv][0-9A-Fa-f]+\\.[!$&-.0-;=A-Z_a-z~]+)?|[.0-:A-Fa-f]+)\\])?)(:\\d*)?[/?]|[!$&-.0-;=?-Z_a-z~])|/?%[0-9A-Fa-f]{2}|[!$&-.0-;=?-Z_a-z~])(%[0-9A-Fa-f]{2}|[!$&-;=?-Z_a-z~])*(#(%[0-9A-Fa-f]{2}|[!$&-;=?-Z_a-z~])*)?|/(/((%[0-9A-Fa-f]{2}|[!$&-.0-9;=A-Z_a-z~])+(:\\d*)?|(\\[(([Vv][0-9A-Fa-f]+\\.[!$&-.0-;=A-Z_a-z~]+)?|[.0-:A-Fa-f]+)\\])?:\\d*|\\[(([Vv][0-9A-Fa-f]+\\.[!$&-.0-;=A-Z_a-z~]+)?|[.0-:A-Fa-f]+)\\])?)?)?\n 'uri': /^[a-zA-Z][a-zA-Z0-9+.-]*:[^\\s]*$/,\n 'uri-reference': /^(((([A-Za-z][+\\-.0-9A-Za-z]*(:%[0-9A-Fa-f]{2}|:[!$&-.0-;=?-Z_a-z~]|[/?])|\\?)(%[0-9A-Fa-f]{2}|[!$&-;=?-Z_a-z~])*|([A-Za-z][+\\-.0-9A-Za-z]*:?)?)|([A-Za-z][+\\-.0-9A-Za-z]*:)?\\/((%[0-9A-Fa-f]{2}|\\/((%[0-9A-Fa-f]{2}|[!$&-.0-9;=A-Z_a-z~])+|(\\[(([Vv][0-9A-Fa-f]+\\.[!$&-.0-;=A-Z_a-z~]+)?|[.0-:A-Fa-f]+)\\])?)(:\\d*)?[/?]|[!$&-.0-;=?-Z_a-z~])(%[0-9A-Fa-f]{2}|[!$&-;=?-Z_a-z~])*|(\\/((%[0-9A-Fa-f]{2}|[!$&-.0-9;=A-Z_a-z~])+|(\\[(([Vv][0-9A-Fa-f]+\\.[!$&-.0-;=A-Z_a-z~]+)?|[.0-:A-Fa-f]+)\\])?)(:\\d*)?)?))#(%[0-9A-Fa-f]{2}|[!$&-;=?-Z_a-z~])*|(([A-Za-z][+\\-.0-9A-Za-z]*)?%[0-9A-Fa-f]{2}|[!$&-.0-9;=@_~]|[A-Za-z][+\\-.0-9A-Za-z]*[!$&-*,;=@_~])(%[0-9A-Fa-f]{2}|[!$&-.0-9;=@-Z_a-z~])*((([/?](%[0-9A-Fa-f]{2}|[!$&-;=?-Z_a-z~])*)?#|[/?])(%[0-9A-Fa-f]{2}|[!$&-;=?-Z_a-z~])*)?|([A-Za-z][+\\-.0-9A-Za-z]*(:%[0-9A-Fa-f]{2}|:[!$&-.0-;=?-Z_a-z~]|[/?])|\\?)(%[0-9A-Fa-f]{2}|[!$&-;=?-Z_a-z~])*|([A-Za-z][+\\-.0-9A-Za-z]*:)?\\/((%[0-9A-Fa-f]{2}|\\/((%[0-9A-Fa-f]{2}|[!$&-.0-9;=A-Z_a-z~])+|(\\[(([Vv][0-9A-Fa-f]+\\.[!$&-.0-;=A-Z_a-z~]+)?|[.0-:A-Fa-f]+)\\])?)(:\\d*)?[/?]|[!$&-.0-;=?-Z_a-z~])(%[0-9A-Fa-f]{2}|[!$&-;=?-Z_a-z~])*|\\/((%[0-9A-Fa-f]{2}|[!$&-.0-9;=A-Z_a-z~])+(:\\d*)?|(\\[(([Vv][0-9A-Fa-f]+\\.[!$&-.0-;=A-Z_a-z~]+)?|[.0-:A-Fa-f]+)\\])?:\\d*|\\[(([Vv][0-9A-Fa-f]+\\.[!$&-.0-;=A-Z_a-z~]+)?|[.0-:A-Fa-f]+)\\])?)?|[A-Za-z][+\\-.0-9A-Za-z]*:?)?$/,\n 'iri': /^[a-zA-Z][a-zA-Z0-9+.-]*:[^\\s]*$/,\n 'iri-reference': /^(((([A-Za-z][+\\-.0-9A-Za-z]*(:%[0-9A-Fa-f]{2}|:[!$&-.0-;=?-Z_a-z~-\\u{10FFFF}]|[/?])|\\?)(%[0-9A-Fa-f]{2}|[!$&-;=?-Z_a-z~-\\u{10FFFF}])*|([A-Za-z][+\\-.0-9A-Za-z]*:?)?)|([A-Za-z][+\\-.0-9A-Za-z]*:)?\\/((%[0-9A-Fa-f]{2}|\\/((%[0-9A-Fa-f]{2}|[!$&-.0-9;=A-Z_a-z~-\\u{10FFFF}])+|(\\[(([Vv][0-9A-Fa-f]+\\.[!$&-.0-;=A-Z_a-z~-\\u{10FFFF}]+)?|[.0-:A-Fa-f]+)\\])?)(:\\d*)?[/?]|[!$&-.0-;=?-Z_a-z~-\\u{10FFFF}])(%[0-9A-Fa-f]{2}|[!$&-;=?-Z_a-z~-\\u{10FFFF}])*|(\\/((%[0-9A-Fa-f]{2}|[!$&-.0-9;=A-Z_a-z~-\\u{10FFFF}])+|(\\[(([Vv][0-9A-Fa-f]+\\.[!$&-.0-;=A-Z_a-z~-\\u{10FFFF}]+)?|[.0-:A-Fa-f]+)\\])?)(:\\d*)?)?))#(%[0-9A-Fa-f]{2}|[!$&-;=?-Z_a-z~-\\u{10FFFF}])*|(([A-Za-z][+\\-.0-9A-Za-z]*)?%[0-9A-Fa-f]{2}|[!$&-.0-9;=@_~-\\u{10FFFF}]|[A-Za-z][+\\-.0-9A-Za-z]*[!$&-*,;=@_~-\\u{10FFFF}])(%[0-9A-Fa-f]{2}|[!$&-.0-9;=@-Z_a-z~-\\u{10FFFF}])*((([/?](%[0-9A-Fa-f]{2}|[!$&-;=?-Z_a-z~-\\u{10FFFF}])*)?#|[/?])(%[0-9A-Fa-f]{2}|[!$&-;=?-Z_a-z~-\\u{10FFFF}])*)?|([A-Za-z][+\\-.0-9A-Za-z]*(:%[0-9A-Fa-f]{2}|:[!$&-.0-;=?-Z_a-z~-\\u{10FFFF}]|[/?])|\\?)(%[0-9A-Fa-f]{2}|[!$&-;=?-Z_a-z~-\\u{10FFFF}])*|([A-Za-z][+\\-.0-9A-Za-z]*:)?\\/((%[0-9A-Fa-f]{2}|\\/((%[0-9A-Fa-f]{2}|[!$&-.0-9;=A-Z_a-z~-\\u{10FFFF}])+|(\\[(([Vv][0-9A-Fa-f]+\\.[!$&-.0-;=A-Z_a-z~-\\u{10FFFF}]+)?|[.0-:A-Fa-f]+)\\])?)(:\\d*)?[/?]|[!$&-.0-;=?-Z_a-z~-\\u{10FFFF}])(%[0-9A-Fa-f]{2}|[!$&-;=?-Z_a-z~-\\u{10FFFF}])*|\\/((%[0-9A-Fa-f]{2}|[!$&-.0-9;=A-Z_a-z~-\\u{10FFFF}])+(:\\d*)?|(\\[(([Vv][0-9A-Fa-f]+\\.[!$&-.0-;=A-Z_a-z~-\\u{10FFFF}]+)?|[.0-:A-Fa-f]+)\\])?:\\d*|\\[(([Vv][0-9A-Fa-f]+\\.[!$&-.0-;=A-Z_a-z~-\\u{10FFFF}]+)?|[.0-:A-Fa-f]+)\\])?)?|[A-Za-z][+\\-.0-9A-Za-z]*:?)?$/u,\n 'uuid': /^[0-9A-F]{8}-[0-9A-F]{4}-[0-9A-F]{4}-[0-9A-F]{4}-[0-9A-F]{12}$/i,\n\n // 7.3.6. uri-template\n 'uri-template': /(%[0-9a-f]{2}|[!#$&(-;=?@\\[\\]_a-z~]|\\{[!#&+,./;=?@|]?(%[0-9a-f]{2}|[0-9_a-z])(\\.?(%[0-9a-f]{2}|[0-9_a-z]))*(:[1-9]\\d{0,3}|\\*)?(,(%[0-9a-f]{2}|[0-9_a-z])(\\.?(%[0-9a-f]{2}|[0-9_a-z]))*(:[1-9]\\d{0,3}|\\*)?)*\\})*/iu,\n\n // 7.3.7. JSON Pointers\n 'json-pointer': /^(\\/([\\x00-\\x2e0-@\\[-}\\x7f]|~[01])*)*$/iu,\n 'relative-json-pointer': /^\\d+(#|(\\/([\\x00-\\x2e0-@\\[-}\\x7f]|~[01])*)*)$/iu,\n\n // hostname regex from: http://stackoverflow.com/a/1420225/5628\n 'hostname': /^(?=.{1,255}$)[0-9A-Za-z](?:(?:[0-9A-Za-z]|-){0,61}[0-9A-Za-z])?(?:\\.[0-9A-Za-z](?:(?:[0-9A-Za-z]|-){0,61}[0-9A-Za-z])?)*\\.?$/,\n 'host-name': /^(?=.{1,255}$)[0-9A-Za-z](?:(?:[0-9A-Za-z]|-){0,61}[0-9A-Za-z])?(?:\\.[0-9A-Za-z](?:(?:[0-9A-Za-z]|-){0,61}[0-9A-Za-z])?)*\\.?$/,\n\n 'utc-millisec': function (input) {\n return (typeof input === 'string') && parseFloat(input) === parseInt(input, 10) && !isNaN(input);\n },\n\n // 7.3.8. regex\n 'regex': function (input) {\n var result = true;\n try {\n new RegExp(input);\n } catch (e) {\n result = false;\n }\n return result;\n },\n\n // Other definitions\n // \"style\" was removed from JSON Schema in draft-4 and is deprecated\n 'style': /[\\r\\n\\t ]*[^\\r\\n\\t ][^:]*:[\\r\\n\\t ]*[^\\r\\n\\t ;]*[\\r\\n\\t ]*;?/,\n // \"color\" was removed from JSON Schema in draft-4 and is deprecated\n 'color': /^(#?([0-9A-Fa-f]{3}){1,2}\\b|aqua|black|blue|fuchsia|gray|green|lime|maroon|navy|olive|orange|purple|red|silver|teal|white|yellow|(rgb\\(\\s*\\b([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\b\\s*,\\s*\\b([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\b\\s*,\\s*\\b([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\b\\s*\\))|(rgb\\(\\s*(\\d?\\d%|100%)+\\s*,\\s*(\\d?\\d%|100%)+\\s*,\\s*(\\d?\\d%|100%)+\\s*\\)))$/,\n 'phone': /^\\+(?:[0-9] ?){6,14}[0-9]$/,\n 'alpha': /^[a-zA-Z]+$/,\n 'alphanumeric': /^[a-zA-Z0-9]+$/,\n};\n\nFORMAT_REGEXPS.regexp = FORMAT_REGEXPS.regex;\nFORMAT_REGEXPS.pattern = FORMAT_REGEXPS.regex;\nFORMAT_REGEXPS.ipv4 = FORMAT_REGEXPS['ip-address'];\n\nexports.isFormat = function isFormat (input, format, validator) {\n if (typeof input === 'string' && FORMAT_REGEXPS[format] !== undefined) {\n if (FORMAT_REGEXPS[format] instanceof RegExp) {\n return FORMAT_REGEXPS[format].test(input);\n }\n if (typeof FORMAT_REGEXPS[format] === 'function') {\n return FORMAT_REGEXPS[format](input);\n }\n } else if (validator && validator.customFormats &&\n typeof validator.customFormats[format] === 'function') {\n return validator.customFormats[format](input);\n }\n return true;\n};\n\nvar makeSuffix = exports.makeSuffix = function makeSuffix (key) {\n key = key.toString();\n // This function could be capable of outputting valid a ECMAScript string, but the\n // resulting code for testing which form to use would be tens of thousands of characters long\n // That means this will use the name form for some illegal forms\n if (!key.match(/[.\\s\\[\\]]/) && !key.match(/^[\\d]/)) {\n return '.' + key;\n }\n if (key.match(/^\\d+$/)) {\n return '[' + key + ']';\n }\n return '[' + JSON.stringify(key) + ']';\n};\n\nexports.deepCompareStrict = function deepCompareStrict (a, b) {\n if (typeof a !== typeof b) {\n return false;\n }\n if (Array.isArray(a)) {\n if (!Array.isArray(b)) {\n return false;\n }\n if (a.length !== b.length) {\n return false;\n }\n return a.every(function (v, i) {\n return deepCompareStrict(a[i], b[i]);\n });\n }\n if (typeof a === 'object') {\n if (!a || !b) {\n return a === b;\n }\n var aKeys = Object.keys(a);\n var bKeys = Object.keys(b);\n if (aKeys.length !== bKeys.length) {\n return false;\n }\n return aKeys.every(function (v) {\n return deepCompareStrict(a[v], b[v]);\n });\n }\n return a === b;\n};\n\nfunction deepMerger (target, dst, e, i) {\n if (typeof e === 'object') {\n dst[i] = deepMerge(target[i], e);\n } else {\n if (target.indexOf(e) === -1) {\n dst.push(e);\n }\n }\n}\n\nfunction copyist (src, dst, key) {\n dst[key] = src[key];\n}\n\nfunction copyistWithDeepMerge (target, src, dst, key) {\n if (typeof src[key] !== 'object' || !src[key]) {\n dst[key] = src[key];\n }\n else {\n if (!target[key]) {\n dst[key] = src[key];\n } else {\n dst[key] = deepMerge(target[key], src[key]);\n }\n }\n}\n\nfunction deepMerge (target, src) {\n var array = Array.isArray(src);\n var dst = array && [] || {};\n\n if (array) {\n target = target || [];\n dst = dst.concat(target);\n src.forEach(deepMerger.bind(null, target, dst));\n } else {\n if (target && typeof target === 'object') {\n Object.keys(target).forEach(copyist.bind(null, target, dst));\n }\n Object.keys(src).forEach(copyistWithDeepMerge.bind(null, target, src, dst));\n }\n\n return dst;\n}\n\nmodule.exports.deepMerge = deepMerge;\n\n/**\n * Validates instance against the provided schema\n * Implements URI+JSON Pointer encoding, e.g. \"%7e\"=\"~0\"=>\"~\", \"~1\"=\"%2f\"=>\"/\"\n * @param o\n * @param s The path to walk o along\n * @return any\n */\nexports.objectGetPath = function objectGetPath(o, s) {\n var parts = s.split('/').slice(1);\n var k;\n while (typeof (k=parts.shift()) == 'string') {\n var n = decodeURIComponent(k.replace(/~0/,'~').replace(/~1/g,'/'));\n if (!(n in o)) return;\n o = o[n];\n }\n return o;\n};\n\nfunction pathEncoder (v) {\n return '/'+encodeURIComponent(v).replace(/~/g,'%7E');\n}\n/**\n * Accept an Array of property names and return a JSON Pointer URI fragment\n * @param Array a\n * @return {String}\n */\nexports.encodePath = function encodePointer(a){\n // ~ must be encoded explicitly because hacks\n // the slash is encoded by encodeURIComponent\n return a.map(pathEncoder).join('');\n};\n\n\n/**\n * Calculate the number of decimal places a number uses\n * We need this to get correct results out of multipleOf and divisibleBy\n * when either figure is has decimal places, due to IEEE-754 float issues.\n * @param number\n * @returns {number}\n */\nexports.getDecimalPlaces = function getDecimalPlaces(number) {\n\n var decimalPlaces = 0;\n if (isNaN(number)) return decimalPlaces;\n\n if (typeof number !== 'number') {\n number = Number(number);\n }\n\n var parts = number.toString().split('e');\n if (parts.length === 2) {\n if (parts[1][0] !== '-') {\n return decimalPlaces;\n } else {\n decimalPlaces = Number(parts[1].slice(1));\n }\n }\n\n var decimalParts = parts[0].split('.');\n if (decimalParts.length === 2) {\n decimalPlaces += decimalParts[1].length;\n }\n\n return decimalPlaces;\n};\n\nexports.isSchema = function isSchema(val){\n return (typeof val === 'object' && val) || (typeof val === 'boolean');\n};\n\n","'use strict';\n\nvar Validator = module.exports.Validator = require('./validator');\n\nmodule.exports.ValidatorResult = require('./helpers').ValidatorResult;\nmodule.exports.ValidatorResultError = require('./helpers').ValidatorResultError;\nmodule.exports.ValidationError = require('./helpers').ValidationError;\nmodule.exports.SchemaError = require('./helpers').SchemaError;\nmodule.exports.SchemaScanResult = require('./scan').SchemaScanResult;\nmodule.exports.scan = require('./scan').scan;\n\nmodule.exports.validate = function (instance, schema, options) {\n var v = new Validator();\n return v.validate(instance, schema, options);\n};\n","\"use strict\";\n\nvar urilib = require('url');\nvar helpers = require('./helpers');\n\nmodule.exports.SchemaScanResult = SchemaScanResult;\nfunction SchemaScanResult(found, ref){\n this.id = found;\n this.ref = ref;\n}\n\n/**\n * Adds a schema with a certain urn to the Validator instance.\n * @param string uri\n * @param object schema\n * @return {Object}\n */\nmodule.exports.scan = function scan(base, schema){\n function scanSchema(baseuri, schema){\n if(!schema || typeof schema!='object') return;\n // Mark all referenced schemas so we can tell later which schemas are referred to, but never defined\n if(schema.$ref){\n var resolvedUri = urilib.resolve(baseuri, schema.$ref);\n ref[resolvedUri] = ref[resolvedUri] ? ref[resolvedUri]+1 : 0;\n return;\n }\n var id = schema.$id || schema.id;\n var ourBase = id ? urilib.resolve(baseuri, id) : baseuri;\n if (ourBase) {\n // If there's no fragment, append an empty one\n if(ourBase.indexOf('#')<0) ourBase += '#';\n if(found[ourBase]){\n if(!helpers.deepCompareStrict(found[ourBase], schema)){\n throw new Error('Schema <'+ourBase+'> already exists with different definition');\n }\n return found[ourBase];\n }\n found[ourBase] = schema;\n // strip trailing fragment\n if(ourBase[ourBase.length-1]=='#'){\n found[ourBase.substring(0, ourBase.length-1)] = schema;\n }\n }\n scanArray(ourBase+'/items', (Array.isArray(schema.items)?schema.items:[schema.items]));\n scanArray(ourBase+'/extends', (Array.isArray(schema.extends)?schema.extends:[schema.extends]));\n scanSchema(ourBase+'/additionalItems', schema.additionalItems);\n scanObject(ourBase+'/properties', schema.properties);\n scanSchema(ourBase+'/additionalProperties', schema.additionalProperties);\n scanObject(ourBase+'/definitions', schema.definitions);\n scanObject(ourBase+'/patternProperties', schema.patternProperties);\n scanObject(ourBase+'/dependencies', schema.dependencies);\n scanArray(ourBase+'/disallow', schema.disallow);\n scanArray(ourBase+'/allOf', schema.allOf);\n scanArray(ourBase+'/anyOf', schema.anyOf);\n scanArray(ourBase+'/oneOf', schema.oneOf);\n scanSchema(ourBase+'/not', schema.not);\n }\n function scanArray(baseuri, schemas){\n if(!Array.isArray(schemas)) return;\n for(var i=0; i\", schema);\n }\n var subschema = helpers.objectGetPath(ctx.schemas[document], fragment.substr(1));\n if(subschema===undefined){\n throw new SchemaError(\"no such schema \" + fragment + \" located in <\" + document + \">\", schema);\n }\n return {subschema: subschema, switchSchema: switchSchema};\n};\n\n/**\n * Tests whether the instance if of a certain type.\n * @private\n * @param instance\n * @param schema\n * @param options\n * @param ctx\n * @param type\n * @return {boolean}\n */\nValidator.prototype.testType = function validateType (instance, schema, options, ctx, type) {\n if(type===undefined){\n return;\n }else if(type===null){\n throw new SchemaError('Unexpected null in \"type\" keyword');\n }\n if (typeof this.types[type] == 'function') {\n return this.types[type].call(this, instance);\n }\n if (type && typeof type == 'object') {\n var res = this.validateSchema(instance, type, options, ctx);\n return res === undefined || !(res && res.errors.length);\n }\n // Undefined or properties not on the list are acceptable, same as not being defined\n return true;\n};\n\nvar types = Validator.prototype.types = {};\ntypes.string = function testString (instance) {\n return typeof instance == 'string';\n};\ntypes.number = function testNumber (instance) {\n // isFinite returns false for NaN, Infinity, and -Infinity\n return typeof instance == 'number' && isFinite(instance);\n};\ntypes.integer = function testInteger (instance) {\n return (typeof instance == 'number') && instance % 1 === 0;\n};\ntypes.boolean = function testBoolean (instance) {\n return typeof instance == 'boolean';\n};\ntypes.array = function testArray (instance) {\n return Array.isArray(instance);\n};\ntypes['null'] = function testNull (instance) {\n return instance === null;\n};\ntypes.date = function testDate (instance) {\n return instance instanceof Date;\n};\ntypes.any = function testAny (instance) {\n return true;\n};\ntypes.object = function testObject (instance) {\n // TODO: fix this - see #15\n return instance && (typeof instance === 'object') && !(Array.isArray(instance)) && !(instance instanceof Date);\n};\n\nmodule.exports = Validator;\n","const ANY = Symbol('SemVer ANY')\n// hoisted class for cyclic dependency\nclass Comparator {\n static get ANY () {\n return ANY\n }\n\n constructor (comp, options) {\n options = parseOptions(options)\n\n if (comp instanceof Comparator) {\n if (comp.loose === !!options.loose) {\n return comp\n } else {\n comp = comp.value\n }\n }\n\n comp = comp.trim().split(/\\s+/).join(' ')\n debug('comparator', comp, options)\n this.options = options\n this.loose = !!options.loose\n this.parse(comp)\n\n if (this.semver === ANY) {\n this.value = ''\n } else {\n this.value = this.operator + this.semver.version\n }\n\n debug('comp', this)\n }\n\n parse (comp) {\n const r = this.options.loose ? re[t.COMPARATORLOOSE] : re[t.COMPARATOR]\n const m = comp.match(r)\n\n if (!m) {\n throw new TypeError(`Invalid comparator: ${comp}`)\n }\n\n this.operator = m[1] !== undefined ? m[1] : ''\n if (this.operator === '=') {\n this.operator = ''\n }\n\n // if it literally is just '>' or '' then allow anything.\n if (!m[2]) {\n this.semver = ANY\n } else {\n this.semver = new SemVer(m[2], this.options.loose)\n }\n }\n\n toString () {\n return this.value\n }\n\n test (version) {\n debug('Comparator.test', version, this.options.loose)\n\n if (this.semver === ANY || version === ANY) {\n return true\n }\n\n if (typeof version === 'string') {\n try {\n version = new SemVer(version, this.options)\n } catch (er) {\n return false\n }\n }\n\n return cmp(version, this.operator, this.semver, this.options)\n }\n\n intersects (comp, options) {\n if (!(comp instanceof Comparator)) {\n throw new TypeError('a Comparator is required')\n }\n\n if (this.operator === '') {\n if (this.value === '') {\n return true\n }\n return new Range(comp.value, options).test(this.value)\n } else if (comp.operator === '') {\n if (comp.value === '') {\n return true\n }\n return new Range(this.value, options).test(comp.semver)\n }\n\n options = parseOptions(options)\n\n // Special cases where nothing can possibly be lower\n if (options.includePrerelease &&\n (this.value === '<0.0.0-0' || comp.value === '<0.0.0-0')) {\n return false\n }\n if (!options.includePrerelease &&\n (this.value.startsWith('<0.0.0') || comp.value.startsWith('<0.0.0'))) {\n return false\n }\n\n // Same direction increasing (> or >=)\n if (this.operator.startsWith('>') && comp.operator.startsWith('>')) {\n return true\n }\n // Same direction decreasing (< or <=)\n if (this.operator.startsWith('<') && comp.operator.startsWith('<')) {\n return true\n }\n // same SemVer and both sides are inclusive (<= or >=)\n if (\n (this.semver.version === comp.semver.version) &&\n this.operator.includes('=') && comp.operator.includes('=')) {\n return true\n }\n // opposite directions less than\n if (cmp(this.semver, '<', comp.semver, options) &&\n this.operator.startsWith('>') && comp.operator.startsWith('<')) {\n return true\n }\n // opposite directions greater than\n if (cmp(this.semver, '>', comp.semver, options) &&\n this.operator.startsWith('<') && comp.operator.startsWith('>')) {\n return true\n }\n return false\n }\n}\n\nmodule.exports = Comparator\n\nconst parseOptions = require('../internal/parse-options')\nconst { safeRe: re, t } = require('../internal/re')\nconst cmp = require('../functions/cmp')\nconst debug = require('../internal/debug')\nconst SemVer = require('./semver')\nconst Range = require('./range')\n","const SPACE_CHARACTERS = /\\s+/g\n\n// hoisted class for cyclic dependency\nclass Range {\n constructor (range, options) {\n options = parseOptions(options)\n\n if (range instanceof Range) {\n if (\n range.loose === !!options.loose &&\n range.includePrerelease === !!options.includePrerelease\n ) {\n return range\n } else {\n return new Range(range.raw, options)\n }\n }\n\n if (range instanceof Comparator) {\n // just put it in the set and return\n this.raw = range.value\n this.set = [[range]]\n this.formatted = undefined\n return this\n }\n\n this.options = options\n this.loose = !!options.loose\n this.includePrerelease = !!options.includePrerelease\n\n // First reduce all whitespace as much as possible so we do not have to rely\n // on potentially slow regexes like \\s*. This is then stored and used for\n // future error messages as well.\n this.raw = range.trim().replace(SPACE_CHARACTERS, ' ')\n\n // First, split on ||\n this.set = this.raw\n .split('||')\n // map the range to a 2d array of comparators\n .map(r => this.parseRange(r.trim()))\n // throw out any comparator lists that are empty\n // this generally means that it was not a valid range, which is allowed\n // in loose mode, but will still throw if the WHOLE range is invalid.\n .filter(c => c.length)\n\n if (!this.set.length) {\n throw new TypeError(`Invalid SemVer Range: ${this.raw}`)\n }\n\n // if we have any that are not the null set, throw out null sets.\n if (this.set.length > 1) {\n // keep the first one, in case they're all null sets\n const first = this.set[0]\n this.set = this.set.filter(c => !isNullSet(c[0]))\n if (this.set.length === 0) {\n this.set = [first]\n } else if (this.set.length > 1) {\n // if we have any that are *, then the range is just *\n for (const c of this.set) {\n if (c.length === 1 && isAny(c[0])) {\n this.set = [c]\n break\n }\n }\n }\n }\n\n this.formatted = undefined\n }\n\n get range () {\n if (this.formatted === undefined) {\n this.formatted = ''\n for (let i = 0; i < this.set.length; i++) {\n if (i > 0) {\n this.formatted += '||'\n }\n const comps = this.set[i]\n for (let k = 0; k < comps.length; k++) {\n if (k > 0) {\n this.formatted += ' '\n }\n this.formatted += comps[k].toString().trim()\n }\n }\n }\n return this.formatted\n }\n\n format () {\n return this.range\n }\n\n toString () {\n return this.range\n }\n\n parseRange (range) {\n // memoize range parsing for performance.\n // this is a very hot path, and fully deterministic.\n const memoOpts =\n (this.options.includePrerelease && FLAG_INCLUDE_PRERELEASE) |\n (this.options.loose && FLAG_LOOSE)\n const memoKey = memoOpts + ':' + range\n const cached = cache.get(memoKey)\n if (cached) {\n return cached\n }\n\n const loose = this.options.loose\n // `1.2.3 - 1.2.4` => `>=1.2.3 <=1.2.4`\n const hr = loose ? re[t.HYPHENRANGELOOSE] : re[t.HYPHENRANGE]\n range = range.replace(hr, hyphenReplace(this.options.includePrerelease))\n debug('hyphen replace', range)\n\n // `> 1.2.3 < 1.2.5` => `>1.2.3 <1.2.5`\n range = range.replace(re[t.COMPARATORTRIM], comparatorTrimReplace)\n debug('comparator trim', range)\n\n // `~ 1.2.3` => `~1.2.3`\n range = range.replace(re[t.TILDETRIM], tildeTrimReplace)\n debug('tilde trim', range)\n\n // `^ 1.2.3` => `^1.2.3`\n range = range.replace(re[t.CARETTRIM], caretTrimReplace)\n debug('caret trim', range)\n\n // At this point, the range is completely trimmed and\n // ready to be split into comparators.\n\n let rangeList = range\n .split(' ')\n .map(comp => parseComparator(comp, this.options))\n .join(' ')\n .split(/\\s+/)\n // >=0.0.0 is equivalent to *\n .map(comp => replaceGTE0(comp, this.options))\n\n if (loose) {\n // in loose mode, throw out any that are not valid comparators\n rangeList = rangeList.filter(comp => {\n debug('loose invalid filter', comp, this.options)\n return !!comp.match(re[t.COMPARATORLOOSE])\n })\n }\n debug('range list', rangeList)\n\n // if any comparators are the null set, then replace with JUST null set\n // if more than one comparator, remove any * comparators\n // also, don't include the same comparator more than once\n const rangeMap = new Map()\n const comparators = rangeList.map(comp => new Comparator(comp, this.options))\n for (const comp of comparators) {\n if (isNullSet(comp)) {\n return [comp]\n }\n rangeMap.set(comp.value, comp)\n }\n if (rangeMap.size > 1 && rangeMap.has('')) {\n rangeMap.delete('')\n }\n\n const result = [...rangeMap.values()]\n cache.set(memoKey, result)\n return result\n }\n\n intersects (range, options) {\n if (!(range instanceof Range)) {\n throw new TypeError('a Range is required')\n }\n\n return this.set.some((thisComparators) => {\n return (\n isSatisfiable(thisComparators, options) &&\n range.set.some((rangeComparators) => {\n return (\n isSatisfiable(rangeComparators, options) &&\n thisComparators.every((thisComparator) => {\n return rangeComparators.every((rangeComparator) => {\n return thisComparator.intersects(rangeComparator, options)\n })\n })\n )\n })\n )\n })\n }\n\n // if ANY of the sets match ALL of its comparators, then pass\n test (version) {\n if (!version) {\n return false\n }\n\n if (typeof version === 'string') {\n try {\n version = new SemVer(version, this.options)\n } catch (er) {\n return false\n }\n }\n\n for (let i = 0; i < this.set.length; i++) {\n if (testSet(this.set[i], version, this.options)) {\n return true\n }\n }\n return false\n }\n}\n\nmodule.exports = Range\n\nconst LRU = require('../internal/lrucache')\nconst cache = new LRU()\n\nconst parseOptions = require('../internal/parse-options')\nconst Comparator = require('./comparator')\nconst debug = require('../internal/debug')\nconst SemVer = require('./semver')\nconst {\n safeRe: re,\n t,\n comparatorTrimReplace,\n tildeTrimReplace,\n caretTrimReplace,\n} = require('../internal/re')\nconst { FLAG_INCLUDE_PRERELEASE, FLAG_LOOSE } = require('../internal/constants')\n\nconst isNullSet = c => c.value === '<0.0.0-0'\nconst isAny = c => c.value === ''\n\n// take a set of comparators and determine whether there\n// exists a version which can satisfy it\nconst isSatisfiable = (comparators, options) => {\n let result = true\n const remainingComparators = comparators.slice()\n let testComparator = remainingComparators.pop()\n\n while (result && remainingComparators.length) {\n result = remainingComparators.every((otherComparator) => {\n return testComparator.intersects(otherComparator, options)\n })\n\n testComparator = remainingComparators.pop()\n }\n\n return result\n}\n\n// comprised of xranges, tildes, stars, and gtlt's at this point.\n// already replaced the hyphen ranges\n// turn into a set of JUST comparators.\nconst parseComparator = (comp, options) => {\n debug('comp', comp, options)\n comp = replaceCarets(comp, options)\n debug('caret', comp)\n comp = replaceTildes(comp, options)\n debug('tildes', comp)\n comp = replaceXRanges(comp, options)\n debug('xrange', comp)\n comp = replaceStars(comp, options)\n debug('stars', comp)\n return comp\n}\n\nconst isX = id => !id || id.toLowerCase() === 'x' || id === '*'\n\n// ~, ~> --> * (any, kinda silly)\n// ~2, ~2.x, ~2.x.x, ~>2, ~>2.x ~>2.x.x --> >=2.0.0 <3.0.0-0\n// ~2.0, ~2.0.x, ~>2.0, ~>2.0.x --> >=2.0.0 <2.1.0-0\n// ~1.2, ~1.2.x, ~>1.2, ~>1.2.x --> >=1.2.0 <1.3.0-0\n// ~1.2.3, ~>1.2.3 --> >=1.2.3 <1.3.0-0\n// ~1.2.0, ~>1.2.0 --> >=1.2.0 <1.3.0-0\n// ~0.0.1 --> >=0.0.1 <0.1.0-0\nconst replaceTildes = (comp, options) => {\n return comp\n .trim()\n .split(/\\s+/)\n .map((c) => replaceTilde(c, options))\n .join(' ')\n}\n\nconst replaceTilde = (comp, options) => {\n const r = options.loose ? re[t.TILDELOOSE] : re[t.TILDE]\n return comp.replace(r, (_, M, m, p, pr) => {\n debug('tilde', comp, _, M, m, p, pr)\n let ret\n\n if (isX(M)) {\n ret = ''\n } else if (isX(m)) {\n ret = `>=${M}.0.0 <${+M + 1}.0.0-0`\n } else if (isX(p)) {\n // ~1.2 == >=1.2.0 <1.3.0-0\n ret = `>=${M}.${m}.0 <${M}.${+m + 1}.0-0`\n } else if (pr) {\n debug('replaceTilde pr', pr)\n ret = `>=${M}.${m}.${p}-${pr\n } <${M}.${+m + 1}.0-0`\n } else {\n // ~1.2.3 == >=1.2.3 <1.3.0-0\n ret = `>=${M}.${m}.${p\n } <${M}.${+m + 1}.0-0`\n }\n\n debug('tilde return', ret)\n return ret\n })\n}\n\n// ^ --> * (any, kinda silly)\n// ^2, ^2.x, ^2.x.x --> >=2.0.0 <3.0.0-0\n// ^2.0, ^2.0.x --> >=2.0.0 <3.0.0-0\n// ^1.2, ^1.2.x --> >=1.2.0 <2.0.0-0\n// ^1.2.3 --> >=1.2.3 <2.0.0-0\n// ^1.2.0 --> >=1.2.0 <2.0.0-0\n// ^0.0.1 --> >=0.0.1 <0.0.2-0\n// ^0.1.0 --> >=0.1.0 <0.2.0-0\nconst replaceCarets = (comp, options) => {\n return comp\n .trim()\n .split(/\\s+/)\n .map((c) => replaceCaret(c, options))\n .join(' ')\n}\n\nconst replaceCaret = (comp, options) => {\n debug('caret', comp, options)\n const r = options.loose ? re[t.CARETLOOSE] : re[t.CARET]\n const z = options.includePrerelease ? '-0' : ''\n return comp.replace(r, (_, M, m, p, pr) => {\n debug('caret', comp, _, M, m, p, pr)\n let ret\n\n if (isX(M)) {\n ret = ''\n } else if (isX(m)) {\n ret = `>=${M}.0.0${z} <${+M + 1}.0.0-0`\n } else if (isX(p)) {\n if (M === '0') {\n ret = `>=${M}.${m}.0${z} <${M}.${+m + 1}.0-0`\n } else {\n ret = `>=${M}.${m}.0${z} <${+M + 1}.0.0-0`\n }\n } else if (pr) {\n debug('replaceCaret pr', pr)\n if (M === '0') {\n if (m === '0') {\n ret = `>=${M}.${m}.${p}-${pr\n } <${M}.${m}.${+p + 1}-0`\n } else {\n ret = `>=${M}.${m}.${p}-${pr\n } <${M}.${+m + 1}.0-0`\n }\n } else {\n ret = `>=${M}.${m}.${p}-${pr\n } <${+M + 1}.0.0-0`\n }\n } else {\n debug('no pr')\n if (M === '0') {\n if (m === '0') {\n ret = `>=${M}.${m}.${p\n }${z} <${M}.${m}.${+p + 1}-0`\n } else {\n ret = `>=${M}.${m}.${p\n }${z} <${M}.${+m + 1}.0-0`\n }\n } else {\n ret = `>=${M}.${m}.${p\n } <${+M + 1}.0.0-0`\n }\n }\n\n debug('caret return', ret)\n return ret\n })\n}\n\nconst replaceXRanges = (comp, options) => {\n debug('replaceXRanges', comp, options)\n return comp\n .split(/\\s+/)\n .map((c) => replaceXRange(c, options))\n .join(' ')\n}\n\nconst replaceXRange = (comp, options) => {\n comp = comp.trim()\n const r = options.loose ? re[t.XRANGELOOSE] : re[t.XRANGE]\n return comp.replace(r, (ret, gtlt, M, m, p, pr) => {\n debug('xRange', comp, ret, gtlt, M, m, p, pr)\n const xM = isX(M)\n const xm = xM || isX(m)\n const xp = xm || isX(p)\n const anyX = xp\n\n if (gtlt === '=' && anyX) {\n gtlt = ''\n }\n\n // if we're including prereleases in the match, then we need\n // to fix this to -0, the lowest possible prerelease value\n pr = options.includePrerelease ? '-0' : ''\n\n if (xM) {\n if (gtlt === '>' || gtlt === '<') {\n // nothing is allowed\n ret = '<0.0.0-0'\n } else {\n // nothing is forbidden\n ret = '*'\n }\n } else if (gtlt && anyX) {\n // we know patch is an x, because we have any x at all.\n // replace X with 0\n if (xm) {\n m = 0\n }\n p = 0\n\n if (gtlt === '>') {\n // >1 => >=2.0.0\n // >1.2 => >=1.3.0\n gtlt = '>='\n if (xm) {\n M = +M + 1\n m = 0\n p = 0\n } else {\n m = +m + 1\n p = 0\n }\n } else if (gtlt === '<=') {\n // <=0.7.x is actually <0.8.0, since any 0.7.x should\n // pass. Similarly, <=7.x is actually <8.0.0, etc.\n gtlt = '<'\n if (xm) {\n M = +M + 1\n } else {\n m = +m + 1\n }\n }\n\n if (gtlt === '<') {\n pr = '-0'\n }\n\n ret = `${gtlt + M}.${m}.${p}${pr}`\n } else if (xm) {\n ret = `>=${M}.0.0${pr} <${+M + 1}.0.0-0`\n } else if (xp) {\n ret = `>=${M}.${m}.0${pr\n } <${M}.${+m + 1}.0-0`\n }\n\n debug('xRange return', ret)\n\n return ret\n })\n}\n\n// Because * is AND-ed with everything else in the comparator,\n// and '' means \"any version\", just remove the *s entirely.\nconst replaceStars = (comp, options) => {\n debug('replaceStars', comp, options)\n // Looseness is ignored here. star is always as loose as it gets!\n return comp\n .trim()\n .replace(re[t.STAR], '')\n}\n\nconst replaceGTE0 = (comp, options) => {\n debug('replaceGTE0', comp, options)\n return comp\n .trim()\n .replace(re[options.includePrerelease ? t.GTE0PRE : t.GTE0], '')\n}\n\n// This function is passed to string.replace(re[t.HYPHENRANGE])\n// M, m, patch, prerelease, build\n// 1.2 - 3.4.5 => >=1.2.0 <=3.4.5\n// 1.2.3 - 3.4 => >=1.2.0 <3.5.0-0 Any 3.4.x will do\n// 1.2 - 3.4 => >=1.2.0 <3.5.0-0\n// TODO build?\nconst hyphenReplace = incPr => ($0,\n from, fM, fm, fp, fpr, fb,\n to, tM, tm, tp, tpr) => {\n if (isX(fM)) {\n from = ''\n } else if (isX(fm)) {\n from = `>=${fM}.0.0${incPr ? '-0' : ''}`\n } else if (isX(fp)) {\n from = `>=${fM}.${fm}.0${incPr ? '-0' : ''}`\n } else if (fpr) {\n from = `>=${from}`\n } else {\n from = `>=${from}${incPr ? '-0' : ''}`\n }\n\n if (isX(tM)) {\n to = ''\n } else if (isX(tm)) {\n to = `<${+tM + 1}.0.0-0`\n } else if (isX(tp)) {\n to = `<${tM}.${+tm + 1}.0-0`\n } else if (tpr) {\n to = `<=${tM}.${tm}.${tp}-${tpr}`\n } else if (incPr) {\n to = `<${tM}.${tm}.${+tp + 1}-0`\n } else {\n to = `<=${to}`\n }\n\n return `${from} ${to}`.trim()\n}\n\nconst testSet = (set, version, options) => {\n for (let i = 0; i < set.length; i++) {\n if (!set[i].test(version)) {\n return false\n }\n }\n\n if (version.prerelease.length && !options.includePrerelease) {\n // Find the set of versions that are allowed to have prereleases\n // For example, ^1.2.3-pr.1 desugars to >=1.2.3-pr.1 <2.0.0\n // That should allow `1.2.3-pr.2` to pass.\n // However, `1.2.4-alpha.notready` should NOT be allowed,\n // even though it's within the range set by the comparators.\n for (let i = 0; i < set.length; i++) {\n debug(set[i].semver)\n if (set[i].semver === Comparator.ANY) {\n continue\n }\n\n if (set[i].semver.prerelease.length > 0) {\n const allowed = set[i].semver\n if (allowed.major === version.major &&\n allowed.minor === version.minor &&\n allowed.patch === version.patch) {\n return true\n }\n }\n }\n\n // Version has a -pre, but it's not one of the ones we like.\n return false\n }\n\n return true\n}\n","const debug = require('../internal/debug')\nconst { MAX_LENGTH, MAX_SAFE_INTEGER } = require('../internal/constants')\nconst { safeRe: re, t } = require('../internal/re')\n\nconst parseOptions = require('../internal/parse-options')\nconst { compareIdentifiers } = require('../internal/identifiers')\nclass SemVer {\n constructor (version, options) {\n options = parseOptions(options)\n\n if (version instanceof SemVer) {\n if (version.loose === !!options.loose &&\n version.includePrerelease === !!options.includePrerelease) {\n return version\n } else {\n version = version.version\n }\n } else if (typeof version !== 'string') {\n throw new TypeError(`Invalid version. Must be a string. Got type \"${typeof version}\".`)\n }\n\n if (version.length > MAX_LENGTH) {\n throw new TypeError(\n `version is longer than ${MAX_LENGTH} characters`\n )\n }\n\n debug('SemVer', version, options)\n this.options = options\n this.loose = !!options.loose\n // this isn't actually relevant for versions, but keep it so that we\n // don't run into trouble passing this.options around.\n this.includePrerelease = !!options.includePrerelease\n\n const m = version.trim().match(options.loose ? re[t.LOOSE] : re[t.FULL])\n\n if (!m) {\n throw new TypeError(`Invalid Version: ${version}`)\n }\n\n this.raw = version\n\n // these are actually numbers\n this.major = +m[1]\n this.minor = +m[2]\n this.patch = +m[3]\n\n if (this.major > MAX_SAFE_INTEGER || this.major < 0) {\n throw new TypeError('Invalid major version')\n }\n\n if (this.minor > MAX_SAFE_INTEGER || this.minor < 0) {\n throw new TypeError('Invalid minor version')\n }\n\n if (this.patch > MAX_SAFE_INTEGER || this.patch < 0) {\n throw new TypeError('Invalid patch version')\n }\n\n // numberify any prerelease numeric ids\n if (!m[4]) {\n this.prerelease = []\n } else {\n this.prerelease = m[4].split('.').map((id) => {\n if (/^[0-9]+$/.test(id)) {\n const num = +id\n if (num >= 0 && num < MAX_SAFE_INTEGER) {\n return num\n }\n }\n return id\n })\n }\n\n this.build = m[5] ? m[5].split('.') : []\n this.format()\n }\n\n format () {\n this.version = `${this.major}.${this.minor}.${this.patch}`\n if (this.prerelease.length) {\n this.version += `-${this.prerelease.join('.')}`\n }\n return this.version\n }\n\n toString () {\n return this.version\n }\n\n compare (other) {\n debug('SemVer.compare', this.version, this.options, other)\n if (!(other instanceof SemVer)) {\n if (typeof other === 'string' && other === this.version) {\n return 0\n }\n other = new SemVer(other, this.options)\n }\n\n if (other.version === this.version) {\n return 0\n }\n\n return this.compareMain(other) || this.comparePre(other)\n }\n\n compareMain (other) {\n if (!(other instanceof SemVer)) {\n other = new SemVer(other, this.options)\n }\n\n return (\n compareIdentifiers(this.major, other.major) ||\n compareIdentifiers(this.minor, other.minor) ||\n compareIdentifiers(this.patch, other.patch)\n )\n }\n\n comparePre (other) {\n if (!(other instanceof SemVer)) {\n other = new SemVer(other, this.options)\n }\n\n // NOT having a prerelease is > having one\n if (this.prerelease.length && !other.prerelease.length) {\n return -1\n } else if (!this.prerelease.length && other.prerelease.length) {\n return 1\n } else if (!this.prerelease.length && !other.prerelease.length) {\n return 0\n }\n\n let i = 0\n do {\n const a = this.prerelease[i]\n const b = other.prerelease[i]\n debug('prerelease compare', i, a, b)\n if (a === undefined && b === undefined) {\n return 0\n } else if (b === undefined) {\n return 1\n } else if (a === undefined) {\n return -1\n } else if (a === b) {\n continue\n } else {\n return compareIdentifiers(a, b)\n }\n } while (++i)\n }\n\n compareBuild (other) {\n if (!(other instanceof SemVer)) {\n other = new SemVer(other, this.options)\n }\n\n let i = 0\n do {\n const a = this.build[i]\n const b = other.build[i]\n debug('build compare', i, a, b)\n if (a === undefined && b === undefined) {\n return 0\n } else if (b === undefined) {\n return 1\n } else if (a === undefined) {\n return -1\n } else if (a === b) {\n continue\n } else {\n return compareIdentifiers(a, b)\n }\n } while (++i)\n }\n\n // preminor will bump the version up to the next minor release, and immediately\n // down to pre-release. premajor and prepatch work the same way.\n inc (release, identifier, identifierBase) {\n switch (release) {\n case 'premajor':\n this.prerelease.length = 0\n this.patch = 0\n this.minor = 0\n this.major++\n this.inc('pre', identifier, identifierBase)\n break\n case 'preminor':\n this.prerelease.length = 0\n this.patch = 0\n this.minor++\n this.inc('pre', identifier, identifierBase)\n break\n case 'prepatch':\n // If this is already a prerelease, it will bump to the next version\n // drop any prereleases that might already exist, since they are not\n // relevant at this point.\n this.prerelease.length = 0\n this.inc('patch', identifier, identifierBase)\n this.inc('pre', identifier, identifierBase)\n break\n // If the input is a non-prerelease version, this acts the same as\n // prepatch.\n case 'prerelease':\n if (this.prerelease.length === 0) {\n this.inc('patch', identifier, identifierBase)\n }\n this.inc('pre', identifier, identifierBase)\n break\n\n case 'major':\n // If this is a pre-major version, bump up to the same major version.\n // Otherwise increment major.\n // 1.0.0-5 bumps to 1.0.0\n // 1.1.0 bumps to 2.0.0\n if (\n this.minor !== 0 ||\n this.patch !== 0 ||\n this.prerelease.length === 0\n ) {\n this.major++\n }\n this.minor = 0\n this.patch = 0\n this.prerelease = []\n break\n case 'minor':\n // If this is a pre-minor version, bump up to the same minor version.\n // Otherwise increment minor.\n // 1.2.0-5 bumps to 1.2.0\n // 1.2.1 bumps to 1.3.0\n if (this.patch !== 0 || this.prerelease.length === 0) {\n this.minor++\n }\n this.patch = 0\n this.prerelease = []\n break\n case 'patch':\n // If this is not a pre-release version, it will increment the patch.\n // If it is a pre-release it will bump up to the same patch version.\n // 1.2.0-5 patches to 1.2.0\n // 1.2.0 patches to 1.2.1\n if (this.prerelease.length === 0) {\n this.patch++\n }\n this.prerelease = []\n break\n // This probably shouldn't be used publicly.\n // 1.0.0 'pre' would become 1.0.0-0 which is the wrong direction.\n case 'pre': {\n const base = Number(identifierBase) ? 1 : 0\n\n if (!identifier && identifierBase === false) {\n throw new Error('invalid increment argument: identifier is empty')\n }\n\n if (this.prerelease.length === 0) {\n this.prerelease = [base]\n } else {\n let i = this.prerelease.length\n while (--i >= 0) {\n if (typeof this.prerelease[i] === 'number') {\n this.prerelease[i]++\n i = -2\n }\n }\n if (i === -1) {\n // didn't increment anything\n if (identifier === this.prerelease.join('.') && identifierBase === false) {\n throw new Error('invalid increment argument: identifier already exists')\n }\n this.prerelease.push(base)\n }\n }\n if (identifier) {\n // 1.2.0-beta.1 bumps to 1.2.0-beta.2,\n // 1.2.0-beta.fooblz or 1.2.0-beta bumps to 1.2.0-beta.0\n let prerelease = [identifier, base]\n if (identifierBase === false) {\n prerelease = [identifier]\n }\n if (compareIdentifiers(this.prerelease[0], identifier) === 0) {\n if (isNaN(this.prerelease[1])) {\n this.prerelease = prerelease\n }\n } else {\n this.prerelease = prerelease\n }\n }\n break\n }\n default:\n throw new Error(`invalid increment argument: ${release}`)\n }\n this.raw = this.format()\n if (this.build.length) {\n this.raw += `+${this.build.join('.')}`\n }\n return this\n }\n}\n\nmodule.exports = SemVer\n","const parse = require('./parse')\nconst clean = (version, options) => {\n const s = parse(version.trim().replace(/^[=v]+/, ''), options)\n return s ? s.version : null\n}\nmodule.exports = clean\n","const eq = require('./eq')\nconst neq = require('./neq')\nconst gt = require('./gt')\nconst gte = require('./gte')\nconst lt = require('./lt')\nconst lte = require('./lte')\n\nconst cmp = (a, op, b, loose) => {\n switch (op) {\n case '===':\n if (typeof a === 'object') {\n a = a.version\n }\n if (typeof b === 'object') {\n b = b.version\n }\n return a === b\n\n case '!==':\n if (typeof a === 'object') {\n a = a.version\n }\n if (typeof b === 'object') {\n b = b.version\n }\n return a !== b\n\n case '':\n case '=':\n case '==':\n return eq(a, b, loose)\n\n case '!=':\n return neq(a, b, loose)\n\n case '>':\n return gt(a, b, loose)\n\n case '>=':\n return gte(a, b, loose)\n\n case '<':\n return lt(a, b, loose)\n\n case '<=':\n return lte(a, b, loose)\n\n default:\n throw new TypeError(`Invalid operator: ${op}`)\n }\n}\nmodule.exports = cmp\n","const SemVer = require('../classes/semver')\nconst parse = require('./parse')\nconst { safeRe: re, t } = require('../internal/re')\n\nconst coerce = (version, options) => {\n if (version instanceof SemVer) {\n return version\n }\n\n if (typeof version === 'number') {\n version = String(version)\n }\n\n if (typeof version !== 'string') {\n return null\n }\n\n options = options || {}\n\n let match = null\n if (!options.rtl) {\n match = version.match(options.includePrerelease ? re[t.COERCEFULL] : re[t.COERCE])\n } else {\n // Find the right-most coercible string that does not share\n // a terminus with a more left-ward coercible string.\n // Eg, '1.2.3.4' wants to coerce '2.3.4', not '3.4' or '4'\n // With includePrerelease option set, '1.2.3.4-rc' wants to coerce '2.3.4-rc', not '2.3.4'\n //\n // Walk through the string checking with a /g regexp\n // Manually set the index so as to pick up overlapping matches.\n // Stop when we get a match that ends at the string end, since no\n // coercible string can be more right-ward without the same terminus.\n const coerceRtlRegex = options.includePrerelease ? re[t.COERCERTLFULL] : re[t.COERCERTL]\n let next\n while ((next = coerceRtlRegex.exec(version)) &&\n (!match || match.index + match[0].length !== version.length)\n ) {\n if (!match ||\n next.index + next[0].length !== match.index + match[0].length) {\n match = next\n }\n coerceRtlRegex.lastIndex = next.index + next[1].length + next[2].length\n }\n // leave it in a clean state\n coerceRtlRegex.lastIndex = -1\n }\n\n if (match === null) {\n return null\n }\n\n const major = match[2]\n const minor = match[3] || '0'\n const patch = match[4] || '0'\n const prerelease = options.includePrerelease && match[5] ? `-${match[5]}` : ''\n const build = options.includePrerelease && match[6] ? `+${match[6]}` : ''\n\n return parse(`${major}.${minor}.${patch}${prerelease}${build}`, options)\n}\nmodule.exports = coerce\n","const SemVer = require('../classes/semver')\nconst compareBuild = (a, b, loose) => {\n const versionA = new SemVer(a, loose)\n const versionB = new SemVer(b, loose)\n return versionA.compare(versionB) || versionA.compareBuild(versionB)\n}\nmodule.exports = compareBuild\n","const compare = require('./compare')\nconst compareLoose = (a, b) => compare(a, b, true)\nmodule.exports = compareLoose\n","const SemVer = require('../classes/semver')\nconst compare = (a, b, loose) =>\n new SemVer(a, loose).compare(new SemVer(b, loose))\n\nmodule.exports = compare\n","const parse = require('./parse.js')\n\nconst diff = (version1, version2) => {\n const v1 = parse(version1, null, true)\n const v2 = parse(version2, null, true)\n const comparison = v1.compare(v2)\n\n if (comparison === 0) {\n return null\n }\n\n const v1Higher = comparison > 0\n const highVersion = v1Higher ? v1 : v2\n const lowVersion = v1Higher ? v2 : v1\n const highHasPre = !!highVersion.prerelease.length\n const lowHasPre = !!lowVersion.prerelease.length\n\n if (lowHasPre && !highHasPre) {\n // Going from prerelease -> no prerelease requires some special casing\n\n // If the low version has only a major, then it will always be a major\n // Some examples:\n // 1.0.0-1 -> 1.0.0\n // 1.0.0-1 -> 1.1.1\n // 1.0.0-1 -> 2.0.0\n if (!lowVersion.patch && !lowVersion.minor) {\n return 'major'\n }\n\n // Otherwise it can be determined by checking the high version\n\n if (highVersion.patch) {\n // anything higher than a patch bump would result in the wrong version\n return 'patch'\n }\n\n if (highVersion.minor) {\n // anything higher than a minor bump would result in the wrong version\n return 'minor'\n }\n\n // bumping major/minor/patch all have same result\n return 'major'\n }\n\n // add the `pre` prefix if we are going to a prerelease version\n const prefix = highHasPre ? 'pre' : ''\n\n if (v1.major !== v2.major) {\n return prefix + 'major'\n }\n\n if (v1.minor !== v2.minor) {\n return prefix + 'minor'\n }\n\n if (v1.patch !== v2.patch) {\n return prefix + 'patch'\n }\n\n // high and low are preleases\n return 'prerelease'\n}\n\nmodule.exports = diff\n","const compare = require('./compare')\nconst eq = (a, b, loose) => compare(a, b, loose) === 0\nmodule.exports = eq\n","const compare = require('./compare')\nconst gt = (a, b, loose) => compare(a, b, loose) > 0\nmodule.exports = gt\n","const compare = require('./compare')\nconst gte = (a, b, loose) => compare(a, b, loose) >= 0\nmodule.exports = gte\n","const SemVer = require('../classes/semver')\n\nconst inc = (version, release, options, identifier, identifierBase) => {\n if (typeof (options) === 'string') {\n identifierBase = identifier\n identifier = options\n options = undefined\n }\n\n try {\n return new SemVer(\n version instanceof SemVer ? version.version : version,\n options\n ).inc(release, identifier, identifierBase).version\n } catch (er) {\n return null\n }\n}\nmodule.exports = inc\n","const compare = require('./compare')\nconst lt = (a, b, loose) => compare(a, b, loose) < 0\nmodule.exports = lt\n","const compare = require('./compare')\nconst lte = (a, b, loose) => compare(a, b, loose) <= 0\nmodule.exports = lte\n","const SemVer = require('../classes/semver')\nconst major = (a, loose) => new SemVer(a, loose).major\nmodule.exports = major\n","const SemVer = require('../classes/semver')\nconst minor = (a, loose) => new SemVer(a, loose).minor\nmodule.exports = minor\n","const compare = require('./compare')\nconst neq = (a, b, loose) => compare(a, b, loose) !== 0\nmodule.exports = neq\n","const SemVer = require('../classes/semver')\nconst parse = (version, options, throwErrors = false) => {\n if (version instanceof SemVer) {\n return version\n }\n try {\n return new SemVer(version, options)\n } catch (er) {\n if (!throwErrors) {\n return null\n }\n throw er\n }\n}\n\nmodule.exports = parse\n","const SemVer = require('../classes/semver')\nconst patch = (a, loose) => new SemVer(a, loose).patch\nmodule.exports = patch\n","const parse = require('./parse')\nconst prerelease = (version, options) => {\n const parsed = parse(version, options)\n return (parsed && parsed.prerelease.length) ? parsed.prerelease : null\n}\nmodule.exports = prerelease\n","const compare = require('./compare')\nconst rcompare = (a, b, loose) => compare(b, a, loose)\nmodule.exports = rcompare\n","const compareBuild = require('./compare-build')\nconst rsort = (list, loose) => list.sort((a, b) => compareBuild(b, a, loose))\nmodule.exports = rsort\n","const Range = require('../classes/range')\nconst satisfies = (version, range, options) => {\n try {\n range = new Range(range, options)\n } catch (er) {\n return false\n }\n return range.test(version)\n}\nmodule.exports = satisfies\n","const compareBuild = require('./compare-build')\nconst sort = (list, loose) => list.sort((a, b) => compareBuild(a, b, loose))\nmodule.exports = sort\n","const parse = require('./parse')\nconst valid = (version, options) => {\n const v = parse(version, options)\n return v ? v.version : null\n}\nmodule.exports = valid\n","// just pre-load all the stuff that index.js lazily exports\nconst internalRe = require('./internal/re')\nconst constants = require('./internal/constants')\nconst SemVer = require('./classes/semver')\nconst identifiers = require('./internal/identifiers')\nconst parse = require('./functions/parse')\nconst valid = require('./functions/valid')\nconst clean = require('./functions/clean')\nconst inc = require('./functions/inc')\nconst diff = require('./functions/diff')\nconst major = require('./functions/major')\nconst minor = require('./functions/minor')\nconst patch = require('./functions/patch')\nconst prerelease = require('./functions/prerelease')\nconst compare = require('./functions/compare')\nconst rcompare = require('./functions/rcompare')\nconst compareLoose = require('./functions/compare-loose')\nconst compareBuild = require('./functions/compare-build')\nconst sort = require('./functions/sort')\nconst rsort = require('./functions/rsort')\nconst gt = require('./functions/gt')\nconst lt = require('./functions/lt')\nconst eq = require('./functions/eq')\nconst neq = require('./functions/neq')\nconst gte = require('./functions/gte')\nconst lte = require('./functions/lte')\nconst cmp = require('./functions/cmp')\nconst coerce = require('./functions/coerce')\nconst Comparator = require('./classes/comparator')\nconst Range = require('./classes/range')\nconst satisfies = require('./functions/satisfies')\nconst toComparators = require('./ranges/to-comparators')\nconst maxSatisfying = require('./ranges/max-satisfying')\nconst minSatisfying = require('./ranges/min-satisfying')\nconst minVersion = require('./ranges/min-version')\nconst validRange = require('./ranges/valid')\nconst outside = require('./ranges/outside')\nconst gtr = require('./ranges/gtr')\nconst ltr = require('./ranges/ltr')\nconst intersects = require('./ranges/intersects')\nconst simplifyRange = require('./ranges/simplify')\nconst subset = require('./ranges/subset')\nmodule.exports = {\n parse,\n valid,\n clean,\n inc,\n diff,\n major,\n minor,\n patch,\n prerelease,\n compare,\n rcompare,\n compareLoose,\n compareBuild,\n sort,\n rsort,\n gt,\n lt,\n eq,\n neq,\n gte,\n lte,\n cmp,\n coerce,\n Comparator,\n Range,\n satisfies,\n toComparators,\n maxSatisfying,\n minSatisfying,\n minVersion,\n validRange,\n outside,\n gtr,\n ltr,\n intersects,\n simplifyRange,\n subset,\n SemVer,\n re: internalRe.re,\n src: internalRe.src,\n tokens: internalRe.t,\n SEMVER_SPEC_VERSION: constants.SEMVER_SPEC_VERSION,\n RELEASE_TYPES: constants.RELEASE_TYPES,\n compareIdentifiers: identifiers.compareIdentifiers,\n rcompareIdentifiers: identifiers.rcompareIdentifiers,\n}\n","// Note: this is the semver.org version of the spec that it implements\n// Not necessarily the package version of this code.\nconst SEMVER_SPEC_VERSION = '2.0.0'\n\nconst MAX_LENGTH = 256\nconst MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER ||\n/* istanbul ignore next */ 9007199254740991\n\n// Max safe segment length for coercion.\nconst MAX_SAFE_COMPONENT_LENGTH = 16\n\n// Max safe length for a build identifier. The max length minus 6 characters for\n// the shortest version with a build 0.0.0+BUILD.\nconst MAX_SAFE_BUILD_LENGTH = MAX_LENGTH - 6\n\nconst RELEASE_TYPES = [\n 'major',\n 'premajor',\n 'minor',\n 'preminor',\n 'patch',\n 'prepatch',\n 'prerelease',\n]\n\nmodule.exports = {\n MAX_LENGTH,\n MAX_SAFE_COMPONENT_LENGTH,\n MAX_SAFE_BUILD_LENGTH,\n MAX_SAFE_INTEGER,\n RELEASE_TYPES,\n SEMVER_SPEC_VERSION,\n FLAG_INCLUDE_PRERELEASE: 0b001,\n FLAG_LOOSE: 0b010,\n}\n","const debug = (\n typeof process === 'object' &&\n process.env &&\n process.env.NODE_DEBUG &&\n /\\bsemver\\b/i.test(process.env.NODE_DEBUG)\n) ? (...args) => console.error('SEMVER', ...args)\n : () => {}\n\nmodule.exports = debug\n","const numeric = /^[0-9]+$/\nconst compareIdentifiers = (a, b) => {\n const anum = numeric.test(a)\n const bnum = numeric.test(b)\n\n if (anum && bnum) {\n a = +a\n b = +b\n }\n\n return a === b ? 0\n : (anum && !bnum) ? -1\n : (bnum && !anum) ? 1\n : a < b ? -1\n : 1\n}\n\nconst rcompareIdentifiers = (a, b) => compareIdentifiers(b, a)\n\nmodule.exports = {\n compareIdentifiers,\n rcompareIdentifiers,\n}\n","class LRUCache {\n constructor () {\n this.max = 1000\n this.map = new Map()\n }\n\n get (key) {\n const value = this.map.get(key)\n if (value === undefined) {\n return undefined\n } else {\n // Remove the key from the map and add it to the end\n this.map.delete(key)\n this.map.set(key, value)\n return value\n }\n }\n\n delete (key) {\n return this.map.delete(key)\n }\n\n set (key, value) {\n const deleted = this.delete(key)\n\n if (!deleted && value !== undefined) {\n // If cache is full, delete the least recently used item\n if (this.map.size >= this.max) {\n const firstKey = this.map.keys().next().value\n this.delete(firstKey)\n }\n\n this.map.set(key, value)\n }\n\n return this\n }\n}\n\nmodule.exports = LRUCache\n","// parse out just the options we care about\nconst looseOption = Object.freeze({ loose: true })\nconst emptyOpts = Object.freeze({ })\nconst parseOptions = options => {\n if (!options) {\n return emptyOpts\n }\n\n if (typeof options !== 'object') {\n return looseOption\n }\n\n return options\n}\nmodule.exports = parseOptions\n","const {\n MAX_SAFE_COMPONENT_LENGTH,\n MAX_SAFE_BUILD_LENGTH,\n MAX_LENGTH,\n} = require('./constants')\nconst debug = require('./debug')\nexports = module.exports = {}\n\n// The actual regexps go on exports.re\nconst re = exports.re = []\nconst safeRe = exports.safeRe = []\nconst src = exports.src = []\nconst t = exports.t = {}\nlet R = 0\n\nconst LETTERDASHNUMBER = '[a-zA-Z0-9-]'\n\n// Replace some greedy regex tokens to prevent regex dos issues. These regex are\n// used internally via the safeRe object since all inputs in this library get\n// normalized first to trim and collapse all extra whitespace. The original\n// regexes are exported for userland consumption and lower level usage. A\n// future breaking change could export the safer regex only with a note that\n// all input should have extra whitespace removed.\nconst safeRegexReplacements = [\n ['\\\\s', 1],\n ['\\\\d', MAX_LENGTH],\n [LETTERDASHNUMBER, MAX_SAFE_BUILD_LENGTH],\n]\n\nconst makeSafeRegex = (value) => {\n for (const [token, max] of safeRegexReplacements) {\n value = value\n .split(`${token}*`).join(`${token}{0,${max}}`)\n .split(`${token}+`).join(`${token}{1,${max}}`)\n }\n return value\n}\n\nconst createToken = (name, value, isGlobal) => {\n const safe = makeSafeRegex(value)\n const index = R++\n debug(name, index, value)\n t[name] = index\n src[index] = value\n re[index] = new RegExp(value, isGlobal ? 'g' : undefined)\n safeRe[index] = new RegExp(safe, isGlobal ? 'g' : undefined)\n}\n\n// The following Regular Expressions can be used for tokenizing,\n// validating, and parsing SemVer version strings.\n\n// ## Numeric Identifier\n// A single `0`, or a non-zero digit followed by zero or more digits.\n\ncreateToken('NUMERICIDENTIFIER', '0|[1-9]\\\\d*')\ncreateToken('NUMERICIDENTIFIERLOOSE', '\\\\d+')\n\n// ## Non-numeric Identifier\n// Zero or more digits, followed by a letter or hyphen, and then zero or\n// more letters, digits, or hyphens.\n\ncreateToken('NONNUMERICIDENTIFIER', `\\\\d*[a-zA-Z-]${LETTERDASHNUMBER}*`)\n\n// ## Main Version\n// Three dot-separated numeric identifiers.\n\ncreateToken('MAINVERSION', `(${src[t.NUMERICIDENTIFIER]})\\\\.` +\n `(${src[t.NUMERICIDENTIFIER]})\\\\.` +\n `(${src[t.NUMERICIDENTIFIER]})`)\n\ncreateToken('MAINVERSIONLOOSE', `(${src[t.NUMERICIDENTIFIERLOOSE]})\\\\.` +\n `(${src[t.NUMERICIDENTIFIERLOOSE]})\\\\.` +\n `(${src[t.NUMERICIDENTIFIERLOOSE]})`)\n\n// ## Pre-release Version Identifier\n// A numeric identifier, or a non-numeric identifier.\n\ncreateToken('PRERELEASEIDENTIFIER', `(?:${src[t.NUMERICIDENTIFIER]\n}|${src[t.NONNUMERICIDENTIFIER]})`)\n\ncreateToken('PRERELEASEIDENTIFIERLOOSE', `(?:${src[t.NUMERICIDENTIFIERLOOSE]\n}|${src[t.NONNUMERICIDENTIFIER]})`)\n\n// ## Pre-release Version\n// Hyphen, followed by one or more dot-separated pre-release version\n// identifiers.\n\ncreateToken('PRERELEASE', `(?:-(${src[t.PRERELEASEIDENTIFIER]\n}(?:\\\\.${src[t.PRERELEASEIDENTIFIER]})*))`)\n\ncreateToken('PRERELEASELOOSE', `(?:-?(${src[t.PRERELEASEIDENTIFIERLOOSE]\n}(?:\\\\.${src[t.PRERELEASEIDENTIFIERLOOSE]})*))`)\n\n// ## Build Metadata Identifier\n// Any combination of digits, letters, or hyphens.\n\ncreateToken('BUILDIDENTIFIER', `${LETTERDASHNUMBER}+`)\n\n// ## Build Metadata\n// Plus sign, followed by one or more period-separated build metadata\n// identifiers.\n\ncreateToken('BUILD', `(?:\\\\+(${src[t.BUILDIDENTIFIER]\n}(?:\\\\.${src[t.BUILDIDENTIFIER]})*))`)\n\n// ## Full Version String\n// A main version, followed optionally by a pre-release version and\n// build metadata.\n\n// Note that the only major, minor, patch, and pre-release sections of\n// the version string are capturing groups. The build metadata is not a\n// capturing group, because it should not ever be used in version\n// comparison.\n\ncreateToken('FULLPLAIN', `v?${src[t.MAINVERSION]\n}${src[t.PRERELEASE]}?${\n src[t.BUILD]}?`)\n\ncreateToken('FULL', `^${src[t.FULLPLAIN]}$`)\n\n// like full, but allows v1.2.3 and =1.2.3, which people do sometimes.\n// also, 1.0.0alpha1 (prerelease without the hyphen) which is pretty\n// common in the npm registry.\ncreateToken('LOOSEPLAIN', `[v=\\\\s]*${src[t.MAINVERSIONLOOSE]\n}${src[t.PRERELEASELOOSE]}?${\n src[t.BUILD]}?`)\n\ncreateToken('LOOSE', `^${src[t.LOOSEPLAIN]}$`)\n\ncreateToken('GTLT', '((?:<|>)?=?)')\n\n// Something like \"2.*\" or \"1.2.x\".\n// Note that \"x.x\" is a valid xRange identifer, meaning \"any version\"\n// Only the first item is strictly required.\ncreateToken('XRANGEIDENTIFIERLOOSE', `${src[t.NUMERICIDENTIFIERLOOSE]}|x|X|\\\\*`)\ncreateToken('XRANGEIDENTIFIER', `${src[t.NUMERICIDENTIFIER]}|x|X|\\\\*`)\n\ncreateToken('XRANGEPLAIN', `[v=\\\\s]*(${src[t.XRANGEIDENTIFIER]})` +\n `(?:\\\\.(${src[t.XRANGEIDENTIFIER]})` +\n `(?:\\\\.(${src[t.XRANGEIDENTIFIER]})` +\n `(?:${src[t.PRERELEASE]})?${\n src[t.BUILD]}?` +\n `)?)?`)\n\ncreateToken('XRANGEPLAINLOOSE', `[v=\\\\s]*(${src[t.XRANGEIDENTIFIERLOOSE]})` +\n `(?:\\\\.(${src[t.XRANGEIDENTIFIERLOOSE]})` +\n `(?:\\\\.(${src[t.XRANGEIDENTIFIERLOOSE]})` +\n `(?:${src[t.PRERELEASELOOSE]})?${\n src[t.BUILD]}?` +\n `)?)?`)\n\ncreateToken('XRANGE', `^${src[t.GTLT]}\\\\s*${src[t.XRANGEPLAIN]}$`)\ncreateToken('XRANGELOOSE', `^${src[t.GTLT]}\\\\s*${src[t.XRANGEPLAINLOOSE]}$`)\n\n// Coercion.\n// Extract anything that could conceivably be a part of a valid semver\ncreateToken('COERCEPLAIN', `${'(^|[^\\\\d])' +\n '(\\\\d{1,'}${MAX_SAFE_COMPONENT_LENGTH}})` +\n `(?:\\\\.(\\\\d{1,${MAX_SAFE_COMPONENT_LENGTH}}))?` +\n `(?:\\\\.(\\\\d{1,${MAX_SAFE_COMPONENT_LENGTH}}))?`)\ncreateToken('COERCE', `${src[t.COERCEPLAIN]}(?:$|[^\\\\d])`)\ncreateToken('COERCEFULL', src[t.COERCEPLAIN] +\n `(?:${src[t.PRERELEASE]})?` +\n `(?:${src[t.BUILD]})?` +\n `(?:$|[^\\\\d])`)\ncreateToken('COERCERTL', src[t.COERCE], true)\ncreateToken('COERCERTLFULL', src[t.COERCEFULL], true)\n\n// Tilde ranges.\n// Meaning is \"reasonably at or greater than\"\ncreateToken('LONETILDE', '(?:~>?)')\n\ncreateToken('TILDETRIM', `(\\\\s*)${src[t.LONETILDE]}\\\\s+`, true)\nexports.tildeTrimReplace = '$1~'\n\ncreateToken('TILDE', `^${src[t.LONETILDE]}${src[t.XRANGEPLAIN]}$`)\ncreateToken('TILDELOOSE', `^${src[t.LONETILDE]}${src[t.XRANGEPLAINLOOSE]}$`)\n\n// Caret ranges.\n// Meaning is \"at least and backwards compatible with\"\ncreateToken('LONECARET', '(?:\\\\^)')\n\ncreateToken('CARETTRIM', `(\\\\s*)${src[t.LONECARET]}\\\\s+`, true)\nexports.caretTrimReplace = '$1^'\n\ncreateToken('CARET', `^${src[t.LONECARET]}${src[t.XRANGEPLAIN]}$`)\ncreateToken('CARETLOOSE', `^${src[t.LONECARET]}${src[t.XRANGEPLAINLOOSE]}$`)\n\n// A simple gt/lt/eq thing, or just \"\" to indicate \"any version\"\ncreateToken('COMPARATORLOOSE', `^${src[t.GTLT]}\\\\s*(${src[t.LOOSEPLAIN]})$|^$`)\ncreateToken('COMPARATOR', `^${src[t.GTLT]}\\\\s*(${src[t.FULLPLAIN]})$|^$`)\n\n// An expression to strip any whitespace between the gtlt and the thing\n// it modifies, so that `> 1.2.3` ==> `>1.2.3`\ncreateToken('COMPARATORTRIM', `(\\\\s*)${src[t.GTLT]\n}\\\\s*(${src[t.LOOSEPLAIN]}|${src[t.XRANGEPLAIN]})`, true)\nexports.comparatorTrimReplace = '$1$2$3'\n\n// Something like `1.2.3 - 1.2.4`\n// Note that these all use the loose form, because they'll be\n// checked against either the strict or loose comparator form\n// later.\ncreateToken('HYPHENRANGE', `^\\\\s*(${src[t.XRANGEPLAIN]})` +\n `\\\\s+-\\\\s+` +\n `(${src[t.XRANGEPLAIN]})` +\n `\\\\s*$`)\n\ncreateToken('HYPHENRANGELOOSE', `^\\\\s*(${src[t.XRANGEPLAINLOOSE]})` +\n `\\\\s+-\\\\s+` +\n `(${src[t.XRANGEPLAINLOOSE]})` +\n `\\\\s*$`)\n\n// Star ranges basically just allow anything at all.\ncreateToken('STAR', '(<|>)?=?\\\\s*\\\\*')\n// >=0.0.0 is like a star\ncreateToken('GTE0', '^\\\\s*>=\\\\s*0\\\\.0\\\\.0\\\\s*$')\ncreateToken('GTE0PRE', '^\\\\s*>=\\\\s*0\\\\.0\\\\.0-0\\\\s*$')\n","// Determine if version is greater than all the versions possible in the range.\nconst outside = require('./outside')\nconst gtr = (version, range, options) => outside(version, range, '>', options)\nmodule.exports = gtr\n","const Range = require('../classes/range')\nconst intersects = (r1, r2, options) => {\n r1 = new Range(r1, options)\n r2 = new Range(r2, options)\n return r1.intersects(r2, options)\n}\nmodule.exports = intersects\n","const outside = require('./outside')\n// Determine if version is less than all the versions possible in the range\nconst ltr = (version, range, options) => outside(version, range, '<', options)\nmodule.exports = ltr\n","const SemVer = require('../classes/semver')\nconst Range = require('../classes/range')\n\nconst maxSatisfying = (versions, range, options) => {\n let max = null\n let maxSV = null\n let rangeObj = null\n try {\n rangeObj = new Range(range, options)\n } catch (er) {\n return null\n }\n versions.forEach((v) => {\n if (rangeObj.test(v)) {\n // satisfies(v, range, options)\n if (!max || maxSV.compare(v) === -1) {\n // compare(max, v, true)\n max = v\n maxSV = new SemVer(max, options)\n }\n }\n })\n return max\n}\nmodule.exports = maxSatisfying\n","const SemVer = require('../classes/semver')\nconst Range = require('../classes/range')\nconst minSatisfying = (versions, range, options) => {\n let min = null\n let minSV = null\n let rangeObj = null\n try {\n rangeObj = new Range(range, options)\n } catch (er) {\n return null\n }\n versions.forEach((v) => {\n if (rangeObj.test(v)) {\n // satisfies(v, range, options)\n if (!min || minSV.compare(v) === 1) {\n // compare(min, v, true)\n min = v\n minSV = new SemVer(min, options)\n }\n }\n })\n return min\n}\nmodule.exports = minSatisfying\n","const SemVer = require('../classes/semver')\nconst Range = require('../classes/range')\nconst gt = require('../functions/gt')\n\nconst minVersion = (range, loose) => {\n range = new Range(range, loose)\n\n let minver = new SemVer('0.0.0')\n if (range.test(minver)) {\n return minver\n }\n\n minver = new SemVer('0.0.0-0')\n if (range.test(minver)) {\n return minver\n }\n\n minver = null\n for (let i = 0; i < range.set.length; ++i) {\n const comparators = range.set[i]\n\n let setMin = null\n comparators.forEach((comparator) => {\n // Clone to avoid manipulating the comparator's semver object.\n const compver = new SemVer(comparator.semver.version)\n switch (comparator.operator) {\n case '>':\n if (compver.prerelease.length === 0) {\n compver.patch++\n } else {\n compver.prerelease.push(0)\n }\n compver.raw = compver.format()\n /* fallthrough */\n case '':\n case '>=':\n if (!setMin || gt(compver, setMin)) {\n setMin = compver\n }\n break\n case '<':\n case '<=':\n /* Ignore maximum versions */\n break\n /* istanbul ignore next */\n default:\n throw new Error(`Unexpected operation: ${comparator.operator}`)\n }\n })\n if (setMin && (!minver || gt(minver, setMin))) {\n minver = setMin\n }\n }\n\n if (minver && range.test(minver)) {\n return minver\n }\n\n return null\n}\nmodule.exports = minVersion\n","const SemVer = require('../classes/semver')\nconst Comparator = require('../classes/comparator')\nconst { ANY } = Comparator\nconst Range = require('../classes/range')\nconst satisfies = require('../functions/satisfies')\nconst gt = require('../functions/gt')\nconst lt = require('../functions/lt')\nconst lte = require('../functions/lte')\nconst gte = require('../functions/gte')\n\nconst outside = (version, range, hilo, options) => {\n version = new SemVer(version, options)\n range = new Range(range, options)\n\n let gtfn, ltefn, ltfn, comp, ecomp\n switch (hilo) {\n case '>':\n gtfn = gt\n ltefn = lte\n ltfn = lt\n comp = '>'\n ecomp = '>='\n break\n case '<':\n gtfn = lt\n ltefn = gte\n ltfn = gt\n comp = '<'\n ecomp = '<='\n break\n default:\n throw new TypeError('Must provide a hilo val of \"<\" or \">\"')\n }\n\n // If it satisfies the range it is not outside\n if (satisfies(version, range, options)) {\n return false\n }\n\n // From now on, variable terms are as if we're in \"gtr\" mode.\n // but note that everything is flipped for the \"ltr\" function.\n\n for (let i = 0; i < range.set.length; ++i) {\n const comparators = range.set[i]\n\n let high = null\n let low = null\n\n comparators.forEach((comparator) => {\n if (comparator.semver === ANY) {\n comparator = new Comparator('>=0.0.0')\n }\n high = high || comparator\n low = low || comparator\n if (gtfn(comparator.semver, high.semver, options)) {\n high = comparator\n } else if (ltfn(comparator.semver, low.semver, options)) {\n low = comparator\n }\n })\n\n // If the edge version comparator has a operator then our version\n // isn't outside it\n if (high.operator === comp || high.operator === ecomp) {\n return false\n }\n\n // If the lowest version comparator has an operator and our version\n // is less than it then it isn't higher than the range\n if ((!low.operator || low.operator === comp) &&\n ltefn(version, low.semver)) {\n return false\n } else if (low.operator === ecomp && ltfn(version, low.semver)) {\n return false\n }\n }\n return true\n}\n\nmodule.exports = outside\n","// given a set of versions and a range, create a \"simplified\" range\n// that includes the same versions that the original range does\n// If the original range is shorter than the simplified one, return that.\nconst satisfies = require('../functions/satisfies.js')\nconst compare = require('../functions/compare.js')\nmodule.exports = (versions, range, options) => {\n const set = []\n let first = null\n let prev = null\n const v = versions.sort((a, b) => compare(a, b, options))\n for (const version of v) {\n const included = satisfies(version, range, options)\n if (included) {\n prev = version\n if (!first) {\n first = version\n }\n } else {\n if (prev) {\n set.push([first, prev])\n }\n prev = null\n first = null\n }\n }\n if (first) {\n set.push([first, null])\n }\n\n const ranges = []\n for (const [min, max] of set) {\n if (min === max) {\n ranges.push(min)\n } else if (!max && min === v[0]) {\n ranges.push('*')\n } else if (!max) {\n ranges.push(`>=${min}`)\n } else if (min === v[0]) {\n ranges.push(`<=${max}`)\n } else {\n ranges.push(`${min} - ${max}`)\n }\n }\n const simplified = ranges.join(' || ')\n const original = typeof range.raw === 'string' ? range.raw : String(range)\n return simplified.length < original.length ? simplified : range\n}\n","const Range = require('../classes/range.js')\nconst Comparator = require('../classes/comparator.js')\nconst { ANY } = Comparator\nconst satisfies = require('../functions/satisfies.js')\nconst compare = require('../functions/compare.js')\n\n// Complex range `r1 || r2 || ...` is a subset of `R1 || R2 || ...` iff:\n// - Every simple range `r1, r2, ...` is a null set, OR\n// - Every simple range `r1, r2, ...` which is not a null set is a subset of\n// some `R1, R2, ...`\n//\n// Simple range `c1 c2 ...` is a subset of simple range `C1 C2 ...` iff:\n// - If c is only the ANY comparator\n// - If C is only the ANY comparator, return true\n// - Else if in prerelease mode, return false\n// - else replace c with `[>=0.0.0]`\n// - If C is only the ANY comparator\n// - if in prerelease mode, return true\n// - else replace C with `[>=0.0.0]`\n// - Let EQ be the set of = comparators in c\n// - If EQ is more than one, return true (null set)\n// - Let GT be the highest > or >= comparator in c\n// - Let LT be the lowest < or <= comparator in c\n// - If GT and LT, and GT.semver > LT.semver, return true (null set)\n// - If any C is a = range, and GT or LT are set, return false\n// - If EQ\n// - If GT, and EQ does not satisfy GT, return true (null set)\n// - If LT, and EQ does not satisfy LT, return true (null set)\n// - If EQ satisfies every C, return true\n// - Else return false\n// - If GT\n// - If GT.semver is lower than any > or >= comp in C, return false\n// - If GT is >=, and GT.semver does not satisfy every C, return false\n// - If GT.semver has a prerelease, and not in prerelease mode\n// - If no C has a prerelease and the GT.semver tuple, return false\n// - If LT\n// - If LT.semver is greater than any < or <= comp in C, return false\n// - If LT is <=, and LT.semver does not satisfy every C, return false\n// - If GT.semver has a prerelease, and not in prerelease mode\n// - If no C has a prerelease and the LT.semver tuple, return false\n// - Else return true\n\nconst subset = (sub, dom, options = {}) => {\n if (sub === dom) {\n return true\n }\n\n sub = new Range(sub, options)\n dom = new Range(dom, options)\n let sawNonNull = false\n\n OUTER: for (const simpleSub of sub.set) {\n for (const simpleDom of dom.set) {\n const isSub = simpleSubset(simpleSub, simpleDom, options)\n sawNonNull = sawNonNull || isSub !== null\n if (isSub) {\n continue OUTER\n }\n }\n // the null set is a subset of everything, but null simple ranges in\n // a complex range should be ignored. so if we saw a non-null range,\n // then we know this isn't a subset, but if EVERY simple range was null,\n // then it is a subset.\n if (sawNonNull) {\n return false\n }\n }\n return true\n}\n\nconst minimumVersionWithPreRelease = [new Comparator('>=0.0.0-0')]\nconst minimumVersion = [new Comparator('>=0.0.0')]\n\nconst simpleSubset = (sub, dom, options) => {\n if (sub === dom) {\n return true\n }\n\n if (sub.length === 1 && sub[0].semver === ANY) {\n if (dom.length === 1 && dom[0].semver === ANY) {\n return true\n } else if (options.includePrerelease) {\n sub = minimumVersionWithPreRelease\n } else {\n sub = minimumVersion\n }\n }\n\n if (dom.length === 1 && dom[0].semver === ANY) {\n if (options.includePrerelease) {\n return true\n } else {\n dom = minimumVersion\n }\n }\n\n const eqSet = new Set()\n let gt, lt\n for (const c of sub) {\n if (c.operator === '>' || c.operator === '>=') {\n gt = higherGT(gt, c, options)\n } else if (c.operator === '<' || c.operator === '<=') {\n lt = lowerLT(lt, c, options)\n } else {\n eqSet.add(c.semver)\n }\n }\n\n if (eqSet.size > 1) {\n return null\n }\n\n let gtltComp\n if (gt && lt) {\n gtltComp = compare(gt.semver, lt.semver, options)\n if (gtltComp > 0) {\n return null\n } else if (gtltComp === 0 && (gt.operator !== '>=' || lt.operator !== '<=')) {\n return null\n }\n }\n\n // will iterate one or zero times\n for (const eq of eqSet) {\n if (gt && !satisfies(eq, String(gt), options)) {\n return null\n }\n\n if (lt && !satisfies(eq, String(lt), options)) {\n return null\n }\n\n for (const c of dom) {\n if (!satisfies(eq, String(c), options)) {\n return false\n }\n }\n\n return true\n }\n\n let higher, lower\n let hasDomLT, hasDomGT\n // if the subset has a prerelease, we need a comparator in the superset\n // with the same tuple and a prerelease, or it's not a subset\n let needDomLTPre = lt &&\n !options.includePrerelease &&\n lt.semver.prerelease.length ? lt.semver : false\n let needDomGTPre = gt &&\n !options.includePrerelease &&\n gt.semver.prerelease.length ? gt.semver : false\n // exception: <1.2.3-0 is the same as <1.2.3\n if (needDomLTPre && needDomLTPre.prerelease.length === 1 &&\n lt.operator === '<' && needDomLTPre.prerelease[0] === 0) {\n needDomLTPre = false\n }\n\n for (const c of dom) {\n hasDomGT = hasDomGT || c.operator === '>' || c.operator === '>='\n hasDomLT = hasDomLT || c.operator === '<' || c.operator === '<='\n if (gt) {\n if (needDomGTPre) {\n if (c.semver.prerelease && c.semver.prerelease.length &&\n c.semver.major === needDomGTPre.major &&\n c.semver.minor === needDomGTPre.minor &&\n c.semver.patch === needDomGTPre.patch) {\n needDomGTPre = false\n }\n }\n if (c.operator === '>' || c.operator === '>=') {\n higher = higherGT(gt, c, options)\n if (higher === c && higher !== gt) {\n return false\n }\n } else if (gt.operator === '>=' && !satisfies(gt.semver, String(c), options)) {\n return false\n }\n }\n if (lt) {\n if (needDomLTPre) {\n if (c.semver.prerelease && c.semver.prerelease.length &&\n c.semver.major === needDomLTPre.major &&\n c.semver.minor === needDomLTPre.minor &&\n c.semver.patch === needDomLTPre.patch) {\n needDomLTPre = false\n }\n }\n if (c.operator === '<' || c.operator === '<=') {\n lower = lowerLT(lt, c, options)\n if (lower === c && lower !== lt) {\n return false\n }\n } else if (lt.operator === '<=' && !satisfies(lt.semver, String(c), options)) {\n return false\n }\n }\n if (!c.operator && (lt || gt) && gtltComp !== 0) {\n return false\n }\n }\n\n // if there was a < or >, and nothing in the dom, then must be false\n // UNLESS it was limited by another range in the other direction.\n // Eg, >1.0.0 <1.0.1 is still a subset of <2.0.0\n if (gt && hasDomLT && !lt && gtltComp !== 0) {\n return false\n }\n\n if (lt && hasDomGT && !gt && gtltComp !== 0) {\n return false\n }\n\n // we needed a prerelease range in a specific tuple, but didn't get one\n // then this isn't a subset. eg >=1.2.3-pre is not a subset of >=1.0.0,\n // because it includes prereleases in the 1.2.3 tuple\n if (needDomGTPre || needDomLTPre) {\n return false\n }\n\n return true\n}\n\n// >=1.2.3 is lower than >1.2.3\nconst higherGT = (a, b, options) => {\n if (!a) {\n return b\n }\n const comp = compare(a.semver, b.semver, options)\n return comp > 0 ? a\n : comp < 0 ? b\n : b.operator === '>' && a.operator === '>=' ? b\n : a\n}\n\n// <=1.2.3 is higher than <1.2.3\nconst lowerLT = (a, b, options) => {\n if (!a) {\n return b\n }\n const comp = compare(a.semver, b.semver, options)\n return comp < 0 ? a\n : comp > 0 ? b\n : b.operator === '<' && a.operator === '<=' ? b\n : a\n}\n\nmodule.exports = subset\n","const Range = require('../classes/range')\n\n// Mostly just for testing and legacy API reasons\nconst toComparators = (range, options) =>\n new Range(range, options).set\n .map(comp => comp.map(c => c.value).join(' ').trim().split(' '))\n\nmodule.exports = toComparators\n","const Range = require('../classes/range')\nconst validRange = (range, options) => {\n try {\n // Return '*' instead of '' so that truthiness works.\n // This will throw if it's invalid anyway\n return new Range(range, options).range || '*'\n } catch (er) {\n return null\n }\n}\nmodule.exports = validRange\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.diffTemplate = exports.fullDiff = void 0;\nconst impl = require(\"./diff\");\nconst template_and_changeset_diff_merger_1 = require(\"./diff/template-and-changeset-diff-merger\");\nconst types = require(\"./diff/types\");\nconst util_1 = require(\"./diff/util\");\n__exportStar(require(\"./diff/types\"), exports);\nconst DIFF_HANDLERS = {\n AWSTemplateFormatVersion: (diff, oldValue, newValue) => diff.awsTemplateFormatVersion = impl.diffAttribute(oldValue, newValue),\n Description: (diff, oldValue, newValue) => diff.description = impl.diffAttribute(oldValue, newValue),\n Metadata: (diff, oldValue, newValue) => diff.metadata = new types.DifferenceCollection((0, util_1.diffKeyedEntities)(oldValue, newValue, impl.diffMetadata)),\n Parameters: (diff, oldValue, newValue) => diff.parameters = new types.DifferenceCollection((0, util_1.diffKeyedEntities)(oldValue, newValue, impl.diffParameter)),\n Mappings: (diff, oldValue, newValue) => diff.mappings = new types.DifferenceCollection((0, util_1.diffKeyedEntities)(oldValue, newValue, impl.diffMapping)),\n Conditions: (diff, oldValue, newValue) => diff.conditions = new types.DifferenceCollection((0, util_1.diffKeyedEntities)(oldValue, newValue, impl.diffCondition)),\n Transform: (diff, oldValue, newValue) => diff.transform = impl.diffAttribute(oldValue, newValue),\n Resources: (diff, oldValue, newValue) => diff.resources = new types.DifferenceCollection((0, util_1.diffKeyedEntities)(oldValue, newValue, impl.diffResource)),\n Outputs: (diff, oldValue, newValue) => diff.outputs = new types.DifferenceCollection((0, util_1.diffKeyedEntities)(oldValue, newValue, impl.diffOutput)),\n};\n/**\n * Compare two CloudFormation templates and return semantic differences between them.\n *\n * @param currentTemplate the current state of the stack.\n * @param newTemplate the target state of the stack.\n * @param changeSet the change set for this stack.\n *\n * @returns a +types.TemplateDiff+ object that represents the changes that will happen if\n * a stack which current state is described by +currentTemplate+ is updated with\n * the template +newTemplate+.\n */\nfunction fullDiff(currentTemplate, newTemplate, changeSet, isImport) {\n normalize(currentTemplate);\n normalize(newTemplate);\n const theDiff = diffTemplate(currentTemplate, newTemplate);\n if (changeSet) {\n // These methods mutate the state of theDiff, using the changeSet.\n const changeSetDiff = new template_and_changeset_diff_merger_1.TemplateAndChangeSetDiffMerger({ changeSet });\n theDiff.resources.forEachDifference((logicalId, change) => changeSetDiff.overrideDiffResourceChangeImpactWithChangeSetChangeImpact(logicalId, change));\n changeSetDiff.addImportInformationFromChangeset(theDiff.resources);\n }\n else if (isImport) {\n makeAllResourceChangesImports(theDiff);\n }\n return theDiff;\n}\nexports.fullDiff = fullDiff;\nfunction diffTemplate(currentTemplate, newTemplate) {\n // Base diff\n const theDiff = calculateTemplateDiff(currentTemplate, newTemplate);\n // We're going to modify this in-place\n const newTemplateCopy = deepCopy(newTemplate);\n let didPropagateReferenceChanges;\n let diffWithReplacements;\n do {\n diffWithReplacements = calculateTemplateDiff(currentTemplate, newTemplateCopy);\n // Propagate replacements for replaced resources\n didPropagateReferenceChanges = false;\n if (diffWithReplacements.resources) {\n diffWithReplacements.resources.forEachDifference((logicalId, change) => {\n if (change.changeImpact === types.ResourceImpact.WILL_REPLACE) {\n if (propagateReplacedReferences(newTemplateCopy, logicalId)) {\n didPropagateReferenceChanges = true;\n }\n }\n });\n }\n } while (didPropagateReferenceChanges);\n // Copy \"replaced\" states from `diffWithReplacements` to `theDiff`.\n diffWithReplacements.resources\n .filter(r => isReplacement(r.changeImpact))\n .forEachDifference((logicalId, downstreamReplacement) => {\n const resource = theDiff.resources.get(logicalId);\n if (resource.changeImpact !== downstreamReplacement.changeImpact) {\n propagatePropertyReplacement(downstreamReplacement, resource);\n }\n });\n return theDiff;\n}\nexports.diffTemplate = diffTemplate;\nfunction isReplacement(impact) {\n return impact === types.ResourceImpact.MAY_REPLACE || impact === types.ResourceImpact.WILL_REPLACE;\n}\n/**\n * For all properties in 'source' that have a \"replacement\" impact, propagate that impact to \"dest\"\n */\nfunction propagatePropertyReplacement(source, dest) {\n for (const [propertyName, diff] of Object.entries(source.propertyUpdates)) {\n if (diff.changeImpact && isReplacement(diff.changeImpact)) {\n // Use the propertydiff of source in target. The result of this happens to be clear enough.\n dest.setPropertyChange(propertyName, diff);\n }\n }\n}\nfunction calculateTemplateDiff(currentTemplate, newTemplate) {\n const differences = {};\n const unknown = {};\n for (const key of (0, util_1.unionOf)(Object.keys(currentTemplate), Object.keys(newTemplate)).sort()) {\n const oldValue = currentTemplate[key];\n const newValue = newTemplate[key];\n if ((0, util_1.deepEqual)(oldValue, newValue)) {\n continue;\n }\n const handler = DIFF_HANDLERS[key]\n || ((_diff, oldV, newV) => unknown[key] = impl.diffUnknown(oldV, newV));\n handler(differences, oldValue, newValue);\n }\n if (Object.keys(unknown).length > 0) {\n differences.unknown = new types.DifferenceCollection(unknown);\n }\n return new types.TemplateDiff(differences);\n}\n/**\n * Replace all references to the given logicalID on the given template, in-place\n *\n * Returns true if any references were replaced.\n */\nfunction propagateReplacedReferences(template, logicalId) {\n let ret = false;\n function recurse(obj) {\n if (Array.isArray(obj)) {\n obj.forEach(recurse);\n }\n if (typeof obj === 'object' && obj !== null) {\n if (!replaceReference(obj)) {\n Object.values(obj).forEach(recurse);\n }\n }\n }\n function replaceReference(obj) {\n const keys = Object.keys(obj);\n if (keys.length !== 1) {\n return false;\n }\n const key = keys[0];\n if (key === 'Ref') {\n if (obj.Ref === logicalId) {\n obj.Ref = logicalId + ' (replaced)';\n ret = true;\n }\n return true;\n }\n if (key.startsWith('Fn::')) {\n if (Array.isArray(obj[key]) && obj[key].length > 0 && obj[key][0] === logicalId) {\n obj[key][0] = logicalId + '(replaced)';\n ret = true;\n }\n return true;\n }\n return false;\n }\n recurse(template);\n return ret;\n}\nfunction deepCopy(x) {\n if (Array.isArray(x)) {\n return x.map(deepCopy);\n }\n if (typeof x === 'object' && x !== null) {\n const ret = {};\n for (const key of Object.keys(x)) {\n ret[key] = deepCopy(x[key]);\n }\n return ret;\n }\n return x;\n}\nfunction makeAllResourceChangesImports(diff) {\n diff.resources.forEachDifference((_logicalId, change) => {\n change.isImport = true;\n });\n}\nfunction normalize(template) {\n if (typeof template === 'object') {\n for (const key of (Object.keys(template ?? {}))) {\n if (key === 'Fn::GetAtt' && typeof template[key] === 'string') {\n template[key] = template[key].split('.');\n continue;\n }\n else if (key === 'DependsOn') {\n if (typeof template[key] === 'string') {\n template[key] = [template[key]];\n }\n else if (Array.isArray(template[key])) {\n template[key] = template[key].sort();\n }\n continue;\n }\n if (Array.isArray(template[key])) {\n for (const element of (template[key])) {\n normalize(element);\n }\n }\n else {\n normalize(template[key]);\n }\n }\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlmZi10ZW1wbGF0ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImRpZmYtdGVtcGxhdGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFHQSwrQkFBK0I7QUFDL0Isa0dBQTJGO0FBQzNGLHNDQUFzQztBQUN0QyxzQ0FBb0U7QUFFcEUsK0NBQTZCO0FBTzdCLE1BQU0sYUFBYSxHQUFvQjtJQUNyQyx3QkFBd0IsRUFBRSxDQUFDLElBQUksRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLEVBQUUsQ0FDckQsSUFBSSxDQUFDLHdCQUF3QixHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxFQUFFLFFBQVEsQ0FBQztJQUN4RSxXQUFXLEVBQUUsQ0FBQyxJQUFJLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxFQUFFLENBQ3hDLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRLEVBQUUsUUFBUSxDQUFDO0lBQzNELFFBQVEsRUFBRSxDQUFDLElBQUksRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLEVBQUUsQ0FDckMsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLEtBQUssQ0FBQyxvQkFBb0IsQ0FBQyxJQUFBLHdCQUFpQixFQUFDLFFBQVEsRUFBRSxRQUFRLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQzFHLFVBQVUsRUFBRSxDQUFDLElBQUksRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLEVBQUUsQ0FDdkMsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLEtBQUssQ0FBQyxvQkFBb0IsQ0FBQyxJQUFBLHdCQUFpQixFQUFDLFFBQVEsRUFBRSxRQUFRLEVBQUUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQzdHLFFBQVEsRUFBRSxDQUFDLElBQUksRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLEVBQUUsQ0FDckMsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLEtBQUssQ0FBQyxvQkFBb0IsQ0FBQyxJQUFBLHdCQUFpQixFQUFDLFFBQVEsRUFBRSxRQUFRLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ3pHLFVBQVUsRUFBRSxDQUFDLElBQUksRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLEVBQUUsQ0FDdkMsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLEtBQUssQ0FBQyxvQkFBb0IsQ0FBQyxJQUFBLHdCQUFpQixFQUFDLFFBQVEsRUFBRSxRQUFRLEVBQUUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQzdHLFNBQVMsRUFBRSxDQUFDLElBQUksRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLEVBQUUsQ0FDdEMsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsRUFBRSxRQUFRLENBQUM7SUFDekQsU0FBUyxFQUFFLENBQUMsSUFBSSxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsRUFBRSxDQUN0QyxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksS0FBSyxDQUFDLG9CQUFvQixDQUFDLElBQUEsd0JBQWlCLEVBQUMsUUFBUSxFQUFFLFFBQVEsRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDM0csT0FBTyxFQUFFLENBQUMsSUFBSSxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsRUFBRSxDQUNwQyxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksS0FBSyxDQUFDLG9CQUFvQixDQUFDLElBQUEsd0JBQWlCLEVBQUMsUUFBUSxFQUFFLFFBQVEsRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7Q0FDeEcsQ0FBQztBQUVGOzs7Ozs7Ozs7O0dBVUc7QUFDSCxTQUFnQixRQUFRLENBQ3RCLGVBQXVDLEVBQ3ZDLFdBQW1DLEVBQ25DLFNBQW1DLEVBQ25DLFFBQWtCO0lBR2xCLFNBQVMsQ0FBQyxlQUFlLENBQUMsQ0FBQztJQUMzQixTQUFTLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDdkIsTUFBTSxPQUFPLEdBQUcsWUFBWSxDQUFDLGVBQWUsRUFBRSxXQUFXLENBQUMsQ0FBQztJQUMzRCxJQUFJLFNBQVMsRUFBRSxDQUFDO1FBQ2Qsa0VBQWtFO1FBQ2xFLE1BQU0sYUFBYSxHQUFHLElBQUksbUVBQThCLENBQUMsRUFBRSxTQUFTLEVBQUUsQ0FBQyxDQUFDO1FBQ3hFLE9BQU8sQ0FBQyxTQUFTLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxTQUFpQixFQUFFLE1BQWdDLEVBQUUsRUFBRSxDQUMxRixhQUFhLENBQUMseURBQXlELENBQUMsU0FBUyxFQUFFLE1BQU0sQ0FBQyxDQUMzRixDQUFDO1FBQ0YsYUFBYSxDQUFDLGlDQUFpQyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUNyRSxDQUFDO1NBQU0sSUFBSSxRQUFRLEVBQUUsQ0FBQztRQUNwQiw2QkFBNkIsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUN6QyxDQUFDO0lBRUQsT0FBTyxPQUFPLENBQUM7QUFDakIsQ0FBQztBQXRCRCw0QkFzQkM7QUFFRCxTQUFnQixZQUFZLENBQzFCLGVBQXVDLEVBQ3ZDLFdBQW1DO0lBR25DLFlBQVk7SUFDWixNQUFNLE9BQU8sR0FBRyxxQkFBcUIsQ0FBQyxlQUFlLEVBQUUsV0FBVyxDQUFDLENBQUM7SUFFcEUsc0NBQXNDO0lBQ3RDLE1BQU0sZUFBZSxHQUFHLFFBQVEsQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUU5QyxJQUFJLDRCQUE0QixDQUFDO0lBQ2pDLElBQUksb0JBQW9CLENBQUM7SUFDekIsR0FBRyxDQUFDO1FBQ0Ysb0JBQW9CLEdBQUcscUJBQXFCLENBQUMsZUFBZSxFQUFFLGVBQWUsQ0FBQyxDQUFDO1FBRS9FLGdEQUFnRDtRQUNoRCw0QkFBNEIsR0FBRyxLQUFLLENBQUM7UUFDckMsSUFBSSxvQkFBb0IsQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUNuQyxvQkFBb0IsQ0FBQyxTQUFTLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxTQUFTLEVBQUUsTUFBTSxFQUFFLEVBQUU7Z0JBQ3JFLElBQUksTUFBTSxDQUFDLFlBQVksS0FBSyxLQUFLLENBQUMsY0FBYyxDQUFDLFlBQVksRUFBRSxDQUFDO29CQUM5RCxJQUFJLDJCQUEyQixDQUFDLGVBQWUsRUFBRSxTQUFTLENBQUMsRUFBRSxDQUFDO3dCQUM1RCw0QkFBNEIsR0FBRyxJQUFJLENBQUM7b0JBQ3RDLENBQUM7Z0JBQ0gsQ0FBQztZQUNILENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztJQUNILENBQUMsUUFBUSw0QkFBNEIsRUFBRTtJQUV2QyxtRUFBbUU7SUFDbkUsb0JBQW9CLENBQUMsU0FBUztTQUMzQixNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUMsQ0FBRSxDQUFDLFlBQVksQ0FBQyxDQUFDO1NBQzNDLGlCQUFpQixDQUFDLENBQUMsU0FBUyxFQUFFLHFCQUFxQixFQUFFLEVBQUU7UUFDdEQsTUFBTSxRQUFRLEdBQUcsT0FBTyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUM7UUFFbEQsSUFBSSxRQUFRLENBQUMsWUFBWSxLQUFLLHFCQUFxQixDQUFDLFlBQVksRUFBRSxDQUFDO1lBQ2pFLDRCQUE0QixDQUFDLHFCQUFxQixFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBQ2hFLENBQUM7SUFDSCxDQUFDLENBQUMsQ0FBQztJQUVMLE9BQU8sT0FBTyxDQUFDO0FBQ2pCLENBQUM7QUF6Q0Qsb0NBeUNDO0FBRUQsU0FBUyxhQUFhLENBQUMsTUFBNEI7SUFDakQsT0FBTyxNQUFNLEtBQUssS0FBSyxDQUFDLGNBQWMsQ0FBQyxXQUFXLElBQUksTUFBTSxLQUFLLEtBQUssQ0FBQyxjQUFjLENBQUMsWUFBWSxDQUFDO0FBQ3JHLENBQUM7QUFFRDs7R0FFRztBQUNILFNBQVMsNEJBQTRCLENBQUMsTUFBZ0MsRUFBRSxJQUE4QjtJQUNwRyxLQUFLLE1BQU0sQ0FBQyxZQUFZLEVBQUUsSUFBSSxDQUFDLElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsZUFBZSxDQUFDLEVBQUUsQ0FBQztRQUMxRSxJQUFJLElBQUksQ0FBQyxZQUFZLElBQUksYUFBYSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDO1lBQzFELDJGQUEyRjtZQUMzRixJQUFJLENBQUMsaUJBQWlCLENBQUMsWUFBWSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQzdDLENBQUM7SUFDSCxDQUFDO0FBQ0gsQ0FBQztBQUVELFNBQVMscUJBQXFCLENBQUMsZUFBdUMsRUFBRSxXQUFtQztJQUN6RyxNQUFNLFdBQVcsR0FBd0IsRUFBRSxDQUFDO0lBQzVDLE1BQU0sT0FBTyxHQUE2QyxFQUFFLENBQUM7SUFDN0QsS0FBSyxNQUFNLEdBQUcsSUFBSSxJQUFBLGNBQU8sRUFBQyxNQUFNLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDO1FBQ3pGLE1BQU0sUUFBUSxHQUFHLGVBQWUsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUN0QyxNQUFNLFFBQVEsR0FBRyxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDbEMsSUFBSSxJQUFBLGdCQUFTLEVBQUMsUUFBUSxFQUFFLFFBQVEsQ0FBQyxFQUFFLENBQUM7WUFDbEMsU0FBUztRQUNYLENBQUM7UUFDRCxNQUFNLE9BQU8sR0FBZ0IsYUFBYSxDQUFDLEdBQUcsQ0FBQztlQUM5QixDQUFDLENBQUMsS0FBSyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBQ3RGLE9BQU8sQ0FBQyxXQUFXLEVBQUUsUUFBUSxFQUFFLFFBQVEsQ0FBQyxDQUFDO0lBQzNDLENBQUM7SUFDRCxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO1FBQ3BDLFdBQVcsQ0FBQyxPQUFPLEdBQUcsSUFBSSxLQUFLLENBQUMsb0JBQW9CLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDaEUsQ0FBQztJQUVELE9BQU8sSUFBSSxLQUFLLENBQUMsWUFBWSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0FBQzdDLENBQUM7QUFFRDs7OztHQUlHO0FBQ0gsU0FBUywyQkFBMkIsQ0FBQyxRQUFnQixFQUFFLFNBQWlCO0lBQ3RFLElBQUksR0FBRyxHQUFHLEtBQUssQ0FBQztJQUVoQixTQUFTLE9BQU8sQ0FBQyxHQUFRO1FBQ3ZCLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ3ZCLEdBQUcsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDdkIsQ0FBQztRQUVELElBQUksT0FBTyxHQUFHLEtBQUssUUFBUSxJQUFJLEdBQUcsS0FBSyxJQUFJLEVBQUUsQ0FBQztZQUM1QyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztnQkFDM0IsTUFBTSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDdEMsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDO0lBRUQsU0FBUyxnQkFBZ0IsQ0FBQyxHQUFRO1FBQ2hDLE1BQU0sSUFBSSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDOUIsSUFBSSxJQUFJLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQUMsT0FBTyxLQUFLLENBQUM7UUFBQyxDQUFDO1FBQ3hDLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUVwQixJQUFJLEdBQUcsS0FBSyxLQUFLLEVBQUUsQ0FBQztZQUNsQixJQUFJLEdBQUcsQ0FBQyxHQUFHLEtBQUssU0FBUyxFQUFFLENBQUM7Z0JBQzFCLEdBQUcsQ0FBQyxHQUFHLEdBQUcsU0FBUyxHQUFHLGFBQWEsQ0FBQztnQkFDcEMsR0FBRyxHQUFHLElBQUksQ0FBQztZQUNiLENBQUM7WUFDRCxPQUFPLElBQUksQ0FBQztRQUNkLENBQUM7UUFFRCxJQUFJLEdBQUcsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztZQUMzQixJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLElBQUksR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLFNBQVMsRUFBRSxDQUFDO2dCQUNoRixHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsU0FBUyxHQUFHLFlBQVksQ0FBQztnQkFDdkMsR0FBRyxHQUFHLElBQUksQ0FBQztZQUNiLENBQUM7WUFDRCxPQUFPLElBQUksQ0FBQztRQUNkLENBQUM7UUFFRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFRCxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDbEIsT0FBTyxHQUFHLENBQUM7QUFDYixDQUFDO0FBRUQsU0FBUyxRQUFRLENBQUMsQ0FBTTtJQUN0QixJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUNyQixPQUFPLENBQUMsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDekIsQ0FBQztJQUVELElBQUksT0FBTyxDQUFDLEtBQUssUUFBUSxJQUFJLENBQUMsS0FBSyxJQUFJLEVBQUUsQ0FBQztRQUN4QyxNQUFNLEdBQUcsR0FBUSxFQUFFLENBQUM7UUFDcEIsS0FBSyxNQUFNLEdBQUcsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFDakMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLFFBQVEsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUM5QixDQUFDO1FBQ0QsT0FBTyxHQUFHLENBQUM7SUFDYixDQUFDO0lBRUQsT0FBTyxDQUFDLENBQUM7QUFDWCxDQUFDO0FBRUQsU0FBUyw2QkFBNkIsQ0FBQyxJQUF3QjtJQUM3RCxJQUFJLENBQUMsU0FBUyxDQUFDLGlCQUFpQixDQUFDLENBQUMsVUFBa0IsRUFBRSxNQUFnQyxFQUFFLEVBQUU7UUFDeEYsTUFBTSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUM7SUFDekIsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDO0FBRUQsU0FBUyxTQUFTLENBQUMsUUFBYTtJQUM5QixJQUFJLE9BQU8sUUFBUSxLQUFLLFFBQVEsRUFBRSxDQUFDO1FBQ2pDLEtBQUssTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsSUFBSSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFDaEQsSUFBSSxHQUFHLEtBQUssWUFBWSxJQUFJLE9BQU8sUUFBUSxDQUFDLEdBQUcsQ0FBQyxLQUFLLFFBQVEsRUFBRSxDQUFDO2dCQUM5RCxRQUFRLENBQUMsR0FBRyxDQUFDLEdBQUcsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFDekMsU0FBUztZQUNYLENBQUM7aUJBQU0sSUFBSSxHQUFHLEtBQUssV0FBVyxFQUFFLENBQUM7Z0JBQy9CLElBQUksT0FBTyxRQUFRLENBQUMsR0FBRyxDQUFDLEtBQUssUUFBUSxFQUFFLENBQUM7b0JBQ3RDLFFBQVEsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO2dCQUNsQyxDQUFDO3FCQUFNLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDO29CQUN4QyxRQUFRLENBQUMsR0FBRyxDQUFDLEdBQUcsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO2dCQUN2QyxDQUFDO2dCQUNELFNBQVM7WUFDWCxDQUFDO1lBRUQsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUM7Z0JBQ2pDLEtBQUssTUFBTSxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDO29CQUN0QyxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUM7Z0JBQ3JCLENBQUM7WUFDSCxDQUFDO2lCQUFNLENBQUM7Z0JBQ04sU0FBUyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1lBQzNCLENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQztBQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBUaGUgU0RLIGlzIG9ubHkgdXNlZCB0byByZWZlcmVuY2UgYERlc2NyaWJlQ2hhbmdlU2V0T3V0cHV0YCwgc28gdGhlIFNESyBpcyBhZGRlZCBhcyBhIGRldkRlcGVuZGVuY3kuXG4vLyBUaGUgU0RLIHNob3VsZCBub3QgbWFrZSBuZXR3b3JrIGNhbGxzIGhlcmVcbmltcG9ydCB0eXBlIHsgRGVzY3JpYmVDaGFuZ2VTZXRPdXRwdXQgYXMgRGVzY3JpYmVDaGFuZ2VTZXQgfSBmcm9tICdAYXdzLXNkay9jbGllbnQtY2xvdWRmb3JtYXRpb24nO1xuaW1wb3J0ICogYXMgaW1wbCBmcm9tICcuL2RpZmYnO1xuaW1wb3J0IHsgVGVtcGxhdGVBbmRDaGFuZ2VTZXREaWZmTWVyZ2VyIH0gZnJvbSAnLi9kaWZmL3RlbXBsYXRlLWFuZC1jaGFuZ2VzZXQtZGlmZi1tZXJnZXInO1xuaW1wb3J0ICogYXMgdHlwZXMgZnJvbSAnLi9kaWZmL3R5cGVzJztcbmltcG9ydCB7IGRlZXBFcXVhbCwgZGlmZktleWVkRW50aXRpZXMsIHVuaW9uT2YgfSBmcm9tICcuL2RpZmYvdXRpbCc7XG5cbmV4cG9ydCAqIGZyb20gJy4vZGlmZi90eXBlcyc7XG5cbmV4cG9ydCB0eXBlIERlc2NyaWJlQ2hhbmdlU2V0T3V0cHV0ID0gRGVzY3JpYmVDaGFuZ2VTZXQ7XG5cbnR5cGUgRGlmZkhhbmRsZXIgPSAoZGlmZjogdHlwZXMuSVRlbXBsYXRlRGlmZiwgb2xkVmFsdWU6IGFueSwgbmV3VmFsdWU6IGFueSkgPT4gdm9pZDtcbnR5cGUgSGFuZGxlclJlZ2lzdHJ5ID0geyBbc2VjdGlvbjogc3RyaW5nXTogRGlmZkhhbmRsZXIgfTtcblxuY29uc3QgRElGRl9IQU5ETEVSUzogSGFuZGxlclJlZ2lzdHJ5ID0ge1xuICBBV1NUZW1wbGF0ZUZvcm1hdFZlcnNpb246IChkaWZmLCBvbGRWYWx1ZSwgbmV3VmFsdWUpID0+XG4gICAgZGlmZi5hd3NUZW1wbGF0ZUZvcm1hdFZlcnNpb24gPSBpbXBsLmRpZmZBdHRyaWJ1dGUob2xkVmFsdWUsIG5ld1ZhbHVlKSxcbiAgRGVzY3JpcHRpb246IChkaWZmLCBvbGRWYWx1ZSwgbmV3VmFsdWUpID0+XG4gICAgZGlmZi5kZXNjcmlwdGlvbiA9IGltcGwuZGlmZkF0dHJpYnV0ZShvbGRWYWx1ZSwgbmV3VmFsdWUpLFxuICBNZXRhZGF0YTogKGRpZmYsIG9sZFZhbHVlLCBuZXdWYWx1ZSkgPT5cbiAgICBkaWZmLm1ldGFkYXRhID0gbmV3IHR5cGVzLkRpZmZlcmVuY2VDb2xsZWN0aW9uKGRpZmZLZXllZEVudGl0aWVzKG9sZFZhbHVlLCBuZXdWYWx1ZSwgaW1wbC5kaWZmTWV0YWRhdGEpKSxcbiAgUGFyYW1ldGVyczogKGRpZmYsIG9sZFZhbHVlLCBuZXdWYWx1ZSkgPT5cbiAgICBkaWZmLnBhcmFtZXRlcnMgPSBuZXcgdHlwZXMuRGlmZmVyZW5jZUNvbGxlY3Rpb24oZGlmZktleWVkRW50aXRpZXMob2xkVmFsdWUsIG5ld1ZhbHVlLCBpbXBsLmRpZmZQYXJhbWV0ZXIpKSxcbiAgTWFwcGluZ3M6IChkaWZmLCBvbGRWYWx1ZSwgbmV3VmFsdWUpID0+XG4gICAgZGlmZi5tYXBwaW5ncyA9IG5ldyB0eXBlcy5EaWZmZXJlbmNlQ29sbGVjdGlvbihkaWZmS2V5ZWRFbnRpdGllcyhvbGRWYWx1ZSwgbmV3VmFsdWUsIGltcGwuZGlmZk1hcHBpbmcpKSxcbiAgQ29uZGl0aW9uczogKGRpZmYsIG9sZFZhbHVlLCBuZXdWYWx1ZSkgPT5cbiAgICBkaWZmLmNvbmRpdGlvbnMgPSBuZXcgdHlwZXMuRGlmZmVyZW5jZUNvbGxlY3Rpb24oZGlmZktleWVkRW50aXRpZXMob2xkVmFsdWUsIG5ld1ZhbHVlLCBpbXBsLmRpZmZDb25kaXRpb24pKSxcbiAgVHJhbnNmb3JtOiAoZGlmZiwgb2xkVmFsdWUsIG5ld1ZhbHVlKSA9PlxuICAgIGRpZmYudHJhbnNmb3JtID0gaW1wbC5kaWZmQXR0cmlidXRlKG9sZFZhbHVlLCBuZXdWYWx1ZSksXG4gIFJlc291cmNlczogKGRpZmYsIG9sZFZhbHVlLCBuZXdWYWx1ZSkgPT5cbiAgICBkaWZmLnJlc291cmNlcyA9IG5ldyB0eXBlcy5EaWZmZXJlbmNlQ29sbGVjdGlvbihkaWZmS2V5ZWRFbnRpdGllcyhvbGRWYWx1ZSwgbmV3VmFsdWUsIGltcGwuZGlmZlJlc291cmNlKSksXG4gIE91dHB1dHM6IChkaWZmLCBvbGRWYWx1ZSwgbmV3VmFsdWUpID0+XG4gICAgZGlmZi5vdXRwdXRzID0gbmV3IHR5cGVzLkRpZmZlcmVuY2VDb2xsZWN0aW9uKGRpZmZLZXllZEVudGl0aWVzKG9sZFZhbHVlLCBuZXdWYWx1ZSwgaW1wbC5kaWZmT3V0cHV0KSksXG59O1xuXG4vKipcbiAqIENvbXBhcmUgdHdvIENsb3VkRm9ybWF0aW9uIHRlbXBsYXRlcyBhbmQgcmV0dXJuIHNlbWFudGljIGRpZmZlcmVuY2VzIGJldHdlZW4gdGhlbS5cbiAqXG4gKiBAcGFyYW0gY3VycmVudFRlbXBsYXRlIHRoZSBjdXJyZW50IHN0YXRlIG9mIHRoZSBzdGFjay5cbiAqIEBwYXJhbSBuZXdUZW1wbGF0ZSAgICAgdGhlIHRhcmdldCBzdGF0ZSBvZiB0aGUgc3RhY2suXG4gKiBAcGFyYW0gY2hhbmdlU2V0ICAgICAgIHRoZSBjaGFuZ2Ugc2V0IGZvciB0aGlzIHN0YWNrLlxuICpcbiAqIEByZXR1cm5zIGEgK3R5cGVzLlRlbXBsYXRlRGlmZisgb2JqZWN0IHRoYXQgcmVwcmVzZW50cyB0aGUgY2hhbmdlcyB0aGF0IHdpbGwgaGFwcGVuIGlmXG4gKiAgICAgIGEgc3RhY2sgd2hpY2ggY3VycmVudCBzdGF0ZSBpcyBkZXNjcmliZWQgYnkgK2N1cnJlbnRUZW1wbGF0ZSsgaXMgdXBkYXRlZCB3aXRoXG4gKiAgICAgIHRoZSB0ZW1wbGF0ZSArbmV3VGVtcGxhdGUrLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZnVsbERpZmYoXG4gIGN1cnJlbnRUZW1wbGF0ZTogeyBba2V5OiBzdHJpbmddOiBhbnkgfSxcbiAgbmV3VGVtcGxhdGU6IHsgW2tleTogc3RyaW5nXTogYW55IH0sXG4gIGNoYW5nZVNldD86IERlc2NyaWJlQ2hhbmdlU2V0T3V0cHV0LFxuICBpc0ltcG9ydD86IGJvb2xlYW4sXG4pOiB0eXBlcy5UZW1wbGF0ZURpZmYge1xuXG4gIG5vcm1hbGl6ZShjdXJyZW50VGVtcGxhdGUpO1xuICBub3JtYWxpemUobmV3VGVtcGxhdGUpO1xuICBjb25zdCB0aGVEaWZmID0gZGlmZlRlbXBsYXRlKGN1cnJlbnRUZW1wbGF0ZSwgbmV3VGVtcGxhdGUpO1xuICBpZiAoY2hhbmdlU2V0KSB7XG4gICAgLy8gVGhlc2UgbWV0aG9kcyBtdXRhdGUgdGhlIHN0YXRlIG9mIHRoZURpZmYsIHVzaW5nIHRoZSBjaGFuZ2VTZXQuXG4gICAgY29uc3QgY2hhbmdlU2V0RGlmZiA9IG5ldyBUZW1wbGF0ZUFuZENoYW5nZVNldERpZmZNZXJnZXIoeyBjaGFuZ2VTZXQgfSk7XG4gICAgdGhlRGlmZi5yZXNvdXJjZXMuZm9yRWFjaERpZmZlcmVuY2UoKGxvZ2ljYWxJZDogc3RyaW5nLCBjaGFuZ2U6IHR5cGVzLlJlc291cmNlRGlmZmVyZW5jZSkgPT5cbiAgICAgIGNoYW5nZVNldERpZmYub3ZlcnJpZGVEaWZmUmVzb3VyY2VDaGFuZ2VJbXBhY3RXaXRoQ2hhbmdlU2V0Q2hhbmdlSW1wYWN0KGxvZ2ljYWxJZCwgY2hhbmdlKSxcbiAgICApO1xuICAgIGNoYW5nZVNldERpZmYuYWRkSW1wb3J0SW5mb3JtYXRpb25Gcm9tQ2hhbmdlc2V0KHRoZURpZmYucmVzb3VyY2VzKTtcbiAgfSBlbHNlIGlmIChpc0ltcG9ydCkge1xuICAgIG1ha2VBbGxSZXNvdXJjZUNoYW5nZXNJbXBvcnRzKHRoZURpZmYpO1xuICB9XG5cbiAgcmV0dXJuIHRoZURpZmY7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkaWZmVGVtcGxhdGUoXG4gIGN1cnJlbnRUZW1wbGF0ZTogeyBba2V5OiBzdHJpbmddOiBhbnkgfSxcbiAgbmV3VGVtcGxhdGU6IHsgW2tleTogc3RyaW5nXTogYW55IH0sXG4pOiB0eXBlcy5UZW1wbGF0ZURpZmYge1xuXG4gIC8vIEJhc2UgZGlmZlxuICBjb25zdCB0aGVEaWZmID0gY2FsY3VsYXRlVGVtcGxhdGVEaWZmKGN1cnJlbnRUZW1wbGF0ZSwgbmV3VGVtcGxhdGUpO1xuXG4gIC8vIFdlJ3JlIGdvaW5nIHRvIG1vZGlmeSB0aGlzIGluLXBsYWNlXG4gIGNvbnN0IG5ld1RlbXBsYXRlQ29weSA9IGRlZXBDb3B5KG5ld1RlbXBsYXRlKTtcblxuICBsZXQgZGlkUHJvcGFnYXRlUmVmZXJlbmNlQ2hhbmdlcztcbiAgbGV0IGRpZmZXaXRoUmVwbGFjZW1lbnRzO1xuICBkbyB7XG4gICAgZGlmZldpdGhSZXBsYWNlbWVudHMgPSBjYWxjdWxhdGVUZW1wbGF0ZURpZmYoY3VycmVudFRlbXBsYXRlLCBuZXdUZW1wbGF0ZUNvcHkpO1xuXG4gICAgLy8gUHJvcGFnYXRlIHJlcGxhY2VtZW50cyBmb3IgcmVwbGFjZWQgcmVzb3VyY2VzXG4gICAgZGlkUHJvcGFnYXRlUmVmZXJlbmNlQ2hhbmdlcyA9IGZhbHNlO1xuICAgIGlmIChkaWZmV2l0aFJlcGxhY2VtZW50cy5yZXNvdXJjZXMpIHtcbiAgICAgIGRpZmZXaXRoUmVwbGFjZW1lbnRzLnJlc291cmNlcy5mb3JFYWNoRGlmZmVyZW5jZSgobG9naWNhbElkLCBjaGFuZ2UpID0+IHtcbiAgICAgICAgaWYgKGNoYW5nZS5jaGFuZ2VJbXBhY3QgPT09IHR5cGVzLlJlc291cmNlSW1wYWN0LldJTExfUkVQTEFDRSkge1xuICAgICAgICAgIGlmIChwcm9wYWdhdGVSZXBsYWNlZFJlZmVyZW5jZXMobmV3VGVtcGxhdGVDb3B5LCBsb2dpY2FsSWQpKSB7XG4gICAgICAgICAgICBkaWRQcm9wYWdhdGVSZWZlcmVuY2VDaGFuZ2VzID0gdHJ1ZTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgfSB3aGlsZSAoZGlkUHJvcGFnYXRlUmVmZXJlbmNlQ2hhbmdlcyk7XG5cbiAgLy8gQ29weSBcInJlcGxhY2VkXCIgc3RhdGVzIGZyb20gYGRpZmZXaXRoUmVwbGFjZW1lbnRzYCB0byBgdGhlRGlmZmAuXG4gIGRpZmZXaXRoUmVwbGFjZW1lbnRzLnJlc291cmNlc1xuICAgIC5maWx0ZXIociA9PiBpc1JlcGxhY2VtZW50KHIhLmNoYW5nZUltcGFjdCkpXG4gICAgLmZvckVhY2hEaWZmZXJlbmNlKChsb2dpY2FsSWQsIGRvd25zdHJlYW1SZXBsYWNlbWVudCkgPT4ge1xuICAgICAgY29uc3QgcmVzb3VyY2UgPSB0aGVEaWZmLnJlc291cmNlcy5nZXQobG9naWNhbElkKTtcblxuICAgICAgaWYgKHJlc291cmNlLmNoYW5nZUltcGFjdCAhPT0gZG93bnN0cmVhbVJlcGxhY2VtZW50LmNoYW5nZUltcGFjdCkge1xuICAgICAgICBwcm9wYWdhdGVQcm9wZXJ0eVJlcGxhY2VtZW50KGRvd25zdHJlYW1SZXBsYWNlbWVudCwgcmVzb3VyY2UpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gIHJldHVybiB0aGVEaWZmO1xufVxuXG5mdW5jdGlvbiBpc1JlcGxhY2VtZW50KGltcGFjdDogdHlwZXMuUmVzb3VyY2VJbXBhY3QpIHtcbiAgcmV0dXJuIGltcGFjdCA9PT0gdHlwZXMuUmVzb3VyY2VJbXBhY3QuTUFZX1JFUExBQ0UgfHwgaW1wYWN0ID09PSB0eXBlcy5SZXNvdXJjZUltcGFjdC5XSUxMX1JFUExBQ0U7XG59XG5cbi8qKlxuICogRm9yIGFsbCBwcm9wZXJ0aWVzIGluICdzb3VyY2UnIHRoYXQgaGF2ZSBhIFwicmVwbGFjZW1lbnRcIiBpbXBhY3QsIHByb3BhZ2F0ZSB0aGF0IGltcGFjdCB0byBcImRlc3RcIlxuICovXG5mdW5jdGlvbiBwcm9wYWdhdGVQcm9wZXJ0eVJlcGxhY2VtZW50KHNvdXJjZTogdHlwZXMuUmVzb3VyY2VEaWZmZXJlbmNlLCBkZXN0OiB0eXBlcy5SZXNvdXJjZURpZmZlcmVuY2UpIHtcbiAgZm9yIChjb25zdCBbcHJvcGVydHlOYW1lLCBkaWZmXSBvZiBPYmplY3QuZW50cmllcyhzb3VyY2UucHJvcGVydHlVcGRhdGVzKSkge1xuICAgIGlmIChkaWZmLmNoYW5nZUltcGFjdCAmJiBpc1JlcGxhY2VtZW50KGRpZmYuY2hhbmdlSW1wYWN0KSkge1xuICAgICAgLy8gVXNlIHRoZSBwcm9wZXJ0eWRpZmYgb2Ygc291cmNlIGluIHRhcmdldC4gVGhlIHJlc3VsdCBvZiB0aGlzIGhhcHBlbnMgdG8gYmUgY2xlYXIgZW5vdWdoLlxuICAgICAgZGVzdC5zZXRQcm9wZXJ0eUNoYW5nZShwcm9wZXJ0eU5hbWUsIGRpZmYpO1xuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBjYWxjdWxhdGVUZW1wbGF0ZURpZmYoY3VycmVudFRlbXBsYXRlOiB7IFtrZXk6IHN0cmluZ106IGFueSB9LCBuZXdUZW1wbGF0ZTogeyBba2V5OiBzdHJpbmddOiBhbnkgfSk6IHR5cGVzLlRlbXBsYXRlRGlmZiB7XG4gIGNvbnN0IGRpZmZlcmVuY2VzOiB0eXBlcy5JVGVtcGxhdGVEaWZmID0ge307XG4gIGNvbnN0IHVua25vd246IHsgW2tleTogc3RyaW5nXTogdHlwZXMuRGlmZmVyZW5jZTxhbnk+IH0gPSB7fTtcbiAgZm9yIChjb25zdCBrZXkgb2YgdW5pb25PZihPYmplY3Qua2V5cyhjdXJyZW50VGVtcGxhdGUpLCBPYmplY3Qua2V5cyhuZXdUZW1wbGF0ZSkpLnNvcnQoKSkge1xuICAgIGNvbnN0IG9sZFZhbHVlID0gY3VycmVudFRlbXBsYXRlW2tleV07XG4gICAgY29uc3QgbmV3VmFsdWUgPSBuZXdUZW1wbGF0ZVtrZXldO1xuICAgIGlmIChkZWVwRXF1YWwob2xkVmFsdWUsIG5ld1ZhbHVlKSkge1xuICAgICAgY29udGludWU7XG4gICAgfVxuICAgIGNvbnN0IGhhbmRsZXI6IERpZmZIYW5kbGVyID0gRElGRl9IQU5ETEVSU1trZXldXG4gICAgICAgICAgICAgICAgICB8fCAoKF9kaWZmLCBvbGRWLCBuZXdWKSA9PiB1bmtub3duW2tleV0gPSBpbXBsLmRpZmZVbmtub3duKG9sZFYsIG5ld1YpKTtcbiAgICBoYW5kbGVyKGRpZmZlcmVuY2VzLCBvbGRWYWx1ZSwgbmV3VmFsdWUpO1xuICB9XG4gIGlmIChPYmplY3Qua2V5cyh1bmtub3duKS5sZW5ndGggPiAwKSB7XG4gICAgZGlmZmVyZW5jZXMudW5rbm93biA9IG5ldyB0eXBlcy5EaWZmZXJlbmNlQ29sbGVjdGlvbih1bmtub3duKTtcbiAgfVxuXG4gIHJldHVybiBuZXcgdHlwZXMuVGVtcGxhdGVEaWZmKGRpZmZlcmVuY2VzKTtcbn1cblxuLyoqXG4gKiBSZXBsYWNlIGFsbCByZWZlcmVuY2VzIHRvIHRoZSBnaXZlbiBsb2dpY2FsSUQgb24gdGhlIGdpdmVuIHRlbXBsYXRlLCBpbi1wbGFjZVxuICpcbiAqIFJldHVybnMgdHJ1ZSBpZiBhbnkgcmVmZXJlbmNlcyB3ZXJlIHJlcGxhY2VkLlxuICovXG5mdW5jdGlvbiBwcm9wYWdhdGVSZXBsYWNlZFJlZmVyZW5jZXModGVtcGxhdGU6IG9iamVjdCwgbG9naWNhbElkOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgbGV0IHJldCA9IGZhbHNlO1xuXG4gIGZ1bmN0aW9uIHJlY3Vyc2Uob2JqOiBhbnkpIHtcbiAgICBpZiAoQXJyYXkuaXNBcnJheShvYmopKSB7XG4gICAgICBvYmouZm9yRWFjaChyZWN1cnNlKTtcbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIG9iaiA9PT0gJ29iamVjdCcgJiYgb2JqICE9PSBudWxsKSB7XG4gICAgICBpZiAoIXJlcGxhY2VSZWZlcmVuY2Uob2JqKSkge1xuICAgICAgICBPYmplY3QudmFsdWVzKG9iaikuZm9yRWFjaChyZWN1cnNlKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiByZXBsYWNlUmVmZXJlbmNlKG9iajogYW55KSB7XG4gICAgY29uc3Qga2V5cyA9IE9iamVjdC5rZXlzKG9iaik7XG4gICAgaWYgKGtleXMubGVuZ3RoICE9PSAxKSB7IHJldHVybiBmYWxzZTsgfVxuICAgIGNvbnN0IGtleSA9IGtleXNbMF07XG5cbiAgICBpZiAoa2V5ID09PSAnUmVmJykge1xuICAgICAgaWYgKG9iai5SZWYgPT09IGxvZ2ljYWxJZCkge1xuICAgICAgICBvYmouUmVmID0gbG9naWNhbElkICsgJyAocmVwbGFjZWQpJztcbiAgICAgICAgcmV0ID0gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIGlmIChrZXkuc3RhcnRzV2l0aCgnRm46OicpKSB7XG4gICAgICBpZiAoQXJyYXkuaXNBcnJheShvYmpba2V5XSkgJiYgb2JqW2tleV0ubGVuZ3RoID4gMCAmJiBvYmpba2V5XVswXSA9PT0gbG9naWNhbElkKSB7XG4gICAgICAgIG9ialtrZXldWzBdID0gbG9naWNhbElkICsgJyhyZXBsYWNlZCknO1xuICAgICAgICByZXQgPSB0cnVlO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcmVjdXJzZSh0ZW1wbGF0ZSk7XG4gIHJldHVybiByZXQ7XG59XG5cbmZ1bmN0aW9uIGRlZXBDb3B5KHg6IGFueSk6IGFueSB7XG4gIGlmIChBcnJheS5pc0FycmF5KHgpKSB7XG4gICAgcmV0dXJuIHgubWFwKGRlZXBDb3B5KTtcbiAgfVxuXG4gIGlmICh0eXBlb2YgeCA9PT0gJ29iamVjdCcgJiYgeCAhPT0gbnVsbCkge1xuICAgIGNvbnN0IHJldDogYW55ID0ge307XG4gICAgZm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXMoeCkpIHtcbiAgICAgIHJldFtrZXldID0gZGVlcENvcHkoeFtrZXldKTtcbiAgICB9XG4gICAgcmV0dXJuIHJldDtcbiAgfVxuXG4gIHJldHVybiB4O1xufVxuXG5mdW5jdGlvbiBtYWtlQWxsUmVzb3VyY2VDaGFuZ2VzSW1wb3J0cyhkaWZmOiB0eXBlcy5UZW1wbGF0ZURpZmYpIHtcbiAgZGlmZi5yZXNvdXJjZXMuZm9yRWFjaERpZmZlcmVuY2UoKF9sb2dpY2FsSWQ6IHN0cmluZywgY2hhbmdlOiB0eXBlcy5SZXNvdXJjZURpZmZlcmVuY2UpID0+IHtcbiAgICBjaGFuZ2UuaXNJbXBvcnQgPSB0cnVlO1xuICB9KTtcbn1cblxuZnVuY3Rpb24gbm9ybWFsaXplKHRlbXBsYXRlOiBhbnkpIHtcbiAgaWYgKHR5cGVvZiB0ZW1wbGF0ZSA9PT0gJ29iamVjdCcpIHtcbiAgICBmb3IgKGNvbnN0IGtleSBvZiAoT2JqZWN0LmtleXModGVtcGxhdGUgPz8ge30pKSkge1xuICAgICAgaWYgKGtleSA9PT0gJ0ZuOjpHZXRBdHQnICYmIHR5cGVvZiB0ZW1wbGF0ZVtrZXldID09PSAnc3RyaW5nJykge1xuICAgICAgICB0ZW1wbGF0ZVtrZXldID0gdGVtcGxhdGVba2V5XS5zcGxpdCgnLicpO1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH0gZWxzZSBpZiAoa2V5ID09PSAnRGVwZW5kc09uJykge1xuICAgICAgICBpZiAodHlwZW9mIHRlbXBsYXRlW2tleV0gPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgdGVtcGxhdGVba2V5XSA9IFt0ZW1wbGF0ZVtrZXldXTtcbiAgICAgICAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KHRlbXBsYXRlW2tleV0pKSB7XG4gICAgICAgICAgdGVtcGxhdGVba2V5XSA9IHRlbXBsYXRlW2tleV0uc29ydCgpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICBpZiAoQXJyYXkuaXNBcnJheSh0ZW1wbGF0ZVtrZXldKSkge1xuICAgICAgICBmb3IgKGNvbnN0IGVsZW1lbnQgb2YgKHRlbXBsYXRlW2tleV0pKSB7XG4gICAgICAgICAgbm9ybWFsaXplKGVsZW1lbnQpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBub3JtYWxpemUodGVtcGxhdGVba2V5XSk7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iXX0=","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.diffUnknown = exports.diffResource = exports.diffParameter = exports.diffOutput = exports.diffMetadata = exports.diffMapping = exports.diffCondition = exports.diffAttribute = void 0;\nconst types = require(\"./types\");\nconst util_1 = require(\"./util\");\nfunction diffAttribute(oldValue, newValue) {\n return new types.Difference(_asString(oldValue), _asString(newValue));\n}\nexports.diffAttribute = diffAttribute;\nfunction diffCondition(oldValue, newValue) {\n return new types.ConditionDifference(oldValue, newValue);\n}\nexports.diffCondition = diffCondition;\nfunction diffMapping(oldValue, newValue) {\n return new types.MappingDifference(oldValue, newValue);\n}\nexports.diffMapping = diffMapping;\nfunction diffMetadata(oldValue, newValue) {\n return new types.MetadataDifference(oldValue, newValue);\n}\nexports.diffMetadata = diffMetadata;\nfunction diffOutput(oldValue, newValue) {\n return new types.OutputDifference(oldValue, newValue);\n}\nexports.diffOutput = diffOutput;\nfunction diffParameter(oldValue, newValue) {\n return new types.ParameterDifference(oldValue, newValue);\n}\nexports.diffParameter = diffParameter;\nfunction diffResource(oldValue, newValue) {\n const resourceType = {\n oldType: oldValue && oldValue.Type,\n newType: newValue && newValue.Type,\n };\n let propertyDiffs = {};\n let otherDiffs = {};\n if (resourceType.oldType !== undefined && resourceType.oldType === resourceType.newType) {\n // Only makes sense to inspect deeper if the types stayed the same\n const impl = (0, util_1.loadResourceModel)(resourceType.oldType);\n propertyDiffs = (0, util_1.diffKeyedEntities)(oldValue.Properties, newValue.Properties, (oldVal, newVal, key) => _diffProperty(oldVal, newVal, key, impl));\n otherDiffs = (0, util_1.diffKeyedEntities)(oldValue, newValue, _diffOther);\n delete otherDiffs.Properties;\n }\n return new types.ResourceDifference(oldValue, newValue, {\n resourceType, propertyDiffs, otherDiffs,\n });\n function _diffProperty(oldV, newV, key, resourceSpec) {\n let changeImpact = types.ResourceImpact.NO_CHANGE;\n const spec = resourceSpec?.properties?.[key];\n if (spec && !(0, util_1.deepEqual)(oldV, newV)) {\n switch (spec.causesReplacement) {\n case 'yes':\n changeImpact = types.ResourceImpact.WILL_REPLACE;\n break;\n case 'maybe':\n changeImpact = types.ResourceImpact.MAY_REPLACE;\n break;\n default:\n // In those cases, whatever is the current value is what we should keep\n changeImpact = types.ResourceImpact.WILL_UPDATE;\n }\n }\n return new types.PropertyDifference(oldV, newV, { changeImpact });\n }\n function _diffOther(oldV, newV) {\n return new types.Difference(oldV, newV);\n }\n}\nexports.diffResource = diffResource;\nfunction diffUnknown(oldValue, newValue) {\n return new types.Difference(oldValue, newValue);\n}\nexports.diffUnknown = diffUnknown;\n/**\n * Coerces a given value to +string | undefined+.\n *\n * @param value the value to be coerced.\n *\n * @returns +undefined+ if +value+ is +null+ or +undefined+,\n * +value+ if it is a +string+,\n * a compact JSON representation of +value+ otherwise.\n */\nfunction _asString(value) {\n if (value == null) {\n return undefined;\n }\n if (typeof value === 'string') {\n return value;\n }\n return JSON.stringify(value);\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFDQSxpQ0FBaUM7QUFDakMsaUNBQXlFO0FBRXpFLFNBQWdCLGFBQWEsQ0FBQyxRQUFhLEVBQUUsUUFBYTtJQUN4RCxPQUFPLElBQUksS0FBSyxDQUFDLFVBQVUsQ0FBUyxTQUFTLENBQUMsUUFBUSxDQUFDLEVBQUUsU0FBUyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7QUFDaEYsQ0FBQztBQUZELHNDQUVDO0FBRUQsU0FBZ0IsYUFBYSxDQUFDLFFBQXlCLEVBQUUsUUFBeUI7SUFDaEYsT0FBTyxJQUFJLEtBQUssQ0FBQyxtQkFBbUIsQ0FBQyxRQUFRLEVBQUUsUUFBUSxDQUFDLENBQUM7QUFDM0QsQ0FBQztBQUZELHNDQUVDO0FBRUQsU0FBZ0IsV0FBVyxDQUFDLFFBQXVCLEVBQUUsUUFBdUI7SUFDMUUsT0FBTyxJQUFJLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxRQUFRLEVBQUUsUUFBUSxDQUFDLENBQUM7QUFDekQsQ0FBQztBQUZELGtDQUVDO0FBRUQsU0FBZ0IsWUFBWSxDQUFDLFFBQXdCLEVBQUUsUUFBd0I7SUFDN0UsT0FBTyxJQUFJLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQyxRQUFRLEVBQUUsUUFBUSxDQUFDLENBQUM7QUFDMUQsQ0FBQztBQUZELG9DQUVDO0FBRUQsU0FBZ0IsVUFBVSxDQUFDLFFBQXNCLEVBQUUsUUFBc0I7SUFDdkUsT0FBTyxJQUFJLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLEVBQUUsUUFBUSxDQUFDLENBQUM7QUFDeEQsQ0FBQztBQUZELGdDQUVDO0FBRUQsU0FBZ0IsYUFBYSxDQUFDLFFBQXlCLEVBQUUsUUFBeUI7SUFDaEYsT0FBTyxJQUFJLEtBQUssQ0FBQyxtQkFBbUIsQ0FBQyxRQUFRLEVBQUUsUUFBUSxDQUFDLENBQUM7QUFDM0QsQ0FBQztBQUZELHNDQUVDO0FBRUQsU0FBZ0IsWUFB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T0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQy9CLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBSZXNvdXJjZSB9IGZyb20gJ0Bhd3MtY2RrL3NlcnZpY2Utc3BlYy10eXBlcyc7XG5pbXBvcnQgKiBhcyB0eXBlcyBmcm9tICcuL3R5cGVzJztcbmltcG9ydCB7IGRlZXBFcXVhbCwgZGlmZktleWVkRW50aXRpZXMsIGxvYWRSZXNvdXJjZU1vZGVsIH0gZnJvbSAnLi91dGlsJztcblxuZXhwb3J0IGZ1bmN0aW9uIGRpZmZBdHRyaWJ1dGUob2xkVmFsdWU6IGFueSwgbmV3VmFsdWU6IGFueSk6IHR5cGVzLkRpZmZlcmVuY2U8c3RyaW5nPiB7XG4gIHJldHVybiBuZXcgdHlwZXMuRGlmZmVyZW5jZTxzdHJpbmc+KF9hc1N0cmluZyhvbGRWYWx1ZSksIF9hc1N0cmluZyhuZXdWYWx1ZSkpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZGlmZkNvbmRpdGlvbihvbGRWYWx1ZTogdHlwZXMuQ29uZGl0aW9uLCBuZXdWYWx1ZTogdHlwZXMuQ29uZGl0aW9uKTogdHlwZXMuQ29uZGl0aW9uRGlmZmVyZW5jZSB7XG4gIHJldHVybiBuZXcgdHlwZXMuQ29uZGl0aW9uRGlmZmVyZW5jZShvbGRWYWx1ZSwgbmV3VmFsdWUpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZGlmZk1hcHBpbmcob2xkVmFsdWU6IHR5cGVzLk1hcHBpbmcsIG5ld1ZhbHVlOiB0eXBlcy5NYXBwaW5nKTogdHlwZXMuTWFwcGluZ0RpZmZlcmVuY2Uge1xuICByZXR1cm4gbmV3IHR5cGVzLk1hcHBpbmdEaWZmZXJlbmNlKG9sZFZhbHVlLCBuZXdWYWx1ZSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkaWZmTWV0YWRhdGEob2xkVmFsdWU6IHR5cGVzLk1ldGFkYXRhLCBuZXdWYWx1ZTogdHlwZXMuTWV0YWRhdGEpOiB0eXBlcy5NZXRhZGF0YURpZmZlcmVuY2Uge1xuICByZXR1cm4gbmV3IHR5cGVzLk1ldGFkYXRhRGlmZmVyZW5jZShvbGRWYWx1ZSwgbmV3VmFsdWUpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZGlmZk91dHB1dChvbGRWYWx1ZTogdHlwZXMuT3V0cHV0LCBuZXdWYWx1ZTogdHlwZXMuT3V0cHV0KTogdHlwZXMuT3V0cHV0RGlmZmVyZW5jZSB7XG4gIHJldHVybiBuZXcgdHlwZXMuT3V0cHV0RGlmZmVyZW5jZShvbGRWYWx1ZSwgbmV3VmFsdWUpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZGlmZlBhcmFtZXRlcihvbGRWYWx1ZTogdHlwZXMuUGFyYW1ldGVyLCBuZXdWYWx1ZTogdHlwZXMuUGFyYW1ldGVyKTogdHlwZXMuUGFyYW1ldGVyRGlmZmVyZW5jZSB7XG4gIHJldHVybiBuZXcgdHlwZXMuUGFyYW1ldGVyRGlmZmVyZW5jZShvbGRWYWx1ZSwgbmV3VmFsdWUpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZGlmZlJlc291cmNlKG9sZFZhbHVlPzogdHlwZXMuUmVzb3VyY2UsIG5ld1ZhbHVlPzogdHlwZXMuUmVzb3VyY2UpOiB0eXBlcy5SZXNvdXJjZURpZmZlcmVuY2Uge1xuICBjb25zdCByZXNvdXJjZVR5cGUgPSB7XG4gICAgb2xkVHlwZTogb2xkVmFsdWUgJiYgb2xkVmFsdWUuVHlwZSxcbiAgICBuZXdUeXBlOiBuZXdWYWx1ZSAmJiBuZXdWYWx1ZS5UeXBlLFxuICB9O1xuICBsZXQgcHJvcGVydHlEaWZmczogeyBba2V5OiBzdHJpbmddOiB0eXBlcy5Qcm9wZXJ0eURpZmZlcmVuY2U8YW55PiB9ID0ge307XG4gIGxldCBvdGhlckRpZmZzOiB7IFtrZXk6IHN0cmluZ106IHR5cGVzLkRpZmZlcmVuY2U8YW55PiB9ID0ge307XG5cbiAgaWYgKHJlc291cmNlVHlwZS5vbGRUeXBlICE9PSB1bmRlZmluZWQgJiYgcmVzb3VyY2VUeXBlLm9sZFR5cGUgPT09IHJlc291cmNlVHlwZS5uZXdUeXBlKSB7XG4gICAgLy8gT25seSBtYWtlcyBzZW5zZSB0byBpbnNwZWN0IGRlZXBlciBpZiB0aGUgdHlwZXMgc3RheWVkIHRoZSBzYW1lXG4gICAgY29uc3QgaW1wbCA9IGxvYWRSZXNvdXJjZU1vZGVsKHJlc291cmNlVHlwZS5vbGRUeXBlKTtcbiAgICBwcm9wZXJ0eURpZmZzID0gZGlmZktleWVkRW50aXRpZXMob2xkVmFsdWUhLlByb3BlcnRpZXMsXG4gICAgICBuZXdWYWx1ZSEuUHJvcGVydGllcyxcbiAgICAgIChvbGRWYWwsIG5ld1ZhbCwga2V5KSA9PiBfZGlmZlByb3BlcnR5KG9sZFZhbCwgbmV3VmFsLCBrZXksIGltcGwpKTtcblxuICAgIG90aGVyRGlmZnMgPSBkaWZmS2V5ZWRFbnRpdGllcyhvbGRWYWx1ZSwgbmV3VmFsdWUsIF9kaWZmT3RoZXIpO1xuICAgIGRlbGV0ZSBvdGhlckRpZmZzLlByb3BlcnRpZXM7XG4gIH1cblxuICByZXR1cm4gbmV3IHR5cGVzLlJlc291cmNlRGlmZmVyZW5jZShvbGRWYWx1ZSwgbmV3VmFsdWUsIHtcbiAgICByZXNvdXJjZVR5cGUsIHByb3BlcnR5RGlmZnMsIG90aGVyRGlmZnMsXG4gIH0pO1xuXG4gIGZ1bmN0aW9uIF9kaWZmUHJvcGVydHkob2xkVjogYW55LCBuZXdWOiBhbnksIGtleTogc3RyaW5nLCByZXNvdXJjZVNwZWM/OiBSZXNvdXJjZSkge1xuICAgIGxldCBjaGFuZ2VJbXBhY3QgPSB0eXBlcy5SZXNvdXJjZUltcGFjdC5OT19DSEFOR0U7XG5cbiAgICBjb25zdCBzcGVjID0gcmVzb3VyY2VTcGVjPy5wcm9wZXJ0aWVzPy5ba2V5XTtcbiAgICBpZiAoc3BlYyAmJiAhZGVlcEVxdWFsKG9sZFYsIG5ld1YpKSB7XG4gICAgICBzd2l0Y2ggKHNwZWMuY2F1c2VzUmVwbGFjZW1lbnQpIHtcbiAgICAgICAgY2FzZSAneWVzJzpcbiAgICAgICAgICBjaGFuZ2VJbXBhY3QgPSB0eXBlcy5SZXNvdXJjZUltcGFjdC5XSUxMX1JFUExBQ0U7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ21heWJlJzpcbiAgICAgICAgICBjaGFuZ2VJbXBhY3QgPSB0eXBlcy5SZXNvdXJjZUltcGFjdC5NQVlfUkVQTEFDRTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAvLyBJbiB0aG9zZSBjYXNlcywgd2hhdGV2ZXIgaXMgdGhlIGN1cnJlbnQgdmFsdWUgaXMgd2hhdCB3ZSBzaG91bGQga2VlcFxuICAgICAgICAgIGNoYW5nZUltcGFjdCA9IHR5cGVzLlJlc291cmNlSW1wYWN0LldJTExfVVBEQVRFO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBuZXcgdHlwZXMuUHJvcGVydHlEaWZmZXJlbmNlKG9sZFYsIG5ld1YsIHsgY2hhbmdlSW1wYWN0IH0pO1xuICB9XG5cbiAgZnVuY3Rpb24gX2RpZmZPdGhlcihvbGRWOiBhbnksIG5ld1Y6IGFueSkge1xuICAgIHJldHVybiBuZXcgdHlwZXMuRGlmZmVyZW5jZShvbGRWLCBuZXdWKTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZGlmZlVua25vd24ob2xkVmFsdWU6IGFueSwgbmV3VmFsdWU6IGFueSk6IHR5cGVzLkRpZmZlcmVuY2U8YW55PiB7XG4gIHJldHVybiBuZXcgdHlwZXMuRGlmZmVyZW5jZShvbGRWYWx1ZSwgbmV3VmFsdWUpO1xufVxuXG4vKipcbiAqIENvZXJjZXMgYSBnaXZlbiB2YWx1ZSB0byArc3RyaW5nIHwgdW5kZWZpbmVkKy5cbiAqXG4gKiBAcGFyYW0gdmFsdWUgdGhlIHZhbHVlIHRvIGJlIGNvZXJjZWQuXG4gKlxuICogQHJldHVybnMgK3VuZGVmaW5lZCsgaWYgK3ZhbHVlKyBpcyArbnVsbCsgb3IgK3VuZGVmaW5lZCssXG4gKiAgICAgICt2YWx1ZSsgaWYgaXQgaXMgYSArc3RyaW5nKyxcbiAqICAgICAgYSBjb21wYWN0IEpTT04gcmVwcmVzZW50YXRpb24gb2YgK3ZhbHVlKyBvdGhlcndpc2UuXG4gKi9cbmZ1bmN0aW9uIF9hc1N0cmluZyh2YWx1ZTogYW55KTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgaWYgKHZhbHVlID09IG51bGwpIHtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG4gIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnKSB7XG4gICAgcmV0dXJuIHZhbHVlIGFzIHN0cmluZztcbiAgfVxuICByZXR1cm4gSlNPTi5zdHJpbmdpZnkodmFsdWUpO1xufVxuIl19","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.mkUnparseable = exports.mkParsed = void 0;\nfunction mkParsed(value) {\n return { type: 'parsed', value };\n}\nexports.mkParsed = mkParsed;\nfunction mkUnparseable(value) {\n return {\n type: 'unparseable',\n repr: typeof value === 'string' ? value : JSON.stringify(value),\n };\n}\nexports.mkUnparseable = mkUnparseable;\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWF5YmUtcGFyc2VkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsibWF5YmUtcGFyc2VkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQWVBLFNBQWdCLFFBQVEsQ0FBSSxLQUFRO0lBQ2xDLE9BQU8sRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxDQUFDO0FBQ25DLENBQUM7QUFGRCw0QkFFQztBQUVELFNBQWdCLGFBQWEsQ0FBQyxLQUFVO0lBQ3RDLE9BQU87UUFDTCxJQUFJLEVBQUUsYUFBYTtRQUNuQixJQUFJLEVBQUUsT0FBTyxLQUFLLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDO0tBQ2hFLENBQUM7QUFDSixDQUFDO0FBTEQsc0NBS0MiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEEgdmFsdWUgdGhhdCBtYXkgb3IgbWF5IG5vdCBiZSBwYXJzZWFibGVcbiAqL1xuZXhwb3J0IHR5cGUgTWF5YmVQYXJzZWQ8QT4gPSBQYXJzZWQ8QT4gfCBVbnBhcnNlYWJsZUNmbjtcblxuZXhwb3J0IGludGVyZmFjZSBQYXJzZWQ8QT4ge1xuICByZWFkb25seSB0eXBlOiAncGFyc2VkJztcbiAgcmVhZG9ubHkgdmFsdWU6IEE7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVW5wYXJzZWFibGVDZm4ge1xuICByZWFkb25seSB0eXBlOiAndW5wYXJzZWFibGUnO1xuICByZWFkb25seSByZXByOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBta1BhcnNlZDxBPih2YWx1ZTogQSk6IFBhcnNlZDxBPiB7XG4gIHJldHVybiB7IHR5cGU6ICdwYXJzZWQnLCB2YWx1ZSB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbWtVbnBhcnNlYWJsZSh2YWx1ZTogYW55KTogVW5wYXJzZWFibGVDZm4ge1xuICByZXR1cm4ge1xuICAgIHR5cGU6ICd1bnBhcnNlYWJsZScsXG4gICAgcmVwcjogdHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJyA/IHZhbHVlIDogSlNPTi5zdHJpbmdpZnkodmFsdWUpLFxuICB9O1xufVxuIl19","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.TemplateAndChangeSetDiffMerger = void 0;\nconst types = require(\"../diff/types\");\n/**\n * The purpose of this class is to include differences from the ChangeSet to differences in the TemplateDiff.\n */\nclass TemplateAndChangeSetDiffMerger {\n static determineChangeSetReplacementMode(propertyChange) {\n if (propertyChange.Target?.RequiresRecreation === undefined) {\n // We can't determine if the resource will be replaced or not. That's what conditionally means.\n return 'Conditionally';\n }\n if (propertyChange.Target.RequiresRecreation === 'Always') {\n switch (propertyChange.Evaluation) {\n case 'Static':\n return 'Always';\n case 'Dynamic':\n // If Evaluation is 'Dynamic', then this may cause replacement, or it may not.\n // see 'Replacement': https://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_ResourceChange.html\n return 'Conditionally';\n }\n }\n return propertyChange.Target.RequiresRecreation;\n }\n constructor(props) {\n this.changeSet = props.changeSet;\n this.changeSetResources = props.changeSetResources ?? this.convertDescribeChangeSetOutputToChangeSetResources(this.changeSet);\n }\n /**\n * Read resources from the changeSet, extracting information into ChangeSetResources.\n */\n convertDescribeChangeSetOutputToChangeSetResources(changeSet) {\n const changeSetResources = {};\n for (const resourceChange of changeSet.Changes ?? []) {\n if (resourceChange.ResourceChange?.LogicalResourceId === undefined) {\n continue; // Being defensive, here.\n }\n const propertyReplacementModes = {};\n for (const propertyChange of resourceChange.ResourceChange.Details ?? []) { // Details is only included if resourceChange.Action === 'Modify'\n if (propertyChange.Target?.Attribute === 'Properties' && propertyChange.Target.Name) {\n propertyReplacementModes[propertyChange.Target.Name] = {\n replacementMode: TemplateAndChangeSetDiffMerger.determineChangeSetReplacementMode(propertyChange),\n };\n }\n }\n changeSetResources[resourceChange.ResourceChange.LogicalResourceId] = {\n resourceWasReplaced: resourceChange.ResourceChange.Replacement === 'True',\n resourceType: resourceChange.ResourceChange.ResourceType ?? TemplateAndChangeSetDiffMerger.UNKNOWN_RESOURCE_TYPE, // DescribeChangeSet doesn't promise to have the ResourceType...\n propertyReplacementModes: propertyReplacementModes,\n };\n }\n return changeSetResources;\n }\n /**\n * This is writing over the \"ChangeImpact\" that was computed from the template difference, and instead using the ChangeImpact that is included from the ChangeSet.\n * Using the ChangeSet ChangeImpact is more accurate. The ChangeImpact tells us what the consequence is of changing the field. If changing the field causes resource\n * replacement (e.g., changing the name of an IAM role requires deleting and replacing the role), then ChangeImpact is \"Always\".\n */\n overrideDiffResourceChangeImpactWithChangeSetChangeImpact(logicalId, change) {\n // resourceType getter throws an error if resourceTypeChanged\n if ((change.resourceTypeChanged === true) || change.resourceType?.includes('AWS::Serverless')) {\n // CFN applies the SAM transform before creating the changeset, so the changeset contains no information about SAM resources\n return;\n }\n change.forEachDifference((type, name, value) => {\n if (type === 'Property') {\n if (!this.changeSetResources[logicalId]) {\n value.changeImpact = types.ResourceImpact.NO_CHANGE;\n value.isDifferent = false;\n return;\n }\n const changingPropertyCausesResourceReplacement = (this.changeSetResources[logicalId].propertyReplacementModes ?? {})[name]?.replacementMode;\n switch (changingPropertyCausesResourceReplacement) {\n case 'Always':\n value.changeImpact = types.ResourceImpact.WILL_REPLACE;\n break;\n case 'Never':\n value.changeImpact = types.ResourceImpact.WILL_UPDATE;\n break;\n case 'Conditionally':\n value.changeImpact = types.ResourceImpact.MAY_REPLACE;\n break;\n case undefined:\n value.changeImpact = types.ResourceImpact.NO_CHANGE;\n value.isDifferent = false;\n break;\n // otherwise, defer to the changeImpact from the template diff\n }\n }\n else if (type === 'Other') {\n switch (name) {\n case 'Metadata':\n // we want to ignore metadata changes in the diff, so compare newValue against newValue.\n change.setOtherChange('Metadata', new types.Difference(value.newValue, value.newValue));\n break;\n }\n }\n });\n }\n addImportInformationFromChangeset(resourceDiffs) {\n const imports = this.findResourceImports();\n resourceDiffs.forEachDifference((logicalId, change) => {\n if (imports.includes(logicalId)) {\n change.isImport = true;\n }\n });\n }\n findResourceImports() {\n const importedResourceLogicalIds = [];\n for (const resourceChange of this.changeSet?.Changes ?? []) {\n if (resourceChange.ResourceChange?.Action === 'Import') {\n importedResourceLogicalIds.push(resourceChange.ResourceChange.LogicalResourceId);\n }\n }\n return importedResourceLogicalIds;\n }\n}\nexports.TemplateAndChangeSetDiffMerger = TemplateAndChangeSetDiffMerger;\n// If we somehow cannot find the resourceType, then we'll mark it as UNKNOWN, so that can be seen in the diff.\nTemplateAndChangeSetDiffMerger.UNKNOWN_RESOURCE_TYPE = 'UNKNOWN_RESOURCE_TYPE';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVtcGxhdGUtYW5kLWNoYW5nZXNldC1kaWZmLW1lcmdlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInRlbXBsYXRlLWFuZC1jaGFuZ2VzZXQtZGlmZi1tZXJnZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBR0EsdUNBQXVDO0FBc0J2Qzs7R0FFRztBQUNILE1BQWEsOEJBQThCO0lBRWxDLE1BQU0sQ0FBQyxpQ0FBaUMsQ0FBQyxjQUE2QztRQUMzRixJQUFJLGNBQWMsQ0FBQyxNQUFNLEVBQUUsa0JBQWtCLEtBQUssU0FBUyxFQUFFLENBQUM7WUFDNUQsK0ZBQStGO1lBQy9GLE9BQU8sZUFBZSxDQUFDO1FBQ3pCLENBQUM7UUFFRCxJQUFJLGNBQWMsQ0FBQyxNQUFNLENBQUMsa0JBQWtCLEtBQUssUUFBUSxFQUFFLENBQUM7WUFDMUQsUUFBUSxjQUFjLENBQUMsVUFBVSxFQUFFLENBQUM7Z0JBQ2xDLEtBQUssUUFBUTtvQkFDWCxPQUFPLFFBQVEsQ0FBQztnQkFDbEIsS0FBSyxTQUFTO29CQUNaLDhFQUE4RTtvQkFDOUUsK0dBQStHO29CQUMvRyxPQUFPLGVBQWUsQ0FBQztZQUMzQixDQUFDO1FBQ0gsQ0FBQztRQUVELE9BQU8sY0FBYyxDQUFDLE1BQU0sQ0FBQyxrQkFBNEMsQ0FBQztJQUM1RSxDQUFDO0lBUUQsWUFBWSxLQUEwQztRQUNwRCxJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQyxTQUFTLENBQUM7UUFDakMsSUFBSSxDQUFDLGtCQUFrQixHQUFHLEtBQUssQ0FBQyxrQkFBa0IsSUFBSSxJQUFJLENBQUMsa0RBQWtELENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ2hJLENBQUM7SUFFRDs7T0FFRztJQUNLLGtEQUFrRCxDQUFDLFNBQWtDO1FBQzNGLE1BQU0sa0JBQWtCLEdBQTZCLEVBQUUsQ0FBQztRQUN4RCxLQUFLLE1BQU0sY0FBYyxJQUFJLFNBQVMsQ0FBQyxPQUFPLElBQUksRUFBRSxFQUFFLENBQUM7WUFDckQsSUFBSSxjQUFjLENBQUMsY0FBYyxFQUFFLGlCQUFpQixLQUFLLFNBQVMsRUFBRSxDQUFDO2dCQUNuRSxTQUFTLENBQUMseUJBQXlCO1lBQ3JDLENBQUM7WUFFRCxNQUFNLHdCQUF3QixHQUFxQyxFQUFFLENBQUM7WUFDdEUsS0FBSyxNQUFNLGNBQWMsSUFBSSxjQUFjLENBQUMsY0FBYyxDQUFDLE9BQU8sSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDLGlFQUFpRTtnQkFDM0ksSUFBSSxjQUFjLENBQUMsTUFBTSxFQUFFLFNBQVMsS0FBSyxZQUFZLElBQUksY0FBYyxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQztvQkFDcEYsd0JBQXdCLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRzt3QkFDckQsZUFBZSxFQUFFLDhCQUE4QixDQUFDLGlDQUFpQyxDQUFDLGNBQWMsQ0FBQztxQkFDbEcsQ0FBQztnQkFDSixDQUFDO1lBQ0gsQ0FBQztZQUVELGtCQUFrQixDQUFDLGNBQWMsQ0FBQyxjQUFjLENBQUMsaUJBQWlCLENBQUMsR0FBRztnQkFDcEUsbUJBQW1CLEVBQUUsY0FBYyxDQUFDLGNBQWMsQ0FBQyxXQUFXLEtBQUssTUFBTTtnQkFDekUsWUFBWSxFQUFFLGNBQWMsQ0FBQyxjQUFjLENBQUMsWUFBWSxJQUFJLDhCQUE4QixDQUFDLHFCQUFxQixFQUFFLGdFQUFnRTtnQkFDbEwsd0JBQXdCLEVBQUUsd0JBQXdCO2FBQ25ELENBQUM7UUFDSixDQUFDO1FBRUQsT0FBTyxrQkFBa0IsQ0FBQztJQUM1QixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNJLHlEQUF5RCxDQUFDLFNBQWlCLEVBQUUsTUFBZ0M7UUFDbEgsNkRBQTZEO1FBQzdELElBQUksQ0FBQyxNQUFNLENBQUMsbUJBQW1CLEtBQUssSUFBSSxDQUFDLElBQUksTUFBTSxDQUFDLFlBQVksRUFBRSxRQUFRLENBQUMsaUJBQWlCLENBQUMsRUFBRSxDQUFDO1lBQzlGLDRIQUE0SDtZQUM1SCxPQUFPO1FBQ1QsQ0FBQztRQUNELE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLElBQTBCLEVBQUUsSUFBWSxFQUFFLEtBQTRELEVBQUUsRUFBRTtZQUNsSSxJQUFJLElBQUksS0FBSyxVQUFVLEVBQUUsQ0FBQztnQkFDeEIsSUFBSSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDO29CQUN2QyxLQUF1QyxDQUFDLFlBQVksR0FBRyxLQUFLLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQztvQkFDdEYsS0FBdUMsQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDO29CQUM3RCxPQUFPO2dCQUNULENBQUM7Z0JBRUQsTUFBTSx5Q0FBeUMsR0FBRyxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxTQUFTLENBQUMsQ0FBQyx3QkFBd0IsSUFBSSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxlQUFlLENBQUM7Z0JBQzdJLFFBQVEseUNBQXlDLEVBQUUsQ0FBQztvQkFDbEQsS0FBSyxRQUFRO3dCQUNWLEtBQXVDLENBQUMsWUFBWSxHQUFHLEtBQUssQ0FBQyxjQUFjLENBQUMsWUFBWSxDQUFDO3dCQUMxRixNQUFNO29CQUNSLEtBQUssT0FBTzt3QkFDVCxLQUF1QyxDQUFDLFlBQVksR0FBRyxLQUFLLENBQUMsY0FBYyxDQUFDLFdBQVcsQ0FBQzt3QkFDekYsTUFBTTtvQkFDUixLQUFLLGVBQWU7d0JBQ2pCLEtBQXVDLENBQUMsWUFBWSxHQUFHLEtBQUssQ0FBQyxjQUFjLENBQUMsV0FBVyxDQUFDO3dCQUN6RixNQUFNO29CQUNSLEtBQUssU0FBUzt3QkFDWCxLQUF1QyxDQUFDLFlBQVksR0FBRyxLQUFLLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQzt3QkFDdEYsS0FBdUMsQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDO3dCQUM3RCxNQUFNO29CQUNSLDhEQUE4RDtnQkFDaEUsQ0FBQztZQUNILENBQUM7aUJBQU0sSUFBSSxJQUFJLEtBQUssT0FBTyxFQUFFLENBQUM7Z0JBQzVCLFFBQVEsSUFBSSxFQUFFLENBQUM7b0JBQ2IsS0FBSyxVQUFVO3dCQUNiLHdGQUF3Rjt3QkFDeEYsTUFBTSxDQUFDLGNBQWMsQ0FBQyxVQUFVLEVBQUUsSUFBSSxLQUFLLENBQUMsVUFBVSxDQUFTLEtBQUssQ0FBQyxRQUFRLEVBQUUsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7d0JBQ2hHLE1BQU07Z0JBQ1YsQ0FBQztZQUNILENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFTSxpQ0FBaUMsQ0FBQyxhQUFtRjtRQUMxSCxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztRQUMzQyxhQUFhLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxTQUFpQixFQUFFLE1BQWdDLEVBQUUsRUFBRTtZQUN0RixJQUFJLE9BQU8sQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQztnQkFDaEMsTUFBTSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUM7WUFDekIsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVNLG1CQUFtQjtRQUN4QixNQUFNLDBCQUEwQixHQUFHLEVBQUUsQ0FBQztRQUN0QyxLQUFLLE1BQU0sY0FBYyxJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUUsT0FBTyxJQUFJLEVBQUUsRUFBRSxDQUFDO1lBQzNELElBQUksY0FBYyxDQUFDLGNBQWMsRUFBRSxNQUFNLEtBQUssUUFBUSxFQUFFLENBQUM7Z0JBQ3ZELDBCQUEwQixDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsY0FBYyxDQUFDLGlCQUFpQixDQUFDLENBQUM7WUFDbkYsQ0FBQztRQUNILENBQUM7UUFFRCxPQUFPLDBCQUEwQixDQUFDO0lBQ3BDLENBQUM7O0FBL0hILHdFQWdJQztBQTFHQyw4R0FBOEc7QUFDL0Ysb0RBQXFCLEdBQUcsdUJBQXVCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBUaGUgU0RLIGlzIG9ubHkgdXNlZCB0byByZWZlcmVuY2UgYERlc2NyaWJlQ2hhbmdlU2V0T3V0cHV0YCwgc28gdGhlIFNESyBpcyBhZGRlZCBhcyBhIGRldkRlcGVuZGVuY3kuXG4vLyBUaGUgU0RLIHNob3VsZCBub3QgbWFrZSBuZXR3b3JrIGNhbGxzIGhlcmVcbmltcG9ydCB0eXBlIHsgRGVzY3JpYmVDaGFuZ2VTZXRPdXRwdXQgYXMgRGVzY3JpYmVDaGFuZ2VTZXQsIFJlc291cmNlQ2hhbmdlRGV0YWlsIGFzIFJDRCB9IGZyb20gJ0Bhd3Mtc2RrL2NsaWVudC1jbG91ZGZvcm1hdGlvbic7XG5pbXBvcnQgKiBhcyB0eXBlcyBmcm9tICcuLi9kaWZmL3R5cGVzJztcblxuZXhwb3J0IHR5cGUgRGVzY3JpYmVDaGFuZ2VTZXRPdXRwdXQgPSBEZXNjcmliZUNoYW5nZVNldDtcbnR5cGUgQ2hhbmdlU2V0UmVzb3VyY2VDaGFuZ2VEZXRhaWwgPSBSQ0Q7XG5cbmludGVyZmFjZSBUZW1wbGF0ZUFuZENoYW5nZVNldERpZmZNZXJnZXJPcHRpb25zIHtcbiAgLypcbiAgICogT25seSBzcGVjaWZpYWJsZSBmb3IgdGVzdGluZy4gT3RoZXJ3aXNlLCB0aGlzIGlzIHRoZSBkYXRhc3RydWN0dXJlIHRoYXQgdGhlIGNoYW5nZVNldCBpcyBjb252ZXJ0ZWQgaW50byBzb1xuICAgKiB0aGF0IHdlIG9ubHkgcGF5IGF0dGVudGlvbiB0byB0aGUgc3Vic2V0IG9mIGNoYW5nZVNldCBwcm9wZXJ0aWVzIHRoYXQgYXJlIHJlbGV2YW50IGZvciBjb21wdXRpbmcgdGhlIGRpZmYuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gdGhlIGNoYW5nZVNldCBpcyBjb252ZXJ0ZWQgaW50byB0aGlzIGRhdGFzdHJ1Y3R1cmUuXG4gICovXG4gIHJlYWRvbmx5IGNoYW5nZVNldFJlc291cmNlcz86IHR5cGVzLkNoYW5nZVNldFJlc291cmNlcztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBUZW1wbGF0ZUFuZENoYW5nZVNldERpZmZNZXJnZXJQcm9wcyBleHRlbmRzIFRlbXBsYXRlQW5kQ2hhbmdlU2V0RGlmZk1lcmdlck9wdGlvbnMge1xuICAvKlxuICAgKiBUaGUgY2hhbmdlc2V0IHRoYXQgd2lsbCBiZSByZWFkIGFuZCBtZXJnZWQgaW50byB0aGUgdGVtcGxhdGUgZGlmZi5cbiAgKi9cbiAgcmVhZG9ubHkgY2hhbmdlU2V0OiBEZXNjcmliZUNoYW5nZVNldE91dHB1dDtcbn1cblxuLyoqXG4gKiBUaGUgcHVycG9zZSBvZiB0aGlzIGNsYXNzIGlzIHRvIGluY2x1ZGUgZGlmZmVyZW5jZXMgZnJvbSB0aGUgQ2hhbmdlU2V0IHRvIGRpZmZlcmVuY2VzIGluIHRoZSBUZW1wbGF0ZURpZmYuXG4gKi9cbmV4cG9ydCBjbGFzcyBUZW1wbGF0ZUFuZENoYW5nZVNldERpZmZNZXJnZXIge1xuXG4gIHB1YmxpYyBzdGF0aWMgZGV0ZXJtaW5lQ2hhbmdlU2V0UmVwbGFjZW1lbnRNb2RlKHByb3BlcnR5Q2hhbmdlOiBDaGFuZ2VTZXRSZXNvdXJjZUNoYW5nZURldGFpbCk6IHR5cGVzLlJlcGxhY2VtZW50TW9kZXMge1xuICAgIGlmIChwcm9wZXJ0eUNoYW5nZS5UYXJnZXQ/LlJlcXVpcmVzUmVjcmVhdGlvbiA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAvLyBXZSBjYW4ndCBkZXRlcm1pbmUgaWYgdGhlIHJlc291cmNlIHdpbGwgYmUgcmVwbGFjZWQgb3Igbm90LiBUaGF0J3Mgd2hhdCBjb25kaXRpb25hbGx5IG1lYW5zLlxuICAgICAgcmV0dXJuICdDb25kaXRpb25hbGx5JztcbiAgICB9XG5cbiAgICBpZiAocHJvcGVydHlDaGFuZ2UuVGFyZ2V0LlJlcXVpcmVzUmVjcmVhdGlvbiA9PT0gJ0Fsd2F5cycpIHtcbiAgICAgIHN3aXRjaCAocHJvcGVydHlDaGFuZ2UuRXZhbHVhdGlvbikge1xuICAgICAgICBjYXNlICdTdGF0aWMnOlxuICAgICAgICAgIHJldHVybiAnQWx3YXlzJztcbiAgICAgICAgY2FzZSAnRHluYW1pYyc6XG4gICAgICAgICAgLy8gSWYgRXZhbHVhdGlvbiBpcyAnRHluYW1pYycsIHRoZW4gdGhpcyBtYXkgY2F1c2UgcmVwbGFjZW1lbnQsIG9yIGl0IG1heSBub3QuXG4gICAgICAgICAgLy8gc2VlICdSZXBsYWNlbWVudCc6IGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NDbG91ZEZvcm1hdGlvbi9sYXRlc3QvQVBJUmVmZXJlbmNlL0FQSV9SZXNvdXJjZUNoYW5nZS5odG1sXG4gICAgICAgICAgcmV0dXJuICdDb25kaXRpb25hbGx5JztcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gcHJvcGVydHlDaGFuZ2UuVGFyZ2V0LlJlcXVpcmVzUmVjcmVhdGlvbiBhcyB0eXBlcy5SZXBsYWNlbWVudE1vZGVzO1xuICB9XG5cbiAgLy8gSWYgd2Ugc29tZWhvdyBjYW5ub3QgZmluZCB0aGUgcmVzb3VyY2VUeXBlLCB0aGVuIHdlJ2xsIG1hcmsgaXQgYXMgVU5LTk9XTiwgc28gdGhhdCBjYW4gYmUgc2VlbiBpbiB0aGUgZGlmZi5cbiAgcHJpdmF0ZSBzdGF0aWMgVU5LTk9XTl9SRVNPVVJDRV9UWVBFID0gJ1VOS05PV05fUkVTT1VSQ0VfVFlQRSc7XG5cbiAgcHVibGljIGNoYW5nZVNldDogRGVzY3JpYmVDaGFuZ2VTZXRPdXRwdXQgfCB1bmRlZmluZWQ7XG4gIHB1YmxpYyBjaGFuZ2VTZXRSZXNvdXJjZXM6IHR5cGVzLkNoYW5nZVNldFJlc291cmNlcztcblxuICBjb25zdHJ1Y3Rvcihwcm9wczogVGVtcGxhdGVBbmRDaGFuZ2VTZXREaWZmTWVyZ2VyUHJvcHMpIHtcbiAgICB0aGlzLmNoYW5nZVNldCA9IHByb3BzLmNoYW5nZVNldDtcbiAgICB0aGlzLmNoYW5nZVNldFJlc291cmNlcyA9IHByb3BzLmNoYW5nZVNldFJlc291cmNlcyA/PyB0aGlzLmNvbnZlcnREZXNjcmliZUNoYW5nZVNldE91dHB1dFRvQ2hhbmdlU2V0UmVzb3VyY2VzKHRoaXMuY2hhbmdlU2V0KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZWFkIHJlc291cmNlcyBmcm9tIHRoZSBjaGFuZ2VTZXQsIGV4dHJhY3RpbmcgaW5mb3JtYXRpb24gaW50byBDaGFuZ2VTZXRSZXNvdXJjZXMuXG4gICAqL1xuICBwcml2YXRlIGNvbnZlcnREZXNjcmliZUNoYW5nZVNldE91dHB1dFRvQ2hhbmdlU2V0UmVzb3VyY2VzKGNoYW5nZVNldDogRGVzY3JpYmVDaGFuZ2VTZXRPdXRwdXQpOiB0eXBlcy5DaGFuZ2VTZXRSZXNvdXJjZXMge1xuICAgIGNvbnN0IGNoYW5nZVNldFJlc291cmNlczogdHlwZXMuQ2hhbmdlU2V0UmVzb3VyY2VzID0ge307XG4gICAgZm9yIChjb25zdCByZXNvdXJjZUNoYW5nZSBvZiBjaGFuZ2VTZXQuQ2hhbmdlcyA/PyBbXSkge1xuICAgICAgaWYgKHJlc291cmNlQ2hhbmdlLlJlc291cmNlQ2hhbmdlPy5Mb2dpY2FsUmVzb3VyY2VJZCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGNvbnRpbnVlOyAvLyBCZWluZyBkZWZlbnNpdmUsIGhlcmUuXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHByb3BlcnR5UmVwbGFjZW1lbnRNb2RlczogdHlwZXMuUHJvcGVydHlSZXBsYWNlbWVudE1vZGVNYXAgPSB7fTtcbiAgICAgIGZvciAoY29uc3QgcHJvcGVydHlDaGFuZ2Ugb2YgcmVzb3VyY2VDaGFuZ2UuUmVzb3VyY2VDaGFuZ2UuRGV0YWlscyA/PyBbXSkgeyAvLyBEZXRhaWxzIGlzIG9ubHkgaW5jbHVkZWQgaWYgcmVzb3VyY2VDaGFuZ2UuQWN0aW9uID09PSAnTW9kaWZ5J1xuICAgICAgICBpZiAocHJvcGVydHlDaGFuZ2UuVGFyZ2V0Py5BdHRyaWJ1dGUgPT09ICdQcm9wZXJ0aWVzJyAmJiBwcm9wZXJ0eUNoYW5nZS5UYXJnZXQuTmFtZSkge1xuICAgICAgICAgIHByb3BlcnR5UmVwbGFjZW1lbnRNb2Rlc1twcm9wZXJ0eUNoYW5nZS5UYXJnZXQuTmFtZV0gPSB7XG4gICAgICAgICAgICByZXBsYWNlbWVudE1vZGU6IFRlbXBsYXRlQW5kQ2hhbmdlU2V0RGlmZk1lcmdlci5kZXRlcm1pbmVDaGFuZ2VTZXRSZXBsYWNlbWVudE1vZGUocHJvcGVydHlDaGFuZ2UpLFxuICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgY2hhbmdlU2V0UmVzb3VyY2VzW3Jlc291cmNlQ2hhbmdlLlJlc291cmNlQ2hhbmdlLkxvZ2ljYWxSZXNvdXJjZUlkXSA9IHtcbiAgICAgICAgcmVzb3VyY2VXYXNSZXBsYWNlZDogcmVzb3VyY2VDaGFuZ2UuUmVzb3VyY2VDaGFuZ2UuUmVwbGFjZW1lbnQgPT09ICdUcnVlJyxcbiAgICAgICAgcmVzb3VyY2VUeXBlOiByZXNvdXJjZUNoYW5nZS5SZXNvdXJjZUNoYW5nZS5SZXNvdXJjZVR5cGUgPz8gVGVtcGxhdGVBbmRDaGFuZ2VTZXREaWZmTWVyZ2VyLlVOS05PV05fUkVTT1VSQ0VfVFlQRSwgLy8gRGVzY3JpYmVDaGFuZ2VTZXQgZG9lc24ndCBwcm9taXNlIHRvIGhhdmUgdGhlIFJlc291cmNlVHlwZS4uLlxuICAgICAgICBwcm9wZXJ0eVJlcGxhY2VtZW50TW9kZXM6IHByb3BlcnR5UmVwbGFjZW1lbnRNb2RlcyxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgcmV0dXJuIGNoYW5nZVNldFJlc291cmNlcztcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGlzIGlzIHdyaXRpbmcgb3ZlciB0aGUgXCJDaGFuZ2VJbXBhY3RcIiB0aGF0IHdhcyBjb21wdXRlZCBmcm9tIHRoZSB0ZW1wbGF0ZSBkaWZmZXJlbmNlLCBhbmQgaW5zdGVhZCB1c2luZyB0aGUgQ2hhbmdlSW1wYWN0IHRoYXQgaXMgaW5jbHVkZWQgZnJvbSB0aGUgQ2hhbmdlU2V0LlxuICAgKiBVc2luZyB0aGUgQ2hhbmdlU2V0IENoYW5nZUltcGFjdCBpcyBtb3JlIGFjY3VyYXRlLiBUaGUgQ2hhbmdlSW1wYWN0IHRlbGxzIHVzIHdoYXQgdGhlIGNvbnNlcXVlbmNlIGlzIG9mIGNoYW5naW5nIHRoZSBmaWVsZC4gSWYgY2hhbmdpbmcgdGhlIGZpZWxkIGNhdXNlcyByZXNvdXJjZVxuICAgKiByZXBsYWNlbWVudCAoZS5nLiwgY2hhbmdpbmcgdGhlIG5hbWUgb2YgYW4gSUFNIHJvbGUgcmVxdWlyZXMgZGVsZXRpbmcgYW5kIHJlcGxhY2luZyB0aGUgcm9sZSksIHRoZW4gQ2hhbmdlSW1wYWN0IGlzIFwiQWx3YXlzXCIuXG4gICAqL1xuICBwdWJsaWMgb3ZlcnJpZGVEaWZmUmVzb3VyY2VDaGFuZ2VJbXBhY3RXaXRoQ2hhbmdlU2V0Q2hhbmdlSW1wYWN0KGxvZ2ljYWxJZDogc3RyaW5nLCBjaGFuZ2U6IHR5cGVzLlJlc291cmNlRGlmZmVyZW5jZSkge1xuICAgIC8vIHJlc291cmNlVHlwZSBnZXR0ZXIgdGhyb3dzIGFuIGVycm9yIGlmIHJlc291cmNlVHlwZUNoYW5nZWRcbiAgICBpZiAoKGNoYW5nZS5yZXNvdXJjZVR5cGVDaGFuZ2VkID09PSB0cnVlKSB8fCBjaGFuZ2UucmVzb3VyY2VUeXBlPy5pbmNsdWRlcygnQVdTOjpTZXJ2ZXJsZXNzJykpIHtcbiAgICAgIC8vIENGTiBhcHBsaWVzIHRoZSBTQU0gdHJhbnNmb3JtIGJlZm9yZSBjcmVhdGluZyB0aGUgY2hhbmdlc2V0LCBzbyB0aGUgY2hhbmdlc2V0IGNvbnRhaW5zIG5vIGluZm9ybWF0aW9uIGFib3V0IFNBTSByZXNvdXJjZXNcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY2hhbmdlLmZvckVhY2hEaWZmZXJlbmNlKCh0eXBlOiAnUHJvcGVydHknIHwgJ090aGVyJywgbmFtZTogc3RyaW5nLCB2YWx1ZTogdHlwZXMuRGlmZmVyZW5jZTxhbnk+IHwgdHlwZXMuUHJvcGVydHlEaWZmZXJlbmNlPGFueT4pID0+IHtcbiAgICAgIGlmICh0eXBlID09PSAnUHJvcGVydHknKSB7XG4gICAgICAgIGlmICghdGhpcy5jaGFuZ2VTZXRSZXNvdXJjZXNbbG9naWNhbElkXSkge1xuICAgICAgICAgICh2YWx1ZSBhcyB0eXBlcy5Qcm9wZXJ0eURpZmZlcmVuY2U8YW55PikuY2hhbmdlSW1wYWN0ID0gdHlwZXMuUmVzb3VyY2VJbXBhY3QuTk9fQ0hBTkdFO1xuICAgICAgICAgICh2YWx1ZSBhcyB0eXBlcy5Qcm9wZXJ0eURpZmZlcmVuY2U8YW55PikuaXNEaWZmZXJlbnQgPSBmYWxzZTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBjaGFuZ2luZ1Byb3BlcnR5Q2F1c2VzUmVzb3VyY2VSZXBsYWNlbWVudCA9ICh0aGlzLmNoYW5nZVNldFJlc291cmNlc1tsb2dpY2FsSWRdLnByb3BlcnR5UmVwbGFjZW1lbnRNb2RlcyA/PyB7fSlbbmFtZV0/LnJlcGxhY2VtZW50TW9kZTtcbiAgICAgICAgc3dpdGNoIChjaGFuZ2luZ1Byb3BlcnR5Q2F1c2VzUmVzb3VyY2VSZXBsYWNlbWVudCkge1xuICAgICAgICAgIGNhc2UgJ0Fsd2F5cyc6XG4gICAgICAgICAgICAodmFsdWUgYXMgdHlwZXMuUHJvcGVydHlEaWZmZXJlbmNlPGFueT4pLmNoYW5nZUltcGFjdCA9IHR5cGVzLlJlc291cmNlSW1wYWN0LldJTExfUkVQTEFDRTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgJ05ldmVyJzpcbiAgICAgICAgICAgICh2YWx1ZSBhcyB0eXBlcy5Qcm9wZXJ0eURpZmZlcmVuY2U8YW55PikuY2hhbmdlSW1wYWN0ID0gdHlwZXMuUmVzb3VyY2VJbXBhY3QuV0lMTF9VUERBVEU7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlICdDb25kaXRpb25hbGx5JzpcbiAgICAgICAgICAgICh2YWx1ZSBhcyB0eXBlcy5Qcm9wZXJ0eURpZmZlcmVuY2U8YW55PikuY2hhbmdlSW1wYWN0ID0gdHlwZXMuUmVzb3VyY2VJbXBhY3QuTUFZX1JFUExBQ0U7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlIHVuZGVmaW5lZDpcbiAgICAgICAgICAgICh2YWx1ZSBhcyB0eXBlcy5Qcm9wZXJ0eURpZmZlcmVuY2U8YW55PikuY2hhbmdlSW1wYWN0ID0gdHlwZXMuUmVzb3VyY2VJbXBhY3QuTk9fQ0hBTkdFO1xuICAgICAgICAgICAgKHZhbHVlIGFzIHR5cGVzLlByb3BlcnR5RGlmZmVyZW5jZTxhbnk+KS5pc0RpZmZlcmVudCA9IGZhbHNlO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgLy8gb3RoZXJ3aXNlLCBkZWZlciB0byB0aGUgY2hhbmdlSW1wYWN0IGZyb20gdGhlIHRlbXBsYXRlIGRpZmZcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmICh0eXBlID09PSAnT3RoZXInKSB7XG4gICAgICAgIHN3aXRjaCAobmFtZSkge1xuICAgICAgICAgIGNhc2UgJ01ldGFkYXRhJzpcbiAgICAgICAgICAgIC8vIHdlIHdhbnQgdG8gaWdub3JlIG1ldGFkYXRhIGNoYW5nZXMgaW4gdGhlIGRpZmYsIHNvIGNvbXBhcmUgbmV3VmFsdWUgYWdhaW5zdCBuZXdWYWx1ZS5cbiAgICAgICAgICAgIGNoYW5nZS5zZXRPdGhlckNoYW5nZSgnTWV0YWRhdGEnLCBuZXcgdHlwZXMuRGlmZmVyZW5jZTxzdHJpbmc+KHZhbHVlLm5ld1ZhbHVlLCB2YWx1ZS5uZXdWYWx1ZSkpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBhZGRJbXBvcnRJbmZvcm1hdGlvbkZyb21DaGFuZ2VzZXQocmVzb3VyY2VEaWZmczogdHlwZXMuRGlmZmVyZW5jZUNvbGxlY3Rpb248dHlwZXMuUmVzb3VyY2UsIHR5cGVzLlJlc291cmNlRGlmZmVyZW5jZT4pIHtcbiAgICBjb25zdCBpbXBvcnRzID0gdGhpcy5maW5kUmVzb3VyY2VJbXBvcnRzKCk7XG4gICAgcmVzb3VyY2VEaWZmcy5mb3JFYWNoRGlmZmVyZW5jZSgobG9naWNhbElkOiBzdHJpbmcsIGNoYW5nZTogdHlwZXMuUmVzb3VyY2VEaWZmZXJlbmNlKSA9PiB7XG4gICAgICBpZiAoaW1wb3J0cy5pbmNsdWRlcyhsb2dpY2FsSWQpKSB7XG4gICAgICAgIGNoYW5nZS5pc0ltcG9ydCA9IHRydWU7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgZmluZFJlc291cmNlSW1wb3J0cygpOiAoc3RyaW5nIHwgdW5kZWZpbmVkKVtdIHtcbiAgICBjb25zdCBpbXBvcnRlZFJlc291cmNlTG9naWNhbElkcyA9IFtdO1xuICAgIGZvciAoY29uc3QgcmVzb3VyY2VDaGFuZ2Ugb2YgdGhpcy5jaGFuZ2VTZXQ/LkNoYW5nZXMgPz8gW10pIHtcbiAgICAgIGlmIChyZXNvdXJjZUNoYW5nZS5SZXNvdXJjZUNoYW5nZT8uQWN0aW9uID09PSAnSW1wb3J0Jykge1xuICAgICAgICBpbXBvcnRlZFJlc291cmNlTG9naWNhbElkcy5wdXNoKHJlc291cmNlQ2hhbmdlLlJlc291cmNlQ2hhbmdlLkxvZ2ljYWxSZXNvdXJjZUlkKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gaW1wb3J0ZWRSZXNvdXJjZUxvZ2ljYWxJZHM7XG4gIH1cbn1cbiJdfQ==","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isPropertyDifference = exports.ResourceDifference = exports.ResourceImpact = exports.ParameterDifference = exports.OutputDifference = exports.MetadataDifference = exports.MappingDifference = exports.ConditionDifference = exports.DifferenceCollection = exports.PropertyDifference = exports.Difference = exports.TemplateDiff = void 0;\nconst assert_1 = require(\"assert\");\nconst service_spec_types_1 = require(\"@aws-cdk/service-spec-types\");\nconst util_1 = require(\"./util\");\nconst iam_changes_1 = require(\"../iam/iam-changes\");\nconst security_group_changes_1 = require(\"../network/security-group-changes\");\n/** Semantic differences between two CloudFormation templates. */\nclass TemplateDiff {\n constructor(args) {\n if (args.awsTemplateFormatVersion !== undefined) {\n this.awsTemplateFormatVersion = args.awsTemplateFormatVersion;\n }\n if (args.description !== undefined) {\n this.description = args.description;\n }\n if (args.transform !== undefined) {\n this.transform = args.transform;\n }\n this.conditions = args.conditions || new DifferenceCollection({});\n this.mappings = args.mappings || new DifferenceCollection({});\n this.metadata = args.metadata || new DifferenceCollection({});\n this.outputs = args.outputs || new DifferenceCollection({});\n this.parameters = args.parameters || new DifferenceCollection({});\n this.resources = args.resources || new DifferenceCollection({});\n this.unknown = args.unknown || new DifferenceCollection({});\n this.iamChanges = new iam_changes_1.IamChanges({\n propertyChanges: this.scrutinizablePropertyChanges(iam_changes_1.IamChanges.IamPropertyScrutinies),\n resourceChanges: this.scrutinizableResourceChanges(iam_changes_1.IamChanges.IamResourceScrutinies),\n });\n this.securityGroupChanges = new security_group_changes_1.SecurityGroupChanges({\n egressRulePropertyChanges: this.scrutinizablePropertyChanges([service_spec_types_1.PropertyScrutinyType.EgressRules]),\n ingressRulePropertyChanges: this.scrutinizablePropertyChanges([service_spec_types_1.PropertyScrutinyType.IngressRules]),\n egressRuleResourceChanges: this.scrutinizableResourceChanges([service_spec_types_1.ResourceScrutinyType.EgressRuleResource]),\n ingressRuleResourceChanges: this.scrutinizableResourceChanges([service_spec_types_1.ResourceScrutinyType.IngressRuleResource]),\n });\n }\n get differenceCount() {\n let count = 0;\n if (this.awsTemplateFormatVersion !== undefined) {\n count += 1;\n }\n if (this.description !== undefined) {\n count += 1;\n }\n if (this.transform !== undefined) {\n count += 1;\n }\n count += this.conditions.differenceCount;\n count += this.mappings.differenceCount;\n count += this.metadata.differenceCount;\n count += this.outputs.differenceCount;\n count += this.parameters.differenceCount;\n count += this.resources.differenceCount;\n count += this.unknown.differenceCount;\n return count;\n }\n get isEmpty() {\n return this.differenceCount === 0;\n }\n /**\n * Return true if any of the permissions objects involve a broadening of permissions\n */\n get permissionsBroadened() {\n return this.iamChanges.permissionsBroadened || this.securityGroupChanges.rulesAdded;\n }\n /**\n * Return true if any of the permissions objects have changed\n */\n get permissionsAnyChanges() {\n return this.iamChanges.hasChanges || this.securityGroupChanges.hasChanges;\n }\n /**\n * Return all property changes of a given scrutiny type\n *\n * We don't just look at property updates; we also look at resource additions and deletions (in which\n * case there is no further detail on property values), and resource type changes.\n */\n scrutinizablePropertyChanges(scrutinyTypes) {\n const ret = new Array();\n for (const [resourceLogicalId, resourceChange] of Object.entries(this.resources.changes)) {\n if (resourceChange.resourceTypeChanged) {\n // we ignore resource type changes here, and handle them in scrutinizableResourceChanges()\n continue;\n }\n if (!resourceChange.resourceType) {\n // We use resourceChange.resourceType to loadResourceModel so that we can inspect the\n // properties of a resource even after the resource is removed from the template.\n continue;\n }\n const newTypeProps = (0, util_1.loadResourceModel)(resourceChange.resourceType)?.properties || {};\n for (const [propertyName, prop] of Object.entries(newTypeProps)) {\n const propScrutinyType = prop.scrutinizable || service_spec_types_1.PropertyScrutinyType.None;\n if (scrutinyTypes.includes(propScrutinyType)) {\n ret.push({\n resourceLogicalId,\n propertyName,\n resourceType: resourceChange.resourceType,\n scrutinyType: propScrutinyType,\n oldValue: resourceChange.oldProperties?.[propertyName],\n newValue: resourceChange.newProperties?.[propertyName],\n });\n }\n }\n }\n return ret;\n }\n /**\n * Return all resource changes of a given scrutiny type\n *\n * We don't just look at resource updates; we also look at resource additions and deletions (in which\n * case there is no further detail on property values), and resource type changes.\n */\n scrutinizableResourceChanges(scrutinyTypes) {\n const ret = new Array();\n for (const [resourceLogicalId, resourceChange] of Object.entries(this.resources.changes)) {\n if (!resourceChange) {\n continue;\n }\n const commonProps = {\n oldProperties: resourceChange.oldProperties,\n newProperties: resourceChange.newProperties,\n resourceLogicalId,\n };\n // changes to the Type of resources can happen when migrating from CFN templates that use Transforms\n if (resourceChange.resourceTypeChanged) {\n // Treat as DELETE+ADD\n if (resourceChange.oldResourceType) {\n const oldResourceModel = (0, util_1.loadResourceModel)(resourceChange.oldResourceType);\n if (oldResourceModel && this.resourceIsScrutinizable(oldResourceModel, scrutinyTypes)) {\n ret.push({\n ...commonProps,\n newProperties: undefined,\n resourceType: resourceChange.oldResourceType,\n scrutinyType: oldResourceModel.scrutinizable,\n });\n }\n }\n if (resourceChange.newResourceType) {\n const newResourceModel = (0, util_1.loadResourceModel)(resourceChange.newResourceType);\n if (newResourceModel && this.resourceIsScrutinizable(newResourceModel, scrutinyTypes)) {\n ret.push({\n ...commonProps,\n oldProperties: undefined,\n resourceType: resourceChange.newResourceType,\n scrutinyType: newResourceModel.scrutinizable,\n });\n }\n }\n }\n else {\n if (!resourceChange.resourceType) {\n continue;\n }\n const resourceModel = (0, util_1.loadResourceModel)(resourceChange.resourceType);\n if (resourceModel && this.resourceIsScrutinizable(resourceModel, scrutinyTypes)) {\n ret.push({\n ...commonProps,\n resourceType: resourceChange.resourceType,\n scrutinyType: resourceModel.scrutinizable,\n });\n }\n }\n }\n return ret;\n }\n resourceIsScrutinizable(res, scrutinyTypes) {\n return scrutinyTypes.includes(res.scrutinizable || service_spec_types_1.ResourceScrutinyType.None);\n }\n}\nexports.TemplateDiff = TemplateDiff;\n/**\n * Models an entity that changed between two versions of a CloudFormation template.\n */\nclass Difference {\n /**\n * @param oldValue the old value, cannot be equal (to the sense of +deepEqual+) to +newValue+.\n * @param newValue the new value, cannot be equal (to the sense of +deepEqual+) to +oldValue+.\n */\n constructor(oldValue, newValue) {\n this.oldValue = oldValue;\n this.newValue = newValue;\n if (oldValue === undefined && newValue === undefined) {\n throw new assert_1.AssertionError({ message: 'oldValue and newValue are both undefined!' });\n }\n this.isDifferent = !(0, util_1.deepEqual)(oldValue, newValue);\n }\n /** @returns +true+ if the element is new to the template. */\n get isAddition() {\n return this.oldValue === undefined;\n }\n /** @returns +true+ if the element was removed from the template. */\n get isRemoval() {\n return this.newValue === undefined;\n }\n /** @returns +true+ if the element was already in the template and is updated. */\n get isUpdate() {\n return this.oldValue !== undefined\n && this.newValue !== undefined;\n }\n}\nexports.Difference = Difference;\nclass PropertyDifference extends Difference {\n constructor(oldValue, newValue, args) {\n super(oldValue, newValue);\n this.changeImpact = args.changeImpact;\n }\n}\nexports.PropertyDifference = PropertyDifference;\nclass DifferenceCollection {\n constructor(diffs) {\n this.diffs = diffs;\n }\n get changes() {\n return onlyChanges(this.diffs);\n }\n get differenceCount() {\n return Object.values(this.changes).length;\n }\n get(logicalId) {\n const ret = this.diffs[logicalId];\n if (!ret) {\n throw new Error(`No object with logical ID '${logicalId}'`);\n }\n return ret;\n }\n remove(logicalId) {\n delete this.diffs[logicalId];\n }\n get logicalIds() {\n return Object.keys(this.changes);\n }\n /**\n * Returns a new TemplateDiff which only contains changes for which `predicate`\n * returns `true`.\n */\n filter(predicate) {\n const newChanges = {};\n for (const id of Object.keys(this.changes)) {\n const diff = this.changes[id];\n if (predicate(diff)) {\n newChanges[id] = diff;\n }\n }\n return new DifferenceCollection(newChanges);\n }\n /**\n * Invokes `cb` for all changes in this collection.\n *\n * Changes will be sorted as follows:\n * - Removed\n * - Added\n * - Updated\n * - Others\n *\n * @param cb\n */\n forEachDifference(cb) {\n const removed = new Array();\n const added = new Array();\n const updated = new Array();\n const others = new Array();\n for (const logicalId of this.logicalIds) {\n const change = this.changes[logicalId];\n if (change.isAddition) {\n added.push({ logicalId, change });\n }\n else if (change.isRemoval) {\n removed.push({ logicalId, change });\n }\n else if (change.isUpdate) {\n updated.push({ logicalId, change });\n }\n else if (change.isDifferent) {\n others.push({ logicalId, change });\n }\n }\n removed.forEach(v => cb(v.logicalId, v.change));\n added.forEach(v => cb(v.logicalId, v.change));\n updated.forEach(v => cb(v.logicalId, v.change));\n others.forEach(v => cb(v.logicalId, v.change));\n }\n}\nexports.DifferenceCollection = DifferenceCollection;\nclass ConditionDifference extends Difference {\n}\nexports.ConditionDifference = ConditionDifference;\nclass MappingDifference extends Difference {\n}\nexports.MappingDifference = MappingDifference;\nclass MetadataDifference extends Difference {\n}\nexports.MetadataDifference = MetadataDifference;\nclass OutputDifference extends Difference {\n}\nexports.OutputDifference = OutputDifference;\nclass ParameterDifference extends Difference {\n}\nexports.ParameterDifference = ParameterDifference;\nvar ResourceImpact;\n(function (ResourceImpact) {\n /** The existing physical resource will be updated */\n ResourceImpact[\"WILL_UPDATE\"] = \"WILL_UPDATE\";\n /** A new physical resource will be created */\n ResourceImpact[\"WILL_CREATE\"] = \"WILL_CREATE\";\n /** The existing physical resource will be replaced */\n ResourceImpact[\"WILL_REPLACE\"] = \"WILL_REPLACE\";\n /** The existing physical resource may be replaced */\n ResourceImpact[\"MAY_REPLACE\"] = \"MAY_REPLACE\";\n /** The existing physical resource will be destroyed */\n ResourceImpact[\"WILL_DESTROY\"] = \"WILL_DESTROY\";\n /** The existing physical resource will be removed from CloudFormation supervision */\n ResourceImpact[\"WILL_ORPHAN\"] = \"WILL_ORPHAN\";\n /** The existing physical resource will be added to CloudFormation supervision */\n ResourceImpact[\"WILL_IMPORT\"] = \"WILL_IMPORT\";\n /** There is no change in this resource */\n ResourceImpact[\"NO_CHANGE\"] = \"NO_CHANGE\";\n})(ResourceImpact || (exports.ResourceImpact = ResourceImpact = {}));\n/**\n * This function can be used as a reducer to obtain the resource-level impact of a list\n * of property-level impacts.\n * @param one the current worst impact so far.\n * @param two the new impact being considered (can be undefined, as we may not always be\n * able to determine some peroperty's impact).\n */\nfunction worstImpact(one, two) {\n if (!two) {\n return one;\n }\n const badness = {\n [ResourceImpact.NO_CHANGE]: 0,\n [ResourceImpact.WILL_IMPORT]: 0,\n [ResourceImpact.WILL_UPDATE]: 1,\n [ResourceImpact.WILL_CREATE]: 2,\n [ResourceImpact.WILL_ORPHAN]: 3,\n [ResourceImpact.MAY_REPLACE]: 4,\n [ResourceImpact.WILL_REPLACE]: 5,\n [ResourceImpact.WILL_DESTROY]: 6,\n };\n return badness[one] > badness[two] ? one : two;\n}\n/**\n * Change to a single resource between two CloudFormation templates\n *\n * This class can be mutated after construction.\n */\nclass ResourceDifference {\n constructor(oldValue, newValue, args) {\n this.oldValue = oldValue;\n this.newValue = newValue;\n this.resourceTypes = args.resourceType;\n this.propertyDiffs = args.propertyDiffs;\n this.otherDiffs = args.otherDiffs;\n this.isAddition = oldValue === undefined;\n this.isRemoval = newValue === undefined;\n this.isImport = undefined;\n }\n get oldProperties() {\n return this.oldValue && this.oldValue.Properties;\n }\n get newProperties() {\n return this.newValue && this.newValue.Properties;\n }\n /**\n * Whether this resource was modified at all\n */\n get isDifferent() {\n return this.differenceCount > 0 || this.oldResourceType !== this.newResourceType;\n }\n /**\n * Whether the resource was updated in-place\n */\n get isUpdate() {\n return this.isDifferent && !this.isAddition && !this.isRemoval;\n }\n get oldResourceType() {\n return this.resourceTypes.oldType;\n }\n get newResourceType() {\n return this.resourceTypes.newType;\n }\n /**\n * All actual property updates\n */\n get propertyUpdates() {\n return onlyChanges(this.propertyDiffs);\n }\n /**\n * All actual \"other\" updates\n */\n get otherChanges() {\n return onlyChanges(this.otherDiffs);\n }\n /**\n * Return whether the resource type was changed in this diff\n *\n * This is not a valid operation in CloudFormation but to be defensive we're going\n * to be aware of it anyway.\n */\n get resourceTypeChanged() {\n return (this.resourceTypes.oldType !== undefined\n && this.resourceTypes.newType !== undefined\n && this.resourceTypes.oldType !== this.resourceTypes.newType);\n }\n /**\n * Return the resource type if it was unchanged\n *\n * If the resource type was changed, it's an error to call this.\n */\n get resourceType() {\n if (this.resourceTypeChanged) {\n throw new Error('Cannot get .resourceType, because the type was changed');\n }\n return this.resourceTypes.oldType || this.resourceTypes.newType;\n }\n /**\n * Replace a PropertyChange in this object\n *\n * This affects the property diff as it is summarized to users, but it DOES\n * NOT affect either the \"oldValue\" or \"newValue\" values; those still contain\n * the actual template values as provided by the user (they might still be\n * used for downstream processing).\n */\n setPropertyChange(propertyName, change) {\n this.propertyDiffs[propertyName] = change;\n }\n /**\n * Replace a OtherChange in this object\n *\n * This affects the property diff as it is summarized to users, but it DOES\n * NOT affect either the \"oldValue\" or \"newValue\" values; those still contain\n * the actual template values as provided by the user (they might still be\n * used for downstream processing).\n */\n setOtherChange(otherName, change) {\n this.otherDiffs[otherName] = change;\n }\n get changeImpact() {\n if (this.isImport) {\n return ResourceImpact.WILL_IMPORT;\n }\n // Check the Type first\n if (this.resourceTypes.oldType !== this.resourceTypes.newType) {\n if (this.resourceTypes.oldType === undefined) {\n return ResourceImpact.WILL_CREATE;\n }\n if (this.resourceTypes.newType === undefined) {\n return this.oldValue.DeletionPolicy === 'Retain'\n ? ResourceImpact.WILL_ORPHAN\n : ResourceImpact.WILL_DESTROY;\n }\n return ResourceImpact.WILL_REPLACE;\n }\n // Base impact (before we mix in the worst of the property impacts);\n // WILL_UPDATE if we have \"other\" changes, NO_CHANGE if there are no \"other\" changes.\n const baseImpact = Object.keys(this.otherChanges).length > 0 ? ResourceImpact.WILL_UPDATE : ResourceImpact.NO_CHANGE;\n return Object.values(this.propertyDiffs)\n .map(elt => elt.changeImpact)\n .reduce(worstImpact, baseImpact);\n }\n /**\n * Count of actual differences (not of elements)\n */\n get differenceCount() {\n return Object.values(this.propertyUpdates).length\n + Object.values(this.otherChanges).length;\n }\n /**\n * Invoke a callback for each actual difference\n */\n forEachDifference(cb) {\n for (const key of Object.keys(this.propertyUpdates).sort()) {\n cb('Property', key, this.propertyUpdates[key]);\n }\n for (const key of Object.keys(this.otherChanges).sort()) {\n cb('Other', key, this.otherDiffs[key]);\n }\n }\n}\nexports.ResourceDifference = ResourceDifference;\nfunction isPropertyDifference(diff) {\n return diff.changeImpact !== undefined;\n}\nexports.isPropertyDifference = isPropertyDifference;\n/**\n * Filter a map of IDifferences down to only retain the actual changes\n */\nfunction onlyChanges(xs) {\n const ret = {};\n for (const [key, diff] of Object.entries(xs)) {\n if (diff.isDifferent) {\n ret[key] = diff;\n }\n }\n return ret;\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJ0eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxtQ0FBd0M7QUFDeEMsb0VBQW9IO0FBQ3BILGlDQUFzRDtBQUN0RCxvREFBZ0Q7QUFDaEQsOEVBQXlFO0FBZ0N6RSxpRUFBaUU7QUFDakUsTUFBYSxZQUFZO0lBdUJ2QixZQUFZLElBQW1CO1FBQzdCLElBQUksSUFBSSxDQUFDLHdCQUF3QixLQUFLLFNBQVMsRUFBRSxDQUFDO1lBQ2hELElBQUksQ0FBQyx3QkFBd0IsR0FBRyxJQUFJLENBQUMsd0JBQXdCLENBQUM7UUFDaEUsQ0FBQztRQUNELElBQUksSUFBSSxDQUFDLFdBQVcsS0FBSyxTQUFTLEVBQUUsQ0FBQztZQUNuQyxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUM7UUFDdEMsQ0FBQztRQUNELElBQUksSUFBSSxDQUFDLFNBQVMsS0FBSyxTQUFTLEVBQUUsQ0FBQztZQUNqQyxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUM7UUFDbEMsQ0FBQztRQUVELElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLFVBQVUsSUFBSSxJQUFJLG9CQUFvQixDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ2xFLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLFFBQVEsSUFBSSxJQUFJLG9CQUFvQixDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQzlELElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLFFBQVEsSUFBSSxJQUFJLG9CQUFvQixDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQzlELElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLE9BQU8sSUFBSSxJQUFJLG9CQUFvQixDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQzVELElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLFVBQVUsSUFBSSxJQUFJLG9CQUFvQixDQUFDLEVBQUUs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QyxPQUFPLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQztRQUM3QyxJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUNyQixHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDO1FBQ2xCLENBQUM7SUFDSCxDQUFDO0lBQ0QsT0FBTyxHQUFHLENBQUM7QUFDYixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQXNzZXJ0aW9uRXJyb3IgfSBmcm9tICdhc3NlcnQnO1xuaW1wb3J0IHsgUHJvcGVydHlTY3J1dGlueVR5cGUsIFJlc291cmNlU2NydXRpbnlUeXBlLCBSZXNvdXJjZSBhcyBSZXNvdXJjZU1vZGVsIH0gZnJvbSAnQGF3cy1jZGsvc2VydmljZS1zcGVjLXR5cGVzJztcbmltcG9ydCB7IGRlZXBFcXVhbCwgbG9hZFJlc291cmNlTW9kZWwgfSBmcm9tICcuL3V0aWwnO1xuaW1wb3J0IHsgSWFtQ2hhbmdlcyB9IGZyb20gJy4uL2lhbS9pYW0tY2hhbmdlcyc7XG5pbXBvcnQgeyBTZWN1cml0eUdyb3VwQ2hhbmdlcyB9IGZyb20gJy4uL25ldHdvcmsvc2VjdXJpdHktZ3JvdXAtY2hhbmdlcyc7XG5cbmV4cG9ydCB0eXBlIFByb3BlcnR5TWFwID0ge1trZXk6IHN0cmluZ106IGFueSB9O1xuXG5leHBvcnQgdHlwZSBDaGFuZ2VTZXRSZXNvdXJjZXMgPSB7IFtsb2dpY2FsSWQ6IHN0cmluZ106IENoYW5nZVNldFJlc291cmNlIH07XG5cbi8qKlxuICogQHBhcmFtIGJlZm9yZUNvbnRleHQgaXMgdGhlIEJlZm9yZUNvbnRleHQgZmllbGQgZnJvbSB0aGUgQ2hhbmdlU2V0LlJlc291cmNlQ2hhbmdlLkJlZm9yZUNvbnRleHQuIFRoaXMgaXMgdGhlIHBhcnQgb2YgdGhlIENsb3VkRm9ybWF0aW9uIHRlbXBsYXRlXG4gKiB0aGF0IGRlZmluZXMgd2hhdCB0aGUgcmVzb3VyY2UgaXMgYmVmb3JlIHRoZSBjaGFuZ2UgaXMgYXBwbGllZDsgdGhhdCBpcywgQmVmb3JlQ29udGV4dCBpcyBDbG91ZEZvcm1hdGlvblRlbXBsYXRlLlJlc291cmNlc1tMb2dpY2FsSWRdIGJlZm9yZSB0aGUgQ2hhbmdlU2V0IGlzIGV4ZWN1dGVkLlxuICpcbiAqIEBwYXJhbSBhZnRlckNvbnRleHQgc2FtZSBhcyBiZWZvcmVDb250ZXh0IGJ1dCBmb3IgYWZ0ZXIgdGhlIGNoYW5nZSBpcyBtYWRlOyB0aGF0IGlzLCBBZnRlckNvbnRleHQgaXMgQ2xvdWRGb3JtYXRpb25UZW1wbGF0ZS5SZXNvdXJjZXNbTG9naWNhbElkXSBhZnRlciB0aGUgQ2hhbmdlU2V0IGlzIGV4ZWN1dGVkLlxuICpcbiAqICAqIEhlcmUgaXMgYW4gZXhhbXBsZSBvZiB3aGF0IGEgYmVmb3JlQ29udGV4dC9hZnRlckNvbnRleHQgbG9va3MgbGlrZTpcbiAqICAne1wiUHJvcGVydGllc1wiOntcIlZhbHVlXCI6XCJzZGZsa2phXCIsXCJUeXBlXCI6XCJTdHJpbmdcIixcIk5hbWVcIjpcIm15U3NtUGFyYW1ldGVyRnJvbVN0YWNrXCJ9LFwiTWV0YWRhdGFcIjp7XCJhd3M6Y2RrOnBhdGhcIjpcImNkay9teVNzbVBhcmFtZXRlci9SZXNvdXJjZVwifX0nXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ2hhbmdlU2V0UmVzb3VyY2Uge1xuICByZXNvdXJjZVdhc1JlcGxhY2VkOiBib29sZWFuO1xuICByZXNvdXJjZVR5cGU6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgcHJvcGVydHlSZXBsYWNlbWVudE1vZGVzOiBQcm9wZXJ0eVJlcGxhY2VtZW50TW9kZU1hcCB8IHVuZGVmaW5lZDtcbn1cblxuZXhwb3J0IHR5cGUgUHJvcGVydHlSZXBsYWNlbWVudE1vZGVNYXAgPSB7XG4gIFtwcm9wZXJ0eU5hbWU6IHN0cmluZ106IHtcbiAgICByZXBsYWNlbWVudE1vZGU6IFJlcGxhY2VtZW50TW9kZXMgfCB1bmRlZmluZWQ7XG4gIH07XG59XG5cbi8qKlxuICogJ0Fsd2F5cycgbWVhbnMgdGhhdCBjaGFuZ2luZyB0aGUgY29ycmVzcG9uZGluZyBwcm9wZXJ0eSB3aWxsIGFsd2F5cyBjYXVzZSBhIHJlc291cmNlIHJlcGxhY2VtZW50LiBOZXZlciBtZWFucyBuZXZlci4gQ29uZGl0aW9uYWxseSBtZWFucyBtYXliZS5cbiAqL1xuZXhwb3J0IHR5cGUgUmVwbGFjZW1lbnRNb2RlcyA9ICdBbHdheXMnIHwgJ05ldmVyJyB8ICdDb25kaXRpb25hbGx5JztcblxuLyoqIFNlbWFudGljIGRpZmZlcmVuY2VzIGJldHdlZW4gdHdvIENsb3VkRm9ybWF0aW9uIHRlbXBsYXRlcy4gKi9cbmV4cG9ydCBjbGFzcyBUZW1wbGF0ZURpZmYgaW1wbGVtZW50cyBJVGVtcGxhdGVEaWZmIHtcbiAgcHVibGljIGF3c1RlbXBsYXRlRm9ybWF0VmVyc2lvbj86IERpZmZlcmVuY2U8c3RyaW5nPjtcbiAgcHVibGljIGRlc2NyaXB0aW9uPzogRGlmZmVyZW5jZTxzdHJpbmc+O1xuICBwdWJsaWMgdHJhbnNmb3JtPzogRGlmZmVyZW5jZTxzdHJpbmc+O1xuICBwdWJsaWMgY29uZGl0aW9uczogRGlmZmVyZW5jZUNvbGxlY3Rpb248Q29uZGl0aW9uLCBDb25kaXRpb25EaWZmZXJlbmNlPjtcbiAgcHVibGljIG1hcHBpbmdzOiBEaWZmZXJlbmNlQ29sbGVjdGlvbjxNYXBwaW5nLCBNYXBwaW5nRGlmZmVyZW5jZT47XG4gIHB1YmxpYyBtZXRhZGF0YTogRGlmZmVyZW5jZUNvbGxlY3Rpb248TWV0YWRhdGEsIE1ldGFkYXRhRGlmZmVyZW5jZT47XG4gIHB1YmxpYyBvdXRwdXRzOiBEaWZmZXJlbmNlQ29sbGVjdGlvbjxPdXRwdXQsIE91dHB1dERpZmZlcmVuY2U+O1xuICBwdWJsaWMgcGFyYW1ldGVyczogRGlmZmVyZW5jZUNvbGxlY3Rpb248UGFyYW1ldGVyLCBQYXJhbWV0ZXJEaWZmZXJlbmNlPjtcbiAgcHVibGljIHJlc291cmNlczogRGlmZmVyZW5jZUNvbGxlY3Rpb248UmVzb3VyY2UsIFJlc291cmNlRGlmZmVyZW5jZT47XG4gIC8qKiBUaGUgZGlmZmVyZW5jZXMgaW4gdW5rbm93bi91bmV4cGVjdGVkIHBhcnRzIG9mIHRoZSB0ZW1wbGF0ZSAqL1xuICBwdWJsaWMgdW5rbm93bjogRGlmZmVyZW5jZUNvbGxlY3Rpb248YW55LCBEaWZmZXJlbmNlPGFueT4+O1xuXG4gIC8qKlxuICAgKiBDaGFuZ2VzIHRvIElBTSBwb2xpY2llc1xuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGlhbUNoYW5nZXM6IElhbUNoYW5nZXM7XG5cbiAgLyoqXG4gICAqIENoYW5nZXMgdG8gU2VjdXJpdHkgR3JvdXAgaW5ncmVzcyBhbmQgZWdyZXNzIHJ1bGVzXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgc2VjdXJpdHlHcm91cENoYW5nZXM6IFNlY3VyaXR5R3JvdXBDaGFuZ2VzO1xuXG4gIGNvbnN0cnVjdG9yKGFyZ3M6IElUZW1wbGF0ZURpZmYpIHtcbiAgICBpZiAoYXJncy5hd3NUZW1wbGF0ZUZvcm1hdFZlcnNpb24gIT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy5hd3NUZW1wbGF0ZUZvcm1hdFZlcnNpb24gPSBhcmdzLmF3c1RlbXBsYXRlRm9ybWF0VmVyc2lvbjtcbiAgICB9XG4gICAgaWYgKGFyZ3MuZGVzY3JpcHRpb24gIT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy5kZXNjcmlwdGlvbiA9IGFyZ3MuZGVzY3JpcHRpb247XG4gICAgfVxuICAgIGlmIChhcmdzLnRyYW5zZm9ybSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLnRyYW5zZm9ybSA9IGFyZ3MudHJhbnNmb3JtO1xuICAgIH1cblxuICAgIHRoaXMuY29uZGl0aW9ucyA9IGFyZ3MuY29uZGl0aW9ucyB8fCBuZXcgRGlmZmVyZW5jZUNvbGxlY3Rpb24oe30pO1xuICAgIHRoaXMubWFwcGluZ3MgPSBhcmdzLm1hcHBpbmdzIHx8IG5ldyBEaWZmZXJlbmNlQ29sbGVjdGlvbih7fSk7XG4gICAgdGhpcy5tZXRhZGF0YSA9IGFyZ3MubWV0YWRhdGEgfHwgbmV3IERpZmZlcmVuY2VDb2xsZWN0aW9uKHt9KTtcbiAgICB0aGlzLm91dHB1dHMgPSBhcmdzLm91dHB1dHMgfHwgbmV3IERpZmZlcmVuY2VDb2xsZWN0aW9uKHt9KTtcbiAgICB0aGlzLnBhcmFtZXRlcnMgPSBhcmdzLnBhcmFtZXRlcnMgfHwgbmV3IERpZmZlcmVuY2VDb2xsZWN0aW9uKHt9KTtcbiAgICB0aGlzLnJlc291cmNlcyA9IGFyZ3MucmVzb3VyY2VzIHx8IG5ldyBEaWZmZXJlbmNlQ29sbGVjdGlvbih7fSk7XG4gICAgdGhpcy51bmtub3duID0gYXJncy51bmtub3duIHx8IG5ldyBEaWZmZXJlbmNlQ29sbGVjdGlvbih7fSk7XG5cbiAgICB0aGlzLmlhbUNoYW5nZXMgPSBuZXcgSWFtQ2hhbmdlcyh7XG4gICAgICBwcm9wZXJ0eUNoYW5nZXM6IHRoaXMuc2NydXRpbml6YWJsZVByb3BlcnR5Q2hhbmdlcyhJYW1DaGFuZ2VzLklhbVByb3BlcnR5U2NydXRpbmllcyksXG4gICAgICByZXNvdXJjZUNoYW5nZXM6IHRoaXMuc2NydXRpbml6YWJsZVJlc291cmNlQ2hhbmdlcyhJYW1DaGFuZ2VzLklhbVJlc291cmNlU2NydXRpbmllcyksXG4gICAgfSk7XG5cbiAgICB0aGlzLnNlY3VyaXR5R3JvdXBDaGFuZ2VzID0gbmV3IFNlY3VyaXR5R3JvdXBDaGFuZ2VzKHtcbiAgICAgIGVncmVzc1J1bGVQcm9wZXJ0eUNoYW5nZXM6IHRoaXMuc2NydXRpbml6YWJsZVByb3BlcnR5Q2hhbmdlcyhbUHJvcGVydHlTY3J1dGlueVR5cGUuRWdyZXNzUnVsZXNdKSxcbiAgICAgIGluZ3Jlc3NSdWxlUHJvcGVydHlDaGFuZ2VzOiB0aGlzLnNjcnV0aW5pemFibGVQcm9wZXJ0eUNoYW5nZXMoW1Byb3BlcnR5U2NydXRpbnlUeXBlLkluZ3Jlc3NSdWxlc10pLFxuICAgICAgZWdyZXNzUnVsZVJlc291cmNlQ2hhbmdlczogdGhpcy5zY3J1dGluaXphYmxlUmVzb3VyY2VDaGFuZ2VzKFtSZXNvdXJjZVNjcnV0aW55VHlwZS5FZ3Jlc3NSdWxlUmVzb3VyY2VdKSxcbiAgICAgIGluZ3Jlc3NSdWxlUmVzb3VyY2VDaGFuZ2VzOiB0aGlzLnNjcnV0aW5pemFibGVSZXNvdXJjZUNoYW5nZXMoW1Jlc291cmNlU2NydXRpbnlUeXBlLkluZ3Jlc3NSdWxlUmVzb3VyY2VdKSxcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgZGlmZmVyZW5jZUNvdW50KCkge1xuICAgIGxldCBjb3VudCA9IDA7XG5cbiAgICBpZiAodGhpcy5hd3NUZW1wbGF0ZUZvcm1hdFZlcnNpb24gIT09IHVuZGVmaW5lZCkge1xuICAgICAgY291bnQgKz0gMTtcbiAgICB9XG4gICAgaWYgKHRoaXMuZGVzY3JpcHRpb24gIT09IHVuZGVmaW5lZCkge1xuICAgICAgY291bnQgKz0gMTtcbiAgICB9XG4gICAgaWYgKHRoaXMudHJhbnNmb3JtICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGNvdW50ICs9IDE7XG4gICAgfVxuXG4gICAgY291bnQgKz0gdGhpcy5jb25kaXRpb25zLmRpZmZlcmVuY2VDb3VudDtcbiAgICBjb3VudCArPSB0aGlzLm1hcHBpbmdzLmRpZmZlcmVuY2VDb3VudDtcbiAgICBjb3VudCArPSB0aGlzLm1ldGFkYXRhLmRpZmZlcmVuY2VDb3VudDtcbiAgICBjb3VudCArPSB0aGlzLm91dHB1dHMuZGlmZmVyZW5jZUNvdW50O1xuICAgIGNvdW50ICs9IHRoaXMucGFyYW1ldGVycy5kaWZmZXJlbmNlQ291bnQ7XG4gICAgY291bnQgKz0gdGhpcy5yZXNvdXJjZXMuZGlmZmVyZW5jZUNvdW50O1xuICAgIGNvdW50ICs9IHRoaXMudW5rbm93bi5kaWZmZXJlbmNlQ291bnQ7XG5cbiAgICByZXR1cm4gY291bnQ7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGlzRW1wdHkoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuZGlmZmVyZW5jZUNvdW50ID09PSAwO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybiB0cnVlIGlmIGFueSBvZiB0aGUgcGVybWlzc2lvbnMgb2JqZWN0cyBpbnZvbHZlIGEgYnJvYWRlbmluZyBvZiBwZXJtaXNzaW9uc1xuICAgKi9cbiAgcHVibGljIGdldCBwZXJtaXNzaW9uc0Jyb2FkZW5lZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5pYW1DaGFuZ2VzLnBlcm1pc3Npb25zQnJvYWRlbmVkIHx8IHRoaXMuc2VjdXJpdHlHcm91cENoYW5nZXMucnVsZXNBZGRlZDtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm4gdHJ1ZSBpZiBhbnkgb2YgdGhlIHBlcm1pc3Npb25zIG9iamVjdHMgaGF2ZSBjaGFuZ2VkXG4gICAqL1xuICBwdWJsaWMgZ2V0IHBlcm1pc3Npb25zQW55Q2hhbmdlcygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5pYW1DaGFuZ2VzLmhhc0NoYW5nZXMgfHwgdGhpcy5zZWN1cml0eUdyb3VwQ2hhbmdlcy5oYXNDaGFuZ2VzO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybiBhbGwgcHJvcGVydHkgY2hhbmdlcyBvZiBhIGdpdmVuIHNjcnV0aW55IHR5cGVcbiAgICpcbiAgICogV2UgZG9uJ3QganVzdCBsb29rIGF0IHByb3BlcnR5IHVwZGF0ZXM7IHdlIGFsc28gbG9vayBhdCByZXNvdXJjZSBhZGRpdGlvbnMgYW5kIGRlbGV0aW9ucyAoaW4gd2hpY2hcbiAgICogY2FzZSB0aGVyZSBpcyBubyBmdXJ0aGVyIGRldGFpbCBvbiBwcm9wZXJ0eSB2YWx1ZXMpLCBhbmQgcmVzb3VyY2UgdHlwZSBjaGFuZ2VzLlxuICAgKi9cbiAgcHJpdmF0ZSBzY3J1dGluaXphYmxlUHJvcGVydHlDaGFuZ2VzKHNjcnV0aW55VHlwZXM6IFByb3BlcnR5U2NydXRpbnlUeXBlW10pOiBQcm9wZXJ0eUNoYW5nZVtdIHtcbiAgICBjb25zdCByZXQgPSBuZXcgQXJyYXk8UHJvcGVydHlDaGFuZ2U+KCk7XG5cbiAgICBmb3IgKGNvbnN0IFtyZXNvdXJjZUxvZ2ljYWxJZCwgcmVzb3VyY2VDaGFuZ2VdIG9mIE9iamVjdC5lbnRyaWVzKHRoaXMucmVzb3VyY2VzLmNoYW5nZXMpKSB7XG4gICAgICBpZiAocmVzb3VyY2VDaGFuZ2UucmVzb3VyY2VUeXBlQ2hhbmdlZCkge1xuICAgICAgICAvLyB3ZSBpZ25vcmUgcmVzb3VyY2UgdHlwZSBjaGFuZ2VzIGhlcmUsIGFuZCBoYW5kbGUgdGhlbSBpbiBzY3J1dGluaXphYmxlUmVzb3VyY2VDaGFuZ2VzKClcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIGlmICghcmVzb3VyY2VDaGFuZ2UucmVzb3VyY2VUeXBlKSB7XG4gICAgICAgIC8vIFdlIHVzZSByZXNvdXJjZUNoYW5nZS5yZXNvdXJjZVR5cGUgdG8gbG9hZFJlc291cmNlTW9kZWwgc28gdGhhdCB3ZSBjYW4gaW5zcGVjdCB0aGVcbiAgICAgICAgLy8gcHJvcGVydGllcyBvZiBhIHJlc291cmNlIGV2ZW4gYWZ0ZXIgdGhlIHJlc291cmNlIGlzIHJlbW92ZWQgZnJvbSB0aGUgdGVtcGxhdGUuXG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBuZXdUeXBlUHJvcHMgPSBsb2FkUmVzb3VyY2VNb2RlbChyZXNvdXJjZUNoYW5nZS5yZXNvdXJjZVR5cGUpPy5wcm9wZXJ0aWVzIHx8IHt9O1xuICAgICAgZm9yIChjb25zdCBbcHJvcGVydHlOYW1lLCBwcm9wXSBvZiBPYmplY3QuZW50cmllcyhuZXdUeXBlUHJvcHMpKSB7XG4gICAgICAgIGNvbnN0IHByb3BTY3J1dGlueVR5cGUgPSBwcm9wLnNjcnV0aW5pemFibGUgfHwgUHJvcGVydHlTY3J1dGlueVR5cGUuTm9uZTtcbiAgICAgICAgaWYgKHNjcnV0aW55VHlwZXMuaW5jbHVkZXMocHJvcFNjcnV0aW55VHlwZSkpIHtcbiAgICAgICAgICByZXQucHVzaCh7XG4gICAgICAgICAgICByZXNvdXJjZUxvZ2ljYWxJZCxcbiAgICAgICAgICAgIHByb3BlcnR5TmFtZSxcbiAgICAgICAgICAgIHJlc291cmNlVHlwZTogcmVzb3VyY2VDaGFuZ2UucmVzb3VyY2VUeXBlLFxuICAgICAgICAgICAgc2NydXRpbnlUeXBlOiBwcm9wU2NydXRpbnlUeXBlLFxuICAgICAgICAgICAgb2xkVmFsdWU6IHJlc291cmNlQ2hhbmdlLm9sZFByb3BlcnRpZXM/Lltwcm9wZXJ0eU5hbWVdLFxuICAgICAgICAgICAgbmV3VmFsdWU6IHJlc291cmNlQ2hhbmdlLm5ld1Byb3BlcnRpZXM/Lltwcm9wZXJ0eU5hbWVdLFxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHJldDtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm4gYWxsIHJlc291cmNlIGNoYW5nZXMgb2YgYSBnaXZlbiBzY3J1dGlueSB0eXBlXG4gICAqXG4gICAqIFdlIGRvbid0IGp1c3QgbG9vayBhdCByZXNvdXJjZSB1cGRhdGVzOyB3ZSBhbHNvIGxvb2sgYXQgcmVzb3VyY2UgYWRkaXRpb25zIGFuZCBkZWxldGlvbnMgKGluIHdoaWNoXG4gICAqIGNhc2UgdGhlcmUgaXMgbm8gZnVydGhlciBkZXRhaWwgb24gcHJvcGVydHkgdmFsdWVzKSwgYW5kIHJlc291cmNlIHR5cGUgY2hhbmdlcy5cbiAgICovXG4gIHByaXZhdGUgc2NydXRpbml6YWJsZVJlc291cmNlQ2hhbmdlcyhzY3J1dGlueVR5cGVzOiBSZXNvdXJjZVNjcnV0aW55VHlwZVtdKTogUmVzb3VyY2VDaGFuZ2VbXSB7XG4gICAgY29uc3QgcmV0ID0gbmV3IEFycmF5PFJlc291cmNlQ2hhbmdlPigpO1xuXG4gICAgZm9yIChjb25zdCBbcmVzb3VyY2VMb2dpY2FsSWQsIHJlc291cmNlQ2hhbmdlXSBvZiBPYmplY3QuZW50cmllcyh0aGlzLnJlc291cmNlcy5jaGFuZ2VzKSkge1xuICAgICAgaWYgKCFyZXNvdXJjZUNoYW5nZSkgeyBjb250aW51ZTsgfVxuXG4gICAgICBjb25zdCBjb21tb25Qcm9wcyA9IHtcbiAgICAgICAgb2xkUHJvcGVydGllczogcmVzb3VyY2VDaGFuZ2Uub2xkUHJvcGVydGllcyxcbiAgICAgICAgbmV3UHJvcGVydGllczogcmVzb3VyY2VDaGFuZ2UubmV3UHJvcGVydGllcyxcbiAgICAgICAgcmVzb3VyY2VMb2dpY2FsSWQsXG4gICAgICB9O1xuXG4gICAgICAvLyBjaGFuZ2VzIHRvIHRoZSBUeXBlIG9mIHJlc291cmNlcyBjYW4gaGFwcGVuIHdoZW4gbWlncmF0aW5nIGZyb20gQ0ZOIHRlbXBsYXRlcyB0aGF0IHVzZSBUcmFuc2Zvcm1zXG4gICAgICBpZiAocmVzb3VyY2VDaGFuZ2UucmVzb3VyY2VUeXBlQ2hhbmdlZCkge1xuICAgICAgICAvLyBUcmVhdCBhcyBERUxFVEUrQUREXG4gICAgICAgIGlmIChyZXNvdXJjZUNoYW5nZS5vbGRSZXNvdXJjZVR5cGUpIHtcbiAgICAgICAgICBjb25zdCBvbGRSZXNvdXJjZU1vZGVsID0gbG9hZFJlc291cmNlTW9kZWwocmVzb3VyY2VDaGFuZ2Uub2xkUmVzb3VyY2VUeXBlKTtcbiAgICAgICAgICBpZiAob2xkUmVzb3VyY2VNb2RlbCAmJiB0aGlzLnJlc291cmNlSXNTY3J1dGluaXphYmxlKG9sZFJlc291cmNlTW9kZWwsIHNjcnV0aW55VHlwZXMpKSB7XG4gICAgICAgICAgICByZXQucHVzaCh7XG4gICAgICAgICAgICAgIC4uLmNvbW1vblByb3BzLFxuICAgICAgICAgICAgICBuZXdQcm9wZXJ0aWVzOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgIHJlc291cmNlVHlwZTogcmVzb3VyY2VDaGFuZ2Uub2xkUmVzb3VyY2VUeXBlISxcbiAgICAgICAgICAgICAgc2NydXRpbnlUeXBlOiBvbGRSZXNvdXJjZU1vZGVsLnNjcnV0aW5pemFibGUhLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHJlc291cmNlQ2hhbmdlLm5ld1Jlc291cmNlVHlwZSkge1xuICAgICAgICAgIGNvbnN0IG5ld1Jlc291cmNlTW9kZWwgPSBsb2FkUmVzb3VyY2VNb2RlbChyZXNvdXJjZUNoYW5nZS5uZXdSZXNvdXJjZVR5cGUpO1xuICAgICAgICAgIGlmIChuZXdSZXNvdXJjZU1vZGVsICYmIHRoaXMucmVzb3VyY2VJc1NjcnV0aW5pemFibGUobmV3UmVzb3VyY2VNb2RlbCwgc2NydXRpbnlUeXBlcykpIHtcbiAgICAgICAgICAgIHJldC5wdXNoKHtcbiAgICAgICAgICAgICAgLi4uY29tbW9uUHJvcHMsXG4gICAgICAgICAgICAgIG9sZFByb3BlcnRpZXM6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgcmVzb3VyY2VUeXBlOiByZXNvdXJjZUNoYW5nZS5uZXdSZXNvdXJjZVR5cGUhLFxuICAgICAgICAgICAgICBzY3J1dGlueVR5cGU6IG5ld1Jlc291cmNlTW9kZWwuc2NydXRpbml6YWJsZSEsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmICghcmVzb3VyY2VDaGFuZ2UucmVzb3VyY2VUeXBlKSB7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCByZXNvdXJjZU1vZGVsID0gbG9hZFJlc291cmNlTW9kZWwocmVzb3VyY2VDaGFuZ2UucmVzb3VyY2VUeXBlKTtcbiAgICAgICAgaWYgKHJlc291cmNlTW9kZWwgJiYgdGhpcy5yZXNvdXJjZUlzU2NydXRpbml6YWJsZShyZXNvdXJjZU1vZGVsLCBzY3J1dGlueVR5cGVzKSkge1xuICAgICAgICAgIHJldC5wdXNoKHtcbiAgICAgICAgICAgIC4uLmNvbW1vblByb3BzLFxuICAgICAgICAgICAgcmVzb3VyY2VUeXBlOiByZXNvdXJjZUNoYW5nZS5yZXNvdXJjZVR5cGUsXG4gICAgICAgICAgICBzY3J1dGlueVR5cGU6IHJlc291cmNlTW9kZWwuc2NydXRpbml6YWJsZSEsXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gcmV0O1xuICB9XG5cbiAgcHJpdmF0ZSByZXNvdXJjZUlzU2NydXRpbml6YWJsZShyZXM6IFJlc291cmNlTW9kZWwsIHNjcnV0aW55VHlwZXM6IEFycmF5PFJlc291cmNlU2NydXRpbnlUeXBlPik6IGJvb2xlYW4ge1xuICAgIHJldHVybiBzY3J1dGlueVR5cGVzLmluY2x1ZGVzKHJlcy5zY3J1dGluaXphYmxlIHx8IFJlc291cmNlU2NydXRpbnlUeXBlLk5vbmUpO1xuICB9XG59XG5cbi8qKlxuICogQSBjaGFuZ2UgaW4gcHJvcGVydHkgdmFsdWVzXG4gKlxuICogTm90IG5lY2Vzc2FyaWx5IGFuIHVwZGF0ZSwgaXQgY291bGQgYmUgdGhhdCB0aGVyZSB1c2VkIHRvIGJlIG5vIHZhbHVlIHRoZXJlXG4gKiBiZWNhdXNlIHRoZXJlIHdhcyBubyByZXNvdXJjZSwgYW5kIG5vdyB0aGVyZSBpcyAob3IgdmljZSB2ZXJzYSkuXG4gKlxuICogVGhlcmVmb3JlLCB3ZSBqdXN0IGNvbnRhaW4gcGxhaW4gdmFsdWVzIGFuZCBub3QgYSBQcm9wZXJ0eURpZmZlcmVuY2U8YW55Pi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBQcm9wZXJ0eUNoYW5nZSB7XG4gIC8qKlxuICAgKiBMb2dpY2FsIElEIG9mIHRoZSByZXNvdXJjZSB3aGVyZSB0aGlzIHByb3BlcnR5IGNoYW5nZSB3YXMgZm91bmRcbiAgICovXG4gIHJlc291cmNlTG9naWNhbElkOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFR5cGUgb2YgdGhlIHJlc291cmNlXG4gICAqL1xuICByZXNvdXJjZVR5cGU6IHN0cmluZztcblxuICAvKipcbiAgICogU2NydXRpbnkgdHlwZSBmb3IgdGhpcyBwcm9wZXJ0eSBjaGFuZ2VcbiAgICovXG4gIHNjcnV0aW55VHlwZTogUHJvcGVydHlTY3J1dGlueVR5cGU7XG5cbiAgLyoqXG4gICAqIE5hbWUgb2YgdGhlIHByb3BlcnR5IHRoYXQgaXMgY2hhbmdpbmdcbiAgICovXG4gIHByb3BlcnR5TmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgb2xkIHByb3BlcnR5IHZhbHVlXG4gICAqL1xuICBvbGRWYWx1ZT86IGFueTtcblxuICAvKipcbiAgICogVGhlIG5ldyBwcm9wZXJ0eSB2YWx1ZVxuICAgKi9cbiAgbmV3VmFsdWU/OiBhbnk7XG59XG5cbi8qKlxuICogQSByZXNvdXJjZSBjaGFuZ2VcbiAqXG4gKiBFaXRoZXIgYSBjcmVhdGlvbiwgZGVsZXRpb24gb3IgdXBkYXRlLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJlc291cmNlQ2hhbmdlIHtcbiAgLyoqXG4gICAqIExvZ2ljYWwgSUQgb2YgdGhlIHJlc291cmNlIHdoZXJlIHRoaXMgcHJvcGVydHkgY2hhbmdlIHdhcyBmb3VuZFxuICAgKi9cbiAgcmVzb3VyY2VMb2dpY2FsSWQ6IHN0cmluZztcblxuICAvKipcbiAgICogU2NydXRpbnkgdHlwZSBmb3IgdGhpcyByZXNvdXJjZSBjaGFuZ2VcbiAgICovXG4gIHNjcnV0aW55VHlwZTogUmVzb3VyY2VTY3J1dGlueVR5cGU7XG5cbiAgLyoqXG4gICAqIFRoZSB0eXBlIG9mIHRoZSByZXNvdXJjZVxuICAgKi9cbiAgcmVzb3VyY2VUeXBlOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBvbGQgcHJvcGVydGllcyB2YWx1ZSAobWlnaHQgYmUgdW5kZWZpbmVkIGluIGNhc2Ugb2YgY3JlYXRpb24pXG4gICAqL1xuICBvbGRQcm9wZXJ0aWVzPzogUHJvcGVydHlNYXA7XG5cbiAgLyoqXG4gICAqIFRoZSBuZXcgcHJvcGVydGllcyB2YWx1ZSAobWlnaHQgYmUgdW5kZWZpbmVkIGluIGNhc2Ugb2YgZGVsZXRpb24pXG4gICAqL1xuICBuZXdQcm9wZXJ0aWVzPzogUHJvcGVydHlNYXA7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSURpZmZlcmVuY2U8VmFsdWVUeXBlPiB7XG4gIHJlYWRvbmx5IG9sZFZhbHVlOiBWYWx1ZVR5cGUgfCB1bmRlZmluZWQ7XG4gIHJlYWRvbmx5IG5ld1ZhbHVlOiBWYWx1ZVR5cGUgfCB1bmRlZmluZWQ7XG4gIHJlYWRvbmx5IGlzRGlmZmVyZW50OiBib29sZWFuO1xuICByZWFkb25seSBpc0FkZGl0aW9uOiBib29sZWFuO1xuICByZWFkb25seSBpc1JlbW92YWw6IGJvb2xlYW47XG4gIHJlYWRvbmx5IGlzVXBkYXRlOiBib29sZWFuO1xufVxuXG4vKipcbiAqIE1vZGVscyBhbiBlbnRpdHkgdGhhdCBjaGFuZ2VkIGJldHdlZW4gdHdvIHZlcnNpb25zIG9mIGEgQ2xvdWRGb3JtYXRpb24gdGVtcGxhdGUuXG4gKi9cbmV4cG9ydCBjbGFzcyBEaWZmZXJlbmNlPFZhbHVlVHlwZT4gaW1wbGVtZW50cyBJRGlmZmVyZW5jZTxWYWx1ZVR5cGU+IHtcbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhpcyBpcyBhbiBhY3R1YWwgZGlmZmVyZW50IG9yIHRoZSB2YWx1ZXMgYXJlIGFjdHVhbGx5IHRoZSBzYW1lXG4gICAqXG4gICAqIGlzRGlmZmVyZW50ID0+IChpc1VwZGF0ZSB8IGlzUmVtb3ZlZCB8IGlzVXBkYXRlKVxuICAgKi9cbiAgcHVibGljIGlzRGlmZmVyZW50OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBAcGFyYW0gb2xkVmFsdWUgdGhlIG9sZCB2YWx1ZSwgY2Fubm90IGJlIGVxdWFsICh0byB0aGUgc2Vuc2Ugb2YgK2RlZXBFcXVhbCspIHRvICtuZXdWYWx1ZSsuXG4gICAqIEBwYXJhbSBuZXdWYWx1ZSB0aGUgbmV3IHZhbHVlLCBjYW5ub3QgYmUgZXF1YWwgKHRvIHRoZSBzZW5zZSBvZiArZGVlcEVxdWFsKykgdG8gK29sZFZhbHVlKy5cbiAgICovXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyByZWFkb25seSBvbGRWYWx1ZTogVmFsdWVUeXBlIHwgdW5kZWZpbmVkLCBwdWJsaWMgcmVhZG9ubHkgbmV3VmFsdWU6IFZhbHVlVHlwZSB8IHVuZGVmaW5lZCkge1xuICAgIGlmIChvbGRWYWx1ZSA9PT0gdW5kZWZpbmVkICYmIG5ld1ZhbHVlID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHRocm93IG5ldyBBc3NlcnRpb25FcnJvcih7IG1lc3NhZ2U6ICdvbGRWYWx1ZSBhbmQgbmV3VmFsdWUgYXJlIGJvdGggdW5kZWZpbmVkIScgfSk7XG4gICAgfVxuICAgIHRoaXMuaXNEaWZmZXJlbnQgPSAhZGVlcEVxdWFsKG9sZFZhbHVlLCBuZXdWYWx1ZSk7XG4gIH1cblxuICAvKiogQHJldHVybnMgK3RydWUrIGlmIHRoZSBlbGVtZW50IGlzIG5ldyB0byB0aGUgdGVtcGxhdGUuICovXG4gIHB1YmxpYyBnZXQgaXNBZGRpdGlvbigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5vbGRWYWx1ZSA9PT0gdW5kZWZpbmVkO1xuICB9XG5cbiAgLyoqIEByZXR1cm5zICt0cnVlKyBpZiB0aGUgZWxlbWVudCB3YXMgcmVtb3ZlZCBmcm9tIHRoZSB0ZW1wbGF0ZS4gKi9cbiAgcHVibGljIGdldCBpc1JlbW92YWwoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMubmV3VmFsdWUgPT09IHVuZGVmaW5lZDtcbiAgfVxuXG4gIC8qKiBAcmV0dXJucyArdHJ1ZSsgaWYgdGhlIGVsZW1lbnQgd2FzIGFscmVhZHkgaW4gdGhlIHRlbXBsYXRlIGFuZCBpcyB1cGRhdGVkLiAqL1xuICBwdWJsaWMgZ2V0IGlzVXBkYXRlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLm9sZFZhbHVlICE9PSB1bmRlZmluZWRcbiAgICAgICYmIHRoaXMubmV3VmFsdWUgIT09IHVuZGVmaW5lZDtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgUHJvcGVydHlEaWZmZXJlbmNlPFZhbHVlVHlwZT4gZXh0ZW5kcyBEaWZmZXJlbmNlPFZhbHVlVHlwZT4ge1xuICBwdWJsaWMgY2hhbmdlSW1wYWN0PzogUmVzb3VyY2VJbXBhY3Q7XG5cbiAgY29uc3RydWN0b3Iob2xkVmFsdWU6IFZhbHVlVHlwZSB8IHVuZGVmaW5lZCwgbmV3VmFsdWU6IFZhbHVlVHlwZSB8IHVuZGVmaW5lZCwgYXJnczogeyBjaGFuZ2VJbXBhY3Q/OiBSZXNvdXJjZUltcGFjdCB9KSB7XG4gICAgc3VwZXIob2xkVmFsdWUsIG5ld1ZhbHVlKTtcbiAgICB0aGlzLmNoYW5nZUltcGFjdCA9IGFyZ3MuY2hhbmdlSW1wYWN0O1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBEaWZmZXJlbmNlQ29sbGVjdGlvbjxWLCBUIGV4dGVuZHMgSURpZmZlcmVuY2U8Vj4+IHtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBkaWZmczogeyBbbG9naWNhbElkOiBzdHJpbmddOiBUIH0pIHt9XG5cbiAgcHVibGljIGdldCBjaGFuZ2VzKCk6IHsgW2xvZ2ljYWxJZDogc3RyaW5nXTogVCB9IHtcbiAgICByZXR1cm4gb25seUNoYW5nZXModGhpcy5kaWZmcyk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGRpZmZlcmVuY2VDb3VudCgpOiBudW1iZXIge1xuICAgIHJldHVybiBPYmplY3QudmFsdWVzKHRoaXMuY2hhbmdlcykubGVuZ3RoO1xuICB9XG5cbiAgcHVibGljIGdldChsb2dpY2FsSWQ6IHN0cmluZyk6IFQge1xuICAgIGNvbnN0IHJldCA9IHRoaXMuZGlmZnNbbG9naWNhbElkXTtcbiAgICBpZiAoIXJldCkgeyB0aHJvdyBuZXcgRXJyb3IoYE5vIG9iamVjdCB3aXRoIGxvZ2ljYWwgSUQgJyR7bG9naWNhbElkfSdgKTsgfVxuICAgIHJldHVybiByZXQ7XG4gIH1cblxuICBwdWJsaWMgcmVtb3ZlKGxvZ2ljYWxJZDogc3RyaW5nKTogdm9pZCB7XG4gICAgZGVsZXRlIHRoaXMuZGlmZnNbbG9naWNhbElkXTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgbG9naWNhbElkcygpOiBzdHJpbmdbXSB7XG4gICAgcmV0dXJuIE9iamVjdC5rZXlzKHRoaXMuY2hhbmdlcyk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBhIG5ldyBUZW1wbGF0ZURpZmYgd2hpY2ggb25seSBjb250YWlucyBjaGFuZ2VzIGZvciB3aGljaCBgcHJlZGljYXRlYFxuICAgKiByZXR1cm5zIGB0cnVlYC5cbiAgICovXG4gIHB1YmxpYyBmaWx0ZXIocHJlZGljYXRlOiAoZGlmZjogVCB8IHVuZGVmaW5lZCkgPT4gYm9vbGVhbik6IERpZmZlcmVuY2VDb2xsZWN0aW9uPFYsIFQ+IHtcbiAgICBjb25zdCBuZXdDaGFuZ2VzOiB7IFtsb2dpY2FsSWQ6IHN0cmluZ106IFQgfSA9IHsgfTtcbiAgICBmb3IgKGNvbnN0IGlkIG9mIE9iamVjdC5rZXlzKHRoaXMuY2hhbmdlcykpIHtcbiAgICAgIGNvbnN0IGRpZmYgPSB0aGlzLmNoYW5nZXNbaWRdO1xuXG4gICAgICBpZiAocHJlZGljYXRlKGRpZmYpKSB7XG4gICAgICAgIG5ld0NoYW5nZXNbaWRdID0gZGlmZjtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gbmV3IERpZmZlcmVuY2VDb2xsZWN0aW9uPFYsIFQ+KG5ld0NoYW5nZXMpO1xuICB9XG5cbiAgLyoqXG4gICAqIEludm9rZXMgYGNiYCBmb3IgYWxsIGNoYW5nZXMgaW4gdGhpcyBjb2xsZWN0aW9uLlxuICAgKlxuICAgKiBDaGFuZ2VzIHdpbGwgYmUgc29ydGVkIGFzIGZvbGxvd3M6XG4gICAqICAtIFJlbW92ZWRcbiAgICogIC0gQWRkZWRcbiAgICogIC0gVXBkYXRlZFxuICAgKiAgLSBPdGhlcnNcbiAgICpcbiAgICogQHBhcmFtIGNiXG4gICAqL1xuICBwdWJsaWMgZm9yRWFjaERpZmZlcmVuY2UoY2I6IChsb2dpY2FsSWQ6IHN0cmluZywgY2hhbmdlOiBUKSA9PiBhbnkpOiB2b2lkIHtcbiAgICBjb25zdCByZW1vdmVkID0gbmV3IEFycmF5PHsgbG9naWNhbElkOiBzdHJpbmc7IGNoYW5nZTogVCB9PigpO1xuICAgIGNvbnN0IGFkZGVkID0gbmV3IEFycmF5PHsgbG9naWNhbElkOiBzdHJpbmc7IGNoYW5nZTogVCB9PigpO1xuICAgIGNvbnN0IHVwZGF0ZWQgPSBuZXcgQXJyYXk8eyBsb2dpY2FsSWQ6IHN0cmluZzsgY2hhbmdlOiBUIH0+KCk7XG4gICAgY29uc3Qgb3RoZXJzID0gbmV3IEFycmF5PHsgbG9naWNhbElkOiBzdHJpbmc7IGNoYW5nZTogVCB9PigpO1xuXG4gICAgZm9yIChjb25zdCBsb2dpY2FsSWQgb2YgdGhpcy5sb2dpY2FsSWRzKSB7XG4gICAgICBjb25zdCBjaGFuZ2U6IFQgPSB0aGlzLmNoYW5nZXNbbG9naWNhbElkXSE7XG4gICAgICBpZiAoY2hhbmdlLmlzQWRkaXRpb24pIHtcbiAgICAgICAgYWRkZWQucHVzaCh7IGxvZ2ljYWxJZCwgY2hhbmdlIH0pO1xuICAgICAgfSBlbHNlIGlmIChjaGFuZ2UuaXNSZW1vdmFsKSB7XG4gICAgICAgIHJlbW92ZWQucHVzaCh7IGxvZ2ljYWxJZCwgY2hhbmdlIH0pO1xuICAgICAgfSBlbHNlIGlmIChjaGFuZ2UuaXNVcGRhdGUpIHtcbiAgICAgICAgdXBkYXRlZC5wdXNoKHsgbG9naWNhbElkLCBjaGFuZ2UgfSk7XG4gICAgICB9IGVsc2UgaWYgKGNoYW5nZS5pc0RpZmZlcmVudCkge1xuICAgICAgICBvdGhlcnMucHVzaCh7IGxvZ2ljYWxJZCwgY2hhbmdlIH0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJlbW92ZWQuZm9yRWFjaCh2ID0+IGNiKHYubG9naWNhbElkLCB2LmNoYW5nZSkpO1xuICAgIGFkZGVkLmZvckVhY2godiA9PiBjYih2LmxvZ2ljYWxJZCwgdi5jaGFuZ2UpKTtcbiAgICB1cGRhdGVkLmZvckVhY2godiA9PiBjYih2LmxvZ2ljYWxJZCwgdi5jaGFuZ2UpKTtcbiAgICBvdGhlcnMuZm9yRWFjaCh2ID0+IGNiKHYubG9naWNhbElkLCB2LmNoYW5nZSkpO1xuICB9XG59XG5cbi8qKlxuICogQXJndW1lbnRzIGV4cGVjdGVkIGJ5IHRoZSBjb25zdHJ1Y3RvciBvZiArVGVtcGxhdGVEaWZmKywgZXh0cmFjdGVkIGFzIGFuIGludGVyZmFjZSBmb3IgdGhlIHNha2VcbiAqIG9mIChyZWxhdGl2ZSkgY29uY2lzZW5lc3Mgb2YgdGhlIGNvbnN0cnVjdG9yJ3Mgc2lnbmF0dXJlLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIElUZW1wbGF0ZURpZmYge1xuICBhd3NUZW1wbGF0ZUZvcm1hdFZlcnNpb24/OiBJRGlmZmVyZW5jZTxzdHJpbmc+O1xuICBkZXNjcmlwdGlvbj86IElEaWZmZXJlbmNlPHN0cmluZz47XG4gIHRyYW5zZm9ybT86IElEaWZmZXJlbmNlPHN0cmluZz47XG5cbiAgY29uZGl0aW9ucz86IERpZmZlcmVuY2VDb2xsZWN0aW9uPENvbmRpdGlvbiwgQ29uZGl0aW9uRGlmZmVyZW5jZT47XG4gIG1hcHBpbmdzPzogRGlmZmVyZW5jZUNvbGxlY3Rpb248TWFwcGluZywgTWFwcGluZ0RpZmZlcmVuY2U+O1xuICBtZXRhZGF0YT86IERpZmZlcmVuY2VDb2xsZWN0aW9uPE1ldGFkYXRhLCBNZXRhZGF0YURpZmZlcmVuY2U+O1xuICBvdXRwdXRzPzogRGlmZmVyZW5jZUNvbGxlY3Rpb248T3V0cHV0LCBPdXRwdXREaWZmZXJlbmNlPjtcbiAgcGFyYW1ldGVycz86IERpZmZlcmVuY2VDb2xsZWN0aW9uPFBhcmFtZXRlciwgUGFyYW1ldGVyRGlmZmVyZW5jZT47XG4gIHJlc291cmNlcz86IERpZmZlcmVuY2VDb2xsZWN0aW9uPFJlc291cmNlLCBSZXNvdXJjZURpZmZlcmVuY2U+O1xuXG4gIHVua25vd24/OiBEaWZmZXJlbmNlQ29sbGVjdGlvbjxhbnksIElEaWZmZXJlbmNlPGFueT4+O1xufVxuXG5leHBvcnQgdHlwZSBDb25kaXRpb24gPSBhbnk7XG5leHBvcnQgY2xhc3MgQ29uZGl0aW9uRGlmZmVyZW5jZSBleHRlbmRzIERpZmZlcmVuY2U8Q29uZGl0aW9uPiB7XG4gIC8vIFRPRE86IGRlZmluZSBzcGVjaWZpYyBkaWZmZXJlbmNlIGF0dHJpYnV0ZXNcbn1cblxuZXhwb3J0IHR5cGUgTWFwcGluZyA9IGFueTtcbmV4cG9ydCBjbGFzcyBNYXBwaW5nRGlmZmVyZW5jZSBleHRlbmRzIERpZmZlcmVuY2U8TWFwcGluZz4ge1xuICAvLyBUT0RPOiBkZWZpbmUgc3BlY2lmaWMgZGlmZmVyZW5jZSBhdHRyaWJ1dGVzXG59XG5cbmV4cG9ydCB0eXBlIE1ldGFkYXRhID0gYW55O1xuZXhwb3J0IGNsYXNzIE1ldGFkYXRhRGlmZmVyZW5jZSBleHRlbmRzIERpZmZlcmVuY2U8TWV0YWRhdGE+IHtcbiAgLy8gVE9ETzogZGVmaW5lIHNwZWNpZmljIGRpZmZlcmVuY2UgYXR0cmlidXRlc1xufVxuXG5leHBvcnQgdHlwZSBPdXRwdXQgPSBhbnk7XG5leHBvcnQgY2xhc3MgT3V0cHV0RGlmZmVyZW5jZSBleHRlbmRzIERpZmZlcmVuY2U8T3V0cHV0PiB7XG4gIC8vIFRPRE86IGRlZmluZSBzcGVjaWZpYyBkaWZmZXJlbmNlIGF0dHJpYnV0ZXNcbn1cblxuZXhwb3J0IHR5cGUgUGFyYW1ldGVyID0gYW55O1xuZXhwb3J0IGNsYXNzIFBhcmFtZXRlckRpZmZlcmVuY2UgZXh0ZW5kcyBEaWZmZXJlbmNlPFBhcmFtZXRlcj4ge1xuICAvLyBUT0RPOiBkZWZpbmUgc3BlY2lmaWMgZGlmZmVyZW5jZSBhdHRyaWJ1dGVzXG59XG5cbmV4cG9ydCBlbnVtIFJlc291cmNlSW1wYWN0IHtcbiAgLyoqIFRoZSBleGlzdGluZyBwaHlzaWNhbCByZXNvdXJjZSB3aWxsIGJlIHVwZGF0ZWQgKi9cbiAgV0lMTF9VUERBVEUgPSAnV0lMTF9VUERBVEUnLFxuICAvKiogQSBuZXcgcGh5c2ljYWwgcmVzb3VyY2Ugd2lsbCBiZSBjcmVhdGVkICovXG4gIFdJTExfQ1JFQVRFID0gJ1dJTExfQ1JFQVRFJyxcbiAgLyoqIFRoZSBleGlzdGluZyBwaHlzaWNhbCByZXNvdXJjZSB3aWxsIGJlIHJlcGxhY2VkICovXG4gIFdJTExfUkVQTEFDRSA9ICdXSUxMX1JFUExBQ0UnLFxuICAvKiogVGhlIGV4aXN0aW5nIHBoeXNpY2FsIHJlc291cmNlIG1heSBiZSByZXBsYWNlZCAqL1xuICBNQVlfUkVQTEFDRSA9ICdNQVlfUkVQTEFDRScsXG4gIC8qKiBUaGUgZXhpc3RpbmcgcGh5c2ljYWwgcmVzb3VyY2Ugd2lsbCBiZSBkZXN0cm95ZWQgKi9cbiAgV0lMTF9ERVNUUk9ZID0gJ1dJTExfREVTVFJPWScsXG4gIC8qKiBUaGUgZXhpc3RpbmcgcGh5c2ljYWwgcmVzb3VyY2Ugd2lsbCBiZSByZW1vdmVkIGZyb20gQ2xvdWRGb3JtYXRpb24gc3VwZXJ2aXNpb24gKi9cbiAgV0lMTF9PUlBIQU4gPSAnV0lMTF9PUlBIQU4nLFxuICAvKiogVGhlIGV4aXN0aW5nIHBoeXNpY2FsIHJlc291cmNlIHdpbGwgYmUgYWRkZWQgdG8gQ2xvdWRGb3JtYXRpb24gc3VwZXJ2aXNpb24gKi9cbiAgV0lMTF9JTVBPUlQgPSAnV0lMTF9JTVBPUlQnLFxuICAvKiogVGhlcmUgaXMgbm8gY2hhbmdlIGluIHRoaXMgcmVzb3VyY2UgKi9cbiAgTk9fQ0hBTkdFID0gJ05PX0NIQU5HRScsXG59XG5cbi8qKlxuICogVGhpcyBmdW5jdGlvbiBjYW4gYmUgdXNlZCBhcyBhIHJlZHVjZXIgdG8gb2J0YWluIHRoZSByZXNvdXJjZS1sZXZlbCBpbXBhY3Qgb2YgYSBsaXN0XG4gKiBvZiBwcm9wZXJ0eS1sZXZlbCBpbXBhY3RzLlxuICogQHBhcmFtIG9uZSB0aGUgY3VycmVudCB3b3JzdCBpbXBhY3Qgc28gZmFyLlxuICogQHBhcmFtIHR3byB0aGUgbmV3IGltcGFjdCBiZWluZyBjb25zaWRlcmVkIChjYW4gYmUgdW5kZWZpbmVkLCBhcyB3ZSBtYXkgbm90IGFsd2F5cyBiZVxuICogICAgICBhYmxlIHRvIGRldGVybWluZSBzb21lIHBlcm9wZXJ0eSdzIGltcGFjdCkuXG4gKi9cbmZ1bmN0aW9uIHdvcnN0SW1wYWN0KG9uZTogUmVzb3VyY2VJbXBhY3QsIHR3bz86IFJlc291cmNlSW1wYWN0KTogUmVzb3VyY2VJbXBhY3Qge1xuICBpZiAoIXR3bykgeyByZXR1cm4gb25lOyB9XG4gIGNvbnN0IGJhZG5lc3MgPSB7XG4gICAgW1Jlc291cmNlSW1wYWN0Lk5PX0NIQU5HRV06IDAsXG4gICAgW1Jlc291cmNlSW1wYWN0LldJTExfSU1QT1JUXTogMCxcbiAgICBbUmVzb3VyY2VJbXBhY3QuV0lMTF9VUERBVEVdOiAxLFxuICAgIFtSZXNvdXJjZUltcGFjdC5XSUxMX0NSRUFURV06IDIsXG4gICAgW1Jlc291cmNlSW1wYWN0LldJTExfT1JQSEFOXTogMyxcbiAgICBbUmVzb3VyY2VJbXBhY3QuTUFZX1JFUExBQ0VdOiA0LFxuICAgIFtSZXNvdXJjZUltcGFjdC5XSUxMX1JFUExBQ0VdOiA1LFxuICAgIFtSZXNvdXJjZUltcGFjdC5XSUxMX0RFU1RST1ldOiA2LFxuICB9O1xuICByZXR1cm4gYmFkbmVzc1tvbmVdID4gYmFkbmVzc1t0d29dID8gb25lIDogdHdvO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFJlc291cmNlIHtcbiAgVHlwZTogc3RyaW5nO1xuICBQcm9wZXJ0aWVzPzogeyBbbmFtZTogc3RyaW5nXTogYW55IH07XG5cbiAgW2tleTogc3RyaW5nXTogYW55O1xufVxuXG4vKipcbiAqIENoYW5nZSB0byBhIHNpbmdsZSByZXNvdXJjZSBiZXR3ZWVuIHR3byBDbG91ZEZvcm1hdGlvbiB0ZW1wbGF0ZXNcbiAqXG4gKiBUaGlzIGNsYXNzIGNhbiBiZSBtdXRhdGVkIGFmdGVyIGNvbnN0cnVjdGlvbi5cbiAqL1xuZXhwb3J0IGNsYXNzIFJlc291cmNlRGlmZmVyZW5jZSBpbXBsZW1lbnRzIElEaWZmZXJlbmNlPFJlc291cmNlPiB7XG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoaXMgcmVzb3VyY2Ugd2FzIGFkZGVkXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgaXNBZGRpdGlvbjogYm9vbGVhbjtcblxuICAvKipcbiAgICogV2hldGhlciB0aGlzIHJlc291cmNlIHdhcyByZW1vdmVkXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgaXNSZW1vdmFsOiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoaXMgcmVzb3VyY2Ugd2FzIGltcG9ydGVkXG4gICAqL1xuICBwdWJsaWMgaXNJbXBvcnQ/OiBib29sZWFuO1xuXG4gIC8qKiBQcm9wZXJ0eS1sZXZlbCBjaGFuZ2VzIG9uIHRoZSByZXNvdXJjZSAqL1xuICBwcml2YXRlIHJlYWRvbmx5IHByb3BlcnR5RGlmZnM6IHsgW2tleTogc3RyaW5nXTogUHJvcGVydHlEaWZmZXJlbmNlPGFueT4gfTtcblxuICAvKiogQ2hhbmdlcyB0byBub24tcHJvcGVydHkgbGV2ZWwgYXR0cmlidXRlcyBvZiB0aGUgcmVzb3VyY2UgKi9cbiAgcHJpdmF0ZSByZWFkb25seSBvdGhlckRpZmZzOiB7IFtrZXk6IHN0cmluZ106IERpZmZlcmVuY2U8YW55PiB9O1xuXG4gIC8qKiBUaGUgcmVzb3VyY2UgdHlwZSAob3Igb2xkIGFuZCBuZXcgdHlwZSBpZiBpdCBoYXMgY2hhbmdlZCkgKi9cbiAgcHJpdmF0ZSByZWFkb25seSByZXNvdXJjZVR5cGVzOiB7IHJlYWRvbmx5IG9sZFR5cGU/OiBzdHJpbmc7IHJlYWRvbmx5IG5ld1R5cGU/OiBzdHJpbmcgfTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgcmVhZG9ubHkgb2xkVmFsdWU6IFJlc291cmNlIHwgdW5kZWZpbmVkLFxuICAgIHB1YmxpYyByZWFkb25seSBuZXdWYWx1ZTogUmVzb3VyY2UgfCB1bmRlZmluZWQsXG4gICAgYXJnczoge1xuICAgICAgcmVzb3VyY2VUeXBlOiB7IG9sZFR5cGU/OiBzdHJpbmc7IG5ld1R5cGU/OiBzdHJpbmcgfTtcbiAgICAgIHByb3BlcnR5RGlmZnM6IHsgW2tleTogc3RyaW5nXTogUHJvcGVydHlEaWZmZXJlbmNlPGFueT4gfTtcbiAgICAgIG90aGVyRGlmZnM6IHsgW2tleTogc3RyaW5nXTogRGlmZmVyZW5jZTxhbnk+IH07XG4gICAgfSxcbiAgKSB7XG4gICAgdGhpcy5yZXNvdXJjZVR5cGVzID0gYXJncy5yZXNvdXJjZVR5cGU7XG4gICAgdGhpcy5wcm9wZXJ0eURpZmZzID0gYXJncy5wcm9wZXJ0eURpZmZzO1xuICAgIHRoaXMub3RoZXJEaWZmcyA9IGFyZ3Mub3RoZXJEaWZmcztcblxuICAgIHRoaXMuaXNBZGRpdGlvbiA9IG9sZFZhbHVlID09PSB1bmRlZmluZWQ7XG4gICAgdGhpcy5pc1JlbW92YWwgPSBuZXdWYWx1ZSA9PT0gdW5kZWZpbmVkO1xuICAgIHRoaXMuaXNJbXBvcnQgPSB1bmRlZmluZWQ7XG4gIH1cblxuICBwdWJsaWMgZ2V0IG9sZFByb3BlcnRpZXMoKTogUHJvcGVydHlNYXAgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLm9sZFZhbHVlICYmIHRoaXMub2xkVmFsdWUuUHJvcGVydGllcztcbiAgfVxuXG4gIHB1YmxpYyBnZXQgbmV3UHJvcGVydGllcygpOiBQcm9wZXJ0eU1hcCB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMubmV3VmFsdWUgJiYgdGhpcy5uZXdWYWx1ZS5Qcm9wZXJ0aWVzO1xuICB9XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhpcyByZXNvdXJjZSB3YXMgbW9kaWZpZWQgYXQgYWxsXG4gICAqL1xuICBwdWJsaWMgZ2V0IGlzRGlmZmVyZW50KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmRpZmZlcmVuY2VDb3VudCA+IDAgfHwgdGhpcy5vbGRSZXNvdXJjZVR5cGUgIT09IHRoaXMubmV3UmVzb3VyY2VUeXBlO1xuICB9XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhlIHJlc291cmNlIHdhcyB1cGRhdGVkIGluLXBsYWNlXG4gICAqL1xuICBwdWJsaWMgZ2V0IGlzVXBkYXRlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmlzRGlmZmVyZW50ICYmICF0aGlzLmlzQWRkaXRpb24gJiYgIXRoaXMuaXNSZW1vdmFsO1xuICB9XG5cbiAgcHVibGljIGdldCBvbGRSZXNvdXJjZVR5cGUoKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5yZXNvdXJjZVR5cGVzLm9sZFR5cGU7XG4gIH1cblxuICBwdWJsaWMgZ2V0IG5ld1Jlc291cmNlVHlwZSgpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLnJlc291cmNlVHlwZXMubmV3VHlwZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBbGwgYWN0dWFsIHByb3BlcnR5IHVwZGF0ZXNcbiAgICovXG4gIHB1YmxpYyBnZXQgcHJvcGVydHlVcGRhdGVzKCk6IHsgW2tleTogc3RyaW5nXTogUHJvcGVydHlEaWZmZXJlbmNlPGFueT4gfSB7XG4gICAgcmV0dXJuIG9ubHlDaGFuZ2VzKHRoaXMucHJvcGVydHlEaWZmcyk7XG4gIH1cblxuICAvKipcbiAgICogQWxsIGFjdHVhbCBcIm90aGVyXCIgdXBkYXRlc1xuICAgKi9cbiAgcHVibGljIGdldCBvdGhlckNoYW5nZXMoKTogeyBba2V5OiBzdHJpbmddOiBEaWZmZXJlbmNlPGFueT4gfSB7XG4gICAgcmV0dXJuIG9ubHlDaGFuZ2VzKHRoaXMub3RoZXJEaWZmcyk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJuIHdoZXRoZXIgdGhlIHJlc291cmNlIHR5cGUgd2FzIGNoYW5nZWQgaW4gdGhpcyBkaWZmXG4gICAqXG4gICAqIFRoaXMgaXMgbm90IGEgdmFsaWQgb3BlcmF0aW9uIGluIENsb3VkRm9ybWF0aW9uIGJ1dCB0byBiZSBkZWZlbnNpdmUgd2UncmUgZ29pbmdcbiAgICogdG8gYmUgYXdhcmUgb2YgaXQgYW55d2F5LlxuICAgKi9cbiAgcHVibGljIGdldCByZXNvdXJjZVR5cGVDaGFuZ2VkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAodGhpcy5yZXNvdXJjZVR5cGVzLm9sZFR5cGUgIT09IHVuZGVmaW5lZFxuICAgICAgICAmJiB0aGlzLnJlc291cmNlVHlwZXMubmV3VHlwZSAhPT0gdW5kZWZpbmVkXG4gICAgICAgICYmIHRoaXMucmVzb3VyY2VUeXBlcy5vbGRUeXBlICE9PSB0aGlzLnJlc291cmNlVHlwZXMubmV3VHlwZSk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJuIHRoZSByZXNvdXJjZSB0eXBlIGlmIGl0IHdhcyB1bmNoYW5nZWRcbiAgICpcbiAgICogSWYgdGhlIHJlc291cmNlIHR5cGUgd2FzIGNoYW5nZWQsIGl0J3MgYW4gZXJyb3IgdG8gY2FsbCB0aGlzLlxuICAgKi9cbiAgcHVibGljIGdldCByZXNvdXJjZVR5cGUoKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICBpZiAodGhpcy5yZXNvdXJjZVR5cGVDaGFuZ2VkKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0Nhbm5vdCBnZXQgLnJlc291cmNlVHlwZSwgYmVjYXVzZSB0aGUgdHlwZSB3YXMgY2hhbmdlZCcpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5yZXNvdXJjZVR5cGVzLm9sZFR5cGUgfHwgdGhpcy5yZXNvdXJjZVR5cGVzLm5ld1R5cGU7XG4gIH1cblxuICAvKipcbiAgICogUmVwbGFjZSBhIFByb3BlcnR5Q2hhbmdlIGluIHRoaXMgb2JqZWN0XG4gICAqXG4gICAqIFRoaXMgYWZmZWN0cyB0aGUgcHJvcGVydHkgZGlmZiBhcyBpdCBpcyBzdW1tYXJpemVkIHRvIHVzZXJzLCBidXQgaXQgRE9FU1xuICAgKiBOT1QgYWZmZWN0IGVpdGhlciB0aGUgXCJvbGRWYWx1ZVwiIG9yIFwibmV3VmFsdWVcIiB2YWx1ZXM7IHRob3NlIHN0aWxsIGNvbnRhaW5cbiAgICogdGhlIGFjdHVhbCB0ZW1wbGF0ZSB2YWx1ZXMgYXMgcHJvdmlkZWQgYnkgdGhlIHVzZXIgKHRoZXkgbWlnaHQgc3RpbGwgYmVcbiAgICogdXNlZCBmb3IgZG93bnN0cmVhbSBwcm9jZXNzaW5nKS5cbiAgICovXG4gIHB1YmxpYyBzZXRQcm9wZXJ0eUNoYW5nZShwcm9wZXJ0eU5hbWU6IHN0cmluZywgY2hhbmdlOiBQcm9wZXJ0eURpZmZlcmVuY2U8YW55Pikge1xuICAgIHRoaXMucHJvcGVydHlEaWZmc1twcm9wZXJ0eU5hbWVdID0gY2hhbmdlO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlcGxhY2UgYSBPdGhlckNoYW5nZSBpbiB0aGlzIG9iamVjdFxuICAgKlxuICAgKiBUaGlzIGFmZmVjdHMgdGhlIHByb3BlcnR5IGRpZmYgYXMgaXQgaXMgc3VtbWFyaXplZCB0byB1c2VycywgYnV0IGl0IERPRVNcbiAgICogTk9UIGFmZmVjdCBlaXRoZXIgdGhlIFwib2xkVmFsdWVcIiBvciBcIm5ld1ZhbHVlXCIgdmFsdWVzOyB0aG9zZSBzdGlsbCBjb250YWluXG4gICAqIHRoZSBhY3R1YWwgdGVtcGxhdGUgdmFsdWVzIGFzIHByb3ZpZGVkIGJ5IHRoZSB1c2VyICh0aGV5IG1pZ2h0IHN0aWxsIGJlXG4gICAqIHVzZWQgZm9yIGRvd25zdHJlYW0gcHJvY2Vzc2luZykuXG4gICAqL1xuICBwdWJsaWMgc2V0T3RoZXJDaGFuZ2Uob3RoZXJOYW1lOiBzdHJpbmcsIGNoYW5nZTogUHJvcGVydHlEaWZmZXJlbmNlPGFueT4pIHtcbiAgICB0aGlzLm90aGVyRGlmZnNbb3RoZXJOYW1lXSA9IGNoYW5nZTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgY2hhbmdlSW1wYWN0KCk6IFJlc291cmNlSW1wYWN0IHtcbiAgICBpZiAodGhpcy5pc0ltcG9ydCkge1xuICAgICAgcmV0dXJuIFJlc291cmNlSW1wYWN0LldJTExfSU1QT1JUO1xuICAgIH1cbiAgICAvLyBDaGVjayB0aGUgVHlwZSBmaXJzdFxuICAgIGlmICh0aGlzLnJlc291cmNlVHlwZXMub2xkVHlwZSAhPT0gdGhpcy5yZXNvdXJjZVR5cGVzLm5ld1R5cGUpIHtcbiAgICAgIGlmICh0aGlzLnJlc291cmNlVHlwZXMub2xkVHlwZSA9PT0gdW5kZWZpbmVkKSB7IHJldHVybiBSZXNvdXJjZUltcGFjdC5XSUxMX0NSRUFURTsgfVxuICAgICAgaWYgKHRoaXMucmVzb3VyY2VUeXBlcy5uZXdUeXBlID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMub2xkVmFsdWUhLkRlbGV0aW9uUG9saWN5ID09PSAnUmV0YWluJ1xuICAgICAgICAgID8gUmVzb3VyY2VJbXBhY3QuV0lMTF9PUlBIQU5cbiAgICAgICAgICA6IFJlc291cmNlSW1wYWN0LldJTExfREVTVFJPWTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBSZXNvdXJjZUltcGFjdC5XSUxMX1JFUExBQ0U7XG4gICAgfVxuXG4gICAgLy8gQmFzZSBpbXBhY3QgKGJlZm9yZSB3ZSBtaXggaW4gdGhlIHdvcnN0IG9mIHRoZSBwcm9wZXJ0eSBpbXBhY3RzKTtcbiAgICAvLyBXSUxMX1VQREFURSBpZiB3ZSBoYXZlIFwib3RoZXJcIiBjaGFuZ2VzLCBOT19DSEFOR0UgaWYgdGhlcmUgYXJlIG5vIFwib3RoZXJcIiBjaGFuZ2VzLlxuICAgIGNvbnN0IGJhc2VJbXBhY3QgPSBPYmplY3Qua2V5cyh0aGlzLm90aGVyQ2hhbmdlcykubGVuZ3RoID4gMCA/IFJlc291cmNlSW1wYWN0LldJTExfVVBEQVRFIDogUmVzb3VyY2VJbXBhY3QuTk9fQ0hBTkdFO1xuXG4gICAgcmV0dXJuIE9iamVjdC52YWx1ZXModGhpcy5wcm9wZXJ0eURpZmZzKVxuICAgICAgLm1hcChlbHQgPT4gZWx0LmNoYW5nZUltcGFjdClcbiAgICAgIC5yZWR1Y2Uod29yc3RJbXBhY3QsIGJhc2VJbXBhY3QpO1xuICB9XG5cbiAgLyoqXG4gICAqIENvdW50IG9mIGFjdHVhbCBkaWZmZXJlbmNlcyAobm90IG9mIGVsZW1lbnRzKVxuICAgKi9cbiAgcHVibGljIGdldCBkaWZmZXJlbmNlQ291bnQoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gT2JqZWN0LnZhbHVlcyh0aGlzLnByb3BlcnR5VXBkYXRlcykubGVuZ3RoXG4gICAgICArIE9iamVjdC52YWx1ZXModGhpcy5vdGhlckNoYW5nZXMpLmxlbmd0aDtcbiAgfVxuXG4gIC8qKlxuICAgKiBJbnZva2UgYSBjYWxsYmFjayBmb3IgZWFjaCBhY3R1YWwgZGlmZmVyZW5jZVxuICAgKi9cbiAgcHVibGljIGZvckVhY2hEaWZmZXJlbmNlKGNiOiAodHlwZTogJ1Byb3BlcnR5JyB8ICdPdGhlcicsIG5hbWU6IHN0cmluZywgdmFsdWU6IERpZmZlcmVuY2U8YW55PiB8IFByb3BlcnR5RGlmZmVyZW5jZTxhbnk+KSA9PiBhbnkpIHtcbiAgICBmb3IgKGNvbnN0IGtleSBvZiBPYmplY3Qua2V5cyh0aGlzLnByb3BlcnR5VXBkYXRlcykuc29ydCgpKSB7XG4gICAgICBjYignUHJvcGVydHknLCBrZXksIHRoaXMucHJvcGVydHlVcGRhdGVzW2tleV0pO1xuICAgIH1cbiAgICBmb3IgKGNvbnN0IGtleSBvZiBPYmplY3Qua2V5cyh0aGlzLm90aGVyQ2hhbmdlcykuc29ydCgpKSB7XG4gICAgICBjYignT3RoZXInLCBrZXksIHRoaXMub3RoZXJEaWZmc1trZXldKTtcbiAgICB9XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzUHJvcGVydHlEaWZmZXJlbmNlPFQ+KGRpZmY6IERpZmZlcmVuY2U8VD4pOiBkaWZmIGlzIFByb3BlcnR5RGlmZmVyZW5jZTxUPiB7XG4gIHJldHVybiAoZGlmZiBhcyBQcm9wZXJ0eURpZmZlcmVuY2U8VD4pLmNoYW5nZUltcGFjdCAhPT0gdW5kZWZpbmVkO1xufVxuXG4vKipcbiAqIEZpbHRlciBhIG1hcCBvZiBJRGlmZmVyZW5jZXMgZG93biB0byBvbmx5IHJldGFpbiB0aGUgYWN0dWFsIGNoYW5nZXNcbiAqL1xuZnVuY3Rpb24gb25seUNoYW5nZXM8ViwgVCBleHRlbmRzIElEaWZmZXJlbmNlPFY+Pih4czoge1trZXk6IHN0cmluZ106IFR9KToge1trZXk6IHN0cmluZ106IFR9IHtcbiAgY29uc3QgcmV0OiB7IFtrZXk6IHN0cmluZ106IFQgfSA9IHt9O1xuICBmb3IgKGNvbnN0IFtrZXksIGRpZmZdIG9mIE9iamVjdC5lbnRyaWVzKHhzKSkge1xuICAgIGlmIChkaWZmLmlzRGlmZmVyZW50KSB7XG4gICAgICByZXRba2V5XSA9IGRpZmY7XG4gICAgfVxuICB9XG4gIHJldHVybiByZXQ7XG59XG4iXX0=","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.loadResourceModel = exports.mangleLikeCloudFormation = exports.unionOf = exports.diffKeyedEntities = exports.deepEqual = void 0;\nconst aws_service_spec_1 = require(\"@aws-cdk/aws-service-spec\");\n/**\n * Compares two objects for equality, deeply. The function handles arguments that are\n * +null+, +undefined+, arrays and objects. For objects, the function will not take the\n * object prototype into account for the purpose of the comparison, only the values of\n * properties reported by +Object.keys+.\n *\n * If both operands can be parsed to equivalent numbers, will return true.\n * This makes diff consistent with CloudFormation, where a numeric 10 and a literal \"10\"\n * are considered equivalent.\n *\n * @param lvalue the left operand of the equality comparison.\n * @param rvalue the right operand of the equality comparison.\n *\n * @returns +true+ if both +lvalue+ and +rvalue+ are equivalent to each other.\n */\nfunction deepEqual(lvalue, rvalue) {\n if (lvalue === rvalue) {\n return true;\n }\n // CloudFormation allows passing strings into boolean-typed fields\n if (((typeof lvalue === 'string' && typeof rvalue === 'boolean') ||\n (typeof lvalue === 'boolean' && typeof rvalue === 'string')) &&\n lvalue.toString() === rvalue.toString()) {\n return true;\n }\n // allows a numeric 10 and a literal \"10\" to be equivalent;\n // this is consistent with CloudFormation.\n if ((typeof lvalue === 'string' || typeof rvalue === 'string') &&\n safeParseFloat(lvalue) === safeParseFloat(rvalue)) {\n return true;\n }\n if (typeof lvalue !== typeof rvalue) {\n return false;\n }\n if (Array.isArray(lvalue) !== Array.isArray(rvalue)) {\n return false;\n }\n if (Array.isArray(lvalue) /* && Array.isArray(rvalue) */) {\n if (lvalue.length !== rvalue.length) {\n return false;\n }\n for (let i = 0; i < lvalue.length; i++) {\n if (!deepEqual(lvalue[i], rvalue[i])) {\n return false;\n }\n }\n return true;\n }\n if (typeof lvalue === 'object' /* && typeof rvalue === 'object' */) {\n if (lvalue === null || rvalue === null) {\n // If both were null, they'd have been ===\n return false;\n }\n const keys = Object.keys(lvalue);\n if (keys.length !== Object.keys(rvalue).length) {\n return false;\n }\n for (const key of keys) {\n if (!rvalue.hasOwnProperty(key)) {\n return false;\n }\n if (key === 'DependsOn') {\n if (!dependsOnEqual(lvalue[key], rvalue[key])) {\n return false;\n }\n ;\n // check differences other than `DependsOn`\n continue;\n }\n if (!deepEqual(lvalue[key], rvalue[key])) {\n return false;\n }\n }\n return true;\n }\n // Neither object, nor array: I deduce this is primitive type\n // Primitive type and not ===, so I deduce not deepEqual\n return false;\n}\nexports.deepEqual = deepEqual;\n/**\n * Compares two arguments to DependsOn for equality.\n *\n * @param lvalue the left operand of the equality comparison.\n * @param rvalue the right operand of the equality comparison.\n *\n * @returns +true+ if both +lvalue+ and +rvalue+ are equivalent to each other.\n */\nfunction dependsOnEqual(lvalue, rvalue) {\n // allows ['Value'] and 'Value' to be equal\n if (Array.isArray(lvalue) !== Array.isArray(rvalue)) {\n const array = Array.isArray(lvalue) ? lvalue : rvalue;\n const nonArray = Array.isArray(lvalue) ? rvalue : lvalue;\n if (array.length === 1 && deepEqual(array[0], nonArray)) {\n return true;\n }\n return false;\n }\n // allows arrays passed to DependsOn to be equivalent irrespective of element order\n if (Array.isArray(lvalue) && Array.isArray(rvalue)) {\n if (lvalue.length !== rvalue.length) {\n return false;\n }\n for (let i = 0; i < lvalue.length; i++) {\n for (let j = 0; j < lvalue.length; j++) {\n if ((!deepEqual(lvalue[i], rvalue[j])) && (j === lvalue.length - 1)) {\n return false;\n }\n break;\n }\n }\n return true;\n }\n return false;\n}\n/**\n * Produce the differences between two maps, as a map, using a specified diff function.\n *\n * @param oldValue the old map.\n * @param newValue the new map.\n * @param elementDiff the diff function.\n *\n * @returns a map representing the differences between +oldValue+ and +newValue+.\n */\nfunction diffKeyedEntities(oldValue, newValue, elementDiff) {\n const result = {};\n for (const logicalId of unionOf(Object.keys(oldValue || {}), Object.keys(newValue || {}))) {\n const oldElement = oldValue && oldValue[logicalId];\n const newElement = newValue && newValue[logicalId];\n if (oldElement === undefined && newElement === undefined) {\n // Shouldn't happen in reality, but may happen in tests. Skip.\n continue;\n }\n result[logicalId] = elementDiff(oldElement, newElement, logicalId);\n }\n return result;\n}\nexports.diffKeyedEntities = diffKeyedEntities;\n/**\n * Computes the union of two sets of strings.\n *\n * @param lv the left set of strings.\n * @param rv the right set of strings.\n *\n * @returns a new array containing all elemebts from +lv+ and +rv+, with no duplicates.\n */\nfunction unionOf(lv, rv) {\n const result = new Set(lv);\n for (const v of rv) {\n result.add(v);\n }\n return new Array(...result);\n}\nexports.unionOf = unionOf;\n/**\n * GetStackTemplate flattens any codepoint greater than \"\\u7f\" to \"?\". This is\n * true even for codepoints in the supplemental planes which are represented\n * in JS as surrogate pairs, all the way up to \"\\u{10ffff}\".\n *\n * This function implements the same mangling in order to provide diagnostic\n * information in `cdk diff`.\n */\nfunction mangleLikeCloudFormation(payload) {\n return payload.replace(/[\\u{80}-\\u{10ffff}]/gu, '?');\n}\nexports.mangleLikeCloudFormation = mangleLikeCloudFormation;\n/**\n * A parseFloat implementation that does the right thing for\n * strings like '0.0.0'\n * (for which JavaScript's parseFloat() returns 0).\n * We return NaN for all of these strings that do not represent numbers,\n * and so comparing them fails,\n * and doesn't short-circuit the diff logic.\n */\nfunction safeParseFloat(str) {\n return Number(str);\n}\n/**\n * Lazily load the service spec database and cache the loaded db\n*/\nlet DATABASE;\nfunction database() {\n if (!DATABASE) {\n DATABASE = (0, aws_service_spec_1.loadAwsServiceSpecSync)();\n }\n return DATABASE;\n}\n/**\n * Load a Resource model from the Service Spec Database\n *\n * The database is loaded lazily and cached across multiple calls to `loadResourceModel`.\n */\nfunction loadResourceModel(type) {\n return database().lookup('resource', 'cloudFormationType', 'equals', type)[0];\n}\nexports.loadResourceModel = loadResourceModel;\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInV0aWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsZ0VBQW1FO0FBR25FOzs7Ozs7Ozs7Ozs7OztHQWNHO0FBQ0gsU0FBZ0IsU0FBUyxDQUFDLE1BQVcsRUFBRSxNQUFXO0lBQ2hELElBQUksTUFBTSxLQUFLLE1BQU0sRUFBRSxDQUFDO1FBQUMsT0FBTyxJQUFJLENBQUM7SUFBQyxDQUFDO0lBQ3ZDLGtFQUFrRTtJQUNsRSxJQUFJLENBQUMsQ0FBQyxPQUFPLE1BQU0sS0FBSyxRQUFRLElBQUksT0FBTyxNQUFNLEtBQUssU0FBUyxDQUFDO1FBQzVELENBQUMsT0FBTyxNQUFNLEtBQUssU0FBUyxJQUFJLE9BQU8sTUFBTSxLQUFLLFFBQVEsQ0FBQyxDQUFDO1FBQzVELE1BQU0sQ0FBQyxRQUFRLEVBQUUsS0FBSyxNQUFNLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQztRQUM1QyxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFDRCwyREFBMkQ7SUFDM0QsMENBQTBDO0lBQzFDLElBQUksQ0FBQyxPQUFPLE1BQU0sS0FBSyxRQUFRLElBQUksT0FBTyxNQUFNLEtBQUssUUFBUSxDQUFDO1FBQzFELGNBQWMsQ0FBQyxNQUFNLENBQUMsS0FBSyxjQUFjLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztRQUN0RCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFDRCxJQUFJLE9BQU8sTUFBTSxLQUFLLE9BQU8sTUFBTSxFQUFFLENBQUM7UUFBQyxPQUFPLEtBQUssQ0FBQztJQUFDLENBQUM7SUFDdEQsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxLQUFLLEtBQUssQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztRQUFDLE9BQU8sS0FBSyxDQUFDO0lBQUMsQ0FBQztJQUN0RSxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsOEJBQThC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QVEsRUFBRSxDQUFDLE1BQU0sQ0FBQyxVQUFVLEVBQUUsb0JBQW9CLEVBQUUsUUFBUSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ2hGLENBQUM7QUFGRCw4Q0FFQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGxvYWRBd3NTZXJ2aWNlU3BlY1N5bmMgfSBmcm9tICdAYXdzLWNkay9hd3Mtc2VydmljZS1zcGVjJztcbmltcG9ydCB7IFJlc291cmNlLCBTcGVjRGF0YWJhc2UgfSBmcm9tICdAYXdzLWNkay9zZXJ2aWNlLXNwZWMtdHlwZXMnO1xuXG4vKipcbiAqIENvbXBhcmVzIHR3byBvYmplY3RzIGZvciBlcXVhbGl0eSwgZGVlcGx5LiBUaGUgZnVuY3Rpb24gaGFuZGxlcyBhcmd1bWVudHMgdGhhdCBhcmVcbiAqICtudWxsKywgK3VuZGVmaW5lZCssIGFycmF5cyBhbmQgb2JqZWN0cy4gRm9yIG9iamVjdHMsIHRoZSBmdW5jdGlvbiB3aWxsIG5vdCB0YWtlIHRoZVxuICogb2JqZWN0IHByb3RvdHlwZSBpbnRvIGFjY291bnQgZm9yIHRoZSBwdXJwb3NlIG9mIHRoZSBjb21wYXJpc29uLCBvbmx5IHRoZSB2YWx1ZXMgb2ZcbiAqIHByb3BlcnRpZXMgcmVwb3J0ZWQgYnkgK09iamVjdC5rZXlzKy5cbiAqXG4gKiBJZiBib3RoIG9wZXJhbmRzIGNhbiBiZSBwYXJzZWQgdG8gZXF1aXZhbGVudCBudW1iZXJzLCB3aWxsIHJldHVybiB0cnVlLlxuICogVGhpcyBtYWtlcyBkaWZmIGNvbnNpc3RlbnQgd2l0aCBDbG91ZEZvcm1hdGlvbiwgd2hlcmUgYSBudW1lcmljIDEwIGFuZCBhIGxpdGVyYWwgXCIxMFwiXG4gKiBhcmUgY29uc2lkZXJlZCBlcXVpdmFsZW50LlxuICpcbiAqIEBwYXJhbSBsdmFsdWUgdGhlIGxlZnQgb3BlcmFuZCBvZiB0aGUgZXF1YWxpdHkgY29tcGFyaXNvbi5cbiAqIEBwYXJhbSBydmFsdWUgdGhlIHJpZ2h0IG9wZXJhbmQgb2YgdGhlIGVxdWFsaXR5IGNvbXBhcmlzb24uXG4gKlxuICogQHJldHVybnMgK3RydWUrIGlmIGJvdGggK2x2YWx1ZSsgYW5kICtydmFsdWUrIGFyZSBlcXVpdmFsZW50IHRvIGVhY2ggb3RoZXIuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkZWVwRXF1YWwobHZhbHVlOiBhbnksIHJ2YWx1ZTogYW55KTogYm9vbGVhbiB7XG4gIGlmIChsdmFsdWUgPT09IHJ2YWx1ZSkgeyByZXR1cm4gdHJ1ZTsgfVxuICAvLyBDbG91ZEZvcm1hdGlvbiBhbGxvd3MgcGFzc2luZyBzdHJpbmdzIGludG8gYm9vbGVhbi10eXBlZCBmaWVsZHNcbiAgaWYgKCgodHlwZW9mIGx2YWx1ZSA9PT0gJ3N0cmluZycgJiYgdHlwZW9mIHJ2YWx1ZSA9PT0gJ2Jvb2xlYW4nKSB8fFxuICAgICAgKHR5cGVvZiBsdmFsdWUgPT09ICdib29sZWFuJyAmJiB0eXBlb2YgcnZhbHVlID09PSAnc3RyaW5nJykpICYmXG4gICAgICBsdmFsdWUudG9TdHJpbmcoKSA9PT0gcnZhbHVlLnRvU3RyaW5nKCkpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuICAvLyBhbGxvd3MgYSBudW1lcmljIDEwIGFuZCBhIGxpdGVyYWwgXCIxMFwiIHRvIGJlIGVxdWl2YWxlbnQ7XG4gIC8vIHRoaXMgaXMgY29uc2lzdGVudCB3aXRoIENsb3VkRm9ybWF0aW9uLlxuICBpZiAoKHR5cGVvZiBsdmFsdWUgPT09ICdzdHJpbmcnIHx8IHR5cGVvZiBydmFsdWUgPT09ICdzdHJpbmcnKSAmJlxuICAgICAgc2FmZVBhcnNlRmxvYXQobHZhbHVlKSA9PT0gc2FmZVBhcnNlRmxvYXQocnZhbHVlKSkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG4gIGlmICh0eXBlb2YgbHZhbHVlICE9PSB0eXBlb2YgcnZhbHVlKSB7IHJldHVybiBmYWxzZTsgfVxuICBpZiAoQXJyYXkuaXNBcnJheShsdmFsdWUpICE9PSBBcnJheS5pc0FycmF5KHJ2YWx1ZSkpIHsgcmV0dXJuIGZhbHNlOyB9XG4gIGlmIChBcnJheS5pc0FycmF5KGx2YWx1ZSkgLyogJiYgQXJyYXkuaXNBcnJheShydmFsdWUpICovKSB7XG4gICAgaWYgKGx2YWx1ZS5sZW5ndGggIT09IHJ2YWx1ZS5sZW5ndGgpIHsgcmV0dXJuIGZhbHNlOyB9XG4gICAgZm9yIChsZXQgaSA9IDAgOyBpIDwgbHZhbHVlLmxlbmd0aCA7IGkrKykge1xuICAgICAgaWYgKCFkZWVwRXF1YWwobHZhbHVlW2ldLCBydmFsdWVbaV0pKSB7IHJldHVybiBmYWxzZTsgfVxuICAgIH1cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuICBpZiAodHlwZW9mIGx2YWx1ZSA9PT0gJ29iamVjdCcgLyogJiYgdHlwZW9mIHJ2YWx1ZSA9PT0gJ29iamVjdCcgKi8pIHtcbiAgICBpZiAobHZhbHVlID09PSBudWxsIHx8IHJ2YWx1ZSA9PT0gbnVsbCkge1xuICAgICAgLy8gSWYgYm90aCB3ZXJlIG51bGwsIHRoZXknZCBoYXZlIGJlZW4gPT09XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGNvbnN0IGtleXMgPSBPYmplY3Qua2V5cyhsdmFsdWUpO1xuICAgIGlmIChrZXlzLmxlbmd0aCAhPT0gT2JqZWN0LmtleXMocnZhbHVlKS5sZW5ndGgpIHsgcmV0dXJuIGZhbHNlOyB9XG4gICAgZm9yIChjb25zdCBrZXkgb2Yga2V5cykge1xuICAgICAgaWYgKCFydmFsdWUuaGFzT3duUHJvcGVydHkoa2V5KSkgeyByZXR1cm4gZmFsc2U7IH1cbiAgICAgIGlmIChrZXkgPT09ICdEZXBlbmRzT24nKSB7XG4gICAgICAgIGlmICghZGVwZW5kc09uRXF1YWwobHZhbHVlW2tleV0sIHJ2YWx1ZVtrZXldKSkgeyByZXR1cm4gZmFsc2U7IH07XG4gICAgICAgIC8vIGNoZWNrIGRpZmZlcmVuY2VzIG90aGVyIHRoYW4gYERlcGVuZHNPbmBcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG4gICAgICBpZiAoIWRlZXBFcXVhbChsdmFsdWVba2V5XSwgcnZhbHVlW2tleV0pKSB7IHJldHVybiBmYWxzZTsgfVxuICAgIH1cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuICAvLyBOZWl0aGVyIG9iamVjdCwgbm9yIGFycmF5OiBJIGRlZHVjZSB0aGlzIGlzIHByaW1pdGl2ZSB0eXBlXG4gIC8vIFByaW1pdGl2ZSB0eXBlIGFuZCBub3QgPT09LCBzbyBJIGRlZHVjZSBub3QgZGVlcEVxdWFsXG4gIHJldHVybiBmYWxzZTtcbn1cblxuLyoqXG4gKiBDb21wYXJlcyB0d28gYXJndW1lbnRzIHRvIERlcGVuZHNPbiBmb3IgZXF1YWxpdHkuXG4gKlxuICogQHBhcmFtIGx2YWx1ZSB0aGUgbGVmdCBvcGVyYW5kIG9mIHRoZSBlcXVhbGl0eSBjb21wYXJpc29uLlxuICogQHBhcmFtIHJ2YWx1ZSB0aGUgcmlnaHQgb3BlcmFuZCBvZiB0aGUgZXF1YWxpdHkgY29tcGFyaXNvbi5cbiAqXG4gKiBAcmV0dXJucyArdHJ1ZSsgaWYgYm90aCArbHZhbHVlKyBhbmQgK3J2YWx1ZSsgYXJlIGVxdWl2YWxlbnQgdG8gZWFjaCBvdGhlci5cbiAqL1xuZnVuY3Rpb24gZGVwZW5kc09uRXF1YWwobHZhbHVlOiBhbnksIHJ2YWx1ZTogYW55KTogYm9vbGVhbiB7XG4gIC8vIGFsbG93cyBbJ1ZhbHVlJ10gYW5kICdWYWx1ZScgdG8gYmUgZXF1YWxcbiAgaWYgKEFycmF5LmlzQXJyYXkobHZhbHVlKSAhPT0gQXJyYXkuaXNBcnJheShydmFsdWUpKSB7XG4gICAgY29uc3QgYXJyYXkgPSBBcnJheS5pc0FycmF5KGx2YWx1ZSkgPyBsdmFsdWUgOiBydmFsdWU7XG4gICAgY29uc3Qgbm9uQXJyYXkgPSBBcnJheS5pc0FycmF5KGx2YWx1ZSkgPyBydmFsdWUgOiBsdmFsdWU7XG5cbiAgICBpZiAoYXJyYXkubGVuZ3RoID09PSAxICYmIGRlZXBFcXVhbChhcnJheVswXSwgbm9uQXJyYXkpKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgLy8gYWxsb3dzIGFycmF5cyBwYXNzZWQgdG8gRGVwZW5kc09uIHRvIGJlIGVxdWl2YWxlbnQgaXJyZXNwZWN0aXZlIG9mIGVsZW1lbnQgb3JkZXJcbiAgaWYgKEFycmF5LmlzQXJyYXkobHZhbHVlKSAmJiBBcnJheS5pc0FycmF5KHJ2YWx1ZSkpIHtcbiAgICBpZiAobHZhbHVlLmxlbmd0aCAhPT0gcnZhbHVlLmxlbmd0aCkgeyByZXR1cm4gZmFsc2U7IH1cbiAgICBmb3IgKGxldCBpID0gMCA7IGkgPCBsdmFsdWUubGVuZ3RoIDsgaSsrKSB7XG4gICAgICBmb3IgKGxldCBqID0gMCA7IGogPCBsdmFsdWUubGVuZ3RoIDsgaisrKSB7XG4gICAgICAgIGlmICgoIWRlZXBFcXVhbChsdmFsdWVbaV0sIHJ2YWx1ZVtqXSkpICYmIChqID09PSBsdmFsdWUubGVuZ3RoIC0gMSkpIHtcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgcmV0dXJuIGZhbHNlO1xufVxuXG4vKipcbiAqIFByb2R1Y2UgdGhlIGRpZmZlcmVuY2VzIGJldHdlZW4gdHdvIG1hcHMsIGFzIGEgbWFwLCB1c2luZyBhIHNwZWNpZmllZCBkaWZmIGZ1bmN0aW9uLlxuICpcbiAqIEBwYXJhbSBvbGRWYWx1ZSAgdGhlIG9sZCBtYXAuXG4gKiBAcGFyYW0gbmV3VmFsdWUgIHRoZSBuZXcgbWFwLlxuICogQHBhcmFtIGVsZW1lbnREaWZmIHRoZSBkaWZmIGZ1bmN0aW9uLlxuICpcbiAqIEByZXR1cm5zIGEgbWFwIHJlcHJlc2VudGluZyB0aGUgZGlmZmVyZW5jZXMgYmV0d2VlbiArb2xkVmFsdWUrIGFuZCArbmV3VmFsdWUrLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZGlmZktleWVkRW50aXRpZXM8VD4oXG4gIG9sZFZhbHVlOiB7IFtrZXk6IHN0cmluZ106IGFueSB9IHwgdW5kZWZpbmVkLFxuICBuZXdWYWx1ZTogeyBba2V5OiBzdHJpbmddOiBhbnkgfSB8IHVuZGVmaW5lZCxcbiAgZWxlbWVudERpZmY6IChvbGRFbGVtZW50OiBhbnksIG5ld0VsZW1lbnQ6IGFueSwga2V5OiBzdHJpbmcpID0+IFQpOiB7IFtuYW1lOiBzdHJpbmddOiBUIH0ge1xuICBjb25zdCByZXN1bHQ6IHsgW25hbWU6IHN0cmluZ106IFQgfSA9IHt9O1xuICBmb3IgKGNvbnN0IGxvZ2ljYWxJZCBvZiB1bmlvbk9mKE9iamVjdC5rZXlzKG9sZFZhbHVlIHx8IHt9KSwgT2JqZWN0LmtleXMobmV3VmFsdWUgfHwge30pKSkge1xuICAgIGNvbnN0IG9sZEVsZW1lbnQgPSBvbGRWYWx1ZSAmJiBvbGRWYWx1ZVtsb2dpY2FsSWRdO1xuICAgIGNvbnN0IG5ld0VsZW1lbnQgPSBuZXdWYWx1ZSAmJiBuZXdWYWx1ZVtsb2dpY2FsSWRdO1xuXG4gICAgaWYgKG9sZEVsZW1lbnQgPT09IHVuZGVmaW5lZCAmJiBuZXdFbGVtZW50ID09PSB1bmRlZmluZWQpIHtcbiAgICAgIC8vIFNob3VsZG4ndCBoYXBwZW4gaW4gcmVhbGl0eSwgYnV0IG1heSBoYXBwZW4gaW4gdGVzdHMuIFNraXAuXG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICByZXN1bHRbbG9naWNhbElkXSA9IGVsZW1lbnREaWZmKG9sZEVsZW1lbnQsIG5ld0VsZW1lbnQsIGxvZ2ljYWxJZCk7XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuLyoqXG4gKiBDb21wdXRlcyB0aGUgdW5pb24gb2YgdHdvIHNldHMgb2Ygc3RyaW5ncy5cbiAqXG4gKiBAcGFyYW0gbHYgdGhlIGxlZnQgc2V0IG9mIHN0cmluZ3MuXG4gKiBAcGFyYW0gcnYgdGhlIHJpZ2h0IHNldCBvZiBzdHJpbmdzLlxuICpcbiAqIEByZXR1cm5zIGEgbmV3IGFycmF5IGNvbnRhaW5pbmcgYWxsIGVsZW1lYnRzIGZyb20gK2x2KyBhbmQgK3J2Kywgd2l0aCBubyBkdXBsaWNhdGVzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gdW5pb25PZihsdjogc3RyaW5nW10gfCBTZXQ8c3RyaW5nPiwgcnY6IHN0cmluZ1tdIHwgU2V0PHN0cmluZz4pOiBzdHJpbmdbXSB7XG4gIGNvbnN0IHJlc3VsdCA9IG5ldyBTZXQobHYpO1xuICBmb3IgKGNvbnN0IHYgb2YgcnYpIHtcbiAgICByZXN1bHQuYWRkKHYpO1xuICB9XG4gIHJldHVybiBuZXcgQXJyYXkoLi4ucmVzdWx0KTtcbn1cblxuLyoqXG4gKiBHZXRTdGFja1RlbXBsYXRlIGZsYXR0ZW5zIGFueSBjb2RlcG9pbnQgZ3JlYXRlciB0aGFuIFwiXFx1N2ZcIiB0byBcIj9cIi4gVGhpcyBpc1xuICogdHJ1ZSBldmVuIGZvciBjb2RlcG9pbnRzIGluIHRoZSBzdXBwbGVtZW50YWwgcGxhbmVzIHdoaWNoIGFyZSByZXByZXNlbnRlZFxuICogaW4gSlMgYXMgc3Vycm9nYXRlIHBhaXJzLCBhbGwgdGhlIHdheSB1cCB0byBcIlxcdXsxMGZmZmZ9XCIuXG4gKlxuICogVGhpcyBmdW5jdGlvbiBpbXBsZW1lbnRzIHRoZSBzYW1lIG1hbmdsaW5nIGluIG9yZGVyIHRvIHByb3ZpZGUgZGlhZ25vc3RpY1xuICogaW5mb3JtYXRpb24gaW4gYGNkayBkaWZmYC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG1hbmdsZUxpa2VDbG91ZEZvcm1hdGlvbihwYXlsb2FkOiBzdHJpbmcpIHtcbiAgcmV0dXJuIHBheWxvYWQucmVwbGFjZSgvW1xcdXs4MH0tXFx1ezEwZmZmZn1dL2d1LCAnPycpO1xufVxuXG4vKipcbiAqIEEgcGFyc2VGbG9hdCBpbXBsZW1lbnRhdGlvbiB0aGF0IGRvZXMgdGhlIHJpZ2h0IHRoaW5nIGZvclxuICogc3RyaW5ncyBsaWtlICcwLjAuMCdcbiAqIChmb3Igd2hpY2ggSmF2YVNjcmlwdCdzIHBhcnNlRmxvYXQoKSByZXR1cm5zIDApLlxuICogV2UgcmV0dXJuIE5hTiBmb3IgYWxsIG9mIHRoZXNlIHN0cmluZ3MgdGhhdCBkbyBub3QgcmVwcmVzZW50IG51bWJlcnMsXG4gKiBhbmQgc28gY29tcGFyaW5nIHRoZW0gZmFpbHMsXG4gKiBhbmQgZG9lc24ndCBzaG9ydC1jaXJjdWl0IHRoZSBkaWZmIGxvZ2ljLlxuICovXG5mdW5jdGlvbiBzYWZlUGFyc2VGbG9hdChzdHI6IHN0cmluZyk6IG51bWJlciB7XG4gIHJldHVybiBOdW1iZXIoc3RyKTtcbn1cblxuLyoqXG4gKiBMYXppbHkgbG9hZCB0aGUgc2VydmljZSBzcGVjIGRhdGFiYXNlIGFuZCBjYWNoZSB0aGUgbG9hZGVkIGRiXG4qL1xubGV0IERBVEFCQVNFOiBTcGVjRGF0YWJhc2UgfCB1bmRlZmluZWQ7XG5mdW5jdGlvbiBkYXRhYmFzZSgpOiBTcGVjRGF0YWJhc2Uge1xuICBpZiAoIURBVEFCQVNFKSB7XG4gICAgREFUQUJBU0UgPSBsb2FkQXdzU2VydmljZVNwZWNTeW5jKCk7XG4gIH1cbiAgcmV0dXJuIERBVEFCQVNFO1xufVxuXG4vKipcbiAqIExvYWQgYSBSZXNvdXJjZSBtb2RlbCBmcm9tIHRoZSBTZXJ2aWNlIFNwZWMgRGF0YWJhc2VcbiAqXG4gKiBUaGUgZGF0YWJhc2UgaXMgbG9hZGVkIGxhemlseSBhbmQgY2FjaGVkIGFjcm9zcyBtdWx0aXBsZSBjYWxscyB0byBgbG9hZFJlc291cmNlTW9kZWxgLlxuICovXG5leHBvcnQgZnVuY3Rpb24gbG9hZFJlc291cmNlTW9kZWwodHlwZTogc3RyaW5nKTogUmVzb3VyY2UgfCB1bmRlZmluZWQge1xuICByZXR1cm4gZGF0YWJhc2UoKS5sb29rdXAoJ3Jlc291cmNlJywgJ2Nsb3VkRm9ybWF0aW9uVHlwZScsICdlcXVhbHMnLCB0eXBlKVswXTtcbn1cbiJdfQ==","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.DiffableCollection = void 0;\n/**\n * Calculate differences of immutable elements\n */\nclass DiffableCollection {\n constructor() {\n this.additions = [];\n this.removals = [];\n this.oldElements = [];\n this.newElements = [];\n }\n addOld(...elements) {\n this.oldElements.push(...elements);\n }\n addNew(...elements) {\n this.newElements.push(...elements);\n }\n calculateDiff() {\n this.additions.push(...difference(this.newElements, this.oldElements));\n this.removals.push(...difference(this.oldElements, this.newElements));\n }\n get hasChanges() {\n return this.additions.length + this.removals.length > 0;\n }\n get hasAdditions() {\n return this.additions.length > 0;\n }\n get hasRemovals() {\n return this.removals.length > 0;\n }\n}\nexports.DiffableCollection = DiffableCollection;\n/**\n * Whether a collection contains some element (by value)\n */\nfunction contains(element, xs) {\n return xs.some(x => x.equal(element));\n}\n/**\n * Return collection except for elements\n */\nfunction difference(collection, elements) {\n return collection.filter(x => !contains(x, elements));\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlmZmFibGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJkaWZmYWJsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQTs7R0FFRztBQUNILE1BQWEsa0JBQWtCO0lBQS9CO1FBQ2tCLGNBQVMsR0FBUSxFQUFFLENBQUM7UUFDcEIsYUFBUSxHQUFRLEVBQUUsQ0FBQztRQUVsQixnQkFBVyxHQUFRLEVBQUUsQ0FBQztRQUN0QixnQkFBVyxHQUFRLEVBQUUsQ0FBQztJQTBCekMsQ0FBQztJQXhCUSxNQUFNLENBQUMsR0FBRyxRQUFhO1FBQzVCLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEdBQUcsUUFBUSxDQUFDLENBQUM7SUFDckMsQ0FBQztJQUVNLE1BQU0sQ0FBQyxHQUFHLFFBQWE7UUFDNUIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsR0FBRyxRQUFRLENBQUMsQ0FBQztJQUNyQyxDQUFDO0lBRU0sYUFBYTtRQUNsQixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxHQUFHLFVBQVUsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDO1FBQ3ZFLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEdBQUcsVUFBVSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUM7SUFDeEUsQ0FBQztJQUVELElBQVcsVUFBVTtRQUNuQixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztJQUMxRCxDQUFDO0lBRUQsSUFBVyxZQUFZO1FBQ3JCLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO0lBQ25DLENBQUM7SUFFRCxJQUFXLFdBQVc7UUFDcEIsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7SUFDbEMsQ0FBQztDQUNGO0FBL0JELGdEQStCQztBQVNEOztHQUVHO0FBQ0gsU0FBUyxRQUFRLENBQWtCLE9BQVUsRUFBRSxFQUFPO0lBQ3BELE9BQU8sRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztBQUN4QyxDQUFDO0FBRUQ7O0dBRUc7QUFDSCxTQUFTLFVBQVUsQ0FBa0IsVUFBZSxFQUFFLFFBQWE7SUFDakUsT0FBTyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxDQUFDLENBQUM7QUFDeEQsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ2FsY3VsYXRlIGRpZmZlcmVuY2VzIG9mIGltbXV0YWJsZSBlbGVtZW50c1xuICovXG5leHBvcnQgY2xhc3MgRGlmZmFibGVDb2xsZWN0aW9uPFQgZXh0ZW5kcyBFcTxUPj4ge1xuICBwdWJsaWMgcmVhZG9ubHkgYWRkaXRpb25zOiBUW10gPSBbXTtcbiAgcHVibGljIHJlYWRvbmx5IHJlbW92YWxzOiBUW10gPSBbXTtcblxuICBwcml2YXRlIHJlYWRvbmx5IG9sZEVsZW1lbnRzOiBUW10gPSBbXTtcbiAgcHJpdmF0ZSByZWFkb25seSBuZXdFbGVtZW50czogVFtdID0gW107XG5cbiAgcHVibGljIGFkZE9sZCguLi5lbGVtZW50czogVFtdKSB7XG4gICAgdGhpcy5vbGRFbGVtZW50cy5wdXNoKC4uLmVsZW1lbnRzKTtcbiAgfVxuXG4gIHB1YmxpYyBhZGROZXcoLi4uZWxlbWVudHM6IFRbXSkge1xuICAgIHRoaXMubmV3RWxlbWVudHMucHVzaCguLi5lbGVtZW50cyk7XG4gIH1cblxuICBwdWJsaWMgY2FsY3VsYXRlRGlmZigpIHtcbiAgICB0aGlzLmFkZGl0aW9ucy5wdXNoKC4uLmRpZmZlcmVuY2UodGhpcy5uZXdFbGVtZW50cywgdGhpcy5vbGRFbGVtZW50cykpO1xuICAgIHRoaXMucmVtb3ZhbHMucHVzaCguLi5kaWZmZXJlbmNlKHRoaXMub2xkRWxlbWVudHMsIHRoaXMubmV3RWxlbWVudHMpKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgaGFzQ2hhbmdlcygpIHtcbiAgICByZXR1cm4gdGhpcy5hZGRpdGlvbnMubGVuZ3RoICsgdGhpcy5yZW1vdmFscy5sZW5ndGggPiAwO1xuICB9XG5cbiAgcHVibGljIGdldCBoYXNBZGRpdGlvbnMoKSB7XG4gICAgcmV0dXJuIHRoaXMuYWRkaXRpb25zLmxlbmd0aCA+IDA7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGhhc1JlbW92YWxzKCkge1xuICAgIHJldHVybiB0aGlzLnJlbW92YWxzLmxlbmd0aCA+IDA7XG4gIH1cbn1cblxuLyoqXG4gKiBUaGluZ3MgdGhhdCBjYW4gYmUgY29tcGFyZWQgdG8gdGhlbXNlbHZlcyAoYnkgdmFsdWUpXG4gKi9cbmludGVyZmFjZSBFcTxUPiB7XG4gIGVxdWFsKG90aGVyOiBUKTogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBXaGV0aGVyIGEgY29sbGVjdGlvbiBjb250YWlucyBzb21lIGVsZW1lbnQgKGJ5IHZhbHVlKVxuICovXG5mdW5jdGlvbiBjb250YWluczxUIGV4dGVuZHMgRXE8VD4+KGVsZW1lbnQ6IFQsIHhzOiBUW10pOiBib29sZWFuIHtcbiAgcmV0dXJuIHhzLnNvbWUoeCA9PiB4LmVxdWFsKGVsZW1lbnQpKTtcbn1cblxuLyoqXG4gKiBSZXR1cm4gY29sbGVjdGlvbiBleGNlcHQgZm9yIGVsZW1lbnRzXG4gKi9cbmZ1bmN0aW9uIGRpZmZlcmVuY2U8VCBleHRlbmRzIEVxPFQ+Pihjb2xsZWN0aW9uOiBUW10sIGVsZW1lbnRzOiBUW10pOiBUW10ge1xuICByZXR1cm4gY29sbGVjdGlvbi5maWx0ZXIoeCA9PiAhY29udGFpbnMoeCwgZWxlbWVudHMpKTtcbn1cbiJdfQ==","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.formatTable = void 0;\nconst chalk = require(\"chalk\");\nconst string_width_1 = require(\"string-width\");\nconst table = require(\"table\");\n/**\n * Render a two-dimensional array to a visually attractive table\n *\n * First row is considered the table header.\n */\nfunction formatTable(cells, columns) {\n return table.table(cells, {\n border: TABLE_BORDER_CHARACTERS,\n columns: buildColumnConfig(columns !== undefined ? calculateColumnWidths(cells, columns) : undefined),\n drawHorizontalLine: (line) => {\n // Numbering like this: [line 0] [header = row[0]] [line 1] [row 1] [line 2] [content 2] [line 3]\n return (line < 2 || line === cells.length) || lineBetween(cells[line - 1], cells[line]);\n },\n }).trimRight();\n}\nexports.formatTable = formatTable;\n/**\n * Whether we should draw a line between two rows\n *\n * Draw horizontal line if 2nd column values are different.\n */\nfunction lineBetween(rowA, rowB) {\n return rowA[1] !== rowB[1];\n}\nfunction buildColumnConfig(widths) {\n if (widths === undefined) {\n return undefined;\n }\n const ret = {};\n widths.forEach((width, i) => {\n if (width === undefined) {\n return;\n }\n ret[i] = { width };\n });\n return ret;\n}\n/**\n * Calculate column widths given a terminal width\n *\n * We do this by calculating a fair share for every column. Extra width smaller\n * than the fair share is evenly distributed over all columns that exceed their\n * fair share.\n */\nfunction calculateColumnWidths(rows, terminalWidth) {\n // The terminal is sometimes reported to be 0. Also if the terminal is VERY narrow,\n // just assume a reasonable minimum size.\n terminalWidth = Math.max(terminalWidth, 40);\n // use 'string-width' to not count ANSI chars as actual character width\n const columns = rows[0].map((_, i) => Math.max(...rows.map(row => (0, string_width_1.default)(String(row[i])))));\n // If we have no terminal width, do nothing\n const contentWidth = terminalWidth - 2 - columns.length * 3;\n // If we don't exceed the terminal width, do nothing\n if (sum(columns) <= contentWidth) {\n return columns;\n }\n const fairShare = Math.min(contentWidth / columns.length);\n const smallColumns = columns.filter(w => w < fairShare);\n let distributableWidth = contentWidth - sum(smallColumns);\n const fairDistributable = Math.floor(distributableWidth / (columns.length - smallColumns.length));\n const ret = new Array();\n for (const requestedWidth of columns) {\n if (requestedWidth < fairShare) {\n // Small column gets what they want\n ret.push(requestedWidth);\n }\n else {\n // Last column gets all remaining, otherwise get fair redist share\n const width = distributableWidth < 2 * fairDistributable ? distributableWidth : fairDistributable;\n ret.push(width);\n distributableWidth -= width;\n }\n }\n return ret;\n}\nfunction sum(xs) {\n let total = 0;\n for (const x of xs) {\n total += x;\n }\n return total;\n}\n// What color the table is going to be\nconst tableColor = chalk.gray;\n// Unicode table characters with a color\nconst TABLE_BORDER_CHARACTERS = {\n topBody: tableColor('─'),\n topJoin: tableColor('┬'),\n topLeft: tableColor('┌'),\n topRight: tableColor('┐'),\n bottomBody: tableColor('─'),\n bottomJoin: tableColor('┴'),\n bottomLeft: tableColor('└'),\n bottomRight: tableColor('┘'),\n bodyLeft: tableColor('│'),\n bodyRight: tableColor('│'),\n bodyJoin: tableColor('│'),\n joinBody: tableColor('─'),\n joinLeft: tableColor('├'),\n joinRight: tableColor('┤'),\n joinJoin: tableColor('┼'),\n};\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybWF0LXRhYmxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiZm9ybWF0LXRhYmxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLCtCQUErQjtBQUMvQiwrQ0FBdUM7QUFDdkMsK0JBQStCO0FBRS9COzs7O0dBSUc7QUFDSCxTQUFnQixXQUFXLENBQUMsS0FBaUIsRUFBRSxPQUEyQjtJQUN4RSxPQUFPLEtBQUssQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFO1FBQ3hCLE1BQU0sRUFBRSx1QkFBdUI7UUFDL0IsT0FBTyxFQUFFLGlCQUFpQixDQUFDLE9BQU8sS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDLHFCQUFxQixDQUFDLEtBQUssRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO1FBQ3JHLGtCQUFrQixFQUFFLENBQUMsSUFBSSxFQUFFLEVBQUU7WUFDM0IsaUdBQWlHO1lBQ2pHLE9BQU8sQ0FBQyxJQUFJLEdBQUcsQ0FBQyxJQUFJLElBQUksS0FBSyxLQUFLLENBQUMsTUFBTSxDQUFDLElBQUksV0FBVyxDQUFDLEtBQUssQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7UUFDMUYsQ0FBQztLQUNGLENBQUMsQ0FBQyxTQUFTLEVBQUUsQ0FBQztBQUNqQixDQUFDO0FBVEQsa0NBU0M7QUFFRDs7OztHQUlHO0FBQ0gsU0FBUyxXQUFXLENBQUMsSUFBYyxFQUFFLElBQWM7SUFDakQsT0FBTyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzdCLENBQUM7QUFFRCxTQUFTLGlCQUFpQixDQUFDLE1BQTRCO0lBQ3JELElBQUksTUFBTSxLQUFLLFNBQVMsRUFBRSxDQUFDO1FBQUMsT0FBTyxTQUFTLENBQUM7SUFBQyxDQUFDO0lBRS9DLE1BQU0sR0FBRyxHQUFnRCxFQUFFLENBQUM7SUFDNUQsTUFBTSxDQUFD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QUFDO0lBQ3hCLE9BQU8sRUFBRSxVQUFVLENBQUMsR0FBRyxDQUFDO0lBQ3hCLE9BQU8sRUFBRSxVQUFVLENBQUMsR0FBRyxDQUFDO0lBQ3hCLFFBQVEsRUFBRSxVQUFVLENBQUMsR0FBRyxDQUFDO0lBQ3pCLFVBQVUsRUFBRSxVQUFVLENBQUMsR0FBRyxDQUFDO0lBQzNCLFVBQVUsRUFBRSxVQUFVLENBQUMsR0FBRyxDQUFDO0lBQzNCLFVBQVUsRUFBRSxVQUFVLENBQUMsR0FBRyxDQUFDO0lBQzNCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxDQUFDO0lBQzVCLFFBQVEsRUFBRSxVQUFVLENBQUMsR0FBRyxDQUFDO0lBQ3pCLFNBQVMsRUFBRSxVQUFVLENBQUMsR0FBRyxDQUFDO0lBQzFCLFFBQVEsRUFBRSxVQUFVLENBQUMsR0FBRyxDQUFDO0lBQ3pCLFFBQVEsRUFBRSxVQUFVLENBQUMsR0FBRyxDQUFDO0lBQ3pCLFFBQVEsRUFBRSxVQUFVLENBQUMsR0FBRyxDQUFDO0lBQ3pCLFNBQVMsRUFBRSxVQUFVLENBQUMsR0FBRyxDQUFDO0lBQzFCLFFBQVEsRUFBRSxVQUFVLENBQUMsR0FBRyxDQUFDO0NBQzFCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBjaGFsayBmcm9tICdjaGFsayc7XG5pbXBvcnQgc3RyaW5nV2lkdGggZnJvbSAnc3RyaW5nLXdpZHRoJztcbmltcG9ydCAqIGFzIHRhYmxlIGZyb20gJ3RhYmxlJztcblxuLyoqXG4gKiBSZW5kZXIgYSB0d28tZGltZW5zaW9uYWwgYXJyYXkgdG8gYSB2aXN1YWxseSBhdHRyYWN0aXZlIHRhYmxlXG4gKlxuICogRmlyc3Qgcm93IGlzIGNvbnNpZGVyZWQgdGhlIHRhYmxlIGhlYWRlci5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZvcm1hdFRhYmxlKGNlbGxzOiBzdHJpbmdbXVtdLCBjb2x1bW5zOiBudW1iZXIgfCB1bmRlZmluZWQpOiBzdHJpbmcge1xuICByZXR1cm4gdGFibGUudGFibGUoY2VsbHMsIHtcbiAgICBib3JkZXI6IFRBQkxFX0JPUkRFUl9DSEFSQUNURVJTLFxuICAgIGNvbHVtbnM6IGJ1aWxkQ29sdW1uQ29uZmlnKGNvbHVtbnMgIT09IHVuZGVmaW5lZCA/IGNhbGN1bGF0ZUNvbHVtbldpZHRocyhjZWxscywgY29sdW1ucykgOiB1bmRlZmluZWQpLFxuICAgIGRyYXdIb3Jpem9udGFsTGluZTogKGxpbmUpID0+IHtcbiAgICAgIC8vIE51bWJlcmluZyBsaWtlIHRoaXM6IFtsaW5lIDBdIFtoZWFkZXIgPSByb3dbMF1dIFtsaW5lIDFdIFtyb3cgMV0gW2xpbmUgMl0gW2NvbnRlbnQgMl0gW2xpbmUgM11cbiAgICAgIHJldHVybiAobGluZSA8IDIgfHwgbGluZSA9PT0gY2VsbHMubGVuZ3RoKSB8fCBsaW5lQmV0d2VlbihjZWxsc1tsaW5lIC0gMV0sIGNlbGxzW2xpbmVdKTtcbiAgICB9LFxuICB9KS50cmltUmlnaHQoKTtcbn1cblxuLyoqXG4gKiBXaGV0aGVyIHdlIHNob3VsZCBkcmF3IGEgbGluZSBiZXR3ZWVuIHR3byByb3dzXG4gKlxuICogRHJhdyBob3Jpem9udGFsIGxpbmUgaWYgMm5kIGNvbHVtbiB2YWx1ZXMgYXJlIGRpZmZlcmVudC5cbiAqL1xuZnVuY3Rpb24gbGluZUJldHdlZW4ocm93QTogc3RyaW5nW10sIHJvd0I6IHN0cmluZ1tdKSB7XG4gIHJldHVybiByb3dBWzFdICE9PSByb3dCWzFdO1xufVxuXG5mdW5jdGlvbiBidWlsZENvbHVtbkNvbmZpZyh3aWR0aHM6IG51bWJlcltdIHwgdW5kZWZpbmVkKTogeyBbaW5kZXg6IG51bWJlcl06IHRhYmxlLkNvbHVtblVzZXJDb25maWcgfSB8IHVuZGVmaW5lZCB7XG4gIGlmICh3aWR0aHMgPT09IHVuZGVmaW5lZCkgeyByZXR1cm4gdW5kZWZpbmVkOyB9XG5cbiAgY29uc3QgcmV0OiB7IFtpbmRleDogbnVtYmVyXTogdGFibGUuQ29sdW1uVXNlckNvbmZpZyB9ID0ge307XG4gIHdpZHRocy5mb3JFYWNoKCh3aWR0aCwgaSkgPT4ge1xuICAgIGlmICh3aWR0aCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHJldFtpXSA9IHsgd2lkdGggfTtcbiAgfSk7XG5cbiAgcmV0dXJuIHJldDtcbn1cblxuLyoqXG4gKiBDYWxjdWxhdGUgY29sdW1uIHdpZHRocyBnaXZlbiBhIHRlcm1pbmFsIHdpZHRoXG4gKlxuICogV2UgZG8gdGhpcyBieSBjYWxjdWxhdGluZyBhIGZhaXIgc2hhcmUgZm9yIGV2ZXJ5IGNvbHVtbi4gRXh0cmEgd2lkdGggc21hbGxlclxuICogdGhhbiB0aGUgZmFpciBzaGFyZSBpcyBldmVubHkgZGlzdHJpYnV0ZWQgb3ZlciBhbGwgY29sdW1ucyB0aGF0IGV4Y2VlZCB0aGVpclxuICogZmFpciBzaGFyZS5cbiAqL1xuZnVuY3Rpb24gY2FsY3VsYXRlQ29sdW1uV2lkdGhzKHJvd3M6IHN0cmluZ1tdW10sIHRlcm1pbmFsV2lkdGg6IG51bWJlcik6IG51bWJlcltdIHtcbiAgLy8gVGhlIHRlcm1pbmFsIGlzIHNvbWV0aW1lcyByZXBvcnRlZCB0byBiZSAwLiBBbHNvIGlmIHRoZSB0ZXJtaW5hbCBpcyBWRVJZIG5hcnJvdyxcbiAgLy8ganVzdCBhc3N1bWUgYSByZWFzb25hYmxlIG1pbmltdW0gc2l6ZS5cbiAgdGVybWluYWxXaWR0aCA9IE1hdGgubWF4KHRlcm1pbmFsV2lkdGgsIDQwKTtcblxuICAvLyB1c2UgJ3N0cmluZy13aWR0aCcgdG8gbm90IGNvdW50IEFOU0kgY2hhcnMgYXMgYWN0dWFsIGNoYXJhY3RlciB3aWR0aFxuICBjb25zdCBjb2x1bW5zID0gcm93c1swXS5tYXAoKF8sIGkpID0+IE1hdGgubWF4KC4uLnJvd3MubWFwKHJvdyA9PiBzdHJpbmdXaWR0aChTdHJpbmcocm93W2ldKSkpKSk7XG5cbiAgLy8gSWYgd2UgaGF2ZSBubyB0ZXJtaW5hbCB3aWR0aCwgZG8gbm90aGluZ1xuICBjb25zdCBjb250ZW50V2lkdGggPSB0ZXJtaW5hbFdpZHRoIC0gMiAtIGNvbHVtbnMubGVuZ3RoICogMztcblxuICAvLyBJZiB3ZSBkb24ndCBleGNlZWQgdGhlIHRlcm1pbmFsIHdpZHRoLCBkbyBub3RoaW5nXG4gIGlmIChzdW0oY29sdW1ucykgPD0gY29udGVudFdpZHRoKSB7IHJldHVybiBjb2x1bW5zOyB9XG5cbiAgY29uc3QgZmFpclNoYXJlID0gTWF0aC5taW4oY29udGVudFdpZHRoIC8gY29sdW1ucy5sZW5ndGgpO1xuICBjb25zdCBzbWFsbENvbHVtbnMgPSBjb2x1bW5zLmZpbHRlcih3ID0+IHcgPCBmYWlyU2hhcmUpO1xuXG4gIGxldCBkaXN0cmlidXRhYmxlV2lkdGggPSBjb250ZW50V2lkdGggLSBzdW0oc21hbGxDb2x1bW5zKTtcbiAgY29uc3QgZmFpckRpc3RyaWJ1dGFibGUgPSBNYXRoLmZsb29yKGRpc3RyaWJ1dGFibGVXaWR0aCAvIChjb2x1bW5zLmxlbmd0aCAtIHNtYWxsQ29sdW1ucy5sZW5ndGgpKTtcblxuICBjb25zdCByZXQgPSBuZXcgQXJyYXk8bnVtYmVyPigpO1xuICBmb3IgKGNvbnN0IHJlcXVlc3RlZFdpZHRoIG9mIGNvbHVtbnMpIHtcbiAgICBpZiAocmVxdWVzdGVkV2lkdGggPCBmYWlyU2hhcmUpIHtcbiAgICAgIC8vIFNtYWxsIGNvbHVtbiBnZXRzIHdoYXQgdGhleSB3YW50XG4gICAgICByZXQucHVzaChyZXF1ZXN0ZWRXaWR0aCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIExhc3QgY29sdW1uIGdldHMgYWxsIHJlbWFpbmluZywgb3RoZXJ3aXNlIGdldCBmYWlyIHJlZGlzdCBzaGFyZVxuICAgICAgY29uc3Qgd2lkdGggPSBkaXN0cmlidXRhYmxlV2lkdGggPCAyICogZmFpckRpc3RyaWJ1dGFibGUgPyBkaXN0cmlidXRhYmxlV2lkdGggOiBmYWlyRGlzdHJpYnV0YWJsZTtcbiAgICAgIHJldC5wdXNoKHdpZHRoKTtcbiAgICAgIGRpc3RyaWJ1dGFibGVXaWR0aCAtPSB3aWR0aDtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gcmV0O1xufVxuXG5mdW5jdGlvbiBzdW0oeHM6IG51bWJlcltdKTogbnVtYmVyIHtcbiAgbGV0IHRvdGFsID0gMDtcbiAgZm9yIChjb25zdCB4IG9mIHhzKSB7XG4gICAgdG90YWwgKz0geDtcbiAgfVxuICByZXR1cm4gdG90YWw7XG59XG5cbi8vIFdoYXQgY29sb3IgdGhlIHRhYmxlIGlzIGdvaW5nIHRvIGJlXG5jb25zdCB0YWJsZUNvbG9yID0gY2hhbGsuZ3JheTtcblxuLy8gVW5pY29kZSB0YWJsZSBjaGFyYWN0ZXJzIHdpdGggYSBjb2xvclxuY29uc3QgVEFCTEVfQk9SREVSX0NIQVJBQ1RFUlMgPSB7XG4gIHRvcEJvZHk6IHRhYmxlQ29sb3IoJ+KUgCcpLFxuICB0b3BKb2luOiB0YWJsZUNvbG9yKCfilKwnKSxcbiAgdG9wTGVmdDogdGFibGVDb2xvcign4pSMJyksXG4gIHRvcFJpZ2h0OiB0YWJsZUNvbG9yKCfilJAnKSxcbiAgYm90dG9tQm9keTogdGFibGVDb2xvcign4pSAJyksXG4gIGJvdHRvbUpvaW46IHRhYmxlQ29sb3IoJ+KUtCcpLFxuICBib3R0b21MZWZ0OiB0YWJsZUNvbG9yKCfilJQnKSxcbiAgYm90dG9tUmlnaHQ6IHRhYmxlQ29sb3IoJ+KUmCcpLFxuICBib2R5TGVmdDogdGFibGVDb2xvcign4pSCJyksXG4gIGJvZHlSaWdodDogdGFibGVDb2xvcign4pSCJyksXG4gIGJvZHlKb2luOiB0YWJsZUNvbG9yKCfilIInKSxcbiAgam9pbkJvZHk6IHRhYmxlQ29sb3IoJ+KUgCcpLFxuICBqb2luTGVmdDogdGFibGVDb2xvcign4pScJyksXG4gIGpvaW5SaWdodDogdGFibGVDb2xvcign4pSkJyksXG4gIGpvaW5Kb2luOiB0YWJsZUNvbG9yKCfilLwnKSxcbn07XG4iXX0=","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Formatter = exports.formatSecurityChanges = exports.formatDifferences = void 0;\nconst util_1 = require(\"util\");\nconst chalk = require(\"chalk\");\nconst util_2 = require(\"./diff/util\");\nconst diff_template_1 = require(\"./diff-template\");\nconst format_table_1 = require(\"./format-table\");\n// from cx-api\nconst PATH_METADATA_KEY = 'aws:cdk:path';\n/* eslint-disable @typescript-eslint/no-require-imports */\nconst { structuredPatch } = require('diff');\n/**\n * Renders template differences to the process' console.\n *\n * @param stream The IO stream where to output the rendered diff.\n * @param templateDiff TemplateDiff to be rendered to the console.\n * @param logicalToPathMap A map from logical ID to construct path. Useful in\n * case there is no aws:cdk:path metadata in the template.\n * @param context the number of context lines to use in arbitrary JSON diff (defaults to 3).\n */\nfunction formatDifferences(stream, templateDiff, logicalToPathMap = {}, context = 3) {\n const formatter = new Formatter(stream, logicalToPathMap, templateDiff, context);\n if (templateDiff.awsTemplateFormatVersion || templateDiff.transform || templateDiff.description) {\n formatter.printSectionHeader('Template');\n formatter.formatDifference('AWSTemplateFormatVersion', 'AWSTemplateFormatVersion', templateDiff.awsTemplateFormatVersion);\n formatter.formatDifference('Transform', 'Transform', templateDiff.transform);\n formatter.formatDifference('Description', 'Description', templateDiff.description);\n formatter.printSectionFooter();\n }\n formatSecurityChangesWithBanner(formatter, templateDiff);\n formatter.formatSection('Parameters', 'Parameter', templateDiff.parameters);\n formatter.formatSection('Metadata', 'Metadata', templateDiff.metadata);\n formatter.formatSection('Mappings', 'Mapping', templateDiff.mappings);\n formatter.formatSection('Conditions', 'Condition', templateDiff.conditions);\n formatter.formatSection('Resources', 'Resource', templateDiff.resources, formatter.formatResourceDifference.bind(formatter));\n formatter.formatSection('Outputs', 'Output', templateDiff.outputs);\n formatter.formatSection('Other Changes', 'Unknown', templateDiff.unknown);\n}\nexports.formatDifferences = formatDifferences;\n/**\n * Renders a diff of security changes to the given stream\n */\nfunction formatSecurityChanges(stream, templateDiff, logicalToPathMap = {}, context) {\n const formatter = new Formatter(stream, logicalToPathMap, templateDiff, context);\n formatSecurityChangesWithBanner(formatter, templateDiff);\n}\nexports.formatSecurityChanges = formatSecurityChanges;\nfunction formatSecurityChangesWithBanner(formatter, templateDiff) {\n if (!templateDiff.iamChanges.hasChanges && !templateDiff.securityGroupChanges.hasChanges) {\n return;\n }\n formatter.formatIamChanges(templateDiff.iamChanges);\n formatter.formatSecurityGroupChanges(templateDiff.securityGroupChanges);\n formatter.warning('(NOTE: There may be security-related changes not in this list. See https://github.com/aws/aws-cdk/issues/1299)');\n formatter.printSectionFooter();\n}\nconst ADDITION = chalk.green('[+]');\nconst CONTEXT = chalk.grey('[ ]');\nconst UPDATE = chalk.yellow('[~]');\nconst REMOVAL = chalk.red('[-]');\nconst IMPORT = chalk.blue('[←]');\nclass Formatter {\n constructor(stream, logicalToPathMap, diff, context = 3) {\n this.stream = stream;\n this.logicalToPathMap = logicalToPathMap;\n this.context = context;\n // Read additional construct paths from the diff if it is supplied\n if (diff) {\n this.readConstructPathsFrom(diff);\n }\n }\n print(fmt, ...args) {\n this.stream.write(chalk.white((0, util_1.format)(fmt, ...args)) + '\\n');\n }\n warning(fmt, ...args) {\n this.stream.write(chalk.yellow((0, util_1.format)(fmt, ...args)) + '\\n');\n }\n formatSection(title, entryType, collection, formatter = this.formatDifference.bind(this)) {\n if (collection.differenceCount === 0) {\n return;\n }\n this.printSectionHeader(title);\n collection.forEachDifference((id, diff) => formatter(entryType, id, diff));\n this.printSectionFooter();\n }\n printSectionHeader(title) {\n this.print(chalk.underline(chalk.bold(title)));\n }\n printSectionFooter() {\n this.print('');\n }\n /**\n * Print a simple difference for a given named entity.\n *\n * @param logicalId the name of the entity that is different.\n * @param diff the difference to be rendered.\n */\n formatDifference(type, logicalId, diff) {\n if (!diff || !diff.isDifferent) {\n return;\n }\n let value;\n const oldValue = this.formatValue(diff.oldValue, chalk.red);\n const newValue = this.formatValue(diff.newValue, chalk.green);\n if (diff.isAddition) {\n value = newValue;\n }\n else if (diff.isUpdate) {\n value = `${oldValue} to ${newValue}`;\n }\n else if (diff.isRemoval) {\n value = oldValue;\n }\n this.print(`${this.formatPrefix(diff)} ${chalk.cyan(type)} ${this.formatLogicalId(logicalId)}: ${value}`);\n }\n /**\n * Print a resource difference for a given logical ID.\n *\n * @param logicalId the logical ID of the resource that changed.\n * @param diff the change to be rendered.\n */\n formatResourceDifference(_type, logicalId, diff) {\n if (!diff.isDifferent) {\n return;\n }\n const resourceType = diff.isRemoval ? diff.oldResourceType : diff.newResourceType;\n // eslint-disable-next-line max-len\n this.print(`${this.formatResourcePrefix(diff)} ${this.formatValue(resourceType, chalk.cyan)} ${this.formatLogicalId(logicalId)} ${this.formatImpact(diff.changeImpact)}`);\n if (diff.isUpdate) {\n const differenceCount = diff.differenceCount;\n let processedCount = 0;\n diff.forEachDifference((_, name, values) => {\n processedCount += 1;\n this.formatTreeDiff(name, values, processedCount === differenceCount);\n });\n }\n }\n formatResourcePrefix(diff) {\n if (diff.isImport) {\n return IMPORT;\n }\n return this.formatPrefix(diff);\n }\n formatPrefix(diff) {\n if (diff.isAddition) {\n return ADDITION;\n }\n if (diff.isUpdate) {\n return UPDATE;\n }\n if (diff.isRemoval) {\n return REMOVAL;\n }\n return chalk.white('[?]');\n }\n /**\n * @param value the value to be formatted.\n * @param color the color to be used.\n *\n * @returns the formatted string, with color applied.\n */\n formatValue(value, color) {\n if (value == null) {\n return undefined;\n }\n if (typeof value === 'string') {\n return color(value);\n }\n return color(JSON.stringify(value));\n }\n /**\n * @param impact the impact to be formatted\n * @returns a user-friendly, colored string representing the impact.\n */\n formatImpact(impact) {\n switch (impact) {\n case diff_template_1.ResourceImpact.MAY_REPLACE:\n return chalk.italic(chalk.yellow('may be replaced'));\n case diff_template_1.ResourceImpact.WILL_REPLACE:\n return chalk.italic(chalk.bold(chalk.red('replace')));\n case diff_template_1.ResourceImpact.WILL_DESTROY:\n return chalk.italic(chalk.bold(chalk.red('destroy')));\n case diff_template_1.ResourceImpact.WILL_ORPHAN:\n return chalk.italic(chalk.yellow('orphan'));\n case diff_template_1.ResourceImpact.WILL_IMPORT:\n return chalk.italic(chalk.blue('import'));\n case diff_template_1.ResourceImpact.WILL_UPDATE:\n case diff_template_1.ResourceImpact.WILL_CREATE:\n case diff_template_1.ResourceImpact.NO_CHANGE:\n return ''; // no extra info is gained here\n }\n }\n /**\n * Renders a tree of differences under a particular name.\n * @param name the name of the root of the tree.\n * @param diff the difference on the tree.\n * @param last whether this is the last node of a parent tree.\n */\n formatTreeDiff(name, diff, last) {\n let additionalInfo = '';\n if ((0, diff_template_1.isPropertyDifference)(diff)) {\n if (diff.changeImpact === diff_template_1.ResourceImpact.MAY_REPLACE) {\n additionalInfo = ' (may cause replacement)';\n }\n else if (diff.changeImpact === diff_template_1.ResourceImpact.WILL_REPLACE) {\n additionalInfo = ' (requires replacement)';\n }\n }\n this.print(' %s─ %s %s%s', last ? '└' : '├', this.changeTag(diff.oldValue, diff.newValue), name, additionalInfo);\n return this.formatObjectDiff(diff.oldValue, diff.newValue, ` ${last ? ' ' : '│'}`);\n }\n /**\n * Renders the difference between two objects, looking for the differences as deep as possible,\n * and rendering a tree graph of the path until the difference is found.\n *\n * @param oldObject the old object.\n * @param newObject the new object.\n * @param linePrefix a prefix (indent-like) to be used on every line.\n */\n formatObjectDiff(oldObject, newObject, linePrefix) {\n if ((typeof oldObject !== typeof newObject) || Array.isArray(oldObject) || typeof oldObject === 'string' || typeof oldObject === 'number') {\n if (oldObject !== undefined && newObject !== undefined) {\n if (typeof oldObject === 'object' || typeof newObject === 'object') {\n const oldStr = JSON.stringify(oldObject, null, 2);\n const newStr = JSON.stringify(newObject, null, 2);\n const diff = _diffStrings(oldStr, newStr, this.context);\n for (let i = 0; i < diff.length; i++) {\n this.print('%s %s %s', linePrefix, i === 0 ? '└─' : ' ', diff[i]);\n }\n }\n else {\n this.print('%s ├─ %s %s', linePrefix, REMOVAL, this.formatValue(oldObject, chalk.red));\n this.print('%s └─ %s %s', linePrefix, ADDITION, this.formatValue(newObject, chalk.green));\n }\n }\n else if (oldObject !== undefined /* && newObject === undefined */) {\n this.print('%s └─ %s', linePrefix, this.formatValue(oldObject, chalk.red));\n }\n else /* if (oldObject === undefined && newObject !== undefined) */ {\n this.print('%s └─ %s', linePrefix, this.formatValue(newObject, chalk.green));\n }\n return;\n }\n const keySet = new Set(Object.keys(oldObject));\n Object.keys(newObject).forEach(k => keySet.add(k));\n const keys = new Array(...keySet).filter(k => !(0, util_2.deepEqual)(oldObject[k], newObject[k])).sort();\n const lastKey = keys[keys.length - 1];\n for (const key of keys) {\n const oldValue = oldObject[key];\n const newValue = newObject[key];\n const treePrefix = key === lastKey ? '└' : '├';\n if (oldValue !== undefined && newValue !== undefined) {\n this.print('%s %s─ %s %s:', linePrefix, treePrefix, this.changeTag(oldValue, newValue), chalk.blue(`.${key}`));\n this.formatObjectDiff(oldValue, newValue, `${linePrefix} ${key === lastKey ? ' ' : '│'}`);\n }\n else if (oldValue !== undefined /* && newValue === undefined */) {\n this.print('%s %s─ %s Removed: %s', linePrefix, treePrefix, REMOVAL, chalk.blue(`.${key}`));\n }\n else /* if (oldValue === undefined && newValue !== undefined */ {\n this.print('%s %s─ %s Added: %s', linePrefix, treePrefix, ADDITION, chalk.blue(`.${key}`));\n }\n }\n }\n /**\n * @param oldValue the old value of a difference.\n * @param newValue the new value of a difference.\n *\n * @returns a tag to be rendered in the diff, reflecting whether the difference\n * was an ADDITION, UPDATE or REMOVAL.\n */\n changeTag(oldValue, newValue) {\n if (oldValue !== undefined && newValue !== undefined) {\n return UPDATE;\n }\n else if (oldValue !== undefined /* && newValue === undefined*/) {\n return REMOVAL;\n }\n else /* if (oldValue === undefined && newValue !== undefined) */ {\n return ADDITION;\n }\n }\n /**\n * Find 'aws:cdk:path' metadata in the diff and add it to the logicalToPathMap\n *\n * There are multiple sources of logicalID -> path mappings: synth metadata\n * and resource metadata, and we combine all sources into a single map.\n */\n readConstructPathsFrom(templateDiff) {\n for (const [logicalId, resourceDiff] of Object.entries(templateDiff.resources)) {\n if (!resourceDiff) {\n continue;\n }\n const oldPathMetadata = resourceDiff.oldValue?.Metadata?.[PATH_METADATA_KEY];\n if (oldPathMetadata && !(logicalId in this.logicalToPathMap)) {\n this.logicalToPathMap[logicalId] = oldPathMetadata;\n }\n const newPathMetadata = resourceDiff.newValue?.Metadata?.[PATH_METADATA_KEY];\n if (newPathMetadata && !(logicalId in this.logicalToPathMap)) {\n this.logicalToPathMap[logicalId] = newPathMetadata;\n }\n }\n }\n formatLogicalId(logicalId) {\n // if we have a path in the map, return it\n const normalized = this.normalizedLogicalIdPath(logicalId);\n if (normalized) {\n return `${normalized} ${chalk.gray(logicalId)}`;\n }\n return logicalId;\n }\n normalizedLogicalIdPath(logicalId) {\n // if we have a path in the map, return it\n const path = this.logicalToPathMap[logicalId];\n return path ? normalizePath(path) : undefined;\n /**\n * Path is supposed to start with \"/stack-name\". If this is the case (i.e. path has more than\n * two components, we remove the first part. Otherwise, we just use the full path.\n * @param p\n */\n function normalizePath(p) {\n if (p.startsWith('/')) {\n p = p.slice(1);\n }\n let parts = p.split('/');\n if (parts.length > 1) {\n parts = parts.slice(1);\n // remove the last component if it's \"Resource\" or \"Default\" (if we have more than a single component)\n if (parts.length > 1) {\n const last = parts[parts.length - 1];\n if (last === 'Resource' || last === 'Default') {\n parts = parts.slice(0, parts.length - 1);\n }\n }\n p = parts.join('/');\n }\n return p;\n }\n }\n formatIamChanges(changes) {\n if (!changes.hasChanges) {\n return;\n }\n if (changes.statements.hasChanges) {\n this.printSectionHeader('IAM Statement Changes');\n this.print((0, format_table_1.formatTable)(this.deepSubstituteBracedLogicalIds(changes.summarizeStatements()), this.stream.columns));\n }\n if (changes.managedPolicies.hasChanges) {\n this.printSectionHeader('IAM Policy Changes');\n this.print((0, format_table_1.formatTable)(this.deepSubstituteBracedLogicalIds(changes.summarizeManagedPolicies()), this.stream.columns));\n }\n if (changes.ssoPermissionSets.hasChanges || changes.ssoInstanceACAConfigs.hasChanges || changes.ssoAssignments.hasChanges) {\n this.printSectionHeader('IAM Identity Center Changes');\n if (changes.ssoPermissionSets.hasChanges) {\n this.print((0, format_table_1.formatTable)(this.deepSubstituteBracedLogicalIds(changes.summarizeSsoPermissionSets()), this.stream.columns));\n }\n if (changes.ssoInstanceACAConfigs.hasChanges) {\n this.print((0, format_table_1.formatTable)(this.deepSubstituteBracedLogicalIds(changes.summarizeSsoInstanceACAConfigs()), this.stream.columns));\n }\n if (changes.ssoAssignments.hasChanges) {\n this.print((0, format_table_1.formatTable)(this.deepSubstituteBracedLogicalIds(changes.summarizeSsoAssignments()), this.stream.columns));\n }\n }\n }\n formatSecurityGroupChanges(changes) {\n if (!changes.hasChanges) {\n return;\n }\n this.printSectionHeader('Security Group Changes');\n this.print((0, format_table_1.formatTable)(this.deepSubstituteBracedLogicalIds(changes.summarize()), this.stream.columns));\n }\n deepSubstituteBracedLogicalIds(rows) {\n return rows.map(row => row.map(this.substituteBracedLogicalIds.bind(this)));\n }\n /**\n * Substitute all strings like ${LogId.xxx} with the path instead of the logical ID\n */\n substituteBracedLogicalIds(source) {\n return source.replace(/\\$\\{([^.}]+)(.[^}]+)?\\}/ig, (_match, logId, suffix) => {\n return '${' + (this.normalizedLogicalIdPath(logId) || logId) + (suffix || '') + '}';\n });\n }\n}\nexports.Formatter = Formatter;\n/**\n * Creates a unified diff of two strings.\n *\n * @param oldStr the \"old\" version of the string.\n * @param newStr the \"new\" version of the string.\n * @param context the number of context lines to use in arbitrary JSON diff.\n *\n * @returns an array of diff lines.\n */\nfunction _diffStrings(oldStr, newStr, context) {\n const patch = structuredPatch(null, null, oldStr, newStr, null, null, { context });\n const result = new Array();\n for (const hunk of patch.hunks) {\n result.push(chalk.magenta(`@@ -${hunk.oldStart},${hunk.oldLines} +${hunk.newStart},${hunk.newLines} @@`));\n const baseIndent = _findIndent(hunk.lines);\n for (const line of hunk.lines) {\n // Don't care about termination newline.\n if (line === '\\\\ No newline at end of file') {\n continue;\n }\n const marker = line.charAt(0);\n const text = line.slice(1 + baseIndent);\n switch (marker) {\n case ' ':\n result.push(`${CONTEXT} ${text}`);\n break;\n case '+':\n result.push(chalk.bold(`${ADDITION} ${chalk.green(text)}`));\n break;\n case '-':\n result.push(chalk.bold(`${REMOVAL} ${chalk.red(text)}`));\n break;\n default:\n throw new Error(`Unexpected diff marker: ${marker} (full line: ${line})`);\n }\n }\n }\n return result;\n function _findIndent(lines) {\n let indent = Number.MAX_SAFE_INTEGER;\n for (const line of lines) {\n for (let i = 1; i < line.length; i++) {\n if (line.charAt(i) !== ' ') {\n indent = indent > i - 1 ? i - 1 : indent;\n break;\n }\n }\n }\n return indent;\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybWF0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiZm9ybWF0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLCtCQUE4QjtBQUM5QiwrQkFBK0I7QUFFL0Isc0NBQXdDO0FBQ3hDLG1EQUF1RztBQUN2RyxpREFBNkM7QUFJN0MsY0FBYztBQUNkLE1BQU0saUJBQWlCLEdBQUcsY0FBYyxDQUFDO0FBRXpDLDBEQUEwRDtBQUMxRCxNQUFNLEVBQUUsZUFBZSxFQUFFLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBTzVDOzs7Ozs7OztHQVFHO0FBQ0gsU0FBZ0IsaUJBQWlCLENBQy9CLE1BQW9CLEVBQ3BCLFlBQTBCLEVBQzFCLG1CQUFvRCxFQUFFLEVBQ3RELFVBQWtCLENBQUM7SUFDbkIsTUFBTSxTQUFTLEdBQUcsSUFBSSxTQUFTLENBQUMsTUFBTSxFQUFFLGdCQUFnQixFQUFFLFlBQVksRUFBRSxPQUFPLENBQUMsQ0FBQztJQUVqRixJQUFJLFlBQVksQ0FBQyx3QkFBd0IsSUFBSSxZQUFZLENBQUMsU0FBUyxJQUFJLFlBQVksQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUNoRyxTQUFTLENBQUMsa0JBQWtCLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDekMsU0FBUyxDQUFDLGdCQUFnQixDQUFDLDBCQUEwQixFQUFFLDBCQUEwQixFQUFFLFlBQVksQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDO1FBQzFILFNBQVMsQ0FBQyxnQkFBZ0IsQ0FBQyxXQUFXLEVBQUUsV0FBVyxFQUFFLFlBQVksQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUM3RSxTQUFTLENBQUMsZ0JBQWdCLENBQUMsYUFBYSxFQUFFLGFBQWEsRUFBRSxZQUFZLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDbkYsU0FBUyxDQUFDLGtCQUFrQixFQUFFLENBQUM7SUFDakMsQ0FBQztJQUVELCtCQUErQixDQUFDLFNBQVMsRUFBRSxZQUFZLENBQUMsQ0FBQztJQUV6RCxTQUFTLENBQUMsYUFBYSxDQUFDLFlBQVksRUFBRSxXQUFXLEVBQUUsWUFBWSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQzVFLFNBQVMsQ0FBQyxhQUFhLENBQUMsVUFBVSxFQUFFLFVBQVUsRUFBRSxZQUFZLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDdkUsU0FBUyxDQUFDLGFBQWEsQ0FBQyxVQUFVLEVBQUUsU0FBUyxFQUFFLFlBQVksQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUN0RSxTQUFTLENBQUMsYUFBYSxDQUFDLFlBQVksRUFBRSxXQUFXLEVBQUUsWUFBWSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQzVFLFNBQVMsQ0FBQyxhQUFhLENBQUMsV0FBVyxFQUFFLFVBQVUsRUFBRSxZQUFZLENBQUMsU0FBUyxFQUFFLFNBQVMsQ0FBQyx3QkFBd0IsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztJQUM3SCxTQUFTLENBQUMsYUFBYSxDQUFDLFNBQVMsRUFBRSxRQUFRLEVBQUUsWUFBWSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ25FLFNBQVMsQ0FBQyxhQUFhLENBQUMsZUFBZSxFQUFFLFNBQVMsRUFBRSxZQUFZLENBQUMsT0FBTyxDQUFDLENBQUM7QUFDNUUsQ0FBQztBQXhCRCw4Q0F3QkM7QUFFRDs7R0FFRztBQUNILFNBQWdCLHFCQUFxQixDQUNuQyxNQUE2QixFQUM3QixZQUEwQixFQUMxQixtQkFBb0QsRUFBRSxFQUN0RCxPQUFnQjtJQUNoQixNQUFNLFNBQVMsR0FBRyxJQUFJLFNBQVMsQ0FBQyxNQUFNLEVBQUUsZ0JBQWdCLEVBQUUsWUFBWSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBRWpGLCtCQUErQixDQUFDLFNBQVMsRUFBRSxZQUFZLENBQUMsQ0FBQztBQUMzRCxDQUFDO0FBUkQsc0RBUUM7QUFFRCxTQUFTLCtCQUErQixDQUFDLFNBQW9CLEVBQUUsWUFBMEI7SUFDdkYsSUFBSSxDQUFDLFlBQVksQ0FBQyxVQUFVLENBQUMsVUFBVSxJQUFJLENBQUMsWUFBWSxDQUFDLG9CQUFvQixDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQUMsT0FBTztJQUFDLENBQUM7SUFDckcsU0FBUyxDQUFDLGdCQUFnQixDQUFDLFlBQVksQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUNwRCxTQUFTLENBQUMsMEJBQTBCLENBQUMsWUFBWSxDQUFDLG9CQUFvQixDQUFDLENBQUM7SUFFeEUsU0FBUyxDQUFDLE9BQU8sQ0FBQyxnSEFBZ0gsQ0FBQyxDQUFDO0lBQ3BJLFNBQVMsQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO0FBQ2pDLENBQUM7QUFFRCxNQUFNLFFBQVEsR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ3BDLE1BQU0sT0FBTyxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDbEMsTUFBTSxNQUFNLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUNuQyxNQUFNLE9BQU8sR0FBRyxLQUFLLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ2pDLE1BQU0sTUFBTSxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7QUFFakMsTUFBYSxTQUFTO0lBQ3BCLFlBQ21CLE1BQW9CLEVBQ3BCLGdCQUFpRCxFQUNsRSxJQUFtQixFQUNGLFVBQWtCLENBQUM7UUFIbkIsV0FBTSxHQUFOLE1BQU0sQ0FBYztRQUNwQixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWlDO1FBRWpELFlBQU8sR0FBUCxPQUFPLENBQVk7UUFDcEMsa0VBQWtFO1FBQ2xFLElBQUksSUFBSSxFQUFFLENBQUM7WUFDVCxJQUFJLENBQUMsc0JBQXNCLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDcEMsQ0FBQztJQUNILENBQUM7SUFFTSxLQUFLLENBQUMsR0FBVyxFQUFFLEdBQUcsSUFBVztRQUN0QyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLElBQUEsYUFBTSxFQUFDLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUM7SUFDOUQsQ0FBQztJQUVNLE9BQU8sQ0FBQyxHQUFXLEVBQUUsR0FBRyxJQUFXO1FBQ3hDLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsSUFBQSxhQUFNLEVBQUMsR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQztJQUMvRCxDQUFDO0lBRU0sYUFBYSxDQUNsQixLQUFhLEVBQ2IsU0FBaUIsRUFDakIsVUFBc0MsRUFDdEMsWUFBeUQsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7UUFFekYsSUFBSSxVQUFVLENBQUMsZUFBZSxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQ3JDLE9BQU87UUFDVCxDQUFDO1FBRUQsSUFBSSxDQUFDLGtCQUFrQixDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQy9CLFVBQVUsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLEVBQUUsRUFBRSxJQUFJLEVBQUUsRUFBRSxDQUFDLFNBQVMsQ0FBQyxTQUFTLEVBQUUsRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUM7UUFDM0UsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7SUFDNUIsQ0FBQztJQUVNLGtCQUFrQixDQUFDLEtBQWE7UUFDckMsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2pELENBQUM7SUFFTSxrQkFBa0I7UUFDdkIsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNqQixDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSSxnQkFBZ0IsQ0FBQyxJQUFZLEVBQUUsU0FBaUIsRUFBRSxJQUFpQztRQUN4RixJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQUMsT0FBTztRQUFDLENBQUM7UUFFM0MsSUFBSSxLQUFLLENBQUM7UUFFVixNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzVELE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDOUQsSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDcEIsS0FBSyxHQUFHLFFBQVEsQ0FBQztRQUNuQixDQUFDO2FBQU0sSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDekIsS0FBSyxHQUFHLEdBQUcsUUFBUSxPQUFPLFFBQVEsRUFBRSxDQUFDO1FBQ3ZDLENBQUM7YUFBTSxJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUMxQixLQUFLLEdBQUcsUUFBUSxDQUFDO1FBQ25CLENBQUM7UUFFRCxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxlQUFlLENBQUMsU0FBUyxDQUFDLEtBQUssS0FBSyxFQUFFLENBQUMsQ0FBQztJQUM1RyxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSSx3QkFBd0IsQ0FBQyxLQUFhLEVBQUUsU0FBaUIsRUFBRSxJQUF3QjtRQUN4RixJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQUMsT0FBTztRQUFDLENBQUM7UUFFbEMsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQztRQUVsRixtQ0FBbUM7UUFDbkMsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLFlBQVksRUFBRSxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLGVBQWUsQ0FBQyxTQUFTLENBQUMsSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDLENBQUM7UUFFMUssSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDbEIsTUFBTSxlQUFlLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQztZQUM3QyxJQUFJLGNBQWMsR0FBRyxDQUFDLENBQUM7WUFDdkIsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsRUFBRTtnQkFDekMsY0FBYyxJQUFJLENBQUMsQ0FBQztnQkFDcEIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsTUFBTSxFQUFFLGNBQWMsS0FBSyxlQUFlLENBQUMsQ0FBQztZQUN4RSxDQUFDLENBQUMsQ0FBQztRQUNMLENBQUM7SUFDSCxDQUFDO0lBRU0sb0JBQW9CLENBQUMsSUFBd0I7UUFDbEQsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7WUFBQyxPQUFPLE1BQU0sQ0FBQztRQUFDLENBQUM7UUFFckMsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2pDLENBQUM7SUFFTSxZQUFZLENBQUksSUFBbUI7UUFDeEMsSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7WUFBQyxPQUFPLFFBQVEsQ0FBQztRQUFDLENBQUM7UUFDekMsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7WUFBQyxPQUFPLE1BQU0sQ0FBQztRQUFDLENBQUM7UUFDckMsSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7WUFBQyxPQUFPLE9BQU8sQ0FBQztRQUFDLENBQUM7UUFDdkMsT0FBTyxLQUFLLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzVCLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNJLFdBQVcsQ0FBQyxLQUFVLEVBQUUsS0FBOEI7UUFDM0QsSUFBSSxLQUFLLElBQUksSUFBSSxFQUFFLENBQUM7WUFBQyxPQUFPLFNBQVMsQ0FBQztRQUFDLENBQUM7UUFDeEMsSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLEVBQUUsQ0FBQztZQUFDLE9BQU8sS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQUMsQ0FBQztRQUN2RCxPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDdEMsQ0FBQztJQUVEOzs7T0FHRztJQUNJLFlBQVksQ0FBQyxNQUFzQjtRQUN4QyxRQUFRLE1BQU0sRUFBRSxDQUFDO1lBQ2YsS0FBSyw4QkFBYyxDQUFDLFdBQVc7Z0JBQzdCLE9BQU8sS0FBSyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQztZQUN2RCxLQUFLLDhCQUFjLENBQUMsWUFBWTtnQkFDOUIsT0FBTyxLQUFLLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDeEQsS0FBSyw4QkFBYyxDQUFDLFlBQVk7Z0JBQzlCLE9BQU8sS0FBSyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3hELEtBQUssOEJBQWMsQ0FBQyxXQUFXO2dCQUM3QixPQUFPLEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO1lBQzlDLEtBQUssOEJBQWMsQ0FBQyxXQUFXO2dCQUM3QixPQUFPLEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO1lBQzVDLEtBQUssOEJBQWMsQ0FBQyxXQUFXLENBQUM7WUFDaEMsS0FBSyw4QkFBYyxDQUFDLFdBQVcsQ0FBQztZQUNoQyxLQUFLLDhCQUFjLENBQUMsU0FBUztnQkFDM0IsT0FBTyxFQUFFLENBQUMsQ0FBQywrQkFBK0I7UUFDOUMsQ0FBQztJQUNILENBQUM7SUFFRDs7Ozs7T0FLRztJQUNJLGNBQWMsQ0FBQyxJQUFZLEVBQUUsSUFBcUIsRUFBRSxJQUFhO1FBQ3RFLElBQUksY0FBYyxHQUFHLEVBQUUsQ0FBQztRQUN4QixJQUFJLElBQUEsb0NBQW9CLEVBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztZQUMvQixJQUFJLElBQUksQ0FBQyxZQUFZLEtBQUssOEJBQWMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztnQkFDckQsY0FBYyxHQUFHLDBCQUEwQixDQUFDO1lBQzlDLENBQUM7aUJBQU0sSUFBSSxJQUFJLENBQUMsWUFBWSxLQUFLLDhCQUFjLENBQUMsWUFBWSxFQUFFLENBQUM7Z0JBQzdELGNBQWMsR0FBRyx5QkFBeUIsQ0FBQztZQUM3QyxDQUFDO1FBQ0gsQ0FBQztRQUNELElBQUksQ0FBQyxLQUFLLENBQUMsY0FBYyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsRUFBRSxJQUFJLEVBQUUsY0FBYyxDQUFDLENBQUM7UUFDakgsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBUSxFQUFFLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUM7SUFDckYsQ0FBQztJQUVEOzs7Ozs7O09BT0c7SUFDSSxnQkFBZ0IsQ0FBQyxTQUFjLEVBQUUsU0FBYyxFQUFFLFVBQWtCO1FBQ3hFLElBQUksQ0FBQyxPQUFPLFNBQVMsS0FBSyxPQUFPLFNBQVMsQ0FBQyxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLElBQUksT0FBTyxTQUFTLEtBQUssUUFBUSxJQUFJLE9BQU8sU0FBUyxLQUFLLFFBQVEsRUFBRSxDQUFDO1lBQzFJLElBQUksU0FBUyxLQUFLLFNBQVMsSUFBSSxTQUFTLEtBQUssU0FBUyxFQUFFLENBQUM7Z0JBQ3ZELElBQUksT0FBTyxTQUFTLEtBQUssUUFBUSxJQUFJLE9BQU8sU0FBUyxLQUFLLFFBQVEsRUFBRSxDQUFDO29CQUNuRSxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7b0JBQ2xELE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsU0FBUyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQztvQkFDbEQsTUFBTSxJQUFJLEdBQUcsWUFBWSxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO29CQUN4RCxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO3dCQUNyQyxJQUFJLENBQUMsS0FBSyxDQUFDLFlBQVksRUFBRSxVQUFVLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7b0JBQ3ZFLENBQUM7Z0JBQ0gsQ0FBQztxQkFBTSxDQUFDO29CQUNOLElBQUksQ0FBQyxLQUFLLENBQUMsZUFBZSxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxTQUFTLEVBQUUsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7b0JBQ3pGLElBQUksQ0FBQyxLQUFLLENBQUMsZUFBZSxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxTQUFTLEVBQUUsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7Z0JBQzlGLENBQUM7WUFDSCxDQUFDO2lCQUFNLElBQUksU0FBUyxLQUFLLFNBQVMsQ0FBQyxnQ0FBZ0MsRUFBRSxDQUFDO2dCQUNwRSxJQUFJLENBQUMsS0FBSyxDQUFDLFlBQVksRUFBRSxVQUFVLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxTQUFTLEVBQUUsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7WUFDL0UsQ0FBQztpQkFBTSw2REFBNkQsQ0FBQyxDQUFDO2dCQUNwRSxJQUFJLENBQUMsS0FBSyxDQUFDLFlBQVksRUFBRSxVQUFVLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxTQUFTLEVBQUUsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7WUFDakYsQ0FBQztZQUNELE9BQU87UUFDVCxDQUFDO1FBQ0QsTUFBTSxNQUFNLEdBQUcsSUFBSSxHQUFHLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO1FBQy9DLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ25ELE1BQU0sSUFBSSxHQUFHLElBQUksS0FBSyxDQUFDLEdBQUcsTUFBTSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFBLGdCQUFTLEVBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDN0YsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDdEMsS0FBSyxNQUFNLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQztZQUN2QixNQUFNLFFBQVEsR0FBRyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDaEMsTUFBTSxRQUFRLEdBQUcsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ2hDLE1BQU0sVUFBVSxHQUFHLEdBQUcsS0FBSyxPQUFPLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDO1lBQy9DLElBQUksUUFBUSxLQUFLLFNBQVMsSUFBSSxRQUFRLEtBQUssU0FBUyxFQUFFLENBQUM7Z0JBQ3JELElBQUksQ0FBQyxLQUFLLENBQUMsaUJBQWlCLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsRUFBRSxRQUFRLENBQUMsRUFBRSxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDO2dCQUNqSCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxFQUFFLFFBQVEsRUFBRSxHQUFHLFVBQVUsTUFBTSxHQUFHLEtBQUssT0FBTyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUM7WUFDOUYsQ0FBQztpQkFBTSxJQUFJLFFBQVEsS0FBSyxTQUFTLENBQUMsK0JBQStCLEVBQUUsQ0FBQztnQkFDbEUsSUFBSSxDQUFDLEtBQUssQ0FBQyx5QkFBeUIsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRSxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQ2hHLENBQUM7aUJBQU0sMERBQTBELENBQUMsQ0FBQztnQkFDakUsSUFBSSxDQUFDLEtBQUssQ0FBQyx1QkFBdUIsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQy9GLENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNJLFNBQVMsQ0FBQyxRQUF5QixFQUFFLFFBQXlCO1FBQ25FLElBQUksUUFBUSxLQUFLLFNBQVMsSUFBSSxRQUFRLEtBQUssU0FBUyxFQUFFLENBQUM7WUFDckQsT0FBTyxNQUFNLENBQUM7UUFDaEIsQ0FBQzthQUFNLElBQUksUUFBUSxLQUFLLFNBQVMsQ0FBQyw4QkFBOEIsRUFBRSxDQUFDO1lBQ2pFLE9BQU8sT0FBTyxDQUFDO1FBQ2pCLENBQUM7YUFBTSwyREFBMkQsQ0FBQyxDQUFDO1lBQ2xFLE9BQU8sUUFBUSxDQUFDO1FBQ2xCLENBQUM7SUFDSCxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSSxzQkFBc0IsQ0FBQyxZQUEwQjtRQUN0RCxLQUFLLE1BQU0sQ0FBQyxTQUFTLEVBQUUsWUFBWSxDQUFDLElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQztZQUMvRSxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7Z0JBQUMsU0FBUztZQUFDLENBQUM7WUFFaEMsTUFBTSxlQUFlLEdBQUcsWUFBWSxDQUFDLFFBQVEsRUFBRSxRQUFRLEVBQUUsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1lBQzdFLElBQUksZUFBZSxJQUFJLENBQUMsQ0FBQyxTQUFTLElBQUksSUFBSSxDQUFDLGdCQUFnQixDQUFDLEVBQUUsQ0FBQztnQkFDN0QsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFNBQVMsQ0FBQyxHQUFHLGVBQWUsQ0FBQztZQUNyRCxDQUFDO1lBRUQsTUFBTSxlQUFlLEdBQUcsWUFBWSxDQUFDLFFBQVEsRUFBRSxRQUFRLEVBQUUsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1lBQzdFLElBQUksZUFBZSxJQUFJLENBQUMsQ0FBQyxTQUFTLElBQUksSUFBSSxDQUFDLGdCQUFnQixDQUFDLEVBQUUsQ0FBQztnQkFDN0QsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFNBQVMsQ0FBQyxHQUFHLGVBQWUsQ0FBQztZQUNyRCxDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUM7SUFFTSxlQUFlLENBQUMsU0FBaUI7UUFDdEMsMENBQTBDO1FBQzFDLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUUzRCxJQUFJLFVBQVUsRUFBRSxDQUFDO1lBQ2YsT0FBTyxHQUFHLFVBQVUsSUFBSSxLQUFLLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUM7UUFDbEQsQ0FBQztRQUVELE9BQU8sU0FBUyxDQUFDO0lBQ25CLENBQUM7SUFFTSx1QkFBdUIsQ0FBQyxTQUFpQjtRQUM5QywwQ0FBMEM7UUFDMUMsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQzlDLE9BQU8sSUFBSSxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztRQUU5Qzs7OztXQUlHO1FBQ0gsU0FBUyxhQUFhLENBQUMsQ0FBUztZQUM5QixJQUFJLENBQUMsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztnQkFDdEIsQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDakIsQ0FBQztZQUVELElBQUksS0FBSyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDekIsSUFBSSxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO2dCQUNyQixLQUFLLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFFdkIsc0dBQXNHO2dCQUN0RyxJQUFJLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7b0JBQ3JCLE1BQU0sSUFBSSxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO29CQUNyQyxJQUFJLElBQUksS0FBSyxVQUFVLElBQUksSUFBSSxLQUFLLFNBQVMsRUFBRSxDQUFDO3dCQUM5QyxLQUFLLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQztvQkFDM0MsQ0FBQztnQkFDSCxDQUFDO2dCQUVELENBQUMsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ3RCLENBQUM7WUFDRCxPQUFPLENBQUMsQ0FBQztRQUNYLENBQUM7SUFDSCxDQUFDO0lBRU0sZ0JBQWdCLENBQUMsT0FBbUI7UUFDekMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUFDLE9BQU87UUFBQyxDQUFDO1FBRXBDLElBQUksT0FBTyxDQUFDLFVBQVUsQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUNsQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsdUJBQXVCLENBQUMsQ0FBQztZQUNqRCxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUEsMEJBQVcsRUFBQyxJQUFJLENBQUMsOEJBQThCLENBQUMsT0FBTyxDQUFDLG1CQUFtQixFQUFFLENBQUMsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7UUFDbkgsQ0FBQztRQUVELElBQUksT0FBTyxDQUFDLGVBQWUsQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUN2QyxJQUFJLENBQUMsa0JBQWtCLENBQUMsb0JBQW9CLENBQUMsQ0FBQztZQUM5QyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUEsMEJBQVcsRUFBQyxJQUFJLENBQUMsOEJBQThCLENBQUMsT0FBTyxDQUFDLHdCQUF3QixFQUFFLENBQUMsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7UUFDeEgsQ0FBQztRQUVELElBQUksT0FBTyxDQUFDLGlCQUFpQixDQUFDLFVBQVUsSUFBSSxPQUFPLENBQUMscUJBQXFCLENBQUMsVUFBVSxJQUFJLE9BQU8sQ0FBQyxjQUFjLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDMUgsSUFBSSxDQUFDLGtCQUFrQixDQUFDLDZCQUE2QixDQUFDLENBQUM7WUFDdkQsSUFBSSxPQUFPLENBQUMsaUJBQWlCLENBQUMsVUFBVSxFQUFFLENBQUM7Z0JBQ3pDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBQSwwQkFBVyxFQUFDLElBQUksQ0FBQyw4QkFBOEIsQ0FBQyxPQUFPLENBQUMsMEJBQTBCLEVBQUUsQ0FBQyxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztZQUMxSCxDQUFDO1lBQ0QsSUFBSSxPQUFPLENBQUMscUJBQXFCLENBQUMsVUFBVSxFQUFFLENBQUM7Z0JBQzdDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBQSwwQkFBVyxFQUFDLElBQUksQ0FBQyw4QkFBOEIsQ0FBQyxPQUFPLENBQUMsOEJBQThCLEVBQUUsQ0FBQyxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztZQUM5SCxDQUFDO1lBQ0QsSUFBSSxPQUFPLENBQUMsY0FBYyxDQUFDLFVBQVUsRUFBRSxDQUFDO2dCQUN0QyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUEsMEJBQVcsRUFBQyxJQUFJLENBQUMsOEJBQThCLENBQUMsT0FBTyxDQUFDLHVCQUF1QixFQUFFLENBQUMsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7WUFDdkgsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDO0lBRU0sMEJBQTBCLENBQUMsT0FBNkI7UUFDN0QsSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUFDLE9BQU87UUFBQyxDQUFDO1FBRXBDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDO1FBQ2xELElBQUksQ0FBQyxLQUFLLENBQUMsSUFBQSwwQkFBVyxFQUFDLElBQUksQ0FBQyw4QkFBOEIsQ0FBQyxPQUFPLENBQUMsU0FBUyxFQUFFLENBQUMsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7SUFDekcsQ0FBQztJQUVNLDhCQUE4QixDQUFDLElBQWdCO1FBQ3BELE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLDBCQUEwQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDOUUsQ0FBQztJQUVEOztPQUVHO0lBQ0ksMEJBQTBCLENBQUMsTUFBYztRQUM5QyxPQUFPLE1BQU0sQ0FBQyxPQUFPLENBQUMsMkJBQTJCLEVBQUUsQ0FBQyxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxFQUFFO1lBQzNFLE9BQU8sSUFBSSxHQUFHLENBQUMsSUFBSSxDQUFDLHVCQUF1QixDQUFDLEtBQUssQ0FBQyxJQUFJLEtBQUssQ0FBQyxHQUFHLENBQUMsTUFBTSxJQUFJLEVBQUUsQ0FBQyxHQUFHLEdBQUcsQ0FBQztRQUN0RixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7Q0FDRjtBQS9VRCw4QkErVUM7QUF1QkQ7Ozs7Ozs7O0dBUUc7QUFDSCxTQUFTLFlBQVksQ0FBQyxNQUFjLEVBQUUsTUFBYyxFQUFFLE9BQWU7SUFDbkUsTUFBTSxLQUFLLEdBQVUsZUFBZSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQztJQUMxRixNQUFNLE1BQU0sR0FBRyxJQUFJLEtBQUssRUFBVSxDQUFDO0lBQ25DLEtBQUssTUFBTSxJQUFJLElBQUksS0FBSyxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQy9CLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxPQUFPLElBQUksQ0FBQyxRQUFRLElBQUksSUFBSSxDQUFDLFFBQVEsS0FBSyxJQUFJLENBQUMsUUFBUSxJQUFJLElBQUksQ0FBQyxRQUFRLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFDMUcsTUFBTSxVQUFVLEdBQUcsV0FBVyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMzQyxLQUFLLE1BQU0sSUFBSSxJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUM5Qix3Q0FBd0M7WUFDeEMsSUFBSSxJQUFJLEtBQUssOEJBQThCLEVBQUUsQ0FBQztnQkFBQyxTQUFTO1lBQUMsQ0FBQztZQUMxRCxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzlCLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLFVBQVUsQ0FBQyxDQUFDO1lBQ3hDLFFBQVEsTUFBTSxFQUFFLENBQUM7Z0JBQ2YsS0FBSyxHQUFHO29CQUNOLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxPQUFPLElBQUksSUFBSSxFQUFFLENBQUMsQ0FBQztvQkFDbEMsTUFBTTtnQkFDUixLQUFLLEdBQUc7b0JBQ04sTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsUUFBUSxJQUFJLEtBQUssQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7b0JBQzVELE1BQU07Z0JBQ1IsS0FBSyxHQUFHO29CQUNOLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLE9BQU8sSUFBSSxLQUFLLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO29CQUN6RCxNQUFNO2dCQUNSO29CQUNFLE1BQU0sSUFBSSxLQUFLLENBQUMsMkJBQTJCLE1BQU0sZ0JBQWdCLElBQUksR0FBRyxDQUFDLENBQUM7WUFDOUUsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDO0lBQ0QsT0FBTyxNQUFNLENBQUM7SUFFZCxTQUFTLFdBQVcsQ0FBQyxLQUFlO1FBQ2xDLElBQUksTUFBTSxHQUFHLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQztRQUNyQyxLQUFLLE1BQU0sSUFBSSxJQUFJLEtBQUssRUFBRSxDQUFDO1lBQ3pCLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7Z0JBQ3JDLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsS0FBSyxHQUFHLEVBQUUsQ0FBQztvQkFDM0IsTUFBTSxHQUFHLE1BQU0sR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUM7b0JBQ3pDLE1BQU07Z0JBQ1IsQ0FBQztZQUNILENBQUM7UUFDSCxDQUFDO1FBQ0QsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQztBQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBmb3JtYXQgfSBmcm9tICd1dGlsJztcbmltcG9ydCAqIGFzIGNoYWxrIGZyb20gJ2NoYWxrJztcbmltcG9ydCB7IERpZmZlcmVuY2VDb2xsZWN0aW9uLCBUZW1wbGF0ZURpZmYgfSBmcm9tICcuL2RpZmYvdHlwZXMnO1xuaW1wb3J0IHsgZGVlcEVxdWFsIH0gZnJvbSAnLi9kaWZmL3V0aWwnO1xuaW1wb3J0IHsgRGlmZmVyZW5jZSwgaXNQcm9wZXJ0eURpZmZlcmVuY2UsIFJlc291cmNlRGlmZmVyZW5jZSwgUmVzb3VyY2VJbXBhY3QgfSBmcm9tICcuL2RpZmYtdGVtcGxhdGUnO1xuaW1wb3J0IHsgZm9ybWF0VGFibGUgfSBmcm9tICcuL2Zvcm1hdC10YWJsZSc7XG5pbXBvcnQgeyBJYW1DaGFuZ2VzIH0gZnJvbSAnLi9pYW0vaWFtLWNoYW5nZXMnO1xuaW1wb3J0IHsgU2VjdXJpdHlHcm91cENoYW5nZXMgfSBmcm9tICcuL25ldHdvcmsvc2VjdXJpdHktZ3JvdXAtY2hhbmdlcyc7XG5cbi8vIGZyb20gY3gtYXBpXG5jb25zdCBQQVRIX01FVEFEQVRBX0tFWSA9ICdhd3M6Y2RrOnBhdGgnO1xuXG4vKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tcmVxdWlyZS1pbXBvcnRzICovXG5jb25zdCB7IHN0cnVjdHVyZWRQYXRjaCB9ID0gcmVxdWlyZSgnZGlmZicpO1xuLyogZXNsaW50LWVuYWJsZSAqL1xuXG5leHBvcnQgaW50ZXJmYWNlIEZvcm1hdFN0cmVhbSBleHRlbmRzIE5vZGVKUy5Xcml0YWJsZVN0cmVhbSB7XG4gIGNvbHVtbnM/OiBudW1iZXI7XG59XG5cbi8qKlxuICogUmVuZGVycyB0ZW1wbGF0ZSBkaWZmZXJlbmNlcyB0byB0aGUgcHJvY2VzcycgY29uc29sZS5cbiAqXG4gKiBAcGFyYW0gc3RyZWFtICAgICAgICAgICBUaGUgSU8gc3RyZWFtIHdoZXJlIHRvIG91dHB1dCB0aGUgcmVuZGVyZWQgZGlmZi5cbiAqIEBwYXJhbSB0ZW1wbGF0ZURpZmYgICAgIFRlbXBsYXRlRGlmZiB0byBiZSByZW5kZXJlZCB0byB0aGUgY29uc29sZS5cbiAqIEBwYXJhbSBsb2dpY2FsVG9QYXRoTWFwIEEgbWFwIGZyb20gbG9naWNhbCBJRCB0byBjb25zdHJ1Y3QgcGF0aC4gVXNlZnVsIGluXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIHRoZXJlIGlzIG5vIGF3czpjZGs6cGF0aCBtZXRhZGF0YSBpbiB0aGUgdGVtcGxhdGUuXG4gKiBAcGFyYW0gY29udGV4dCAgICAgICAgICB0aGUgbnVtYmVyIG9mIGNvbnRleHQgbGluZXMgdG8gdXNlIGluIGFyYml0cmFyeSBKU09OIGRpZmYgKGRlZmF1bHRzIHRvIDMpLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZm9ybWF0RGlmZmVyZW5jZXMoXG4gIHN0cmVhbTogRm9ybWF0U3RyZWFtLFxuICB0ZW1wbGF0ZURpZmY6IFRlbXBsYXRlRGlmZixcbiAgbG9naWNhbFRvUGF0aE1hcDogeyBbbG9naWNhbElkOiBzdHJpbmddOiBzdHJpbmcgfSA9IHt9LFxuICBjb250ZXh0OiBudW1iZXIgPSAzKSB7XG4gIGNvbnN0IGZvcm1hdHRlciA9IG5ldyBGb3JtYXR0ZXIoc3RyZWFtLCBsb2dpY2FsVG9QYXRoTWFwLCB0ZW1wbGF0ZURpZmYsIGNvbnRleHQpO1xuXG4gIGlmICh0ZW1wbGF0ZURpZmYuYXdzVGVtcGxhdGVGb3JtYXRWZXJzaW9uIHx8IHRlbXBsYXRlRGlmZi50cmFuc2Zvcm0gfHwgdGVtcGxhdGVEaWZmLmRlc2NyaXB0aW9uKSB7XG4gICAgZm9ybWF0dGVyLnByaW50U2VjdGlvbkhlYWRlcignVGVtcGxhdGUnKTtcbiAgICBmb3JtYXR0ZXIuZm9ybWF0RGlmZmVyZW5jZSgnQVdTVGVtcGxhdGVGb3JtYXRWZXJzaW9uJywgJ0FXU1RlbXBsYXRlRm9ybWF0VmVyc2lvbicsIHRlbXBsYXRlRGlmZi5hd3NUZW1wbGF0ZUZvcm1hdFZlcnNpb24pO1xuICAgIGZvcm1hdHRlci5mb3JtYXREaWZmZXJlbmNlKCdUcmFuc2Zvcm0nLCAnVHJhbnNmb3JtJywgdGVtcGxhdGVEaWZmLnRyYW5zZm9ybSk7XG4gICAgZm9ybWF0dGVyLmZvcm1hdERpZmZlcmVuY2UoJ0Rlc2NyaXB0aW9uJywgJ0Rlc2NyaXB0aW9uJywgdGVtcGxhdGVEaWZmLmRlc2NyaXB0aW9uKTtcbiAgICBmb3JtYXR0ZXIucHJpbnRTZWN0aW9uRm9vdGVyKCk7XG4gIH1cblxuICBmb3JtYXRTZWN1cml0eUNoYW5nZXNXaXRoQmFubmVyKGZvcm1hdHRlciwgdGVtcGxhdGVEaWZmKTtcblxuICBmb3JtYXR0ZXIuZm9ybWF0U2VjdGlvbignUGFyYW1ldGVycycsICdQYXJhbWV0ZXInLCB0ZW1wbGF0ZURpZmYucGFyYW1ldGVycyk7XG4gIGZvcm1hdHRlci5mb3JtYXRTZWN0aW9uKCdNZXRhZGF0YScsICdNZXRhZGF0YScsIHRlbXBsYXRlRGlmZi5tZXRhZGF0YSk7XG4gIGZvcm1hdHRlci5mb3JtYXRTZWN0aW9uKCdNYXBwaW5ncycsICdNYXBwaW5nJywgdGVtcGxhdGVEaWZmLm1hcHBpbmdzKTtcbiAgZm9ybWF0dGVyLmZvcm1hdFNlY3Rpb24oJ0NvbmRpdGlvbnMnLCAnQ29uZGl0aW9uJywgdGVtcGxhdGVEaWZmLmNvbmRpdGlvbnMpO1xuICBmb3JtYXR0ZXIuZm9ybWF0U2VjdGlvbignUmVzb3VyY2VzJywgJ1Jlc291cmNlJywgdGVtcGxhdGVEaWZmLnJlc291cmNlcywgZm9ybWF0dGVyLmZvcm1hdFJlc291cmNlRGlmZmVyZW5jZS5iaW5kKGZvcm1hdHRlcikpO1xuICBmb3JtYXR0ZXIuZm9ybWF0U2VjdGlvbignT3V0cHV0cycsICdPdXRwdXQnLCB0ZW1wbGF0ZURpZmYub3V0cHV0cyk7XG4gIGZvcm1hdHRlci5mb3JtYXRTZWN0aW9uKCdPdGhlciBDaGFuZ2VzJywgJ1Vua25vd24nLCB0ZW1wbGF0ZURpZmYudW5rbm93bik7XG59XG5cbi8qKlxuICogUmVuZGVycyBhIGRpZmYgb2Ygc2VjdXJpdHkgY2hhbmdlcyB0byB0aGUgZ2l2ZW4gc3RyZWFtXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmb3JtYXRTZWN1cml0eUNoYW5nZXMoXG4gIHN0cmVhbTogTm9kZUpTLldyaXRhYmxlU3RyZWFtLFxuICB0ZW1wbGF0ZURpZmY6IFRlbXBsYXRlRGlmZixcbiAgbG9naWNhbFRvUGF0aE1hcDogeyBbbG9naWNhbElkOiBzdHJpbmddOiBzdHJpbmcgfSA9IHt9LFxuICBjb250ZXh0PzogbnVtYmVyKSB7XG4gIGNvbnN0IGZvcm1hdHRlciA9IG5ldyBGb3JtYXR0ZXIoc3RyZWFtLCBsb2dpY2FsVG9QYXRoTWFwLCB0ZW1wbGF0ZURpZmYsIGNvbnRleHQpO1xuXG4gIGZvcm1hdFNlY3VyaXR5Q2hhbmdlc1dpdGhCYW5uZXIoZm9ybWF0dGVyLCB0ZW1wbGF0ZURpZmYpO1xufVxuXG5mdW5jdGlvbiBmb3JtYXRTZWN1cml0eUNoYW5nZXNXaXRoQmFubmVyKGZvcm1hdHRlcjogRm9ybWF0dGVyLCB0ZW1wbGF0ZURpZmY6IFRlbXBsYXRlRGlmZikge1xuICBpZiAoIXRlbXBsYXRlRGlmZi5pYW1DaGFuZ2VzLmhhc0NoYW5nZXMgJiYgIXRlbXBsYXRlRGlmZi5zZWN1cml0eUdyb3VwQ2hhbmdlcy5oYXNDaGFuZ2VzKSB7IHJldHVybjsgfVxuICBmb3JtYXR0ZXIuZm9ybWF0SWFtQ2hhbmdlcyh0ZW1wbGF0ZURpZmYuaWFtQ2hhbmdlcyk7XG4gIGZvcm1hdHRlci5mb3JtYXRTZWN1cml0eUdyb3VwQ2hhbmdlcyh0ZW1wbGF0ZURpZmYuc2VjdXJpdHlHcm91cENoYW5nZXMpO1xuXG4gIGZvcm1hdHRlci53YXJuaW5nKCcoTk9URTogVGhlcmUgbWF5IGJlIHNlY3VyaXR5LXJlbGF0ZWQgY2hhbmdlcyBub3QgaW4gdGhpcyBsaXN0LiBTZWUgaHR0cHM6Ly9naXRodWIuY29tL2F3cy9hd3MtY2RrL2lzc3Vlcy8xMjk5KScpO1xuICBmb3JtYXR0ZXIucHJpbnRTZWN0aW9uRm9vdGVyKCk7XG59XG5cbmNvbnN0IEFERElUSU9OID0gY2hhbGsuZ3JlZW4oJ1srXScpO1xuY29uc3QgQ09OVEVYVCA9IGNoYWxrLmdyZXkoJ1sgXScpO1xuY29uc3QgVVBEQVRFID0gY2hhbGsueWVsbG93KCdbfl0nKTtcbmNvbnN0IFJFTU9WQUwgPSBjaGFsay5yZWQoJ1stXScpO1xuY29uc3QgSU1QT1JUID0gY2hhbGsuYmx1ZSgnW+KGkF0nKTtcblxuZXhwb3J0IGNsYXNzIEZvcm1hdHRlciB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVhZG9ubHkgc3RyZWFtOiBGb3JtYXRTdHJlYW0sXG4gICAgcHJpdmF0ZSByZWFkb25seSBsb2dpY2FsVG9QYXRoTWFwOiB7IFtsb2dpY2FsSWQ6IHN0cmluZ106IHN0cmluZyB9LFxuICAgIGRpZmY/OiBUZW1wbGF0ZURpZmYsXG4gICAgcHJpdmF0ZSByZWFkb25seSBjb250ZXh0OiBudW1iZXIgPSAzKSB7XG4gICAgLy8gUmVhZCBhZGRpdGlvbmFsIGNvbnN0cnVjdCBwYXRocyBmcm9tIHRoZSBkaWZmIGlmIGl0IGlzIHN1cHBsaWVkXG4gICAgaWYgKGRpZmYpIHtcbiAgICAgIHRoaXMucmVhZENvbnN0cnVjdFBhdGhzRnJvbShkaWZmKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgcHJpbnQoZm10OiBzdHJpbmcsIC4uLmFyZ3M6IGFueVtdKSB7XG4gICAgdGhpcy5zdHJlYW0ud3JpdGUoY2hhbGsud2hpdGUoZm9ybWF0KGZtdCwgLi4uYXJncykpICsgJ1xcbicpO1xuICB9XG5cbiAgcHVibGljIHdhcm5pbmcoZm10OiBzdHJpbmcsIC4uLmFyZ3M6IGFueVtdKSB7XG4gICAgdGhpcy5zdHJlYW0ud3JpdGUoY2hhbGsueWVsbG93KGZvcm1hdChmbXQsIC4uLmFyZ3MpKSArICdcXG4nKTtcbiAgfVxuXG4gIHB1YmxpYyBmb3JtYXRTZWN0aW9uPFYsIFQgZXh0ZW5kcyBEaWZmZXJlbmNlPFY+PihcbiAgICB0aXRsZTogc3RyaW5nLFxuICAgIGVudHJ5VHlwZTogc3RyaW5nLFxuICAgIGNvbGxlY3Rpb246IERpZmZlcmVuY2VDb2xsZWN0aW9uPFYsIFQ+LFxuICAgIGZvcm1hdHRlcjogKHR5cGU6IHN0cmluZywgaWQ6IHN0cmluZywgZGlmZjogVCkgPT4gdm9pZCA9IHRoaXMuZm9ybWF0RGlmZmVyZW5jZS5iaW5kKHRoaXMpKSB7XG5cbiAgICBpZiAoY29sbGVjdGlvbi5kaWZmZXJlbmNlQ291bnQgPT09IDApIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLnByaW50U2VjdGlvbkhlYWRlcih0aXRsZSk7XG4gICAgY29sbGVjdGlvbi5mb3JFYWNoRGlmZmVyZW5jZSgoaWQsIGRpZmYpID0+IGZvcm1hdHRlcihlbnRyeVR5cGUsIGlkLCBkaWZmKSk7XG4gICAgdGhpcy5wcmludFNlY3Rpb25Gb290ZXIoKTtcbiAgfVxuXG4gIHB1YmxpYyBwcmludFNlY3Rpb25IZWFkZXIodGl0bGU6IHN0cmluZykge1xuICAgIHRoaXMucHJpbnQoY2hhbGsudW5kZXJsaW5lKGNoYWxrLmJvbGQodGl0bGUpKSk7XG4gIH1cblxuICBwdWJsaWMgcHJpbnRTZWN0aW9uRm9vdGVyKCkge1xuICAgIHRoaXMucHJpbnQoJycpO1xuICB9XG5cbiAgLyoqXG4gICAqIFByaW50IGEgc2ltcGxlIGRpZmZlcmVuY2UgZm9yIGEgZ2l2ZW4gbmFtZWQgZW50aXR5LlxuICAgKlxuICAgKiBAcGFyYW0gbG9naWNhbElkIHRoZSBuYW1lIG9mIHRoZSBlbnRpdHkgdGhhdCBpcyBkaWZmZXJlbnQuXG4gICAqIEBwYXJhbSBkaWZmIHRoZSBkaWZmZXJlbmNlIHRvIGJlIHJlbmRlcmVkLlxuICAgKi9cbiAgcHVibGljIGZvcm1hdERpZmZlcmVuY2UodHlwZTogc3RyaW5nLCBsb2dpY2FsSWQ6IHN0cmluZywgZGlmZjogRGlmZmVyZW5jZTxhbnk+IHwgdW5kZWZpbmVkKSB7XG4gICAgaWYgKCFkaWZmIHx8ICFkaWZmLmlzRGlmZmVyZW50KSB7IHJldHVybjsgfVxuXG4gICAgbGV0IHZhbHVlO1xuXG4gICAgY29uc3Qgb2xkVmFsdWUgPSB0aGlzLmZvcm1hdFZhbHVlKGRpZmYub2xkVmFsdWUsIGNoYWxrLnJlZCk7XG4gICAgY29uc3QgbmV3VmFsdWUgPSB0aGlzLmZvcm1hdFZhbHVlKGRpZmYubmV3VmFsdWUsIGNoYWxrLmdyZWVuKTtcbiAgICBpZiAoZGlmZi5pc0FkZGl0aW9uKSB7XG4gICAgICB2YWx1ZSA9IG5ld1ZhbHVlO1xuICAgIH0gZWxzZSBpZiAoZGlmZi5pc1VwZGF0ZSkge1xuICAgICAgdmFsdWUgPSBgJHtvbGRWYWx1ZX0gdG8gJHtuZXdWYWx1ZX1gO1xuICAgIH0gZWxzZSBpZiAoZGlmZi5pc1JlbW92YWwpIHtcbiAgICAgIHZhbHVlID0gb2xkVmFsdWU7XG4gICAgfVxuXG4gICAgdGhpcy5wcmludChgJHt0aGlzLmZvcm1hdFByZWZpeChkaWZmKX0gJHtjaGFsay5jeWFuKHR5cGUpfSAke3RoaXMuZm9ybWF0TG9naWNhbElkKGxvZ2ljYWxJZCl9OiAke3ZhbHVlfWApO1xuICB9XG5cbiAgLyoqXG4gICAqIFByaW50IGEgcmVzb3VyY2UgZGlmZmVyZW5jZSBmb3IgYSBnaXZlbiBsb2dpY2FsIElELlxuICAgKlxuICAgKiBAcGFyYW0gbG9naWNhbElkIHRoZSBsb2dpY2FsIElEIG9mIHRoZSByZXNvdXJjZSB0aGF0IGNoYW5nZWQuXG4gICAqIEBwYXJhbSBkaWZmICAgICAgdGhlIGNoYW5nZSB0byBiZSByZW5kZXJlZC5cbiAgICovXG4gIHB1YmxpYyBmb3JtYXRSZXNvdXJjZURpZmZlcmVuY2UoX3R5cGU6IHN0cmluZywgbG9naWNhbElkOiBzdHJpbmcsIGRpZmY6IFJlc291cmNlRGlmZmVyZW5jZSkge1xuICAgIGlmICghZGlmZi5pc0RpZmZlcmVudCkgeyByZXR1cm47IH1cblxuICAgIGNvbnN0IHJlc291cmNlVHlwZSA9IGRpZmYuaXNSZW1vdmFsID8gZGlmZi5vbGRSZXNvdXJjZVR5cGUgOiBkaWZmLm5ld1Jlc291cmNlVHlwZTtcblxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBtYXgtbGVuXG4gICAgdGhpcy5wcmludChgJHt0aGlzLmZvcm1hdFJlc291cmNlUHJlZml4KGRpZmYpfSAke3RoaXMuZm9ybWF0VmFsdWUocmVzb3VyY2VUeXBlLCBjaGFsay5jeWFuKX0gJHt0aGlzLmZvcm1hdExvZ2ljYWxJZChsb2dpY2FsSWQpfSAke3RoaXMuZm9ybWF0SW1wYWN0KGRpZmYuY2hhbmdlSW1wYWN0KX1gKTtcblxuICAgIGlmIChkaWZmLmlzVXBkYXRlKSB7XG4gICAgICBjb25zdCBkaWZmZXJlbmNlQ291bnQgPSBkaWZmLmRpZmZlcmVuY2VDb3VudDtcbiAgICAgIGxldCBwcm9jZXNzZWRDb3VudCA9IDA7XG4gICAgICBkaWZmLmZvckVhY2hEaWZmZXJlbmNlKChfLCBuYW1lLCB2YWx1ZXMpID0+IHtcbiAgICAgICAgcHJvY2Vzc2VkQ291bnQgKz0gMTtcbiAgICAgICAgdGhpcy5mb3JtYXRUcmVlRGlmZihuYW1lLCB2YWx1ZXMsIHByb2Nlc3NlZENvdW50ID09PSBkaWZmZXJlbmNlQ291bnQpO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGZvcm1hdFJlc291cmNlUHJlZml4KGRpZmY6IFJlc291cmNlRGlmZmVyZW5jZSkge1xuICAgIGlmIChkaWZmLmlzSW1wb3J0KSB7IHJldHVybiBJTVBPUlQ7IH1cblxuICAgIHJldHVybiB0aGlzLmZvcm1hdFByZWZpeChkaWZmKTtcbiAgfVxuXG4gIHB1YmxpYyBmb3JtYXRQcmVmaXg8VD4oZGlmZjogRGlmZmVyZW5jZTxUPikge1xuICAgIGlmIChkaWZmLmlzQWRkaXRpb24pIHsgcmV0dXJuIEFERElUSU9OOyB9XG4gICAgaWYgKGRpZmYuaXNVcGRhdGUpIHsgcmV0dXJuIFVQREFURTsgfVxuICAgIGlmIChkaWZmLmlzUmVtb3ZhbCkgeyByZXR1cm4gUkVNT1ZBTDsgfVxuICAgIHJldHVybiBjaGFsay53aGl0ZSgnWz9dJyk7XG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHZhbHVlIHRoZSB2YWx1ZSB0byBiZSBmb3JtYXR0ZWQuXG4gICAqIEBwYXJhbSBjb2xvciB0aGUgY29sb3IgdG8gYmUgdXNlZC5cbiAgICpcbiAgICogQHJldHVybnMgdGhlIGZvcm1hdHRlZCBzdHJpbmcsIHdpdGggY29sb3IgYXBwbGllZC5cbiAgICovXG4gIHB1YmxpYyBmb3JtYXRWYWx1ZSh2YWx1ZTogYW55LCBjb2xvcjogKHN0cjogc3RyaW5nKSA9PiBzdHJpbmcpIHtcbiAgICBpZiAodmFsdWUgPT0gbnVsbCkgeyByZXR1cm4gdW5kZWZpbmVkOyB9XG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycpIHsgcmV0dXJuIGNvbG9yKHZhbHVlKTsgfVxuICAgIHJldHVybiBjb2xvcihKU09OLnN0cmluZ2lmeSh2YWx1ZSkpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSBpbXBhY3QgdGhlIGltcGFjdCB0byBiZSBmb3JtYXR0ZWRcbiAgICogQHJldHVybnMgYSB1c2VyLWZyaWVuZGx5LCBjb2xvcmVkIHN0cmluZyByZXByZXNlbnRpbmcgdGhlIGltcGFjdC5cbiAgICovXG4gIHB1YmxpYyBmb3JtYXRJbXBhY3QoaW1wYWN0OiBSZXNvdXJjZUltcGFjdCkge1xuICAgIHN3aXRjaCAoaW1wYWN0KSB7XG4gICAgICBjYXNlIFJlc291cmNlSW1wYWN0Lk1BWV9SRVBMQUNFOlxuICAgICAgICByZXR1cm4gY2hhbGsuaXRhbGljKGNoYWxrLnllbGxvdygnbWF5IGJlIHJlcGxhY2VkJykpO1xuICAgICAgY2FzZSBSZXNvdXJjZUltcGFjdC5XSUxMX1JFUExBQ0U6XG4gICAgICAgIHJldHVybiBjaGFsay5pdGFsaWMoY2hhbGsuYm9sZChjaGFsay5yZWQoJ3JlcGxhY2UnKSkpO1xuICAgICAgY2FzZSBSZXNvdXJjZUltcGFjdC5XSUxMX0RFU1RST1k6XG4gICAgICAgIHJldHVybiBjaGFsay5pdGFsaWMoY2hhbGsuYm9sZChjaGFsay5yZWQoJ2Rlc3Ryb3knKSkpO1xuICAgICAgY2FzZSBSZXNvdXJjZUltcGFjdC5XSUxMX09SUEhBTjpcbiAgICAgICAgcmV0dXJuIGNoYWxrLml0YWxpYyhjaGFsay55ZWxsb3coJ29ycGhhbicpKTtcbiAgICAgIGNhc2UgUmVzb3VyY2VJbXBhY3QuV0lMTF9JTVBPUlQ6XG4gICAgICAgIHJldHVybiBjaGFsay5pdGFsaWMoY2hhbGsuYmx1ZSgnaW1wb3J0JykpO1xuICAgICAgY2FzZSBSZXNvdXJjZUltcGFjdC5XSUxMX1VQREFURTpcbiAgICAgIGNhc2UgUmVzb3VyY2VJbXBhY3QuV0lMTF9DUkVBVEU6XG4gICAgICBjYXNlIFJlc291cmNlSW1wYWN0Lk5PX0NIQU5HRTpcbiAgICAgICAgcmV0dXJuICcnOyAvLyBubyBleHRyYSBpbmZvIGlzIGdhaW5lZCBoZXJlXG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFJlbmRlcnMgYSB0cmVlIG9mIGRpZmZlcmVuY2VzIHVuZGVyIGEgcGFydGljdWxhciBuYW1lLlxuICAgKiBAcGFyYW0gbmFtZSAgICB0aGUgbmFtZSBvZiB0aGUgcm9vdCBvZiB0aGUgdHJlZS5cbiAgICogQHBhcmFtIGRpZmYgICAgdGhlIGRpZmZlcmVuY2Ugb24gdGhlIHRyZWUuXG4gICAqIEBwYXJhbSBsYXN0ICAgIHdoZXRoZXIgdGhpcyBpcyB0aGUgbGFzdCBub2RlIG9mIGEgcGFyZW50IHRyZWUuXG4gICAqL1xuICBwdWJsaWMgZm9ybWF0VHJlZURpZmYobmFtZTogc3RyaW5nLCBkaWZmOiBEaWZmZXJlbmNlPGFueT4sIGxhc3Q6IGJvb2xlYW4pIHtcbiAgICBsZXQgYWRkaXRpb25hbEluZm8gPSAnJztcbiAgICBpZiAoaXNQcm9wZXJ0eURpZmZlcmVuY2UoZGlmZikpIHtcbiAgICAgIGlmIChkaWZmLmNoYW5nZUltcGFjdCA9PT0gUmVzb3VyY2VJbXBhY3QuTUFZX1JFUExBQ0UpIHtcbiAgICAgICAgYWRkaXRpb25hbEluZm8gPSAnIChtYXkgY2F1c2UgcmVwbGFjZW1lbnQpJztcbiAgICAgIH0gZWxzZSBpZiAoZGlmZi5jaGFuZ2VJbXBhY3QgPT09IFJlc291cmNlSW1wYWN0LldJTExfUkVQTEFDRSkge1xuICAgICAgICBhZGRpdGlvbmFsSW5mbyA9ICcgKHJlcXVpcmVzIHJlcGxhY2VtZW50KSc7XG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMucHJpbnQoJyAlc+KUgCAlcyAlcyVzJywgbGFzdCA/ICfilJQnIDogJ+KUnCcsIHRoaXMuY2hhbmdlVGFnKGRpZmYub2xkVmFsdWUsIGRpZmYubmV3VmFsdWUpLCBuYW1lLCBhZGRpdGlvbmFsSW5mbyk7XG4gICAgcmV0dXJuIHRoaXMuZm9ybWF0T2JqZWN0RGlmZihkaWZmLm9sZFZhbHVlLCBkaWZmLm5ld1ZhbHVlLCBgICR7bGFzdCA/ICcgJyA6ICfilIInfWApO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlbmRlcnMgdGhlIGRpZmZlcmVuY2UgYmV0d2VlbiB0d28gb2JqZWN0cywgbG9va2luZyBmb3IgdGhlIGRpZmZlcmVuY2VzIGFzIGRlZXAgYXMgcG9zc2libGUsXG4gICAqIGFuZCByZW5kZXJpbmcgYSB0cmVlIGdyYXBoIG9mIHRoZSBwYXRoIHVudGlsIHRoZSBkaWZmZXJlbmNlIGlzIGZvdW5kLlxuICAgKlxuICAgKiBAcGFyYW0gb2xkT2JqZWN0ICB0aGUgb2xkIG9iamVjdC5cbiAgICogQHBhcmFtIG5ld09iamVjdCAgdGhlIG5ldyBvYmplY3QuXG4gICAqIEBwYXJhbSBsaW5lUHJlZml4IGEgcHJlZml4IChpbmRlbnQtbGlrZSkgdG8gYmUgdXNlZCBvbiBldmVyeSBsaW5lLlxuICAgKi9cbiAgcHVibGljIGZvcm1hdE9iamVjdERpZmYob2xkT2JqZWN0OiBhbnksIG5ld09iamVjdDogYW55LCBsaW5lUHJlZml4OiBzdHJpbmcpIHtcbiAgICBpZiAoKHR5cGVvZiBvbGRPYmplY3QgIT09IHR5cGVvZiBuZXdPYmplY3QpIHx8IEFycmF5LmlzQXJyYXkob2xkT2JqZWN0KSB8fCB0eXBlb2Ygb2xkT2JqZWN0ID09PSAnc3RyaW5nJyB8fCB0eXBlb2Ygb2xkT2JqZWN0ID09PSAnbnVtYmVyJykge1xuICAgICAgaWYgKG9sZE9iamVjdCAhPT0gdW5kZWZpbmVkICYmIG5ld09iamVjdCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGlmICh0eXBlb2Ygb2xkT2JqZWN0ID09PSAnb2JqZWN0JyB8fCB0eXBlb2YgbmV3T2JqZWN0ID09PSAnb2JqZWN0Jykge1xuICAgICAgICAgIGNvbnN0IG9sZFN0ciA9IEpTT04uc3RyaW5naWZ5KG9sZE9iamVjdCwgbnVsbCwgMik7XG4gICAgICAgICAgY29uc3QgbmV3U3RyID0gSlNPTi5zdHJpbmdpZnkobmV3T2JqZWN0LCBudWxsLCAyKTtcbiAgICAgICAgICBjb25zdCBkaWZmID0gX2RpZmZTdHJpbmdzKG9sZFN0ciwgbmV3U3RyLCB0aGlzLmNvbnRleHQpO1xuICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZGlmZi5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgdGhpcy5wcmludCgnJXMgICAlcyAlcycsIGxpbmVQcmVmaXgsIGkgPT09IDAgPyAn4pSU4pSAJyA6ICcgICcsIGRpZmZbaV0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLnByaW50KCclcyAgIOKUnOKUgCAlcyAlcycsIGxpbmVQcmVmaXgsIFJFTU9WQUwsIHRoaXMuZm9ybWF0VmFsdWUob2xkT2JqZWN0LCBjaGFsay5yZWQpKTtcbiAgICAgICAgICB0aGlzLnByaW50KCclcyAgIOKUlOKUgCAlcyAlcycsIGxpbmVQcmVmaXgsIEFERElUSU9OLCB0aGlzLmZvcm1hdFZhbHVlKG5ld09iamVjdCwgY2hhbGsuZ3JlZW4pKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmIChvbGRPYmplY3QgIT09IHVuZGVmaW5lZCAvKiAmJiBuZXdPYmplY3QgPT09IHVuZGVmaW5lZCAqLykge1xuICAgICAgICB0aGlzLnByaW50KCclcyAgIOKUlOKUgCAlcycsIGxpbmVQcmVmaXgsIHRoaXMuZm9ybWF0VmFsdWUob2xkT2JqZWN0LCBjaGFsay5yZWQpKTtcbiAgICAgIH0gZWxzZSAvKiBpZiAob2xkT2JqZWN0ID09PSB1bmRlZmluZWQgJiYgbmV3T2JqZWN0ICE9PSB1bmRlZmluZWQpICovIHtcbiAgICAgICAgdGhpcy5wcmludCgnJXMgICDilJTilIAgJXMnLCBsaW5lUHJlZml4LCB0aGlzLmZvcm1hdFZhbHVlKG5ld09iamVjdCwgY2hhbGsuZ3JlZW4pKTtcbiAgICAgIH1cbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3Qga2V5U2V0ID0gbmV3IFNldChPYmplY3Qua2V5cyhvbGRPYmplY3QpKTtcbiAgICBPYmplY3Qua2V5cyhuZXdPYmplY3QpLmZvckVhY2goayA9PiBrZXlTZXQuYWRkKGspKTtcbiAgICBjb25zdCBrZXlzID0gbmV3IEFycmF5KC4uLmtleVNldCkuZmlsdGVyKGsgPT4gIWRlZXBFcXVhbChvbGRPYmplY3Rba10sIG5ld09iamVjdFtrXSkpLnNvcnQoKTtcbiAgICBjb25zdCBsYXN0S2V5ID0ga2V5c1trZXlzLmxlbmd0aCAtIDFdO1xuICAgIGZvciAoY29uc3Qga2V5IG9mIGtleXMpIHtcbiAgICAgIGNvbnN0IG9sZFZhbHVlID0gb2xkT2JqZWN0W2tleV07XG4gICAgICBjb25zdCBuZXdWYWx1ZSA9IG5ld09iamVjdFtrZXldO1xuICAgICAgY29uc3QgdHJlZVByZWZpeCA9IGtleSA9PT0gbGFzdEtleSA/ICfilJQnIDogJ+KUnCc7XG4gICAgICBpZiAob2xkVmFsdWUgIT09IHVuZGVmaW5lZCAmJiBuZXdWYWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHRoaXMucHJpbnQoJyVzICAgJXPilIAgJXMgJXM6JywgbGluZVByZWZpeCwgdHJlZVByZWZpeCwgdGhpcy5jaGFuZ2VUYWcob2xkVmFsdWUsIG5ld1ZhbHVlKSwgY2hhbGsuYmx1ZShgLiR7a2V5fWApKTtcbiAgICAgICAgdGhpcy5mb3JtYXRPYmplY3REaWZmKG9sZFZhbHVlLCBuZXdWYWx1ZSwgYCR7bGluZVByZWZpeH0gICAke2tleSA9PT0gbGFzdEtleSA/ICcgJyA6ICfilIInfWApO1xuICAgICAgfSBlbHNlIGlmIChvbGRWYWx1ZSAhPT0gdW5kZWZpbmVkIC8qICYmIG5ld1ZhbHVlID09PSB1bmRlZmluZWQgKi8pIHtcbiAgICAgICAgdGhpcy5wcmludCgnJXMgICAlc+KUgCAlcyBSZW1vdmVkOiAlcycsIGxpbmVQcmVmaXgsIHRyZWVQcmVmaXgsIFJFTU9WQUwsIGNoYWxrLmJsdWUoYC4ke2tleX1gKSk7XG4gICAgICB9IGVsc2UgLyogaWYgKG9sZFZhbHVlID09PSB1bmRlZmluZWQgJiYgbmV3VmFsdWUgIT09IHVuZGVmaW5lZCAqLyB7XG4gICAgICAgIHRoaXMucHJpbnQoJyVzICAgJXPilIAgJXMgQWRkZWQ6ICVzJywgbGluZVByZWZpeCwgdHJlZVByZWZpeCwgQURESVRJT04sIGNoYWxrLmJsdWUoYC4ke2tleX1gKSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSBvbGRWYWx1ZSB0aGUgb2xkIHZhbHVlIG9mIGEgZGlmZmVyZW5jZS5cbiAgICogQHBhcmFtIG5ld1ZhbHVlIHRoZSBuZXcgdmFsdWUgb2YgYSBkaWZmZXJlbmNlLlxuICAgKlxuICAgKiBAcmV0dXJucyBhIHRhZyB0byBiZSByZW5kZXJlZCBpbiB0aGUgZGlmZiwgcmVmbGVjdGluZyB3aGV0aGVyIHRoZSBkaWZmZXJlbmNlXG4gICAqICAgICAgd2FzIGFuIEFERElUSU9OLCBVUERBVEUgb3IgUkVNT1ZBTC5cbiAgICovXG4gIHB1YmxpYyBjaGFuZ2VUYWcob2xkVmFsdWU6IGFueSB8IHVuZGVmaW5lZCwgbmV3VmFsdWU6IGFueSB8IHVuZGVmaW5lZCk6IHN0cmluZyB7XG4gICAgaWYgKG9sZFZhbHVlICE9PSB1bmRlZmluZWQgJiYgbmV3VmFsdWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIFVQREFURTtcbiAgICB9IGVsc2UgaWYgKG9sZFZhbHVlICE9PSB1bmRlZmluZWQgLyogJiYgbmV3VmFsdWUgPT09IHVuZGVmaW5lZCovKSB7XG4gICAgICByZXR1cm4gUkVNT1ZBTDtcbiAgICB9IGVsc2UgLyogaWYgKG9sZFZhbHVlID09PSB1bmRlZmluZWQgJiYgbmV3VmFsdWUgIT09IHVuZGVmaW5lZCkgKi8ge1xuICAgICAgcmV0dXJuIEFERElUSU9OO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBGaW5kICdhd3M6Y2RrOnBhdGgnIG1ldGFkYXRhIGluIHRoZSBkaWZmIGFuZCBhZGQgaXQgdG8gdGhlIGxvZ2ljYWxUb1BhdGhNYXBcbiAgICpcbiAgICogVGhlcmUgYXJlIG11bHRpcGxlIHNvdXJjZXMgb2YgbG9naWNhbElEIC0+IHBhdGggbWFwcGluZ3M6IHN5bnRoIG1ldGFkYXRhXG4gICAqIGFuZCByZXNvdXJjZSBtZXRhZGF0YSwgYW5kIHdlIGNvbWJpbmUgYWxsIHNvdXJjZXMgaW50byBhIHNpbmdsZSBtYXAuXG4gICAqL1xuICBwdWJsaWMgcmVhZENvbnN0cnVjdFBhdGhzRnJvbSh0ZW1wbGF0ZURpZmY6IFRlbXBsYXRlRGlmZikge1xuICAgIGZvciAoY29uc3QgW2xvZ2ljYWxJZCwgcmVzb3VyY2VEaWZmXSBvZiBPYmplY3QuZW50cmllcyh0ZW1wbGF0ZURpZmYucmVzb3VyY2VzKSkge1xuICAgICAgaWYgKCFyZXNvdXJjZURpZmYpIHsgY29udGludWU7IH1cblxuICAgICAgY29uc3Qgb2xkUGF0aE1ldGFkYXRhID0gcmVzb3VyY2VEaWZmLm9sZFZhbHVlPy5NZXRhZGF0YT8uW1BBVEhfTUVUQURBVEFfS0VZXTtcbiAgICAgIGlmIChvbGRQYXRoTWV0YWRhdGEgJiYgIShsb2dpY2FsSWQgaW4gdGhpcy5sb2dpY2FsVG9QYXRoTWFwKSkge1xuICAgICAgICB0aGlzLmxvZ2ljYWxUb1BhdGhNYXBbbG9naWNhbElkXSA9IG9sZFBhdGhNZXRhZGF0YTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgbmV3UGF0aE1ldGFkYXRhID0gcmVzb3VyY2VEaWZmLm5ld1ZhbHVlPy5NZXRhZGF0YT8uW1BBVEhfTUVUQURBVEFfS0VZXTtcbiAgICAgIGlmIChuZXdQYXRoTWV0YWRhdGEgJiYgIShsb2dpY2FsSWQgaW4gdGhpcy5sb2dpY2FsVG9QYXRoTWFwKSkge1xuICAgICAgICB0aGlzLmxvZ2ljYWxUb1BhdGhNYXBbbG9naWNhbElkXSA9IG5ld1BhdGhNZXRhZGF0YTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZm9ybWF0TG9naWNhbElkKGxvZ2ljYWxJZDogc3RyaW5nKSB7XG4gICAgLy8gaWYgd2UgaGF2ZSBhIHBhdGggaW4gdGhlIG1hcCwgcmV0dXJuIGl0XG4gICAgY29uc3Qgbm9ybWFsaXplZCA9IHRoaXMubm9ybWFsaXplZExvZ2ljYWxJZFBhdGgobG9naWNhbElkKTtcblxuICAgIGlmIChub3JtYWxpemVkKSB7XG4gICAgICByZXR1cm4gYCR7bm9ybWFsaXplZH0gJHtjaGFsay5ncmF5KGxvZ2ljYWxJZCl9YDtcbiAgICB9XG5cbiAgICByZXR1cm4gbG9naWNhbElkO1xuICB9XG5cbiAgcHVibGljIG5vcm1hbGl6ZWRMb2dpY2FsSWRQYXRoKGxvZ2ljYWxJZDogc3RyaW5nKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICAvLyBpZiB3ZSBoYXZlIGEgcGF0aCBpbiB0aGUgbWFwLCByZXR1cm4gaXRcbiAgICBjb25zdCBwYXRoID0gdGhpcy5sb2dpY2FsVG9QYXRoTWFwW2xvZ2ljYWxJZF07XG4gICAgcmV0dXJuIHBhdGggPyBub3JtYWxpemVQYXRoKHBhdGgpIDogdW5kZWZpbmVkO1xuXG4gICAgLyoqXG4gICAgICogUGF0aCBpcyBzdXBwb3NlZCB0byBzdGFydCB3aXRoIFwiL3N0YWNrLW5hbWVcIi4gSWYgdGhpcyBpcyB0aGUgY2FzZSAoaS5lLiBwYXRoIGhhcyBtb3JlIHRoYW5cbiAgICAgKiB0d28gY29tcG9uZW50cywgd2UgcmVtb3ZlIHRoZSBmaXJzdCBwYXJ0LiBPdGhlcndpc2UsIHdlIGp1c3QgdXNlIHRoZSBmdWxsIHBhdGguXG4gICAgICogQHBhcmFtIHBcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBub3JtYWxpemVQYXRoKHA6IHN0cmluZykge1xuICAgICAgaWYgKHAuc3RhcnRzV2l0aCgnLycpKSB7XG4gICAgICAgIHAgPSBwLnNsaWNlKDEpO1xuICAgICAgfVxuXG4gICAgICBsZXQgcGFydHMgPSBwLnNwbGl0KCcvJyk7XG4gICAgICBpZiAocGFydHMubGVuZ3RoID4gMSkge1xuICAgICAgICBwYXJ0cyA9IHBhcnRzLnNsaWNlKDEpO1xuXG4gICAgICAgIC8vIHJlbW92ZSB0aGUgbGFzdCBjb21wb25lbnQgaWYgaXQncyBcIlJlc291cmNlXCIgb3IgXCJEZWZhdWx0XCIgKGlmIHdlIGhhdmUgbW9yZSB0aGFuIGEgc2luZ2xlIGNvbXBvbmVudClcbiAgICAgICAgaWYgKHBhcnRzLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgICBjb25zdCBsYXN0ID0gcGFydHNbcGFydHMubGVuZ3RoIC0gMV07XG4gICAgICAgICAgaWYgKGxhc3QgPT09ICdSZXNvdXJjZScgfHwgbGFzdCA9PT0gJ0RlZmF1bHQnKSB7XG4gICAgICAgICAgICBwYXJ0cyA9IHBhcnRzLnNsaWNlKDAsIHBhcnRzLmxlbmd0aCAtIDEpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHAgPSBwYXJ0cy5qb2luKCcvJyk7XG4gICAgICB9XG4gICAgICByZXR1cm4gcDtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZm9ybWF0SWFtQ2hhbmdlcyhjaGFuZ2VzOiBJYW1DaGFuZ2VzKSB7XG4gICAgaWYgKCFjaGFuZ2VzLmhhc0NoYW5nZXMpIHsgcmV0dXJuOyB9XG5cbiAgICBpZiAoY2hhbmdlcy5zdGF0ZW1lbnRzLmhhc0NoYW5nZXMpIHtcbiAgICAgIHRoaXMucHJpbnRTZWN0aW9uSGVhZGVyKCdJQU0gU3RhdGVtZW50IENoYW5nZXMnKTtcbiAgICAgIHRoaXMucHJpbnQoZm9ybWF0VGFibGUodGhpcy5kZWVwU3Vic3RpdHV0ZUJyYWNlZExvZ2ljYWxJZHMoY2hhbmdlcy5zdW1tYXJpemVTdGF0ZW1lbnRzKCkpLCB0aGlzLnN0cmVhbS5jb2x1bW5zKSk7XG4gICAgfVxuXG4gICAgaWYgKGNoYW5nZXMubWFuYWdlZFBvbGljaWVzLmhhc0NoYW5nZXMpIHtcbiAgICAgIHRoaXMucHJpbnRTZWN0aW9uSGVhZGVyKCdJQU0gUG9saWN5IENoYW5nZXMnKTtcbiAgICAgIHRoaXMucHJpbnQoZm9ybWF0VGFibGUodGhpcy5kZWVwU3Vic3RpdHV0ZUJyYWNlZExvZ2ljYWxJZHMoY2hhbmdlcy5zdW1tYXJpemVNYW5hZ2VkUG9saWNpZXMoKSksIHRoaXMuc3RyZWFtLmNvbHVtbnMpKTtcbiAgICB9XG5cbiAgICBpZiAoY2hhbmdlcy5zc29QZXJtaXNzaW9uU2V0cy5oYXNDaGFuZ2VzIHx8IGNoYW5nZXMuc3NvSW5zdGFuY2VBQ0FDb25maWdzLmhhc0NoYW5nZXMgfHwgY2hhbmdlcy5zc29Bc3NpZ25tZW50cy5oYXNDaGFuZ2VzKSB7XG4gICAgICB0aGlzLnByaW50U2VjdGlvbkhlYWRlcignSUFNIElkZW50aXR5IENlbnRlciBDaGFuZ2VzJyk7XG4gICAgICBpZiAoY2hhbmdlcy5zc29QZXJtaXNzaW9uU2V0cy5oYXNDaGFuZ2VzKSB7XG4gICAgICAgIHRoaXMucHJpbnQoZm9ybWF0VGFibGUodGhpcy5kZWVwU3Vic3RpdHV0ZUJyYWNlZExvZ2ljYWxJZHMoY2hhbmdlcy5zdW1tYXJpemVTc29QZXJtaXNzaW9uU2V0cygpKSwgdGhpcy5zdHJlYW0uY29sdW1ucykpO1xuICAgICAgfVxuICAgICAgaWYgKGNoYW5nZXMuc3NvSW5zdGFuY2VBQ0FDb25maWdzLmhhc0NoYW5nZXMpIHtcbiAgICAgICAgdGhpcy5wcmludChmb3JtYXRUYWJsZSh0aGlzLmRlZXBTdWJzdGl0dXRlQnJhY2VkTG9naWNhbElkcyhjaGFuZ2VzLnN1bW1hcml6ZVNzb0luc3RhbmNlQUNBQ29uZmlncygpKSwgdGhpcy5zdHJlYW0uY29sdW1ucykpO1xuICAgICAgfVxuICAgICAgaWYgKGNoYW5nZXMuc3NvQXNzaWdubWVudHMuaGFzQ2hhbmdlcykge1xuICAgICAgICB0aGlzLnByaW50KGZvcm1hdFRhYmxlKHRoaXMuZGVlcFN1YnN0aXR1dGVCcmFjZWRMb2dpY2FsSWRzKGNoYW5nZXMuc3VtbWFyaXplU3NvQXNzaWdubWVudHMoKSksIHRoaXMuc3RyZWFtLmNvbHVtbnMpKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZm9ybWF0U2VjdXJpdHlHcm91cENoYW5nZXMoY2hhbmdlczogU2VjdXJpdHlHcm91cENoYW5nZXMpIHtcbiAgICBpZiAoIWNoYW5nZXMuaGFzQ2hhbmdlcykgeyByZXR1cm47IH1cblxuICAgIHRoaXMucHJpbnRTZWN0aW9uSGVhZGVyKCdTZWN1cml0eSBHcm91cCBDaGFuZ2VzJyk7XG4gICAgdGhpcy5wcmludChmb3JtYXRUYWJsZSh0aGlzLmRlZXBTdWJzdGl0dXRlQnJhY2VkTG9naWNhbElkcyhjaGFuZ2VzLnN1bW1hcml6ZSgpKSwgdGhpcy5zdHJlYW0uY29sdW1ucykpO1xuICB9XG5cbiAgcHVibGljIGRlZXBTdWJzdGl0dXRlQnJhY2VkTG9naWNhbElkcyhyb3dzOiBzdHJpbmdbXVtdKTogc3RyaW5nW11bXSB7XG4gICAgcmV0dXJuIHJvd3MubWFwKHJvdyA9PiByb3cubWFwKHRoaXMuc3Vic3RpdHV0ZUJyYWNlZExvZ2ljYWxJZHMuYmluZCh0aGlzKSkpO1xuICB9XG5cbiAgLyoqXG4gICAqIFN1YnN0aXR1dGUgYWxsIHN0cmluZ3MgbGlrZSAke0xvZ0lkLnh4eH0gd2l0aCB0aGUgcGF0aCBpbnN0ZWFkIG9mIHRoZSBsb2dpY2FsIElEXG4gICAqL1xuICBwdWJsaWMgc3Vic3RpdHV0ZUJyYWNlZExvZ2ljYWxJZHMoc291cmNlOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiBzb3VyY2UucmVwbGFjZSgvXFwkXFx7KFteLn1dKykoLltefV0rKT9cXH0vaWcsIChfbWF0Y2gsIGxvZ0lkLCBzdWZmaXgpID0+IHtcbiAgICAgIHJldHVybiAnJHsnICsgKHRoaXMubm9ybWFsaXplZExvZ2ljYWxJZFBhdGgobG9nSWQpIHx8IGxvZ0lkKSArIChzdWZmaXggfHwgJycpICsgJ30nO1xuICAgIH0pO1xuICB9XG59XG5cbi8qKlxuICogQSBwYXRjaCBhcyByZXR1cm5lZCBieSBgYGRpZmYuc3RydWN0dXJlZFBhdGNoYGAuXG4gKi9cbmludGVyZmFjZSBQYXRjaCB7XG4gIC8qKlxuICAgKiBIdW5rcyBpbiB0aGUgcGF0Y2guXG4gICAqL1xuICBodW5rczogUmVhZG9ubHlBcnJheTxQYXRjaEh1bms+O1xufVxuXG4vKipcbiAqIEEgaHVuayBpbiBhIHBhdGNoIHByb2R1Y2VkIGJ5IGBgZGlmZi5zdHJ1Y3R1cmVkUGF0Y2hgYC5cbiAqL1xuaW50ZXJmYWNlIFBhdGNoSHVuayB7XG4gIG9sZFN0YXJ0OiBudW1iZXI7XG4gIG9sZExpbmVzOiBudW1iZXI7XG4gIG5ld1N0YXJ0OiBudW1iZXI7XG4gIG5ld0xpbmVzOiBudW1iZXI7XG4gIGxpbmVzOiBzdHJpbmdbXTtcbn1cblxuLyoqXG4gKiBDcmVhdGVzIGEgdW5pZmllZCBkaWZmIG9mIHR3byBzdHJpbmdzLlxuICpcbiAqIEBwYXJhbSBvbGRTdHIgIHRoZSBcIm9sZFwiIHZlcnNpb24gb2YgdGhlIHN0cmluZy5cbiAqIEBwYXJhbSBuZXdTdHIgIHRoZSBcIm5ld1wiIHZlcnNpb24gb2YgdGhlIHN0cmluZy5cbiAqIEBwYXJhbSBjb250ZXh0IHRoZSBudW1iZXIgb2YgY29udGV4dCBsaW5lcyB0byB1c2UgaW4gYXJiaXRyYXJ5IEpTT04gZGlmZi5cbiAqXG4gKiBAcmV0dXJucyBhbiBhcnJheSBvZiBkaWZmIGxpbmVzLlxuICovXG5mdW5jdGlvbiBfZGlmZlN0cmluZ3Mob2xkU3RyOiBzdHJpbmcsIG5ld1N0cjogc3RyaW5nLCBjb250ZXh0OiBudW1iZXIpOiBzdHJpbmdbXSB7XG4gIGNvbnN0IHBhdGNoOiBQYXRjaCA9IHN0cnVjdHVyZWRQYXRjaChudWxsLCBudWxsLCBvbGRTdHIsIG5ld1N0ciwgbnVsbCwgbnVsbCwgeyBjb250ZXh0IH0pO1xuICBjb25zdCByZXN1bHQgPSBuZXcgQXJyYXk8c3RyaW5nPigpO1xuICBmb3IgKGNvbnN0IGh1bmsgb2YgcGF0Y2guaHVua3MpIHtcbiAgICByZXN1bHQucHVzaChjaGFsay5tYWdlbnRhKGBAQCAtJHtodW5rLm9sZFN0YXJ0fSwke2h1bmsub2xkTGluZXN9ICske2h1bmsubmV3U3RhcnR9LCR7aHVuay5uZXdMaW5lc30gQEBgKSk7XG4gICAgY29uc3QgYmFzZUluZGVudCA9IF9maW5kSW5kZW50KGh1bmsubGluZXMpO1xuICAgIGZvciAoY29uc3QgbGluZSBvZiBodW5rLmxpbmVzKSB7XG4gICAgICAvLyBEb24ndCBjYXJlIGFib3V0IHRlcm1pbmF0aW9uIG5ld2xpbmUuXG4gICAgICBpZiAobGluZSA9PT0gJ1xcXFwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZScpIHsgY29udGludWU7IH1cbiAgICAgIGNvbnN0IG1hcmtlciA9IGxpbmUuY2hhckF0KDApO1xuICAgICAgY29uc3QgdGV4dCA9IGxpbmUuc2xpY2UoMSArIGJhc2VJbmRlbnQpO1xuICAgICAgc3dpdGNoIChtYXJrZXIpIHtcbiAgICAgICAgY2FzZSAnICc6XG4gICAgICAgICAgcmVzdWx0LnB1c2goYCR7Q09OVEVYVH0gJHt0ZXh0fWApO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICcrJzpcbiAgICAgICAgICByZXN1bHQucHVzaChjaGFsay5ib2xkKGAke0FERElUSU9OfSAke2NoYWxrLmdyZWVuKHRleHQpfWApKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnLSc6XG4gICAgICAgICAgcmVzdWx0LnB1c2goY2hhbGsuYm9sZChgJHtSRU1PVkFMfSAke2NoYWxrLnJlZCh0ZXh0KX1gKSk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBVbmV4cGVjdGVkIGRpZmYgbWFya2VyOiAke21hcmtlcn0gKGZ1bGwgbGluZTogJHtsaW5lfSlgKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcblxuICBmdW5jdGlvbiBfZmluZEluZGVudChsaW5lczogc3RyaW5nW10pOiBudW1iZXIge1xuICAgIGxldCBpbmRlbnQgPSBOdW1iZXIuTUFYX1NBRkVfSU5URUdFUjtcbiAgICBmb3IgKGNvbnN0IGxpbmUgb2YgbGluZXMpIHtcbiAgICAgIGZvciAobGV0IGkgPSAxOyBpIDwgbGluZS5sZW5ndGg7IGkrKykge1xuICAgICAgICBpZiAobGluZS5jaGFyQXQoaSkgIT09ICcgJykge1xuICAgICAgICAgIGluZGVudCA9IGluZGVudCA+IGkgLSAxID8gaSAtIDEgOiBpbmRlbnQ7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGluZGVudDtcbiAgfVxufVxuIl19","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.IamChanges = void 0;\nconst service_spec_types_1 = require(\"@aws-cdk/service-spec-types\");\nconst chalk = require(\"chalk\");\nconst iam_identity_center_1 = require(\"./iam-identity-center\");\nconst managed_policy_1 = require(\"./managed-policy\");\nconst statement_1 = require(\"./statement\");\nconst diffable_1 = require(\"../diffable\");\nconst render_intrinsics_1 = require(\"../render-intrinsics\");\nconst util_1 = require(\"../util\");\n/**\n * Changes to IAM statements and IAM identity center\n */\nclass IamChanges {\n constructor(props) {\n // each entry in a DiffableCollection is used to generate a single row of the security changes table that is presented for cdk diff and cdk deploy.\n this.statements = new diffable_1.DiffableCollection();\n this.managedPolicies = new diffable_1.DiffableCollection();\n this.ssoPermissionSets = new diffable_1.DiffableCollection();\n this.ssoAssignments = new diffable_1.DiffableCollection();\n this.ssoInstanceACAConfigs = new diffable_1.DiffableCollection();\n for (const propertyChange of props.propertyChanges) {\n this.readPropertyChange(propertyChange);\n }\n for (const resourceChange of props.resourceChanges) {\n this.readResourceChange(resourceChange);\n }\n this.statements.calculateDiff();\n this.managedPolicies.calculateDiff();\n this.ssoPermissionSets.calculateDiff();\n this.ssoAssignments.calculateDiff();\n this.ssoInstanceACAConfigs.calculateDiff();\n }\n get hasChanges() {\n return (this.statements.hasChanges\n || this.managedPolicies.hasChanges\n || this.ssoPermissionSets.hasChanges\n || this.ssoAssignments.hasChanges\n || this.ssoInstanceACAConfigs.hasChanges);\n }\n /**\n * Return whether the changes include broadened permissions\n *\n * Permissions are broadened if positive statements are added or\n * negative statements are removed, or if managed policies are added.\n */\n get permissionsBroadened() {\n return this.statements.additions.some(s => !s.isNegativeStatement)\n || this.statements.removals.some(s => s.isNegativeStatement)\n || this.managedPolicies.hasAdditions\n || this.ssoPermissionSets.hasAdditions\n || this.ssoAssignments.hasAdditions\n || this.ssoInstanceACAConfigs.hasAdditions;\n }\n /**\n * Return a summary table of changes\n */\n summarizeStatements() {\n const ret = [];\n const header = ['', 'Resource', 'Effect', 'Action', 'Principal', 'Condition'];\n // First generate all lines, then sort on Resource so that similar resources are together\n for (const statement of this.statements.additions) {\n const renderedStatement = statement.render();\n ret.push([\n '+',\n renderedStatement.resource,\n renderedStatement.effect,\n renderedStatement.action,\n renderedStatement.principal,\n renderedStatement.condition,\n ].map(s => chalk.green(s)));\n }\n for (const statement of this.statements.removals) {\n const renderedStatement = statement.render();\n ret.push([\n '-',\n renderedStatement.resource,\n renderedStatement.effect,\n renderedStatement.action,\n renderedStatement.principal,\n renderedStatement.condition,\n ].map(s => chalk.red(s)));\n }\n // Sort by 2nd column\n ret.sort((0, util_1.makeComparator)((row) => [row[1]]));\n ret.splice(0, 0, header);\n return ret;\n }\n summarizeManagedPolicies() {\n const ret = [];\n const header = ['', 'Resource', 'Managed Policy ARN'];\n for (const att of this.managedPolicies.additions) {\n ret.push([\n '+',\n att.identityArn,\n att.managedPolicyArn,\n ].map(s => chalk.green(s)));\n }\n for (const att of this.managedPolicies.removals) {\n ret.push([\n '-',\n att.identityArn,\n att.managedPolicyArn,\n ].map(s => chalk.red(s)));\n }\n // Sort by 2nd column\n ret.sort((0, util_1.makeComparator)((row) => [row[1]]));\n ret.splice(0, 0, header);\n return ret;\n }\n summarizeSsoAssignments() {\n const ret = [];\n const header = ['', 'Resource', 'InstanceArn', 'PermissionSetArn', 'PrincipalId', 'PrincipalType', 'TargetId', 'TargetType'];\n for (const att of this.ssoAssignments.additions) {\n ret.push([\n '+',\n att.cfnLogicalId || '',\n att.ssoInstanceArn || '',\n att.permissionSetArn || '',\n att.principalId || '',\n att.principalType || '',\n att.targetId || '',\n att.targetType || '',\n ].map(s => chalk.green(s)));\n }\n for (const att of this.ssoAssignments.removals) {\n ret.push([\n '-',\n att.cfnLogicalId || '',\n att.ssoInstanceArn || '',\n att.permissionSetArn || '',\n att.principalId || '',\n att.principalType || '',\n att.targetId || '',\n att.targetType || '',\n ].map(s => chalk.red(s)));\n }\n // Sort by resource name to ensure a unique value is used for sorting\n ret.sort((0, util_1.makeComparator)((row) => [row[1]]));\n ret.splice(0, 0, header);\n return ret;\n }\n summarizeSsoInstanceACAConfigs() {\n const ret = [];\n const header = ['', 'Resource', 'InstanceArn', 'AccessControlAttributes'];\n function formatAccessControlAttribute(aca) {\n return `Key: ${aca?.Key}, Values: [${aca?.Value?.Source.join(', ')}]`;\n }\n for (const att of this.ssoInstanceACAConfigs.additions) {\n ret.push([\n '+',\n att.cfnLogicalId || '',\n att.ssoInstanceArn || '',\n att.accessControlAttributes?.map(formatAccessControlAttribute).join('\\n') || '',\n ].map(s => chalk.green(s)));\n }\n for (const att of this.ssoInstanceACAConfigs.removals) {\n ret.push([\n '-',\n att.cfnLogicalId || '',\n att.ssoInstanceArn || '',\n att.accessControlAttributes?.map(formatAccessControlAttribute).join('\\n') || '',\n ].map(s => chalk.red(s)));\n }\n // Sort by resource name to ensure a unique value is used for sorting\n ret.sort((0, util_1.makeComparator)((row) => [row[1]]));\n ret.splice(0, 0, header);\n return ret;\n }\n summarizeSsoPermissionSets() {\n const ret = [];\n const header = ['', 'Resource', 'InstanceArn', 'PermissionSet name', 'PermissionsBoundary', 'CustomerManagedPolicyReferences'];\n function formatManagedPolicyRef(s) {\n return `Name: ${s?.Name || ''}, Path: ${s?.Path || ''}`;\n }\n function formatSsoPermissionsBoundary(ssoPb) {\n // ManagedPolicyArn OR CustomerManagedPolicyReference can be specified -- but not both.\n if (ssoPb?.ManagedPolicyArn !== undefined) {\n return `ManagedPolicyArn: ${ssoPb?.ManagedPolicyArn || ''}`;\n }\n else if (ssoPb?.CustomerManagedPolicyReference !== undefined) {\n return `CustomerManagedPolicyReference: {\\n ${formatManagedPolicyRef(ssoPb?.CustomerManagedPolicyReference)}\\n}`;\n }\n else {\n return '';\n }\n }\n for (const att of this.ssoPermissionSets.additions) {\n ret.push([\n '+',\n att.cfnLogicalId || '',\n att.ssoInstanceArn || '',\n att.name || '',\n formatSsoPermissionsBoundary(att.ssoPermissionsBoundary),\n att.ssoCustomerManagedPolicyReferences?.map(formatManagedPolicyRef).join('\\n') || '',\n ].map(s => chalk.green(s)));\n }\n for (const att of this.ssoPermissionSets.removals) {\n ret.push([\n '-',\n att.cfnLogicalId || '',\n att.ssoInstanceArn || '',\n att.name || '',\n formatSsoPermissionsBoundary(att.ssoPermissionsBoundary),\n att.ssoCustomerManagedPolicyReferences?.map(formatManagedPolicyRef).join('\\n') || '',\n ].map(s => chalk.red(s)));\n }\n // Sort by resource name to ensure a unique value is used for sorting\n ret.sort((0, util_1.makeComparator)((row) => [row[1]]));\n ret.splice(0, 0, header);\n return ret;\n }\n /**\n * Return a machine-readable version of the changes.\n * This is only used in tests.\n *\n * @internal\n */\n _toJson() {\n return (0, util_1.deepRemoveUndefined)({\n statementAdditions: (0, util_1.dropIfEmpty)(this.statements.additions.map(s => s._toJson())),\n statementRemovals: (0, util_1.dropIfEmpty)(this.statements.removals.map(s => s._toJson())),\n managedPolicyAdditions: (0, util_1.dropIfEmpty)(this.managedPolicies.additions.map(s => s._toJson())),\n managedPolicyRemovals: (0, util_1.dropIfEmpty)(this.managedPolicies.removals.map(s => s._toJson())),\n });\n }\n readPropertyChange(propertyChange) {\n switch (propertyChange.scrutinyType) {\n case service_spec_types_1.PropertyScrutinyType.InlineIdentityPolicies:\n // AWS::IAM::{ Role | User | Group }.Policies\n this.statements.addOld(...this.readIdentityPolicies(propertyChange.oldValue, propertyChange.resourceLogicalId));\n this.statements.addNew(...this.readIdentityPolicies(propertyChange.newValue, propertyChange.resourceLogicalId));\n break;\n case service_spec_types_1.PropertyScrutinyType.InlineResourcePolicy:\n // Any PolicyDocument on a resource (including AssumeRolePolicyDocument)\n this.statements.addOld(...this.readResourceStatements(propertyChange.oldValue, propertyChange.resourceLogicalId));\n this.statements.addNew(...this.readResourceStatements(propertyChange.newValue, propertyChange.resourceLogicalId));\n break;\n case service_spec_types_1.PropertyScrutinyType.ManagedPolicies:\n // Just a list of managed policies\n this.managedPolicies.addOld(...this.readManagedPolicies(propertyChange.oldValue, propertyChange.resourceLogicalId));\n this.managedPolicies.addNew(...this.readManagedPolicies(propertyChange.newValue, propertyChange.resourceLogicalId));\n break;\n }\n }\n readResourceChange(resourceChange) {\n switch (resourceChange.scrutinyType) {\n case service_spec_types_1.ResourceScrutinyType.IdentityPolicyResource:\n // AWS::IAM::Policy\n this.statements.addOld(...this.readIdentityPolicyResource(resourceChange.oldProperties));\n this.statements.addNew(...this.readIdentityPolicyResource(resourceChange.newProperties));\n break;\n case service_spec_types_1.ResourceScrutinyType.ResourcePolicyResource:\n // AWS::*::{Bucket,Queue,Topic}Policy\n this.statements.addOld(...this.readResourcePolicyResource(resourceChange.oldProperties));\n this.statements.addNew(...this.readResourcePolicyResource(resourceChange.newProperties));\n break;\n case service_spec_types_1.ResourceScrutinyType.LambdaPermission:\n this.statements.addOld(...this.readLambdaStatements(resourceChange.oldProperties));\n this.statements.addNew(...this.readLambdaStatements(resourceChange.newProperties));\n break;\n case service_spec_types_1.ResourceScrutinyType.SsoPermissionSet:\n this.ssoPermissionSets.addOld(...this.readSsoPermissionSet(resourceChange.oldProperties, resourceChange.resourceLogicalId));\n this.ssoPermissionSets.addNew(...this.readSsoPermissionSet(resourceChange.newProperties, resourceChange.resourceLogicalId));\n break;\n case service_spec_types_1.ResourceScrutinyType.SsoAssignmentResource:\n this.ssoAssignments.addOld(...this.readSsoAssignments(resourceChange.oldProperties, resourceChange.resourceLogicalId));\n this.ssoAssignments.addNew(...this.readSsoAssignments(resourceChange.newProperties, resourceChange.resourceLogicalId));\n break;\n case service_spec_types_1.ResourceScrutinyType.SsoInstanceACAConfigResource:\n this.ssoInstanceACAConfigs.addOld(...this.readSsoInstanceACAConfigs(resourceChange.oldProperties, resourceChange.resourceLogicalId));\n this.ssoInstanceACAConfigs.addNew(...this.readSsoInstanceACAConfigs(resourceChange.newProperties, resourceChange.resourceLogicalId));\n break;\n }\n }\n /**\n * Parse a list of policies on an identity\n */\n readIdentityPolicies(policies, logicalId) {\n if (policies === undefined || !Array.isArray(policies)) {\n return [];\n }\n const appliesToPrincipal = 'AWS:${' + logicalId + '}';\n return (0, util_1.flatMap)(policies, (policy) => {\n // check if the Policy itself is not an intrinsic, like an Fn::If\n const unparsedStatement = policy.PolicyDocument?.Statement\n ? policy.PolicyDocument.Statement\n : policy;\n return defaultPrincipal(appliesToPrincipal, (0, statement_1.parseStatements)((0, render_intrinsics_1.renderIntrinsics)(unparsedStatement)));\n });\n }\n /**\n * Parse an IAM::Policy resource\n */\n readIdentityPolicyResource(properties) {\n if (properties === undefined) {\n return [];\n }\n properties = (0, render_intrinsics_1.renderIntrinsics)(properties);\n const principals = (properties.Groups || []).concat(properties.Users || []).concat(properties.Roles || []);\n return (0, util_1.flatMap)(principals, (principal) => {\n const ref = 'AWS:' + principal;\n return defaultPrincipal(ref, (0, statement_1.parseStatements)(properties.PolicyDocument.Statement));\n });\n }\n readSsoInstanceACAConfigs(properties, logicalId) {\n if (properties === undefined) {\n return [];\n }\n properties = (0, render_intrinsics_1.renderIntrinsics)(properties);\n return [new iam_identity_center_1.SsoInstanceACAConfig({\n cfnLogicalId: '${' + logicalId + '}',\n ssoInstanceArn: properties.InstanceArn,\n accessControlAttributes: properties.AccessControlAttributes,\n })];\n }\n readSsoAssignments(properties, logicalId) {\n if (properties === undefined) {\n return [];\n }\n properties = (0, render_intrinsics_1.renderIntrinsics)(properties);\n return [new iam_identity_center_1.SsoAssignment({\n cfnLogicalId: '${' + logicalId + '}',\n ssoInstanceArn: properties.InstanceArn,\n permissionSetArn: properties.PermissionSetArn,\n principalId: properties.PrincipalId,\n principalType: properties.PrincipalType,\n targetId: properties.TargetId,\n targetType: properties.TargetType,\n })];\n }\n readSsoPermissionSet(properties, logicalId) {\n if (properties === undefined) {\n return [];\n }\n properties = (0, render_intrinsics_1.renderIntrinsics)(properties);\n return [new iam_identity_center_1.SsoPermissionSet({\n cfnLogicalId: '${' + logicalId + '}',\n name: properties.Name,\n ssoInstanceArn: properties.InstanceArn,\n ssoCustomerManagedPolicyReferences: properties.CustomerManagedPolicyReferences,\n ssoPermissionsBoundary: properties.PermissionsBoundary,\n })];\n }\n readResourceStatements(policy, logicalId) {\n if (policy === undefined) {\n return [];\n }\n const appliesToResource = '${' + logicalId + '.Arn}';\n return defaultResource(appliesToResource, (0, statement_1.parseStatements)((0, render_intrinsics_1.renderIntrinsics)(policy.Statement)));\n }\n /**\n * Parse an AWS::*::{Bucket,Topic,Queue}policy\n */\n readResourcePolicyResource(properties) {\n if (properties === undefined) {\n return [];\n }\n properties = (0, render_intrinsics_1.renderIntrinsics)(properties);\n const policyKeys = Object.keys(properties).filter(key => key.indexOf('Policy') > -1);\n // Find the key that identifies the resource(s) this policy applies to\n const resourceKeys = Object.keys(properties).filter(key => !policyKeys.includes(key) && !key.endsWith('Name'));\n let resources = resourceKeys.length === 1 ? properties[resourceKeys[0]] : ['???'];\n // For some resources, this is a singleton string, for some it's an array\n if (!Array.isArray(resources)) {\n resources = [resources];\n }\n return (0, util_1.flatMap)(resources, (resource) => {\n return defaultResource(resource, (0, statement_1.parseStatements)(properties[policyKeys[0]].Statement));\n });\n }\n readManagedPolicies(policyArns, logicalId) {\n if (!policyArns) {\n return [];\n }\n const rep = '${' + logicalId + '}';\n return managed_policy_1.ManagedPolicyAttachment.parseManagedPolicies(rep, (0, render_intrinsics_1.renderIntrinsics)(policyArns));\n }\n readLambdaStatements(properties) {\n if (!properties) {\n return [];\n }\n return [(0, statement_1.parseLambdaPermission)((0, render_intrinsics_1.renderIntrinsics)(properties))];\n }\n}\nexports.IamChanges = IamChanges;\nIamChanges.IamPropertyScrutinies = [\n service_spec_types_1.PropertyScrutinyType.InlineIdentityPolicies,\n service_spec_types_1.PropertyScrutinyType.InlineResourcePolicy,\n service_spec_types_1.PropertyScrutinyType.ManagedPolicies,\n];\nIamChanges.IamResourceScrutinies = [\n service_spec_types_1.ResourceScrutinyType.ResourcePolicyResource,\n service_spec_types_1.ResourceScrutinyType.IdentityPolicyResource,\n service_spec_types_1.ResourceScrutinyType.LambdaPermission,\n service_spec_types_1.ResourceScrutinyType.SsoAssignmentResource,\n service_spec_types_1.ResourceScrutinyType.SsoInstanceACAConfigResource,\n service_spec_types_1.ResourceScrutinyType.SsoPermissionSet,\n];\n/**\n * Set an undefined or wildcarded principal on these statements\n */\nfunction defaultPrincipal(principal, statements) {\n statements.forEach(s => s.principals.replaceEmpty(principal));\n statements.forEach(s => s.principals.replaceStar(principal));\n return statements;\n}\n/**\n * Set an undefined or wildcarded resource on these statements\n */\nfunction defaultResource(resource, statements) {\n statements.forEach(s => s.resources.replaceEmpty(resource));\n statements.forEach(s => s.resources.replaceStar(resource));\n return statements;\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWFtLWNoYW5nZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpYW0tY2hhbmdlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxvRUFBeUY7QUFDekYsK0JBQStCO0FBQy9CLCtEQUF3STtBQUN4SSxxREFBOEU7QUFDOUUsMkNBQStGO0FBRy9GLDBDQUFpRDtBQUNqRCw0REFBd0Q7QUFDeEQsa0NBQW9GO0FBT3BGOztHQUVHO0FBQ0gsTUFBYSxVQUFVO0lBdUJyQixZQUFZLEtBQXNCO1FBUGxDLG1KQUFtSjtRQUNuSSxlQUFVLEdBQUcsSUFBSSw2QkFBa0IsRUFBYSxDQUFDO1FBQ2pELG9CQUFlLEdBQUcsSUFBSSw2QkFBa0IsRUFBMkIsQ0FBQztRQUNwRSxzQkFBaUIsR0FBRyxJQUFJLDZCQUFrQixFQUFvQixDQUFDO1FBQy9ELG1CQUFjLEdBQUcsSUFBSSw2QkFBa0IsRUFBaUIsQ0FBQztRQUN6RCwwQkFBcUIsR0FBRyxJQUFJLDZCQUFrQixFQUF3QixDQUFDO1FBR3JGLEtBQUssTUFBTSxjQUFjLElBQUksS0FBSyxDQUFDLGVBQWUsRUFBRSxDQUFDO1lBQ25ELElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUMxQyxDQUFDO1FBQ0QsS0FBSyxNQUFNLGNBQWMsSUFBSSxLQUFLLENBQUMsZUFBZSxFQUFFLENBQUM7WUFDbkQsSUFBSSxDQUFDLGtCQUFrQixDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQzFDLENBQUM7UUFFRCxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQ2hDLElBQUksQ0FBQyxlQUFlLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDckMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQ3ZDLElBQUksQ0FBQyxjQUFjLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDcEMsSUFBSSxDQUFDLHFCQUFxQixDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQzdDLENBQUM7SUFF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QUVZLGdDQUFxQixHQUFHO0lBQ3BDLHlDQUFvQixDQUFDLHNCQUFzQjtJQUMzQyx5Q0FBb0IsQ0FBQyxzQkFBc0I7SUFDM0MseUNBQW9CLENBQUMsZ0JBQWdCO0lBQ3JDLHlDQUFvQixDQUFDLHFCQUFxQjtJQUMxQyx5Q0FBb0IsQ0FBQyw0QkFBNEI7SUFDakQseUNBQW9CLENBQUMsZ0JBQWdCO0NBQ3RDLEFBUGtDLENBT2pDO0FBOFpKOztHQUVHO0FBQ0gsU0FBUyxnQkFBZ0IsQ0FBQyxTQUFpQixFQUFFLFVBQXVCO0lBQ2xFLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO0lBQzlELFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO0lBQzdELE9BQU8sVUFBVSxDQUFDO0FBQ3BCLENBQUM7QUFFRDs7R0FFRztBQUNILFNBQVMsZUFBZSxDQUFDLFFBQWdCLEVBQUUsVUFBdUI7SUFDaEUsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7SUFDNUQsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7SUFDM0QsT0FBTyxVQUFVLENBQUM7QUFDcEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFByb3BlcnR5U2NydXRpbnlUeXBlLCBSZXNvdXJjZVNjcnV0aW55VHlwZSB9IGZyb20gJ0Bhd3MtY2RrL3NlcnZpY2Utc3BlYy10eXBlcyc7XG5pbXBvcnQgKiBhcyBjaGFsayBmcm9tICdjaGFsayc7XG5pbXBvcnQgeyBJU3NvSW5zdGFuY2VBQ0FDb25maWcsIElTc29QZXJtaXNzaW9uU2V0LCBTc29Bc3NpZ25tZW50LCBTc29JbnN0YW5jZUFDQUNvbmZpZywgU3NvUGVybWlzc2lvblNldCB9IGZyb20gJy4vaWFtLWlkZW50aXR5LWNlbnRlcic7XG5pbXBvcnQgeyBNYW5hZ2VkUG9saWN5QXR0YWNobWVudCwgTWFuYWdlZFBvbGljeUpzb24gfSBmcm9tICcuL21hbmFnZWQtcG9saWN5JztcbmltcG9ydCB7IHBhcnNlTGFtYmRhUGVybWlzc2lvbiwgcGFyc2VTdGF0ZW1lbnRzLCBTdGF0ZW1lbnQsIFN0YXRlbWVudEpzb24gfSBmcm9tICcuL3N0YXRlbWVudCc7XG5pbXBvcnQgeyBNYXliZVBhcnNlZCB9IGZyb20gJy4uL2RpZmYvbWF5YmUtcGFyc2VkJztcbmltcG9ydCB7IFByb3BlcnR5Q2hhbmdlLCBQcm9wZXJ0eU1hcCwgUmVzb3VyY2VDaGFuZ2UgfSBmcm9tICcuLi9kaWZmL3R5cGVzJztcbmltcG9ydCB7IERpZmZhYmxlQ29sbGVjdGlvbiB9IGZyb20gJy4uL2RpZmZhYmxlJztcbmltcG9ydCB7IHJlbmRlckludHJpbnNpY3MgfSBmcm9tICcuLi9yZW5kZXItaW50cmluc2ljcyc7XG5pbXBvcnQgeyBkZWVwUmVtb3ZlVW5kZWZpbmVkLCBkcm9wSWZFbXB0eSwgZmxhdE1hcCwgbWFrZUNvbXBhcmF0b3IgfSBmcm9tICcuLi91dGlsJztcblxuZXhwb3J0IGludGVyZmFjZSBJYW1DaGFuZ2VzUHJvcHMge1xuICBwcm9wZXJ0eUNoYW5nZXM6IFByb3BlcnR5Q2hhbmdlW107XG4gIHJlc291cmNlQ2hhbmdlczogUmVzb3VyY2VDaGFuZ2VbXTtcbn1cblxuLyoqXG4gKiBDaGFuZ2VzIHRvIElBTSBzdGF0ZW1lbnRzIGFuZCBJQU0gaWRlbnRpdHkgY2VudGVyXG4gKi9cbmV4cG9ydCBjbGFzcyBJYW1DaGFuZ2VzIHtcbiAgcHVibGljIHN0YXRpYyBJYW1Qcm9wZXJ0eVNjcnV0aW5pZXMgPSBbXG4gICAgUHJvcGVydHlTY3J1dGlueVR5cGUuSW5saW5lSWRlbnRpdHlQb2xpY2llcyxcbiAgICBQcm9wZXJ0eVNjcnV0aW55VHlwZS5JbmxpbmVSZXNvdXJjZVBvbGljeSxcbiAgICBQcm9wZXJ0eVNjcnV0aW55VHlwZS5NYW5hZ2VkUG9saWNpZXMsXG4gIF07XG5cbiAgcHVibGljIHN0YXRpYyBJYW1SZXNvdXJjZVNjcnV0aW5pZXMgPSBbXG4gICAgUmVzb3VyY2VTY3J1dGlueVR5cGUuUmVzb3VyY2VQb2xpY3lSZXNvdXJjZSxcbiAgICBSZXNvdXJjZVNjcnV0aW55VHlwZS5JZGVudGl0eVBvbGljeVJlc291cmNlLFxuICAgIFJlc291cmNlU2NydXRpbnlUeXBlLkxhbWJkYVBlcm1pc3Npb24sXG4gICAgUmVzb3VyY2VTY3J1dGlueVR5cGUuU3NvQXNzaWdubWVudFJlc291cmNlLFxuICAgIFJlc291cmNlU2NydXRpbnlUeXBlLlNzb0luc3RhbmNlQUNBQ29uZmlnUmVzb3VyY2UsXG4gICAgUmVzb3VyY2VTY3J1dGlueVR5cGUuU3NvUGVybWlzc2lvblNldCxcbiAgXTtcblxuICAvLyBlYWNoIGVudHJ5IGluIGEgRGlmZmFibGVDb2xsZWN0aW9uIGlzIHVzZWQgdG8gZ2VuZXJhdGUgYSBzaW5nbGUgcm93IG9mIHRoZSBzZWN1cml0eSBjaGFuZ2VzIHRhYmxlIHRoYXQgaXMgcHJlc2VudGVkIGZvciBjZGsgZGlmZiBhbmQgY2RrIGRlcGxveS5cbiAgcHVibGljIHJlYWRvbmx5IHN0YXRlbWVudHMgPSBuZXcgRGlmZmFibGVDb2xsZWN0aW9uPFN0YXRlbWVudD4oKTtcbiAgcHVibGljIHJlYWRvbmx5IG1hbmFnZWRQb2xpY2llcyA9IG5ldyBEaWZmYWJsZUNvbGxlY3Rpb248TWFuYWdlZFBvbGljeUF0dGFjaG1lbnQ+KCk7XG4gIHB1YmxpYyByZWFkb25seSBzc29QZXJtaXNzaW9uU2V0cyA9IG5ldyBEaWZmYWJsZUNvbGxlY3Rpb248U3NvUGVybWlzc2lvblNldD4oKTtcbiAgcHVibGljIHJlYWRvbmx5IHNzb0Fzc2lnbm1lbnRzID0gbmV3IERpZmZhYmxlQ29sbGVjdGlvbjxTc29Bc3NpZ25tZW50PigpO1xuICBwdWJsaWMgcmVhZG9ubHkgc3NvSW5zdGFuY2VBQ0FDb25maWdzID0gbmV3IERpZmZhYmxlQ29sbGVjdGlvbjxTc29JbnN0YW5jZUFDQUNvbmZpZz4oKTtcblxuICBjb25zdHJ1Y3Rvcihwcm9wczogSWFtQ2hhbmdlc1Byb3BzKSB7XG4gICAgZm9yIChjb25zdCBwcm9wZXJ0eUNoYW5nZSBvZiBwcm9wcy5wcm9wZXJ0eUNoYW5nZXMpIHtcbiAgICAgIHRoaXMucmVhZFByb3BlcnR5Q2hhbmdlKHByb3BlcnR5Q2hhbmdlKTtcbiAgICB9XG4gICAgZm9yIChjb25zdCByZXNvdXJjZUNoYW5nZSBvZiBwcm9wcy5yZXNvdXJjZUNoYW5nZXMpIHtcbiAgICAgIHRoaXMucmVhZFJlc291cmNlQ2hhbmdlKHJlc291cmNlQ2hhbmdlKTtcbiAgICB9XG5cbiAgICB0aGlzLnN0YXRlbWVudHMuY2FsY3VsYXRlRGlmZigpO1xuICAgIHRoaXMubWFuYWdlZFBvbGljaWVzLmNhbGN1bGF0ZURpZmYoKTtcbiAgICB0aGlzLnNzb1Blcm1pc3Npb25TZXRzLmNhbGN1bGF0ZURpZmYoKTtcbiAgICB0aGlzLnNzb0Fzc2lnbm1lbnRzLmNhbGN1bGF0ZURpZmYoKTtcbiAgICB0aGlzLnNzb0luc3RhbmNlQUNBQ29uZmlncy5jYWxjdWxhdGVEaWZmKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGhhc0NoYW5nZXMoKSB7XG4gICAgcmV0dXJuICh0aGlzLnN0YXRlbWVudHMuaGFzQ2hhbmdlc1xuICAgICAgfHwgdGhpcy5tYW5hZ2VkUG9saWNpZXMuaGFzQ2hhbmdlc1xuICAgICAgfHwgdGhpcy5zc29QZXJtaXNzaW9uU2V0cy5oYXNDaGFuZ2VzXG4gICAgICB8fCB0aGlzLnNzb0Fzc2lnbm1lbnRzLmhhc0NoYW5nZXNcbiAgICAgIHx8IHRoaXMuc3NvSW5zdGFuY2VBQ0FDb25maWdzLmhhc0NoYW5nZXMpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybiB3aGV0aGVyIHRoZSBjaGFuZ2VzIGluY2x1ZGUgYnJvYWRlbmVkIHBlcm1pc3Npb25zXG4gICAqXG4gICAqIFBlcm1pc3Npb25zIGFyZSBicm9hZGVuZWQgaWYgcG9zaXRpdmUgc3RhdGVtZW50cyBhcmUgYWRkZWQgb3JcbiAgICogbmVnYXRpdmUgc3RhdGVtZW50cyBhcmUgcmVtb3ZlZCwgb3IgaWYgbWFuYWdlZCBwb2xpY2llcyBhcmUgYWRkZWQuXG4gICAqL1xuICBwdWJsaWMgZ2V0IHBlcm1pc3Npb25zQnJvYWRlbmVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnN0YXRlbWVudHMuYWRkaXRpb25zLnNvbWUocyA9PiAhcy5pc05lZ2F0aXZlU3RhdGVtZW50KVxuICAgICAgICB8fCB0aGlzLnN0YXRlbWVudHMucmVtb3ZhbHMuc29tZShzID0+IHMuaXNOZWdhdGl2ZVN0YXRlbWVudClcbiAgICAgICAgfHwgdGhpcy5tYW5hZ2VkUG9saWNpZXMuaGFzQWRkaXRpb25zXG4gICAgICAgIHx8IHRoaXMuc3NvUGVybWlzc2lvblNldHMuaGFzQWRkaXRpb25zXG4gICAgICAgIHx8IHRoaXMuc3NvQXNzaWdubWVudHMuaGFzQWRkaXRpb25zXG4gICAgICAgIHx8IHRoaXMuc3NvSW5zdGFuY2VBQ0FDb25maWdzLmhhc0FkZGl0aW9ucztcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm4gYSBzdW1tYXJ5IHRhYmxlIG9mIGNoYW5nZXNcbiAgICovXG4gIHB1YmxpYyBzdW1tYXJpemVTdGF0ZW1lbnRzKCk6IHN0cmluZ1tdW10ge1xuICAgIGNvbnN0IHJldDogc3RyaW5nW11bXSA9IFtdO1xuXG4gICAgY29uc3QgaGVhZGVyID0gWycnLCAnUmVzb3VyY2UnLCAnRWZmZWN0JywgJ0FjdGlvbicsICdQcmluY2lwYWwnLCAnQ29uZGl0aW9uJ107XG5cbiAgICAvLyBGaXJzdCBnZW5lcmF0ZSBhbGwgbGluZXMsIHRoZW4gc29ydCBvbiBSZXNvdXJjZSBzbyB0aGF0IHNpbWlsYXIgcmVzb3VyY2VzIGFyZSB0b2dldGhlclxuICAgIGZvciAoY29uc3Qgc3RhdGVtZW50IG9mIHRoaXMuc3RhdGVtZW50cy5hZGRpdGlvbnMpIHtcbiAgICAgIGNvbnN0IHJlbmRlcmVkU3RhdGVtZW50ID0gc3RhdGVtZW50LnJlbmRlcigpO1xuICAgICAgcmV0LnB1c2goW1xuICAgICAgICAnKycsXG4gICAgICAgIHJlbmRlcmVkU3RhdGVtZW50LnJlc291cmNlLFxuICAgICAgICByZW5kZXJlZFN0YXRlbWVudC5lZmZlY3QsXG4gICAgICAgIHJlbmRlcmVkU3RhdGVtZW50LmFjdGlvbixcbiAgICAgICAgcmVuZGVyZWRTdGF0ZW1lbnQucHJpbmNpcGFsLFxuICAgICAgICByZW5kZXJlZFN0YXRlbWVudC5jb25kaXRpb24sXG4gICAgICBdLm1hcChzID0+IGNoYWxrLmdyZWVuKHMpKSk7XG4gICAgfVxuICAgIGZvciAoY29uc3Qgc3RhdGVtZW50IG9mIHRoaXMuc3RhdGVtZW50cy5yZW1vdmFscykge1xuICAgICAgY29uc3QgcmVuZGVyZWRTdGF0ZW1lbnQgPSBzdGF0ZW1lbnQucmVuZGVyKCk7XG4gICAgICByZXQucHVzaChbXG4gICAgICAgICctJyxcbiAgICAgICAgcmVuZGVyZWRTdGF0ZW1lbnQucmVzb3VyY2UsXG4gICAgICAgIHJlbmRlcmVkU3RhdGVtZW50LmVmZmVjdCxcbiAgICAgICAgcmVuZGVyZWRTdGF0ZW1lbnQuYWN0aW9uLFxuICAgICAgICByZW5kZXJlZFN0YXRlbWVudC5wcmluY2lwYWwsXG4gICAgICAgIHJlbmRlcmVkU3RhdGVtZW50LmNvbmRpdGlvbixcbiAgICAgIF0ubWFwKHMgPT4gY2hhbGsucmVkKHMpKSk7XG4gICAgfVxuXG4gICAgLy8gU29ydCBieSAybmQgY29sdW1uXG4gICAgcmV0LnNvcnQobWFrZUNvbXBhcmF0b3IoKHJvdzogc3RyaW5nW10pID0+IFtyb3dbMV1dKSk7XG5cbiAgICByZXQuc3BsaWNlKDAsIDAsIGhlYWRlcik7XG5cbiAgICByZXR1cm4gcmV0O1xuICB9XG5cbiAgcHVibGljIHN1bW1hcml6ZU1hbmFnZWRQb2xpY2llcygpOiBzdHJpbmdbXVtdIHtcbiAgICBjb25zdCByZXQ6IHN0cmluZ1tdW10gPSBbXTtcbiAgICBjb25zdCBoZWFkZXIgPSBbJycsICdSZXNvdXJjZScsICdNYW5hZ2VkIFBvbGljeSBBUk4nXTtcblxuICAgIGZvciAoY29uc3QgYXR0IG9mIHRoaXMubWFuYWdlZFBvbGljaWVzLmFkZGl0aW9ucykge1xuICAgICAgcmV0LnB1c2goW1xuICAgICAgICAnKycsXG4gICAgICAgIGF0dC5pZGVudGl0eUFybixcbiAgICAgICAgYXR0Lm1hbmFnZWRQb2xpY3lBcm4sXG4gICAgICBdLm1hcChzID0+IGNoYWxrLmdyZWVuKHMpKSk7XG4gICAgfVxuICAgIGZvciAoY29uc3QgYXR0IG9mIHRoaXMubWFuYWdlZFBvbGljaWVzLnJlbW92YWxzKSB7XG4gICAgICByZXQucHVzaChbXG4gICAgICAgICctJyxcbiAgICAgICAgYXR0LmlkZW50aXR5QXJuLFxuICAgICAgICBhdHQubWFuYWdlZFBvbGljeUFybixcbiAgICAgIF0ubWFwKHMgPT4gY2hhbGsucmVkKHMpKSk7XG4gICAgfVxuXG4gICAgLy8gU29ydCBieSAybmQgY29sdW1uXG4gICAgcmV0LnNvcnQobWFrZUNvbXBhcmF0b3IoKHJvdzogc3RyaW5nW10pID0+IFtyb3dbMV1dKSk7XG5cbiAgICByZXQuc3BsaWNlKDAsIDAsIGhlYWRlcik7XG5cbiAgICByZXR1cm4gcmV0O1xuICB9XG5cbiAgcHVibGljIHN1bW1hcml6ZVNzb0Fzc2lnbm1lbnRzKCk6IHN0cmluZ1tdW10ge1xuICAgIGNvbnN0IHJldDogc3RyaW5nW11bXSA9IFtdO1xuICAgIGNvbnN0IGhlYWRlciA9IFsnJywgJ1Jlc291cmNlJywgJ0luc3RhbmNlQXJuJywgJ1Blcm1pc3Npb25TZXRBcm4nLCAnUHJpbmNpcGFsSWQnLCAnUHJpbmNpcGFsVHlwZScsICdUYXJnZXRJZCcsICdUYXJnZXRUeXBlJ107XG5cbiAgICBmb3IgKGNvbnN0IGF0dCBvZiB0aGlzLnNzb0Fzc2lnbm1lbnRzLmFkZGl0aW9ucykge1xuICAgICAgcmV0LnB1c2goW1xuICAgICAgICAnKycsXG4gICAgICAgIGF0dC5jZm5Mb2dpY2FsSWQgfHwgJycsXG4gICAgICAgIGF0dC5zc29JbnN0YW5jZUFybiB8fCAnJyxcbiAgICAgICAgYXR0LnBlcm1pc3Npb25TZXRBcm4gfHwgJycsXG4gICAgICAgIGF0dC5wcmluY2lwYWxJZCB8fCAnJyxcbiAgICAgICAgYXR0LnByaW5jaXBhbFR5cGUgfHwgJycsXG4gICAgICAgIGF0dC50YXJnZXRJZCB8fCAnJyxcbiAgICAgICAgYXR0LnRhcmdldFR5cGUgfHwgJycsXG4gICAgICBdLm1hcChzID0+IGNoYWxrLmdyZWVuKHMpKSk7XG4gICAgfVxuICAgIGZvciAoY29uc3QgYXR0IG9mIHRoaXMuc3NvQXNzaWdubWVudHMucmVtb3ZhbHMpIHtcbiAgICAgIHJldC5wdXNoKFtcbiAgICAgICAgJy0nLFxuICAgICAgICBhdHQuY2ZuTG9naWNhbElkIHx8ICcnLFxuICAgICAgICBhdHQuc3NvSW5zdGFuY2VBcm4gfHwgJycsXG4gICAgICAgIGF0dC5wZXJtaXNzaW9uU2V0QXJuIHx8ICcnLFxuICAgICAgICBhdHQucHJpbmNpcGFsSWQgfHwgJycsXG4gICAgICAgIGF0dC5wcmluY2lwYWxUeXBlIHx8ICcnLFxuICAgICAgICBhdHQudGFyZ2V0SWQgfHwgJycsXG4gICAgICAgIGF0dC50YXJnZXRUeXBlIHx8ICcnLFxuICAgICAgXS5tYXAocyA9PiBjaGFsay5yZWQocykpKTtcbiAgICB9XG5cbiAgICAvLyBTb3J0IGJ5IHJlc291cmNlIG5hbWUgdG8gZW5zdXJlIGEgdW5pcXVlIHZhbHVlIGlzIHVzZWQgZm9yIHNvcnRpbmdcbiAgICByZXQuc29ydChtYWtlQ29tcGFyYXRvcigocm93OiBzdHJpbmdbXSkgPT4gW3Jvd1sxXV0pKTtcbiAgICByZXQuc3BsaWNlKDAsIDAsIGhlYWRlcik7XG5cbiAgICByZXR1cm4gcmV0O1xuICB9XG5cbiAgcHVibGljIHN1bW1hcml6ZVNzb0luc3RhbmNlQUNBQ29uZmlncygpOiBzdHJpbmdbXVtdIHtcbiAgICBjb25zdCByZXQ6IHN0cmluZ1tdW10gPSBbXTtcbiAgICBjb25zdCBoZWFkZXIgPSBbJycsICdSZXNvdXJjZScsICdJbnN0YW5jZUFybicsICdBY2Nlc3NDb250cm9sQXR0cmlidXRlcyddO1xuXG4gICAgZnVuY3Rpb24gZm9ybWF0QWNjZXNzQ29udHJvbEF0dHJpYnV0ZShhY2E6IElTc29JbnN0YW5jZUFDQUNvbmZpZy5BY2Nlc3NDb250cm9sQXR0cmlidXRlKTogc3RyaW5nIHtcbiAgICAgIHJldHVybiBgS2V5OiAke2FjYT8uS2V5fSwgVmFsdWVzOiBbJHthY2E/LlZhbHVlPy5Tb3VyY2Uuam9pbignLCAnKX1dYDtcbiAgICB9XG5cbiAgICBmb3IgKGNvbnN0IGF0dCBvZiB0aGlzLnNzb0luc3RhbmNlQUNBQ29uZmlncy5hZGRpdGlvbnMpIHtcbiAgICAgIHJldC5wdXNoKFtcbiAgICAgICAgJysnLFxuICAgICAgICBhdHQuY2ZuTG9naWNhbElkIHx8ICcnLFxuICAgICAgICBhdHQuc3NvSW5zdGFuY2VBcm4gfHwgJycsXG4gICAgICAgIGF0dC5hY2Nlc3NDb250cm9sQXR0cmlidXRlcz8ubWFwKGZvcm1hdEFjY2Vzc0NvbnRyb2xBdHRyaWJ1dGUpLmpvaW4oJ1xcbicpIHx8ICcnLFxuICAgICAgXS5tYXAocyA9PiBjaGFsay5ncmVlbihzKSkpO1xuICAgIH1cbiAgICBmb3IgKGNvbnN0IGF0dCBvZiB0aGlzLnNzb0luc3RhbmNlQUNBQ29uZmlncy5yZW1vdmFscykge1xuICAgICAgcmV0LnB1c2goW1xuICAgICAgICAnLScsXG4gICAgICAgIGF0dC5jZm5Mb2dpY2FsSWQgfHwgJycsXG4gICAgICAgIGF0dC5zc29JbnN0YW5jZUFybiB8fCAnJyxcbiAgICAgICAgYXR0LmFjY2Vzc0NvbnRyb2xBdHRyaWJ1dGVzPy5tYXAoZm9ybWF0QWNjZXNzQ29udHJvbEF0dHJpYnV0ZSkuam9pbignXFxuJykgfHwgJycsXG4gICAgICBdLm1hcChzID0+IGNoYWxrLnJlZChzKSkpO1xuICAgIH1cblxuICAgIC8vIFNvcnQgYnkgcmVzb3VyY2UgbmFtZSB0byBlbnN1cmUgYSB1bmlxdWUgdmFsdWUgaXMgdXNlZCBmb3Igc29ydGluZ1xuICAgIHJldC5zb3J0KG1ha2VDb21wYXJhdG9yKChyb3c6IHN0cmluZ1tdKSA9PiBbcm93WzFdXSkpO1xuICAgIHJldC5zcGxpY2UoMCwgMCwgaGVhZGVyKTtcblxuICAgIHJldHVybiByZXQ7XG4gIH1cblxuICBwdWJsaWMgc3VtbWFyaXplU3NvUGVybWlzc2lvblNldHMoKTogc3RyaW5nW11bXSB7XG4gICAgY29uc3QgcmV0OiBzdHJpbmdbXVtdID0gW107XG4gICAgY29uc3QgaGVhZGVyID0gWycnLCAnUmVzb3VyY2UnLCAnSW5zdGFuY2VBcm4nLCAnUGVybWlzc2lvblNldCBuYW1lJywgJ1Blcm1pc3Npb25zQm91bmRhcnknLCAnQ3VzdG9tZXJNYW5hZ2VkUG9saWN5UmVmZXJlbmNlcyddO1xuXG4gICAgZnVuY3Rpb24gZm9ybWF0TWFuYWdlZFBvbGljeVJlZihzOiBJU3NvUGVybWlzc2lvblNldC5DdXN0b21lck1hbmFnZWRQb2xpY3lSZWZlcmVuY2UgfCB1bmRlZmluZWQpOiBzdHJpbmcge1xuICAgICAgcmV0dXJuIGBOYW1lOiAke3M/Lk5hbWUgfHwgJyd9LCBQYXRoOiAke3M/LlBhdGggfHwgJyd9YDtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBmb3JtYXRTc29QZXJtaXNzaW9uc0JvdW5kYXJ5KHNzb1BiOiBJU3NvUGVybWlzc2lvblNldC5QZXJtaXNzaW9uc0JvdW5kYXJ5IHwgdW5kZWZpbmVkKTogc3RyaW5nIHtcbiAgICAgIC8vIE1hbmFnZWRQb2xpY3lBcm4gT1IgQ3VzdG9tZXJNYW5hZ2VkUG9saWN5UmVmZXJlbmNlIGNhbiBiZSBzcGVjaWZpZWQgLS0gYnV0IG5vdCBib3RoLlxuICAgICAgaWYgKHNzb1BiPy5NYW5hZ2VkUG9saWN5QXJuICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgcmV0dXJuIGBNYW5hZ2VkUG9saWN5QXJuOiAke3Nzb1BiPy5NYW5hZ2VkUG9saWN5QXJuIHx8ICcnfWA7XG4gICAgICB9IGVsc2UgaWYgKHNzb1BiPy5DdXN0b21lck1hbmFnZWRQb2xpY3lSZWZlcmVuY2UgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICByZXR1cm4gYEN1c3RvbWVyTWFuYWdlZFBvbGljeVJlZmVyZW5jZToge1xcbiAgJHtmb3JtYXRNYW5hZ2VkUG9saWN5UmVmKHNzb1BiPy5DdXN0b21lck1hbmFnZWRQb2xpY3lSZWZlcmVuY2UpfVxcbn1gO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuICcnO1xuICAgICAgfVxuICAgIH1cblxuICAgIGZvciAoY29uc3QgYXR0IG9mIHRoaXMuc3NvUGVybWlzc2lvblNldHMuYWRkaXRpb25zKSB7XG4gICAgICByZXQucHVzaChbXG4gICAgICAgICcrJyxcbiAgICAgICAgYXR0LmNmbkxvZ2ljYWxJZCB8fCAnJyxcbiAgICAgICAgYXR0LnNzb0luc3RhbmNlQXJuIHx8ICcnLFxuICAgICAgICBhdHQubmFtZSB8fCAnJyxcbiAgICAgICAgZm9ybWF0U3NvUGVybWlzc2lvbnNCb3VuZGFyeShhdHQuc3NvUGVybWlzc2lvbnNCb3VuZGFyeSksXG4gICAgICAgIGF0dC5zc29DdXN0b21lck1hbmFnZWRQb2xpY3lSZWZlcmVuY2VzPy5tYXAoZm9ybWF0TWFuYWdlZFBvbGljeVJlZikuam9pbignXFxuJykgfHwgJycsXG4gICAgICBdLm1hcChzID0+IGNoYWxrLmdyZWVuKHMpKSk7XG4gICAgfVxuICAgIGZvciAoY29uc3QgYXR0IG9mIHRoaXMuc3NvUGVybWlzc2lvblNldHMucmVtb3ZhbHMpIHtcbiAgICAgIHJldC5wdXNoKFtcbiAgICAgICAgJy0nLFxuICAgICAgICBhdHQuY2ZuTG9naWNhbElkIHx8ICcnLFxuICAgICAgICBhdHQuc3NvSW5zdGFuY2VBcm4gfHwgJycsXG4gICAgICAgIGF0dC5uYW1lIHx8ICcnLFxuICAgICAgICBmb3JtYXRTc29QZXJtaXNzaW9uc0JvdW5kYXJ5KGF0dC5zc29QZXJtaXNzaW9uc0JvdW5kYXJ5KSxcbiAgICAgICAgYXR0LnNzb0N1c3RvbWVyTWFuYWdlZFBvbGljeVJlZmVyZW5jZXM/Lm1hcChmb3JtYXRNYW5hZ2VkUG9saWN5UmVmKS5qb2luKCdcXG4nKSB8fCAnJyxcbiAgICAgIF0ubWFwKHMgPT4gY2hhbGsucmVkKHMpKSk7XG4gICAgfVxuXG4gICAgLy8gU29ydCBieSByZXNvdXJjZSBuYW1lIHRvIGVuc3VyZSBhIHVuaXF1ZSB2YWx1ZSBpcyB1c2VkIGZvciBzb3J0aW5nXG4gICAgcmV0LnNvcnQobWFrZUNvbXBhcmF0b3IoKHJvdzogc3RyaW5nW10pID0+IFtyb3dbMV1dKSk7XG4gICAgcmV0LnNwbGljZSgwLCAwLCBoZWFkZXIpO1xuXG4gICAgcmV0dXJuIHJldDtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm4gYSBtYWNoaW5lLXJlYWRhYmxlIHZlcnNpb24gb2YgdGhlIGNoYW5nZXMuXG4gICAqIFRoaXMgaXMgb25seSB1c2VkIGluIHRlc3RzLlxuICAgKlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIHB1YmxpYyBfdG9Kc29uKCk6IElhbUNoYW5nZXNKc29uIHtcbiAgICByZXR1cm4gZGVlcFJlbW92ZVVuZGVmaW5lZCh7XG4gICAgICBzdGF0ZW1lbnRBZGRpdGlvbnM6IGRyb3BJZkVtcHR5KHRoaXMuc3RhdGVtZW50cy5hZGRpdGlvbnMubWFwKHMgPT4gcy5fdG9Kc29uKCkpKSxcbiAgICAgIHN0YXRlbWVudFJlbW92YWxzOiBkcm9wSWZFbXB0eSh0aGlzLnN0YXRlbWVudHMucmVtb3ZhbHMubWFwKHMgPT4gcy5fdG9Kc29uKCkpKSxcbiAgICAgIG1hbmFnZWRQb2xpY3lBZGRpdGlvbnM6IGRyb3BJZkVtcHR5KHRoaXMubWFuYWdlZFBvbGljaWVzLmFkZGl0aW9ucy5tYXAocyA9PiBzLl90b0pzb24oKSkpLFxuICAgICAgbWFuYWdlZFBvbGljeVJlbW92YWxzOiBkcm9wSWZFbXB0eSh0aGlzLm1hbmFnZWRQb2xpY2llcy5yZW1vdmFscy5tYXAocyA9PiBzLl90b0pzb24oKSkpLFxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSByZWFkUHJvcGVydHlDaGFuZ2UocHJvcGVydHlDaGFuZ2U6IFByb3BlcnR5Q2hhbmdlKSB7XG4gICAgc3dpdGNoIChwcm9wZXJ0eUNoYW5nZS5zY3J1dGlueVR5cGUpIHtcbiAgICAgIGNhc2UgUHJvcGVydHlTY3J1dGlueVR5cGUuSW5saW5lSWRlbnRpdHlQb2xpY2llczpcbiAgICAgICAgLy8gQVdTOjpJQU06OnsgUm9sZSB8IFVzZXIgfCBHcm91cCB9LlBvbGljaWVzXG4gICAgICAgIHRoaXMuc3RhdGVtZW50cy5hZGRPbGQoLi4udGhpcy5yZWFkSWRlbnRpdHlQb2xpY2llcyhwcm9wZXJ0eUNoYW5nZS5vbGRWYWx1ZSwgcHJvcGVydHlDaGFuZ2UucmVzb3VyY2VMb2dpY2FsSWQpKTtcbiAgICAgICAgdGhpcy5zdGF0ZW1lbnRzLmFkZE5ldyguLi50aGlzLnJlYWRJZGVudGl0eVBvbGljaWVzKHByb3BlcnR5Q2hhbmdlLm5ld1ZhbHVlLCBwcm9wZXJ0eUNoYW5nZS5yZXNvdXJjZUxvZ2ljYWxJZCkpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgUHJvcGVydHlTY3J1dGlueVR5cGUuSW5saW5lUmVzb3VyY2VQb2xpY3k6XG4gICAgICAgIC8vIEFueSBQb2xpY3lEb2N1bWVudCBvbiBhIHJlc291cmNlIChpbmNsdWRpbmcgQXNzdW1lUm9sZVBvbGljeURvY3VtZW50KVxuICAgICAgICB0aGlzLnN0YXRlbWVudHMuYWRkT2xkKC4uLnRoaXMucmVhZFJlc291cmNlU3RhdGVtZW50cyhwcm9wZXJ0eUNoYW5nZS5vbGRWYWx1ZSwgcHJvcGVydHlDaGFuZ2UucmVzb3VyY2VMb2dpY2FsSWQpKTtcbiAgICAgICAgdGhpcy5zdGF0ZW1lbnRzLmFkZE5ldyguLi50aGlzLnJlYWRSZXNvdXJjZVN0YXRlbWVudHMocHJvcGVydHlDaGFuZ2UubmV3VmFsdWUsIHByb3BlcnR5Q2hhbmdlLnJlc291cmNlTG9naWNhbElkKSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBQcm9wZXJ0eVNjcnV0aW55VHlwZS5NYW5hZ2VkUG9saWNpZXM6XG4gICAgICAgIC8vIEp1c3QgYSBsaXN0IG9mIG1hbmFnZWQgcG9saWNpZXNcbiAgICAgICAgdGhpcy5tYW5hZ2VkUG9saWNpZXMuYWRkT2xkKC4uLnRoaXMucmVhZE1hbmFnZWRQb2xpY2llcyhwcm9wZXJ0eUNoYW5nZS5vbGRWYWx1ZSwgcHJvcGVydHlDaGFuZ2UucmVzb3VyY2VMb2dpY2FsSWQpKTtcbiAgICAgICAgdGhpcy5tYW5hZ2VkUG9saWNpZXMuYWRkTmV3KC4uLnRoaXMucmVhZE1hbmFnZWRQb2xpY2llcyhwcm9wZXJ0eUNoYW5nZS5uZXdWYWx1ZSwgcHJvcGVydHlDaGFuZ2UucmVzb3VyY2VMb2dpY2FsSWQpKTtcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSByZWFkUmVzb3VyY2VDaGFuZ2UocmVzb3VyY2VDaGFuZ2U6IFJlc291cmNlQ2hhbmdlKSB7XG4gICAgc3dpdGNoIChyZXNvdXJjZUNoYW5nZS5zY3J1dGlueVR5cGUpIHtcbiAgICAgIGNhc2UgUmVzb3VyY2VTY3J1dGlueVR5cGUuSWRlbnRpdHlQb2xpY3lSZXNvdXJjZTpcbiAgICAgICAgLy8gQVdTOjpJQU06OlBvbGljeVxuICAgICAgICB0aGlzLnN0YXRlbWVudHMuYWRkT2xkKC4uLnRoaXMucmVhZElkZW50aXR5UG9saWN5UmVzb3VyY2UocmVzb3VyY2VDaGFuZ2Uub2xkUHJvcGVydGllcykpO1xuICAgICAgICB0aGlzLnN0YXRlbWVudHMuYWRkTmV3KC4uLnRoaXMucmVhZElkZW50aXR5UG9saWN5UmVzb3VyY2UocmVzb3VyY2VDaGFuZ2UubmV3UHJvcGVydGllcykpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgUmVzb3VyY2VTY3J1dGlueVR5cGUuUmVzb3VyY2VQb2xpY3lSZXNvdXJjZTpcbiAgICAgICAgLy8gQVdTOjoqOjp7QnVja2V0LFF1ZXVlLFRvcGljfVBvbGljeVxuICAgICAgICB0aGlzLnN0YXRlbWVudHMuYWRkT2xkKC4uLnRoaXMucmVhZFJlc291cmNlUG9saWN5UmVzb3VyY2UocmVzb3VyY2VDaGFuZ2Uub2xkUHJvcGVydGllcykpO1xuICAgICAgICB0aGlzLnN0YXRlbWVudHMuYWRkTmV3KC4uLnRoaXMucmVhZFJlc291cmNlUG9saWN5UmVzb3VyY2UocmVzb3VyY2VDaGFuZ2UubmV3UHJvcGVydGllcykpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgUmVzb3VyY2VTY3J1dGlueVR5cGUuTGFtYmRhUGVybWlzc2lvbjpcbiAgICAgICAgdGhpcy5zdGF0ZW1lbnRzLmFkZE9sZCguLi50aGlzLnJlYWRMYW1iZGFTdGF0ZW1lbnRzKHJlc291cmNlQ2hhbmdlLm9sZFByb3BlcnRpZXMpKTtcbiAgICAgICAgdGhpcy5zdGF0ZW1lbnRzLmFkZE5ldyguLi50aGlzLnJlYWRMYW1iZGFTdGF0ZW1lbnRzKHJlc291cmNlQ2hhbmdlLm5ld1Byb3BlcnRpZXMpKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFJlc291cmNlU2NydXRpbnlUeXBlLlNzb1Blcm1pc3Npb25TZXQ6XG4gICAgICAgIHRoaXMuc3NvUGVybWlzc2lvblNldHMuYWRkT2xkKC4uLnRoaXMucmVhZFNzb1Blcm1pc3Npb25TZXQocmVzb3VyY2VDaGFuZ2Uub2xkUHJvcGVydGllcywgcmVzb3VyY2VDaGFuZ2UucmVzb3VyY2VMb2dpY2FsSWQpKTtcbiAgICAgICAgdGhpcy5zc29QZXJtaXNzaW9uU2V0cy5hZGROZXcoLi4udGhpcy5yZWFkU3NvUGVybWlzc2lvblNldChyZXNvdXJjZUNoYW5nZS5uZXdQcm9wZXJ0aWVzLCByZXNvdXJjZUNoYW5nZS5yZXNvdXJjZUxvZ2ljYWxJZCkpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgUmVzb3VyY2VTY3J1dGlueVR5cGUuU3NvQXNzaWdubWVudFJlc291cmNlOlxuICAgICAgICB0aGlzLnNzb0Fzc2lnbm1lbnRzLmFkZE9sZCguLi50aGlzLnJlYWRTc29Bc3NpZ25tZW50cyhyZXNvdXJjZUNoYW5nZS5vbGRQcm9wZXJ0aWVzLCByZXNvdXJjZUNoYW5nZS5yZXNvdXJjZUxvZ2ljYWxJZCkpO1xuICAgICAgICB0aGlzLnNzb0Fzc2lnbm1lbnRzLmFkZE5ldyguLi50aGlzLnJlYWRTc29Bc3NpZ25tZW50cyhyZXNvdXJjZUNoYW5nZS5uZXdQcm9wZXJ0aWVzLCByZXNvdXJjZUNoYW5nZS5yZXNvdXJjZUxvZ2ljYWxJZCkpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgUmVzb3VyY2VTY3J1dGlueVR5cGUuU3NvSW5zdGFuY2VBQ0FDb25maWdSZXNvdXJjZTpcbiAgICAgICAgdGhpcy5zc29JbnN0YW5jZUFDQUNvbmZpZ3MuYWRkT2xkKC4uLnRoaXMucmVhZFNzb0luc3RhbmNlQUNBQ29uZmlncyhyZXNvdXJjZUNoYW5nZS5vbGRQcm9wZXJ0aWVzLCByZXNvdXJjZUNoYW5nZS5yZXNvdXJjZUxvZ2ljYWxJZCkpO1xuICAgICAgICB0aGlzLnNzb0luc3RhbmNlQUNBQ29uZmlncy5hZGROZXcoLi4udGhpcy5yZWFkU3NvSW5zdGFuY2VBQ0FDb25maWdzKHJlc291cmNlQ2hhbmdlLm5ld1Byb3BlcnRpZXMsIHJlc291cmNlQ2hhbmdlLnJlc291cmNlTG9naWNhbElkKSk7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBQYXJzZSBhIGxpc3Qgb2YgcG9saWNpZXMgb24gYW4gaWRlbnRpdHlcbiAgICovXG4gIHByaXZhdGUgcmVhZElkZW50aXR5UG9saWNpZXMocG9saWNpZXM6IGFueSwgbG9naWNhbElkOiBzdHJpbmcpOiBTdGF0ZW1lbnRbXSB7XG4gICAgaWYgKHBvbGljaWVzID09PSB1bmRlZmluZWQgfHwgIUFycmF5LmlzQXJyYXkocG9saWNpZXMpKSB7IHJldHVybiBbXTsgfVxuXG4gICAgY29uc3QgYXBwbGllc1RvUHJpbmNpcGFsID0gJ0FXUzokeycgKyBsb2dpY2FsSWQgKyAnfSc7XG5cbiAgICByZXR1cm4gZmxhdE1hcChwb2xpY2llcywgKHBvbGljeTogYW55KSA9PiB7XG4gICAgICAvLyBjaGVjayBpZiB0aGUgUG9saWN5IGl0c2VsZiBpcyBub3QgYW4gaW50cmluc2ljLCBsaWtlIGFuIEZuOjpJZlxuICAgICAgY29uc3QgdW5wYXJzZWRTdGF0ZW1lbnQgPSBwb2xpY3kuUG9saWN5RG9jdW1lbnQ/LlN0YXRlbWVudFxuICAgICAgICA/IHBvbGljeS5Qb2xpY3lEb2N1bWVudC5TdGF0ZW1lbnRcbiAgICAgICAgOiBwb2xpY3k7XG4gICAgICByZXR1cm4gZGVmYXVsdFByaW5jaXBhbChhcHBsaWVzVG9QcmluY2lwYWwsIHBhcnNlU3RhdGVtZW50cyhyZW5kZXJJbnRyaW5zaWNzKHVucGFyc2VkU3RhdGVtZW50KSkpO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFBhcnNlIGFuIElBTTo6UG9saWN5IHJlc291cmNlXG4gICAqL1xuICBwcml2YXRlIHJlYWRJZGVudGl0eVBvbGljeVJlc291cmNlKHByb3BlcnRpZXM6IGFueSk6IFN0YXRlbWVudFtdIHtcbiAgICBpZiAocHJvcGVydGllcyA9PT0gdW5kZWZpbmVkKSB7IHJldHVybiBbXTsgfVxuXG4gICAgcHJvcGVydGllcyA9IHJlbmRlckludHJpbnNpY3MocHJvcGVydGllcyk7XG5cbiAgICBjb25zdCBwcmluY2lwYWxzID0gKHByb3BlcnRpZXMuR3JvdXBzIHx8IFtdKS5jb25jYXQocHJvcGVydGllcy5Vc2VycyB8fCBbXSkuY29uY2F0KHByb3BlcnRpZXMuUm9sZXMgfHwgW10pO1xuICAgIHJldHVybiBmbGF0TWFwKHByaW5jaXBhbHMsIChwcmluY2lwYWw6IHN0cmluZykgPT4ge1xuICAgICAgY29uc3QgcmVmID0gJ0FXUzonICsgcHJpbmNpcGFsO1xuICAgICAgcmV0dXJuIGRlZmF1bHRQcmluY2lwYWwocmVmLCBwYXJzZVN0YXRlbWVudHMocHJvcGVydGllcy5Qb2xpY3lEb2N1bWVudC5TdGF0ZW1lbnQpKTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgcmVhZFNzb0luc3RhbmNlQUNBQ29uZmlncyhwcm9wZXJ0aWVzOiBhbnksIGxvZ2ljYWxJZDogc3RyaW5nKTogU3NvSW5zdGFuY2VBQ0FDb25maWdbXSB7XG4gICAgaWYgKHByb3BlcnRpZXMgPT09IHVuZGVmaW5lZCkgeyByZXR1cm4gW107IH1cblxuICAgIHByb3BlcnRpZXMgPSByZW5kZXJJbnRyaW5zaWNzKHByb3BlcnRpZXMpO1xuXG4gICAgcmV0dXJuIFtuZXcgU3NvSW5zdGFuY2VBQ0FDb25maWcoe1xuICAgICAgY2ZuTG9naWNhbElkOiAnJHsnICsgbG9naWNhbElkICsgJ30nLFxuICAgICAgc3NvSW5zdGFuY2VBcm46IHByb3BlcnRpZXMuSW5zdGFuY2VBcm4sXG4gICAgICBhY2Nlc3NDb250cm9sQXR0cmlidXRlczogcHJvcGVydGllcy5BY2Nlc3NDb250cm9sQXR0cmlidXRlcyxcbiAgICB9KV07XG4gIH1cblxuICBwcml2YXRlIHJlYWRTc29Bc3NpZ25tZW50cyhwcm9wZXJ0aWVzOiBhbnksIGxvZ2ljYWxJZDogc3RyaW5nKTogU3NvQXNzaWdubWVudFtdIHtcbiAgICBpZiAocHJvcGVydGllcyA9PT0gdW5kZWZpbmVkKSB7IHJldHVybiBbXTsgfVxuXG4gICAgcHJvcGVydGllcyA9IHJlbmRlckludHJpbnNpY3MocHJvcGVydGllcyk7XG5cbiAgICByZXR1cm4gW25ldyBTc29Bc3NpZ25tZW50KHtcbiAgICAgIGNmbkxvZ2ljYWxJZDogJyR7JyArIGxvZ2ljYWxJZCArICd9JyxcbiAgICAgIHNzb0luc3RhbmNlQXJuOiBwcm9wZXJ0aWVzLkluc3RhbmNlQXJuLFxuICAgICAgcGVybWlzc2lvblNldEFybjogcHJvcGVydGllcy5QZXJtaXNzaW9uU2V0QXJuLFxuICAgICAgcHJpbmNpcGFsSWQ6IHByb3BlcnRpZXMuUHJpbmNpcGFsSWQsXG4gICAgICBwcmluY2lwYWxUeXBlOiBwcm9wZXJ0aWVzLlByaW5jaXBhbFR5cGUsXG4gICAgICB0YXJnZXRJZDogcHJvcGVydGllcy5UYXJnZXRJZCxcbiAgICAgIHRhcmdldFR5cGU6IHByb3BlcnRpZXMuVGFyZ2V0VHlwZSxcbiAgICB9KV07XG4gIH1cblxuICBwcml2YXRlIHJlYWRTc29QZXJtaXNzaW9uU2V0KHByb3BlcnRpZXM6IGFueSwgbG9naWNhbElkOiBzdHJpbmcpOiBTc29QZXJtaXNzaW9uU2V0W10ge1xuICAgIGlmIChwcm9wZXJ0aWVzID09PSB1bmRlZmluZWQpIHsgcmV0dXJuIFtdOyB9XG5cbiAgICBwcm9wZXJ0aWVzID0gcmVuZGVySW50cmluc2ljcyhwcm9wZXJ0aWVzKTtcblxuICAgIHJldHVybiBbbmV3IFNzb1Blcm1pc3Npb25TZXQoe1xuICAgICAgY2ZuTG9naWNhbElkOiAnJHsnICsgbG9naWNhbElkICsgJ30nLFxuICAgICAgbmFtZTogcHJvcGVydGllcy5OYW1lLFxuICAgICAgc3NvSW5zdGFuY2VBcm46IHByb3BlcnRpZXMuSW5zdGFuY2VBcm4sXG4gICAgICBzc29DdXN0b21lck1hbmFnZWRQb2xpY3lSZWZlcmVuY2VzOiBwcm9wZXJ0aWVzLkN1c3RvbWVyTWFuYWdlZFBvbGljeVJlZmVyZW5jZXMsXG4gICAgICBzc29QZXJtaXNzaW9uc0JvdW5kYXJ5OiBwcm9wZXJ0aWVzLlBlcm1pc3Npb25zQm91bmRhcnksXG4gICAgfSldO1xuICB9XG5cbiAgcHJpdmF0ZSByZWFkUmVzb3VyY2VTdGF0ZW1lbnRzKHBvbGljeTogYW55LCBsb2dpY2FsSWQ6IHN0cmluZyk6IFN0YXRlbWVudFtdIHtcbiAgICBpZiAocG9saWN5ID09PSB1bmRlZmluZWQpIHsgcmV0dXJuIFtdOyB9XG5cbiAgICBjb25zdCBhcHBsaWVzVG9SZXNvdXJjZSA9ICckeycgKyBsb2dpY2FsSWQgKyAnLkFybn0nO1xuICAgIHJldHVybiBkZWZhdWx0UmVzb3VyY2UoYXBwbGllc1RvUmVzb3VyY2UsIHBhcnNlU3RhdGVtZW50cyhyZW5kZXJJbnRyaW5zaWNzKHBvbGljeS5TdGF0ZW1lbnQpKSk7XG4gIH1cblxuICAvKipcbiAgICogUGFyc2UgYW4gQVdTOjoqOjp7QnVja2V0LFRvcGljLFF1ZXVlfXBvbGljeVxuICAgKi9cbiAgcHJpdmF0ZSByZWFkUmVzb3VyY2VQb2xpY3lSZXNvdXJjZShwcm9wZXJ0aWVzOiBhbnkpOiBTdGF0ZW1lbnRbXSB7XG4gICAgaWYgKHByb3BlcnRpZXMgPT09IHVuZGVmaW5lZCkgeyByZXR1cm4gW107IH1cblxuICAgIHByb3BlcnRpZXMgPSByZW5kZXJJbnRyaW5zaWNzKHByb3BlcnRpZXMpO1xuXG4gICAgY29uc3QgcG9saWN5S2V5cyA9IE9iamVjdC5rZXlzKHByb3BlcnRpZXMpLmZpbHRlcihrZXkgPT4ga2V5LmluZGV4T2YoJ1BvbGljeScpID4gLTEpO1xuXG4gICAgLy8gRmluZCB0aGUga2V5IHRoYXQgaWRlbnRpZmllcyB0aGUgcmVzb3VyY2UocykgdGhpcyBwb2xpY3kgYXBwbGllcyB0b1xuICAgIGNvbnN0IHJlc291cmNlS2V5cyA9IE9iamVjdC5rZXlzKHByb3BlcnRpZXMpLmZpbHRlcihrZXkgPT4gIXBvbGljeUtleXMuaW5jbHVkZXMoa2V5KSAmJiAha2V5LmVuZHNXaXRoKCdOYW1lJykpO1xuICAgIGxldCByZXNvdXJjZXMgPSByZXNvdXJjZUtleXMubGVuZ3RoID09PSAxID8gcHJvcGVydGllc1tyZXNvdXJjZUtleXNbMF1dIDogWyc/Pz8nXTtcblxuICAgIC8vIEZvciBzb21lIHJlc291cmNlcywgdGhpcyBpcyBhIHNpbmdsZXRvbiBzdHJpbmcsIGZvciBzb21lIGl0J3MgYW4gYXJyYXlcbiAgICBpZiAoIUFycmF5LmlzQXJyYXkocmVzb3VyY2VzKSkge1xuICAgICAgcmVzb3VyY2VzID0gW3Jlc291cmNlc107XG4gICAgfVxuXG4gICAgcmV0dXJuIGZsYXRNYXAocmVzb3VyY2VzLCAocmVzb3VyY2U6IHN0cmluZykgPT4ge1xuICAgICAgcmV0dXJuIGRlZmF1bHRSZXNvdXJjZShyZXNvdXJjZSwgcGFyc2VTdGF0ZW1lbnRzKHByb3BlcnRpZXNbcG9saWN5S2V5c1swXV0uU3RhdGVtZW50KSk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHJlYWRNYW5hZ2VkUG9saWNpZXMocG9saWN5QXJuczogYW55LCBsb2dpY2FsSWQ6IHN0cmluZyk6IE1hbmFnZWRQb2xpY3lBdHRhY2htZW50W10ge1xuICAgIGlmICghcG9saWN5QXJucykgeyByZXR1cm4gW107IH1cblxuICAgIGNvbnN0IHJlcCA9ICckeycgKyBsb2dpY2FsSWQgKyAnfSc7XG4gICAgcmV0dXJuIE1hbmFnZWRQb2xpY3lBdHRhY2htZW50LnBhcnNlTWFuYWdlZFBvbGljaWVzKHJlcCwgcmVuZGVySW50cmluc2ljcyhwb2xpY3lBcm5zKSk7XG4gIH1cblxuICBwcml2YXRlIHJlYWRMYW1iZGFTdGF0ZW1lbnRzKHByb3BlcnRpZXM/OiBQcm9wZXJ0eU1hcCk6IFN0YXRlbWVudFtdIHtcbiAgICBpZiAoIXByb3BlcnRpZXMpIHsgcmV0dXJuIFtdOyB9XG5cbiAgICByZXR1cm4gW3BhcnNlTGFtYmRhUGVybWlzc2lvbihyZW5kZXJJbnRyaW5zaWNzKHByb3BlcnRpZXMpKV07XG4gIH1cbn1cblxuLyoqXG4gKiBTZXQgYW4gdW5kZWZpbmVkIG9yIHdpbGRjYXJkZWQgcHJpbmNpcGFsIG9uIHRoZXNlIHN0YXRlbWVudHNcbiAqL1xuZnVuY3Rpb24gZGVmYXVsdFByaW5jaXBhbChwcmluY2lwYWw6IHN0cmluZywgc3RhdGVtZW50czogU3RhdGVtZW50W10pIHtcbiAgc3RhdGVtZW50cy5mb3JFYWNoKHMgPT4gcy5wcmluY2lwYWxzLnJlcGxhY2VFbXB0eShwcmluY2lwYWwpKTtcbiAgc3RhdGVtZW50cy5mb3JFYWNoKHMgPT4gcy5wcmluY2lwYWxzLnJlcGxhY2VTdGFyKHByaW5jaXBhbCkpO1xuICByZXR1cm4gc3RhdGVtZW50cztcbn1cblxuLyoqXG4gKiBTZXQgYW4gdW5kZWZpbmVkIG9yIHdpbGRjYXJkZWQgcmVzb3VyY2Ugb24gdGhlc2Ugc3RhdGVtZW50c1xuICovXG5mdW5jdGlvbiBkZWZhdWx0UmVzb3VyY2UocmVzb3VyY2U6IHN0cmluZywgc3RhdGVtZW50czogU3RhdGVtZW50W10pIHtcbiAgc3RhdGVtZW50cy5mb3JFYWNoKHMgPT4gcy5yZXNvdXJjZXMucmVwbGFjZUVtcHR5KHJlc291cmNlKSk7XG4gIHN0YXRlbWVudHMuZm9yRWFjaChzID0+IHMucmVzb3VyY2VzLnJlcGxhY2VTdGFyKHJlc291cmNlKSk7XG4gIHJldHVybiBzdGF0ZW1lbnRzO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElhbUNoYW5nZXNKc29uIHtcbiAgc3RhdGVtZW50QWRkaXRpb25zPzogQXJyYXk8TWF5YmVQYXJzZWQ8U3RhdGVtZW50SnNvbj4+O1xuICBzdGF0ZW1lbnRSZW1vdmFscz86IEFycmF5PE1heWJlUGFyc2VkPFN0YXRlbWVudEpzb24+PjtcbiAgbWFuYWdlZFBvbGljeUFkZGl0aW9ucz86IEFycmF5PE1heWJlUGFyc2VkPE1hbmFnZWRQb2xpY3lKc29uPj47XG4gIG1hbmFnZWRQb2xpY3lSZW1vdmFscz86IEFycmF5PE1heWJlUGFyc2VkPE1hbmFnZWRQb2xpY3lKc29uPj47XG59XG4iXX0=","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.SsoInstanceACAConfig = exports.SsoAssignment = exports.SsoPermissionSet = void 0;\n// namespace object imports won't work in the bundle for function exports\n// eslint-disable-next-line @typescript-eslint/no-require-imports\nconst deepEqual = require('fast-deep-equal');\nclass SsoPermissionSet {\n constructor(props) {\n this.cfnLogicalId = props.cfnLogicalId;\n this.name = props.name;\n this.ssoInstanceArn = props.ssoInstanceArn;\n this.ssoPermissionsBoundary = props.ssoPermissionsBoundary;\n this.ssoCustomerManagedPolicyReferences = props.ssoCustomerManagedPolicyReferences;\n }\n equal(other) {\n return deepEqual(this, other);\n }\n}\nexports.SsoPermissionSet = SsoPermissionSet;\nclass SsoAssignment {\n constructor(props) {\n this.cfnLogicalId = props.cfnLogicalId;\n this.ssoInstanceArn = props.ssoInstanceArn;\n this.permissionSetArn = props.permissionSetArn;\n this.principalId = props.principalId;\n this.principalType = props.principalType;\n this.targetId = props.targetId;\n this.targetType = props.targetType;\n }\n equal(other) {\n return deepEqual(this, other);\n }\n}\nexports.SsoAssignment = SsoAssignment;\nclass SsoInstanceACAConfig {\n constructor(props) {\n this.cfnLogicalId = props.cfnLogicalId;\n this.ssoInstanceArn = props.ssoInstanceArn;\n this.accessControlAttributes = props.accessControlAttributes;\n }\n equal(other) {\n return deepEqual(this, other);\n }\n}\nexports.SsoInstanceACAConfig = SsoInstanceACAConfig;\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWFtLWlkZW50aXR5LWNlbnRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImlhbS1pZGVudGl0eS1jZW50ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEseUVBQXlFO0FBQ3pFLGlFQUFpRTtBQUNqRSxNQUFNLFNBQVMsR0FBRyxPQUFPLENBQUMsaUJBQWlCLENBQUMsQ0FBQztBQXdCN0MsTUFBYSxnQkFBZ0I7SUFPM0IsWUFBWSxLQUE4QjtRQUN4QyxJQUFJLENBQUMsWUFBWSxHQUFHLEtBQUssQ0FBQyxZQUFZLENBQUM7UUFDdkMsSUFBSSxDQUFDLElBQUksR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxjQUFjLEdBQUcsS0FBSyxDQUFDLGNBQWMsQ0FBQztRQUMzQyxJQUFJLENBQUMsc0JBQXNCLEdBQUcsS0FBSyxDQUFDLHNCQUFzQixDQUFDO1FBQzNELElBQUksQ0FBQyxrQ0FBa0MsR0FBRyxLQUFLLENBQUMsa0NBQWtDLENBQUM7SUFDckYsQ0FBQztJQUVNLEtBQUssQ0FBQyxLQUF1QjtRQUNsQyxPQUFPLFNBQVMsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDaEMsQ0FBQztDQUNGO0FBbEJELDRDQWtCQztBQWNELE1BQWEsYUFBYTtJQVN4QixZQUFZLEtBQTJCO1FBQ3JDLElBQUksQ0FBQyxZQUFZLEdBQUcsS0FBSyxDQUFDLFlBQVksQ0FBQztRQUN2QyxJQUFJLENBQUMsY0FBYyxHQUFHLEtBQUssQ0FBQyxjQUFjLENBQUM7UUFDM0MsSUFBSSxDQUFDLGdCQUFnQixHQUFHLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQztRQUMvQyxJQUFJLENBQUMsV0FBVyxHQUFHLEtBQUssQ0FBQyxXQUFXLENBQUM7UUFDckMsSUFBSSxDQUFDLGFBQWEsR0FBRyxLQUFLLENBQUMsYUFBYSxDQUFDO1FBQ3pDLElBQUksQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDLFFBQVEsQ0FBQztRQUMvQixJQUFJLENBQUMsVUFBVSxHQUFHLEtBQUssQ0FBQyxVQUFVLENBQUM7SUFDckMsQ0FBQztJQUVNLEtBQUssQ0FBQyxLQUFvQjtRQUMvQixPQUFPLFNBQVMsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDaEMsQ0FBQztDQUNGO0FBdEJELHNDQXNCQztBQXNCRCxNQUFhLG9CQUFvQjtJQUsvQixZQUFZLEtBQWtDO1FBQzVDLElBQUksQ0FBQyxZQUFZLEdBQUcsS0FBSyxDQUFDLFlBQVksQ0FBQztRQUN2QyxJQUFJLENBQUMsY0FBYyxHQUFHLEtBQUssQ0FBQyxjQUFjLENBQUM7UUFDM0MsSUFBSSxDQUFDLHVCQUF1QixHQUFHLEtBQUssQ0FBQyx1QkFBdUIsQ0FBQztJQUMvRCxDQUFDO0lBRU0sS0FBSyxDQUFDLEtBQTJCO1FBQ3RDLE9BQU8sU0FBUyxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztJQUNoQyxDQUFDO0NBQ0Y7QUFkRCxvREFjQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIG5hbWVzcGFjZSBvYmplY3QgaW1wb3J0cyB3b24ndCB3b3JrIGluIHRoZSBidW5kbGUgZm9yIGZ1bmN0aW9uIGV4cG9ydHNcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tcmVxdWlyZS1pbXBvcnRzXG5jb25zdCBkZWVwRXF1YWwgPSByZXF1aXJlKCdmYXN0LWRlZXAtZXF1YWwnKTtcblxuLyoqXG4gKiBUaGlzIG5hbWVzcGFjZSBzaG91bGQgYmUgYSBzdWJzZXQgb2YgdGhlIEwxIENmblBlcm1pc3Npb25TZXQsIG90aGVyIHRoYW5cbiAqIGNhcGl0YWxpemF0aW9uLCBzaW5jZSB0aGUgdmFsdWVzIGNvbWUgZnJvbSBmcm9tIGEgcGFyc2VkIENGTiB0ZW1wbGF0ZS5cbiAqL1xuZXhwb3J0IG5hbWVzcGFjZSBJU3NvUGVybWlzc2lvblNldCB7XG4gIGV4cG9ydCBpbnRlcmZhY2UgUHJvcHMge1xuICAgIHJlYWRvbmx5IG5hbWU6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICByZWFkb25seSBjZm5Mb2dpY2FsSWQ6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICByZWFkb25seSBzc29JbnN0YW5jZUFybjogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgIHJlYWRvbmx5IHNzb1Blcm1pc3Npb25zQm91bmRhcnk6IElTc29QZXJtaXNzaW9uU2V0LlBlcm1pc3Npb25zQm91bmRhcnkgfCB1bmRlZmluZWQ7XG4gICAgcmVhZG9ubHkgc3NvQ3VzdG9tZXJNYW5hZ2VkUG9saWN5UmVmZXJlbmNlczogSVNzb1Blcm1pc3Npb25TZXQuQ3VzdG9tZXJNYW5hZ2VkUG9saWN5UmVmZXJlbmNlW10gfCB1bmRlZmluZWQ7XG4gIH1cbiAgZXhwb3J0IGludGVyZmFjZSBQZXJtaXNzaW9uc0JvdW5kYXJ5IHtcbiAgICByZWFkb25seSBDdXN0b21lck1hbmFnZWRQb2xpY3lSZWZlcmVuY2U/OiBDdXN0b21lck1hbmFnZWRQb2xpY3lSZWZlcmVuY2U7XG4gICAgcmVhZG9ubHkgTWFuYWdlZFBvbGljeUFybj86IHN0cmluZztcbiAgfVxuICBleHBvcnQgaW50ZXJmYWNlIEN1c3RvbWVyTWFuYWdlZFBvbGljeVJlZmVyZW5jZSB7XG4gICAgcmVhZG9ubHkgTmFtZTogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgIHJlYWRvbmx5IFBhdGg6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgU3NvUGVybWlzc2lvblNldCBpbXBsZW1lbnRzIElTc29QZXJtaXNzaW9uU2V0LlByb3BzIHtcbiAgcHVibGljIHJlYWRvbmx5IG5hbWU6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgcHVibGljIHJlYWRvbmx5IGNmbkxvZ2ljYWxJZDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICBwdWJsaWMgcmVhZG9ubHkgc3NvSW5zdGFuY2VBcm46IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgcHVibGljIHJlYWRvbmx5IHNzb1Blcm1pc3Npb25zQm91bmRhcnk6IElTc29QZXJtaXNzaW9uU2V0LlBlcm1pc3Npb25zQm91bmRhcnkgfCB1bmRlZmluZWQ7XG4gIHB1YmxpYyByZWFkb25seSBzc29DdXN0b21lck1hbmFnZWRQb2xpY3lSZWZlcmVuY2VzOiBJU3NvUGVybWlzc2lvblNldC5DdXN0b21lck1hbmFnZWRQb2xpY3lSZWZlcmVuY2VbXSB8IHVuZGVmaW5lZDtcblxuICBjb25zdHJ1Y3Rvcihwcm9wczogSVNzb1Blcm1pc3Npb25TZXQuUHJvcHMpIHtcbiAgICB0aGlzLmNmbkxvZ2ljYWxJZCA9IHByb3BzLmNmbkxvZ2ljYWxJZDtcbiAgICB0aGlzLm5hbWUgPSBwcm9wcy5uYW1lO1xuICAgIHRoaXMuc3NvSW5zdGFuY2VBcm4gPSBwcm9wcy5zc29JbnN0YW5jZUFybjtcbiAgICB0aGlzLnNzb1Blcm1pc3Npb25zQm91bmRhcnkgPSBwcm9wcy5zc29QZXJtaXNzaW9uc0JvdW5kYXJ5O1xuICAgIHRoaXMuc3NvQ3VzdG9tZXJNYW5hZ2VkUG9saWN5UmVmZXJlbmNlcyA9IHByb3BzLnNzb0N1c3RvbWVyTWFuYWdlZFBvbGljeVJlZmVyZW5jZXM7XG4gIH1cblxuICBwdWJsaWMgZXF1YWwob3RoZXI6IFNzb1Blcm1pc3Npb25TZXQpOiBib29sZWFuIHtcbiAgICByZXR1cm4gZGVlcEVxdWFsKHRoaXMsIG90aGVyKTtcbiAgfVxufVxuXG5leHBvcnQgbmFtZXNwYWNlIElTc29Bc3NpZ25tZW50IHtcbiAgZXhwb3J0IGludGVyZmFjZSBQcm9wcyB7XG4gICAgcmVhZG9ubHkgc3NvSW5zdGFuY2VBcm46IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICByZWFkb25seSBjZm5Mb2dpY2FsSWQ6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICByZWFkb25seSBwZXJtaXNzaW9uU2V0QXJuOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgcmVhZG9ubHkgcHJpbmNpcGFsSWQ6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICByZWFkb25seSBwcmluY2lwYWxUeXBlOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgcmVhZG9ubHkgdGFyZ2V0SWQ6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICByZWFkb25seSB0YXJnZXRUeXBlOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIFNzb0Fzc2lnbm1lbnQgaW1wbGVtZW50cyBJU3NvQXNzaWdubWVudC5Qcm9wcyB7XG4gIHB1YmxpYyByZWFkb25seSBjZm5Mb2dpY2FsSWQ6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgcHVibGljIHJlYWRvbmx5IHNzb0luc3RhbmNlQXJuOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIHB1YmxpYyByZWFkb25seSBwZXJtaXNzaW9uU2V0QXJuOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIHB1YmxpYyByZWFkb25seSBwcmluY2lwYWxJZDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICBwdWJsaWMgcmVhZG9ubHkgcHJpbmNpcGFsVHlwZTogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICBwdWJsaWMgcmVhZG9ubHkgdGFyZ2V0SWQ6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgcHVibGljIHJlYWRvbmx5IHRhcmdldFR5cGU6IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICBjb25zdHJ1Y3Rvcihwcm9wczogSVNzb0Fzc2lnbm1lbnQuUHJvcHMpIHtcbiAgICB0aGlzLmNmbkxvZ2ljYWxJZCA9IHByb3BzLmNmbkxvZ2ljYWxJZDtcbiAgICB0aGlzLnNzb0luc3RhbmNlQXJuID0gcHJvcHMuc3NvSW5zdGFuY2VBcm47XG4gICAgdGhpcy5wZXJtaXNzaW9uU2V0QXJuID0gcHJvcHMucGVybWlzc2lvblNldEFybjtcbiAgICB0aGlzLnByaW5jaXBhbElkID0gcHJvcHMucHJpbmNpcGFsSWQ7XG4gICAgdGhpcy5wcmluY2lwYWxUeXBlID0gcHJvcHMucHJpbmNpcGFsVHlwZTtcbiAgICB0aGlzLnRhcmdldElkID0gcHJvcHMudGFyZ2V0SWQ7XG4gICAgdGhpcy50YXJnZXRUeXBlID0gcHJvcHMudGFyZ2V0VHlwZTtcbiAgfVxuXG4gIHB1YmxpYyBlcXVhbChvdGhlcjogU3NvQXNzaWdubWVudCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBkZWVwRXF1YWwodGhpcywgb3RoZXIpO1xuICB9XG59XG5cbi8qKlxuICogQVdTOjpTU086Okluc3RhbmNlQWNjZXNzQ29udHJvbEF0dHJpYnV0ZUNvbmZpZ3VyYXRpb25cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJU3NvSW5zdGFuY2VBQ0FDb25maWdQcm9wcyB7XG4gIHNzb0luc3RhbmNlQXJuOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBuYW1lc3BhY2UgSVNzb0luc3RhbmNlQUNBQ29uZmlnIHtcbiAgZXhwb3J0IHR5cGUgQWNjZXNzQ29udHJvbEF0dHJpYnV0ZSA9IHtcbiAgICBLZXk6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICBWYWx1ZTogeyBTb3VyY2U6IHN0cmluZ1tdIH0gfCB1bmRlZmluZWQ7XG4gIH0gfCB1bmRlZmluZWQ7XG5cbiAgZXhwb3J0IGludGVyZmFjZSBQcm9wcyB7XG4gICAgcmVhZG9ubHkgc3NvSW5zdGFuY2VBcm46IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICByZWFkb25seSBjZm5Mb2dpY2FsSWQ6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICByZWFkb25seSBhY2Nlc3NDb250cm9sQXR0cmlidXRlcz86IEFjY2Vzc0NvbnRyb2xBdHRyaWJ1dGVbXSB8IHVuZGVmaW5lZDtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgU3NvSW5zdGFuY2VBQ0FDb25maWcgaW1wbGVtZW50cyBJU3NvSW5zdGFuY2VBQ0FDb25maWcuUHJvcHMge1xuICBwdWJsaWMgcmVhZG9ubHkgY2ZuTG9naWNhbElkOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIHB1YmxpYyByZWFkb25seSBzc29JbnN0YW5jZUFybjogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICBwdWJsaWMgcmVhZG9ubHkgYWNjZXNzQ29udHJvbEF0dHJpYnV0ZXM/OiBJU3NvSW5zdGFuY2VBQ0FDb25maWcuQWNjZXNzQ29udHJvbEF0dHJpYnV0ZVtdIHwgdW5kZWZpbmVkO1xuXG4gIGNvbnN0cnVjdG9yKHByb3BzOiBJU3NvSW5zdGFuY2VBQ0FDb25maWcuUHJvcHMpIHtcbiAgICB0aGlzLmNmbkxvZ2ljYWxJZCA9IHByb3BzLmNmbkxvZ2ljYWxJZDtcbiAgICB0aGlzLnNzb0luc3RhbmNlQXJuID0gcHJvcHMuc3NvSW5zdGFuY2VBcm47XG4gICAgdGhpcy5hY2Nlc3NDb250cm9sQXR0cmlidXRlcyA9IHByb3BzLmFjY2Vzc0NvbnRyb2xBdHRyaWJ1dGVzO1xuICB9XG5cbiAgcHVibGljIGVxdWFsKG90aGVyOiBTc29JbnN0YW5jZUFDQUNvbmZpZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBkZWVwRXF1YWwodGhpcywgb3RoZXIpO1xuICB9XG59XG4iXX0=","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ManagedPolicyAttachment = void 0;\nconst maybe_parsed_1 = require(\"../diff/maybe-parsed\");\nclass ManagedPolicyAttachment {\n static parseManagedPolicies(identityArn, arns) {\n return typeof arns === 'string'\n ? [new ManagedPolicyAttachment(identityArn, arns)]\n : arns.map((arn) => new ManagedPolicyAttachment(identityArn, arn));\n }\n constructor(identityArn, managedPolicyArn) {\n this.identityArn = identityArn;\n this.managedPolicyArn = managedPolicyArn;\n }\n equal(other) {\n return this.identityArn === other.identityArn\n && this.managedPolicyArn === other.managedPolicyArn;\n }\n /**\n * Return a machine-readable version of the changes.\n * This is only used in tests.\n *\n * @internal\n */\n _toJson() {\n return (0, maybe_parsed_1.mkParsed)({\n identityArn: this.identityArn,\n managedPolicyArn: this.managedPolicyArn,\n });\n }\n}\nexports.ManagedPolicyAttachment = ManagedPolicyAttachment;\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFuYWdlZC1wb2xpY3kuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJtYW5hZ2VkLXBvbGljeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSx1REFBNkQ7QUFFN0QsTUFBYSx1QkFBdUI7SUFDM0IsTUFBTSxDQUFDLG9CQUFvQixDQUFDLFdBQW1CLEVBQUUsSUFBdUI7UUFDN0UsT0FBTyxPQUFPLElBQUksS0FBSyxRQUFRO1lBQzdCLENBQUMsQ0FBQyxDQUFDLElBQUksdUJBQXVCLENBQUMsV0FBVyxFQUFFLElBQUksQ0FBQyxDQUFDO1lBQ2xELENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBVyxFQUFFLEVBQUUsQ0FBQyxJQUFJLHVCQUF1QixDQUFDLFdBQVcsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQy9FLENBQUM7SUFFRCxZQUE0QixXQUFtQixFQUFrQixnQkFBd0I7UUFBN0QsZ0JBQVcsR0FBWCxXQUFXLENBQVE7UUFBa0IscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFRO0lBQ3pGLENBQUM7SUFFTSxLQUFLLENBQUMsS0FBOEI7UUFDekMsT0FBTyxJQUFJLENBQUMsV0FBVyxLQUFLLEtBQUssQ0FBQyxXQUFXO2VBQ3RDLElBQUksQ0FBQyxnQkFBZ0IsS0FBSyxLQUFLLENBQUMsZ0JBQWdCLENBQUM7SUFDMUQsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0ksT0FBTztRQUNaLE9BQU8sSUFBQSx1QkFBUSxFQUFDO1lBQ2QsV0FBVyxFQUFFLElBQUksQ0FBQyxXQUFXO1lBQzdCLGdCQUFnQixFQUFFLElBQUksQ0FBQyxnQkFBZ0I7U0FDeEMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztDQUNGO0FBM0JELDBEQTJCQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE1heWJlUGFyc2VkLCBta1BhcnNlZCB9IGZyb20gJy4uL2RpZmYvbWF5YmUtcGFyc2VkJztcblxuZXhwb3J0IGNsYXNzIE1hbmFnZWRQb2xpY3lBdHRhY2htZW50IHtcbiAgcHVibGljIHN0YXRpYyBwYXJzZU1hbmFnZWRQb2xpY2llcyhpZGVudGl0eUFybjogc3RyaW5nLCBhcm5zOiBzdHJpbmcgfCBzdHJpbmdbXSk6IE1hbmFnZWRQb2xpY3lBdHRhY2htZW50W10ge1xuICAgIHJldHVybiB0eXBlb2YgYXJucyA9PT0gJ3N0cmluZydcbiAgICAgID8gW25ldyBNYW5hZ2VkUG9saWN5QXR0YWNobWVudChpZGVudGl0eUFybiwgYXJucyldXG4gICAgICA6IGFybnMubWFwKChhcm46IHN0cmluZykgPT4gbmV3IE1hbmFnZWRQb2xpY3lBdHRhY2htZW50KGlkZW50aXR5QXJuLCBhcm4pKTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyByZWFkb25seSBpZGVudGl0eUFybjogc3RyaW5nLCBwdWJsaWMgcmVhZG9ubHkgbWFuYWdlZFBvbGljeUFybjogc3RyaW5nKSB7XG4gIH1cblxuICBwdWJsaWMgZXF1YWwob3RoZXI6IE1hbmFnZWRQb2xpY3lBdHRhY2htZW50KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuaWRlbnRpdHlBcm4gPT09IG90aGVyLmlkZW50aXR5QXJuXG4gICAgICAgICYmIHRoaXMubWFuYWdlZFBvbGljeUFybiA9PT0gb3RoZXIubWFuYWdlZFBvbGljeUFybjtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm4gYSBtYWNoaW5lLXJlYWRhYmxlIHZlcnNpb24gb2YgdGhlIGNoYW5nZXMuXG4gICAqIFRoaXMgaXMgb25seSB1c2VkIGluIHRlc3RzLlxuICAgKlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIHB1YmxpYyBfdG9Kc29uKCk6IE1heWJlUGFyc2VkPE1hbmFnZWRQb2xpY3lKc29uPiB7XG4gICAgcmV0dXJuIG1rUGFyc2VkKHtcbiAgICAgIGlkZW50aXR5QXJuOiB0aGlzLmlkZW50aXR5QXJuLFxuICAgICAgbWFuYWdlZFBvbGljeUFybjogdGhpcy5tYW5hZ2VkUG9saWN5QXJuLFxuICAgIH0pO1xuICB9XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTWFuYWdlZFBvbGljeUpzb24ge1xuICBpZGVudGl0eUFybjogc3RyaW5nO1xuICBtYW5hZ2VkUG9saWN5QXJuOiBzdHJpbmc7XG59XG4iXX0=","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.renderCondition = exports.Effect = exports.Targets = exports.parseLambdaPermission = exports.parseStatements = exports.Statement = void 0;\nconst maybe_parsed_1 = require(\"../diff/maybe-parsed\");\nconst util_1 = require(\"../util\");\n// namespace object imports won't work in the bundle for function exports\n// eslint-disable-next-line @typescript-eslint/no-require-imports\nconst deepEqual = require('fast-deep-equal');\nclass Statement {\n constructor(statement) {\n if (typeof statement === 'string') {\n this.sid = undefined;\n this.effect = Effect.Unknown;\n this.resources = new Targets({}, '', '');\n this.actions = new Targets({}, '', '');\n this.principals = new Targets({}, '', '');\n this.condition = undefined;\n this.serializedIntrinsic = statement;\n }\n else {\n this.sid = expectString(statement.Sid);\n this.effect = expectEffect(statement.Effect);\n this.resources = new Targets(statement, 'Resource', 'NotResource');\n this.actions = new Targets(statement, 'Action', 'NotAction');\n this.principals = new Targets(statement, 'Principal', 'NotPrincipal');\n this.condition = statement.Condition;\n this.serializedIntrinsic = undefined;\n }\n }\n /**\n * Whether this statement is equal to the other statement\n */\n equal(other) {\n return (this.sid === other.sid\n && this.effect === other.effect\n && this.serializedIntrinsic === other.serializedIntrinsic\n && this.resources.equal(other.resources)\n && this.actions.equal(other.actions)\n && this.principals.equal(other.principals)\n && deepEqual(this.condition, other.condition));\n }\n render() {\n return this.serializedIntrinsic\n ? {\n resource: this.serializedIntrinsic,\n effect: '',\n action: '',\n principal: this.principals.render(), // these will be replaced by the call to replaceEmpty() from IamChanges\n condition: '',\n }\n : {\n resource: this.resources.render(),\n effect: this.effect,\n action: this.actions.render(),\n principal: this.principals.render(),\n condition: renderCondition(this.condition),\n };\n }\n /**\n * Return a machine-readable version of the changes.\n * This is only used in tests.\n *\n * @internal\n */\n _toJson() {\n return this.serializedIntrinsic\n ? (0, maybe_parsed_1.mkUnparseable)(this.serializedIntrinsic)\n : (0, maybe_parsed_1.mkParsed)((0, util_1.deepRemoveUndefined)({\n sid: this.sid,\n effect: this.effect,\n resources: this.resources._toJson(),\n principals: this.principals._toJson(),\n actions: this.actions._toJson(),\n condition: this.condition,\n }));\n }\n /**\n * Whether this is a negative statement\n *\n * A statement is negative if any of its targets are negative, inverted\n * if the Effect is Deny.\n */\n get isNegativeStatement() {\n const notTarget = this.actions.not || this.principals.not || this.resources.not;\n return this.effect === Effect.Allow ? notTarget : !notTarget;\n }\n}\nexports.Statement = Statement;\n/**\n * Parse a list of statements from undefined, a Statement, or a list of statements\n */\nfunction parseStatements(x) {\n if (x === undefined) {\n x = [];\n }\n if (!Array.isArray(x)) {\n x = [x];\n }\n return x.map((s) => new Statement(s));\n}\nexports.parseStatements = parseStatements;\n/**\n * Parse a Statement from a Lambda::Permission object\n *\n * This is actually what Lambda adds to the policy document if you call AddPermission.\n */\nfunction parseLambdaPermission(x) {\n // Construct a statement from\n const statement = {\n Effect: 'Allow',\n Action: x.Action,\n Resource: x.FunctionName,\n };\n if (x.Principal !== undefined) {\n if (x.Principal === '*') {\n // *\n statement.Principal = '*';\n }\n else if (/^\\d{12}$/.test(x.Principal)) {\n // Account number\n // eslint-disable-next-line @aws-cdk/no-literal-partition\n statement.Principal = { AWS: `arn:aws:iam::${x.Principal}:root` };\n }\n else {\n // Assume it's a service principal\n // We might get this wrong vs. the previous one for tokens. Nothing to be done\n // about that. It's only for human readable consumption after all.\n statement.Principal = { Service: x.Principal };\n }\n }\n if (x.SourceArn !== undefined) {\n if (statement.Condition === undefined) {\n statement.Condition = {};\n }\n statement.Condition.ArnLike = { 'AWS:SourceArn': x.SourceArn };\n }\n if (x.SourceAccount !== undefined) {\n if (statement.Condition === undefined) {\n statement.Condition = {};\n }\n statement.Condition.StringEquals = { 'AWS:SourceAccount': x.SourceAccount };\n }\n if (x.EventSourceToken !== undefined) {\n if (statement.Condition === undefined) {\n statement.Condition = {};\n }\n statement.Condition.StringEquals = { 'lambda:EventSourceToken': x.EventSourceToken };\n }\n return new Statement(statement);\n}\nexports.parseLambdaPermission = parseLambdaPermission;\n/**\n * Targets for a field\n */\nclass Targets {\n constructor(statement, positiveKey, negativeKey) {\n if (negativeKey in statement) {\n this.values = forceListOfStrings(statement[negativeKey]);\n this.not = true;\n }\n else {\n this.values = forceListOfStrings(statement[positiveKey]);\n this.not = false;\n }\n this.values.sort();\n }\n get empty() {\n return this.values.length === 0;\n }\n /**\n * Whether this set of targets is equal to the other set of targets\n */\n equal(other) {\n return this.not === other.not && deepEqual(this.values.sort(), other.values.sort());\n }\n /**\n * If the current value set is empty, put this in it\n */\n replaceEmpty(replacement) {\n if (this.empty) {\n this.values.push(replacement);\n }\n }\n /**\n * If the actions contains a '*', replace with this string.\n */\n replaceStar(replacement) {\n for (let i = 0; i < this.values.length; i++) {\n if (this.values[i] === '*') {\n this.values[i] = replacement;\n }\n }\n this.values.sort();\n }\n /**\n * Render into a summary table cell\n */\n render() {\n return this.not\n ? this.values.map(s => `NOT ${s}`).join('\\n')\n : this.values.join('\\n');\n }\n /**\n * Return a machine-readable version of the changes.\n * This is only used in tests.\n *\n * @internal\n */\n _toJson() {\n return { not: this.not, values: this.values };\n }\n}\nexports.Targets = Targets;\nvar Effect;\n(function (Effect) {\n Effect[\"Unknown\"] = \"Unknown\";\n Effect[\"Allow\"] = \"Allow\";\n Effect[\"Deny\"] = \"Deny\";\n})(Effect || (exports.Effect = Effect = {}));\nfunction expectString(x) {\n return typeof x === 'string' ? x : undefined;\n}\nfunction expectEffect(x) {\n if (x === Effect.Allow || x === Effect.Deny) {\n return x;\n }\n return Effect.Unknown;\n}\nfunction forceListOfStrings(x) {\n if (typeof x === 'string') {\n return [x];\n }\n if (typeof x === 'undefined' || x === null) {\n return [];\n }\n if (Array.isArray(x)) {\n return x.map(e => forceListOfStrings(e).join(','));\n }\n if (typeof x === 'object' && x !== null) {\n const ret = [];\n for (const [key, value] of Object.entries(x)) {\n ret.push(...forceListOfStrings(value).map(s => `${key}:${s}`));\n }\n return ret;\n }\n return [`${x}`];\n}\n/**\n * Render the Condition column\n */\nfunction renderCondition(condition) {\n if (!condition || Object.keys(condition).length === 0) {\n return '';\n }\n const jsonRepresentation = JSON.stringify(condition, undefined, 2);\n // The JSON representation looks like this:\n //\n // {\n // \"ArnLike\": {\n // \"AWS:SourceArn\": \"${MyTopic86869434}\"\n // }\n // }\n //\n // We can make it more compact without losing information by getting rid of the outermost braces\n // and the indentation.\n const lines = jsonRepresentation.split('\\n');\n return lines.slice(1, lines.length - 1).map(s => s.slice(2)).join('\\n');\n}\nexports.renderCondition = renderCondition;\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhdGVtZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsic3RhdGVtZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLHVEQUE0RTtBQUM1RSxrQ0FBOEM7QUFFOUMseUVBQXlFO0FBQ3pFLGlFQUFpRTtBQUNqRSxNQUFNLFNBQVMsR0FBRyxPQUFPLENBQUMsaUJBQWlCLENBQUMsQ0FBQztBQUU3QyxNQUFhLFNBQVM7SUFpQ3BCLFlBQVksU0FBOEI7UUFDeEMsSUFBSSxPQUFPLFNBQVMsS0FBSyxRQUFRLEVBQUUsQ0FBQztZQUNsQyxJQUFJLENBQUMsR0FBRyxHQUFHLFNBQVMsQ0FBQztZQUNyQixJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUM7WUFDN0IsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLE9BQU8sQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQ3pDLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxPQUFPLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztZQUN2QyxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksT0FBTyxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDMUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUM7WUFDM0IsSUFBSSxDQUFDLG1CQUFtQixHQUFHLFNBQVMsQ0FBQztRQUN2QyxDQUFDO2FBQU0sQ0FBQztZQUNOLElBQUksQ0FBQyxHQUFHLEdBQUcsWUFBWSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUN2QyxJQUFJLENBQUMsTUFBTSxHQUFHLFlBQVksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDN0MsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLE9BQU8sQ0FBQyxTQUFTLEVBQUUsVUFBVSxFQUFFLGFBQWEsQ0FBQyxDQUFDO1lBQ25FLElBQUksQ0FBQyxPQUFP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LElBQUksQ0FBQyxTQUFTLENBQUMsU0FBUyxFQUFFLFNBQVMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUVuRSwyQ0FBMkM7SUFDM0MsRUFBRTtJQUNGLEtBQUs7SUFDTCxrQkFBa0I7SUFDbEIsNkNBQTZDO0lBQzdDLE9BQU87SUFDUCxLQUFLO0lBQ0wsRUFBRTtJQUNGLGdHQUFnRztJQUNoRyx1QkFBdUI7SUFDdkIsTUFBTSxLQUFLLEdBQUcsa0JBQWtCLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzdDLE9BQU8sS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQzFFLENBQUM7QUFoQkQsMENBZ0JDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTWF5YmVQYXJzZWQsIG1rUGFyc2VkLCBta1VucGFyc2VhYmxlIH0gZnJvbSAnLi4vZGlmZi9tYXliZS1wYXJzZWQnO1xuaW1wb3J0IHsgZGVlcFJlbW92ZVVuZGVmaW5lZCB9IGZyb20gJy4uL3V0aWwnO1xuXG4vLyBuYW1lc3BhY2Ugb2JqZWN0IGltcG9ydHMgd29uJ3Qgd29yayBpbiB0aGUgYnVuZGxlIGZvciBmdW5jdGlvbiBleHBvcnRzXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXJlcXVpcmUtaW1wb3J0c1xuY29uc3QgZGVlcEVxdWFsID0gcmVxdWlyZSgnZmFzdC1kZWVwLWVxdWFsJyk7XG5cbmV4cG9ydCBjbGFzcyBTdGF0ZW1lbnQge1xuICAvKipcbiAgICogU3RhdGVtZW50IElEXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgc2lkOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIFN0YXRlbWVudCBlZmZlY3RcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBlZmZlY3Q6IEVmZmVjdDtcblxuICAvKipcbiAgICogUmVzb3VyY2VzXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgcmVzb3VyY2VzOiBUYXJnZXRzO1xuXG4gIC8qKlxuICAgKiBQcmluY2lwYWxzXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgcHJpbmNpcGFsczogVGFyZ2V0cztcblxuICAvKipcbiAgICogQWN0aW9uc1xuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGFjdGlvbnM6IFRhcmdldHM7XG5cbiAgLyoqXG4gICAqIE9iamVjdCB3aXRoIGNvbmRpdGlvbnNcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBjb25kaXRpb24/OiBhbnk7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBzZXJpYWxpemVkSW50cmluc2ljOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgY29uc3RydWN0b3Ioc3RhdGVtZW50OiBVbmtub3duTWFwIHwgc3RyaW5nKSB7XG4gICAgaWYgKHR5cGVvZiBzdGF0ZW1lbnQgPT09ICdzdHJpbmcnKSB7XG4gICAgICB0aGlzLnNpZCA9IHVuZGVmaW5lZDtcbiAgICAgIHRoaXMuZWZmZWN0ID0gRWZmZWN0LlVua25vd247XG4gICAgICB0aGlzLnJlc291cmNlcyA9IG5ldyBUYXJnZXRzKHt9LCAnJywgJycpO1xuICAgICAgdGhpcy5hY3Rpb25zID0gbmV3IFRhcmdldHMoe30sICcnLCAnJyk7XG4gICAgICB0aGlzLnByaW5jaXBhbHMgPSBuZXcgVGFyZ2V0cyh7fSwgJycsICcnKTtcbiAgICAgIHRoaXMuY29uZGl0aW9uID0gdW5kZWZpbmVkO1xuICAgICAgdGhpcy5zZXJpYWxpemVkSW50cmluc2ljID0gc3RhdGVtZW50O1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnNpZCA9IGV4cGVjdFN0cmluZyhzdGF0ZW1lbnQuU2lkKTtcbiAgICAgIHRoaXMuZWZmZWN0ID0gZXhwZWN0RWZmZWN0KHN0YXRlbWVudC5FZmZlY3QpO1xuICAgICAgdGhpcy5yZXNvdXJjZXMgPSBuZXcgVGFyZ2V0cyhzdGF0ZW1lbnQsICdSZXNvdXJjZScsICdOb3RSZXNvdXJjZScpO1xuICAgICAgdGhpcy5hY3Rpb25zID0gbmV3IFRhcmdldHMoc3RhdGVtZW50LCAnQWN0aW9uJywgJ05vdEFjdGlvbicpO1xuICAgICAgdGhpcy5wcmluY2lwYWxzID0gbmV3IFRhcmdldHMoc3RhdGVtZW50LCAnUHJpbmNpcGFsJywgJ05vdFByaW5jaXBhbCcpO1xuICAgICAgdGhpcy5jb25kaXRpb24gPSBzdGF0ZW1lbnQuQ29uZGl0aW9uO1xuICAgICAgdGhpcy5zZXJpYWxpemVkSW50cmluc2ljID0gdW5kZWZpbmVkO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoaXMgc3RhdGVtZW50IGlzIGVxdWFsIHRvIHRoZSBvdGhlciBzdGF0ZW1lbnRcbiAgICovXG4gIHB1YmxpYyBlcXVhbChvdGhlcjogU3RhdGVtZW50KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICh0aGlzLnNpZCA9PT0gb3RoZXIuc2lkXG4gICAgICAmJiB0aGlzLmVmZmVjdCA9PT0gb3RoZXIuZWZmZWN0XG4gICAgICAmJiB0aGlzLnNlcmlhbGl6ZWRJbnRyaW5zaWMgPT09IG90aGVyLnNlcmlhbGl6ZWRJbnRyaW5zaWNcbiAgICAgICYmIHRoaXMucmVzb3VyY2VzLmVxdWFsKG90aGVyLnJlc291cmNlcylcbiAgICAgICYmIHRoaXMuYWN0aW9ucy5lcXVhbChvdGhlci5hY3Rpb25zKVxuICAgICAgJiYgdGhpcy5wcmluY2lwYWxzLmVxdWFsKG90aGVyLnByaW5jaXBhbHMpXG4gICAgICAmJiBkZWVwRXF1YWwodGhpcy5jb25kaXRpb24sIG90aGVyLmNvbmRpdGlvbikpO1xuICB9XG5cbiAgcHVibGljIHJlbmRlcigpOiBSZW5kZXJlZFN0YXRlbWVudCB7XG4gICAgcmV0dXJuIHRoaXMuc2VyaWFsaXplZEludHJpbnNpY1xuICAgICAgPyB7XG4gICAgICAgIHJlc291cmNlOiB0aGlzLnNlcmlhbGl6ZWRJbnRyaW5zaWMsXG4gICAgICAgIGVmZmVjdDogJycsXG4gICAgICAgIGFjdGlvbjogJycsXG4gICAgICAgIHByaW5jaXBhbDogdGhpcy5wcmluY2lwYWxzLnJlbmRlcigpLCAvLyB0aGVzZSB3aWxsIGJlIHJlcGxhY2VkIGJ5IHRoZSBjYWxsIHRvIHJlcGxhY2VFbXB0eSgpIGZyb20gSWFtQ2hhbmdlc1xuICAgICAgICBjb25kaXRpb246ICcnLFxuICAgICAgfVxuICAgICAgOiB7XG4gICAgICAgIHJlc291cmNlOiB0aGlzLnJlc291cmNlcy5yZW5kZXIoKSxcbiAgICAgICAgZWZmZWN0OiB0aGlzLmVmZmVjdCxcbiAgICAgICAgYWN0aW9uOiB0aGlzLmFjdGlvbnMucmVuZGVyKCksXG4gICAgICAgIHByaW5jaXBhbDogdGhpcy5wcmluY2lwYWxzLnJlbmRlcigpLFxuICAgICAgICBjb25kaXRpb246IHJlbmRlckNvbmRpdGlvbih0aGlzLmNvbmRpdGlvbiksXG4gICAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybiBhIG1hY2hpbmUtcmVhZGFibGUgdmVyc2lvbiBvZiB0aGUgY2hhbmdlcy5cbiAgICogVGhpcyBpcyBvbmx5IHVzZWQgaW4gdGVzdHMuXG4gICAqXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgcHVibGljIF90b0pzb24oKTogTWF5YmVQYXJzZWQ8U3RhdGVtZW50SnNvbj4ge1xuICAgIHJldHVybiB0aGlzLnNlcmlhbGl6ZWRJbnRyaW5zaWNcbiAgICAgID8gbWtVbnBhcnNlYWJsZSh0aGlzLnNlcmlhbGl6ZWRJbnRyaW5zaWMpXG4gICAgICA6IG1rUGFyc2VkKGRlZXBSZW1vdmVVbmRlZmluZWQoe1xuICAgICAgICBzaWQ6IHRoaXMuc2lkLFxuICAgICAgICBlZmZlY3Q6IHRoaXMuZWZmZWN0LFxuICAgICAgICByZXNvdXJjZXM6IHRoaXMucmVzb3VyY2VzLl90b0pzb24oKSxcbiAgICAgICAgcHJpbmNpcGFsczogdGhpcy5wcmluY2lwYWxzLl90b0pzb24oKSxcbiAgICAgICAgYWN0aW9uczogdGhpcy5hY3Rpb25zLl90b0pzb24oKSxcbiAgICAgICAgY29uZGl0aW9uOiB0aGlzLmNvbmRpdGlvbixcbiAgICAgIH0pKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoaXMgaXMgYSBuZWdhdGl2ZSBzdGF0ZW1lbnRcbiAgICpcbiAgICogQSBzdGF0ZW1lbnQgaXMgbmVnYXRpdmUgaWYgYW55IG9mIGl0cyB0YXJnZXRzIGFyZSBuZWdhdGl2ZSwgaW52ZXJ0ZWRcbiAgICogaWYgdGhlIEVmZmVjdCBpcyBEZW55LlxuICAgKi9cbiAgcHVibGljIGdldCBpc05lZ2F0aXZlU3RhdGVtZW50KCk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IG5vdFRhcmdldCA9IHRoaXMuYWN0aW9ucy5ub3QgfHwgdGhpcy5wcmluY2lwYWxzLm5vdCB8fCB0aGlzLnJlc291cmNlcy5ub3Q7XG4gICAgcmV0dXJuIHRoaXMuZWZmZWN0ID09PSBFZmZlY3QuQWxsb3cgPyBub3RUYXJnZXQgOiAhbm90VGFyZ2V0O1xuICB9XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVuZGVyZWRTdGF0ZW1lbnQge1xuICByZWFkb25seSByZXNvdXJjZTogc3RyaW5nO1xuICByZWFkb25seSBlZmZlY3Q6IHN0cmluZztcbiAgcmVhZG9ubHkgYWN0aW9uOiBzdHJpbmc7XG4gIHJlYWRvbmx5IHByaW5jaXBhbDogc3RyaW5nO1xuICByZWFkb25seSBjb25kaXRpb246IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTdGF0ZW1lbnRKc29uIHtcbiAgc2lkPzogc3RyaW5nO1xuICBlZmZlY3Q6IHN0cmluZztcbiAgcmVzb3VyY2VzOiBUYXJnZXRzSnNvbjtcbiAgYWN0aW9uczogVGFyZ2V0c0pzb247XG4gIHByaW5jaXBhbHM6IFRhcmdldHNKc29uO1xuICBjb25kaXRpb24/OiBhbnk7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVGFyZ2V0c0pzb24ge1xuICBub3Q6IGJvb2xlYW47XG4gIHZhbHVlczogc3RyaW5nW107XG59XG5cbi8qKlxuICogUGFyc2UgYSBsaXN0IG9mIHN0YXRlbWVudHMgZnJvbSB1bmRlZmluZWQsIGEgU3RhdGVtZW50LCBvciBhIGxpc3Qgb2Ygc3RhdGVtZW50c1xuICovXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VTdGF0ZW1lbnRzKHg6IGFueSk6IFN0YXRlbWVudFtdIHtcbiAgaWYgKHggPT09IHVuZGVmaW5lZCkgeyB4ID0gW107IH1cbiAgaWYgKCFBcnJheS5pc0FycmF5KHgpKSB7IHggPSBbeF07IH1cbiAgcmV0dXJuIHgubWFwKChzOiBhbnkpID0+IG5ldyBTdGF0ZW1lbnQocykpO1xufVxuXG4vKipcbiAqIFBhcnNlIGEgU3RhdGVtZW50IGZyb20gYSBMYW1iZGE6OlBlcm1pc3Npb24gb2JqZWN0XG4gKlxuICogVGhpcyBpcyBhY3R1YWxseSB3aGF0IExhbWJkYSBhZGRzIHRvIHRoZSBwb2xpY3kgZG9jdW1lbnQgaWYgeW91IGNhbGwgQWRkUGVybWlzc2lvbi5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlTGFtYmRhUGVybWlzc2lvbih4OiBhbnkpOiBTdGF0ZW1lbnQge1xuICAvLyBDb25zdHJ1Y3QgYSBzdGF0ZW1lbnQgZnJvbVxuICBjb25zdCBzdGF0ZW1lbnQ6IGFueSA9IHtcbiAgICBFZmZlY3Q6ICdBbGxvdycsXG4gICAgQWN0aW9uOiB4LkFjdGlvbixcbiAgICBSZXNvdXJjZTogeC5GdW5jdGlvbk5hbWUsXG4gIH07XG5cbiAgaWYgKHguUHJpbmNpcGFsICE9PSB1bmRlZmluZWQpIHtcbiAgICBpZiAoeC5QcmluY2lwYWwgPT09ICcqJykge1xuICAgICAgLy8gKlxuICAgICAgc3RhdGVtZW50LlByaW5jaXBhbCA9ICcqJztcbiAgICB9IGVsc2UgaWYgKC9eXFxkezEyfSQvLnRlc3QoeC5QcmluY2lwYWwpKSB7XG4gICAgICAvLyBBY2NvdW50IG51bWJlclxuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhd3MtY2RrL25vLWxpdGVyYWwtcGFydGl0aW9uXG4gICAgICBzdGF0ZW1lbnQuUHJpbmNpcGFsID0geyBBV1M6IGBhcm46YXdzOmlhbTo6JHt4LlByaW5jaXBhbH06cm9vdGAgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gQXNzdW1lIGl0J3MgYSBzZXJ2aWNlIHByaW5jaXBhbFxuICAgICAgLy8gV2UgbWlnaHQgZ2V0IHRoaXMgd3JvbmcgdnMuIHRoZSBwcmV2aW91cyBvbmUgZm9yIHRva2Vucy4gTm90aGluZyB0byBiZSBkb25lXG4gICAgICAvLyBhYm91dCB0aGF0LiBJdCdzIG9ubHkgZm9yIGh1bWFuIHJlYWRhYmxlIGNvbnN1bXB0aW9uIGFmdGVyIGFsbC5cbiAgICAgIHN0YXRlbWVudC5QcmluY2lwYWwgPSB7IFNlcnZpY2U6IHguUHJpbmNpcGFsIH07XG4gICAgfVxuICB9XG4gIGlmICh4LlNvdXJjZUFybiAhPT0gdW5kZWZpbmVkKSB7XG4gICAgaWYgKHN0YXRlbWVudC5Db25kaXRpb24gPT09IHVuZGVmaW5lZCkgeyBzdGF0ZW1lbnQuQ29uZGl0aW9uID0ge307IH1cbiAgICBzdGF0ZW1lbnQuQ29uZGl0aW9uLkFybkxpa2UgPSB7ICdBV1M6U291cmNlQXJuJzogeC5Tb3VyY2VBcm4gfTtcbiAgfVxuICBpZiAoeC5Tb3VyY2VBY2NvdW50ICE9PSB1bmRlZmluZWQpIHtcbiAgICBpZiAoc3RhdGVtZW50LkNvbmRpdGlvbiA9PT0gdW5kZWZpbmVkKSB7IHN0YXRlbWVudC5Db25kaXRpb24gPSB7fTsgfVxuICAgIHN0YXRlbWVudC5Db25kaXRpb24uU3RyaW5nRXF1YWxzID0geyAnQVdTOlNvdXJjZUFjY291bnQnOiB4LlNvdXJjZUFjY291bnQgfTtcbiAgfVxuICBpZiAoeC5FdmVudFNvdXJjZVRva2VuICE9PSB1bmRlZmluZWQpIHtcbiAgICBpZiAoc3RhdGVtZW50LkNvbmRpdGlvbiA9PT0gdW5kZWZpbmVkKSB7IHN0YXRlbWVudC5Db25kaXRpb24gPSB7fTsgfVxuICAgIHN0YXRlbWVudC5Db25kaXRpb24uU3RyaW5nRXF1YWxzID0geyAnbGFtYmRhOkV2ZW50U291cmNlVG9rZW4nOiB4LkV2ZW50U291cmNlVG9rZW4gfTtcbiAgfVxuXG4gIHJldHVybiBuZXcgU3RhdGVtZW50KHN0YXRlbWVudCk7XG59XG5cbi8qKlxuICogVGFyZ2V0cyBmb3IgYSBmaWVsZFxuICovXG5leHBvcnQgY2xhc3MgVGFyZ2V0cyB7XG4gIC8qKlxuICAgKiBUaGUgdmFsdWVzIG9mIHRoZSB0YXJnZXRzXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgdmFsdWVzOiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogV2hldGhlciBwb3NpdGl2ZSBvciBuZWdhdGl2ZSBtYXRjaGVyc1xuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IG5vdDogYm9vbGVhbjtcblxuICBjb25zdHJ1Y3RvcihzdGF0ZW1lbnQ6IFVua25vd25NYXAsIHBvc2l0aXZlS2V5OiBzdHJpbmcsIG5lZ2F0aXZlS2V5OiBzdHJpbmcpIHtcbiAgICBpZiAobmVnYXRpdmVLZXkgaW4gc3RhdGVtZW50KSB7XG4gICAgICB0aGlzLnZhbHVlcyA9IGZvcmNlTGlzdE9mU3RyaW5ncyhzdGF0ZW1lbnRbbmVnYXRpdmVLZXldKTtcbiAgICAgIHRoaXMubm90ID0gdHJ1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy52YWx1ZXMgPSBmb3JjZUxpc3RPZlN0cmluZ3Moc3RhdGVtZW50W3Bvc2l0aXZlS2V5XSk7XG4gICAgICB0aGlzLm5vdCA9IGZhbHNlO1xuICAgIH1cbiAgICB0aGlzLnZhbHVlcy5zb3J0KCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGVtcHR5KCkge1xuICAgIHJldHVybiB0aGlzLnZhbHVlcy5sZW5ndGggPT09IDA7XG4gIH1cblxuICAvKipcbiAgICogV2hldGhlciB0aGlzIHNldCBvZiB0YXJnZXRzIGlzIGVxdWFsIHRvIHRoZSBvdGhlciBzZXQgb2YgdGFyZ2V0c1xuICAgKi9cbiAgcHVibGljIGVxdWFsKG90aGVyOiBUYXJnZXRzKSB7XG4gICAgcmV0dXJuIHRoaXMubm90ID09PSBvdGhlci5ub3QgJiYgZGVlcEVxdWFsKHRoaXMudmFsdWVzLnNvcnQoKSwgb3RoZXIudmFsdWVzLnNvcnQoKSk7XG4gIH1cblxuICAvKipcbiAgICogSWYgdGhlIGN1cnJlbnQgdmFsdWUgc2V0IGlzIGVtcHR5LCBwdXQgdGhpcyBpbiBpdFxuICAgKi9cbiAgcHVibGljIHJlcGxhY2VFbXB0eShyZXBsYWNlbWVudDogc3RyaW5nKSB7XG4gICAgaWYgKHRoaXMuZW1wdHkpIHtcbiAgICAgIHRoaXMudmFsdWVzLnB1c2gocmVwbGFjZW1lbnQpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBJZiB0aGUgYWN0aW9ucyBjb250YWlucyBhICcqJywgcmVwbGFjZSB3aXRoIHRoaXMgc3RyaW5nLlxuICAgKi9cbiAgcHVibGljIHJlcGxhY2VTdGFyKHJlcGxhY2VtZW50OiBzdHJpbmcpIHtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMudmFsdWVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBpZiAodGhpcy52YWx1ZXNbaV0gPT09ICcqJykge1xuICAgICAgICB0aGlzLnZhbHVlc1tpXSA9IHJlcGxhY2VtZW50O1xuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLnZhbHVlcy5zb3J0KCk7XG4gIH1cblxuICAvKipcbiAgICogUmVuZGVyIGludG8gYSBzdW1tYXJ5IHRhYmxlIGNlbGxcbiAgICovXG4gIHB1YmxpYyByZW5kZXIoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5ub3RcbiAgICAgID8gdGhpcy52YWx1ZXMubWFwKHMgPT4gYE5PVCAke3N9YCkuam9pbignXFxuJylcbiAgICAgIDogdGhpcy52YWx1ZXMuam9pbignXFxuJyk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJuIGEgbWFjaGluZS1yZWFkYWJsZSB2ZXJzaW9uIG9mIHRoZSBjaGFuZ2VzLlxuICAgKiBUaGlzIGlzIG9ubHkgdXNlZCBpbiB0ZXN0cy5cbiAgICpcbiAgICogQGludGVybmFsXG4gICAqL1xuICBwdWJsaWMgX3RvSnNvbigpOiBUYXJnZXRzSnNvbiB7XG4gICAgcmV0dXJuIHsgbm90OiB0aGlzLm5vdCwgdmFsdWVzOiB0aGlzLnZhbHVlcyB9O1xuICB9XG59XG5cbnR5cGUgVW5rbm93bk1hcCA9IHtba2V5OiBzdHJpbmddOiB1bmtub3dufTtcblxuZXhwb3J0IGVudW0gRWZmZWN0IHtcbiAgVW5rbm93biA9ICdVbmtub3duJyxcbiAgQWxsb3cgPSAnQWxsb3cnLFxuICBEZW55ID0gJ0RlbnknLFxufVxuXG5mdW5jdGlvbiBleHBlY3RTdHJpbmcoeDogdW5rbm93bik6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gIHJldHVybiB0eXBlb2YgeCA9PT0gJ3N0cmluZycgPyB4IDogdW5kZWZpbmVkO1xufVxuXG5mdW5jdGlvbiBleHBlY3RFZmZlY3QoeDogdW5rbm93bik6IEVmZmVjdCB7XG4gIGlmICh4ID09PSBFZmZlY3QuQWxsb3cgfHwgeCA9PT0gRWZmZWN0LkRlbnkpIHsgcmV0dXJuIHggYXMgRWZmZWN0OyB9XG4gIHJldHVybiBFZmZlY3QuVW5rbm93bjtcbn1cblxuZnVuY3Rpb24gZm9yY2VMaXN0T2ZTdHJpbmdzKHg6IHVua25vd24pOiBzdHJpbmdbXSB7XG4gIGlmICh0eXBlb2YgeCA9PT0gJ3N0cmluZycpIHsgcmV0dXJuIFt4XTsgfVxuICBpZiAodHlwZW9mIHggPT09ICd1bmRlZmluZWQnIHx8IHggPT09IG51bGwpIHsgcmV0dXJuIFtdOyB9XG5cbiAgaWYgKEFycmF5LmlzQXJyYXkoeCkpIHtcbiAgICByZXR1cm4geC5tYXAoZSA9PiBmb3JjZUxpc3RPZlN0cmluZ3MoZSkuam9pbignLCcpKTtcbiAgfVxuXG4gIGlmICh0eXBlb2YgeCA9PT0gJ29iamVjdCcgJiYgeCAhPT0gbnVsbCkge1xuICAgIGNvbnN0IHJldDogc3RyaW5nW10gPSBbXTtcbiAgICBmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyh4KSkge1xuICAgICAgcmV0LnB1c2goLi4uZm9yY2VMaXN0T2ZTdHJpbmdzKHZhbHVlKS5tYXAocyA9PiBgJHtrZXl9OiR7c31gKSk7XG4gICAgfVxuICAgIHJldHVybiByZXQ7XG4gIH1cblxuICByZXR1cm4gW2Ake3h9YF07XG59XG5cbi8qKlxuICogUmVuZGVyIHRoZSBDb25kaXRpb24gY29sdW1uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZW5kZXJDb25kaXRpb24oY29uZGl0aW9uOiBhbnkpOiBzdHJpbmcge1xuICBpZiAoIWNvbmRpdGlvbiB8fCBPYmplY3Qua2V5cyhjb25kaXRpb24pLmxlbmd0aCA9PT0gMCkgeyByZXR1cm4gJyc7IH1cbiAgY29uc3QganNvblJlcHJlc2VudGF0aW9uID0gSlNPTi5zdHJpbmdpZnkoY29uZGl0aW9uLCB1bmRlZmluZWQsIDIpO1xuXG4gIC8vIFRoZSBKU09OIHJlcHJlc2VudGF0aW9uIGxvb2tzIGxpa2UgdGhpczpcbiAgLy9cbiAgLy8gIHtcbiAgLy8gICAgXCJBcm5MaWtlXCI6IHtcbiAgLy8gICAgICBcIkFXUzpTb3VyY2VBcm5cIjogXCIke015VG9waWM4Njg2OTQzNH1cIlxuICAvLyAgICB9XG4gIC8vICB9XG4gIC8vXG4gIC8vIFdlIGNhbiBtYWtlIGl0IG1vcmUgY29tcGFjdCB3aXRob3V0IGxvc2luZyBpbmZvcm1hdGlvbiBieSBnZXR0aW5nIHJpZCBvZiB0aGUgb3V0ZXJtb3N0IGJyYWNlc1xuICAvLyBhbmQgdGhlIGluZGVudGF0aW9uLlxuICBjb25zdCBsaW5lcyA9IGpzb25SZXByZXNlbnRhdGlvbi5zcGxpdCgnXFxuJyk7XG4gIHJldHVybiBsaW5lcy5zbGljZSgxLCBsaW5lcy5sZW5ndGggLSAxKS5tYXAocyA9PiBzLnNsaWNlKDIpKS5qb2luKCdcXG4nKTtcbn1cbiJdfQ==","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.mangleLikeCloudFormation = exports.deepEqual = void 0;\n__exportStar(require(\"./diff-template\"), exports);\n__exportStar(require(\"./format\"), exports);\n__exportStar(require(\"./format-table\"), exports);\nvar util_1 = require(\"./diff/util\");\nObject.defineProperty(exports, \"deepEqual\", { enumerable: true, get: function () { return util_1.deepEqual; } });\nObject.defineProperty(exports, \"mangleLikeCloudFormation\", { enumerable: true, get: function () { return util_1.mangleLikeCloudFormation; } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLGtEQUFnQztBQUNoQywyQ0FBeUI7QUFDekIsaURBQStCO0FBQy9CLG9DQUFrRTtBQUF6RCxpR0FBQSxTQUFTLE9BQUE7QUFBRSxnSEFBQSx3QkFBd0IsT0FBQSIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vZGlmZi10ZW1wbGF0ZSc7XG5leHBvcnQgKiBmcm9tICcuL2Zvcm1hdCc7XG5leHBvcnQgKiBmcm9tICcuL2Zvcm1hdC10YWJsZSc7XG5leHBvcnQgeyBkZWVwRXF1YWwsIG1hbmdsZUxpa2VDbG91ZEZvcm1hdGlvbiB9IGZyb20gJy4vZGlmZi91dGlsJztcbiJdfQ==","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.SecurityGroupChanges = void 0;\nconst chalk = require(\"chalk\");\nconst security_group_rule_1 = require(\"./security-group-rule\");\nconst diffable_1 = require(\"../diffable\");\nconst render_intrinsics_1 = require(\"../render-intrinsics\");\nconst util_1 = require(\"../util\");\n/**\n * Changes to IAM statements\n */\nclass SecurityGroupChanges {\n constructor(props) {\n this.ingress = new diffable_1.DiffableCollection();\n this.egress = new diffable_1.DiffableCollection();\n // Group rules\n for (const ingressProp of props.ingressRulePropertyChanges) {\n this.ingress.addOld(...this.readInlineRules(ingressProp.oldValue, ingressProp.resourceLogicalId));\n this.ingress.addNew(...this.readInlineRules(ingressProp.newValue, ingressProp.resourceLogicalId));\n }\n for (const egressProp of props.egressRulePropertyChanges) {\n this.egress.addOld(...this.readInlineRules(egressProp.oldValue, egressProp.resourceLogicalId));\n this.egress.addNew(...this.readInlineRules(egressProp.newValue, egressProp.resourceLogicalId));\n }\n // Rule resources\n for (const ingressRes of props.ingressRuleResourceChanges) {\n this.ingress.addOld(...this.readRuleResource(ingressRes.oldProperties));\n this.ingress.addNew(...this.readRuleResource(ingressRes.newProperties));\n }\n for (const egressRes of props.egressRuleResourceChanges) {\n this.egress.addOld(...this.readRuleResource(egressRes.oldProperties));\n this.egress.addNew(...this.readRuleResource(egressRes.newProperties));\n }\n this.ingress.calculateDiff();\n this.egress.calculateDiff();\n }\n get hasChanges() {\n return this.ingress.hasChanges || this.egress.hasChanges;\n }\n /**\n * Return a summary table of changes\n */\n summarize() {\n const ret = [];\n const header = ['', 'Group', 'Dir', 'Protocol', 'Peer'];\n const inWord = 'In';\n const outWord = 'Out';\n // Render a single rule to the table (curried function so we can map it across rules easily--thank you JavaScript!)\n const renderRule = (plusMin, inOut) => (rule) => [\n plusMin,\n rule.groupId,\n inOut,\n rule.describeProtocol(),\n rule.describePeer(),\n ].map(s => plusMin === '+' ? chalk.green(s) : chalk.red(s));\n // First generate all lines, sort later\n ret.push(...this.ingress.additions.map(renderRule('+', inWord)));\n ret.push(...this.egress.additions.map(renderRule('+', outWord)));\n ret.push(...this.ingress.removals.map(renderRule('-', inWord)));\n ret.push(...this.egress.removals.map(renderRule('-', outWord)));\n // Sort by group name then ingress/egress (ingress first)\n ret.sort((0, util_1.makeComparator)((row) => [row[1], row[2].indexOf(inWord) > -1 ? 0 : 1]));\n ret.splice(0, 0, header);\n return ret;\n }\n toJson() {\n return (0, util_1.deepRemoveUndefined)({\n ingressRuleAdditions: (0, util_1.dropIfEmpty)(this.ingress.additions.map(s => s.toJson())),\n ingressRuleRemovals: (0, util_1.dropIfEmpty)(this.ingress.removals.map(s => s.toJson())),\n egressRuleAdditions: (0, util_1.dropIfEmpty)(this.egress.additions.map(s => s.toJson())),\n egressRuleRemovals: (0, util_1.dropIfEmpty)(this.egress.removals.map(s => s.toJson())),\n });\n }\n get rulesAdded() {\n return this.ingress.hasAdditions\n || this.egress.hasAdditions;\n }\n readInlineRules(rules, logicalId) {\n if (!rules || !Array.isArray(rules)) {\n return [];\n }\n // UnCloudFormation so the parser works in an easier domain\n const ref = '${' + logicalId + '.GroupId}';\n return rules.flatMap((r) => {\n const rendered = (0, render_intrinsics_1.renderIntrinsics)(r);\n // SecurityGroupRule is not robust against unparsed objects\n return typeof rendered === 'object' ? [new security_group_rule_1.SecurityGroupRule(rendered, ref)] : [];\n });\n }\n readRuleResource(resource) {\n if (!resource) {\n return [];\n }\n // UnCloudFormation so the parser works in an easier domain\n return [new security_group_rule_1.SecurityGroupRule((0, render_intrinsics_1.renderIntrinsics)(resource))];\n }\n}\nexports.SecurityGroupChanges = SecurityGroupChanges;\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VjdXJpdHktZ3JvdXAtY2hhbmdlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInNlY3VyaXR5LWdyb3VwLWNoYW5nZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsK0JBQStCO0FBQy9CLCtEQUFvRTtBQUVwRSwwQ0FBaUQ7QUFDakQsNERBQXdEO0FBQ3hELGtDQUEyRTtBQVMzRTs7R0FFRztBQUNILE1BQWEsb0JBQW9CO0lBSS9CLFlBQVksS0FBZ0M7UUFINUIsWUFBTyxHQUFHLElBQUksNkJBQWtCLEVBQXFCLENBQUM7UUFDdEQsV0FBTSxHQUFHLElBQUksNkJBQWtCLEVBQXFCLENBQUM7UUFHbkUsY0FBYztRQUNkLEtBQUssTUFBTSxXQUFXLElBQUksS0FBSyxDQUFDLDBCQUEwQixFQUFFLENBQUM7WUFDM0QsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLFdBQVcsQ0FBQyxRQUFRLEVBQUUsV0FBVyxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQztZQUNsRyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsV0FBVyxDQUFDLFFBQVEsRUFBRSxXQUFXLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDO1FBQ3BHLENBQUM7UUFDRCxLQUFLLE1BQU0sVUFBVSxJQUFJLEtBQUssQ0FBQyx5QkFBeUIsRUFBRSxDQUFDO1lBQ3pELElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxVQUFVLENBQUMsUUFBUSxFQUFFLFVBQVUsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUM7WUFDL0YsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLFVBQVUsQ0FBQyxRQUFRLEVBQUUsVUFBVSxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQztRQUNq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QztJQUVPLGVBQWUsQ0FBQyxLQUFVLEVBQUUsU0FBaUI7UUFDbkQsSUFBSSxDQUFDLEtBQUssSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUFDLE9BQU8sRUFBRSxDQUFDO1FBQUMsQ0FBQztRQUVuRCwyREFBMkQ7UUFFM0QsTUFBTSxHQUFHLEdBQUcsSUFBSSxHQUFHLFNBQVMsR0FBRyxXQUFXLENBQUM7UUFDM0MsT0FBTyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBTSxFQUFFLEVBQUU7WUFDOUIsTUFBTSxRQUFRLEdBQUcsSUFBQSxvQ0FBZ0IsRUFBQyxDQUFDLENBQUMsQ0FBQztZQUNyQywyREFBMkQ7WUFDM0QsT0FBTyxPQUFPLFFBQVEsS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSx1Q0FBaUIsQ0FBQyxRQUFRLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQ3BGLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVPLGdCQUFnQixDQUFDLFFBQWE7UUFDcEMsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQUMsT0FBTyxFQUFFLENBQUM7UUFBQyxDQUFDO1FBRTdCLDJEQUEyRDtRQUUzRCxPQUFPLENBQUMsSUFBSSx1Q0FBaUIsQ0FBQyxJQUFBLG9DQUFnQixFQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM3RCxDQUFDO0NBQ0Y7QUFyR0Qsb0RBcUdDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgY2hhbGsgZnJvbSAnY2hhbGsnO1xuaW1wb3J0IHsgUnVsZUpzb24sIFNlY3VyaXR5R3JvdXBSdWxlIH0gZnJvbSAnLi9zZWN1cml0eS1ncm91cC1ydWxlJztcbmltcG9ydCB7IFByb3BlcnR5Q2hhbmdlLCBSZXNvdXJjZUNoYW5nZSB9IGZyb20gJy4uL2RpZmYvdHlwZXMnO1xuaW1wb3J0IHsgRGlmZmFibGVDb2xsZWN0aW9uIH0gZnJvbSAnLi4vZGlmZmFibGUnO1xuaW1wb3J0IHsgcmVuZGVySW50cmluc2ljcyB9IGZyb20gJy4uL3JlbmRlci1pbnRyaW5zaWNzJztcbmltcG9ydCB7IGRlZXBSZW1vdmVVbmRlZmluZWQsIGRyb3BJZkVtcHR5LCBtYWtlQ29tcGFyYXRvciB9IGZyb20gJy4uL3V0aWwnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFNlY3VyaXR5R3JvdXBDaGFuZ2VzUHJvcHMge1xuICBpbmdyZXNzUnVsZVByb3BlcnR5Q2hhbmdlczogUHJvcGVydHlDaGFuZ2VbXTtcbiAgaW5ncmVzc1J1bGVSZXNvdXJjZUNoYW5nZXM6IFJlc291cmNlQ2hhbmdlW107XG4gIGVncmVzc1J1bGVSZXNvdXJjZUNoYW5nZXM6IFJlc291cmNlQ2hhbmdlW107XG4gIGVncmVzc1J1bGVQcm9wZXJ0eUNoYW5nZXM6IFByb3BlcnR5Q2hhbmdlW107XG59XG5cbi8qKlxuICogQ2hhbmdlcyB0byBJQU0gc3RhdGVtZW50c1xuICovXG5leHBvcnQgY2xhc3MgU2VjdXJpdHlHcm91cENoYW5nZXMge1xuICBwdWJsaWMgcmVhZG9ubHkgaW5ncmVzcyA9IG5ldyBEaWZmYWJsZUNvbGxlY3Rpb248U2VjdXJpdHlHcm91cFJ1bGU+KCk7XG4gIHB1YmxpYyByZWFkb25seSBlZ3Jlc3MgPSBuZXcgRGlmZmFibGVDb2xsZWN0aW9uPFNlY3VyaXR5R3JvdXBSdWxlPigpO1xuXG4gIGNvbnN0cnVjdG9yKHByb3BzOiBTZWN1cml0eUdyb3VwQ2hhbmdlc1Byb3BzKSB7XG4gICAgLy8gR3JvdXAgcnVsZXNcbiAgICBmb3IgKGNvbnN0IGluZ3Jlc3NQcm9wIG9mIHByb3BzLmluZ3Jlc3NSdWxlUHJvcGVydHlDaGFuZ2VzKSB7XG4gICAgICB0aGlzLmluZ3Jlc3MuYWRkT2xkKC4uLnRoaXMucmVhZElubGluZVJ1bGVzKGluZ3Jlc3NQcm9wLm9sZFZhbHVlLCBpbmdyZXNzUHJvcC5yZXNvdXJjZUxvZ2ljYWxJZCkpO1xuICAgICAgdGhpcy5pbmdyZXNzLmFkZE5ldyguLi50aGlzLnJlYWRJbmxpbmVSdWxlcyhpbmdyZXNzUHJvcC5uZXdWYWx1ZSwgaW5ncmVzc1Byb3AucmVzb3VyY2VMb2dpY2FsSWQpKTtcbiAgICB9XG4gICAgZm9yIChjb25zdCBlZ3Jlc3NQcm9wIG9mIHByb3BzLmVncmVzc1J1bGVQcm9wZXJ0eUNoYW5nZXMpIHtcbiAgICAgIHRoaXMuZWdyZXNzLmFkZE9sZCguLi50aGlzLnJlYWRJbmxpbmVSdWxlcyhlZ3Jlc3NQcm9wLm9sZFZhbHVlLCBlZ3Jlc3NQcm9wLnJlc291cmNlTG9naWNhbElkKSk7XG4gICAgICB0aGlzLmVncmVzcy5hZGROZXcoLi4udGhpcy5yZWFkSW5saW5lUnVsZXMoZWdyZXNzUHJvcC5uZXdWYWx1ZSwgZWdyZXNzUHJvcC5yZXNvdXJjZUxvZ2ljYWxJZCkpO1xuICAgIH1cblxuICAgIC8vIFJ1bGUgcmVzb3VyY2VzXG4gICAgZm9yIChjb25zdCBpbmdyZXNzUmVzIG9mIHByb3BzLmluZ3Jlc3NSdWxlUmVzb3VyY2VDaGFuZ2VzKSB7XG4gICAgICB0aGlzLmluZ3Jlc3MuYWRkT2xkKC4uLnRoaXMucmVhZFJ1bGVSZXNvdXJjZShpbmdyZXNzUmVzLm9sZFByb3BlcnRpZXMpKTtcbiAgICAgIHRoaXMuaW5ncmVzcy5hZGROZXcoLi4udGhpcy5yZWFkUnVsZVJlc291cmNlKGluZ3Jlc3NSZXMubmV3UHJvcGVydGllcykpO1xuICAgIH1cbiAgICBmb3IgKGNvbnN0IGVncmVzc1JlcyBvZiBwcm9wcy5lZ3Jlc3NSdWxlUmVzb3VyY2VDaGFuZ2VzKSB7XG4gICAgICB0aGlzLmVncmVzcy5hZGRPbGQoLi4udGhpcy5yZWFkUnVsZVJlc291cmNlKGVncmVzc1Jlcy5vbGRQcm9wZXJ0aWVzKSk7XG4gICAgICB0aGlzLmVncmVzcy5hZGROZXcoLi4udGhpcy5yZWFkUnVsZVJlc291cmNlKGVncmVzc1Jlcy5uZXdQcm9wZXJ0aWVzKSk7XG4gICAgfVxuXG4gICAgdGhpcy5pbmdyZXNzLmNhbGN1bGF0ZURpZmYoKTtcbiAgICB0aGlzLmVncmVzcy5jYWxjdWxhdGVEaWZmKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGhhc0NoYW5nZXMoKSB7XG4gICAgcmV0dXJuIHRoaXMuaW5ncmVzcy5oYXNDaGFuZ2VzIHx8IHRoaXMuZWdyZXNzLmhhc0NoYW5nZXM7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJuIGEgc3VtbWFyeSB0YWJsZSBvZiBjaGFuZ2VzXG4gICAqL1xuICBwdWJsaWMgc3VtbWFyaXplKCk6IHN0cmluZ1tdW10ge1xuICAgIGNvbnN0IHJldDogc3RyaW5nW11bXSA9IFtdO1xuXG4gICAgY29uc3QgaGVhZGVyID0gWycnLCAnR3JvdXAnLCAnRGlyJywgJ1Byb3RvY29sJywgJ1BlZXInXTtcblxuICAgIGNvbnN0IGluV29yZCA9ICdJbic7XG4gICAgY29uc3Qgb3V0V29yZCA9ICdPdXQnO1xuXG4gICAgLy8gUmVuZGVyIGEgc2luZ2xlIHJ1bGUgdG8gdGhlIHRhYmxlIChjdXJyaWVkIGZ1bmN0aW9uIHNvIHdlIGNhbiBtYXAgaXQgYWNyb3NzIHJ1bGVzIGVhc2lseS0tdGhhbmsgeW91IEphdmFTY3JpcHQhKVxuICAgIGNvbnN0IHJlbmRlclJ1bGUgPSAocGx1c01pbjogc3RyaW5nLCBpbk91dDogc3RyaW5nKSA9PiAocnVsZTogU2VjdXJpdHlHcm91cFJ1bGUpID0+IFtcbiAgICAgIHBsdXNNaW4sXG4gICAgICBydWxlLmdyb3VwSWQsXG4gICAgICBpbk91dCxcbiAgICAgIHJ1bGUuZGVzY3JpYmVQcm90b2NvbCgpLFxuICAgICAgcnVsZS5kZXNjcmliZVBlZXIoKSxcbiAgICBdLm1hcChzID0+IHBsdXNNaW4gPT09ICcrJyA/IGNoYWxrLmdyZWVuKHMpIDogY2hhbGsucmVkKHMpKTtcblxuICAgIC8vIEZpcnN0IGdlbmVyYXRlIGFsbCBsaW5lcywgc29ydCBsYXRlclxuICAgIHJldC5wdXNoKC4uLnRoaXMuaW5ncmVzcy5hZGRpdGlvbnMubWFwKHJlbmRlclJ1bGUoJysnLCBpbldvcmQpKSk7XG4gICAgcmV0LnB1c2goLi4udGhpcy5lZ3Jlc3MuYWRkaXRpb25zLm1hcChyZW5kZXJSdWxlKCcrJywgb3V0V29yZCkpKTtcbiAgICByZXQucHVzaCguLi50aGlzLmluZ3Jlc3MucmVtb3ZhbHMubWFwKHJlbmRlclJ1bGUoJy0nLCBpbldvcmQpKSk7XG4gICAgcmV0LnB1c2goLi4udGhpcy5lZ3Jlc3MucmVtb3ZhbHMubWFwKHJlbmRlclJ1bGUoJy0nLCBvdXRXb3JkKSkpO1xuXG4gICAgLy8gU29ydCBieSBncm91cCBuYW1lIHRoZW4gaW5ncmVzcy9lZ3Jlc3MgKGluZ3Jlc3MgZmlyc3QpXG4gICAgcmV0LnNvcnQobWFrZUNvbXBhcmF0b3IoKHJvdzogc3RyaW5nW10pID0+IFtyb3dbMV0sIHJvd1syXS5pbmRleE9mKGluV29yZCkgPiAtMSA/IDAgOiAxXSkpO1xuXG4gICAgcmV0LnNwbGljZSgwLCAwLCBoZWFkZXIpO1xuXG4gICAgcmV0dXJuIHJldDtcbiAgfVxuXG4gIHB1YmxpYyB0b0pzb24oKTogU2VjdXJpdHlHcm91cENoYW5nZXNKc29uIHtcbiAgICByZXR1cm4gZGVlcFJlbW92ZVVuZGVmaW5lZCh7XG4gICAgICBpbmdyZXNzUnVsZUFkZGl0aW9uczogZHJvcElmRW1wdHkodGhpcy5pbmdyZXNzLmFkZGl0aW9ucy5tYXAocyA9PiBzLnRvSnNvbigpKSksXG4gICAgICBpbmdyZXNzUnVsZVJlbW92YWxzOiBkcm9wSWZFbXB0eSh0aGlzLmluZ3Jlc3MucmVtb3ZhbHMubWFwKHMgPT4gcy50b0pzb24oKSkpLFxuICAgICAgZWdyZXNzUnVsZUFkZGl0aW9uczogZHJvcElmRW1wdHkodGhpcy5lZ3Jlc3MuYWRkaXRpb25zLm1hcChzID0+IHMudG9Kc29uKCkpKSxcbiAgICAgIGVncmVzc1J1bGVSZW1vdmFsczogZHJvcElmRW1wdHkodGhpcy5lZ3Jlc3MucmVtb3ZhbHMubWFwKHMgPT4gcy50b0pzb24oKSkpLFxuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIGdldCBydWxlc0FkZGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmluZ3Jlc3MuaGFzQWRkaXRpb25zXG4gICAgICAgIHx8IHRoaXMuZWdyZXNzLmhhc0FkZGl0aW9ucztcbiAgfVxuXG4gIHByaXZhdGUgcmVhZElubGluZVJ1bGVzKHJ1bGVzOiBhbnksIGxvZ2ljYWxJZDogc3RyaW5nKTogU2VjdXJpdHlHcm91cFJ1bGVbXSB7XG4gICAgaWYgKCFydWxlcyB8fCAhQXJyYXkuaXNBcnJheShydWxlcykpIHsgcmV0dXJuIFtdOyB9XG5cbiAgICAvLyBVbkNsb3VkRm9ybWF0aW9uIHNvIHRoZSBwYXJzZXIgd29ya3MgaW4gYW4gZWFzaWVyIGRvbWFpblxuXG4gICAgY29uc3QgcmVmID0gJyR7JyArIGxvZ2ljYWxJZCArICcuR3JvdXBJZH0nO1xuICAgIHJldHVybiBydWxlcy5mbGF0TWFwKChyOiBhbnkpID0+IHtcbiAgICAgIGNvbnN0IHJlbmRlcmVkID0gcmVuZGVySW50cmluc2ljcyhyKTtcbiAgICAgIC8vIFNlY3VyaXR5R3JvdXBSdWxlIGlzIG5vdCByb2J1c3QgYWdhaW5zdCB1bnBhcnNlZCBvYmplY3RzXG4gICAgICByZXR1cm4gdHlwZW9mIHJlbmRlcmVkID09PSAnb2JqZWN0JyA/IFtuZXcgU2VjdXJpdHlHcm91cFJ1bGUocmVuZGVyZWQsIHJlZildIDogW107XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHJlYWRSdWxlUmVzb3VyY2UocmVzb3VyY2U6IGFueSk6IFNlY3VyaXR5R3JvdXBSdWxlW10ge1xuICAgIGlmICghcmVzb3VyY2UpIHsgcmV0dXJuIFtdOyB9XG5cbiAgICAvLyBVbkNsb3VkRm9ybWF0aW9uIHNvIHRoZSBwYXJzZXIgd29ya3MgaW4gYW4gZWFzaWVyIGRvbWFpblxuXG4gICAgcmV0dXJuIFtuZXcgU2VjdXJpdHlHcm91cFJ1bGUocmVuZGVySW50cmluc2ljcyhyZXNvdXJjZSkpXTtcbiAgfVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNlY3VyaXR5R3JvdXBDaGFuZ2VzSnNvbiB7XG4gIGluZ3Jlc3NSdWxlQWRkaXRpb25zPzogUnVsZUpzb25bXTtcbiAgaW5ncmVzc1J1bGVSZW1vdmFscz86IFJ1bGVKc29uW107XG4gIGVncmVzc1J1bGVBZGRpdGlvbnM/OiBSdWxlSnNvbltdO1xuICBlZ3Jlc3NSdWxlUmVtb3ZhbHM/OiBSdWxlSnNvbltdO1xufVxuIl19","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.SecurityGroupRule = void 0;\n/**\n * A single security group rule, either egress or ingress\n */\nclass SecurityGroupRule {\n constructor(ruleObject, groupRef) {\n this.ipProtocol = ruleObject.IpProtocol?.toString() || '*unknown*';\n this.fromPort = ruleObject.FromPort;\n this.toPort = ruleObject.ToPort;\n this.groupId = ruleObject.GroupId || groupRef || '*unknown*'; // In case of an inline rule\n this.peer =\n findFirst(ruleObject, ['CidrIp', 'CidrIpv6'], (ip) => ({ kind: 'cidr-ip', ip }))\n ||\n findFirst(ruleObject, ['DestinationSecurityGroupId', 'SourceSecurityGroupId'], (securityGroupId) => ({ kind: 'security-group', securityGroupId }))\n ||\n findFirst(ruleObject, ['DestinationPrefixListId', 'SourcePrefixListId'], (prefixListId) => ({ kind: 'prefix-list', prefixListId }));\n }\n equal(other) {\n return this.ipProtocol === other.ipProtocol\n && this.fromPort === other.fromPort\n && this.toPort === other.toPort\n && peerEqual(this.peer, other.peer);\n }\n describeProtocol() {\n if (this.ipProtocol === '-1') {\n return 'Everything';\n }\n const ipProtocol = this.ipProtocol.toUpperCase();\n if (this.fromPort === -1) {\n return `All ${ipProtocol}`;\n }\n if (this.fromPort === this.toPort) {\n return `${ipProtocol} ${this.fromPort}`;\n }\n return `${ipProtocol} ${this.fromPort}-${this.toPort}`;\n }\n describePeer() {\n if (this.peer) {\n switch (this.peer.kind) {\n case 'cidr-ip':\n if (this.peer.ip === '0.0.0.0/0') {\n return 'Everyone (IPv4)';\n }\n if (this.peer.ip === '::/0') {\n return 'Everyone (IPv6)';\n }\n return `${this.peer.ip}`;\n case 'prefix-list': return `${this.peer.prefixListId}`;\n case 'security-group': return `${this.peer.securityGroupId}`;\n }\n }\n return '?';\n }\n toJson() {\n return {\n groupId: this.groupId,\n ipProtocol: this.ipProtocol,\n fromPort: this.fromPort,\n toPort: this.toPort,\n peer: this.peer,\n };\n }\n}\nexports.SecurityGroupRule = SecurityGroupRule;\nfunction peerEqual(a, b) {\n if ((a === undefined) !== (b === undefined)) {\n return false;\n }\n if (a === undefined) {\n return true;\n }\n if (a.kind !== b.kind) {\n return false;\n }\n switch (a.kind) {\n case 'cidr-ip': return a.ip === b.ip;\n case 'security-group': return a.securityGroupId === b.securityGroupId;\n case 'prefix-list': return a.prefixListId === b.prefixListId;\n }\n}\nfunction findFirst(obj, keys, fn) {\n for (const key of keys) {\n try {\n if (key in obj) {\n return fn(obj[key]);\n }\n }\n catch (e) {\n debugger;\n }\n }\n return undefined;\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VjdXJpdHktZ3JvdXAtcnVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInNlY3VyaXR5LWdyb3VwLXJ1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUE7O0dBRUc7QUFDSCxNQUFhLGlCQUFpQjtJQTBCNUIsWUFBWSxVQUFlLEVBQUUsUUFBaUI7UUFDNUMsSUFBSSxDQUFDLFVBQVUsR0FBRyxVQUFVLENBQUMsVUFBVSxFQUFFLFFBQVEsRUFBRSxJQUFJLFdBQVcsQ0FBQztRQUNuRSxJQUFJLENBQUMsUUFBUSxHQUFHLFVBQVUsQ0FBQyxRQUFRLENBQUM7UUFDcEMsSUFBSSxDQUFDLE1BQU0sR0FBRyxVQUFVLENBQUMsTUFBTSxDQUFDO1FBQ2hDLElBQUksQ0FBQyxPQUFPLEdBQUcsVUFBVSxDQUFDLE9BQU8sSUFBSSxRQUFRLElBQUksV0FBVyxDQUFDLENBQUMsNEJBQTRCO1FBRTFGLElBQUksQ0FBQyxJQUFJO1lBQ0wsU0FBUyxDQUFDLFVBQVUsRUFDbEIsQ0FBQyxRQUFRLEVBQUUsVUFBVSxDQUFDLEVBQ3RCLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxFQUFFLEVBQWlCLENBQUEsQ0FBQzs7b0JBRWxELFNBQVMsQ0FBQyxVQUFVLEVBQ2xCLENBQUMsNEJBQTRCLEVBQUUsdUJBQXVCLENBQUMsRUFDdkQsQ0FBQyxlQUFlLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsZ0JBQWdCLEVBQUUsZUFBZSxFQUF3QixDQUFBLENBQUM7O29CQUUxRixTQUFTLENBQUMsVUFBVSxFQUNsQixDQUFDLHlCQUF5QixFQUFFLG9CQUFvQixDQUFDLEVBQ2pELENBQUMsWUFBWSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLGFBQWEsRUFBRSxZQUFZLEVBQXFCLENBQUEsQ0FBQyxDQUFDO0lBQ3JGLENBQUM7SUFFTSxLQUFLLENBQUMsS0FBd0I7UUFDbkMsT0FBTyxJQUFJLENBQUMsVUFBVSxLQUFLLEtBQUssQ0FBQyxVQUFVO2VBQ3BDLElBQUksQ0FBQyxRQUFRLEtBQUssS0FBSyxDQUFDLFFBQVE7ZUFDaEMsSUFBSSxDQUFDLE1BQU0sS0FBSyxLQUFLLENBQUMsTUFBTTtlQUM1QixTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDMUMsQ0FBQztJQUVNLGdCQUFnQjtRQUNyQixJQUFJLElBQUksQ0FBQyxVQUFVLEtBQUssSUFBSSxFQUFFLENBQUM7WUFBQyxPQUFPLFlBQVksQ0FBQztRQUFDLENBQUM7UUFFdEQsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUVqRCxJQUFJLElBQUksQ0FBQyxRQUFRLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUFDLE9BQU8sT0FBTyxVQUFVLEVBQUUsQ0FBQztRQUFDLENBQUM7UUFDekQsSUFBSSxJQUFJLENBQUMsUUFBUSxLQUFLLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUFDLE9BQU8sR0FBRyxVQUFVLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQUMsQ0FBQztRQUMvRSxPQUFPLEdBQUcsVUFBVSxJQUFJLElBQUksQ0FBQyxRQUFRLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO0lBQ3pELENBQUM7SUFFTSxZQUFZO1FBQ2pCLElBQUksSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ2QsUUFBUSxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO2dCQUN2QixLQUFLLFNBQVM7b0JBQ1osSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsS0FBSyxXQUFXLEVBQUUsQ0FBQzt3QkFBQyxPQUFPLGlCQUFpQixDQUFDO29CQUFDLENBQUM7b0JBQy9ELElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLEtBQUssTUFBTSxFQUFFLENBQUM7d0JBQUMsT0FBTyxpQkFBaUIsQ0FBQztvQkFBQyxDQUFDO29CQUMxRCxPQUFPLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLEVBQUUsQ0FBQztnQkFDM0IsS0FBSyxhQUFhLENBQUMsQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztnQkFDdkQsS0FBSyxnQkFBZ0IsQ0FBQyxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1lBQy9ELENBQUM7UUFDSCxDQUFDO1FBRUQsT0FBTyxHQUFHLENBQUM7SUFDYixDQUFDO0lBRU0sTUFBTTtRQUNYLE9BQU87WUFDTCxPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU87WUFDckIsVUFBVSxFQUFFLElBQUksQ0FBQyxVQUFVO1lBQzNCLFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBUTtZQUN2QixNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU07WUFDbkIsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJO1NBQ2hCLENBQUM7SUFDSixDQUFDO0NBQ0Y7QUF2RkQsOENBdUZDO0FBbUJELFNBQVMsU0FBUyxDQUFDLENBQVksRUFBRSxDQUFZO0lBQzNDLElBQUksQ0FBQyxDQUFDLEtBQUssU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDLEtBQUssU0FBUyxDQUFDLEVBQUUsQ0FBQztRQUFDLE9BQU8sS0FBSyxDQUFDO0lBQUMsQ0FBQztJQUM5RCxJQUFJLENBQUMsS0FBSyxTQUFTLEVBQUUsQ0FBQztRQUFDLE9BQU8sSUFBSSxDQUFDO0lBQUMsQ0FBQztJQUVyQyxJQUFJLENBQUMsQ0FBQyxJQUFJLEtBQUssQ0FBRSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQUMsT0FBTyxLQUFLLENBQUM7SUFBQyxDQUFDO0lBQ3pDLFFBQVEsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ2YsS0FBSyxTQUFTLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFFLEtBQU0sQ0FBYyxDQUFDLEVBQUUsQ0FBQztRQUNuRCxLQUFLLGdCQUFnQixDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsZUFBZSxLQUFNLENBQWMsQ0FBQyxlQUFlLENBQUM7UUFDcEYsS0FBSyxhQUFhLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxZQUFZLEtBQU0sQ0FBYyxDQUFDLFlBQVksQ0FBQztJQUM3RSxDQUFDO0FBQ0gsQ0FBQztBQUVELFNBQVMsU0FBUyxDQUFJLEdBQVEsRUFBRSxJQUFjLEVBQUUsRUFBb0I7SUFDbEUsS0FBSyxNQUFNLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQztRQUN2QixJQUFJLENBQUM7WUFDSCxJQUFJLEdBQUcsSUFBSSxHQUFHLEVBQUUsQ0FBQztnQkFDZixPQUFPLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztZQUN0QixDQUFDO1FBQ0gsQ0FBQztRQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7WUFDWCxRQUFRLENBQUM7UUFDWCxDQUFDO0lBQ0gsQ0FBQztJQUNELE9BQU8sU0FBUyxDQUFDO0FBQ25CLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEEgc2luZ2xlIHNlY3VyaXR5IGdyb3VwIHJ1bGUsIGVpdGhlciBlZ3Jlc3Mgb3IgaW5ncmVzc1xuICovXG5leHBvcnQgY2xhc3MgU2VjdXJpdHlHcm91cFJ1bGUge1xuICAvKipcbiAgICogR3JvdXAgSUQgb2YgdGhlIGdyb3VwIHRoaXMgcnVsZSBhcHBsaWVzIHRvXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgZ3JvdXBJZDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBJUCBwcm90b2NvbCB0aGlzIHJ1bGUgYXBwbGllcyB0b1xuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGlwUHJvdG9jb2w6IHN0cmluZztcblxuICAvKipcbiAgICogU3RhcnQgb2YgcG9ydCByYW5nZSB0aGlzIHJ1bGUgYXBwbGllcyB0bywgb3IgSUNNUCB0eXBlXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgZnJvbVBvcnQ/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIEVuZCBvZiBwb3J0IHJhbmdlIHRoaXMgcnVsZSBhcHBsaWVzIHRvLCBvciBJQ01QIGNvZGVcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSB0b1BvcnQ/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIFBlZXIgb2YgdGhpcyBydWxlXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgcGVlcj86IFJ1bGVQZWVyO1xuXG4gIGNvbnN0cnVjdG9yKHJ1bGVPYmplY3Q6IGFueSwgZ3JvdXBSZWY/OiBzdHJpbmcpIHtcbiAgICB0aGlzLmlwUHJvdG9jb2wgPSBydWxlT2JqZWN0LklwUHJvdG9jb2w/LnRvU3RyaW5nKCkgfHwgJyp1bmtub3duKic7XG4gICAgdGhpcy5mcm9tUG9ydCA9IHJ1bGVPYmplY3QuRnJvbVBvcnQ7XG4gICAgdGhpcy50b1BvcnQgPSBydWxlT2JqZWN0LlRvUG9ydDtcbiAgICB0aGlzLmdyb3VwSWQgPSBydWxlT2JqZWN0Lkdyb3VwSWQgfHwgZ3JvdXBSZWYgfHwgJyp1bmtub3duKic7IC8vIEluIGNhc2Ugb2YgYW4gaW5saW5lIHJ1bGVcblxuICAgIHRoaXMucGVlciA9XG4gICAgICAgIGZpbmRGaXJzdChydWxlT2JqZWN0LFxuICAgICAgICAgIFsnQ2lkcklwJywgJ0NpZHJJcHY2J10sXG4gICAgICAgICAgKGlwKSA9PiAoeyBraW5kOiAnY2lkci1pcCcsIGlwIH0gYXMgQ2lkcklwUGVlcikpXG4gICAgICAgIHx8XG4gICAgICAgIGZpbmRGaXJzdChydWxlT2JqZWN0LFxuICAgICAgICAgIFsnRGVzdGluYXRpb25TZWN1cml0eUdyb3VwSWQnLCAnU291cmNlU2VjdXJpdHlHcm91cElkJ10sXG4gICAgICAgICAgKHNlY3VyaXR5R3JvdXBJZCkgPT4gKHsga2luZDogJ3NlY3VyaXR5LWdyb3VwJywgc2VjdXJpdHlHcm91cElkIH0gYXMgU2VjdXJpdHlHcm91cFBlZXIpKVxuICAgICAgICB8fFxuICAgICAgICBmaW5kRmlyc3QocnVsZU9iamVjdCxcbiAgICAgICAgICBbJ0Rlc3RpbmF0aW9uUHJlZml4TGlzdElkJywgJ1NvdXJjZVByZWZpeExpc3RJZCddLFxuICAgICAgICAgIChwcmVmaXhMaXN0SWQpID0+ICh7IGtpbmQ6ICdwcmVmaXgtbGlzdCcsIHByZWZpeExpc3RJZCB9IGFzIFByZWZpeExpc3RQZWVyKSk7XG4gIH1cblxuICBwdWJsaWMgZXF1YWwob3RoZXI6IFNlY3VyaXR5R3JvdXBSdWxlKSB7XG4gICAgcmV0dXJuIHRoaXMuaXBQcm90b2NvbCA9PT0gb3RoZXIuaXBQcm90b2NvbFxuICAgICAgICAmJiB0aGlzLmZyb21Qb3J0ID09PSBvdGhlci5mcm9tUG9ydFxuICAgICAgICAmJiB0aGlzLnRvUG9ydCA9PT0gb3RoZXIudG9Qb3J0XG4gICAgICAgICYmIHBlZXJFcXVhbCh0aGlzLnBlZXIsIG90aGVyLnBlZXIpO1xuICB9XG5cbiAgcHVibGljIGRlc2NyaWJlUHJvdG9jb2woKSB7XG4gICAgaWYgKHRoaXMuaXBQcm90b2NvbCA9PT0gJy0xJykgeyByZXR1cm4gJ0V2ZXJ5dGhpbmcnOyB9XG5cbiAgICBjb25zdCBpcFByb3RvY29sID0gdGhpcy5pcFByb3RvY29sLnRvVXBwZXJDYXNlKCk7XG5cbiAgICBpZiAodGhpcy5mcm9tUG9ydCA9PT0gLTEpIHsgcmV0dXJuIGBBbGwgJHtpcFByb3RvY29sfWA7IH1cbiAgICBpZiAodGhpcy5mcm9tUG9ydCA9PT0gdGhpcy50b1BvcnQpIHsgcmV0dXJuIGAke2lwUHJvdG9jb2x9ICR7dGhpcy5mcm9tUG9ydH1gOyB9XG4gICAgcmV0dXJuIGAke2lwUHJvdG9jb2x9ICR7dGhpcy5mcm9tUG9ydH0tJHt0aGlzLnRvUG9ydH1gO1xuICB9XG5cbiAgcHVibGljIGRlc2NyaWJlUGVlcigpIHtcbiAgICBpZiAodGhpcy5wZWVyKSB7XG4gICAgICBzd2l0Y2ggKHRoaXMucGVlci5raW5kKSB7XG4gICAgICAgIGNhc2UgJ2NpZHItaXAnOlxuICAgICAgICAgIGlmICh0aGlzLnBlZXIuaXAgPT09ICcwLjAuMC4wLzAnKSB7IHJldHVybiAnRXZlcnlvbmUgKElQdjQpJzsgfVxuICAgICAgICAgIGlmICh0aGlzLnBlZXIuaXAgPT09ICc6Oi8wJykgeyByZXR1cm4gJ0V2ZXJ5b25lIChJUHY2KSc7IH1cbiAgICAgICAgICByZXR1cm4gYCR7dGhpcy5wZWVyLmlwfWA7XG4gICAgICAgIGNhc2UgJ3ByZWZpeC1saXN0JzogcmV0dXJuIGAke3RoaXMucGVlci5wcmVmaXhMaXN0SWR9YDtcbiAgICAgICAgY2FzZSAnc2VjdXJpdHktZ3JvdXAnOiByZXR1cm4gYCR7dGhpcy5wZWVyLnNlY3VyaXR5R3JvdXBJZH1gO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiAnPyc7XG4gIH1cblxuICBwdWJsaWMgdG9Kc29uKCk6IFJ1bGVKc29uIHtcbiAgICByZXR1cm4ge1xuICAgICAgZ3JvdXBJZDogdGhpcy5ncm91cElkLFxuICAgICAgaXBQcm90b2NvbDogdGhpcy5pcFByb3RvY29sLFxuICAgICAgZnJvbVBvcnQ6IHRoaXMuZnJvbVBvcnQsXG4gICAgICB0b1BvcnQ6IHRoaXMudG9Qb3J0LFxuICAgICAgcGVlcjogdGhpcy5wZWVyLFxuICAgIH07XG4gIH1cbn1cblxuZXhwb3J0IGludGVyZmFjZSBDaWRySXBQZWVyIHtcbiAga2luZDogJ2NpZHItaXAnO1xuICBpcDogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNlY3VyaXR5R3JvdXBQZWVyIHtcbiAga2luZDogJ3NlY3VyaXR5LWdyb3VwJztcbiAgc2VjdXJpdHlHcm91cElkOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUHJlZml4TGlzdFBlZXIge1xuICBraW5kOiAncHJlZml4LWxpc3QnO1xuICBwcmVmaXhMaXN0SWQ6IHN0cmluZztcbn1cblxuZXhwb3J0IHR5cGUgUnVsZVBlZXIgPSBDaWRySXBQZWVyIHwgU2VjdXJpdHlHcm91cFBlZXIgfCBQcmVmaXhMaXN0UGVlcjtcblxuZnVuY3Rpb24gcGVlckVxdWFsKGE/OiBSdWxlUGVlciwgYj86IFJ1bGVQZWVyKSB7XG4gIGlmICgoYSA9PT0gdW5kZWZpbmVkKSAhPT0gKGIgPT09IHVuZGVmaW5lZCkpIHsgcmV0dXJuIGZhbHNlOyB9XG4gIGlmIChhID09PSB1bmRlZmluZWQpIHsgcmV0dXJuIHRydWU7IH1cblxuICBpZiAoYS5raW5kICE9PSBiIS5raW5kKSB7IHJldHVybiBmYWxzZTsgfVxuICBzd2l0Y2ggKGEua2luZCkge1xuICAgIGNhc2UgJ2NpZHItaXAnOiByZXR1cm4gYS5pcCA9PT0gKGIgYXMgdHlwZW9mIGEpLmlwO1xuICAgIGNhc2UgJ3NlY3VyaXR5LWdyb3VwJzogcmV0dXJuIGEuc2VjdXJpdHlHcm91cElkID09PSAoYiBhcyB0eXBlb2YgYSkuc2VjdXJpdHlHcm91cElkO1xuICAgIGNhc2UgJ3ByZWZpeC1saXN0JzogcmV0dXJuIGEucHJlZml4TGlzdElkID09PSAoYiBhcyB0eXBlb2YgYSkucHJlZml4TGlzdElkO1xuICB9XG59XG5cbmZ1bmN0aW9uIGZpbmRGaXJzdDxUPihvYmo6IGFueSwga2V5czogc3RyaW5nW10sIGZuOiAoeDogc3RyaW5nKSA9PiBUKTogVCB8IHVuZGVmaW5lZCB7XG4gIGZvciAoY29uc3Qga2V5IG9mIGtleXMpIHtcbiAgICB0cnkge1xuICAgICAgaWYgKGtleSBpbiBvYmopIHtcbiAgICAgICAgcmV0dXJuIGZuKG9ialtrZXldKTtcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBkZWJ1Z2dlcjtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHVuZGVmaW5lZDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBSdWxlSnNvbiB7XG4gIGdyb3VwSWQ6IHN0cmluZztcbiAgaXBQcm90b2NvbDogc3RyaW5nO1xuICBmcm9tUG9ydD86IG51bWJlcjtcbiAgdG9Qb3J0PzogbnVtYmVyO1xuICBwZWVyPzogUnVsZVBlZXI7XG59Il19","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.renderIntrinsics = void 0;\n/**\n * Turn CloudFormation intrinsics into strings\n *\n * ------\n *\n * This stringification is not intended to be mechanically reversible! It's intended\n * to be understood by humans!\n *\n * ------\n *\n * Turns Fn::GetAtt and Fn::Ref objects into the same strings that can be\n * parsed by Fn::Sub, but without the surrounding intrinsics.\n *\n * Evaluates Fn::Join directly if the second argument is a literal list of strings.\n *\n * Removes list and object values evaluating to { Ref: 'AWS::NoValue' }.\n *\n * For other intrinsics we choose a string representation that CloudFormation\n * cannot actually parse, but is comprehensible to humans.\n */\nfunction renderIntrinsics(x) {\n if (Array.isArray(x)) {\n return x.filter(el => !isNoValue(el)).map(renderIntrinsics);\n }\n if (isNoValue(x)) {\n return undefined;\n }\n const intrinsic = getIntrinsic(x);\n if (intrinsic) {\n if (intrinsic.fn === 'Ref') {\n return '${' + intrinsic.args + '}';\n }\n if (intrinsic.fn === 'Fn::GetAtt') {\n return '${' + intrinsic.args[0] + '.' + intrinsic.args[1] + '}';\n }\n if (intrinsic.fn === 'Fn::Join') {\n return unCloudFormationFnJoin(intrinsic.args[0], intrinsic.args[1]);\n }\n return stringifyIntrinsic(intrinsic.fn, intrinsic.args);\n }\n if (typeof x === 'object' && x !== null) {\n const ret = {};\n for (const [key, value] of Object.entries(x)) {\n if (!isNoValue(value)) {\n ret[key] = renderIntrinsics(value);\n }\n }\n return ret;\n }\n return x;\n}\nexports.renderIntrinsics = renderIntrinsics;\nfunction unCloudFormationFnJoin(separator, args) {\n if (Array.isArray(args)) {\n return args.filter(el => !isNoValue(el)).map(renderIntrinsics).join(separator);\n }\n return stringifyIntrinsic('Fn::Join', [separator, args]);\n}\nfunction stringifyIntrinsic(fn, args) {\n return JSON.stringify({ [fn]: renderIntrinsics(args) });\n}\nfunction getIntrinsic(x) {\n if (x === undefined || x === null || Array.isArray(x)) {\n return undefined;\n }\n if (typeof x !== 'object') {\n return undefined;\n }\n const keys = Object.keys(x);\n return keys.length === 1 && (keys[0] === 'Ref' || keys[0].startsWith('Fn::')) ? { fn: keys[0], args: x[keys[0]] } : undefined;\n}\nfunction isNoValue(x) {\n const int = getIntrinsic(x);\n return int && int.fn === 'Ref' && int.args === 'AWS::NoValue';\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVuZGVyLWludHJpbnNpY3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJyZW5kZXItaW50cmluc2ljcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQW1CRztBQUNILFNBQWdCLGdCQUFnQixDQUFDLENBQU07SUFDckMsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDckIsT0FBTyxDQUFDLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztJQUM5RCxDQUFDO0lBRUQsSUFBSSxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUFDLE9BQU8sU0FBUyxDQUFDO0lBQUMsQ0FBQztJQUV2QyxNQUFNLFNBQVMsR0FBRyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDbEMsSUFBSSxTQUFTLEVBQUUsQ0FBQztRQUNkLElBQUksU0FBUyxDQUFDLEVBQUUsS0FBSyxLQUFLLEVBQUUsQ0FBQztZQUFDLE9BQU8sSUFBSSxHQUFHLFNBQVMsQ0FBQyxJQUFJLEdBQUcsR0FBRyxDQUFDO1FBQUMsQ0FBQztRQUNuRSxJQUFJLFNBQVMsQ0FBQyxFQUFFLEtBQUssWUFBWSxFQUFFLENBQUM7WUFBQyxPQUFPLElBQUksR0FBRyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsR0FBRyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQztRQUFDLENBQUM7UUFDdkcsSUFBSSxTQUFTLENBQUMsRUFBRSxLQUFLLFVBQVUsRUFBRSxDQUFDO1lBQUMsT0FBTyxzQkFBc0IsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUFDLENBQUM7UUFDekcsT0FBTyxrQkFBa0IsQ0FBQyxTQUFTLENBQUMsRUFBRSxFQUFFLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUMxRCxDQUFDO0lBRUQsSUFBSSxPQUFPLENBQUMsS0FBSyxRQUFRLElBQUksQ0FBQyxLQUFLLElBQUksRUFBRSxDQUFDO1FBQ3hDLE1BQU0sR0FBRyxHQUFRLEVBQUUsQ0FBQztRQUNwQixLQUFLLE1BQU0sQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQzdDLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztnQkFDdEIsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ3JDLENBQUM7UUFDSCxDQUFDO1FBQ0QsT0FBTyxHQUFHLENBQUM7SUFDYixDQUFDO0lBQ0QsT0FBTyxDQUFDLENBQUM7QUFDWCxDQUFDO0FBekJELDRDQXlCQztBQUVELFNBQVMsc0JBQXNCLENBQUMsU0FBaUIsRUFBRSxJQUFTO0lBQzFELElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO1FBQ3hCLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLGdCQUFnQixDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ2pGLENBQUM7SUFDRCxPQUFPLGtCQUFrQixDQUFDLFVBQVUsRUFBRSxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDO0FBQzNELENBQUM7QUFFRCxTQUFTLGtCQUFrQixDQUFDLEVBQVUsRUFBRSxJQUFTO0lBQy9DLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQzFELENBQUM7QUFFRCxTQUFTLFlBQVksQ0FBQyxDQUFNO0lBQzFCLElBQUksQ0FBQyxLQUFLLFNBQVMsSUFBSSxDQUFDLEtBQUssSUFBSSxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUFDLE9BQU8sU0FBUyxDQUFDO0lBQUMsQ0FBQztJQUM1RSxJQUFJLE9BQU8sQ0FBQyxLQUFLLFFBQVEsRUFBRSxDQUFDO1FBQUMsT0FBTyxTQUFTLENBQUM7SUFBQyxDQUFDO0lBQ2hELE1BQU0sSUFBSSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDNUIsT0FBTyxJQUFJLENBQUMsTUFBTSxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxLQUFLLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7QUFDaEksQ0FBQztBQUVELFNBQVMsU0FBUyxDQUFDLENBQU07SUFDdkIsTUFBTSxHQUFHLEdBQUcsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzVCLE9BQU8sR0FBRyxJQUFJLEdBQUcsQ0FBQyxFQUFFLEtBQUssS0FBSyxJQUFJLEdBQUcsQ0FBQyxJQUFJLEtBQUssY0FBYyxDQUFDO0FBQ2hFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFR1cm4gQ2xvdWRGb3JtYXRpb24gaW50cmluc2ljcyBpbnRvIHN0cmluZ3NcbiAqXG4gKiAtLS0tLS1cbiAqXG4gKiBUaGlzIHN0cmluZ2lmaWNhdGlvbiBpcyBub3QgaW50ZW5kZWQgdG8gYmUgbWVjaGFuaWNhbGx5IHJldmVyc2libGUhIEl0J3MgaW50ZW5kZWRcbiAqIHRvIGJlIHVuZGVyc3Rvb2QgYnkgaHVtYW5zIVxuICpcbiAqIC0tLS0tLVxuICpcbiAqIFR1cm5zIEZuOjpHZXRBdHQgYW5kIEZuOjpSZWYgb2JqZWN0cyBpbnRvIHRoZSBzYW1lIHN0cmluZ3MgdGhhdCBjYW4gYmVcbiAqIHBhcnNlZCBieSBGbjo6U3ViLCBidXQgd2l0aG91dCB0aGUgc3Vycm91bmRpbmcgaW50cmluc2ljcy5cbiAqXG4gKiBFdmFsdWF0ZXMgRm46OkpvaW4gZGlyZWN0bHkgaWYgdGhlIHNlY29uZCBhcmd1bWVudCBpcyBhIGxpdGVyYWwgbGlzdCBvZiBzdHJpbmdzLlxuICpcbiAqIFJlbW92ZXMgbGlzdCBhbmQgb2JqZWN0IHZhbHVlcyBldmFsdWF0aW5nIHRvIHsgUmVmOiAnQVdTOjpOb1ZhbHVlJyB9LlxuICpcbiAqIEZvciBvdGhlciBpbnRyaW5zaWNzIHdlIGNob29zZSBhIHN0cmluZyByZXByZXNlbnRhdGlvbiB0aGF0IENsb3VkRm9ybWF0aW9uXG4gKiBjYW5ub3QgYWN0dWFsbHkgcGFyc2UsIGJ1dCBpcyBjb21wcmVoZW5zaWJsZSB0byBodW1hbnMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZW5kZXJJbnRyaW5zaWNzKHg6IGFueSk6IGFueSB7XG4gIGlmIChBcnJheS5pc0FycmF5KHgpKSB7XG4gICAgcmV0dXJuIHguZmlsdGVyKGVsID0+ICFpc05vVmFsdWUoZWwpKS5tYXAocmVuZGVySW50cmluc2ljcyk7XG4gIH1cblxuICBpZiAoaXNOb1ZhbHVlKHgpKSB7IHJldHVybiB1bmRlZmluZWQ7IH1cblxuICBjb25zdCBpbnRyaW5zaWMgPSBnZXRJbnRyaW5zaWMoeCk7XG4gIGlmIChpbnRyaW5zaWMpIHtcbiAgICBpZiAoaW50cmluc2ljLmZuID09PSAnUmVmJykgeyByZXR1cm4gJyR7JyArIGludHJpbnNpYy5hcmdzICsgJ30nOyB9XG4gICAgaWYgKGludHJpbnNpYy5mbiA9PT0gJ0ZuOjpHZXRBdHQnKSB7IHJldHVybiAnJHsnICsgaW50cmluc2ljLmFyZ3NbMF0gKyAnLicgKyBpbnRyaW5zaWMuYXJnc1sxXSArICd9JzsgfVxuICAgIGlmIChpbnRyaW5zaWMuZm4gPT09ICdGbjo6Sm9pbicpIHsgcmV0dXJuIHVuQ2xvdWRGb3JtYXRpb25GbkpvaW4oaW50cmluc2ljLmFyZ3NbMF0sIGludHJpbnNpYy5hcmdzWzFdKTsgfVxuICAgIHJldHVybiBzdHJpbmdpZnlJbnRyaW5zaWMoaW50cmluc2ljLmZuLCBpbnRyaW5zaWMuYXJncyk7XG4gIH1cblxuICBpZiAodHlwZW9mIHggPT09ICdvYmplY3QnICYmIHggIT09IG51bGwpIHtcbiAgICBjb25zdCByZXQ6IGFueSA9IHt9O1xuICAgIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKHgpKSB7XG4gICAgICBpZiAoIWlzTm9WYWx1ZSh2YWx1ZSkpIHtcbiAgICAgICAgcmV0W2tleV0gPSByZW5kZXJJbnRyaW5zaWNzKHZhbHVlKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHJldDtcbiAgfVxuICByZXR1cm4geDtcbn1cblxuZnVuY3Rpb24gdW5DbG91ZEZvcm1hdGlvbkZuSm9pbihzZXBhcmF0b3I6IHN0cmluZywgYXJnczogYW55KSB7XG4gIGlmIChBcnJheS5pc0FycmF5KGFyZ3MpKSB7XG4gICAgcmV0dXJuIGFyZ3MuZmlsdGVyKGVsID0+ICFpc05vVmFsdWUoZWwpKS5tYXAocmVuZGVySW50cmluc2ljcykuam9pbihzZXBhcmF0b3IpO1xuICB9XG4gIHJldHVybiBzdHJpbmdpZnlJbnRyaW5zaWMoJ0ZuOjpKb2luJywgW3NlcGFyYXRvciwgYXJnc10pO1xufVxuXG5mdW5jdGlvbiBzdHJpbmdpZnlJbnRyaW5zaWMoZm46IHN0cmluZywgYXJnczogYW55KSB7XG4gIHJldHVybiBKU09OLnN0cmluZ2lmeSh7IFtmbl06IHJlbmRlckludHJpbnNpY3MoYXJncykgfSk7XG59XG5cbmZ1bmN0aW9uIGdldEludHJpbnNpYyh4OiBhbnkpOiBJbnRyaW5zaWMgfCB1bmRlZmluZWQge1xuICBpZiAoeCA9PT0gdW5kZWZpbmVkIHx8IHggPT09IG51bGwgfHwgQXJyYXkuaXNBcnJheSh4KSkgeyByZXR1cm4gdW5kZWZpbmVkOyB9XG4gIGlmICh0eXBlb2YgeCAhPT0gJ29iamVjdCcpIHsgcmV0dXJuIHVuZGVmaW5lZDsgfVxuICBjb25zdCBrZXlzID0gT2JqZWN0LmtleXMoeCk7XG4gIHJldHVybiBrZXlzLmxlbmd0aCA9PT0gMSAmJiAoa2V5c1swXSA9PT0gJ1JlZicgfHwga2V5c1swXS5zdGFydHNXaXRoKCdGbjo6JykpID8geyBmbjoga2V5c1swXSwgYXJnczogeFtrZXlzWzBdXSB9IDogdW5kZWZpbmVkO1xufVxuXG5mdW5jdGlvbiBpc05vVmFsdWUoeDogYW55KSB7XG4gIGNvbnN0IGludCA9IGdldEludHJpbnNpYyh4KTtcbiAgcmV0dXJuIGludCAmJiBpbnQuZm4gPT09ICdSZWYnICYmIGludC5hcmdzID09PSAnQVdTOjpOb1ZhbHVlJztcbn1cblxuaW50ZXJmYWNlIEludHJpbnNpYyB7XG4gIGZuOiBzdHJpbmc7XG4gIGFyZ3M6IGFueTtcbn0iXX0=","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.flatMap = exports.deepRemoveUndefined = exports.dropIfEmpty = exports.makeComparator = void 0;\n/**\n * Turn a (multi-key) extraction function into a comparator for use in Array.sort()\n */\nfunction makeComparator(keyFn) {\n return (a, b) => {\n const keyA = keyFn(a);\n const keyB = keyFn(b);\n const len = Math.min(keyA.length, keyB.length);\n for (let i = 0; i < len; i++) {\n const c = compare(keyA[i], keyB[i]);\n if (c !== 0) {\n return c;\n }\n }\n // Arrays are the same up to the min length -- shorter array sorts first\n return keyA.length - keyB.length;\n };\n}\nexports.makeComparator = makeComparator;\nfunction compare(a, b) {\n if (a < b) {\n return -1;\n }\n if (b < a) {\n return 1;\n }\n return 0;\n}\nfunction dropIfEmpty(xs) {\n return xs.length > 0 ? xs : undefined;\n}\nexports.dropIfEmpty = dropIfEmpty;\nfunction deepRemoveUndefined(x) {\n if (typeof x === undefined || x === null) {\n return x;\n }\n if (Array.isArray(x)) {\n return x.map(deepRemoveUndefined);\n }\n if (typeof x === 'object') {\n for (const [key, value] of Object.entries(x)) {\n x[key] = deepRemoveUndefined(value);\n if (x[key] === undefined) {\n delete x[key];\n }\n }\n return x;\n }\n return x;\n}\nexports.deepRemoveUndefined = deepRemoveUndefined;\nfunction flatMap(xs, f) {\n const ret = new Array();\n for (const x of xs) {\n ret.push(...f(x));\n }\n return ret;\n}\nexports.flatMap = flatMap;\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInV0aWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUE7O0dBRUc7QUFDSCxTQUFnQixjQUFjLENBQU8sS0FBb0I7SUFDdkQsT0FBTyxDQUFDLENBQUksRUFBRSxDQUFJLEVBQUUsRUFBRTtRQUNwQixNQUFNLElBQUksR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDdEIsTUFBTSxJQUFJLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3RCLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7UUFFL0MsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEdBQUcsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO1lBQzdCLE1BQU0sQ0FBQyxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDcEMsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7Z0JBQUMsT0FBTyxDQUFDLENBQUM7WUFBQyxDQUFDO1FBQzVCLENBQUM7UUFFRCx3RUFBd0U7UUFDeEUsT0FBTyxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUM7SUFDbkMsQ0FBQyxDQUFDO0FBQ0osQ0FBQztBQWRELHdDQWNDO0FBRUQsU0FBUyxPQUFPLENBQUksQ0FBSSxFQUFFLENBQUk7SUFDNUIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7UUFBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO0lBQUMsQ0FBQztJQUN6QixJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztRQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQUMsQ0FBQztJQUN4QixPQUFPLENBQUMsQ0FBQztBQUNYLENBQUM7QUFFRCxTQUFnQixXQUFXLENBQUksRUFBTztJQUNwQyxPQUFPLEVBQUUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztBQUN4QyxDQUFDO0FBRkQsa0NBRUM7QUFFRCxTQUFnQixtQkFBbUIsQ0FBQyxDQUFNO0lBQ3hDLElBQUksT0FBTyxDQUFDLEtBQUssU0FBUyxJQUFJLENBQUMsS0FBSyxJQUFJLEVBQUUsQ0FBQztRQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQUMsQ0FBQztJQUN2RCxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO0lBQUMsQ0FBQztJQUM1RCxJQUFJLE9BQU8sQ0FBQyxLQUFLLFFBQVEsRUFBRSxDQUFDO1FBQzFCLEtBQUssTUFBTSxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFDN0MsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLG1CQUFtQixDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ3BDLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxLQUFLLFNBQVMsRUFBRSxDQUFDO2dCQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQUMsQ0FBQztRQUM5QyxDQUFDO1FBQ0QsT0FBTyxDQUFDLENBQUM7SUFDWCxDQUFDO0lBQ0QsT0FBTyxDQUFDLENBQUM7QUFDWCxDQUFDO0FBWEQsa0RBV0M7QUFFRCxTQUFnQixPQUFPLENBQU8sRUFBTyxFQUFFLENBQWdCO0lBQ3JELE1BQU0sR0FBRyxHQUFHLElBQUksS0FBSyxFQUFLLENBQUM7SUFDM0IsS0FBSyxNQUFNLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQztRQUNuQixHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDcEIsQ0FBQztJQUNELE9BQU8sR0FBRyxDQUFDO0FBQ2IsQ0FBQztBQU5ELDBCQU1DIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBUdXJuIGEgKG11bHRpLWtleSkgZXh0cmFjdGlvbiBmdW5jdGlvbiBpbnRvIGEgY29tcGFyYXRvciBmb3IgdXNlIGluIEFycmF5LnNvcnQoKVxuICovXG5leHBvcnQgZnVuY3Rpb24gbWFrZUNvbXBhcmF0b3I8VCwgVT4oa2V5Rm46ICh4OiBUKSA9PiBVW10pIHtcbiAgcmV0dXJuIChhOiBULCBiOiBUKSA9PiB7XG4gICAgY29uc3Qga2V5QSA9IGtleUZuKGEpO1xuICAgIGNvbnN0IGtleUIgPSBrZXlGbihiKTtcbiAgICBjb25zdCBsZW4gPSBNYXRoLm1pbihrZXlBLmxlbmd0aCwga2V5Qi5sZW5ndGgpO1xuXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsZW47IGkrKykge1xuICAgICAgY29uc3QgYyA9IGNvbXBhcmUoa2V5QVtpXSwga2V5QltpXSk7XG4gICAgICBpZiAoYyAhPT0gMCkgeyByZXR1cm4gYzsgfVxuICAgIH1cblxuICAgIC8vIEFycmF5cyBhcmUgdGhlIHNhbWUgdXAgdG8gdGhlIG1pbiBsZW5ndGggLS0gc2hvcnRlciBhcnJheSBzb3J0cyBmaXJzdFxuICAgIHJldHVybiBrZXlBLmxlbmd0aCAtIGtleUIubGVuZ3RoO1xuICB9O1xufVxuXG5mdW5jdGlvbiBjb21wYXJlPFQ+KGE6IFQsIGI6IFQpIHtcbiAgaWYgKGEgPCBiKSB7IHJldHVybiAtMTsgfVxuICBpZiAoYiA8IGEpIHsgcmV0dXJuIDE7IH1cbiAgcmV0dXJuIDA7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkcm9wSWZFbXB0eTxUPih4czogVFtdKTogVFtdIHwgdW5kZWZpbmVkIHtcbiAgcmV0dXJuIHhzLmxlbmd0aCA+IDAgPyB4cyA6IHVuZGVmaW5lZDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRlZXBSZW1vdmVVbmRlZmluZWQoeDogYW55KTogYW55IHtcbiAgaWYgKHR5cGVvZiB4ID09PSB1bmRlZmluZWQgfHwgeCA9PT0gbnVsbCkgeyByZXR1cm4geDsgfVxuICBpZiAoQXJyYXkuaXNBcnJheSh4KSkgeyByZXR1cm4geC5tYXAoZGVlcFJlbW92ZVVuZGVmaW5lZCk7IH1cbiAgaWYgKHR5cGVvZiB4ID09PSAnb2JqZWN0Jykge1xuICAgIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKHgpKSB7XG4gICAgICB4W2tleV0gPSBkZWVwUmVtb3ZlVW5kZWZpbmVkKHZhbHVlKTtcbiAgICAgIGlmICh4W2tleV0gPT09IHVuZGVmaW5lZCkgeyBkZWxldGUgeFtrZXldOyB9XG4gICAgfVxuICAgIHJldHVybiB4O1xuICB9XG4gIHJldHVybiB4O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZmxhdE1hcDxULCBVPih4czogVFtdLCBmOiAoeDogVCkgPT4gVVtdKTogVVtdIHtcbiAgY29uc3QgcmV0ID0gbmV3IEFycmF5PFU+KCk7XG4gIGZvciAoY29uc3QgeCBvZiB4cykge1xuICAgIHJldC5wdXNoKC4uLmYoeCkpO1xuICB9XG4gIHJldHVybiByZXQ7XG59XG4iXX0=","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./types/database\"), exports);\n__exportStar(require(\"./types/resource\"), exports);\n__exportStar(require(\"./types/augmentations\"), exports);\n__exportStar(require(\"./types/metrics\"), exports);\n__exportStar(require(\"./types/diff\"), exports);\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLG1EQUFpQztBQUNqQyxtREFBaUM7QUFDakMsd0RBQXNDO0FBQ3RDLGtEQUFnQztBQUNoQywrQ0FBNkIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL3R5cGVzL2RhdGFiYXNlJztcbmV4cG9ydCAqIGZyb20gJy4vdHlwZXMvcmVzb3VyY2UnO1xuZXhwb3J0ICogZnJvbSAnLi90eXBlcy9hdWdtZW50YXRpb25zJztcbmV4cG9ydCAqIGZyb20gJy4vdHlwZXMvbWV0cmljcyc7XG5leHBvcnQgKiBmcm9tICcuL3R5cGVzL2RpZmYnO1xuIl19","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXVnbWVudGF0aW9ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90eXBlcy9hdWdtZW50YXRpb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFbnRpdHksIFJlbGF0aW9uc2hpcCB9IGZyb20gJ0BjZGtsYWJzL3Rza2InO1xuaW1wb3J0IHsgUmVzb3VyY2UgfSBmcm9tICcuL3Jlc291cmNlJztcblxuLyoqXG4gKiBBdWdtZW50YXRpb25zIGZvciBhIENsb3VkRm9ybWF0aW9uIHJlc291cmNlIHR5cGVcbiAqXG4gKiBBdWdtZW50YXRpb25zIGFyZSBhIGRlcHJlY2F0ZWQgbWVjaGFuaXNtIGZvciBhdXRvbWF0aWNhbGx5IGdlbmVyYXRpbmcgbWV0cmljc1xuICogZnVuY3Rpb25zIGZvciBjZXJ0YWluIHJlc291cmNlcywgdXRpbGl6aW5nIFR5cGVTY3JpcHQgbWl4aW5zLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJlc291cmNlQXVnbWVudGF0aW9uIGV4dGVuZHMgRW50aXR5IHtcbiAgLyoqXG4gICAqIE1ldHJpYyBhdWdtZW50YXRpb25zIGZvciB0aGlzIHJlc291cmNlIHR5cGVcbiAgICovXG4gIG1ldHJpY3M/OiBSZXNvdXJjZU1ldHJpY0F1Z21lbnRhdGlvbnM7XG5cbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSBmaWxlIGNvbnRhaW5pbmcgdGhlIGNsYXNzIHRvIGJlIFwiYXVnbWVudGVkXCIuXG4gICAqXG4gICAqIEBkZWZhdWx0IGtlYmFiIGNhc2VkIENsb3VkRm9ybWF0aW9uIHJlc291cmNlIG5hbWUgKyAnLWJhc2UnXG4gICAqL1xuICBiYXNlQ2xhc3NGaWxlPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgY2xhc3MgdG8gYmUgXCJhdWdtZW50ZWRcIi5cbiAgICpcbiAgICogQGRlZmF1bHQgQ2xvdWRGb3JtYXRpb24gcmVzb3VyY2UgbmFtZSArICdCYXNlJ1xuICAgKi9cbiAgYmFzZUNsYXNzPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgZmlsZSBjb250YWluaW5nIHRoZSBpbnRlcmZhY2UgdG8gYmUgXCJhdWdtZW50ZWRcIi5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBzYW1lIGFzIGBgY2xhc3NGaWxlYGAuXG4gICAqL1xuICBpbnRlcmZhY2VGaWxlPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgaW50ZXJmYWNlIHRvIGJlIFwiYXVnbWVudGVkXCIuXG4gICAqXG4gICAqIEBkZWZhdWx0ICdJJyArIENsb3VkRm9ybWF0aW9uIHJlc291cmNlIG5hbWVcbiAgICovXG4gIGludGVyZmFjZT86IHN0cmluZztcbn1cblxuZXhwb3J0IHR5cGUgSXNBdWdtZW50ZWRSZXNvdXJjZSA9IFJlbGF0aW9uc2hpcDxSZXNvdXJjZSwgUmVzb3VyY2VBdWdtZW50YXRpb24+O1xuXG5leHBvcnQgaW50ZXJmYWNlIFJlc291cmNlTWV0cmljQXVnbWVudGF0aW9ucyB7XG4gIC8qKlxuICAgKiBUaGUgbmFtZXNwYWNlIG9mIG1ldHJpY3MgZm9yIHRoaXMgc2VydmljZVxuICAgKi9cbiAgbmFtZXNwYWNlOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBwcm9wZXJ0aWVzIG9mIHRoZSByZXNvdXJjZSBjbGFzcyB0aGF0IHByb3ZpZGUgdmFsdWVzIGZvciB0aGUgZGltZW5zaW9uc1xuICAgKlxuICAgKiBGb3IgZXhhbXBsZSwgYHsgUXVldWVOYW1lOiAncXVldWVOYW1lJyB9YCBzYXlzIHRoYXQgdGhlIG1ldHJpYyBoYXMgYSBgUXVldWVOYW1lYFxuICAgKiBkaW1lbnNpb24sIGZvciB3aGljaCB0aGUgdmFsdWUgY2FuIGJlIG9idGFpbmVkIGJ5IHJlYWRpbmcgYHRoaXMucXVldWVOYW1lYC5cbiAgICovXG4gIGRpbWVuc2lvbnM6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH07XG5cbiAgLyoqXG4gICAqIFRoZSBtZXRyaWNzIGZvciB0aGlzIHJlc291cmNlXG4gICAqL1xuICBtZXRyaWNzOiBSZXNvdXJjZU1ldHJpY1tdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFJlc291cmNlTWV0cmljIHtcbiAgLyoqXG4gICAqIFVwcGVyY2FzZS1maXJzdCBtZXRyaWMgbmFtZVxuICAgKi9cbiAgbmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBEb2N1bWVudGF0aW9uIGxpbmVcbiAgICovXG4gIGRvY3VtZW50YXRpb246IHN0cmluZztcblxuICAvKipcbiAgICogV2hldGhlciB0aGlzIGlzIGFuIGV2ZW4gY291bnQgKDEgZ2V0cyBlbWl0dGVkIGV2ZXJ5IHRpbWUgc29tZXRoaW5nIG9jY3VycylcbiAgICpcbiAgICogQGRlZmF1bHQgTWV0cmljVHlwZS5BdHRyaWJcbiAgICovXG4gIHR5cGU/OiBNZXRyaWNUeXBlO1xufVxuXG5leHBvcnQgdHlwZSBNZXRyaWNUeXBlID1cbiAgLyoqXG4gICAqIFRoaXMgbWV0cmljIGlzIGVtaXR0ZWQgZm9yIGV2ZW50cywgbWVhc3VyaW5nIGEgYXR0cmlidXRlIG9mIHRoZSBldmVudC5cbiAgICpcbiAgICogVHlwaWNhbCBleGFtcGxlcyBvZiB0aGlzIHdvdWxkIGJlIGR1cmF0aW9uLCBvciByZXF1ZXN0IHNpemUsIG9yIHNpbWlsYXIuXG4gICAqXG4gICAqIFRoZSBkZWZhdWx0IGFnZ3JlZ2F0ZSBmb3IgdGhpcyB0eXBlIG9mIGV2ZW50IGlzIFwiQXZnXCIuXG4gICAqL1xuICB8ICdhdHRyaWInXG5cbiAgLyoqXG4gICAqIFRoaXMgbWV0cmljIGlzIGVtaXR0ZWQgZm9yIGV2ZW50cywgYW5kIHRoZSB2YWx1ZSBpcyBhbHdheXMgYDFgLlxuICAgKlxuICAgKiBPbmx5IFwiU3VtXCIgaXMgYSBtZWFuaW5nZnVsIGFnZ3JlZ2F0ZSBvZiB0aGlzIHR5cGUgb2YgbWV0cmljOyBhbGwgb3RoZXJcbiAgICogYWdncmVnYXRpb25zIHdpbGwgb25seSBldmVyIHByb2R1Y2UgdGhlIHZhbHVlIGAxYC5cbiAgICovXG4gIHwgJ2NvdW50J1xuXG4gIC8qKlxuICAgKiBUaGlzIG1ldHJpYyBpcyBlbWl0dGVkIHBlcmlvZGljYWxseSwgcmVwcmVzZW50aW5nIGEgc3lzdGVtIHByb3BlcnR5LlxuICAgKlxuICAgKiBUaGUgbWV0cmljIG1lYXN1cmVzIHNvbWUgZ2xvYmFsIGV2ZXItY2hhbmdpbmcgcHJvcGVydHksIGFuZCBkb2VzIG5vdFxuICAgKiBtZWFzdXJlIGV2ZW50cy4gVGhlIG1vc3QgdXNlZnVsIGFnZ3JlZ2F0ZSBvZiB0aGlzIHR5cGUgb2YgbWV0cmljIGlzIFwiTWF4XCIuXG4gICAqL1xuICB8ICdnYXVnZSc7XG4iXX0=","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.RichSpecDatabase = exports.loadDatabase = exports.emptyDatabase = void 0;\nconst fs_1 = require(\"fs\");\nconst zlib_1 = require(\"zlib\");\nconst tskb_1 = require(\"@cdklabs/tskb\");\nfunction emptyDatabase() {\n return new tskb_1.Database({\n resource: (0, tskb_1.entityCollection)().index({\n cloudFormationType: (0, tskb_1.fieldIndex)('cloudFormationType', tskb_1.stringCmp),\n }),\n region: (0, tskb_1.entityCollection)().index({\n name: (0, tskb_1.fieldIndex)('name', tskb_1.stringCmp),\n }),\n service: (0, tskb_1.entityCollection)().index({\n name: (0, tskb_1.fieldIndex)('name', tskb_1.stringCmp),\n cloudFormationNamespace: (0, tskb_1.fieldIndex)('cloudFormationNamespace', tskb_1.stringCmp),\n }),\n typeDefinition: (0, tskb_1.entityCollection)(),\n augmentations: (0, tskb_1.entityCollection)(),\n metric: (0, tskb_1.entityCollection)().index({\n name: (0, tskb_1.fieldIndex)('name', tskb_1.stringCmp),\n namespace: (0, tskb_1.fieldIndex)('namespace', tskb_1.stringCmp),\n dedupKey: (0, tskb_1.fieldIndex)('dedupKey', tskb_1.stringCmp),\n }),\n dimensionSet: (0, tskb_1.entityCollection)().index({\n dedupKey: (0, tskb_1.fieldIndex)('dedupKey', tskb_1.stringCmp),\n }),\n }, (r) => ({\n hasResource: r.relationship('service', 'resource'),\n regionHasResource: r.relationship('region', 'resource'),\n regionHasService: r.relationship('region', 'service'),\n usesType: r.relationship('resource', 'typeDefinition'),\n isAugmented: r.relationship('resource', 'augmentations'),\n usesDimensionSet: r.relationship('metric', 'dimensionSet'),\n resourceHasMetric: r.relationship('resource', 'metric'),\n serviceHasMetric: r.relationship('service', 'metric'),\n resourceHasDimensionSet: r.relationship('resource', 'dimensionSet'),\n serviceHasDimensionSet: r.relationship('service', 'dimensionSet'),\n }));\n}\nexports.emptyDatabase = emptyDatabase;\nasync function loadDatabase(pathToDb) {\n const db = emptyDatabase();\n const contents = await fs_1.promises.readFile(pathToDb);\n const json = pathToDb.endsWith('.gz') ? (0, zlib_1.gunzipSync)(contents).toString('utf-8') : contents.toString('utf-8');\n db.load(JSON.parse(json));\n return db;\n}\nexports.loadDatabase = loadDatabase;\n/**\n * Helpers for working with a SpecDatabase\n */\nclass RichSpecDatabase {\n constructor(db) {\n this.db = db;\n }\n /**\n * Find all resources of a given type\n */\n resourceByType(cfnType, operation = 'resourceByType') {\n const res = this.db.lookup('resource', 'cloudFormationType', 'equals', cfnType);\n if (res.length === 0) {\n throw new Error(`${operation}: no such resource: ${cfnType}`);\n }\n return res[0];\n }\n /**\n * All type definitions used by a certain resource\n */\n resourceTypeDefs(cfnType) {\n const resource = this.db.lookup('resource', 'cloudFormationType', 'equals', cfnType).only();\n return this.db.follow('usesType', resource).map((x) => x.entity);\n }\n /**\n * Find a type definition from a given property type\n */\n tryFindDef(type) {\n return type.type === 'ref' ? this.db.get('typeDefinition', type.reference.$ref) : undefined;\n }\n}\nexports.RichSpecDatabase = RichSpecDatabase;\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YWJhc2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdHlwZXMvZGF0YWJhc2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsMkJBQW9DO0FBQ3BDLCtCQUFrQztBQUNsQyx3Q0FBa0Y7QUF1QmxGLFNBQWdCLGFBQWE7SUFDM0IsT0FBTyxJQUFJLGVBQVEsQ0FDakI7UUFDRSxRQUFRLEVBQUUsSUFBQSx1QkFBZ0IsR0FBWSxDQUFDLEtBQUssQ0FBQztZQUMzQyxrQkFBa0IsRUFBRSxJQUFBLGlCQUFVLEVBQUMsb0JBQW9CLEVBQUUsZ0JBQVMsQ0FBQztTQUNoRSxDQUFDO1FBQ0YsTUFBTSxFQUFFLElBQUEsdUJBQWdCLEdBQVUsQ0FBQyxLQUFLLENBQUM7WUFDdkMsSUFBSSxFQUFFLElBQUEsaUJBQVUsRUFBQyxNQUFNLEVBQUUsZ0JBQVMsQ0FBQztTQUNwQyxDQUFDO1FBQ0YsT0FBTyxFQUFFLElBQUEsdUJBQWdCLEdBQVcsQ0FBQyxLQUFLLENBQUM7WUFDekMsSUFBSSxFQUFFLElBQUEsaUJBQVUsRUFBQyxNQUFNLEVBQUUsZ0JBQVMsQ0FBQztZQUNuQyx1QkFBdUIsRUFBRSxJQUFBLGlCQUFVLEVBQUMseUJBQXlCLEVBQUUsZ0JBQVMsQ0FBQztTQUMxRSxDQUFDO1FBQ0YsY0FBYyxFQUFFLElBQUEsdUJBQWdCLEdBQWtCO1FBQ2xELGFBQWEsRUFBRSxJQUFBLHVCQUFnQixHQUF3QjtRQUN2RCxNQUFNLEVBQUUsSUFBQSx1QkFBZ0IsR0FBVSxDQUFDLEtBQUssQ0FBQztZQUN2QyxJQUFJLEVBQUUsSUFBQSxpQkFBVSxFQUFDLE1BQU0sRUFBRSxnQkFBUyxDQUFDO1lBQ25DLFNBQVMsRUFBRSxJQUFBLGlCQUFVLEVBQUMsV0FBVyxFQUFFLGdCQUFTLENBQUM7WUFDN0MsUUFBUSxFQUFFLElBQUEsaUJBQVUsRUFBQyxVQUFVLEVBQUUsZ0JBQVMsQ0FBQztTQUM1QyxDQUFDO1FBQ0YsWUFBWSxFQUFFLElBQUEs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QUFDLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDbkUsQ0FBQztJQUVEOztPQUVHO0lBQ0ksVUFBVSxDQUFDLElBQWtCO1FBQ2xDLE9BQU8sSUFBSSxDQUFDLElBQUksS0FBSyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLGdCQUFnQixFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztJQUM5RixDQUFDO0NBQ0Y7QUE1QkQsNENBNEJDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgcHJvbWlzZXMgYXMgZnMgfSBmcm9tICdmcyc7XG5pbXBvcnQgeyBndW56aXBTeW5jIH0gZnJvbSAnemxpYic7XG5pbXBvcnQgeyBEYXRhYmFzZSwgZW50aXR5Q29sbGVjdGlvbiwgZmllbGRJbmRleCwgc3RyaW5nQ21wIH0gZnJvbSAnQGNka2xhYnMvdHNrYic7XG5pbXBvcnQgeyBJc0F1Z21lbnRlZFJlc291cmNlLCBSZXNvdXJjZUF1Z21lbnRhdGlvbiB9IGZyb20gJy4vYXVnbWVudGF0aW9ucyc7XG5pbXBvcnQge1xuICBEaW1lbnNpb25TZXQsXG4gIE1ldHJpYyxcbiAgUmVzb3VyY2VIYXNEaW1lbnNpb25TZXQsXG4gIFNlcnZpY2VIYXNEaW1lbnNpb25TZXQsXG4gIFVzZXNEaW1lbnNpb25TZXQsXG4gIFJlc291cmNlSGFzTWV0cmljLFxuICBTZXJ2aWNlSGFzTWV0cmljLFxufSBmcm9tICcuL21ldHJpY3MnO1xuaW1wb3J0IHtcbiAgUmVzb3VyY2UsXG4gIFNlcnZpY2UsXG4gIFR5cGVEZWZpbml0aW9uLFxuICBQcm9wZXJ0eVR5cGUsXG4gIFJlZ2lvbixcbiAgSGFzUmVzb3VyY2UsXG4gIFJlZ2lvbkhhc1Jlc291cmNlLFxuICBSZWdpb25IYXNTZXJ2aWNlLFxuICBVc2VzVHlwZSxcbn0gZnJvbSAnLi9yZXNvdXJjZSc7XG5cbmV4cG9ydCBmdW5jdGlvbiBlbXB0eURhdGFiYXNlKCkge1xuICByZXR1cm4gbmV3IERhdGFiYXNlKFxuICAgIHtcbiAgICAgIHJlc291cmNlOiBlbnRpdHlDb2xsZWN0aW9uPFJlc291cmNlPigpLmluZGV4KHtcbiAgICAgICAgY2xvdWRGb3JtYXRpb25UeXBlOiBmaWVsZEluZGV4KCdjbG91ZEZvcm1hdGlvblR5cGUnLCBzdHJpbmdDbXApLFxuICAgICAgfSksXG4gICAgICByZWdpb246IGVudGl0eUNvbGxlY3Rpb248UmVnaW9uPigpLmluZGV4KHtcbiAgICAgICAgbmFtZTogZmllbGRJbmRleCgnbmFtZScsIHN0cmluZ0NtcCksXG4gICAgICB9KSxcbiAgICAgIHNlcnZpY2U6IGVudGl0eUNvbGxlY3Rpb248U2VydmljZT4oKS5pbmRleCh7XG4gICAgICAgIG5hbWU6IGZpZWxkSW5kZXgoJ25hbWUnLCBzdHJpbmdDbXApLFxuICAgICAgICBjbG91ZEZvcm1hdGlvbk5hbWVzcGFjZTogZmllbGRJbmRleCgnY2xvdWRGb3JtYXRpb25OYW1lc3BhY2UnLCBzdHJpbmdDbXApLFxuICAgICAgfSksXG4gICAgICB0eXBlRGVmaW5pdGlvbjogZW50aXR5Q29sbGVjdGlvbjxUeXBlRGVmaW5pdGlvbj4oKSxcbiAgICAgIGF1Z21lbnRhdGlvbnM6IGVudGl0eUNvbGxlY3Rpb248UmVzb3VyY2VBdWdtZW50YXRpb24+KCksXG4gICAgICBtZXRyaWM6IGVudGl0eUNvbGxlY3Rpb248TWV0cmljPigpLmluZGV4KHtcbiAgICAgICAgbmFtZTogZmllbGRJbmRleCgnbmFtZScsIHN0cmluZ0NtcCksXG4gICAgICAgIG5hbWVzcGFjZTogZmllbGRJbmRleCgnbmFtZXNwYWNlJywgc3RyaW5nQ21wKSxcbiAgICAgICAgZGVkdXBLZXk6IGZpZWxkSW5kZXgoJ2RlZHVwS2V5Jywgc3RyaW5nQ21wKSxcbiAgICAgIH0pLFxuICAgICAgZGltZW5zaW9uU2V0OiBlbnRpdHlDb2xsZWN0aW9uPERpbWVuc2lvblNldD4oKS5pbmRleCh7XG4gICAgICAgIGRlZHVwS2V5OiBmaWVsZEluZGV4KCdkZWR1cEtleScsIHN0cmluZ0NtcCksXG4gICAgICB9KSxcbiAgICB9LFxuICAgIChyKSA9PiAoe1xuICAgICAgaGFzUmVzb3VyY2U6IHIucmVsYXRpb25zaGlwPEhhc1Jlc291cmNlPignc2VydmljZScsICdyZXNvdXJjZScpLFxuICAgICAgcmVnaW9uSGFzUmVzb3VyY2U6IHIucmVsYXRpb25zaGlwPFJlZ2lvbkhhc1Jlc291cmNlPigncmVnaW9uJywgJ3Jlc291cmNlJyksXG4gICAgICByZWdpb25IYXNTZXJ2aWNlOiByLnJlbGF0aW9uc2hpcDxSZWdpb25IYXNTZXJ2aWNlPigncmVnaW9uJywgJ3NlcnZpY2UnKSxcbiAgICAgIHVzZXNUeXBlOiByLnJlbGF0aW9uc2hpcDxVc2VzVHlwZT4oJ3Jlc291cmNlJywgJ3R5cGVEZWZpbml0aW9uJyksXG4gICAgICBpc0F1Z21lbnRlZDogci5yZWxhdGlvbnNoaXA8SXNBdWdtZW50ZWRSZXNvdXJjZT4oJ3Jlc291cmNlJywgJ2F1Z21lbnRhdGlvbnMnKSxcbiAgICAgIHVzZXNEaW1lbnNpb25TZXQ6IHIucmVsYXRpb25zaGlwPFVzZXNEaW1lbnNpb25TZXQ+KCdtZXRyaWMnLCAnZGltZW5zaW9uU2V0JyksXG4gICAgICByZXNvdXJjZUhhc01ldHJpYzogci5yZWxhdGlvbnNoaXA8UmVzb3VyY2VIYXNNZXRyaWM+KCdyZXNvdXJjZScsICdtZXRyaWMnKSxcbiAgICAgIHNlcnZpY2VIYXNNZXRyaWM6IHIucmVsYXRpb25zaGlwPFNlcnZpY2VIYXNNZXRyaWM+KCdzZXJ2aWNlJywgJ21ldHJpYycpLFxuICAgICAgcmVzb3VyY2VIYXNEaW1lbnNpb25TZXQ6IHIucmVsYXRpb25zaGlwPFJlc291cmNlSGFzRGltZW5zaW9uU2V0PigncmVzb3VyY2UnLCAnZGltZW5zaW9uU2V0JyksXG4gICAgICBzZXJ2aWNlSGFzRGltZW5zaW9uU2V0OiByLnJlbGF0aW9uc2hpcDxTZXJ2aWNlSGFzRGltZW5zaW9uU2V0Pignc2VydmljZScsICdkaW1lbnNpb25TZXQnKSxcbiAgICB9KSxcbiAgKTtcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGxvYWREYXRhYmFzZShwYXRoVG9EYjogc3RyaW5nKSB7XG4gIGNvbnN0IGRiID0gZW1wdHlEYXRhYmFzZSgpO1xuICBjb25zdCBjb250ZW50cyA9IGF3YWl0IGZzLnJlYWRGaWxlKHBhdGhUb0RiKTtcbiAgY29uc3QganNvbiA9IHBhdGhUb0RiLmVuZHNXaXRoKCcuZ3onKSA/IGd1bnppcFN5bmMoY29udGVudHMpLnRvU3RyaW5nKCd1dGYtOCcpIDogY29udGVudHMudG9TdHJpbmcoJ3V0Zi04Jyk7XG4gIGRiLmxvYWQoSlNPTi5wYXJzZShqc29uKSk7XG4gIHJldHVybiBkYjtcbn1cblxuZXhwb3J0IHR5cGUgU3BlY0RhdGFiYXNlID0gUmV0dXJuVHlwZTx0eXBlb2YgZW1wdHlEYXRhYmFzZT47XG5cbi8qKlxuICogSGVscGVycyBmb3Igd29ya2luZyB3aXRoIGEgU3BlY0RhdGFiYXNlXG4gKi9cbmV4cG9ydCBjbGFzcyBSaWNoU3BlY0RhdGFiYXNlIHtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBkYjogU3BlY0RhdGFiYXNlKSB7fVxuXG4gIC8qKlxuICAgKiBGaW5kIGFsbCByZXNvdXJjZXMgb2YgYSBnaXZlbiB0eXBlXG4gICAqL1xuICBwdWJsaWMgcmVzb3VyY2VCeVR5cGUoY2ZuVHlwZTogc3RyaW5nLCBvcGVyYXRpb24gPSAncmVzb3VyY2VCeVR5cGUnKTogUmVzb3VyY2Uge1xuICAgIGNvbnN0IHJlcyA9IHRoaXMuZGIubG9va3VwKCdyZXNvdXJjZScsICdjbG91ZEZvcm1hdGlvblR5cGUnLCAnZXF1YWxzJywgY2ZuVHlwZSk7XG4gICAgaWYgKHJlcy5sZW5ndGggPT09IDApIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgJHtvcGVyYXRpb259OiBubyBzdWNoIHJlc291cmNlOiAke2NmblR5cGV9YCk7XG4gICAgfVxuICAgIHJldHVybiByZXNbMF07XG4gIH1cblxuICAvKipcbiAgICogQWxsIHR5cGUgZGVmaW5pdGlvbnMgdXNlZCBieSBhIGNlcnRhaW4gcmVzb3VyY2VcbiAgICovXG4gIHB1YmxpYyByZXNvdXJjZVR5cGVEZWZzKGNmblR5cGU6IHN0cmluZyk6IHJlYWRvbmx5IFR5cGVEZWZpbml0aW9uW10ge1xuICAgIGNvbnN0IHJlc291cmNlID0gdGhpcy5kYi5sb29rdXAoJ3Jlc291cmNlJywgJ2Nsb3VkRm9ybWF0aW9uVHlwZScsICdlcXVhbHMnLCBjZm5UeXBlKS5vbmx5KCk7XG4gICAgcmV0dXJuIHRoaXMuZGIuZm9sbG93KCd1c2VzVHlwZScsIHJlc291cmNlKS5tYXAoKHgpID0+IHguZW50aXR5KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBGaW5kIGEgdHlwZSBkZWZpbml0aW9uIGZyb20gYSBnaXZlbiBwcm9wZXJ0eSB0eXBlXG4gICAqL1xuICBwdWJsaWMgdHJ5RmluZERlZih0eXBlOiBQcm9wZXJ0eVR5cGUpOiBUeXBlRGVmaW5pdGlvbiB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHR5cGUudHlwZSA9PT0gJ3JlZicgPyB0aGlzLmRiLmdldCgndHlwZURlZmluaXRpb24nLCB0eXBlLnJlZmVyZW5jZS4kcmVmKSA6IHVuZGVmaW5lZDtcbiAgfVxufVxuIl19","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlmZi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90eXBlcy9kaWZmLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBdHRyaWJ1dGUsIFByb3BlcnR5LCBSZXNvdXJjZSwgU2VydmljZSwgVHlwZURlZmluaXRpb24gfSBmcm9tICcuL3Jlc291cmNlJztcblxuZXhwb3J0IGludGVyZmFjZSBTcGVjRGF0YWJhc2VEaWZmIHtcbiAgc2VydmljZXM6IE1hcERpZmY8U2VydmljZSwgVXBkYXRlZFNlcnZpY2U+O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIExpc3REaWZmPEUsIEVEPiB7XG4gIHJlYWRvbmx5IGFkZGVkPzogRVtdO1xuICByZWFkb25seSByZW1vdmVkPzogRVtdO1xuICByZWFkb25seSB1cGRhdGVkPzogRURbXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBNYXBEaWZmPEUsIEVEPiB7XG4gIHJlYWRvbmx5IGFkZGVkPzogUmVjb3JkPHN0cmluZywgRT47XG4gIHJlYWRvbmx5IHJlbW92ZWQ/OiBSZWNvcmQ8c3RyaW5nLCBFPjtcbiAgcmVhZG9ubHkgdXBkYXRlZD86IFJlY29yZDxzdHJpbmcsIEVEPjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBVcGRhdGVkU2VydmljZSB7XG4gIHJlYWRvbmx5IG5hbWU/OiBTY2FsYXJEaWZmPFNlcnZpY2VbJ25hbWUnXT47XG4gIHJlYWRvbmx5IHNob3J0TmFtZT86IFNjYWxhckRpZmY8U2VydmljZVsnc2hvcnROYW1lJ10+O1xuICByZWFkb25seSBjYXBpdGFsaXplZD86IFNjYWxhckRpZmY8U2VydmljZVsnY2FwaXRhbGl6ZWQnXT47XG4gIHJlYWRvbmx5IGNsb3VkRm9ybWF0aW9uTmFtZXNwYWNlPzogU2NhbGFyRGlmZjxTZXJ2aWNlWydjbG91ZEZvcm1hdGlvbk5hbWVzcGFjZSddPjtcbiAgcmVhZG9ubHkgcmVzb3VyY2VEaWZmPzogTWFwRGlmZjxSZXNvdXJjZSwgVXBkYXRlZFJlc291cmNlPjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBVcGRhdGVkUmVzb3VyY2Uge1xuICByZWFkb25seSBuYW1lPzogU2NhbGFyRGlmZjxzdHJpbmc+O1xuICByZWFkb25seSBjbG91ZEZvcm1hdGlvblR5cGU/OiBTY2FsYXJEaWZmPHN0cmluZz47XG4gIHJlYWRvbmx5IGNsb3VkRm9ybWF0aW9uVHJhbnNmb3JtPzogU2NhbGFyRGlmZjxzdHJpbmc+O1xuICByZWFkb25seSBkb2N1bWVudGF0aW9uPzogU2NhbGFyRGlmZjxzdHJpbmc+O1xuICByZWFkb25seSBwcm9wZXJ0aWVzPzogTWFwRGlmZjxQcm9wZXJ0eSwgVXBkYXRlZFByb3BlcnR5PjtcbiAgcmVhZG9ubHkgYXR0cmlidXRlcz86IE1hcERpZmY8QXR0cmlidXRlLCBVcGRhdGVkQXR0cmlidXRlPjtcbiAgcmVhZG9ubHkgaWRlbnRpZmllcj86IFNjYWxhckRpZmY8UmVzb3VyY2VbJ2lkZW50aWZpZXInXT47XG4gIHJlYWRvbmx5IGlzU3RhdGVmdWw/OiBTY2FsYXJEaWZmPGJvb2xlYW4+O1xuICByZWFkb25seSB0YWdJbmZvcm1hdGlvbj86IFNjYWxhckRpZmY8UmVzb3VyY2VbJ3RhZ0luZm9ybWF0aW9uJ10+O1xuICByZWFkb25seSBzY3J1dGluaXphYmxlPzogU2NhbGFyRGlmZjxSZXNvdXJjZVsnc2NydXRpbml6YWJsZSddPjtcbiAgcmVhZG9ubHkgdHlwZURlZmluaXRpb25EaWZmPzogTWFwRGlmZjxUeXBlRGVmaW5pdGlvbiwgVXBkYXRlZFR5cGVEZWZpbml0aW9uPjtcbiAgcmVhZG9ubHkgcHJpbWFyeUlkZW50aWZpZXI/OiBMaXN0RGlmZjxzdHJpbmcsIHZvaWQ+O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFVwZGF0ZWRQcm9wZXJ0eSB7XG4gIHJlYWRvbmx5IG9sZDogUHJvcGVydHk7XG4gIHJlYWRvbmx5IG5ldzogUHJvcGVydHk7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVXBkYXRlZEF0dHJpYnV0ZSB7XG4gIHJlYWRvbmx5IG9sZDogQXR0cmlidXRlO1xuICByZWFkb25seSBuZXc6IEF0dHJpYnV0ZTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBVcGRhdGVkVHlwZURlZmluaXRpb24ge1xuICByZWFkb25seSBuYW1lPzogU2NhbGFyRGlmZjxzdHJpbmc+O1xuICByZWFkb25seSBkb2N1bWVudGF0aW9uPzogU2NhbGFyRGlmZjxzdHJpbmc+O1xuICByZWFkb25seSBwcm9wZXJ0aWVzPzogTWFwRGlmZjxQcm9wZXJ0eSwgVXBkYXRlZFByb3BlcnR5PjtcbiAgcmVhZG9ubHkgbXVzdFJlbmRlckZvckJ3Q29tcGF0PzogU2NhbGFyRGlmZjxib29sZWFuPjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTY2FsYXJEaWZmPEE+IHtcbiAgcmVhZG9ubHkgb2xkPzogQTtcbiAgcmVhZG9ubHkgbmV3PzogQTtcbn1cbiJdfQ==","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWV0cmljcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90eXBlcy9tZXRyaWNzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFbnRpdHksIFJlbGF0aW9uc2hpcCB9IGZyb20gJ0BjZGtsYWJzL3Rza2InO1xuaW1wb3J0IHsgUmVzb3VyY2UsIFNlcnZpY2UgfSBmcm9tICcuL3Jlc291cmNlJztcblxuLyoqXG4gKiBBIE1ldHJpYyBEaW1lbnNpb24gKG5vdCBhbiBlbnRpdHkpXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRGltZW5zaW9uIHtcbiAgLyoqXG4gICAqIE5hbWUgb2YgdGhlIGRpbWVuc2lvblxuICAgKi9cbiAgcmVhZG9ubHkgbmFtZTogc3RyaW5nO1xuICAvKipcbiAgICogQSBwb3RlbnRpYWwgdmFsdWUgZm9yIHRoaXMgZGltZW5zaW9uXG4gICAqL1xuICByZWFkb25seSB2YWx1ZT86IHN0cmluZztcbn1cblxuLyoqXG4gKiBBIHNldCBvZiBNZXRyaWMgRGltZW5zaW9uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRGltZW5zaW9uU2V0IGV4dGVuZHMgRW50aXR5IHtcbiAgLyoqXG4gICAqIEEgdW5pcXVlIHZhbHVlIHVzZWQgdG8gZGVkdXBsaWNhdGUgdGhlIGVudGl0eVxuICAgKi9cbiAgZGVkdXBLZXk6IHN0cmluZztcbiAgLyoqXG4gICAqIFRoZSBkaW1lbnNpb25zIGluIHRoaXMgc2V0XG4gICAqL1xuICBkaW1lbnNpb25zOiBEaW1lbnNpb25bXTtcbn1cbmV4cG9ydCB0eXBlIFJlc291cmNlSGFzRGltZW5zaW9uU2V0ID0gUmVsYXRpb25zaGlwPFJlc291cmNlLCBEaW1lbnNpb25TZXQ+O1xuZXhwb3J0IHR5cGUgU2VydmljZUhhc0RpbWVuc2lvblNldCA9IFJlbGF0aW9uc2hpcDxTZXJ2aWNlLCBEaW1lbnNpb25TZXQ+O1xuXG4vKipcbiAqIEEgQ2xvdWRXYXRjaCBNZXRyaWNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBNZXRyaWMgZXh0ZW5kcyBFbnRpdHkge1xuICAvKipcbiAgICogTWV0cmljIG5hbWVzcGFjZVxuICAgKi9cbiAgcmVhZG9ubHkgbmFtZXNwYWNlOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBOYW1lIG9mIHRoZSBtZXRyaWNcbiAgICovXG4gIHJlYWRvbmx5IG5hbWU6IHN0cmluZztcbiAgLyoqXG4gICAqIERlZmF1bHQgKHN1Z2dlc3RlZCkgc3RhdGlzdGljIGZvciB0aGlzIG1ldHJpY1xuICAgKi9cbiAgcmVhZG9ubHkgc3RhdGlzdGljOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBBIHVuaXF1ZSB2YWx1ZSB1c2VkIHRvIGRlZHVwbGljYXRlIHRoZSBlbnRpdHlcbiAgICovXG4gIHJlYWRvbmx5IGRlZHVwS2V5OiBzdHJpbmc7XG59XG5leHBvcnQgdHlwZSBVc2VzRGltZW5zaW9uU2V0ID0gUmVsYXRpb25zaGlwPE1ldHJpYywgRGltZW5zaW9uU2V0PjtcbmV4cG9ydCB0eXBlIFJlc291cmNlSGFzTWV0cmljID0gUmVsYXRpb25zaGlwPFJlc291cmNlLCBNZXRyaWM+O1xuZXhwb3J0IHR5cGUgU2VydmljZUhhc01ldHJpYyA9IFJlbGF0aW9uc2hpcDxTZXJ2aWNlLCBNZXRyaWM+O1xuIl19","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.RichPropertyType = exports.PropertyScrutinyType = exports.ResourceScrutinyType = exports.isCollectionType = exports.Deprecation = exports.RichAttribute = exports.RichProperty = exports.RichTypedField = void 0;\nconst sorting_1 = require(\"../util/sorting\");\nclass RichTypedField {\n constructor(field) {\n this.field = field;\n if (field === undefined) {\n throw new Error('Field is undefined');\n }\n }\n types() {\n var _a;\n return [...((_a = this.field.previousTypes) !== null && _a !== void 0 ? _a : []), this.field.type];\n }\n /**\n * Update the type of this property with a new type\n *\n * Only if it's not in the set of types already.\n */\n updateType(type) {\n const richType = new RichPropertyType(type);\n // Only add this type if we don't already have it. We are only doing comparisons where 'integer' and 'number'\n // are treated the same, for all other types we need strict equality. We used to use 'assignableTo' as a\n // condition, but these types will be rendered in both co- and contravariant positions, and so we really can't\n // do much better than full equality.\n if (this.types().some((t) => richType.equals(t))) {\n // Nothing to do, type is already in there.\n return false;\n }\n // Special case: if the new type is `string` and the old type is `date-time`, we assume this is\n // the same type but we dropped some formatting information. No need to make this a separate type.\n if (type.type === 'string' && this.types().some((t) => t.type === 'date-time')) {\n return false;\n }\n if (!this.field.previousTypes) {\n this.field.previousTypes = [];\n }\n this.field.previousTypes.push(this.field.type);\n this.field.type = type;\n return true;\n }\n}\nexports.RichTypedField = RichTypedField;\nclass RichProperty extends RichTypedField {\n constructor(property) {\n super(property);\n }\n}\nexports.RichProperty = RichProperty;\nclass RichAttribute extends RichTypedField {\n constructor(attr) {\n super(attr);\n }\n}\nexports.RichAttribute = RichAttribute;\nvar Deprecation;\n(function (Deprecation) {\n /**\n * Not deprecated\n */\n Deprecation[\"NONE\"] = \"NONE\";\n /**\n * Warn about use\n */\n Deprecation[\"WARN\"] = \"WARN\";\n /**\n * Do not emit the value at all\n *\n * (Handle properties that were incorrectly added to the spec)\n */\n Deprecation[\"IGNORE\"] = \"IGNORE\";\n})(Deprecation = exports.Deprecation || (exports.Deprecation = {}));\nfunction isCollectionType(x) {\n return x.type === 'array' || x.type === 'map';\n}\nexports.isCollectionType = isCollectionType;\n/**\n * Mark a resource as a resource that needs additional scrutiy when added, removed or changed\n *\n * Used to mark resources that represent security policies.\n */\nvar ResourceScrutinyType;\n(function (ResourceScrutinyType) {\n /**\n * No additional scrutiny\n */\n ResourceScrutinyType[\"None\"] = \"None\";\n /**\n * An externally attached policy document to a resource\n *\n * (Common for SQS, SNS, S3, ...)\n */\n ResourceScrutinyType[\"ResourcePolicyResource\"] = \"ResourcePolicyResource\";\n /**\n * This is an IAM policy on an identity resource\n *\n * (Basically saying: this is AWS::IAM::Policy)\n */\n ResourceScrutinyType[\"IdentityPolicyResource\"] = \"IdentityPolicyResource\";\n /**\n * This is a Lambda Permission policy\n */\n ResourceScrutinyType[\"LambdaPermission\"] = \"LambdaPermission\";\n /**\n * An ingress rule object\n */\n ResourceScrutinyType[\"IngressRuleResource\"] = \"IngressRuleResource\";\n /**\n * A set of egress rules\n */\n ResourceScrutinyType[\"EgressRuleResource\"] = \"EgressRuleResource\";\n /**\n * AWS::SSO::Assignment\n *\n * IAM Identity Center (formerly known as SSO)\n */\n ResourceScrutinyType[\"SsoAssignmentResource\"] = \"SsoAssignmentResource\";\n /**\n * AWS::SSO::InstanceAccessControlAttributeConfiguration\n *\n * IAM Identity Center (formerly known as SSO)\n */\n ResourceScrutinyType[\"SsoInstanceACAConfigResource\"] = \"SsoInstanceACAConfigResource\";\n /**\n * AWS::SSO::PermissionSet\n *\n * IAM Identity Center (formerly known as SSO)\n */\n ResourceScrutinyType[\"SsoPermissionSet\"] = \"SsoPermissionSet\";\n})(ResourceScrutinyType = exports.ResourceScrutinyType || (exports.ResourceScrutinyType = {}));\n/**\n * Mark a property as a property that needs additional scrutiny when it changes\n *\n * Used to mark sensitive properties that have security-related implications.\n */\nvar PropertyScrutinyType;\n(function (PropertyScrutinyType) {\n /**\n * No additional scrutiny\n */\n PropertyScrutinyType[\"None\"] = \"None\";\n /**\n * This is an IAM policy directly on a resource\n */\n PropertyScrutinyType[\"InlineResourcePolicy\"] = \"InlineResourcePolicy\";\n /**\n * Either an AssumeRolePolicyDocument or a dictionary of policy documents\n */\n PropertyScrutinyType[\"InlineIdentityPolicies\"] = \"InlineIdentityPolicies\";\n /**\n * A list of managed policies (on an identity resource)\n */\n PropertyScrutinyType[\"ManagedPolicies\"] = \"ManagedPolicies\";\n /**\n * A set of ingress rules (on a security group)\n */\n PropertyScrutinyType[\"IngressRules\"] = \"IngressRules\";\n /**\n * A set of egress rules (on a security group)\n */\n PropertyScrutinyType[\"EgressRules\"] = \"EgressRules\";\n})(PropertyScrutinyType = exports.PropertyScrutinyType || (exports.PropertyScrutinyType = {}));\nclass RichPropertyType {\n constructor(type) {\n this.type = type;\n }\n equals(rhs) {\n switch (this.type.type) {\n case 'integer':\n case 'boolean':\n case 'date-time':\n case 'json':\n case 'null':\n case 'number':\n case 'string':\n case 'tag':\n return rhs.type === this.type.type;\n case 'array':\n case 'map':\n return rhs.type === this.type.type && new RichPropertyType(this.type.element).equals(rhs.element);\n case 'ref':\n return rhs.type === 'ref' && this.type.reference.$ref === rhs.reference.$ref;\n case 'union':\n const lhsKey = this.sortKey();\n const rhsKey = new RichPropertyType(rhs).sortKey();\n return lhsKey.length === rhsKey.length && lhsKey.every((l, i) => l === rhsKey[i]);\n }\n }\n /**\n * Whether the current type is JavaScript-equal to the RHS type\n *\n * Same as normal equality, but consider `integer` and `number` the same types.\n */\n javascriptEquals(rhs) {\n switch (this.type.type) {\n case 'number':\n case 'integer':\n // Widening\n return rhs.type === 'integer' || rhs.type === 'number';\n case 'array':\n case 'map':\n return rhs.type === this.type.type && new RichPropertyType(this.type.element).javascriptEquals(rhs.element);\n case 'union':\n if (rhs.type !== 'union') {\n return false;\n }\n // Every type in this union needs to be equal one type in RHS\n return this.type.types.every((t1) => rhs.types.some((t2) => new RichPropertyType(t1).javascriptEquals(t2)));\n default:\n // For anything else, need strict equality\n return this.equals(rhs);\n }\n }\n /**\n * Whether the current type is assignable to the RHS type.\n *\n * This is means every type member of the LHS must be present in the RHS type\n */\n assignableTo(rhs) {\n const extractMembers = (type) => (type.type == 'union' ? type.types : [type]);\n const asRichType = (type) => new RichPropertyType(type);\n const rhsMembers = extractMembers(rhs);\n for (const lhsMember of extractMembers(this.type).map(asRichType)) {\n if (!rhsMembers.some((type) => lhsMember.equals(type))) {\n return false;\n }\n }\n return true;\n }\n /**\n * Return a version of this type, but with all type unions in a regularized order\n */\n normalize(db) {\n switch (this.type.type) {\n case 'array':\n case 'map':\n return new RichPropertyType({\n type: this.type.type,\n element: new RichPropertyType(this.type.element).normalize(db).type,\n });\n case 'union':\n const types = this.type.types\n .map((t) => new RichPropertyType(t).normalize(db))\n .map((t) => [t, t.sortKey(db)]);\n types.sort((0, sorting_1.sortKeyComparator)(([_, sortKey]) => sortKey));\n return new RichPropertyType({\n type: 'union',\n types: types.map(([t, _]) => t.type),\n });\n default:\n return this;\n }\n }\n stringify(db, withId = true) {\n switch (this.type.type) {\n case 'integer':\n case 'boolean':\n case 'date-time':\n case 'json':\n case 'null':\n case 'number':\n case 'string':\n case 'tag':\n return this.type.type;\n case 'array':\n return `Array<${new RichPropertyType(this.type.element).stringify(db, withId)}>`;\n case 'map':\n return `Map`;\n case 'ref':\n const type = db.get('typeDefinition', this.type.reference);\n return withId ? `${type.name}(${this.type.reference.$ref})` : type.name;\n case 'union':\n return this.type.types.map((t) => new RichPropertyType(t).stringify(db, withId)).join(' | ');\n }\n }\n /**\n * Return a sortable key based on this type\n *\n * If a database is given, type definitions will be sorted based on type name,\n * otherwise on identifier\n */\n sortKey(db) {\n var _a, _b;\n switch (this.type.type) {\n case 'integer':\n case 'boolean':\n case 'date-time':\n case 'json':\n case 'null':\n case 'number':\n case 'string':\n case 'tag':\n return ['0', this.type.type];\n case 'array':\n case 'map':\n return ['1', this.type.type, ...new RichPropertyType(this.type.element).sortKey(db)];\n case 'ref':\n return ['2', this.type.type, (_b = (_a = db === null || db === void 0 ? void 0 : db.get('typeDefinition', this.type.reference)) === null || _a === void 0 ? void 0 : _a.name) !== null && _b !== void 0 ? _b : this.type.reference.$ref];\n case 'union':\n const typeKeys = this.type.types.map((t) => new RichPropertyType(t).sortKey(db));\n typeKeys.sort((0, sorting_1.sortKeyComparator)((x) => x));\n return ['3', this.type.type, ...typeKeys.flatMap((x) => x)];\n }\n }\n}\nexports.RichPropertyType = RichPropertyType;\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzb3VyY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdHlwZXMvcmVzb3VyY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBRUEsNkNBQW9EO0FBdUtwRCxNQUFhLGNBQWM7SUFDekIsWUFBNkIsS0FBK0M7UUFBL0MsVUFBSyxHQUFMLEtBQUssQ0FBMEM7UUFDMUUsSUFBSSxLQUFLLEtBQUssU0FBUyxFQUFFO1lBQ3ZCLE1BQU0sSUFBSSxLQUFLLENBQUMsb0JBQW9CLENBQUMsQ0FBQztTQUN2QztJQUNILENBQUM7SUFFTSxLQUFLOztRQUNWLE9BQU8sQ0FBQyxHQUFHLENBQUMsTUFBQSxJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsbUNBQUksRUFBRSxDQUFDLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNoRSxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNJLFVBQVUsQ0FBQyxJQUFrQjtRQUNsQyxNQUFNLFFBQVEsR0FBRyxJQUFJLGdCQUFnQixDQUFDLElBQUksQ0FBQyxDQUFDO1FBRTVDLDZHQUE2RztRQUM3Ryx3R0FBd0c7UUFDeEcsOEdBQThHO1FBQzlHLHFDQUFxQztRQUNyQyxJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRTtZQUNoRCwyQ0FBMkM7WUFDM0MsT0FBTyxLQUFLLENBQUM7U0FDZDtRQUVELCtGQUErRjtRQUMvRixrR0FBa0c7UUFDbEcsSUFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLFFBQVEsSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLFdBQVcsQ0FBQyxFQUFFO1lBQzlFLE9BQU8sS0FBSyxDQUFDO1NBQ2Q7UUFFRCxJQUFJ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QyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsSUFBSSxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztnQkFDakYsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFBLDJCQUFpQixFQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUMzQyxPQUFPLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLEdBQUcsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUMvRDtJQUNILENBQUM7Q0FDRjtBQXRKRCw0Q0FzSkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFbnRpdHksIFJlZmVyZW5jZSwgUmVsYXRpb25zaGlwIH0gZnJvbSAnQGNka2xhYnMvdHNrYic7XG5pbXBvcnQgeyBTcGVjRGF0YWJhc2UgfSBmcm9tICcuL2RhdGFiYXNlJztcbmltcG9ydCB7IHNvcnRLZXlDb21wYXJhdG9yIH0gZnJvbSAnLi4vdXRpbC9zb3J0aW5nJztcblxuZXhwb3J0IGludGVyZmFjZSBQYXJ0aXRpb24gZXh0ZW5kcyBFbnRpdHkge1xuICByZWFkb25seSBwYXJ0aXRpb246IHN0cmluZztcbn1cblxuZXhwb3J0IHR5cGUgSGFzUmVnaW9uID0gUmVsYXRpb25zaGlwPFBhcnRpdGlvbiwgUmVnaW9uLCB7IGlzUHJpbWFyeT86IGJvb2xlYW4gfT47XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2VydmljZSBleHRlbmRzIEVudGl0eSB7XG4gIC8qKlxuICAgKiBUaGUgZnVsbCBuYW1lIG9mIHRoZSBzZXJ2aWNlIGluY2x1ZGluZyB0aGUgZ3JvdXAgcHJlZml4LCBsb3dlcmNhc2VkIGFuZCBoeXBoZW5hdGVkLlxuICAgKlxuICAgKiBFLmcuIGBBV1M6OkR5bmFtb0RCYCAtPiBgYXdzLWR5bmFtb2RiYFxuICAgKlxuICAgKiBAZXhhbXBsZSBhd3MtZHluYW1vZGJcbiAgICovXG4gIHJlYWRvbmx5IG5hbWU6IHN0cmluZztcbiAgLyoqXG4gICAqIE9ubHkgdGhlIHNlcnZpY2UgcGFydCBvZiB0aGUgbmFtZSwgbG93ZXJjYXNlZC5cbiAgICpcbiAgICogRS5nLiBgQVdTOjpEeW5hbW9EQmAgLT4gYGR5bmFtb2RiYFxuICAgKlxuICAgKiBAZXhhbXBsZSBkeW5hbW9kYlxuICAgKi9cbiAgcmVhZG9ubHkgc2hvcnROYW1lOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBUaGUgc2hvcnRuYW1lIG9mIHRoZSBzZXJ2aWNlIGluIGNhcGl0YWxpemVkIGZvcm1cbiAgICpcbiAgICogRS5nLiBgQVdTOjpEeW5hbW9EQmAgLT4gYER5bmFtb0RCYFxuICAgKlxuICAgKiBAZXhhbXBsZSBkeW5hbW9kYlxuICAgKi9cbiAgcmVhZG9ubHkgY2FwaXRhbGl6ZWQ6IHN0cmluZztcbiAgLyoqXG4gICAqIFRoZSBjb21wbGV0ZSBjbG91ZGZvcm1hdGlvbiBzdHlsZSBuYW1lc3BhY2Ugb2YgdGhlIHNlcnZpY2VcbiAgICpcbiAgICogRS5nLiBgQVdTOjpEeW5hbW9EQmBcbiAgICpcbiAgICogQGV4YW1wbGUgZHluYW1vZGJcbiAgICovXG4gIHJlYWRvbmx5IGNsb3VkRm9ybWF0aW9uTmFtZXNwYWNlOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVnaW9uIGV4dGVuZHMgRW50aXR5IHtcbiAgcmVhZG9ubHkgbmFtZTogc3RyaW5nO1xuICByZWFkb25seSBkZXNjcmlwdGlvbj86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBEb2N1bWVudGF0aW9uIGV4dGVuZHMgRW50aXR5IHtcbiAgcmVhZG9ubHkgbWFya2Rvd246IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBSZXNvdXJjZSBleHRlbmRzIEVudGl0eSB7XG4gIHJlYWRvbmx5IG5hbWU6IHN0cmluZztcbiAgcmVhZG9ubHkgY2xvdWRGb3JtYXRpb25UeXBlOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBJZiBzZXQsIHRoaXMgQ2xvdWRGb3JtYXRpb24gVHJhbnNmb3JtIGlzIHJlcXVpcmVkIGJ5IHRoZSByZXNvdXJjZVxuICAgKi9cbiAgY2xvdWRGb3JtYXRpb25UcmFuc2Zvcm0/OiBzdHJpbmc7XG4gIGRvY3VtZW50YXRpb24/OiBzdHJpbmc7XG4gIHByaW1hcnlJZGVudGlmaWVyPzogc3RyaW5nW107XG4gIHJlYWRvbmx5IHByb3BlcnRpZXM6IFJlc291cmNlUHJvcGVydGllcztcbiAgcmVhZG9ubHkgYXR0cmlidXRlczogUmVjb3JkPHN0cmluZywgQXR0cmlidXRlPjtcbiAgcmVhZG9ubHkgdmFsaWRhdGlvbnM/OiB1bmtub3duO1xuICBpZGVudGlmaWVyPzogUmVzb3VyY2VJZGVudGlmaWVyO1xuICBpc1N0YXRlZnVsPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogSW5mb3JtYXRpb24gYWJvdXQgdGhlIHRhZ2dhYmlsaXR5IG9mIHRoaXMgcmVzb3VyY2VcbiAgICpcbiAgICogVW5kZWZpbmVkIGlmIHRoZSByZXNvdXJjZSBpcyBub3QgdGFnZ2FibGUuXG4gICAqL1xuICB0YWdJbmZvcm1hdGlvbj86IFRhZ0luZm9ybWF0aW9uO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIGNoYW5nZXMgdG8gdGhpcyByZXNvdXJjZSBuZWVkIHRvIGJlIHNjcnV0aW5pemVkXG4gICAqXG4gICAqIEBkZWZhdWx0IFJlc291cmNlU2NydXRpbnlUeXBlLk5PTkVcbiAgICovXG4gIHNjcnV0aW5pemFibGU/OiBSZXNvdXJjZVNjcnV0aW55VHlwZTtcblxuICAvKipcbiAgICogQWRkaXRpb25hbCBwYXRocyB0byBwcm9wZXJ0aWVzIHRoYXQgYWxzbyBjYXVzZSByZXBsYWNlbWVudC5cbiAgICpcbiAgICogVGhpcyBpcyB0byBpbmRpY2F0ZSB0aGF0IGNlcnRhaW4gcHJvcGVydHkgcGF0aHMgaW50byB0aGlzIHJlc291cmNlXG4gICAqIHdpbGwgY2F1c2UgcmVwbGFjZW1lbnQ7IG9ubHkgcmVwbGFjZW1lbnRzIHRoYXQgY2Fubm90IGJlIHJlcHJlc2VudGVkXG4gICAqIGJ5IHRhZ2dpbmcgdGhlIHByb3BlcnR5IGluIGEgdHlwZSBkZWZpbml0aW9uIHdpbGwgYmUgaW5jbHVkZWQgaGVyZVxuICAgKiAoZm9yIGV4YW1wbGUsIGJlY2F1c2UgdGhlIHRhZ2dlZCBwcm9wZXJ0eSB3b3VsZCBiZSBpbiBhIHByZWRlZmluZWRcbiAgICogdHlwZSBsaWtlIGB0YWdgKS5cbiAgICpcbiAgICogQWxsIHByb3BlcnRpZXMgaW4gdGhpcyBsaXN0IHNob3VsZCBiZSB0cmVhdGVkIGFzIGBjYXVzZXNSZXBsYWNlbWVudDogJ3llcydgLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtXG4gICAqL1xuICBhZGRpdGlvbmFsUmVwbGFjZW1lbnRQcm9wZXJ0aWVzPzogc3RyaW5nW11bXTtcbn1cblxuZXhwb3J0IHR5cGUgUmVzb3VyY2VQcm9wZXJ0aWVzID0gUmVjb3JkPHN0cmluZywgUHJvcGVydHk+O1xuXG5leHBvcnQgaW50ZXJmYWNlIFR5cGVEZWZpbml0aW9uIGV4dGVuZHMgRW50aXR5IHtcbiAgcmVhZG9ubHkgbmFtZTogc3RyaW5nO1xuICBkb2N1bWVudGF0aW9uPzogc3RyaW5nO1xuICByZWFkb25seSBwcm9wZXJ0aWVzOiBSZXNvdXJjZVByb3BlcnRpZXM7XG5cbiAgLyoqXG4gICAqIElmIHRydWUsIHJlbmRlciB0aGlzIHR5cGUgZXZlbiBpZiBpdCBpcyB1bnVzZWQuXG4gICAqL1xuICBtdXN0UmVuZGVyRm9yQndDb21wYXQ/OiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFByb3BlcnR5IHtcbiAgLyoqXG4gICAqIERlc2NyaXB0aW9uIG9mIHRoZSBwcm9wZXJ0eVxuICAgKi9cbiAgZG9jdW1lbnRhdGlvbj86IHN0cmluZztcblxuICAvKipcbiAgICogSXMgdGhpcyBwcm9wZXJ0eSByZXF1aXJlZFxuICAgKlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVxdWlyZWQ/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBUaGUgY3VycmVudCB0eXBlIG9mIHRoaXMgcHJvcGVydHlcbiAgICovXG4gIHR5cGU6IFByb3BlcnR5VHlwZTtcblxuICAvKipcbiAgICogQW4gb3JkZXJlZCBsaXN0IG9mIHByZXZpb3VzIHR5cGVzIG9mIHRoaXMgcHJvcGVydHkgaW4gYXNjZW5kaW5nIG9yZGVyXG4gICAqXG4gICAqIERvZXMgbm90IGluY2x1ZGUgdGhlIGN1cnJlbnQgdHlwZSwgdXNlIGB0eXBlYCBmb3IgdGhpcy5cbiAgICovXG4gIHByZXZpb3VzVHlwZXM/OiBQcm9wZXJ0eVR5cGVbXTtcblxuICAvKipcbiAgICogQSBzdHJpbmcgcmVwcmVzZW50YXRpb24gdGhlIGRlZmF1bHQgdmFsdWUgb2YgdGhpcyBwcm9wZXJ0eVxuICAgKlxuICAgKiBUaGlzIHZhbHVlIGlzIG5vdCBkaXJlY3RseSBmdW5jdGlvbmFsOyBpdCBkZXNjcmliZXMgaG93IHRoZSB1bmRlcmx5aW5nIHJlc291cmNlXG4gICAqIHdpbGwgYmVoYXZlIGlmIHRoZSB2YWx1ZSBpcyBub3Qgc3BlY2lmaWVkLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIERlZmF1bHQgdW5rbm93blxuICAgKi9cbiAgZGVmYXVsdFZhbHVlPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoaXMgcHJvcGVydHkgaXMgZGVwcmVjYXRlZFxuICAgKlxuICAgKiBAZGVmYXVsdCAtIE5vdCBkZXByZWNhdGVkXG4gICAqL1xuICBkZXByZWNhdGVkPzogRGVwcmVjYXRpb247XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgY2hhbmdlcyB0byB0aGlzIHByb3BlcnR5IG5lZWRzIHRvIGJlIHNjcnV0aW5pemVkIHNwZWNpYWxseVxuICAgKlxuICAgKiBAZGVmYXVsdCBQcm9wZXJ0eVNjcnV0aW55VHlwZS5OT05FXG4gICAqL1xuICBzY3J1dGluaXphYmxlPzogUHJvcGVydHlTY3J1dGlueVR5cGU7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhlIGNvbnRhaW5pbmcgcmVzb3VyY2Ugd2lsbCBiZSByZXBsYWNlZCBpZiB0aGlzIHByb3BlcnR5IGlzIGNoYW5nZWRcbiAgICpcbiAgICogQGRlZmF1bHQgJ25vJ1xuICAgKi9cbiAgY2F1c2VzUmVwbGFjZW1lbnQ/OiAneWVzJyB8ICdubycgfCAnbWF5YmUnO1xufVxuXG5leHBvcnQgY2xhc3MgUmljaFR5cGVkRmllbGQge1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IGZpZWxkOiBQaWNrPFByb3BlcnR5LCAndHlwZScgfCAncHJldmlvdXNUeXBlcyc+KSB7XG4gICAgaWYgKGZpZWxkID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignRmllbGQgaXMgdW5kZWZpbmVkJyk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHR5cGVzKCk6IFByb3BlcnR5VHlwZVtdIHtcbiAgICByZXR1cm4gWy4uLih0aGlzLmZpZWxkLnByZXZpb3VzVHlwZXMgPz8gW10pLCB0aGlzLmZpZWxkLnR5cGVdO1xuICB9XG5cbiAgLyoqXG4gICAqIFVwZGF0ZSB0aGUgdHlwZSBvZiB0aGlzIHByb3BlcnR5IHdpdGggYSBuZXcgdHlwZVxuICAgKlxuICAgKiBPbmx5IGlmIGl0J3Mgbm90IGluIHRoZSBzZXQgb2YgdHlwZXMgYWxyZWFkeS5cbiAgICovXG4gIHB1YmxpYyB1cGRhdGVUeXBlKHR5cGU6IFByb3BlcnR5VHlwZSk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IHJpY2hUeXBlID0gbmV3IFJpY2hQcm9wZXJ0eVR5cGUodHlwZSk7XG5cbiAgICAvLyBPbmx5IGFkZCB0aGlzIHR5cGUgaWYgd2UgZG9uJ3QgYWxyZWFkeSBoYXZlIGl0LiBXZSBhcmUgb25seSBkb2luZyBjb21wYXJpc29ucyB3aGVyZSAnaW50ZWdlcicgYW5kICdudW1iZXInXG4gICAgLy8gYXJlIHRyZWF0ZWQgdGhlIHNhbWUsIGZvciBhbGwgb3RoZXIgdHlwZXMgd2UgbmVlZCBzdHJpY3QgZXF1YWxpdHkuIFdlIHVzZWQgdG8gdXNlICdhc3NpZ25hYmxlVG8nIGFzIGFcbiAgICAvLyBjb25kaXRpb24sIGJ1dCB0aGVzZSB0eXBlcyB3aWxsIGJlIHJlbmRlcmVkIGluIGJvdGggY28tIGFuZCBjb250cmF2YXJpYW50IHBvc2l0aW9ucywgYW5kIHNvIHdlIHJlYWxseSBjYW4ndFxuICAgIC8vIGRvIG11Y2ggYmV0dGVyIHRoYW4gZnVsbCBlcXVhbGl0eS5cbiAgICBpZiAodGhpcy50eXBlcygpLnNvbWUoKHQpID0+IHJpY2hUeXBlLmVxdWFscyh0KSkpIHtcbiAgICAgIC8vIE5vdGhpbmcgdG8gZG8sIHR5cGUgaXMgYWxyZWFkeSBpbiB0aGVyZS5cbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICAvLyBTcGVjaWFsIGNhc2U6IGlmIHRoZSBuZXcgdHlwZSBpcyBgc3RyaW5nYCBhbmQgdGhlIG9sZCB0eXBlIGlzIGBkYXRlLXRpbWVgLCB3ZSBhc3N1bWUgdGhpcyBpc1xuICAgIC8vIHRoZSBzYW1lIHR5cGUgYnV0IHdlIGRyb3BwZWQgc29tZSBmb3JtYXR0aW5nIGluZm9ybWF0aW9uLiBObyBuZWVkIHRvIG1ha2UgdGhpcyBhIHNlcGFyYXRlIHR5cGUuXG4gICAgaWYgKHR5cGUudHlwZSA9PT0gJ3N0cmluZycgJiYgdGhpcy50eXBlcygpLnNvbWUoKHQpID0+IHQudHlwZSA9PT0gJ2RhdGUtdGltZScpKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLmZpZWxkLnByZXZpb3VzVHlwZXMpIHtcbiAgICAgIHRoaXMuZmllbGQucHJldmlvdXNUeXBlcyA9IFtdO1xuICAgIH1cbiAgICB0aGlzLmZpZWxkLnByZXZpb3VzVHlwZXMucHVzaCh0aGlzLmZpZWxkLnR5cGUpO1xuICAgIHRoaXMuZmllbGQudHlwZSA9IHR5cGU7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIFJpY2hQcm9wZXJ0eSBleHRlbmRzIFJpY2hUeXBlZEZpZWxkIHtcbiAgY29uc3RydWN0b3IocHJvcGVydHk6IFByb3BlcnR5KSB7XG4gICAgc3VwZXIocHJvcGVydHkpO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBSaWNoQXR0cmlidXRlIGV4dGVuZHMgUmljaFR5cGVkRmllbGQge1xuICBjb25zdHJ1Y3RvcihhdHRyOiBBdHRyaWJ1dGUpIHtcbiAgICBzdXBlcihhdHRyKTtcbiAgfVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIEF0dHJpYnV0ZSB7XG4gIGRvY3VtZW50YXRpb24/OiBzdHJpbmc7XG4gIHR5cGU6IFByb3BlcnR5VHlwZTtcbiAgLyoqXG4gICAqIEFuIG9yZGVyZWQgbGlzdCBvZiBwcmV2aW91cyB0eXBlcyBvZiB0aGlzIHByb3BlcnR5IGluIGFzY2VuZGluZyBvcmRlclxuICAgKlxuICAgKiBEb2VzIG5vdCBpbmNsdWRlIHRoZSBjdXJyZW50IHR5cGUsIHVzZSBgdHlwZWAgZm9yIHRoaXMuXG4gICAqL1xuICBwcmV2aW91c1R5cGVzPzogUHJvcGVydHlUeXBlW107XG59XG5cbmV4cG9ydCBlbnVtIERlcHJlY2F0aW9uIHtcbiAgLyoqXG4gICAqIE5vdCBkZXByZWNhdGVkXG4gICAqL1xuICBOT05FID0gJ05PTkUnLFxuXG4gIC8qKlxuICAgKiBXYXJuIGFib3V0IHVzZVxuICAgKi9cbiAgV0FSTiA9ICdXQVJOJyxcblxuICAvKipcbiAgICogRG8gbm90IGVtaXQgdGhlIHZhbHVlIGF0IGFsbFxuICAgKlxuICAgKiAoSGFuZGxlIHByb3BlcnRpZXMgdGhhdCB3ZXJlIGluY29ycmVjdGx5IGFkZGVkIHRvIHRoZSBzcGVjKVxuICAgKi9cbiAgSUdOT1JFID0gJ0lHTk9SRScsXG59XG5cbmV4cG9ydCB0eXBlIFByb3BlcnR5VHlwZSA9XG4gIHwgUHJpbWl0aXZlVHlwZVxuICB8IERlZmluaXRpb25SZWZlcmVuY2VcbiAgfCBCdWlsdGluVGFnVHlwZVxuICB8IEFycmF5VHlwZTxQcm9wZXJ0eVR5cGU+XG4gIHwgTWFwVHlwZTxQcm9wZXJ0eVR5cGU+XG4gIHwgVHlwZVVuaW9uPFByb3BlcnR5VHlwZT47XG5cbmV4cG9ydCB0eXBlIFByaW1pdGl2ZVR5cGUgPVxuICB8IFN0cmluZ1R5cGVcbiAgfCBOdW1iZXJUeXBlXG4gIHwgSW50ZWdlclR5cGVcbiAgfCBCb29sZWFuVHlwZVxuICB8IEpzb25UeXBlXG4gIHwgRGF0ZVRpbWVUeXBlXG4gIHwgTnVsbFR5cGVcbiAgfCBCdWlsdGluVGFnVHlwZTtcblxuZXhwb3J0IGZ1bmN0aW9uIGlzQ29sbGVjdGlvblR5cGUoeDogUHJvcGVydHlUeXBlKTogeCBpcyBBcnJheVR5cGU8YW55PiB8IE1hcFR5cGU8YW55PiB7XG4gIHJldHVybiB4LnR5cGUgPT09ICdhcnJheScgfHwgeC50eXBlID09PSAnbWFwJztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBUYWdJbmZvcm1hdGlvbiB7XG4gIC8qKlxuICAgKiBOYW1lIG9mIHRoZSBwcm9wZXJ0eSB0aGF0IGhvbGRzIHRoZSB0YWdzXG4gICAqL1xuICByZWFkb25seSB0YWdQcm9wZXJ0eU5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogVXNlZCB0byBpbnN0cnVjdCBjZGsuVGFnTWFuYWdlciBob3cgdG8gaGFuZGxlIHRhZ3NcbiAgICovXG4gIHJlYWRvbmx5IHZhcmlhbnQ6IFRhZ1ZhcmlhbnQ7XG59XG5cbmV4cG9ydCB0eXBlIFRhZ1ZhcmlhbnQgPSAnc3RhbmRhcmQnIHwgJ2FzZycgfCAnbWFwJztcblxuZXhwb3J0IGludGVyZmFjZSBTdHJpbmdUeXBlIHtcbiAgcmVhZG9ubHkgdHlwZTogJ3N0cmluZyc7XG59XG5leHBvcnQgaW50ZXJmYWNlIEJ1aWx0aW5UYWdUeXBlIHtcbiAgcmVhZG9ubHkgdHlwZTogJ3RhZyc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTnVtYmVyVHlwZSB7XG4gIHJlYWRvbmx5IHR5cGU6ICdudW1iZXInO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEludGVnZXJUeXBlIHtcbiAgcmVhZG9ubHkgdHlwZTogJ2ludGVnZXInO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEJvb2xlYW5UeXBlIHtcbiAgcmVhZG9ubHkgdHlwZTogJ2Jvb2xlYW4nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEpzb25UeXBlIHtcbiAgcmVhZG9ubHkgdHlwZTogJ2pzb24nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE51bGxUeXBlIHtcbiAgcmVhZG9ubHkgdHlwZTogJ251bGwnO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIERhdGVUaW1lVHlwZSB7XG4gIHJlYWRvbmx5IHR5cGU6ICdkYXRlLXRpbWUnO1xufVxuXG4vKipcbiAqIFRoZSBcImxlZ2FjeVwiIHRhZyB0eXBlICh1c2VkIGluIHRoZSBvbGQgcmVzb3VyY2Ugc3BlYylcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBCdWlsdGluVGFnVHlwZSB7XG4gIHJlYWRvbmx5IHR5cGU6ICd0YWcnO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIERlZmluaXRpb25SZWZlcmVuY2Uge1xuICByZWFkb25seSB0eXBlOiAncmVmJztcbiAgcmVhZG9ubHkgcmVmZXJlbmNlOiBSZWZlcmVuY2U8VHlwZURlZmluaXRpb24+O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFycmF5VHlwZTxFPiB7XG4gIHJlYWRvbmx5IHR5cGU6ICdhcnJheSc7XG4gIHJlYWRvbmx5IGVsZW1lbnQ6IEU7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTWFwVHlwZTxFPiB7XG4gIHJlYWRvbmx5IHR5cGU6ICdtYXAnO1xuICByZWFkb25seSBlbGVtZW50OiBFO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFR5cGVVbmlvbjxFPiB7XG4gIHJlYWRvbmx5IHR5cGU6ICd1bmlvbic7XG4gIHJlYWRvbmx5IHR5cGVzOiBFW107XG59XG5cbmV4cG9ydCB0eXBlIEhhc1Jlc291cmNlID0gUmVsYXRpb25zaGlwPFNlcnZpY2UsIFJlc291cmNlPjtcbmV4cG9ydCB0eXBlIFJlZ2lvbkhhc1Jlc291cmNlID0gUmVsYXRpb25zaGlwPFJlZ2lvbiwgUmVzb3VyY2U+O1xuZXhwb3J0IHR5cGUgUmVnaW9uSGFzU2VydmljZSA9IFJlbGF0aW9uc2hpcDxSZWdpb24sIFNlcnZpY2U+O1xuZXhwb3J0IHR5cGUgUmVzb3VyY2VEb2MgPSBSZWxhdGlvbnNoaXA8UmVzb3VyY2UsIERvY3VtZW50YXRpb24+O1xuXG5leHBvcnQgdHlwZSBTZXJ2aWNlSW5SZWdpb24gPSBSZWxhdGlvbnNoaXA8UmVnaW9uLCBTZXJ2aWNlPjtcbmV4cG9ydCB0eXBlIFJlc291cmNlSW5SZWdpb24gPSBSZWxhdGlvbnNoaXA8UmVnaW9uLCBSZXNvdXJjZT47XG5cbmV4cG9ydCB0eXBlIFVzZXNUeXBlID0gUmVsYXRpb25zaGlwPFJlc291cmNlLCBUeXBlRGVmaW5pdGlvbj47XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVzb3VyY2VJZGVudGlmaWVyIGV4dGVuZHMgRW50aXR5IHtcbiAgcmVhZG9ubHkgYXJuVGVtcGxhdGU/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IHByaW1hcnlJZGVudGlmaWVyPzogc3RyaW5nW107XG59XG5cbi8qKlxuICogTWFyayBhIHJlc291cmNlIGFzIGEgcmVzb3VyY2UgdGhhdCBuZWVkcyBhZGRpdGlvbmFsIHNjcnV0aXkgd2hlbiBhZGRlZCwgcmVtb3ZlZCBvciBjaGFuZ2VkXG4gKlxuICogVXNlZCB0byBtYXJrIHJlc291cmNlcyB0aGF0IHJlcHJlc2VudCBzZWN1cml0eSBwb2xpY2llcy5cbiAqL1xuZXhwb3J0IGVudW0gUmVzb3VyY2VTY3J1dGlueVR5cGUge1xuICAvKipcbiAgICogTm8gYWRkaXRpb25hbCBzY3J1dGlueVxuICAgKi9cbiAgTm9uZSA9ICdOb25lJyxcblxuICAvKipcbiAgICogQW4gZXh0ZXJuYWxseSBhdHRhY2hlZCBwb2xpY3kgZG9jdW1lbnQgdG8gYSByZXNvdXJjZVxuICAgKlxuICAgKiAoQ29tbW9uIGZvciBTUVMsIFNOUywgUzMsIC4uLilcbiAgICovXG4gIFJlc291cmNlUG9saWN5UmVzb3VyY2UgPSAnUmVzb3VyY2VQb2xpY3lSZXNvdXJjZScsXG5cbiAgLyoqXG4gICAqIFRoaXMgaXMgYW4gSUFNIHBvbGljeSBvbiBhbiBpZGVudGl0eSByZXNvdXJjZVxuICAgKlxuICAgKiAoQmFzaWNhbGx5IHNheWluZzogdGhpcyBpcyBBV1M6OklBTTo6UG9saWN5KVxuICAgKi9cbiAgSWRlbnRpdHlQb2xpY3lSZXNvdXJjZSA9ICdJZGVudGl0eVBvbGljeVJlc291cmNlJyxcblxuICAvKipcbiAgICogVGhpcyBpcyBhIExhbWJkYSBQZXJtaXNzaW9uIHBvbGljeVxuICAgKi9cbiAgTGFtYmRhUGVybWlzc2lvbiA9ICdMYW1iZGFQZXJtaXNzaW9uJyxcblxuICAvKipcbiAgICogQW4gaW5ncmVzcyBydWxlIG9iamVjdFxuICAgKi9cbiAgSW5ncmVzc1J1bGVSZXNvdXJjZSA9ICdJbmdyZXNzUnVsZVJlc291cmNlJyxcblxuICAvKipcbiAgICogQSBzZXQgb2YgZWdyZXNzIHJ1bGVzXG4gICAqL1xuICBFZ3Jlc3NSdWxlUmVzb3VyY2UgPSAnRWdyZXNzUnVsZVJlc291cmNlJyxcblxuICAvKipcbiAgICogQVdTOjpTU086OkFzc2lnbm1lbnRcbiAgICpcbiAgICogSUFNIElkZW50aXR5IENlbnRlciAoZm9ybWVybHkga25vd24gYXMgU1NPKVxuICAgKi9cbiAgU3NvQXNzaWdubWVudFJlc291cmNlID0gJ1Nzb0Fzc2lnbm1lbnRSZXNvdXJjZScsXG5cbiAgLyoqXG4gICAqIEFXUzo6U1NPOjpJbnN0YW5jZUFjY2Vzc0NvbnRyb2xBdHRyaWJ1dGVDb25maWd1cmF0aW9uXG4gICAqXG4gICAqIElBTSBJZGVudGl0eSBDZW50ZXIgKGZvcm1lcmx5IGtub3duIGFzIFNTTylcbiAgICovXG4gIFNzb0luc3RhbmNlQUNBQ29uZmlnUmVzb3VyY2UgPSAnU3NvSW5zdGFuY2VBQ0FDb25maWdSZXNvdXJjZScsXG5cbiAgLyoqXG4gICAqIEFXUzo6U1NPOjpQZXJtaXNzaW9uU2V0XG4gICAqXG4gICAqIElBTSBJZGVudGl0eSBDZW50ZXIgKGZvcm1lcmx5IGtub3duIGFzIFNTTylcbiAgICovXG4gIFNzb1Blcm1pc3Npb25TZXQgPSAnU3NvUGVybWlzc2lvblNldCcsXG59XG5cbi8qKlxuICogTWFyayBhIHByb3BlcnR5IGFzIGEgcHJvcGVydHkgdGhhdCBuZWVkcyBhZGRpdGlvbmFsIHNjcnV0aW55IHdoZW4gaXQgY2hhbmdlc1xuICpcbiAqIFVzZWQgdG8gbWFyayBzZW5zaXRpdmUgcHJvcGVydGllcyB0aGF0IGhhdmUgc2VjdXJpdHktcmVsYXRlZCBpbXBsaWNhdGlvbnMuXG4gKi9cbmV4cG9ydCBlbnVtIFByb3BlcnR5U2NydXRpbnlUeXBlIHtcbiAgLyoqXG4gICAqIE5vIGFkZGl0aW9uYWwgc2NydXRpbnlcbiAgICovXG4gIE5vbmUgPSAnTm9uZScsXG5cbiAgLyoqXG4gICAqIFRoaXMgaXMgYW4gSUFNIHBvbGljeSBkaXJlY3RseSBvbiBhIHJlc291cmNlXG4gICAqL1xuICBJbmxpbmVSZXNvdXJjZVBvbGljeSA9ICdJbmxpbmVSZXNvdXJjZVBvbGljeScsXG5cbiAgLyoqXG4gICAqIEVpdGhlciBhbiBBc3N1bWVSb2xlUG9saWN5RG9jdW1lbnQgb3IgYSBkaWN0aW9uYXJ5IG9mIHBvbGljeSBkb2N1bWVudHNcbiAgICovXG4gIElubGluZUlkZW50aXR5UG9saWNpZXMgPSAnSW5saW5lSWRlbnRpdHlQb2xpY2llcycsXG5cbiAgLyoqXG4gICAqIEEgbGlzdCBvZiBtYW5hZ2VkIHBvbGljaWVzIChvbiBhbiBpZGVudGl0eSByZXNvdXJjZSlcbiAgICovXG4gIE1hbmFnZWRQb2xpY2llcyA9ICdNYW5hZ2VkUG9saWNpZXMnLFxuXG4gIC8qKlxuICAgKiBBIHNldCBvZiBpbmdyZXNzIHJ1bGVzIChvbiBhIHNlY3VyaXR5IGdyb3VwKVxuICAgKi9cbiAgSW5ncmVzc1J1bGVzID0gJ0luZ3Jlc3NSdWxlcycsXG5cbiAgLyoqXG4gICAqIEEgc2V0IG9mIGVncmVzcyBydWxlcyAob24gYSBzZWN1cml0eSBncm91cClcbiAgICovXG4gIEVncmVzc1J1bGVzID0gJ0VncmVzc1J1bGVzJyxcbn1cblxuZXhwb3J0IGNsYXNzIFJpY2hQcm9wZXJ0eVR5cGUge1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IHR5cGU6IFByb3BlcnR5VHlwZSkge31cblxuICBwdWJsaWMgZXF1YWxzKHJoczogUHJvcGVydHlUeXBlKTogYm9vbGVhbiB7XG4gICAgc3dpdGNoICh0aGlzLnR5cGUudHlwZSkge1xuICAgICAgY2FzZSAnaW50ZWdlcic6XG4gICAgICBjYXNlICdib29sZWFuJzpcbiAgICAgIGNhc2UgJ2RhdGUtdGltZSc6XG4gICAgICBjYXNlICdqc29uJzpcbiAgICAgIGNhc2UgJ251bGwnOlxuICAgICAgY2FzZSAnbnVtYmVyJzpcbiAgICAgIGNhc2UgJ3N0cmluZyc6XG4gICAgICBjYXNlICd0YWcnOlxuICAgICAgICByZXR1cm4gcmhzLnR5cGUgPT09IHRoaXMudHlwZS50eXBlO1xuICAgICAgY2FzZSAnYXJyYXknOlxuICAgICAgY2FzZSAnbWFwJzpcbiAgICAgICAgcmV0dXJuIHJocy50eXBlID09PSB0aGlzLnR5cGUudHlwZSAmJiBuZXcgUmljaFByb3BlcnR5VHlwZSh0aGlzLnR5cGUuZWxlbWVudCkuZXF1YWxzKHJocy5lbGVtZW50KTtcbiAgICAgIGNhc2UgJ3JlZic6XG4gICAgICAgIHJldHVybiByaHMudHlwZSA9PT0gJ3JlZicgJiYgdGhpcy50eXBlLnJlZmVyZW5jZS4kcmVmID09PSByaHMucmVmZXJlbmNlLiRyZWY7XG4gICAgICBjYXNlICd1bmlvbic6XG4gICAgICAgIGNvbnN0IGxoc0tleSA9IHRoaXMuc29ydEtleSgpO1xuICAgICAgICBjb25zdCByaHNLZXkgPSBuZXcgUmljaFByb3BlcnR5VHlwZShyaHMpLnNvcnRLZXkoKTtcbiAgICAgICAgcmV0dXJuIGxoc0tleS5sZW5ndGggPT09IHJoc0tleS5sZW5ndGggJiYgbGhzS2V5LmV2ZXJ5KChsLCBpKSA9PiBsID09PSByaHNLZXlbaV0pO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoZSBjdXJyZW50IHR5cGUgaXMgSmF2YVNjcmlwdC1lcXVhbCB0byB0aGUgUkhTIHR5cGVcbiAgICpcbiAgICogU2FtZSBhcyBub3JtYWwgZXF1YWxpdHksIGJ1dCBjb25zaWRlciBgaW50ZWdlcmAgYW5kIGBudW1iZXJgIHRoZSBzYW1lIHR5cGVzLlxuICAgKi9cbiAgcHVibGljIGphdmFzY3JpcHRFcXVhbHMocmhzOiBQcm9wZXJ0eVR5cGUpOiBib29sZWFuIHtcbiAgICBzd2l0Y2ggKHRoaXMudHlwZS50eXBlKSB7XG4gICAgICBjYXNlICdudW1iZXInOlxuICAgICAgY2FzZSAnaW50ZWdlcic6XG4gICAgICAgIC8vIFdpZGVuaW5nXG4gICAgICAgIHJldHVybiByaHMudHlwZSA9PT0gJ2ludGVnZXInIHx8IHJocy50eXBlID09PSAnbnVtYmVyJztcblxuICAgICAgY2FzZSAnYXJyYXknOlxuICAgICAgY2FzZSAnbWFwJzpcbiAgICAgICAgcmV0dXJuIHJocy50eXBlID09PSB0aGlzLnR5cGUudHlwZSAmJiBuZXcgUmljaFByb3BlcnR5VHlwZSh0aGlzLnR5cGUuZWxlbWVudCkuamF2YXNjcmlwdEVxdWFscyhyaHMuZWxlbWVudCk7XG5cbiAgICAgIGNhc2UgJ3VuaW9uJzpcbiAgICAgICAgaWYgKHJocy50eXBlICE9PSAndW5pb24nKSB7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIC8vIEV2ZXJ5IHR5cGUgaW4gdGhpcyB1bmlvbiBuZWVkcyB0byBiZSBlcXVhbCBvbmUgdHlwZSBpbiBSSFNcbiAgICAgICAgcmV0dXJuIHRoaXMudHlwZS50eXBlcy5ldmVyeSgodDEpID0+IHJocy50eXBlcy5zb21lKCh0MikgPT4gbmV3IFJpY2hQcm9wZXJ0eVR5cGUodDEpLmphdmFzY3JpcHRFcXVhbHModDIpKSk7XG5cbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIC8vIEZvciBhbnl0aGluZyBlbHNlLCBuZWVkIHN0cmljdCBlcXVhbGl0eVxuICAgICAgICByZXR1cm4gdGhpcy5lcXVhbHMocmhzKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogV2hldGhlciB0aGUgY3VycmVudCB0eXBlIGlzIGFzc2lnbmFibGUgdG8gdGhlIFJIUyB0eXBlLlxuICAgKlxuICAgKiBUaGlzIGlzIG1lYW5zIGV2ZXJ5IHR5cGUgbWVtYmVyIG9mIHRoZSBMSFMgbXVzdCBiZSBwcmVzZW50IGluIHRoZSBSSFMgdHlwZVxuICAgKi9cbiAgcHVibGljIGFzc2lnbmFibGVUbyhyaHM6IFByb3BlcnR5VHlwZSk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGV4dHJhY3RNZW1iZXJzID0gKHR5cGU6IFByb3BlcnR5VHlwZSk6IFByb3BlcnR5VHlwZVtdID0+ICh0eXBlLnR5cGUgPT0gJ3VuaW9uJyA/IHR5cGUudHlwZXMgOiBbdHlwZV0pO1xuICAgIGNvbnN0IGFzUmljaFR5cGUgPSAodHlwZTogUHJvcGVydHlUeXBlKTogUmljaFByb3BlcnR5VHlwZSA9PiBuZXcgUmljaFByb3BlcnR5VHlwZSh0eXBlKTtcblxuICAgIGNvbnN0IHJoc01lbWJlcnMgPSBleHRyYWN0TWVtYmVycyhyaHMpO1xuICAgIGZvciAoY29uc3QgbGhzTWVtYmVyIG9mIGV4dHJhY3RNZW1iZXJzKHRoaXMudHlwZSkubWFwKGFzUmljaFR5cGUpKSB7XG4gICAgICBpZiAoIXJoc01lbWJlcnMuc29tZSgodHlwZSkgPT4gbGhzTWVtYmVyLmVxdWFscyh0eXBlKSkpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybiBhIHZlcnNpb24gb2YgdGhpcyB0eXBlLCBidXQgd2l0aCBhbGwgdHlwZSB1bmlvbnMgaW4gYSByZWd1bGFyaXplZCBvcmRlclxuICAgKi9cbiAgcHVibGljIG5vcm1hbGl6ZShkYjogU3BlY0RhdGFiYXNlKTogUmljaFByb3BlcnR5VHlwZSB7XG4gICAgc3dpdGNoICh0aGlzLnR5cGUudHlwZSkge1xuICAgICAgY2FzZSAnYXJyYXknOlxuICAgICAgY2FzZSAnbWFwJzpcbiAgICAgICAgcmV0dXJuIG5ldyBSaWNoUHJvcGVydHlUeXBlKHtcbiAgICAgICAgICB0eXBlOiB0aGlzLnR5cGUudHlwZSxcbiAgICAgICAgICBlbGVtZW50OiBuZXcgUmljaFByb3BlcnR5VHlwZSh0aGlzLnR5cGUuZWxlbWVudCkubm9ybWFsaXplKGRiKS50eXBlLFxuICAgICAgICB9KTtcbiAgICAgIGNhc2UgJ3VuaW9uJzpcbiAgICAgICAgY29uc3QgdHlwZXMgPSB0aGlzLnR5cGUudHlwZXNcbiAgICAgICAgICAubWFwKCh0KSA9PiBuZXcgUmljaFByb3BlcnR5VHlwZSh0KS5ub3JtYWxpemUoZGIpKVxuICAgICAgICAgIC5tYXAoKHQpID0+IFt0LCB0LnNvcnRLZXkoZGIpXSBhcyBjb25zdCk7XG4gICAgICAgIHR5cGVzLnNvcnQoc29ydEtleUNvbXBhcmF0b3IoKFtfLCBzb3J0S2V5XSkgPT4gc29ydEtleSkpO1xuICAgICAgICByZXR1cm4gbmV3IFJpY2hQcm9wZXJ0eVR5cGUoe1xuICAgICAgICAgIHR5cGU6ICd1bmlvbicsXG4gICAgICAgICAgdHlwZXM6IHR5cGVzLm1hcCgoW3QsIF9dKSA9PiB0LnR5cGUpLFxuICAgICAgICB9KTtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBzdHJpbmdpZnkoZGI6IFNwZWNEYXRhYmFzZSwgd2l0aElkID0gdHJ1ZSk6IHN0cmluZyB7XG4gICAgc3dpdGNoICh0aGlzLnR5cGUudHlwZSkge1xuICAgICAgY2FzZSAnaW50ZWdlcic6XG4gICAgICBjYXNlICdib29sZWFuJzpcbiAgICAgIGNhc2UgJ2RhdGUtdGltZSc6XG4gICAgICBjYXNlICdqc29uJzpcbiAgICAgIGNhc2UgJ251bGwnOlxuICAgICAgY2FzZSAnbnVtYmVyJzpcbiAgICAgIGNhc2UgJ3N0cmluZyc6XG4gICAgICBjYXNlICd0YWcnOlxuICAgICAgICByZXR1cm4gdGhpcy50eXBlLnR5cGU7XG4gICAgICBjYXNlICdhcnJheSc6XG4gICAgICAgIHJldHVybiBgQXJyYXk8JHtuZXcgUmljaFByb3BlcnR5VHlwZSh0aGlzLnR5cGUuZWxlbWVudCkuc3RyaW5naWZ5KGRiLCB3aXRoSWQpfT5gO1xuICAgICAgY2FzZSAnbWFwJzpcbiAgICAgICAgcmV0dXJuIGBNYXA8c3RyaW5nLCAke25ldyBSaWNoUHJvcGVydHlUeXBlKHRoaXMudHlwZS5lbGVtZW50KS5zdHJpbmdpZnkoZGIsIHdpdGhJZCl9PmA7XG4gICAgICBjYXNlICdyZWYnOlxuICAgICAgICBjb25zdCB0eXBlID0gZGIuZ2V0KCd0eXBlRGVmaW5pdGlvbicsIHRoaXMudHlwZS5yZWZlcmVuY2UpO1xuICAgICAgICByZXR1cm4gd2l0aElkID8gYCR7dHlwZS5uYW1lfSgke3RoaXMudHlwZS5yZWZlcmVuY2UuJHJlZn0pYCA6IHR5cGUubmFtZTtcbiAgICAgIGNhc2UgJ3VuaW9uJzpcbiAgICAgICAgcmV0dXJuIHRoaXMudHlwZS50eXBlcy5tYXAoKHQpID0+IG5ldyBSaWNoUHJvcGVydHlUeXBlKHQpLnN0cmluZ2lmeShkYiwgd2l0aElkKSkuam9pbignIHwgJyk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybiBhIHNvcnRhYmxlIGtleSBiYXNlZCBvbiB0aGlzIHR5cGVcbiAgICpcbiAgICogSWYgYSBkYXRhYmFzZSBpcyBnaXZlbiwgdHlwZSBkZWZpbml0aW9ucyB3aWxsIGJlIHNvcnRlZCBiYXNlZCBvbiB0eXBlIG5hbWUsXG4gICAqIG90aGVyd2lzZSBvbiBpZGVudGlmaWVyXG4gICAqL1xuICBwdWJsaWMgc29ydEtleShkYj86IFNwZWNEYXRhYmFzZSk6IHN0cmluZ1tdIHtcbiAgICBzd2l0Y2ggKHRoaXMudHlwZS50eXBlKSB7XG4gICAgICBjYXNlICdpbnRlZ2VyJzpcbiAgICAgIGNhc2UgJ2Jvb2xlYW4nOlxuICAgICAgY2FzZSAnZGF0ZS10aW1lJzpcbiAgICAgIGNhc2UgJ2pzb24nOlxuICAgICAgY2FzZSAnbnVsbCc6XG4gICAgICBjYXNlICdudW1iZXInOlxuICAgICAgY2FzZSAnc3RyaW5nJzpcbiAgICAgIGNhc2UgJ3RhZyc6XG4gICAgICAgIHJldHVybiBbJzAnLCB0aGlzLnR5cGUudHlwZV07XG4gICAgICBjYXNlICdhcnJheSc6XG4gICAgICBjYXNlICdtYXAnOlxuICAgICAgICByZXR1cm4gWycxJywgdGhpcy50eXBlLnR5cGUsIC4uLm5ldyBSaWNoUHJvcGVydHlUeXBlKHRoaXMudHlwZS5lbGVtZW50KS5zb3J0S2V5KGRiKV07XG4gICAgICBjYXNlICdyZWYnOlxuICAgICAgICByZXR1cm4gWycyJywgdGhpcy50eXBlLnR5cGUsIGRiPy5nZXQoJ3R5cGVEZWZpbml0aW9uJywgdGhpcy50eXBlLnJlZmVyZW5jZSk/Lm5hbWUgPz8gdGhpcy50eXBlLnJlZmVyZW5jZS4kcmVmXTtcbiAgICAgIGNhc2UgJ3VuaW9uJzpcbiAgICAgICAgY29uc3QgdHlwZUtleXMgPSB0aGlzLnR5cGUudHlwZXMubWFwKCh0KSA9PiBuZXcgUmljaFByb3BlcnR5VHlwZSh0KS5zb3J0S2V5KGRiKSk7XG4gICAgICAgIHR5cGVLZXlzLnNvcnQoc29ydEtleUNvbXBhcmF0b3IoKHgpID0+IHgpKTtcbiAgICAgICAgcmV0dXJuIFsnMycsIHRoaXMudHlwZS50eXBlLCAuLi50eXBlS2V5cy5mbGF0TWFwKCh4KSA9PiB4KV07XG4gICAgfVxuICB9XG59XG4iXX0=","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.sortKeyComparator = void 0;\n/**\n * Make a sorting comparator that will sort by a given sort key\n */\nfunction sortKeyComparator(keyFn) {\n return (a, b) => {\n const ak = keyFn(a);\n const bk = keyFn(b);\n for (let i = 0; i < ak.length && i < bk.length; i++) {\n const av = ak[i];\n const bv = bk[i];\n let diff = 0;\n if (typeof av === 'number' && typeof bv === 'number') {\n diff = av - bv;\n }\n else if (typeof av === 'string' && typeof bv === 'string') {\n diff = av.localeCompare(bv);\n }\n if (diff !== 0) {\n return diff;\n }\n }\n return bk.length - ak.length;\n };\n}\nexports.sortKeyComparator = sortKeyComparator;\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic29ydGluZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsL3NvcnRpbmcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUE7O0dBRUc7QUFDSCxTQUFnQixpQkFBaUIsQ0FBSSxLQUF1QztJQUMxRSxPQUFPLENBQUMsQ0FBSSxFQUFFLENBQUksRUFBVSxFQUFFO1FBQzVCLE1BQU0sRUFBRSxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNwQixNQUFNLEVBQUUsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFFcEIsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxNQUFNLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7WUFDbkQsTUFBTSxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ2pCLE1BQU0sRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUVqQixJQUFJLElBQUksR0FBRyxDQUFDLENBQUM7WUFDYixJQUFJLE9BQU8sRUFBRSxLQUFLLFFBQVEsSUFBSSxPQUFPLEVBQUUsS0FBSyxRQUFRLEVBQUU7Z0JBQ3BELElBQUksR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDO2FBQ2hCO2lCQUFNLElBQUksT0FBTyxFQUFFLEtBQUssUUFBUSxJQUFJLE9BQU8sRUFBRSxLQUFLLFFBQVEsRUFBRTtnQkFDM0QsSUFBSSxHQUFHLEVBQUUsQ0FBQyxhQUFhLENBQUMsRUFBRSxDQUFDLENBQUM7YUFDN0I7WUFFRCxJQUFJLElBQUksS0FBSyxDQUFDLEVBQUU7Z0JBQ2QsT0FBTyxJQUFJLENBQUM7YUFDYjtTQUNGO1FBRUQsT0FBTyxFQUFFLENBQUMsTUFBTSxHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUM7SUFDL0IsQ0FBQyxDQUFDO0FBQ0osQ0FBQztBQXZCRCw4Q0F1QkMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIE1ha2UgYSBzb3J0aW5nIGNvbXBhcmF0b3IgdGhhdCB3aWxsIHNvcnQgYnkgYSBnaXZlbiBzb3J0IGtleVxuICovXG5leHBvcnQgZnVuY3Rpb24gc29ydEtleUNvbXBhcmF0b3I8QT4oa2V5Rm46ICh4OiBBKSA9PiBBcnJheTxzdHJpbmcgfCBudW1iZXI+KSB7XG4gIHJldHVybiAoYTogQSwgYjogQSk6IG51bWJlciA9PiB7XG4gICAgY29uc3QgYWsgPSBrZXlGbihhKTtcbiAgICBjb25zdCBiayA9IGtleUZuKGIpO1xuXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhay5sZW5ndGggJiYgaSA8IGJrLmxlbmd0aDsgaSsrKSB7XG4gICAgICBjb25zdCBhdiA9IGFrW2ldO1xuICAgICAgY29uc3QgYnYgPSBia1tpXTtcblxuICAgICAgbGV0IGRpZmYgPSAwO1xuICAgICAgaWYgKHR5cGVvZiBhdiA9PT0gJ251bWJlcicgJiYgdHlwZW9mIGJ2ID09PSAnbnVtYmVyJykge1xuICAgICAgICBkaWZmID0gYXYgLSBidjtcbiAgICAgIH0gZWxzZSBpZiAodHlwZW9mIGF2ID09PSAnc3RyaW5nJyAmJiB0eXBlb2YgYnYgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIGRpZmYgPSBhdi5sb2NhbGVDb21wYXJlKGJ2KTtcbiAgICAgIH1cblxuICAgICAgaWYgKGRpZmYgIT09IDApIHtcbiAgICAgICAgcmV0dXJuIGRpZmY7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGJrLmxlbmd0aCAtIGFrLmxlbmd0aDtcbiAgfTtcbn1cbiJdfQ==","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.resolveHttpAuthSchemeConfig = exports.defaultCloudFormationHttpAuthSchemeProvider = exports.defaultCloudFormationHttpAuthSchemeParametersProvider = void 0;\nconst core_1 = require(\"@aws-sdk/core\");\nconst util_middleware_1 = require(\"@smithy/util-middleware\");\nconst defaultCloudFormationHttpAuthSchemeParametersProvider = async (config, context, input) => {\n return {\n operation: (0, util_middleware_1.getSmithyContext)(context).operation,\n region: (await (0, util_middleware_1.normalizeProvider)(config.region)()) ||\n (() => {\n throw new Error(\"expected `region` to be configured for `aws.auth#sigv4`\");\n })(),\n };\n};\nexports.defaultCloudFormationHttpAuthSchemeParametersProvider = defaultCloudFormationHttpAuthSchemeParametersProvider;\nfunction createAwsAuthSigv4HttpAuthOption(authParameters) {\n return {\n schemeId: \"aws.auth#sigv4\",\n signingProperties: {\n name: \"cloudformation\",\n region: authParameters.region,\n },\n propertiesExtractor: (config, context) => ({\n signingProperties: {\n config,\n context,\n },\n }),\n };\n}\nconst defaultCloudFormationHttpAuthSchemeProvider = (authParameters) => {\n const options = [];\n switch (authParameters.operation) {\n default: {\n options.push(createAwsAuthSigv4HttpAuthOption(authParameters));\n }\n }\n return options;\n};\nexports.defaultCloudFormationHttpAuthSchemeProvider = defaultCloudFormationHttpAuthSchemeProvider;\nconst resolveHttpAuthSchemeConfig = (config) => {\n const config_0 = (0, core_1.resolveAwsSdkSigV4Config)(config);\n return {\n ...config_0,\n };\n};\nexports.resolveHttpAuthSchemeConfig = resolveHttpAuthSchemeConfig;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.defaultEndpointResolver = void 0;\nconst util_endpoints_1 = require(\"@aws-sdk/util-endpoints\");\nconst util_endpoints_2 = require(\"@smithy/util-endpoints\");\nconst ruleset_1 = require(\"./ruleset\");\nconst cache = new util_endpoints_2.EndpointCache({\n size: 50,\n params: [\"Endpoint\", \"Region\", \"UseDualStack\", \"UseFIPS\"],\n});\nconst defaultEndpointResolver = (endpointParams, context = {}) => {\n return cache.get(endpointParams, () => (0, util_endpoints_2.resolveEndpoint)(ruleset_1.ruleSet, {\n endpointParams: endpointParams,\n logger: context.logger,\n }));\n};\nexports.defaultEndpointResolver = defaultEndpointResolver;\nutil_endpoints_2.customEndpointFunctions.aws = util_endpoints_1.awsEndpointFunctions;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ruleSet = void 0;\nconst u = \"required\", v = \"fn\", w = \"argv\", x = \"ref\";\nconst a = true, b = \"isSet\", c = \"booleanEquals\", d = \"error\", e = \"endpoint\", f = \"tree\", g = \"PartitionResult\", h = \"getAttr\", i = { [u]: false, \"type\": \"String\" }, j = { [u]: true, \"default\": false, \"type\": \"Boolean\" }, k = { [x]: \"Endpoint\" }, l = { [v]: c, [w]: [{ [x]: \"UseFIPS\" }, true] }, m = { [v]: c, [w]: [{ [x]: \"UseDualStack\" }, true] }, n = {}, o = { [v]: h, [w]: [{ [x]: g }, \"supportsFIPS\"] }, p = { [x]: g }, q = { [v]: c, [w]: [true, { [v]: h, [w]: [p, \"supportsDualStack\"] }] }, r = [l], s = [m], t = [{ [x]: \"Region\" }];\nconst _data = { version: \"1.0\", parameters: { Region: i, UseDualStack: j, UseFIPS: j, Endpoint: i }, rules: [{ conditions: [{ [v]: b, [w]: [k] }], rules: [{ conditions: r, error: \"Invalid Configuration: FIPS and custom endpoint are not supported\", type: d }, { conditions: s, error: \"Invalid Configuration: Dualstack and custom endpoint are not supported\", type: d }, { endpoint: { url: k, properties: n, headers: n }, type: e }], type: f }, { conditions: [{ [v]: b, [w]: t }], rules: [{ conditions: [{ [v]: \"aws.partition\", [w]: t, assign: g }], rules: [{ conditions: [l, m], rules: [{ conditions: [{ [v]: c, [w]: [a, o] }, q], rules: [{ endpoint: { url: \"https://cloudformation-fips.{Region}.{PartitionResult#dualStackDnsSuffix}\", properties: n, headers: n }, type: e }], type: f }, { error: \"FIPS and DualStack are enabled, but this partition does not support one or both\", type: d }], type: f }, { conditions: r, rules: [{ conditions: [{ [v]: c, [w]: [o, a] }], rules: [{ conditions: [{ [v]: \"stringEquals\", [w]: [{ [v]: h, [w]: [p, \"name\"] }, \"aws-us-gov\"] }], endpoint: { url: \"https://cloudformation.{Region}.amazonaws.com\", properties: n, headers: n }, type: e }, { endpoint: { url: \"https://cloudformation-fips.{Region}.{PartitionResult#dnsSuffix}\", properties: n, headers: n }, type: e }], type: f }, { error: \"FIPS is enabled but this partition does not support FIPS\", type: d }], type: f }, { conditions: s, rules: [{ conditions: [q], rules: [{ endpoint: { url: \"https://cloudformation.{Region}.{PartitionResult#dualStackDnsSuffix}\", properties: n, headers: n }, type: e }], type: f }, { error: \"DualStack is enabled but this partition does not support DualStack\", type: d }], type: f }, { endpoint: { url: \"https://cloudformation.{Region}.{PartitionResult#dnsSuffix}\", properties: n, headers: n }, type: e }], type: f }], type: f }, { error: \"Invalid Configuration: Missing Region\", type: d }] };\nexports.ruleSet = _data;\n","\"use strict\";\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/index.ts\nvar src_exports = {};\n__export(src_exports, {\n AccountFilterType: () => AccountFilterType,\n AccountGateStatus: () => AccountGateStatus,\n ActivateOrganizationsAccessCommand: () => ActivateOrganizationsAccessCommand,\n ActivateTypeCommand: () => ActivateTypeCommand,\n AlreadyExistsException: () => AlreadyExistsException,\n AttributeChangeType: () => AttributeChangeType,\n BatchDescribeTypeConfigurationsCommand: () => BatchDescribeTypeConfigurationsCommand,\n CFNRegistryException: () => CFNRegistryException,\n CallAs: () => CallAs,\n CancelUpdateStackCommand: () => CancelUpdateStackCommand,\n Capability: () => Capability,\n Category: () => Category,\n ChangeAction: () => ChangeAction,\n ChangeSetHooksStatus: () => ChangeSetHooksStatus,\n ChangeSetNotFoundException: () => ChangeSetNotFoundException,\n ChangeSetStatus: () => ChangeSetStatus,\n ChangeSetType: () => ChangeSetType,\n ChangeSource: () => ChangeSource,\n ChangeType: () => ChangeType,\n CloudFormation: () => CloudFormation,\n CloudFormationClient: () => CloudFormationClient,\n CloudFormationServiceException: () => CloudFormationServiceException,\n ConcurrencyMode: () => ConcurrencyMode,\n ConcurrentResourcesLimitExceededException: () => ConcurrentResourcesLimitExceededException,\n ContinueUpdateRollbackCommand: () => ContinueUpdateRollbackCommand,\n CreateChangeSetCommand: () => CreateChangeSetCommand,\n CreateGeneratedTemplateCommand: () => CreateGeneratedTemplateCommand,\n CreateStackCommand: () => CreateStackCommand,\n CreateStackInstancesCommand: () => CreateStackInstancesCommand,\n CreateStackSetCommand: () => CreateStackSetCommand,\n CreatedButModifiedException: () => CreatedButModifiedException,\n DeactivateOrganizationsAccessCommand: () => DeactivateOrganizationsAccessCommand,\n DeactivateTypeCommand: () => DeactivateTypeCommand,\n DeleteChangeSetCommand: () => DeleteChangeSetCommand,\n DeleteGeneratedTemplateCommand: () => DeleteGeneratedTemplateCommand,\n DeleteStackCommand: () => DeleteStackCommand,\n DeleteStackInstancesCommand: () => DeleteStackInstancesCommand,\n DeleteStackSetCommand: () => DeleteStackSetCommand,\n DeletionMode: () => DeletionMode,\n DeprecatedStatus: () => DeprecatedStatus,\n DeregisterTypeCommand: () => DeregisterTypeCommand,\n DescribeAccountLimitsCommand: () => DescribeAccountLimitsCommand,\n DescribeChangeSetCommand: () => DescribeChangeSetCommand,\n DescribeChangeSetHooksCommand: () => DescribeChangeSetHooksCommand,\n DescribeGeneratedTemplateCommand: () => DescribeGeneratedTemplateCommand,\n DescribeOrganizationsAccessCommand: () => DescribeOrganizationsAccessCommand,\n DescribePublisherCommand: () => DescribePublisherCommand,\n DescribeResourceScanCommand: () => DescribeResourceScanCommand,\n DescribeStackDriftDetectionStatusCommand: () => DescribeStackDriftDetectionStatusCommand,\n DescribeStackEventsCommand: () => DescribeStackEventsCommand,\n DescribeStackInstanceCommand: () => DescribeStackInstanceCommand,\n DescribeStackResourceCommand: () => DescribeStackResourceCommand,\n DescribeStackResourceDriftsCommand: () => DescribeStackResourceDriftsCommand,\n DescribeStackResourcesCommand: () => DescribeStackResourcesCommand,\n DescribeStackSetCommand: () => DescribeStackSetCommand,\n DescribeStackSetOperationCommand: () => DescribeStackSetOperationCommand,\n DescribeStacksCommand: () => DescribeStacksCommand,\n DescribeTypeCommand: () => DescribeTypeCommand,\n DescribeTypeRegistrationCommand: () => DescribeTypeRegistrationCommand,\n DetailedStatus: () => DetailedStatus,\n DetectStackDriftCommand: () => DetectStackDriftCommand,\n DetectStackResourceDriftCommand: () => DetectStackResourceDriftCommand,\n DetectStackSetDriftCommand: () => DetectStackSetDriftCommand,\n DifferenceType: () => DifferenceType,\n EstimateTemplateCostCommand: () => EstimateTemplateCostCommand,\n EvaluationType: () => EvaluationType,\n ExecuteChangeSetCommand: () => ExecuteChangeSetCommand,\n ExecutionStatus: () => ExecutionStatus,\n GeneratedTemplateDeletionPolicy: () => GeneratedTemplateDeletionPolicy,\n GeneratedTemplateNotFoundException: () => GeneratedTemplateNotFoundException,\n GeneratedTemplateResourceStatus: () => GeneratedTemplateResourceStatus,\n GeneratedTemplateStatus: () => GeneratedTemplateStatus,\n GeneratedTemplateUpdateReplacePolicy: () => GeneratedTemplateUpdateReplacePolicy,\n GetGeneratedTemplateCommand: () => GetGeneratedTemplateCommand,\n GetStackPolicyCommand: () => GetStackPolicyCommand,\n GetTemplateCommand: () => GetTemplateCommand,\n GetTemplateSummaryCommand: () => GetTemplateSummaryCommand,\n HandlerErrorCode: () => HandlerErrorCode,\n HookFailureMode: () => HookFailureMode,\n HookInvocationPoint: () => HookInvocationPoint,\n HookStatus: () => HookStatus,\n HookTargetType: () => HookTargetType,\n IdentityProvider: () => IdentityProvider,\n ImportStacksToStackSetCommand: () => ImportStacksToStackSetCommand,\n InsufficientCapabilitiesException: () => InsufficientCapabilitiesException,\n InvalidChangeSetStatusException: () => InvalidChangeSetStatusException,\n InvalidOperationException: () => InvalidOperationException,\n InvalidStateTransitionException: () => InvalidStateTransitionException,\n LimitExceededException: () => LimitExceededException,\n ListChangeSetsCommand: () => ListChangeSetsCommand,\n ListExportsCommand: () => ListExportsCommand,\n ListGeneratedTemplatesCommand: () => ListGeneratedTemplatesCommand,\n ListImportsCommand: () => ListImportsCommand,\n ListResourceScanRelatedResourcesCommand: () => ListResourceScanRelatedResourcesCommand,\n ListResourceScanResourcesCommand: () => ListResourceScanResourcesCommand,\n ListResourceScansCommand: () => ListResourceScansCommand,\n ListStackInstanceResourceDriftsCommand: () => ListStackInstanceResourceDriftsCommand,\n ListStackInstancesCommand: () => ListStackInstancesCommand,\n ListStackResourcesCommand: () => ListStackResourcesCommand,\n ListStackSetAutoDeploymentTargetsCommand: () => ListStackSetAutoDeploymentTargetsCommand,\n ListStackSetOperationResultsCommand: () => ListStackSetOperationResultsCommand,\n ListStackSetOperationsCommand: () => ListStackSetOperationsCommand,\n ListStackSetsCommand: () => ListStackSetsCommand,\n ListStacksCommand: () => ListStacksCommand,\n ListTypeRegistrationsCommand: () => ListTypeRegistrationsCommand,\n ListTypeVersionsCommand: () => ListTypeVersionsCommand,\n ListTypesCommand: () => ListTypesCommand,\n NameAlreadyExistsException: () => NameAlreadyExistsException,\n OnFailure: () => OnFailure,\n OnStackFailure: () => OnStackFailure,\n OperationIdAlreadyExistsException: () => OperationIdAlreadyExistsException,\n OperationInProgressException: () => OperationInProgressException,\n OperationNotFoundException: () => OperationNotFoundException,\n OperationResultFilterName: () => OperationResultFilterName,\n OperationStatus: () => OperationStatus,\n OperationStatusCheckFailedException: () => OperationStatusCheckFailedException,\n OrganizationStatus: () => OrganizationStatus,\n PermissionModels: () => PermissionModels,\n PolicyAction: () => PolicyAction,\n ProvisioningType: () => ProvisioningType,\n PublishTypeCommand: () => PublishTypeCommand,\n PublisherStatus: () => PublisherStatus,\n RecordHandlerProgressCommand: () => RecordHandlerProgressCommand,\n RegionConcurrencyType: () => RegionConcurrencyType,\n RegisterPublisherCommand: () => RegisterPublisherCommand,\n RegisterTypeCommand: () => RegisterTypeCommand,\n RegistrationStatus: () => RegistrationStatus,\n RegistryType: () => RegistryType,\n Replacement: () => Replacement,\n RequiresRecreation: () => RequiresRecreation,\n ResourceAttribute: () => ResourceAttribute,\n ResourceScanInProgressException: () => ResourceScanInProgressException,\n ResourceScanLimitExceededException: () => ResourceScanLimitExceededException,\n ResourceScanNotFoundException: () => ResourceScanNotFoundException,\n ResourceScanStatus: () => ResourceScanStatus,\n ResourceSignalStatus: () => ResourceSignalStatus,\n ResourceStatus: () => ResourceStatus,\n RollbackStackCommand: () => RollbackStackCommand,\n SetStackPolicyCommand: () => SetStackPolicyCommand,\n SetTypeConfigurationCommand: () => SetTypeConfigurationCommand,\n SetTypeDefaultVersionCommand: () => SetTypeDefaultVersionCommand,\n SignalResourceCommand: () => SignalResourceCommand,\n StackDriftDetectionStatus: () => StackDriftDetectionStatus,\n StackDriftStatus: () => StackDriftStatus,\n StackInstanceDetailedStatus: () => StackInstanceDetailedStatus,\n StackInstanceFilterName: () => StackInstanceFilterName,\n StackInstanceNotFoundException: () => StackInstanceNotFoundException,\n StackInstanceStatus: () => StackInstanceStatus,\n StackNotFoundException: () => StackNotFoundException,\n StackResourceDriftStatus: () => StackResourceDriftStatus,\n StackSetDriftDetectionStatus: () => StackSetDriftDetectionStatus,\n StackSetDriftStatus: () => StackSetDriftStatus,\n StackSetNotEmptyException: () => StackSetNotEmptyException,\n StackSetNotFoundException: () => StackSetNotFoundException,\n StackSetOperationAction: () => StackSetOperationAction,\n StackSetOperationResultStatus: () => StackSetOperationResultStatus,\n StackSetOperationStatus: () => StackSetOperationStatus,\n StackSetStatus: () => StackSetStatus,\n StackStatus: () => StackStatus,\n StaleRequestException: () => StaleRequestException,\n StartResourceScanCommand: () => StartResourceScanCommand,\n StopStackSetOperationCommand: () => StopStackSetOperationCommand,\n TemplateFormat: () => TemplateFormat,\n TemplateStage: () => TemplateStage,\n TestTypeCommand: () => TestTypeCommand,\n ThirdPartyType: () => ThirdPartyType,\n TokenAlreadyExistsException: () => TokenAlreadyExistsException,\n TypeConfigurationNotFoundException: () => TypeConfigurationNotFoundException,\n TypeNotFoundException: () => TypeNotFoundException,\n TypeTestsStatus: () => TypeTestsStatus,\n UpdateGeneratedTemplateCommand: () => UpdateGeneratedTemplateCommand,\n UpdateStackCommand: () => UpdateStackCommand,\n UpdateStackInstancesCommand: () => UpdateStackInstancesCommand,\n UpdateStackSetCommand: () => UpdateStackSetCommand,\n UpdateTerminationProtectionCommand: () => UpdateTerminationProtectionCommand,\n ValidateTemplateCommand: () => ValidateTemplateCommand,\n VersionBump: () => VersionBump,\n Visibility: () => Visibility,\n WarningType: () => WarningType,\n __Client: () => import_smithy_client.Client,\n paginateDescribeAccountLimits: () => paginateDescribeAccountLimits,\n paginateDescribeStackEvents: () => paginateDescribeStackEvents,\n paginateDescribeStackResourceDrifts: () => paginateDescribeStackResourceDrifts,\n paginateDescribeStacks: () => paginateDescribeStacks,\n paginateListChangeSets: () => paginateListChangeSets,\n paginateListExports: () => paginateListExports,\n paginateListGeneratedTemplates: () => paginateListGeneratedTemplates,\n paginateListImports: () => paginateListImports,\n paginateListResourceScanRelatedResources: () => paginateListResourceScanRelatedResources,\n paginateListResourceScanResources: () => paginateListResourceScanResources,\n paginateListResourceScans: () => paginateListResourceScans,\n paginateListStackInstances: () => paginateListStackInstances,\n paginateListStackResources: () => paginateListStackResources,\n paginateListStackSetOperationResults: () => paginateListStackSetOperationResults,\n paginateListStackSetOperations: () => paginateListStackSetOperations,\n paginateListStackSets: () => paginateListStackSets,\n paginateListStacks: () => paginateListStacks,\n paginateListTypeRegistrations: () => paginateListTypeRegistrations,\n paginateListTypeVersions: () => paginateListTypeVersions,\n paginateListTypes: () => paginateListTypes,\n waitForChangeSetCreateComplete: () => waitForChangeSetCreateComplete,\n waitForStackCreateComplete: () => waitForStackCreateComplete,\n waitForStackDeleteComplete: () => waitForStackDeleteComplete,\n waitForStackExists: () => waitForStackExists,\n waitForStackImportComplete: () => waitForStackImportComplete,\n waitForStackRollbackComplete: () => waitForStackRollbackComplete,\n waitForStackUpdateComplete: () => waitForStackUpdateComplete,\n waitForTypeRegistrationComplete: () => waitForTypeRegistrationComplete,\n waitUntilChangeSetCreateComplete: () => waitUntilChangeSetCreateComplete,\n waitUntilStackCreateComplete: () => waitUntilStackCreateComplete,\n waitUntilStackDeleteComplete: () => waitUntilStackDeleteComplete,\n waitUntilStackExists: () => waitUntilStackExists,\n waitUntilStackImportComplete: () => waitUntilStackImportComplete,\n waitUntilStackRollbackComplete: () => waitUntilStackRollbackComplete,\n waitUntilStackUpdateComplete: () => waitUntilStackUpdateComplete,\n waitUntilTypeRegistrationComplete: () => waitUntilTypeRegistrationComplete\n});\nmodule.exports = __toCommonJS(src_exports);\n\n// src/CloudFormationClient.ts\nvar import_middleware_host_header = require(\"@aws-sdk/middleware-host-header\");\nvar import_middleware_logger = require(\"@aws-sdk/middleware-logger\");\nvar import_middleware_recursion_detection = require(\"@aws-sdk/middleware-recursion-detection\");\nvar import_middleware_user_agent = require(\"@aws-sdk/middleware-user-agent\");\nvar import_config_resolver = require(\"@smithy/config-resolver\");\nvar import_core = require(\"@smithy/core\");\nvar import_middleware_content_length = require(\"@smithy/middleware-content-length\");\nvar import_middleware_endpoint = require(\"@smithy/middleware-endpoint\");\nvar import_middleware_retry = require(\"@smithy/middleware-retry\");\n\nvar import_httpAuthSchemeProvider = require(\"./auth/httpAuthSchemeProvider\");\n\n// src/endpoint/EndpointParameters.ts\nvar resolveClientEndpointParameters = /* @__PURE__ */ __name((options) => {\n return {\n ...options,\n useDualstackEndpoint: options.useDualstackEndpoint ?? false,\n useFipsEndpoint: options.useFipsEndpoint ?? false,\n defaultSigningName: \"cloudformation\"\n };\n}, \"resolveClientEndpointParameters\");\nvar commonParams = {\n UseFIPS: { type: \"builtInParams\", name: \"useFipsEndpoint\" },\n Endpoint: { type: \"builtInParams\", name: \"endpoint\" },\n Region: { type: \"builtInParams\", name: \"region\" },\n UseDualStack: { type: \"builtInParams\", name: \"useDualstackEndpoint\" }\n};\n\n// src/CloudFormationClient.ts\nvar import_runtimeConfig = require(\"././runtimeConfig\");\n\n// src/runtimeExtensions.ts\nvar import_region_config_resolver = require(\"@aws-sdk/region-config-resolver\");\nvar import_protocol_http = require(\"@smithy/protocol-http\");\nvar import_smithy_client = require(\"@smithy/smithy-client\");\n\n// src/auth/httpAuthExtensionConfiguration.ts\nvar getHttpAuthExtensionConfiguration = /* @__PURE__ */ __name((runtimeConfig) => {\n const _httpAuthSchemes = runtimeConfig.httpAuthSchemes;\n let _httpAuthSchemeProvider = runtimeConfig.httpAuthSchemeProvider;\n let _credentials = runtimeConfig.credentials;\n return {\n setHttpAuthScheme(httpAuthScheme) {\n const index = _httpAuthSchemes.findIndex((scheme) => scheme.schemeId === httpAuthScheme.schemeId);\n if (index === -1) {\n _httpAuthSchemes.push(httpAuthScheme);\n } else {\n _httpAuthSchemes.splice(index, 1, httpAuthScheme);\n }\n },\n httpAuthSchemes() {\n return _httpAuthSchemes;\n },\n setHttpAuthSchemeProvider(httpAuthSchemeProvider) {\n _httpAuthSchemeProvider = httpAuthSchemeProvider;\n },\n httpAuthSchemeProvider() {\n return _httpAuthSchemeProvider;\n },\n setCredentials(credentials) {\n _credentials = credentials;\n },\n credentials() {\n return _credentials;\n }\n };\n}, \"getHttpAuthExtensionConfiguration\");\nvar resolveHttpAuthRuntimeConfig = /* @__PURE__ */ __name((config) => {\n return {\n httpAuthSchemes: config.httpAuthSchemes(),\n httpAuthSchemeProvider: config.httpAuthSchemeProvider(),\n credentials: config.credentials()\n };\n}, \"resolveHttpAuthRuntimeConfig\");\n\n// src/runtimeExtensions.ts\nvar asPartial = /* @__PURE__ */ __name((t) => t, \"asPartial\");\nvar resolveRuntimeExtensions = /* @__PURE__ */ __name((runtimeConfig, extensions) => {\n const extensionConfiguration = {\n ...asPartial((0, import_region_config_resolver.getAwsRegionExtensionConfiguration)(runtimeConfig)),\n ...asPartial((0, import_smithy_client.getDefaultExtensionConfiguration)(runtimeConfig)),\n ...asPartial((0, import_protocol_http.getHttpHandlerExtensionConfiguration)(runtimeConfig)),\n ...asPartial(getHttpAuthExtensionConfiguration(runtimeConfig))\n };\n extensions.forEach((extension) => extension.configure(extensionConfiguration));\n return {\n ...runtimeConfig,\n ...(0, import_region_config_resolver.resolveAwsRegionExtensionConfiguration)(extensionConfiguration),\n ...(0, import_smithy_client.resolveDefaultRuntimeConfig)(extensionConfiguration),\n ...(0, import_protocol_http.resolveHttpHandlerRuntimeConfig)(extensionConfiguration),\n ...resolveHttpAuthRuntimeConfig(extensionConfiguration)\n };\n}, \"resolveRuntimeExtensions\");\n\n// src/CloudFormationClient.ts\nvar _CloudFormationClient = class _CloudFormationClient extends import_smithy_client.Client {\n constructor(...[configuration]) {\n const _config_0 = (0, import_runtimeConfig.getRuntimeConfig)(configuration || {});\n const _config_1 = resolveClientEndpointParameters(_config_0);\n const _config_2 = (0, import_middleware_user_agent.resolveUserAgentConfig)(_config_1);\n const _config_3 = (0, import_middleware_retry.resolveRetryConfig)(_config_2);\n const _config_4 = (0, import_config_resolver.resolveRegionConfig)(_config_3);\n const _config_5 = (0, import_middleware_host_header.resolveHostHeaderConfig)(_config_4);\n const _config_6 = (0, import_middleware_endpoint.resolveEndpointConfig)(_config_5);\n const _config_7 = (0, import_httpAuthSchemeProvider.resolveHttpAuthSchemeConfig)(_config_6);\n const _config_8 = resolveRuntimeExtensions(_config_7, (configuration == null ? void 0 : configuration.extensions) || []);\n super(_config_8);\n this.config = _config_8;\n this.middlewareStack.use((0, import_middleware_user_agent.getUserAgentPlugin)(this.config));\n this.middlewareStack.use((0, import_middleware_retry.getRetryPlugin)(this.config));\n this.middlewareStack.use((0, import_middleware_content_length.getContentLengthPlugin)(this.config));\n this.middlewareStack.use((0, import_middleware_host_header.getHostHeaderPlugin)(this.config));\n this.middlewareStack.use((0, import_middleware_logger.getLoggerPlugin)(this.config));\n this.middlewareStack.use((0, import_middleware_recursion_detection.getRecursionDetectionPlugin)(this.config));\n this.middlewareStack.use(\n (0, import_core.getHttpAuthSchemeEndpointRuleSetPlugin)(this.config, {\n httpAuthSchemeParametersProvider: import_httpAuthSchemeProvider.defaultCloudFormationHttpAuthSchemeParametersProvider,\n identityProviderConfigProvider: async (config) => new import_core.DefaultIdentityProviderConfig({\n \"aws.auth#sigv4\": config.credentials\n })\n })\n );\n this.middlewareStack.use((0, import_core.getHttpSigningPlugin)(this.config));\n }\n /**\n * Destroy underlying resources, like sockets. It's usually not necessary to do this.\n * However in Node.js, it's best to explicitly shut down the client's agent when it is no longer needed.\n * Otherwise, sockets might stay open for quite a long time before the server terminates them.\n */\n destroy() {\n super.destroy();\n }\n};\n__name(_CloudFormationClient, \"CloudFormationClient\");\nvar CloudFormationClient = _CloudFormationClient;\n\n// src/CloudFormation.ts\n\n\n// src/commands/ActivateOrganizationsAccessCommand.ts\n\nvar import_middleware_serde = require(\"@smithy/middleware-serde\");\n\n\n// src/protocols/Aws_query.ts\nvar import_core2 = require(\"@aws-sdk/core\");\n\n\nvar import_uuid = require(\"uuid\");\n\n// src/models/CloudFormationServiceException.ts\n\nvar _CloudFormationServiceException = class _CloudFormationServiceException extends import_smithy_client.ServiceException {\n /**\n * @internal\n */\n constructor(options) {\n super(options);\n Object.setPrototypeOf(this, _CloudFormationServiceException.prototype);\n }\n};\n__name(_CloudFormationServiceException, \"CloudFormationServiceException\");\nvar CloudFormationServiceException = _CloudFormationServiceException;\n\n// src/models/models_0.ts\nvar AccountFilterType = {\n DIFFERENCE: \"DIFFERENCE\",\n INTERSECTION: \"INTERSECTION\",\n NONE: \"NONE\",\n UNION: \"UNION\"\n};\nvar AccountGateStatus = {\n FAILED: \"FAILED\",\n SKIPPED: \"SKIPPED\",\n SUCCEEDED: \"SUCCEEDED\"\n};\nvar _InvalidOperationException = class _InvalidOperationException extends CloudFormationServiceException {\n /**\n * @internal\n */\n constructor(opts) {\n super({\n name: \"InvalidOperationException\",\n $fault: \"client\",\n ...opts\n });\n this.name = \"InvalidOperationException\";\n this.$fault = \"client\";\n Object.setPrototypeOf(this, _InvalidOperationException.prototype);\n this.Message = opts.Message;\n }\n};\n__name(_InvalidOperationException, \"InvalidOperationException\");\nvar InvalidOperationException = _InvalidOperationException;\nvar _OperationNotFoundException = class _OperationNotFoundException extends CloudFormationServiceException {\n /**\n * @internal\n */\n constructor(opts) {\n super({\n name: \"OperationNotFoundException\",\n $fault: \"client\",\n ...opts\n });\n this.name = \"OperationNotFoundException\";\n this.$fault = \"client\";\n Object.setPrototypeOf(this, _OperationNotFoundException.prototype);\n this.Message = opts.Message;\n }\n};\n__name(_OperationNotFoundException, \"OperationNotFoundException\");\nvar OperationNotFoundException = _OperationNotFoundException;\nvar ThirdPartyType = {\n HOOK: \"HOOK\",\n MODULE: \"MODULE\",\n RESOURCE: \"RESOURCE\"\n};\nvar VersionBump = {\n MAJOR: \"MAJOR\",\n MINOR: \"MINOR\"\n};\nvar _CFNRegistryException = class _CFNRegistryException extends CloudFormationServiceException {\n /**\n * @internal\n */\n constructor(opts) {\n super({\n name: \"CFNRegistryException\",\n $fault: \"client\",\n ...opts\n });\n this.name = \"CFNRegistryException\";\n this.$fault = \"client\";\n Object.setPrototypeOf(this, _CFNRegistryException.prototype);\n this.Message = opts.Message;\n }\n};\n__name(_CFNRegistryException, \"CFNRegistryException\");\nvar CFNRegistryException = _CFNRegistryException;\nvar _TypeNotFoundException = class _TypeNotFoundException extends CloudFormationServiceException {\n /**\n * @internal\n */\n constructor(opts) {\n super({\n name: \"TypeNotFoundException\",\n $fault: \"client\",\n ...opts\n });\n this.name = \"TypeNotFoundException\";\n this.$fault = \"client\";\n Object.setPrototypeOf(this, _TypeNotFoundException.prototype);\n this.Message = opts.Message;\n }\n};\n__name(_TypeNotFoundException, \"TypeNotFoundException\");\nvar TypeNotFoundException = _TypeNotFoundException;\nvar _AlreadyExistsException = class _AlreadyExistsException extends CloudFormationServiceException {\n /**\n * @internal\n */\n constructor(opts) {\n super({\n name: \"AlreadyExistsException\",\n $fault: \"client\",\n ...opts\n });\n this.name = \"AlreadyExistsException\";\n this.$fault = \"client\";\n Object.setPrototypeOf(this, _AlreadyExistsException.prototype);\n this.Message = opts.Message;\n }\n};\n__name(_AlreadyExistsException, \"AlreadyExistsException\");\nvar AlreadyExistsException = _AlreadyExistsException;\nvar AttributeChangeType = {\n Add: \"Add\",\n Modify: \"Modify\",\n Remove: \"Remove\"\n};\nvar _TypeConfigurationNotFoundException = class _TypeConfigurationNotFoundException extends CloudFormationServiceException {\n /**\n * @internal\n */\n constructor(opts) {\n super({\n name: \"TypeConfigurationNotFoundException\",\n $fault: \"client\",\n ...opts\n });\n this.name = \"TypeConfigurationNotFoundException\";\n this.$fault = \"client\";\n Object.setPrototypeOf(this, _TypeConfigurationNotFoundException.prototype);\n this.Message = opts.Message;\n }\n};\n__name(_TypeConfigurationNotFoundException, \"TypeConfigurationNotFoundException\");\nvar TypeConfigurationNotFoundException = _TypeConfigurationNotFoundException;\nvar CallAs = {\n DELEGATED_ADMIN: \"DELEGATED_ADMIN\",\n SELF: \"SELF\"\n};\nvar _TokenAlreadyExistsException = class _TokenAlreadyExistsException extends CloudFormationServiceException {\n /**\n * @internal\n */\n constructor(opts) {\n super({\n name: \"TokenAlreadyExistsException\",\n $fault: \"client\",\n ...opts\n });\n this.name = \"TokenAlreadyExistsException\";\n this.$fault = \"client\";\n Object.setPrototypeOf(this, _TokenAlreadyExistsException.prototype);\n this.Message = opts.Message;\n }\n};\n__name(_TokenAlreadyExistsException, \"TokenAlreadyExistsException\");\nvar TokenAlreadyExistsException = _TokenAlreadyExistsException;\nvar Capability = {\n CAPABILITY_AUTO_EXPAND: \"CAPABILITY_AUTO_EXPAND\",\n CAPABILITY_IAM: \"CAPABILITY_IAM\",\n CAPABILITY_NAMED_IAM: \"CAPABILITY_NAMED_IAM\"\n};\nvar Category = {\n ACTIVATED: \"ACTIVATED\",\n AWS_TYPES: \"AWS_TYPES\",\n REGISTERED: \"REGISTERED\",\n THIRD_PARTY: \"THIRD_PARTY\"\n};\nvar ChangeAction = {\n Add: \"Add\",\n Dynamic: \"Dynamic\",\n Import: \"Import\",\n Modify: \"Modify\",\n Remove: \"Remove\"\n};\nvar ChangeSource = {\n Automatic: \"Automatic\",\n DirectModification: \"DirectModification\",\n ParameterReference: \"ParameterReference\",\n ResourceAttribute: \"ResourceAttribute\",\n ResourceReference: \"ResourceReference\"\n};\nvar EvaluationType = {\n Dynamic: \"Dynamic\",\n Static: \"Static\"\n};\nvar ResourceAttribute = {\n CreationPolicy: \"CreationPolicy\",\n DeletionPolicy: \"DeletionPolicy\",\n Metadata: \"Metadata\",\n Properties: \"Properties\",\n Tags: \"Tags\",\n UpdatePolicy: \"UpdatePolicy\",\n UpdateReplacePolicy: \"UpdateReplacePolicy\"\n};\nvar RequiresRecreation = {\n Always: \"Always\",\n Conditionally: \"Conditionally\",\n Never: \"Never\"\n};\nvar PolicyAction = {\n Delete: \"Delete\",\n ReplaceAndDelete: \"ReplaceAndDelete\",\n ReplaceAndRetain: \"ReplaceAndRetain\",\n ReplaceAndSnapshot: \"ReplaceAndSnapshot\",\n Retain: \"Retain\",\n Snapshot: \"Snapshot\"\n};\nvar Replacement = {\n Conditional: \"Conditional\",\n False: \"False\",\n True: \"True\"\n};\nvar ChangeType = {\n Resource: \"Resource\"\n};\nvar HookFailureMode = {\n FAIL: \"FAIL\",\n WARN: \"WARN\"\n};\nvar HookInvocationPoint = {\n PRE_PROVISION: \"PRE_PROVISION\"\n};\nvar HookTargetType = {\n RESOURCE: \"RESOURCE\"\n};\nvar ChangeSetHooksStatus = {\n PLANNED: \"PLANNED\",\n PLANNING: \"PLANNING\",\n UNAVAILABLE: \"UNAVAILABLE\"\n};\nvar _ChangeSetNotFoundException = class _ChangeSetNotFoundException extends CloudFormationServiceException {\n /**\n * @internal\n */\n constructor(opts) {\n super({\n name: \"ChangeSetNotFoundException\",\n $fault: \"client\",\n ...opts\n });\n this.name = \"ChangeSetNotFoundException\";\n this.$fault = \"client\";\n Object.setPrototypeOf(this, _ChangeSetNotFoundException.prototype);\n this.Message = opts.Message;\n }\n};\n__name(_ChangeSetNotFoundException, \"ChangeSetNotFoundException\");\nvar ChangeSetNotFoundException = _ChangeSetNotFoundException;\nvar ChangeSetStatus = {\n CREATE_COMPLETE: \"CREATE_COMPLETE\",\n CREATE_IN_PROGRESS: \"CREATE_IN_PROGRESS\",\n CREATE_PENDING: \"CREATE_PENDING\",\n DELETE_COMPLETE: \"DELETE_COMPLETE\",\n DELETE_FAILED: \"DELETE_FAILED\",\n DELETE_IN_PROGRESS: \"DELETE_IN_PROGRESS\",\n DELETE_PENDING: \"DELETE_PENDING\",\n FAILED: \"FAILED\"\n};\nvar ExecutionStatus = {\n AVAILABLE: \"AVAILABLE\",\n EXECUTE_COMPLETE: \"EXECUTE_COMPLETE\",\n EXECUTE_FAILED: \"EXECUTE_FAILED\",\n EXECUTE_IN_PROGRESS: \"EXECUTE_IN_PROGRESS\",\n OBSOLETE: \"OBSOLETE\",\n UNAVAILABLE: \"UNAVAILABLE\"\n};\nvar ChangeSetType = {\n CREATE: \"CREATE\",\n IMPORT: \"IMPORT\",\n UPDATE: \"UPDATE\"\n};\nvar OnStackFailure = {\n DELETE: \"DELETE\",\n DO_NOTHING: \"DO_NOTHING\",\n ROLLBACK: \"ROLLBACK\"\n};\nvar _InsufficientCapabilitiesException = class _InsufficientCapabilitiesException extends CloudFormationServiceException {\n /**\n * @internal\n */\n constructor(opts) {\n super({\n name: \"InsufficientCapabilitiesException\",\n $fault: \"client\",\n ...opts\n });\n this.name = \"InsufficientCapabilitiesException\";\n this.$fault = \"client\";\n Object.setPrototypeOf(this, _InsufficientCapabilitiesException.prototype);\n this.Message = opts.Message;\n }\n};\n__name(_InsufficientCapabilitiesException, \"InsufficientCapabilitiesException\");\nvar InsufficientCapabilitiesException = _InsufficientCapabilitiesException;\nvar _LimitExceededException = class _LimitExceededException extends CloudFormationServiceException {\n /**\n * @internal\n */\n constructor(opts) {\n super({\n name: \"LimitExceededException\",\n $fault: \"client\",\n ...opts\n });\n this.name = \"LimitExceededException\";\n this.$fault = \"client\";\n Object.setPrototypeOf(this, _LimitExceededException.prototype);\n this.Message = opts.Message;\n }\n};\n__name(_LimitExceededException, \"LimitExceededException\");\nvar LimitExceededException = _LimitExceededException;\nvar _ConcurrentResourcesLimitExceededException = class _ConcurrentResourcesLimitExceededException extends CloudFormationServiceException {\n /**\n * @internal\n */\n constructor(opts) {\n super({\n name: \"ConcurrentResourcesLimitExceededException\",\n $fault: \"client\",\n ...opts\n });\n this.name = \"ConcurrentResourcesLimitExceededException\";\n this.$fault = \"client\";\n Object.setPrototypeOf(this, _ConcurrentResourcesLimitExceededException.prototype);\n this.Message = opts.Message;\n }\n};\n__name(_ConcurrentResourcesLimitExceededException, \"ConcurrentResourcesLimitExceededException\");\nvar ConcurrentResourcesLimitExceededException = _ConcurrentResourcesLimitExceededException;\nvar GeneratedTemplateDeletionPolicy = {\n DELETE: \"DELETE\",\n RETAIN: \"RETAIN\"\n};\nvar GeneratedTemplateUpdateReplacePolicy = {\n DELETE: \"DELETE\",\n RETAIN: \"RETAIN\"\n};\nvar OnFailure = {\n DELETE: \"DELETE\",\n DO_NOTHING: \"DO_NOTHING\",\n ROLLBACK: \"ROLLBACK\"\n};\nvar ConcurrencyMode = {\n SOFT_FAILURE_TOLERANCE: \"SOFT_FAILURE_TOLERANCE\",\n STRICT_FAILURE_TOLERANCE: \"STRICT_FAILURE_TOLERANCE\"\n};\nvar RegionConcurrencyType = {\n PARALLEL: \"PARALLEL\",\n SEQUENTIAL: \"SEQUENTIAL\"\n};\nvar _OperationIdAlreadyExistsException = class _OperationIdAlreadyExistsException extends CloudFormationServiceException {\n /**\n * @internal\n */\n constructor(opts) {\n super({\n name: \"OperationIdAlreadyExistsException\",\n $fault: \"client\",\n ...opts\n });\n this.name = \"OperationIdAlreadyExistsException\";\n this.$fault = \"client\";\n Object.setPrototypeOf(this, _OperationIdAlreadyExistsException.prototype);\n this.Message = opts.Message;\n }\n};\n__name(_OperationIdAlreadyExistsException, \"OperationIdAlreadyExistsException\");\nvar OperationIdAlreadyExistsException = _OperationIdAlreadyExistsException;\nvar _OperationInProgressException = class _OperationInProgressException extends CloudFormationServiceException {\n /**\n * @internal\n */\n constructor(opts) {\n super({\n name: \"OperationInProgressException\",\n $fault: \"client\",\n ...opts\n });\n this.name = \"OperationInProgressException\";\n this.$fault = \"client\";\n Object.setPrototypeOf(this, _OperationInProgressException.prototype);\n this.Message = opts.Message;\n }\n};\n__name(_OperationInProgressException, \"OperationInProgressException\");\nvar OperationInProgressException = _OperationInProgressException;\nvar _StackSetNotFoundException = class _StackSetNotFoundException extends CloudFormationServiceException {\n /**\n * @internal\n */\n constructor(opts) {\n super({\n name: \"StackSetNotFoundException\",\n $fault: \"client\",\n ...opts\n });\n this.name = \"StackSetNotFoundException\";\n this.$fault = \"client\";\n Object.setPrototypeOf(this, _StackSetNotFoundException.prototype);\n this.Message = opts.Message;\n }\n};\n__name(_StackSetNotFoundException, \"StackSetNotFoundException\");\nvar StackSetNotFoundException = _StackSetNotFoundException;\nvar _StaleRequestException = class _StaleRequestException extends CloudFormationServiceException {\n /**\n * @internal\n */\n constructor(opts) {\n super({\n name: \"StaleRequestException\",\n $fault: \"client\",\n ...opts\n });\n this.name = \"StaleRequestException\";\n this.$fault = \"client\";\n Object.setPrototypeOf(this, _StaleRequestException.prototype);\n this.Message = opts.Message;\n }\n};\n__name(_StaleRequestException, \"StaleRequestException\");\nvar StaleRequestException = _StaleRequestException;\nvar _CreatedButModifiedException = class _CreatedButModifiedException extends CloudFormationServiceException {\n /**\n * @internal\n */\n constructor(opts) {\n super({\n name: \"CreatedButModifiedException\",\n $fault: \"client\",\n ...opts\n });\n this.name = \"CreatedButModifiedException\";\n this.$fault = \"client\";\n Object.setPrototypeOf(this, _CreatedButModifiedException.prototype);\n this.Message = opts.Message;\n }\n};\n__name(_CreatedButModifiedException, \"CreatedButModifiedException\");\nvar CreatedButModifiedException = _CreatedButModifiedException;\nvar PermissionModels = {\n SELF_MANAGED: \"SELF_MANAGED\",\n SERVICE_MANAGED: \"SERVICE_MANAGED\"\n};\nvar _NameAlreadyExistsException = class _NameAlreadyExistsException extends CloudFormationServiceException {\n /**\n * @internal\n */\n constructor(opts) {\n super({\n name: \"NameAlreadyExistsException\",\n $fault: \"client\",\n ...opts\n });\n this.name = \"NameAlreadyExistsException\";\n this.$fault = \"client\";\n Object.setPrototypeOf(this, _NameAlreadyExistsException.prototype);\n this.Message = opts.Message;\n }\n};\n__name(_NameAlreadyExistsException, \"NameAlreadyExistsException\");\nvar NameAlreadyExistsException = _NameAlreadyExistsException;\nvar _InvalidChangeSetStatusException = class _InvalidChangeSetStatusException extends CloudFormationServiceException {\n /**\n * @internal\n */\n constructor(opts) {\n super({\n name: \"InvalidChangeSetStatusException\",\n $fault: \"client\",\n ...opts\n });\n this.name = \"InvalidChangeSetStatusException\";\n this.$fault = \"client\";\n Object.setPrototypeOf(this, _InvalidChangeSetStatusException.prototype);\n this.Message = opts.Message;\n }\n};\n__name(_InvalidChangeSetStatusException, \"InvalidChangeSetStatusException\");\nvar InvalidChangeSetStatusException = _InvalidChangeSetStatusException;\nvar _GeneratedTemplateNotFoundException = class _GeneratedTemplateNotFoundException extends CloudFormationServiceException {\n /**\n * @internal\n */\n constructor(opts) {\n super({\n name: \"GeneratedTemplateNotFoundException\",\n $fault: \"client\",\n ...opts\n });\n this.name = \"GeneratedTemplateNotFoundException\";\n this.$fault = \"client\";\n Object.setPrototypeOf(this, _GeneratedTemplateNotFoundException.prototype);\n this.Message = opts.Message;\n }\n};\n__name(_GeneratedTemplateNotFoundException, \"GeneratedTemplateNotFoundException\");\nvar GeneratedTemplateNotFoundException = _GeneratedTemplateNotFoundException;\nvar DeletionMode = {\n FORCE_DELETE_STACK: \"FORCE_DELETE_STACK\",\n STANDARD: \"STANDARD\"\n};\nvar _StackSetNotEmptyException = class _StackSetNotEmptyException extends CloudFormationServiceException {\n /**\n * @internal\n */\n constructor(opts) {\n super({\n name: \"StackSetNotEmptyException\",\n $fault: \"client\",\n ...opts\n });\n this.name = \"StackSetNotEmptyException\";\n this.$fault = \"client\";\n Object.setPrototypeOf(this, _StackSetNotEmptyException.prototype);\n this.Message = opts.Message;\n }\n};\n__name(_StackSetNotEmptyException, \"StackSetNotEmptyException\");\nvar StackSetNotEmptyException = _StackSetNotEmptyException;\nvar RegistryType = {\n HOOK: \"HOOK\",\n MODULE: \"MODULE\",\n RESOURCE: \"RESOURCE\"\n};\nvar GeneratedTemplateResourceStatus = {\n COMPLETE: \"COMPLETE\",\n FAILED: \"FAILED\",\n IN_PROGRESS: \"IN_PROGRESS\",\n PENDING: \"PENDING\"\n};\nvar WarningType = {\n MUTUALLY_EXCLUSIVE_PROPERTIES: \"MUTUALLY_EXCLUSIVE_PROPERTIES\",\n MUTUALLY_EXCLUSIVE_TYPES: \"MUTUALLY_EXCLUSIVE_TYPES\",\n UNSUPPORTED_PROPERTIES: \"UNSUPPORTED_PROPERTIES\"\n};\nvar GeneratedTemplateStatus = {\n COMPLETE: \"COMPLETE\",\n CREATE_IN_PROGRESS: \"CREATE_IN_PROGRESS\",\n CREATE_PENDING: \"CREATE_PENDING\",\n DELETE_IN_PROGRESS: \"DELETE_IN_PROGRESS\",\n DELETE_PENDING: \"DELETE_PENDING\",\n FAILED: \"FAILED\",\n UPDATE_IN_PROGRESS: \"UPDATE_IN_PROGRESS\",\n UPDATE_PENDING: \"UPDATE_PENDING\"\n};\nvar OrganizationStatus = {\n DISABLED: \"DISABLED\",\n DISABLED_PERMANENTLY: \"DISABLED_PERMANENTLY\",\n ENABLED: \"ENABLED\"\n};\nvar IdentityProvider = {\n AWS_Marketplace: \"AWS_Marketplace\",\n Bitbucket: \"Bitbucket\",\n GitHub: \"GitHub\"\n};\nvar PublisherStatus = {\n UNVERIFIED: \"UNVERIFIED\",\n VERIFIED: \"VERIFIED\"\n};\nvar ResourceScanStatus = {\n COMPLETE: \"COMPLETE\",\n EXPIRED: \"EXPIRED\",\n FAILED: \"FAILED\",\n IN_PROGRESS: \"IN_PROGRESS\"\n};\nvar _ResourceScanNotFoundException = class _ResourceScanNotFoundException extends CloudFormationServiceException {\n /**\n * @internal\n */\n constructor(opts) {\n super({\n name: \"ResourceScanNotFoundException\",\n $fault: \"client\",\n ...opts\n });\n this.name = \"ResourceScanNotFoundException\";\n this.$fault = \"client\";\n Object.setPrototypeOf(this, _ResourceScanNotFoundException.prototype);\n this.Message = opts.Message;\n }\n};\n__name(_ResourceScanNotFoundException, \"ResourceScanNotFoundException\");\nvar ResourceScanNotFoundException = _ResourceScanNotFoundException;\nvar StackDriftDetectionStatus = {\n DETECTION_COMPLETE: \"DETECTION_COMPLETE\",\n DETECTION_FAILED: \"DETECTION_FAILED\",\n DETECTION_IN_PROGRESS: \"DETECTION_IN_PROGRESS\"\n};\nvar StackDriftStatus = {\n DRIFTED: \"DRIFTED\",\n IN_SYNC: \"IN_SYNC\",\n NOT_CHECKED: \"NOT_CHECKED\",\n UNKNOWN: \"UNKNOWN\"\n};\nvar DetailedStatus = {\n CONFIGURATION_COMPLETE: \"CONFIGURATION_COMPLETE\",\n VALIDATION_FAILED: \"VALIDATION_FAILED\"\n};\nvar HookStatus = {\n HOOK_COMPLETE_FAILED: \"HOOK_COMPLETE_FAILED\",\n HOOK_COMPLETE_SUCCEEDED: \"HOOK_COMPLETE_SUCCEEDED\",\n HOOK_FAILED: \"HOOK_FAILED\",\n HOOK_IN_PROGRESS: \"HOOK_IN_PROGRESS\"\n};\nvar ResourceStatus = {\n CREATE_COMPLETE: \"CREATE_COMPLETE\",\n CREATE_FAILED: \"CREATE_FAILED\",\n CREATE_IN_PROGRESS: \"CREATE_IN_PROGRESS\",\n DELETE_COMPLETE: \"DELETE_COMPLETE\",\n DELETE_FAILED: \"DELETE_FAILED\",\n DELETE_IN_PROGRESS: \"DELETE_IN_PROGRESS\",\n DELETE_SKIPPED: \"DELETE_SKIPPED\",\n IMPORT_COMPLETE: \"IMPORT_COMPLETE\",\n IMPORT_FAILED: \"IMPORT_FAILED\",\n IMPORT_IN_PROGRESS: \"IMPORT_IN_PROGRESS\",\n IMPORT_ROLLBACK_COMPLETE: \"IMPORT_ROLLBACK_COMPLETE\",\n IMPORT_ROLLBACK_FAILED: \"IMPORT_ROLLBACK_FAILED\",\n IMPORT_ROLLBACK_IN_PROGRESS: \"IMPORT_ROLLBACK_IN_PROGRESS\",\n ROLLBACK_COMPLETE: \"ROLLBACK_COMPLETE\",\n ROLLBACK_FAILED: \"ROLLBACK_FAILED\",\n ROLLBACK_IN_PROGRESS: \"ROLLBACK_IN_PROGRESS\",\n UPDATE_COMPLETE: \"UPDATE_COMPLETE\",\n UPDATE_FAILED: \"UPDATE_FAILED\",\n UPDATE_IN_PROGRESS: \"UPDATE_IN_PROGRESS\",\n UPDATE_ROLLBACK_COMPLETE: \"UPDATE_ROLLBACK_COMPLETE\",\n UPDATE_ROLLBACK_FAILED: \"UPDATE_ROLLBACK_FAILED\",\n UPDATE_ROLLBACK_IN_PROGRESS: \"UPDATE_ROLLBACK_IN_PROGRESS\"\n};\nvar StackInstanceDetailedStatus = {\n CANCELLED: \"CANCELLED\",\n FAILED: \"FAILED\",\n FAILED_IMPORT: \"FAILED_IMPORT\",\n INOPERABLE: \"INOPERABLE\",\n PENDING: \"PENDING\",\n RUNNING: \"RUNNING\",\n SKIPPED_SUSPENDED_ACCOUNT: \"SKIPPED_SUSPENDED_ACCOUNT\",\n SUCCEEDED: \"SUCCEEDED\"\n};\nvar StackInstanceStatus = {\n CURRENT: \"CURRENT\",\n INOPERABLE: \"INOPERABLE\",\n OUTDATED: \"OUTDATED\"\n};\nvar _StackInstanceNotFoundException = class _StackInstanceNotFoundException extends CloudFormationServiceException {\n /**\n * @internal\n */\n constructor(opts) {\n super({\n name: \"StackInstanceNotFoundException\",\n $fault: \"client\",\n ...opts\n });\n this.name = \"StackInstanceNotFoundException\";\n this.$fault = \"client\";\n Object.setPrototypeOf(this, _StackInstanceNotFoundException.prototype);\n this.Message = opts.Message;\n }\n};\n__name(_StackInstanceNotFoundException, \"StackInstanceNotFoundException\");\nvar StackInstanceNotFoundException = _StackInstanceNotFoundException;\nvar StackResourceDriftStatus = {\n DELETED: \"DELETED\",\n IN_SYNC: \"IN_SYNC\",\n MODIFIED: \"MODIFIED\",\n NOT_CHECKED: \"NOT_CHECKED\"\n};\nvar DifferenceType = {\n ADD: \"ADD\",\n NOT_EQUAL: \"NOT_EQUAL\",\n REMOVE: \"REMOVE\"\n};\nvar StackStatus = {\n CREATE_COMPLETE: \"CREATE_COMPLETE\",\n CREATE_FAILED: \"CREATE_FAILED\",\n CREATE_IN_PROGRESS: \"CREATE_IN_PROGRESS\",\n DELETE_COMPLETE: \"DELETE_COMPLETE\",\n DELETE_FAILED: \"DELETE_FAILED\",\n DELETE_IN_PROGRESS: \"DELETE_IN_PROGRESS\",\n IMPORT_COMPLETE: \"IMPORT_COMPLETE\",\n IMPORT_IN_PROGRESS: \"IMPORT_IN_PROGRESS\",\n IMPORT_ROLLBACK_COMPLETE: \"IMPORT_ROLLBACK_COMPLETE\",\n IMPORT_ROLLBACK_FAILED: \"IMPORT_ROLLBACK_FAILED\",\n IMPORT_ROLLBACK_IN_PROGRESS: \"IMPORT_ROLLBACK_IN_PROGRESS\",\n REVIEW_IN_PROGRESS: \"REVIEW_IN_PROGRESS\",\n ROLLBACK_COMPLETE: \"ROLLBACK_COMPLETE\",\n ROLLBACK_FAILED: \"ROLLBACK_FAILED\",\n ROLLBACK_IN_PROGRESS: \"ROLLBACK_IN_PROGRESS\",\n UPDATE_COMPLETE: \"UPDATE_COMPLETE\",\n UPDATE_COMPLETE_CLEANUP_IN_PROGRESS: \"UPDATE_COMPLETE_CLEANUP_IN_PROGRESS\",\n UPDATE_FAILED: \"UPDATE_FAILED\",\n UPDATE_IN_PROGRESS: \"UPDATE_IN_PROGRESS\",\n UPDATE_ROLLBACK_COMPLETE: \"UPDATE_ROLLBACK_COMPLETE\",\n UPDATE_ROLLBACK_COMPLETE_CLEANUP_IN_PROGRESS: \"UPDATE_ROLLBACK_COMPLETE_CLEANUP_IN_PROGRESS\",\n UPDATE_ROLLBACK_FAILED: \"UPDATE_ROLLBACK_FAILED\",\n UPDATE_ROLLBACK_IN_PROGRESS: \"UPDATE_ROLLBACK_IN_PROGRESS\"\n};\nvar StackSetDriftDetectionStatus = {\n COMPLETED: \"COMPLETED\",\n FAILED: \"FAILED\",\n IN_PROGRESS: \"IN_PROGRESS\",\n PARTIAL_SUCCESS: \"PARTIAL_SUCCESS\",\n STOPPED: \"STOPPED\"\n};\nvar StackSetDriftStatus = {\n DRIFTED: \"DRIFTED\",\n IN_SYNC: \"IN_SYNC\",\n NOT_CHECKED: \"NOT_CHECKED\"\n};\nvar StackSetStatus = {\n ACTIVE: \"ACTIVE\",\n DELETED: \"DELETED\"\n};\nvar StackSetOperationAction = {\n CREATE: \"CREATE\",\n DELETE: \"DELETE\",\n DETECT_DRIFT: \"DETECT_DRIFT\",\n UPDATE: \"UPDATE\"\n};\nvar StackSetOperationStatus = {\n FAILED: \"FAILED\",\n QUEUED: \"QUEUED\",\n RUNNING: \"RUNNING\",\n STOPPED: \"STOPPED\",\n STOPPING: \"STOPPING\",\n SUCCEEDED: \"SUCCEEDED\"\n};\nvar DeprecatedStatus = {\n DEPRECATED: \"DEPRECATED\",\n LIVE: \"LIVE\"\n};\nvar ProvisioningType = {\n FULLY_MUTABLE: \"FULLY_MUTABLE\",\n IMMUTABLE: \"IMMUTABLE\",\n NON_PROVISIONABLE: \"NON_PROVISIONABLE\"\n};\nvar TypeTestsStatus = {\n FAILED: \"FAILED\",\n IN_PROGRESS: \"IN_PROGRESS\",\n NOT_TESTED: \"NOT_TESTED\",\n PASSED: \"PASSED\"\n};\nvar Visibility = {\n PRIVATE: \"PRIVATE\",\n PUBLIC: \"PUBLIC\"\n};\nvar RegistrationStatus = {\n COMPLETE: \"COMPLETE\",\n FAILED: \"FAILED\",\n IN_PROGRESS: \"IN_PROGRESS\"\n};\nvar TemplateFormat = {\n JSON: \"JSON\",\n YAML: \"YAML\"\n};\nvar TemplateStage = {\n Original: \"Original\",\n Processed: \"Processed\"\n};\nvar _StackNotFoundException = class _StackNotFoundException extends CloudFormationServiceException {\n /**\n * @internal\n */\n constructor(opts) {\n super({\n name: \"StackNotFoundException\",\n $fault: \"client\",\n ...opts\n });\n this.name = \"StackNotFoundException\";\n this.$fault = \"client\";\n Object.setPrototypeOf(this, _StackNotFoundException.prototype);\n this.Message = opts.Message;\n }\n};\n__name(_StackNotFoundException, \"StackNotFoundException\");\nvar StackNotFoundException = _StackNotFoundException;\nvar _ResourceScanInProgressException = class _ResourceScanInProgressException extends CloudFormationServiceException {\n /**\n * @internal\n */\n constructor(opts) {\n super({\n name: \"ResourceScanInProgressException\",\n $fault: \"client\",\n ...opts\n });\n this.name = \"ResourceScanInProgressException\";\n this.$fault = \"client\";\n Object.setPrototypeOf(this, _ResourceScanInProgressException.prototype);\n this.Message = opts.Message;\n }\n};\n__name(_ResourceScanInProgressException, \"ResourceScanInProgressException\");\nvar ResourceScanInProgressException = _ResourceScanInProgressException;\nvar StackInstanceFilterName = {\n DETAILED_STATUS: \"DETAILED_STATUS\",\n DRIFT_STATUS: \"DRIFT_STATUS\",\n LAST_OPERATION_ID: \"LAST_OPERATION_ID\"\n};\nvar OperationResultFilterName = {\n OPERATION_RESULT_STATUS: \"OPERATION_RESULT_STATUS\"\n};\nvar StackSetOperationResultStatus = {\n CANCELLED: \"CANCELLED\",\n FAILED: \"FAILED\",\n PENDING: \"PENDING\",\n RUNNING: \"RUNNING\",\n SUCCEEDED: \"SUCCEEDED\"\n};\nvar _InvalidStateTransitionException = class _InvalidStateTransitionException extends CloudFormationServiceException {\n /**\n * @internal\n */\n constructor(opts) {\n super({\n name: \"InvalidStateTransitionException\",\n $fault: \"client\",\n ...opts\n });\n this.name = \"InvalidStateTransitionException\";\n this.$fault = \"client\";\n Object.setPrototypeOf(this, _InvalidStateTransitionException.prototype);\n this.Message = opts.Message;\n }\n};\n__name(_InvalidStateTransitionException, \"InvalidStateTransitionException\");\nvar InvalidStateTransitionException = _InvalidStateTransitionException;\nvar _OperationStatusCheckFailedException = class _OperationStatusCheckFailedException extends CloudFormationServiceException {\n /**\n * @internal\n */\n constructor(opts) {\n super({\n name: \"OperationStatusCheckFailedException\",\n $fault: \"client\",\n ...opts\n });\n this.name = \"OperationStatusCheckFailedException\";\n this.$fault = \"client\";\n Object.setPrototypeOf(this, _OperationStatusCheckFailedException.prototype);\n this.Message = opts.Message;\n }\n};\n__name(_OperationStatusCheckFailedException, \"OperationStatusCheckFailedException\");\nvar OperationStatusCheckFailedException = _OperationStatusCheckFailedException;\nvar OperationStatus = {\n FAILED: \"FAILED\",\n IN_PROGRESS: \"IN_PROGRESS\",\n PENDING: \"PENDING\",\n SUCCESS: \"SUCCESS\"\n};\nvar HandlerErrorCode = {\n AccessDenied: \"AccessDenied\",\n AlreadyExists: \"AlreadyExists\",\n GeneralServiceException: \"GeneralServiceException\",\n HandlerInternalFailure: \"HandlerInternalFailure\",\n InternalFailure: \"InternalFailure\",\n InvalidCredentials: \"InvalidCredentials\",\n InvalidRequest: \"InvalidRequest\",\n InvalidTypeConfiguration: \"InvalidTypeConfiguration\",\n NetworkFailure: \"NetworkFailure\",\n NonCompliant: \"NonCompliant\",\n NotFound: \"NotFound\",\n NotUpdatable: \"NotUpdatable\",\n ResourceConflict: \"ResourceConflict\",\n ServiceInternalError: \"ServiceInternalError\",\n ServiceLimitExceeded: \"ServiceLimitExceeded\",\n ServiceTimeout: \"NotStabilized\",\n Throttling: \"Throttling\",\n Unknown: \"Unknown\",\n UnsupportedTarget: \"UnsupportedTarget\"\n};\n\n// src/models/models_1.ts\nvar ResourceSignalStatus = {\n FAILURE: \"FAILURE\",\n SUCCESS: \"SUCCESS\"\n};\nvar _ResourceScanLimitExceededException = class _ResourceScanLimitExceededException extends CloudFormationServiceException {\n /**\n * @internal\n */\n constructor(opts) {\n super({\n name: \"ResourceScanLimitExceededException\",\n $fault: \"client\",\n ...opts\n });\n this.name = \"ResourceScanLimitExceededException\";\n this.$fault = \"client\";\n Object.setPrototypeOf(this, _ResourceScanLimitExceededException.prototype);\n this.Message = opts.Message;\n }\n};\n__name(_ResourceScanLimitExceededException, \"ResourceScanLimitExceededException\");\nvar ResourceScanLimitExceededException = _ResourceScanLimitExceededException;\n\n// src/protocols/Aws_query.ts\nvar se_ActivateOrganizationsAccessCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_ActivateOrganizationsAccessInput(input, context),\n [_A]: _AOA,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_ActivateOrganizationsAccessCommand\");\nvar se_ActivateTypeCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_ActivateTypeInput(input, context),\n [_A]: _AT,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_ActivateTypeCommand\");\nvar se_BatchDescribeTypeConfigurationsCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_BatchDescribeTypeConfigurationsInput(input, context),\n [_A]: _BDTC,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_BatchDescribeTypeConfigurationsCommand\");\nvar se_CancelUpdateStackCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_CancelUpdateStackInput(input, context),\n [_A]: _CUS,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_CancelUpdateStackCommand\");\nvar se_ContinueUpdateRollbackCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_ContinueUpdateRollbackInput(input, context),\n [_A]: _CUR,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_ContinueUpdateRollbackCommand\");\nvar se_CreateChangeSetCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_CreateChangeSetInput(input, context),\n [_A]: _CCS,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_CreateChangeSetCommand\");\nvar se_CreateGeneratedTemplateCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_CreateGeneratedTemplateInput(input, context),\n [_A]: _CGT,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_CreateGeneratedTemplateCommand\");\nvar se_CreateStackCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_CreateStackInput(input, context),\n [_A]: _CS,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_CreateStackCommand\");\nvar se_CreateStackInstancesCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_CreateStackInstancesInput(input, context),\n [_A]: _CSI,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_CreateStackInstancesCommand\");\nvar se_CreateStackSetCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_CreateStackSetInput(input, context),\n [_A]: _CSS,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_CreateStackSetCommand\");\nvar se_DeactivateOrganizationsAccessCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_DeactivateOrganizationsAccessInput(input, context),\n [_A]: _DOA,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_DeactivateOrganizationsAccessCommand\");\nvar se_DeactivateTypeCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_DeactivateTypeInput(input, context),\n [_A]: _DT,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_DeactivateTypeCommand\");\nvar se_DeleteChangeSetCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_DeleteChangeSetInput(input, context),\n [_A]: _DCS,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_DeleteChangeSetCommand\");\nvar se_DeleteGeneratedTemplateCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_DeleteGeneratedTemplateInput(input, context),\n [_A]: _DGT,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_DeleteGeneratedTemplateCommand\");\nvar se_DeleteStackCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_DeleteStackInput(input, context),\n [_A]: _DS,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_DeleteStackCommand\");\nvar se_DeleteStackInstancesCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_DeleteStackInstancesInput(input, context),\n [_A]: _DSI,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_DeleteStackInstancesCommand\");\nvar se_DeleteStackSetCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_DeleteStackSetInput(input, context),\n [_A]: _DSS,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_DeleteStackSetCommand\");\nvar se_DeregisterTypeCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_DeregisterTypeInput(input, context),\n [_A]: _DTe,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_DeregisterTypeCommand\");\nvar se_DescribeAccountLimitsCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_DescribeAccountLimitsInput(input, context),\n [_A]: _DAL,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_DescribeAccountLimitsCommand\");\nvar se_DescribeChangeSetCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_DescribeChangeSetInput(input, context),\n [_A]: _DCSe,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_DescribeChangeSetCommand\");\nvar se_DescribeChangeSetHooksCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_DescribeChangeSetHooksInput(input, context),\n [_A]: _DCSH,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_DescribeChangeSetHooksCommand\");\nvar se_DescribeGeneratedTemplateCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_DescribeGeneratedTemplateInput(input, context),\n [_A]: _DGTe,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_DescribeGeneratedTemplateCommand\");\nvar se_DescribeOrganizationsAccessCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_DescribeOrganizationsAccessInput(input, context),\n [_A]: _DOAe,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_DescribeOrganizationsAccessCommand\");\nvar se_DescribePublisherCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_DescribePublisherInput(input, context),\n [_A]: _DP,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_DescribePublisherCommand\");\nvar se_DescribeResourceScanCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_DescribeResourceScanInput(input, context),\n [_A]: _DRS,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_DescribeResourceScanCommand\");\nvar se_DescribeStackDriftDetectionStatusCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_DescribeStackDriftDetectionStatusInput(input, context),\n [_A]: _DSDDS,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_DescribeStackDriftDetectionStatusCommand\");\nvar se_DescribeStackEventsCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_DescribeStackEventsInput(input, context),\n [_A]: _DSE,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_DescribeStackEventsCommand\");\nvar se_DescribeStackInstanceCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_DescribeStackInstanceInput(input, context),\n [_A]: _DSIe,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_DescribeStackInstanceCommand\");\nvar se_DescribeStackResourceCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_DescribeStackResourceInput(input, context),\n [_A]: _DSR,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_DescribeStackResourceCommand\");\nvar se_DescribeStackResourceDriftsCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_DescribeStackResourceDriftsInput(input, context),\n [_A]: _DSRD,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_DescribeStackResourceDriftsCommand\");\nvar se_DescribeStackResourcesCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_DescribeStackResourcesInput(input, context),\n [_A]: _DSRe,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_DescribeStackResourcesCommand\");\nvar se_DescribeStacksCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_DescribeStacksInput(input, context),\n [_A]: _DSe,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_DescribeStacksCommand\");\nvar se_DescribeStackSetCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_DescribeStackSetInput(input, context),\n [_A]: _DSSe,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_DescribeStackSetCommand\");\nvar se_DescribeStackSetOperationCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_DescribeStackSetOperationInput(input, context),\n [_A]: _DSSO,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_DescribeStackSetOperationCommand\");\nvar se_DescribeTypeCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_DescribeTypeInput(input, context),\n [_A]: _DTes,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_DescribeTypeCommand\");\nvar se_DescribeTypeRegistrationCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_DescribeTypeRegistrationInput(input, context),\n [_A]: _DTR,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_DescribeTypeRegistrationCommand\");\nvar se_DetectStackDriftCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_DetectStackDriftInput(input, context),\n [_A]: _DSD,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_DetectStackDriftCommand\");\nvar se_DetectStackResourceDriftCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_DetectStackResourceDriftInput(input, context),\n [_A]: _DSRDe,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_DetectStackResourceDriftCommand\");\nvar se_DetectStackSetDriftCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_DetectStackSetDriftInput(input, context),\n [_A]: _DSSD,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_DetectStackSetDriftCommand\");\nvar se_EstimateTemplateCostCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_EstimateTemplateCostInput(input, context),\n [_A]: _ETC,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_EstimateTemplateCostCommand\");\nvar se_ExecuteChangeSetCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_ExecuteChangeSetInput(input, context),\n [_A]: _ECS,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_ExecuteChangeSetCommand\");\nvar se_GetGeneratedTemplateCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_GetGeneratedTemplateInput(input, context),\n [_A]: _GGT,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_GetGeneratedTemplateCommand\");\nvar se_GetStackPolicyCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_GetStackPolicyInput(input, context),\n [_A]: _GSP,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_GetStackPolicyCommand\");\nvar se_GetTemplateCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_GetTemplateInput(input, context),\n [_A]: _GT,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_GetTemplateCommand\");\nvar se_GetTemplateSummaryCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_GetTemplateSummaryInput(input, context),\n [_A]: _GTS,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_GetTemplateSummaryCommand\");\nvar se_ImportStacksToStackSetCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_ImportStacksToStackSetInput(input, context),\n [_A]: _ISTSS,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_ImportStacksToStackSetCommand\");\nvar se_ListChangeSetsCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_ListChangeSetsInput(input, context),\n [_A]: _LCS,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_ListChangeSetsCommand\");\nvar se_ListExportsCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_ListExportsInput(input, context),\n [_A]: _LE,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_ListExportsCommand\");\nvar se_ListGeneratedTemplatesCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_ListGeneratedTemplatesInput(input, context),\n [_A]: _LGT,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_ListGeneratedTemplatesCommand\");\nvar se_ListImportsCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_ListImportsInput(input, context),\n [_A]: _LI,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_ListImportsCommand\");\nvar se_ListResourceScanRelatedResourcesCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_ListResourceScanRelatedResourcesInput(input, context),\n [_A]: _LRSRR,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_ListResourceScanRelatedResourcesCommand\");\nvar se_ListResourceScanResourcesCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_ListResourceScanResourcesInput(input, context),\n [_A]: _LRSR,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_ListResourceScanResourcesCommand\");\nvar se_ListResourceScansCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_ListResourceScansInput(input, context),\n [_A]: _LRS,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_ListResourceScansCommand\");\nvar se_ListStackInstanceResourceDriftsCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_ListStackInstanceResourceDriftsInput(input, context),\n [_A]: _LSIRD,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_ListStackInstanceResourceDriftsCommand\");\nvar se_ListStackInstancesCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_ListStackInstancesInput(input, context),\n [_A]: _LSI,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_ListStackInstancesCommand\");\nvar se_ListStackResourcesCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_ListStackResourcesInput(input, context),\n [_A]: _LSR,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_ListStackResourcesCommand\");\nvar se_ListStacksCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_ListStacksInput(input, context),\n [_A]: _LS,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_ListStacksCommand\");\nvar se_ListStackSetAutoDeploymentTargetsCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_ListStackSetAutoDeploymentTargetsInput(input, context),\n [_A]: _LSSADT,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_ListStackSetAutoDeploymentTargetsCommand\");\nvar se_ListStackSetOperationResultsCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_ListStackSetOperationResultsInput(input, context),\n [_A]: _LSSOR,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_ListStackSetOperationResultsCommand\");\nvar se_ListStackSetOperationsCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_ListStackSetOperationsInput(input, context),\n [_A]: _LSSO,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_ListStackSetOperationsCommand\");\nvar se_ListStackSetsCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_ListStackSetsInput(input, context),\n [_A]: _LSS,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_ListStackSetsCommand\");\nvar se_ListTypeRegistrationsCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_ListTypeRegistrationsInput(input, context),\n [_A]: _LTR,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_ListTypeRegistrationsCommand\");\nvar se_ListTypesCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_ListTypesInput(input, context),\n [_A]: _LT,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_ListTypesCommand\");\nvar se_ListTypeVersionsCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_ListTypeVersionsInput(input, context),\n [_A]: _LTV,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_ListTypeVersionsCommand\");\nvar se_PublishTypeCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_PublishTypeInput(input, context),\n [_A]: _PT,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_PublishTypeCommand\");\nvar se_RecordHandlerProgressCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_RecordHandlerProgressInput(input, context),\n [_A]: _RHP,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_RecordHandlerProgressCommand\");\nvar se_RegisterPublisherCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_RegisterPublisherInput(input, context),\n [_A]: _RP,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_RegisterPublisherCommand\");\nvar se_RegisterTypeCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_RegisterTypeInput(input, context),\n [_A]: _RT,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_RegisterTypeCommand\");\nvar se_RollbackStackCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_RollbackStackInput(input, context),\n [_A]: _RS,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_RollbackStackCommand\");\nvar se_SetStackPolicyCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_SetStackPolicyInput(input, context),\n [_A]: _SSP,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_SetStackPolicyCommand\");\nvar se_SetTypeConfigurationCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_SetTypeConfigurationInput(input, context),\n [_A]: _STC,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_SetTypeConfigurationCommand\");\nvar se_SetTypeDefaultVersionCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_SetTypeDefaultVersionInput(input, context),\n [_A]: _STDV,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_SetTypeDefaultVersionCommand\");\nvar se_SignalResourceCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_SignalResourceInput(input, context),\n [_A]: _SR,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_SignalResourceCommand\");\nvar se_StartResourceScanCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_StartResourceScanInput(input, context),\n [_A]: _SRS,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_StartResourceScanCommand\");\nvar se_StopStackSetOperationCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_StopStackSetOperationInput(input, context),\n [_A]: _SSSO,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_StopStackSetOperationCommand\");\nvar se_TestTypeCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_TestTypeInput(input, context),\n [_A]: _TT,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_TestTypeCommand\");\nvar se_UpdateGeneratedTemplateCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_UpdateGeneratedTemplateInput(input, context),\n [_A]: _UGT,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_UpdateGeneratedTemplateCommand\");\nvar se_UpdateStackCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_UpdateStackInput(input, context),\n [_A]: _US,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_UpdateStackCommand\");\nvar se_UpdateStackInstancesCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_UpdateStackInstancesInput(input, context),\n [_A]: _USI,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_UpdateStackInstancesCommand\");\nvar se_UpdateStackSetCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_UpdateStackSetInput(input, context),\n [_A]: _USS,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_UpdateStackSetCommand\");\nvar se_UpdateTerminationProtectionCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_UpdateTerminationProtectionInput(input, context),\n [_A]: _UTP,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_UpdateTerminationProtectionCommand\");\nvar se_ValidateTemplateCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_ValidateTemplateInput(input, context),\n [_A]: _VT,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_ValidateTemplateCommand\");\nvar de_ActivateOrganizationsAccessCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_ActivateOrganizationsAccessOutput(data.ActivateOrganizationsAccessResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_ActivateOrganizationsAccessCommand\");\nvar de_ActivateTypeCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_ActivateTypeOutput(data.ActivateTypeResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_ActivateTypeCommand\");\nvar de_BatchDescribeTypeConfigurationsCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_BatchDescribeTypeConfigurationsOutput(data.BatchDescribeTypeConfigurationsResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_BatchDescribeTypeConfigurationsCommand\");\nvar de_CancelUpdateStackCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n await (0, import_smithy_client.collectBody)(output.body, context);\n const response = {\n $metadata: deserializeMetadata(output)\n };\n return response;\n}, \"de_CancelUpdateStackCommand\");\nvar de_ContinueUpdateRollbackCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_ContinueUpdateRollbackOutput(data.ContinueUpdateRollbackResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_ContinueUpdateRollbackCommand\");\nvar de_CreateChangeSetCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_CreateChangeSetOutput(data.CreateChangeSetResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_CreateChangeSetCommand\");\nvar de_CreateGeneratedTemplateCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_CreateGeneratedTemplateOutput(data.CreateGeneratedTemplateResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_CreateGeneratedTemplateCommand\");\nvar de_CreateStackCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_CreateStackOutput(data.CreateStackResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_CreateStackCommand\");\nvar de_CreateStackInstancesCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_CreateStackInstancesOutput(data.CreateStackInstancesResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_CreateStackInstancesCommand\");\nvar de_CreateStackSetCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_CreateStackSetOutput(data.CreateStackSetResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_CreateStackSetCommand\");\nvar de_DeactivateOrganizationsAccessCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_DeactivateOrganizationsAccessOutput(data.DeactivateOrganizationsAccessResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_DeactivateOrganizationsAccessCommand\");\nvar de_DeactivateTypeCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_DeactivateTypeOutput(data.DeactivateTypeResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_DeactivateTypeCommand\");\nvar de_DeleteChangeSetCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_DeleteChangeSetOutput(data.DeleteChangeSetResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_DeleteChangeSetCommand\");\nvar de_DeleteGeneratedTemplateCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n await (0, import_smithy_client.collectBody)(output.body, context);\n const response = {\n $metadata: deserializeMetadata(output)\n };\n return response;\n}, \"de_DeleteGeneratedTemplateCommand\");\nvar de_DeleteStackCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n await (0, import_smithy_client.collectBody)(output.body, context);\n const response = {\n $metadata: deserializeMetadata(output)\n };\n return response;\n}, \"de_DeleteStackCommand\");\nvar de_DeleteStackInstancesCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_DeleteStackInstancesOutput(data.DeleteStackInstancesResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_DeleteStackInstancesCommand\");\nvar de_DeleteStackSetCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_DeleteStackSetOutput(data.DeleteStackSetResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_DeleteStackSetCommand\");\nvar de_DeregisterTypeCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_DeregisterTypeOutput(data.DeregisterTypeResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_DeregisterTypeCommand\");\nvar de_DescribeAccountLimitsCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_DescribeAccountLimitsOutput(data.DescribeAccountLimitsResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_DescribeAccountLimitsCommand\");\nvar de_DescribeChangeSetCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_DescribeChangeSetOutput(data.DescribeChangeSetResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_DescribeChangeSetCommand\");\nvar de_DescribeChangeSetHooksCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_DescribeChangeSetHooksOutput(data.DescribeChangeSetHooksResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_DescribeChangeSetHooksCommand\");\nvar de_DescribeGeneratedTemplateCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_DescribeGeneratedTemplateOutput(data.DescribeGeneratedTemplateResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_DescribeGeneratedTemplateCommand\");\nvar de_DescribeOrganizationsAccessCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_DescribeOrganizationsAccessOutput(data.DescribeOrganizationsAccessResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_DescribeOrganizationsAccessCommand\");\nvar de_DescribePublisherCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_DescribePublisherOutput(data.DescribePublisherResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_DescribePublisherCommand\");\nvar de_DescribeResourceScanCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_DescribeResourceScanOutput(data.DescribeResourceScanResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_DescribeResourceScanCommand\");\nvar de_DescribeStackDriftDetectionStatusCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_DescribeStackDriftDetectionStatusOutput(data.DescribeStackDriftDetectionStatusResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_DescribeStackDriftDetectionStatusCommand\");\nvar de_DescribeStackEventsCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_DescribeStackEventsOutput(data.DescribeStackEventsResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_DescribeStackEventsCommand\");\nvar de_DescribeStackInstanceCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_DescribeStackInstanceOutput(data.DescribeStackInstanceResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_DescribeStackInstanceCommand\");\nvar de_DescribeStackResourceCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_DescribeStackResourceOutput(data.DescribeStackResourceResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_DescribeStackResourceCommand\");\nvar de_DescribeStackResourceDriftsCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_DescribeStackResourceDriftsOutput(data.DescribeStackResourceDriftsResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_DescribeStackResourceDriftsCommand\");\nvar de_DescribeStackResourcesCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_DescribeStackResourcesOutput(data.DescribeStackResourcesResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_DescribeStackResourcesCommand\");\nvar de_DescribeStacksCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_DescribeStacksOutput(data.DescribeStacksResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_DescribeStacksCommand\");\nvar de_DescribeStackSetCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_DescribeStackSetOutput(data.DescribeStackSetResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_DescribeStackSetCommand\");\nvar de_DescribeStackSetOperationCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_DescribeStackSetOperationOutput(data.DescribeStackSetOperationResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_DescribeStackSetOperationCommand\");\nvar de_DescribeTypeCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_DescribeTypeOutput(data.DescribeTypeResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_DescribeTypeCommand\");\nvar de_DescribeTypeRegistrationCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_DescribeTypeRegistrationOutput(data.DescribeTypeRegistrationResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_DescribeTypeRegistrationCommand\");\nvar de_DetectStackDriftCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_DetectStackDriftOutput(data.DetectStackDriftResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_DetectStackDriftCommand\");\nvar de_DetectStackResourceDriftCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_DetectStackResourceDriftOutput(data.DetectStackResourceDriftResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_DetectStackResourceDriftCommand\");\nvar de_DetectStackSetDriftCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_DetectStackSetDriftOutput(data.DetectStackSetDriftResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_DetectStackSetDriftCommand\");\nvar de_EstimateTemplateCostCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_EstimateTemplateCostOutput(data.EstimateTemplateCostResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_EstimateTemplateCostCommand\");\nvar de_ExecuteChangeSetCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_ExecuteChangeSetOutput(data.ExecuteChangeSetResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_ExecuteChangeSetCommand\");\nvar de_GetGeneratedTemplateCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_GetGeneratedTemplateOutput(data.GetGeneratedTemplateResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_GetGeneratedTemplateCommand\");\nvar de_GetStackPolicyCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_GetStackPolicyOutput(data.GetStackPolicyResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_GetStackPolicyCommand\");\nvar de_GetTemplateCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_GetTemplateOutput(data.GetTemplateResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_GetTemplateCommand\");\nvar de_GetTemplateSummaryCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_GetTemplateSummaryOutput(data.GetTemplateSummaryResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_GetTemplateSummaryCommand\");\nvar de_ImportStacksToStackSetCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_ImportStacksToStackSetOutput(data.ImportStacksToStackSetResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_ImportStacksToStackSetCommand\");\nvar de_ListChangeSetsCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_ListChangeSetsOutput(data.ListChangeSetsResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_ListChangeSetsCommand\");\nvar de_ListExportsCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_ListExportsOutput(data.ListExportsResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_ListExportsCommand\");\nvar de_ListGeneratedTemplatesCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_ListGeneratedTemplatesOutput(data.ListGeneratedTemplatesResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_ListGeneratedTemplatesCommand\");\nvar de_ListImportsCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_ListImportsOutput(data.ListImportsResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_ListImportsCommand\");\nvar de_ListResourceScanRelatedResourcesCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_ListResourceScanRelatedResourcesOutput(data.ListResourceScanRelatedResourcesResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_ListResourceScanRelatedResourcesCommand\");\nvar de_ListResourceScanResourcesCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_ListResourceScanResourcesOutput(data.ListResourceScanResourcesResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_ListResourceScanResourcesCommand\");\nvar de_ListResourceScansCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_ListResourceScansOutput(data.ListResourceScansResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_ListResourceScansCommand\");\nvar de_ListStackInstanceResourceDriftsCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_ListStackInstanceResourceDriftsOutput(data.ListStackInstanceResourceDriftsResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_ListStackInstanceResourceDriftsCommand\");\nvar de_ListStackInstancesCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_ListStackInstancesOutput(data.ListStackInstancesResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_ListStackInstancesCommand\");\nvar de_ListStackResourcesCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_ListStackResourcesOutput(data.ListStackResourcesResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_ListStackResourcesCommand\");\nvar de_ListStacksCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_ListStacksOutput(data.ListStacksResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_ListStacksCommand\");\nvar de_ListStackSetAutoDeploymentTargetsCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_ListStackSetAutoDeploymentTargetsOutput(data.ListStackSetAutoDeploymentTargetsResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_ListStackSetAutoDeploymentTargetsCommand\");\nvar de_ListStackSetOperationResultsCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_ListStackSetOperationResultsOutput(data.ListStackSetOperationResultsResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_ListStackSetOperationResultsCommand\");\nvar de_ListStackSetOperationsCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_ListStackSetOperationsOutput(data.ListStackSetOperationsResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_ListStackSetOperationsCommand\");\nvar de_ListStackSetsCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_ListStackSetsOutput(data.ListStackSetsResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_ListStackSetsCommand\");\nvar de_ListTypeRegistrationsCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_ListTypeRegistrationsOutput(data.ListTypeRegistrationsResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_ListTypeRegistrationsCommand\");\nvar de_ListTypesCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_ListTypesOutput(data.ListTypesResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_ListTypesCommand\");\nvar de_ListTypeVersionsCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_ListTypeVersionsOutput(data.ListTypeVersionsResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_ListTypeVersionsCommand\");\nvar de_PublishTypeCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_PublishTypeOutput(data.PublishTypeResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_PublishTypeCommand\");\nvar de_RecordHandlerProgressCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_RecordHandlerProgressOutput(data.RecordHandlerProgressResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_RecordHandlerProgressCommand\");\nvar de_RegisterPublisherCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_RegisterPublisherOutput(data.RegisterPublisherResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_RegisterPublisherCommand\");\nvar de_RegisterTypeCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_RegisterTypeOutput(data.RegisterTypeResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_RegisterTypeCommand\");\nvar de_RollbackStackCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_RollbackStackOutput(data.RollbackStackResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_RollbackStackCommand\");\nvar de_SetStackPolicyCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n await (0, import_smithy_client.collectBody)(output.body, context);\n const response = {\n $metadata: deserializeMetadata(output)\n };\n return response;\n}, \"de_SetStackPolicyCommand\");\nvar de_SetTypeConfigurationCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_SetTypeConfigurationOutput(data.SetTypeConfigurationResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_SetTypeConfigurationCommand\");\nvar de_SetTypeDefaultVersionCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_SetTypeDefaultVersionOutput(data.SetTypeDefaultVersionResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_SetTypeDefaultVersionCommand\");\nvar de_SignalResourceCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n await (0, import_smithy_client.collectBody)(output.body, context);\n const response = {\n $metadata: deserializeMetadata(output)\n };\n return response;\n}, \"de_SignalResourceCommand\");\nvar de_StartResourceScanCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_StartResourceScanOutput(data.StartResourceScanResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_StartResourceScanCommand\");\nvar de_StopStackSetOperationCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_StopStackSetOperationOutput(data.StopStackSetOperationResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_StopStackSetOperationCommand\");\nvar de_TestTypeCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_TestTypeOutput(data.TestTypeResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_TestTypeCommand\");\nvar de_UpdateGeneratedTemplateCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_UpdateGeneratedTemplateOutput(data.UpdateGeneratedTemplateResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_UpdateGeneratedTemplateCommand\");\nvar de_UpdateStackCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_UpdateStackOutput(data.UpdateStackResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_UpdateStackCommand\");\nvar de_UpdateStackInstancesCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_UpdateStackInstancesOutput(data.UpdateStackInstancesResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_UpdateStackInstancesCommand\");\nvar de_UpdateStackSetCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_UpdateStackSetOutput(data.UpdateStackSetResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_UpdateStackSetCommand\");\nvar de_UpdateTerminationProtectionCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_UpdateTerminationProtectionOutput(data.UpdateTerminationProtectionResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_UpdateTerminationProtectionCommand\");\nvar de_ValidateTemplateCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_ValidateTemplateOutput(data.ValidateTemplateResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_ValidateTemplateCommand\");\nvar de_CommandError = /* @__PURE__ */ __name(async (output, context) => {\n const parsedOutput = {\n ...output,\n body: await (0, import_core2.parseXmlErrorBody)(output.body, context)\n };\n const errorCode = loadQueryErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n case \"InvalidOperationException\":\n case \"com.amazonaws.cloudformation#InvalidOperationException\":\n throw await de_InvalidOperationExceptionRes(parsedOutput, context);\n case \"OperationNotFoundException\":\n case \"com.amazonaws.cloudformation#OperationNotFoundException\":\n throw await de_OperationNotFoundExceptionRes(parsedOutput, context);\n case \"CFNRegistryException\":\n case \"com.amazonaws.cloudformation#CFNRegistryException\":\n throw await de_CFNRegistryExceptionRes(parsedOutput, context);\n case \"TypeNotFoundException\":\n case \"com.amazonaws.cloudformation#TypeNotFoundException\":\n throw await de_TypeNotFoundExceptionRes(parsedOutput, context);\n case \"TypeConfigurationNotFoundException\":\n case \"com.amazonaws.cloudformation#TypeConfigurationNotFoundException\":\n throw await de_TypeConfigurationNotFoundExceptionRes(parsedOutput, context);\n case \"TokenAlreadyExistsException\":\n case \"com.amazonaws.cloudformation#TokenAlreadyExistsException\":\n throw await de_TokenAlreadyExistsExceptionRes(parsedOutput, context);\n case \"AlreadyExistsException\":\n case \"com.amazonaws.cloudformation#AlreadyExistsException\":\n throw await de_AlreadyExistsExceptionRes(parsedOutput, context);\n case \"InsufficientCapabilitiesException\":\n case \"com.amazonaws.cloudformation#InsufficientCapabilitiesException\":\n throw await de_InsufficientCapabilitiesExceptionRes(parsedOutput, context);\n case \"LimitExceededException\":\n case \"com.amazonaws.cloudformation#LimitExceededException\":\n throw await de_LimitExceededExceptionRes(parsedOutput, context);\n case \"ConcurrentResourcesLimitExceeded\":\n case \"com.amazonaws.cloudformation#ConcurrentResourcesLimitExceededException\":\n throw await de_ConcurrentResourcesLimitExceededExceptionRes(parsedOutput, context);\n case \"OperationIdAlreadyExistsException\":\n case \"com.amazonaws.cloudformation#OperationIdAlreadyExistsException\":\n throw await de_OperationIdAlreadyExistsExceptionRes(parsedOutput, context);\n case \"OperationInProgressException\":\n case \"com.amazonaws.cloudformation#OperationInProgressException\":\n throw await de_OperationInProgressExceptionRes(parsedOutput, context);\n case \"StackSetNotFoundException\":\n case \"com.amazonaws.cloudformation#StackSetNotFoundException\":\n throw await de_StackSetNotFoundExceptionRes(parsedOutput, context);\n case \"StaleRequestException\":\n case \"com.amazonaws.cloudformation#StaleRequestException\":\n throw await de_StaleRequestExceptionRes(parsedOutput, context);\n case \"CreatedButModifiedException\":\n case \"com.amazonaws.cloudformation#CreatedButModifiedException\":\n throw await de_CreatedButModifiedExceptionRes(parsedOutput, context);\n case \"NameAlreadyExistsException\":\n case \"com.amazonaws.cloudformation#NameAlreadyExistsException\":\n throw await de_NameAlreadyExistsExceptionRes(parsedOutput, context);\n case \"InvalidChangeSetStatus\":\n case \"com.amazonaws.cloudformation#InvalidChangeSetStatusException\":\n throw await de_InvalidChangeSetStatusExceptionRes(parsedOutput, context);\n case \"GeneratedTemplateNotFound\":\n case \"com.amazonaws.cloudformation#GeneratedTemplateNotFoundException\":\n throw await de_GeneratedTemplateNotFoundExceptionRes(parsedOutput, context);\n case \"StackSetNotEmptyException\":\n case \"com.amazonaws.cloudformation#StackSetNotEmptyException\":\n throw await de_StackSetNotEmptyExceptionRes(parsedOutput, context);\n case \"ChangeSetNotFound\":\n case \"com.amazonaws.cloudformation#ChangeSetNotFoundException\":\n throw await de_ChangeSetNotFoundExceptionRes(parsedOutput, context);\n case \"ResourceScanNotFound\":\n case \"com.amazonaws.cloudformation#ResourceScanNotFoundException\":\n throw await de_ResourceScanNotFoundExceptionRes(parsedOutput, context);\n case \"StackInstanceNotFoundException\":\n case \"com.amazonaws.cloudformation#StackInstanceNotFoundException\":\n throw await de_StackInstanceNotFoundExceptionRes(parsedOutput, context);\n case \"StackNotFoundException\":\n case \"com.amazonaws.cloudformation#StackNotFoundException\":\n throw await de_StackNotFoundExceptionRes(parsedOutput, context);\n case \"ResourceScanInProgress\":\n case \"com.amazonaws.cloudformation#ResourceScanInProgressException\":\n throw await de_ResourceScanInProgressExceptionRes(parsedOutput, context);\n case \"ConditionalCheckFailed\":\n case \"com.amazonaws.cloudformation#OperationStatusCheckFailedException\":\n throw await de_OperationStatusCheckFailedExceptionRes(parsedOutput, context);\n case \"InvalidStateTransition\":\n case \"com.amazonaws.cloudformation#InvalidStateTransitionException\":\n throw await de_InvalidStateTransitionExceptionRes(parsedOutput, context);\n case \"ResourceScanLimitExceeded\":\n case \"com.amazonaws.cloudformation#ResourceScanLimitExceededException\":\n throw await de_ResourceScanLimitExceededExceptionRes(parsedOutput, context);\n default:\n const parsedBody = parsedOutput.body;\n return throwDefaultError({\n output,\n parsedBody: parsedBody.Error,\n errorCode\n });\n }\n}, \"de_CommandError\");\nvar de_AlreadyExistsExceptionRes = /* @__PURE__ */ __name(async (parsedOutput, context) => {\n const body = parsedOutput.body;\n const deserialized = de_AlreadyExistsException(body.Error, context);\n const exception = new AlreadyExistsException({\n $metadata: deserializeMetadata(parsedOutput),\n ...deserialized\n });\n return (0, import_smithy_client.decorateServiceException)(exception, body);\n}, \"de_AlreadyExistsExceptionRes\");\nvar de_CFNRegistryExceptionRes = /* @__PURE__ */ __name(async (parsedOutput, context) => {\n const body = parsedOutput.body;\n const deserialized = de_CFNRegistryException(body.Error, context);\n const exception = new CFNRegistryException({\n $metadata: deserializeMetadata(parsedOutput),\n ...deserialized\n });\n return (0, import_smithy_client.decorateServiceException)(exception, body);\n}, \"de_CFNRegistryExceptionRes\");\nvar de_ChangeSetNotFoundExceptionRes = /* @__PURE__ */ __name(async (parsedOutput, context) => {\n const body = parsedOutput.body;\n const deserialized = de_ChangeSetNotFoundException(body.Error, context);\n const exception = new ChangeSetNotFoundException({\n $metadata: deserializeMetadata(parsedOutput),\n ...deserialized\n });\n return (0, import_smithy_client.decorateServiceException)(exception, body);\n}, \"de_ChangeSetNotFoundExceptionRes\");\nvar de_ConcurrentResourcesLimitExceededExceptionRes = /* @__PURE__ */ __name(async (parsedOutput, context) => {\n const body = parsedOutput.body;\n const deserialized = de_ConcurrentResourcesLimitExceededException(body.Error, context);\n const exception = new ConcurrentResourcesLimitExceededException({\n $metadata: deserializeMetadata(parsedOutput),\n ...deserialized\n });\n return (0, import_smithy_client.decorateServiceException)(exception, body);\n}, \"de_ConcurrentResourcesLimitExceededExceptionRes\");\nvar de_CreatedButModifiedExceptionRes = /* @__PURE__ */ __name(async (parsedOutput, context) => {\n const body = parsedOutput.body;\n const deserialized = de_CreatedButModifiedException(body.Error, context);\n const exception = new CreatedButModifiedException({\n $metadata: deserializeMetadata(parsedOutput),\n ...deserialized\n });\n return (0, import_smithy_client.decorateServiceException)(exception, body);\n}, \"de_CreatedButModifiedExceptionRes\");\nvar de_GeneratedTemplateNotFoundExceptionRes = /* @__PURE__ */ __name(async (parsedOutput, context) => {\n const body = parsedOutput.body;\n const deserialized = de_GeneratedTemplateNotFoundException(body.Error, context);\n const exception = new GeneratedTemplateNotFoundException({\n $metadata: deserializeMetadata(parsedOutput),\n ...deserialized\n });\n return (0, import_smithy_client.decorateServiceException)(exception, body);\n}, \"de_GeneratedTemplateNotFoundExceptionRes\");\nvar de_InsufficientCapabilitiesExceptionRes = /* @__PURE__ */ __name(async (parsedOutput, context) => {\n const body = parsedOutput.body;\n const deserialized = de_InsufficientCapabilitiesException(body.Error, context);\n const exception = new InsufficientCapabilitiesException({\n $metadata: deserializeMetadata(parsedOutput),\n ...deserialized\n });\n return (0, import_smithy_client.decorateServiceException)(exception, body);\n}, \"de_InsufficientCapabilitiesExceptionRes\");\nvar de_InvalidChangeSetStatusExceptionRes = /* @__PURE__ */ __name(async (parsedOutput, context) => {\n const body = parsedOutput.body;\n const deserialized = de_InvalidChangeSetStatusException(body.Error, context);\n const exception = new InvalidChangeSetStatusException({\n $metadata: deserializeMetadata(parsedOutput),\n ...deserialized\n });\n return (0, import_smithy_client.decorateServiceException)(exception, body);\n}, \"de_InvalidChangeSetStatusExceptionRes\");\nvar de_InvalidOperationExceptionRes = /* @__PURE__ */ __name(async (parsedOutput, context) => {\n const body = parsedOutput.body;\n const deserialized = de_InvalidOperationException(body.Error, context);\n const exception = new InvalidOperationException({\n $metadata: deserializeMetadata(parsedOutput),\n ...deserialized\n });\n return (0, import_smithy_client.decorateServiceException)(exception, body);\n}, \"de_InvalidOperationExceptionRes\");\nvar de_InvalidStateTransitionExceptionRes = /* @__PURE__ */ __name(async (parsedOutput, context) => {\n const body = parsedOutput.body;\n const deserialized = de_InvalidStateTransitionException(body.Error, context);\n const exception = new InvalidStateTransitionException({\n $metadata: deserializeMetadata(parsedOutput),\n ...deserialized\n });\n return (0, import_smithy_client.decorateServiceException)(exception, body);\n}, \"de_InvalidStateTransitionExceptionRes\");\nvar de_LimitExceededExceptionRes = /* @__PURE__ */ __name(async (parsedOutput, context) => {\n const body = parsedOutput.body;\n const deserialized = de_LimitExceededException(body.Error, context);\n const exception = new LimitExceededException({\n $metadata: deserializeMetadata(parsedOutput),\n ...deserialized\n });\n return (0, import_smithy_client.decorateServiceException)(exception, body);\n}, \"de_LimitExceededExceptionRes\");\nvar de_NameAlreadyExistsExceptionRes = /* @__PURE__ */ __name(async (parsedOutput, context) => {\n const body = parsedOutput.body;\n const deserialized = de_NameAlreadyExistsException(body.Error, context);\n const exception = new NameAlreadyExistsException({\n $metadata: deserializeMetadata(parsedOutput),\n ...deserialized\n });\n return (0, import_smithy_client.decorateServiceException)(exception, body);\n}, \"de_NameAlreadyExistsExceptionRes\");\nvar de_OperationIdAlreadyExistsExceptionRes = /* @__PURE__ */ __name(async (parsedOutput, context) => {\n const body = parsedOutput.body;\n const deserialized = de_OperationIdAlreadyExistsException(body.Error, context);\n const exception = new OperationIdAlreadyExistsException({\n $metadata: deserializeMetadata(parsedOutput),\n ...deserialized\n });\n return (0, import_smithy_client.decorateServiceException)(exception, body);\n}, \"de_OperationIdAlreadyExistsExceptionRes\");\nvar de_OperationInProgressExceptionRes = /* @__PURE__ */ __name(async (parsedOutput, context) => {\n const body = parsedOutput.body;\n const deserialized = de_OperationInProgressException(body.Error, context);\n const exception = new OperationInProgressException({\n $metadata: deserializeMetadata(parsedOutput),\n ...deserialized\n });\n return (0, import_smithy_client.decorateServiceException)(exception, body);\n}, \"de_OperationInProgressExceptionRes\");\nvar de_OperationNotFoundExceptionRes = /* @__PURE__ */ __name(async (parsedOutput, context) => {\n const body = parsedOutput.body;\n const deserialized = de_OperationNotFoundException(body.Error, context);\n const exception = new OperationNotFoundException({\n $metadata: deserializeMetadata(parsedOutput),\n ...deserialized\n });\n return (0, import_smithy_client.decorateServiceException)(exception, body);\n}, \"de_OperationNotFoundExceptionRes\");\nvar de_OperationStatusCheckFailedExceptionRes = /* @__PURE__ */ __name(async (parsedOutput, context) => {\n const body = parsedOutput.body;\n const deserialized = de_OperationStatusCheckFailedException(body.Error, context);\n const exception = new OperationStatusCheckFailedException({\n $metadata: deserializeMetadata(parsedOutput),\n ...deserialized\n });\n return (0, import_smithy_client.decorateServiceException)(exception, body);\n}, \"de_OperationStatusCheckFailedExceptionRes\");\nvar de_ResourceScanInProgressExceptionRes = /* @__PURE__ */ __name(async (parsedOutput, context) => {\n const body = parsedOutput.body;\n const deserialized = de_ResourceScanInProgressException(body.Error, context);\n const exception = new ResourceScanInProgressException({\n $metadata: deserializeMetadata(parsedOutput),\n ...deserialized\n });\n return (0, import_smithy_client.decorateServiceException)(exception, body);\n}, \"de_ResourceScanInProgressExceptionRes\");\nvar de_ResourceScanLimitExceededExceptionRes = /* @__PURE__ */ __name(async (parsedOutput, context) => {\n const body = parsedOutput.body;\n const deserialized = de_ResourceScanLimitExceededException(body.Error, context);\n const exception = new ResourceScanLimitExceededException({\n $metadata: deserializeMetadata(parsedOutput),\n ...deserialized\n });\n return (0, import_smithy_client.decorateServiceException)(exception, body);\n}, \"de_ResourceScanLimitExceededExceptionRes\");\nvar de_ResourceScanNotFoundExceptionRes = /* @__PURE__ */ __name(async (parsedOutput, context) => {\n const body = parsedOutput.body;\n const deserialized = de_ResourceScanNotFoundException(body.Error, context);\n const exception = new ResourceScanNotFoundException({\n $metadata: deserializeMetadata(parsedOutput),\n ...deserialized\n });\n return (0, import_smithy_client.decorateServiceException)(exception, body);\n}, \"de_ResourceScanNotFoundExceptionRes\");\nvar de_StackInstanceNotFoundExceptionRes = /* @__PURE__ */ __name(async (parsedOutput, context) => {\n const body = parsedOutput.body;\n const deserialized = de_StackInstanceNotFoundException(body.Error, context);\n const exception = new StackInstanceNotFoundException({\n $metadata: deserializeMetadata(parsedOutput),\n ...deserialized\n });\n return (0, import_smithy_client.decorateServiceException)(exception, body);\n}, \"de_StackInstanceNotFoundExceptionRes\");\nvar de_StackNotFoundExceptionRes = /* @__PURE__ */ __name(async (parsedOutput, context) => {\n const body = parsedOutput.body;\n const deserialized = de_StackNotFoundException(body.Error, context);\n const exception = new StackNotFoundException({\n $metadata: deserializeMetadata(parsedOutput),\n ...deserialized\n });\n return (0, import_smithy_client.decorateServiceException)(exception, body);\n}, \"de_StackNotFoundExceptionRes\");\nvar de_StackSetNotEmptyExceptionRes = /* @__PURE__ */ __name(async (parsedOutput, context) => {\n const body = parsedOutput.body;\n const deserialized = de_StackSetNotEmptyException(body.Error, context);\n const exception = new StackSetNotEmptyException({\n $metadata: deserializeMetadata(parsedOutput),\n ...deserialized\n });\n return (0, import_smithy_client.decorateServiceException)(exception, body);\n}, \"de_StackSetNotEmptyExceptionRes\");\nvar de_StackSetNotFoundExceptionRes = /* @__PURE__ */ __name(async (parsedOutput, context) => {\n const body = parsedOutput.body;\n const deserialized = de_StackSetNotFoundException(body.Error, context);\n const exception = new StackSetNotFoundException({\n $metadata: deserializeMetadata(parsedOutput),\n ...deserialized\n });\n return (0, import_smithy_client.decorateServiceException)(exception, body);\n}, \"de_StackSetNotFoundExceptionRes\");\nvar de_StaleRequestExceptionRes = /* @__PURE__ */ __name(async (parsedOutput, context) => {\n const body = parsedOutput.body;\n const deserialized = de_StaleRequestException(body.Error, context);\n const exception = new StaleRequestException({\n $metadata: deserializeMetadata(parsedOutput),\n ...deserialized\n });\n return (0, import_smithy_client.decorateServiceException)(exception, body);\n}, \"de_StaleRequestExceptionRes\");\nvar de_TokenAlreadyExistsExceptionRes = /* @__PURE__ */ __name(async (parsedOutput, context) => {\n const body = parsedOutput.body;\n const deserialized = de_TokenAlreadyExistsException(body.Error, context);\n const exception = new TokenAlreadyExistsException({\n $metadata: deserializeMetadata(parsedOutput),\n ...deserialized\n });\n return (0, import_smithy_client.decorateServiceException)(exception, body);\n}, \"de_TokenAlreadyExistsExceptionRes\");\nvar de_TypeConfigurationNotFoundExceptionRes = /* @__PURE__ */ __name(async (parsedOutput, context) => {\n const body = parsedOutput.body;\n const deserialized = de_TypeConfigurationNotFoundException(body.Error, context);\n const exception = new TypeConfigurationNotFoundException({\n $metadata: deserializeMetadata(parsedOutput),\n ...deserialized\n });\n return (0, import_smithy_client.decorateServiceException)(exception, body);\n}, \"de_TypeConfigurationNotFoundExceptionRes\");\nvar de_TypeNotFoundExceptionRes = /* @__PURE__ */ __name(async (parsedOutput, context) => {\n const body = parsedOutput.body;\n const deserialized = de_TypeNotFoundException(body.Error, context);\n const exception = new TypeNotFoundException({\n $metadata: deserializeMetadata(parsedOutput),\n ...deserialized\n });\n return (0, import_smithy_client.decorateServiceException)(exception, body);\n}, \"de_TypeNotFoundExceptionRes\");\nvar se_AccountList = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n let counter = 1;\n for (const entry of input) {\n if (entry === null) {\n continue;\n }\n entries[`member.${counter}`] = entry;\n counter++;\n }\n return entries;\n}, \"se_AccountList\");\nvar se_ActivateOrganizationsAccessInput = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n return entries;\n}, \"se_ActivateOrganizationsAccessInput\");\nvar se_ActivateTypeInput = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_T] != null) {\n entries[_T] = input[_T];\n }\n if (input[_PTA] != null) {\n entries[_PTA] = input[_PTA];\n }\n if (input[_PI] != null) {\n entries[_PI] = input[_PI];\n }\n if (input[_TN] != null) {\n entries[_TN] = input[_TN];\n }\n if (input[_TNA] != null) {\n entries[_TNA] = input[_TNA];\n }\n if (input[_AU] != null) {\n entries[_AU] = input[_AU];\n }\n if (input[_LC] != null) {\n const memberEntries = se_LoggingConfig(input[_LC], context);\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `LoggingConfig.${key}`;\n entries[loc] = value;\n });\n }\n if (input[_ERA] != null) {\n entries[_ERA] = input[_ERA];\n }\n if (input[_VB] != null) {\n entries[_VB] = input[_VB];\n }\n if (input[_MV] != null) {\n entries[_MV] = input[_MV];\n }\n return entries;\n}, \"se_ActivateTypeInput\");\nvar se_AutoDeployment = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_E] != null) {\n entries[_E] = input[_E];\n }\n if (input[_RSOAR] != null) {\n entries[_RSOAR] = input[_RSOAR];\n }\n return entries;\n}, \"se_AutoDeployment\");\nvar se_BatchDescribeTypeConfigurationsInput = /* @__PURE__ */ __name((input, context) => {\n var _a;\n const entries = {};\n if (input[_TCI] != null) {\n const memberEntries = se_TypeConfigurationIdentifiers(input[_TCI], context);\n if (((_a = input[_TCI]) == null ? void 0 : _a.length) === 0) {\n entries.TypeConfigurationIdentifiers = [];\n }\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `TypeConfigurationIdentifiers.${key}`;\n entries[loc] = value;\n });\n }\n return entries;\n}, \"se_BatchDescribeTypeConfigurationsInput\");\nvar se_CancelUpdateStackInput = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_SN] != null) {\n entries[_SN] = input[_SN];\n }\n if (input[_CRT] != null) {\n entries[_CRT] = input[_CRT];\n }\n return entries;\n}, \"se_CancelUpdateStackInput\");\nvar se_Capabilities = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n let counter = 1;\n for (const entry of input) {\n if (entry === null) {\n continue;\n }\n entries[`member.${counter}`] = entry;\n counter++;\n }\n return entries;\n}, \"se_Capabilities\");\nvar se_ContinueUpdateRollbackInput = /* @__PURE__ */ __name((input, context) => {\n var _a;\n const entries = {};\n if (input[_SN] != null) {\n entries[_SN] = input[_SN];\n }\n if (input[_RARN] != null) {\n entries[_RARN] = input[_RARN];\n }\n if (input[_RTS] != null) {\n const memberEntries = se_ResourcesToSkip(input[_RTS], context);\n if (((_a = input[_RTS]) == null ? void 0 : _a.length) === 0) {\n entries.ResourcesToSkip = [];\n }\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `ResourcesToSkip.${key}`;\n entries[loc] = value;\n });\n }\n if (input[_CRT] != null) {\n entries[_CRT] = input[_CRT];\n }\n return entries;\n}, \"se_ContinueUpdateRollbackInput\");\nvar se_CreateChangeSetInput = /* @__PURE__ */ __name((input, context) => {\n var _a, _b, _c, _d, _e2, _f;\n const entries = {};\n if (input[_SN] != null) {\n entries[_SN] = input[_SN];\n }\n if (input[_TB] != null) {\n entries[_TB] = input[_TB];\n }\n if (input[_TURL] != null) {\n entries[_TURL] = input[_TURL];\n }\n if (input[_UPT] != null) {\n entries[_UPT] = input[_UPT];\n }\n if (input[_P] != null) {\n const memberEntries = se_Parameters(input[_P], context);\n if (((_a = input[_P]) == null ? void 0 : _a.length) === 0) {\n entries.Parameters = [];\n }\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `Parameters.${key}`;\n entries[loc] = value;\n });\n }\n if (input[_C] != null) {\n const memberEntries = se_Capabilities(input[_C], context);\n if (((_b = input[_C]) == null ? void 0 : _b.length) === 0) {\n entries.Capabilities = [];\n }\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `Capabilities.${key}`;\n entries[loc] = value;\n });\n }\n if (input[_RTe] != null) {\n const memberEntries = se_ResourceTypes(input[_RTe], context);\n if (((_c = input[_RTe]) == null ? void 0 : _c.length) === 0) {\n entries.ResourceTypes = [];\n }\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `ResourceTypes.${key}`;\n entries[loc] = value;\n });\n }\n if (input[_RARN] != null) {\n entries[_RARN] = input[_RARN];\n }\n if (input[_RC] != null) {\n const memberEntries = se_RollbackConfiguration(input[_RC], context);\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `RollbackConfiguration.${key}`;\n entries[loc] = value;\n });\n }\n if (input[_NARN] != null) {\n const memberEntries = se_NotificationARNs(input[_NARN], context);\n if (((_d = input[_NARN]) == null ? void 0 : _d.length) === 0) {\n entries.NotificationARNs = [];\n }\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `NotificationARNs.${key}`;\n entries[loc] = value;\n });\n }\n if (input[_Ta] != null) {\n const memberEntries = se_Tags(input[_Ta], context);\n if (((_e2 = input[_Ta]) == null ? void 0 : _e2.length) === 0) {\n entries.Tags = [];\n }\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `Tags.${key}`;\n entries[loc] = value;\n });\n }\n if (input[_CSN] != null) {\n entries[_CSN] = input[_CSN];\n }\n if (input[_CT] != null) {\n entries[_CT] = input[_CT];\n }\n if (input[_D] != null) {\n entries[_D] = input[_D];\n }\n if (input[_CST] != null) {\n entries[_CST] = input[_CST];\n }\n if (input[_RTI] != null) {\n const memberEntries = se_ResourcesToImport(input[_RTI], context);\n if (((_f = input[_RTI]) == null ? void 0 : _f.length) === 0) {\n entries.ResourcesToImport = [];\n }\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `ResourcesToImport.${key}`;\n entries[loc] = value;\n });\n }\n if (input[_INS] != null) {\n entries[_INS] = input[_INS];\n }\n if (input[_OSF] != null) {\n entries[_OSF] = input[_OSF];\n }\n if (input[_IER] != null) {\n entries[_IER] = input[_IER];\n }\n return entries;\n}, \"se_CreateChangeSetInput\");\nvar se_CreateGeneratedTemplateInput = /* @__PURE__ */ __name((input, context) => {\n var _a;\n const entries = {};\n if (input[_R] != null) {\n const memberEntries = se_ResourceDefinitions(input[_R], context);\n if (((_a = input[_R]) == null ? void 0 : _a.length) === 0) {\n entries.Resources = [];\n }\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `Resources.${key}`;\n entries[loc] = value;\n });\n }\n if (input[_GTN] != null) {\n entries[_GTN] = input[_GTN];\n }\n if (input[_SN] != null) {\n entries[_SN] = input[_SN];\n }\n if (input[_TC] != null) {\n const memberEntries = se_TemplateConfiguration(input[_TC], context);\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `TemplateConfiguration.${key}`;\n entries[loc] = value;\n });\n }\n return entries;\n}, \"se_CreateGeneratedTemplateInput\");\nvar se_CreateStackInput = /* @__PURE__ */ __name((input, context) => {\n var _a, _b, _c, _d, _e2;\n const entries = {};\n if (input[_SN] != null) {\n entries[_SN] = input[_SN];\n }\n if (input[_TB] != null) {\n entries[_TB] = input[_TB];\n }\n if (input[_TURL] != null) {\n entries[_TURL] = input[_TURL];\n }\n if (input[_P] != null) {\n const memberEntries = se_Parameters(input[_P], context);\n if (((_a = input[_P]) == null ? void 0 : _a.length) === 0) {\n entries.Parameters = [];\n }\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `Parameters.${key}`;\n entries[loc] = value;\n });\n }\n if (input[_DR] != null) {\n entries[_DR] = input[_DR];\n }\n if (input[_RC] != null) {\n const memberEntries = se_RollbackConfiguration(input[_RC], context);\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `RollbackConfiguration.${key}`;\n entries[loc] = value;\n });\n }\n if (input[_TIM] != null) {\n entries[_TIM] = input[_TIM];\n }\n if (input[_NARN] != null) {\n const memberEntries = se_NotificationARNs(input[_NARN], context);\n if (((_b = input[_NARN]) == null ? void 0 : _b.length) === 0) {\n entries.NotificationARNs = [];\n }\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `NotificationARNs.${key}`;\n entries[loc] = value;\n });\n }\n if (input[_C] != null) {\n const memberEntries = se_Capabilities(input[_C], context);\n if (((_c = input[_C]) == null ? void 0 : _c.length) === 0) {\n entries.Capabilities = [];\n }\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `Capabilities.${key}`;\n entries[loc] = value;\n });\n }\n if (input[_RTe] != null) {\n const memberEntries = se_ResourceTypes(input[_RTe], context);\n if (((_d = input[_RTe]) == null ? void 0 : _d.length) === 0) {\n entries.ResourceTypes = [];\n }\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `ResourceTypes.${key}`;\n entries[loc] = value;\n });\n }\n if (input[_RARN] != null) {\n entries[_RARN] = input[_RARN];\n }\n if (input[_OF] != null) {\n entries[_OF] = input[_OF];\n }\n if (input[_SPB] != null) {\n entries[_SPB] = input[_SPB];\n }\n if (input[_SPURL] != null) {\n entries[_SPURL] = input[_SPURL];\n }\n if (input[_Ta] != null) {\n const memberEntries = se_Tags(input[_Ta], context);\n if (((_e2 = input[_Ta]) == null ? void 0 : _e2.length) === 0) {\n entries.Tags = [];\n }\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `Tags.${key}`;\n entries[loc] = value;\n });\n }\n if (input[_CRT] != null) {\n entries[_CRT] = input[_CRT];\n }\n if (input[_ETP] != null) {\n entries[_ETP] = input[_ETP];\n }\n if (input[_REOC] != null) {\n entries[_REOC] = input[_REOC];\n }\n return entries;\n}, \"se_CreateStackInput\");\nvar se_CreateStackInstancesInput = /* @__PURE__ */ __name((input, context) => {\n var _a, _b, _c;\n const entries = {};\n if (input[_SSN] != null) {\n entries[_SSN] = input[_SSN];\n }\n if (input[_Ac] != null) {\n const memberEntries = se_AccountList(input[_Ac], context);\n if (((_a = input[_Ac]) == null ? void 0 : _a.length) === 0) {\n entries.Accounts = [];\n }\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `Accounts.${key}`;\n entries[loc] = value;\n });\n }\n if (input[_DTep] != null) {\n const memberEntries = se_DeploymentTargets(input[_DTep], context);\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `DeploymentTargets.${key}`;\n entries[loc] = value;\n });\n }\n if (input[_Re] != null) {\n const memberEntries = se_RegionList(input[_Re], context);\n if (((_b = input[_Re]) == null ? void 0 : _b.length) === 0) {\n entries.Regions = [];\n }\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `Regions.${key}`;\n entries[loc] = value;\n });\n }\n if (input[_PO] != null) {\n const memberEntries = se_Parameters(input[_PO], context);\n if (((_c = input[_PO]) == null ? void 0 : _c.length) === 0) {\n entries.ParameterOverrides = [];\n }\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `ParameterOverrides.${key}`;\n entries[loc] = value;\n });\n }\n if (input[_OP] != null) {\n const memberEntries = se_StackSetOperationPreferences(input[_OP], context);\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `OperationPreferences.${key}`;\n entries[loc] = value;\n });\n }\n if (input[_OI] === void 0) {\n input[_OI] = (0, import_uuid.v4)();\n }\n if (input[_OI] != null) {\n entries[_OI] = input[_OI];\n }\n if (input[_CA] != null) {\n entries[_CA] = input[_CA];\n }\n return entries;\n}, \"se_CreateStackInstancesInput\");\nvar se_CreateStackSetInput = /* @__PURE__ */ __name((input, context) => {\n var _a, _b, _c;\n const entries = {};\n if (input[_SSN] != null) {\n entries[_SSN] = input[_SSN];\n }\n if (input[_D] != null) {\n entries[_D] = input[_D];\n }\n if (input[_TB] != null) {\n entries[_TB] = input[_TB];\n }\n if (input[_TURL] != null) {\n entries[_TURL] = input[_TURL];\n }\n if (input[_SI] != null) {\n entries[_SI] = input[_SI];\n }\n if (input[_P] != null) {\n const memberEntries = se_Parameters(input[_P], context);\n if (((_a = input[_P]) == null ? void 0 : _a.length) === 0) {\n entries.Parameters = [];\n }\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `Parameters.${key}`;\n entries[loc] = value;\n });\n }\n if (input[_C] != null) {\n const memberEntries = se_Capabilities(input[_C], context);\n if (((_b = input[_C]) == null ? void 0 : _b.length) === 0) {\n entries.Capabilities = [];\n }\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `Capabilities.${key}`;\n entries[loc] = value;\n });\n }\n if (input[_Ta] != null) {\n const memberEntries = se_Tags(input[_Ta], context);\n if (((_c = input[_Ta]) == null ? void 0 : _c.length) === 0) {\n entries.Tags = [];\n }\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `Tags.${key}`;\n entries[loc] = value;\n });\n }\n if (input[_ARARN] != null) {\n entries[_ARARN] = input[_ARARN];\n }\n if (input[_ERN] != null) {\n entries[_ERN] = input[_ERN];\n }\n if (input[_PM] != null) {\n entries[_PM] = input[_PM];\n }\n if (input[_AD] != null) {\n const memberEntries = se_AutoDeployment(input[_AD], context);\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `AutoDeployment.${key}`;\n entries[loc] = value;\n });\n }\n if (input[_CA] != null) {\n entries[_CA] = input[_CA];\n }\n if (input[_CRT] === void 0) {\n input[_CRT] = (0, import_uuid.v4)();\n }\n if (input[_CRT] != null) {\n entries[_CRT] = input[_CRT];\n }\n if (input[_ME] != null) {\n const memberEntries = se_ManagedExecution(input[_ME], context);\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `ManagedExecution.${key}`;\n entries[loc] = value;\n });\n }\n return entries;\n}, \"se_CreateStackSetInput\");\nvar se_DeactivateOrganizationsAccessInput = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n return entries;\n}, \"se_DeactivateOrganizationsAccessInput\");\nvar se_DeactivateTypeInput = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_TN] != null) {\n entries[_TN] = input[_TN];\n }\n if (input[_T] != null) {\n entries[_T] = input[_T];\n }\n if (input[_Ar] != null) {\n entries[_Ar] = input[_Ar];\n }\n return entries;\n}, \"se_DeactivateTypeInput\");\nvar se_DeleteChangeSetInput = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_CSN] != null) {\n entries[_CSN] = input[_CSN];\n }\n if (input[_SN] != null) {\n entries[_SN] = input[_SN];\n }\n return entries;\n}, \"se_DeleteChangeSetInput\");\nvar se_DeleteGeneratedTemplateInput = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_GTN] != null) {\n entries[_GTN] = input[_GTN];\n }\n return entries;\n}, \"se_DeleteGeneratedTemplateInput\");\nvar se_DeleteStackInput = /* @__PURE__ */ __name((input, context) => {\n var _a;\n const entries = {};\n if (input[_SN] != null) {\n entries[_SN] = input[_SN];\n }\n if (input[_RR] != null) {\n const memberEntries = se_RetainResources(input[_RR], context);\n if (((_a = input[_RR]) == null ? void 0 : _a.length) === 0) {\n entries.RetainResources = [];\n }\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `RetainResources.${key}`;\n entries[loc] = value;\n });\n }\n if (input[_RARN] != null) {\n entries[_RARN] = input[_RARN];\n }\n if (input[_CRT] != null) {\n entries[_CRT] = input[_CRT];\n }\n if (input[_DM] != null) {\n entries[_DM] = input[_DM];\n }\n return entries;\n}, \"se_DeleteStackInput\");\nvar se_DeleteStackInstancesInput = /* @__PURE__ */ __name((input, context) => {\n var _a, _b;\n const entries = {};\n if (input[_SSN] != null) {\n entries[_SSN] = input[_SSN];\n }\n if (input[_Ac] != null) {\n const memberEntries = se_AccountList(input[_Ac], context);\n if (((_a = input[_Ac]) == null ? void 0 : _a.length) === 0) {\n entries.Accounts = [];\n }\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `Accounts.${key}`;\n entries[loc] = value;\n });\n }\n if (input[_DTep] != null) {\n const memberEntries = se_DeploymentTargets(input[_DTep], context);\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `DeploymentTargets.${key}`;\n entries[loc] = value;\n });\n }\n if (input[_Re] != null) {\n const memberEntries = se_RegionList(input[_Re], context);\n if (((_b = input[_Re]) == null ? void 0 : _b.length) === 0) {\n entries.Regions = [];\n }\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `Regions.${key}`;\n entries[loc] = value;\n });\n }\n if (input[_OP] != null) {\n const memberEntries = se_StackSetOperationPreferences(input[_OP], context);\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `OperationPreferences.${key}`;\n entries[loc] = value;\n });\n }\n if (input[_RSe] != null) {\n entries[_RSe] = input[_RSe];\n }\n if (input[_OI] === void 0) {\n input[_OI] = (0, import_uuid.v4)();\n }\n if (input[_OI] != null) {\n entries[_OI] = input[_OI];\n }\n if (input[_CA] != null) {\n entries[_CA] = input[_CA];\n }\n return entries;\n}, \"se_DeleteStackInstancesInput\");\nvar se_DeleteStackSetInput = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_SSN] != null) {\n entries[_SSN] = input[_SSN];\n }\n if (input[_CA] != null) {\n entries[_CA] = input[_CA];\n }\n return entries;\n}, \"se_DeleteStackSetInput\");\nvar se_DeploymentTargets = /* @__PURE__ */ __name((input, context) => {\n var _a, _b;\n const entries = {};\n if (input[_Ac] != null) {\n const memberEntries = se_AccountList(input[_Ac], context);\n if (((_a = input[_Ac]) == null ? void 0 : _a.length) === 0) {\n entries.Accounts = [];\n }\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `Accounts.${key}`;\n entries[loc] = value;\n });\n }\n if (input[_AUc] != null) {\n entries[_AUc] = input[_AUc];\n }\n if (input[_OUI] != null) {\n const memberEntries = se_OrganizationalUnitIdList(input[_OUI], context);\n if (((_b = input[_OUI]) == null ? void 0 : _b.length) === 0) {\n entries.OrganizationalUnitIds = [];\n }\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `OrganizationalUnitIds.${key}`;\n entries[loc] = value;\n });\n }\n if (input[_AFT] != null) {\n entries[_AFT] = input[_AFT];\n }\n return entries;\n}, \"se_DeploymentTargets\");\nvar se_DeregisterTypeInput = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_Ar] != null) {\n entries[_Ar] = input[_Ar];\n }\n if (input[_T] != null) {\n entries[_T] = input[_T];\n }\n if (input[_TN] != null) {\n entries[_TN] = input[_TN];\n }\n if (input[_VI] != null) {\n entries[_VI] = input[_VI];\n }\n return entries;\n}, \"se_DeregisterTypeInput\");\nvar se_DescribeAccountLimitsInput = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_NT] != null) {\n entries[_NT] = input[_NT];\n }\n return entries;\n}, \"se_DescribeAccountLimitsInput\");\nvar se_DescribeChangeSetHooksInput = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_CSN] != null) {\n entries[_CSN] = input[_CSN];\n }\n if (input[_SN] != null) {\n entries[_SN] = input[_SN];\n }\n if (input[_NT] != null) {\n entries[_NT] = input[_NT];\n }\n if (input[_LRI] != null) {\n entries[_LRI] = input[_LRI];\n }\n return entries;\n}, \"se_DescribeChangeSetHooksInput\");\nvar se_DescribeChangeSetInput = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_CSN] != null) {\n entries[_CSN] = input[_CSN];\n }\n if (input[_SN] != null) {\n entries[_SN] = input[_SN];\n }\n if (input[_NT] != null) {\n entries[_NT] = input[_NT];\n }\n if (input[_IPV] != null) {\n entries[_IPV] = input[_IPV];\n }\n return entries;\n}, \"se_DescribeChangeSetInput\");\nvar se_DescribeGeneratedTemplateInput = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_GTN] != null) {\n entries[_GTN] = input[_GTN];\n }\n return entries;\n}, \"se_DescribeGeneratedTemplateInput\");\nvar se_DescribeOrganizationsAccessInput = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_CA] != null) {\n entries[_CA] = input[_CA];\n }\n return entries;\n}, \"se_DescribeOrganizationsAccessInput\");\nvar se_DescribePublisherInput = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_PI] != null) {\n entries[_PI] = input[_PI];\n }\n return entries;\n}, \"se_DescribePublisherInput\");\nvar se_DescribeResourceScanInput = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_RSI] != null) {\n entries[_RSI] = input[_RSI];\n }\n return entries;\n}, \"se_DescribeResourceScanInput\");\nvar se_DescribeStackDriftDetectionStatusInput = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_SDDI] != null) {\n entries[_SDDI] = input[_SDDI];\n }\n return entries;\n}, \"se_DescribeStackDriftDetectionStatusInput\");\nvar se_DescribeStackEventsInput = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_SN] != null) {\n entries[_SN] = input[_SN];\n }\n if (input[_NT] != null) {\n entries[_NT] = input[_NT];\n }\n return entries;\n}, \"se_DescribeStackEventsInput\");\nvar se_DescribeStackInstanceInput = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_SSN] != null) {\n entries[_SSN] = input[_SSN];\n }\n if (input[_SIA] != null) {\n entries[_SIA] = input[_SIA];\n }\n if (input[_SIR] != null) {\n entries[_SIR] = input[_SIR];\n }\n if (input[_CA] != null) {\n entries[_CA] = input[_CA];\n }\n return entries;\n}, \"se_DescribeStackInstanceInput\");\nvar se_DescribeStackResourceDriftsInput = /* @__PURE__ */ __name((input, context) => {\n var _a;\n const entries = {};\n if (input[_SN] != null) {\n entries[_SN] = input[_SN];\n }\n if (input[_SRDSF] != null) {\n const memberEntries = se_StackResourceDriftStatusFilters(input[_SRDSF], context);\n if (((_a = input[_SRDSF]) == null ? void 0 : _a.length) === 0) {\n entries.StackResourceDriftStatusFilters = [];\n }\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `StackResourceDriftStatusFilters.${key}`;\n entries[loc] = value;\n });\n }\n if (input[_NT] != null) {\n entries[_NT] = input[_NT];\n }\n if (input[_MR] != null) {\n entries[_MR] = input[_MR];\n }\n return entries;\n}, \"se_DescribeStackResourceDriftsInput\");\nvar se_DescribeStackResourceInput = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_SN] != null) {\n entries[_SN] = input[_SN];\n }\n if (input[_LRI] != null) {\n entries[_LRI] = input[_LRI];\n }\n return entries;\n}, \"se_DescribeStackResourceInput\");\nvar se_DescribeStackResourcesInput = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_SN] != null) {\n entries[_SN] = input[_SN];\n }\n if (input[_LRI] != null) {\n entries[_LRI] = input[_LRI];\n }\n if (input[_PRI] != null) {\n entries[_PRI] = input[_PRI];\n }\n return entries;\n}, \"se_DescribeStackResourcesInput\");\nvar se_DescribeStackSetInput = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_SSN] != null) {\n entries[_SSN] = input[_SSN];\n }\n if (input[_CA] != null) {\n entries[_CA] = input[_CA];\n }\n return entries;\n}, \"se_DescribeStackSetInput\");\nvar se_DescribeStackSetOperationInput = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_SSN] != null) {\n entries[_SSN] = input[_SSN];\n }\n if (input[_OI] != null) {\n entries[_OI] = input[_OI];\n }\n if (input[_CA] != null) {\n entries[_CA] = input[_CA];\n }\n return entries;\n}, \"se_DescribeStackSetOperationInput\");\nvar se_DescribeStacksInput = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_SN] != null) {\n entries[_SN] = input[_SN];\n }\n if (input[_NT] != null) {\n entries[_NT] = input[_NT];\n }\n return entries;\n}, \"se_DescribeStacksInput\");\nvar se_DescribeTypeInput = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_T] != null) {\n entries[_T] = input[_T];\n }\n if (input[_TN] != null) {\n entries[_TN] = input[_TN];\n }\n if (input[_Ar] != null) {\n entries[_Ar] = input[_Ar];\n }\n if (input[_VI] != null) {\n entries[_VI] = input[_VI];\n }\n if (input[_PI] != null) {\n entries[_PI] = input[_PI];\n }\n if (input[_PVN] != null) {\n entries[_PVN] = input[_PVN];\n }\n return entries;\n}, \"se_DescribeTypeInput\");\nvar se_DescribeTypeRegistrationInput = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_RTeg] != null) {\n entries[_RTeg] = input[_RTeg];\n }\n return entries;\n}, \"se_DescribeTypeRegistrationInput\");\nvar se_DetectStackDriftInput = /* @__PURE__ */ __name((input, context) => {\n var _a;\n const entries = {};\n if (input[_SN] != null) {\n entries[_SN] = input[_SN];\n }\n if (input[_LRIo] != null) {\n const memberEntries = se_LogicalResourceIds(input[_LRIo], context);\n if (((_a = input[_LRIo]) == null ? void 0 : _a.length) === 0) {\n entries.LogicalResourceIds = [];\n }\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `LogicalResourceIds.${key}`;\n entries[loc] = value;\n });\n }\n return entries;\n}, \"se_DetectStackDriftInput\");\nvar se_DetectStackResourceDriftInput = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_SN] != null) {\n entries[_SN] = input[_SN];\n }\n if (input[_LRI] != null) {\n entries[_LRI] = input[_LRI];\n }\n return entries;\n}, \"se_DetectStackResourceDriftInput\");\nvar se_DetectStackSetDriftInput = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_SSN] != null) {\n entries[_SSN] = input[_SSN];\n }\n if (input[_OP] != null) {\n const memberEntries = se_StackSetOperationPreferences(input[_OP], context);\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `OperationPreferences.${key}`;\n entries[loc] = value;\n });\n }\n if (input[_OI] === void 0) {\n input[_OI] = (0, import_uuid.v4)();\n }\n if (input[_OI] != null) {\n entries[_OI] = input[_OI];\n }\n if (input[_CA] != null) {\n entries[_CA] = input[_CA];\n }\n return entries;\n}, \"se_DetectStackSetDriftInput\");\nvar se_EstimateTemplateCostInput = /* @__PURE__ */ __name((input, context) => {\n var _a;\n const entries = {};\n if (input[_TB] != null) {\n entries[_TB] = input[_TB];\n }\n if (input[_TURL] != null) {\n entries[_TURL] = input[_TURL];\n }\n if (input[_P] != null) {\n const memberEntries = se_Parameters(input[_P], context);\n if (((_a = input[_P]) == null ? void 0 : _a.length) === 0) {\n entries.Parameters = [];\n }\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `Parameters.${key}`;\n entries[loc] = value;\n });\n }\n return entries;\n}, \"se_EstimateTemplateCostInput\");\nvar se_ExecuteChangeSetInput = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_CSN] != null) {\n entries[_CSN] = input[_CSN];\n }\n if (input[_SN] != null) {\n entries[_SN] = input[_SN];\n }\n if (input[_CRT] != null) {\n entries[_CRT] = input[_CRT];\n }\n if (input[_DR] != null) {\n entries[_DR] = input[_DR];\n }\n if (input[_REOC] != null) {\n entries[_REOC] = input[_REOC];\n }\n return entries;\n}, \"se_ExecuteChangeSetInput\");\nvar se_GetGeneratedTemplateInput = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_F] != null) {\n entries[_F] = input[_F];\n }\n if (input[_GTN] != null) {\n entries[_GTN] = input[_GTN];\n }\n return entries;\n}, \"se_GetGeneratedTemplateInput\");\nvar se_GetStackPolicyInput = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_SN] != null) {\n entries[_SN] = input[_SN];\n }\n return entries;\n}, \"se_GetStackPolicyInput\");\nvar se_GetTemplateInput = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_SN] != null) {\n entries[_SN] = input[_SN];\n }\n if (input[_CSN] != null) {\n entries[_CSN] = input[_CSN];\n }\n if (input[_TS] != null) {\n entries[_TS] = input[_TS];\n }\n return entries;\n}, \"se_GetTemplateInput\");\nvar se_GetTemplateSummaryInput = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_TB] != null) {\n entries[_TB] = input[_TB];\n }\n if (input[_TURL] != null) {\n entries[_TURL] = input[_TURL];\n }\n if (input[_SN] != null) {\n entries[_SN] = input[_SN];\n }\n if (input[_SSN] != null) {\n entries[_SSN] = input[_SSN];\n }\n if (input[_CA] != null) {\n entries[_CA] = input[_CA];\n }\n if (input[_TSC] != null) {\n const memberEntries = se_TemplateSummaryConfig(input[_TSC], context);\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `TemplateSummaryConfig.${key}`;\n entries[loc] = value;\n });\n }\n return entries;\n}, \"se_GetTemplateSummaryInput\");\nvar se_ImportStacksToStackSetInput = /* @__PURE__ */ __name((input, context) => {\n var _a, _b;\n const entries = {};\n if (input[_SSN] != null) {\n entries[_SSN] = input[_SSN];\n }\n if (input[_SIt] != null) {\n const memberEntries = se_StackIdList(input[_SIt], context);\n if (((_a = input[_SIt]) == null ? void 0 : _a.length) === 0) {\n entries.StackIds = [];\n }\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `StackIds.${key}`;\n entries[loc] = value;\n });\n }\n if (input[_SIU] != null) {\n entries[_SIU] = input[_SIU];\n }\n if (input[_OUI] != null) {\n const memberEntries = se_OrganizationalUnitIdList(input[_OUI], context);\n if (((_b = input[_OUI]) == null ? void 0 : _b.length) === 0) {\n entries.OrganizationalUnitIds = [];\n }\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `OrganizationalUnitIds.${key}`;\n entries[loc] = value;\n });\n }\n if (input[_OP] != null) {\n const memberEntries = se_StackSetOperationPreferences(input[_OP], context);\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `OperationPreferences.${key}`;\n entries[loc] = value;\n });\n }\n if (input[_OI] === void 0) {\n input[_OI] = (0, import_uuid.v4)();\n }\n if (input[_OI] != null) {\n entries[_OI] = input[_OI];\n }\n if (input[_CA] != null) {\n entries[_CA] = input[_CA];\n }\n return entries;\n}, \"se_ImportStacksToStackSetInput\");\nvar se_JazzLogicalResourceIds = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n let counter = 1;\n for (const entry of input) {\n if (entry === null) {\n continue;\n }\n entries[`member.${counter}`] = entry;\n counter++;\n }\n return entries;\n}, \"se_JazzLogicalResourceIds\");\nvar se_JazzResourceIdentifierProperties = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n let counter = 1;\n Object.keys(input).filter((key) => input[key] != null).forEach((key) => {\n entries[`entry.${counter}.key`] = key;\n entries[`entry.${counter}.value`] = input[key];\n counter++;\n });\n return entries;\n}, \"se_JazzResourceIdentifierProperties\");\nvar se_ListChangeSetsInput = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_SN] != null) {\n entries[_SN] = input[_SN];\n }\n if (input[_NT] != null) {\n entries[_NT] = input[_NT];\n }\n return entries;\n}, \"se_ListChangeSetsInput\");\nvar se_ListExportsInput = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_NT] != null) {\n entries[_NT] = input[_NT];\n }\n return entries;\n}, \"se_ListExportsInput\");\nvar se_ListGeneratedTemplatesInput = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_NT] != null) {\n entries[_NT] = input[_NT];\n }\n if (input[_MR] != null) {\n entries[_MR] = input[_MR];\n }\n return entries;\n}, \"se_ListGeneratedTemplatesInput\");\nvar se_ListImportsInput = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_EN] != null) {\n entries[_EN] = input[_EN];\n }\n if (input[_NT] != null) {\n entries[_NT] = input[_NT];\n }\n return entries;\n}, \"se_ListImportsInput\");\nvar se_ListResourceScanRelatedResourcesInput = /* @__PURE__ */ __name((input, context) => {\n var _a;\n const entries = {};\n if (input[_RSI] != null) {\n entries[_RSI] = input[_RSI];\n }\n if (input[_R] != null) {\n const memberEntries = se_ScannedResourceIdentifiers(input[_R], context);\n if (((_a = input[_R]) == null ? void 0 : _a.length) === 0) {\n entries.Resources = [];\n }\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `Resources.${key}`;\n entries[loc] = value;\n });\n }\n if (input[_NT] != null) {\n entries[_NT] = input[_NT];\n }\n if (input[_MR] != null) {\n entries[_MR] = input[_MR];\n }\n return entries;\n}, \"se_ListResourceScanRelatedResourcesInput\");\nvar se_ListResourceScanResourcesInput = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_RSI] != null) {\n entries[_RSI] = input[_RSI];\n }\n if (input[_RI] != null) {\n entries[_RI] = input[_RI];\n }\n if (input[_RTP] != null) {\n entries[_RTP] = input[_RTP];\n }\n if (input[_TK] != null) {\n entries[_TK] = input[_TK];\n }\n if (input[_TV] != null) {\n entries[_TV] = input[_TV];\n }\n if (input[_NT] != null) {\n entries[_NT] = input[_NT];\n }\n if (input[_MR] != null) {\n entries[_MR] = input[_MR];\n }\n return entries;\n}, \"se_ListResourceScanResourcesInput\");\nvar se_ListResourceScansInput = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_NT] != null) {\n entries[_NT] = input[_NT];\n }\n if (input[_MR] != null) {\n entries[_MR] = input[_MR];\n }\n return entries;\n}, \"se_ListResourceScansInput\");\nvar se_ListStackInstanceResourceDriftsInput = /* @__PURE__ */ __name((input, context) => {\n var _a;\n const entries = {};\n if (input[_SSN] != null) {\n entries[_SSN] = input[_SSN];\n }\n if (input[_NT] != null) {\n entries[_NT] = input[_NT];\n }\n if (input[_MR] != null) {\n entries[_MR] = input[_MR];\n }\n if (input[_SIRDS] != null) {\n const memberEntries = se_StackResourceDriftStatusFilters(input[_SIRDS], context);\n if (((_a = input[_SIRDS]) == null ? void 0 : _a.length) === 0) {\n entries.StackInstanceResourceDriftStatuses = [];\n }\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `StackInstanceResourceDriftStatuses.${key}`;\n entries[loc] = value;\n });\n }\n if (input[_SIA] != null) {\n entries[_SIA] = input[_SIA];\n }\n if (input[_SIR] != null) {\n entries[_SIR] = input[_SIR];\n }\n if (input[_OI] != null) {\n entries[_OI] = input[_OI];\n }\n if (input[_CA] != null) {\n entries[_CA] = input[_CA];\n }\n return entries;\n}, \"se_ListStackInstanceResourceDriftsInput\");\nvar se_ListStackInstancesInput = /* @__PURE__ */ __name((input, context) => {\n var _a;\n const entries = {};\n if (input[_SSN] != null) {\n entries[_SSN] = input[_SSN];\n }\n if (input[_NT] != null) {\n entries[_NT] = input[_NT];\n }\n if (input[_MR] != null) {\n entries[_MR] = input[_MR];\n }\n if (input[_Fi] != null) {\n const memberEntries = se_StackInstanceFilters(input[_Fi], context);\n if (((_a = input[_Fi]) == null ? void 0 : _a.length) === 0) {\n entries.Filters = [];\n }\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `Filters.${key}`;\n entries[loc] = value;\n });\n }\n if (input[_SIA] != null) {\n entries[_SIA] = input[_SIA];\n }\n if (input[_SIR] != null) {\n entries[_SIR] = input[_SIR];\n }\n if (input[_CA] != null) {\n entries[_CA] = input[_CA];\n }\n return entries;\n}, \"se_ListStackInstancesInput\");\nvar se_ListStackResourcesInput = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_SN] != null) {\n entries[_SN] = input[_SN];\n }\n if (input[_NT] != null) {\n entries[_NT] = input[_NT];\n }\n return entries;\n}, \"se_ListStackResourcesInput\");\nvar se_ListStackSetAutoDeploymentTargetsInput = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_SSN] != null) {\n entries[_SSN] = input[_SSN];\n }\n if (input[_NT] != null) {\n entries[_NT] = input[_NT];\n }\n if (input[_MR] != null) {\n entries[_MR] = input[_MR];\n }\n if (input[_CA] != null) {\n entries[_CA] = input[_CA];\n }\n return entries;\n}, \"se_ListStackSetAutoDeploymentTargetsInput\");\nvar se_ListStackSetOperationResultsInput = /* @__PURE__ */ __name((input, context) => {\n var _a;\n const entries = {};\n if (input[_SSN] != null) {\n entries[_SSN] = input[_SSN];\n }\n if (input[_OI] != null) {\n entries[_OI] = input[_OI];\n }\n if (input[_NT] != null) {\n entries[_NT] = input[_NT];\n }\n if (input[_MR] != null) {\n entries[_MR] = input[_MR];\n }\n if (input[_CA] != null) {\n entries[_CA] = input[_CA];\n }\n if (input[_Fi] != null) {\n const memberEntries = se_OperationResultFilters(input[_Fi], context);\n if (((_a = input[_Fi]) == null ? void 0 : _a.length) === 0) {\n entries.Filters = [];\n }\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `Filters.${key}`;\n entries[loc] = value;\n });\n }\n return entries;\n}, \"se_ListStackSetOperationResultsInput\");\nvar se_ListStackSetOperationsInput = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_SSN] != null) {\n entries[_SSN] = input[_SSN];\n }\n if (input[_NT] != null) {\n entries[_NT] = input[_NT];\n }\n if (input[_MR] != null) {\n entries[_MR] = input[_MR];\n }\n if (input[_CA] != null) {\n entries[_CA] = input[_CA];\n }\n return entries;\n}, \"se_ListStackSetOperationsInput\");\nvar se_ListStackSetsInput = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_NT] != null) {\n entries[_NT] = input[_NT];\n }\n if (input[_MR] != null) {\n entries[_MR] = input[_MR];\n }\n if (input[_S] != null) {\n entries[_S] = input[_S];\n }\n if (input[_CA] != null) {\n entries[_CA] = input[_CA];\n }\n return entries;\n}, \"se_ListStackSetsInput\");\nvar se_ListStacksInput = /* @__PURE__ */ __name((input, context) => {\n var _a;\n const entries = {};\n if (input[_NT] != null) {\n entries[_NT] = input[_NT];\n }\n if (input[_SSF] != null) {\n const memberEntries = se_StackStatusFilter(input[_SSF], context);\n if (((_a = input[_SSF]) == null ? void 0 : _a.length) === 0) {\n entries.StackStatusFilter = [];\n }\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `StackStatusFilter.${key}`;\n entries[loc] = value;\n });\n }\n return entries;\n}, \"se_ListStacksInput\");\nvar se_ListTypeRegistrationsInput = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_T] != null) {\n entries[_T] = input[_T];\n }\n if (input[_TN] != null) {\n entries[_TN] = input[_TN];\n }\n if (input[_TA] != null) {\n entries[_TA] = input[_TA];\n }\n if (input[_RSF] != null) {\n entries[_RSF] = input[_RSF];\n }\n if (input[_MR] != null) {\n entries[_MR] = input[_MR];\n }\n if (input[_NT] != null) {\n entries[_NT] = input[_NT];\n }\n return entries;\n}, \"se_ListTypeRegistrationsInput\");\nvar se_ListTypesInput = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_Vi] != null) {\n entries[_Vi] = input[_Vi];\n }\n if (input[_PTr] != null) {\n entries[_PTr] = input[_PTr];\n }\n if (input[_DSep] != null) {\n entries[_DSep] = input[_DSep];\n }\n if (input[_T] != null) {\n entries[_T] = input[_T];\n }\n if (input[_Fi] != null) {\n const memberEntries = se_TypeFilters(input[_Fi], context);\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `Filters.${key}`;\n entries[loc] = value;\n });\n }\n if (input[_MR] != null) {\n entries[_MR] = input[_MR];\n }\n if (input[_NT] != null) {\n entries[_NT] = input[_NT];\n }\n return entries;\n}, \"se_ListTypesInput\");\nvar se_ListTypeVersionsInput = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_T] != null) {\n entries[_T] = input[_T];\n }\n if (input[_TN] != null) {\n entries[_TN] = input[_TN];\n }\n if (input[_Ar] != null) {\n entries[_Ar] = input[_Ar];\n }\n if (input[_MR] != null) {\n entries[_MR] = input[_MR];\n }\n if (input[_NT] != null) {\n entries[_NT] = input[_NT];\n }\n if (input[_DSep] != null) {\n entries[_DSep] = input[_DSep];\n }\n if (input[_PI] != null) {\n entries[_PI] = input[_PI];\n }\n return entries;\n}, \"se_ListTypeVersionsInput\");\nvar se_LoggingConfig = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_LRA] != null) {\n entries[_LRA] = input[_LRA];\n }\n if (input[_LGN] != null) {\n entries[_LGN] = input[_LGN];\n }\n return entries;\n}, \"se_LoggingConfig\");\nvar se_LogicalResourceIds = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n let counter = 1;\n for (const entry of input) {\n if (entry === null) {\n continue;\n }\n entries[`member.${counter}`] = entry;\n counter++;\n }\n return entries;\n}, \"se_LogicalResourceIds\");\nvar se_ManagedExecution = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_Act] != null) {\n entries[_Act] = input[_Act];\n }\n return entries;\n}, \"se_ManagedExecution\");\nvar se_NotificationARNs = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n let counter = 1;\n for (const entry of input) {\n if (entry === null) {\n continue;\n }\n entries[`member.${counter}`] = entry;\n counter++;\n }\n return entries;\n}, \"se_NotificationARNs\");\nvar se_OperationResultFilter = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_N] != null) {\n entries[_N] = input[_N];\n }\n if (input[_Va] != null) {\n entries[_Va] = input[_Va];\n }\n return entries;\n}, \"se_OperationResultFilter\");\nvar se_OperationResultFilters = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n let counter = 1;\n for (const entry of input) {\n if (entry === null) {\n continue;\n }\n const memberEntries = se_OperationResultFilter(entry, context);\n Object.entries(memberEntries).forEach(([key, value]) => {\n entries[`member.${counter}.${key}`] = value;\n });\n counter++;\n }\n return entries;\n}, \"se_OperationResultFilters\");\nvar se_OrganizationalUnitIdList = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n let counter = 1;\n for (const entry of input) {\n if (entry === null) {\n continue;\n }\n entries[`member.${counter}`] = entry;\n counter++;\n }\n return entries;\n}, \"se_OrganizationalUnitIdList\");\nvar se_Parameter = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_PK] != null) {\n entries[_PK] = input[_PK];\n }\n if (input[_PV] != null) {\n entries[_PV] = input[_PV];\n }\n if (input[_UPV] != null) {\n entries[_UPV] = input[_UPV];\n }\n if (input[_RV] != null) {\n entries[_RV] = input[_RV];\n }\n return entries;\n}, \"se_Parameter\");\nvar se_Parameters = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n let counter = 1;\n for (const entry of input) {\n if (entry === null) {\n continue;\n }\n const memberEntries = se_Parameter(entry, context);\n Object.entries(memberEntries).forEach(([key, value]) => {\n entries[`member.${counter}.${key}`] = value;\n });\n counter++;\n }\n return entries;\n}, \"se_Parameters\");\nvar se_PublishTypeInput = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_T] != null) {\n entries[_T] = input[_T];\n }\n if (input[_Ar] != null) {\n entries[_Ar] = input[_Ar];\n }\n if (input[_TN] != null) {\n entries[_TN] = input[_TN];\n }\n if (input[_PVN] != null) {\n entries[_PVN] = input[_PVN];\n }\n return entries;\n}, \"se_PublishTypeInput\");\nvar se_RecordHandlerProgressInput = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_BT] != null) {\n entries[_BT] = input[_BT];\n }\n if (input[_OS] != null) {\n entries[_OS] = input[_OS];\n }\n if (input[_COS] != null) {\n entries[_COS] = input[_COS];\n }\n if (input[_SM] != null) {\n entries[_SM] = input[_SM];\n }\n if (input[_EC] != null) {\n entries[_EC] = input[_EC];\n }\n if (input[_RM] != null) {\n entries[_RM] = input[_RM];\n }\n if (input[_CRT] != null) {\n entries[_CRT] = input[_CRT];\n }\n return entries;\n}, \"se_RecordHandlerProgressInput\");\nvar se_RegionList = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n let counter = 1;\n for (const entry of input) {\n if (entry === null) {\n continue;\n }\n entries[`member.${counter}`] = entry;\n counter++;\n }\n return entries;\n}, \"se_RegionList\");\nvar se_RegisterPublisherInput = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_ATAC] != null) {\n entries[_ATAC] = input[_ATAC];\n }\n if (input[_CAo] != null) {\n entries[_CAo] = input[_CAo];\n }\n return entries;\n}, \"se_RegisterPublisherInput\");\nvar se_RegisterTypeInput = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_T] != null) {\n entries[_T] = input[_T];\n }\n if (input[_TN] != null) {\n entries[_TN] = input[_TN];\n }\n if (input[_SHP] != null) {\n entries[_SHP] = input[_SHP];\n }\n if (input[_LC] != null) {\n const memberEntries = se_LoggingConfig(input[_LC], context);\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `LoggingConfig.${key}`;\n entries[loc] = value;\n });\n }\n if (input[_ERA] != null) {\n entries[_ERA] = input[_ERA];\n }\n if (input[_CRT] != null) {\n entries[_CRT] = input[_CRT];\n }\n return entries;\n}, \"se_RegisterTypeInput\");\nvar se_ResourceDefinition = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_RTes] != null) {\n entries[_RTes] = input[_RTes];\n }\n if (input[_LRI] != null) {\n entries[_LRI] = input[_LRI];\n }\n if (input[_RI] != null) {\n const memberEntries = se_ResourceIdentifierProperties(input[_RI], context);\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `ResourceIdentifier.${key}`;\n entries[loc] = value;\n });\n }\n return entries;\n}, \"se_ResourceDefinition\");\nvar se_ResourceDefinitions = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n let counter = 1;\n for (const entry of input) {\n if (entry === null) {\n continue;\n }\n const memberEntries = se_ResourceDefinition(entry, context);\n Object.entries(memberEntries).forEach(([key, value]) => {\n entries[`member.${counter}.${key}`] = value;\n });\n counter++;\n }\n return entries;\n}, \"se_ResourceDefinitions\");\nvar se_ResourceIdentifierProperties = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n let counter = 1;\n Object.keys(input).filter((key) => input[key] != null).forEach((key) => {\n entries[`entry.${counter}.key`] = key;\n entries[`entry.${counter}.value`] = input[key];\n counter++;\n });\n return entries;\n}, \"se_ResourceIdentifierProperties\");\nvar se_ResourcesToImport = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n let counter = 1;\n for (const entry of input) {\n if (entry === null) {\n continue;\n }\n const memberEntries = se_ResourceToImport(entry, context);\n Object.entries(memberEntries).forEach(([key, value]) => {\n entries[`member.${counter}.${key}`] = value;\n });\n counter++;\n }\n return entries;\n}, \"se_ResourcesToImport\");\nvar se_ResourcesToSkip = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n let counter = 1;\n for (const entry of input) {\n if (entry === null) {\n continue;\n }\n entries[`member.${counter}`] = entry;\n counter++;\n }\n return entries;\n}, \"se_ResourcesToSkip\");\nvar se_ResourceToImport = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_RTes] != null) {\n entries[_RTes] = input[_RTes];\n }\n if (input[_LRI] != null) {\n entries[_LRI] = input[_LRI];\n }\n if (input[_RI] != null) {\n const memberEntries = se_ResourceIdentifierProperties(input[_RI], context);\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `ResourceIdentifier.${key}`;\n entries[loc] = value;\n });\n }\n return entries;\n}, \"se_ResourceToImport\");\nvar se_ResourceTypes = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n let counter = 1;\n for (const entry of input) {\n if (entry === null) {\n continue;\n }\n entries[`member.${counter}`] = entry;\n counter++;\n }\n return entries;\n}, \"se_ResourceTypes\");\nvar se_RetainResources = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n let counter = 1;\n for (const entry of input) {\n if (entry === null) {\n continue;\n }\n entries[`member.${counter}`] = entry;\n counter++;\n }\n return entries;\n}, \"se_RetainResources\");\nvar se_RollbackConfiguration = /* @__PURE__ */ __name((input, context) => {\n var _a;\n const entries = {};\n if (input[_RTo] != null) {\n const memberEntries = se_RollbackTriggers(input[_RTo], context);\n if (((_a = input[_RTo]) == null ? void 0 : _a.length) === 0) {\n entries.RollbackTriggers = [];\n }\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `RollbackTriggers.${key}`;\n entries[loc] = value;\n });\n }\n if (input[_MTIM] != null) {\n entries[_MTIM] = input[_MTIM];\n }\n return entries;\n}, \"se_RollbackConfiguration\");\nvar se_RollbackStackInput = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_SN] != null) {\n entries[_SN] = input[_SN];\n }\n if (input[_RARN] != null) {\n entries[_RARN] = input[_RARN];\n }\n if (input[_CRT] != null) {\n entries[_CRT] = input[_CRT];\n }\n if (input[_REOC] != null) {\n entries[_REOC] = input[_REOC];\n }\n return entries;\n}, \"se_RollbackStackInput\");\nvar se_RollbackTrigger = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_Ar] != null) {\n entries[_Ar] = input[_Ar];\n }\n if (input[_T] != null) {\n entries[_T] = input[_T];\n }\n return entries;\n}, \"se_RollbackTrigger\");\nvar se_RollbackTriggers = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n let counter = 1;\n for (const entry of input) {\n if (entry === null) {\n continue;\n }\n const memberEntries = se_RollbackTrigger(entry, context);\n Object.entries(memberEntries).forEach(([key, value]) => {\n entries[`member.${counter}.${key}`] = value;\n });\n counter++;\n }\n return entries;\n}, \"se_RollbackTriggers\");\nvar se_ScannedResourceIdentifier = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_RTes] != null) {\n entries[_RTes] = input[_RTes];\n }\n if (input[_RI] != null) {\n const memberEntries = se_JazzResourceIdentifierProperties(input[_RI], context);\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `ResourceIdentifier.${key}`;\n entries[loc] = value;\n });\n }\n return entries;\n}, \"se_ScannedResourceIdentifier\");\nvar se_ScannedResourceIdentifiers = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n let counter = 1;\n for (const entry of input) {\n if (entry === null) {\n continue;\n }\n const memberEntries = se_ScannedResourceIdentifier(entry, context);\n Object.entries(memberEntries).forEach(([key, value]) => {\n entries[`member.${counter}.${key}`] = value;\n });\n counter++;\n }\n return entries;\n}, \"se_ScannedResourceIdentifiers\");\nvar se_SetStackPolicyInput = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_SN] != null) {\n entries[_SN] = input[_SN];\n }\n if (input[_SPB] != null) {\n entries[_SPB] = input[_SPB];\n }\n if (input[_SPURL] != null) {\n entries[_SPURL] = input[_SPURL];\n }\n return entries;\n}, \"se_SetStackPolicyInput\");\nvar se_SetTypeConfigurationInput = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_TA] != null) {\n entries[_TA] = input[_TA];\n }\n if (input[_Co] != null) {\n entries[_Co] = input[_Co];\n }\n if (input[_CAon] != null) {\n entries[_CAon] = input[_CAon];\n }\n if (input[_TN] != null) {\n entries[_TN] = input[_TN];\n }\n if (input[_T] != null) {\n entries[_T] = input[_T];\n }\n return entries;\n}, \"se_SetTypeConfigurationInput\");\nvar se_SetTypeDefaultVersionInput = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_Ar] != null) {\n entries[_Ar] = input[_Ar];\n }\n if (input[_T] != null) {\n entries[_T] = input[_T];\n }\n if (input[_TN] != null) {\n entries[_TN] = input[_TN];\n }\n if (input[_VI] != null) {\n entries[_VI] = input[_VI];\n }\n return entries;\n}, \"se_SetTypeDefaultVersionInput\");\nvar se_SignalResourceInput = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_SN] != null) {\n entries[_SN] = input[_SN];\n }\n if (input[_LRI] != null) {\n entries[_LRI] = input[_LRI];\n }\n if (input[_UI] != null) {\n entries[_UI] = input[_UI];\n }\n if (input[_S] != null) {\n entries[_S] = input[_S];\n }\n return entries;\n}, \"se_SignalResourceInput\");\nvar se_StackIdList = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n let counter = 1;\n for (const entry of input) {\n if (entry === null) {\n continue;\n }\n entries[`member.${counter}`] = entry;\n counter++;\n }\n return entries;\n}, \"se_StackIdList\");\nvar se_StackInstanceFilter = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_N] != null) {\n entries[_N] = input[_N];\n }\n if (input[_Va] != null) {\n entries[_Va] = input[_Va];\n }\n return entries;\n}, \"se_StackInstanceFilter\");\nvar se_StackInstanceFilters = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n let counter = 1;\n for (const entry of input) {\n if (entry === null) {\n continue;\n }\n const memberEntries = se_StackInstanceFilter(entry, context);\n Object.entries(memberEntries).forEach(([key, value]) => {\n entries[`member.${counter}.${key}`] = value;\n });\n counter++;\n }\n return entries;\n}, \"se_StackInstanceFilters\");\nvar se_StackResourceDriftStatusFilters = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n let counter = 1;\n for (const entry of input) {\n if (entry === null) {\n continue;\n }\n entries[`member.${counter}`] = entry;\n counter++;\n }\n return entries;\n}, \"se_StackResourceDriftStatusFilters\");\nvar se_StackSetOperationPreferences = /* @__PURE__ */ __name((input, context) => {\n var _a;\n const entries = {};\n if (input[_RCT] != null) {\n entries[_RCT] = input[_RCT];\n }\n if (input[_RO] != null) {\n const memberEntries = se_RegionList(input[_RO], context);\n if (((_a = input[_RO]) == null ? void 0 : _a.length) === 0) {\n entries.RegionOrder = [];\n }\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `RegionOrder.${key}`;\n entries[loc] = value;\n });\n }\n if (input[_FTC] != null) {\n entries[_FTC] = input[_FTC];\n }\n if (input[_FTP] != null) {\n entries[_FTP] = input[_FTP];\n }\n if (input[_MCC] != null) {\n entries[_MCC] = input[_MCC];\n }\n if (input[_MCP] != null) {\n entries[_MCP] = input[_MCP];\n }\n if (input[_CM] != null) {\n entries[_CM] = input[_CM];\n }\n return entries;\n}, \"se_StackSetOperationPreferences\");\nvar se_StackStatusFilter = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n let counter = 1;\n for (const entry of input) {\n if (entry === null) {\n continue;\n }\n entries[`member.${counter}`] = entry;\n counter++;\n }\n return entries;\n}, \"se_StackStatusFilter\");\nvar se_StartResourceScanInput = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_CRT] != null) {\n entries[_CRT] = input[_CRT];\n }\n return entries;\n}, \"se_StartResourceScanInput\");\nvar se_StopStackSetOperationInput = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_SSN] != null) {\n entries[_SSN] = input[_SSN];\n }\n if (input[_OI] != null) {\n entries[_OI] = input[_OI];\n }\n if (input[_CA] != null) {\n entries[_CA] = input[_CA];\n }\n return entries;\n}, \"se_StopStackSetOperationInput\");\nvar se_Tag = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_K] != null) {\n entries[_K] = input[_K];\n }\n if (input[_Val] != null) {\n entries[_Val] = input[_Val];\n }\n return entries;\n}, \"se_Tag\");\nvar se_Tags = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n let counter = 1;\n for (const entry of input) {\n if (entry === null) {\n continue;\n }\n const memberEntries = se_Tag(entry, context);\n Object.entries(memberEntries).forEach(([key, value]) => {\n entries[`member.${counter}.${key}`] = value;\n });\n counter++;\n }\n return entries;\n}, \"se_Tags\");\nvar se_TemplateConfiguration = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_DPe] != null) {\n entries[_DPe] = input[_DPe];\n }\n if (input[_URP] != null) {\n entries[_URP] = input[_URP];\n }\n return entries;\n}, \"se_TemplateConfiguration\");\nvar se_TemplateSummaryConfig = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_TURTAW] != null) {\n entries[_TURTAW] = input[_TURTAW];\n }\n return entries;\n}, \"se_TemplateSummaryConfig\");\nvar se_TestTypeInput = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_Ar] != null) {\n entries[_Ar] = input[_Ar];\n }\n if (input[_T] != null) {\n entries[_T] = input[_T];\n }\n if (input[_TN] != null) {\n entries[_TN] = input[_TN];\n }\n if (input[_VI] != null) {\n entries[_VI] = input[_VI];\n }\n if (input[_LDB] != null) {\n entries[_LDB] = input[_LDB];\n }\n return entries;\n}, \"se_TestTypeInput\");\nvar se_TypeConfigurationIdentifier = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_TA] != null) {\n entries[_TA] = input[_TA];\n }\n if (input[_TCA] != null) {\n entries[_TCA] = input[_TCA];\n }\n if (input[_TCAy] != null) {\n entries[_TCAy] = input[_TCAy];\n }\n if (input[_T] != null) {\n entries[_T] = input[_T];\n }\n if (input[_TN] != null) {\n entries[_TN] = input[_TN];\n }\n return entries;\n}, \"se_TypeConfigurationIdentifier\");\nvar se_TypeConfigurationIdentifiers = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n let counter = 1;\n for (const entry of input) {\n if (entry === null) {\n continue;\n }\n const memberEntries = se_TypeConfigurationIdentifier(entry, context);\n Object.entries(memberEntries).forEach(([key, value]) => {\n entries[`member.${counter}.${key}`] = value;\n });\n counter++;\n }\n return entries;\n}, \"se_TypeConfigurationIdentifiers\");\nvar se_TypeFilters = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_Ca] != null) {\n entries[_Ca] = input[_Ca];\n }\n if (input[_PI] != null) {\n entries[_PI] = input[_PI];\n }\n if (input[_TNP] != null) {\n entries[_TNP] = input[_TNP];\n }\n return entries;\n}, \"se_TypeFilters\");\nvar se_UpdateGeneratedTemplateInput = /* @__PURE__ */ __name((input, context) => {\n var _a, _b;\n const entries = {};\n if (input[_GTN] != null) {\n entries[_GTN] = input[_GTN];\n }\n if (input[_NGTN] != null) {\n entries[_NGTN] = input[_NGTN];\n }\n if (input[_AR] != null) {\n const memberEntries = se_ResourceDefinitions(input[_AR], context);\n if (((_a = input[_AR]) == null ? void 0 : _a.length) === 0) {\n entries.AddResources = [];\n }\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `AddResources.${key}`;\n entries[loc] = value;\n });\n }\n if (input[_RRe] != null) {\n const memberEntries = se_JazzLogicalResourceIds(input[_RRe], context);\n if (((_b = input[_RRe]) == null ? void 0 : _b.length) === 0) {\n entries.RemoveResources = [];\n }\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `RemoveResources.${key}`;\n entries[loc] = value;\n });\n }\n if (input[_RAR] != null) {\n entries[_RAR] = input[_RAR];\n }\n if (input[_TC] != null) {\n const memberEntries = se_TemplateConfiguration(input[_TC], context);\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `TemplateConfiguration.${key}`;\n entries[loc] = value;\n });\n }\n return entries;\n}, \"se_UpdateGeneratedTemplateInput\");\nvar se_UpdateStackInput = /* @__PURE__ */ __name((input, context) => {\n var _a, _b, _c, _d, _e2;\n const entries = {};\n if (input[_SN] != null) {\n entries[_SN] = input[_SN];\n }\n if (input[_TB] != null) {\n entries[_TB] = input[_TB];\n }\n if (input[_TURL] != null) {\n entries[_TURL] = input[_TURL];\n }\n if (input[_UPT] != null) {\n entries[_UPT] = input[_UPT];\n }\n if (input[_SPDUB] != null) {\n entries[_SPDUB] = input[_SPDUB];\n }\n if (input[_SPDUURL] != null) {\n entries[_SPDUURL] = input[_SPDUURL];\n }\n if (input[_P] != null) {\n const memberEntries = se_Parameters(input[_P], context);\n if (((_a = input[_P]) == null ? void 0 : _a.length) === 0) {\n entries.Parameters = [];\n }\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `Parameters.${key}`;\n entries[loc] = value;\n });\n }\n if (input[_C] != null) {\n const memberEntries = se_Capabilities(input[_C], context);\n if (((_b = input[_C]) == null ? void 0 : _b.length) === 0) {\n entries.Capabilities = [];\n }\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `Capabilities.${key}`;\n entries[loc] = value;\n });\n }\n if (input[_RTe] != null) {\n const memberEntries = se_ResourceTypes(input[_RTe], context);\n if (((_c = input[_RTe]) == null ? void 0 : _c.length) === 0) {\n entries.ResourceTypes = [];\n }\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `ResourceTypes.${key}`;\n entries[loc] = value;\n });\n }\n if (input[_RARN] != null) {\n entries[_RARN] = input[_RARN];\n }\n if (input[_RC] != null) {\n const memberEntries = se_RollbackConfiguration(input[_RC], context);\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `RollbackConfiguration.${key}`;\n entries[loc] = value;\n });\n }\n if (input[_SPB] != null) {\n entries[_SPB] = input[_SPB];\n }\n if (input[_SPURL] != null) {\n entries[_SPURL] = input[_SPURL];\n }\n if (input[_NARN] != null) {\n const memberEntries = se_NotificationARNs(input[_NARN], context);\n if (((_d = input[_NARN]) == null ? void 0 : _d.length) === 0) {\n entries.NotificationARNs = [];\n }\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `NotificationARNs.${key}`;\n entries[loc] = value;\n });\n }\n if (input[_Ta] != null) {\n const memberEntries = se_Tags(input[_Ta], context);\n if (((_e2 = input[_Ta]) == null ? void 0 : _e2.length) === 0) {\n entries.Tags = [];\n }\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `Tags.${key}`;\n entries[loc] = value;\n });\n }\n if (input[_DR] != null) {\n entries[_DR] = input[_DR];\n }\n if (input[_CRT] != null) {\n entries[_CRT] = input[_CRT];\n }\n if (input[_REOC] != null) {\n entries[_REOC] = input[_REOC];\n }\n return entries;\n}, \"se_UpdateStackInput\");\nvar se_UpdateStackInstancesInput = /* @__PURE__ */ __name((input, context) => {\n var _a, _b, _c;\n const entries = {};\n if (input[_SSN] != null) {\n entries[_SSN] = input[_SSN];\n }\n if (input[_Ac] != null) {\n const memberEntries = se_AccountList(input[_Ac], context);\n if (((_a = input[_Ac]) == null ? void 0 : _a.length) === 0) {\n entries.Accounts = [];\n }\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `Accounts.${key}`;\n entries[loc] = value;\n });\n }\n if (input[_DTep] != null) {\n const memberEntries = se_DeploymentTargets(input[_DTep], context);\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `DeploymentTargets.${key}`;\n entries[loc] = value;\n });\n }\n if (input[_Re] != null) {\n const memberEntries = se_RegionList(input[_Re], context);\n if (((_b = input[_Re]) == null ? void 0 : _b.length) === 0) {\n entries.Regions = [];\n }\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `Regions.${key}`;\n entries[loc] = value;\n });\n }\n if (input[_PO] != null) {\n const memberEntries = se_Parameters(input[_PO], context);\n if (((_c = input[_PO]) == null ? void 0 : _c.length) === 0) {\n entries.ParameterOverrides = [];\n }\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `ParameterOverrides.${key}`;\n entries[loc] = value;\n });\n }\n if (input[_OP] != null) {\n const memberEntries = se_StackSetOperationPreferences(input[_OP], context);\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `OperationPreferences.${key}`;\n entries[loc] = value;\n });\n }\n if (input[_OI] === void 0) {\n input[_OI] = (0, import_uuid.v4)();\n }\n if (input[_OI] != null) {\n entries[_OI] = input[_OI];\n }\n if (input[_CA] != null) {\n entries[_CA] = input[_CA];\n }\n return entries;\n}, \"se_UpdateStackInstancesInput\");\nvar se_UpdateStackSetInput = /* @__PURE__ */ __name((input, context) => {\n var _a, _b, _c, _d, _e2;\n const entries = {};\n if (input[_SSN] != null) {\n entries[_SSN] = input[_SSN];\n }\n if (input[_D] != null) {\n entries[_D] = input[_D];\n }\n if (input[_TB] != null) {\n entries[_TB] = input[_TB];\n }\n if (input[_TURL] != null) {\n entries[_TURL] = input[_TURL];\n }\n if (input[_UPT] != null) {\n entries[_UPT] = input[_UPT];\n }\n if (input[_P] != null) {\n const memberEntries = se_Parameters(input[_P], context);\n if (((_a = input[_P]) == null ? void 0 : _a.length) === 0) {\n entries.Parameters = [];\n }\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `Parameters.${key}`;\n entries[loc] = value;\n });\n }\n if (input[_C] != null) {\n const memberEntries = se_Capabilities(input[_C], context);\n if (((_b = input[_C]) == null ? void 0 : _b.length) === 0) {\n entries.Capabilities = [];\n }\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `Capabilities.${key}`;\n entries[loc] = value;\n });\n }\n if (input[_Ta] != null) {\n const memberEntries = se_Tags(input[_Ta], context);\n if (((_c = input[_Ta]) == null ? void 0 : _c.length) === 0) {\n entries.Tags = [];\n }\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `Tags.${key}`;\n entries[loc] = value;\n });\n }\n if (input[_OP] != null) {\n const memberEntries = se_StackSetOperationPreferences(input[_OP], context);\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `OperationPreferences.${key}`;\n entries[loc] = value;\n });\n }\n if (input[_ARARN] != null) {\n entries[_ARARN] = input[_ARARN];\n }\n if (input[_ERN] != null) {\n entries[_ERN] = input[_ERN];\n }\n if (input[_DTep] != null) {\n const memberEntries = se_DeploymentTargets(input[_DTep], context);\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `DeploymentTargets.${key}`;\n entries[loc] = value;\n });\n }\n if (input[_PM] != null) {\n entries[_PM] = input[_PM];\n }\n if (input[_AD] != null) {\n const memberEntries = se_AutoDeployment(input[_AD], context);\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `AutoDeployment.${key}`;\n entries[loc] = value;\n });\n }\n if (input[_OI] === void 0) {\n input[_OI] = (0, import_uuid.v4)();\n }\n if (input[_OI] != null) {\n entries[_OI] = input[_OI];\n }\n if (input[_Ac] != null) {\n const memberEntries = se_AccountList(input[_Ac], context);\n if (((_d = input[_Ac]) == null ? void 0 : _d.length) === 0) {\n entries.Accounts = [];\n }\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `Accounts.${key}`;\n entries[loc] = value;\n });\n }\n if (input[_Re] != null) {\n const memberEntries = se_RegionList(input[_Re], context);\n if (((_e2 = input[_Re]) == null ? void 0 : _e2.length) === 0) {\n entries.Regions = [];\n }\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `Regions.${key}`;\n entries[loc] = value;\n });\n }\n if (input[_CA] != null) {\n entries[_CA] = input[_CA];\n }\n if (input[_ME] != null) {\n const memberEntries = se_ManagedExecution(input[_ME], context);\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `ManagedExecution.${key}`;\n entries[loc] = value;\n });\n }\n return entries;\n}, \"se_UpdateStackSetInput\");\nvar se_UpdateTerminationProtectionInput = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_ETP] != null) {\n entries[_ETP] = input[_ETP];\n }\n if (input[_SN] != null) {\n entries[_SN] = input[_SN];\n }\n return entries;\n}, \"se_UpdateTerminationProtectionInput\");\nvar se_ValidateTemplateInput = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_TB] != null) {\n entries[_TB] = input[_TB];\n }\n if (input[_TURL] != null) {\n entries[_TURL] = input[_TURL];\n }\n return entries;\n}, \"se_ValidateTemplateInput\");\nvar de_AccountGateResult = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_S] != null) {\n contents[_S] = (0, import_smithy_client.expectString)(output[_S]);\n }\n if (output[_SRt] != null) {\n contents[_SRt] = (0, import_smithy_client.expectString)(output[_SRt]);\n }\n return contents;\n}, \"de_AccountGateResult\");\nvar de_AccountLimit = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_N] != null) {\n contents[_N] = (0, import_smithy_client.expectString)(output[_N]);\n }\n if (output[_Val] != null) {\n contents[_Val] = (0, import_smithy_client.strictParseInt32)(output[_Val]);\n }\n return contents;\n}, \"de_AccountLimit\");\nvar de_AccountLimitList = /* @__PURE__ */ __name((output, context) => {\n return (output || []).filter((e) => e != null).map((entry) => {\n return de_AccountLimit(entry, context);\n });\n}, \"de_AccountLimitList\");\nvar de_AccountList = /* @__PURE__ */ __name((output, context) => {\n return (output || []).filter((e) => e != null).map((entry) => {\n return (0, import_smithy_client.expectString)(entry);\n });\n}, \"de_AccountList\");\nvar de_ActivateOrganizationsAccessOutput = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n return contents;\n}, \"de_ActivateOrganizationsAccessOutput\");\nvar de_ActivateTypeOutput = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_Ar] != null) {\n contents[_Ar] = (0, import_smithy_client.expectString)(output[_Ar]);\n }\n return contents;\n}, \"de_ActivateTypeOutput\");\nvar de_AllowedValues = /* @__PURE__ */ __name((output, context) => {\n return (output || []).filter((e) => e != null).map((entry) => {\n return (0, import_smithy_client.expectString)(entry);\n });\n}, \"de_AllowedValues\");\nvar de_AlreadyExistsException = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_M] != null) {\n contents[_M] = (0, import_smithy_client.expectString)(output[_M]);\n }\n return contents;\n}, \"de_AlreadyExistsException\");\nvar de_AutoDeployment = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_E] != null) {\n contents[_E] = (0, import_smithy_client.parseBoolean)(output[_E]);\n }\n if (output[_RSOAR] != null) {\n contents[_RSOAR] = (0, import_smithy_client.parseBoolean)(output[_RSOAR]);\n }\n return contents;\n}, \"de_AutoDeployment\");\nvar de_BatchDescribeTypeConfigurationsError = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_EC] != null) {\n contents[_EC] = (0, import_smithy_client.expectString)(output[_EC]);\n }\n if (output[_EM] != null) {\n contents[_EM] = (0, import_smithy_client.expectString)(output[_EM]);\n }\n if (output[_TCIy] != null) {\n contents[_TCIy] = de_TypeConfigurationIdentifier(output[_TCIy], context);\n }\n return contents;\n}, \"de_BatchDescribeTypeConfigurationsError\");\nvar de_BatchDescribeTypeConfigurationsErrors = /* @__PURE__ */ __name((output, context) => {\n return (output || []).filter((e) => e != null).map((entry) => {\n return de_BatchDescribeTypeConfigurationsError(entry, context);\n });\n}, \"de_BatchDescribeTypeConfigurationsErrors\");\nvar de_BatchDescribeTypeConfigurationsOutput = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output.Errors === \"\") {\n contents[_Er] = [];\n } else if (output[_Er] != null && output[_Er][_m] != null) {\n contents[_Er] = de_BatchDescribeTypeConfigurationsErrors((0, import_smithy_client.getArrayIfSingleItem)(output[_Er][_m]), context);\n }\n if (output.UnprocessedTypeConfigurations === \"\") {\n contents[_UTC] = [];\n } else if (output[_UTC] != null && output[_UTC][_m] != null) {\n contents[_UTC] = de_UnprocessedTypeConfigurations((0, import_smithy_client.getArrayIfSingleItem)(output[_UTC][_m]), context);\n }\n if (output.TypeConfigurations === \"\") {\n contents[_TCy] = [];\n } else if (output[_TCy] != null && output[_TCy][_m] != null) {\n contents[_TCy] = de_TypeConfigurationDetailsList((0, import_smithy_client.getArrayIfSingleItem)(output[_TCy][_m]), context);\n }\n return contents;\n}, \"de_BatchDescribeTypeConfigurationsOutput\");\nvar de_Capabilities = /* @__PURE__ */ __name((output, context) => {\n return (output || []).filter((e) => e != null).map((entry) => {\n return (0, import_smithy_client.expectString)(entry);\n });\n}, \"de_Capabilities\");\nvar de_CFNRegistryException = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_M] != null) {\n contents[_M] = (0, import_smithy_client.expectString)(output[_M]);\n }\n return contents;\n}, \"de_CFNRegistryException\");\nvar de_Change = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_T] != null) {\n contents[_T] = (0, import_smithy_client.expectString)(output[_T]);\n }\n if (output[_HIC] != null) {\n contents[_HIC] = (0, import_smithy_client.strictParseInt32)(output[_HIC]);\n }\n if (output[_RCe] != null) {\n contents[_RCe] = de_ResourceChange(output[_RCe], context);\n }\n return contents;\n}, \"de_Change\");\nvar de_Changes = /* @__PURE__ */ __name((output, context) => {\n return (output || []).filter((e) => e != null).map((entry) => {\n return de_Change(entry, context);\n });\n}, \"de_Changes\");\nvar de_ChangeSetHook = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_IP] != null) {\n contents[_IP] = (0, import_smithy_client.expectString)(output[_IP]);\n }\n if (output[_FM] != null) {\n contents[_FM] = (0, import_smithy_client.expectString)(output[_FM]);\n }\n if (output[_TN] != null) {\n contents[_TN] = (0, import_smithy_client.expectString)(output[_TN]);\n }\n if (output[_TVI] != null) {\n contents[_TVI] = (0, import_smithy_client.expectString)(output[_TVI]);\n }\n if (output[_TCVI] != null) {\n contents[_TCVI] = (0, import_smithy_client.expectString)(output[_TCVI]);\n }\n if (output[_TD] != null) {\n contents[_TD] = de_ChangeSetHookTargetDetails(output[_TD], context);\n }\n return contents;\n}, \"de_ChangeSetHook\");\nvar de_ChangeSetHookResourceTargetDetails = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_LRI] != null) {\n contents[_LRI] = (0, import_smithy_client.expectString)(output[_LRI]);\n }\n if (output[_RTes] != null) {\n contents[_RTes] = (0, import_smithy_client.expectString)(output[_RTes]);\n }\n if (output[_RA] != null) {\n contents[_RA] = (0, import_smithy_client.expectString)(output[_RA]);\n }\n return contents;\n}, \"de_ChangeSetHookResourceTargetDetails\");\nvar de_ChangeSetHooks = /* @__PURE__ */ __name((output, context) => {\n return (output || []).filter((e) => e != null).map((entry) => {\n return de_ChangeSetHook(entry, context);\n });\n}, \"de_ChangeSetHooks\");\nvar de_ChangeSetHookTargetDetails = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_TTa] != null) {\n contents[_TTa] = (0, import_smithy_client.expectString)(output[_TTa]);\n }\n if (output[_RTD] != null) {\n contents[_RTD] = de_ChangeSetHookResourceTargetDetails(output[_RTD], context);\n }\n return contents;\n}, \"de_ChangeSetHookTargetDetails\");\nvar de_ChangeSetNotFoundException = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_M] != null) {\n contents[_M] = (0, import_smithy_client.expectString)(output[_M]);\n }\n return contents;\n}, \"de_ChangeSetNotFoundException\");\nvar de_ChangeSetSummaries = /* @__PURE__ */ __name((output, context) => {\n return (output || []).filter((e) => e != null).map((entry) => {\n return de_ChangeSetSummary(entry, context);\n });\n}, \"de_ChangeSetSummaries\");\nvar de_ChangeSetSummary = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_SI] != null) {\n contents[_SI] = (0, import_smithy_client.expectString)(output[_SI]);\n }\n if (output[_SN] != null) {\n contents[_SN] = (0, import_smithy_client.expectString)(output[_SN]);\n }\n if (output[_CSIh] != null) {\n contents[_CSIh] = (0, import_smithy_client.expectString)(output[_CSIh]);\n }\n if (output[_CSN] != null) {\n contents[_CSN] = (0, import_smithy_client.expectString)(output[_CSN]);\n }\n if (output[_ES] != null) {\n contents[_ES] = (0, import_smithy_client.expectString)(output[_ES]);\n }\n if (output[_S] != null) {\n contents[_S] = (0, import_smithy_client.expectString)(output[_S]);\n }\n if (output[_SRt] != null) {\n contents[_SRt] = (0, import_smithy_client.expectString)(output[_SRt]);\n }\n if (output[_CTr] != null) {\n contents[_CTr] = (0, import_smithy_client.expectNonNull)((0, import_smithy_client.parseRfc3339DateTimeWithOffset)(output[_CTr]));\n }\n if (output[_D] != null) {\n contents[_D] = (0, import_smithy_client.expectString)(output[_D]);\n }\n if (output[_INS] != null) {\n contents[_INS] = (0, import_smithy_client.parseBoolean)(output[_INS]);\n }\n if (output[_PCSI] != null) {\n contents[_PCSI] = (0, import_smithy_client.expectString)(output[_PCSI]);\n }\n if (output[_RCSI] != null) {\n contents[_RCSI] = (0, import_smithy_client.expectString)(output[_RCSI]);\n }\n if (output[_IER] != null) {\n contents[_IER] = (0, import_smithy_client.parseBoolean)(output[_IER]);\n }\n return contents;\n}, \"de_ChangeSetSummary\");\nvar de_ConcurrentResourcesLimitExceededException = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_M] != null) {\n contents[_M] = (0, import_smithy_client.expectString)(output[_M]);\n }\n return contents;\n}, \"de_ConcurrentResourcesLimitExceededException\");\nvar de_ContinueUpdateRollbackOutput = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n return contents;\n}, \"de_ContinueUpdateRollbackOutput\");\nvar de_CreateChangeSetOutput = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_I] != null) {\n contents[_I] = (0, import_smithy_client.expectString)(output[_I]);\n }\n if (output[_SI] != null) {\n contents[_SI] = (0, import_smithy_client.expectString)(output[_SI]);\n }\n return contents;\n}, \"de_CreateChangeSetOutput\");\nvar de_CreatedButModifiedException = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_M] != null) {\n contents[_M] = (0, import_smithy_client.expectString)(output[_M]);\n }\n return contents;\n}, \"de_CreatedButModifiedException\");\nvar de_CreateGeneratedTemplateOutput = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_GTI] != null) {\n contents[_GTI] = (0, import_smithy_client.expectString)(output[_GTI]);\n }\n return contents;\n}, \"de_CreateGeneratedTemplateOutput\");\nvar de_CreateStackInstancesOutput = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_OI] != null) {\n contents[_OI] = (0, import_smithy_client.expectString)(output[_OI]);\n }\n return contents;\n}, \"de_CreateStackInstancesOutput\");\nvar de_CreateStackOutput = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_SI] != null) {\n contents[_SI] = (0, import_smithy_client.expectString)(output[_SI]);\n }\n return contents;\n}, \"de_CreateStackOutput\");\nvar de_CreateStackSetOutput = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_SSI] != null) {\n contents[_SSI] = (0, import_smithy_client.expectString)(output[_SSI]);\n }\n return contents;\n}, \"de_CreateStackSetOutput\");\nvar de_DeactivateOrganizationsAccessOutput = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n return contents;\n}, \"de_DeactivateOrganizationsAccessOutput\");\nvar de_DeactivateTypeOutput = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n return contents;\n}, \"de_DeactivateTypeOutput\");\nvar de_DeleteChangeSetOutput = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n return contents;\n}, \"de_DeleteChangeSetOutput\");\nvar de_DeleteStackInstancesOutput = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_OI] != null) {\n contents[_OI] = (0, import_smithy_client.expectString)(output[_OI]);\n }\n return contents;\n}, \"de_DeleteStackInstancesOutput\");\nvar de_DeleteStackSetOutput = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n return contents;\n}, \"de_DeleteStackSetOutput\");\nvar de_DeploymentTargets = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output.Accounts === \"\") {\n contents[_Ac] = [];\n } else if (output[_Ac] != null && output[_Ac][_m] != null) {\n contents[_Ac] = de_AccountList((0, import_smithy_client.getArrayIfSingleItem)(output[_Ac][_m]), context);\n }\n if (output[_AUc] != null) {\n contents[_AUc] = (0, import_smithy_client.expectString)(output[_AUc]);\n }\n if (output.OrganizationalUnitIds === \"\") {\n contents[_OUI] = [];\n } else if (output[_OUI] != null && output[_OUI][_m] != null) {\n contents[_OUI] = de_OrganizationalUnitIdList((0, import_smithy_client.getArrayIfSingleItem)(output[_OUI][_m]), context);\n }\n if (output[_AFT] != null) {\n contents[_AFT] = (0, import_smithy_client.expectString)(output[_AFT]);\n }\n return contents;\n}, \"de_DeploymentTargets\");\nvar de_DeregisterTypeOutput = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n return contents;\n}, \"de_DeregisterTypeOutput\");\nvar de_DescribeAccountLimitsOutput = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output.AccountLimits === \"\") {\n contents[_AL] = [];\n } else if (output[_AL] != null && output[_AL][_m] != null) {\n contents[_AL] = de_AccountLimitList((0, import_smithy_client.getArrayIfSingleItem)(output[_AL][_m]), context);\n }\n if (output[_NT] != null) {\n contents[_NT] = (0, import_smithy_client.expectString)(output[_NT]);\n }\n return contents;\n}, \"de_DescribeAccountLimitsOutput\");\nvar de_DescribeChangeSetHooksOutput = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_CSIh] != null) {\n contents[_CSIh] = (0, import_smithy_client.expectString)(output[_CSIh]);\n }\n if (output[_CSN] != null) {\n contents[_CSN] = (0, import_smithy_client.expectString)(output[_CSN]);\n }\n if (output.Hooks === \"\") {\n contents[_H] = [];\n } else if (output[_H] != null && output[_H][_m] != null) {\n contents[_H] = de_ChangeSetHooks((0, import_smithy_client.getArrayIfSingleItem)(output[_H][_m]), context);\n }\n if (output[_S] != null) {\n contents[_S] = (0, import_smithy_client.expectString)(output[_S]);\n }\n if (output[_NT] != null) {\n contents[_NT] = (0, import_smithy_client.expectString)(output[_NT]);\n }\n if (output[_SI] != null) {\n contents[_SI] = (0, import_smithy_client.expectString)(output[_SI]);\n }\n if (output[_SN] != null) {\n contents[_SN] = (0, import_smithy_client.expectString)(output[_SN]);\n }\n return contents;\n}, \"de_DescribeChangeSetHooksOutput\");\nvar de_DescribeChangeSetOutput = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_CSN] != null) {\n contents[_CSN] = (0, import_smithy_client.expectString)(output[_CSN]);\n }\n if (output[_CSIh] != null) {\n contents[_CSIh] = (0, import_smithy_client.expectString)(output[_CSIh]);\n }\n if (output[_SI] != null) {\n contents[_SI] = (0, import_smithy_client.expectString)(output[_SI]);\n }\n if (output[_SN] != null) {\n contents[_SN] = (0, import_smithy_client.expectString)(output[_SN]);\n }\n if (output[_D] != null) {\n contents[_D] = (0, import_smithy_client.expectString)(output[_D]);\n }\n if (output.Parameters === \"\") {\n contents[_P] = [];\n } else if (output[_P] != null && output[_P][_m] != null) {\n contents[_P] = de_Parameters((0, import_smithy_client.getArrayIfSingleItem)(output[_P][_m]), context);\n }\n if (output[_CTr] != null) {\n contents[_CTr] = (0, import_smithy_client.expectNonNull)((0, import_smithy_client.parseRfc3339DateTimeWithOffset)(output[_CTr]));\n }\n if (output[_ES] != null) {\n contents[_ES] = (0, import_smithy_client.expectString)(output[_ES]);\n }\n if (output[_S] != null) {\n contents[_S] = (0, import_smithy_client.expectString)(output[_S]);\n }\n if (output[_SRt] != null) {\n contents[_SRt] = (0, import_smithy_client.expectString)(output[_SRt]);\n }\n if (output.NotificationARNs === \"\") {\n contents[_NARN] = [];\n } else if (output[_NARN] != null && output[_NARN][_m] != null) {\n contents[_NARN] = de_NotificationARNs((0, import_smithy_client.getArrayIfSingleItem)(output[_NARN][_m]), context);\n }\n if (output[_RC] != null) {\n contents[_RC] = de_RollbackConfiguration(output[_RC], context);\n }\n if (output.Capabilities === \"\") {\n contents[_C] = [];\n } else if (output[_C] != null && output[_C][_m] != null) {\n contents[_C] = de_Capabilities((0, import_smithy_client.getArrayIfSingleItem)(output[_C][_m]), context);\n }\n if (output.Tags === \"\") {\n contents[_Ta] = [];\n } else if (output[_Ta] != null && output[_Ta][_m] != null) {\n contents[_Ta] = de_Tags((0, import_smithy_client.getArrayIfSingleItem)(output[_Ta][_m]), context);\n }\n if (output.Changes === \"\") {\n contents[_Ch] = [];\n } else if (output[_Ch] != null && output[_Ch][_m] != null) {\n contents[_Ch] = de_Changes((0, import_smithy_client.getArrayIfSingleItem)(output[_Ch][_m]), context);\n }\n if (output[_NT] != null) {\n contents[_NT] = (0, import_smithy_client.expectString)(output[_NT]);\n }\n if (output[_INS] != null) {\n contents[_INS] = (0, import_smithy_client.parseBoolean)(output[_INS]);\n }\n if (output[_PCSI] != null) {\n contents[_PCSI] = (0, import_smithy_client.expectString)(output[_PCSI]);\n }\n if (output[_RCSI] != null) {\n contents[_RCSI] = (0, import_smithy_client.expectString)(output[_RCSI]);\n }\n if (output[_OSF] != null) {\n contents[_OSF] = (0, import_smithy_client.expectString)(output[_OSF]);\n }\n if (output[_IER] != null) {\n contents[_IER] = (0, import_smithy_client.parseBoolean)(output[_IER]);\n }\n return contents;\n}, \"de_DescribeChangeSetOutput\");\nvar de_DescribeGeneratedTemplateOutput = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_GTI] != null) {\n contents[_GTI] = (0, import_smithy_client.expectString)(output[_GTI]);\n }\n if (output[_GTN] != null) {\n contents[_GTN] = (0, import_smithy_client.expectString)(output[_GTN]);\n }\n if (output.Resources === \"\") {\n contents[_R] = [];\n } else if (output[_R] != null && output[_R][_m] != null) {\n contents[_R] = de_ResourceDetails((0, import_smithy_client.getArrayIfSingleItem)(output[_R][_m]), context);\n }\n if (output[_S] != null) {\n contents[_S] = (0, import_smithy_client.expectString)(output[_S]);\n }\n if (output[_SRt] != null) {\n contents[_SRt] = (0, import_smithy_client.expectString)(output[_SRt]);\n }\n if (output[_CTr] != null) {\n contents[_CTr] = (0, import_smithy_client.expectNonNull)((0, import_smithy_client.parseRfc3339DateTimeWithOffset)(output[_CTr]));\n }\n if (output[_LUT] != null) {\n contents[_LUT] = (0, import_smithy_client.expectNonNull)((0, import_smithy_client.parseRfc3339DateTimeWithOffset)(output[_LUT]));\n }\n if (output[_Pr] != null) {\n contents[_Pr] = de_TemplateProgress(output[_Pr], context);\n }\n if (output[_SI] != null) {\n contents[_SI] = (0, import_smithy_client.expectString)(output[_SI]);\n }\n if (output[_TC] != null) {\n contents[_TC] = de_TemplateConfiguration(output[_TC], context);\n }\n if (output[_TW] != null) {\n contents[_TW] = (0, import_smithy_client.strictParseInt32)(output[_TW]);\n }\n return contents;\n}, \"de_DescribeGeneratedTemplateOutput\");\nvar de_DescribeOrganizationsAccessOutput = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_S] != null) {\n contents[_S] = (0, import_smithy_client.expectString)(output[_S]);\n }\n return contents;\n}, \"de_DescribeOrganizationsAccessOutput\");\nvar de_DescribePublisherOutput = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_PI] != null) {\n contents[_PI] = (0, import_smithy_client.expectString)(output[_PI]);\n }\n if (output[_PS] != null) {\n contents[_PS] = (0, import_smithy_client.expectString)(output[_PS]);\n }\n if (output[_IPd] != null) {\n contents[_IPd] = (0, import_smithy_client.expectString)(output[_IPd]);\n }\n if (output[_PP] != null) {\n contents[_PP] = (0, import_smithy_client.expectString)(output[_PP]);\n }\n return contents;\n}, \"de_DescribePublisherOutput\");\nvar de_DescribeResourceScanOutput = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_RSI] != null) {\n contents[_RSI] = (0, import_smithy_client.expectString)(output[_RSI]);\n }\n if (output[_S] != null) {\n contents[_S] = (0, import_smithy_client.expectString)(output[_S]);\n }\n if (output[_SRt] != null) {\n contents[_SRt] = (0, import_smithy_client.expectString)(output[_SRt]);\n }\n if (output[_ST] != null) {\n contents[_ST] = (0, import_smithy_client.expectNonNull)((0, import_smithy_client.parseRfc3339DateTimeWithOffset)(output[_ST]));\n }\n if (output[_ET] != null) {\n contents[_ET] = (0, import_smithy_client.expectNonNull)((0, import_smithy_client.parseRfc3339DateTimeWithOffset)(output[_ET]));\n }\n if (output[_PC] != null) {\n contents[_PC] = (0, import_smithy_client.strictParseFloat)(output[_PC]);\n }\n if (output.ResourceTypes === \"\") {\n contents[_RTe] = [];\n } else if (output[_RTe] != null && output[_RTe][_m] != null) {\n contents[_RTe] = de_ResourceTypes((0, import_smithy_client.getArrayIfSingleItem)(output[_RTe][_m]), context);\n }\n if (output[_RSes] != null) {\n contents[_RSes] = (0, import_smithy_client.strictParseInt32)(output[_RSes]);\n }\n if (output[_RRes] != null) {\n contents[_RRes] = (0, import_smithy_client.strictParseInt32)(output[_RRes]);\n }\n return contents;\n}, \"de_DescribeResourceScanOutput\");\nvar de_DescribeStackDriftDetectionStatusOutput = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_SI] != null) {\n contents[_SI] = (0, import_smithy_client.expectString)(output[_SI]);\n }\n if (output[_SDDI] != null) {\n contents[_SDDI] = (0, import_smithy_client.expectString)(output[_SDDI]);\n }\n if (output[_SDS] != null) {\n contents[_SDS] = (0, import_smithy_client.expectString)(output[_SDS]);\n }\n if (output[_DSet] != null) {\n contents[_DSet] = (0, import_smithy_client.expectString)(output[_DSet]);\n }\n if (output[_DSRet] != null) {\n contents[_DSRet] = (0, import_smithy_client.expectString)(output[_DSRet]);\n }\n if (output[_DSRC] != null) {\n contents[_DSRC] = (0, import_smithy_client.strictParseInt32)(output[_DSRC]);\n }\n if (output[_Ti] != null) {\n contents[_Ti] = (0, import_smithy_client.expectNonNull)((0, import_smithy_client.parseRfc3339DateTimeWithOffset)(output[_Ti]));\n }\n return contents;\n}, \"de_DescribeStackDriftDetectionStatusOutput\");\nvar de_DescribeStackEventsOutput = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output.StackEvents === \"\") {\n contents[_SE] = [];\n } else if (output[_SE] != null && output[_SE][_m] != null) {\n contents[_SE] = de_StackEvents((0, import_smithy_client.getArrayIfSingleItem)(output[_SE][_m]), context);\n }\n if (output[_NT] != null) {\n contents[_NT] = (0, import_smithy_client.expectString)(output[_NT]);\n }\n return contents;\n}, \"de_DescribeStackEventsOutput\");\nvar de_DescribeStackInstanceOutput = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_SIta] != null) {\n contents[_SIta] = de_StackInstance(output[_SIta], context);\n }\n return contents;\n}, \"de_DescribeStackInstanceOutput\");\nvar de_DescribeStackResourceDriftsOutput = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output.StackResourceDrifts === \"\") {\n contents[_SRD] = [];\n } else if (output[_SRD] != null && output[_SRD][_m] != null) {\n contents[_SRD] = de_StackResourceDrifts((0, import_smithy_client.getArrayIfSingleItem)(output[_SRD][_m]), context);\n }\n if (output[_NT] != null) {\n contents[_NT] = (0, import_smithy_client.expectString)(output[_NT]);\n }\n return contents;\n}, \"de_DescribeStackResourceDriftsOutput\");\nvar de_DescribeStackResourceOutput = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_SRDt] != null) {\n contents[_SRDt] = de_StackResourceDetail(output[_SRDt], context);\n }\n return contents;\n}, \"de_DescribeStackResourceOutput\");\nvar de_DescribeStackResourcesOutput = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output.StackResources === \"\") {\n contents[_SRta] = [];\n } else if (output[_SRta] != null && output[_SRta][_m] != null) {\n contents[_SRta] = de_StackResources((0, import_smithy_client.getArrayIfSingleItem)(output[_SRta][_m]), context);\n }\n return contents;\n}, \"de_DescribeStackResourcesOutput\");\nvar de_DescribeStackSetOperationOutput = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_SSO] != null) {\n contents[_SSO] = de_StackSetOperation(output[_SSO], context);\n }\n return contents;\n}, \"de_DescribeStackSetOperationOutput\");\nvar de_DescribeStackSetOutput = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_SS] != null) {\n contents[_SS] = de_StackSet(output[_SS], context);\n }\n return contents;\n}, \"de_DescribeStackSetOutput\");\nvar de_DescribeStacksOutput = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output.Stacks === \"\") {\n contents[_St] = [];\n } else if (output[_St] != null && output[_St][_m] != null) {\n contents[_St] = de_Stacks((0, import_smithy_client.getArrayIfSingleItem)(output[_St][_m]), context);\n }\n if (output[_NT] != null) {\n contents[_NT] = (0, import_smithy_client.expectString)(output[_NT]);\n }\n return contents;\n}, \"de_DescribeStacksOutput\");\nvar de_DescribeTypeOutput = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_Ar] != null) {\n contents[_Ar] = (0, import_smithy_client.expectString)(output[_Ar]);\n }\n if (output[_T] != null) {\n contents[_T] = (0, import_smithy_client.expectString)(output[_T]);\n }\n if (output[_TN] != null) {\n contents[_TN] = (0, import_smithy_client.expectString)(output[_TN]);\n }\n if (output[_DVI] != null) {\n contents[_DVI] = (0, import_smithy_client.expectString)(output[_DVI]);\n }\n if (output[_IDV] != null) {\n contents[_IDV] = (0, import_smithy_client.parseBoolean)(output[_IDV]);\n }\n if (output[_TTS] != null) {\n contents[_TTS] = (0, import_smithy_client.expectString)(output[_TTS]);\n }\n if (output[_TTSD] != null) {\n contents[_TTSD] = (0, import_smithy_client.expectString)(output[_TTSD]);\n }\n if (output[_D] != null) {\n contents[_D] = (0, import_smithy_client.expectString)(output[_D]);\n }\n if (output[_Sc] != null) {\n contents[_Sc] = (0, import_smithy_client.expectString)(output[_Sc]);\n }\n if (output[_PTr] != null) {\n contents[_PTr] = (0, import_smithy_client.expectString)(output[_PTr]);\n }\n if (output[_DSep] != null) {\n contents[_DSep] = (0, import_smithy_client.expectString)(output[_DSep]);\n }\n if (output[_LC] != null) {\n contents[_LC] = de_LoggingConfig(output[_LC], context);\n }\n if (output.RequiredActivatedTypes === \"\") {\n contents[_RAT] = [];\n } else if (output[_RAT] != null && output[_RAT][_m] != null) {\n contents[_RAT] = de_RequiredActivatedTypes((0, import_smithy_client.getArrayIfSingleItem)(output[_RAT][_m]), context);\n }\n if (output[_ERA] != null) {\n contents[_ERA] = (0, import_smithy_client.expectString)(output[_ERA]);\n }\n if (output[_Vi] != null) {\n contents[_Vi] = (0, import_smithy_client.expectString)(output[_Vi]);\n }\n if (output[_SU] != null) {\n contents[_SU] = (0, import_smithy_client.expectString)(output[_SU]);\n }\n if (output[_DU] != null) {\n contents[_DU] = (0, import_smithy_client.expectString)(output[_DU]);\n }\n if (output[_LU] != null) {\n contents[_LU] = (0, import_smithy_client.expectNonNull)((0, import_smithy_client.parseRfc3339DateTimeWithOffset)(output[_LU]));\n }\n if (output[_TCi] != null) {\n contents[_TCi] = (0, import_smithy_client.expectNonNull)((0, import_smithy_client.parseRfc3339DateTimeWithOffset)(output[_TCi]));\n }\n if (output[_CSo] != null) {\n contents[_CSo] = (0, import_smithy_client.expectString)(output[_CSo]);\n }\n if (output[_PI] != null) {\n contents[_PI] = (0, import_smithy_client.expectString)(output[_PI]);\n }\n if (output[_OTN] != null) {\n contents[_OTN] = (0, import_smithy_client.expectString)(output[_OTN]);\n }\n if (output[_OTA] != null) {\n contents[_OTA] = (0, import_smithy_client.expectString)(output[_OTA]);\n }\n if (output[_PVN] != null) {\n contents[_PVN] = (0, import_smithy_client.expectString)(output[_PVN]);\n }\n if (output[_LPV] != null) {\n contents[_LPV] = (0, import_smithy_client.expectString)(output[_LPV]);\n }\n if (output[_IA] != null) {\n contents[_IA] = (0, import_smithy_client.parseBoolean)(output[_IA]);\n }\n if (output[_AU] != null) {\n contents[_AU] = (0, import_smithy_client.parseBoolean)(output[_AU]);\n }\n return contents;\n}, \"de_DescribeTypeOutput\");\nvar de_DescribeTypeRegistrationOutput = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_PSr] != null) {\n contents[_PSr] = (0, import_smithy_client.expectString)(output[_PSr]);\n }\n if (output[_D] != null) {\n contents[_D] = (0, import_smithy_client.expectString)(output[_D]);\n }\n if (output[_TA] != null) {\n contents[_TA] = (0, import_smithy_client.expectString)(output[_TA]);\n }\n if (output[_TVA] != null) {\n contents[_TVA] = (0, import_smithy_client.expectString)(output[_TVA]);\n }\n return contents;\n}, \"de_DescribeTypeRegistrationOutput\");\nvar de_DetectStackDriftOutput = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_SDDI] != null) {\n contents[_SDDI] = (0, import_smithy_client.expectString)(output[_SDDI]);\n }\n return contents;\n}, \"de_DetectStackDriftOutput\");\nvar de_DetectStackResourceDriftOutput = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_SRDta] != null) {\n contents[_SRDta] = de_StackResourceDrift(output[_SRDta], context);\n }\n return contents;\n}, \"de_DetectStackResourceDriftOutput\");\nvar de_DetectStackSetDriftOutput = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_OI] != null) {\n contents[_OI] = (0, import_smithy_client.expectString)(output[_OI]);\n }\n return contents;\n}, \"de_DetectStackSetDriftOutput\");\nvar de_EstimateTemplateCostOutput = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_U] != null) {\n contents[_U] = (0, import_smithy_client.expectString)(output[_U]);\n }\n return contents;\n}, \"de_EstimateTemplateCostOutput\");\nvar de_ExecuteChangeSetOutput = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n return contents;\n}, \"de_ExecuteChangeSetOutput\");\nvar de_Export = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_ESI] != null) {\n contents[_ESI] = (0, import_smithy_client.expectString)(output[_ESI]);\n }\n if (output[_N] != null) {\n contents[_N] = (0, import_smithy_client.expectString)(output[_N]);\n }\n if (output[_Val] != null) {\n contents[_Val] = (0, import_smithy_client.expectString)(output[_Val]);\n }\n return contents;\n}, \"de_Export\");\nvar de_Exports = /* @__PURE__ */ __name((output, context) => {\n return (output || []).filter((e) => e != null).map((entry) => {\n return de_Export(entry, context);\n });\n}, \"de_Exports\");\nvar de_GeneratedTemplateNotFoundException = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_M] != null) {\n contents[_M] = (0, import_smithy_client.expectString)(output[_M]);\n }\n return contents;\n}, \"de_GeneratedTemplateNotFoundException\");\nvar de_GetGeneratedTemplateOutput = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_S] != null) {\n contents[_S] = (0, import_smithy_client.expectString)(output[_S]);\n }\n if (output[_TB] != null) {\n contents[_TB] = (0, import_smithy_client.expectString)(output[_TB]);\n }\n return contents;\n}, \"de_GetGeneratedTemplateOutput\");\nvar de_GetStackPolicyOutput = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_SPB] != null) {\n contents[_SPB] = (0, import_smithy_client.expectString)(output[_SPB]);\n }\n return contents;\n}, \"de_GetStackPolicyOutput\");\nvar de_GetTemplateOutput = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_TB] != null) {\n contents[_TB] = (0, import_smithy_client.expectString)(output[_TB]);\n }\n if (output.StagesAvailable === \"\") {\n contents[_SA] = [];\n } else if (output[_SA] != null && output[_SA][_m] != null) {\n contents[_SA] = de_StageList((0, import_smithy_client.getArrayIfSingleItem)(output[_SA][_m]), context);\n }\n return contents;\n}, \"de_GetTemplateOutput\");\nvar de_GetTemplateSummaryOutput = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output.Parameters === \"\") {\n contents[_P] = [];\n } else if (output[_P] != null && output[_P][_m] != null) {\n contents[_P] = de_ParameterDeclarations((0, import_smithy_client.getArrayIfSingleItem)(output[_P][_m]), context);\n }\n if (output[_D] != null) {\n contents[_D] = (0, import_smithy_client.expectString)(output[_D]);\n }\n if (output.Capabilities === \"\") {\n contents[_C] = [];\n } else if (output[_C] != null && output[_C][_m] != null) {\n contents[_C] = de_Capabilities((0, import_smithy_client.getArrayIfSingleItem)(output[_C][_m]), context);\n }\n if (output[_CR] != null) {\n contents[_CR] = (0, import_smithy_client.expectString)(output[_CR]);\n }\n if (output.ResourceTypes === \"\") {\n contents[_RTe] = [];\n } else if (output[_RTe] != null && output[_RTe][_m] != null) {\n contents[_RTe] = de_ResourceTypes((0, import_smithy_client.getArrayIfSingleItem)(output[_RTe][_m]), context);\n }\n if (output[_V] != null) {\n contents[_V] = (0, import_smithy_client.expectString)(output[_V]);\n }\n if (output[_Me] != null) {\n contents[_Me] = (0, import_smithy_client.expectString)(output[_Me]);\n }\n if (output.DeclaredTransforms === \"\") {\n contents[_DTec] = [];\n } else if (output[_DTec] != null && output[_DTec][_m] != null) {\n contents[_DTec] = de_TransformsList((0, import_smithy_client.getArrayIfSingleItem)(output[_DTec][_m]), context);\n }\n if (output.ResourceIdentifierSummaries === \"\") {\n contents[_RIS] = [];\n } else if (output[_RIS] != null && output[_RIS][_m] != null) {\n contents[_RIS] = de_ResourceIdentifierSummaries((0, import_smithy_client.getArrayIfSingleItem)(output[_RIS][_m]), context);\n }\n if (output[_W] != null) {\n contents[_W] = de_Warnings(output[_W], context);\n }\n return contents;\n}, \"de_GetTemplateSummaryOutput\");\nvar de_Imports = /* @__PURE__ */ __name((output, context) => {\n return (output || []).filter((e) => e != null).map((entry) => {\n return (0, import_smithy_client.expectString)(entry);\n });\n}, \"de_Imports\");\nvar de_ImportStacksToStackSetOutput = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_OI] != null) {\n contents[_OI] = (0, import_smithy_client.expectString)(output[_OI]);\n }\n return contents;\n}, \"de_ImportStacksToStackSetOutput\");\nvar de_InsufficientCapabilitiesException = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_M] != null) {\n contents[_M] = (0, import_smithy_client.expectString)(output[_M]);\n }\n return contents;\n}, \"de_InsufficientCapabilitiesException\");\nvar de_InvalidChangeSetStatusException = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_M] != null) {\n contents[_M] = (0, import_smithy_client.expectString)(output[_M]);\n }\n return contents;\n}, \"de_InvalidChangeSetStatusException\");\nvar de_InvalidOperationException = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_M] != null) {\n contents[_M] = (0, import_smithy_client.expectString)(output[_M]);\n }\n return contents;\n}, \"de_InvalidOperationException\");\nvar de_InvalidStateTransitionException = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_M] != null) {\n contents[_M] = (0, import_smithy_client.expectString)(output[_M]);\n }\n return contents;\n}, \"de_InvalidStateTransitionException\");\nvar de_JazzResourceIdentifierProperties = /* @__PURE__ */ __name((output, context) => {\n return output.reduce((acc, pair) => {\n if (pair[\"value\"] === null) {\n return acc;\n }\n acc[pair[\"key\"]] = (0, import_smithy_client.expectString)(pair[\"value\"]);\n return acc;\n }, {});\n}, \"de_JazzResourceIdentifierProperties\");\nvar de_LimitExceededException = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_M] != null) {\n contents[_M] = (0, import_smithy_client.expectString)(output[_M]);\n }\n return contents;\n}, \"de_LimitExceededException\");\nvar de_ListChangeSetsOutput = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output.Summaries === \"\") {\n contents[_Su] = [];\n } else if (output[_Su] != null && output[_Su][_m] != null) {\n contents[_Su] = de_ChangeSetSummaries((0, import_smithy_client.getArrayIfSingleItem)(output[_Su][_m]), context);\n }\n if (output[_NT] != null) {\n contents[_NT] = (0, import_smithy_client.expectString)(output[_NT]);\n }\n return contents;\n}, \"de_ListChangeSetsOutput\");\nvar de_ListExportsOutput = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output.Exports === \"\") {\n contents[_Ex] = [];\n } else if (output[_Ex] != null && output[_Ex][_m] != null) {\n contents[_Ex] = de_Exports((0, import_smithy_client.getArrayIfSingleItem)(output[_Ex][_m]), context);\n }\n if (output[_NT] != null) {\n contents[_NT] = (0, import_smithy_client.expectString)(output[_NT]);\n }\n return contents;\n}, \"de_ListExportsOutput\");\nvar de_ListGeneratedTemplatesOutput = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output.Summaries === \"\") {\n contents[_Su] = [];\n } else if (output[_Su] != null && output[_Su][_m] != null) {\n contents[_Su] = de_TemplateSummaries((0, import_smithy_client.getArrayIfSingleItem)(output[_Su][_m]), context);\n }\n if (output[_NT] != null) {\n contents[_NT] = (0, import_smithy_client.expectString)(output[_NT]);\n }\n return contents;\n}, \"de_ListGeneratedTemplatesOutput\");\nvar de_ListImportsOutput = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output.Imports === \"\") {\n contents[_Im] = [];\n } else if (output[_Im] != null && output[_Im][_m] != null) {\n contents[_Im] = de_Imports((0, import_smithy_client.getArrayIfSingleItem)(output[_Im][_m]), context);\n }\n if (output[_NT] != null) {\n contents[_NT] = (0, import_smithy_client.expectString)(output[_NT]);\n }\n return contents;\n}, \"de_ListImportsOutput\");\nvar de_ListResourceScanRelatedResourcesOutput = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output.RelatedResources === \"\") {\n contents[_RRel] = [];\n } else if (output[_RRel] != null && output[_RRel][_m] != null) {\n contents[_RRel] = de_RelatedResources((0, import_smithy_client.getArrayIfSingleItem)(output[_RRel][_m]), context);\n }\n if (output[_NT] != null) {\n contents[_NT] = (0, import_smithy_client.expectString)(output[_NT]);\n }\n return contents;\n}, \"de_ListResourceScanRelatedResourcesOutput\");\nvar de_ListResourceScanResourcesOutput = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output.Resources === \"\") {\n contents[_R] = [];\n } else if (output[_R] != null && output[_R][_m] != null) {\n contents[_R] = de_ScannedResources((0, import_smithy_client.getArrayIfSingleItem)(output[_R][_m]), context);\n }\n if (output[_NT] != null) {\n contents[_NT] = (0, import_smithy_client.expectString)(output[_NT]);\n }\n return contents;\n}, \"de_ListResourceScanResourcesOutput\");\nvar de_ListResourceScansOutput = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output.ResourceScanSummaries === \"\") {\n contents[_RSS] = [];\n } else if (output[_RSS] != null && output[_RSS][_m] != null) {\n contents[_RSS] = de_ResourceScanSummaries((0, import_smithy_client.getArrayIfSingleItem)(output[_RSS][_m]), context);\n }\n if (output[_NT] != null) {\n contents[_NT] = (0, import_smithy_client.expectString)(output[_NT]);\n }\n return contents;\n}, \"de_ListResourceScansOutput\");\nvar de_ListStackInstanceResourceDriftsOutput = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output.Summaries === \"\") {\n contents[_Su] = [];\n } else if (output[_Su] != null && output[_Su][_m] != null) {\n contents[_Su] = de_StackInstanceResourceDriftsSummaries((0, import_smithy_client.getArrayIfSingleItem)(output[_Su][_m]), context);\n }\n if (output[_NT] != null) {\n contents[_NT] = (0, import_smithy_client.expectString)(output[_NT]);\n }\n return contents;\n}, \"de_ListStackInstanceResourceDriftsOutput\");\nvar de_ListStackInstancesOutput = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output.Summaries === \"\") {\n contents[_Su] = [];\n } else if (output[_Su] != null && output[_Su][_m] != null) {\n contents[_Su] = de_StackInstanceSummaries((0, import_smithy_client.getArrayIfSingleItem)(output[_Su][_m]), context);\n }\n if (output[_NT] != null) {\n contents[_NT] = (0, import_smithy_client.expectString)(output[_NT]);\n }\n return contents;\n}, \"de_ListStackInstancesOutput\");\nvar de_ListStackResourcesOutput = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output.StackResourceSummaries === \"\") {\n contents[_SRSt] = [];\n } else if (output[_SRSt] != null && output[_SRSt][_m] != null) {\n contents[_SRSt] = de_StackResourceSummaries((0, import_smithy_client.getArrayIfSingleItem)(output[_SRSt][_m]), context);\n }\n if (output[_NT] != null) {\n contents[_NT] = (0, import_smithy_client.expectString)(output[_NT]);\n }\n return contents;\n}, \"de_ListStackResourcesOutput\");\nvar de_ListStackSetAutoDeploymentTargetsOutput = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output.Summaries === \"\") {\n contents[_Su] = [];\n } else if (output[_Su] != null && output[_Su][_m] != null) {\n contents[_Su] = de_StackSetAutoDeploymentTargetSummaries((0, import_smithy_client.getArrayIfSingleItem)(output[_Su][_m]), context);\n }\n if (output[_NT] != null) {\n contents[_NT] = (0, import_smithy_client.expectString)(output[_NT]);\n }\n return contents;\n}, \"de_ListStackSetAutoDeploymentTargetsOutput\");\nvar de_ListStackSetOperationResultsOutput = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output.Summaries === \"\") {\n contents[_Su] = [];\n } else if (output[_Su] != null && output[_Su][_m] != null) {\n contents[_Su] = de_StackSetOperationResultSummaries((0, import_smithy_client.getArrayIfSingleItem)(output[_Su][_m]), context);\n }\n if (output[_NT] != null) {\n contents[_NT] = (0, import_smithy_client.expectString)(output[_NT]);\n }\n return contents;\n}, \"de_ListStackSetOperationResultsOutput\");\nvar de_ListStackSetOperationsOutput = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output.Summaries === \"\") {\n contents[_Su] = [];\n } else if (output[_Su] != null && output[_Su][_m] != null) {\n contents[_Su] = de_StackSetOperationSummaries((0, import_smithy_client.getArrayIfSingleItem)(output[_Su][_m]), context);\n }\n if (output[_NT] != null) {\n contents[_NT] = (0, import_smithy_client.expectString)(output[_NT]);\n }\n return contents;\n}, \"de_ListStackSetOperationsOutput\");\nvar de_ListStackSetsOutput = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output.Summaries === \"\") {\n contents[_Su] = [];\n } else if (output[_Su] != null && output[_Su][_m] != null) {\n contents[_Su] = de_StackSetSummaries((0, import_smithy_client.getArrayIfSingleItem)(output[_Su][_m]), context);\n }\n if (output[_NT] != null) {\n contents[_NT] = (0, import_smithy_client.expectString)(output[_NT]);\n }\n return contents;\n}, \"de_ListStackSetsOutput\");\nvar de_ListStacksOutput = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output.StackSummaries === \"\") {\n contents[_SSt] = [];\n } else if (output[_SSt] != null && output[_SSt][_m] != null) {\n contents[_SSt] = de_StackSummaries((0, import_smithy_client.getArrayIfSingleItem)(output[_SSt][_m]), context);\n }\n if (output[_NT] != null) {\n contents[_NT] = (0, import_smithy_client.expectString)(output[_NT]);\n }\n return contents;\n}, \"de_ListStacksOutput\");\nvar de_ListTypeRegistrationsOutput = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output.RegistrationTokenList === \"\") {\n contents[_RTL] = [];\n } else if (output[_RTL] != null && output[_RTL][_m] != null) {\n contents[_RTL] = de_RegistrationTokenList((0, import_smithy_client.getArrayIfSingleItem)(output[_RTL][_m]), context);\n }\n if (output[_NT] != null) {\n contents[_NT] = (0, import_smithy_client.expectString)(output[_NT]);\n }\n return contents;\n}, \"de_ListTypeRegistrationsOutput\");\nvar de_ListTypesOutput = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output.TypeSummaries === \"\") {\n contents[_TSy] = [];\n } else if (output[_TSy] != null && output[_TSy][_m] != null) {\n contents[_TSy] = de_TypeSummaries((0, import_smithy_client.getArrayIfSingleItem)(output[_TSy][_m]), context);\n }\n if (output[_NT] != null) {\n contents[_NT] = (0, import_smithy_client.expectString)(output[_NT]);\n }\n return contents;\n}, \"de_ListTypesOutput\");\nvar de_ListTypeVersionsOutput = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output.TypeVersionSummaries === \"\") {\n contents[_TVS] = [];\n } else if (output[_TVS] != null && output[_TVS][_m] != null) {\n contents[_TVS] = de_TypeVersionSummaries((0, import_smithy_client.getArrayIfSingleItem)(output[_TVS][_m]), context);\n }\n if (output[_NT] != null) {\n contents[_NT] = (0, import_smithy_client.expectString)(output[_NT]);\n }\n return contents;\n}, \"de_ListTypeVersionsOutput\");\nvar de_LoggingConfig = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_LRA] != null) {\n contents[_LRA] = (0, import_smithy_client.expectString)(output[_LRA]);\n }\n if (output[_LGN] != null) {\n contents[_LGN] = (0, import_smithy_client.expectString)(output[_LGN]);\n }\n return contents;\n}, \"de_LoggingConfig\");\nvar de_LogicalResourceIds = /* @__PURE__ */ __name((output, context) => {\n return (output || []).filter((e) => e != null).map((entry) => {\n return (0, import_smithy_client.expectString)(entry);\n });\n}, \"de_LogicalResourceIds\");\nvar de_ManagedExecution = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_Act] != null) {\n contents[_Act] = (0, import_smithy_client.parseBoolean)(output[_Act]);\n }\n return contents;\n}, \"de_ManagedExecution\");\nvar de_ModuleInfo = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_TH] != null) {\n contents[_TH] = (0, import_smithy_client.expectString)(output[_TH]);\n }\n if (output[_LIH] != null) {\n contents[_LIH] = (0, import_smithy_client.expectString)(output[_LIH]);\n }\n return contents;\n}, \"de_ModuleInfo\");\nvar de_NameAlreadyExistsException = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_M] != null) {\n contents[_M] = (0, import_smithy_client.expectString)(output[_M]);\n }\n return contents;\n}, \"de_NameAlreadyExistsException\");\nvar de_NotificationARNs = /* @__PURE__ */ __name((output, context) => {\n return (output || []).filter((e) => e != null).map((entry) => {\n return (0, import_smithy_client.expectString)(entry);\n });\n}, \"de_NotificationARNs\");\nvar de_OperationIdAlreadyExistsException = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_M] != null) {\n contents[_M] = (0, import_smithy_client.expectString)(output[_M]);\n }\n return contents;\n}, \"de_OperationIdAlreadyExistsException\");\nvar de_OperationInProgressException = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_M] != null) {\n contents[_M] = (0, import_smithy_client.expectString)(output[_M]);\n }\n return contents;\n}, \"de_OperationInProgressException\");\nvar de_OperationNotFoundException = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_M] != null) {\n contents[_M] = (0, import_smithy_client.expectString)(output[_M]);\n }\n return contents;\n}, \"de_OperationNotFoundException\");\nvar de_OperationStatusCheckFailedException = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_M] != null) {\n contents[_M] = (0, import_smithy_client.expectString)(output[_M]);\n }\n return contents;\n}, \"de_OperationStatusCheckFailedException\");\nvar de_OrganizationalUnitIdList = /* @__PURE__ */ __name((output, context) => {\n return (output || []).filter((e) => e != null).map((entry) => {\n return (0, import_smithy_client.expectString)(entry);\n });\n}, \"de_OrganizationalUnitIdList\");\nvar de_Output = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_OK] != null) {\n contents[_OK] = (0, import_smithy_client.expectString)(output[_OK]);\n }\n if (output[_OV] != null) {\n contents[_OV] = (0, import_smithy_client.expectString)(output[_OV]);\n }\n if (output[_D] != null) {\n contents[_D] = (0, import_smithy_client.expectString)(output[_D]);\n }\n if (output[_EN] != null) {\n contents[_EN] = (0, import_smithy_client.expectString)(output[_EN]);\n }\n return contents;\n}, \"de_Output\");\nvar de_Outputs = /* @__PURE__ */ __name((output, context) => {\n return (output || []).filter((e) => e != null).map((entry) => {\n return de_Output(entry, context);\n });\n}, \"de_Outputs\");\nvar de_Parameter = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_PK] != null) {\n contents[_PK] = (0, import_smithy_client.expectString)(output[_PK]);\n }\n if (output[_PV] != null) {\n contents[_PV] = (0, import_smithy_client.expectString)(output[_PV]);\n }\n if (output[_UPV] != null) {\n contents[_UPV] = (0, import_smithy_client.parseBoolean)(output[_UPV]);\n }\n if (output[_RV] != null) {\n contents[_RV] = (0, import_smithy_client.expectString)(output[_RV]);\n }\n return contents;\n}, \"de_Parameter\");\nvar de_ParameterConstraints = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output.AllowedValues === \"\") {\n contents[_AV] = [];\n } else if (output[_AV] != null && output[_AV][_m] != null) {\n contents[_AV] = de_AllowedValues((0, import_smithy_client.getArrayIfSingleItem)(output[_AV][_m]), context);\n }\n return contents;\n}, \"de_ParameterConstraints\");\nvar de_ParameterDeclaration = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_PK] != null) {\n contents[_PK] = (0, import_smithy_client.expectString)(output[_PK]);\n }\n if (output[_DV] != null) {\n contents[_DV] = (0, import_smithy_client.expectString)(output[_DV]);\n }\n if (output[_PTa] != null) {\n contents[_PTa] = (0, import_smithy_client.expectString)(output[_PTa]);\n }\n if (output[_NE] != null) {\n contents[_NE] = (0, import_smithy_client.parseBoolean)(output[_NE]);\n }\n if (output[_D] != null) {\n contents[_D] = (0, import_smithy_client.expectString)(output[_D]);\n }\n if (output[_PCa] != null) {\n contents[_PCa] = de_ParameterConstraints(output[_PCa], context);\n }\n return contents;\n}, \"de_ParameterDeclaration\");\nvar de_ParameterDeclarations = /* @__PURE__ */ __name((output, context) => {\n return (output || []).filter((e) => e != null).map((entry) => {\n return de_ParameterDeclaration(entry, context);\n });\n}, \"de_ParameterDeclarations\");\nvar de_Parameters = /* @__PURE__ */ __name((output, context) => {\n return (output || []).filter((e) => e != null).map((entry) => {\n return de_Parameter(entry, context);\n });\n}, \"de_Parameters\");\nvar de_PhysicalResourceIdContext = /* @__PURE__ */ __name((output, context) => {\n return (output || []).filter((e) => e != null).map((entry) => {\n return de_PhysicalResourceIdContextKeyValuePair(entry, context);\n });\n}, \"de_PhysicalResourceIdContext\");\nvar de_PhysicalResourceIdContextKeyValuePair = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_K] != null) {\n contents[_K] = (0, import_smithy_client.expectString)(output[_K]);\n }\n if (output[_Val] != null) {\n contents[_Val] = (0, import_smithy_client.expectString)(output[_Val]);\n }\n return contents;\n}, \"de_PhysicalResourceIdContextKeyValuePair\");\nvar de_PropertyDifference = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_PPr] != null) {\n contents[_PPr] = (0, import_smithy_client.expectString)(output[_PPr]);\n }\n if (output[_EV] != null) {\n contents[_EV] = (0, import_smithy_client.expectString)(output[_EV]);\n }\n if (output[_AVc] != null) {\n contents[_AVc] = (0, import_smithy_client.expectString)(output[_AVc]);\n }\n if (output[_DTi] != null) {\n contents[_DTi] = (0, import_smithy_client.expectString)(output[_DTi]);\n }\n return contents;\n}, \"de_PropertyDifference\");\nvar de_PropertyDifferences = /* @__PURE__ */ __name((output, context) => {\n return (output || []).filter((e) => e != null).map((entry) => {\n return de_PropertyDifference(entry, context);\n });\n}, \"de_PropertyDifferences\");\nvar de_PublishTypeOutput = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_PTA] != null) {\n contents[_PTA] = (0, import_smithy_client.expectString)(output[_PTA]);\n }\n return contents;\n}, \"de_PublishTypeOutput\");\nvar de_RecordHandlerProgressOutput = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n return contents;\n}, \"de_RecordHandlerProgressOutput\");\nvar de_RegionList = /* @__PURE__ */ __name((output, context) => {\n return (output || []).filter((e) => e != null).map((entry) => {\n return (0, import_smithy_client.expectString)(entry);\n });\n}, \"de_RegionList\");\nvar de_RegisterPublisherOutput = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_PI] != null) {\n contents[_PI] = (0, import_smithy_client.expectString)(output[_PI]);\n }\n return contents;\n}, \"de_RegisterPublisherOutput\");\nvar de_RegisterTypeOutput = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_RTeg] != null) {\n contents[_RTeg] = (0, import_smithy_client.expectString)(output[_RTeg]);\n }\n return contents;\n}, \"de_RegisterTypeOutput\");\nvar de_RegistrationTokenList = /* @__PURE__ */ __name((output, context) => {\n return (output || []).filter((e) => e != null).map((entry) => {\n return (0, import_smithy_client.expectString)(entry);\n });\n}, \"de_RegistrationTokenList\");\nvar de_RelatedResources = /* @__PURE__ */ __name((output, context) => {\n return (output || []).filter((e) => e != null).map((entry) => {\n return de_ScannedResource(entry, context);\n });\n}, \"de_RelatedResources\");\nvar de_RequiredActivatedType = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_TNA] != null) {\n contents[_TNA] = (0, import_smithy_client.expectString)(output[_TNA]);\n }\n if (output[_OTN] != null) {\n contents[_OTN] = (0, import_smithy_client.expectString)(output[_OTN]);\n }\n if (output[_PI] != null) {\n contents[_PI] = (0, import_smithy_client.expectString)(output[_PI]);\n }\n if (output.SupportedMajorVersions === \"\") {\n contents[_SMV] = [];\n } else if (output[_SMV] != null && output[_SMV][_m] != null) {\n contents[_SMV] = de_SupportedMajorVersions((0, import_smithy_client.getArrayIfSingleItem)(output[_SMV][_m]), context);\n }\n return contents;\n}, \"de_RequiredActivatedType\");\nvar de_RequiredActivatedTypes = /* @__PURE__ */ __name((output, context) => {\n return (output || []).filter((e) => e != null).map((entry) => {\n return de_RequiredActivatedType(entry, context);\n });\n}, \"de_RequiredActivatedTypes\");\nvar de_ResourceChange = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_PA] != null) {\n contents[_PA] = (0, import_smithy_client.expectString)(output[_PA]);\n }\n if (output[_A] != null) {\n contents[_A] = (0, import_smithy_client.expectString)(output[_A]);\n }\n if (output[_LRI] != null) {\n contents[_LRI] = (0, import_smithy_client.expectString)(output[_LRI]);\n }\n if (output[_PRI] != null) {\n contents[_PRI] = (0, import_smithy_client.expectString)(output[_PRI]);\n }\n if (output[_RTes] != null) {\n contents[_RTes] = (0, import_smithy_client.expectString)(output[_RTes]);\n }\n if (output[_Rep] != null) {\n contents[_Rep] = (0, import_smithy_client.expectString)(output[_Rep]);\n }\n if (output.Scope === \"\") {\n contents[_Sco] = [];\n } else if (output[_Sco] != null && output[_Sco][_m] != null) {\n contents[_Sco] = de_Scope((0, import_smithy_client.getArrayIfSingleItem)(output[_Sco][_m]), context);\n }\n if (output.Details === \"\") {\n contents[_De] = [];\n } else if (output[_De] != null && output[_De][_m] != null) {\n contents[_De] = de_ResourceChangeDetails((0, import_smithy_client.getArrayIfSingleItem)(output[_De][_m]), context);\n }\n if (output[_CSIh] != null) {\n contents[_CSIh] = (0, import_smithy_client.expectString)(output[_CSIh]);\n }\n if (output[_MI] != null) {\n contents[_MI] = de_ModuleInfo(output[_MI], context);\n }\n if (output[_BC] != null) {\n contents[_BC] = (0, import_smithy_client.expectString)(output[_BC]);\n }\n if (output[_AC] != null) {\n contents[_AC] = (0, import_smithy_client.expectString)(output[_AC]);\n }\n return contents;\n}, \"de_ResourceChange\");\nvar de_ResourceChangeDetail = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_Tar] != null) {\n contents[_Tar] = de_ResourceTargetDefinition(output[_Tar], context);\n }\n if (output[_Ev] != null) {\n contents[_Ev] = (0, import_smithy_client.expectString)(output[_Ev]);\n }\n if (output[_CSh] != null) {\n contents[_CSh] = (0, import_smithy_client.expectString)(output[_CSh]);\n }\n if (output[_CE] != null) {\n contents[_CE] = (0, import_smithy_client.expectString)(output[_CE]);\n }\n return contents;\n}, \"de_ResourceChangeDetail\");\nvar de_ResourceChangeDetails = /* @__PURE__ */ __name((output, context) => {\n return (output || []).filter((e) => e != null).map((entry) => {\n return de_ResourceChangeDetail(entry, context);\n });\n}, \"de_ResourceChangeDetails\");\nvar de_ResourceDetail = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_RTes] != null) {\n contents[_RTes] = (0, import_smithy_client.expectString)(output[_RTes]);\n }\n if (output[_LRI] != null) {\n contents[_LRI] = (0, import_smithy_client.expectString)(output[_LRI]);\n }\n if (output.ResourceIdentifier === \"\") {\n contents[_RI] = {};\n } else if (output[_RI] != null && output[_RI][_e] != null) {\n contents[_RI] = de_ResourceIdentifierProperties((0, import_smithy_client.getArrayIfSingleItem)(output[_RI][_e]), context);\n }\n if (output[_RSeso] != null) {\n contents[_RSeso] = (0, import_smithy_client.expectString)(output[_RSeso]);\n }\n if (output[_RSR] != null) {\n contents[_RSR] = (0, import_smithy_client.expectString)(output[_RSR]);\n }\n if (output.Warnings === \"\") {\n contents[_W] = [];\n } else if (output[_W] != null && output[_W][_m] != null) {\n contents[_W] = de_WarningDetails((0, import_smithy_client.getArrayIfSingleItem)(output[_W][_m]), context);\n }\n return contents;\n}, \"de_ResourceDetail\");\nvar de_ResourceDetails = /* @__PURE__ */ __name((output, context) => {\n return (output || []).filter((e) => e != null).map((entry) => {\n return de_ResourceDetail(entry, context);\n });\n}, \"de_ResourceDetails\");\nvar de_ResourceIdentifierProperties = /* @__PURE__ */ __name((output, context) => {\n return output.reduce((acc, pair) => {\n if (pair[\"value\"] === null) {\n return acc;\n }\n acc[pair[\"key\"]] = (0, import_smithy_client.expectString)(pair[\"value\"]);\n return acc;\n }, {});\n}, \"de_ResourceIdentifierProperties\");\nvar de_ResourceIdentifiers = /* @__PURE__ */ __name((output, context) => {\n return (output || []).filter((e) => e != null).map((entry) => {\n return (0, import_smithy_client.expectString)(entry);\n });\n}, \"de_ResourceIdentifiers\");\nvar de_ResourceIdentifierSummaries = /* @__PURE__ */ __name((output, context) => {\n return (output || []).filter((e) => e != null).map((entry) => {\n return de_ResourceIdentifierSummary(entry, context);\n });\n}, \"de_ResourceIdentifierSummaries\");\nvar de_ResourceIdentifierSummary = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_RTes] != null) {\n contents[_RTes] = (0, import_smithy_client.expectString)(output[_RTes]);\n }\n if (output.LogicalResourceIds === \"\") {\n contents[_LRIo] = [];\n } else if (output[_LRIo] != null && output[_LRIo][_m] != null) {\n contents[_LRIo] = de_LogicalResourceIds((0, import_smithy_client.getArrayIfSingleItem)(output[_LRIo][_m]), context);\n }\n if (output.ResourceIdentifiers === \"\") {\n contents[_RIe] = [];\n } else if (output[_RIe] != null && output[_RIe][_m] != null) {\n contents[_RIe] = de_ResourceIdentifiers((0, import_smithy_client.getArrayIfSingleItem)(output[_RIe][_m]), context);\n }\n return contents;\n}, \"de_ResourceIdentifierSummary\");\nvar de_ResourceScanInProgressException = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_M] != null) {\n contents[_M] = (0, import_smithy_client.expectString)(output[_M]);\n }\n return contents;\n}, \"de_ResourceScanInProgressException\");\nvar de_ResourceScanLimitExceededException = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_M] != null) {\n contents[_M] = (0, import_smithy_client.expectString)(output[_M]);\n }\n return contents;\n}, \"de_ResourceScanLimitExceededException\");\nvar de_ResourceScanNotFoundException = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_M] != null) {\n contents[_M] = (0, import_smithy_client.expectString)(output[_M]);\n }\n return contents;\n}, \"de_ResourceScanNotFoundException\");\nvar de_ResourceScanSummaries = /* @__PURE__ */ __name((output, context) => {\n return (output || []).filter((e) => e != null).map((entry) => {\n return de_ResourceScanSummary(entry, context);\n });\n}, \"de_ResourceScanSummaries\");\nvar de_ResourceScanSummary = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_RSI] != null) {\n contents[_RSI] = (0, import_smithy_client.expectString)(output[_RSI]);\n }\n if (output[_S] != null) {\n contents[_S] = (0, import_smithy_client.expectString)(output[_S]);\n }\n if (output[_SRt] != null) {\n contents[_SRt] = (0, import_smithy_client.expectString)(output[_SRt]);\n }\n if (output[_ST] != null) {\n contents[_ST] = (0, import_smithy_client.expectNonNull)((0, import_smithy_client.parseRfc3339DateTimeWithOffset)(output[_ST]));\n }\n if (output[_ET] != null) {\n contents[_ET] = (0, import_smithy_client.expectNonNull)((0, import_smithy_client.parseRfc3339DateTimeWithOffset)(output[_ET]));\n }\n if (output[_PC] != null) {\n contents[_PC] = (0, import_smithy_client.strictParseFloat)(output[_PC]);\n }\n return contents;\n}, \"de_ResourceScanSummary\");\nvar de_ResourceTargetDefinition = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_At] != null) {\n contents[_At] = (0, import_smithy_client.expectString)(output[_At]);\n }\n if (output[_N] != null) {\n contents[_N] = (0, import_smithy_client.expectString)(output[_N]);\n }\n if (output[_RReq] != null) {\n contents[_RReq] = (0, import_smithy_client.expectString)(output[_RReq]);\n }\n if (output[_Pa] != null) {\n contents[_Pa] = (0, import_smithy_client.expectString)(output[_Pa]);\n }\n if (output[_BV] != null) {\n contents[_BV] = (0, import_smithy_client.expectString)(output[_BV]);\n }\n if (output[_AVf] != null) {\n contents[_AVf] = (0, import_smithy_client.expectString)(output[_AVf]);\n }\n if (output[_ACT] != null) {\n contents[_ACT] = (0, import_smithy_client.expectString)(output[_ACT]);\n }\n return contents;\n}, \"de_ResourceTargetDefinition\");\nvar de_ResourceTypes = /* @__PURE__ */ __name((output, context) => {\n return (output || []).filter((e) => e != null).map((entry) => {\n return (0, import_smithy_client.expectString)(entry);\n });\n}, \"de_ResourceTypes\");\nvar de_RollbackConfiguration = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output.RollbackTriggers === \"\") {\n contents[_RTo] = [];\n } else if (output[_RTo] != null && output[_RTo][_m] != null) {\n contents[_RTo] = de_RollbackTriggers((0, import_smithy_client.getArrayIfSingleItem)(output[_RTo][_m]), context);\n }\n if (output[_MTIM] != null) {\n contents[_MTIM] = (0, import_smithy_client.strictParseInt32)(output[_MTIM]);\n }\n return contents;\n}, \"de_RollbackConfiguration\");\nvar de_RollbackStackOutput = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_SI] != null) {\n contents[_SI] = (0, import_smithy_client.expectString)(output[_SI]);\n }\n return contents;\n}, \"de_RollbackStackOutput\");\nvar de_RollbackTrigger = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_Ar] != null) {\n contents[_Ar] = (0, import_smithy_client.expectString)(output[_Ar]);\n }\n if (output[_T] != null) {\n contents[_T] = (0, import_smithy_client.expectString)(output[_T]);\n }\n return contents;\n}, \"de_RollbackTrigger\");\nvar de_RollbackTriggers = /* @__PURE__ */ __name((output, context) => {\n return (output || []).filter((e) => e != null).map((entry) => {\n return de_RollbackTrigger(entry, context);\n });\n}, \"de_RollbackTriggers\");\nvar de_ScannedResource = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_RTes] != null) {\n contents[_RTes] = (0, import_smithy_client.expectString)(output[_RTes]);\n }\n if (output.ResourceIdentifier === \"\") {\n contents[_RI] = {};\n } else if (output[_RI] != null && output[_RI][_e] != null) {\n contents[_RI] = de_JazzResourceIdentifierProperties((0, import_smithy_client.getArrayIfSingleItem)(output[_RI][_e]), context);\n }\n if (output[_MBS] != null) {\n contents[_MBS] = (0, import_smithy_client.parseBoolean)(output[_MBS]);\n }\n return contents;\n}, \"de_ScannedResource\");\nvar de_ScannedResources = /* @__PURE__ */ __name((output, context) => {\n return (output || []).filter((e) => e != null).map((entry) => {\n return de_ScannedResource(entry, context);\n });\n}, \"de_ScannedResources\");\nvar de_Scope = /* @__PURE__ */ __name((output, context) => {\n return (output || []).filter((e) => e != null).map((entry) => {\n return (0, import_smithy_client.expectString)(entry);\n });\n}, \"de_Scope\");\nvar de_SetTypeConfigurationOutput = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_CAonf] != null) {\n contents[_CAonf] = (0, import_smithy_client.expectString)(output[_CAonf]);\n }\n return contents;\n}, \"de_SetTypeConfigurationOutput\");\nvar de_SetTypeDefaultVersionOutput = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n return contents;\n}, \"de_SetTypeDefaultVersionOutput\");\nvar de_Stack = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_SI] != null) {\n contents[_SI] = (0, import_smithy_client.expectString)(output[_SI]);\n }\n if (output[_SN] != null) {\n contents[_SN] = (0, import_smithy_client.expectString)(output[_SN]);\n }\n if (output[_CSIh] != null) {\n contents[_CSIh] = (0, import_smithy_client.expectString)(output[_CSIh]);\n }\n if (output[_D] != null) {\n contents[_D] = (0, import_smithy_client.expectString)(output[_D]);\n }\n if (output.Parameters === \"\") {\n contents[_P] = [];\n } else if (output[_P] != null && output[_P][_m] != null) {\n contents[_P] = de_Parameters((0, import_smithy_client.getArrayIfSingleItem)(output[_P][_m]), context);\n }\n if (output[_CTr] != null) {\n contents[_CTr] = (0, import_smithy_client.expectNonNull)((0, import_smithy_client.parseRfc3339DateTimeWithOffset)(output[_CTr]));\n }\n if (output[_DTel] != null) {\n contents[_DTel] = (0, import_smithy_client.expectNonNull)((0, import_smithy_client.parseRfc3339DateTimeWithOffset)(output[_DTel]));\n }\n if (output[_LUT] != null) {\n contents[_LUT] = (0, import_smithy_client.expectNonNull)((0, import_smithy_client.parseRfc3339DateTimeWithOffset)(output[_LUT]));\n }\n if (output[_RC] != null) {\n contents[_RC] = de_RollbackConfiguration(output[_RC], context);\n }\n if (output[_SSta] != null) {\n contents[_SSta] = (0, import_smithy_client.expectString)(output[_SSta]);\n }\n if (output[_SSR] != null) {\n contents[_SSR] = (0, import_smithy_client.expectString)(output[_SSR]);\n }\n if (output[_DR] != null) {\n contents[_DR] = (0, import_smithy_client.parseBoolean)(output[_DR]);\n }\n if (output.NotificationARNs === \"\") {\n contents[_NARN] = [];\n } else if (output[_NARN] != null && output[_NARN][_m] != null) {\n contents[_NARN] = de_NotificationARNs((0, import_smithy_client.getArrayIfSingleItem)(output[_NARN][_m]), context);\n }\n if (output[_TIM] != null) {\n contents[_TIM] = (0, import_smithy_client.strictParseInt32)(output[_TIM]);\n }\n if (output.Capabilities === \"\") {\n contents[_C] = [];\n } else if (output[_C] != null && output[_C][_m] != null) {\n contents[_C] = de_Capabilities((0, import_smithy_client.getArrayIfSingleItem)(output[_C][_m]), context);\n }\n if (output.Outputs === \"\") {\n contents[_O] = [];\n } else if (output[_O] != null && output[_O][_m] != null) {\n contents[_O] = de_Outputs((0, import_smithy_client.getArrayIfSingleItem)(output[_O][_m]), context);\n }\n if (output[_RARN] != null) {\n contents[_RARN] = (0, import_smithy_client.expectString)(output[_RARN]);\n }\n if (output.Tags === \"\") {\n contents[_Ta] = [];\n } else if (output[_Ta] != null && output[_Ta][_m] != null) {\n contents[_Ta] = de_Tags((0, import_smithy_client.getArrayIfSingleItem)(output[_Ta][_m]), context);\n }\n if (output[_ETP] != null) {\n contents[_ETP] = (0, import_smithy_client.parseBoolean)(output[_ETP]);\n }\n if (output[_PIa] != null) {\n contents[_PIa] = (0, import_smithy_client.expectString)(output[_PIa]);\n }\n if (output[_RIo] != null) {\n contents[_RIo] = (0, import_smithy_client.expectString)(output[_RIo]);\n }\n if (output[_DI] != null) {\n contents[_DI] = de_StackDriftInformation(output[_DI], context);\n }\n if (output[_REOC] != null) {\n contents[_REOC] = (0, import_smithy_client.parseBoolean)(output[_REOC]);\n }\n if (output[_DM] != null) {\n contents[_DM] = (0, import_smithy_client.expectString)(output[_DM]);\n }\n if (output[_DSeta] != null) {\n contents[_DSeta] = (0, import_smithy_client.expectString)(output[_DSeta]);\n }\n return contents;\n}, \"de_Stack\");\nvar de_StackDriftInformation = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_SDS] != null) {\n contents[_SDS] = (0, import_smithy_client.expectString)(output[_SDS]);\n }\n if (output[_LCT] != null) {\n contents[_LCT] = (0, import_smithy_client.expectNonNull)((0, import_smithy_client.parseRfc3339DateTimeWithOffset)(output[_LCT]));\n }\n return contents;\n}, \"de_StackDriftInformation\");\nvar de_StackDriftInformationSummary = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_SDS] != null) {\n contents[_SDS] = (0, import_smithy_client.expectString)(output[_SDS]);\n }\n if (output[_LCT] != null) {\n contents[_LCT] = (0, import_smithy_client.expectNonNull)((0, import_smithy_client.parseRfc3339DateTimeWithOffset)(output[_LCT]));\n }\n return contents;\n}, \"de_StackDriftInformationSummary\");\nvar de_StackEvent = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_SI] != null) {\n contents[_SI] = (0, import_smithy_client.expectString)(output[_SI]);\n }\n if (output[_EI] != null) {\n contents[_EI] = (0, import_smithy_client.expectString)(output[_EI]);\n }\n if (output[_SN] != null) {\n contents[_SN] = (0, import_smithy_client.expectString)(output[_SN]);\n }\n if (output[_LRI] != null) {\n contents[_LRI] = (0, import_smithy_client.expectString)(output[_LRI]);\n }\n if (output[_PRI] != null) {\n contents[_PRI] = (0, import_smithy_client.expectString)(output[_PRI]);\n }\n if (output[_RTes] != null) {\n contents[_RTes] = (0, import_smithy_client.expectString)(output[_RTes]);\n }\n if (output[_Ti] != null) {\n contents[_Ti] = (0, import_smithy_client.expectNonNull)((0, import_smithy_client.parseRfc3339DateTimeWithOffset)(output[_Ti]));\n }\n if (output[_RSeso] != null) {\n contents[_RSeso] = (0, import_smithy_client.expectString)(output[_RSeso]);\n }\n if (output[_RSR] != null) {\n contents[_RSR] = (0, import_smithy_client.expectString)(output[_RSR]);\n }\n if (output[_RPe] != null) {\n contents[_RPe] = (0, import_smithy_client.expectString)(output[_RPe]);\n }\n if (output[_CRT] != null) {\n contents[_CRT] = (0, import_smithy_client.expectString)(output[_CRT]);\n }\n if (output[_HT] != null) {\n contents[_HT] = (0, import_smithy_client.expectString)(output[_HT]);\n }\n if (output[_HS] != null) {\n contents[_HS] = (0, import_smithy_client.expectString)(output[_HS]);\n }\n if (output[_HSR] != null) {\n contents[_HSR] = (0, import_smithy_client.expectString)(output[_HSR]);\n }\n if (output[_HIP] != null) {\n contents[_HIP] = (0, import_smithy_client.expectString)(output[_HIP]);\n }\n if (output[_HFM] != null) {\n contents[_HFM] = (0, import_smithy_client.expectString)(output[_HFM]);\n }\n if (output[_DSeta] != null) {\n contents[_DSeta] = (0, import_smithy_client.expectString)(output[_DSeta]);\n }\n return contents;\n}, \"de_StackEvent\");\nvar de_StackEvents = /* @__PURE__ */ __name((output, context) => {\n return (output || []).filter((e) => e != null).map((entry) => {\n return de_StackEvent(entry, context);\n });\n}, \"de_StackEvents\");\nvar de_StackInstance = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_SSI] != null) {\n contents[_SSI] = (0, import_smithy_client.expectString)(output[_SSI]);\n }\n if (output[_Reg] != null) {\n contents[_Reg] = (0, import_smithy_client.expectString)(output[_Reg]);\n }\n if (output[_Acc] != null) {\n contents[_Acc] = (0, import_smithy_client.expectString)(output[_Acc]);\n }\n if (output[_SI] != null) {\n contents[_SI] = (0, import_smithy_client.expectString)(output[_SI]);\n }\n if (output.ParameterOverrides === \"\") {\n contents[_PO] = [];\n } else if (output[_PO] != null && output[_PO][_m] != null) {\n contents[_PO] = de_Parameters((0, import_smithy_client.getArrayIfSingleItem)(output[_PO][_m]), context);\n }\n if (output[_S] != null) {\n contents[_S] = (0, import_smithy_client.expectString)(output[_S]);\n }\n if (output[_SIS] != null) {\n contents[_SIS] = de_StackInstanceComprehensiveStatus(output[_SIS], context);\n }\n if (output[_SRt] != null) {\n contents[_SRt] = (0, import_smithy_client.expectString)(output[_SRt]);\n }\n if (output[_OUIr] != null) {\n contents[_OUIr] = (0, import_smithy_client.expectString)(output[_OUIr]);\n }\n if (output[_DSr] != null) {\n contents[_DSr] = (0, import_smithy_client.expectString)(output[_DSr]);\n }\n if (output[_LDCT] != null) {\n contents[_LDCT] = (0, import_smithy_client.expectNonNull)((0, import_smithy_client.parseRfc3339DateTimeWithOffset)(output[_LDCT]));\n }\n if (output[_LOI] != null) {\n contents[_LOI] = (0, import_smithy_client.expectString)(output[_LOI]);\n }\n return contents;\n}, \"de_StackInstance\");\nvar de_StackInstanceComprehensiveStatus = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_DSeta] != null) {\n contents[_DSeta] = (0, import_smithy_client.expectString)(output[_DSeta]);\n }\n return contents;\n}, \"de_StackInstanceComprehensiveStatus\");\nvar de_StackInstanceNotFoundException = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_M] != null) {\n contents[_M] = (0, import_smithy_client.expectString)(output[_M]);\n }\n return contents;\n}, \"de_StackInstanceNotFoundException\");\nvar de_StackInstanceResourceDriftsSummaries = /* @__PURE__ */ __name((output, context) => {\n return (output || []).filter((e) => e != null).map((entry) => {\n return de_StackInstanceResourceDriftsSummary(entry, context);\n });\n}, \"de_StackInstanceResourceDriftsSummaries\");\nvar de_StackInstanceResourceDriftsSummary = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_SI] != null) {\n contents[_SI] = (0, import_smithy_client.expectString)(output[_SI]);\n }\n if (output[_LRI] != null) {\n contents[_LRI] = (0, import_smithy_client.expectString)(output[_LRI]);\n }\n if (output[_PRI] != null) {\n contents[_PRI] = (0, import_smithy_client.expectString)(output[_PRI]);\n }\n if (output.PhysicalResourceIdContext === \"\") {\n contents[_PRIC] = [];\n } else if (output[_PRIC] != null && output[_PRIC][_m] != null) {\n contents[_PRIC] = de_PhysicalResourceIdContext((0, import_smithy_client.getArrayIfSingleItem)(output[_PRIC][_m]), context);\n }\n if (output[_RTes] != null) {\n contents[_RTes] = (0, import_smithy_client.expectString)(output[_RTes]);\n }\n if (output.PropertyDifferences === \"\") {\n contents[_PD] = [];\n } else if (output[_PD] != null && output[_PD][_m] != null) {\n contents[_PD] = de_PropertyDifferences((0, import_smithy_client.getArrayIfSingleItem)(output[_PD][_m]), context);\n }\n if (output[_SRDS] != null) {\n contents[_SRDS] = (0, import_smithy_client.expectString)(output[_SRDS]);\n }\n if (output[_Ti] != null) {\n contents[_Ti] = (0, import_smithy_client.expectNonNull)((0, import_smithy_client.parseRfc3339DateTimeWithOffset)(output[_Ti]));\n }\n return contents;\n}, \"de_StackInstanceResourceDriftsSummary\");\nvar de_StackInstanceSummaries = /* @__PURE__ */ __name((output, context) => {\n return (output || []).filter((e) => e != null).map((entry) => {\n return de_StackInstanceSummary(entry, context);\n });\n}, \"de_StackInstanceSummaries\");\nvar de_StackInstanceSummary = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_SSI] != null) {\n contents[_SSI] = (0, import_smithy_client.expectString)(output[_SSI]);\n }\n if (output[_Reg] != null) {\n contents[_Reg] = (0, import_smithy_client.expectString)(output[_Reg]);\n }\n if (output[_Acc] != null) {\n contents[_Acc] = (0, import_smithy_client.expectString)(output[_Acc]);\n }\n if (output[_SI] != null) {\n contents[_SI] = (0, import_smithy_client.expectString)(output[_SI]);\n }\n if (output[_S] != null) {\n contents[_S] = (0, import_smithy_client.expectString)(output[_S]);\n }\n if (output[_SRt] != null) {\n contents[_SRt] = (0, import_smithy_client.expectString)(output[_SRt]);\n }\n if (output[_SIS] != null) {\n contents[_SIS] = de_StackInstanceComprehensiveStatus(output[_SIS], context);\n }\n if (output[_OUIr] != null) {\n contents[_OUIr] = (0, import_smithy_client.expectString)(output[_OUIr]);\n }\n if (output[_DSr] != null) {\n contents[_DSr] = (0, import_smithy_client.expectString)(output[_DSr]);\n }\n if (output[_LDCT] != null) {\n contents[_LDCT] = (0, import_smithy_client.expectNonNull)((0, import_smithy_client.parseRfc3339DateTimeWithOffset)(output[_LDCT]));\n }\n if (output[_LOI] != null) {\n contents[_LOI] = (0, import_smithy_client.expectString)(output[_LOI]);\n }\n return contents;\n}, \"de_StackInstanceSummary\");\nvar de_StackNotFoundException = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_M] != null) {\n contents[_M] = (0, import_smithy_client.expectString)(output[_M]);\n }\n return contents;\n}, \"de_StackNotFoundException\");\nvar de_StackResource = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_SN] != null) {\n contents[_SN] = (0, import_smithy_client.expectString)(output[_SN]);\n }\n if (output[_SI] != null) {\n contents[_SI] = (0, import_smithy_client.expectString)(output[_SI]);\n }\n if (output[_LRI] != null) {\n contents[_LRI] = (0, import_smithy_client.expectString)(output[_LRI]);\n }\n if (output[_PRI] != null) {\n contents[_PRI] = (0, import_smithy_client.expectString)(output[_PRI]);\n }\n if (output[_RTes] != null) {\n contents[_RTes] = (0, import_smithy_client.expectString)(output[_RTes]);\n }\n if (output[_Ti] != null) {\n contents[_Ti] = (0, import_smithy_client.expectNonNull)((0, import_smithy_client.parseRfc3339DateTimeWithOffset)(output[_Ti]));\n }\n if (output[_RSeso] != null) {\n contents[_RSeso] = (0, import_smithy_client.expectString)(output[_RSeso]);\n }\n if (output[_RSR] != null) {\n contents[_RSR] = (0, import_smithy_client.expectString)(output[_RSR]);\n }\n if (output[_D] != null) {\n contents[_D] = (0, import_smithy_client.expectString)(output[_D]);\n }\n if (output[_DI] != null) {\n contents[_DI] = de_StackResourceDriftInformation(output[_DI], context);\n }\n if (output[_MI] != null) {\n contents[_MI] = de_ModuleInfo(output[_MI], context);\n }\n return contents;\n}, \"de_StackResource\");\nvar de_StackResourceDetail = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_SN] != null) {\n contents[_SN] = (0, import_smithy_client.expectString)(output[_SN]);\n }\n if (output[_SI] != null) {\n contents[_SI] = (0, import_smithy_client.expectString)(output[_SI]);\n }\n if (output[_LRI] != null) {\n contents[_LRI] = (0, import_smithy_client.expectString)(output[_LRI]);\n }\n if (output[_PRI] != null) {\n contents[_PRI] = (0, import_smithy_client.expectString)(output[_PRI]);\n }\n if (output[_RTes] != null) {\n contents[_RTes] = (0, import_smithy_client.expectString)(output[_RTes]);\n }\n if (output[_LUTa] != null) {\n contents[_LUTa] = (0, import_smithy_client.expectNonNull)((0, import_smithy_client.parseRfc3339DateTimeWithOffset)(output[_LUTa]));\n }\n if (output[_RSeso] != null) {\n contents[_RSeso] = (0, import_smithy_client.expectString)(output[_RSeso]);\n }\n if (output[_RSR] != null) {\n contents[_RSR] = (0, import_smithy_client.expectString)(output[_RSR]);\n }\n if (output[_D] != null) {\n contents[_D] = (0, import_smithy_client.expectString)(output[_D]);\n }\n if (output[_Me] != null) {\n contents[_Me] = (0, import_smithy_client.expectString)(output[_Me]);\n }\n if (output[_DI] != null) {\n contents[_DI] = de_StackResourceDriftInformation(output[_DI], context);\n }\n if (output[_MI] != null) {\n contents[_MI] = de_ModuleInfo(output[_MI], context);\n }\n return contents;\n}, \"de_StackResourceDetail\");\nvar de_StackResourceDrift = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_SI] != null) {\n contents[_SI] = (0, import_smithy_client.expectString)(output[_SI]);\n }\n if (output[_LRI] != null) {\n contents[_LRI] = (0, import_smithy_client.expectString)(output[_LRI]);\n }\n if (output[_PRI] != null) {\n contents[_PRI] = (0, import_smithy_client.expectString)(output[_PRI]);\n }\n if (output.PhysicalResourceIdContext === \"\") {\n contents[_PRIC] = [];\n } else if (output[_PRIC] != null && output[_PRIC][_m] != null) {\n contents[_PRIC] = de_PhysicalResourceIdContext((0, import_smithy_client.getArrayIfSingleItem)(output[_PRIC][_m]), context);\n }\n if (output[_RTes] != null) {\n contents[_RTes] = (0, import_smithy_client.expectString)(output[_RTes]);\n }\n if (output[_EP] != null) {\n contents[_EP] = (0, import_smithy_client.expectString)(output[_EP]);\n }\n if (output[_AP] != null) {\n contents[_AP] = (0, import_smithy_client.expectString)(output[_AP]);\n }\n if (output.PropertyDifferences === \"\") {\n contents[_PD] = [];\n } else if (output[_PD] != null && output[_PD][_m] != null) {\n contents[_PD] = de_PropertyDifferences((0, import_smithy_client.getArrayIfSingleItem)(output[_PD][_m]), context);\n }\n if (output[_SRDS] != null) {\n contents[_SRDS] = (0, import_smithy_client.expectString)(output[_SRDS]);\n }\n if (output[_Ti] != null) {\n contents[_Ti] = (0, import_smithy_client.expectNonNull)((0, import_smithy_client.parseRfc3339DateTimeWithOffset)(output[_Ti]));\n }\n if (output[_MI] != null) {\n contents[_MI] = de_ModuleInfo(output[_MI], context);\n }\n return contents;\n}, \"de_StackResourceDrift\");\nvar de_StackResourceDriftInformation = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_SRDS] != null) {\n contents[_SRDS] = (0, import_smithy_client.expectString)(output[_SRDS]);\n }\n if (output[_LCT] != null) {\n contents[_LCT] = (0, import_smithy_client.expectNonNull)((0, import_smithy_client.parseRfc3339DateTimeWithOffset)(output[_LCT]));\n }\n return contents;\n}, \"de_StackResourceDriftInformation\");\nvar de_StackResourceDriftInformationSummary = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_SRDS] != null) {\n contents[_SRDS] = (0, import_smithy_client.expectString)(output[_SRDS]);\n }\n if (output[_LCT] != null) {\n contents[_LCT] = (0, import_smithy_client.expectNonNull)((0, import_smithy_client.parseRfc3339DateTimeWithOffset)(output[_LCT]));\n }\n return contents;\n}, \"de_StackResourceDriftInformationSummary\");\nvar de_StackResourceDrifts = /* @__PURE__ */ __name((output, context) => {\n return (output || []).filter((e) => e != null).map((entry) => {\n return de_StackResourceDrift(entry, context);\n });\n}, \"de_StackResourceDrifts\");\nvar de_StackResources = /* @__PURE__ */ __name((output, context) => {\n return (output || []).filter((e) => e != null).map((entry) => {\n return de_StackResource(entry, context);\n });\n}, \"de_StackResources\");\nvar de_StackResourceSummaries = /* @__PURE__ */ __name((output, context) => {\n return (output || []).filter((e) => e != null).map((entry) => {\n return de_StackResourceSummary(entry, context);\n });\n}, \"de_StackResourceSummaries\");\nvar de_StackResourceSummary = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_LRI] != null) {\n contents[_LRI] = (0, import_smithy_client.expectString)(output[_LRI]);\n }\n if (output[_PRI] != null) {\n contents[_PRI] = (0, import_smithy_client.expectString)(output[_PRI]);\n }\n if (output[_RTes] != null) {\n contents[_RTes] = (0, import_smithy_client.expectString)(output[_RTes]);\n }\n if (output[_LUTa] != null) {\n contents[_LUTa] = (0, import_smithy_client.expectNonNull)((0, import_smithy_client.parseRfc3339DateTimeWithOffset)(output[_LUTa]));\n }\n if (output[_RSeso] != null) {\n contents[_RSeso] = (0, import_smithy_client.expectString)(output[_RSeso]);\n }\n if (output[_RSR] != null) {\n contents[_RSR] = (0, import_smithy_client.expectString)(output[_RSR]);\n }\n if (output[_DI] != null) {\n contents[_DI] = de_StackResourceDriftInformationSummary(output[_DI], context);\n }\n if (output[_MI] != null) {\n contents[_MI] = de_ModuleInfo(output[_MI], context);\n }\n return contents;\n}, \"de_StackResourceSummary\");\nvar de_Stacks = /* @__PURE__ */ __name((output, context) => {\n return (output || []).filter((e) => e != null).map((entry) => {\n return de_Stack(entry, context);\n });\n}, \"de_Stacks\");\nvar de_StackSet = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_SSN] != null) {\n contents[_SSN] = (0, import_smithy_client.expectString)(output[_SSN]);\n }\n if (output[_SSI] != null) {\n contents[_SSI] = (0, import_smithy_client.expectString)(output[_SSI]);\n }\n if (output[_D] != null) {\n contents[_D] = (0, import_smithy_client.expectString)(output[_D]);\n }\n if (output[_S] != null) {\n contents[_S] = (0, import_smithy_client.expectString)(output[_S]);\n }\n if (output[_TB] != null) {\n contents[_TB] = (0, import_smithy_client.expectString)(output[_TB]);\n }\n if (output.Parameters === \"\") {\n contents[_P] = [];\n } else if (output[_P] != null && output[_P][_m] != null) {\n contents[_P] = de_Parameters((0, import_smithy_client.getArrayIfSingleItem)(output[_P][_m]), context);\n }\n if (output.Capabilities === \"\") {\n contents[_C] = [];\n } else if (output[_C] != null && output[_C][_m] != null) {\n contents[_C] = de_Capabilities((0, import_smithy_client.getArrayIfSingleItem)(output[_C][_m]), context);\n }\n if (output.Tags === \"\") {\n contents[_Ta] = [];\n } else if (output[_Ta] != null && output[_Ta][_m] != null) {\n contents[_Ta] = de_Tags((0, import_smithy_client.getArrayIfSingleItem)(output[_Ta][_m]), context);\n }\n if (output[_SSARN] != null) {\n contents[_SSARN] = (0, import_smithy_client.expectString)(output[_SSARN]);\n }\n if (output[_ARARN] != null) {\n contents[_ARARN] = (0, import_smithy_client.expectString)(output[_ARARN]);\n }\n if (output[_ERN] != null) {\n contents[_ERN] = (0, import_smithy_client.expectString)(output[_ERN]);\n }\n if (output[_SSDDD] != null) {\n contents[_SSDDD] = de_StackSetDriftDetectionDetails(output[_SSDDD], context);\n }\n if (output[_AD] != null) {\n contents[_AD] = de_AutoDeployment(output[_AD], context);\n }\n if (output[_PM] != null) {\n contents[_PM] = (0, import_smithy_client.expectString)(output[_PM]);\n }\n if (output.OrganizationalUnitIds === \"\") {\n contents[_OUI] = [];\n } else if (output[_OUI] != null && output[_OUI][_m] != null) {\n contents[_OUI] = de_OrganizationalUnitIdList((0, import_smithy_client.getArrayIfSingleItem)(output[_OUI][_m]), context);\n }\n if (output[_ME] != null) {\n contents[_ME] = de_ManagedExecution(output[_ME], context);\n }\n if (output.Regions === \"\") {\n contents[_Re] = [];\n } else if (output[_Re] != null && output[_Re][_m] != null) {\n contents[_Re] = de_RegionList((0, import_smithy_client.getArrayIfSingleItem)(output[_Re][_m]), context);\n }\n return contents;\n}, \"de_StackSet\");\nvar de_StackSetAutoDeploymentTargetSummaries = /* @__PURE__ */ __name((output, context) => {\n return (output || []).filter((e) => e != null).map((entry) => {\n return de_StackSetAutoDeploymentTargetSummary(entry, context);\n });\n}, \"de_StackSetAutoDeploymentTargetSummaries\");\nvar de_StackSetAutoDeploymentTargetSummary = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_OUIr] != null) {\n contents[_OUIr] = (0, import_smithy_client.expectString)(output[_OUIr]);\n }\n if (output.Regions === \"\") {\n contents[_Re] = [];\n } else if (output[_Re] != null && output[_Re][_m] != null) {\n contents[_Re] = de_RegionList((0, import_smithy_client.getArrayIfSingleItem)(output[_Re][_m]), context);\n }\n return contents;\n}, \"de_StackSetAutoDeploymentTargetSummary\");\nvar de_StackSetDriftDetectionDetails = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_DSr] != null) {\n contents[_DSr] = (0, import_smithy_client.expectString)(output[_DSr]);\n }\n if (output[_DDS] != null) {\n contents[_DDS] = (0, import_smithy_client.expectString)(output[_DDS]);\n }\n if (output[_LDCT] != null) {\n contents[_LDCT] = (0, import_smithy_client.expectNonNull)((0, import_smithy_client.parseRfc3339DateTimeWithOffset)(output[_LDCT]));\n }\n if (output[_TSIC] != null) {\n contents[_TSIC] = (0, import_smithy_client.strictParseInt32)(output[_TSIC]);\n }\n if (output[_DSIC] != null) {\n contents[_DSIC] = (0, import_smithy_client.strictParseInt32)(output[_DSIC]);\n }\n if (output[_ISSIC] != null) {\n contents[_ISSIC] = (0, import_smithy_client.strictParseInt32)(output[_ISSIC]);\n }\n if (output[_IPSIC] != null) {\n contents[_IPSIC] = (0, import_smithy_client.strictParseInt32)(output[_IPSIC]);\n }\n if (output[_FSIC] != null) {\n contents[_FSIC] = (0, import_smithy_client.strictParseInt32)(output[_FSIC]);\n }\n return contents;\n}, \"de_StackSetDriftDetectionDetails\");\nvar de_StackSetNotEmptyException = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_M] != null) {\n contents[_M] = (0, import_smithy_client.expectString)(output[_M]);\n }\n return contents;\n}, \"de_StackSetNotEmptyException\");\nvar de_StackSetNotFoundException = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_M] != null) {\n contents[_M] = (0, import_smithy_client.expectString)(output[_M]);\n }\n return contents;\n}, \"de_StackSetNotFoundException\");\nvar de_StackSetOperation = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_OI] != null) {\n contents[_OI] = (0, import_smithy_client.expectString)(output[_OI]);\n }\n if (output[_SSI] != null) {\n contents[_SSI] = (0, import_smithy_client.expectString)(output[_SSI]);\n }\n if (output[_A] != null) {\n contents[_A] = (0, import_smithy_client.expectString)(output[_A]);\n }\n if (output[_S] != null) {\n contents[_S] = (0, import_smithy_client.expectString)(output[_S]);\n }\n if (output[_OP] != null) {\n contents[_OP] = de_StackSetOperationPreferences(output[_OP], context);\n }\n if (output[_RSe] != null) {\n contents[_RSe] = (0, import_smithy_client.parseBoolean)(output[_RSe]);\n }\n if (output[_ARARN] != null) {\n contents[_ARARN] = (0, import_smithy_client.expectString)(output[_ARARN]);\n }\n if (output[_ERN] != null) {\n contents[_ERN] = (0, import_smithy_client.expectString)(output[_ERN]);\n }\n if (output[_CTre] != null) {\n contents[_CTre] = (0, import_smithy_client.expectNonNull)((0, import_smithy_client.parseRfc3339DateTimeWithOffset)(output[_CTre]));\n }\n if (output[_ETn] != null) {\n contents[_ETn] = (0, import_smithy_client.expectNonNull)((0, import_smithy_client.parseRfc3339DateTimeWithOffset)(output[_ETn]));\n }\n if (output[_DTep] != null) {\n contents[_DTep] = de_DeploymentTargets(output[_DTep], context);\n }\n if (output[_SSDDD] != null) {\n contents[_SSDDD] = de_StackSetDriftDetectionDetails(output[_SSDDD], context);\n }\n if (output[_SRt] != null) {\n contents[_SRt] = (0, import_smithy_client.expectString)(output[_SRt]);\n }\n if (output[_SD] != null) {\n contents[_SD] = de_StackSetOperationStatusDetails(output[_SD], context);\n }\n return contents;\n}, \"de_StackSetOperation\");\nvar de_StackSetOperationPreferences = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_RCT] != null) {\n contents[_RCT] = (0, import_smithy_client.expectString)(output[_RCT]);\n }\n if (output.RegionOrder === \"\") {\n contents[_RO] = [];\n } else if (output[_RO] != null && output[_RO][_m] != null) {\n contents[_RO] = de_RegionList((0, import_smithy_client.getArrayIfSingleItem)(output[_RO][_m]), context);\n }\n if (output[_FTC] != null) {\n contents[_FTC] = (0, import_smithy_client.strictParseInt32)(output[_FTC]);\n }\n if (output[_FTP] != null) {\n contents[_FTP] = (0, import_smithy_client.strictParseInt32)(output[_FTP]);\n }\n if (output[_MCC] != null) {\n contents[_MCC] = (0, import_smithy_client.strictParseInt32)(output[_MCC]);\n }\n if (output[_MCP] != null) {\n contents[_MCP] = (0, import_smithy_client.strictParseInt32)(output[_MCP]);\n }\n if (output[_CM] != null) {\n contents[_CM] = (0, import_smithy_client.expectString)(output[_CM]);\n }\n return contents;\n}, \"de_StackSetOperationPreferences\");\nvar de_StackSetOperationResultSummaries = /* @__PURE__ */ __name((output, context) => {\n return (output || []).filter((e) => e != null).map((entry) => {\n return de_StackSetOperationResultSummary(entry, context);\n });\n}, \"de_StackSetOperationResultSummaries\");\nvar de_StackSetOperationResultSummary = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_Acc] != null) {\n contents[_Acc] = (0, import_smithy_client.expectString)(output[_Acc]);\n }\n if (output[_Reg] != null) {\n contents[_Reg] = (0, import_smithy_client.expectString)(output[_Reg]);\n }\n if (output[_S] != null) {\n contents[_S] = (0, import_smithy_client.expectString)(output[_S]);\n }\n if (output[_SRt] != null) {\n contents[_SRt] = (0, import_smithy_client.expectString)(output[_SRt]);\n }\n if (output[_AGR] != null) {\n contents[_AGR] = de_AccountGateResult(output[_AGR], context);\n }\n if (output[_OUIr] != null) {\n contents[_OUIr] = (0, import_smithy_client.expectString)(output[_OUIr]);\n }\n return contents;\n}, \"de_StackSetOperationResultSummary\");\nvar de_StackSetOperationStatusDetails = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_FSIC] != null) {\n contents[_FSIC] = (0, import_smithy_client.strictParseInt32)(output[_FSIC]);\n }\n return contents;\n}, \"de_StackSetOperationStatusDetails\");\nvar de_StackSetOperationSummaries = /* @__PURE__ */ __name((output, context) => {\n return (output || []).filter((e) => e != null).map((entry) => {\n return de_StackSetOperationSummary(entry, context);\n });\n}, \"de_StackSetOperationSummaries\");\nvar de_StackSetOperationSummary = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_OI] != null) {\n contents[_OI] = (0, import_smithy_client.expectString)(output[_OI]);\n }\n if (output[_A] != null) {\n contents[_A] = (0, import_smithy_client.expectString)(output[_A]);\n }\n if (output[_S] != null) {\n contents[_S] = (0, import_smithy_client.expectString)(output[_S]);\n }\n if (output[_CTre] != null) {\n contents[_CTre] = (0, import_smithy_client.expectNonNull)((0, import_smithy_client.parseRfc3339DateTimeWithOffset)(output[_CTre]));\n }\n if (output[_ETn] != null) {\n contents[_ETn] = (0, import_smithy_client.expectNonNull)((0, import_smithy_client.parseRfc3339DateTimeWithOffset)(output[_ETn]));\n }\n if (output[_SRt] != null) {\n contents[_SRt] = (0, import_smithy_client.expectString)(output[_SRt]);\n }\n if (output[_SD] != null) {\n contents[_SD] = de_StackSetOperationStatusDetails(output[_SD], context);\n }\n if (output[_OP] != null) {\n contents[_OP] = de_StackSetOperationPreferences(output[_OP], context);\n }\n return contents;\n}, \"de_StackSetOperationSummary\");\nvar de_StackSetSummaries = /* @__PURE__ */ __name((output, context) => {\n return (output || []).filter((e) => e != null).map((entry) => {\n return de_StackSetSummary(entry, context);\n });\n}, \"de_StackSetSummaries\");\nvar de_StackSetSummary = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_SSN] != null) {\n contents[_SSN] = (0, import_smithy_client.expectString)(output[_SSN]);\n }\n if (output[_SSI] != null) {\n contents[_SSI] = (0, import_smithy_client.expectString)(output[_SSI]);\n }\n if (output[_D] != null) {\n contents[_D] = (0, import_smithy_client.expectString)(output[_D]);\n }\n if (output[_S] != null) {\n contents[_S] = (0, import_smithy_client.expectString)(output[_S]);\n }\n if (output[_AD] != null) {\n contents[_AD] = de_AutoDeployment(output[_AD], context);\n }\n if (output[_PM] != null) {\n contents[_PM] = (0, import_smithy_client.expectString)(output[_PM]);\n }\n if (output[_DSr] != null) {\n contents[_DSr] = (0, import_smithy_client.expectString)(output[_DSr]);\n }\n if (output[_LDCT] != null) {\n contents[_LDCT] = (0, import_smithy_client.expectNonNull)((0, import_smithy_client.parseRfc3339DateTimeWithOffset)(output[_LDCT]));\n }\n if (output[_ME] != null) {\n contents[_ME] = de_ManagedExecution(output[_ME], context);\n }\n return contents;\n}, \"de_StackSetSummary\");\nvar de_StackSummaries = /* @__PURE__ */ __name((output, context) => {\n return (output || []).filter((e) => e != null).map((entry) => {\n return de_StackSummary(entry, context);\n });\n}, \"de_StackSummaries\");\nvar de_StackSummary = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_SI] != null) {\n contents[_SI] = (0, import_smithy_client.expectString)(output[_SI]);\n }\n if (output[_SN] != null) {\n contents[_SN] = (0, import_smithy_client.expectString)(output[_SN]);\n }\n if (output[_TDe] != null) {\n contents[_TDe] = (0, import_smithy_client.expectString)(output[_TDe]);\n }\n if (output[_CTr] != null) {\n contents[_CTr] = (0, import_smithy_client.expectNonNull)((0, import_smithy_client.parseRfc3339DateTimeWithOffset)(output[_CTr]));\n }\n if (output[_LUT] != null) {\n contents[_LUT] = (0, import_smithy_client.expectNonNull)((0, import_smithy_client.parseRfc3339DateTimeWithOffset)(output[_LUT]));\n }\n if (output[_DTel] != null) {\n contents[_DTel] = (0, import_smithy_client.expectNonNull)((0, import_smithy_client.parseRfc3339DateTimeWithOffset)(output[_DTel]));\n }\n if (output[_SSta] != null) {\n contents[_SSta] = (0, import_smithy_client.expectString)(output[_SSta]);\n }\n if (output[_SSR] != null) {\n contents[_SSR] = (0, import_smithy_client.expectString)(output[_SSR]);\n }\n if (output[_PIa] != null) {\n contents[_PIa] = (0, import_smithy_client.expectString)(output[_PIa]);\n }\n if (output[_RIo] != null) {\n contents[_RIo] = (0, import_smithy_client.expectString)(output[_RIo]);\n }\n if (output[_DI] != null) {\n contents[_DI] = de_StackDriftInformationSummary(output[_DI], context);\n }\n return contents;\n}, \"de_StackSummary\");\nvar de_StageList = /* @__PURE__ */ __name((output, context) => {\n return (output || []).filter((e) => e != null).map((entry) => {\n return (0, import_smithy_client.expectString)(entry);\n });\n}, \"de_StageList\");\nvar de_StaleRequestException = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_M] != null) {\n contents[_M] = (0, import_smithy_client.expectString)(output[_M]);\n }\n return contents;\n}, \"de_StaleRequestException\");\nvar de_StartResourceScanOutput = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_RSI] != null) {\n contents[_RSI] = (0, import_smithy_client.expectString)(output[_RSI]);\n }\n return contents;\n}, \"de_StartResourceScanOutput\");\nvar de_StopStackSetOperationOutput = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n return contents;\n}, \"de_StopStackSetOperationOutput\");\nvar de_SupportedMajorVersions = /* @__PURE__ */ __name((output, context) => {\n return (output || []).filter((e) => e != null).map((entry) => {\n return (0, import_smithy_client.strictParseInt32)(entry);\n });\n}, \"de_SupportedMajorVersions\");\nvar de_Tag = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_K] != null) {\n contents[_K] = (0, import_smithy_client.expectString)(output[_K]);\n }\n if (output[_Val] != null) {\n contents[_Val] = (0, import_smithy_client.expectString)(output[_Val]);\n }\n return contents;\n}, \"de_Tag\");\nvar de_Tags = /* @__PURE__ */ __name((output, context) => {\n return (output || []).filter((e) => e != null).map((entry) => {\n return de_Tag(entry, context);\n });\n}, \"de_Tags\");\nvar de_TemplateConfiguration = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_DPe] != null) {\n contents[_DPe] = (0, import_smithy_client.expectString)(output[_DPe]);\n }\n if (output[_URP] != null) {\n contents[_URP] = (0, import_smithy_client.expectString)(output[_URP]);\n }\n return contents;\n}, \"de_TemplateConfiguration\");\nvar de_TemplateParameter = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_PK] != null) {\n contents[_PK] = (0, import_smithy_client.expectString)(output[_PK]);\n }\n if (output[_DV] != null) {\n contents[_DV] = (0, import_smithy_client.expectString)(output[_DV]);\n }\n if (output[_NE] != null) {\n contents[_NE] = (0, import_smithy_client.parseBoolean)(output[_NE]);\n }\n if (output[_D] != null) {\n contents[_D] = (0, import_smithy_client.expectString)(output[_D]);\n }\n return contents;\n}, \"de_TemplateParameter\");\nvar de_TemplateParameters = /* @__PURE__ */ __name((output, context) => {\n return (output || []).filter((e) => e != null).map((entry) => {\n return de_TemplateParameter(entry, context);\n });\n}, \"de_TemplateParameters\");\nvar de_TemplateProgress = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_RSesou] != null) {\n contents[_RSesou] = (0, import_smithy_client.strictParseInt32)(output[_RSesou]);\n }\n if (output[_RF] != null) {\n contents[_RF] = (0, import_smithy_client.strictParseInt32)(output[_RF]);\n }\n if (output[_RPes] != null) {\n contents[_RPes] = (0, import_smithy_client.strictParseInt32)(output[_RPes]);\n }\n if (output[_RPeso] != null) {\n contents[_RPeso] = (0, import_smithy_client.strictParseInt32)(output[_RPeso]);\n }\n return contents;\n}, \"de_TemplateProgress\");\nvar de_TemplateSummaries = /* @__PURE__ */ __name((output, context) => {\n return (output || []).filter((e) => e != null).map((entry) => {\n return de_TemplateSummary(entry, context);\n });\n}, \"de_TemplateSummaries\");\nvar de_TemplateSummary = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_GTI] != null) {\n contents[_GTI] = (0, import_smithy_client.expectString)(output[_GTI]);\n }\n if (output[_GTN] != null) {\n contents[_GTN] = (0, import_smithy_client.expectString)(output[_GTN]);\n }\n if (output[_S] != null) {\n contents[_S] = (0, import_smithy_client.expectString)(output[_S]);\n }\n if (output[_SRt] != null) {\n contents[_SRt] = (0, import_smithy_client.expectString)(output[_SRt]);\n }\n if (output[_CTr] != null) {\n contents[_CTr] = (0, import_smithy_client.expectNonNull)((0, import_smithy_client.parseRfc3339DateTimeWithOffset)(output[_CTr]));\n }\n if (output[_LUT] != null) {\n contents[_LUT] = (0, import_smithy_client.expectNonNull)((0, import_smithy_client.parseRfc3339DateTimeWithOffset)(output[_LUT]));\n }\n if (output[_NOR] != null) {\n contents[_NOR] = (0, import_smithy_client.strictParseInt32)(output[_NOR]);\n }\n return contents;\n}, \"de_TemplateSummary\");\nvar de_TestTypeOutput = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_TVA] != null) {\n contents[_TVA] = (0, import_smithy_client.expectString)(output[_TVA]);\n }\n return contents;\n}, \"de_TestTypeOutput\");\nvar de_TokenAlreadyExistsException = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_M] != null) {\n contents[_M] = (0, import_smithy_client.expectString)(output[_M]);\n }\n return contents;\n}, \"de_TokenAlreadyExistsException\");\nvar de_TransformsList = /* @__PURE__ */ __name((output, context) => {\n return (output || []).filter((e) => e != null).map((entry) => {\n return (0, import_smithy_client.expectString)(entry);\n });\n}, \"de_TransformsList\");\nvar de_TypeConfigurationDetails = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_Ar] != null) {\n contents[_Ar] = (0, import_smithy_client.expectString)(output[_Ar]);\n }\n if (output[_Al] != null) {\n contents[_Al] = (0, import_smithy_client.expectString)(output[_Al]);\n }\n if (output[_Co] != null) {\n contents[_Co] = (0, import_smithy_client.expectString)(output[_Co]);\n }\n if (output[_LU] != null) {\n contents[_LU] = (0, import_smithy_client.expectNonNull)((0, import_smithy_client.parseRfc3339DateTimeWithOffset)(output[_LU]));\n }\n if (output[_TA] != null) {\n contents[_TA] = (0, import_smithy_client.expectString)(output[_TA]);\n }\n if (output[_TN] != null) {\n contents[_TN] = (0, import_smithy_client.expectString)(output[_TN]);\n }\n if (output[_IDC] != null) {\n contents[_IDC] = (0, import_smithy_client.parseBoolean)(output[_IDC]);\n }\n return contents;\n}, \"de_TypeConfigurationDetails\");\nvar de_TypeConfigurationDetailsList = /* @__PURE__ */ __name((output, context) => {\n return (output || []).filter((e) => e != null).map((entry) => {\n return de_TypeConfigurationDetails(entry, context);\n });\n}, \"de_TypeConfigurationDetailsList\");\nvar de_TypeConfigurationIdentifier = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_TA] != null) {\n contents[_TA] = (0, import_smithy_client.expectString)(output[_TA]);\n }\n if (output[_TCA] != null) {\n contents[_TCA] = (0, import_smithy_client.expectString)(output[_TCA]);\n }\n if (output[_TCAy] != null) {\n contents[_TCAy] = (0, import_smithy_client.expectString)(output[_TCAy]);\n }\n if (output[_T] != null) {\n contents[_T] = (0, import_smithy_client.expectString)(output[_T]);\n }\n if (output[_TN] != null) {\n contents[_TN] = (0, import_smithy_client.expectString)(output[_TN]);\n }\n return contents;\n}, \"de_TypeConfigurationIdentifier\");\nvar de_TypeConfigurationNotFoundException = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_M] != null) {\n contents[_M] = (0, import_smithy_client.expectString)(output[_M]);\n }\n return contents;\n}, \"de_TypeConfigurationNotFoundException\");\nvar de_TypeNotFoundException = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_M] != null) {\n contents[_M] = (0, import_smithy_client.expectString)(output[_M]);\n }\n return contents;\n}, \"de_TypeNotFoundException\");\nvar de_TypeSummaries = /* @__PURE__ */ __name((output, context) => {\n return (output || []).filter((e) => e != null).map((entry) => {\n return de_TypeSummary(entry, context);\n });\n}, \"de_TypeSummaries\");\nvar de_TypeSummary = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_T] != null) {\n contents[_T] = (0, import_smithy_client.expectString)(output[_T]);\n }\n if (output[_TN] != null) {\n contents[_TN] = (0, import_smithy_client.expectString)(output[_TN]);\n }\n if (output[_DVI] != null) {\n contents[_DVI] = (0, import_smithy_client.expectString)(output[_DVI]);\n }\n if (output[_TA] != null) {\n contents[_TA] = (0, import_smithy_client.expectString)(output[_TA]);\n }\n if (output[_LU] != null) {\n contents[_LU] = (0, import_smithy_client.expectNonNull)((0, import_smithy_client.parseRfc3339DateTimeWithOffset)(output[_LU]));\n }\n if (output[_D] != null) {\n contents[_D] = (0, import_smithy_client.expectString)(output[_D]);\n }\n if (output[_PI] != null) {\n contents[_PI] = (0, import_smithy_client.expectString)(output[_PI]);\n }\n if (output[_OTN] != null) {\n contents[_OTN] = (0, import_smithy_client.expectString)(output[_OTN]);\n }\n if (output[_PVN] != null) {\n contents[_PVN] = (0, import_smithy_client.expectString)(output[_PVN]);\n }\n if (output[_LPV] != null) {\n contents[_LPV] = (0, import_smithy_client.expectString)(output[_LPV]);\n }\n if (output[_PIu] != null) {\n contents[_PIu] = (0, import_smithy_client.expectString)(output[_PIu]);\n }\n if (output[_PN] != null) {\n contents[_PN] = (0, import_smithy_client.expectString)(output[_PN]);\n }\n if (output[_IA] != null) {\n contents[_IA] = (0, import_smithy_client.parseBoolean)(output[_IA]);\n }\n return contents;\n}, \"de_TypeSummary\");\nvar de_TypeVersionSummaries = /* @__PURE__ */ __name((output, context) => {\n return (output || []).filter((e) => e != null).map((entry) => {\n return de_TypeVersionSummary(entry, context);\n });\n}, \"de_TypeVersionSummaries\");\nvar de_TypeVersionSummary = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_T] != null) {\n contents[_T] = (0, import_smithy_client.expectString)(output[_T]);\n }\n if (output[_TN] != null) {\n contents[_TN] = (0, import_smithy_client.expectString)(output[_TN]);\n }\n if (output[_VI] != null) {\n contents[_VI] = (0, import_smithy_client.expectString)(output[_VI]);\n }\n if (output[_IDV] != null) {\n contents[_IDV] = (0, import_smithy_client.parseBoolean)(output[_IDV]);\n }\n if (output[_Ar] != null) {\n contents[_Ar] = (0, import_smithy_client.expectString)(output[_Ar]);\n }\n if (output[_TCi] != null) {\n contents[_TCi] = (0, import_smithy_client.expectNonNull)((0, import_smithy_client.parseRfc3339DateTimeWithOffset)(output[_TCi]));\n }\n if (output[_D] != null) {\n contents[_D] = (0, import_smithy_client.expectString)(output[_D]);\n }\n if (output[_PVN] != null) {\n contents[_PVN] = (0, import_smithy_client.expectString)(output[_PVN]);\n }\n return contents;\n}, \"de_TypeVersionSummary\");\nvar de_UnprocessedTypeConfigurations = /* @__PURE__ */ __name((output, context) => {\n return (output || []).filter((e) => e != null).map((entry) => {\n return de_TypeConfigurationIdentifier(entry, context);\n });\n}, \"de_UnprocessedTypeConfigurations\");\nvar de_UpdateGeneratedTemplateOutput = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_GTI] != null) {\n contents[_GTI] = (0, import_smithy_client.expectString)(output[_GTI]);\n }\n return contents;\n}, \"de_UpdateGeneratedTemplateOutput\");\nvar de_UpdateStackInstancesOutput = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_OI] != null) {\n contents[_OI] = (0, import_smithy_client.expectString)(output[_OI]);\n }\n return contents;\n}, \"de_UpdateStackInstancesOutput\");\nvar de_UpdateStackOutput = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_SI] != null) {\n contents[_SI] = (0, import_smithy_client.expectString)(output[_SI]);\n }\n return contents;\n}, \"de_UpdateStackOutput\");\nvar de_UpdateStackSetOutput = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_OI] != null) {\n contents[_OI] = (0, import_smithy_client.expectString)(output[_OI]);\n }\n return contents;\n}, \"de_UpdateStackSetOutput\");\nvar de_UpdateTerminationProtectionOutput = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_SI] != null) {\n contents[_SI] = (0, import_smithy_client.expectString)(output[_SI]);\n }\n return contents;\n}, \"de_UpdateTerminationProtectionOutput\");\nvar de_ValidateTemplateOutput = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output.Parameters === \"\") {\n contents[_P] = [];\n } else if (output[_P] != null && output[_P][_m] != null) {\n contents[_P] = de_TemplateParameters((0, import_smithy_client.getArrayIfSingleItem)(output[_P][_m]), context);\n }\n if (output[_D] != null) {\n contents[_D] = (0, import_smithy_client.expectString)(output[_D]);\n }\n if (output.Capabilities === \"\") {\n contents[_C] = [];\n } else if (output[_C] != null && output[_C][_m] != null) {\n contents[_C] = de_Capabilities((0, import_smithy_client.getArrayIfSingleItem)(output[_C][_m]), context);\n }\n if (output[_CR] != null) {\n contents[_CR] = (0, import_smithy_client.expectString)(output[_CR]);\n }\n if (output.DeclaredTransforms === \"\") {\n contents[_DTec] = [];\n } else if (output[_DTec] != null && output[_DTec][_m] != null) {\n contents[_DTec] = de_TransformsList((0, import_smithy_client.getArrayIfSingleItem)(output[_DTec][_m]), context);\n }\n return contents;\n}, \"de_ValidateTemplateOutput\");\nvar de_WarningDetail = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_T] != null) {\n contents[_T] = (0, import_smithy_client.expectString)(output[_T]);\n }\n if (output.Properties === \"\") {\n contents[_Pro] = [];\n } else if (output[_Pro] != null && output[_Pro][_m] != null) {\n contents[_Pro] = de_WarningProperties((0, import_smithy_client.getArrayIfSingleItem)(output[_Pro][_m]), context);\n }\n return contents;\n}, \"de_WarningDetail\");\nvar de_WarningDetails = /* @__PURE__ */ __name((output, context) => {\n return (output || []).filter((e) => e != null).map((entry) => {\n return de_WarningDetail(entry, context);\n });\n}, \"de_WarningDetails\");\nvar de_WarningProperties = /* @__PURE__ */ __name((output, context) => {\n return (output || []).filter((e) => e != null).map((entry) => {\n return de_WarningProperty(entry, context);\n });\n}, \"de_WarningProperties\");\nvar de_WarningProperty = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_PPr] != null) {\n contents[_PPr] = (0, import_smithy_client.expectString)(output[_PPr]);\n }\n if (output[_Req] != null) {\n contents[_Req] = (0, import_smithy_client.parseBoolean)(output[_Req]);\n }\n if (output[_D] != null) {\n contents[_D] = (0, import_smithy_client.expectString)(output[_D]);\n }\n return contents;\n}, \"de_WarningProperty\");\nvar de_Warnings = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output.UnrecognizedResourceTypes === \"\") {\n contents[_URT] = [];\n } else if (output[_URT] != null && output[_URT][_m] != null) {\n contents[_URT] = de_ResourceTypes((0, import_smithy_client.getArrayIfSingleItem)(output[_URT][_m]), context);\n }\n return contents;\n}, \"de_Warnings\");\nvar deserializeMetadata = /* @__PURE__ */ __name((output) => ({\n httpStatusCode: output.statusCode,\n requestId: output.headers[\"x-amzn-requestid\"] ?? output.headers[\"x-amzn-request-id\"] ?? output.headers[\"x-amz-request-id\"],\n extendedRequestId: output.headers[\"x-amz-id-2\"],\n cfId: output.headers[\"x-amz-cf-id\"]\n}), \"deserializeMetadata\");\nvar throwDefaultError = (0, import_smithy_client.withBaseException)(CloudFormationServiceException);\nvar buildHttpRpcRequest = /* @__PURE__ */ __name(async (context, headers, path, resolvedHostname, body) => {\n const { hostname, protocol = \"https\", port, path: basePath } = await context.endpoint();\n const contents = {\n protocol,\n hostname,\n port,\n method: \"POST\",\n path: basePath.endsWith(\"/\") ? basePath.slice(0, -1) + path : basePath + path,\n headers\n };\n if (resolvedHostname !== void 0) {\n contents.hostname = resolvedHostname;\n }\n if (body !== void 0) {\n contents.body = body;\n }\n return new import_protocol_http.HttpRequest(contents);\n}, \"buildHttpRpcRequest\");\nvar SHARED_HEADERS = {\n \"content-type\": \"application/x-www-form-urlencoded\"\n};\nvar _ = \"2010-05-15\";\nvar _A = \"Action\";\nvar _AC = \"AfterContext\";\nvar _ACT = \"AttributeChangeType\";\nvar _AD = \"AutoDeployment\";\nvar _AFT = \"AccountFilterType\";\nvar _AGR = \"AccountGateResult\";\nvar _AL = \"AccountLimits\";\nvar _AOA = \"ActivateOrganizationsAccess\";\nvar _AP = \"ActualProperties\";\nvar _AR = \"AddResources\";\nvar _ARARN = \"AdministrationRoleARN\";\nvar _AT = \"ActivateType\";\nvar _ATAC = \"AcceptTermsAndConditions\";\nvar _AU = \"AutoUpdate\";\nvar _AUc = \"AccountsUrl\";\nvar _AV = \"AllowedValues\";\nvar _AVc = \"ActualValue\";\nvar _AVf = \"AfterValue\";\nvar _Ac = \"Accounts\";\nvar _Acc = \"Account\";\nvar _Act = \"Active\";\nvar _Al = \"Alias\";\nvar _Ar = \"Arn\";\nvar _At = \"Attribute\";\nvar _BC = \"BeforeContext\";\nvar _BDTC = \"BatchDescribeTypeConfigurations\";\nvar _BT = \"BearerToken\";\nvar _BV = \"BeforeValue\";\nvar _C = \"Capabilities\";\nvar _CA = \"CallAs\";\nvar _CAo = \"ConnectionArn\";\nvar _CAon = \"ConfigurationAlias\";\nvar _CAonf = \"ConfigurationArn\";\nvar _CCS = \"CreateChangeSet\";\nvar _CE = \"CausingEntity\";\nvar _CGT = \"CreateGeneratedTemplate\";\nvar _CM = \"ConcurrencyMode\";\nvar _COS = \"CurrentOperationStatus\";\nvar _CR = \"CapabilitiesReason\";\nvar _CRT = \"ClientRequestToken\";\nvar _CS = \"CreateStack\";\nvar _CSI = \"CreateStackInstances\";\nvar _CSIh = \"ChangeSetId\";\nvar _CSN = \"ChangeSetName\";\nvar _CSS = \"CreateStackSet\";\nvar _CST = \"ChangeSetType\";\nvar _CSh = \"ChangeSource\";\nvar _CSo = \"ConfigurationSchema\";\nvar _CT = \"ClientToken\";\nvar _CTr = \"CreationTime\";\nvar _CTre = \"CreationTimestamp\";\nvar _CUR = \"ContinueUpdateRollback\";\nvar _CUS = \"CancelUpdateStack\";\nvar _Ca = \"Category\";\nvar _Ch = \"Changes\";\nvar _Co = \"Configuration\";\nvar _D = \"Description\";\nvar _DAL = \"DescribeAccountLimits\";\nvar _DCS = \"DeleteChangeSet\";\nvar _DCSH = \"DescribeChangeSetHooks\";\nvar _DCSe = \"DescribeChangeSet\";\nvar _DDS = \"DriftDetectionStatus\";\nvar _DGT = \"DeleteGeneratedTemplate\";\nvar _DGTe = \"DescribeGeneratedTemplate\";\nvar _DI = \"DriftInformation\";\nvar _DM = \"DeletionMode\";\nvar _DOA = \"DeactivateOrganizationsAccess\";\nvar _DOAe = \"DescribeOrganizationsAccess\";\nvar _DP = \"DescribePublisher\";\nvar _DPe = \"DeletionPolicy\";\nvar _DR = \"DisableRollback\";\nvar _DRS = \"DescribeResourceScan\";\nvar _DS = \"DeleteStack\";\nvar _DSD = \"DetectStackDrift\";\nvar _DSDDS = \"DescribeStackDriftDetectionStatus\";\nvar _DSE = \"DescribeStackEvents\";\nvar _DSI = \"DeleteStackInstances\";\nvar _DSIC = \"DriftedStackInstancesCount\";\nvar _DSIe = \"DescribeStackInstance\";\nvar _DSR = \"DescribeStackResource\";\nvar _DSRC = \"DriftedStackResourceCount\";\nvar _DSRD = \"DescribeStackResourceDrifts\";\nvar _DSRDe = \"DetectStackResourceDrift\";\nvar _DSRe = \"DescribeStackResources\";\nvar _DSRet = \"DetectionStatusReason\";\nvar _DSS = \"DeleteStackSet\";\nvar _DSSD = \"DetectStackSetDrift\";\nvar _DSSO = \"DescribeStackSetOperation\";\nvar _DSSe = \"DescribeStackSet\";\nvar _DSe = \"DescribeStacks\";\nvar _DSep = \"DeprecatedStatus\";\nvar _DSet = \"DetectionStatus\";\nvar _DSeta = \"DetailedStatus\";\nvar _DSr = \"DriftStatus\";\nvar _DT = \"DeactivateType\";\nvar _DTR = \"DescribeTypeRegistration\";\nvar _DTe = \"DeregisterType\";\nvar _DTec = \"DeclaredTransforms\";\nvar _DTel = \"DeletionTime\";\nvar _DTep = \"DeploymentTargets\";\nvar _DTes = \"DescribeType\";\nvar _DTi = \"DifferenceType\";\nvar _DU = \"DocumentationUrl\";\nvar _DV = \"DefaultValue\";\nvar _DVI = \"DefaultVersionId\";\nvar _De = \"Details\";\nvar _E = \"Enabled\";\nvar _EC = \"ErrorCode\";\nvar _ECS = \"ExecuteChangeSet\";\nvar _EI = \"EventId\";\nvar _EM = \"ErrorMessage\";\nvar _EN = \"ExportName\";\nvar _EP = \"ExpectedProperties\";\nvar _ERA = \"ExecutionRoleArn\";\nvar _ERN = \"ExecutionRoleName\";\nvar _ES = \"ExecutionStatus\";\nvar _ESI = \"ExportingStackId\";\nvar _ET = \"EndTime\";\nvar _ETC = \"EstimateTemplateCost\";\nvar _ETP = \"EnableTerminationProtection\";\nvar _ETn = \"EndTimestamp\";\nvar _EV = \"ExpectedValue\";\nvar _Er = \"Errors\";\nvar _Ev = \"Evaluation\";\nvar _Ex = \"Exports\";\nvar _F = \"Format\";\nvar _FM = \"FailureMode\";\nvar _FSIC = \"FailedStackInstancesCount\";\nvar _FTC = \"FailureToleranceCount\";\nvar _FTP = \"FailureTolerancePercentage\";\nvar _Fi = \"Filters\";\nvar _GGT = \"GetGeneratedTemplate\";\nvar _GSP = \"GetStackPolicy\";\nvar _GT = \"GetTemplate\";\nvar _GTI = \"GeneratedTemplateId\";\nvar _GTN = \"GeneratedTemplateName\";\nvar _GTS = \"GetTemplateSummary\";\nvar _H = \"Hooks\";\nvar _HFM = \"HookFailureMode\";\nvar _HIC = \"HookInvocationCount\";\nvar _HIP = \"HookInvocationPoint\";\nvar _HS = \"HookStatus\";\nvar _HSR = \"HookStatusReason\";\nvar _HT = \"HookType\";\nvar _I = \"Id\";\nvar _IA = \"IsActivated\";\nvar _IDC = \"IsDefaultConfiguration\";\nvar _IDV = \"IsDefaultVersion\";\nvar _IER = \"ImportExistingResources\";\nvar _INS = \"IncludeNestedStacks\";\nvar _IP = \"InvocationPoint\";\nvar _IPSIC = \"InProgressStackInstancesCount\";\nvar _IPV = \"IncludePropertyValues\";\nvar _IPd = \"IdentityProvider\";\nvar _ISSIC = \"InSyncStackInstancesCount\";\nvar _ISTSS = \"ImportStacksToStackSet\";\nvar _Im = \"Imports\";\nvar _K = \"Key\";\nvar _LC = \"LoggingConfig\";\nvar _LCS = \"ListChangeSets\";\nvar _LCT = \"LastCheckTimestamp\";\nvar _LDB = \"LogDeliveryBucket\";\nvar _LDCT = \"LastDriftCheckTimestamp\";\nvar _LE = \"ListExports\";\nvar _LGN = \"LogGroupName\";\nvar _LGT = \"ListGeneratedTemplates\";\nvar _LI = \"ListImports\";\nvar _LIH = \"LogicalIdHierarchy\";\nvar _LOI = \"LastOperationId\";\nvar _LPV = \"LatestPublicVersion\";\nvar _LRA = \"LogRoleArn\";\nvar _LRI = \"LogicalResourceId\";\nvar _LRIo = \"LogicalResourceIds\";\nvar _LRS = \"ListResourceScans\";\nvar _LRSR = \"ListResourceScanResources\";\nvar _LRSRR = \"ListResourceScanRelatedResources\";\nvar _LS = \"ListStacks\";\nvar _LSI = \"ListStackInstances\";\nvar _LSIRD = \"ListStackInstanceResourceDrifts\";\nvar _LSR = \"ListStackResources\";\nvar _LSS = \"ListStackSets\";\nvar _LSSADT = \"ListStackSetAutoDeploymentTargets\";\nvar _LSSO = \"ListStackSetOperations\";\nvar _LSSOR = \"ListStackSetOperationResults\";\nvar _LT = \"ListTypes\";\nvar _LTR = \"ListTypeRegistrations\";\nvar _LTV = \"ListTypeVersions\";\nvar _LU = \"LastUpdated\";\nvar _LUT = \"LastUpdatedTime\";\nvar _LUTa = \"LastUpdatedTimestamp\";\nvar _M = \"Message\";\nvar _MBS = \"ManagedByStack\";\nvar _MCC = \"MaxConcurrentCount\";\nvar _MCP = \"MaxConcurrentPercentage\";\nvar _ME = \"ManagedExecution\";\nvar _MI = \"ModuleInfo\";\nvar _MR = \"MaxResults\";\nvar _MTIM = \"MonitoringTimeInMinutes\";\nvar _MV = \"MajorVersion\";\nvar _Me = \"Metadata\";\nvar _N = \"Name\";\nvar _NARN = \"NotificationARNs\";\nvar _NE = \"NoEcho\";\nvar _NGTN = \"NewGeneratedTemplateName\";\nvar _NOR = \"NumberOfResources\";\nvar _NT = \"NextToken\";\nvar _O = \"Outputs\";\nvar _OF = \"OnFailure\";\nvar _OI = \"OperationId\";\nvar _OK = \"OutputKey\";\nvar _OP = \"OperationPreferences\";\nvar _OS = \"OperationStatus\";\nvar _OSF = \"OnStackFailure\";\nvar _OTA = \"OriginalTypeArn\";\nvar _OTN = \"OriginalTypeName\";\nvar _OUI = \"OrganizationalUnitIds\";\nvar _OUIr = \"OrganizationalUnitId\";\nvar _OV = \"OutputValue\";\nvar _P = \"Parameters\";\nvar _PA = \"PolicyAction\";\nvar _PC = \"PercentageCompleted\";\nvar _PCSI = \"ParentChangeSetId\";\nvar _PCa = \"ParameterConstraints\";\nvar _PD = \"PropertyDifferences\";\nvar _PI = \"PublisherId\";\nvar _PIa = \"ParentId\";\nvar _PIu = \"PublisherIdentity\";\nvar _PK = \"ParameterKey\";\nvar _PM = \"PermissionModel\";\nvar _PN = \"PublisherName\";\nvar _PO = \"ParameterOverrides\";\nvar _PP = \"PublisherProfile\";\nvar _PPr = \"PropertyPath\";\nvar _PRI = \"PhysicalResourceId\";\nvar _PRIC = \"PhysicalResourceIdContext\";\nvar _PS = \"PublisherStatus\";\nvar _PSr = \"ProgressStatus\";\nvar _PT = \"PublishType\";\nvar _PTA = \"PublicTypeArn\";\nvar _PTa = \"ParameterType\";\nvar _PTr = \"ProvisioningType\";\nvar _PV = \"ParameterValue\";\nvar _PVN = \"PublicVersionNumber\";\nvar _Pa = \"Path\";\nvar _Pr = \"Progress\";\nvar _Pro = \"Properties\";\nvar _R = \"Resources\";\nvar _RA = \"ResourceAction\";\nvar _RAR = \"RefreshAllResources\";\nvar _RARN = \"RoleARN\";\nvar _RAT = \"RequiredActivatedTypes\";\nvar _RC = \"RollbackConfiguration\";\nvar _RCSI = \"RootChangeSetId\";\nvar _RCT = \"RegionConcurrencyType\";\nvar _RCe = \"ResourceChange\";\nvar _REOC = \"RetainExceptOnCreate\";\nvar _RF = \"ResourcesFailed\";\nvar _RHP = \"RecordHandlerProgress\";\nvar _RI = \"ResourceIdentifier\";\nvar _RIS = \"ResourceIdentifierSummaries\";\nvar _RIe = \"ResourceIdentifiers\";\nvar _RIo = \"RootId\";\nvar _RM = \"ResourceModel\";\nvar _RO = \"RegionOrder\";\nvar _RP = \"RegisterPublisher\";\nvar _RPe = \"ResourceProperties\";\nvar _RPes = \"ResourcesProcessing\";\nvar _RPeso = \"ResourcesPending\";\nvar _RR = \"RetainResources\";\nvar _RRe = \"RemoveResources\";\nvar _RRel = \"RelatedResources\";\nvar _RReq = \"RequiresRecreation\";\nvar _RRes = \"ResourcesRead\";\nvar _RS = \"RollbackStack\";\nvar _RSF = \"RegistrationStatusFilter\";\nvar _RSI = \"ResourceScanId\";\nvar _RSOAR = \"RetainStacksOnAccountRemoval\";\nvar _RSR = \"ResourceStatusReason\";\nvar _RSS = \"ResourceScanSummaries\";\nvar _RSe = \"RetainStacks\";\nvar _RSes = \"ResourcesScanned\";\nvar _RSeso = \"ResourceStatus\";\nvar _RSesou = \"ResourcesSucceeded\";\nvar _RT = \"RegisterType\";\nvar _RTD = \"ResourceTargetDetails\";\nvar _RTI = \"ResourcesToImport\";\nvar _RTL = \"RegistrationTokenList\";\nvar _RTP = \"ResourceTypePrefix\";\nvar _RTS = \"ResourcesToSkip\";\nvar _RTe = \"ResourceTypes\";\nvar _RTeg = \"RegistrationToken\";\nvar _RTes = \"ResourceType\";\nvar _RTo = \"RollbackTriggers\";\nvar _RV = \"ResolvedValue\";\nvar _Re = \"Regions\";\nvar _Reg = \"Region\";\nvar _Rep = \"Replacement\";\nvar _Req = \"Required\";\nvar _S = \"Status\";\nvar _SA = \"StagesAvailable\";\nvar _SD = \"StatusDetails\";\nvar _SDDI = \"StackDriftDetectionId\";\nvar _SDS = \"StackDriftStatus\";\nvar _SE = \"StackEvents\";\nvar _SHP = \"SchemaHandlerPackage\";\nvar _SI = \"StackId\";\nvar _SIA = \"StackInstanceAccount\";\nvar _SIR = \"StackInstanceRegion\";\nvar _SIRDS = \"StackInstanceResourceDriftStatuses\";\nvar _SIS = \"StackInstanceStatus\";\nvar _SIU = \"StackIdsUrl\";\nvar _SIt = \"StackIds\";\nvar _SIta = \"StackInstance\";\nvar _SM = \"StatusMessage\";\nvar _SMV = \"SupportedMajorVersions\";\nvar _SN = \"StackName\";\nvar _SPB = \"StackPolicyBody\";\nvar _SPDUB = \"StackPolicyDuringUpdateBody\";\nvar _SPDUURL = \"StackPolicyDuringUpdateURL\";\nvar _SPURL = \"StackPolicyURL\";\nvar _SR = \"SignalResource\";\nvar _SRD = \"StackResourceDrifts\";\nvar _SRDS = \"StackResourceDriftStatus\";\nvar _SRDSF = \"StackResourceDriftStatusFilters\";\nvar _SRDt = \"StackResourceDetail\";\nvar _SRDta = \"StackResourceDrift\";\nvar _SRS = \"StartResourceScan\";\nvar _SRSt = \"StackResourceSummaries\";\nvar _SRt = \"StatusReason\";\nvar _SRta = \"StackResources\";\nvar _SS = \"StackSet\";\nvar _SSARN = \"StackSetARN\";\nvar _SSDDD = \"StackSetDriftDetectionDetails\";\nvar _SSF = \"StackStatusFilter\";\nvar _SSI = \"StackSetId\";\nvar _SSN = \"StackSetName\";\nvar _SSO = \"StackSetOperation\";\nvar _SSP = \"SetStackPolicy\";\nvar _SSR = \"StackStatusReason\";\nvar _SSSO = \"StopStackSetOperation\";\nvar _SSt = \"StackSummaries\";\nvar _SSta = \"StackStatus\";\nvar _ST = \"StartTime\";\nvar _STC = \"SetTypeConfiguration\";\nvar _STDV = \"SetTypeDefaultVersion\";\nvar _SU = \"SourceUrl\";\nvar _Sc = \"Schema\";\nvar _Sco = \"Scope\";\nvar _St = \"Stacks\";\nvar _Su = \"Summaries\";\nvar _T = \"Type\";\nvar _TA = \"TypeArn\";\nvar _TB = \"TemplateBody\";\nvar _TC = \"TemplateConfiguration\";\nvar _TCA = \"TypeConfigurationAlias\";\nvar _TCAy = \"TypeConfigurationArn\";\nvar _TCI = \"TypeConfigurationIdentifiers\";\nvar _TCIy = \"TypeConfigurationIdentifier\";\nvar _TCVI = \"TypeConfigurationVersionId\";\nvar _TCi = \"TimeCreated\";\nvar _TCy = \"TypeConfigurations\";\nvar _TD = \"TargetDetails\";\nvar _TDe = \"TemplateDescription\";\nvar _TH = \"TypeHierarchy\";\nvar _TIM = \"TimeoutInMinutes\";\nvar _TK = \"TagKey\";\nvar _TN = \"TypeName\";\nvar _TNA = \"TypeNameAlias\";\nvar _TNP = \"TypeNamePrefix\";\nvar _TS = \"TemplateStage\";\nvar _TSC = \"TemplateSummaryConfig\";\nvar _TSIC = \"TotalStackInstancesCount\";\nvar _TSy = \"TypeSummaries\";\nvar _TT = \"TestType\";\nvar _TTS = \"TypeTestsStatus\";\nvar _TTSD = \"TypeTestsStatusDescription\";\nvar _TTa = \"TargetType\";\nvar _TURL = \"TemplateURL\";\nvar _TURTAW = \"TreatUnrecognizedResourceTypesAsWarnings\";\nvar _TV = \"TagValue\";\nvar _TVA = \"TypeVersionArn\";\nvar _TVI = \"TypeVersionId\";\nvar _TVS = \"TypeVersionSummaries\";\nvar _TW = \"TotalWarnings\";\nvar _Ta = \"Tags\";\nvar _Tar = \"Target\";\nvar _Ti = \"Timestamp\";\nvar _U = \"Url\";\nvar _UGT = \"UpdateGeneratedTemplate\";\nvar _UI = \"UniqueId\";\nvar _UPT = \"UsePreviousTemplate\";\nvar _UPV = \"UsePreviousValue\";\nvar _URP = \"UpdateReplacePolicy\";\nvar _URT = \"UnrecognizedResourceTypes\";\nvar _US = \"UpdateStack\";\nvar _USI = \"UpdateStackInstances\";\nvar _USS = \"UpdateStackSet\";\nvar _UTC = \"UnprocessedTypeConfigurations\";\nvar _UTP = \"UpdateTerminationProtection\";\nvar _V = \"Version\";\nvar _VB = \"VersionBump\";\nvar _VI = \"VersionId\";\nvar _VT = \"ValidateTemplate\";\nvar _Va = \"Values\";\nvar _Val = \"Value\";\nvar _Vi = \"Visibility\";\nvar _W = \"Warnings\";\nvar _e = \"entry\";\nvar _m = \"member\";\nvar buildFormUrlencodedString = /* @__PURE__ */ __name((formEntries) => Object.entries(formEntries).map(([key, value]) => (0, import_smithy_client.extendedEncodeURIComponent)(key) + \"=\" + (0, import_smithy_client.extendedEncodeURIComponent)(value)).join(\"&\"), \"buildFormUrlencodedString\");\nvar loadQueryErrorCode = /* @__PURE__ */ __name((output, data) => {\n var _a;\n if (((_a = data.Error) == null ? void 0 : _a.Code) !== void 0) {\n return data.Error.Code;\n }\n if (output.statusCode == 404) {\n return \"NotFound\";\n }\n}, \"loadQueryErrorCode\");\n\n// src/commands/ActivateOrganizationsAccessCommand.ts\nvar _ActivateOrganizationsAccessCommand = class _ActivateOrganizationsAccessCommand extends import_smithy_client.Command.classBuilder().ep(commonParams).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"ActivateOrganizationsAccess\", {}).n(\"CloudFormationClient\", \"ActivateOrganizationsAccessCommand\").f(void 0, void 0).ser(se_ActivateOrganizationsAccessCommand).de(de_ActivateOrganizationsAccessCommand).build() {\n};\n__name(_ActivateOrganizationsAccessCommand, \"ActivateOrganizationsAccessCommand\");\nvar ActivateOrganizationsAccessCommand = _ActivateOrganizationsAccessCommand;\n\n// src/commands/ActivateTypeCommand.ts\n\n\n\nvar _ActivateTypeCommand = class _ActivateTypeCommand extends import_smithy_client.Command.classBuilder().ep(commonParams).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"ActivateType\", {}).n(\"CloudFormationClient\", \"ActivateTypeCommand\").f(void 0, void 0).ser(se_ActivateTypeCommand).de(de_ActivateTypeCommand).build() {\n};\n__name(_ActivateTypeCommand, \"ActivateTypeCommand\");\nvar ActivateTypeCommand = _ActivateTypeCommand;\n\n// src/commands/BatchDescribeTypeConfigurationsCommand.ts\n\n\n\nvar _BatchDescribeTypeConfigurationsCommand = class _BatchDescribeTypeConfigurationsCommand extends import_smithy_client.Command.classBuilder().ep(commonParams).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"BatchDescribeTypeConfigurations\", {}).n(\"CloudFormationClient\", \"BatchDescribeTypeConfigurationsCommand\").f(void 0, void 0).ser(se_BatchDescribeTypeConfigurationsCommand).de(de_BatchDescribeTypeConfigurationsCommand).build() {\n};\n__name(_BatchDescribeTypeConfigurationsCommand, \"BatchDescribeTypeConfigurationsCommand\");\nvar BatchDescribeTypeConfigurationsCommand = _BatchDescribeTypeConfigurationsCommand;\n\n// src/commands/CancelUpdateStackCommand.ts\n\n\n\nvar _CancelUpdateStackCommand = class _CancelUpdateStackCommand extends import_smithy_client.Command.classBuilder().ep(commonParams).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"CancelUpdateStack\", {}).n(\"CloudFormationClient\", \"CancelUpdateStackCommand\").f(void 0, void 0).ser(se_CancelUpdateStackCommand).de(de_CancelUpdateStackCommand).build() {\n};\n__name(_CancelUpdateStackCommand, \"CancelUpdateStackCommand\");\nvar CancelUpdateStackCommand = _CancelUpdateStackCommand;\n\n// src/commands/ContinueUpdateRollbackCommand.ts\n\n\n\nvar _ContinueUpdateRollbackCommand = class _ContinueUpdateRollbackCommand extends import_smithy_client.Command.classBuilder().ep(commonParams).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"ContinueUpdateRollback\", {}).n(\"CloudFormationClient\", \"ContinueUpdateRollbackCommand\").f(void 0, void 0).ser(se_ContinueUpdateRollbackCommand).de(de_ContinueUpdateRollbackCommand).build() {\n};\n__name(_ContinueUpdateRollbackCommand, \"ContinueUpdateRollbackCommand\");\nvar ContinueUpdateRollbackCommand = _ContinueUpdateRollbackCommand;\n\n// src/commands/CreateChangeSetCommand.ts\n\n\n\nvar _CreateChangeSetCommand = class _CreateChangeSetCommand extends import_smithy_client.Command.classBuilder().ep(commonParams).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"CreateChangeSet\", {}).n(\"CloudFormationClient\", \"CreateChangeSetCommand\").f(void 0, void 0).ser(se_CreateChangeSetCommand).de(de_CreateChangeSetCommand).build() {\n};\n__name(_CreateChangeSetCommand, \"CreateChangeSetCommand\");\nvar CreateChangeSetCommand = _CreateChangeSetCommand;\n\n// src/commands/CreateGeneratedTemplateCommand.ts\n\n\n\nvar _CreateGeneratedTemplateCommand = class _CreateGeneratedTemplateCommand extends import_smithy_client.Command.classBuilder().ep(commonParams).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"CreateGeneratedTemplate\", {}).n(\"CloudFormationClient\", \"CreateGeneratedTemplateCommand\").f(void 0, void 0).ser(se_CreateGeneratedTemplateCommand).de(de_CreateGeneratedTemplateCommand).build() {\n};\n__name(_CreateGeneratedTemplateCommand, \"CreateGeneratedTemplateCommand\");\nvar CreateGeneratedTemplateCommand = _CreateGeneratedTemplateCommand;\n\n// src/commands/CreateStackCommand.ts\n\n\n\nvar _CreateStackCommand = class _CreateStackCommand extends import_smithy_client.Command.classBuilder().ep(commonParams).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"CreateStack\", {}).n(\"CloudFormationClient\", \"CreateStackCommand\").f(void 0, void 0).ser(se_CreateStackCommand).de(de_CreateStackCommand).build() {\n};\n__name(_CreateStackCommand, \"CreateStackCommand\");\nvar CreateStackCommand = _CreateStackCommand;\n\n// src/commands/CreateStackInstancesCommand.ts\n\n\n\nvar _CreateStackInstancesCommand = class _CreateStackInstancesCommand extends import_smithy_client.Command.classBuilder().ep(commonParams).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"CreateStackInstances\", {}).n(\"CloudFormationClient\", \"CreateStackInstancesCommand\").f(void 0, void 0).ser(se_CreateStackInstancesCommand).de(de_CreateStackInstancesCommand).build() {\n};\n__name(_CreateStackInstancesCommand, \"CreateStackInstancesCommand\");\nvar CreateStackInstancesCommand = _CreateStackInstancesCommand;\n\n// src/commands/CreateStackSetCommand.ts\n\n\n\nvar _CreateStackSetCommand = class _CreateStackSetCommand extends import_smithy_client.Command.classBuilder().ep(commonParams).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"CreateStackSet\", {}).n(\"CloudFormationClient\", \"CreateStackSetCommand\").f(void 0, void 0).ser(se_CreateStackSetCommand).de(de_CreateStackSetCommand).build() {\n};\n__name(_CreateStackSetCommand, \"CreateStackSetCommand\");\nvar CreateStackSetCommand = _CreateStackSetCommand;\n\n// src/commands/DeactivateOrganizationsAccessCommand.ts\n\n\n\nvar _DeactivateOrganizationsAccessCommand = class _DeactivateOrganizationsAccessCommand extends import_smithy_client.Command.classBuilder().ep(commonParams).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"DeactivateOrganizationsAccess\", {}).n(\"CloudFormationClient\", \"DeactivateOrganizationsAccessCommand\").f(void 0, void 0).ser(se_DeactivateOrganizationsAccessCommand).de(de_DeactivateOrganizationsAccessCommand).build() {\n};\n__name(_DeactivateOrganizationsAccessCommand, \"DeactivateOrganizationsAccessCommand\");\nvar DeactivateOrganizationsAccessCommand = _DeactivateOrganizationsAccessCommand;\n\n// src/commands/DeactivateTypeCommand.ts\n\n\n\nvar _DeactivateTypeCommand = class _DeactivateTypeCommand extends import_smithy_client.Command.classBuilder().ep(commonParams).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"DeactivateType\", {}).n(\"CloudFormationClient\", \"DeactivateTypeCommand\").f(void 0, void 0).ser(se_DeactivateTypeCommand).de(de_DeactivateTypeCommand).build() {\n};\n__name(_DeactivateTypeCommand, \"DeactivateTypeCommand\");\nvar DeactivateTypeCommand = _DeactivateTypeCommand;\n\n// src/commands/DeleteChangeSetCommand.ts\n\n\n\nvar _DeleteChangeSetCommand = class _DeleteChangeSetCommand extends import_smithy_client.Command.classBuilder().ep(commonParams).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"DeleteChangeSet\", {}).n(\"CloudFormationClient\", \"DeleteChangeSetCommand\").f(void 0, void 0).ser(se_DeleteChangeSetCommand).de(de_DeleteChangeSetCommand).build() {\n};\n__name(_DeleteChangeSetCommand, \"DeleteChangeSetCommand\");\nvar DeleteChangeSetCommand = _DeleteChangeSetCommand;\n\n// src/commands/DeleteGeneratedTemplateCommand.ts\n\n\n\nvar _DeleteGeneratedTemplateCommand = class _DeleteGeneratedTemplateCommand extends import_smithy_client.Command.classBuilder().ep(commonParams).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"DeleteGeneratedTemplate\", {}).n(\"CloudFormationClient\", \"DeleteGeneratedTemplateCommand\").f(void 0, void 0).ser(se_DeleteGeneratedTemplateCommand).de(de_DeleteGeneratedTemplateCommand).build() {\n};\n__name(_DeleteGeneratedTemplateCommand, \"DeleteGeneratedTemplateCommand\");\nvar DeleteGeneratedTemplateCommand = _DeleteGeneratedTemplateCommand;\n\n// src/commands/DeleteStackCommand.ts\n\n\n\nvar _DeleteStackCommand = class _DeleteStackCommand extends import_smithy_client.Command.classBuilder().ep(commonParams).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"DeleteStack\", {}).n(\"CloudFormationClient\", \"DeleteStackCommand\").f(void 0, void 0).ser(se_DeleteStackCommand).de(de_DeleteStackCommand).build() {\n};\n__name(_DeleteStackCommand, \"DeleteStackCommand\");\nvar DeleteStackCommand = _DeleteStackCommand;\n\n// src/commands/DeleteStackInstancesCommand.ts\n\n\n\nvar _DeleteStackInstancesCommand = class _DeleteStackInstancesCommand extends import_smithy_client.Command.classBuilder().ep(commonParams).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"DeleteStackInstances\", {}).n(\"CloudFormationClient\", \"DeleteStackInstancesCommand\").f(void 0, void 0).ser(se_DeleteStackInstancesCommand).de(de_DeleteStackInstancesCommand).build() {\n};\n__name(_DeleteStackInstancesCommand, \"DeleteStackInstancesCommand\");\nvar DeleteStackInstancesCommand = _DeleteStackInstancesCommand;\n\n// src/commands/DeleteStackSetCommand.ts\n\n\n\nvar _DeleteStackSetCommand = class _DeleteStackSetCommand extends import_smithy_client.Command.classBuilder().ep(commonParams).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"DeleteStackSet\", {}).n(\"CloudFormationClient\", \"DeleteStackSetCommand\").f(void 0, void 0).ser(se_DeleteStackSetCommand).de(de_DeleteStackSetCommand).build() {\n};\n__name(_DeleteStackSetCommand, \"DeleteStackSetCommand\");\nvar DeleteStackSetCommand = _DeleteStackSetCommand;\n\n// src/commands/DeregisterTypeCommand.ts\n\n\n\nvar _DeregisterTypeCommand = class _DeregisterTypeCommand extends import_smithy_client.Command.classBuilder().ep(commonParams).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"DeregisterType\", {}).n(\"CloudFormationClient\", \"DeregisterTypeCommand\").f(void 0, void 0).ser(se_DeregisterTypeCommand).de(de_DeregisterTypeCommand).build() {\n};\n__name(_DeregisterTypeCommand, \"DeregisterTypeCommand\");\nvar DeregisterTypeCommand = _DeregisterTypeCommand;\n\n// src/commands/DescribeAccountLimitsCommand.ts\n\n\n\nvar _DescribeAccountLimitsCommand = class _DescribeAccountLimitsCommand extends import_smithy_client.Command.classBuilder().ep(commonParams).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"DescribeAccountLimits\", {}).n(\"CloudFormationClient\", \"DescribeAccountLimitsCommand\").f(void 0, void 0).ser(se_DescribeAccountLimitsCommand).de(de_DescribeAccountLimitsCommand).build() {\n};\n__name(_DescribeAccountLimitsCommand, \"DescribeAccountLimitsCommand\");\nvar DescribeAccountLimitsCommand = _DescribeAccountLimitsCommand;\n\n// src/commands/DescribeChangeSetCommand.ts\n\n\n\nvar _DescribeChangeSetCommand = class _DescribeChangeSetCommand extends import_smithy_client.Command.classBuilder().ep(commonParams).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"DescribeChangeSet\", {}).n(\"CloudFormationClient\", \"DescribeChangeSetCommand\").f(void 0, void 0).ser(se_DescribeChangeSetCommand).de(de_DescribeChangeSetCommand).build() {\n};\n__name(_DescribeChangeSetCommand, \"DescribeChangeSetCommand\");\nvar DescribeChangeSetCommand = _DescribeChangeSetCommand;\n\n// src/commands/DescribeChangeSetHooksCommand.ts\n\n\n\nvar _DescribeChangeSetHooksCommand = class _DescribeChangeSetHooksCommand extends import_smithy_client.Command.classBuilder().ep(commonParams).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"DescribeChangeSetHooks\", {}).n(\"CloudFormationClient\", \"DescribeChangeSetHooksCommand\").f(void 0, void 0).ser(se_DescribeChangeSetHooksCommand).de(de_DescribeChangeSetHooksCommand).build() {\n};\n__name(_DescribeChangeSetHooksCommand, \"DescribeChangeSetHooksCommand\");\nvar DescribeChangeSetHooksCommand = _DescribeChangeSetHooksCommand;\n\n// src/commands/DescribeGeneratedTemplateCommand.ts\n\n\n\nvar _DescribeGeneratedTemplateCommand = class _DescribeGeneratedTemplateCommand extends import_smithy_client.Command.classBuilder().ep(commonParams).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"DescribeGeneratedTemplate\", {}).n(\"CloudFormationClient\", \"DescribeGeneratedTemplateCommand\").f(void 0, void 0).ser(se_DescribeGeneratedTemplateCommand).de(de_DescribeGeneratedTemplateCommand).build() {\n};\n__name(_DescribeGeneratedTemplateCommand, \"DescribeGeneratedTemplateCommand\");\nvar DescribeGeneratedTemplateCommand = _DescribeGeneratedTemplateCommand;\n\n// src/commands/DescribeOrganizationsAccessCommand.ts\n\n\n\nvar _DescribeOrganizationsAccessCommand = class _DescribeOrganizationsAccessCommand extends import_smithy_client.Command.classBuilder().ep(commonParams).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"DescribeOrganizationsAccess\", {}).n(\"CloudFormationClient\", \"DescribeOrganizationsAccessCommand\").f(void 0, void 0).ser(se_DescribeOrganizationsAccessCommand).de(de_DescribeOrganizationsAccessCommand).build() {\n};\n__name(_DescribeOrganizationsAccessCommand, \"DescribeOrganizationsAccessCommand\");\nvar DescribeOrganizationsAccessCommand = _DescribeOrganizationsAccessCommand;\n\n// src/commands/DescribePublisherCommand.ts\n\n\n\nvar _DescribePublisherCommand = class _DescribePublisherCommand extends import_smithy_client.Command.classBuilder().ep(commonParams).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"DescribePublisher\", {}).n(\"CloudFormationClient\", \"DescribePublisherCommand\").f(void 0, void 0).ser(se_DescribePublisherCommand).de(de_DescribePublisherCommand).build() {\n};\n__name(_DescribePublisherCommand, \"DescribePublisherCommand\");\nvar DescribePublisherCommand = _DescribePublisherCommand;\n\n// src/commands/DescribeResourceScanCommand.ts\n\n\n\nvar _DescribeResourceScanCommand = class _DescribeResourceScanCommand extends import_smithy_client.Command.classBuilder().ep(commonParams).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"DescribeResourceScan\", {}).n(\"CloudFormationClient\", \"DescribeResourceScanCommand\").f(void 0, void 0).ser(se_DescribeResourceScanCommand).de(de_DescribeResourceScanCommand).build() {\n};\n__name(_DescribeResourceScanCommand, \"DescribeResourceScanCommand\");\nvar DescribeResourceScanCommand = _DescribeResourceScanCommand;\n\n// src/commands/DescribeStackDriftDetectionStatusCommand.ts\n\n\n\nvar _DescribeStackDriftDetectionStatusCommand = class _DescribeStackDriftDetectionStatusCommand extends import_smithy_client.Command.classBuilder().ep(commonParams).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"DescribeStackDriftDetectionStatus\", {}).n(\"CloudFormationClient\", \"DescribeStackDriftDetectionStatusCommand\").f(void 0, void 0).ser(se_DescribeStackDriftDetectionStatusCommand).de(de_DescribeStackDriftDetectionStatusCommand).build() {\n};\n__name(_DescribeStackDriftDetectionStatusCommand, \"DescribeStackDriftDetectionStatusCommand\");\nvar DescribeStackDriftDetectionStatusCommand = _DescribeStackDriftDetectionStatusCommand;\n\n// src/commands/DescribeStackEventsCommand.ts\n\n\n\nvar _DescribeStackEventsCommand = class _DescribeStackEventsCommand extends import_smithy_client.Command.classBuilder().ep(commonParams).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"DescribeStackEvents\", {}).n(\"CloudFormationClient\", \"DescribeStackEventsCommand\").f(void 0, void 0).ser(se_DescribeStackEventsCommand).de(de_DescribeStackEventsCommand).build() {\n};\n__name(_DescribeStackEventsCommand, \"DescribeStackEventsCommand\");\nvar DescribeStackEventsCommand = _DescribeStackEventsCommand;\n\n// src/commands/DescribeStackInstanceCommand.ts\n\n\n\nvar _DescribeStackInstanceCommand = class _DescribeStackInstanceCommand extends import_smithy_client.Command.classBuilder().ep(commonParams).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"DescribeStackInstance\", {}).n(\"CloudFormationClient\", \"DescribeStackInstanceCommand\").f(void 0, void 0).ser(se_DescribeStackInstanceCommand).de(de_DescribeStackInstanceCommand).build() {\n};\n__name(_DescribeStackInstanceCommand, \"DescribeStackInstanceCommand\");\nvar DescribeStackInstanceCommand = _DescribeStackInstanceCommand;\n\n// src/commands/DescribeStackResourceCommand.ts\n\n\n\nvar _DescribeStackResourceCommand = class _DescribeStackResourceCommand extends import_smithy_client.Command.classBuilder().ep(commonParams).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"DescribeStackResource\", {}).n(\"CloudFormationClient\", \"DescribeStackResourceCommand\").f(void 0, void 0).ser(se_DescribeStackResourceCommand).de(de_DescribeStackResourceCommand).build() {\n};\n__name(_DescribeStackResourceCommand, \"DescribeStackResourceCommand\");\nvar DescribeStackResourceCommand = _DescribeStackResourceCommand;\n\n// src/commands/DescribeStackResourceDriftsCommand.ts\n\n\n\nvar _DescribeStackResourceDriftsCommand = class _DescribeStackResourceDriftsCommand extends import_smithy_client.Command.classBuilder().ep(commonParams).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"DescribeStackResourceDrifts\", {}).n(\"CloudFormationClient\", \"DescribeStackResourceDriftsCommand\").f(void 0, void 0).ser(se_DescribeStackResourceDriftsCommand).de(de_DescribeStackResourceDriftsCommand).build() {\n};\n__name(_DescribeStackResourceDriftsCommand, \"DescribeStackResourceDriftsCommand\");\nvar DescribeStackResourceDriftsCommand = _DescribeStackResourceDriftsCommand;\n\n// src/commands/DescribeStackResourcesCommand.ts\n\n\n\nvar _DescribeStackResourcesCommand = class _DescribeStackResourcesCommand extends import_smithy_client.Command.classBuilder().ep(commonParams).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"DescribeStackResources\", {}).n(\"CloudFormationClient\", \"DescribeStackResourcesCommand\").f(void 0, void 0).ser(se_DescribeStackResourcesCommand).de(de_DescribeStackResourcesCommand).build() {\n};\n__name(_DescribeStackResourcesCommand, \"DescribeStackResourcesCommand\");\nvar DescribeStackResourcesCommand = _DescribeStackResourcesCommand;\n\n// src/commands/DescribeStacksCommand.ts\n\n\n\nvar _DescribeStacksCommand = class _DescribeStacksCommand extends import_smithy_client.Command.classBuilder().ep(commonParams).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"DescribeStacks\", {}).n(\"CloudFormationClient\", \"DescribeStacksCommand\").f(void 0, void 0).ser(se_DescribeStacksCommand).de(de_DescribeStacksCommand).build() {\n};\n__name(_DescribeStacksCommand, \"DescribeStacksCommand\");\nvar DescribeStacksCommand = _DescribeStacksCommand;\n\n// src/commands/DescribeStackSetCommand.ts\n\n\n\nvar _DescribeStackSetCommand = class _DescribeStackSetCommand extends import_smithy_client.Command.classBuilder().ep(commonParams).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"DescribeStackSet\", {}).n(\"CloudFormationClient\", \"DescribeStackSetCommand\").f(void 0, void 0).ser(se_DescribeStackSetCommand).de(de_DescribeStackSetCommand).build() {\n};\n__name(_DescribeStackSetCommand, \"DescribeStackSetCommand\");\nvar DescribeStackSetCommand = _DescribeStackSetCommand;\n\n// src/commands/DescribeStackSetOperationCommand.ts\n\n\n\nvar _DescribeStackSetOperationCommand = class _DescribeStackSetOperationCommand extends import_smithy_client.Command.classBuilder().ep(commonParams).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"DescribeStackSetOperation\", {}).n(\"CloudFormationClient\", \"DescribeStackSetOperationCommand\").f(void 0, void 0).ser(se_DescribeStackSetOperationCommand).de(de_DescribeStackSetOperationCommand).build() {\n};\n__name(_DescribeStackSetOperationCommand, \"DescribeStackSetOperationCommand\");\nvar DescribeStackSetOperationCommand = _DescribeStackSetOperationCommand;\n\n// src/commands/DescribeTypeCommand.ts\n\n\n\nvar _DescribeTypeCommand = class _DescribeTypeCommand extends import_smithy_client.Command.classBuilder().ep(commonParams).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"DescribeType\", {}).n(\"CloudFormationClient\", \"DescribeTypeCommand\").f(void 0, void 0).ser(se_DescribeTypeCommand).de(de_DescribeTypeCommand).build() {\n};\n__name(_DescribeTypeCommand, \"DescribeTypeCommand\");\nvar DescribeTypeCommand = _DescribeTypeCommand;\n\n// src/commands/DescribeTypeRegistrationCommand.ts\n\n\n\nvar _DescribeTypeRegistrationCommand = class _DescribeTypeRegistrationCommand extends import_smithy_client.Command.classBuilder().ep(commonParams).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"DescribeTypeRegistration\", {}).n(\"CloudFormationClient\", \"DescribeTypeRegistrationCommand\").f(void 0, void 0).ser(se_DescribeTypeRegistrationCommand).de(de_DescribeTypeRegistrationCommand).build() {\n};\n__name(_DescribeTypeRegistrationCommand, \"DescribeTypeRegistrationCommand\");\nvar DescribeTypeRegistrationCommand = _DescribeTypeRegistrationCommand;\n\n// src/commands/DetectStackDriftCommand.ts\n\n\n\nvar _DetectStackDriftCommand = class _DetectStackDriftCommand extends import_smithy_client.Command.classBuilder().ep(commonParams).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"DetectStackDrift\", {}).n(\"CloudFormationClient\", \"DetectStackDriftCommand\").f(void 0, void 0).ser(se_DetectStackDriftCommand).de(de_DetectStackDriftCommand).build() {\n};\n__name(_DetectStackDriftCommand, \"DetectStackDriftCommand\");\nvar DetectStackDriftCommand = _DetectStackDriftCommand;\n\n// src/commands/DetectStackResourceDriftCommand.ts\n\n\n\nvar _DetectStackResourceDriftCommand = class _DetectStackResourceDriftCommand extends import_smithy_client.Command.classBuilder().ep(commonParams).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"DetectStackResourceDrift\", {}).n(\"CloudFormationClient\", \"DetectStackResourceDriftCommand\").f(void 0, void 0).ser(se_DetectStackResourceDriftCommand).de(de_DetectStackResourceDriftCommand).build() {\n};\n__name(_DetectStackResourceDriftCommand, \"DetectStackResourceDriftCommand\");\nvar DetectStackResourceDriftCommand = _DetectStackResourceDriftCommand;\n\n// src/commands/DetectStackSetDriftCommand.ts\n\n\n\nvar _DetectStackSetDriftCommand = class _DetectStackSetDriftCommand extends import_smithy_client.Command.classBuilder().ep(commonParams).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"DetectStackSetDrift\", {}).n(\"CloudFormationClient\", \"DetectStackSetDriftCommand\").f(void 0, void 0).ser(se_DetectStackSetDriftCommand).de(de_DetectStackSetDriftCommand).build() {\n};\n__name(_DetectStackSetDriftCommand, \"DetectStackSetDriftCommand\");\nvar DetectStackSetDriftCommand = _DetectStackSetDriftCommand;\n\n// src/commands/EstimateTemplateCostCommand.ts\n\n\n\nvar _EstimateTemplateCostCommand = class _EstimateTemplateCostCommand extends import_smithy_client.Command.classBuilder().ep(commonParams).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"EstimateTemplateCost\", {}).n(\"CloudFormationClient\", \"EstimateTemplateCostCommand\").f(void 0, void 0).ser(se_EstimateTemplateCostCommand).de(de_EstimateTemplateCostCommand).build() {\n};\n__name(_EstimateTemplateCostCommand, \"EstimateTemplateCostCommand\");\nvar EstimateTemplateCostCommand = _EstimateTemplateCostCommand;\n\n// src/commands/ExecuteChangeSetCommand.ts\n\n\n\nvar _ExecuteChangeSetCommand = class _ExecuteChangeSetCommand extends import_smithy_client.Command.classBuilder().ep(commonParams).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"ExecuteChangeSet\", {}).n(\"CloudFormationClient\", \"ExecuteChangeSetCommand\").f(void 0, void 0).ser(se_ExecuteChangeSetCommand).de(de_ExecuteChangeSetCommand).build() {\n};\n__name(_ExecuteChangeSetCommand, \"ExecuteChangeSetCommand\");\nvar ExecuteChangeSetCommand = _ExecuteChangeSetCommand;\n\n// src/commands/GetGeneratedTemplateCommand.ts\n\n\n\nvar _GetGeneratedTemplateCommand = class _GetGeneratedTemplateCommand extends import_smithy_client.Command.classBuilder().ep(commonParams).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"GetGeneratedTemplate\", {}).n(\"CloudFormationClient\", \"GetGeneratedTemplateCommand\").f(void 0, void 0).ser(se_GetGeneratedTemplateCommand).de(de_GetGeneratedTemplateCommand).build() {\n};\n__name(_GetGeneratedTemplateCommand, \"GetGeneratedTemplateCommand\");\nvar GetGeneratedTemplateCommand = _GetGeneratedTemplateCommand;\n\n// src/commands/GetStackPolicyCommand.ts\n\n\n\nvar _GetStackPolicyCommand = class _GetStackPolicyCommand extends import_smithy_client.Command.classBuilder().ep(commonParams).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"GetStackPolicy\", {}).n(\"CloudFormationClient\", \"GetStackPolicyCommand\").f(void 0, void 0).ser(se_GetStackPolicyCommand).de(de_GetStackPolicyCommand).build() {\n};\n__name(_GetStackPolicyCommand, \"GetStackPolicyCommand\");\nvar GetStackPolicyCommand = _GetStackPolicyCommand;\n\n// src/commands/GetTemplateCommand.ts\n\n\n\nvar _GetTemplateCommand = class _GetTemplateCommand extends import_smithy_client.Command.classBuilder().ep(commonParams).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"GetTemplate\", {}).n(\"CloudFormationClient\", \"GetTemplateCommand\").f(void 0, void 0).ser(se_GetTemplateCommand).de(de_GetTemplateCommand).build() {\n};\n__name(_GetTemplateCommand, \"GetTemplateCommand\");\nvar GetTemplateCommand = _GetTemplateCommand;\n\n// src/commands/GetTemplateSummaryCommand.ts\n\n\n\nvar _GetTemplateSummaryCommand = class _GetTemplateSummaryCommand extends import_smithy_client.Command.classBuilder().ep(commonParams).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"GetTemplateSummary\", {}).n(\"CloudFormationClient\", \"GetTemplateSummaryCommand\").f(void 0, void 0).ser(se_GetTemplateSummaryCommand).de(de_GetTemplateSummaryCommand).build() {\n};\n__name(_GetTemplateSummaryCommand, \"GetTemplateSummaryCommand\");\nvar GetTemplateSummaryCommand = _GetTemplateSummaryCommand;\n\n// src/commands/ImportStacksToStackSetCommand.ts\n\n\n\nvar _ImportStacksToStackSetCommand = class _ImportStacksToStackSetCommand extends import_smithy_client.Command.classBuilder().ep(commonParams).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"ImportStacksToStackSet\", {}).n(\"CloudFormationClient\", \"ImportStacksToStackSetCommand\").f(void 0, void 0).ser(se_ImportStacksToStackSetCommand).de(de_ImportStacksToStackSetCommand).build() {\n};\n__name(_ImportStacksToStackSetCommand, \"ImportStacksToStackSetCommand\");\nvar ImportStacksToStackSetCommand = _ImportStacksToStackSetCommand;\n\n// src/commands/ListChangeSetsCommand.ts\n\n\n\nvar _ListChangeSetsCommand = class _ListChangeSetsCommand extends import_smithy_client.Command.classBuilder().ep(commonParams).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"ListChangeSets\", {}).n(\"CloudFormationClient\", \"ListChangeSetsCommand\").f(void 0, void 0).ser(se_ListChangeSetsCommand).de(de_ListChangeSetsCommand).build() {\n};\n__name(_ListChangeSetsCommand, \"ListChangeSetsCommand\");\nvar ListChangeSetsCommand = _ListChangeSetsCommand;\n\n// src/commands/ListExportsCommand.ts\n\n\n\nvar _ListExportsCommand = class _ListExportsCommand extends import_smithy_client.Command.classBuilder().ep(commonParams).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"ListExports\", {}).n(\"CloudFormationClient\", \"ListExportsCommand\").f(void 0, void 0).ser(se_ListExportsCommand).de(de_ListExportsCommand).build() {\n};\n__name(_ListExportsCommand, \"ListExportsCommand\");\nvar ListExportsCommand = _ListExportsCommand;\n\n// src/commands/ListGeneratedTemplatesCommand.ts\n\n\n\nvar _ListGeneratedTemplatesCommand = class _ListGeneratedTemplatesCommand extends import_smithy_client.Command.classBuilder().ep(commonParams).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"ListGeneratedTemplates\", {}).n(\"CloudFormationClient\", \"ListGeneratedTemplatesCommand\").f(void 0, void 0).ser(se_ListGeneratedTemplatesCommand).de(de_ListGeneratedTemplatesCommand).build() {\n};\n__name(_ListGeneratedTemplatesCommand, \"ListGeneratedTemplatesCommand\");\nvar ListGeneratedTemplatesCommand = _ListGeneratedTemplatesCommand;\n\n// src/commands/ListImportsCommand.ts\n\n\n\nvar _ListImportsCommand = class _ListImportsCommand extends import_smithy_client.Command.classBuilder().ep(commonParams).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"ListImports\", {}).n(\"CloudFormationClient\", \"ListImportsCommand\").f(void 0, void 0).ser(se_ListImportsCommand).de(de_ListImportsCommand).build() {\n};\n__name(_ListImportsCommand, \"ListImportsCommand\");\nvar ListImportsCommand = _ListImportsCommand;\n\n// src/commands/ListResourceScanRelatedResourcesCommand.ts\n\n\n\nvar _ListResourceScanRelatedResourcesCommand = class _ListResourceScanRelatedResourcesCommand extends import_smithy_client.Command.classBuilder().ep(commonParams).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"ListResourceScanRelatedResources\", {}).n(\"CloudFormationClient\", \"ListResourceScanRelatedResourcesCommand\").f(void 0, void 0).ser(se_ListResourceScanRelatedResourcesCommand).de(de_ListResourceScanRelatedResourcesCommand).build() {\n};\n__name(_ListResourceScanRelatedResourcesCommand, \"ListResourceScanRelatedResourcesCommand\");\nvar ListResourceScanRelatedResourcesCommand = _ListResourceScanRelatedResourcesCommand;\n\n// src/commands/ListResourceScanResourcesCommand.ts\n\n\n\nvar _ListResourceScanResourcesCommand = class _ListResourceScanResourcesCommand extends import_smithy_client.Command.classBuilder().ep(commonParams).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"ListResourceScanResources\", {}).n(\"CloudFormationClient\", \"ListResourceScanResourcesCommand\").f(void 0, void 0).ser(se_ListResourceScanResourcesCommand).de(de_ListResourceScanResourcesCommand).build() {\n};\n__name(_ListResourceScanResourcesCommand, \"ListResourceScanResourcesCommand\");\nvar ListResourceScanResourcesCommand = _ListResourceScanResourcesCommand;\n\n// src/commands/ListResourceScansCommand.ts\n\n\n\nvar _ListResourceScansCommand = class _ListResourceScansCommand extends import_smithy_client.Command.classBuilder().ep(commonParams).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"ListResourceScans\", {}).n(\"CloudFormationClient\", \"ListResourceScansCommand\").f(void 0, void 0).ser(se_ListResourceScansCommand).de(de_ListResourceScansCommand).build() {\n};\n__name(_ListResourceScansCommand, \"ListResourceScansCommand\");\nvar ListResourceScansCommand = _ListResourceScansCommand;\n\n// src/commands/ListStackInstanceResourceDriftsCommand.ts\n\n\n\nvar _ListStackInstanceResourceDriftsCommand = class _ListStackInstanceResourceDriftsCommand extends import_smithy_client.Command.classBuilder().ep(commonParams).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"ListStackInstanceResourceDrifts\", {}).n(\"CloudFormationClient\", \"ListStackInstanceResourceDriftsCommand\").f(void 0, void 0).ser(se_ListStackInstanceResourceDriftsCommand).de(de_ListStackInstanceResourceDriftsCommand).build() {\n};\n__name(_ListStackInstanceResourceDriftsCommand, \"ListStackInstanceResourceDriftsCommand\");\nvar ListStackInstanceResourceDriftsCommand = _ListStackInstanceResourceDriftsCommand;\n\n// src/commands/ListStackInstancesCommand.ts\n\n\n\nvar _ListStackInstancesCommand = class _ListStackInstancesCommand extends import_smithy_client.Command.classBuilder().ep(commonParams).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"ListStackInstances\", {}).n(\"CloudFormationClient\", \"ListStackInstancesCommand\").f(void 0, void 0).ser(se_ListStackInstancesCommand).de(de_ListStackInstancesCommand).build() {\n};\n__name(_ListStackInstancesCommand, \"ListStackInstancesCommand\");\nvar ListStackInstancesCommand = _ListStackInstancesCommand;\n\n// src/commands/ListStackResourcesCommand.ts\n\n\n\nvar _ListStackResourcesCommand = class _ListStackResourcesCommand extends import_smithy_client.Command.classBuilder().ep(commonParams).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"ListStackResources\", {}).n(\"CloudFormationClient\", \"ListStackResourcesCommand\").f(void 0, void 0).ser(se_ListStackResourcesCommand).de(de_ListStackResourcesCommand).build() {\n};\n__name(_ListStackResourcesCommand, \"ListStackResourcesCommand\");\nvar ListStackResourcesCommand = _ListStackResourcesCommand;\n\n// src/commands/ListStacksCommand.ts\n\n\n\nvar _ListStacksCommand = class _ListStacksCommand extends import_smithy_client.Command.classBuilder().ep(commonParams).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"ListStacks\", {}).n(\"CloudFormationClient\", \"ListStacksCommand\").f(void 0, void 0).ser(se_ListStacksCommand).de(de_ListStacksCommand).build() {\n};\n__name(_ListStacksCommand, \"ListStacksCommand\");\nvar ListStacksCommand = _ListStacksCommand;\n\n// src/commands/ListStackSetAutoDeploymentTargetsCommand.ts\n\n\n\nvar _ListStackSetAutoDeploymentTargetsCommand = class _ListStackSetAutoDeploymentTargetsCommand extends import_smithy_client.Command.classBuilder().ep(commonParams).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"ListStackSetAutoDeploymentTargets\", {}).n(\"CloudFormationClient\", \"ListStackSetAutoDeploymentTargetsCommand\").f(void 0, void 0).ser(se_ListStackSetAutoDeploymentTargetsCommand).de(de_ListStackSetAutoDeploymentTargetsCommand).build() {\n};\n__name(_ListStackSetAutoDeploymentTargetsCommand, \"ListStackSetAutoDeploymentTargetsCommand\");\nvar ListStackSetAutoDeploymentTargetsCommand = _ListStackSetAutoDeploymentTargetsCommand;\n\n// src/commands/ListStackSetOperationResultsCommand.ts\n\n\n\nvar _ListStackSetOperationResultsCommand = class _ListStackSetOperationResultsCommand extends import_smithy_client.Command.classBuilder().ep(commonParams).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"ListStackSetOperationResults\", {}).n(\"CloudFormationClient\", \"ListStackSetOperationResultsCommand\").f(void 0, void 0).ser(se_ListStackSetOperationResultsCommand).de(de_ListStackSetOperationResultsCommand).build() {\n};\n__name(_ListStackSetOperationResultsCommand, \"ListStackSetOperationResultsCommand\");\nvar ListStackSetOperationResultsCommand = _ListStackSetOperationResultsCommand;\n\n// src/commands/ListStackSetOperationsCommand.ts\n\n\n\nvar _ListStackSetOperationsCommand = class _ListStackSetOperationsCommand extends import_smithy_client.Command.classBuilder().ep(commonParams).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"ListStackSetOperations\", {}).n(\"CloudFormationClient\", \"ListStackSetOperationsCommand\").f(void 0, void 0).ser(se_ListStackSetOperationsCommand).de(de_ListStackSetOperationsCommand).build() {\n};\n__name(_ListStackSetOperationsCommand, \"ListStackSetOperationsCommand\");\nvar ListStackSetOperationsCommand = _ListStackSetOperationsCommand;\n\n// src/commands/ListStackSetsCommand.ts\n\n\n\nvar _ListStackSetsCommand = class _ListStackSetsCommand extends import_smithy_client.Command.classBuilder().ep(commonParams).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"ListStackSets\", {}).n(\"CloudFormationClient\", \"ListStackSetsCommand\").f(void 0, void 0).ser(se_ListStackSetsCommand).de(de_ListStackSetsCommand).build() {\n};\n__name(_ListStackSetsCommand, \"ListStackSetsCommand\");\nvar ListStackSetsCommand = _ListStackSetsCommand;\n\n// src/commands/ListTypeRegistrationsCommand.ts\n\n\n\nvar _ListTypeRegistrationsCommand = class _ListTypeRegistrationsCommand extends import_smithy_client.Command.classBuilder().ep(commonParams).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"ListTypeRegistrations\", {}).n(\"CloudFormationClient\", \"ListTypeRegistrationsCommand\").f(void 0, void 0).ser(se_ListTypeRegistrationsCommand).de(de_ListTypeRegistrationsCommand).build() {\n};\n__name(_ListTypeRegistrationsCommand, \"ListTypeRegistrationsCommand\");\nvar ListTypeRegistrationsCommand = _ListTypeRegistrationsCommand;\n\n// src/commands/ListTypesCommand.ts\n\n\n\nvar _ListTypesCommand = class _ListTypesCommand extends import_smithy_client.Command.classBuilder().ep(commonParams).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"ListTypes\", {}).n(\"CloudFormationClient\", \"ListTypesCommand\").f(void 0, void 0).ser(se_ListTypesCommand).de(de_ListTypesCommand).build() {\n};\n__name(_ListTypesCommand, \"ListTypesCommand\");\nvar ListTypesCommand = _ListTypesCommand;\n\n// src/commands/ListTypeVersionsCommand.ts\n\n\n\nvar _ListTypeVersionsCommand = class _ListTypeVersionsCommand extends import_smithy_client.Command.classBuilder().ep(commonParams).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"ListTypeVersions\", {}).n(\"CloudFormationClient\", \"ListTypeVersionsCommand\").f(void 0, void 0).ser(se_ListTypeVersionsCommand).de(de_ListTypeVersionsCommand).build() {\n};\n__name(_ListTypeVersionsCommand, \"ListTypeVersionsCommand\");\nvar ListTypeVersionsCommand = _ListTypeVersionsCommand;\n\n// src/commands/PublishTypeCommand.ts\n\n\n\nvar _PublishTypeCommand = class _PublishTypeCommand extends import_smithy_client.Command.classBuilder().ep(commonParams).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"PublishType\", {}).n(\"CloudFormationClient\", \"PublishTypeCommand\").f(void 0, void 0).ser(se_PublishTypeCommand).de(de_PublishTypeCommand).build() {\n};\n__name(_PublishTypeCommand, \"PublishTypeCommand\");\nvar PublishTypeCommand = _PublishTypeCommand;\n\n// src/commands/RecordHandlerProgressCommand.ts\n\n\n\nvar _RecordHandlerProgressCommand = class _RecordHandlerProgressCommand extends import_smithy_client.Command.classBuilder().ep(commonParams).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"RecordHandlerProgress\", {}).n(\"CloudFormationClient\", \"RecordHandlerProgressCommand\").f(void 0, void 0).ser(se_RecordHandlerProgressCommand).de(de_RecordHandlerProgressCommand).build() {\n};\n__name(_RecordHandlerProgressCommand, \"RecordHandlerProgressCommand\");\nvar RecordHandlerProgressCommand = _RecordHandlerProgressCommand;\n\n// src/commands/RegisterPublisherCommand.ts\n\n\n\nvar _RegisterPublisherCommand = class _RegisterPublisherCommand extends import_smithy_client.Command.classBuilder().ep(commonParams).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"RegisterPublisher\", {}).n(\"CloudFormationClient\", \"RegisterPublisherCommand\").f(void 0, void 0).ser(se_RegisterPublisherCommand).de(de_RegisterPublisherCommand).build() {\n};\n__name(_RegisterPublisherCommand, \"RegisterPublisherCommand\");\nvar RegisterPublisherCommand = _RegisterPublisherCommand;\n\n// src/commands/RegisterTypeCommand.ts\n\n\n\nvar _RegisterTypeCommand = class _RegisterTypeCommand extends import_smithy_client.Command.classBuilder().ep(commonParams).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"RegisterType\", {}).n(\"CloudFormationClient\", \"RegisterTypeCommand\").f(void 0, void 0).ser(se_RegisterTypeCommand).de(de_RegisterTypeCommand).build() {\n};\n__name(_RegisterTypeCommand, \"RegisterTypeCommand\");\nvar RegisterTypeCommand = _RegisterTypeCommand;\n\n// src/commands/RollbackStackCommand.ts\n\n\n\nvar _RollbackStackCommand = class _RollbackStackCommand extends import_smithy_client.Command.classBuilder().ep(commonParams).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"RollbackStack\", {}).n(\"CloudFormationClient\", \"RollbackStackCommand\").f(void 0, void 0).ser(se_RollbackStackCommand).de(de_RollbackStackCommand).build() {\n};\n__name(_RollbackStackCommand, \"RollbackStackCommand\");\nvar RollbackStackCommand = _RollbackStackCommand;\n\n// src/commands/SetStackPolicyCommand.ts\n\n\n\nvar _SetStackPolicyCommand = class _SetStackPolicyCommand extends import_smithy_client.Command.classBuilder().ep(commonParams).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"SetStackPolicy\", {}).n(\"CloudFormationClient\", \"SetStackPolicyCommand\").f(void 0, void 0).ser(se_SetStackPolicyCommand).de(de_SetStackPolicyCommand).build() {\n};\n__name(_SetStackPolicyCommand, \"SetStackPolicyCommand\");\nvar SetStackPolicyCommand = _SetStackPolicyCommand;\n\n// src/commands/SetTypeConfigurationCommand.ts\n\n\n\nvar _SetTypeConfigurationCommand = class _SetTypeConfigurationCommand extends import_smithy_client.Command.classBuilder().ep(commonParams).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"SetTypeConfiguration\", {}).n(\"CloudFormationClient\", \"SetTypeConfigurationCommand\").f(void 0, void 0).ser(se_SetTypeConfigurationCommand).de(de_SetTypeConfigurationCommand).build() {\n};\n__name(_SetTypeConfigurationCommand, \"SetTypeConfigurationCommand\");\nvar SetTypeConfigurationCommand = _SetTypeConfigurationCommand;\n\n// src/commands/SetTypeDefaultVersionCommand.ts\n\n\n\nvar _SetTypeDefaultVersionCommand = class _SetTypeDefaultVersionCommand extends import_smithy_client.Command.classBuilder().ep(commonParams).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"SetTypeDefaultVersion\", {}).n(\"CloudFormationClient\", \"SetTypeDefaultVersionCommand\").f(void 0, void 0).ser(se_SetTypeDefaultVersionCommand).de(de_SetTypeDefaultVersionCommand).build() {\n};\n__name(_SetTypeDefaultVersionCommand, \"SetTypeDefaultVersionCommand\");\nvar SetTypeDefaultVersionCommand = _SetTypeDefaultVersionCommand;\n\n// src/commands/SignalResourceCommand.ts\n\n\n\nvar _SignalResourceCommand = class _SignalResourceCommand extends import_smithy_client.Command.classBuilder().ep(commonParams).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"SignalResource\", {}).n(\"CloudFormationClient\", \"SignalResourceCommand\").f(void 0, void 0).ser(se_SignalResourceCommand).de(de_SignalResourceCommand).build() {\n};\n__name(_SignalResourceCommand, \"SignalResourceCommand\");\nvar SignalResourceCommand = _SignalResourceCommand;\n\n// src/commands/StartResourceScanCommand.ts\n\n\n\nvar _StartResourceScanCommand = class _StartResourceScanCommand extends import_smithy_client.Command.classBuilder().ep(commonParams).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"StartResourceScan\", {}).n(\"CloudFormationClient\", \"StartResourceScanCommand\").f(void 0, void 0).ser(se_StartResourceScanCommand).de(de_StartResourceScanCommand).build() {\n};\n__name(_StartResourceScanCommand, \"StartResourceScanCommand\");\nvar StartResourceScanCommand = _StartResourceScanCommand;\n\n// src/commands/StopStackSetOperationCommand.ts\n\n\n\nvar _StopStackSetOperationCommand = class _StopStackSetOperationCommand extends import_smithy_client.Command.classBuilder().ep(commonParams).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"StopStackSetOperation\", {}).n(\"CloudFormationClient\", \"StopStackSetOperationCommand\").f(void 0, void 0).ser(se_StopStackSetOperationCommand).de(de_StopStackSetOperationCommand).build() {\n};\n__name(_StopStackSetOperationCommand, \"StopStackSetOperationCommand\");\nvar StopStackSetOperationCommand = _StopStackSetOperationCommand;\n\n// src/commands/TestTypeCommand.ts\n\n\n\nvar _TestTypeCommand = class _TestTypeCommand extends import_smithy_client.Command.classBuilder().ep(commonParams).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"TestType\", {}).n(\"CloudFormationClient\", \"TestTypeCommand\").f(void 0, void 0).ser(se_TestTypeCommand).de(de_TestTypeCommand).build() {\n};\n__name(_TestTypeCommand, \"TestTypeCommand\");\nvar TestTypeCommand = _TestTypeCommand;\n\n// src/commands/UpdateGeneratedTemplateCommand.ts\n\n\n\nvar _UpdateGeneratedTemplateCommand = class _UpdateGeneratedTemplateCommand extends import_smithy_client.Command.classBuilder().ep(commonParams).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"UpdateGeneratedTemplate\", {}).n(\"CloudFormationClient\", \"UpdateGeneratedTemplateCommand\").f(void 0, void 0).ser(se_UpdateGeneratedTemplateCommand).de(de_UpdateGeneratedTemplateCommand).build() {\n};\n__name(_UpdateGeneratedTemplateCommand, \"UpdateGeneratedTemplateCommand\");\nvar UpdateGeneratedTemplateCommand = _UpdateGeneratedTemplateCommand;\n\n// src/commands/UpdateStackCommand.ts\n\n\n\nvar _UpdateStackCommand = class _UpdateStackCommand extends import_smithy_client.Command.classBuilder().ep(commonParams).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"UpdateStack\", {}).n(\"CloudFormationClient\", \"UpdateStackCommand\").f(void 0, void 0).ser(se_UpdateStackCommand).de(de_UpdateStackCommand).build() {\n};\n__name(_UpdateStackCommand, \"UpdateStackCommand\");\nvar UpdateStackCommand = _UpdateStackCommand;\n\n// src/commands/UpdateStackInstancesCommand.ts\n\n\n\nvar _UpdateStackInstancesCommand = class _UpdateStackInstancesCommand extends import_smithy_client.Command.classBuilder().ep(commonParams).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"UpdateStackInstances\", {}).n(\"CloudFormationClient\", \"UpdateStackInstancesCommand\").f(void 0, void 0).ser(se_UpdateStackInstancesCommand).de(de_UpdateStackInstancesCommand).build() {\n};\n__name(_UpdateStackInstancesCommand, \"UpdateStackInstancesCommand\");\nvar UpdateStackInstancesCommand = _UpdateStackInstancesCommand;\n\n// src/commands/UpdateStackSetCommand.ts\n\n\n\nvar _UpdateStackSetCommand = class _UpdateStackSetCommand extends import_smithy_client.Command.classBuilder().ep(commonParams).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"UpdateStackSet\", {}).n(\"CloudFormationClient\", \"UpdateStackSetCommand\").f(void 0, void 0).ser(se_UpdateStackSetCommand).de(de_UpdateStackSetCommand).build() {\n};\n__name(_UpdateStackSetCommand, \"UpdateStackSetCommand\");\nvar UpdateStackSetCommand = _UpdateStackSetCommand;\n\n// src/commands/UpdateTerminationProtectionCommand.ts\n\n\n\nvar _UpdateTerminationProtectionCommand = class _UpdateTerminationProtectionCommand extends import_smithy_client.Command.classBuilder().ep(commonParams).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"UpdateTerminationProtection\", {}).n(\"CloudFormationClient\", \"UpdateTerminationProtectionCommand\").f(void 0, void 0).ser(se_UpdateTerminationProtectionCommand).de(de_UpdateTerminationProtectionCommand).build() {\n};\n__name(_UpdateTerminationProtectionCommand, \"UpdateTerminationProtectionCommand\");\nvar UpdateTerminationProtectionCommand = _UpdateTerminationProtectionCommand;\n\n// src/commands/ValidateTemplateCommand.ts\n\n\n\nvar _ValidateTemplateCommand = class _ValidateTemplateCommand extends import_smithy_client.Command.classBuilder().ep(commonParams).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"ValidateTemplate\", {}).n(\"CloudFormationClient\", \"ValidateTemplateCommand\").f(void 0, void 0).ser(se_ValidateTemplateCommand).de(de_ValidateTemplateCommand).build() {\n};\n__name(_ValidateTemplateCommand, \"ValidateTemplateCommand\");\nvar ValidateTemplateCommand = _ValidateTemplateCommand;\n\n// src/CloudFormation.ts\nvar commands = {\n ActivateOrganizationsAccessCommand,\n ActivateTypeCommand,\n BatchDescribeTypeConfigurationsCommand,\n CancelUpdateStackCommand,\n ContinueUpdateRollbackCommand,\n CreateChangeSetCommand,\n CreateGeneratedTemplateCommand,\n CreateStackCommand,\n CreateStackInstancesCommand,\n CreateStackSetCommand,\n DeactivateOrganizationsAccessCommand,\n DeactivateTypeCommand,\n DeleteChangeSetCommand,\n DeleteGeneratedTemplateCommand,\n DeleteStackCommand,\n DeleteStackInstancesCommand,\n DeleteStackSetCommand,\n DeregisterTypeCommand,\n DescribeAccountLimitsCommand,\n DescribeChangeSetCommand,\n DescribeChangeSetHooksCommand,\n DescribeGeneratedTemplateCommand,\n DescribeOrganizationsAccessCommand,\n DescribePublisherCommand,\n DescribeResourceScanCommand,\n DescribeStackDriftDetectionStatusCommand,\n DescribeStackEventsCommand,\n DescribeStackInstanceCommand,\n DescribeStackResourceCommand,\n DescribeStackResourceDriftsCommand,\n DescribeStackResourcesCommand,\n DescribeStacksCommand,\n DescribeStackSetCommand,\n DescribeStackSetOperationCommand,\n DescribeTypeCommand,\n DescribeTypeRegistrationCommand,\n DetectStackDriftCommand,\n DetectStackResourceDriftCommand,\n DetectStackSetDriftCommand,\n EstimateTemplateCostCommand,\n ExecuteChangeSetCommand,\n GetGeneratedTemplateCommand,\n GetStackPolicyCommand,\n GetTemplateCommand,\n GetTemplateSummaryCommand,\n ImportStacksToStackSetCommand,\n ListChangeSetsCommand,\n ListExportsCommand,\n ListGeneratedTemplatesCommand,\n ListImportsCommand,\n ListResourceScanRelatedResourcesCommand,\n ListResourceScanResourcesCommand,\n ListResourceScansCommand,\n ListStackInstanceResourceDriftsCommand,\n ListStackInstancesCommand,\n ListStackResourcesCommand,\n ListStacksCommand,\n ListStackSetAutoDeploymentTargetsCommand,\n ListStackSetOperationResultsCommand,\n ListStackSetOperationsCommand,\n ListStackSetsCommand,\n ListTypeRegistrationsCommand,\n ListTypesCommand,\n ListTypeVersionsCommand,\n PublishTypeCommand,\n RecordHandlerProgressCommand,\n RegisterPublisherCommand,\n RegisterTypeCommand,\n RollbackStackCommand,\n SetStackPolicyCommand,\n SetTypeConfigurationCommand,\n SetTypeDefaultVersionCommand,\n SignalResourceCommand,\n StartResourceScanCommand,\n StopStackSetOperationCommand,\n TestTypeCommand,\n UpdateGeneratedTemplateCommand,\n UpdateStackCommand,\n UpdateStackInstancesCommand,\n UpdateStackSetCommand,\n UpdateTerminationProtectionCommand,\n ValidateTemplateCommand\n};\nvar _CloudFormation = class _CloudFormation extends CloudFormationClient {\n};\n__name(_CloudFormation, \"CloudFormation\");\nvar CloudFormation = _CloudFormation;\n(0, import_smithy_client.createAggregatedClient)(commands, CloudFormation);\n\n// src/pagination/DescribeAccountLimitsPaginator.ts\n\nvar paginateDescribeAccountLimits = (0, import_core.createPaginator)(CloudFormationClient, DescribeAccountLimitsCommand, \"NextToken\", \"NextToken\", \"\");\n\n// src/pagination/DescribeStackEventsPaginator.ts\n\nvar paginateDescribeStackEvents = (0, import_core.createPaginator)(CloudFormationClient, DescribeStackEventsCommand, \"NextToken\", \"NextToken\", \"\");\n\n// src/pagination/DescribeStackResourceDriftsPaginator.ts\n\nvar paginateDescribeStackResourceDrifts = (0, import_core.createPaginator)(CloudFormationClient, DescribeStackResourceDriftsCommand, \"NextToken\", \"NextToken\", \"MaxResults\");\n\n// src/pagination/DescribeStacksPaginator.ts\n\nvar paginateDescribeStacks = (0, import_core.createPaginator)(CloudFormationClient, DescribeStacksCommand, \"NextToken\", \"NextToken\", \"\");\n\n// src/pagination/ListChangeSetsPaginator.ts\n\nvar paginateListChangeSets = (0, import_core.createPaginator)(CloudFormationClient, ListChangeSetsCommand, \"NextToken\", \"NextToken\", \"\");\n\n// src/pagination/ListExportsPaginator.ts\n\nvar paginateListExports = (0, import_core.createPaginator)(CloudFormationClient, ListExportsCommand, \"NextToken\", \"NextToken\", \"\");\n\n// src/pagination/ListGeneratedTemplatesPaginator.ts\n\nvar paginateListGeneratedTemplates = (0, import_core.createPaginator)(CloudFormationClient, ListGeneratedTemplatesCommand, \"NextToken\", \"NextToken\", \"MaxResults\");\n\n// src/pagination/ListImportsPaginator.ts\n\nvar paginateListImports = (0, import_core.createPaginator)(CloudFormationClient, ListImportsCommand, \"NextToken\", \"NextToken\", \"\");\n\n// src/pagination/ListResourceScanRelatedResourcesPaginator.ts\n\nvar paginateListResourceScanRelatedResources = (0, import_core.createPaginator)(CloudFormationClient, ListResourceScanRelatedResourcesCommand, \"NextToken\", \"NextToken\", \"MaxResults\");\n\n// src/pagination/ListResourceScanResourcesPaginator.ts\n\nvar paginateListResourceScanResources = (0, import_core.createPaginator)(CloudFormationClient, ListResourceScanResourcesCommand, \"NextToken\", \"NextToken\", \"MaxResults\");\n\n// src/pagination/ListResourceScansPaginator.ts\n\nvar paginateListResourceScans = (0, import_core.createPaginator)(CloudFormationClient, ListResourceScansCommand, \"NextToken\", \"NextToken\", \"MaxResults\");\n\n// src/pagination/ListStackInstancesPaginator.ts\n\nvar paginateListStackInstances = (0, import_core.createPaginator)(CloudFormationClient, ListStackInstancesCommand, \"NextToken\", \"NextToken\", \"MaxResults\");\n\n// src/pagination/ListStackResourcesPaginator.ts\n\nvar paginateListStackResources = (0, import_core.createPaginator)(CloudFormationClient, ListStackResourcesCommand, \"NextToken\", \"NextToken\", \"\");\n\n// src/pagination/ListStackSetOperationResultsPaginator.ts\n\nvar paginateListStackSetOperationResults = (0, import_core.createPaginator)(CloudFormationClient, ListStackSetOperationResultsCommand, \"NextToken\", \"NextToken\", \"MaxResults\");\n\n// src/pagination/ListStackSetOperationsPaginator.ts\n\nvar paginateListStackSetOperations = (0, import_core.createPaginator)(CloudFormationClient, ListStackSetOperationsCommand, \"NextToken\", \"NextToken\", \"MaxResults\");\n\n// src/pagination/ListStackSetsPaginator.ts\n\nvar paginateListStackSets = (0, import_core.createPaginator)(CloudFormationClient, ListStackSetsCommand, \"NextToken\", \"NextToken\", \"MaxResults\");\n\n// src/pagination/ListStacksPaginator.ts\n\nvar paginateListStacks = (0, import_core.createPaginator)(CloudFormationClient, ListStacksCommand, \"NextToken\", \"NextToken\", \"\");\n\n// src/pagination/ListTypeRegistrationsPaginator.ts\n\nvar paginateListTypeRegistrations = (0, import_core.createPaginator)(CloudFormationClient, ListTypeRegistrationsCommand, \"NextToken\", \"NextToken\", \"MaxResults\");\n\n// src/pagination/ListTypeVersionsPaginator.ts\n\nvar paginateListTypeVersions = (0, import_core.createPaginator)(CloudFormationClient, ListTypeVersionsCommand, \"NextToken\", \"NextToken\", \"MaxResults\");\n\n// src/pagination/ListTypesPaginator.ts\n\nvar paginateListTypes = (0, import_core.createPaginator)(CloudFormationClient, ListTypesCommand, \"NextToken\", \"NextToken\", \"MaxResults\");\n\n// src/waiters/waitForChangeSetCreateComplete.ts\nvar import_util_waiter = require(\"@smithy/util-waiter\");\nvar checkState = /* @__PURE__ */ __name(async (client, input) => {\n let reason;\n try {\n const result = await client.send(new DescribeChangeSetCommand(input));\n reason = result;\n try {\n const returnComparator = /* @__PURE__ */ __name(() => {\n return result.Status;\n }, \"returnComparator\");\n if (returnComparator() === \"CREATE_COMPLETE\") {\n return { state: import_util_waiter.WaiterState.SUCCESS, reason };\n }\n } catch (e) {\n }\n try {\n const returnComparator = /* @__PURE__ */ __name(() => {\n return result.Status;\n }, \"returnComparator\");\n if (returnComparator() === \"FAILED\") {\n return { state: import_util_waiter.WaiterState.FAILURE, reason };\n }\n } catch (e) {\n }\n } catch (exception) {\n reason = exception;\n if (exception.name && exception.name == \"ValidationError\") {\n return { state: import_util_waiter.WaiterState.FAILURE, reason };\n }\n }\n return { state: import_util_waiter.WaiterState.RETRY, reason };\n}, \"checkState\");\nvar waitForChangeSetCreateComplete = /* @__PURE__ */ __name(async (params, input) => {\n const serviceDefaults = { minDelay: 30, maxDelay: 120 };\n return (0, import_util_waiter.createWaiter)({ ...serviceDefaults, ...params }, input, checkState);\n}, \"waitForChangeSetCreateComplete\");\nvar waitUntilChangeSetCreateComplete = /* @__PURE__ */ __name(async (params, input) => {\n const serviceDefaults = { minDelay: 30, maxDelay: 120 };\n const result = await (0, import_util_waiter.createWaiter)({ ...serviceDefaults, ...params }, input, checkState);\n return (0, import_util_waiter.checkExceptions)(result);\n}, \"waitUntilChangeSetCreateComplete\");\n\n// src/waiters/waitForStackCreateComplete.ts\n\nvar checkState2 = /* @__PURE__ */ __name(async (client, input) => {\n let reason;\n try {\n const result = await client.send(new DescribeStacksCommand(input));\n reason = result;\n try {\n const returnComparator = /* @__PURE__ */ __name(() => {\n const flat_1 = [].concat(...result.Stacks);\n const projection_3 = flat_1.map((element_2) => {\n return element_2.StackStatus;\n });\n return projection_3;\n }, \"returnComparator\");\n let allStringEq_5 = returnComparator().length > 0;\n for (const element_4 of returnComparator()) {\n allStringEq_5 = allStringEq_5 && element_4 == \"CREATE_COMPLETE\";\n }\n if (allStringEq_5) {\n return { state: import_util_waiter.WaiterState.SUCCESS, reason };\n }\n } catch (e) {\n }\n try {\n const returnComparator = /* @__PURE__ */ __name(() => {\n const flat_1 = [].concat(...result.Stacks);\n const projection_3 = flat_1.map((element_2) => {\n return element_2.StackStatus;\n });\n return projection_3;\n }, \"returnComparator\");\n let allStringEq_5 = returnComparator().length > 0;\n for (const element_4 of returnComparator()) {\n allStringEq_5 = allStringEq_5 && element_4 == \"UPDATE_COMPLETE\";\n }\n if (allStringEq_5) {\n return { state: import_util_waiter.WaiterState.SUCCESS, reason };\n }\n } catch (e) {\n }\n try {\n const returnComparator = /* @__PURE__ */ __name(() => {\n const flat_1 = [].concat(...result.Stacks);\n const projection_3 = flat_1.map((element_2) => {\n return element_2.StackStatus;\n });\n return projection_3;\n }, \"returnComparator\");\n let allStringEq_5 = returnComparator().length > 0;\n for (const element_4 of returnComparator()) {\n allStringEq_5 = allStringEq_5 && element_4 == \"UPDATE_IN_PROGRESS\";\n }\n if (allStringEq_5) {\n return { state: import_util_waiter.WaiterState.SUCCESS, reason };\n }\n } catch (e) {\n }\n try {\n const returnComparator = /* @__PURE__ */ __name(() => {\n const flat_1 = [].concat(...result.Stacks);\n const projection_3 = flat_1.map((element_2) => {\n return element_2.StackStatus;\n });\n return projection_3;\n }, \"returnComparator\");\n let allStringEq_5 = returnComparator().length > 0;\n for (const element_4 of returnComparator()) {\n allStringEq_5 = allStringEq_5 && element_4 == \"UPDATE_COMPLETE_CLEANUP_IN_PROGRESS\";\n }\n if (allStringEq_5) {\n return { state: import_util_waiter.WaiterState.SUCCESS, reason };\n }\n } catch (e) {\n }\n try {\n const returnComparator = /* @__PURE__ */ __name(() => {\n const flat_1 = [].concat(...result.Stacks);\n const projection_3 = flat_1.map((element_2) => {\n return element_2.StackStatus;\n });\n return projection_3;\n }, \"returnComparator\");\n let allStringEq_5 = returnComparator().length > 0;\n for (const element_4 of returnComparator()) {\n allStringEq_5 = allStringEq_5 && element_4 == \"UPDATE_FAILED\";\n }\n if (allStringEq_5) {\n return { state: import_util_waiter.WaiterState.SUCCESS, reason };\n }\n } catch (e) {\n }\n try {\n const returnComparator = /* @__PURE__ */ __name(() => {\n const flat_1 = [].concat(...result.Stacks);\n const projection_3 = flat_1.map((element_2) => {\n return element_2.StackStatus;\n });\n return projection_3;\n }, \"returnComparator\");\n let allStringEq_5 = returnComparator().length > 0;\n for (const element_4 of returnComparator()) {\n allStringEq_5 = allStringEq_5 && element_4 == \"UPDATE_ROLLBACK_IN_PROGRESS\";\n }\n if (allStringEq_5) {\n return { state: import_util_waiter.WaiterState.SUCCESS, reason };\n }\n } catch (e) {\n }\n try {\n const returnComparator = /* @__PURE__ */ __name(() => {\n const flat_1 = [].concat(...result.Stacks);\n const projection_3 = flat_1.map((element_2) => {\n return element_2.StackStatus;\n });\n return projection_3;\n }, \"returnComparator\");\n let allStringEq_5 = returnComparator().length > 0;\n for (const element_4 of returnComparator()) {\n allStringEq_5 = allStringEq_5 && element_4 == \"UPDATE_ROLLBACK_FAILED\";\n }\n if (allStringEq_5) {\n return { state: import_util_waiter.WaiterState.SUCCESS, reason };\n }\n } catch (e) {\n }\n try {\n const returnComparator = /* @__PURE__ */ __name(() => {\n const flat_1 = [].concat(...result.Stacks);\n const projection_3 = flat_1.map((element_2) => {\n return element_2.StackStatus;\n });\n return projection_3;\n }, \"returnComparator\");\n let allStringEq_5 = returnComparator().length > 0;\n for (const element_4 of returnComparator()) {\n allStringEq_5 = allStringEq_5 && element_4 == \"UPDATE_ROLLBACK_COMPLETE_CLEANUP_IN_PROGRESS\";\n }\n if (allStringEq_5) {\n return { state: import_util_waiter.WaiterState.SUCCESS, reason };\n }\n } catch (e) {\n }\n try {\n const returnComparator = /* @__PURE__ */ __name(() => {\n const flat_1 = [].concat(...result.Stacks);\n const projection_3 = flat_1.map((element_2) => {\n return element_2.StackStatus;\n });\n return projection_3;\n }, \"returnComparator\");\n let allStringEq_5 = returnComparator().length > 0;\n for (const element_4 of returnComparator()) {\n allStringEq_5 = allStringEq_5 && element_4 == \"UPDATE_ROLLBACK_COMPLETE\";\n }\n if (allStringEq_5) {\n return { state: import_util_waiter.WaiterState.SUCCESS, reason };\n }\n } catch (e) {\n }\n try {\n const returnComparator = /* @__PURE__ */ __name(() => {\n const flat_1 = [].concat(...result.Stacks);\n const projection_3 = flat_1.map((element_2) => {\n return element_2.StackStatus;\n });\n return projection_3;\n }, \"returnComparator\");\n for (const anyStringEq_4 of returnComparator()) {\n if (anyStringEq_4 == \"CREATE_FAILED\") {\n return { state: import_util_waiter.WaiterState.FAILURE, reason };\n }\n }\n } catch (e) {\n }\n try {\n const returnComparator = /* @__PURE__ */ __name(() => {\n const flat_1 = [].concat(...result.Stacks);\n const projection_3 = flat_1.map((element_2) => {\n return element_2.StackStatus;\n });\n return projection_3;\n }, \"returnComparator\");\n for (const anyStringEq_4 of returnComparator()) {\n if (anyStringEq_4 == \"DELETE_COMPLETE\") {\n return { state: import_util_waiter.WaiterState.FAILURE, reason };\n }\n }\n } catch (e) {\n }\n try {\n const returnComparator = /* @__PURE__ */ __name(() => {\n const flat_1 = [].concat(...result.Stacks);\n const projection_3 = flat_1.map((element_2) => {\n return element_2.StackStatus;\n });\n return projection_3;\n }, \"returnComparator\");\n for (const anyStringEq_4 of returnComparator()) {\n if (anyStringEq_4 == \"DELETE_FAILED\") {\n return { state: import_util_waiter.WaiterState.FAILURE, reason };\n }\n }\n } catch (e) {\n }\n try {\n const returnComparator = /* @__PURE__ */ __name(() => {\n const flat_1 = [].concat(...result.Stacks);\n const projection_3 = flat_1.map((element_2) => {\n return element_2.StackStatus;\n });\n return projection_3;\n }, \"returnComparator\");\n for (const anyStringEq_4 of returnComparator()) {\n if (anyStringEq_4 == \"ROLLBACK_FAILED\") {\n return { state: import_util_waiter.WaiterState.FAILURE, reason };\n }\n }\n } catch (e) {\n }\n try {\n const returnComparator = /* @__PURE__ */ __name(() => {\n const flat_1 = [].concat(...result.Stacks);\n const projection_3 = flat_1.map((element_2) => {\n return element_2.StackStatus;\n });\n return projection_3;\n }, \"returnComparator\");\n for (const anyStringEq_4 of returnComparator()) {\n if (anyStringEq_4 == \"ROLLBACK_COMPLETE\") {\n return { state: import_util_waiter.WaiterState.FAILURE, reason };\n }\n }\n } catch (e) {\n }\n } catch (exception) {\n reason = exception;\n if (exception.name && exception.name == \"ValidationError\") {\n return { state: import_util_waiter.WaiterState.FAILURE, reason };\n }\n }\n return { state: import_util_waiter.WaiterState.RETRY, reason };\n}, \"checkState\");\nvar waitForStackCreateComplete = /* @__PURE__ */ __name(async (params, input) => {\n const serviceDefaults = { minDelay: 30, maxDelay: 120 };\n return (0, import_util_waiter.createWaiter)({ ...serviceDefaults, ...params }, input, checkState2);\n}, \"waitForStackCreateComplete\");\nvar waitUntilStackCreateComplete = /* @__PURE__ */ __name(async (params, input) => {\n const serviceDefaults = { minDelay: 30, maxDelay: 120 };\n const result = await (0, import_util_waiter.createWaiter)({ ...serviceDefaults, ...params }, input, checkState2);\n return (0, import_util_waiter.checkExceptions)(result);\n}, \"waitUntilStackCreateComplete\");\n\n// src/waiters/waitForStackDeleteComplete.ts\n\nvar checkState3 = /* @__PURE__ */ __name(async (client, input) => {\n let reason;\n try {\n const result = await client.send(new DescribeStacksCommand(input));\n reason = result;\n try {\n const returnComparator = /* @__PURE__ */ __name(() => {\n const flat_1 = [].concat(...result.Stacks);\n const projection_3 = flat_1.map((element_2) => {\n return element_2.StackStatus;\n });\n return projection_3;\n }, \"returnComparator\");\n let allStringEq_5 = returnComparator().length > 0;\n for (const element_4 of returnComparator()) {\n allStringEq_5 = allStringEq_5 && element_4 == \"DELETE_COMPLETE\";\n }\n if (allStringEq_5) {\n return { state: import_util_waiter.WaiterState.SUCCESS, reason };\n }\n } catch (e) {\n }\n try {\n const returnComparator = /* @__PURE__ */ __name(() => {\n const flat_1 = [].concat(...result.Stacks);\n const projection_3 = flat_1.map((element_2) => {\n return element_2.StackStatus;\n });\n return projection_3;\n }, \"returnComparator\");\n for (const anyStringEq_4 of returnComparator()) {\n if (anyStringEq_4 == \"DELETE_FAILED\") {\n return { state: import_util_waiter.WaiterState.FAILURE, reason };\n }\n }\n } catch (e) {\n }\n try {\n const returnComparator = /* @__PURE__ */ __name(() => {\n const flat_1 = [].concat(...result.Stacks);\n const projection_3 = flat_1.map((element_2) => {\n return element_2.StackStatus;\n });\n return projection_3;\n }, \"returnComparator\");\n for (const anyStringEq_4 of returnComparator()) {\n if (anyStringEq_4 == \"CREATE_FAILED\") {\n return { state: import_util_waiter.WaiterState.FAILURE, reason };\n }\n }\n } catch (e) {\n }\n try {\n const returnComparator = /* @__PURE__ */ __name(() => {\n const flat_1 = [].concat(...result.Stacks);\n const projection_3 = flat_1.map((element_2) => {\n return element_2.StackStatus;\n });\n return projection_3;\n }, \"returnComparator\");\n for (const anyStringEq_4 of returnComparator()) {\n if (anyStringEq_4 == \"ROLLBACK_FAILED\") {\n return { state: import_util_waiter.WaiterState.FAILURE, reason };\n }\n }\n } catch (e) {\n }\n try {\n const returnComparator = /* @__PURE__ */ __name(() => {\n const flat_1 = [].concat(...result.Stacks);\n const projection_3 = flat_1.map((element_2) => {\n return element_2.StackStatus;\n });\n return projection_3;\n }, \"returnComparator\");\n for (const anyStringEq_4 of returnComparator()) {\n if (anyStringEq_4 == \"UPDATE_ROLLBACK_IN_PROGRESS\") {\n return { state: import_util_waiter.WaiterState.FAILURE, reason };\n }\n }\n } catch (e) {\n }\n try {\n const returnComparator = /* @__PURE__ */ __name(() => {\n const flat_1 = [].concat(...result.Stacks);\n const projection_3 = flat_1.map((element_2) => {\n return element_2.StackStatus;\n });\n return projection_3;\n }, \"returnComparator\");\n for (const anyStringEq_4 of returnComparator()) {\n if (anyStringEq_4 == \"UPDATE_ROLLBACK_FAILED\") {\n return { state: import_util_waiter.WaiterState.FAILURE, reason };\n }\n }\n } catch (e) {\n }\n try {\n const returnComparator = /* @__PURE__ */ __name(() => {\n const flat_1 = [].concat(...result.Stacks);\n const projection_3 = flat_1.map((element_2) => {\n return element_2.StackStatus;\n });\n return projection_3;\n }, \"returnComparator\");\n for (const anyStringEq_4 of returnComparator()) {\n if (anyStringEq_4 == \"UPDATE_ROLLBACK_COMPLETE\") {\n return { state: import_util_waiter.WaiterState.FAILURE, reason };\n }\n }\n } catch (e) {\n }\n try {\n const returnComparator = /* @__PURE__ */ __name(() => {\n const flat_1 = [].concat(...result.Stacks);\n const projection_3 = flat_1.map((element_2) => {\n return element_2.StackStatus;\n });\n return projection_3;\n }, \"returnComparator\");\n for (const anyStringEq_4 of returnComparator()) {\n if (anyStringEq_4 == \"UPDATE_COMPLETE\") {\n return { state: import_util_waiter.WaiterState.FAILURE, reason };\n }\n }\n } catch (e) {\n }\n } catch (exception) {\n reason = exception;\n if (exception.name && exception.name == \"ValidationError\") {\n return { state: import_util_waiter.WaiterState.SUCCESS, reason };\n }\n }\n return { state: import_util_waiter.WaiterState.RETRY, reason };\n}, \"checkState\");\nvar waitForStackDeleteComplete = /* @__PURE__ */ __name(async (params, input) => {\n const serviceDefaults = { minDelay: 30, maxDelay: 120 };\n return (0, import_util_waiter.createWaiter)({ ...serviceDefaults, ...params }, input, checkState3);\n}, \"waitForStackDeleteComplete\");\nvar waitUntilStackDeleteComplete = /* @__PURE__ */ __name(async (params, input) => {\n const serviceDefaults = { minDelay: 30, maxDelay: 120 };\n const result = await (0, import_util_waiter.createWaiter)({ ...serviceDefaults, ...params }, input, checkState3);\n return (0, import_util_waiter.checkExceptions)(result);\n}, \"waitUntilStackDeleteComplete\");\n\n// src/waiters/waitForStackExists.ts\n\nvar checkState4 = /* @__PURE__ */ __name(async (client, input) => {\n let reason;\n try {\n const result = await client.send(new DescribeStacksCommand(input));\n reason = result;\n return { state: import_util_waiter.WaiterState.SUCCESS, reason };\n } catch (exception) {\n reason = exception;\n if (exception.name && exception.name == \"ValidationError\") {\n return { state: import_util_waiter.WaiterState.RETRY, reason };\n }\n }\n return { state: import_util_waiter.WaiterState.RETRY, reason };\n}, \"checkState\");\nvar waitForStackExists = /* @__PURE__ */ __name(async (params, input) => {\n const serviceDefaults = { minDelay: 5, maxDelay: 120 };\n return (0, import_util_waiter.createWaiter)({ ...serviceDefaults, ...params }, input, checkState4);\n}, \"waitForStackExists\");\nvar waitUntilStackExists = /* @__PURE__ */ __name(async (params, input) => {\n const serviceDefaults = { minDelay: 5, maxDelay: 120 };\n const result = await (0, import_util_waiter.createWaiter)({ ...serviceDefaults, ...params }, input, checkState4);\n return (0, import_util_waiter.checkExceptions)(result);\n}, \"waitUntilStackExists\");\n\n// src/waiters/waitForStackImportComplete.ts\n\nvar checkState5 = /* @__PURE__ */ __name(async (client, input) => {\n let reason;\n try {\n const result = await client.send(new DescribeStacksCommand(input));\n reason = result;\n try {\n const returnComparator = /* @__PURE__ */ __name(() => {\n const flat_1 = [].concat(...result.Stacks);\n const projection_3 = flat_1.map((element_2) => {\n return element_2.StackStatus;\n });\n return projection_3;\n }, \"returnComparator\");\n let allStringEq_5 = returnComparator().length > 0;\n for (const element_4 of returnComparator()) {\n allStringEq_5 = allStringEq_5 && element_4 == \"IMPORT_COMPLETE\";\n }\n if (allStringEq_5) {\n return { state: import_util_waiter.WaiterState.SUCCESS, reason };\n }\n } catch (e) {\n }\n try {\n const returnComparator = /* @__PURE__ */ __name(() => {\n const flat_1 = [].concat(...result.Stacks);\n const projection_3 = flat_1.map((element_2) => {\n return element_2.StackStatus;\n });\n return projection_3;\n }, \"returnComparator\");\n for (const anyStringEq_4 of returnComparator()) {\n if (anyStringEq_4 == \"ROLLBACK_COMPLETE\") {\n return { state: import_util_waiter.WaiterState.FAILURE, reason };\n }\n }\n } catch (e) {\n }\n try {\n const returnComparator = /* @__PURE__ */ __name(() => {\n const flat_1 = [].concat(...result.Stacks);\n const projection_3 = flat_1.map((element_2) => {\n return element_2.StackStatus;\n });\n return projection_3;\n }, \"returnComparator\");\n for (const anyStringEq_4 of returnComparator()) {\n if (anyStringEq_4 == \"ROLLBACK_FAILED\") {\n return { state: import_util_waiter.WaiterState.FAILURE, reason };\n }\n }\n } catch (e) {\n }\n try {\n const returnComparator = /* @__PURE__ */ __name(() => {\n const flat_1 = [].concat(...result.Stacks);\n const projection_3 = flat_1.map((element_2) => {\n return element_2.StackStatus;\n });\n return projection_3;\n }, \"returnComparator\");\n for (const anyStringEq_4 of returnComparator()) {\n if (anyStringEq_4 == \"IMPORT_ROLLBACK_IN_PROGRESS\") {\n return { state: import_util_waiter.WaiterState.FAILURE, reason };\n }\n }\n } catch (e) {\n }\n try {\n const returnComparator = /* @__PURE__ */ __name(() => {\n const flat_1 = [].concat(...result.Stacks);\n const projection_3 = flat_1.map((element_2) => {\n return element_2.StackStatus;\n });\n return projection_3;\n }, \"returnComparator\");\n for (const anyStringEq_4 of returnComparator()) {\n if (anyStringEq_4 == \"IMPORT_ROLLBACK_FAILED\") {\n return { state: import_util_waiter.WaiterState.FAILURE, reason };\n }\n }\n } catch (e) {\n }\n try {\n const returnComparator = /* @__PURE__ */ __name(() => {\n const flat_1 = [].concat(...result.Stacks);\n const projection_3 = flat_1.map((element_2) => {\n return element_2.StackStatus;\n });\n return projection_3;\n }, \"returnComparator\");\n for (const anyStringEq_4 of returnComparator()) {\n if (anyStringEq_4 == \"IMPORT_ROLLBACK_COMPLETE\") {\n return { state: import_util_waiter.WaiterState.FAILURE, reason };\n }\n }\n } catch (e) {\n }\n } catch (exception) {\n reason = exception;\n if (exception.name && exception.name == \"ValidationError\") {\n return { state: import_util_waiter.WaiterState.FAILURE, reason };\n }\n }\n return { state: import_util_waiter.WaiterState.RETRY, reason };\n}, \"checkState\");\nvar waitForStackImportComplete = /* @__PURE__ */ __name(async (params, input) => {\n const serviceDefaults = { minDelay: 30, maxDelay: 120 };\n return (0, import_util_waiter.createWaiter)({ ...serviceDefaults, ...params }, input, checkState5);\n}, \"waitForStackImportComplete\");\nvar waitUntilStackImportComplete = /* @__PURE__ */ __name(async (params, input) => {\n const serviceDefaults = { minDelay: 30, maxDelay: 120 };\n const result = await (0, import_util_waiter.createWaiter)({ ...serviceDefaults, ...params }, input, checkState5);\n return (0, import_util_waiter.checkExceptions)(result);\n}, \"waitUntilStackImportComplete\");\n\n// src/waiters/waitForStackRollbackComplete.ts\n\nvar checkState6 = /* @__PURE__ */ __name(async (client, input) => {\n let reason;\n try {\n const result = await client.send(new DescribeStacksCommand(input));\n reason = result;\n try {\n const returnComparator = /* @__PURE__ */ __name(() => {\n const flat_1 = [].concat(...result.Stacks);\n const projection_3 = flat_1.map((element_2) => {\n return element_2.StackStatus;\n });\n return projection_3;\n }, \"returnComparator\");\n let allStringEq_5 = returnComparator().length > 0;\n for (const element_4 of returnComparator()) {\n allStringEq_5 = allStringEq_5 && element_4 == \"UPDATE_ROLLBACK_COMPLETE\";\n }\n if (allStringEq_5) {\n return { state: import_util_waiter.WaiterState.SUCCESS, reason };\n }\n } catch (e) {\n }\n try {\n const returnComparator = /* @__PURE__ */ __name(() => {\n const flat_1 = [].concat(...result.Stacks);\n const projection_3 = flat_1.map((element_2) => {\n return element_2.StackStatus;\n });\n return projection_3;\n }, \"returnComparator\");\n for (const anyStringEq_4 of returnComparator()) {\n if (anyStringEq_4 == \"UPDATE_FAILED\") {\n return { state: import_util_waiter.WaiterState.FAILURE, reason };\n }\n }\n } catch (e) {\n }\n try {\n const returnComparator = /* @__PURE__ */ __name(() => {\n const flat_1 = [].concat(...result.Stacks);\n const projection_3 = flat_1.map((element_2) => {\n return element_2.StackStatus;\n });\n return projection_3;\n }, \"returnComparator\");\n for (const anyStringEq_4 of returnComparator()) {\n if (anyStringEq_4 == \"UPDATE_ROLLBACK_FAILED\") {\n return { state: import_util_waiter.WaiterState.FAILURE, reason };\n }\n }\n } catch (e) {\n }\n try {\n const returnComparator = /* @__PURE__ */ __name(() => {\n const flat_1 = [].concat(...result.Stacks);\n const projection_3 = flat_1.map((element_2) => {\n return element_2.StackStatus;\n });\n return projection_3;\n }, \"returnComparator\");\n for (const anyStringEq_4 of returnComparator()) {\n if (anyStringEq_4 == \"DELETE_FAILED\") {\n return { state: import_util_waiter.WaiterState.FAILURE, reason };\n }\n }\n } catch (e) {\n }\n } catch (exception) {\n reason = exception;\n if (exception.name && exception.name == \"ValidationError\") {\n return { state: import_util_waiter.WaiterState.FAILURE, reason };\n }\n }\n return { state: import_util_waiter.WaiterState.RETRY, reason };\n}, \"checkState\");\nvar waitForStackRollbackComplete = /* @__PURE__ */ __name(async (params, input) => {\n const serviceDefaults = { minDelay: 30, maxDelay: 120 };\n return (0, import_util_waiter.createWaiter)({ ...serviceDefaults, ...params }, input, checkState6);\n}, \"waitForStackRollbackComplete\");\nvar waitUntilStackRollbackComplete = /* @__PURE__ */ __name(async (params, input) => {\n const serviceDefaults = { minDelay: 30, maxDelay: 120 };\n const result = await (0, import_util_waiter.createWaiter)({ ...serviceDefaults, ...params }, input, checkState6);\n return (0, import_util_waiter.checkExceptions)(result);\n}, \"waitUntilStackRollbackComplete\");\n\n// src/waiters/waitForStackUpdateComplete.ts\n\nvar checkState7 = /* @__PURE__ */ __name(async (client, input) => {\n let reason;\n try {\n const result = await client.send(new DescribeStacksCommand(input));\n reason = result;\n try {\n const returnComparator = /* @__PURE__ */ __name(() => {\n const flat_1 = [].concat(...result.Stacks);\n const projection_3 = flat_1.map((element_2) => {\n return element_2.StackStatus;\n });\n return projection_3;\n }, \"returnComparator\");\n let allStringEq_5 = returnComparator().length > 0;\n for (const element_4 of returnComparator()) {\n allStringEq_5 = allStringEq_5 && element_4 == \"UPDATE_COMPLETE\";\n }\n if (allStringEq_5) {\n return { state: import_util_waiter.WaiterState.SUCCESS, reason };\n }\n } catch (e) {\n }\n try {\n const returnComparator = /* @__PURE__ */ __name(() => {\n const flat_1 = [].concat(...result.Stacks);\n const projection_3 = flat_1.map((element_2) => {\n return element_2.StackStatus;\n });\n return projection_3;\n }, \"returnComparator\");\n for (const anyStringEq_4 of returnComparator()) {\n if (anyStringEq_4 == \"UPDATE_FAILED\") {\n return { state: import_util_waiter.WaiterState.FAILURE, reason };\n }\n }\n } catch (e) {\n }\n try {\n const returnComparator = /* @__PURE__ */ __name(() => {\n const flat_1 = [].concat(...result.Stacks);\n const projection_3 = flat_1.map((element_2) => {\n return element_2.StackStatus;\n });\n return projection_3;\n }, \"returnComparator\");\n for (const anyStringEq_4 of returnComparator()) {\n if (anyStringEq_4 == \"UPDATE_ROLLBACK_FAILED\") {\n return { state: import_util_waiter.WaiterState.FAILURE, reason };\n }\n }\n } catch (e) {\n }\n try {\n const returnComparator = /* @__PURE__ */ __name(() => {\n const flat_1 = [].concat(...result.Stacks);\n const projection_3 = flat_1.map((element_2) => {\n return element_2.StackStatus;\n });\n return projection_3;\n }, \"returnComparator\");\n for (const anyStringEq_4 of returnComparator()) {\n if (anyStringEq_4 == \"UPDATE_ROLLBACK_COMPLETE\") {\n return { state: import_util_waiter.WaiterState.FAILURE, reason };\n }\n }\n } catch (e) {\n }\n } catch (exception) {\n reason = exception;\n if (exception.name && exception.name == \"ValidationError\") {\n return { state: import_util_waiter.WaiterState.FAILURE, reason };\n }\n }\n return { state: import_util_waiter.WaiterState.RETRY, reason };\n}, \"checkState\");\nvar waitForStackUpdateComplete = /* @__PURE__ */ __name(async (params, input) => {\n const serviceDefaults = { minDelay: 30, maxDelay: 120 };\n return (0, import_util_waiter.createWaiter)({ ...serviceDefaults, ...params }, input, checkState7);\n}, \"waitForStackUpdateComplete\");\nvar waitUntilStackUpdateComplete = /* @__PURE__ */ __name(async (params, input) => {\n const serviceDefaults = { minDelay: 30, maxDelay: 120 };\n const result = await (0, import_util_waiter.createWaiter)({ ...serviceDefaults, ...params }, input, checkState7);\n return (0, import_util_waiter.checkExceptions)(result);\n}, \"waitUntilStackUpdateComplete\");\n\n// src/waiters/waitForTypeRegistrationComplete.ts\n\nvar checkState8 = /* @__PURE__ */ __name(async (client, input) => {\n let reason;\n try {\n const result = await client.send(new DescribeTypeRegistrationCommand(input));\n reason = result;\n try {\n const returnComparator = /* @__PURE__ */ __name(() => {\n return result.ProgressStatus;\n }, \"returnComparator\");\n if (returnComparator() === \"COMPLETE\") {\n return { state: import_util_waiter.WaiterState.SUCCESS, reason };\n }\n } catch (e) {\n }\n try {\n const returnComparator = /* @__PURE__ */ __name(() => {\n return result.ProgressStatus;\n }, \"returnComparator\");\n if (returnComparator() === \"FAILED\") {\n return { state: import_util_waiter.WaiterState.FAILURE, reason };\n }\n } catch (e) {\n }\n } catch (exception) {\n reason = exception;\n }\n return { state: import_util_waiter.WaiterState.RETRY, reason };\n}, \"checkState\");\nvar waitForTypeRegistrationComplete = /* @__PURE__ */ __name(async (params, input) => {\n const serviceDefaults = { minDelay: 30, maxDelay: 120 };\n return (0, import_util_waiter.createWaiter)({ ...serviceDefaults, ...params }, input, checkState8);\n}, \"waitForTypeRegistrationComplete\");\nvar waitUntilTypeRegistrationComplete = /* @__PURE__ */ __name(async (params, input) => {\n const serviceDefaults = { minDelay: 30, maxDelay: 120 };\n const result = await (0, import_util_waiter.createWaiter)({ ...serviceDefaults, ...params }, input, checkState8);\n return (0, import_util_waiter.checkExceptions)(result);\n}, \"waitUntilTypeRegistrationComplete\");\n// Annotate the CommonJS export names for ESM import in node:\n\n0 && (module.exports = {\n CloudFormationServiceException,\n __Client,\n CloudFormationClient,\n CloudFormation,\n $Command,\n ActivateOrganizationsAccessCommand,\n ActivateTypeCommand,\n BatchDescribeTypeConfigurationsCommand,\n CancelUpdateStackCommand,\n ContinueUpdateRollbackCommand,\n CreateChangeSetCommand,\n CreateGeneratedTemplateCommand,\n CreateStackCommand,\n CreateStackInstancesCommand,\n CreateStackSetCommand,\n DeactivateOrganizationsAccessCommand,\n DeactivateTypeCommand,\n DeleteChangeSetCommand,\n DeleteGeneratedTemplateCommand,\n DeleteStackCommand,\n DeleteStackInstancesCommand,\n DeleteStackSetCommand,\n DeregisterTypeCommand,\n DescribeAccountLimitsCommand,\n DescribeChangeSetCommand,\n DescribeChangeSetHooksCommand,\n DescribeGeneratedTemplateCommand,\n DescribeOrganizationsAccessCommand,\n DescribePublisherCommand,\n DescribeResourceScanCommand,\n DescribeStackDriftDetectionStatusCommand,\n DescribeStackEventsCommand,\n DescribeStackInstanceCommand,\n DescribeStackResourceCommand,\n DescribeStackResourceDriftsCommand,\n DescribeStackResourcesCommand,\n DescribeStackSetCommand,\n DescribeStackSetOperationCommand,\n DescribeStacksCommand,\n DescribeTypeCommand,\n DescribeTypeRegistrationCommand,\n DetectStackDriftCommand,\n DetectStackResourceDriftCommand,\n DetectStackSetDriftCommand,\n EstimateTemplateCostCommand,\n ExecuteChangeSetCommand,\n GetGeneratedTemplateCommand,\n GetStackPolicyCommand,\n GetTemplateCommand,\n GetTemplateSummaryCommand,\n ImportStacksToStackSetCommand,\n ListChangeSetsCommand,\n ListExportsCommand,\n ListGeneratedTemplatesCommand,\n ListImportsCommand,\n ListResourceScanRelatedResourcesCommand,\n ListResourceScanResourcesCommand,\n ListResourceScansCommand,\n ListStackInstanceResourceDriftsCommand,\n ListStackInstancesCommand,\n ListStackResourcesCommand,\n ListStackSetAutoDeploymentTargetsCommand,\n ListStackSetOperationResultsCommand,\n ListStackSetOperationsCommand,\n ListStackSetsCommand,\n ListStacksCommand,\n ListTypeRegistrationsCommand,\n ListTypeVersionsCommand,\n ListTypesCommand,\n PublishTypeCommand,\n RecordHandlerProgressCommand,\n RegisterPublisherCommand,\n RegisterTypeCommand,\n RollbackStackCommand,\n SetStackPolicyCommand,\n SetTypeConfigurationCommand,\n SetTypeDefaultVersionCommand,\n SignalResourceCommand,\n StartResourceScanCommand,\n StopStackSetOperationCommand,\n TestTypeCommand,\n UpdateGeneratedTemplateCommand,\n UpdateStackCommand,\n UpdateStackInstancesCommand,\n UpdateStackSetCommand,\n UpdateTerminationProtectionCommand,\n ValidateTemplateCommand,\n paginateDescribeAccountLimits,\n paginateDescribeStackEvents,\n paginateDescribeStackResourceDrifts,\n paginateDescribeStacks,\n paginateListChangeSets,\n paginateListExports,\n paginateListGeneratedTemplates,\n paginateListImports,\n paginateListResourceScanRelatedResources,\n paginateListResourceScanResources,\n paginateListResourceScans,\n paginateListStackInstances,\n paginateListStackResources,\n paginateListStackSetOperationResults,\n paginateListStackSetOperations,\n paginateListStackSets,\n paginateListStacks,\n paginateListTypeRegistrations,\n paginateListTypeVersions,\n paginateListTypes,\n waitForChangeSetCreateComplete,\n waitUntilChangeSetCreateComplete,\n waitForStackCreateComplete,\n waitUntilStackCreateComplete,\n waitForStackDeleteComplete,\n waitUntilStackDeleteComplete,\n waitForStackExists,\n waitUntilStackExists,\n waitForStackImportComplete,\n waitUntilStackImportComplete,\n waitForStackRollbackComplete,\n waitUntilStackRollbackComplete,\n waitForStackUpdateComplete,\n waitUntilStackUpdateComplete,\n waitForTypeRegistrationComplete,\n waitUntilTypeRegistrationComplete,\n AccountFilterType,\n AccountGateStatus,\n InvalidOperationException,\n OperationNotFoundException,\n ThirdPartyType,\n VersionBump,\n CFNRegistryException,\n TypeNotFoundException,\n AlreadyExistsException,\n AttributeChangeType,\n TypeConfigurationNotFoundException,\n CallAs,\n TokenAlreadyExistsException,\n Capability,\n Category,\n ChangeAction,\n ChangeSource,\n EvaluationType,\n ResourceAttribute,\n RequiresRecreation,\n PolicyAction,\n Replacement,\n ChangeType,\n HookFailureMode,\n HookInvocationPoint,\n HookTargetType,\n ChangeSetHooksStatus,\n ChangeSetNotFoundException,\n ChangeSetStatus,\n ExecutionStatus,\n ChangeSetType,\n OnStackFailure,\n InsufficientCapabilitiesException,\n LimitExceededException,\n ConcurrentResourcesLimitExceededException,\n GeneratedTemplateDeletionPolicy,\n GeneratedTemplateUpdateReplacePolicy,\n OnFailure,\n ConcurrencyMode,\n RegionConcurrencyType,\n OperationIdAlreadyExistsException,\n OperationInProgressException,\n StackSetNotFoundException,\n StaleRequestException,\n CreatedButModifiedException,\n PermissionModels,\n NameAlreadyExistsException,\n InvalidChangeSetStatusException,\n GeneratedTemplateNotFoundException,\n DeletionMode,\n StackSetNotEmptyException,\n RegistryType,\n GeneratedTemplateResourceStatus,\n WarningType,\n GeneratedTemplateStatus,\n OrganizationStatus,\n IdentityProvider,\n PublisherStatus,\n ResourceScanStatus,\n ResourceScanNotFoundException,\n StackDriftDetectionStatus,\n StackDriftStatus,\n DetailedStatus,\n HookStatus,\n ResourceStatus,\n StackInstanceDetailedStatus,\n StackInstanceStatus,\n StackInstanceNotFoundException,\n StackResourceDriftStatus,\n DifferenceType,\n StackStatus,\n StackSetDriftDetectionStatus,\n StackSetDriftStatus,\n StackSetStatus,\n StackSetOperationAction,\n StackSetOperationStatus,\n DeprecatedStatus,\n ProvisioningType,\n TypeTestsStatus,\n Visibility,\n RegistrationStatus,\n TemplateFormat,\n TemplateStage,\n StackNotFoundException,\n ResourceScanInProgressException,\n StackInstanceFilterName,\n OperationResultFilterName,\n StackSetOperationResultStatus,\n InvalidStateTransitionException,\n OperationStatusCheckFailedException,\n OperationStatus,\n HandlerErrorCode,\n ResourceSignalStatus,\n ResourceScanLimitExceededException\n});\n\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getRuntimeConfig = void 0;\nconst tslib_1 = require(\"tslib\");\nconst package_json_1 = tslib_1.__importDefault(require(\"../package.json\"));\nconst core_1 = require(\"@aws-sdk/core\");\nconst credential_provider_node_1 = require(\"@aws-sdk/credential-provider-node\");\nconst util_user_agent_node_1 = require(\"@aws-sdk/util-user-agent-node\");\nconst config_resolver_1 = require(\"@smithy/config-resolver\");\nconst hash_node_1 = require(\"@smithy/hash-node\");\nconst middleware_retry_1 = require(\"@smithy/middleware-retry\");\nconst node_config_provider_1 = require(\"@smithy/node-config-provider\");\nconst node_http_handler_1 = require(\"@smithy/node-http-handler\");\nconst util_body_length_node_1 = require(\"@smithy/util-body-length-node\");\nconst util_retry_1 = require(\"@smithy/util-retry\");\nconst runtimeConfig_shared_1 = require(\"./runtimeConfig.shared\");\nconst smithy_client_1 = require(\"@smithy/smithy-client\");\nconst util_defaults_mode_node_1 = require(\"@smithy/util-defaults-mode-node\");\nconst smithy_client_2 = require(\"@smithy/smithy-client\");\nconst getRuntimeConfig = (config) => {\n (0, smithy_client_2.emitWarningIfUnsupportedVersion)(process.version);\n const defaultsMode = (0, util_defaults_mode_node_1.resolveDefaultsModeConfig)(config);\n const defaultConfigProvider = () => defaultsMode().then(smithy_client_1.loadConfigsForDefaultMode);\n const clientSharedValues = (0, runtimeConfig_shared_1.getRuntimeConfig)(config);\n (0, core_1.emitWarningIfUnsupportedVersion)(process.version);\n return {\n ...clientSharedValues,\n ...config,\n runtime: \"node\",\n defaultsMode,\n bodyLengthChecker: config?.bodyLengthChecker ?? util_body_length_node_1.calculateBodyLength,\n credentialDefaultProvider: config?.credentialDefaultProvider ?? credential_provider_node_1.defaultProvider,\n defaultUserAgentProvider: config?.defaultUserAgentProvider ??\n (0, util_user_agent_node_1.defaultUserAgent)({ serviceId: clientSharedValues.serviceId, clientVersion: package_json_1.default.version }),\n maxAttempts: config?.maxAttempts ?? (0, node_config_provider_1.loadConfig)(middleware_retry_1.NODE_MAX_ATTEMPT_CONFIG_OPTIONS),\n region: config?.region ?? (0, node_config_provider_1.loadConfig)(config_resolver_1.NODE_REGION_CONFIG_OPTIONS, config_resolver_1.NODE_REGION_CONFIG_FILE_OPTIONS),\n requestHandler: node_http_handler_1.NodeHttpHandler.create(config?.requestHandler ?? defaultConfigProvider),\n retryMode: config?.retryMode ??\n (0, node_config_provider_1.loadConfig)({\n ...middleware_retry_1.NODE_RETRY_MODE_CONFIG_OPTIONS,\n default: async () => (await defaultConfigProvider()).retryMode || util_retry_1.DEFAULT_RETRY_MODE,\n }),\n sha256: config?.sha256 ?? hash_node_1.Hash.bind(null, \"sha256\"),\n streamCollector: config?.streamCollector ?? node_http_handler_1.streamCollector,\n useDualstackEndpoint: config?.useDualstackEndpoint ?? (0, node_config_provider_1.loadConfig)(config_resolver_1.NODE_USE_DUALSTACK_ENDPOINT_CONFIG_OPTIONS),\n useFipsEndpoint: config?.useFipsEndpoint ?? (0, node_config_provider_1.loadConfig)(config_resolver_1.NODE_USE_FIPS_ENDPOINT_CONFIG_OPTIONS),\n };\n};\nexports.getRuntimeConfig = getRuntimeConfig;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getRuntimeConfig = void 0;\nconst core_1 = require(\"@aws-sdk/core\");\nconst smithy_client_1 = require(\"@smithy/smithy-client\");\nconst url_parser_1 = require(\"@smithy/url-parser\");\nconst util_base64_1 = require(\"@smithy/util-base64\");\nconst util_utf8_1 = require(\"@smithy/util-utf8\");\nconst httpAuthSchemeProvider_1 = require(\"./auth/httpAuthSchemeProvider\");\nconst endpointResolver_1 = require(\"./endpoint/endpointResolver\");\nconst getRuntimeConfig = (config) => {\n return {\n apiVersion: \"2010-05-15\",\n base64Decoder: config?.base64Decoder ?? util_base64_1.fromBase64,\n base64Encoder: config?.base64Encoder ?? util_base64_1.toBase64,\n disableHostPrefix: config?.disableHostPrefix ?? false,\n endpointProvider: config?.endpointProvider ?? endpointResolver_1.defaultEndpointResolver,\n extensions: config?.extensions ?? [],\n httpAuthSchemeProvider: config?.httpAuthSchemeProvider ?? httpAuthSchemeProvider_1.defaultCloudFormationHttpAuthSchemeProvider,\n httpAuthSchemes: config?.httpAuthSchemes ?? [\n {\n schemeId: \"aws.auth#sigv4\",\n identityProvider: (ipc) => ipc.getIdentityProvider(\"aws.auth#sigv4\"),\n signer: new core_1.AwsSdkSigV4Signer(),\n },\n ],\n logger: config?.logger ?? new smithy_client_1.NoOpLogger(),\n serviceId: config?.serviceId ?? \"CloudFormation\",\n urlParser: config?.urlParser ?? url_parser_1.parseUrl,\n utf8Decoder: config?.utf8Decoder ?? util_utf8_1.fromUtf8,\n utf8Encoder: config?.utf8Encoder ?? util_utf8_1.toUtf8,\n };\n};\nexports.getRuntimeConfig = getRuntimeConfig;\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"NIL\", {\n enumerable: true,\n get: function () {\n return _nil.default;\n }\n});\nObject.defineProperty(exports, \"parse\", {\n enumerable: true,\n get: function () {\n return _parse.default;\n }\n});\nObject.defineProperty(exports, \"stringify\", {\n enumerable: true,\n get: function () {\n return _stringify.default;\n }\n});\nObject.defineProperty(exports, \"v1\", {\n enumerable: true,\n get: function () {\n return _v.default;\n }\n});\nObject.defineProperty(exports, \"v3\", {\n enumerable: true,\n get: function () {\n return _v2.default;\n }\n});\nObject.defineProperty(exports, \"v4\", {\n enumerable: true,\n get: function () {\n return _v3.default;\n }\n});\nObject.defineProperty(exports, \"v5\", {\n enumerable: true,\n get: function () {\n return _v4.default;\n }\n});\nObject.defineProperty(exports, \"validate\", {\n enumerable: true,\n get: function () {\n return _validate.default;\n }\n});\nObject.defineProperty(exports, \"version\", {\n enumerable: true,\n get: function () {\n return _version.default;\n }\n});\n\nvar _v = _interopRequireDefault(require(\"./v1.js\"));\n\nvar _v2 = _interopRequireDefault(require(\"./v3.js\"));\n\nvar _v3 = _interopRequireDefault(require(\"./v4.js\"));\n\nvar _v4 = _interopRequireDefault(require(\"./v5.js\"));\n\nvar _nil = _interopRequireDefault(require(\"./nil.js\"));\n\nvar _version = _interopRequireDefault(require(\"./version.js\"));\n\nvar _validate = _interopRequireDefault(require(\"./validate.js\"));\n\nvar _stringify = _interopRequireDefault(require(\"./stringify.js\"));\n\nvar _parse = _interopRequireDefault(require(\"./parse.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _crypto = _interopRequireDefault(require(\"crypto\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction md5(bytes) {\n if (Array.isArray(bytes)) {\n bytes = Buffer.from(bytes);\n } else if (typeof bytes === 'string') {\n bytes = Buffer.from(bytes, 'utf8');\n }\n\n return _crypto.default.createHash('md5').update(bytes).digest();\n}\n\nvar _default = md5;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _crypto = _interopRequireDefault(require(\"crypto\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar _default = {\n randomUUID: _crypto.default.randomUUID\n};\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _default = '00000000-0000-0000-0000-000000000000';\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _validate = _interopRequireDefault(require(\"./validate.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction parse(uuid) {\n if (!(0, _validate.default)(uuid)) {\n throw TypeError('Invalid UUID');\n }\n\n let v;\n const arr = new Uint8Array(16); // Parse ########-....-....-....-............\n\n arr[0] = (v = parseInt(uuid.slice(0, 8), 16)) >>> 24;\n arr[1] = v >>> 16 & 0xff;\n arr[2] = v >>> 8 & 0xff;\n arr[3] = v & 0xff; // Parse ........-####-....-....-............\n\n arr[4] = (v = parseInt(uuid.slice(9, 13), 16)) >>> 8;\n arr[5] = v & 0xff; // Parse ........-....-####-....-............\n\n arr[6] = (v = parseInt(uuid.slice(14, 18), 16)) >>> 8;\n arr[7] = v & 0xff; // Parse ........-....-....-####-............\n\n arr[8] = (v = parseInt(uuid.slice(19, 23), 16)) >>> 8;\n arr[9] = v & 0xff; // Parse ........-....-....-....-############\n // (Use \"/\" to avoid 32-bit truncation when bit-shifting high-order bytes)\n\n arr[10] = (v = parseInt(uuid.slice(24, 36), 16)) / 0x10000000000 & 0xff;\n arr[11] = v / 0x100000000 & 0xff;\n arr[12] = v >>> 24 & 0xff;\n arr[13] = v >>> 16 & 0xff;\n arr[14] = v >>> 8 & 0xff;\n arr[15] = v & 0xff;\n return arr;\n}\n\nvar _default = parse;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _default = /^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = rng;\n\nvar _crypto = _interopRequireDefault(require(\"crypto\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nconst rnds8Pool = new Uint8Array(256); // # of random values to pre-allocate\n\nlet poolPtr = rnds8Pool.length;\n\nfunction rng() {\n if (poolPtr > rnds8Pool.length - 16) {\n _crypto.default.randomFillSync(rnds8Pool);\n\n poolPtr = 0;\n }\n\n return rnds8Pool.slice(poolPtr, poolPtr += 16);\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _crypto = _interopRequireDefault(require(\"crypto\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction sha1(bytes) {\n if (Array.isArray(bytes)) {\n bytes = Buffer.from(bytes);\n } else if (typeof bytes === 'string') {\n bytes = Buffer.from(bytes, 'utf8');\n }\n\n return _crypto.default.createHash('sha1').update(bytes).digest();\n}\n\nvar _default = sha1;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nexports.unsafeStringify = unsafeStringify;\n\nvar _validate = _interopRequireDefault(require(\"./validate.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * Convert array of 16 byte values to UUID string format of the form:\n * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX\n */\nconst byteToHex = [];\n\nfor (let i = 0; i < 256; ++i) {\n byteToHex.push((i + 0x100).toString(16).slice(1));\n}\n\nfunction unsafeStringify(arr, offset = 0) {\n // Note: Be careful editing this code! It's been tuned for performance\n // and works in ways you may not expect. See https://github.com/uuidjs/uuid/pull/434\n return byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + '-' + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + '-' + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + '-' + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + '-' + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]];\n}\n\nfunction stringify(arr, offset = 0) {\n const uuid = unsafeStringify(arr, offset); // Consistency check for valid UUID. If this throws, it's likely due to one\n // of the following:\n // - One or more input array values don't map to a hex octet (leading to\n // \"undefined\" in the uuid)\n // - Invalid input values for the RFC `version` or `variant` fields\n\n if (!(0, _validate.default)(uuid)) {\n throw TypeError('Stringified UUID is invalid');\n }\n\n return uuid;\n}\n\nvar _default = stringify;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _rng = _interopRequireDefault(require(\"./rng.js\"));\n\nvar _stringify = require(\"./stringify.js\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// **`v1()` - Generate time-based UUID**\n//\n// Inspired by https://github.com/LiosK/UUID.js\n// and http://docs.python.org/library/uuid.html\nlet _nodeId;\n\nlet _clockseq; // Previous uuid creation time\n\n\nlet _lastMSecs = 0;\nlet _lastNSecs = 0; // See https://github.com/uuidjs/uuid for API details\n\nfunction v1(options, buf, offset) {\n let i = buf && offset || 0;\n const b = buf || new Array(16);\n options = options || {};\n let node = options.node || _nodeId;\n let clockseq = options.clockseq !== undefined ? options.clockseq : _clockseq; // node and clockseq need to be initialized to random values if they're not\n // specified. We do this lazily to minimize issues related to insufficient\n // system entropy. See #189\n\n if (node == null || clockseq == null) {\n const seedBytes = options.random || (options.rng || _rng.default)();\n\n if (node == null) {\n // Per 4.5, create and 48-bit node id, (47 random bits + multicast bit = 1)\n node = _nodeId = [seedBytes[0] | 0x01, seedBytes[1], seedBytes[2], seedBytes[3], seedBytes[4], seedBytes[5]];\n }\n\n if (clockseq == null) {\n // Per 4.2.2, randomize (14 bit) clockseq\n clockseq = _clockseq = (seedBytes[6] << 8 | seedBytes[7]) & 0x3fff;\n }\n } // UUID timestamps are 100 nano-second units since the Gregorian epoch,\n // (1582-10-15 00:00). JSNumbers aren't precise enough for this, so\n // time is handled internally as 'msecs' (integer milliseconds) and 'nsecs'\n // (100-nanoseconds offset from msecs) since unix epoch, 1970-01-01 00:00.\n\n\n let msecs = options.msecs !== undefined ? options.msecs : Date.now(); // Per 4.2.1.2, use count of uuid's generated during the current clock\n // cycle to simulate higher resolution clock\n\n let nsecs = options.nsecs !== undefined ? options.nsecs : _lastNSecs + 1; // Time since last uuid creation (in msecs)\n\n const dt = msecs - _lastMSecs + (nsecs - _lastNSecs) / 10000; // Per 4.2.1.2, Bump clockseq on clock regression\n\n if (dt < 0 && options.clockseq === undefined) {\n clockseq = clockseq + 1 & 0x3fff;\n } // Reset nsecs if clock regresses (new clockseq) or we've moved onto a new\n // time interval\n\n\n if ((dt < 0 || msecs > _lastMSecs) && options.nsecs === undefined) {\n nsecs = 0;\n } // Per 4.2.1.2 Throw error if too many uuids are requested\n\n\n if (nsecs >= 10000) {\n throw new Error(\"uuid.v1(): Can't create more than 10M uuids/sec\");\n }\n\n _lastMSecs = msecs;\n _lastNSecs = nsecs;\n _clockseq = clockseq; // Per 4.1.4 - Convert from unix epoch to Gregorian epoch\n\n msecs += 12219292800000; // `time_low`\n\n const tl = ((msecs & 0xfffffff) * 10000 + nsecs) % 0x100000000;\n b[i++] = tl >>> 24 & 0xff;\n b[i++] = tl >>> 16 & 0xff;\n b[i++] = tl >>> 8 & 0xff;\n b[i++] = tl & 0xff; // `time_mid`\n\n const tmh = msecs / 0x100000000 * 10000 & 0xfffffff;\n b[i++] = tmh >>> 8 & 0xff;\n b[i++] = tmh & 0xff; // `time_high_and_version`\n\n b[i++] = tmh >>> 24 & 0xf | 0x10; // include version\n\n b[i++] = tmh >>> 16 & 0xff; // `clock_seq_hi_and_reserved` (Per 4.2.2 - include variant)\n\n b[i++] = clockseq >>> 8 | 0x80; // `clock_seq_low`\n\n b[i++] = clockseq & 0xff; // `node`\n\n for (let n = 0; n < 6; ++n) {\n b[i + n] = node[n];\n }\n\n return buf || (0, _stringify.unsafeStringify)(b);\n}\n\nvar _default = v1;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _v = _interopRequireDefault(require(\"./v35.js\"));\n\nvar _md = _interopRequireDefault(require(\"./md5.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nconst v3 = (0, _v.default)('v3', 0x30, _md.default);\nvar _default = v3;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.URL = exports.DNS = void 0;\nexports.default = v35;\n\nvar _stringify = require(\"./stringify.js\");\n\nvar _parse = _interopRequireDefault(require(\"./parse.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction stringToBytes(str) {\n str = unescape(encodeURIComponent(str)); // UTF8 escape\n\n const bytes = [];\n\n for (let i = 0; i < str.length; ++i) {\n bytes.push(str.charCodeAt(i));\n }\n\n return bytes;\n}\n\nconst DNS = '6ba7b810-9dad-11d1-80b4-00c04fd430c8';\nexports.DNS = DNS;\nconst URL = '6ba7b811-9dad-11d1-80b4-00c04fd430c8';\nexports.URL = URL;\n\nfunction v35(name, version, hashfunc) {\n function generateUUID(value, namespace, buf, offset) {\n var _namespace;\n\n if (typeof value === 'string') {\n value = stringToBytes(value);\n }\n\n if (typeof namespace === 'string') {\n namespace = (0, _parse.default)(namespace);\n }\n\n if (((_namespace = namespace) === null || _namespace === void 0 ? void 0 : _namespace.length) !== 16) {\n throw TypeError('Namespace must be array-like (16 iterable integer values, 0-255)');\n } // Compute hash of namespace and value, Per 4.3\n // Future: Use spread syntax when supported on all platforms, e.g. `bytes =\n // hashfunc([...namespace, ... value])`\n\n\n let bytes = new Uint8Array(16 + value.length);\n bytes.set(namespace);\n bytes.set(value, namespace.length);\n bytes = hashfunc(bytes);\n bytes[6] = bytes[6] & 0x0f | version;\n bytes[8] = bytes[8] & 0x3f | 0x80;\n\n if (buf) {\n offset = offset || 0;\n\n for (let i = 0; i < 16; ++i) {\n buf[offset + i] = bytes[i];\n }\n\n return buf;\n }\n\n return (0, _stringify.unsafeStringify)(bytes);\n } // Function#name is not settable on some platforms (#270)\n\n\n try {\n generateUUID.name = name; // eslint-disable-next-line no-empty\n } catch (err) {} // For CommonJS default export support\n\n\n generateUUID.DNS = DNS;\n generateUUID.URL = URL;\n return generateUUID;\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _native = _interopRequireDefault(require(\"./native.js\"));\n\nvar _rng = _interopRequireDefault(require(\"./rng.js\"));\n\nvar _stringify = require(\"./stringify.js\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction v4(options, buf, offset) {\n if (_native.default.randomUUID && !buf && !options) {\n return _native.default.randomUUID();\n }\n\n options = options || {};\n\n const rnds = options.random || (options.rng || _rng.default)(); // Per 4.4, set bits for version and `clock_seq_hi_and_reserved`\n\n\n rnds[6] = rnds[6] & 0x0f | 0x40;\n rnds[8] = rnds[8] & 0x3f | 0x80; // Copy bytes to buffer, if provided\n\n if (buf) {\n offset = offset || 0;\n\n for (let i = 0; i < 16; ++i) {\n buf[offset + i] = rnds[i];\n }\n\n return buf;\n }\n\n return (0, _stringify.unsafeStringify)(rnds);\n}\n\nvar _default = v4;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _v = _interopRequireDefault(require(\"./v35.js\"));\n\nvar _sha = _interopRequireDefault(require(\"./sha1.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nconst v5 = (0, _v.default)('v5', 0x50, _sha.default);\nvar _default = v5;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _regex = _interopRequireDefault(require(\"./regex.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction validate(uuid) {\n return typeof uuid === 'string' && _regex.default.test(uuid);\n}\n\nvar _default = validate;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _validate = _interopRequireDefault(require(\"./validate.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction version(uuid) {\n if (!(0, _validate.default)(uuid)) {\n throw TypeError('Invalid UUID');\n }\n\n return parseInt(uuid.slice(14, 15), 16);\n}\n\nvar _default = version;\nexports.default = _default;","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.resolveHttpAuthSchemeConfig = exports.defaultCognitoIdentityHttpAuthSchemeProvider = exports.defaultCognitoIdentityHttpAuthSchemeParametersProvider = void 0;\nconst core_1 = require(\"@aws-sdk/core\");\nconst util_middleware_1 = require(\"@smithy/util-middleware\");\nconst defaultCognitoIdentityHttpAuthSchemeParametersProvider = async (config, context, input) => {\n return {\n operation: (0, util_middleware_1.getSmithyContext)(context).operation,\n region: (await (0, util_middleware_1.normalizeProvider)(config.region)()) ||\n (() => {\n throw new Error(\"expected `region` to be configured for `aws.auth#sigv4`\");\n })(),\n };\n};\nexports.defaultCognitoIdentityHttpAuthSchemeParametersProvider = defaultCognitoIdentityHttpAuthSchemeParametersProvider;\nfunction createAwsAuthSigv4HttpAuthOption(authParameters) {\n return {\n schemeId: \"aws.auth#sigv4\",\n signingProperties: {\n name: \"cognito-identity\",\n region: authParameters.region,\n },\n propertiesExtractor: (config, context) => ({\n signingProperties: {\n config,\n context,\n },\n }),\n };\n}\nfunction createSmithyApiNoAuthHttpAuthOption(authParameters) {\n return {\n schemeId: \"smithy.api#noAuth\",\n };\n}\nconst defaultCognitoIdentityHttpAuthSchemeProvider = (authParameters) => {\n const options = [];\n switch (authParameters.operation) {\n case \"GetCredentialsForIdentity\": {\n options.push(createSmithyApiNoAuthHttpAuthOption(authParameters));\n break;\n }\n case \"GetId\": {\n options.push(createSmithyApiNoAuthHttpAuthOption(authParameters));\n break;\n }\n case \"GetOpenIdToken\": {\n options.push(createSmithyApiNoAuthHttpAuthOption(authParameters));\n break;\n }\n case \"UnlinkIdentity\": {\n options.push(createSmithyApiNoAuthHttpAuthOption(authParameters));\n break;\n }\n default: {\n options.push(createAwsAuthSigv4HttpAuthOption(authParameters));\n }\n }\n return options;\n};\nexports.defaultCognitoIdentityHttpAuthSchemeProvider = defaultCognitoIdentityHttpAuthSchemeProvider;\nconst resolveHttpAuthSchemeConfig = (config) => {\n const config_0 = (0, core_1.resolveAwsSdkSigV4Config)(config);\n return {\n ...config_0,\n };\n};\nexports.resolveHttpAuthSchemeConfig = resolveHttpAuthSchemeConfig;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.defaultEndpointResolver = void 0;\nconst util_endpoints_1 = require(\"@aws-sdk/util-endpoints\");\nconst util_endpoints_2 = require(\"@smithy/util-endpoints\");\nconst ruleset_1 = require(\"./ruleset\");\nconst cache = new util_endpoints_2.EndpointCache({\n size: 50,\n params: [\"Endpoint\", \"Region\", \"UseDualStack\", \"UseFIPS\"],\n});\nconst defaultEndpointResolver = (endpointParams, context = {}) => {\n return cache.get(endpointParams, () => (0, util_endpoints_2.resolveEndpoint)(ruleset_1.ruleSet, {\n endpointParams: endpointParams,\n logger: context.logger,\n }));\n};\nexports.defaultEndpointResolver = defaultEndpointResolver;\nutil_endpoints_2.customEndpointFunctions.aws = util_endpoints_1.awsEndpointFunctions;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ruleSet = void 0;\nconst s = \"required\", t = \"fn\", u = \"argv\", v = \"ref\";\nconst a = true, b = \"isSet\", c = \"booleanEquals\", d = \"error\", e = \"endpoint\", f = \"tree\", g = \"PartitionResult\", h = { [s]: false, \"type\": \"String\" }, i = { [s]: true, \"default\": false, \"type\": \"Boolean\" }, j = { [v]: \"Endpoint\" }, k = { [t]: c, [u]: [{ [v]: \"UseFIPS\" }, true] }, l = { [t]: c, [u]: [{ [v]: \"UseDualStack\" }, true] }, m = {}, n = { [t]: \"getAttr\", [u]: [{ [v]: g }, \"supportsFIPS\"] }, o = { [t]: c, [u]: [true, { [t]: \"getAttr\", [u]: [{ [v]: g }, \"supportsDualStack\"] }] }, p = [k], q = [l], r = [{ [v]: \"Region\" }];\nconst _data = { version: \"1.0\", parameters: { Region: h, UseDualStack: i, UseFIPS: i, Endpoint: h }, rules: [{ conditions: [{ [t]: b, [u]: [j] }], rules: [{ conditions: p, error: \"Invalid Configuration: FIPS and custom endpoint are not supported\", type: d }, { conditions: q, error: \"Invalid Configuration: Dualstack and custom endpoint are not supported\", type: d }, { endpoint: { url: j, properties: m, headers: m }, type: e }], type: f }, { conditions: [{ [t]: b, [u]: r }], rules: [{ conditions: [{ [t]: \"aws.partition\", [u]: r, assign: g }], rules: [{ conditions: [k, l], rules: [{ conditions: [{ [t]: c, [u]: [a, n] }, o], rules: [{ endpoint: { url: \"https://cognito-identity-fips.{Region}.{PartitionResult#dualStackDnsSuffix}\", properties: m, headers: m }, type: e }], type: f }, { error: \"FIPS and DualStack are enabled, but this partition does not support one or both\", type: d }], type: f }, { conditions: p, rules: [{ conditions: [{ [t]: c, [u]: [n, a] }], rules: [{ endpoint: { url: \"https://cognito-identity-fips.{Region}.{PartitionResult#dnsSuffix}\", properties: m, headers: m }, type: e }], type: f }, { error: \"FIPS is enabled but this partition does not support FIPS\", type: d }], type: f }, { conditions: q, rules: [{ conditions: [o], rules: [{ endpoint: { url: \"https://cognito-identity.{Region}.{PartitionResult#dualStackDnsSuffix}\", properties: m, headers: m }, type: e }], type: f }, { error: \"DualStack is enabled but this partition does not support DualStack\", type: d }], type: f }, { endpoint: { url: \"https://cognito-identity.{Region}.{PartitionResult#dnsSuffix}\", properties: m, headers: m }, type: e }], type: f }], type: f }, { error: \"Invalid Configuration: Missing Region\", type: d }] };\nexports.ruleSet = _data;\n","\"use strict\";\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/index.ts\nvar src_exports = {};\n__export(src_exports, {\n AmbiguousRoleResolutionType: () => AmbiguousRoleResolutionType,\n CognitoIdentity: () => CognitoIdentity,\n CognitoIdentityClient: () => CognitoIdentityClient,\n CognitoIdentityServiceException: () => CognitoIdentityServiceException,\n ConcurrentModificationException: () => ConcurrentModificationException,\n CreateIdentityPoolCommand: () => CreateIdentityPoolCommand,\n CredentialsFilterSensitiveLog: () => CredentialsFilterSensitiveLog,\n DeleteIdentitiesCommand: () => DeleteIdentitiesCommand,\n DeleteIdentityPoolCommand: () => DeleteIdentityPoolCommand,\n DescribeIdentityCommand: () => DescribeIdentityCommand,\n DescribeIdentityPoolCommand: () => DescribeIdentityPoolCommand,\n DeveloperUserAlreadyRegisteredException: () => DeveloperUserAlreadyRegisteredException,\n ErrorCode: () => ErrorCode,\n ExternalServiceException: () => ExternalServiceException,\n GetCredentialsForIdentityCommand: () => GetCredentialsForIdentityCommand,\n GetCredentialsForIdentityInputFilterSensitiveLog: () => GetCredentialsForIdentityInputFilterSensitiveLog,\n GetCredentialsForIdentityResponseFilterSensitiveLog: () => GetCredentialsForIdentityResponseFilterSensitiveLog,\n GetIdCommand: () => GetIdCommand,\n GetIdInputFilterSensitiveLog: () => GetIdInputFilterSensitiveLog,\n GetIdentityPoolRolesCommand: () => GetIdentityPoolRolesCommand,\n GetOpenIdTokenCommand: () => GetOpenIdTokenCommand,\n GetOpenIdTokenForDeveloperIdentityCommand: () => GetOpenIdTokenForDeveloperIdentityCommand,\n GetOpenIdTokenForDeveloperIdentityInputFilterSensitiveLog: () => GetOpenIdTokenForDeveloperIdentityInputFilterSensitiveLog,\n GetOpenIdTokenForDeveloperIdentityResponseFilterSensitiveLog: () => GetOpenIdTokenForDeveloperIdentityResponseFilterSensitiveLog,\n GetOpenIdTokenInputFilterSensitiveLog: () => GetOpenIdTokenInputFilterSensitiveLog,\n GetOpenIdTokenResponseFilterSensitiveLog: () => GetOpenIdTokenResponseFilterSensitiveLog,\n GetPrincipalTagAttributeMapCommand: () => GetPrincipalTagAttributeMapCommand,\n InternalErrorException: () => InternalErrorException,\n InvalidIdentityPoolConfigurationException: () => InvalidIdentityPoolConfigurationException,\n InvalidParameterException: () => InvalidParameterException,\n LimitExceededException: () => LimitExceededException,\n ListIdentitiesCommand: () => ListIdentitiesCommand,\n ListIdentityPoolsCommand: () => ListIdentityPoolsCommand,\n ListTagsForResourceCommand: () => ListTagsForResourceCommand,\n LookupDeveloperIdentityCommand: () => LookupDeveloperIdentityCommand,\n MappingRuleMatchType: () => MappingRuleMatchType,\n MergeDeveloperIdentitiesCommand: () => MergeDeveloperIdentitiesCommand,\n NotAuthorizedException: () => NotAuthorizedException,\n ResourceConflictException: () => ResourceConflictException,\n ResourceNotFoundException: () => ResourceNotFoundException,\n RoleMappingType: () => RoleMappingType,\n SetIdentityPoolRolesCommand: () => SetIdentityPoolRolesCommand,\n SetPrincipalTagAttributeMapCommand: () => SetPrincipalTagAttributeMapCommand,\n TagResourceCommand: () => TagResourceCommand,\n TooManyRequestsException: () => TooManyRequestsException,\n UnlinkDeveloperIdentityCommand: () => UnlinkDeveloperIdentityCommand,\n UnlinkIdentityCommand: () => UnlinkIdentityCommand,\n UnlinkIdentityInputFilterSensitiveLog: () => UnlinkIdentityInputFilterSensitiveLog,\n UntagResourceCommand: () => UntagResourceCommand,\n UpdateIdentityPoolCommand: () => UpdateIdentityPoolCommand,\n __Client: () => import_smithy_client.Client,\n paginateListIdentityPools: () => paginateListIdentityPools\n});\nmodule.exports = __toCommonJS(src_exports);\n\n// src/CognitoIdentityClient.ts\nvar import_middleware_host_header = require(\"@aws-sdk/middleware-host-header\");\nvar import_middleware_logger = require(\"@aws-sdk/middleware-logger\");\nvar import_middleware_recursion_detection = require(\"@aws-sdk/middleware-recursion-detection\");\nvar import_middleware_user_agent = require(\"@aws-sdk/middleware-user-agent\");\nvar import_config_resolver = require(\"@smithy/config-resolver\");\nvar import_core = require(\"@smithy/core\");\nvar import_middleware_content_length = require(\"@smithy/middleware-content-length\");\nvar import_middleware_endpoint = require(\"@smithy/middleware-endpoint\");\nvar import_middleware_retry = require(\"@smithy/middleware-retry\");\n\nvar import_httpAuthSchemeProvider = require(\"./auth/httpAuthSchemeProvider\");\n\n// src/endpoint/EndpointParameters.ts\nvar resolveClientEndpointParameters = /* @__PURE__ */ __name((options) => {\n return {\n ...options,\n useDualstackEndpoint: options.useDualstackEndpoint ?? false,\n useFipsEndpoint: options.useFipsEndpoint ?? false,\n defaultSigningName: \"cognito-identity\"\n };\n}, \"resolveClientEndpointParameters\");\nvar commonParams = {\n UseFIPS: { type: \"builtInParams\", name: \"useFipsEndpoint\" },\n Endpoint: { type: \"builtInParams\", name: \"endpoint\" },\n Region: { type: \"builtInParams\", name: \"region\" },\n UseDualStack: { type: \"builtInParams\", name: \"useDualstackEndpoint\" }\n};\n\n// src/CognitoIdentityClient.ts\nvar import_runtimeConfig = require(\"././runtimeConfig\");\n\n// src/runtimeExtensions.ts\nvar import_region_config_resolver = require(\"@aws-sdk/region-config-resolver\");\nvar import_protocol_http = require(\"@smithy/protocol-http\");\nvar import_smithy_client = require(\"@smithy/smithy-client\");\n\n// src/auth/httpAuthExtensionConfiguration.ts\nvar getHttpAuthExtensionConfiguration = /* @__PURE__ */ __name((runtimeConfig) => {\n const _httpAuthSchemes = runtimeConfig.httpAuthSchemes;\n let _httpAuthSchemeProvider = runtimeConfig.httpAuthSchemeProvider;\n let _credentials = runtimeConfig.credentials;\n return {\n setHttpAuthScheme(httpAuthScheme) {\n const index = _httpAuthSchemes.findIndex((scheme) => scheme.schemeId === httpAuthScheme.schemeId);\n if (index === -1) {\n _httpAuthSchemes.push(httpAuthScheme);\n } else {\n _httpAuthSchemes.splice(index, 1, httpAuthScheme);\n }\n },\n httpAuthSchemes() {\n return _httpAuthSchemes;\n },\n setHttpAuthSchemeProvider(httpAuthSchemeProvider) {\n _httpAuthSchemeProvider = httpAuthSchemeProvider;\n },\n httpAuthSchemeProvider() {\n return _httpAuthSchemeProvider;\n },\n setCredentials(credentials) {\n _credentials = credentials;\n },\n credentials() {\n return _credentials;\n }\n };\n}, \"getHttpAuthExtensionConfiguration\");\nvar resolveHttpAuthRuntimeConfig = /* @__PURE__ */ __name((config) => {\n return {\n httpAuthSchemes: config.httpAuthSchemes(),\n httpAuthSchemeProvider: config.httpAuthSchemeProvider(),\n credentials: config.credentials()\n };\n}, \"resolveHttpAuthRuntimeConfig\");\n\n// src/runtimeExtensions.ts\nvar asPartial = /* @__PURE__ */ __name((t) => t, \"asPartial\");\nvar resolveRuntimeExtensions = /* @__PURE__ */ __name((runtimeConfig, extensions) => {\n const extensionConfiguration = {\n ...asPartial((0, import_region_config_resolver.getAwsRegionExtensionConfiguration)(runtimeConfig)),\n ...asPartial((0, import_smithy_client.getDefaultExtensionConfiguration)(runtimeConfig)),\n ...asPartial((0, import_protocol_http.getHttpHandlerExtensionConfiguration)(runtimeConfig)),\n ...asPartial(getHttpAuthExtensionConfiguration(runtimeConfig))\n };\n extensions.forEach((extension) => extension.configure(extensionConfiguration));\n return {\n ...runtimeConfig,\n ...(0, import_region_config_resolver.resolveAwsRegionExtensionConfiguration)(extensionConfiguration),\n ...(0, import_smithy_client.resolveDefaultRuntimeConfig)(extensionConfiguration),\n ...(0, import_protocol_http.resolveHttpHandlerRuntimeConfig)(extensionConfiguration),\n ...resolveHttpAuthRuntimeConfig(extensionConfiguration)\n };\n}, \"resolveRuntimeExtensions\");\n\n// src/CognitoIdentityClient.ts\nvar _CognitoIdentityClient = class _CognitoIdentityClient extends import_smithy_client.Client {\n constructor(...[configuration]) {\n const _config_0 = (0, import_runtimeConfig.getRuntimeConfig)(configuration || {});\n const _config_1 = resolveClientEndpointParameters(_config_0);\n const _config_2 = (0, import_middleware_user_agent.resolveUserAgentConfig)(_config_1);\n const _config_3 = (0, import_middleware_retry.resolveRetryConfig)(_config_2);\n const _config_4 = (0, import_config_resolver.resolveRegionConfig)(_config_3);\n const _config_5 = (0, import_middleware_host_header.resolveHostHeaderConfig)(_config_4);\n const _config_6 = (0, import_middleware_endpoint.resolveEndpointConfig)(_config_5);\n const _config_7 = (0, import_httpAuthSchemeProvider.resolveHttpAuthSchemeConfig)(_config_6);\n const _config_8 = resolveRuntimeExtensions(_config_7, (configuration == null ? void 0 : configuration.extensions) || []);\n super(_config_8);\n this.config = _config_8;\n this.middlewareStack.use((0, import_middleware_user_agent.getUserAgentPlugin)(this.config));\n this.middlewareStack.use((0, import_middleware_retry.getRetryPlugin)(this.config));\n this.middlewareStack.use((0, import_middleware_content_length.getContentLengthPlugin)(this.config));\n this.middlewareStack.use((0, import_middleware_host_header.getHostHeaderPlugin)(this.config));\n this.middlewareStack.use((0, import_middleware_logger.getLoggerPlugin)(this.config));\n this.middlewareStack.use((0, import_middleware_recursion_detection.getRecursionDetectionPlugin)(this.config));\n this.middlewareStack.use(\n (0, import_core.getHttpAuthSchemeEndpointRuleSetPlugin)(this.config, {\n httpAuthSchemeParametersProvider: import_httpAuthSchemeProvider.defaultCognitoIdentityHttpAuthSchemeParametersProvider,\n identityProviderConfigProvider: async (config) => new import_core.DefaultIdentityProviderConfig({\n \"aws.auth#sigv4\": config.credentials\n })\n })\n );\n this.middlewareStack.use((0, import_core.getHttpSigningPlugin)(this.config));\n }\n /**\n * Destroy underlying resources, like sockets. It's usually not necessary to do this.\n * However in Node.js, it's best to explicitly shut down the client's agent when it is no longer needed.\n * Otherwise, sockets might stay open for quite a long time before the server terminates them.\n */\n destroy() {\n super.destroy();\n }\n};\n__name(_CognitoIdentityClient, \"CognitoIdentityClient\");\nvar CognitoIdentityClient = _CognitoIdentityClient;\n\n// src/CognitoIdentity.ts\n\n\n// src/commands/CreateIdentityPoolCommand.ts\n\nvar import_middleware_serde = require(\"@smithy/middleware-serde\");\n\n\n// src/protocols/Aws_json1_1.ts\nvar import_core2 = require(\"@aws-sdk/core\");\n\n\n\n// src/models/CognitoIdentityServiceException.ts\n\nvar _CognitoIdentityServiceException = class _CognitoIdentityServiceException extends import_smithy_client.ServiceException {\n /**\n * @internal\n */\n constructor(options) {\n super(options);\n Object.setPrototypeOf(this, _CognitoIdentityServiceException.prototype);\n }\n};\n__name(_CognitoIdentityServiceException, \"CognitoIdentityServiceException\");\nvar CognitoIdentityServiceException = _CognitoIdentityServiceException;\n\n// src/models/models_0.ts\n\nvar AmbiguousRoleResolutionType = {\n AUTHENTICATED_ROLE: \"AuthenticatedRole\",\n DENY: \"Deny\"\n};\nvar _InternalErrorException = class _InternalErrorException extends CognitoIdentityServiceException {\n /**\n * @internal\n */\n constructor(opts) {\n super({\n name: \"InternalErrorException\",\n $fault: \"server\",\n ...opts\n });\n this.name = \"InternalErrorException\";\n this.$fault = \"server\";\n Object.setPrototypeOf(this, _InternalErrorException.prototype);\n }\n};\n__name(_InternalErrorException, \"InternalErrorException\");\nvar InternalErrorException = _InternalErrorException;\nvar _InvalidParameterException = class _InvalidParameterException extends CognitoIdentityServiceException {\n /**\n * @internal\n */\n constructor(opts) {\n super({\n name: \"InvalidParameterException\",\n $fault: \"client\",\n ...opts\n });\n this.name = \"InvalidParameterException\";\n this.$fault = \"client\";\n Object.setPrototypeOf(this, _InvalidParameterException.prototype);\n }\n};\n__name(_InvalidParameterException, \"InvalidParameterException\");\nvar InvalidParameterException = _InvalidParameterException;\nvar _LimitExceededException = class _LimitExceededException extends CognitoIdentityServiceException {\n /**\n * @internal\n */\n constructor(opts) {\n super({\n name: \"LimitExceededException\",\n $fault: \"client\",\n ...opts\n });\n this.name = \"LimitExceededException\";\n this.$fault = \"client\";\n Object.setPrototypeOf(this, _LimitExceededException.prototype);\n }\n};\n__name(_LimitExceededException, \"LimitExceededException\");\nvar LimitExceededException = _LimitExceededException;\nvar _NotAuthorizedException = class _NotAuthorizedException extends CognitoIdentityServiceException {\n /**\n * @internal\n */\n constructor(opts) {\n super({\n name: \"NotAuthorizedException\",\n $fault: \"client\",\n ...opts\n });\n this.name = \"NotAuthorizedException\";\n this.$fault = \"client\";\n Object.setPrototypeOf(this, _NotAuthorizedException.prototype);\n }\n};\n__name(_NotAuthorizedException, \"NotAuthorizedException\");\nvar NotAuthorizedException = _NotAuthorizedException;\nvar _ResourceConflictException = class _ResourceConflictException extends CognitoIdentityServiceException {\n /**\n * @internal\n */\n constructor(opts) {\n super({\n name: \"ResourceConflictException\",\n $fault: \"client\",\n ...opts\n });\n this.name = \"ResourceConflictException\";\n this.$fault = \"client\";\n Object.setPrototypeOf(this, _ResourceConflictException.prototype);\n }\n};\n__name(_ResourceConflictException, \"ResourceConflictException\");\nvar ResourceConflictException = _ResourceConflictException;\nvar _TooManyRequestsException = class _TooManyRequestsException extends CognitoIdentityServiceException {\n /**\n * @internal\n */\n constructor(opts) {\n super({\n name: \"TooManyRequestsException\",\n $fault: \"client\",\n ...opts\n });\n this.name = \"TooManyRequestsException\";\n this.$fault = \"client\";\n Object.setPrototypeOf(this, _TooManyRequestsException.prototype);\n }\n};\n__name(_TooManyRequestsException, \"TooManyRequestsException\");\nvar TooManyRequestsException = _TooManyRequestsException;\nvar ErrorCode = {\n ACCESS_DENIED: \"AccessDenied\",\n INTERNAL_SERVER_ERROR: \"InternalServerError\"\n};\nvar _ResourceNotFoundException = class _ResourceNotFoundException extends CognitoIdentityServiceException {\n /**\n * @internal\n */\n constructor(opts) {\n super({\n name: \"ResourceNotFoundException\",\n $fault: \"client\",\n ...opts\n });\n this.name = \"ResourceNotFoundException\";\n this.$fault = \"client\";\n Object.setPrototypeOf(this, _ResourceNotFoundException.prototype);\n }\n};\n__name(_ResourceNotFoundException, \"ResourceNotFoundException\");\nvar ResourceNotFoundException = _ResourceNotFoundException;\nvar _ExternalServiceException = class _ExternalServiceException extends CognitoIdentityServiceException {\n /**\n * @internal\n */\n constructor(opts) {\n super({\n name: \"ExternalServiceException\",\n $fault: \"client\",\n ...opts\n });\n this.name = \"ExternalServiceException\";\n this.$fault = \"client\";\n Object.setPrototypeOf(this, _ExternalServiceException.prototype);\n }\n};\n__name(_ExternalServiceException, \"ExternalServiceException\");\nvar ExternalServiceException = _ExternalServiceException;\nvar _InvalidIdentityPoolConfigurationException = class _InvalidIdentityPoolConfigurationException extends CognitoIdentityServiceException {\n /**\n * @internal\n */\n constructor(opts) {\n super({\n name: \"InvalidIdentityPoolConfigurationException\",\n $fault: \"client\",\n ...opts\n });\n this.name = \"InvalidIdentityPoolConfigurationException\";\n this.$fault = \"client\";\n Object.setPrototypeOf(this, _InvalidIdentityPoolConfigurationException.prototype);\n }\n};\n__name(_InvalidIdentityPoolConfigurationException, \"InvalidIdentityPoolConfigurationException\");\nvar InvalidIdentityPoolConfigurationException = _InvalidIdentityPoolConfigurationException;\nvar MappingRuleMatchType = {\n CONTAINS: \"Contains\",\n EQUALS: \"Equals\",\n NOT_EQUAL: \"NotEqual\",\n STARTS_WITH: \"StartsWith\"\n};\nvar RoleMappingType = {\n RULES: \"Rules\",\n TOKEN: \"Token\"\n};\nvar _DeveloperUserAlreadyRegisteredException = class _DeveloperUserAlreadyRegisteredException extends CognitoIdentityServiceException {\n /**\n * @internal\n */\n constructor(opts) {\n super({\n name: \"DeveloperUserAlreadyRegisteredException\",\n $fault: \"client\",\n ...opts\n });\n this.name = \"DeveloperUserAlreadyRegisteredException\";\n this.$fault = \"client\";\n Object.setPrototypeOf(this, _DeveloperUserAlreadyRegisteredException.prototype);\n }\n};\n__name(_DeveloperUserAlreadyRegisteredException, \"DeveloperUserAlreadyRegisteredException\");\nvar DeveloperUserAlreadyRegisteredException = _DeveloperUserAlreadyRegisteredException;\nvar _ConcurrentModificationException = class _ConcurrentModificationException extends CognitoIdentityServiceException {\n /**\n * @internal\n */\n constructor(opts) {\n super({\n name: \"ConcurrentModificationException\",\n $fault: \"client\",\n ...opts\n });\n this.name = \"ConcurrentModificationException\";\n this.$fault = \"client\";\n Object.setPrototypeOf(this, _ConcurrentModificationException.prototype);\n }\n};\n__name(_ConcurrentModificationException, \"ConcurrentModificationException\");\nvar ConcurrentModificationException = _ConcurrentModificationException;\nvar GetCredentialsForIdentityInputFilterSensitiveLog = /* @__PURE__ */ __name((obj) => ({\n ...obj,\n ...obj.Logins && { Logins: import_smithy_client.SENSITIVE_STRING }\n}), \"GetCredentialsForIdentityInputFilterSensitiveLog\");\nvar CredentialsFilterSensitiveLog = /* @__PURE__ */ __name((obj) => ({\n ...obj,\n ...obj.SecretKey && { SecretKey: import_smithy_client.SENSITIVE_STRING }\n}), \"CredentialsFilterSensitiveLog\");\nvar GetCredentialsForIdentityResponseFilterSensitiveLog = /* @__PURE__ */ __name((obj) => ({\n ...obj,\n ...obj.Credentials && { Credentials: CredentialsFilterSensitiveLog(obj.Credentials) }\n}), \"GetCredentialsForIdentityResponseFilterSensitiveLog\");\nvar GetIdInputFilterSensitiveLog = /* @__PURE__ */ __name((obj) => ({\n ...obj,\n ...obj.Logins && { Logins: import_smithy_client.SENSITIVE_STRING }\n}), \"GetIdInputFilterSensitiveLog\");\nvar GetOpenIdTokenInputFilterSensitiveLog = /* @__PURE__ */ __name((obj) => ({\n ...obj,\n ...obj.Logins && { Logins: import_smithy_client.SENSITIVE_STRING }\n}), \"GetOpenIdTokenInputFilterSensitiveLog\");\nvar GetOpenIdTokenResponseFilterSensitiveLog = /* @__PURE__ */ __name((obj) => ({\n ...obj,\n ...obj.Token && { Token: import_smithy_client.SENSITIVE_STRING }\n}), \"GetOpenIdTokenResponseFilterSensitiveLog\");\nvar GetOpenIdTokenForDeveloperIdentityInputFilterSensitiveLog = /* @__PURE__ */ __name((obj) => ({\n ...obj,\n ...obj.Logins && { Logins: import_smithy_client.SENSITIVE_STRING }\n}), \"GetOpenIdTokenForDeveloperIdentityInputFilterSensitiveLog\");\nvar GetOpenIdTokenForDeveloperIdentityResponseFilterSensitiveLog = /* @__PURE__ */ __name((obj) => ({\n ...obj,\n ...obj.Token && { Token: import_smithy_client.SENSITIVE_STRING }\n}), \"GetOpenIdTokenForDeveloperIdentityResponseFilterSensitiveLog\");\nvar UnlinkIdentityInputFilterSensitiveLog = /* @__PURE__ */ __name((obj) => ({\n ...obj,\n ...obj.Logins && { Logins: import_smithy_client.SENSITIVE_STRING }\n}), \"UnlinkIdentityInputFilterSensitiveLog\");\n\n// src/protocols/Aws_json1_1.ts\nvar se_CreateIdentityPoolCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = sharedHeaders(\"CreateIdentityPool\");\n let body;\n body = JSON.stringify((0, import_smithy_client._json)(input));\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_CreateIdentityPoolCommand\");\nvar se_DeleteIdentitiesCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = sharedHeaders(\"DeleteIdentities\");\n let body;\n body = JSON.stringify((0, import_smithy_client._json)(input));\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_DeleteIdentitiesCommand\");\nvar se_DeleteIdentityPoolCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = sharedHeaders(\"DeleteIdentityPool\");\n let body;\n body = JSON.stringify((0, import_smithy_client._json)(input));\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_DeleteIdentityPoolCommand\");\nvar se_DescribeIdentityCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = sharedHeaders(\"DescribeIdentity\");\n let body;\n body = JSON.stringify((0, import_smithy_client._json)(input));\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_DescribeIdentityCommand\");\nvar se_DescribeIdentityPoolCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = sharedHeaders(\"DescribeIdentityPool\");\n let body;\n body = JSON.stringify((0, import_smithy_client._json)(input));\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_DescribeIdentityPoolCommand\");\nvar se_GetCredentialsForIdentityCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = sharedHeaders(\"GetCredentialsForIdentity\");\n let body;\n body = JSON.stringify((0, import_smithy_client._json)(input));\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_GetCredentialsForIdentityCommand\");\nvar se_GetIdCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = sharedHeaders(\"GetId\");\n let body;\n body = JSON.stringify((0, import_smithy_client._json)(input));\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_GetIdCommand\");\nvar se_GetIdentityPoolRolesCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = sharedHeaders(\"GetIdentityPoolRoles\");\n let body;\n body = JSON.stringify((0, import_smithy_client._json)(input));\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_GetIdentityPoolRolesCommand\");\nvar se_GetOpenIdTokenCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = sharedHeaders(\"GetOpenIdToken\");\n let body;\n body = JSON.stringify((0, import_smithy_client._json)(input));\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_GetOpenIdTokenCommand\");\nvar se_GetOpenIdTokenForDeveloperIdentityCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = sharedHeaders(\"GetOpenIdTokenForDeveloperIdentity\");\n let body;\n body = JSON.stringify((0, import_smithy_client._json)(input));\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_GetOpenIdTokenForDeveloperIdentityCommand\");\nvar se_GetPrincipalTagAttributeMapCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = sharedHeaders(\"GetPrincipalTagAttributeMap\");\n let body;\n body = JSON.stringify((0, import_smithy_client._json)(input));\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_GetPrincipalTagAttributeMapCommand\");\nvar se_ListIdentitiesCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = sharedHeaders(\"ListIdentities\");\n let body;\n body = JSON.stringify((0, import_smithy_client._json)(input));\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_ListIdentitiesCommand\");\nvar se_ListIdentityPoolsCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = sharedHeaders(\"ListIdentityPools\");\n let body;\n body = JSON.stringify((0, import_smithy_client._json)(input));\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_ListIdentityPoolsCommand\");\nvar se_ListTagsForResourceCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = sharedHeaders(\"ListTagsForResource\");\n let body;\n body = JSON.stringify((0, import_smithy_client._json)(input));\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_ListTagsForResourceCommand\");\nvar se_LookupDeveloperIdentityCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = sharedHeaders(\"LookupDeveloperIdentity\");\n let body;\n body = JSON.stringify((0, import_smithy_client._json)(input));\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_LookupDeveloperIdentityCommand\");\nvar se_MergeDeveloperIdentitiesCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = sharedHeaders(\"MergeDeveloperIdentities\");\n let body;\n body = JSON.stringify((0, import_smithy_client._json)(input));\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_MergeDeveloperIdentitiesCommand\");\nvar se_SetIdentityPoolRolesCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = sharedHeaders(\"SetIdentityPoolRoles\");\n let body;\n body = JSON.stringify((0, import_smithy_client._json)(input));\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_SetIdentityPoolRolesCommand\");\nvar se_SetPrincipalTagAttributeMapCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = sharedHeaders(\"SetPrincipalTagAttributeMap\");\n let body;\n body = JSON.stringify((0, import_smithy_client._json)(input));\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_SetPrincipalTagAttributeMapCommand\");\nvar se_TagResourceCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = sharedHeaders(\"TagResource\");\n let body;\n body = JSON.stringify((0, import_smithy_client._json)(input));\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_TagResourceCommand\");\nvar se_UnlinkDeveloperIdentityCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = sharedHeaders(\"UnlinkDeveloperIdentity\");\n let body;\n body = JSON.stringify((0, import_smithy_client._json)(input));\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_UnlinkDeveloperIdentityCommand\");\nvar se_UnlinkIdentityCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = sharedHeaders(\"UnlinkIdentity\");\n let body;\n body = JSON.stringify((0, import_smithy_client._json)(input));\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_UnlinkIdentityCommand\");\nvar se_UntagResourceCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = sharedHeaders(\"UntagResource\");\n let body;\n body = JSON.stringify((0, import_smithy_client._json)(input));\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_UntagResourceCommand\");\nvar se_UpdateIdentityPoolCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = sharedHeaders(\"UpdateIdentityPool\");\n let body;\n body = JSON.stringify((0, import_smithy_client._json)(input));\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_UpdateIdentityPoolCommand\");\nvar de_CreateIdentityPoolCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseJsonBody)(output.body, context);\n let contents = {};\n contents = (0, import_smithy_client._json)(data);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_CreateIdentityPoolCommand\");\nvar de_DeleteIdentitiesCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseJsonBody)(output.body, context);\n let contents = {};\n contents = (0, import_smithy_client._json)(data);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_DeleteIdentitiesCommand\");\nvar de_DeleteIdentityPoolCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n await (0, import_smithy_client.collectBody)(output.body, context);\n const response = {\n $metadata: deserializeMetadata(output)\n };\n return response;\n}, \"de_DeleteIdentityPoolCommand\");\nvar de_DescribeIdentityCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseJsonBody)(output.body, context);\n let contents = {};\n contents = de_IdentityDescription(data, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_DescribeIdentityCommand\");\nvar de_DescribeIdentityPoolCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseJsonBody)(output.body, context);\n let contents = {};\n contents = (0, import_smithy_client._json)(data);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_DescribeIdentityPoolCommand\");\nvar de_GetCredentialsForIdentityCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseJsonBody)(output.body, context);\n let contents = {};\n contents = de_GetCredentialsForIdentityResponse(data, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_GetCredentialsForIdentityCommand\");\nvar de_GetIdCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseJsonBody)(output.body, context);\n let contents = {};\n contents = (0, import_smithy_client._json)(data);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_GetIdCommand\");\nvar de_GetIdentityPoolRolesCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseJsonBody)(output.body, context);\n let contents = {};\n contents = (0, import_smithy_client._json)(data);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_GetIdentityPoolRolesCommand\");\nvar de_GetOpenIdTokenCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseJsonBody)(output.body, context);\n let contents = {};\n contents = (0, import_smithy_client._json)(data);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_GetOpenIdTokenCommand\");\nvar de_GetOpenIdTokenForDeveloperIdentityCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseJsonBody)(output.body, context);\n let contents = {};\n contents = (0, import_smithy_client._json)(data);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_GetOpenIdTokenForDeveloperIdentityCommand\");\nvar de_GetPrincipalTagAttributeMapCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseJsonBody)(output.body, context);\n let contents = {};\n contents = (0, import_smithy_client._json)(data);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_GetPrincipalTagAttributeMapCommand\");\nvar de_ListIdentitiesCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseJsonBody)(output.body, context);\n let contents = {};\n contents = de_ListIdentitiesResponse(data, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_ListIdentitiesCommand\");\nvar de_ListIdentityPoolsCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseJsonBody)(output.body, context);\n let contents = {};\n contents = (0, import_smithy_client._json)(data);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_ListIdentityPoolsCommand\");\nvar de_ListTagsForResourceCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseJsonBody)(output.body, context);\n let contents = {};\n contents = (0, import_smithy_client._json)(data);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_ListTagsForResourceCommand\");\nvar de_LookupDeveloperIdentityCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseJsonBody)(output.body, context);\n let contents = {};\n contents = (0, import_smithy_client._json)(data);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_LookupDeveloperIdentityCommand\");\nvar de_MergeDeveloperIdentitiesCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseJsonBody)(output.body, context);\n let contents = {};\n contents = (0, import_smithy_client._json)(data);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_MergeDeveloperIdentitiesCommand\");\nvar de_SetIdentityPoolRolesCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n await (0, import_smithy_client.collectBody)(output.body, context);\n const response = {\n $metadata: deserializeMetadata(output)\n };\n return response;\n}, \"de_SetIdentityPoolRolesCommand\");\nvar de_SetPrincipalTagAttributeMapCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseJsonBody)(output.body, context);\n let contents = {};\n contents = (0, import_smithy_client._json)(data);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_SetPrincipalTagAttributeMapCommand\");\nvar de_TagResourceCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseJsonBody)(output.body, context);\n let contents = {};\n contents = (0, import_smithy_client._json)(data);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_TagResourceCommand\");\nvar de_UnlinkDeveloperIdentityCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n await (0, import_smithy_client.collectBody)(output.body, context);\n const response = {\n $metadata: deserializeMetadata(output)\n };\n return response;\n}, \"de_UnlinkDeveloperIdentityCommand\");\nvar de_UnlinkIdentityCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n await (0, import_smithy_client.collectBody)(output.body, context);\n const response = {\n $metadata: deserializeMetadata(output)\n };\n return response;\n}, \"de_UnlinkIdentityCommand\");\nvar de_UntagResourceCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseJsonBody)(output.body, context);\n let contents = {};\n contents = (0, import_smithy_client._json)(data);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_UntagResourceCommand\");\nvar de_UpdateIdentityPoolCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseJsonBody)(output.body, context);\n let contents = {};\n contents = (0, import_smithy_client._json)(data);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_UpdateIdentityPoolCommand\");\nvar de_CommandError = /* @__PURE__ */ __name(async (output, context) => {\n const parsedOutput = {\n ...output,\n body: await (0, import_core2.parseJsonErrorBody)(output.body, context)\n };\n const errorCode = (0, import_core2.loadRestJsonErrorCode)(output, parsedOutput.body);\n switch (errorCode) {\n case \"InternalErrorException\":\n case \"com.amazonaws.cognitoidentity#InternalErrorException\":\n throw await de_InternalErrorExceptionRes(parsedOutput, context);\n case \"InvalidParameterException\":\n case \"com.amazonaws.cognitoidentity#InvalidParameterException\":\n throw await de_InvalidParameterExceptionRes(parsedOutput, context);\n case \"LimitExceededException\":\n case \"com.amazonaws.cognitoidentity#LimitExceededException\":\n throw await de_LimitExceededExceptionRes(parsedOutput, context);\n case \"NotAuthorizedException\":\n case \"com.amazonaws.cognitoidentity#NotAuthorizedException\":\n throw await de_NotAuthorizedExceptionRes(parsedOutput, context);\n case \"ResourceConflictException\":\n case \"com.amazonaws.cognitoidentity#ResourceConflictException\":\n throw await de_ResourceConflictExceptionRes(parsedOutput, context);\n case \"TooManyRequestsException\":\n case \"com.amazonaws.cognitoidentity#TooManyRequestsException\":\n throw await de_TooManyRequestsExceptionRes(parsedOutput, context);\n case \"ResourceNotFoundException\":\n case \"com.amazonaws.cognitoidentity#ResourceNotFoundException\":\n throw await de_ResourceNotFoundExceptionRes(parsedOutput, context);\n case \"ExternalServiceException\":\n case \"com.amazonaws.cognitoidentity#ExternalServiceException\":\n throw await de_ExternalServiceExceptionRes(parsedOutput, context);\n case \"InvalidIdentityPoolConfigurationException\":\n case \"com.amazonaws.cognitoidentity#InvalidIdentityPoolConfigurationException\":\n throw await de_InvalidIdentityPoolConfigurationExceptionRes(parsedOutput, context);\n case \"DeveloperUserAlreadyRegisteredException\":\n case \"com.amazonaws.cognitoidentity#DeveloperUserAlreadyRegisteredException\":\n throw await de_DeveloperUserAlreadyRegisteredExceptionRes(parsedOutput, context);\n case \"ConcurrentModificationException\":\n case \"com.amazonaws.cognitoidentity#ConcurrentModificationException\":\n throw await de_ConcurrentModificationExceptionRes(parsedOutput, context);\n default:\n const parsedBody = parsedOutput.body;\n return throwDefaultError({\n output,\n parsedBody,\n errorCode\n });\n }\n}, \"de_CommandError\");\nvar de_ConcurrentModificationExceptionRes = /* @__PURE__ */ __name(async (parsedOutput, context) => {\n const body = parsedOutput.body;\n const deserialized = (0, import_smithy_client._json)(body);\n const exception = new ConcurrentModificationException({\n $metadata: deserializeMetadata(parsedOutput),\n ...deserialized\n });\n return (0, import_smithy_client.decorateServiceException)(exception, body);\n}, \"de_ConcurrentModificationExceptionRes\");\nvar de_DeveloperUserAlreadyRegisteredExceptionRes = /* @__PURE__ */ __name(async (parsedOutput, context) => {\n const body = parsedOutput.body;\n const deserialized = (0, import_smithy_client._json)(body);\n const exception = new DeveloperUserAlreadyRegisteredException({\n $metadata: deserializeMetadata(parsedOutput),\n ...deserialized\n });\n return (0, import_smithy_client.decorateServiceException)(exception, body);\n}, \"de_DeveloperUserAlreadyRegisteredExceptionRes\");\nvar de_ExternalServiceExceptionRes = /* @__PURE__ */ __name(async (parsedOutput, context) => {\n const body = parsedOutput.body;\n const deserialized = (0, import_smithy_client._json)(body);\n const exception = new ExternalServiceException({\n $metadata: deserializeMetadata(parsedOutput),\n ...deserialized\n });\n return (0, import_smithy_client.decorateServiceException)(exception, body);\n}, \"de_ExternalServiceExceptionRes\");\nvar de_InternalErrorExceptionRes = /* @__PURE__ */ __name(async (parsedOutput, context) => {\n const body = parsedOutput.body;\n const deserialized = (0, import_smithy_client._json)(body);\n const exception = new InternalErrorException({\n $metadata: deserializeMetadata(parsedOutput),\n ...deserialized\n });\n return (0, import_smithy_client.decorateServiceException)(exception, body);\n}, \"de_InternalErrorExceptionRes\");\nvar de_InvalidIdentityPoolConfigurationExceptionRes = /* @__PURE__ */ __name(async (parsedOutput, context) => {\n const body = parsedOutput.body;\n const deserialized = (0, import_smithy_client._json)(body);\n const exception = new InvalidIdentityPoolConfigurationException({\n $metadata: deserializeMetadata(parsedOutput),\n ...deserialized\n });\n return (0, import_smithy_client.decorateServiceException)(exception, body);\n}, \"de_InvalidIdentityPoolConfigurationExceptionRes\");\nvar de_InvalidParameterExceptionRes = /* @__PURE__ */ __name(async (parsedOutput, context) => {\n const body = parsedOutput.body;\n const deserialized = (0, import_smithy_client._json)(body);\n const exception = new InvalidParameterException({\n $metadata: deserializeMetadata(parsedOutput),\n ...deserialized\n });\n return (0, import_smithy_client.decorateServiceException)(exception, body);\n}, \"de_InvalidParameterExceptionRes\");\nvar de_LimitExceededExceptionRes = /* @__PURE__ */ __name(async (parsedOutput, context) => {\n const body = parsedOutput.body;\n const deserialized = (0, import_smithy_client._json)(body);\n const exception = new LimitExceededException({\n $metadata: deserializeMetadata(parsedOutput),\n ...deserialized\n });\n return (0, import_smithy_client.decorateServiceException)(exception, body);\n}, \"de_LimitExceededExceptionRes\");\nvar de_NotAuthorizedExceptionRes = /* @__PURE__ */ __name(async (parsedOutput, context) => {\n const body = parsedOutput.body;\n const deserialized = (0, import_smithy_client._json)(body);\n const exception = new NotAuthorizedException({\n $metadata: deserializeMetadata(parsedOutput),\n ...deserialized\n });\n return (0, import_smithy_client.decorateServiceException)(exception, body);\n}, \"de_NotAuthorizedExceptionRes\");\nvar de_ResourceConflictExceptionRes = /* @__PURE__ */ __name(async (parsedOutput, context) => {\n const body = parsedOutput.body;\n const deserialized = (0, import_smithy_client._json)(body);\n const exception = new ResourceConflictException({\n $metadata: deserializeMetadata(parsedOutput),\n ...deserialized\n });\n return (0, import_smithy_client.decorateServiceException)(exception, body);\n}, \"de_ResourceConflictExceptionRes\");\nvar de_ResourceNotFoundExceptionRes = /* @__PURE__ */ __name(async (parsedOutput, context) => {\n const body = parsedOutput.body;\n const deserialized = (0, import_smithy_client._json)(body);\n const exception = new ResourceNotFoundException({\n $metadata: deserializeMetadata(parsedOutput),\n ...deserialized\n });\n return (0, import_smithy_client.decorateServiceException)(exception, body);\n}, \"de_ResourceNotFoundExceptionRes\");\nvar de_TooManyRequestsExceptionRes = /* @__PURE__ */ __name(async (parsedOutput, context) => {\n const body = parsedOutput.body;\n const deserialized = (0, import_smithy_client._json)(body);\n const exception = new TooManyRequestsException({\n $metadata: deserializeMetadata(parsedOutput),\n ...deserialized\n });\n return (0, import_smithy_client.decorateServiceException)(exception, body);\n}, \"de_TooManyRequestsExceptionRes\");\nvar de_Credentials = /* @__PURE__ */ __name((output, context) => {\n return (0, import_smithy_client.take)(output, {\n AccessKeyId: import_smithy_client.expectString,\n Expiration: (_) => (0, import_smithy_client.expectNonNull)((0, import_smithy_client.parseEpochTimestamp)((0, import_smithy_client.expectNumber)(_))),\n SecretKey: import_smithy_client.expectString,\n SessionToken: import_smithy_client.expectString\n });\n}, \"de_Credentials\");\nvar de_GetCredentialsForIdentityResponse = /* @__PURE__ */ __name((output, context) => {\n return (0, import_smithy_client.take)(output, {\n Credentials: (_) => de_Credentials(_, context),\n IdentityId: import_smithy_client.expectString\n });\n}, \"de_GetCredentialsForIdentityResponse\");\nvar de_IdentitiesList = /* @__PURE__ */ __name((output, context) => {\n const retVal = (output || []).filter((e) => e != null).map((entry) => {\n return de_IdentityDescription(entry, context);\n });\n return retVal;\n}, \"de_IdentitiesList\");\nvar de_IdentityDescription = /* @__PURE__ */ __name((output, context) => {\n return (0, import_smithy_client.take)(output, {\n CreationDate: (_) => (0, import_smithy_client.expectNonNull)((0, import_smithy_client.parseEpochTimestamp)((0, import_smithy_client.expectNumber)(_))),\n IdentityId: import_smithy_client.expectString,\n LastModifiedDate: (_) => (0, import_smithy_client.expectNonNull)((0, import_smithy_client.parseEpochTimestamp)((0, import_smithy_client.expectNumber)(_))),\n Logins: import_smithy_client._json\n });\n}, \"de_IdentityDescription\");\nvar de_ListIdentitiesResponse = /* @__PURE__ */ __name((output, context) => {\n return (0, import_smithy_client.take)(output, {\n Identities: (_) => de_IdentitiesList(_, context),\n IdentityPoolId: import_smithy_client.expectString,\n NextToken: import_smithy_client.expectString\n });\n}, \"de_ListIdentitiesResponse\");\nvar deserializeMetadata = /* @__PURE__ */ __name((output) => ({\n httpStatusCode: output.statusCode,\n requestId: output.headers[\"x-amzn-requestid\"] ?? output.headers[\"x-amzn-request-id\"] ?? output.headers[\"x-amz-request-id\"],\n extendedRequestId: output.headers[\"x-amz-id-2\"],\n cfId: output.headers[\"x-amz-cf-id\"]\n}), \"deserializeMetadata\");\nvar throwDefaultError = (0, import_smithy_client.withBaseException)(CognitoIdentityServiceException);\nvar buildHttpRpcRequest = /* @__PURE__ */ __name(async (context, headers, path, resolvedHostname, body) => {\n const { hostname, protocol = \"https\", port, path: basePath } = await context.endpoint();\n const contents = {\n protocol,\n hostname,\n port,\n method: \"POST\",\n path: basePath.endsWith(\"/\") ? basePath.slice(0, -1) + path : basePath + path,\n headers\n };\n if (resolvedHostname !== void 0) {\n contents.hostname = resolvedHostname;\n }\n if (body !== void 0) {\n contents.body = body;\n }\n return new import_protocol_http.HttpRequest(contents);\n}, \"buildHttpRpcRequest\");\nfunction sharedHeaders(operation) {\n return {\n \"content-type\": \"application/x-amz-json-1.1\",\n \"x-amz-target\": `AWSCognitoIdentityService.${operation}`\n };\n}\n__name(sharedHeaders, \"sharedHeaders\");\n\n// src/commands/CreateIdentityPoolCommand.ts\nvar _CreateIdentityPoolCommand = class _CreateIdentityPoolCommand extends import_smithy_client.Command.classBuilder().ep(commonParams).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"AWSCognitoIdentityService\", \"CreateIdentityPool\", {}).n(\"CognitoIdentityClient\", \"CreateIdentityPoolCommand\").f(void 0, void 0).ser(se_CreateIdentityPoolCommand).de(de_CreateIdentityPoolCommand).build() {\n};\n__name(_CreateIdentityPoolCommand, \"CreateIdentityPoolCommand\");\nvar CreateIdentityPoolCommand = _CreateIdentityPoolCommand;\n\n// src/commands/DeleteIdentitiesCommand.ts\n\n\n\nvar _DeleteIdentitiesCommand = class _DeleteIdentitiesCommand extends import_smithy_client.Command.classBuilder().ep(commonParams).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"AWSCognitoIdentityService\", \"DeleteIdentities\", {}).n(\"CognitoIdentityClient\", \"DeleteIdentitiesCommand\").f(void 0, void 0).ser(se_DeleteIdentitiesCommand).de(de_DeleteIdentitiesCommand).build() {\n};\n__name(_DeleteIdentitiesCommand, \"DeleteIdentitiesCommand\");\nvar DeleteIdentitiesCommand = _DeleteIdentitiesCommand;\n\n// src/commands/DeleteIdentityPoolCommand.ts\n\n\n\nvar _DeleteIdentityPoolCommand = class _DeleteIdentityPoolCommand extends import_smithy_client.Command.classBuilder().ep(commonParams).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"AWSCognitoIdentityService\", \"DeleteIdentityPool\", {}).n(\"CognitoIdentityClient\", \"DeleteIdentityPoolCommand\").f(void 0, void 0).ser(se_DeleteIdentityPoolCommand).de(de_DeleteIdentityPoolCommand).build() {\n};\n__name(_DeleteIdentityPoolCommand, \"DeleteIdentityPoolCommand\");\nvar DeleteIdentityPoolCommand = _DeleteIdentityPoolCommand;\n\n// src/commands/DescribeIdentityCommand.ts\n\n\n\nvar _DescribeIdentityCommand = class _DescribeIdentityCommand extends import_smithy_client.Command.classBuilder().ep(commonParams).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"AWSCognitoIdentityService\", \"DescribeIdentity\", {}).n(\"CognitoIdentityClient\", \"DescribeIdentityCommand\").f(void 0, void 0).ser(se_DescribeIdentityCommand).de(de_DescribeIdentityCommand).build() {\n};\n__name(_DescribeIdentityCommand, \"DescribeIdentityCommand\");\nvar DescribeIdentityCommand = _DescribeIdentityCommand;\n\n// src/commands/DescribeIdentityPoolCommand.ts\n\n\n\nvar _DescribeIdentityPoolCommand = class _DescribeIdentityPoolCommand extends import_smithy_client.Command.classBuilder().ep(commonParams).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"AWSCognitoIdentityService\", \"DescribeIdentityPool\", {}).n(\"CognitoIdentityClient\", \"DescribeIdentityPoolCommand\").f(void 0, void 0).ser(se_DescribeIdentityPoolCommand).de(de_DescribeIdentityPoolCommand).build() {\n};\n__name(_DescribeIdentityPoolCommand, \"DescribeIdentityPoolCommand\");\nvar DescribeIdentityPoolCommand = _DescribeIdentityPoolCommand;\n\n// src/commands/GetCredentialsForIdentityCommand.ts\n\n\n\nvar _GetCredentialsForIdentityCommand = class _GetCredentialsForIdentityCommand extends import_smithy_client.Command.classBuilder().ep(commonParams).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"AWSCognitoIdentityService\", \"GetCredentialsForIdentity\", {}).n(\"CognitoIdentityClient\", \"GetCredentialsForIdentityCommand\").f(GetCredentialsForIdentityInputFilterSensitiveLog, GetCredentialsForIdentityResponseFilterSensitiveLog).ser(se_GetCredentialsForIdentityCommand).de(de_GetCredentialsForIdentityCommand).build() {\n};\n__name(_GetCredentialsForIdentityCommand, \"GetCredentialsForIdentityCommand\");\nvar GetCredentialsForIdentityCommand = _GetCredentialsForIdentityCommand;\n\n// src/commands/GetIdCommand.ts\n\n\n\nvar _GetIdCommand = class _GetIdCommand extends import_smithy_client.Command.classBuilder().ep(commonParams).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"AWSCognitoIdentityService\", \"GetId\", {}).n(\"CognitoIdentityClient\", \"GetIdCommand\").f(GetIdInputFilterSensitiveLog, void 0).ser(se_GetIdCommand).de(de_GetIdCommand).build() {\n};\n__name(_GetIdCommand, \"GetIdCommand\");\nvar GetIdCommand = _GetIdCommand;\n\n// src/commands/GetIdentityPoolRolesCommand.ts\n\n\n\nvar _GetIdentityPoolRolesCommand = class _GetIdentityPoolRolesCommand extends import_smithy_client.Command.classBuilder().ep(commonParams).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"AWSCognitoIdentityService\", \"GetIdentityPoolRoles\", {}).n(\"CognitoIdentityClient\", \"GetIdentityPoolRolesCommand\").f(void 0, void 0).ser(se_GetIdentityPoolRolesCommand).de(de_GetIdentityPoolRolesCommand).build() {\n};\n__name(_GetIdentityPoolRolesCommand, \"GetIdentityPoolRolesCommand\");\nvar GetIdentityPoolRolesCommand = _GetIdentityPoolRolesCommand;\n\n// src/commands/GetOpenIdTokenCommand.ts\n\n\n\nvar _GetOpenIdTokenCommand = class _GetOpenIdTokenCommand extends import_smithy_client.Command.classBuilder().ep(commonParams).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"AWSCognitoIdentityService\", \"GetOpenIdToken\", {}).n(\"CognitoIdentityClient\", \"GetOpenIdTokenCommand\").f(GetOpenIdTokenInputFilterSensitiveLog, GetOpenIdTokenResponseFilterSensitiveLog).ser(se_GetOpenIdTokenCommand).de(de_GetOpenIdTokenCommand).build() {\n};\n__name(_GetOpenIdTokenCommand, \"GetOpenIdTokenCommand\");\nvar GetOpenIdTokenCommand = _GetOpenIdTokenCommand;\n\n// src/commands/GetOpenIdTokenForDeveloperIdentityCommand.ts\n\n\n\nvar _GetOpenIdTokenForDeveloperIdentityCommand = class _GetOpenIdTokenForDeveloperIdentityCommand extends import_smithy_client.Command.classBuilder().ep(commonParams).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"AWSCognitoIdentityService\", \"GetOpenIdTokenForDeveloperIdentity\", {}).n(\"CognitoIdentityClient\", \"GetOpenIdTokenForDeveloperIdentityCommand\").f(\n GetOpenIdTokenForDeveloperIdentityInputFilterSensitiveLog,\n GetOpenIdTokenForDeveloperIdentityResponseFilterSensitiveLog\n).ser(se_GetOpenIdTokenForDeveloperIdentityCommand).de(de_GetOpenIdTokenForDeveloperIdentityCommand).build() {\n};\n__name(_GetOpenIdTokenForDeveloperIdentityCommand, \"GetOpenIdTokenForDeveloperIdentityCommand\");\nvar GetOpenIdTokenForDeveloperIdentityCommand = _GetOpenIdTokenForDeveloperIdentityCommand;\n\n// src/commands/GetPrincipalTagAttributeMapCommand.ts\n\n\n\nvar _GetPrincipalTagAttributeMapCommand = class _GetPrincipalTagAttributeMapCommand extends import_smithy_client.Command.classBuilder().ep(commonParams).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"AWSCognitoIdentityService\", \"GetPrincipalTagAttributeMap\", {}).n(\"CognitoIdentityClient\", \"GetPrincipalTagAttributeMapCommand\").f(void 0, void 0).ser(se_GetPrincipalTagAttributeMapCommand).de(de_GetPrincipalTagAttributeMapCommand).build() {\n};\n__name(_GetPrincipalTagAttributeMapCommand, \"GetPrincipalTagAttributeMapCommand\");\nvar GetPrincipalTagAttributeMapCommand = _GetPrincipalTagAttributeMapCommand;\n\n// src/commands/ListIdentitiesCommand.ts\n\n\n\nvar _ListIdentitiesCommand = class _ListIdentitiesCommand extends import_smithy_client.Command.classBuilder().ep(commonParams).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"AWSCognitoIdentityService\", \"ListIdentities\", {}).n(\"CognitoIdentityClient\", \"ListIdentitiesCommand\").f(void 0, void 0).ser(se_ListIdentitiesCommand).de(de_ListIdentitiesCommand).build() {\n};\n__name(_ListIdentitiesCommand, \"ListIdentitiesCommand\");\nvar ListIdentitiesCommand = _ListIdentitiesCommand;\n\n// src/commands/ListIdentityPoolsCommand.ts\n\n\n\nvar _ListIdentityPoolsCommand = class _ListIdentityPoolsCommand extends import_smithy_client.Command.classBuilder().ep(commonParams).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"AWSCognitoIdentityService\", \"ListIdentityPools\", {}).n(\"CognitoIdentityClient\", \"ListIdentityPoolsCommand\").f(void 0, void 0).ser(se_ListIdentityPoolsCommand).de(de_ListIdentityPoolsCommand).build() {\n};\n__name(_ListIdentityPoolsCommand, \"ListIdentityPoolsCommand\");\nvar ListIdentityPoolsCommand = _ListIdentityPoolsCommand;\n\n// src/commands/ListTagsForResourceCommand.ts\n\n\n\nvar _ListTagsForResourceCommand = class _ListTagsForResourceCommand extends import_smithy_client.Command.classBuilder().ep(commonParams).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"AWSCognitoIdentityService\", \"ListTagsForResource\", {}).n(\"CognitoIdentityClient\", \"ListTagsForResourceCommand\").f(void 0, void 0).ser(se_ListTagsForResourceCommand).de(de_ListTagsForResourceCommand).build() {\n};\n__name(_ListTagsForResourceCommand, \"ListTagsForResourceCommand\");\nvar ListTagsForResourceCommand = _ListTagsForResourceCommand;\n\n// src/commands/LookupDeveloperIdentityCommand.ts\n\n\n\nvar _LookupDeveloperIdentityCommand = class _LookupDeveloperIdentityCommand extends import_smithy_client.Command.classBuilder().ep(commonParams).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"AWSCognitoIdentityService\", \"LookupDeveloperIdentity\", {}).n(\"CognitoIdentityClient\", \"LookupDeveloperIdentityCommand\").f(void 0, void 0).ser(se_LookupDeveloperIdentityCommand).de(de_LookupDeveloperIdentityCommand).build() {\n};\n__name(_LookupDeveloperIdentityCommand, \"LookupDeveloperIdentityCommand\");\nvar LookupDeveloperIdentityCommand = _LookupDeveloperIdentityCommand;\n\n// src/commands/MergeDeveloperIdentitiesCommand.ts\n\n\n\nvar _MergeDeveloperIdentitiesCommand = class _MergeDeveloperIdentitiesCommand extends import_smithy_client.Command.classBuilder().ep(commonParams).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"AWSCognitoIdentityService\", \"MergeDeveloperIdentities\", {}).n(\"CognitoIdentityClient\", \"MergeDeveloperIdentitiesCommand\").f(void 0, void 0).ser(se_MergeDeveloperIdentitiesCommand).de(de_MergeDeveloperIdentitiesCommand).build() {\n};\n__name(_MergeDeveloperIdentitiesCommand, \"MergeDeveloperIdentitiesCommand\");\nvar MergeDeveloperIdentitiesCommand = _MergeDeveloperIdentitiesCommand;\n\n// src/commands/SetIdentityPoolRolesCommand.ts\n\n\n\nvar _SetIdentityPoolRolesCommand = class _SetIdentityPoolRolesCommand extends import_smithy_client.Command.classBuilder().ep(commonParams).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"AWSCognitoIdentityService\", \"SetIdentityPoolRoles\", {}).n(\"CognitoIdentityClient\", \"SetIdentityPoolRolesCommand\").f(void 0, void 0).ser(se_SetIdentityPoolRolesCommand).de(de_SetIdentityPoolRolesCommand).build() {\n};\n__name(_SetIdentityPoolRolesCommand, \"SetIdentityPoolRolesCommand\");\nvar SetIdentityPoolRolesCommand = _SetIdentityPoolRolesCommand;\n\n// src/commands/SetPrincipalTagAttributeMapCommand.ts\n\n\n\nvar _SetPrincipalTagAttributeMapCommand = class _SetPrincipalTagAttributeMapCommand extends import_smithy_client.Command.classBuilder().ep(commonParams).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"AWSCognitoIdentityService\", \"SetPrincipalTagAttributeMap\", {}).n(\"CognitoIdentityClient\", \"SetPrincipalTagAttributeMapCommand\").f(void 0, void 0).ser(se_SetPrincipalTagAttributeMapCommand).de(de_SetPrincipalTagAttributeMapCommand).build() {\n};\n__name(_SetPrincipalTagAttributeMapCommand, \"SetPrincipalTagAttributeMapCommand\");\nvar SetPrincipalTagAttributeMapCommand = _SetPrincipalTagAttributeMapCommand;\n\n// src/commands/TagResourceCommand.ts\n\n\n\nvar _TagResourceCommand = class _TagResourceCommand extends import_smithy_client.Command.classBuilder().ep(commonParams).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"AWSCognitoIdentityService\", \"TagResource\", {}).n(\"CognitoIdentityClient\", \"TagResourceCommand\").f(void 0, void 0).ser(se_TagResourceCommand).de(de_TagResourceCommand).build() {\n};\n__name(_TagResourceCommand, \"TagResourceCommand\");\nvar TagResourceCommand = _TagResourceCommand;\n\n// src/commands/UnlinkDeveloperIdentityCommand.ts\n\n\n\nvar _UnlinkDeveloperIdentityCommand = class _UnlinkDeveloperIdentityCommand extends import_smithy_client.Command.classBuilder().ep(commonParams).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"AWSCognitoIdentityService\", \"UnlinkDeveloperIdentity\", {}).n(\"CognitoIdentityClient\", \"UnlinkDeveloperIdentityCommand\").f(void 0, void 0).ser(se_UnlinkDeveloperIdentityCommand).de(de_UnlinkDeveloperIdentityCommand).build() {\n};\n__name(_UnlinkDeveloperIdentityCommand, \"UnlinkDeveloperIdentityCommand\");\nvar UnlinkDeveloperIdentityCommand = _UnlinkDeveloperIdentityCommand;\n\n// src/commands/UnlinkIdentityCommand.ts\n\n\n\nvar _UnlinkIdentityCommand = class _UnlinkIdentityCommand extends import_smithy_client.Command.classBuilder().ep(commonParams).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"AWSCognitoIdentityService\", \"UnlinkIdentity\", {}).n(\"CognitoIdentityClient\", \"UnlinkIdentityCommand\").f(UnlinkIdentityInputFilterSensitiveLog, void 0).ser(se_UnlinkIdentityCommand).de(de_UnlinkIdentityCommand).build() {\n};\n__name(_UnlinkIdentityCommand, \"UnlinkIdentityCommand\");\nvar UnlinkIdentityCommand = _UnlinkIdentityCommand;\n\n// src/commands/UntagResourceCommand.ts\n\n\n\nvar _UntagResourceCommand = class _UntagResourceCommand extends import_smithy_client.Command.classBuilder().ep(commonParams).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"AWSCognitoIdentityService\", \"UntagResource\", {}).n(\"CognitoIdentityClient\", \"UntagResourceCommand\").f(void 0, void 0).ser(se_UntagResourceCommand).de(de_UntagResourceCommand).build() {\n};\n__name(_UntagResourceCommand, \"UntagResourceCommand\");\nvar UntagResourceCommand = _UntagResourceCommand;\n\n// src/commands/UpdateIdentityPoolCommand.ts\n\n\n\nvar _UpdateIdentityPoolCommand = class _UpdateIdentityPoolCommand extends import_smithy_client.Command.classBuilder().ep(commonParams).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"AWSCognitoIdentityService\", \"UpdateIdentityPool\", {}).n(\"CognitoIdentityClient\", \"UpdateIdentityPoolCommand\").f(void 0, void 0).ser(se_UpdateIdentityPoolCommand).de(de_UpdateIdentityPoolCommand).build() {\n};\n__name(_UpdateIdentityPoolCommand, \"UpdateIdentityPoolCommand\");\nvar UpdateIdentityPoolCommand = _UpdateIdentityPoolCommand;\n\n// src/CognitoIdentity.ts\nvar commands = {\n CreateIdentityPoolCommand,\n DeleteIdentitiesCommand,\n DeleteIdentityPoolCommand,\n DescribeIdentityCommand,\n DescribeIdentityPoolCommand,\n GetCredentialsForIdentityCommand,\n GetIdCommand,\n GetIdentityPoolRolesCommand,\n GetOpenIdTokenCommand,\n GetOpenIdTokenForDeveloperIdentityCommand,\n GetPrincipalTagAttributeMapCommand,\n ListIdentitiesCommand,\n ListIdentityPoolsCommand,\n ListTagsForResourceCommand,\n LookupDeveloperIdentityCommand,\n MergeDeveloperIdentitiesCommand,\n SetIdentityPoolRolesCommand,\n SetPrincipalTagAttributeMapCommand,\n TagResourceCommand,\n UnlinkDeveloperIdentityCommand,\n UnlinkIdentityCommand,\n UntagResourceCommand,\n UpdateIdentityPoolCommand\n};\nvar _CognitoIdentity = class _CognitoIdentity extends CognitoIdentityClient {\n};\n__name(_CognitoIdentity, \"CognitoIdentity\");\nvar CognitoIdentity = _CognitoIdentity;\n(0, import_smithy_client.createAggregatedClient)(commands, CognitoIdentity);\n\n// src/pagination/ListIdentityPoolsPaginator.ts\n\nvar paginateListIdentityPools = (0, import_core.createPaginator)(CognitoIdentityClient, ListIdentityPoolsCommand, \"NextToken\", \"NextToken\", \"MaxResults\");\n// Annotate the CommonJS export names for ESM import in node:\n\n0 && (module.exports = {\n CognitoIdentityServiceException,\n __Client,\n CognitoIdentityClient,\n CognitoIdentity,\n $Command,\n CreateIdentityPoolCommand,\n DeleteIdentitiesCommand,\n DeleteIdentityPoolCommand,\n DescribeIdentityCommand,\n DescribeIdentityPoolCommand,\n GetCredentialsForIdentityCommand,\n GetIdCommand,\n GetIdentityPoolRolesCommand,\n GetOpenIdTokenCommand,\n GetOpenIdTokenForDeveloperIdentityCommand,\n GetPrincipalTagAttributeMapCommand,\n ListIdentitiesCommand,\n ListIdentityPoolsCommand,\n ListTagsForResourceCommand,\n LookupDeveloperIdentityCommand,\n MergeDeveloperIdentitiesCommand,\n SetIdentityPoolRolesCommand,\n SetPrincipalTagAttributeMapCommand,\n TagResourceCommand,\n UnlinkDeveloperIdentityCommand,\n UnlinkIdentityCommand,\n UntagResourceCommand,\n UpdateIdentityPoolCommand,\n paginateListIdentityPools,\n AmbiguousRoleResolutionType,\n InternalErrorException,\n InvalidParameterException,\n LimitExceededException,\n NotAuthorizedException,\n ResourceConflictException,\n TooManyRequestsException,\n ErrorCode,\n ResourceNotFoundException,\n ExternalServiceException,\n InvalidIdentityPoolConfigurationException,\n MappingRuleMatchType,\n RoleMappingType,\n DeveloperUserAlreadyRegisteredException,\n ConcurrentModificationException,\n GetCredentialsForIdentityInputFilterSensitiveLog,\n CredentialsFilterSensitiveLog,\n GetCredentialsForIdentityResponseFilterSensitiveLog,\n GetIdInputFilterSensitiveLog,\n GetOpenIdTokenInputFilterSensitiveLog,\n GetOpenIdTokenResponseFilterSensitiveLog,\n GetOpenIdTokenForDeveloperIdentityInputFilterSensitiveLog,\n GetOpenIdTokenForDeveloperIdentityResponseFilterSensitiveLog,\n UnlinkIdentityInputFilterSensitiveLog\n});\n\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getRuntimeConfig = void 0;\nconst tslib_1 = require(\"tslib\");\nconst package_json_1 = tslib_1.__importDefault(require(\"../package.json\"));\nconst core_1 = require(\"@aws-sdk/core\");\nconst credential_provider_node_1 = require(\"@aws-sdk/credential-provider-node\");\nconst util_user_agent_node_1 = require(\"@aws-sdk/util-user-agent-node\");\nconst config_resolver_1 = require(\"@smithy/config-resolver\");\nconst hash_node_1 = require(\"@smithy/hash-node\");\nconst middleware_retry_1 = require(\"@smithy/middleware-retry\");\nconst node_config_provider_1 = require(\"@smithy/node-config-provider\");\nconst node_http_handler_1 = require(\"@smithy/node-http-handler\");\nconst util_body_length_node_1 = require(\"@smithy/util-body-length-node\");\nconst util_retry_1 = require(\"@smithy/util-retry\");\nconst runtimeConfig_shared_1 = require(\"./runtimeConfig.shared\");\nconst smithy_client_1 = require(\"@smithy/smithy-client\");\nconst util_defaults_mode_node_1 = require(\"@smithy/util-defaults-mode-node\");\nconst smithy_client_2 = require(\"@smithy/smithy-client\");\nconst getRuntimeConfig = (config) => {\n (0, smithy_client_2.emitWarningIfUnsupportedVersion)(process.version);\n const defaultsMode = (0, util_defaults_mode_node_1.resolveDefaultsModeConfig)(config);\n const defaultConfigProvider = () => defaultsMode().then(smithy_client_1.loadConfigsForDefaultMode);\n const clientSharedValues = (0, runtimeConfig_shared_1.getRuntimeConfig)(config);\n (0, core_1.emitWarningIfUnsupportedVersion)(process.version);\n return {\n ...clientSharedValues,\n ...config,\n runtime: \"node\",\n defaultsMode,\n bodyLengthChecker: config?.bodyLengthChecker ?? util_body_length_node_1.calculateBodyLength,\n credentialDefaultProvider: config?.credentialDefaultProvider ?? credential_provider_node_1.defaultProvider,\n defaultUserAgentProvider: config?.defaultUserAgentProvider ??\n (0, util_user_agent_node_1.defaultUserAgent)({ serviceId: clientSharedValues.serviceId, clientVersion: package_json_1.default.version }),\n maxAttempts: config?.maxAttempts ?? (0, node_config_provider_1.loadConfig)(middleware_retry_1.NODE_MAX_ATTEMPT_CONFIG_OPTIONS),\n region: config?.region ?? (0, node_config_provider_1.loadConfig)(config_resolver_1.NODE_REGION_CONFIG_OPTIONS, config_resolver_1.NODE_REGION_CONFIG_FILE_OPTIONS),\n requestHandler: node_http_handler_1.NodeHttpHandler.create(config?.requestHandler ?? defaultConfigProvider),\n retryMode: config?.retryMode ??\n (0, node_config_provider_1.loadConfig)({\n ...middleware_retry_1.NODE_RETRY_MODE_CONFIG_OPTIONS,\n default: async () => (await defaultConfigProvider()).retryMode || util_retry_1.DEFAULT_RETRY_MODE,\n }),\n sha256: config?.sha256 ?? hash_node_1.Hash.bind(null, \"sha256\"),\n streamCollector: config?.streamCollector ?? node_http_handler_1.streamCollector,\n useDualstackEndpoint: config?.useDualstackEndpoint ?? (0, node_config_provider_1.loadConfig)(config_resolver_1.NODE_USE_DUALSTACK_ENDPOINT_CONFIG_OPTIONS),\n useFipsEndpoint: config?.useFipsEndpoint ?? (0, node_config_provider_1.loadConfig)(config_resolver_1.NODE_USE_FIPS_ENDPOINT_CONFIG_OPTIONS),\n };\n};\nexports.getRuntimeConfig = getRuntimeConfig;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getRuntimeConfig = void 0;\nconst core_1 = require(\"@aws-sdk/core\");\nconst core_2 = require(\"@smithy/core\");\nconst smithy_client_1 = require(\"@smithy/smithy-client\");\nconst url_parser_1 = require(\"@smithy/url-parser\");\nconst util_base64_1 = require(\"@smithy/util-base64\");\nconst util_utf8_1 = require(\"@smithy/util-utf8\");\nconst httpAuthSchemeProvider_1 = require(\"./auth/httpAuthSchemeProvider\");\nconst endpointResolver_1 = require(\"./endpoint/endpointResolver\");\nconst getRuntimeConfig = (config) => {\n return {\n apiVersion: \"2014-06-30\",\n base64Decoder: config?.base64Decoder ?? util_base64_1.fromBase64,\n base64Encoder: config?.base64Encoder ?? util_base64_1.toBase64,\n disableHostPrefix: config?.disableHostPrefix ?? false,\n endpointProvider: config?.endpointProvider ?? endpointResolver_1.defaultEndpointResolver,\n extensions: config?.extensions ?? [],\n httpAuthSchemeProvider: config?.httpAuthSchemeProvider ?? httpAuthSchemeProvider_1.defaultCognitoIdentityHttpAuthSchemeProvider,\n httpAuthSchemes: config?.httpAuthSchemes ?? [\n {\n schemeId: \"aws.auth#sigv4\",\n identityProvider: (ipc) => ipc.getIdentityProvider(\"aws.auth#sigv4\"),\n signer: new core_1.AwsSdkSigV4Signer(),\n },\n {\n schemeId: \"smithy.api#noAuth\",\n identityProvider: (ipc) => ipc.getIdentityProvider(\"smithy.api#noAuth\") || (async () => ({})),\n signer: new core_2.NoAuthSigner(),\n },\n ],\n logger: config?.logger ?? new smithy_client_1.NoOpLogger(),\n serviceId: config?.serviceId ?? \"Cognito Identity\",\n urlParser: config?.urlParser ?? url_parser_1.parseUrl,\n utf8Decoder: config?.utf8Decoder ?? util_utf8_1.fromUtf8,\n utf8Encoder: config?.utf8Encoder ?? util_utf8_1.toUtf8,\n };\n};\nexports.getRuntimeConfig = getRuntimeConfig;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.resolveHttpAuthSchemeConfig = exports.defaultSSOOIDCHttpAuthSchemeProvider = exports.defaultSSOOIDCHttpAuthSchemeParametersProvider = void 0;\nconst core_1 = require(\"@aws-sdk/core\");\nconst util_middleware_1 = require(\"@smithy/util-middleware\");\nconst defaultSSOOIDCHttpAuthSchemeParametersProvider = async (config, context, input) => {\n return {\n operation: (0, util_middleware_1.getSmithyContext)(context).operation,\n region: (await (0, util_middleware_1.normalizeProvider)(config.region)()) ||\n (() => {\n throw new Error(\"expected `region` to be configured for `aws.auth#sigv4`\");\n })(),\n };\n};\nexports.defaultSSOOIDCHttpAuthSchemeParametersProvider = defaultSSOOIDCHttpAuthSchemeParametersProvider;\nfunction createAwsAuthSigv4HttpAuthOption(authParameters) {\n return {\n schemeId: \"aws.auth#sigv4\",\n signingProperties: {\n name: \"sso-oauth\",\n region: authParameters.region,\n },\n propertiesExtractor: (config, context) => ({\n signingProperties: {\n config,\n context,\n },\n }),\n };\n}\nfunction createSmithyApiNoAuthHttpAuthOption(authParameters) {\n return {\n schemeId: \"smithy.api#noAuth\",\n };\n}\nconst defaultSSOOIDCHttpAuthSchemeProvider = (authParameters) => {\n const options = [];\n switch (authParameters.operation) {\n case \"CreateToken\": {\n options.push(createSmithyApiNoAuthHttpAuthOption(authParameters));\n break;\n }\n case \"RegisterClient\": {\n options.push(createSmithyApiNoAuthHttpAuthOption(authParameters));\n break;\n }\n case \"StartDeviceAuthorization\": {\n options.push(createSmithyApiNoAuthHttpAuthOption(authParameters));\n break;\n }\n default: {\n options.push(createAwsAuthSigv4HttpAuthOption(authParameters));\n }\n }\n return options;\n};\nexports.defaultSSOOIDCHttpAuthSchemeProvider = defaultSSOOIDCHttpAuthSchemeProvider;\nconst resolveHttpAuthSchemeConfig = (config) => {\n const config_0 = (0, core_1.resolveAwsSdkSigV4Config)(config);\n return {\n ...config_0,\n };\n};\nexports.resolveHttpAuthSchemeConfig = resolveHttpAuthSchemeConfig;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.defaultEndpointResolver = void 0;\nconst util_endpoints_1 = require(\"@aws-sdk/util-endpoints\");\nconst util_endpoints_2 = require(\"@smithy/util-endpoints\");\nconst ruleset_1 = require(\"./ruleset\");\nconst cache = new util_endpoints_2.EndpointCache({\n size: 50,\n params: [\"Endpoint\", \"Region\", \"UseDualStack\", \"UseFIPS\"],\n});\nconst defaultEndpointResolver = (endpointParams, context = {}) => {\n return cache.get(endpointParams, () => (0, util_endpoints_2.resolveEndpoint)(ruleset_1.ruleSet, {\n endpointParams: endpointParams,\n logger: context.logger,\n }));\n};\nexports.defaultEndpointResolver = defaultEndpointResolver;\nutil_endpoints_2.customEndpointFunctions.aws = util_endpoints_1.awsEndpointFunctions;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ruleSet = void 0;\nconst u = \"required\", v = \"fn\", w = \"argv\", x = \"ref\";\nconst a = true, b = \"isSet\", c = \"booleanEquals\", d = \"error\", e = \"endpoint\", f = \"tree\", g = \"PartitionResult\", h = \"getAttr\", i = { [u]: false, \"type\": \"String\" }, j = { [u]: true, \"default\": false, \"type\": \"Boolean\" }, k = { [x]: \"Endpoint\" }, l = { [v]: c, [w]: [{ [x]: \"UseFIPS\" }, true] }, m = { [v]: c, [w]: [{ [x]: \"UseDualStack\" }, true] }, n = {}, o = { [v]: h, [w]: [{ [x]: g }, \"supportsFIPS\"] }, p = { [x]: g }, q = { [v]: c, [w]: [true, { [v]: h, [w]: [p, \"supportsDualStack\"] }] }, r = [l], s = [m], t = [{ [x]: \"Region\" }];\nconst _data = { version: \"1.0\", parameters: { Region: i, UseDualStack: j, UseFIPS: j, Endpoint: i }, rules: [{ conditions: [{ [v]: b, [w]: [k] }], rules: [{ conditions: r, error: \"Invalid Configuration: FIPS and custom endpoint are not supported\", type: d }, { conditions: s, error: \"Invalid Configuration: Dualstack and custom endpoint are not supported\", type: d }, { endpoint: { url: k, properties: n, headers: n }, type: e }], type: f }, { conditions: [{ [v]: b, [w]: t }], rules: [{ conditions: [{ [v]: \"aws.partition\", [w]: t, assign: g }], rules: [{ conditions: [l, m], rules: [{ conditions: [{ [v]: c, [w]: [a, o] }, q], rules: [{ endpoint: { url: \"https://oidc-fips.{Region}.{PartitionResult#dualStackDnsSuffix}\", properties: n, headers: n }, type: e }], type: f }, { error: \"FIPS and DualStack are enabled, but this partition does not support one or both\", type: d }], type: f }, { conditions: r, rules: [{ conditions: [{ [v]: c, [w]: [o, a] }], rules: [{ conditions: [{ [v]: \"stringEquals\", [w]: [{ [v]: h, [w]: [p, \"name\"] }, \"aws-us-gov\"] }], endpoint: { url: \"https://oidc.{Region}.amazonaws.com\", properties: n, headers: n }, type: e }, { endpoint: { url: \"https://oidc-fips.{Region}.{PartitionResult#dnsSuffix}\", properties: n, headers: n }, type: e }], type: f }, { error: \"FIPS is enabled but this partition does not support FIPS\", type: d }], type: f }, { conditions: s, rules: [{ conditions: [q], rules: [{ endpoint: { url: \"https://oidc.{Region}.{PartitionResult#dualStackDnsSuffix}\", properties: n, headers: n }, type: e }], type: f }, { error: \"DualStack is enabled but this partition does not support DualStack\", type: d }], type: f }, { endpoint: { url: \"https://oidc.{Region}.{PartitionResult#dnsSuffix}\", properties: n, headers: n }, type: e }], type: f }], type: f }, { error: \"Invalid Configuration: Missing Region\", type: d }] };\nexports.ruleSet = _data;\n","\"use strict\";\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/index.ts\nvar src_exports = {};\n__export(src_exports, {\n AccessDeniedException: () => AccessDeniedException,\n AuthorizationPendingException: () => AuthorizationPendingException,\n CreateTokenCommand: () => CreateTokenCommand,\n CreateTokenRequestFilterSensitiveLog: () => CreateTokenRequestFilterSensitiveLog,\n CreateTokenResponseFilterSensitiveLog: () => CreateTokenResponseFilterSensitiveLog,\n CreateTokenWithIAMCommand: () => CreateTokenWithIAMCommand,\n CreateTokenWithIAMRequestFilterSensitiveLog: () => CreateTokenWithIAMRequestFilterSensitiveLog,\n CreateTokenWithIAMResponseFilterSensitiveLog: () => CreateTokenWithIAMResponseFilterSensitiveLog,\n ExpiredTokenException: () => ExpiredTokenException,\n InternalServerException: () => InternalServerException,\n InvalidClientException: () => InvalidClientException,\n InvalidClientMetadataException: () => InvalidClientMetadataException,\n InvalidGrantException: () => InvalidGrantException,\n InvalidRedirectUriException: () => InvalidRedirectUriException,\n InvalidRequestException: () => InvalidRequestException,\n InvalidRequestRegionException: () => InvalidRequestRegionException,\n InvalidScopeException: () => InvalidScopeException,\n RegisterClientCommand: () => RegisterClientCommand,\n RegisterClientResponseFilterSensitiveLog: () => RegisterClientResponseFilterSensitiveLog,\n SSOOIDC: () => SSOOIDC,\n SSOOIDCClient: () => SSOOIDCClient,\n SSOOIDCServiceException: () => SSOOIDCServiceException,\n SlowDownException: () => SlowDownException,\n StartDeviceAuthorizationCommand: () => StartDeviceAuthorizationCommand,\n StartDeviceAuthorizationRequestFilterSensitiveLog: () => StartDeviceAuthorizationRequestFilterSensitiveLog,\n UnauthorizedClientException: () => UnauthorizedClientException,\n UnsupportedGrantTypeException: () => UnsupportedGrantTypeException,\n __Client: () => import_smithy_client.Client\n});\nmodule.exports = __toCommonJS(src_exports);\n\n// src/SSOOIDCClient.ts\nvar import_middleware_host_header = require(\"@aws-sdk/middleware-host-header\");\nvar import_middleware_logger = require(\"@aws-sdk/middleware-logger\");\nvar import_middleware_recursion_detection = require(\"@aws-sdk/middleware-recursion-detection\");\nvar import_middleware_user_agent = require(\"@aws-sdk/middleware-user-agent\");\nvar import_config_resolver = require(\"@smithy/config-resolver\");\nvar import_core = require(\"@smithy/core\");\nvar import_middleware_content_length = require(\"@smithy/middleware-content-length\");\nvar import_middleware_endpoint = require(\"@smithy/middleware-endpoint\");\nvar import_middleware_retry = require(\"@smithy/middleware-retry\");\n\nvar import_httpAuthSchemeProvider = require(\"./auth/httpAuthSchemeProvider\");\n\n// src/endpoint/EndpointParameters.ts\nvar resolveClientEndpointParameters = /* @__PURE__ */ __name((options) => {\n return {\n ...options,\n useDualstackEndpoint: options.useDualstackEndpoint ?? false,\n useFipsEndpoint: options.useFipsEndpoint ?? false,\n defaultSigningName: \"sso-oauth\"\n };\n}, \"resolveClientEndpointParameters\");\nvar commonParams = {\n UseFIPS: { type: \"builtInParams\", name: \"useFipsEndpoint\" },\n Endpoint: { type: \"builtInParams\", name: \"endpoint\" },\n Region: { type: \"builtInParams\", name: \"region\" },\n UseDualStack: { type: \"builtInParams\", name: \"useDualstackEndpoint\" }\n};\n\n// src/SSOOIDCClient.ts\nvar import_runtimeConfig = require(\"././runtimeConfig\");\n\n// src/runtimeExtensions.ts\nvar import_region_config_resolver = require(\"@aws-sdk/region-config-resolver\");\nvar import_protocol_http = require(\"@smithy/protocol-http\");\nvar import_smithy_client = require(\"@smithy/smithy-client\");\n\n// src/auth/httpAuthExtensionConfiguration.ts\nvar getHttpAuthExtensionConfiguration = /* @__PURE__ */ __name((runtimeConfig) => {\n const _httpAuthSchemes = runtimeConfig.httpAuthSchemes;\n let _httpAuthSchemeProvider = runtimeConfig.httpAuthSchemeProvider;\n let _credentials = runtimeConfig.credentials;\n return {\n setHttpAuthScheme(httpAuthScheme) {\n const index = _httpAuthSchemes.findIndex((scheme) => scheme.schemeId === httpAuthScheme.schemeId);\n if (index === -1) {\n _httpAuthSchemes.push(httpAuthScheme);\n } else {\n _httpAuthSchemes.splice(index, 1, httpAuthScheme);\n }\n },\n httpAuthSchemes() {\n return _httpAuthSchemes;\n },\n setHttpAuthSchemeProvider(httpAuthSchemeProvider) {\n _httpAuthSchemeProvider = httpAuthSchemeProvider;\n },\n httpAuthSchemeProvider() {\n return _httpAuthSchemeProvider;\n },\n setCredentials(credentials) {\n _credentials = credentials;\n },\n credentials() {\n return _credentials;\n }\n };\n}, \"getHttpAuthExtensionConfiguration\");\nvar resolveHttpAuthRuntimeConfig = /* @__PURE__ */ __name((config) => {\n return {\n httpAuthSchemes: config.httpAuthSchemes(),\n httpAuthSchemeProvider: config.httpAuthSchemeProvider(),\n credentials: config.credentials()\n };\n}, \"resolveHttpAuthRuntimeConfig\");\n\n// src/runtimeExtensions.ts\nvar asPartial = /* @__PURE__ */ __name((t) => t, \"asPartial\");\nvar resolveRuntimeExtensions = /* @__PURE__ */ __name((runtimeConfig, extensions) => {\n const extensionConfiguration = {\n ...asPartial((0, import_region_config_resolver.getAwsRegionExtensionConfiguration)(runtimeConfig)),\n ...asPartial((0, import_smithy_client.getDefaultExtensionConfiguration)(runtimeConfig)),\n ...asPartial((0, import_protocol_http.getHttpHandlerExtensionConfiguration)(runtimeConfig)),\n ...asPartial(getHttpAuthExtensionConfiguration(runtimeConfig))\n };\n extensions.forEach((extension) => extension.configure(extensionConfiguration));\n return {\n ...runtimeConfig,\n ...(0, import_region_config_resolver.resolveAwsRegionExtensionConfiguration)(extensionConfiguration),\n ...(0, import_smithy_client.resolveDefaultRuntimeConfig)(extensionConfiguration),\n ...(0, import_protocol_http.resolveHttpHandlerRuntimeConfig)(extensionConfiguration),\n ...resolveHttpAuthRuntimeConfig(extensionConfiguration)\n };\n}, \"resolveRuntimeExtensions\");\n\n// src/SSOOIDCClient.ts\nvar _SSOOIDCClient = class _SSOOIDCClient extends import_smithy_client.Client {\n constructor(...[configuration]) {\n const _config_0 = (0, import_runtimeConfig.getRuntimeConfig)(configuration || {});\n const _config_1 = resolveClientEndpointParameters(_config_0);\n const _config_2 = (0, import_middleware_user_agent.resolveUserAgentConfig)(_config_1);\n const _config_3 = (0, import_middleware_retry.resolveRetryConfig)(_config_2);\n const _config_4 = (0, import_config_resolver.resolveRegionConfig)(_config_3);\n const _config_5 = (0, import_middleware_host_header.resolveHostHeaderConfig)(_config_4);\n const _config_6 = (0, import_middleware_endpoint.resolveEndpointConfig)(_config_5);\n const _config_7 = (0, import_httpAuthSchemeProvider.resolveHttpAuthSchemeConfig)(_config_6);\n const _config_8 = resolveRuntimeExtensions(_config_7, (configuration == null ? void 0 : configuration.extensions) || []);\n super(_config_8);\n this.config = _config_8;\n this.middlewareStack.use((0, import_middleware_user_agent.getUserAgentPlugin)(this.config));\n this.middlewareStack.use((0, import_middleware_retry.getRetryPlugin)(this.config));\n this.middlewareStack.use((0, import_middleware_content_length.getContentLengthPlugin)(this.config));\n this.middlewareStack.use((0, import_middleware_host_header.getHostHeaderPlugin)(this.config));\n this.middlewareStack.use((0, import_middleware_logger.getLoggerPlugin)(this.config));\n this.middlewareStack.use((0, import_middleware_recursion_detection.getRecursionDetectionPlugin)(this.config));\n this.middlewareStack.use(\n (0, import_core.getHttpAuthSchemeEndpointRuleSetPlugin)(this.config, {\n httpAuthSchemeParametersProvider: import_httpAuthSchemeProvider.defaultSSOOIDCHttpAuthSchemeParametersProvider,\n identityProviderConfigProvider: async (config) => new import_core.DefaultIdentityProviderConfig({\n \"aws.auth#sigv4\": config.credentials\n })\n })\n );\n this.middlewareStack.use((0, import_core.getHttpSigningPlugin)(this.config));\n }\n /**\n * Destroy underlying resources, like sockets. It's usually not necessary to do this.\n * However in Node.js, it's best to explicitly shut down the client's agent when it is no longer needed.\n * Otherwise, sockets might stay open for quite a long time before the server terminates them.\n */\n destroy() {\n super.destroy();\n }\n};\n__name(_SSOOIDCClient, \"SSOOIDCClient\");\nvar SSOOIDCClient = _SSOOIDCClient;\n\n// src/SSOOIDC.ts\n\n\n// src/commands/CreateTokenCommand.ts\n\nvar import_middleware_serde = require(\"@smithy/middleware-serde\");\n\n\n// src/models/models_0.ts\n\n\n// src/models/SSOOIDCServiceException.ts\n\nvar _SSOOIDCServiceException = class _SSOOIDCServiceException extends import_smithy_client.ServiceException {\n /**\n * @internal\n */\n constructor(options) {\n super(options);\n Object.setPrototypeOf(this, _SSOOIDCServiceException.prototype);\n }\n};\n__name(_SSOOIDCServiceException, \"SSOOIDCServiceException\");\nvar SSOOIDCServiceException = _SSOOIDCServiceException;\n\n// src/models/models_0.ts\nvar _AccessDeniedException = class _AccessDeniedException extends SSOOIDCServiceException {\n /**\n * @internal\n */\n constructor(opts) {\n super({\n name: \"AccessDeniedException\",\n $fault: \"client\",\n ...opts\n });\n this.name = \"AccessDeniedException\";\n this.$fault = \"client\";\n Object.setPrototypeOf(this, _AccessDeniedException.prototype);\n this.error = opts.error;\n this.error_description = opts.error_description;\n }\n};\n__name(_AccessDeniedException, \"AccessDeniedException\");\nvar AccessDeniedException = _AccessDeniedException;\nvar _AuthorizationPendingException = class _AuthorizationPendingException extends SSOOIDCServiceException {\n /**\n * @internal\n */\n constructor(opts) {\n super({\n name: \"AuthorizationPendingException\",\n $fault: \"client\",\n ...opts\n });\n this.name = \"AuthorizationPendingException\";\n this.$fault = \"client\";\n Object.setPrototypeOf(this, _AuthorizationPendingException.prototype);\n this.error = opts.error;\n this.error_description = opts.error_description;\n }\n};\n__name(_AuthorizationPendingException, \"AuthorizationPendingException\");\nvar AuthorizationPendingException = _AuthorizationPendingException;\nvar _ExpiredTokenException = class _ExpiredTokenException extends SSOOIDCServiceException {\n /**\n * @internal\n */\n constructor(opts) {\n super({\n name: \"ExpiredTokenException\",\n $fault: \"client\",\n ...opts\n });\n this.name = \"ExpiredTokenException\";\n this.$fault = \"client\";\n Object.setPrototypeOf(this, _ExpiredTokenException.prototype);\n this.error = opts.error;\n this.error_description = opts.error_description;\n }\n};\n__name(_ExpiredTokenException, \"ExpiredTokenException\");\nvar ExpiredTokenException = _ExpiredTokenException;\nvar _InternalServerException = class _InternalServerException extends SSOOIDCServiceException {\n /**\n * @internal\n */\n constructor(opts) {\n super({\n name: \"InternalServerException\",\n $fault: \"server\",\n ...opts\n });\n this.name = \"InternalServerException\";\n this.$fault = \"server\";\n Object.setPrototypeOf(this, _InternalServerException.prototype);\n this.error = opts.error;\n this.error_description = opts.error_description;\n }\n};\n__name(_InternalServerException, \"InternalServerException\");\nvar InternalServerException = _InternalServerException;\nvar _InvalidClientException = class _InvalidClientException extends SSOOIDCServiceException {\n /**\n * @internal\n */\n constructor(opts) {\n super({\n name: \"InvalidClientException\",\n $fault: \"client\",\n ...opts\n });\n this.name = \"InvalidClientException\";\n this.$fault = \"client\";\n Object.setPrototypeOf(this, _InvalidClientException.prototype);\n this.error = opts.error;\n this.error_description = opts.error_description;\n }\n};\n__name(_InvalidClientException, \"InvalidClientException\");\nvar InvalidClientException = _InvalidClientException;\nvar _InvalidGrantException = class _InvalidGrantException extends SSOOIDCServiceException {\n /**\n * @internal\n */\n constructor(opts) {\n super({\n name: \"InvalidGrantException\",\n $fault: \"client\",\n ...opts\n });\n this.name = \"InvalidGrantException\";\n this.$fault = \"client\";\n Object.setPrototypeOf(this, _InvalidGrantException.prototype);\n this.error = opts.error;\n this.error_description = opts.error_description;\n }\n};\n__name(_InvalidGrantException, \"InvalidGrantException\");\nvar InvalidGrantException = _InvalidGrantException;\nvar _InvalidRequestException = class _InvalidRequestException extends SSOOIDCServiceException {\n /**\n * @internal\n */\n constructor(opts) {\n super({\n name: \"InvalidRequestException\",\n $fault: \"client\",\n ...opts\n });\n this.name = \"InvalidRequestException\";\n this.$fault = \"client\";\n Object.setPrototypeOf(this, _InvalidRequestException.prototype);\n this.error = opts.error;\n this.error_description = opts.error_description;\n }\n};\n__name(_InvalidRequestException, \"InvalidRequestException\");\nvar InvalidRequestException = _InvalidRequestException;\nvar _InvalidScopeException = class _InvalidScopeException extends SSOOIDCServiceException {\n /**\n * @internal\n */\n constructor(opts) {\n super({\n name: \"InvalidScopeException\",\n $fault: \"client\",\n ...opts\n });\n this.name = \"InvalidScopeException\";\n this.$fault = \"client\";\n Object.setPrototypeOf(this, _InvalidScopeException.prototype);\n this.error = opts.error;\n this.error_description = opts.error_description;\n }\n};\n__name(_InvalidScopeException, \"InvalidScopeException\");\nvar InvalidScopeException = _InvalidScopeException;\nvar _SlowDownException = class _SlowDownException extends SSOOIDCServiceException {\n /**\n * @internal\n */\n constructor(opts) {\n super({\n name: \"SlowDownException\",\n $fault: \"client\",\n ...opts\n });\n this.name = \"SlowDownException\";\n this.$fault = \"client\";\n Object.setPrototypeOf(this, _SlowDownException.prototype);\n this.error = opts.error;\n this.error_description = opts.error_description;\n }\n};\n__name(_SlowDownException, \"SlowDownException\");\nvar SlowDownException = _SlowDownException;\nvar _UnauthorizedClientException = class _UnauthorizedClientException extends SSOOIDCServiceException {\n /**\n * @internal\n */\n constructor(opts) {\n super({\n name: \"UnauthorizedClientException\",\n $fault: \"client\",\n ...opts\n });\n this.name = \"UnauthorizedClientException\";\n this.$fault = \"client\";\n Object.setPrototypeOf(this, _UnauthorizedClientException.prototype);\n this.error = opts.error;\n this.error_description = opts.error_description;\n }\n};\n__name(_UnauthorizedClientException, \"UnauthorizedClientException\");\nvar UnauthorizedClientException = _UnauthorizedClientException;\nvar _UnsupportedGrantTypeException = class _UnsupportedGrantTypeException extends SSOOIDCServiceException {\n /**\n * @internal\n */\n constructor(opts) {\n super({\n name: \"UnsupportedGrantTypeException\",\n $fault: \"client\",\n ...opts\n });\n this.name = \"UnsupportedGrantTypeException\";\n this.$fault = \"client\";\n Object.setPrototypeOf(this, _UnsupportedGrantTypeException.prototype);\n this.error = opts.error;\n this.error_description = opts.error_description;\n }\n};\n__name(_UnsupportedGrantTypeException, \"UnsupportedGrantTypeException\");\nvar UnsupportedGrantTypeException = _UnsupportedGrantTypeException;\nvar _InvalidRequestRegionException = class _InvalidRequestRegionException extends SSOOIDCServiceException {\n /**\n * @internal\n */\n constructor(opts) {\n super({\n name: \"InvalidRequestRegionException\",\n $fault: \"client\",\n ...opts\n });\n this.name = \"InvalidRequestRegionException\";\n this.$fault = \"client\";\n Object.setPrototypeOf(this, _InvalidRequestRegionException.prototype);\n this.error = opts.error;\n this.error_description = opts.error_description;\n this.endpoint = opts.endpoint;\n this.region = opts.region;\n }\n};\n__name(_InvalidRequestRegionException, \"InvalidRequestRegionException\");\nvar InvalidRequestRegionException = _InvalidRequestRegionException;\nvar _InvalidClientMetadataException = class _InvalidClientMetadataException extends SSOOIDCServiceException {\n /**\n * @internal\n */\n constructor(opts) {\n super({\n name: \"InvalidClientMetadataException\",\n $fault: \"client\",\n ...opts\n });\n this.name = \"InvalidClientMetadataException\";\n this.$fault = \"client\";\n Object.setPrototypeOf(this, _InvalidClientMetadataException.prototype);\n this.error = opts.error;\n this.error_description = opts.error_description;\n }\n};\n__name(_InvalidClientMetadataException, \"InvalidClientMetadataException\");\nvar InvalidClientMetadataException = _InvalidClientMetadataException;\nvar _InvalidRedirectUriException = class _InvalidRedirectUriException extends SSOOIDCServiceException {\n /**\n * @internal\n */\n constructor(opts) {\n super({\n name: \"InvalidRedirectUriException\",\n $fault: \"client\",\n ...opts\n });\n this.name = \"InvalidRedirectUriException\";\n this.$fault = \"client\";\n Object.setPrototypeOf(this, _InvalidRedirectUriException.prototype);\n this.error = opts.error;\n this.error_description = opts.error_description;\n }\n};\n__name(_InvalidRedirectUriException, \"InvalidRedirectUriException\");\nvar InvalidRedirectUriException = _InvalidRedirectUriException;\nvar CreateTokenRequestFilterSensitiveLog = /* @__PURE__ */ __name((obj) => ({\n ...obj,\n ...obj.clientSecret && { clientSecret: import_smithy_client.SENSITIVE_STRING },\n ...obj.refreshToken && { refreshToken: import_smithy_client.SENSITIVE_STRING },\n ...obj.codeVerifier && { codeVerifier: import_smithy_client.SENSITIVE_STRING }\n}), \"CreateTokenRequestFilterSensitiveLog\");\nvar CreateTokenResponseFilterSensitiveLog = /* @__PURE__ */ __name((obj) => ({\n ...obj,\n ...obj.accessToken && { accessToken: import_smithy_client.SENSITIVE_STRING },\n ...obj.refreshToken && { refreshToken: import_smithy_client.SENSITIVE_STRING },\n ...obj.idToken && { idToken: import_smithy_client.SENSITIVE_STRING }\n}), \"CreateTokenResponseFilterSensitiveLog\");\nvar CreateTokenWithIAMRequestFilterSensitiveLog = /* @__PURE__ */ __name((obj) => ({\n ...obj,\n ...obj.refreshToken && { refreshToken: import_smithy_client.SENSITIVE_STRING },\n ...obj.assertion && { assertion: import_smithy_client.SENSITIVE_STRING },\n ...obj.subjectToken && { subjectToken: import_smithy_client.SENSITIVE_STRING },\n ...obj.codeVerifier && { codeVerifier: import_smithy_client.SENSITIVE_STRING }\n}), \"CreateTokenWithIAMRequestFilterSensitiveLog\");\nvar CreateTokenWithIAMResponseFilterSensitiveLog = /* @__PURE__ */ __name((obj) => ({\n ...obj,\n ...obj.accessToken && { accessToken: import_smithy_client.SENSITIVE_STRING },\n ...obj.refreshToken && { refreshToken: import_smithy_client.SENSITIVE_STRING },\n ...obj.idToken && { idToken: import_smithy_client.SENSITIVE_STRING }\n}), \"CreateTokenWithIAMResponseFilterSensitiveLog\");\nvar RegisterClientResponseFilterSensitiveLog = /* @__PURE__ */ __name((obj) => ({\n ...obj,\n ...obj.clientSecret && { clientSecret: import_smithy_client.SENSITIVE_STRING }\n}), \"RegisterClientResponseFilterSensitiveLog\");\nvar StartDeviceAuthorizationRequestFilterSensitiveLog = /* @__PURE__ */ __name((obj) => ({\n ...obj,\n ...obj.clientSecret && { clientSecret: import_smithy_client.SENSITIVE_STRING }\n}), \"StartDeviceAuthorizationRequestFilterSensitiveLog\");\n\n// src/protocols/Aws_restJson1.ts\nvar import_core2 = require(\"@aws-sdk/core\");\n\n\nvar se_CreateTokenCommand = /* @__PURE__ */ __name(async (input, context) => {\n const b = (0, import_core.requestBuilder)(input, context);\n const headers = {\n \"content-type\": \"application/json\"\n };\n b.bp(\"/token\");\n let body;\n body = JSON.stringify(\n (0, import_smithy_client.take)(input, {\n clientId: [],\n clientSecret: [],\n code: [],\n codeVerifier: [],\n deviceCode: [],\n grantType: [],\n redirectUri: [],\n refreshToken: [],\n scope: (_) => (0, import_smithy_client._json)(_)\n })\n );\n b.m(\"POST\").h(headers).b(body);\n return b.build();\n}, \"se_CreateTokenCommand\");\nvar se_CreateTokenWithIAMCommand = /* @__PURE__ */ __name(async (input, context) => {\n const b = (0, import_core.requestBuilder)(input, context);\n const headers = {\n \"content-type\": \"application/json\"\n };\n b.bp(\"/token\");\n const query = (0, import_smithy_client.map)({\n [_ai]: [, \"t\"]\n });\n let body;\n body = JSON.stringify(\n (0, import_smithy_client.take)(input, {\n assertion: [],\n clientId: [],\n code: [],\n codeVerifier: [],\n grantType: [],\n redirectUri: [],\n refreshToken: [],\n requestedTokenType: [],\n scope: (_) => (0, import_smithy_client._json)(_),\n subjectToken: [],\n subjectTokenType: []\n })\n );\n b.m(\"POST\").h(headers).q(query).b(body);\n return b.build();\n}, \"se_CreateTokenWithIAMCommand\");\nvar se_RegisterClientCommand = /* @__PURE__ */ __name(async (input, context) => {\n const b = (0, import_core.requestBuilder)(input, context);\n const headers = {\n \"content-type\": \"application/json\"\n };\n b.bp(\"/client/register\");\n let body;\n body = JSON.stringify(\n (0, import_smithy_client.take)(input, {\n clientName: [],\n clientType: [],\n entitledApplicationArn: [],\n grantTypes: (_) => (0, import_smithy_client._json)(_),\n issuerUrl: [],\n redirectUris: (_) => (0, import_smithy_client._json)(_),\n scopes: (_) => (0, import_smithy_client._json)(_)\n })\n );\n b.m(\"POST\").h(headers).b(body);\n return b.build();\n}, \"se_RegisterClientCommand\");\nvar se_StartDeviceAuthorizationCommand = /* @__PURE__ */ __name(async (input, context) => {\n const b = (0, import_core.requestBuilder)(input, context);\n const headers = {\n \"content-type\": \"application/json\"\n };\n b.bp(\"/device_authorization\");\n let body;\n body = JSON.stringify(\n (0, import_smithy_client.take)(input, {\n clientId: [],\n clientSecret: [],\n startUrl: []\n })\n );\n b.m(\"POST\").h(headers).b(body);\n return b.build();\n}, \"se_StartDeviceAuthorizationCommand\");\nvar de_CreateTokenCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode !== 200 && output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const contents = (0, import_smithy_client.map)({\n $metadata: deserializeMetadata(output)\n });\n const data = (0, import_smithy_client.expectNonNull)((0, import_smithy_client.expectObject)(await (0, import_core2.parseJsonBody)(output.body, context)), \"body\");\n const doc = (0, import_smithy_client.take)(data, {\n accessToken: import_smithy_client.expectString,\n expiresIn: import_smithy_client.expectInt32,\n idToken: import_smithy_client.expectString,\n refreshToken: import_smithy_client.expectString,\n tokenType: import_smithy_client.expectString\n });\n Object.assign(contents, doc);\n return contents;\n}, \"de_CreateTokenCommand\");\nvar de_CreateTokenWithIAMCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode !== 200 && output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const contents = (0, import_smithy_client.map)({\n $metadata: deserializeMetadata(output)\n });\n const data = (0, import_smithy_client.expectNonNull)((0, import_smithy_client.expectObject)(await (0, import_core2.parseJsonBody)(output.body, context)), \"body\");\n const doc = (0, import_smithy_client.take)(data, {\n accessToken: import_smithy_client.expectString,\n expiresIn: import_smithy_client.expectInt32,\n idToken: import_smithy_client.expectString,\n issuedTokenType: import_smithy_client.expectString,\n refreshToken: import_smithy_client.expectString,\n scope: import_smithy_client._json,\n tokenType: import_smithy_client.expectString\n });\n Object.assign(contents, doc);\n return contents;\n}, \"de_CreateTokenWithIAMCommand\");\nvar de_RegisterClientCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode !== 200 && output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const contents = (0, import_smithy_client.map)({\n $metadata: deserializeMetadata(output)\n });\n const data = (0, import_smithy_client.expectNonNull)((0, import_smithy_client.expectObject)(await (0, import_core2.parseJsonBody)(output.body, context)), \"body\");\n const doc = (0, import_smithy_client.take)(data, {\n authorizationEndpoint: import_smithy_client.expectString,\n clientId: import_smithy_client.expectString,\n clientIdIssuedAt: import_smithy_client.expectLong,\n clientSecret: import_smithy_client.expectString,\n clientSecretExpiresAt: import_smithy_client.expectLong,\n tokenEndpoint: import_smithy_client.expectString\n });\n Object.assign(contents, doc);\n return contents;\n}, \"de_RegisterClientCommand\");\nvar de_StartDeviceAuthorizationCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode !== 200 && output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const contents = (0, import_smithy_client.map)({\n $metadata: deserializeMetadata(output)\n });\n const data = (0, import_smithy_client.expectNonNull)((0, import_smithy_client.expectObject)(await (0, import_core2.parseJsonBody)(output.body, context)), \"body\");\n const doc = (0, import_smithy_client.take)(data, {\n deviceCode: import_smithy_client.expectString,\n expiresIn: import_smithy_client.expectInt32,\n interval: import_smithy_client.expectInt32,\n userCode: import_smithy_client.expectString,\n verificationUri: import_smithy_client.expectString,\n verificationUriComplete: import_smithy_client.expectString\n });\n Object.assign(contents, doc);\n return contents;\n}, \"de_StartDeviceAuthorizationCommand\");\nvar de_CommandError = /* @__PURE__ */ __name(async (output, context) => {\n const parsedOutput = {\n ...output,\n body: await (0, import_core2.parseJsonErrorBody)(output.body, context)\n };\n const errorCode = (0, import_core2.loadRestJsonErrorCode)(output, parsedOutput.body);\n switch (errorCode) {\n case \"AccessDeniedException\":\n case \"com.amazonaws.ssooidc#AccessDeniedException\":\n throw await de_AccessDeniedExceptionRes(parsedOutput, context);\n case \"AuthorizationPendingException\":\n case \"com.amazonaws.ssooidc#AuthorizationPendingException\":\n throw await de_AuthorizationPendingExceptionRes(parsedOutput, context);\n case \"ExpiredTokenException\":\n case \"com.amazonaws.ssooidc#ExpiredTokenException\":\n throw await de_ExpiredTokenExceptionRes(parsedOutput, context);\n case \"InternalServerException\":\n case \"com.amazonaws.ssooidc#InternalServerException\":\n throw await de_InternalServerExceptionRes(parsedOutput, context);\n case \"InvalidClientException\":\n case \"com.amazonaws.ssooidc#InvalidClientException\":\n throw await de_InvalidClientExceptionRes(parsedOutput, context);\n case \"InvalidGrantException\":\n case \"com.amazonaws.ssooidc#InvalidGrantException\":\n throw await de_InvalidGrantExceptionRes(parsedOutput, context);\n case \"InvalidRequestException\":\n case \"com.amazonaws.ssooidc#InvalidRequestException\":\n throw await de_InvalidRequestExceptionRes(parsedOutput, context);\n case \"InvalidScopeException\":\n case \"com.amazonaws.ssooidc#InvalidScopeException\":\n throw await de_InvalidScopeExceptionRes(parsedOutput, context);\n case \"SlowDownException\":\n case \"com.amazonaws.ssooidc#SlowDownException\":\n throw await de_SlowDownExceptionRes(parsedOutput, context);\n case \"UnauthorizedClientException\":\n case \"com.amazonaws.ssooidc#UnauthorizedClientException\":\n throw await de_UnauthorizedClientExceptionRes(parsedOutput, context);\n case \"UnsupportedGrantTypeException\":\n case \"com.amazonaws.ssooidc#UnsupportedGrantTypeException\":\n throw await de_UnsupportedGrantTypeExceptionRes(parsedOutput, context);\n case \"InvalidRequestRegionException\":\n case \"com.amazonaws.ssooidc#InvalidRequestRegionException\":\n throw await de_InvalidRequestRegionExceptionRes(parsedOutput, context);\n case \"InvalidClientMetadataException\":\n case \"com.amazonaws.ssooidc#InvalidClientMetadataException\":\n throw await de_InvalidClientMetadataExceptionRes(parsedOutput, context);\n case \"InvalidRedirectUriException\":\n case \"com.amazonaws.ssooidc#InvalidRedirectUriException\":\n throw await de_InvalidRedirectUriExceptionRes(parsedOutput, context);\n default:\n const parsedBody = parsedOutput.body;\n return throwDefaultError({\n output,\n parsedBody,\n errorCode\n });\n }\n}, \"de_CommandError\");\nvar throwDefaultError = (0, import_smithy_client.withBaseException)(SSOOIDCServiceException);\nvar de_AccessDeniedExceptionRes = /* @__PURE__ */ __name(async (parsedOutput, context) => {\n const contents = (0, import_smithy_client.map)({});\n const data = parsedOutput.body;\n const doc = (0, import_smithy_client.take)(data, {\n error: import_smithy_client.expectString,\n error_description: import_smithy_client.expectString\n });\n Object.assign(contents, doc);\n const exception = new AccessDeniedException({\n $metadata: deserializeMetadata(parsedOutput),\n ...contents\n });\n return (0, import_smithy_client.decorateServiceException)(exception, parsedOutput.body);\n}, \"de_AccessDeniedExceptionRes\");\nvar de_AuthorizationPendingExceptionRes = /* @__PURE__ */ __name(async (parsedOutput, context) => {\n const contents = (0, import_smithy_client.map)({});\n const data = parsedOutput.body;\n const doc = (0, import_smithy_client.take)(data, {\n error: import_smithy_client.expectString,\n error_description: import_smithy_client.expectString\n });\n Object.assign(contents, doc);\n const exception = new AuthorizationPendingException({\n $metadata: deserializeMetadata(parsedOutput),\n ...contents\n });\n return (0, import_smithy_client.decorateServiceException)(exception, parsedOutput.body);\n}, \"de_AuthorizationPendingExceptionRes\");\nvar de_ExpiredTokenExceptionRes = /* @__PURE__ */ __name(async (parsedOutput, context) => {\n const contents = (0, import_smithy_client.map)({});\n const data = parsedOutput.body;\n const doc = (0, import_smithy_client.take)(data, {\n error: import_smithy_client.expectString,\n error_description: import_smithy_client.expectString\n });\n Object.assign(contents, doc);\n const exception = new ExpiredTokenException({\n $metadata: deserializeMetadata(parsedOutput),\n ...contents\n });\n return (0, import_smithy_client.decorateServiceException)(exception, parsedOutput.body);\n}, \"de_ExpiredTokenExceptionRes\");\nvar de_InternalServerExceptionRes = /* @__PURE__ */ __name(async (parsedOutput, context) => {\n const contents = (0, import_smithy_client.map)({});\n const data = parsedOutput.body;\n const doc = (0, import_smithy_client.take)(data, {\n error: import_smithy_client.expectString,\n error_description: import_smithy_client.expectString\n });\n Object.assign(contents, doc);\n const exception = new InternalServerException({\n $metadata: deserializeMetadata(parsedOutput),\n ...contents\n });\n return (0, import_smithy_client.decorateServiceException)(exception, parsedOutput.body);\n}, \"de_InternalServerExceptionRes\");\nvar de_InvalidClientExceptionRes = /* @__PURE__ */ __name(async (parsedOutput, context) => {\n const contents = (0, import_smithy_client.map)({});\n const data = parsedOutput.body;\n const doc = (0, import_smithy_client.take)(data, {\n error: import_smithy_client.expectString,\n error_description: import_smithy_client.expectString\n });\n Object.assign(contents, doc);\n const exception = new InvalidClientException({\n $metadata: deserializeMetadata(parsedOutput),\n ...contents\n });\n return (0, import_smithy_client.decorateServiceException)(exception, parsedOutput.body);\n}, \"de_InvalidClientExceptionRes\");\nvar de_InvalidClientMetadataExceptionRes = /* @__PURE__ */ __name(async (parsedOutput, context) => {\n const contents = (0, import_smithy_client.map)({});\n const data = parsedOutput.body;\n const doc = (0, import_smithy_client.take)(data, {\n error: import_smithy_client.expectString,\n error_description: import_smithy_client.expectString\n });\n Object.assign(contents, doc);\n const exception = new InvalidClientMetadataException({\n $metadata: deserializeMetadata(parsedOutput),\n ...contents\n });\n return (0, import_smithy_client.decorateServiceException)(exception, parsedOutput.body);\n}, \"de_InvalidClientMetadataExceptionRes\");\nvar de_InvalidGrantExceptionRes = /* @__PURE__ */ __name(async (parsedOutput, context) => {\n const contents = (0, import_smithy_client.map)({});\n const data = parsedOutput.body;\n const doc = (0, import_smithy_client.take)(data, {\n error: import_smithy_client.expectString,\n error_description: import_smithy_client.expectString\n });\n Object.assign(contents, doc);\n const exception = new InvalidGrantException({\n $metadata: deserializeMetadata(parsedOutput),\n ...contents\n });\n return (0, import_smithy_client.decorateServiceException)(exception, parsedOutput.body);\n}, \"de_InvalidGrantExceptionRes\");\nvar de_InvalidRedirectUriExceptionRes = /* @__PURE__ */ __name(async (parsedOutput, context) => {\n const contents = (0, import_smithy_client.map)({});\n const data = parsedOutput.body;\n const doc = (0, import_smithy_client.take)(data, {\n error: import_smithy_client.expectString,\n error_description: import_smithy_client.expectString\n });\n Object.assign(contents, doc);\n const exception = new InvalidRedirectUriException({\n $metadata: deserializeMetadata(parsedOutput),\n ...contents\n });\n return (0, import_smithy_client.decorateServiceException)(exception, parsedOutput.body);\n}, \"de_InvalidRedirectUriExceptionRes\");\nvar de_InvalidRequestExceptionRes = /* @__PURE__ */ __name(async (parsedOutput, context) => {\n const contents = (0, import_smithy_client.map)({});\n const data = parsedOutput.body;\n const doc = (0, import_smithy_client.take)(data, {\n error: import_smithy_client.expectString,\n error_description: import_smithy_client.expectString\n });\n Object.assign(contents, doc);\n const exception = new InvalidRequestException({\n $metadata: deserializeMetadata(parsedOutput),\n ...contents\n });\n return (0, import_smithy_client.decorateServiceException)(exception, parsedOutput.body);\n}, \"de_InvalidRequestExceptionRes\");\nvar de_InvalidRequestRegionExceptionRes = /* @__PURE__ */ __name(async (parsedOutput, context) => {\n const contents = (0, import_smithy_client.map)({});\n const data = parsedOutput.body;\n const doc = (0, import_smithy_client.take)(data, {\n endpoint: import_smithy_client.expectString,\n error: import_smithy_client.expectString,\n error_description: import_smithy_client.expectString,\n region: import_smithy_client.expectString\n });\n Object.assign(contents, doc);\n const exception = new InvalidRequestRegionException({\n $metadata: deserializeMetadata(parsedOutput),\n ...contents\n });\n return (0, import_smithy_client.decorateServiceException)(exception, parsedOutput.body);\n}, \"de_InvalidRequestRegionExceptionRes\");\nvar de_InvalidScopeExceptionRes = /* @__PURE__ */ __name(async (parsedOutput, context) => {\n const contents = (0, import_smithy_client.map)({});\n const data = parsedOutput.body;\n const doc = (0, import_smithy_client.take)(data, {\n error: import_smithy_client.expectString,\n error_description: import_smithy_client.expectString\n });\n Object.assign(contents, doc);\n const exception = new InvalidScopeException({\n $metadata: deserializeMetadata(parsedOutput),\n ...contents\n });\n return (0, import_smithy_client.decorateServiceException)(exception, parsedOutput.body);\n}, \"de_InvalidScopeExceptionRes\");\nvar de_SlowDownExceptionRes = /* @__PURE__ */ __name(async (parsedOutput, context) => {\n const contents = (0, import_smithy_client.map)({});\n const data = parsedOutput.body;\n const doc = (0, import_smithy_client.take)(data, {\n error: import_smithy_client.expectString,\n error_description: import_smithy_client.expectString\n });\n Object.assign(contents, doc);\n const exception = new SlowDownException({\n $metadata: deserializeMetadata(parsedOutput),\n ...contents\n });\n return (0, import_smithy_client.decorateServiceException)(exception, parsedOutput.body);\n}, \"de_SlowDownExceptionRes\");\nvar de_UnauthorizedClientExceptionRes = /* @__PURE__ */ __name(async (parsedOutput, context) => {\n const contents = (0, import_smithy_client.map)({});\n const data = parsedOutput.body;\n const doc = (0, import_smithy_client.take)(data, {\n error: import_smithy_client.expectString,\n error_description: import_smithy_client.expectString\n });\n Object.assign(contents, doc);\n const exception = new UnauthorizedClientException({\n $metadata: deserializeMetadata(parsedOutput),\n ...contents\n });\n return (0, import_smithy_client.decorateServiceException)(exception, parsedOutput.body);\n}, \"de_UnauthorizedClientExceptionRes\");\nvar de_UnsupportedGrantTypeExceptionRes = /* @__PURE__ */ __name(async (parsedOutput, context) => {\n const contents = (0, import_smithy_client.map)({});\n const data = parsedOutput.body;\n const doc = (0, import_smithy_client.take)(data, {\n error: import_smithy_client.expectString,\n error_description: import_smithy_client.expectString\n });\n Object.assign(contents, doc);\n const exception = new UnsupportedGrantTypeException({\n $metadata: deserializeMetadata(parsedOutput),\n ...contents\n });\n return (0, import_smithy_client.decorateServiceException)(exception, parsedOutput.body);\n}, \"de_UnsupportedGrantTypeExceptionRes\");\nvar deserializeMetadata = /* @__PURE__ */ __name((output) => ({\n httpStatusCode: output.statusCode,\n requestId: output.headers[\"x-amzn-requestid\"] ?? output.headers[\"x-amzn-request-id\"] ?? output.headers[\"x-amz-request-id\"],\n extendedRequestId: output.headers[\"x-amz-id-2\"],\n cfId: output.headers[\"x-amz-cf-id\"]\n}), \"deserializeMetadata\");\nvar _ai = \"aws_iam\";\n\n// src/commands/CreateTokenCommand.ts\nvar _CreateTokenCommand = class _CreateTokenCommand extends import_smithy_client.Command.classBuilder().ep(commonParams).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"AWSSSOOIDCService\", \"CreateToken\", {}).n(\"SSOOIDCClient\", \"CreateTokenCommand\").f(CreateTokenRequestFilterSensitiveLog, CreateTokenResponseFilterSensitiveLog).ser(se_CreateTokenCommand).de(de_CreateTokenCommand).build() {\n};\n__name(_CreateTokenCommand, \"CreateTokenCommand\");\nvar CreateTokenCommand = _CreateTokenCommand;\n\n// src/commands/CreateTokenWithIAMCommand.ts\n\n\n\nvar _CreateTokenWithIAMCommand = class _CreateTokenWithIAMCommand extends import_smithy_client.Command.classBuilder().ep(commonParams).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"AWSSSOOIDCService\", \"CreateTokenWithIAM\", {}).n(\"SSOOIDCClient\", \"CreateTokenWithIAMCommand\").f(CreateTokenWithIAMRequestFilterSensitiveLog, CreateTokenWithIAMResponseFilterSensitiveLog).ser(se_CreateTokenWithIAMCommand).de(de_CreateTokenWithIAMCommand).build() {\n};\n__name(_CreateTokenWithIAMCommand, \"CreateTokenWithIAMCommand\");\nvar CreateTokenWithIAMCommand = _CreateTokenWithIAMCommand;\n\n// src/commands/RegisterClientCommand.ts\n\n\n\nvar _RegisterClientCommand = class _RegisterClientCommand extends import_smithy_client.Command.classBuilder().ep(commonParams).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"AWSSSOOIDCService\", \"RegisterClient\", {}).n(\"SSOOIDCClient\", \"RegisterClientCommand\").f(void 0, RegisterClientResponseFilterSensitiveLog).ser(se_RegisterClientCommand).de(de_RegisterClientCommand).build() {\n};\n__name(_RegisterClientCommand, \"RegisterClientCommand\");\nvar RegisterClientCommand = _RegisterClientCommand;\n\n// src/commands/StartDeviceAuthorizationCommand.ts\n\n\n\nvar _StartDeviceAuthorizationCommand = class _StartDeviceAuthorizationCommand extends import_smithy_client.Command.classBuilder().ep(commonParams).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"AWSSSOOIDCService\", \"StartDeviceAuthorization\", {}).n(\"SSOOIDCClient\", \"StartDeviceAuthorizationCommand\").f(StartDeviceAuthorizationRequestFilterSensitiveLog, void 0).ser(se_StartDeviceAuthorizationCommand).de(de_StartDeviceAuthorizationCommand).build() {\n};\n__name(_StartDeviceAuthorizationCommand, \"StartDeviceAuthorizationCommand\");\nvar StartDeviceAuthorizationCommand = _StartDeviceAuthorizationCommand;\n\n// src/SSOOIDC.ts\nvar commands = {\n CreateTokenCommand,\n CreateTokenWithIAMCommand,\n RegisterClientCommand,\n StartDeviceAuthorizationCommand\n};\nvar _SSOOIDC = class _SSOOIDC extends SSOOIDCClient {\n};\n__name(_SSOOIDC, \"SSOOIDC\");\nvar SSOOIDC = _SSOOIDC;\n(0, import_smithy_client.createAggregatedClient)(commands, SSOOIDC);\n// Annotate the CommonJS export names for ESM import in node:\n\n0 && (module.exports = {\n SSOOIDCServiceException,\n __Client,\n SSOOIDCClient,\n SSOOIDC,\n $Command,\n CreateTokenCommand,\n CreateTokenWithIAMCommand,\n RegisterClientCommand,\n StartDeviceAuthorizationCommand,\n AccessDeniedException,\n AuthorizationPendingException,\n ExpiredTokenException,\n InternalServerException,\n InvalidClientException,\n InvalidGrantException,\n InvalidRequestException,\n InvalidScopeException,\n SlowDownException,\n UnauthorizedClientException,\n UnsupportedGrantTypeException,\n InvalidRequestRegionException,\n InvalidClientMetadataException,\n InvalidRedirectUriException,\n CreateTokenRequestFilterSensitiveLog,\n CreateTokenResponseFilterSensitiveLog,\n CreateTokenWithIAMRequestFilterSensitiveLog,\n CreateTokenWithIAMResponseFilterSensitiveLog,\n RegisterClientResponseFilterSensitiveLog,\n StartDeviceAuthorizationRequestFilterSensitiveLog\n});\n\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getRuntimeConfig = void 0;\nconst tslib_1 = require(\"tslib\");\nconst package_json_1 = tslib_1.__importDefault(require(\"../package.json\"));\nconst core_1 = require(\"@aws-sdk/core\");\nconst credential_provider_node_1 = require(\"@aws-sdk/credential-provider-node\");\nconst util_user_agent_node_1 = require(\"@aws-sdk/util-user-agent-node\");\nconst config_resolver_1 = require(\"@smithy/config-resolver\");\nconst hash_node_1 = require(\"@smithy/hash-node\");\nconst middleware_retry_1 = require(\"@smithy/middleware-retry\");\nconst node_config_provider_1 = require(\"@smithy/node-config-provider\");\nconst node_http_handler_1 = require(\"@smithy/node-http-handler\");\nconst util_body_length_node_1 = require(\"@smithy/util-body-length-node\");\nconst util_retry_1 = require(\"@smithy/util-retry\");\nconst runtimeConfig_shared_1 = require(\"./runtimeConfig.shared\");\nconst smithy_client_1 = require(\"@smithy/smithy-client\");\nconst util_defaults_mode_node_1 = require(\"@smithy/util-defaults-mode-node\");\nconst smithy_client_2 = require(\"@smithy/smithy-client\");\nconst getRuntimeConfig = (config) => {\n (0, smithy_client_2.emitWarningIfUnsupportedVersion)(process.version);\n const defaultsMode = (0, util_defaults_mode_node_1.resolveDefaultsModeConfig)(config);\n const defaultConfigProvider = () => defaultsMode().then(smithy_client_1.loadConfigsForDefaultMode);\n const clientSharedValues = (0, runtimeConfig_shared_1.getRuntimeConfig)(config);\n (0, core_1.emitWarningIfUnsupportedVersion)(process.version);\n return {\n ...clientSharedValues,\n ...config,\n runtime: \"node\",\n defaultsMode,\n bodyLengthChecker: config?.bodyLengthChecker ?? util_body_length_node_1.calculateBodyLength,\n credentialDefaultProvider: config?.credentialDefaultProvider ?? credential_provider_node_1.defaultProvider,\n defaultUserAgentProvider: config?.defaultUserAgentProvider ??\n (0, util_user_agent_node_1.defaultUserAgent)({ serviceId: clientSharedValues.serviceId, clientVersion: package_json_1.default.version }),\n maxAttempts: config?.maxAttempts ?? (0, node_config_provider_1.loadConfig)(middleware_retry_1.NODE_MAX_ATTEMPT_CONFIG_OPTIONS),\n region: config?.region ?? (0, node_config_provider_1.loadConfig)(config_resolver_1.NODE_REGION_CONFIG_OPTIONS, config_resolver_1.NODE_REGION_CONFIG_FILE_OPTIONS),\n requestHandler: node_http_handler_1.NodeHttpHandler.create(config?.requestHandler ?? defaultConfigProvider),\n retryMode: config?.retryMode ??\n (0, node_config_provider_1.loadConfig)({\n ...middleware_retry_1.NODE_RETRY_MODE_CONFIG_OPTIONS,\n default: async () => (await defaultConfigProvider()).retryMode || util_retry_1.DEFAULT_RETRY_MODE,\n }),\n sha256: config?.sha256 ?? hash_node_1.Hash.bind(null, \"sha256\"),\n streamCollector: config?.streamCollector ?? node_http_handler_1.streamCollector,\n useDualstackEndpoint: config?.useDualstackEndpoint ?? (0, node_config_provider_1.loadConfig)(config_resolver_1.NODE_USE_DUALSTACK_ENDPOINT_CONFIG_OPTIONS),\n useFipsEndpoint: config?.useFipsEndpoint ?? (0, node_config_provider_1.loadConfig)(config_resolver_1.NODE_USE_FIPS_ENDPOINT_CONFIG_OPTIONS),\n };\n};\nexports.getRuntimeConfig = getRuntimeConfig;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getRuntimeConfig = void 0;\nconst core_1 = require(\"@aws-sdk/core\");\nconst core_2 = require(\"@smithy/core\");\nconst smithy_client_1 = require(\"@smithy/smithy-client\");\nconst url_parser_1 = require(\"@smithy/url-parser\");\nconst util_base64_1 = require(\"@smithy/util-base64\");\nconst util_utf8_1 = require(\"@smithy/util-utf8\");\nconst httpAuthSchemeProvider_1 = require(\"./auth/httpAuthSchemeProvider\");\nconst endpointResolver_1 = require(\"./endpoint/endpointResolver\");\nconst getRuntimeConfig = (config) => {\n return {\n apiVersion: \"2019-06-10\",\n base64Decoder: config?.base64Decoder ?? util_base64_1.fromBase64,\n base64Encoder: config?.base64Encoder ?? util_base64_1.toBase64,\n disableHostPrefix: config?.disableHostPrefix ?? false,\n endpointProvider: config?.endpointProvider ?? endpointResolver_1.defaultEndpointResolver,\n extensions: config?.extensions ?? [],\n httpAuthSchemeProvider: config?.httpAuthSchemeProvider ?? httpAuthSchemeProvider_1.defaultSSOOIDCHttpAuthSchemeProvider,\n httpAuthSchemes: config?.httpAuthSchemes ?? [\n {\n schemeId: \"aws.auth#sigv4\",\n identityProvider: (ipc) => ipc.getIdentityProvider(\"aws.auth#sigv4\"),\n signer: new core_1.AwsSdkSigV4Signer(),\n },\n {\n schemeId: \"smithy.api#noAuth\",\n identityProvider: (ipc) => ipc.getIdentityProvider(\"smithy.api#noAuth\") || (async () => ({})),\n signer: new core_2.NoAuthSigner(),\n },\n ],\n logger: config?.logger ?? new smithy_client_1.NoOpLogger(),\n serviceId: config?.serviceId ?? \"SSO OIDC\",\n urlParser: config?.urlParser ?? url_parser_1.parseUrl,\n utf8Decoder: config?.utf8Decoder ?? util_utf8_1.fromUtf8,\n utf8Encoder: config?.utf8Encoder ?? util_utf8_1.toUtf8,\n };\n};\nexports.getRuntimeConfig = getRuntimeConfig;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.resolveHttpAuthSchemeConfig = exports.defaultSSOHttpAuthSchemeProvider = exports.defaultSSOHttpAuthSchemeParametersProvider = void 0;\nconst core_1 = require(\"@aws-sdk/core\");\nconst util_middleware_1 = require(\"@smithy/util-middleware\");\nconst defaultSSOHttpAuthSchemeParametersProvider = async (config, context, input) => {\n return {\n operation: (0, util_middleware_1.getSmithyContext)(context).operation,\n region: (await (0, util_middleware_1.normalizeProvider)(config.region)()) ||\n (() => {\n throw new Error(\"expected `region` to be configured for `aws.auth#sigv4`\");\n })(),\n };\n};\nexports.defaultSSOHttpAuthSchemeParametersProvider = defaultSSOHttpAuthSchemeParametersProvider;\nfunction createAwsAuthSigv4HttpAuthOption(authParameters) {\n return {\n schemeId: \"aws.auth#sigv4\",\n signingProperties: {\n name: \"awsssoportal\",\n region: authParameters.region,\n },\n propertiesExtractor: (config, context) => ({\n signingProperties: {\n config,\n context,\n },\n }),\n };\n}\nfunction createSmithyApiNoAuthHttpAuthOption(authParameters) {\n return {\n schemeId: \"smithy.api#noAuth\",\n };\n}\nconst defaultSSOHttpAuthSchemeProvider = (authParameters) => {\n const options = [];\n switch (authParameters.operation) {\n case \"GetRoleCredentials\": {\n options.push(createSmithyApiNoAuthHttpAuthOption(authParameters));\n break;\n }\n case \"ListAccountRoles\": {\n options.push(createSmithyApiNoAuthHttpAuthOption(authParameters));\n break;\n }\n case \"ListAccounts\": {\n options.push(createSmithyApiNoAuthHttpAuthOption(authParameters));\n break;\n }\n case \"Logout\": {\n options.push(createSmithyApiNoAuthHttpAuthOption(authParameters));\n break;\n }\n default: {\n options.push(createAwsAuthSigv4HttpAuthOption(authParameters));\n }\n }\n return options;\n};\nexports.defaultSSOHttpAuthSchemeProvider = defaultSSOHttpAuthSchemeProvider;\nconst resolveHttpAuthSchemeConfig = (config) => {\n const config_0 = (0, core_1.resolveAwsSdkSigV4Config)(config);\n return {\n ...config_0,\n };\n};\nexports.resolveHttpAuthSchemeConfig = resolveHttpAuthSchemeConfig;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.defaultEndpointResolver = void 0;\nconst util_endpoints_1 = require(\"@aws-sdk/util-endpoints\");\nconst util_endpoints_2 = require(\"@smithy/util-endpoints\");\nconst ruleset_1 = require(\"./ruleset\");\nconst cache = new util_endpoints_2.EndpointCache({\n size: 50,\n params: [\"Endpoint\", \"Region\", \"UseDualStack\", \"UseFIPS\"],\n});\nconst defaultEndpointResolver = (endpointParams, context = {}) => {\n return cache.get(endpointParams, () => (0, util_endpoints_2.resolveEndpoint)(ruleset_1.ruleSet, {\n endpointParams: endpointParams,\n logger: context.logger,\n }));\n};\nexports.defaultEndpointResolver = defaultEndpointResolver;\nutil_endpoints_2.customEndpointFunctions.aws = util_endpoints_1.awsEndpointFunctions;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ruleSet = void 0;\nconst u = \"required\", v = \"fn\", w = \"argv\", x = \"ref\";\nconst a = true, b = \"isSet\", c = \"booleanEquals\", d = \"error\", e = \"endpoint\", f = \"tree\", g = \"PartitionResult\", h = \"getAttr\", i = { [u]: false, \"type\": \"String\" }, j = { [u]: true, \"default\": false, \"type\": \"Boolean\" }, k = { [x]: \"Endpoint\" }, l = { [v]: c, [w]: [{ [x]: \"UseFIPS\" }, true] }, m = { [v]: c, [w]: [{ [x]: \"UseDualStack\" }, true] }, n = {}, o = { [v]: h, [w]: [{ [x]: g }, \"supportsFIPS\"] }, p = { [x]: g }, q = { [v]: c, [w]: [true, { [v]: h, [w]: [p, \"supportsDualStack\"] }] }, r = [l], s = [m], t = [{ [x]: \"Region\" }];\nconst _data = { version: \"1.0\", parameters: { Region: i, UseDualStack: j, UseFIPS: j, Endpoint: i }, rules: [{ conditions: [{ [v]: b, [w]: [k] }], rules: [{ conditions: r, error: \"Invalid Configuration: FIPS and custom endpoint are not supported\", type: d }, { conditions: s, error: \"Invalid Configuration: Dualstack and custom endpoint are not supported\", type: d }, { endpoint: { url: k, properties: n, headers: n }, type: e }], type: f }, { conditions: [{ [v]: b, [w]: t }], rules: [{ conditions: [{ [v]: \"aws.partition\", [w]: t, assign: g }], rules: [{ conditions: [l, m], rules: [{ conditions: [{ [v]: c, [w]: [a, o] }, q], rules: [{ endpoint: { url: \"https://portal.sso-fips.{Region}.{PartitionResult#dualStackDnsSuffix}\", properties: n, headers: n }, type: e }], type: f }, { error: \"FIPS and DualStack are enabled, but this partition does not support one or both\", type: d }], type: f }, { conditions: r, rules: [{ conditions: [{ [v]: c, [w]: [o, a] }], rules: [{ conditions: [{ [v]: \"stringEquals\", [w]: [{ [v]: h, [w]: [p, \"name\"] }, \"aws-us-gov\"] }], endpoint: { url: \"https://portal.sso.{Region}.amazonaws.com\", properties: n, headers: n }, type: e }, { endpoint: { url: \"https://portal.sso-fips.{Region}.{PartitionResult#dnsSuffix}\", properties: n, headers: n }, type: e }], type: f }, { error: \"FIPS is enabled but this partition does not support FIPS\", type: d }], type: f }, { conditions: s, rules: [{ conditions: [q], rules: [{ endpoint: { url: \"https://portal.sso.{Region}.{PartitionResult#dualStackDnsSuffix}\", properties: n, headers: n }, type: e }], type: f }, { error: \"DualStack is enabled but this partition does not support DualStack\", type: d }], type: f }, { endpoint: { url: \"https://portal.sso.{Region}.{PartitionResult#dnsSuffix}\", properties: n, headers: n }, type: e }], type: f }], type: f }, { error: \"Invalid Configuration: Missing Region\", type: d }] };\nexports.ruleSet = _data;\n","\"use strict\";\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/index.ts\nvar src_exports = {};\n__export(src_exports, {\n GetRoleCredentialsCommand: () => GetRoleCredentialsCommand,\n GetRoleCredentialsRequestFilterSensitiveLog: () => GetRoleCredentialsRequestFilterSensitiveLog,\n GetRoleCredentialsResponseFilterSensitiveLog: () => GetRoleCredentialsResponseFilterSensitiveLog,\n InvalidRequestException: () => InvalidRequestException,\n ListAccountRolesCommand: () => ListAccountRolesCommand,\n ListAccountRolesRequestFilterSensitiveLog: () => ListAccountRolesRequestFilterSensitiveLog,\n ListAccountsCommand: () => ListAccountsCommand,\n ListAccountsRequestFilterSensitiveLog: () => ListAccountsRequestFilterSensitiveLog,\n LogoutCommand: () => LogoutCommand,\n LogoutRequestFilterSensitiveLog: () => LogoutRequestFilterSensitiveLog,\n ResourceNotFoundException: () => ResourceNotFoundException,\n RoleCredentialsFilterSensitiveLog: () => RoleCredentialsFilterSensitiveLog,\n SSO: () => SSO,\n SSOClient: () => SSOClient,\n SSOServiceException: () => SSOServiceException,\n TooManyRequestsException: () => TooManyRequestsException,\n UnauthorizedException: () => UnauthorizedException,\n __Client: () => import_smithy_client.Client,\n paginateListAccountRoles: () => paginateListAccountRoles,\n paginateListAccounts: () => paginateListAccounts\n});\nmodule.exports = __toCommonJS(src_exports);\n\n// src/SSOClient.ts\nvar import_middleware_host_header = require(\"@aws-sdk/middleware-host-header\");\nvar import_middleware_logger = require(\"@aws-sdk/middleware-logger\");\nvar import_middleware_recursion_detection = require(\"@aws-sdk/middleware-recursion-detection\");\nvar import_middleware_user_agent = require(\"@aws-sdk/middleware-user-agent\");\nvar import_config_resolver = require(\"@smithy/config-resolver\");\nvar import_core = require(\"@smithy/core\");\nvar import_middleware_content_length = require(\"@smithy/middleware-content-length\");\nvar import_middleware_endpoint = require(\"@smithy/middleware-endpoint\");\nvar import_middleware_retry = require(\"@smithy/middleware-retry\");\n\nvar import_httpAuthSchemeProvider = require(\"./auth/httpAuthSchemeProvider\");\n\n// src/endpoint/EndpointParameters.ts\nvar resolveClientEndpointParameters = /* @__PURE__ */ __name((options) => {\n return {\n ...options,\n useDualstackEndpoint: options.useDualstackEndpoint ?? false,\n useFipsEndpoint: options.useFipsEndpoint ?? false,\n defaultSigningName: \"awsssoportal\"\n };\n}, \"resolveClientEndpointParameters\");\nvar commonParams = {\n UseFIPS: { type: \"builtInParams\", name: \"useFipsEndpoint\" },\n Endpoint: { type: \"builtInParams\", name: \"endpoint\" },\n Region: { type: \"builtInParams\", name: \"region\" },\n UseDualStack: { type: \"builtInParams\", name: \"useDualstackEndpoint\" }\n};\n\n// src/SSOClient.ts\nvar import_runtimeConfig = require(\"././runtimeConfig\");\n\n// src/runtimeExtensions.ts\nvar import_region_config_resolver = require(\"@aws-sdk/region-config-resolver\");\nvar import_protocol_http = require(\"@smithy/protocol-http\");\nvar import_smithy_client = require(\"@smithy/smithy-client\");\n\n// src/auth/httpAuthExtensionConfiguration.ts\nvar getHttpAuthExtensionConfiguration = /* @__PURE__ */ __name((runtimeConfig) => {\n const _httpAuthSchemes = runtimeConfig.httpAuthSchemes;\n let _httpAuthSchemeProvider = runtimeConfig.httpAuthSchemeProvider;\n let _credentials = runtimeConfig.credentials;\n return {\n setHttpAuthScheme(httpAuthScheme) {\n const index = _httpAuthSchemes.findIndex((scheme) => scheme.schemeId === httpAuthScheme.schemeId);\n if (index === -1) {\n _httpAuthSchemes.push(httpAuthScheme);\n } else {\n _httpAuthSchemes.splice(index, 1, httpAuthScheme);\n }\n },\n httpAuthSchemes() {\n return _httpAuthSchemes;\n },\n setHttpAuthSchemeProvider(httpAuthSchemeProvider) {\n _httpAuthSchemeProvider = httpAuthSchemeProvider;\n },\n httpAuthSchemeProvider() {\n return _httpAuthSchemeProvider;\n },\n setCredentials(credentials) {\n _credentials = credentials;\n },\n credentials() {\n return _credentials;\n }\n };\n}, \"getHttpAuthExtensionConfiguration\");\nvar resolveHttpAuthRuntimeConfig = /* @__PURE__ */ __name((config) => {\n return {\n httpAuthSchemes: config.httpAuthSchemes(),\n httpAuthSchemeProvider: config.httpAuthSchemeProvider(),\n credentials: config.credentials()\n };\n}, \"resolveHttpAuthRuntimeConfig\");\n\n// src/runtimeExtensions.ts\nvar asPartial = /* @__PURE__ */ __name((t) => t, \"asPartial\");\nvar resolveRuntimeExtensions = /* @__PURE__ */ __name((runtimeConfig, extensions) => {\n const extensionConfiguration = {\n ...asPartial((0, import_region_config_resolver.getAwsRegionExtensionConfiguration)(runtimeConfig)),\n ...asPartial((0, import_smithy_client.getDefaultExtensionConfiguration)(runtimeConfig)),\n ...asPartial((0, import_protocol_http.getHttpHandlerExtensionConfiguration)(runtimeConfig)),\n ...asPartial(getHttpAuthExtensionConfiguration(runtimeConfig))\n };\n extensions.forEach((extension) => extension.configure(extensionConfiguration));\n return {\n ...runtimeConfig,\n ...(0, import_region_config_resolver.resolveAwsRegionExtensionConfiguration)(extensionConfiguration),\n ...(0, import_smithy_client.resolveDefaultRuntimeConfig)(extensionConfiguration),\n ...(0, import_protocol_http.resolveHttpHandlerRuntimeConfig)(extensionConfiguration),\n ...resolveHttpAuthRuntimeConfig(extensionConfiguration)\n };\n}, \"resolveRuntimeExtensions\");\n\n// src/SSOClient.ts\nvar _SSOClient = class _SSOClient extends import_smithy_client.Client {\n constructor(...[configuration]) {\n const _config_0 = (0, import_runtimeConfig.getRuntimeConfig)(configuration || {});\n const _config_1 = resolveClientEndpointParameters(_config_0);\n const _config_2 = (0, import_middleware_user_agent.resolveUserAgentConfig)(_config_1);\n const _config_3 = (0, import_middleware_retry.resolveRetryConfig)(_config_2);\n const _config_4 = (0, import_config_resolver.resolveRegionConfig)(_config_3);\n const _config_5 = (0, import_middleware_host_header.resolveHostHeaderConfig)(_config_4);\n const _config_6 = (0, import_middleware_endpoint.resolveEndpointConfig)(_config_5);\n const _config_7 = (0, import_httpAuthSchemeProvider.resolveHttpAuthSchemeConfig)(_config_6);\n const _config_8 = resolveRuntimeExtensions(_config_7, (configuration == null ? void 0 : configuration.extensions) || []);\n super(_config_8);\n this.config = _config_8;\n this.middlewareStack.use((0, import_middleware_user_agent.getUserAgentPlugin)(this.config));\n this.middlewareStack.use((0, import_middleware_retry.getRetryPlugin)(this.config));\n this.middlewareStack.use((0, import_middleware_content_length.getContentLengthPlugin)(this.config));\n this.middlewareStack.use((0, import_middleware_host_header.getHostHeaderPlugin)(this.config));\n this.middlewareStack.use((0, import_middleware_logger.getLoggerPlugin)(this.config));\n this.middlewareStack.use((0, import_middleware_recursion_detection.getRecursionDetectionPlugin)(this.config));\n this.middlewareStack.use(\n (0, import_core.getHttpAuthSchemeEndpointRuleSetPlugin)(this.config, {\n httpAuthSchemeParametersProvider: import_httpAuthSchemeProvider.defaultSSOHttpAuthSchemeParametersProvider,\n identityProviderConfigProvider: async (config) => new import_core.DefaultIdentityProviderConfig({\n \"aws.auth#sigv4\": config.credentials\n })\n })\n );\n this.middlewareStack.use((0, import_core.getHttpSigningPlugin)(this.config));\n }\n /**\n * Destroy underlying resources, like sockets. It's usually not necessary to do this.\n * However in Node.js, it's best to explicitly shut down the client's agent when it is no longer needed.\n * Otherwise, sockets might stay open for quite a long time before the server terminates them.\n */\n destroy() {\n super.destroy();\n }\n};\n__name(_SSOClient, \"SSOClient\");\nvar SSOClient = _SSOClient;\n\n// src/SSO.ts\n\n\n// src/commands/GetRoleCredentialsCommand.ts\n\nvar import_middleware_serde = require(\"@smithy/middleware-serde\");\n\n\n// src/models/models_0.ts\n\n\n// src/models/SSOServiceException.ts\n\nvar _SSOServiceException = class _SSOServiceException extends import_smithy_client.ServiceException {\n /**\n * @internal\n */\n constructor(options) {\n super(options);\n Object.setPrototypeOf(this, _SSOServiceException.prototype);\n }\n};\n__name(_SSOServiceException, \"SSOServiceException\");\nvar SSOServiceException = _SSOServiceException;\n\n// src/models/models_0.ts\nvar _InvalidRequestException = class _InvalidRequestException extends SSOServiceException {\n /**\n * @internal\n */\n constructor(opts) {\n super({\n name: \"InvalidRequestException\",\n $fault: \"client\",\n ...opts\n });\n this.name = \"InvalidRequestException\";\n this.$fault = \"client\";\n Object.setPrototypeOf(this, _InvalidRequestException.prototype);\n }\n};\n__name(_InvalidRequestException, \"InvalidRequestException\");\nvar InvalidRequestException = _InvalidRequestException;\nvar _ResourceNotFoundException = class _ResourceNotFoundException extends SSOServiceException {\n /**\n * @internal\n */\n constructor(opts) {\n super({\n name: \"ResourceNotFoundException\",\n $fault: \"client\",\n ...opts\n });\n this.name = \"ResourceNotFoundException\";\n this.$fault = \"client\";\n Object.setPrototypeOf(this, _ResourceNotFoundException.prototype);\n }\n};\n__name(_ResourceNotFoundException, \"ResourceNotFoundException\");\nvar ResourceNotFoundException = _ResourceNotFoundException;\nvar _TooManyRequestsException = class _TooManyRequestsException extends SSOServiceException {\n /**\n * @internal\n */\n constructor(opts) {\n super({\n name: \"TooManyRequestsException\",\n $fault: \"client\",\n ...opts\n });\n this.name = \"TooManyRequestsException\";\n this.$fault = \"client\";\n Object.setPrototypeOf(this, _TooManyRequestsException.prototype);\n }\n};\n__name(_TooManyRequestsException, \"TooManyRequestsException\");\nvar TooManyRequestsException = _TooManyRequestsException;\nvar _UnauthorizedException = class _UnauthorizedException extends SSOServiceException {\n /**\n * @internal\n */\n constructor(opts) {\n super({\n name: \"UnauthorizedException\",\n $fault: \"client\",\n ...opts\n });\n this.name = \"UnauthorizedException\";\n this.$fault = \"client\";\n Object.setPrototypeOf(this, _UnauthorizedException.prototype);\n }\n};\n__name(_UnauthorizedException, \"UnauthorizedException\");\nvar UnauthorizedException = _UnauthorizedException;\nvar GetRoleCredentialsRequestFilterSensitiveLog = /* @__PURE__ */ __name((obj) => ({\n ...obj,\n ...obj.accessToken && { accessToken: import_smithy_client.SENSITIVE_STRING }\n}), \"GetRoleCredentialsRequestFilterSensitiveLog\");\nvar RoleCredentialsFilterSensitiveLog = /* @__PURE__ */ __name((obj) => ({\n ...obj,\n ...obj.secretAccessKey && { secretAccessKey: import_smithy_client.SENSITIVE_STRING },\n ...obj.sessionToken && { sessionToken: import_smithy_client.SENSITIVE_STRING }\n}), \"RoleCredentialsFilterSensitiveLog\");\nvar GetRoleCredentialsResponseFilterSensitiveLog = /* @__PURE__ */ __name((obj) => ({\n ...obj,\n ...obj.roleCredentials && { roleCredentials: RoleCredentialsFilterSensitiveLog(obj.roleCredentials) }\n}), \"GetRoleCredentialsResponseFilterSensitiveLog\");\nvar ListAccountRolesRequestFilterSensitiveLog = /* @__PURE__ */ __name((obj) => ({\n ...obj,\n ...obj.accessToken && { accessToken: import_smithy_client.SENSITIVE_STRING }\n}), \"ListAccountRolesRequestFilterSensitiveLog\");\nvar ListAccountsRequestFilterSensitiveLog = /* @__PURE__ */ __name((obj) => ({\n ...obj,\n ...obj.accessToken && { accessToken: import_smithy_client.SENSITIVE_STRING }\n}), \"ListAccountsRequestFilterSensitiveLog\");\nvar LogoutRequestFilterSensitiveLog = /* @__PURE__ */ __name((obj) => ({\n ...obj,\n ...obj.accessToken && { accessToken: import_smithy_client.SENSITIVE_STRING }\n}), \"LogoutRequestFilterSensitiveLog\");\n\n// src/protocols/Aws_restJson1.ts\nvar import_core2 = require(\"@aws-sdk/core\");\n\n\nvar se_GetRoleCredentialsCommand = /* @__PURE__ */ __name(async (input, context) => {\n const b = (0, import_core.requestBuilder)(input, context);\n const headers = (0, import_smithy_client.map)({}, import_smithy_client.isSerializableHeaderValue, {\n [_xasbt]: input[_aT]\n });\n b.bp(\"/federation/credentials\");\n const query = (0, import_smithy_client.map)({\n [_rn]: [, (0, import_smithy_client.expectNonNull)(input[_rN], `roleName`)],\n [_ai]: [, (0, import_smithy_client.expectNonNull)(input[_aI], `accountId`)]\n });\n let body;\n b.m(\"GET\").h(headers).q(query).b(body);\n return b.build();\n}, \"se_GetRoleCredentialsCommand\");\nvar se_ListAccountRolesCommand = /* @__PURE__ */ __name(async (input, context) => {\n const b = (0, import_core.requestBuilder)(input, context);\n const headers = (0, import_smithy_client.map)({}, import_smithy_client.isSerializableHeaderValue, {\n [_xasbt]: input[_aT]\n });\n b.bp(\"/assignment/roles\");\n const query = (0, import_smithy_client.map)({\n [_nt]: [, input[_nT]],\n [_mr]: [() => input.maxResults !== void 0, () => input[_mR].toString()],\n [_ai]: [, (0, import_smithy_client.expectNonNull)(input[_aI], `accountId`)]\n });\n let body;\n b.m(\"GET\").h(headers).q(query).b(body);\n return b.build();\n}, \"se_ListAccountRolesCommand\");\nvar se_ListAccountsCommand = /* @__PURE__ */ __name(async (input, context) => {\n const b = (0, import_core.requestBuilder)(input, context);\n const headers = (0, import_smithy_client.map)({}, import_smithy_client.isSerializableHeaderValue, {\n [_xasbt]: input[_aT]\n });\n b.bp(\"/assignment/accounts\");\n const query = (0, import_smithy_client.map)({\n [_nt]: [, input[_nT]],\n [_mr]: [() => input.maxResults !== void 0, () => input[_mR].toString()]\n });\n let body;\n b.m(\"GET\").h(headers).q(query).b(body);\n return b.build();\n}, \"se_ListAccountsCommand\");\nvar se_LogoutCommand = /* @__PURE__ */ __name(async (input, context) => {\n const b = (0, import_core.requestBuilder)(input, context);\n const headers = (0, import_smithy_client.map)({}, import_smithy_client.isSerializableHeaderValue, {\n [_xasbt]: input[_aT]\n });\n b.bp(\"/logout\");\n let body;\n b.m(\"POST\").h(headers).b(body);\n return b.build();\n}, \"se_LogoutCommand\");\nvar de_GetRoleCredentialsCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode !== 200 && output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const contents = (0, import_smithy_client.map)({\n $metadata: deserializeMetadata(output)\n });\n const data = (0, import_smithy_client.expectNonNull)((0, import_smithy_client.expectObject)(await (0, import_core2.parseJsonBody)(output.body, context)), \"body\");\n const doc = (0, import_smithy_client.take)(data, {\n roleCredentials: import_smithy_client._json\n });\n Object.assign(contents, doc);\n return contents;\n}, \"de_GetRoleCredentialsCommand\");\nvar de_ListAccountRolesCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode !== 200 && output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const contents = (0, import_smithy_client.map)({\n $metadata: deserializeMetadata(output)\n });\n const data = (0, import_smithy_client.expectNonNull)((0, import_smithy_client.expectObject)(await (0, import_core2.parseJsonBody)(output.body, context)), \"body\");\n const doc = (0, import_smithy_client.take)(data, {\n nextToken: import_smithy_client.expectString,\n roleList: import_smithy_client._json\n });\n Object.assign(contents, doc);\n return contents;\n}, \"de_ListAccountRolesCommand\");\nvar de_ListAccountsCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode !== 200 && output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const contents = (0, import_smithy_client.map)({\n $metadata: deserializeMetadata(output)\n });\n const data = (0, import_smithy_client.expectNonNull)((0, import_smithy_client.expectObject)(await (0, import_core2.parseJsonBody)(output.body, context)), \"body\");\n const doc = (0, import_smithy_client.take)(data, {\n accountList: import_smithy_client._json,\n nextToken: import_smithy_client.expectString\n });\n Object.assign(contents, doc);\n return contents;\n}, \"de_ListAccountsCommand\");\nvar de_LogoutCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode !== 200 && output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const contents = (0, import_smithy_client.map)({\n $metadata: deserializeMetadata(output)\n });\n await (0, import_smithy_client.collectBody)(output.body, context);\n return contents;\n}, \"de_LogoutCommand\");\nvar de_CommandError = /* @__PURE__ */ __name(async (output, context) => {\n const parsedOutput = {\n ...output,\n body: await (0, import_core2.parseJsonErrorBody)(output.body, context)\n };\n const errorCode = (0, import_core2.loadRestJsonErrorCode)(output, parsedOutput.body);\n switch (errorCode) {\n case \"InvalidRequestException\":\n case \"com.amazonaws.sso#InvalidRequestException\":\n throw await de_InvalidRequestExceptionRes(parsedOutput, context);\n case \"ResourceNotFoundException\":\n case \"com.amazonaws.sso#ResourceNotFoundException\":\n throw await de_ResourceNotFoundExceptionRes(parsedOutput, context);\n case \"TooManyRequestsException\":\n case \"com.amazonaws.sso#TooManyRequestsException\":\n throw await de_TooManyRequestsExceptionRes(parsedOutput, context);\n case \"UnauthorizedException\":\n case \"com.amazonaws.sso#UnauthorizedException\":\n throw await de_UnauthorizedExceptionRes(parsedOutput, context);\n default:\n const parsedBody = parsedOutput.body;\n return throwDefaultError({\n output,\n parsedBody,\n errorCode\n });\n }\n}, \"de_CommandError\");\nvar throwDefaultError = (0, import_smithy_client.withBaseException)(SSOServiceException);\nvar de_InvalidRequestExceptionRes = /* @__PURE__ */ __name(async (parsedOutput, context) => {\n const contents = (0, import_smithy_client.map)({});\n const data = parsedOutput.body;\n const doc = (0, import_smithy_client.take)(data, {\n message: import_smithy_client.expectString\n });\n Object.assign(contents, doc);\n const exception = new InvalidRequestException({\n $metadata: deserializeMetadata(parsedOutput),\n ...contents\n });\n return (0, import_smithy_client.decorateServiceException)(exception, parsedOutput.body);\n}, \"de_InvalidRequestExceptionRes\");\nvar de_ResourceNotFoundExceptionRes = /* @__PURE__ */ __name(async (parsedOutput, context) => {\n const contents = (0, import_smithy_client.map)({});\n const data = parsedOutput.body;\n const doc = (0, import_smithy_client.take)(data, {\n message: import_smithy_client.expectString\n });\n Object.assign(contents, doc);\n const exception = new ResourceNotFoundException({\n $metadata: deserializeMetadata(parsedOutput),\n ...contents\n });\n return (0, import_smithy_client.decorateServiceException)(exception, parsedOutput.body);\n}, \"de_ResourceNotFoundExceptionRes\");\nvar de_TooManyRequestsExceptionRes = /* @__PURE__ */ __name(async (parsedOutput, context) => {\n const contents = (0, import_smithy_client.map)({});\n const data = parsedOutput.body;\n const doc = (0, import_smithy_client.take)(data, {\n message: import_smithy_client.expectString\n });\n Object.assign(contents, doc);\n const exception = new TooManyRequestsException({\n $metadata: deserializeMetadata(parsedOutput),\n ...contents\n });\n return (0, import_smithy_client.decorateServiceException)(exception, parsedOutput.body);\n}, \"de_TooManyRequestsExceptionRes\");\nvar de_UnauthorizedExceptionRes = /* @__PURE__ */ __name(async (parsedOutput, context) => {\n const contents = (0, import_smithy_client.map)({});\n const data = parsedOutput.body;\n const doc = (0, import_smithy_client.take)(data, {\n message: import_smithy_client.expectString\n });\n Object.assign(contents, doc);\n const exception = new UnauthorizedException({\n $metadata: deserializeMetadata(parsedOutput),\n ...contents\n });\n return (0, import_smithy_client.decorateServiceException)(exception, parsedOutput.body);\n}, \"de_UnauthorizedExceptionRes\");\nvar deserializeMetadata = /* @__PURE__ */ __name((output) => ({\n httpStatusCode: output.statusCode,\n requestId: output.headers[\"x-amzn-requestid\"] ?? output.headers[\"x-amzn-request-id\"] ?? output.headers[\"x-amz-request-id\"],\n extendedRequestId: output.headers[\"x-amz-id-2\"],\n cfId: output.headers[\"x-amz-cf-id\"]\n}), \"deserializeMetadata\");\nvar _aI = \"accountId\";\nvar _aT = \"accessToken\";\nvar _ai = \"account_id\";\nvar _mR = \"maxResults\";\nvar _mr = \"max_result\";\nvar _nT = \"nextToken\";\nvar _nt = \"next_token\";\nvar _rN = \"roleName\";\nvar _rn = \"role_name\";\nvar _xasbt = \"x-amz-sso_bearer_token\";\n\n// src/commands/GetRoleCredentialsCommand.ts\nvar _GetRoleCredentialsCommand = class _GetRoleCredentialsCommand extends import_smithy_client.Command.classBuilder().ep(commonParams).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"SWBPortalService\", \"GetRoleCredentials\", {}).n(\"SSOClient\", \"GetRoleCredentialsCommand\").f(GetRoleCredentialsRequestFilterSensitiveLog, GetRoleCredentialsResponseFilterSensitiveLog).ser(se_GetRoleCredentialsCommand).de(de_GetRoleCredentialsCommand).build() {\n};\n__name(_GetRoleCredentialsCommand, \"GetRoleCredentialsCommand\");\nvar GetRoleCredentialsCommand = _GetRoleCredentialsCommand;\n\n// src/commands/ListAccountRolesCommand.ts\n\n\n\nvar _ListAccountRolesCommand = class _ListAccountRolesCommand extends import_smithy_client.Command.classBuilder().ep(commonParams).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"SWBPortalService\", \"ListAccountRoles\", {}).n(\"SSOClient\", \"ListAccountRolesCommand\").f(ListAccountRolesRequestFilterSensitiveLog, void 0).ser(se_ListAccountRolesCommand).de(de_ListAccountRolesCommand).build() {\n};\n__name(_ListAccountRolesCommand, \"ListAccountRolesCommand\");\nvar ListAccountRolesCommand = _ListAccountRolesCommand;\n\n// src/commands/ListAccountsCommand.ts\n\n\n\nvar _ListAccountsCommand = class _ListAccountsCommand extends import_smithy_client.Command.classBuilder().ep(commonParams).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"SWBPortalService\", \"ListAccounts\", {}).n(\"SSOClient\", \"ListAccountsCommand\").f(ListAccountsRequestFilterSensitiveLog, void 0).ser(se_ListAccountsCommand).de(de_ListAccountsCommand).build() {\n};\n__name(_ListAccountsCommand, \"ListAccountsCommand\");\nvar ListAccountsCommand = _ListAccountsCommand;\n\n// src/commands/LogoutCommand.ts\n\n\n\nvar _LogoutCommand = class _LogoutCommand extends import_smithy_client.Command.classBuilder().ep(commonParams).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"SWBPortalService\", \"Logout\", {}).n(\"SSOClient\", \"LogoutCommand\").f(LogoutRequestFilterSensitiveLog, void 0).ser(se_LogoutCommand).de(de_LogoutCommand).build() {\n};\n__name(_LogoutCommand, \"LogoutCommand\");\nvar LogoutCommand = _LogoutCommand;\n\n// src/SSO.ts\nvar commands = {\n GetRoleCredentialsCommand,\n ListAccountRolesCommand,\n ListAccountsCommand,\n LogoutCommand\n};\nvar _SSO = class _SSO extends SSOClient {\n};\n__name(_SSO, \"SSO\");\nvar SSO = _SSO;\n(0, import_smithy_client.createAggregatedClient)(commands, SSO);\n\n// src/pagination/ListAccountRolesPaginator.ts\n\nvar paginateListAccountRoles = (0, import_core.createPaginator)(SSOClient, ListAccountRolesCommand, \"nextToken\", \"nextToken\", \"maxResults\");\n\n// src/pagination/ListAccountsPaginator.ts\n\nvar paginateListAccounts = (0, import_core.createPaginator)(SSOClient, ListAccountsCommand, \"nextToken\", \"nextToken\", \"maxResults\");\n// Annotate the CommonJS export names for ESM import in node:\n\n0 && (module.exports = {\n SSOServiceException,\n __Client,\n SSOClient,\n SSO,\n $Command,\n GetRoleCredentialsCommand,\n ListAccountRolesCommand,\n ListAccountsCommand,\n LogoutCommand,\n paginateListAccountRoles,\n paginateListAccounts,\n InvalidRequestException,\n ResourceNotFoundException,\n TooManyRequestsException,\n UnauthorizedException,\n GetRoleCredentialsRequestFilterSensitiveLog,\n RoleCredentialsFilterSensitiveLog,\n GetRoleCredentialsResponseFilterSensitiveLog,\n ListAccountRolesRequestFilterSensitiveLog,\n ListAccountsRequestFilterSensitiveLog,\n LogoutRequestFilterSensitiveLog\n});\n\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getRuntimeConfig = void 0;\nconst tslib_1 = require(\"tslib\");\nconst package_json_1 = tslib_1.__importDefault(require(\"../package.json\"));\nconst core_1 = require(\"@aws-sdk/core\");\nconst util_user_agent_node_1 = require(\"@aws-sdk/util-user-agent-node\");\nconst config_resolver_1 = require(\"@smithy/config-resolver\");\nconst hash_node_1 = require(\"@smithy/hash-node\");\nconst middleware_retry_1 = require(\"@smithy/middleware-retry\");\nconst node_config_provider_1 = require(\"@smithy/node-config-provider\");\nconst node_http_handler_1 = require(\"@smithy/node-http-handler\");\nconst util_body_length_node_1 = require(\"@smithy/util-body-length-node\");\nconst util_retry_1 = require(\"@smithy/util-retry\");\nconst runtimeConfig_shared_1 = require(\"./runtimeConfig.shared\");\nconst smithy_client_1 = require(\"@smithy/smithy-client\");\nconst util_defaults_mode_node_1 = require(\"@smithy/util-defaults-mode-node\");\nconst smithy_client_2 = require(\"@smithy/smithy-client\");\nconst getRuntimeConfig = (config) => {\n (0, smithy_client_2.emitWarningIfUnsupportedVersion)(process.version);\n const defaultsMode = (0, util_defaults_mode_node_1.resolveDefaultsModeConfig)(config);\n const defaultConfigProvider = () => defaultsMode().then(smithy_client_1.loadConfigsForDefaultMode);\n const clientSharedValues = (0, runtimeConfig_shared_1.getRuntimeConfig)(config);\n (0, core_1.emitWarningIfUnsupportedVersion)(process.version);\n return {\n ...clientSharedValues,\n ...config,\n runtime: \"node\",\n defaultsMode,\n bodyLengthChecker: config?.bodyLengthChecker ?? util_body_length_node_1.calculateBodyLength,\n defaultUserAgentProvider: config?.defaultUserAgentProvider ??\n (0, util_user_agent_node_1.defaultUserAgent)({ serviceId: clientSharedValues.serviceId, clientVersion: package_json_1.default.version }),\n maxAttempts: config?.maxAttempts ?? (0, node_config_provider_1.loadConfig)(middleware_retry_1.NODE_MAX_ATTEMPT_CONFIG_OPTIONS),\n region: config?.region ?? (0, node_config_provider_1.loadConfig)(config_resolver_1.NODE_REGION_CONFIG_OPTIONS, config_resolver_1.NODE_REGION_CONFIG_FILE_OPTIONS),\n requestHandler: node_http_handler_1.NodeHttpHandler.create(config?.requestHandler ?? defaultConfigProvider),\n retryMode: config?.retryMode ??\n (0, node_config_provider_1.loadConfig)({\n ...middleware_retry_1.NODE_RETRY_MODE_CONFIG_OPTIONS,\n default: async () => (await defaultConfigProvider()).retryMode || util_retry_1.DEFAULT_RETRY_MODE,\n }),\n sha256: config?.sha256 ?? hash_node_1.Hash.bind(null, \"sha256\"),\n streamCollector: config?.streamCollector ?? node_http_handler_1.streamCollector,\n useDualstackEndpoint: config?.useDualstackEndpoint ?? (0, node_config_provider_1.loadConfig)(config_resolver_1.NODE_USE_DUALSTACK_ENDPOINT_CONFIG_OPTIONS),\n useFipsEndpoint: config?.useFipsEndpoint ?? (0, node_config_provider_1.loadConfig)(config_resolver_1.NODE_USE_FIPS_ENDPOINT_CONFIG_OPTIONS),\n };\n};\nexports.getRuntimeConfig = getRuntimeConfig;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getRuntimeConfig = void 0;\nconst core_1 = require(\"@aws-sdk/core\");\nconst core_2 = require(\"@smithy/core\");\nconst smithy_client_1 = require(\"@smithy/smithy-client\");\nconst url_parser_1 = require(\"@smithy/url-parser\");\nconst util_base64_1 = require(\"@smithy/util-base64\");\nconst util_utf8_1 = require(\"@smithy/util-utf8\");\nconst httpAuthSchemeProvider_1 = require(\"./auth/httpAuthSchemeProvider\");\nconst endpointResolver_1 = require(\"./endpoint/endpointResolver\");\nconst getRuntimeConfig = (config) => {\n return {\n apiVersion: \"2019-06-10\",\n base64Decoder: config?.base64Decoder ?? util_base64_1.fromBase64,\n base64Encoder: config?.base64Encoder ?? util_base64_1.toBase64,\n disableHostPrefix: config?.disableHostPrefix ?? false,\n endpointProvider: config?.endpointProvider ?? endpointResolver_1.defaultEndpointResolver,\n extensions: config?.extensions ?? [],\n httpAuthSchemeProvider: config?.httpAuthSchemeProvider ?? httpAuthSchemeProvider_1.defaultSSOHttpAuthSchemeProvider,\n httpAuthSchemes: config?.httpAuthSchemes ?? [\n {\n schemeId: \"aws.auth#sigv4\",\n identityProvider: (ipc) => ipc.getIdentityProvider(\"aws.auth#sigv4\"),\n signer: new core_1.AwsSdkSigV4Signer(),\n },\n {\n schemeId: \"smithy.api#noAuth\",\n identityProvider: (ipc) => ipc.getIdentityProvider(\"smithy.api#noAuth\") || (async () => ({})),\n signer: new core_2.NoAuthSigner(),\n },\n ],\n logger: config?.logger ?? new smithy_client_1.NoOpLogger(),\n serviceId: config?.serviceId ?? \"SSO\",\n urlParser: config?.urlParser ?? url_parser_1.parseUrl,\n utf8Decoder: config?.utf8Decoder ?? util_utf8_1.fromUtf8,\n utf8Encoder: config?.utf8Encoder ?? util_utf8_1.toUtf8,\n };\n};\nexports.getRuntimeConfig = getRuntimeConfig;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.STSClient = exports.__Client = void 0;\nconst middleware_host_header_1 = require(\"@aws-sdk/middleware-host-header\");\nconst middleware_logger_1 = require(\"@aws-sdk/middleware-logger\");\nconst middleware_recursion_detection_1 = require(\"@aws-sdk/middleware-recursion-detection\");\nconst middleware_user_agent_1 = require(\"@aws-sdk/middleware-user-agent\");\nconst config_resolver_1 = require(\"@smithy/config-resolver\");\nconst core_1 = require(\"@smithy/core\");\nconst middleware_content_length_1 = require(\"@smithy/middleware-content-length\");\nconst middleware_endpoint_1 = require(\"@smithy/middleware-endpoint\");\nconst middleware_retry_1 = require(\"@smithy/middleware-retry\");\nconst smithy_client_1 = require(\"@smithy/smithy-client\");\nObject.defineProperty(exports, \"__Client\", { enumerable: true, get: function () { return smithy_client_1.Client; } });\nconst httpAuthSchemeProvider_1 = require(\"./auth/httpAuthSchemeProvider\");\nconst EndpointParameters_1 = require(\"./endpoint/EndpointParameters\");\nconst runtimeConfig_1 = require(\"./runtimeConfig\");\nconst runtimeExtensions_1 = require(\"./runtimeExtensions\");\nclass STSClient extends smithy_client_1.Client {\n constructor(...[configuration]) {\n const _config_0 = (0, runtimeConfig_1.getRuntimeConfig)(configuration || {});\n const _config_1 = (0, EndpointParameters_1.resolveClientEndpointParameters)(_config_0);\n const _config_2 = (0, middleware_user_agent_1.resolveUserAgentConfig)(_config_1);\n const _config_3 = (0, middleware_retry_1.resolveRetryConfig)(_config_2);\n const _config_4 = (0, config_resolver_1.resolveRegionConfig)(_config_3);\n const _config_5 = (0, middleware_host_header_1.resolveHostHeaderConfig)(_config_4);\n const _config_6 = (0, middleware_endpoint_1.resolveEndpointConfig)(_config_5);\n const _config_7 = (0, httpAuthSchemeProvider_1.resolveHttpAuthSchemeConfig)(_config_6);\n const _config_8 = (0, runtimeExtensions_1.resolveRuntimeExtensions)(_config_7, configuration?.extensions || []);\n super(_config_8);\n this.config = _config_8;\n this.middlewareStack.use((0, middleware_user_agent_1.getUserAgentPlugin)(this.config));\n this.middlewareStack.use((0, middleware_retry_1.getRetryPlugin)(this.config));\n this.middlewareStack.use((0, middleware_content_length_1.getContentLengthPlugin)(this.config));\n this.middlewareStack.use((0, middleware_host_header_1.getHostHeaderPlugin)(this.config));\n this.middlewareStack.use((0, middleware_logger_1.getLoggerPlugin)(this.config));\n this.middlewareStack.use((0, middleware_recursion_detection_1.getRecursionDetectionPlugin)(this.config));\n this.middlewareStack.use((0, core_1.getHttpAuthSchemeEndpointRuleSetPlugin)(this.config, {\n httpAuthSchemeParametersProvider: httpAuthSchemeProvider_1.defaultSTSHttpAuthSchemeParametersProvider,\n identityProviderConfigProvider: async (config) => new core_1.DefaultIdentityProviderConfig({\n \"aws.auth#sigv4\": config.credentials,\n }),\n }));\n this.middlewareStack.use((0, core_1.getHttpSigningPlugin)(this.config));\n }\n destroy() {\n super.destroy();\n }\n}\nexports.STSClient = STSClient;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.resolveHttpAuthRuntimeConfig = exports.getHttpAuthExtensionConfiguration = void 0;\nconst getHttpAuthExtensionConfiguration = (runtimeConfig) => {\n const _httpAuthSchemes = runtimeConfig.httpAuthSchemes;\n let _httpAuthSchemeProvider = runtimeConfig.httpAuthSchemeProvider;\n let _credentials = runtimeConfig.credentials;\n return {\n setHttpAuthScheme(httpAuthScheme) {\n const index = _httpAuthSchemes.findIndex((scheme) => scheme.schemeId === httpAuthScheme.schemeId);\n if (index === -1) {\n _httpAuthSchemes.push(httpAuthScheme);\n }\n else {\n _httpAuthSchemes.splice(index, 1, httpAuthScheme);\n }\n },\n httpAuthSchemes() {\n return _httpAuthSchemes;\n },\n setHttpAuthSchemeProvider(httpAuthSchemeProvider) {\n _httpAuthSchemeProvider = httpAuthSchemeProvider;\n },\n httpAuthSchemeProvider() {\n return _httpAuthSchemeProvider;\n },\n setCredentials(credentials) {\n _credentials = credentials;\n },\n credentials() {\n return _credentials;\n },\n };\n};\nexports.getHttpAuthExtensionConfiguration = getHttpAuthExtensionConfiguration;\nconst resolveHttpAuthRuntimeConfig = (config) => {\n return {\n httpAuthSchemes: config.httpAuthSchemes(),\n httpAuthSchemeProvider: config.httpAuthSchemeProvider(),\n credentials: config.credentials(),\n };\n};\nexports.resolveHttpAuthRuntimeConfig = resolveHttpAuthRuntimeConfig;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.resolveHttpAuthSchemeConfig = exports.resolveStsAuthConfig = exports.defaultSTSHttpAuthSchemeProvider = exports.defaultSTSHttpAuthSchemeParametersProvider = void 0;\nconst core_1 = require(\"@aws-sdk/core\");\nconst util_middleware_1 = require(\"@smithy/util-middleware\");\nconst STSClient_1 = require(\"../STSClient\");\nconst defaultSTSHttpAuthSchemeParametersProvider = async (config, context, input) => {\n return {\n operation: (0, util_middleware_1.getSmithyContext)(context).operation,\n region: (await (0, util_middleware_1.normalizeProvider)(config.region)()) ||\n (() => {\n throw new Error(\"expected `region` to be configured for `aws.auth#sigv4`\");\n })(),\n };\n};\nexports.defaultSTSHttpAuthSchemeParametersProvider = defaultSTSHttpAuthSchemeParametersProvider;\nfunction createAwsAuthSigv4HttpAuthOption(authParameters) {\n return {\n schemeId: \"aws.auth#sigv4\",\n signingProperties: {\n name: \"sts\",\n region: authParameters.region,\n },\n propertiesExtractor: (config, context) => ({\n signingProperties: {\n config,\n context,\n },\n }),\n };\n}\nfunction createSmithyApiNoAuthHttpAuthOption(authParameters) {\n return {\n schemeId: \"smithy.api#noAuth\",\n };\n}\nconst defaultSTSHttpAuthSchemeProvider = (authParameters) => {\n const options = [];\n switch (authParameters.operation) {\n case \"AssumeRoleWithSAML\": {\n options.push(createSmithyApiNoAuthHttpAuthOption(authParameters));\n break;\n }\n case \"AssumeRoleWithWebIdentity\": {\n options.push(createSmithyApiNoAuthHttpAuthOption(authParameters));\n break;\n }\n default: {\n options.push(createAwsAuthSigv4HttpAuthOption(authParameters));\n }\n }\n return options;\n};\nexports.defaultSTSHttpAuthSchemeProvider = defaultSTSHttpAuthSchemeProvider;\nconst resolveStsAuthConfig = (input) => ({\n ...input,\n stsClientCtor: STSClient_1.STSClient,\n});\nexports.resolveStsAuthConfig = resolveStsAuthConfig;\nconst resolveHttpAuthSchemeConfig = (config) => {\n const config_0 = (0, exports.resolveStsAuthConfig)(config);\n const config_1 = (0, core_1.resolveAwsSdkSigV4Config)(config_0);\n return {\n ...config_1,\n };\n};\nexports.resolveHttpAuthSchemeConfig = resolveHttpAuthSchemeConfig;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.commonParams = exports.resolveClientEndpointParameters = void 0;\nconst resolveClientEndpointParameters = (options) => {\n return {\n ...options,\n useDualstackEndpoint: options.useDualstackEndpoint ?? false,\n useFipsEndpoint: options.useFipsEndpoint ?? false,\n useGlobalEndpoint: options.useGlobalEndpoint ?? false,\n defaultSigningName: \"sts\",\n };\n};\nexports.resolveClientEndpointParameters = resolveClientEndpointParameters;\nexports.commonParams = {\n UseGlobalEndpoint: { type: \"builtInParams\", name: \"useGlobalEndpoint\" },\n UseFIPS: { type: \"builtInParams\", name: \"useFipsEndpoint\" },\n Endpoint: { type: \"builtInParams\", name: \"endpoint\" },\n Region: { type: \"builtInParams\", name: \"region\" },\n UseDualStack: { type: \"builtInParams\", name: \"useDualstackEndpoint\" },\n};\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.defaultEndpointResolver = void 0;\nconst util_endpoints_1 = require(\"@aws-sdk/util-endpoints\");\nconst util_endpoints_2 = require(\"@smithy/util-endpoints\");\nconst ruleset_1 = require(\"./ruleset\");\nconst cache = new util_endpoints_2.EndpointCache({\n size: 50,\n params: [\"Endpoint\", \"Region\", \"UseDualStack\", \"UseFIPS\", \"UseGlobalEndpoint\"],\n});\nconst defaultEndpointResolver = (endpointParams, context = {}) => {\n return cache.get(endpointParams, () => (0, util_endpoints_2.resolveEndpoint)(ruleset_1.ruleSet, {\n endpointParams: endpointParams,\n logger: context.logger,\n }));\n};\nexports.defaultEndpointResolver = defaultEndpointResolver;\nutil_endpoints_2.customEndpointFunctions.aws = util_endpoints_1.awsEndpointFunctions;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ruleSet = void 0;\nconst F = \"required\", G = \"type\", H = \"fn\", I = \"argv\", J = \"ref\";\nconst a = false, b = true, c = \"booleanEquals\", d = \"stringEquals\", e = \"sigv4\", f = \"sts\", g = \"us-east-1\", h = \"endpoint\", i = \"https://sts.{Region}.{PartitionResult#dnsSuffix}\", j = \"tree\", k = \"error\", l = \"getAttr\", m = { [F]: false, [G]: \"String\" }, n = { [F]: true, \"default\": false, [G]: \"Boolean\" }, o = { [J]: \"Endpoint\" }, p = { [H]: \"isSet\", [I]: [{ [J]: \"Region\" }] }, q = { [J]: \"Region\" }, r = { [H]: \"aws.partition\", [I]: [q], \"assign\": \"PartitionResult\" }, s = { [J]: \"UseFIPS\" }, t = { [J]: \"UseDualStack\" }, u = { \"url\": \"https://sts.amazonaws.com\", \"properties\": { \"authSchemes\": [{ \"name\": e, \"signingName\": f, \"signingRegion\": g }] }, \"headers\": {} }, v = {}, w = { \"conditions\": [{ [H]: d, [I]: [q, \"aws-global\"] }], [h]: u, [G]: h }, x = { [H]: c, [I]: [s, true] }, y = { [H]: c, [I]: [t, true] }, z = { [H]: l, [I]: [{ [J]: \"PartitionResult\" }, \"supportsFIPS\"] }, A = { [J]: \"PartitionResult\" }, B = { [H]: c, [I]: [true, { [H]: l, [I]: [A, \"supportsDualStack\"] }] }, C = [{ [H]: \"isSet\", [I]: [o] }], D = [x], E = [y];\nconst _data = { version: \"1.0\", parameters: { Region: m, UseDualStack: n, UseFIPS: n, Endpoint: m, UseGlobalEndpoint: n }, rules: [{ conditions: [{ [H]: c, [I]: [{ [J]: \"UseGlobalEndpoint\" }, b] }, { [H]: \"not\", [I]: C }, p, r, { [H]: c, [I]: [s, a] }, { [H]: c, [I]: [t, a] }], rules: [{ conditions: [{ [H]: d, [I]: [q, \"ap-northeast-1\"] }], endpoint: u, [G]: h }, { conditions: [{ [H]: d, [I]: [q, \"ap-south-1\"] }], endpoint: u, [G]: h }, { conditions: [{ [H]: d, [I]: [q, \"ap-southeast-1\"] }], endpoint: u, [G]: h }, { conditions: [{ [H]: d, [I]: [q, \"ap-southeast-2\"] }], endpoint: u, [G]: h }, w, { conditions: [{ [H]: d, [I]: [q, \"ca-central-1\"] }], endpoint: u, [G]: h }, { conditions: [{ [H]: d, [I]: [q, \"eu-central-1\"] }], endpoint: u, [G]: h }, { conditions: [{ [H]: d, [I]: [q, \"eu-north-1\"] }], endpoint: u, [G]: h }, { conditions: [{ [H]: d, [I]: [q, \"eu-west-1\"] }], endpoint: u, [G]: h }, { conditions: [{ [H]: d, [I]: [q, \"eu-west-2\"] }], endpoint: u, [G]: h }, { conditions: [{ [H]: d, [I]: [q, \"eu-west-3\"] }], endpoint: u, [G]: h }, { conditions: [{ [H]: d, [I]: [q, \"sa-east-1\"] }], endpoint: u, [G]: h }, { conditions: [{ [H]: d, [I]: [q, g] }], endpoint: u, [G]: h }, { conditions: [{ [H]: d, [I]: [q, \"us-east-2\"] }], endpoint: u, [G]: h }, { conditions: [{ [H]: d, [I]: [q, \"us-west-1\"] }], endpoint: u, [G]: h }, { conditions: [{ [H]: d, [I]: [q, \"us-west-2\"] }], endpoint: u, [G]: h }, { endpoint: { url: i, properties: { authSchemes: [{ name: e, signingName: f, signingRegion: \"{Region}\" }] }, headers: v }, [G]: h }], [G]: j }, { conditions: C, rules: [{ conditions: D, error: \"Invalid Configuration: FIPS and custom endpoint are not supported\", [G]: k }, { conditions: E, error: \"Invalid Configuration: Dualstack and custom endpoint are not supported\", [G]: k }, { endpoint: { url: o, properties: v, headers: v }, [G]: h }], [G]: j }, { conditions: [p], rules: [{ conditions: [r], rules: [{ conditions: [x, y], rules: [{ conditions: [{ [H]: c, [I]: [b, z] }, B], rules: [{ endpoint: { url: \"https://sts-fips.{Region}.{PartitionResult#dualStackDnsSuffix}\", properties: v, headers: v }, [G]: h }], [G]: j }, { error: \"FIPS and DualStack are enabled, but this partition does not support one or both\", [G]: k }], [G]: j }, { conditions: D, rules: [{ conditions: [{ [H]: c, [I]: [z, b] }], rules: [{ conditions: [{ [H]: d, [I]: [{ [H]: l, [I]: [A, \"name\"] }, \"aws-us-gov\"] }], endpoint: { url: \"https://sts.{Region}.amazonaws.com\", properties: v, headers: v }, [G]: h }, { endpoint: { url: \"https://sts-fips.{Region}.{PartitionResult#dnsSuffix}\", properties: v, headers: v }, [G]: h }], [G]: j }, { error: \"FIPS is enabled but this partition does not support FIPS\", [G]: k }], [G]: j }, { conditions: E, rules: [{ conditions: [B], rules: [{ endpoint: { url: \"https://sts.{Region}.{PartitionResult#dualStackDnsSuffix}\", properties: v, headers: v }, [G]: h }], [G]: j }, { error: \"DualStack is enabled but this partition does not support DualStack\", [G]: k }], [G]: j }, w, { endpoint: { url: i, properties: v, headers: v }, [G]: h }], [G]: j }], [G]: j }, { error: \"Invalid Configuration: Missing Region\", [G]: k }] };\nexports.ruleSet = _data;\n","\"use strict\";\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, \"default\"), secondTarget && __copyProps(secondTarget, mod, \"default\"));\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/index.ts\nvar src_exports = {};\n__export(src_exports, {\n AssumeRoleCommand: () => AssumeRoleCommand,\n AssumeRoleResponseFilterSensitiveLog: () => AssumeRoleResponseFilterSensitiveLog,\n AssumeRoleWithSAMLCommand: () => AssumeRoleWithSAMLCommand,\n AssumeRoleWithSAMLRequestFilterSensitiveLog: () => AssumeRoleWithSAMLRequestFilterSensitiveLog,\n AssumeRoleWithSAMLResponseFilterSensitiveLog: () => AssumeRoleWithSAMLResponseFilterSensitiveLog,\n AssumeRoleWithWebIdentityCommand: () => AssumeRoleWithWebIdentityCommand,\n AssumeRoleWithWebIdentityRequestFilterSensitiveLog: () => AssumeRoleWithWebIdentityRequestFilterSensitiveLog,\n AssumeRoleWithWebIdentityResponseFilterSensitiveLog: () => AssumeRoleWithWebIdentityResponseFilterSensitiveLog,\n ClientInputEndpointParameters: () => import_EndpointParameters9.ClientInputEndpointParameters,\n CredentialsFilterSensitiveLog: () => CredentialsFilterSensitiveLog,\n DecodeAuthorizationMessageCommand: () => DecodeAuthorizationMessageCommand,\n ExpiredTokenException: () => ExpiredTokenException,\n GetAccessKeyInfoCommand: () => GetAccessKeyInfoCommand,\n GetCallerIdentityCommand: () => GetCallerIdentityCommand,\n GetFederationTokenCommand: () => GetFederationTokenCommand,\n GetFederationTokenResponseFilterSensitiveLog: () => GetFederationTokenResponseFilterSensitiveLog,\n GetSessionTokenCommand: () => GetSessionTokenCommand,\n GetSessionTokenResponseFilterSensitiveLog: () => GetSessionTokenResponseFilterSensitiveLog,\n IDPCommunicationErrorException: () => IDPCommunicationErrorException,\n IDPRejectedClaimException: () => IDPRejectedClaimException,\n InvalidAuthorizationMessageException: () => InvalidAuthorizationMessageException,\n InvalidIdentityTokenException: () => InvalidIdentityTokenException,\n MalformedPolicyDocumentException: () => MalformedPolicyDocumentException,\n PackedPolicyTooLargeException: () => PackedPolicyTooLargeException,\n RegionDisabledException: () => RegionDisabledException,\n STS: () => STS,\n STSServiceException: () => STSServiceException,\n decorateDefaultCredentialProvider: () => decorateDefaultCredentialProvider,\n getDefaultRoleAssumer: () => getDefaultRoleAssumer2,\n getDefaultRoleAssumerWithWebIdentity: () => getDefaultRoleAssumerWithWebIdentity2\n});\nmodule.exports = __toCommonJS(src_exports);\n__reExport(src_exports, require(\"././STSClient\"), module.exports);\n\n// src/STS.ts\n\n\n// src/commands/AssumeRoleCommand.ts\nvar import_middleware_endpoint = require(\"@smithy/middleware-endpoint\");\nvar import_middleware_serde = require(\"@smithy/middleware-serde\");\n\nvar import_EndpointParameters = require(\"./endpoint/EndpointParameters\");\n\n// src/models/models_0.ts\n\n\n// src/models/STSServiceException.ts\nvar import_smithy_client = require(\"@smithy/smithy-client\");\nvar _STSServiceException = class _STSServiceException extends import_smithy_client.ServiceException {\n /**\n * @internal\n */\n constructor(options) {\n super(options);\n Object.setPrototypeOf(this, _STSServiceException.prototype);\n }\n};\n__name(_STSServiceException, \"STSServiceException\");\nvar STSServiceException = _STSServiceException;\n\n// src/models/models_0.ts\nvar _ExpiredTokenException = class _ExpiredTokenException extends STSServiceException {\n /**\n * @internal\n */\n constructor(opts) {\n super({\n name: \"ExpiredTokenException\",\n $fault: \"client\",\n ...opts\n });\n this.name = \"ExpiredTokenException\";\n this.$fault = \"client\";\n Object.setPrototypeOf(this, _ExpiredTokenException.prototype);\n }\n};\n__name(_ExpiredTokenException, \"ExpiredTokenException\");\nvar ExpiredTokenException = _ExpiredTokenException;\nvar _MalformedPolicyDocumentException = class _MalformedPolicyDocumentException extends STSServiceException {\n /**\n * @internal\n */\n constructor(opts) {\n super({\n name: \"MalformedPolicyDocumentException\",\n $fault: \"client\",\n ...opts\n });\n this.name = \"MalformedPolicyDocumentException\";\n this.$fault = \"client\";\n Object.setPrototypeOf(this, _MalformedPolicyDocumentException.prototype);\n }\n};\n__name(_MalformedPolicyDocumentException, \"MalformedPolicyDocumentException\");\nvar MalformedPolicyDocumentException = _MalformedPolicyDocumentException;\nvar _PackedPolicyTooLargeException = class _PackedPolicyTooLargeException extends STSServiceException {\n /**\n * @internal\n */\n constructor(opts) {\n super({\n name: \"PackedPolicyTooLargeException\",\n $fault: \"client\",\n ...opts\n });\n this.name = \"PackedPolicyTooLargeException\";\n this.$fault = \"client\";\n Object.setPrototypeOf(this, _PackedPolicyTooLargeException.prototype);\n }\n};\n__name(_PackedPolicyTooLargeException, \"PackedPolicyTooLargeException\");\nvar PackedPolicyTooLargeException = _PackedPolicyTooLargeException;\nvar _RegionDisabledException = class _RegionDisabledException extends STSServiceException {\n /**\n * @internal\n */\n constructor(opts) {\n super({\n name: \"RegionDisabledException\",\n $fault: \"client\",\n ...opts\n });\n this.name = \"RegionDisabledException\";\n this.$fault = \"client\";\n Object.setPrototypeOf(this, _RegionDisabledException.prototype);\n }\n};\n__name(_RegionDisabledException, \"RegionDisabledException\");\nvar RegionDisabledException = _RegionDisabledException;\nvar _IDPRejectedClaimException = class _IDPRejectedClaimException extends STSServiceException {\n /**\n * @internal\n */\n constructor(opts) {\n super({\n name: \"IDPRejectedClaimException\",\n $fault: \"client\",\n ...opts\n });\n this.name = \"IDPRejectedClaimException\";\n this.$fault = \"client\";\n Object.setPrototypeOf(this, _IDPRejectedClaimException.prototype);\n }\n};\n__name(_IDPRejectedClaimException, \"IDPRejectedClaimException\");\nvar IDPRejectedClaimException = _IDPRejectedClaimException;\nvar _InvalidIdentityTokenException = class _InvalidIdentityTokenException extends STSServiceException {\n /**\n * @internal\n */\n constructor(opts) {\n super({\n name: \"InvalidIdentityTokenException\",\n $fault: \"client\",\n ...opts\n });\n this.name = \"InvalidIdentityTokenException\";\n this.$fault = \"client\";\n Object.setPrototypeOf(this, _InvalidIdentityTokenException.prototype);\n }\n};\n__name(_InvalidIdentityTokenException, \"InvalidIdentityTokenException\");\nvar InvalidIdentityTokenException = _InvalidIdentityTokenException;\nvar _IDPCommunicationErrorException = class _IDPCommunicationErrorException extends STSServiceException {\n /**\n * @internal\n */\n constructor(opts) {\n super({\n name: \"IDPCommunicationErrorException\",\n $fault: \"client\",\n ...opts\n });\n this.name = \"IDPCommunicationErrorException\";\n this.$fault = \"client\";\n Object.setPrototypeOf(this, _IDPCommunicationErrorException.prototype);\n }\n};\n__name(_IDPCommunicationErrorException, \"IDPCommunicationErrorException\");\nvar IDPCommunicationErrorException = _IDPCommunicationErrorException;\nvar _InvalidAuthorizationMessageException = class _InvalidAuthorizationMessageException extends STSServiceException {\n /**\n * @internal\n */\n constructor(opts) {\n super({\n name: \"InvalidAuthorizationMessageException\",\n $fault: \"client\",\n ...opts\n });\n this.name = \"InvalidAuthorizationMessageException\";\n this.$fault = \"client\";\n Object.setPrototypeOf(this, _InvalidAuthorizationMessageException.prototype);\n }\n};\n__name(_InvalidAuthorizationMessageException, \"InvalidAuthorizationMessageException\");\nvar InvalidAuthorizationMessageException = _InvalidAuthorizationMessageException;\nvar CredentialsFilterSensitiveLog = /* @__PURE__ */ __name((obj) => ({\n ...obj,\n ...obj.SecretAccessKey && { SecretAccessKey: import_smithy_client.SENSITIVE_STRING }\n}), \"CredentialsFilterSensitiveLog\");\nvar AssumeRoleResponseFilterSensitiveLog = /* @__PURE__ */ __name((obj) => ({\n ...obj,\n ...obj.Credentials && { Credentials: CredentialsFilterSensitiveLog(obj.Credentials) }\n}), \"AssumeRoleResponseFilterSensitiveLog\");\nvar AssumeRoleWithSAMLRequestFilterSensitiveLog = /* @__PURE__ */ __name((obj) => ({\n ...obj,\n ...obj.SAMLAssertion && { SAMLAssertion: import_smithy_client.SENSITIVE_STRING }\n}), \"AssumeRoleWithSAMLRequestFilterSensitiveLog\");\nvar AssumeRoleWithSAMLResponseFilterSensitiveLog = /* @__PURE__ */ __name((obj) => ({\n ...obj,\n ...obj.Credentials && { Credentials: CredentialsFilterSensitiveLog(obj.Credentials) }\n}), \"AssumeRoleWithSAMLResponseFilterSensitiveLog\");\nvar AssumeRoleWithWebIdentityRequestFilterSensitiveLog = /* @__PURE__ */ __name((obj) => ({\n ...obj,\n ...obj.WebIdentityToken && { WebIdentityToken: import_smithy_client.SENSITIVE_STRING }\n}), \"AssumeRoleWithWebIdentityRequestFilterSensitiveLog\");\nvar AssumeRoleWithWebIdentityResponseFilterSensitiveLog = /* @__PURE__ */ __name((obj) => ({\n ...obj,\n ...obj.Credentials && { Credentials: CredentialsFilterSensitiveLog(obj.Credentials) }\n}), \"AssumeRoleWithWebIdentityResponseFilterSensitiveLog\");\nvar GetFederationTokenResponseFilterSensitiveLog = /* @__PURE__ */ __name((obj) => ({\n ...obj,\n ...obj.Credentials && { Credentials: CredentialsFilterSensitiveLog(obj.Credentials) }\n}), \"GetFederationTokenResponseFilterSensitiveLog\");\nvar GetSessionTokenResponseFilterSensitiveLog = /* @__PURE__ */ __name((obj) => ({\n ...obj,\n ...obj.Credentials && { Credentials: CredentialsFilterSensitiveLog(obj.Credentials) }\n}), \"GetSessionTokenResponseFilterSensitiveLog\");\n\n// src/protocols/Aws_query.ts\nvar import_core = require(\"@aws-sdk/core\");\nvar import_protocol_http = require(\"@smithy/protocol-http\");\n\nvar se_AssumeRoleCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_AssumeRoleRequest(input, context),\n [_A]: _AR,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_AssumeRoleCommand\");\nvar se_AssumeRoleWithSAMLCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_AssumeRoleWithSAMLRequest(input, context),\n [_A]: _ARWSAML,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_AssumeRoleWithSAMLCommand\");\nvar se_AssumeRoleWithWebIdentityCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_AssumeRoleWithWebIdentityRequest(input, context),\n [_A]: _ARWWI,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_AssumeRoleWithWebIdentityCommand\");\nvar se_DecodeAuthorizationMessageCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_DecodeAuthorizationMessageRequest(input, context),\n [_A]: _DAM,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_DecodeAuthorizationMessageCommand\");\nvar se_GetAccessKeyInfoCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_GetAccessKeyInfoRequest(input, context),\n [_A]: _GAKI,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_GetAccessKeyInfoCommand\");\nvar se_GetCallerIdentityCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_GetCallerIdentityRequest(input, context),\n [_A]: _GCI,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_GetCallerIdentityCommand\");\nvar se_GetFederationTokenCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_GetFederationTokenRequest(input, context),\n [_A]: _GFT,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_GetFederationTokenCommand\");\nvar se_GetSessionTokenCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_GetSessionTokenRequest(input, context),\n [_A]: _GST,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_GetSessionTokenCommand\");\nvar de_AssumeRoleCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_AssumeRoleResponse(data.AssumeRoleResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_AssumeRoleCommand\");\nvar de_AssumeRoleWithSAMLCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_AssumeRoleWithSAMLResponse(data.AssumeRoleWithSAMLResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_AssumeRoleWithSAMLCommand\");\nvar de_AssumeRoleWithWebIdentityCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_AssumeRoleWithWebIdentityResponse(data.AssumeRoleWithWebIdentityResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_AssumeRoleWithWebIdentityCommand\");\nvar de_DecodeAuthorizationMessageCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_DecodeAuthorizationMessageResponse(data.DecodeAuthorizationMessageResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_DecodeAuthorizationMessageCommand\");\nvar de_GetAccessKeyInfoCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_GetAccessKeyInfoResponse(data.GetAccessKeyInfoResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_GetAccessKeyInfoCommand\");\nvar de_GetCallerIdentityCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_GetCallerIdentityResponse(data.GetCallerIdentityResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_GetCallerIdentityCommand\");\nvar de_GetFederationTokenCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_GetFederationTokenResponse(data.GetFederationTokenResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_GetFederationTokenCommand\");\nvar de_GetSessionTokenCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_GetSessionTokenResponse(data.GetSessionTokenResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_GetSessionTokenCommand\");\nvar de_CommandError = /* @__PURE__ */ __name(async (output, context) => {\n const parsedOutput = {\n ...output,\n body: await (0, import_core.parseXmlErrorBody)(output.body, context)\n };\n const errorCode = loadQueryErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n case \"ExpiredTokenException\":\n case \"com.amazonaws.sts#ExpiredTokenException\":\n throw await de_ExpiredTokenExceptionRes(parsedOutput, context);\n case \"MalformedPolicyDocument\":\n case \"com.amazonaws.sts#MalformedPolicyDocumentException\":\n throw await de_MalformedPolicyDocumentExceptionRes(parsedOutput, context);\n case \"PackedPolicyTooLarge\":\n case \"com.amazonaws.sts#PackedPolicyTooLargeException\":\n throw await de_PackedPolicyTooLargeExceptionRes(parsedOutput, context);\n case \"RegionDisabledException\":\n case \"com.amazonaws.sts#RegionDisabledException\":\n throw await de_RegionDisabledExceptionRes(parsedOutput, context);\n case \"IDPRejectedClaim\":\n case \"com.amazonaws.sts#IDPRejectedClaimException\":\n throw await de_IDPRejectedClaimExceptionRes(parsedOutput, context);\n case \"InvalidIdentityToken\":\n case \"com.amazonaws.sts#InvalidIdentityTokenException\":\n throw await de_InvalidIdentityTokenExceptionRes(parsedOutput, context);\n case \"IDPCommunicationError\":\n case \"com.amazonaws.sts#IDPCommunicationErrorException\":\n throw await de_IDPCommunicationErrorExceptionRes(parsedOutput, context);\n case \"InvalidAuthorizationMessageException\":\n case \"com.amazonaws.sts#InvalidAuthorizationMessageException\":\n throw await de_InvalidAuthorizationMessageExceptionRes(parsedOutput, context);\n default:\n const parsedBody = parsedOutput.body;\n return throwDefaultError({\n output,\n parsedBody: parsedBody.Error,\n errorCode\n });\n }\n}, \"de_CommandError\");\nvar de_ExpiredTokenExceptionRes = /* @__PURE__ */ __name(async (parsedOutput, context) => {\n const body = parsedOutput.body;\n const deserialized = de_ExpiredTokenException(body.Error, context);\n const exception = new ExpiredTokenException({\n $metadata: deserializeMetadata(parsedOutput),\n ...deserialized\n });\n return (0, import_smithy_client.decorateServiceException)(exception, body);\n}, \"de_ExpiredTokenExceptionRes\");\nvar de_IDPCommunicationErrorExceptionRes = /* @__PURE__ */ __name(async (parsedOutput, context) => {\n const body = parsedOutput.body;\n const deserialized = de_IDPCommunicationErrorException(body.Error, context);\n const exception = new IDPCommunicationErrorException({\n $metadata: deserializeMetadata(parsedOutput),\n ...deserialized\n });\n return (0, import_smithy_client.decorateServiceException)(exception, body);\n}, \"de_IDPCommunicationErrorExceptionRes\");\nvar de_IDPRejectedClaimExceptionRes = /* @__PURE__ */ __name(async (parsedOutput, context) => {\n const body = parsedOutput.body;\n const deserialized = de_IDPRejectedClaimException(body.Error, context);\n const exception = new IDPRejectedClaimException({\n $metadata: deserializeMetadata(parsedOutput),\n ...deserialized\n });\n return (0, import_smithy_client.decorateServiceException)(exception, body);\n}, \"de_IDPRejectedClaimExceptionRes\");\nvar de_InvalidAuthorizationMessageExceptionRes = /* @__PURE__ */ __name(async (parsedOutput, context) => {\n const body = parsedOutput.body;\n const deserialized = de_InvalidAuthorizationMessageException(body.Error, context);\n const exception = new InvalidAuthorizationMessageException({\n $metadata: deserializeMetadata(parsedOutput),\n ...deserialized\n });\n return (0, import_smithy_client.decorateServiceException)(exception, body);\n}, \"de_InvalidAuthorizationMessageExceptionRes\");\nvar de_InvalidIdentityTokenExceptionRes = /* @__PURE__ */ __name(async (parsedOutput, context) => {\n const body = parsedOutput.body;\n const deserialized = de_InvalidIdentityTokenException(body.Error, context);\n const exception = new InvalidIdentityTokenException({\n $metadata: deserializeMetadata(parsedOutput),\n ...deserialized\n });\n return (0, import_smithy_client.decorateServiceException)(exception, body);\n}, \"de_InvalidIdentityTokenExceptionRes\");\nvar de_MalformedPolicyDocumentExceptionRes = /* @__PURE__ */ __name(async (parsedOutput, context) => {\n const body = parsedOutput.body;\n const deserialized = de_MalformedPolicyDocumentException(body.Error, context);\n const exception = new MalformedPolicyDocumentException({\n $metadata: deserializeMetadata(parsedOutput),\n ...deserialized\n });\n return (0, import_smithy_client.decorateServiceException)(exception, body);\n}, \"de_MalformedPolicyDocumentExceptionRes\");\nvar de_PackedPolicyTooLargeExceptionRes = /* @__PURE__ */ __name(async (parsedOutput, context) => {\n const body = parsedOutput.body;\n const deserialized = de_PackedPolicyTooLargeException(body.Error, context);\n const exception = new PackedPolicyTooLargeException({\n $metadata: deserializeMetadata(parsedOutput),\n ...deserialized\n });\n return (0, import_smithy_client.decorateServiceException)(exception, body);\n}, \"de_PackedPolicyTooLargeExceptionRes\");\nvar de_RegionDisabledExceptionRes = /* @__PURE__ */ __name(async (parsedOutput, context) => {\n const body = parsedOutput.body;\n const deserialized = de_RegionDisabledException(body.Error, context);\n const exception = new RegionDisabledException({\n $metadata: deserializeMetadata(parsedOutput),\n ...deserialized\n });\n return (0, import_smithy_client.decorateServiceException)(exception, body);\n}, \"de_RegionDisabledExceptionRes\");\nvar se_AssumeRoleRequest = /* @__PURE__ */ __name((input, context) => {\n var _a2, _b, _c, _d;\n const entries = {};\n if (input[_RA] != null) {\n entries[_RA] = input[_RA];\n }\n if (input[_RSN] != null) {\n entries[_RSN] = input[_RSN];\n }\n if (input[_PA] != null) {\n const memberEntries = se_policyDescriptorListType(input[_PA], context);\n if (((_a2 = input[_PA]) == null ? void 0 : _a2.length) === 0) {\n entries.PolicyArns = [];\n }\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `PolicyArns.${key}`;\n entries[loc] = value;\n });\n }\n if (input[_P] != null) {\n entries[_P] = input[_P];\n }\n if (input[_DS] != null) {\n entries[_DS] = input[_DS];\n }\n if (input[_T] != null) {\n const memberEntries = se_tagListType(input[_T], context);\n if (((_b = input[_T]) == null ? void 0 : _b.length) === 0) {\n entries.Tags = [];\n }\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `Tags.${key}`;\n entries[loc] = value;\n });\n }\n if (input[_TTK] != null) {\n const memberEntries = se_tagKeyListType(input[_TTK], context);\n if (((_c = input[_TTK]) == null ? void 0 : _c.length) === 0) {\n entries.TransitiveTagKeys = [];\n }\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `TransitiveTagKeys.${key}`;\n entries[loc] = value;\n });\n }\n if (input[_EI] != null) {\n entries[_EI] = input[_EI];\n }\n if (input[_SN] != null) {\n entries[_SN] = input[_SN];\n }\n if (input[_TC] != null) {\n entries[_TC] = input[_TC];\n }\n if (input[_SI] != null) {\n entries[_SI] = input[_SI];\n }\n if (input[_PC] != null) {\n const memberEntries = se_ProvidedContextsListType(input[_PC], context);\n if (((_d = input[_PC]) == null ? void 0 : _d.length) === 0) {\n entries.ProvidedContexts = [];\n }\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `ProvidedContexts.${key}`;\n entries[loc] = value;\n });\n }\n return entries;\n}, \"se_AssumeRoleRequest\");\nvar se_AssumeRoleWithSAMLRequest = /* @__PURE__ */ __name((input, context) => {\n var _a2;\n const entries = {};\n if (input[_RA] != null) {\n entries[_RA] = input[_RA];\n }\n if (input[_PAr] != null) {\n entries[_PAr] = input[_PAr];\n }\n if (input[_SAMLA] != null) {\n entries[_SAMLA] = input[_SAMLA];\n }\n if (input[_PA] != null) {\n const memberEntries = se_policyDescriptorListType(input[_PA], context);\n if (((_a2 = input[_PA]) == null ? void 0 : _a2.length) === 0) {\n entries.PolicyArns = [];\n }\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `PolicyArns.${key}`;\n entries[loc] = value;\n });\n }\n if (input[_P] != null) {\n entries[_P] = input[_P];\n }\n if (input[_DS] != null) {\n entries[_DS] = input[_DS];\n }\n return entries;\n}, \"se_AssumeRoleWithSAMLRequest\");\nvar se_AssumeRoleWithWebIdentityRequest = /* @__PURE__ */ __name((input, context) => {\n var _a2;\n const entries = {};\n if (input[_RA] != null) {\n entries[_RA] = input[_RA];\n }\n if (input[_RSN] != null) {\n entries[_RSN] = input[_RSN];\n }\n if (input[_WIT] != null) {\n entries[_WIT] = input[_WIT];\n }\n if (input[_PI] != null) {\n entries[_PI] = input[_PI];\n }\n if (input[_PA] != null) {\n const memberEntries = se_policyDescriptorListType(input[_PA], context);\n if (((_a2 = input[_PA]) == null ? void 0 : _a2.length) === 0) {\n entries.PolicyArns = [];\n }\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `PolicyArns.${key}`;\n entries[loc] = value;\n });\n }\n if (input[_P] != null) {\n entries[_P] = input[_P];\n }\n if (input[_DS] != null) {\n entries[_DS] = input[_DS];\n }\n return entries;\n}, \"se_AssumeRoleWithWebIdentityRequest\");\nvar se_DecodeAuthorizationMessageRequest = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_EM] != null) {\n entries[_EM] = input[_EM];\n }\n return entries;\n}, \"se_DecodeAuthorizationMessageRequest\");\nvar se_GetAccessKeyInfoRequest = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_AKI] != null) {\n entries[_AKI] = input[_AKI];\n }\n return entries;\n}, \"se_GetAccessKeyInfoRequest\");\nvar se_GetCallerIdentityRequest = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n return entries;\n}, \"se_GetCallerIdentityRequest\");\nvar se_GetFederationTokenRequest = /* @__PURE__ */ __name((input, context) => {\n var _a2, _b;\n const entries = {};\n if (input[_N] != null) {\n entries[_N] = input[_N];\n }\n if (input[_P] != null) {\n entries[_P] = input[_P];\n }\n if (input[_PA] != null) {\n const memberEntries = se_policyDescriptorListType(input[_PA], context);\n if (((_a2 = input[_PA]) == null ? void 0 : _a2.length) === 0) {\n entries.PolicyArns = [];\n }\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `PolicyArns.${key}`;\n entries[loc] = value;\n });\n }\n if (input[_DS] != null) {\n entries[_DS] = input[_DS];\n }\n if (input[_T] != null) {\n const memberEntries = se_tagListType(input[_T], context);\n if (((_b = input[_T]) == null ? void 0 : _b.length) === 0) {\n entries.Tags = [];\n }\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `Tags.${key}`;\n entries[loc] = value;\n });\n }\n return entries;\n}, \"se_GetFederationTokenRequest\");\nvar se_GetSessionTokenRequest = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_DS] != null) {\n entries[_DS] = input[_DS];\n }\n if (input[_SN] != null) {\n entries[_SN] = input[_SN];\n }\n if (input[_TC] != null) {\n entries[_TC] = input[_TC];\n }\n return entries;\n}, \"se_GetSessionTokenRequest\");\nvar se_policyDescriptorListType = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n let counter = 1;\n for (const entry of input) {\n if (entry === null) {\n continue;\n }\n const memberEntries = se_PolicyDescriptorType(entry, context);\n Object.entries(memberEntries).forEach(([key, value]) => {\n entries[`member.${counter}.${key}`] = value;\n });\n counter++;\n }\n return entries;\n}, \"se_policyDescriptorListType\");\nvar se_PolicyDescriptorType = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_a] != null) {\n entries[_a] = input[_a];\n }\n return entries;\n}, \"se_PolicyDescriptorType\");\nvar se_ProvidedContext = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_PAro] != null) {\n entries[_PAro] = input[_PAro];\n }\n if (input[_CA] != null) {\n entries[_CA] = input[_CA];\n }\n return entries;\n}, \"se_ProvidedContext\");\nvar se_ProvidedContextsListType = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n let counter = 1;\n for (const entry of input) {\n if (entry === null) {\n continue;\n }\n const memberEntries = se_ProvidedContext(entry, context);\n Object.entries(memberEntries).forEach(([key, value]) => {\n entries[`member.${counter}.${key}`] = value;\n });\n counter++;\n }\n return entries;\n}, \"se_ProvidedContextsListType\");\nvar se_Tag = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_K] != null) {\n entries[_K] = input[_K];\n }\n if (input[_Va] != null) {\n entries[_Va] = input[_Va];\n }\n return entries;\n}, \"se_Tag\");\nvar se_tagKeyListType = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n let counter = 1;\n for (const entry of input) {\n if (entry === null) {\n continue;\n }\n entries[`member.${counter}`] = entry;\n counter++;\n }\n return entries;\n}, \"se_tagKeyListType\");\nvar se_tagListType = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n let counter = 1;\n for (const entry of input) {\n if (entry === null) {\n continue;\n }\n const memberEntries = se_Tag(entry, context);\n Object.entries(memberEntries).forEach(([key, value]) => {\n entries[`member.${counter}.${key}`] = value;\n });\n counter++;\n }\n return entries;\n}, \"se_tagListType\");\nvar de_AssumedRoleUser = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_ARI] != null) {\n contents[_ARI] = (0, import_smithy_client.expectString)(output[_ARI]);\n }\n if (output[_Ar] != null) {\n contents[_Ar] = (0, import_smithy_client.expectString)(output[_Ar]);\n }\n return contents;\n}, \"de_AssumedRoleUser\");\nvar de_AssumeRoleResponse = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_C] != null) {\n contents[_C] = de_Credentials(output[_C], context);\n }\n if (output[_ARU] != null) {\n contents[_ARU] = de_AssumedRoleUser(output[_ARU], context);\n }\n if (output[_PPS] != null) {\n contents[_PPS] = (0, import_smithy_client.strictParseInt32)(output[_PPS]);\n }\n if (output[_SI] != null) {\n contents[_SI] = (0, import_smithy_client.expectString)(output[_SI]);\n }\n return contents;\n}, \"de_AssumeRoleResponse\");\nvar de_AssumeRoleWithSAMLResponse = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_C] != null) {\n contents[_C] = de_Credentials(output[_C], context);\n }\n if (output[_ARU] != null) {\n contents[_ARU] = de_AssumedRoleUser(output[_ARU], context);\n }\n if (output[_PPS] != null) {\n contents[_PPS] = (0, import_smithy_client.strictParseInt32)(output[_PPS]);\n }\n if (output[_S] != null) {\n contents[_S] = (0, import_smithy_client.expectString)(output[_S]);\n }\n if (output[_ST] != null) {\n contents[_ST] = (0, import_smithy_client.expectString)(output[_ST]);\n }\n if (output[_I] != null) {\n contents[_I] = (0, import_smithy_client.expectString)(output[_I]);\n }\n if (output[_Au] != null) {\n contents[_Au] = (0, import_smithy_client.expectString)(output[_Au]);\n }\n if (output[_NQ] != null) {\n contents[_NQ] = (0, import_smithy_client.expectString)(output[_NQ]);\n }\n if (output[_SI] != null) {\n contents[_SI] = (0, import_smithy_client.expectString)(output[_SI]);\n }\n return contents;\n}, \"de_AssumeRoleWithSAMLResponse\");\nvar de_AssumeRoleWithWebIdentityResponse = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_C] != null) {\n contents[_C] = de_Credentials(output[_C], context);\n }\n if (output[_SFWIT] != null) {\n contents[_SFWIT] = (0, import_smithy_client.expectString)(output[_SFWIT]);\n }\n if (output[_ARU] != null) {\n contents[_ARU] = de_AssumedRoleUser(output[_ARU], context);\n }\n if (output[_PPS] != null) {\n contents[_PPS] = (0, import_smithy_client.strictParseInt32)(output[_PPS]);\n }\n if (output[_Pr] != null) {\n contents[_Pr] = (0, import_smithy_client.expectString)(output[_Pr]);\n }\n if (output[_Au] != null) {\n contents[_Au] = (0, import_smithy_client.expectString)(output[_Au]);\n }\n if (output[_SI] != null) {\n contents[_SI] = (0, import_smithy_client.expectString)(output[_SI]);\n }\n return contents;\n}, \"de_AssumeRoleWithWebIdentityResponse\");\nvar de_Credentials = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_AKI] != null) {\n contents[_AKI] = (0, import_smithy_client.expectString)(output[_AKI]);\n }\n if (output[_SAK] != null) {\n contents[_SAK] = (0, import_smithy_client.expectString)(output[_SAK]);\n }\n if (output[_STe] != null) {\n contents[_STe] = (0, import_smithy_client.expectString)(output[_STe]);\n }\n if (output[_E] != null) {\n contents[_E] = (0, import_smithy_client.expectNonNull)((0, import_smithy_client.parseRfc3339DateTimeWithOffset)(output[_E]));\n }\n return contents;\n}, \"de_Credentials\");\nvar de_DecodeAuthorizationMessageResponse = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_DM] != null) {\n contents[_DM] = (0, import_smithy_client.expectString)(output[_DM]);\n }\n return contents;\n}, \"de_DecodeAuthorizationMessageResponse\");\nvar de_ExpiredTokenException = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_m] != null) {\n contents[_m] = (0, import_smithy_client.expectString)(output[_m]);\n }\n return contents;\n}, \"de_ExpiredTokenException\");\nvar de_FederatedUser = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_FUI] != null) {\n contents[_FUI] = (0, import_smithy_client.expectString)(output[_FUI]);\n }\n if (output[_Ar] != null) {\n contents[_Ar] = (0, import_smithy_client.expectString)(output[_Ar]);\n }\n return contents;\n}, \"de_FederatedUser\");\nvar de_GetAccessKeyInfoResponse = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_Ac] != null) {\n contents[_Ac] = (0, import_smithy_client.expectString)(output[_Ac]);\n }\n return contents;\n}, \"de_GetAccessKeyInfoResponse\");\nvar de_GetCallerIdentityResponse = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_UI] != null) {\n contents[_UI] = (0, import_smithy_client.expectString)(output[_UI]);\n }\n if (output[_Ac] != null) {\n contents[_Ac] = (0, import_smithy_client.expectString)(output[_Ac]);\n }\n if (output[_Ar] != null) {\n contents[_Ar] = (0, import_smithy_client.expectString)(output[_Ar]);\n }\n return contents;\n}, \"de_GetCallerIdentityResponse\");\nvar de_GetFederationTokenResponse = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_C] != null) {\n contents[_C] = de_Credentials(output[_C], context);\n }\n if (output[_FU] != null) {\n contents[_FU] = de_FederatedUser(output[_FU], context);\n }\n if (output[_PPS] != null) {\n contents[_PPS] = (0, import_smithy_client.strictParseInt32)(output[_PPS]);\n }\n return contents;\n}, \"de_GetFederationTokenResponse\");\nvar de_GetSessionTokenResponse = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_C] != null) {\n contents[_C] = de_Credentials(output[_C], context);\n }\n return contents;\n}, \"de_GetSessionTokenResponse\");\nvar de_IDPCommunicationErrorException = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_m] != null) {\n contents[_m] = (0, import_smithy_client.expectString)(output[_m]);\n }\n return contents;\n}, \"de_IDPCommunicationErrorException\");\nvar de_IDPRejectedClaimException = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_m] != null) {\n contents[_m] = (0, import_smithy_client.expectString)(output[_m]);\n }\n return contents;\n}, \"de_IDPRejectedClaimException\");\nvar de_InvalidAuthorizationMessageException = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_m] != null) {\n contents[_m] = (0, import_smithy_client.expectString)(output[_m]);\n }\n return contents;\n}, \"de_InvalidAuthorizationMessageException\");\nvar de_InvalidIdentityTokenException = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_m] != null) {\n contents[_m] = (0, import_smithy_client.expectString)(output[_m]);\n }\n return contents;\n}, \"de_InvalidIdentityTokenException\");\nvar de_MalformedPolicyDocumentException = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_m] != null) {\n contents[_m] = (0, import_smithy_client.expectString)(output[_m]);\n }\n return contents;\n}, \"de_MalformedPolicyDocumentException\");\nvar de_PackedPolicyTooLargeException = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_m] != null) {\n contents[_m] = (0, import_smithy_client.expectString)(output[_m]);\n }\n return contents;\n}, \"de_PackedPolicyTooLargeException\");\nvar de_RegionDisabledException = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_m] != null) {\n contents[_m] = (0, import_smithy_client.expectString)(output[_m]);\n }\n return contents;\n}, \"de_RegionDisabledException\");\nvar deserializeMetadata = /* @__PURE__ */ __name((output) => ({\n httpStatusCode: output.statusCode,\n requestId: output.headers[\"x-amzn-requestid\"] ?? output.headers[\"x-amzn-request-id\"] ?? output.headers[\"x-amz-request-id\"],\n extendedRequestId: output.headers[\"x-amz-id-2\"],\n cfId: output.headers[\"x-amz-cf-id\"]\n}), \"deserializeMetadata\");\nvar throwDefaultError = (0, import_smithy_client.withBaseException)(STSServiceException);\nvar buildHttpRpcRequest = /* @__PURE__ */ __name(async (context, headers, path, resolvedHostname, body) => {\n const { hostname, protocol = \"https\", port, path: basePath } = await context.endpoint();\n const contents = {\n protocol,\n hostname,\n port,\n method: \"POST\",\n path: basePath.endsWith(\"/\") ? basePath.slice(0, -1) + path : basePath + path,\n headers\n };\n if (resolvedHostname !== void 0) {\n contents.hostname = resolvedHostname;\n }\n if (body !== void 0) {\n contents.body = body;\n }\n return new import_protocol_http.HttpRequest(contents);\n}, \"buildHttpRpcRequest\");\nvar SHARED_HEADERS = {\n \"content-type\": \"application/x-www-form-urlencoded\"\n};\nvar _ = \"2011-06-15\";\nvar _A = \"Action\";\nvar _AKI = \"AccessKeyId\";\nvar _AR = \"AssumeRole\";\nvar _ARI = \"AssumedRoleId\";\nvar _ARU = \"AssumedRoleUser\";\nvar _ARWSAML = \"AssumeRoleWithSAML\";\nvar _ARWWI = \"AssumeRoleWithWebIdentity\";\nvar _Ac = \"Account\";\nvar _Ar = \"Arn\";\nvar _Au = \"Audience\";\nvar _C = \"Credentials\";\nvar _CA = \"ContextAssertion\";\nvar _DAM = \"DecodeAuthorizationMessage\";\nvar _DM = \"DecodedMessage\";\nvar _DS = \"DurationSeconds\";\nvar _E = \"Expiration\";\nvar _EI = \"ExternalId\";\nvar _EM = \"EncodedMessage\";\nvar _FU = \"FederatedUser\";\nvar _FUI = \"FederatedUserId\";\nvar _GAKI = \"GetAccessKeyInfo\";\nvar _GCI = \"GetCallerIdentity\";\nvar _GFT = \"GetFederationToken\";\nvar _GST = \"GetSessionToken\";\nvar _I = \"Issuer\";\nvar _K = \"Key\";\nvar _N = \"Name\";\nvar _NQ = \"NameQualifier\";\nvar _P = \"Policy\";\nvar _PA = \"PolicyArns\";\nvar _PAr = \"PrincipalArn\";\nvar _PAro = \"ProviderArn\";\nvar _PC = \"ProvidedContexts\";\nvar _PI = \"ProviderId\";\nvar _PPS = \"PackedPolicySize\";\nvar _Pr = \"Provider\";\nvar _RA = \"RoleArn\";\nvar _RSN = \"RoleSessionName\";\nvar _S = \"Subject\";\nvar _SAK = \"SecretAccessKey\";\nvar _SAMLA = \"SAMLAssertion\";\nvar _SFWIT = \"SubjectFromWebIdentityToken\";\nvar _SI = \"SourceIdentity\";\nvar _SN = \"SerialNumber\";\nvar _ST = \"SubjectType\";\nvar _STe = \"SessionToken\";\nvar _T = \"Tags\";\nvar _TC = \"TokenCode\";\nvar _TTK = \"TransitiveTagKeys\";\nvar _UI = \"UserId\";\nvar _V = \"Version\";\nvar _Va = \"Value\";\nvar _WIT = \"WebIdentityToken\";\nvar _a = \"arn\";\nvar _m = \"message\";\nvar buildFormUrlencodedString = /* @__PURE__ */ __name((formEntries) => Object.entries(formEntries).map(([key, value]) => (0, import_smithy_client.extendedEncodeURIComponent)(key) + \"=\" + (0, import_smithy_client.extendedEncodeURIComponent)(value)).join(\"&\"), \"buildFormUrlencodedString\");\nvar loadQueryErrorCode = /* @__PURE__ */ __name((output, data) => {\n var _a2;\n if (((_a2 = data.Error) == null ? void 0 : _a2.Code) !== void 0) {\n return data.Error.Code;\n }\n if (output.statusCode == 404) {\n return \"NotFound\";\n }\n}, \"loadQueryErrorCode\");\n\n// src/commands/AssumeRoleCommand.ts\nvar _AssumeRoleCommand = class _AssumeRoleCommand extends import_smithy_client.Command.classBuilder().ep(import_EndpointParameters.commonParams).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"AWSSecurityTokenServiceV20110615\", \"AssumeRole\", {}).n(\"STSClient\", \"AssumeRoleCommand\").f(void 0, AssumeRoleResponseFilterSensitiveLog).ser(se_AssumeRoleCommand).de(de_AssumeRoleCommand).build() {\n};\n__name(_AssumeRoleCommand, \"AssumeRoleCommand\");\nvar AssumeRoleCommand = _AssumeRoleCommand;\n\n// src/commands/AssumeRoleWithSAMLCommand.ts\n\n\n\nvar import_EndpointParameters2 = require(\"./endpoint/EndpointParameters\");\nvar _AssumeRoleWithSAMLCommand = class _AssumeRoleWithSAMLCommand extends import_smithy_client.Command.classBuilder().ep(import_EndpointParameters2.commonParams).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"AWSSecurityTokenServiceV20110615\", \"AssumeRoleWithSAML\", {}).n(\"STSClient\", \"AssumeRoleWithSAMLCommand\").f(AssumeRoleWithSAMLRequestFilterSensitiveLog, AssumeRoleWithSAMLResponseFilterSensitiveLog).ser(se_AssumeRoleWithSAMLCommand).de(de_AssumeRoleWithSAMLCommand).build() {\n};\n__name(_AssumeRoleWithSAMLCommand, \"AssumeRoleWithSAMLCommand\");\nvar AssumeRoleWithSAMLCommand = _AssumeRoleWithSAMLCommand;\n\n// src/commands/AssumeRoleWithWebIdentityCommand.ts\n\n\n\nvar import_EndpointParameters3 = require(\"./endpoint/EndpointParameters\");\nvar _AssumeRoleWithWebIdentityCommand = class _AssumeRoleWithWebIdentityCommand extends import_smithy_client.Command.classBuilder().ep(import_EndpointParameters3.commonParams).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"AWSSecurityTokenServiceV20110615\", \"AssumeRoleWithWebIdentity\", {}).n(\"STSClient\", \"AssumeRoleWithWebIdentityCommand\").f(AssumeRoleWithWebIdentityRequestFilterSensitiveLog, AssumeRoleWithWebIdentityResponseFilterSensitiveLog).ser(se_AssumeRoleWithWebIdentityCommand).de(de_AssumeRoleWithWebIdentityCommand).build() {\n};\n__name(_AssumeRoleWithWebIdentityCommand, \"AssumeRoleWithWebIdentityCommand\");\nvar AssumeRoleWithWebIdentityCommand = _AssumeRoleWithWebIdentityCommand;\n\n// src/commands/DecodeAuthorizationMessageCommand.ts\n\n\n\nvar import_EndpointParameters4 = require(\"./endpoint/EndpointParameters\");\nvar _DecodeAuthorizationMessageCommand = class _DecodeAuthorizationMessageCommand extends import_smithy_client.Command.classBuilder().ep(import_EndpointParameters4.commonParams).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"AWSSecurityTokenServiceV20110615\", \"DecodeAuthorizationMessage\", {}).n(\"STSClient\", \"DecodeAuthorizationMessageCommand\").f(void 0, void 0).ser(se_DecodeAuthorizationMessageCommand).de(de_DecodeAuthorizationMessageCommand).build() {\n};\n__name(_DecodeAuthorizationMessageCommand, \"DecodeAuthorizationMessageCommand\");\nvar DecodeAuthorizationMessageCommand = _DecodeAuthorizationMessageCommand;\n\n// src/commands/GetAccessKeyInfoCommand.ts\n\n\n\nvar import_EndpointParameters5 = require(\"./endpoint/EndpointParameters\");\nvar _GetAccessKeyInfoCommand = class _GetAccessKeyInfoCommand extends import_smithy_client.Command.classBuilder().ep(import_EndpointParameters5.commonParams).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"AWSSecurityTokenServiceV20110615\", \"GetAccessKeyInfo\", {}).n(\"STSClient\", \"GetAccessKeyInfoCommand\").f(void 0, void 0).ser(se_GetAccessKeyInfoCommand).de(de_GetAccessKeyInfoCommand).build() {\n};\n__name(_GetAccessKeyInfoCommand, \"GetAccessKeyInfoCommand\");\nvar GetAccessKeyInfoCommand = _GetAccessKeyInfoCommand;\n\n// src/commands/GetCallerIdentityCommand.ts\n\n\n\nvar import_EndpointParameters6 = require(\"./endpoint/EndpointParameters\");\nvar _GetCallerIdentityCommand = class _GetCallerIdentityCommand extends import_smithy_client.Command.classBuilder().ep(import_EndpointParameters6.commonParams).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"AWSSecurityTokenServiceV20110615\", \"GetCallerIdentity\", {}).n(\"STSClient\", \"GetCallerIdentityCommand\").f(void 0, void 0).ser(se_GetCallerIdentityCommand).de(de_GetCallerIdentityCommand).build() {\n};\n__name(_GetCallerIdentityCommand, \"GetCallerIdentityCommand\");\nvar GetCallerIdentityCommand = _GetCallerIdentityCommand;\n\n// src/commands/GetFederationTokenCommand.ts\n\n\n\nvar import_EndpointParameters7 = require(\"./endpoint/EndpointParameters\");\nvar _GetFederationTokenCommand = class _GetFederationTokenCommand extends import_smithy_client.Command.classBuilder().ep(import_EndpointParameters7.commonParams).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"AWSSecurityTokenServiceV20110615\", \"GetFederationToken\", {}).n(\"STSClient\", \"GetFederationTokenCommand\").f(void 0, GetFederationTokenResponseFilterSensitiveLog).ser(se_GetFederationTokenCommand).de(de_GetFederationTokenCommand).build() {\n};\n__name(_GetFederationTokenCommand, \"GetFederationTokenCommand\");\nvar GetFederationTokenCommand = _GetFederationTokenCommand;\n\n// src/commands/GetSessionTokenCommand.ts\n\n\n\nvar import_EndpointParameters8 = require(\"./endpoint/EndpointParameters\");\nvar _GetSessionTokenCommand = class _GetSessionTokenCommand extends import_smithy_client.Command.classBuilder().ep(import_EndpointParameters8.commonParams).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"AWSSecurityTokenServiceV20110615\", \"GetSessionToken\", {}).n(\"STSClient\", \"GetSessionTokenCommand\").f(void 0, GetSessionTokenResponseFilterSensitiveLog).ser(se_GetSessionTokenCommand).de(de_GetSessionTokenCommand).build() {\n};\n__name(_GetSessionTokenCommand, \"GetSessionTokenCommand\");\nvar GetSessionTokenCommand = _GetSessionTokenCommand;\n\n// src/STS.ts\nvar import_STSClient = require(\"././STSClient\");\nvar commands = {\n AssumeRoleCommand,\n AssumeRoleWithSAMLCommand,\n AssumeRoleWithWebIdentityCommand,\n DecodeAuthorizationMessageCommand,\n GetAccessKeyInfoCommand,\n GetCallerIdentityCommand,\n GetFederationTokenCommand,\n GetSessionTokenCommand\n};\nvar _STS = class _STS extends import_STSClient.STSClient {\n};\n__name(_STS, \"STS\");\nvar STS = _STS;\n(0, import_smithy_client.createAggregatedClient)(commands, STS);\n\n// src/index.ts\nvar import_EndpointParameters9 = require(\"./endpoint/EndpointParameters\");\n\n// src/defaultStsRoleAssumers.ts\nvar ASSUME_ROLE_DEFAULT_REGION = \"us-east-1\";\nvar getAccountIdFromAssumedRoleUser = /* @__PURE__ */ __name((assumedRoleUser) => {\n if (typeof (assumedRoleUser == null ? void 0 : assumedRoleUser.Arn) === \"string\") {\n const arnComponents = assumedRoleUser.Arn.split(\":\");\n if (arnComponents.length > 4 && arnComponents[4] !== \"\") {\n return arnComponents[4];\n }\n }\n return void 0;\n}, \"getAccountIdFromAssumedRoleUser\");\nvar resolveRegion = /* @__PURE__ */ __name(async (_region, _parentRegion, credentialProviderLogger) => {\n var _a2;\n const region = typeof _region === \"function\" ? await _region() : _region;\n const parentRegion = typeof _parentRegion === \"function\" ? await _parentRegion() : _parentRegion;\n (_a2 = credentialProviderLogger == null ? void 0 : credentialProviderLogger.debug) == null ? void 0 : _a2.call(\n credentialProviderLogger,\n \"@aws-sdk/client-sts::resolveRegion\",\n \"accepting first of:\",\n `${region} (provider)`,\n `${parentRegion} (parent client)`,\n `${ASSUME_ROLE_DEFAULT_REGION} (STS default)`\n );\n return region ?? parentRegion ?? ASSUME_ROLE_DEFAULT_REGION;\n}, \"resolveRegion\");\nvar getDefaultRoleAssumer = /* @__PURE__ */ __name((stsOptions, stsClientCtor) => {\n let stsClient;\n let closureSourceCreds;\n return async (sourceCreds, params) => {\n var _a2, _b, _c;\n closureSourceCreds = sourceCreds;\n if (!stsClient) {\n const {\n logger = (_a2 = stsOptions == null ? void 0 : stsOptions.parentClientConfig) == null ? void 0 : _a2.logger,\n region,\n requestHandler = (_b = stsOptions == null ? void 0 : stsOptions.parentClientConfig) == null ? void 0 : _b.requestHandler,\n credentialProviderLogger\n } = stsOptions;\n const resolvedRegion = await resolveRegion(\n region,\n (_c = stsOptions == null ? void 0 : stsOptions.parentClientConfig) == null ? void 0 : _c.region,\n credentialProviderLogger\n );\n const isCompatibleRequestHandler = !isH2(requestHandler);\n stsClient = new stsClientCtor({\n // A hack to make sts client uses the credential in current closure.\n credentialDefaultProvider: () => async () => closureSourceCreds,\n region: resolvedRegion,\n requestHandler: isCompatibleRequestHandler ? requestHandler : void 0,\n logger\n });\n }\n const { Credentials: Credentials2, AssumedRoleUser: AssumedRoleUser2 } = await stsClient.send(new AssumeRoleCommand(params));\n if (!Credentials2 || !Credentials2.AccessKeyId || !Credentials2.SecretAccessKey) {\n throw new Error(`Invalid response from STS.assumeRole call with role ${params.RoleArn}`);\n }\n const accountId = getAccountIdFromAssumedRoleUser(AssumedRoleUser2);\n return {\n accessKeyId: Credentials2.AccessKeyId,\n secretAccessKey: Credentials2.SecretAccessKey,\n sessionToken: Credentials2.SessionToken,\n expiration: Credentials2.Expiration,\n // TODO(credentialScope): access normally when shape is updated.\n ...Credentials2.CredentialScope && { credentialScope: Credentials2.CredentialScope },\n ...accountId && { accountId }\n };\n };\n}, \"getDefaultRoleAssumer\");\nvar getDefaultRoleAssumerWithWebIdentity = /* @__PURE__ */ __name((stsOptions, stsClientCtor) => {\n let stsClient;\n return async (params) => {\n var _a2, _b, _c;\n if (!stsClient) {\n const {\n logger = (_a2 = stsOptions == null ? void 0 : stsOptions.parentClientConfig) == null ? void 0 : _a2.logger,\n region,\n requestHandler = (_b = stsOptions == null ? void 0 : stsOptions.parentClientConfig) == null ? void 0 : _b.requestHandler,\n credentialProviderLogger\n } = stsOptions;\n const resolvedRegion = await resolveRegion(\n region,\n (_c = stsOptions == null ? void 0 : stsOptions.parentClientConfig) == null ? void 0 : _c.region,\n credentialProviderLogger\n );\n const isCompatibleRequestHandler = !isH2(requestHandler);\n stsClient = new stsClientCtor({\n region: resolvedRegion,\n requestHandler: isCompatibleRequestHandler ? requestHandler : void 0,\n logger\n });\n }\n const { Credentials: Credentials2, AssumedRoleUser: AssumedRoleUser2 } = await stsClient.send(new AssumeRoleWithWebIdentityCommand(params));\n if (!Credentials2 || !Credentials2.AccessKeyId || !Credentials2.SecretAccessKey) {\n throw new Error(`Invalid response from STS.assumeRoleWithWebIdentity call with role ${params.RoleArn}`);\n }\n const accountId = getAccountIdFromAssumedRoleUser(AssumedRoleUser2);\n return {\n accessKeyId: Credentials2.AccessKeyId,\n secretAccessKey: Credentials2.SecretAccessKey,\n sessionToken: Credentials2.SessionToken,\n expiration: Credentials2.Expiration,\n // TODO(credentialScope): access normally when shape is updated.\n ...Credentials2.CredentialScope && { credentialScope: Credentials2.CredentialScope },\n ...accountId && { accountId }\n };\n };\n}, \"getDefaultRoleAssumerWithWebIdentity\");\nvar isH2 = /* @__PURE__ */ __name((requestHandler) => {\n var _a2;\n return ((_a2 = requestHandler == null ? void 0 : requestHandler.metadata) == null ? void 0 : _a2.handlerProtocol) === \"h2\";\n}, \"isH2\");\n\n// src/defaultRoleAssumers.ts\nvar import_STSClient2 = require(\"././STSClient\");\nvar getCustomizableStsClientCtor = /* @__PURE__ */ __name((baseCtor, customizations) => {\n var _a2;\n if (!customizations)\n return baseCtor;\n else\n return _a2 = class extends baseCtor {\n constructor(config) {\n super(config);\n for (const customization of customizations) {\n this.middlewareStack.use(customization);\n }\n }\n }, __name(_a2, \"CustomizableSTSClient\"), _a2;\n}, \"getCustomizableStsClientCtor\");\nvar getDefaultRoleAssumer2 = /* @__PURE__ */ __name((stsOptions = {}, stsPlugins) => getDefaultRoleAssumer(stsOptions, getCustomizableStsClientCtor(import_STSClient2.STSClient, stsPlugins)), \"getDefaultRoleAssumer\");\nvar getDefaultRoleAssumerWithWebIdentity2 = /* @__PURE__ */ __name((stsOptions = {}, stsPlugins) => getDefaultRoleAssumerWithWebIdentity(stsOptions, getCustomizableStsClientCtor(import_STSClient2.STSClient, stsPlugins)), \"getDefaultRoleAssumerWithWebIdentity\");\nvar decorateDefaultCredentialProvider = /* @__PURE__ */ __name((provider) => (input) => provider({\n roleAssumer: getDefaultRoleAssumer2(input),\n roleAssumerWithWebIdentity: getDefaultRoleAssumerWithWebIdentity2(input),\n ...input\n}), \"decorateDefaultCredentialProvider\");\n// Annotate the CommonJS export names for ESM import in node:\n\n0 && (module.exports = {\n STSServiceException,\n __Client,\n STSClient,\n STS,\n $Command,\n AssumeRoleCommand,\n AssumeRoleWithSAMLCommand,\n AssumeRoleWithWebIdentityCommand,\n DecodeAuthorizationMessageCommand,\n GetAccessKeyInfoCommand,\n GetCallerIdentityCommand,\n GetFederationTokenCommand,\n GetSessionTokenCommand,\n ExpiredTokenException,\n MalformedPolicyDocumentException,\n PackedPolicyTooLargeException,\n RegionDisabledException,\n IDPRejectedClaimException,\n InvalidIdentityTokenException,\n IDPCommunicationErrorException,\n InvalidAuthorizationMessageException,\n CredentialsFilterSensitiveLog,\n AssumeRoleResponseFilterSensitiveLog,\n AssumeRoleWithSAMLRequestFilterSensitiveLog,\n AssumeRoleWithSAMLResponseFilterSensitiveLog,\n AssumeRoleWithWebIdentityRequestFilterSensitiveLog,\n AssumeRoleWithWebIdentityResponseFilterSensitiveLog,\n GetFederationTokenResponseFilterSensitiveLog,\n GetSessionTokenResponseFilterSensitiveLog,\n getDefaultRoleAssumer,\n getDefaultRoleAssumerWithWebIdentity,\n decorateDefaultCredentialProvider\n});\n\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getRuntimeConfig = void 0;\nconst tslib_1 = require(\"tslib\");\nconst package_json_1 = tslib_1.__importDefault(require(\"../package.json\"));\nconst core_1 = require(\"@aws-sdk/core\");\nconst credential_provider_node_1 = require(\"@aws-sdk/credential-provider-node\");\nconst util_user_agent_node_1 = require(\"@aws-sdk/util-user-agent-node\");\nconst config_resolver_1 = require(\"@smithy/config-resolver\");\nconst core_2 = require(\"@smithy/core\");\nconst hash_node_1 = require(\"@smithy/hash-node\");\nconst middleware_retry_1 = require(\"@smithy/middleware-retry\");\nconst node_config_provider_1 = require(\"@smithy/node-config-provider\");\nconst node_http_handler_1 = require(\"@smithy/node-http-handler\");\nconst util_body_length_node_1 = require(\"@smithy/util-body-length-node\");\nconst util_retry_1 = require(\"@smithy/util-retry\");\nconst runtimeConfig_shared_1 = require(\"./runtimeConfig.shared\");\nconst smithy_client_1 = require(\"@smithy/smithy-client\");\nconst util_defaults_mode_node_1 = require(\"@smithy/util-defaults-mode-node\");\nconst smithy_client_2 = require(\"@smithy/smithy-client\");\nconst getRuntimeConfig = (config) => {\n (0, smithy_client_2.emitWarningIfUnsupportedVersion)(process.version);\n const defaultsMode = (0, util_defaults_mode_node_1.resolveDefaultsModeConfig)(config);\n const defaultConfigProvider = () => defaultsMode().then(smithy_client_1.loadConfigsForDefaultMode);\n const clientSharedValues = (0, runtimeConfig_shared_1.getRuntimeConfig)(config);\n (0, core_1.emitWarningIfUnsupportedVersion)(process.version);\n return {\n ...clientSharedValues,\n ...config,\n runtime: \"node\",\n defaultsMode,\n bodyLengthChecker: config?.bodyLengthChecker ?? util_body_length_node_1.calculateBodyLength,\n credentialDefaultProvider: config?.credentialDefaultProvider ?? credential_provider_node_1.defaultProvider,\n defaultUserAgentProvider: config?.defaultUserAgentProvider ??\n (0, util_user_agent_node_1.defaultUserAgent)({ serviceId: clientSharedValues.serviceId, clientVersion: package_json_1.default.version }),\n httpAuthSchemes: config?.httpAuthSchemes ?? [\n {\n schemeId: \"aws.auth#sigv4\",\n identityProvider: (ipc) => ipc.getIdentityProvider(\"aws.auth#sigv4\") ||\n (async (idProps) => await (0, credential_provider_node_1.defaultProvider)(idProps?.__config || {})()),\n signer: new core_1.AwsSdkSigV4Signer(),\n },\n {\n schemeId: \"smithy.api#noAuth\",\n identityProvider: (ipc) => ipc.getIdentityProvider(\"smithy.api#noAuth\") || (async () => ({})),\n signer: new core_2.NoAuthSigner(),\n },\n ],\n maxAttempts: config?.maxAttempts ?? (0, node_config_provider_1.loadConfig)(middleware_retry_1.NODE_MAX_ATTEMPT_CONFIG_OPTIONS),\n region: config?.region ?? (0, node_config_provider_1.loadConfig)(config_resolver_1.NODE_REGION_CONFIG_OPTIONS, config_resolver_1.NODE_REGION_CONFIG_FILE_OPTIONS),\n requestHandler: node_http_handler_1.NodeHttpHandler.create(config?.requestHandler ?? defaultConfigProvider),\n retryMode: config?.retryMode ??\n (0, node_config_provider_1.loadConfig)({\n ...middleware_retry_1.NODE_RETRY_MODE_CONFIG_OPTIONS,\n default: async () => (await defaultConfigProvider()).retryMode || util_retry_1.DEFAULT_RETRY_MODE,\n }),\n sha256: config?.sha256 ?? hash_node_1.Hash.bind(null, \"sha256\"),\n streamCollector: config?.streamCollector ?? node_http_handler_1.streamCollector,\n useDualstackEndpoint: config?.useDualstackEndpoint ?? (0, node_config_provider_1.loadConfig)(config_resolver_1.NODE_USE_DUALSTACK_ENDPOINT_CONFIG_OPTIONS),\n useFipsEndpoint: config?.useFipsEndpoint ?? (0, node_config_provider_1.loadConfig)(config_resolver_1.NODE_USE_FIPS_ENDPOINT_CONFIG_OPTIONS),\n };\n};\nexports.getRuntimeConfig = getRuntimeConfig;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getRuntimeConfig = void 0;\nconst core_1 = require(\"@aws-sdk/core\");\nconst core_2 = require(\"@smithy/core\");\nconst smithy_client_1 = require(\"@smithy/smithy-client\");\nconst url_parser_1 = require(\"@smithy/url-parser\");\nconst util_base64_1 = require(\"@smithy/util-base64\");\nconst util_utf8_1 = require(\"@smithy/util-utf8\");\nconst httpAuthSchemeProvider_1 = require(\"./auth/httpAuthSchemeProvider\");\nconst endpointResolver_1 = require(\"./endpoint/endpointResolver\");\nconst getRuntimeConfig = (config) => {\n return {\n apiVersion: \"2011-06-15\",\n base64Decoder: config?.base64Decoder ?? util_base64_1.fromBase64,\n base64Encoder: config?.base64Encoder ?? util_base64_1.toBase64,\n disableHostPrefix: config?.disableHostPrefix ?? false,\n endpointProvider: config?.endpointProvider ?? endpointResolver_1.defaultEndpointResolver,\n extensions: config?.extensions ?? [],\n httpAuthSchemeProvider: config?.httpAuthSchemeProvider ?? httpAuthSchemeProvider_1.defaultSTSHttpAuthSchemeProvider,\n httpAuthSchemes: config?.httpAuthSchemes ?? [\n {\n schemeId: \"aws.auth#sigv4\",\n identityProvider: (ipc) => ipc.getIdentityProvider(\"aws.auth#sigv4\"),\n signer: new core_1.AwsSdkSigV4Signer(),\n },\n {\n schemeId: \"smithy.api#noAuth\",\n identityProvider: (ipc) => ipc.getIdentityProvider(\"smithy.api#noAuth\") || (async () => ({})),\n signer: new core_2.NoAuthSigner(),\n },\n ],\n logger: config?.logger ?? new smithy_client_1.NoOpLogger(),\n serviceId: config?.serviceId ?? \"STS\",\n urlParser: config?.urlParser ?? url_parser_1.parseUrl,\n utf8Decoder: config?.utf8Decoder ?? util_utf8_1.fromUtf8,\n utf8Encoder: config?.utf8Encoder ?? util_utf8_1.toUtf8,\n };\n};\nexports.getRuntimeConfig = getRuntimeConfig;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.resolveRuntimeExtensions = void 0;\nconst region_config_resolver_1 = require(\"@aws-sdk/region-config-resolver\");\nconst protocol_http_1 = require(\"@smithy/protocol-http\");\nconst smithy_client_1 = require(\"@smithy/smithy-client\");\nconst httpAuthExtensionConfiguration_1 = require(\"./auth/httpAuthExtensionConfiguration\");\nconst asPartial = (t) => t;\nconst resolveRuntimeExtensions = (runtimeConfig, extensions) => {\n const extensionConfiguration = {\n ...asPartial((0, region_config_resolver_1.getAwsRegionExtensionConfiguration)(runtimeConfig)),\n ...asPartial((0, smithy_client_1.getDefaultExtensionConfiguration)(runtimeConfig)),\n ...asPartial((0, protocol_http_1.getHttpHandlerExtensionConfiguration)(runtimeConfig)),\n ...asPartial((0, httpAuthExtensionConfiguration_1.getHttpAuthExtensionConfiguration)(runtimeConfig)),\n };\n extensions.forEach((extension) => extension.configure(extensionConfiguration));\n return {\n ...runtimeConfig,\n ...(0, region_config_resolver_1.resolveAwsRegionExtensionConfiguration)(extensionConfiguration),\n ...(0, smithy_client_1.resolveDefaultRuntimeConfig)(extensionConfiguration),\n ...(0, protocol_http_1.resolveHttpHandlerRuntimeConfig)(extensionConfiguration),\n ...(0, httpAuthExtensionConfiguration_1.resolveHttpAuthRuntimeConfig)(extensionConfiguration),\n };\n};\nexports.resolveRuntimeExtensions = resolveRuntimeExtensions;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst tslib_1 = require(\"tslib\");\ntslib_1.__exportStar(require(\"./submodules/client/index\"), exports);\ntslib_1.__exportStar(require(\"./submodules/httpAuthSchemes/index\"), exports);\ntslib_1.__exportStar(require(\"./submodules/protocols/index\"), exports);\n","\"use strict\";\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/submodules/client/index.ts\nvar client_exports = {};\n__export(client_exports, {\n emitWarningIfUnsupportedVersion: () => emitWarningIfUnsupportedVersion\n});\nmodule.exports = __toCommonJS(client_exports);\n\n// src/submodules/client/emitWarningIfUnsupportedVersion.ts\nvar warningEmitted = false;\nvar emitWarningIfUnsupportedVersion = /* @__PURE__ */ __name((version) => {\n if (version && !warningEmitted && parseInt(version.substring(1, version.indexOf(\".\"))) < 18) {\n warningEmitted = true;\n process.emitWarning(\n `NodeDeprecationWarning: The AWS SDK for JavaScript (v3) will\nno longer support Node.js 16.x on January 6, 2025.\n\nTo continue receiving updates to AWS services, bug fixes, and security\nupdates please upgrade to a supported Node.js LTS version.\n\nMore information can be found at: https://a.co/74kJMmI`\n );\n }\n}, \"emitWarningIfUnsupportedVersion\");\n// Annotate the CommonJS export names for ESM import in node:\n0 && (module.exports = {\n emitWarningIfUnsupportedVersion\n});\n","\"use strict\";\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/submodules/httpAuthSchemes/index.ts\nvar httpAuthSchemes_exports = {};\n__export(httpAuthSchemes_exports, {\n AWSSDKSigV4Signer: () => AWSSDKSigV4Signer,\n AwsSdkSigV4ASigner: () => AwsSdkSigV4ASigner,\n AwsSdkSigV4Signer: () => AwsSdkSigV4Signer,\n NODE_SIGV4A_CONFIG_OPTIONS: () => NODE_SIGV4A_CONFIG_OPTIONS,\n resolveAWSSDKSigV4Config: () => resolveAWSSDKSigV4Config,\n resolveAwsSdkSigV4AConfig: () => resolveAwsSdkSigV4AConfig,\n resolveAwsSdkSigV4Config: () => resolveAwsSdkSigV4Config,\n validateSigningProperties: () => validateSigningProperties\n});\nmodule.exports = __toCommonJS(httpAuthSchemes_exports);\n\n// src/submodules/httpAuthSchemes/aws_sdk/AwsSdkSigV4Signer.ts\nvar import_protocol_http2 = require(\"@smithy/protocol-http\");\n\n// src/submodules/httpAuthSchemes/utils/getDateHeader.ts\nvar import_protocol_http = require(\"@smithy/protocol-http\");\nvar getDateHeader = /* @__PURE__ */ __name((response) => {\n var _a, _b;\n return import_protocol_http.HttpResponse.isInstance(response) ? ((_a = response.headers) == null ? void 0 : _a.date) ?? ((_b = response.headers) == null ? void 0 : _b.Date) : void 0;\n}, \"getDateHeader\");\n\n// src/submodules/httpAuthSchemes/utils/getSkewCorrectedDate.ts\nvar getSkewCorrectedDate = /* @__PURE__ */ __name((systemClockOffset) => new Date(Date.now() + systemClockOffset), \"getSkewCorrectedDate\");\n\n// src/submodules/httpAuthSchemes/utils/isClockSkewed.ts\nvar isClockSkewed = /* @__PURE__ */ __name((clockTime, systemClockOffset) => Math.abs(getSkewCorrectedDate(systemClockOffset).getTime() - clockTime) >= 3e5, \"isClockSkewed\");\n\n// src/submodules/httpAuthSchemes/utils/getUpdatedSystemClockOffset.ts\nvar getUpdatedSystemClockOffset = /* @__PURE__ */ __name((clockTime, currentSystemClockOffset) => {\n const clockTimeInMs = Date.parse(clockTime);\n if (isClockSkewed(clockTimeInMs, currentSystemClockOffset)) {\n return clockTimeInMs - Date.now();\n }\n return currentSystemClockOffset;\n}, \"getUpdatedSystemClockOffset\");\n\n// src/submodules/httpAuthSchemes/aws_sdk/AwsSdkSigV4Signer.ts\nvar throwSigningPropertyError = /* @__PURE__ */ __name((name, property) => {\n if (!property) {\n throw new Error(`Property \\`${name}\\` is not resolved for AWS SDK SigV4Auth`);\n }\n return property;\n}, \"throwSigningPropertyError\");\nvar validateSigningProperties = /* @__PURE__ */ __name(async (signingProperties) => {\n var _a, _b, _c;\n const context = throwSigningPropertyError(\n \"context\",\n signingProperties.context\n );\n const config = throwSigningPropertyError(\"config\", signingProperties.config);\n const authScheme = (_c = (_b = (_a = context.endpointV2) == null ? void 0 : _a.properties) == null ? void 0 : _b.authSchemes) == null ? void 0 : _c[0];\n const signerFunction = throwSigningPropertyError(\n \"signer\",\n config.signer\n );\n const signer = await signerFunction(authScheme);\n const signingRegion = signingProperties == null ? void 0 : signingProperties.signingRegion;\n const signingRegionSet = signingProperties == null ? void 0 : signingProperties.signingRegionSet;\n const signingName = signingProperties == null ? void 0 : signingProperties.signingName;\n return {\n config,\n signer,\n signingRegion,\n signingRegionSet,\n signingName\n };\n}, \"validateSigningProperties\");\nvar _AwsSdkSigV4Signer = class _AwsSdkSigV4Signer {\n async sign(httpRequest, identity, signingProperties) {\n var _a;\n if (!import_protocol_http2.HttpRequest.isInstance(httpRequest)) {\n throw new Error(\"The request is not an instance of `HttpRequest` and cannot be signed\");\n }\n const validatedProps = await validateSigningProperties(signingProperties);\n const { config, signer } = validatedProps;\n let { signingRegion, signingName } = validatedProps;\n const handlerExecutionContext = signingProperties.context;\n if (((_a = handlerExecutionContext == null ? void 0 : handlerExecutionContext.authSchemes) == null ? void 0 : _a.length) ?? 0 > 1) {\n const [first, second] = handlerExecutionContext.authSchemes;\n if ((first == null ? void 0 : first.name) === \"sigv4a\" && (second == null ? void 0 : second.name) === \"sigv4\") {\n signingRegion = (second == null ? void 0 : second.signingRegion) ?? signingRegion;\n signingName = (second == null ? void 0 : second.signingName) ?? signingName;\n }\n }\n const signedRequest = await signer.sign(httpRequest, {\n signingDate: getSkewCorrectedDate(config.systemClockOffset),\n signingRegion,\n signingService: signingName\n });\n return signedRequest;\n }\n errorHandler(signingProperties) {\n return (error) => {\n const serverTime = error.ServerTime ?? getDateHeader(error.$response);\n if (serverTime) {\n const config = throwSigningPropertyError(\"config\", signingProperties.config);\n const initialSystemClockOffset = config.systemClockOffset;\n config.systemClockOffset = getUpdatedSystemClockOffset(serverTime, config.systemClockOffset);\n const clockSkewCorrected = config.systemClockOffset !== initialSystemClockOffset;\n if (clockSkewCorrected && error.$metadata) {\n error.$metadata.clockSkewCorrected = true;\n }\n }\n throw error;\n };\n }\n successHandler(httpResponse, signingProperties) {\n const dateHeader = getDateHeader(httpResponse);\n if (dateHeader) {\n const config = throwSigningPropertyError(\"config\", signingProperties.config);\n config.systemClockOffset = getUpdatedSystemClockOffset(dateHeader, config.systemClockOffset);\n }\n }\n};\n__name(_AwsSdkSigV4Signer, \"AwsSdkSigV4Signer\");\nvar AwsSdkSigV4Signer = _AwsSdkSigV4Signer;\nvar AWSSDKSigV4Signer = AwsSdkSigV4Signer;\n\n// src/submodules/httpAuthSchemes/aws_sdk/AwsSdkSigV4ASigner.ts\nvar import_protocol_http3 = require(\"@smithy/protocol-http\");\nvar _AwsSdkSigV4ASigner = class _AwsSdkSigV4ASigner extends AwsSdkSigV4Signer {\n async sign(httpRequest, identity, signingProperties) {\n var _a;\n if (!import_protocol_http3.HttpRequest.isInstance(httpRequest)) {\n throw new Error(\"The request is not an instance of `HttpRequest` and cannot be signed\");\n }\n const { config, signer, signingRegion, signingRegionSet, signingName } = await validateSigningProperties(\n signingProperties\n );\n const configResolvedSigningRegionSet = await ((_a = config.sigv4aSigningRegionSet) == null ? void 0 : _a.call(config));\n const multiRegionOverride = (configResolvedSigningRegionSet ?? signingRegionSet ?? [signingRegion]).join(\",\");\n const signedRequest = await signer.sign(httpRequest, {\n signingDate: getSkewCorrectedDate(config.systemClockOffset),\n signingRegion: multiRegionOverride,\n signingService: signingName\n });\n return signedRequest;\n }\n};\n__name(_AwsSdkSigV4ASigner, \"AwsSdkSigV4ASigner\");\nvar AwsSdkSigV4ASigner = _AwsSdkSigV4ASigner;\n\n// src/submodules/httpAuthSchemes/aws_sdk/resolveAwsSdkSigV4AConfig.ts\nvar import_core = require(\"@smithy/core\");\nvar import_property_provider = require(\"@smithy/property-provider\");\nvar resolveAwsSdkSigV4AConfig = /* @__PURE__ */ __name((config) => {\n config.sigv4aSigningRegionSet = (0, import_core.normalizeProvider)(config.sigv4aSigningRegionSet);\n return config;\n}, \"resolveAwsSdkSigV4AConfig\");\nvar NODE_SIGV4A_CONFIG_OPTIONS = {\n environmentVariableSelector(env) {\n if (env.AWS_SIGV4A_SIGNING_REGION_SET) {\n return env.AWS_SIGV4A_SIGNING_REGION_SET.split(\",\").map((_) => _.trim());\n }\n throw new import_property_provider.ProviderError(\"AWS_SIGV4A_SIGNING_REGION_SET not set in env.\", {\n tryNextLink: true\n });\n },\n configFileSelector(profile) {\n if (profile.sigv4a_signing_region_set) {\n return (profile.sigv4a_signing_region_set ?? \"\").split(\",\").map((_) => _.trim());\n }\n throw new import_property_provider.ProviderError(\"sigv4a_signing_region_set not set in profile.\", {\n tryNextLink: true\n });\n },\n default: void 0\n};\n\n// src/submodules/httpAuthSchemes/aws_sdk/resolveAwsSdkSigV4Config.ts\nvar import_core2 = require(\"@smithy/core\");\nvar import_signature_v4 = require(\"@smithy/signature-v4\");\nvar resolveAwsSdkSigV4Config = /* @__PURE__ */ __name((config) => {\n let normalizedCreds;\n if (config.credentials) {\n normalizedCreds = (0, import_core2.memoizeIdentityProvider)(config.credentials, import_core2.isIdentityExpired, import_core2.doesIdentityRequireRefresh);\n }\n if (!normalizedCreds) {\n if (config.credentialDefaultProvider) {\n normalizedCreds = (0, import_core2.normalizeProvider)(\n config.credentialDefaultProvider(\n Object.assign({}, config, {\n parentClientConfig: config\n })\n )\n );\n } else {\n normalizedCreds = /* @__PURE__ */ __name(async () => {\n throw new Error(\"`credentials` is missing\");\n }, \"normalizedCreds\");\n }\n }\n const {\n // Default for signingEscapePath\n signingEscapePath = true,\n // Default for systemClockOffset\n systemClockOffset = config.systemClockOffset || 0,\n // No default for sha256 since it is platform dependent\n sha256\n } = config;\n let signer;\n if (config.signer) {\n signer = (0, import_core2.normalizeProvider)(config.signer);\n } else if (config.regionInfoProvider) {\n signer = /* @__PURE__ */ __name(() => (0, import_core2.normalizeProvider)(config.region)().then(\n async (region) => [\n await config.regionInfoProvider(region, {\n useFipsEndpoint: await config.useFipsEndpoint(),\n useDualstackEndpoint: await config.useDualstackEndpoint()\n }) || {},\n region\n ]\n ).then(([regionInfo, region]) => {\n const { signingRegion, signingService } = regionInfo;\n config.signingRegion = config.signingRegion || signingRegion || region;\n config.signingName = config.signingName || signingService || config.serviceId;\n const params = {\n ...config,\n credentials: normalizedCreds,\n region: config.signingRegion,\n service: config.signingName,\n sha256,\n uriEscapePath: signingEscapePath\n };\n const SignerCtor = config.signerConstructor || import_signature_v4.SignatureV4;\n return new SignerCtor(params);\n }), \"signer\");\n } else {\n signer = /* @__PURE__ */ __name(async (authScheme) => {\n authScheme = Object.assign(\n {},\n {\n name: \"sigv4\",\n signingName: config.signingName || config.defaultSigningName,\n signingRegion: await (0, import_core2.normalizeProvider)(config.region)(),\n properties: {}\n },\n authScheme\n );\n const signingRegion = authScheme.signingRegion;\n const signingService = authScheme.signingName;\n config.signingRegion = config.signingRegion || signingRegion;\n config.signingName = config.signingName || signingService || config.serviceId;\n const params = {\n ...config,\n credentials: normalizedCreds,\n region: config.signingRegion,\n service: config.signingName,\n sha256,\n uriEscapePath: signingEscapePath\n };\n const SignerCtor = config.signerConstructor || import_signature_v4.SignatureV4;\n return new SignerCtor(params);\n }, \"signer\");\n }\n return {\n ...config,\n systemClockOffset,\n signingEscapePath,\n credentials: normalizedCreds,\n signer\n };\n}, \"resolveAwsSdkSigV4Config\");\nvar resolveAWSSDKSigV4Config = resolveAwsSdkSigV4Config;\n// Annotate the CommonJS export names for ESM import in node:\n0 && (module.exports = {\n AWSSDKSigV4Signer,\n AwsSdkSigV4ASigner,\n AwsSdkSigV4Signer,\n NODE_SIGV4A_CONFIG_OPTIONS,\n resolveAWSSDKSigV4Config,\n resolveAwsSdkSigV4AConfig,\n resolveAwsSdkSigV4Config,\n validateSigningProperties\n});\n","\"use strict\";\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/submodules/protocols/index.ts\nvar protocols_exports = {};\n__export(protocols_exports, {\n _toBool: () => _toBool,\n _toNum: () => _toNum,\n _toStr: () => _toStr,\n awsExpectUnion: () => awsExpectUnion,\n loadRestJsonErrorCode: () => loadRestJsonErrorCode,\n loadRestXmlErrorCode: () => loadRestXmlErrorCode,\n parseJsonBody: () => parseJsonBody,\n parseJsonErrorBody: () => parseJsonErrorBody,\n parseXmlBody: () => parseXmlBody,\n parseXmlErrorBody: () => parseXmlErrorBody\n});\nmodule.exports = __toCommonJS(protocols_exports);\n\n// src/submodules/protocols/coercing-serializers.ts\nvar _toStr = /* @__PURE__ */ __name((val) => {\n if (val == null) {\n return val;\n }\n if (typeof val === \"number\" || typeof val === \"bigint\") {\n const warning = new Error(`Received number ${val} where a string was expected.`);\n warning.name = \"Warning\";\n console.warn(warning);\n return String(val);\n }\n if (typeof val === \"boolean\") {\n const warning = new Error(`Received boolean ${val} where a string was expected.`);\n warning.name = \"Warning\";\n console.warn(warning);\n return String(val);\n }\n return val;\n}, \"_toStr\");\nvar _toBool = /* @__PURE__ */ __name((val) => {\n if (val == null) {\n return val;\n }\n if (typeof val === \"number\") {\n }\n if (typeof val === \"string\") {\n const lowercase = val.toLowerCase();\n if (val !== \"\" && lowercase !== \"false\" && lowercase !== \"true\") {\n const warning = new Error(`Received string \"${val}\" where a boolean was expected.`);\n warning.name = \"Warning\";\n console.warn(warning);\n }\n return val !== \"\" && lowercase !== \"false\";\n }\n return val;\n}, \"_toBool\");\nvar _toNum = /* @__PURE__ */ __name((val) => {\n if (val == null) {\n return val;\n }\n if (typeof val === \"boolean\") {\n }\n if (typeof val === \"string\") {\n const num = Number(val);\n if (num.toString() !== val) {\n const warning = new Error(`Received string \"${val}\" where a number was expected.`);\n warning.name = \"Warning\";\n console.warn(warning);\n return val;\n }\n return num;\n }\n return val;\n}, \"_toNum\");\n\n// src/submodules/protocols/json/awsExpectUnion.ts\nvar import_smithy_client = require(\"@smithy/smithy-client\");\nvar awsExpectUnion = /* @__PURE__ */ __name((value) => {\n if (value == null) {\n return void 0;\n }\n if (typeof value === \"object\" && \"__type\" in value) {\n delete value.__type;\n }\n return (0, import_smithy_client.expectUnion)(value);\n}, \"awsExpectUnion\");\n\n// src/submodules/protocols/common.ts\nvar import_smithy_client2 = require(\"@smithy/smithy-client\");\nvar collectBodyString = /* @__PURE__ */ __name((streamBody, context) => (0, import_smithy_client2.collectBody)(streamBody, context).then((body) => context.utf8Encoder(body)), \"collectBodyString\");\n\n// src/submodules/protocols/json/parseJsonBody.ts\nvar parseJsonBody = /* @__PURE__ */ __name((streamBody, context) => collectBodyString(streamBody, context).then((encoded) => {\n if (encoded.length) {\n try {\n return JSON.parse(encoded);\n } catch (e) {\n if ((e == null ? void 0 : e.name) === \"SyntaxError\") {\n Object.defineProperty(e, \"$responseBodyText\", {\n value: encoded\n });\n }\n throw e;\n }\n }\n return {};\n}), \"parseJsonBody\");\nvar parseJsonErrorBody = /* @__PURE__ */ __name(async (errorBody, context) => {\n const value = await parseJsonBody(errorBody, context);\n value.message = value.message ?? value.Message;\n return value;\n}, \"parseJsonErrorBody\");\nvar loadRestJsonErrorCode = /* @__PURE__ */ __name((output, data) => {\n const findKey = /* @__PURE__ */ __name((object, key) => Object.keys(object).find((k) => k.toLowerCase() === key.toLowerCase()), \"findKey\");\n const sanitizeErrorCode = /* @__PURE__ */ __name((rawValue) => {\n let cleanValue = rawValue;\n if (typeof cleanValue === \"number\") {\n cleanValue = cleanValue.toString();\n }\n if (cleanValue.indexOf(\",\") >= 0) {\n cleanValue = cleanValue.split(\",\")[0];\n }\n if (cleanValue.indexOf(\":\") >= 0) {\n cleanValue = cleanValue.split(\":\")[0];\n }\n if (cleanValue.indexOf(\"#\") >= 0) {\n cleanValue = cleanValue.split(\"#\")[1];\n }\n return cleanValue;\n }, \"sanitizeErrorCode\");\n const headerKey = findKey(output.headers, \"x-amzn-errortype\");\n if (headerKey !== void 0) {\n return sanitizeErrorCode(output.headers[headerKey]);\n }\n if (data.code !== void 0) {\n return sanitizeErrorCode(data.code);\n }\n if (data[\"__type\"] !== void 0) {\n return sanitizeErrorCode(data[\"__type\"]);\n }\n}, \"loadRestJsonErrorCode\");\n\n// src/submodules/protocols/xml/parseXmlBody.ts\nvar import_smithy_client3 = require(\"@smithy/smithy-client\");\nvar import_fast_xml_parser = require(\"fast-xml-parser\");\nvar parseXmlBody = /* @__PURE__ */ __name((streamBody, context) => collectBodyString(streamBody, context).then((encoded) => {\n if (encoded.length) {\n const parser = new import_fast_xml_parser.XMLParser({\n attributeNamePrefix: \"\",\n htmlEntities: true,\n ignoreAttributes: false,\n ignoreDeclaration: true,\n parseTagValue: false,\n trimValues: false,\n tagValueProcessor: (_, val) => val.trim() === \"\" && val.includes(\"\\n\") ? \"\" : void 0\n });\n parser.addEntity(\"#xD\", \"\\r\");\n parser.addEntity(\"#10\", \"\\n\");\n let parsedObj;\n try {\n parsedObj = parser.parse(encoded, true);\n } catch (e) {\n if (e && typeof e === \"object\") {\n Object.defineProperty(e, \"$responseBodyText\", {\n value: encoded\n });\n }\n throw e;\n }\n const textNodeName = \"#text\";\n const key = Object.keys(parsedObj)[0];\n const parsedObjToReturn = parsedObj[key];\n if (parsedObjToReturn[textNodeName]) {\n parsedObjToReturn[key] = parsedObjToReturn[textNodeName];\n delete parsedObjToReturn[textNodeName];\n }\n return (0, import_smithy_client3.getValueFromTextNode)(parsedObjToReturn);\n }\n return {};\n}), \"parseXmlBody\");\nvar parseXmlErrorBody = /* @__PURE__ */ __name(async (errorBody, context) => {\n const value = await parseXmlBody(errorBody, context);\n if (value.Error) {\n value.Error.message = value.Error.message ?? value.Error.Message;\n }\n return value;\n}, \"parseXmlErrorBody\");\nvar loadRestXmlErrorCode = /* @__PURE__ */ __name((output, data) => {\n var _a;\n if (((_a = data == null ? void 0 : data.Error) == null ? void 0 : _a.Code) !== void 0) {\n return data.Error.Code;\n }\n if ((data == null ? void 0 : data.Code) !== void 0) {\n return data.Code;\n }\n if (output.statusCode == 404) {\n return \"NotFound\";\n }\n}, \"loadRestXmlErrorCode\");\n// Annotate the CommonJS export names for ESM import in node:\n0 && (module.exports = {\n _toBool,\n _toNum,\n _toStr,\n awsExpectUnion,\n loadRestJsonErrorCode,\n loadRestXmlErrorCode,\n parseJsonBody,\n parseJsonErrorBody,\n parseXmlBody,\n parseXmlErrorBody\n});\n","\"use strict\";\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\nvar __esm = (fn, res) => function __init() {\n return fn && (res = (0, fn[__getOwnPropNames(fn)[0]])(fn = 0)), res;\n};\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/loadCognitoIdentity.ts\nvar loadCognitoIdentity_exports = {};\n__export(loadCognitoIdentity_exports, {\n CognitoIdentityClient: () => import_client_cognito_identity.CognitoIdentityClient,\n GetCredentialsForIdentityCommand: () => import_client_cognito_identity.GetCredentialsForIdentityCommand,\n GetIdCommand: () => import_client_cognito_identity.GetIdCommand\n});\nvar import_client_cognito_identity;\nvar init_loadCognitoIdentity = __esm({\n \"src/loadCognitoIdentity.ts\"() {\n \"use strict\";\n import_client_cognito_identity = require(\"@aws-sdk/client-cognito-identity\");\n }\n});\n\n// src/index.ts\nvar src_exports = {};\n__export(src_exports, {\n fromCognitoIdentity: () => fromCognitoIdentity,\n fromCognitoIdentityPool: () => fromCognitoIdentityPool\n});\nmodule.exports = __toCommonJS(src_exports);\n\n// src/fromCognitoIdentity.ts\nvar import_property_provider = require(\"@smithy/property-provider\");\n\n// src/resolveLogins.ts\nfunction resolveLogins(logins) {\n return Promise.all(\n Object.keys(logins).reduce((arr, name) => {\n const tokenOrProvider = logins[name];\n if (typeof tokenOrProvider === \"string\") {\n arr.push([name, tokenOrProvider]);\n } else {\n arr.push(tokenOrProvider().then((token) => [name, token]));\n }\n return arr;\n }, [])\n ).then(\n (resolvedPairs) => resolvedPairs.reduce((logins2, [key, value]) => {\n logins2[key] = value;\n return logins2;\n }, {})\n );\n}\n__name(resolveLogins, \"resolveLogins\");\n\n// src/fromCognitoIdentity.ts\nfunction fromCognitoIdentity(parameters) {\n return async () => {\n var _a, _b, _c;\n (_a = parameters.logger) == null ? void 0 : _a.debug(\"@aws-sdk/credential-provider-cognito-identity - fromCognitoIdentity\");\n const { GetCredentialsForIdentityCommand: GetCredentialsForIdentityCommand2, CognitoIdentityClient: CognitoIdentityClient2 } = await Promise.resolve().then(() => (init_loadCognitoIdentity(), loadCognitoIdentity_exports));\n const {\n Credentials: {\n AccessKeyId = throwOnMissingAccessKeyId(parameters.logger),\n Expiration,\n SecretKey = throwOnMissingSecretKey(parameters.logger),\n SessionToken\n } = throwOnMissingCredentials(parameters.logger)\n } = await (parameters.client ?? new CognitoIdentityClient2(\n Object.assign({}, parameters.clientConfig ?? {}, {\n region: ((_b = parameters.clientConfig) == null ? void 0 : _b.region) ?? ((_c = parameters.parentClientConfig) == null ? void 0 : _c.region)\n })\n )).send(\n new GetCredentialsForIdentityCommand2({\n CustomRoleArn: parameters.customRoleArn,\n IdentityId: parameters.identityId,\n Logins: parameters.logins ? await resolveLogins(parameters.logins) : void 0\n })\n );\n return {\n identityId: parameters.identityId,\n accessKeyId: AccessKeyId,\n secretAccessKey: SecretKey,\n sessionToken: SessionToken,\n expiration: Expiration\n };\n };\n}\n__name(fromCognitoIdentity, \"fromCognitoIdentity\");\nfunction throwOnMissingAccessKeyId(logger) {\n throw new import_property_provider.CredentialsProviderError(\"Response from Amazon Cognito contained no access key ID\", { logger });\n}\n__name(throwOnMissingAccessKeyId, \"throwOnMissingAccessKeyId\");\nfunction throwOnMissingCredentials(logger) {\n throw new import_property_provider.CredentialsProviderError(\"Response from Amazon Cognito contained no credentials\", { logger });\n}\n__name(throwOnMissingCredentials, \"throwOnMissingCredentials\");\nfunction throwOnMissingSecretKey(logger) {\n throw new import_property_provider.CredentialsProviderError(\"Response from Amazon Cognito contained no secret key\", { logger });\n}\n__name(throwOnMissingSecretKey, \"throwOnMissingSecretKey\");\n\n// src/fromCognitoIdentityPool.ts\n\n\n// src/IndexedDbStorage.ts\nvar STORE_NAME = \"IdentityIds\";\nvar _IndexedDbStorage = class _IndexedDbStorage {\n constructor(dbName = \"aws:cognito-identity-ids\") {\n this.dbName = dbName;\n }\n getItem(key) {\n return this.withObjectStore(\"readonly\", (store) => {\n const req = store.get(key);\n return new Promise((resolve) => {\n req.onerror = () => resolve(null);\n req.onsuccess = () => resolve(req.result ? req.result.value : null);\n });\n }).catch(() => null);\n }\n removeItem(key) {\n return this.withObjectStore(\"readwrite\", (store) => {\n const req = store.delete(key);\n return new Promise((resolve, reject) => {\n req.onerror = () => reject(req.error);\n req.onsuccess = () => resolve();\n });\n });\n }\n setItem(id, value) {\n return this.withObjectStore(\"readwrite\", (store) => {\n const req = store.put({ id, value });\n return new Promise((resolve, reject) => {\n req.onerror = () => reject(req.error);\n req.onsuccess = () => resolve();\n });\n });\n }\n getDb() {\n const openDbRequest = self.indexedDB.open(this.dbName, 1);\n return new Promise((resolve, reject) => {\n openDbRequest.onsuccess = () => {\n resolve(openDbRequest.result);\n };\n openDbRequest.onerror = () => {\n reject(openDbRequest.error);\n };\n openDbRequest.onblocked = () => {\n reject(new Error(\"Unable to access DB\"));\n };\n openDbRequest.onupgradeneeded = () => {\n const db = openDbRequest.result;\n db.onerror = () => {\n reject(new Error(\"Failed to create object store\"));\n };\n db.createObjectStore(STORE_NAME, { keyPath: \"id\" });\n };\n });\n }\n withObjectStore(mode, action) {\n return this.getDb().then((db) => {\n const tx = db.transaction(STORE_NAME, mode);\n tx.oncomplete = () => db.close();\n return new Promise((resolve, reject) => {\n tx.onerror = () => reject(tx.error);\n resolve(action(tx.objectStore(STORE_NAME)));\n }).catch((err) => {\n db.close();\n throw err;\n });\n });\n }\n};\n__name(_IndexedDbStorage, \"IndexedDbStorage\");\nvar IndexedDbStorage = _IndexedDbStorage;\n\n// src/InMemoryStorage.ts\nvar _InMemoryStorage = class _InMemoryStorage {\n constructor(store = {}) {\n this.store = store;\n }\n getItem(key) {\n if (key in this.store) {\n return this.store[key];\n }\n return null;\n }\n removeItem(key) {\n delete this.store[key];\n }\n setItem(key, value) {\n this.store[key] = value;\n }\n};\n__name(_InMemoryStorage, \"InMemoryStorage\");\nvar InMemoryStorage = _InMemoryStorage;\n\n// src/localStorage.ts\nvar inMemoryStorage = new InMemoryStorage();\nfunction localStorage() {\n if (typeof self === \"object\" && self.indexedDB) {\n return new IndexedDbStorage();\n }\n if (typeof window === \"object\" && window.localStorage) {\n return window.localStorage;\n }\n return inMemoryStorage;\n}\n__name(localStorage, \"localStorage\");\n\n// src/fromCognitoIdentityPool.ts\nfunction fromCognitoIdentityPool({\n accountId,\n cache = localStorage(),\n client,\n clientConfig,\n customRoleArn,\n identityPoolId,\n logins,\n userIdentifier = !logins || Object.keys(logins).length === 0 ? \"ANONYMOUS\" : void 0,\n logger,\n parentClientConfig\n}) {\n logger == null ? void 0 : logger.debug(\"@aws-sdk/credential-provider-cognito-identity - fromCognitoIdentity\");\n const cacheKey = userIdentifier ? `aws:cognito-identity-credentials:${identityPoolId}:${userIdentifier}` : void 0;\n let provider = /* @__PURE__ */ __name(async () => {\n const { GetIdCommand: GetIdCommand2, CognitoIdentityClient: CognitoIdentityClient2 } = await Promise.resolve().then(() => (init_loadCognitoIdentity(), loadCognitoIdentity_exports));\n const _client = client ?? new CognitoIdentityClient2(\n Object.assign({}, clientConfig ?? {}, { region: (clientConfig == null ? void 0 : clientConfig.region) ?? (parentClientConfig == null ? void 0 : parentClientConfig.region) })\n );\n let identityId = cacheKey && await cache.getItem(cacheKey);\n if (!identityId) {\n const { IdentityId = throwOnMissingId(logger) } = await _client.send(\n new GetIdCommand2({\n AccountId: accountId,\n IdentityPoolId: identityPoolId,\n Logins: logins ? await resolveLogins(logins) : void 0\n })\n );\n identityId = IdentityId;\n if (cacheKey) {\n Promise.resolve(cache.setItem(cacheKey, identityId)).catch(() => {\n });\n }\n }\n provider = fromCognitoIdentity({\n client: _client,\n customRoleArn,\n logins,\n identityId\n });\n return provider();\n }, \"provider\");\n return () => provider().catch(async (err) => {\n if (cacheKey) {\n Promise.resolve(cache.removeItem(cacheKey)).catch(() => {\n });\n }\n throw err;\n });\n}\n__name(fromCognitoIdentityPool, \"fromCognitoIdentityPool\");\nfunction throwOnMissingId(logger) {\n throw new import_property_provider.CredentialsProviderError(\"Response from Amazon Cognito contained no identity ID\", { logger });\n}\n__name(throwOnMissingId, \"throwOnMissingId\");\n// Annotate the CommonJS export names for ESM import in node:\n\n0 && (module.exports = {\n fromCognitoIdentity,\n fromCognitoIdentityPool\n});\n\n","\"use strict\";\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/index.ts\nvar src_exports = {};\n__export(src_exports, {\n ENV_ACCOUNT_ID: () => ENV_ACCOUNT_ID,\n ENV_CREDENTIAL_SCOPE: () => ENV_CREDENTIAL_SCOPE,\n ENV_EXPIRATION: () => ENV_EXPIRATION,\n ENV_KEY: () => ENV_KEY,\n ENV_SECRET: () => ENV_SECRET,\n ENV_SESSION: () => ENV_SESSION,\n fromEnv: () => fromEnv\n});\nmodule.exports = __toCommonJS(src_exports);\n\n// src/fromEnv.ts\nvar import_property_provider = require(\"@smithy/property-provider\");\nvar ENV_KEY = \"AWS_ACCESS_KEY_ID\";\nvar ENV_SECRET = \"AWS_SECRET_ACCESS_KEY\";\nvar ENV_SESSION = \"AWS_SESSION_TOKEN\";\nvar ENV_EXPIRATION = \"AWS_CREDENTIAL_EXPIRATION\";\nvar ENV_CREDENTIAL_SCOPE = \"AWS_CREDENTIAL_SCOPE\";\nvar ENV_ACCOUNT_ID = \"AWS_ACCOUNT_ID\";\nvar fromEnv = /* @__PURE__ */ __name((init) => async () => {\n var _a;\n (_a = init == null ? void 0 : init.logger) == null ? void 0 : _a.debug(\"@aws-sdk/credential-provider-env - fromEnv\");\n const accessKeyId = process.env[ENV_KEY];\n const secretAccessKey = process.env[ENV_SECRET];\n const sessionToken = process.env[ENV_SESSION];\n const expiry = process.env[ENV_EXPIRATION];\n const credentialScope = process.env[ENV_CREDENTIAL_SCOPE];\n const accountId = process.env[ENV_ACCOUNT_ID];\n if (accessKeyId && secretAccessKey) {\n return {\n accessKeyId,\n secretAccessKey,\n ...sessionToken && { sessionToken },\n ...expiry && { expiration: new Date(expiry) },\n ...credentialScope && { credentialScope },\n ...accountId && { accountId }\n };\n }\n throw new import_property_provider.CredentialsProviderError(\"Unable to find environment variable credentials.\", { logger: init == null ? void 0 : init.logger });\n}, \"fromEnv\");\n// Annotate the CommonJS export names for ESM import in node:\n\n0 && (module.exports = {\n ENV_KEY,\n ENV_SECRET,\n ENV_SESSION,\n ENV_EXPIRATION,\n ENV_CREDENTIAL_SCOPE,\n ENV_ACCOUNT_ID,\n fromEnv\n});\n\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.checkUrl = void 0;\nconst property_provider_1 = require(\"@smithy/property-provider\");\nconst LOOPBACK_CIDR_IPv4 = \"127.0.0.0/8\";\nconst LOOPBACK_CIDR_IPv6 = \"::1/128\";\nconst ECS_CONTAINER_HOST = \"169.254.170.2\";\nconst EKS_CONTAINER_HOST_IPv4 = \"169.254.170.23\";\nconst EKS_CONTAINER_HOST_IPv6 = \"[fd00:ec2::23]\";\nconst checkUrl = (url, logger) => {\n if (url.protocol === \"https:\") {\n return;\n }\n if (url.hostname === ECS_CONTAINER_HOST ||\n url.hostname === EKS_CONTAINER_HOST_IPv4 ||\n url.hostname === EKS_CONTAINER_HOST_IPv6) {\n return;\n }\n if (url.hostname.includes(\"[\")) {\n if (url.hostname === \"[::1]\" || url.hostname === \"[0000:0000:0000:0000:0000:0000:0000:0001]\") {\n return;\n }\n }\n else {\n if (url.hostname === \"localhost\") {\n return;\n }\n const ipComponents = url.hostname.split(\".\");\n const inRange = (component) => {\n const num = parseInt(component, 10);\n return 0 <= num && num <= 255;\n };\n if (ipComponents[0] === \"127\" &&\n inRange(ipComponents[1]) &&\n inRange(ipComponents[2]) &&\n inRange(ipComponents[3]) &&\n ipComponents.length === 4) {\n return;\n }\n }\n throw new property_provider_1.CredentialsProviderError(`URL not accepted. It must either be HTTPS or match one of the following:\n - loopback CIDR 127.0.0.0/8 or [::1/128]\n - ECS container host 169.254.170.2\n - EKS container host 169.254.170.23 or [fd00:ec2::23]`, { logger });\n};\nexports.checkUrl = checkUrl;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.fromHttp = void 0;\nconst tslib_1 = require(\"tslib\");\nconst node_http_handler_1 = require(\"@smithy/node-http-handler\");\nconst property_provider_1 = require(\"@smithy/property-provider\");\nconst promises_1 = tslib_1.__importDefault(require(\"fs/promises\"));\nconst checkUrl_1 = require(\"./checkUrl\");\nconst requestHelpers_1 = require(\"./requestHelpers\");\nconst retry_wrapper_1 = require(\"./retry-wrapper\");\nconst AWS_CONTAINER_CREDENTIALS_RELATIVE_URI = \"AWS_CONTAINER_CREDENTIALS_RELATIVE_URI\";\nconst DEFAULT_LINK_LOCAL_HOST = \"http://169.254.170.2\";\nconst AWS_CONTAINER_CREDENTIALS_FULL_URI = \"AWS_CONTAINER_CREDENTIALS_FULL_URI\";\nconst AWS_CONTAINER_AUTHORIZATION_TOKEN_FILE = \"AWS_CONTAINER_AUTHORIZATION_TOKEN_FILE\";\nconst AWS_CONTAINER_AUTHORIZATION_TOKEN = \"AWS_CONTAINER_AUTHORIZATION_TOKEN\";\nconst fromHttp = (options = {}) => {\n options.logger?.debug(\"@aws-sdk/credential-provider-http - fromHttp\");\n let host;\n const relative = options.awsContainerCredentialsRelativeUri ?? process.env[AWS_CONTAINER_CREDENTIALS_RELATIVE_URI];\n const full = options.awsContainerCredentialsFullUri ?? process.env[AWS_CONTAINER_CREDENTIALS_FULL_URI];\n const token = options.awsContainerAuthorizationToken ?? process.env[AWS_CONTAINER_AUTHORIZATION_TOKEN];\n const tokenFile = options.awsContainerAuthorizationTokenFile ?? process.env[AWS_CONTAINER_AUTHORIZATION_TOKEN_FILE];\n const warn = options.logger?.constructor?.name === \"NoOpLogger\" || !options.logger ? console.warn : options.logger.warn;\n if (relative && full) {\n warn(\"@aws-sdk/credential-provider-http: \" +\n \"you have set both awsContainerCredentialsRelativeUri and awsContainerCredentialsFullUri.\");\n warn(\"awsContainerCredentialsFullUri will take precedence.\");\n }\n if (token && tokenFile) {\n warn(\"@aws-sdk/credential-provider-http: \" +\n \"you have set both awsContainerAuthorizationToken and awsContainerAuthorizationTokenFile.\");\n warn(\"awsContainerAuthorizationToken will take precedence.\");\n }\n if (full) {\n host = full;\n }\n else if (relative) {\n host = `${DEFAULT_LINK_LOCAL_HOST}${relative}`;\n }\n else {\n throw new property_provider_1.CredentialsProviderError(`No HTTP credential provider host provided.\nSet AWS_CONTAINER_CREDENTIALS_FULL_URI or AWS_CONTAINER_CREDENTIALS_RELATIVE_URI.`, { logger: options.logger });\n }\n const url = new URL(host);\n (0, checkUrl_1.checkUrl)(url, options.logger);\n const requestHandler = new node_http_handler_1.NodeHttpHandler({\n requestTimeout: options.timeout ?? 1000,\n connectionTimeout: options.timeout ?? 1000,\n });\n return (0, retry_wrapper_1.retryWrapper)(async () => {\n const request = (0, requestHelpers_1.createGetRequest)(url);\n if (token) {\n request.headers.Authorization = token;\n }\n else if (tokenFile) {\n request.headers.Authorization = (await promises_1.default.readFile(tokenFile)).toString();\n }\n try {\n const result = await requestHandler.handle(request);\n return (0, requestHelpers_1.getCredentials)(result.response);\n }\n catch (e) {\n throw new property_provider_1.CredentialsProviderError(String(e), { logger: options.logger });\n }\n }, options.maxRetries ?? 3, options.timeout ?? 1000);\n};\nexports.fromHttp = fromHttp;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getCredentials = exports.createGetRequest = void 0;\nconst property_provider_1 = require(\"@smithy/property-provider\");\nconst protocol_http_1 = require(\"@smithy/protocol-http\");\nconst smithy_client_1 = require(\"@smithy/smithy-client\");\nconst util_stream_1 = require(\"@smithy/util-stream\");\nfunction createGetRequest(url) {\n return new protocol_http_1.HttpRequest({\n protocol: url.protocol,\n hostname: url.hostname,\n port: Number(url.port),\n path: url.pathname,\n query: Array.from(url.searchParams.entries()).reduce((acc, [k, v]) => {\n acc[k] = v;\n return acc;\n }, {}),\n fragment: url.hash,\n });\n}\nexports.createGetRequest = createGetRequest;\nasync function getCredentials(response, logger) {\n const stream = (0, util_stream_1.sdkStreamMixin)(response.body);\n const str = await stream.transformToString();\n if (response.statusCode === 200) {\n const parsed = JSON.parse(str);\n if (typeof parsed.AccessKeyId !== \"string\" ||\n typeof parsed.SecretAccessKey !== \"string\" ||\n typeof parsed.Token !== \"string\" ||\n typeof parsed.Expiration !== \"string\") {\n throw new property_provider_1.CredentialsProviderError(\"HTTP credential provider response not of the required format, an object matching: \" +\n \"{ AccessKeyId: string, SecretAccessKey: string, Token: string, Expiration: string(rfc3339) }\", { logger });\n }\n return {\n accessKeyId: parsed.AccessKeyId,\n secretAccessKey: parsed.SecretAccessKey,\n sessionToken: parsed.Token,\n expiration: (0, smithy_client_1.parseRfc3339DateTime)(parsed.Expiration),\n };\n }\n if (response.statusCode >= 400 && response.statusCode < 500) {\n let parsedBody = {};\n try {\n parsedBody = JSON.parse(str);\n }\n catch (e) { }\n throw Object.assign(new property_provider_1.CredentialsProviderError(`Server responded with status: ${response.statusCode}`, { logger }), {\n Code: parsedBody.Code,\n Message: parsedBody.Message,\n });\n }\n throw new property_provider_1.CredentialsProviderError(`Server responded with status: ${response.statusCode}`, { logger });\n}\nexports.getCredentials = getCredentials;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.retryWrapper = void 0;\nconst retryWrapper = (toRetry, maxRetries, delayMs) => {\n return async () => {\n for (let i = 0; i < maxRetries; ++i) {\n try {\n return await toRetry();\n }\n catch (e) {\n await new Promise((resolve) => setTimeout(resolve, delayMs));\n }\n }\n return await toRetry();\n };\n};\nexports.retryWrapper = retryWrapper;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.fromHttp = void 0;\nvar fromHttp_1 = require(\"./fromHttp/fromHttp\");\nObject.defineProperty(exports, \"fromHttp\", { enumerable: true, get: function () { return fromHttp_1.fromHttp; } });\n","\"use strict\";\nvar __create = Object.create;\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __getProtoOf = Object.getPrototypeOf;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(\n // If the importer is in node compatibility mode or this is not an ESM\n // file that has been converted to a CommonJS file using a Babel-\n // compatible transform (i.e. \"__esModule\" has not been set), then set\n // \"default\" to the CommonJS \"module.exports\" for node compatibility.\n isNodeMode || !mod || !mod.__esModule ? __defProp(target, \"default\", { value: mod, enumerable: true }) : target,\n mod\n));\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/index.ts\nvar src_exports = {};\n__export(src_exports, {\n fromIni: () => fromIni\n});\nmodule.exports = __toCommonJS(src_exports);\n\n// src/fromIni.ts\n\n\n// src/resolveProfileData.ts\n\n\n// src/resolveAssumeRoleCredentials.ts\n\nvar import_shared_ini_file_loader = require(\"@smithy/shared-ini-file-loader\");\n\n// src/resolveCredentialSource.ts\nvar import_property_provider = require(\"@smithy/property-provider\");\nvar resolveCredentialSource = /* @__PURE__ */ __name((credentialSource, profileName, logger) => {\n const sourceProvidersMap = {\n EcsContainer: async (options) => {\n const { fromHttp } = await Promise.resolve().then(() => __toESM(require(\"@aws-sdk/credential-provider-http\")));\n const { fromContainerMetadata } = await Promise.resolve().then(() => __toESM(require(\"@smithy/credential-provider-imds\")));\n logger == null ? void 0 : logger.debug(\"@aws-sdk/credential-provider-ini - credential_source is EcsContainer\");\n return (0, import_property_provider.chain)(fromHttp(options ?? {}), fromContainerMetadata(options));\n },\n Ec2InstanceMetadata: async (options) => {\n logger == null ? void 0 : logger.debug(\"@aws-sdk/credential-provider-ini - credential_source is Ec2InstanceMetadata\");\n const { fromInstanceMetadata } = await Promise.resolve().then(() => __toESM(require(\"@smithy/credential-provider-imds\")));\n return fromInstanceMetadata(options);\n },\n Environment: async (options) => {\n logger == null ? void 0 : logger.debug(\"@aws-sdk/credential-provider-ini - credential_source is Environment\");\n const { fromEnv } = await Promise.resolve().then(() => __toESM(require(\"@aws-sdk/credential-provider-env\")));\n return fromEnv(options);\n }\n };\n if (credentialSource in sourceProvidersMap) {\n return sourceProvidersMap[credentialSource];\n } else {\n throw new import_property_provider.CredentialsProviderError(\n `Unsupported credential source in profile ${profileName}. Got ${credentialSource}, expected EcsContainer or Ec2InstanceMetadata or Environment.`,\n { logger }\n );\n }\n}, \"resolveCredentialSource\");\n\n// src/resolveAssumeRoleCredentials.ts\nvar isAssumeRoleProfile = /* @__PURE__ */ __name((arg, { profile = \"default\", logger } = {}) => {\n return Boolean(arg) && typeof arg === \"object\" && typeof arg.role_arn === \"string\" && [\"undefined\", \"string\"].indexOf(typeof arg.role_session_name) > -1 && [\"undefined\", \"string\"].indexOf(typeof arg.external_id) > -1 && [\"undefined\", \"string\"].indexOf(typeof arg.mfa_serial) > -1 && (isAssumeRoleWithSourceProfile(arg, { profile, logger }) || isCredentialSourceProfile(arg, { profile, logger }));\n}, \"isAssumeRoleProfile\");\nvar isAssumeRoleWithSourceProfile = /* @__PURE__ */ __name((arg, { profile, logger }) => {\n var _a;\n const withSourceProfile = typeof arg.source_profile === \"string\" && typeof arg.credential_source === \"undefined\";\n if (withSourceProfile) {\n (_a = logger == null ? void 0 : logger.debug) == null ? void 0 : _a.call(logger, ` ${profile} isAssumeRoleWithSourceProfile source_profile=${arg.source_profile}`);\n }\n return withSourceProfile;\n}, \"isAssumeRoleWithSourceProfile\");\nvar isCredentialSourceProfile = /* @__PURE__ */ __name((arg, { profile, logger }) => {\n var _a;\n const withProviderProfile = typeof arg.credential_source === \"string\" && typeof arg.source_profile === \"undefined\";\n if (withProviderProfile) {\n (_a = logger == null ? void 0 : logger.debug) == null ? void 0 : _a.call(logger, ` ${profile} isCredentialSourceProfile credential_source=${arg.credential_source}`);\n }\n return withProviderProfile;\n}, \"isCredentialSourceProfile\");\nvar resolveAssumeRoleCredentials = /* @__PURE__ */ __name(async (profileName, profiles, options, visitedProfiles = {}) => {\n var _a, _b;\n (_a = options.logger) == null ? void 0 : _a.debug(\"@aws-sdk/credential-provider-ini - resolveAssumeRoleCredentials (STS)\");\n const data = profiles[profileName];\n if (!options.roleAssumer) {\n const { getDefaultRoleAssumer } = await Promise.resolve().then(() => __toESM(require(\"@aws-sdk/client-sts\")));\n options.roleAssumer = getDefaultRoleAssumer(\n {\n ...options.clientConfig,\n credentialProviderLogger: options.logger,\n parentClientConfig: options == null ? void 0 : options.parentClientConfig\n },\n options.clientPlugins\n );\n }\n const { source_profile } = data;\n if (source_profile && source_profile in visitedProfiles) {\n throw new import_property_provider.CredentialsProviderError(\n `Detected a cycle attempting to resolve credentials for profile ${(0, import_shared_ini_file_loader.getProfileName)(options)}. Profiles visited: ` + Object.keys(visitedProfiles).join(\", \"),\n { logger: options.logger }\n );\n }\n (_b = options.logger) == null ? void 0 : _b.debug(\n `@aws-sdk/credential-provider-ini - finding credential resolver using ${source_profile ? `source_profile=[${source_profile}]` : `profile=[${profileName}]`}`\n );\n const sourceCredsProvider = source_profile ? resolveProfileData(\n source_profile,\n profiles,\n options,\n {\n ...visitedProfiles,\n [source_profile]: true\n },\n isCredentialSourceWithoutRoleArn(profiles[source_profile] ?? {})\n ) : (await resolveCredentialSource(data.credential_source, profileName, options.logger)(options))();\n if (isCredentialSourceWithoutRoleArn(data)) {\n return sourceCredsProvider;\n } else {\n const params = {\n RoleArn: data.role_arn,\n RoleSessionName: data.role_session_name || `aws-sdk-js-${Date.now()}`,\n ExternalId: data.external_id,\n DurationSeconds: parseInt(data.duration_seconds || \"3600\", 10)\n };\n const { mfa_serial } = data;\n if (mfa_serial) {\n if (!options.mfaCodeProvider) {\n throw new import_property_provider.CredentialsProviderError(\n `Profile ${profileName} requires multi-factor authentication, but no MFA code callback was provided.`,\n { logger: options.logger, tryNextLink: false }\n );\n }\n params.SerialNumber = mfa_serial;\n params.TokenCode = await options.mfaCodeProvider(mfa_serial);\n }\n const sourceCreds = await sourceCredsProvider;\n return options.roleAssumer(sourceCreds, params);\n }\n}, \"resolveAssumeRoleCredentials\");\nvar isCredentialSourceWithoutRoleArn = /* @__PURE__ */ __name((section) => {\n return !section.role_arn && !!section.credential_source;\n}, \"isCredentialSourceWithoutRoleArn\");\n\n// src/resolveProcessCredentials.ts\nvar isProcessProfile = /* @__PURE__ */ __name((arg) => Boolean(arg) && typeof arg === \"object\" && typeof arg.credential_process === \"string\", \"isProcessProfile\");\nvar resolveProcessCredentials = /* @__PURE__ */ __name(async (options, profile) => Promise.resolve().then(() => __toESM(require(\"@aws-sdk/credential-provider-process\"))).then(\n ({ fromProcess }) => fromProcess({\n ...options,\n profile\n })()\n), \"resolveProcessCredentials\");\n\n// src/resolveSsoCredentials.ts\nvar resolveSsoCredentials = /* @__PURE__ */ __name(async (profile, options = {}) => {\n const { fromSSO } = await Promise.resolve().then(() => __toESM(require(\"@aws-sdk/credential-provider-sso\")));\n return fromSSO({\n profile,\n logger: options.logger\n })();\n}, \"resolveSsoCredentials\");\nvar isSsoProfile = /* @__PURE__ */ __name((arg) => arg && (typeof arg.sso_start_url === \"string\" || typeof arg.sso_account_id === \"string\" || typeof arg.sso_session === \"string\" || typeof arg.sso_region === \"string\" || typeof arg.sso_role_name === \"string\"), \"isSsoProfile\");\n\n// src/resolveStaticCredentials.ts\nvar isStaticCredsProfile = /* @__PURE__ */ __name((arg) => Boolean(arg) && typeof arg === \"object\" && typeof arg.aws_access_key_id === \"string\" && typeof arg.aws_secret_access_key === \"string\" && [\"undefined\", \"string\"].indexOf(typeof arg.aws_session_token) > -1 && [\"undefined\", \"string\"].indexOf(typeof arg.aws_account_id) > -1, \"isStaticCredsProfile\");\nvar resolveStaticCredentials = /* @__PURE__ */ __name((profile, options) => {\n var _a;\n (_a = options == null ? void 0 : options.logger) == null ? void 0 : _a.debug(\"@aws-sdk/credential-provider-ini - resolveStaticCredentials\");\n return Promise.resolve({\n accessKeyId: profile.aws_access_key_id,\n secretAccessKey: profile.aws_secret_access_key,\n sessionToken: profile.aws_session_token,\n ...profile.aws_credential_scope && { credentialScope: profile.aws_credential_scope },\n ...profile.aws_account_id && { accountId: profile.aws_account_id }\n });\n}, \"resolveStaticCredentials\");\n\n// src/resolveWebIdentityCredentials.ts\nvar isWebIdentityProfile = /* @__PURE__ */ __name((arg) => Boolean(arg) && typeof arg === \"object\" && typeof arg.web_identity_token_file === \"string\" && typeof arg.role_arn === \"string\" && [\"undefined\", \"string\"].indexOf(typeof arg.role_session_name) > -1, \"isWebIdentityProfile\");\nvar resolveWebIdentityCredentials = /* @__PURE__ */ __name(async (profile, options) => Promise.resolve().then(() => __toESM(require(\"@aws-sdk/credential-provider-web-identity\"))).then(\n ({ fromTokenFile }) => fromTokenFile({\n webIdentityTokenFile: profile.web_identity_token_file,\n roleArn: profile.role_arn,\n roleSessionName: profile.role_session_name,\n roleAssumerWithWebIdentity: options.roleAssumerWithWebIdentity,\n logger: options.logger,\n parentClientConfig: options.parentClientConfig\n })()\n), \"resolveWebIdentityCredentials\");\n\n// src/resolveProfileData.ts\nvar resolveProfileData = /* @__PURE__ */ __name(async (profileName, profiles, options, visitedProfiles = {}, isAssumeRoleRecursiveCall = false) => {\n const data = profiles[profileName];\n if (Object.keys(visitedProfiles).length > 0 && isStaticCredsProfile(data)) {\n return resolveStaticCredentials(data, options);\n }\n if (isAssumeRoleRecursiveCall || isAssumeRoleProfile(data, { profile: profileName, logger: options.logger })) {\n return resolveAssumeRoleCredentials(profileName, profiles, options, visitedProfiles);\n }\n if (isStaticCredsProfile(data)) {\n return resolveStaticCredentials(data, options);\n }\n if (isWebIdentityProfile(data)) {\n return resolveWebIdentityCredentials(data, options);\n }\n if (isProcessProfile(data)) {\n return resolveProcessCredentials(options, profileName);\n }\n if (isSsoProfile(data)) {\n return await resolveSsoCredentials(profileName, options);\n }\n throw new import_property_provider.CredentialsProviderError(\n `Could not resolve credentials using profile: [${profileName}] in configuration/credentials file(s).`,\n { logger: options.logger }\n );\n}, \"resolveProfileData\");\n\n// src/fromIni.ts\nvar fromIni = /* @__PURE__ */ __name((init = {}) => async () => {\n var _a;\n (_a = init.logger) == null ? void 0 : _a.debug(\"@aws-sdk/credential-provider-ini - fromIni\");\n const profiles = await (0, import_shared_ini_file_loader.parseKnownFiles)(init);\n return resolveProfileData((0, import_shared_ini_file_loader.getProfileName)(init), profiles, init);\n}, \"fromIni\");\n// Annotate the CommonJS export names for ESM import in node:\n\n0 && (module.exports = {\n fromIni\n});\n\n","\"use strict\";\nvar __create = Object.create;\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __getProtoOf = Object.getPrototypeOf;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(\n // If the importer is in node compatibility mode or this is not an ESM\n // file that has been converted to a CommonJS file using a Babel-\n // compatible transform (i.e. \"__esModule\" has not been set), then set\n // \"default\" to the CommonJS \"module.exports\" for node compatibility.\n isNodeMode || !mod || !mod.__esModule ? __defProp(target, \"default\", { value: mod, enumerable: true }) : target,\n mod\n));\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/index.ts\nvar src_exports = {};\n__export(src_exports, {\n credentialsTreatedAsExpired: () => credentialsTreatedAsExpired,\n credentialsWillNeedRefresh: () => credentialsWillNeedRefresh,\n defaultProvider: () => defaultProvider\n});\nmodule.exports = __toCommonJS(src_exports);\n\n// src/defaultProvider.ts\nvar import_credential_provider_env = require(\"@aws-sdk/credential-provider-env\");\n\nvar import_shared_ini_file_loader = require(\"@smithy/shared-ini-file-loader\");\n\n// src/remoteProvider.ts\nvar import_property_provider = require(\"@smithy/property-provider\");\nvar ENV_IMDS_DISABLED = \"AWS_EC2_METADATA_DISABLED\";\nvar remoteProvider = /* @__PURE__ */ __name(async (init) => {\n var _a, _b;\n const { ENV_CMDS_FULL_URI, ENV_CMDS_RELATIVE_URI, fromContainerMetadata, fromInstanceMetadata } = await Promise.resolve().then(() => __toESM(require(\"@smithy/credential-provider-imds\")));\n if (process.env[ENV_CMDS_RELATIVE_URI] || process.env[ENV_CMDS_FULL_URI]) {\n (_a = init.logger) == null ? void 0 : _a.debug(\"@aws-sdk/credential-provider-node - remoteProvider::fromHttp/fromContainerMetadata\");\n const { fromHttp } = await Promise.resolve().then(() => __toESM(require(\"@aws-sdk/credential-provider-http\")));\n return (0, import_property_provider.chain)(fromHttp(init), fromContainerMetadata(init));\n }\n if (process.env[ENV_IMDS_DISABLED]) {\n return async () => {\n throw new import_property_provider.CredentialsProviderError(\"EC2 Instance Metadata Service access disabled\", { logger: init.logger });\n };\n }\n (_b = init.logger) == null ? void 0 : _b.debug(\"@aws-sdk/credential-provider-node - remoteProvider::fromInstanceMetadata\");\n return fromInstanceMetadata(init);\n}, \"remoteProvider\");\n\n// src/defaultProvider.ts\nvar multipleCredentialSourceWarningEmitted = false;\nvar defaultProvider = /* @__PURE__ */ __name((init = {}) => (0, import_property_provider.memoize)(\n (0, import_property_provider.chain)(\n async () => {\n var _a, _b, _c, _d;\n const profile = init.profile ?? process.env[import_shared_ini_file_loader.ENV_PROFILE];\n if (profile) {\n const envStaticCredentialsAreSet = process.env[import_credential_provider_env.ENV_KEY] && process.env[import_credential_provider_env.ENV_SECRET];\n if (envStaticCredentialsAreSet) {\n if (!multipleCredentialSourceWarningEmitted) {\n const warnFn = ((_a = init.logger) == null ? void 0 : _a.warn) && ((_c = (_b = init.logger) == null ? void 0 : _b.constructor) == null ? void 0 : _c.name) !== \"NoOpLogger\" ? init.logger.warn : console.warn;\n warnFn(\n `@aws-sdk/credential-provider-node - defaultProvider::fromEnv WARNING:\n Multiple credential sources detected: \n Both AWS_PROFILE and the pair AWS_ACCESS_KEY_ID/AWS_SECRET_ACCESS_KEY static credentials are set.\n This SDK will proceed with the AWS_PROFILE value.\n \n However, a future version may change this behavior to prefer the ENV static credentials.\n Please ensure that your environment only sets either the AWS_PROFILE or the\n AWS_ACCESS_KEY_ID/AWS_SECRET_ACCESS_KEY pair.\n`\n );\n multipleCredentialSourceWarningEmitted = true;\n }\n }\n throw new import_property_provider.CredentialsProviderError(\"AWS_PROFILE is set, skipping fromEnv provider.\", {\n logger: init.logger,\n tryNextLink: true\n });\n }\n (_d = init.logger) == null ? void 0 : _d.debug(\"@aws-sdk/credential-provider-node - defaultProvider::fromEnv\");\n return (0, import_credential_provider_env.fromEnv)(init)();\n },\n async () => {\n var _a;\n (_a = init.logger) == null ? void 0 : _a.debug(\"@aws-sdk/credential-provider-node - defaultProvider::fromSSO\");\n const { ssoStartUrl, ssoAccountId, ssoRegion, ssoRoleName, ssoSession } = init;\n if (!ssoStartUrl && !ssoAccountId && !ssoRegion && !ssoRoleName && !ssoSession) {\n throw new import_property_provider.CredentialsProviderError(\n \"Skipping SSO provider in default chain (inputs do not include SSO fields).\",\n { logger: init.logger }\n );\n }\n const { fromSSO } = await Promise.resolve().then(() => __toESM(require(\"@aws-sdk/credential-provider-sso\")));\n return fromSSO(init)();\n },\n async () => {\n var _a;\n (_a = init.logger) == null ? void 0 : _a.debug(\"@aws-sdk/credential-provider-node - defaultProvider::fromIni\");\n const { fromIni } = await Promise.resolve().then(() => __toESM(require(\"@aws-sdk/credential-provider-ini\")));\n return fromIni(init)();\n },\n async () => {\n var _a;\n (_a = init.logger) == null ? void 0 : _a.debug(\"@aws-sdk/credential-provider-node - defaultProvider::fromProcess\");\n const { fromProcess } = await Promise.resolve().then(() => __toESM(require(\"@aws-sdk/credential-provider-process\")));\n return fromProcess(init)();\n },\n async () => {\n var _a;\n (_a = init.logger) == null ? void 0 : _a.debug(\"@aws-sdk/credential-provider-node - defaultProvider::fromTokenFile\");\n const { fromTokenFile } = await Promise.resolve().then(() => __toESM(require(\"@aws-sdk/credential-provider-web-identity\")));\n return fromTokenFile(init)();\n },\n async () => {\n var _a;\n (_a = init.logger) == null ? void 0 : _a.debug(\"@aws-sdk/credential-provider-node - defaultProvider::remoteProvider\");\n return (await remoteProvider(init))();\n },\n async () => {\n throw new import_property_provider.CredentialsProviderError(\"Could not load credentials from any providers\", {\n tryNextLink: false,\n logger: init.logger\n });\n }\n ),\n credentialsTreatedAsExpired,\n credentialsWillNeedRefresh\n), \"defaultProvider\");\nvar credentialsWillNeedRefresh = /* @__PURE__ */ __name((credentials) => (credentials == null ? void 0 : credentials.expiration) !== void 0, \"credentialsWillNeedRefresh\");\nvar credentialsTreatedAsExpired = /* @__PURE__ */ __name((credentials) => (credentials == null ? void 0 : credentials.expiration) !== void 0 && credentials.expiration.getTime() - Date.now() < 3e5, \"credentialsTreatedAsExpired\");\n// Annotate the CommonJS export names for ESM import in node:\n\n0 && (module.exports = {\n defaultProvider,\n credentialsWillNeedRefresh,\n credentialsTreatedAsExpired\n});\n\n","\"use strict\";\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/index.ts\nvar src_exports = {};\n__export(src_exports, {\n fromProcess: () => fromProcess\n});\nmodule.exports = __toCommonJS(src_exports);\n\n// src/fromProcess.ts\nvar import_shared_ini_file_loader = require(\"@smithy/shared-ini-file-loader\");\n\n// src/resolveProcessCredentials.ts\nvar import_property_provider = require(\"@smithy/property-provider\");\nvar import_child_process = require(\"child_process\");\nvar import_util = require(\"util\");\n\n// src/getValidatedProcessCredentials.ts\nvar getValidatedProcessCredentials = /* @__PURE__ */ __name((profileName, data, profiles) => {\n var _a;\n if (data.Version !== 1) {\n throw Error(`Profile ${profileName} credential_process did not return Version 1.`);\n }\n if (data.AccessKeyId === void 0 || data.SecretAccessKey === void 0) {\n throw Error(`Profile ${profileName} credential_process returned invalid credentials.`);\n }\n if (data.Expiration) {\n const currentTime = /* @__PURE__ */ new Date();\n const expireTime = new Date(data.Expiration);\n if (expireTime < currentTime) {\n throw Error(`Profile ${profileName} credential_process returned expired credentials.`);\n }\n }\n let accountId = data.AccountId;\n if (!accountId && ((_a = profiles == null ? void 0 : profiles[profileName]) == null ? void 0 : _a.aws_account_id)) {\n accountId = profiles[profileName].aws_account_id;\n }\n return {\n accessKeyId: data.AccessKeyId,\n secretAccessKey: data.SecretAccessKey,\n ...data.SessionToken && { sessionToken: data.SessionToken },\n ...data.Expiration && { expiration: new Date(data.Expiration) },\n ...data.CredentialScope && { credentialScope: data.CredentialScope },\n ...accountId && { accountId }\n };\n}, \"getValidatedProcessCredentials\");\n\n// src/resolveProcessCredentials.ts\nvar resolveProcessCredentials = /* @__PURE__ */ __name(async (profileName, profiles, logger) => {\n const profile = profiles[profileName];\n if (profiles[profileName]) {\n const credentialProcess = profile[\"credential_process\"];\n if (credentialProcess !== void 0) {\n const execPromise = (0, import_util.promisify)(import_child_process.exec);\n try {\n const { stdout } = await execPromise(credentialProcess);\n let data;\n try {\n data = JSON.parse(stdout.trim());\n } catch {\n throw Error(`Profile ${profileName} credential_process returned invalid JSON.`);\n }\n return getValidatedProcessCredentials(profileName, data, profiles);\n } catch (error) {\n throw new import_property_provider.CredentialsProviderError(error.message, { logger });\n }\n } else {\n throw new import_property_provider.CredentialsProviderError(`Profile ${profileName} did not contain credential_process.`, { logger });\n }\n } else {\n throw new import_property_provider.CredentialsProviderError(`Profile ${profileName} could not be found in shared credentials file.`, {\n logger\n });\n }\n}, \"resolveProcessCredentials\");\n\n// src/fromProcess.ts\nvar fromProcess = /* @__PURE__ */ __name((init = {}) => async () => {\n var _a;\n (_a = init.logger) == null ? void 0 : _a.debug(\"@aws-sdk/credential-provider-process - fromProcess\");\n const profiles = await (0, import_shared_ini_file_loader.parseKnownFiles)(init);\n return resolveProcessCredentials((0, import_shared_ini_file_loader.getProfileName)(init), profiles, init.logger);\n}, \"fromProcess\");\n// Annotate the CommonJS export names for ESM import in node:\n\n0 && (module.exports = {\n fromProcess\n});\n\n","\"use strict\";\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\nvar __esm = (fn, res) => function __init() {\n return fn && (res = (0, fn[__getOwnPropNames(fn)[0]])(fn = 0)), res;\n};\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/loadSso.ts\nvar loadSso_exports = {};\n__export(loadSso_exports, {\n GetRoleCredentialsCommand: () => import_client_sso.GetRoleCredentialsCommand,\n SSOClient: () => import_client_sso.SSOClient\n});\nvar import_client_sso;\nvar init_loadSso = __esm({\n \"src/loadSso.ts\"() {\n \"use strict\";\n import_client_sso = require(\"@aws-sdk/client-sso\");\n }\n});\n\n// src/index.ts\nvar src_exports = {};\n__export(src_exports, {\n fromSSO: () => fromSSO,\n isSsoProfile: () => isSsoProfile,\n validateSsoProfile: () => validateSsoProfile\n});\nmodule.exports = __toCommonJS(src_exports);\n\n// src/fromSSO.ts\n\n\n\n// src/isSsoProfile.ts\nvar isSsoProfile = /* @__PURE__ */ __name((arg) => arg && (typeof arg.sso_start_url === \"string\" || typeof arg.sso_account_id === \"string\" || typeof arg.sso_session === \"string\" || typeof arg.sso_region === \"string\" || typeof arg.sso_role_name === \"string\"), \"isSsoProfile\");\n\n// src/resolveSSOCredentials.ts\nvar import_token_providers = require(\"@aws-sdk/token-providers\");\nvar import_property_provider = require(\"@smithy/property-provider\");\nvar import_shared_ini_file_loader = require(\"@smithy/shared-ini-file-loader\");\nvar SHOULD_FAIL_CREDENTIAL_CHAIN = false;\nvar resolveSSOCredentials = /* @__PURE__ */ __name(async ({\n ssoStartUrl,\n ssoSession,\n ssoAccountId,\n ssoRegion,\n ssoRoleName,\n ssoClient,\n clientConfig,\n profile,\n logger\n}) => {\n let token;\n const refreshMessage = `To refresh this SSO session run aws sso login with the corresponding profile.`;\n if (ssoSession) {\n try {\n const _token = await (0, import_token_providers.fromSso)({ profile })();\n token = {\n accessToken: _token.token,\n expiresAt: new Date(_token.expiration).toISOString()\n };\n } catch (e) {\n throw new import_property_provider.CredentialsProviderError(e.message, {\n tryNextLink: SHOULD_FAIL_CREDENTIAL_CHAIN,\n logger\n });\n }\n } else {\n try {\n token = await (0, import_shared_ini_file_loader.getSSOTokenFromFile)(ssoStartUrl);\n } catch (e) {\n throw new import_property_provider.CredentialsProviderError(`The SSO session associated with this profile is invalid. ${refreshMessage}`, {\n tryNextLink: SHOULD_FAIL_CREDENTIAL_CHAIN,\n logger\n });\n }\n }\n if (new Date(token.expiresAt).getTime() - Date.now() <= 0) {\n throw new import_property_provider.CredentialsProviderError(`The SSO session associated with this profile has expired. ${refreshMessage}`, {\n tryNextLink: SHOULD_FAIL_CREDENTIAL_CHAIN,\n logger\n });\n }\n const { accessToken } = token;\n const { SSOClient: SSOClient2, GetRoleCredentialsCommand: GetRoleCredentialsCommand2 } = await Promise.resolve().then(() => (init_loadSso(), loadSso_exports));\n const sso = ssoClient || new SSOClient2(\n Object.assign({}, clientConfig ?? {}, {\n region: (clientConfig == null ? void 0 : clientConfig.region) ?? ssoRegion\n })\n );\n let ssoResp;\n try {\n ssoResp = await sso.send(\n new GetRoleCredentialsCommand2({\n accountId: ssoAccountId,\n roleName: ssoRoleName,\n accessToken\n })\n );\n } catch (e) {\n throw new import_property_provider.CredentialsProviderError(e, {\n tryNextLink: SHOULD_FAIL_CREDENTIAL_CHAIN,\n logger\n });\n }\n const {\n roleCredentials: { accessKeyId, secretAccessKey, sessionToken, expiration, credentialScope, accountId } = {}\n } = ssoResp;\n if (!accessKeyId || !secretAccessKey || !sessionToken || !expiration) {\n throw new import_property_provider.CredentialsProviderError(\"SSO returns an invalid temporary credential.\", {\n tryNextLink: SHOULD_FAIL_CREDENTIAL_CHAIN,\n logger\n });\n }\n return {\n accessKeyId,\n secretAccessKey,\n sessionToken,\n expiration: new Date(expiration),\n ...credentialScope && { credentialScope },\n ...accountId && { accountId }\n };\n}, \"resolveSSOCredentials\");\n\n// src/validateSsoProfile.ts\n\nvar validateSsoProfile = /* @__PURE__ */ __name((profile, logger) => {\n const { sso_start_url, sso_account_id, sso_region, sso_role_name } = profile;\n if (!sso_start_url || !sso_account_id || !sso_region || !sso_role_name) {\n throw new import_property_provider.CredentialsProviderError(\n `Profile is configured with invalid SSO credentials. Required parameters \"sso_account_id\", \"sso_region\", \"sso_role_name\", \"sso_start_url\". Got ${Object.keys(profile).join(\n \", \"\n )}\nReference: https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-sso.html`,\n { tryNextLink: false, logger }\n );\n }\n return profile;\n}, \"validateSsoProfile\");\n\n// src/fromSSO.ts\nvar fromSSO = /* @__PURE__ */ __name((init = {}) => async () => {\n var _a;\n (_a = init.logger) == null ? void 0 : _a.debug(\"@aws-sdk/credential-provider-sso - fromSSO\");\n const { ssoStartUrl, ssoAccountId, ssoRegion, ssoRoleName, ssoSession } = init;\n const { ssoClient } = init;\n const profileName = (0, import_shared_ini_file_loader.getProfileName)(init);\n if (!ssoStartUrl && !ssoAccountId && !ssoRegion && !ssoRoleName && !ssoSession) {\n const profiles = await (0, import_shared_ini_file_loader.parseKnownFiles)(init);\n const profile = profiles[profileName];\n if (!profile) {\n throw new import_property_provider.CredentialsProviderError(`Profile ${profileName} was not found.`, { logger: init.logger });\n }\n if (!isSsoProfile(profile)) {\n throw new import_property_provider.CredentialsProviderError(`Profile ${profileName} is not configured with SSO credentials.`, {\n logger: init.logger\n });\n }\n if (profile == null ? void 0 : profile.sso_session) {\n const ssoSessions = await (0, import_shared_ini_file_loader.loadSsoSessionData)(init);\n const session = ssoSessions[profile.sso_session];\n const conflictMsg = ` configurations in profile ${profileName} and sso-session ${profile.sso_session}`;\n if (ssoRegion && ssoRegion !== session.sso_region) {\n throw new import_property_provider.CredentialsProviderError(`Conflicting SSO region` + conflictMsg, {\n tryNextLink: false,\n logger: init.logger\n });\n }\n if (ssoStartUrl && ssoStartUrl !== session.sso_start_url) {\n throw new import_property_provider.CredentialsProviderError(`Conflicting SSO start_url` + conflictMsg, {\n tryNextLink: false,\n logger: init.logger\n });\n }\n profile.sso_region = session.sso_region;\n profile.sso_start_url = session.sso_start_url;\n }\n const { sso_start_url, sso_account_id, sso_region, sso_role_name, sso_session } = validateSsoProfile(\n profile,\n init.logger\n );\n return resolveSSOCredentials({\n ssoStartUrl: sso_start_url,\n ssoSession: sso_session,\n ssoAccountId: sso_account_id,\n ssoRegion: sso_region,\n ssoRoleName: sso_role_name,\n ssoClient,\n clientConfig: init.clientConfig,\n profile: profileName\n });\n } else if (!ssoStartUrl || !ssoAccountId || !ssoRegion || !ssoRoleName) {\n throw new import_property_provider.CredentialsProviderError(\n 'Incomplete configuration. The fromSSO() argument hash must include \"ssoStartUrl\", \"ssoAccountId\", \"ssoRegion\", \"ssoRoleName\"',\n { tryNextLink: false, logger: init.logger }\n );\n } else {\n return resolveSSOCredentials({\n ssoStartUrl,\n ssoSession,\n ssoAccountId,\n ssoRegion,\n ssoRoleName,\n ssoClient,\n clientConfig: init.clientConfig,\n profile: profileName\n });\n }\n}, \"fromSSO\");\n// Annotate the CommonJS export names for ESM import in node:\n\n0 && (module.exports = {\n fromSSO,\n isSsoProfile,\n validateSsoProfile\n});\n\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.fromTokenFile = void 0;\nconst property_provider_1 = require(\"@smithy/property-provider\");\nconst fs_1 = require(\"fs\");\nconst fromWebToken_1 = require(\"./fromWebToken\");\nconst ENV_TOKEN_FILE = \"AWS_WEB_IDENTITY_TOKEN_FILE\";\nconst ENV_ROLE_ARN = \"AWS_ROLE_ARN\";\nconst ENV_ROLE_SESSION_NAME = \"AWS_ROLE_SESSION_NAME\";\nconst fromTokenFile = (init = {}) => async () => {\n init.logger?.debug(\"@aws-sdk/credential-provider-web-identity - fromTokenFile\");\n const webIdentityTokenFile = init?.webIdentityTokenFile ?? process.env[ENV_TOKEN_FILE];\n const roleArn = init?.roleArn ?? process.env[ENV_ROLE_ARN];\n const roleSessionName = init?.roleSessionName ?? process.env[ENV_ROLE_SESSION_NAME];\n if (!webIdentityTokenFile || !roleArn) {\n throw new property_provider_1.CredentialsProviderError(\"Web identity configuration not specified\", {\n logger: init.logger,\n });\n }\n return (0, fromWebToken_1.fromWebToken)({\n ...init,\n webIdentityToken: (0, fs_1.readFileSync)(webIdentityTokenFile, { encoding: \"ascii\" }),\n roleArn,\n roleSessionName,\n })();\n};\nexports.fromTokenFile = fromTokenFile;\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.fromWebToken = void 0;\nconst fromWebToken = (init) => async () => {\n init.logger?.debug(\"@aws-sdk/credential-provider-web-identity - fromWebToken\");\n const { roleArn, roleSessionName, webIdentityToken, providerId, policyArns, policy, durationSeconds } = init;\n let { roleAssumerWithWebIdentity } = init;\n if (!roleAssumerWithWebIdentity) {\n const { getDefaultRoleAssumerWithWebIdentity } = await Promise.resolve().then(() => __importStar(require(\"@aws-sdk/client-sts\")));\n roleAssumerWithWebIdentity = getDefaultRoleAssumerWithWebIdentity({\n ...init.clientConfig,\n credentialProviderLogger: init.logger,\n parentClientConfig: init.parentClientConfig,\n }, init.clientPlugins);\n }\n return roleAssumerWithWebIdentity({\n RoleArn: roleArn,\n RoleSessionName: roleSessionName ?? `aws-sdk-js-session-${Date.now()}`,\n WebIdentityToken: webIdentityToken,\n ProviderId: providerId,\n PolicyArns: policyArns,\n Policy: policy,\n DurationSeconds: durationSeconds,\n });\n};\nexports.fromWebToken = fromWebToken;\n","\"use strict\";\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, \"default\"), secondTarget && __copyProps(secondTarget, mod, \"default\"));\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/index.ts\nvar src_exports = {};\nmodule.exports = __toCommonJS(src_exports);\n__reExport(src_exports, require(\"././fromTokenFile\"), module.exports);\n__reExport(src_exports, require(\"././fromWebToken\"), module.exports);\n// Annotate the CommonJS export names for ESM import in node:\n\n0 && (module.exports = {\n fromTokenFile,\n fromWebToken\n});\n\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.createCredentialChain = void 0;\nconst property_provider_1 = require(\"@smithy/property-provider\");\nconst createCredentialChain = (...credentialProviders) => {\n let expireAfter = -1;\n const baseFunction = async () => {\n const credentials = await (0, property_provider_1.chain)(...credentialProviders)();\n if (!credentials.expiration && expireAfter !== -1) {\n credentials.expiration = new Date(Date.now() + expireAfter);\n }\n return credentials;\n };\n const withOptions = Object.assign(baseFunction, {\n expireAfter(milliseconds) {\n if (milliseconds < 5 * 60000) {\n throw new Error(\"@aws-sdk/credential-providers - createCredentialChain(...).expireAfter(ms) may not be called with a duration lower than five minutes.\");\n }\n expireAfter = milliseconds;\n return withOptions;\n },\n });\n return withOptions;\n};\nexports.createCredentialChain = createCredentialChain;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.fromCognitoIdentity = void 0;\nconst credential_provider_cognito_identity_1 = require(\"@aws-sdk/credential-provider-cognito-identity\");\nconst fromCognitoIdentity = (options) => (0, credential_provider_cognito_identity_1.fromCognitoIdentity)({\n ...options,\n});\nexports.fromCognitoIdentity = fromCognitoIdentity;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.fromCognitoIdentityPool = void 0;\nconst credential_provider_cognito_identity_1 = require(\"@aws-sdk/credential-provider-cognito-identity\");\nconst fromCognitoIdentityPool = (options) => (0, credential_provider_cognito_identity_1.fromCognitoIdentityPool)({\n ...options,\n});\nexports.fromCognitoIdentityPool = fromCognitoIdentityPool;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.fromContainerMetadata = void 0;\nconst credential_provider_imds_1 = require(\"@smithy/credential-provider-imds\");\nconst fromContainerMetadata = (init) => {\n init?.logger?.debug(\"@smithy/credential-provider-imds\", \"fromContainerMetadata\");\n return (0, credential_provider_imds_1.fromContainerMetadata)(init);\n};\nexports.fromContainerMetadata = fromContainerMetadata;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.fromEnv = void 0;\nconst credential_provider_env_1 = require(\"@aws-sdk/credential-provider-env\");\nconst fromEnv = (init) => (0, credential_provider_env_1.fromEnv)(init);\nexports.fromEnv = fromEnv;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.fromIni = void 0;\nconst credential_provider_ini_1 = require(\"@aws-sdk/credential-provider-ini\");\nconst fromIni = (init = {}) => (0, credential_provider_ini_1.fromIni)({\n ...init,\n});\nexports.fromIni = fromIni;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.fromInstanceMetadata = void 0;\nconst credential_provider_imds_1 = require(\"@smithy/credential-provider-imds\");\nconst fromInstanceMetadata = (init) => {\n init?.logger?.debug(\"@smithy/credential-provider-imds\", \"fromInstanceMetadata\");\n return (0, credential_provider_imds_1.fromInstanceMetadata)(init);\n};\nexports.fromInstanceMetadata = fromInstanceMetadata;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.fromNodeProviderChain = void 0;\nconst credential_provider_node_1 = require(\"@aws-sdk/credential-provider-node\");\nconst fromNodeProviderChain = (init = {}) => (0, credential_provider_node_1.defaultProvider)({\n ...init,\n});\nexports.fromNodeProviderChain = fromNodeProviderChain;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.fromProcess = void 0;\nconst credential_provider_process_1 = require(\"@aws-sdk/credential-provider-process\");\nconst fromProcess = (init) => (0, credential_provider_process_1.fromProcess)(init);\nexports.fromProcess = fromProcess;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.fromSSO = void 0;\nconst credential_provider_sso_1 = require(\"@aws-sdk/credential-provider-sso\");\nconst fromSSO = (init = {}) => {\n return (0, credential_provider_sso_1.fromSSO)({ ...init });\n};\nexports.fromSSO = fromSSO;\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.fromTemporaryCredentials = void 0;\nconst property_provider_1 = require(\"@smithy/property-provider\");\nconst fromTemporaryCredentials = (options) => {\n let stsClient;\n return async () => {\n options.logger?.debug(\"@aws-sdk/credential-providers - fromTemporaryCredentials (STS)\");\n const params = { ...options.params, RoleSessionName: options.params.RoleSessionName ?? \"aws-sdk-js-\" + Date.now() };\n if (params?.SerialNumber) {\n if (!options.mfaCodeProvider) {\n throw new property_provider_1.CredentialsProviderError(`Temporary credential requires multi-factor authentication,` + ` but no MFA code callback was provided.`, {\n tryNextLink: false,\n logger: options.logger,\n });\n }\n params.TokenCode = await options.mfaCodeProvider(params?.SerialNumber);\n }\n const { AssumeRoleCommand, STSClient } = await Promise.resolve().then(() => __importStar(require(\"./loadSts\")));\n if (!stsClient)\n stsClient = new STSClient({ ...options.clientConfig, credentials: options.masterCredentials });\n if (options.clientPlugins) {\n for (const plugin of options.clientPlugins) {\n stsClient.middlewareStack.use(plugin);\n }\n }\n const { Credentials } = await stsClient.send(new AssumeRoleCommand(params));\n if (!Credentials || !Credentials.AccessKeyId || !Credentials.SecretAccessKey) {\n throw new property_provider_1.CredentialsProviderError(`Invalid response from STS.assumeRole call with role ${params.RoleArn}`, {\n logger: options.logger,\n });\n }\n return {\n accessKeyId: Credentials.AccessKeyId,\n secretAccessKey: Credentials.SecretAccessKey,\n sessionToken: Credentials.SessionToken,\n expiration: Credentials.Expiration,\n credentialScope: Credentials.CredentialScope,\n };\n };\n};\nexports.fromTemporaryCredentials = fromTemporaryCredentials;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.fromTokenFile = void 0;\nconst credential_provider_web_identity_1 = require(\"@aws-sdk/credential-provider-web-identity\");\nconst fromTokenFile = (init = {}) => (0, credential_provider_web_identity_1.fromTokenFile)({\n ...init,\n});\nexports.fromTokenFile = fromTokenFile;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.fromWebToken = void 0;\nconst credential_provider_web_identity_1 = require(\"@aws-sdk/credential-provider-web-identity\");\nconst fromWebToken = (init) => (0, credential_provider_web_identity_1.fromWebToken)({\n ...init,\n});\nexports.fromWebToken = fromWebToken;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.fromHttp = void 0;\nconst tslib_1 = require(\"tslib\");\ntslib_1.__exportStar(require(\"./createCredentialChain\"), exports);\ntslib_1.__exportStar(require(\"./fromCognitoIdentity\"), exports);\ntslib_1.__exportStar(require(\"./fromCognitoIdentityPool\"), exports);\ntslib_1.__exportStar(require(\"./fromContainerMetadata\"), exports);\nvar credential_provider_http_1 = require(\"@aws-sdk/credential-provider-http\");\nObject.defineProperty(exports, \"fromHttp\", { enumerable: true, get: function () { return credential_provider_http_1.fromHttp; } });\ntslib_1.__exportStar(require(\"./fromEnv\"), exports);\ntslib_1.__exportStar(require(\"./fromIni\"), exports);\ntslib_1.__exportStar(require(\"./fromInstanceMetadata\"), exports);\ntslib_1.__exportStar(require(\"./fromNodeProviderChain\"), exports);\ntslib_1.__exportStar(require(\"./fromProcess\"), exports);\ntslib_1.__exportStar(require(\"./fromSSO\"), exports);\ntslib_1.__exportStar(require(\"./fromTemporaryCredentials\"), exports);\ntslib_1.__exportStar(require(\"./fromTokenFile\"), exports);\ntslib_1.__exportStar(require(\"./fromWebToken\"), exports);\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.STSClient = exports.AssumeRoleCommand = void 0;\nconst client_sts_1 = require(\"@aws-sdk/client-sts\");\nObject.defineProperty(exports, \"AssumeRoleCommand\", { enumerable: true, get: function () { return client_sts_1.AssumeRoleCommand; } });\nObject.defineProperty(exports, \"STSClient\", { enumerable: true, get: function () { return client_sts_1.STSClient; } });\n","\"use strict\";\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/index.ts\nvar src_exports = {};\n__export(src_exports, {\n getHostHeaderPlugin: () => getHostHeaderPlugin,\n hostHeaderMiddleware: () => hostHeaderMiddleware,\n hostHeaderMiddlewareOptions: () => hostHeaderMiddlewareOptions,\n resolveHostHeaderConfig: () => resolveHostHeaderConfig\n});\nmodule.exports = __toCommonJS(src_exports);\nvar import_protocol_http = require(\"@smithy/protocol-http\");\nfunction resolveHostHeaderConfig(input) {\n return input;\n}\n__name(resolveHostHeaderConfig, \"resolveHostHeaderConfig\");\nvar hostHeaderMiddleware = /* @__PURE__ */ __name((options) => (next) => async (args) => {\n if (!import_protocol_http.HttpRequest.isInstance(args.request))\n return next(args);\n const { request } = args;\n const { handlerProtocol = \"\" } = options.requestHandler.metadata || {};\n if (handlerProtocol.indexOf(\"h2\") >= 0 && !request.headers[\":authority\"]) {\n delete request.headers[\"host\"];\n request.headers[\":authority\"] = request.hostname + (request.port ? \":\" + request.port : \"\");\n } else if (!request.headers[\"host\"]) {\n let host = request.hostname;\n if (request.port != null)\n host += `:${request.port}`;\n request.headers[\"host\"] = host;\n }\n return next(args);\n}, \"hostHeaderMiddleware\");\nvar hostHeaderMiddlewareOptions = {\n name: \"hostHeaderMiddleware\",\n step: \"build\",\n priority: \"low\",\n tags: [\"HOST\"],\n override: true\n};\nvar getHostHeaderPlugin = /* @__PURE__ */ __name((options) => ({\n applyToStack: (clientStack) => {\n clientStack.add(hostHeaderMiddleware(options), hostHeaderMiddlewareOptions);\n }\n}), \"getHostHeaderPlugin\");\n// Annotate the CommonJS export names for ESM import in node:\n\n0 && (module.exports = {\n resolveHostHeaderConfig,\n hostHeaderMiddleware,\n hostHeaderMiddlewareOptions,\n getHostHeaderPlugin\n});\n\n","\"use strict\";\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/index.ts\nvar src_exports = {};\n__export(src_exports, {\n getLoggerPlugin: () => getLoggerPlugin,\n loggerMiddleware: () => loggerMiddleware,\n loggerMiddlewareOptions: () => loggerMiddlewareOptions\n});\nmodule.exports = __toCommonJS(src_exports);\n\n// src/loggerMiddleware.ts\nvar loggerMiddleware = /* @__PURE__ */ __name(() => (next, context) => async (args) => {\n var _a, _b;\n try {\n const response = await next(args);\n const { clientName, commandName, logger, dynamoDbDocumentClientOptions = {} } = context;\n const { overrideInputFilterSensitiveLog, overrideOutputFilterSensitiveLog } = dynamoDbDocumentClientOptions;\n const inputFilterSensitiveLog = overrideInputFilterSensitiveLog ?? context.inputFilterSensitiveLog;\n const outputFilterSensitiveLog = overrideOutputFilterSensitiveLog ?? context.outputFilterSensitiveLog;\n const { $metadata, ...outputWithoutMetadata } = response.output;\n (_a = logger == null ? void 0 : logger.info) == null ? void 0 : _a.call(logger, {\n clientName,\n commandName,\n input: inputFilterSensitiveLog(args.input),\n output: outputFilterSensitiveLog(outputWithoutMetadata),\n metadata: $metadata\n });\n return response;\n } catch (error) {\n const { clientName, commandName, logger, dynamoDbDocumentClientOptions = {} } = context;\n const { overrideInputFilterSensitiveLog } = dynamoDbDocumentClientOptions;\n const inputFilterSensitiveLog = overrideInputFilterSensitiveLog ?? context.inputFilterSensitiveLog;\n (_b = logger == null ? void 0 : logger.error) == null ? void 0 : _b.call(logger, {\n clientName,\n commandName,\n input: inputFilterSensitiveLog(args.input),\n error,\n metadata: error.$metadata\n });\n throw error;\n }\n}, \"loggerMiddleware\");\nvar loggerMiddlewareOptions = {\n name: \"loggerMiddleware\",\n tags: [\"LOGGER\"],\n step: \"initialize\",\n override: true\n};\nvar getLoggerPlugin = /* @__PURE__ */ __name((options) => ({\n applyToStack: (clientStack) => {\n clientStack.add(loggerMiddleware(), loggerMiddlewareOptions);\n }\n}), \"getLoggerPlugin\");\n// Annotate the CommonJS export names for ESM import in node:\n\n0 && (module.exports = {\n loggerMiddleware,\n loggerMiddlewareOptions,\n getLoggerPlugin\n});\n\n","\"use strict\";\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/index.ts\nvar src_exports = {};\n__export(src_exports, {\n addRecursionDetectionMiddlewareOptions: () => addRecursionDetectionMiddlewareOptions,\n getRecursionDetectionPlugin: () => getRecursionDetectionPlugin,\n recursionDetectionMiddleware: () => recursionDetectionMiddleware\n});\nmodule.exports = __toCommonJS(src_exports);\nvar import_protocol_http = require(\"@smithy/protocol-http\");\nvar TRACE_ID_HEADER_NAME = \"X-Amzn-Trace-Id\";\nvar ENV_LAMBDA_FUNCTION_NAME = \"AWS_LAMBDA_FUNCTION_NAME\";\nvar ENV_TRACE_ID = \"_X_AMZN_TRACE_ID\";\nvar recursionDetectionMiddleware = /* @__PURE__ */ __name((options) => (next) => async (args) => {\n const { request } = args;\n if (!import_protocol_http.HttpRequest.isInstance(request) || options.runtime !== \"node\" || request.headers.hasOwnProperty(TRACE_ID_HEADER_NAME)) {\n return next(args);\n }\n const functionName = process.env[ENV_LAMBDA_FUNCTION_NAME];\n const traceId = process.env[ENV_TRACE_ID];\n const nonEmptyString = /* @__PURE__ */ __name((str) => typeof str === \"string\" && str.length > 0, \"nonEmptyString\");\n if (nonEmptyString(functionName) && nonEmptyString(traceId)) {\n request.headers[TRACE_ID_HEADER_NAME] = traceId;\n }\n return next({\n ...args,\n request\n });\n}, \"recursionDetectionMiddleware\");\nvar addRecursionDetectionMiddlewareOptions = {\n step: \"build\",\n tags: [\"RECURSION_DETECTION\"],\n name: \"recursionDetectionMiddleware\",\n override: true,\n priority: \"low\"\n};\nvar getRecursionDetectionPlugin = /* @__PURE__ */ __name((options) => ({\n applyToStack: (clientStack) => {\n clientStack.add(recursionDetectionMiddleware(options), addRecursionDetectionMiddlewareOptions);\n }\n}), \"getRecursionDetectionPlugin\");\n// Annotate the CommonJS export names for ESM import in node:\n\n0 && (module.exports = {\n recursionDetectionMiddleware,\n addRecursionDetectionMiddlewareOptions,\n getRecursionDetectionPlugin\n});\n\n","\"use strict\";\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/index.ts\nvar src_exports = {};\n__export(src_exports, {\n getUserAgentMiddlewareOptions: () => getUserAgentMiddlewareOptions,\n getUserAgentPlugin: () => getUserAgentPlugin,\n resolveUserAgentConfig: () => resolveUserAgentConfig,\n userAgentMiddleware: () => userAgentMiddleware\n});\nmodule.exports = __toCommonJS(src_exports);\n\n// src/configurations.ts\nfunction resolveUserAgentConfig(input) {\n return {\n ...input,\n customUserAgent: typeof input.customUserAgent === \"string\" ? [[input.customUserAgent]] : input.customUserAgent\n };\n}\n__name(resolveUserAgentConfig, \"resolveUserAgentConfig\");\n\n// src/user-agent-middleware.ts\nvar import_util_endpoints = require(\"@aws-sdk/util-endpoints\");\nvar import_protocol_http = require(\"@smithy/protocol-http\");\n\n// src/constants.ts\nvar USER_AGENT = \"user-agent\";\nvar X_AMZ_USER_AGENT = \"x-amz-user-agent\";\nvar SPACE = \" \";\nvar UA_NAME_SEPARATOR = \"/\";\nvar UA_NAME_ESCAPE_REGEX = /[^\\!\\$\\%\\&\\'\\*\\+\\-\\.\\^\\_\\`\\|\\~\\d\\w]/g;\nvar UA_VALUE_ESCAPE_REGEX = /[^\\!\\$\\%\\&\\'\\*\\+\\-\\.\\^\\_\\`\\|\\~\\d\\w\\#]/g;\nvar UA_ESCAPE_CHAR = \"-\";\n\n// src/user-agent-middleware.ts\nvar userAgentMiddleware = /* @__PURE__ */ __name((options) => (next, context) => async (args) => {\n var _a, _b;\n const { request } = args;\n if (!import_protocol_http.HttpRequest.isInstance(request))\n return next(args);\n const { headers } = request;\n const userAgent = ((_a = context == null ? void 0 : context.userAgent) == null ? void 0 : _a.map(escapeUserAgent)) || [];\n const defaultUserAgent = (await options.defaultUserAgentProvider()).map(escapeUserAgent);\n const customUserAgent = ((_b = options == null ? void 0 : options.customUserAgent) == null ? void 0 : _b.map(escapeUserAgent)) || [];\n const prefix = (0, import_util_endpoints.getUserAgentPrefix)();\n const sdkUserAgentValue = (prefix ? [prefix] : []).concat([...defaultUserAgent, ...userAgent, ...customUserAgent]).join(SPACE);\n const normalUAValue = [\n ...defaultUserAgent.filter((section) => section.startsWith(\"aws-sdk-\")),\n ...customUserAgent\n ].join(SPACE);\n if (options.runtime !== \"browser\") {\n if (normalUAValue) {\n headers[X_AMZ_USER_AGENT] = headers[X_AMZ_USER_AGENT] ? `${headers[USER_AGENT]} ${normalUAValue}` : normalUAValue;\n }\n headers[USER_AGENT] = sdkUserAgentValue;\n } else {\n headers[X_AMZ_USER_AGENT] = sdkUserAgentValue;\n }\n return next({\n ...args,\n request\n });\n}, \"userAgentMiddleware\");\nvar escapeUserAgent = /* @__PURE__ */ __name((userAgentPair) => {\n var _a;\n const name = userAgentPair[0].split(UA_NAME_SEPARATOR).map((part) => part.replace(UA_NAME_ESCAPE_REGEX, UA_ESCAPE_CHAR)).join(UA_NAME_SEPARATOR);\n const version = (_a = userAgentPair[1]) == null ? void 0 : _a.replace(UA_VALUE_ESCAPE_REGEX, UA_ESCAPE_CHAR);\n const prefixSeparatorIndex = name.indexOf(UA_NAME_SEPARATOR);\n const prefix = name.substring(0, prefixSeparatorIndex);\n let uaName = name.substring(prefixSeparatorIndex + 1);\n if (prefix === \"api\") {\n uaName = uaName.toLowerCase();\n }\n return [prefix, uaName, version].filter((item) => item && item.length > 0).reduce((acc, item, index) => {\n switch (index) {\n case 0:\n return item;\n case 1:\n return `${acc}/${item}`;\n default:\n return `${acc}#${item}`;\n }\n }, \"\");\n}, \"escapeUserAgent\");\nvar getUserAgentMiddlewareOptions = {\n name: \"getUserAgentMiddleware\",\n step: \"build\",\n priority: \"low\",\n tags: [\"SET_USER_AGENT\", \"USER_AGENT\"],\n override: true\n};\nvar getUserAgentPlugin = /* @__PURE__ */ __name((config) => ({\n applyToStack: (clientStack) => {\n clientStack.add(userAgentMiddleware(config), getUserAgentMiddlewareOptions);\n }\n}), \"getUserAgentPlugin\");\n// Annotate the CommonJS export names for ESM import in node:\n\n0 && (module.exports = {\n resolveUserAgentConfig,\n userAgentMiddleware,\n getUserAgentMiddlewareOptions,\n getUserAgentPlugin\n});\n\n","\"use strict\";\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/index.ts\nvar src_exports = {};\n__export(src_exports, {\n NODE_REGION_CONFIG_FILE_OPTIONS: () => NODE_REGION_CONFIG_FILE_OPTIONS,\n NODE_REGION_CONFIG_OPTIONS: () => NODE_REGION_CONFIG_OPTIONS,\n REGION_ENV_NAME: () => REGION_ENV_NAME,\n REGION_INI_NAME: () => REGION_INI_NAME,\n getAwsRegionExtensionConfiguration: () => getAwsRegionExtensionConfiguration,\n resolveAwsRegionExtensionConfiguration: () => resolveAwsRegionExtensionConfiguration,\n resolveRegionConfig: () => resolveRegionConfig\n});\nmodule.exports = __toCommonJS(src_exports);\n\n// src/extensions/index.ts\nvar getAwsRegionExtensionConfiguration = /* @__PURE__ */ __name((runtimeConfig) => {\n let runtimeConfigRegion = /* @__PURE__ */ __name(async () => {\n if (runtimeConfig.region === void 0) {\n throw new Error(\"Region is missing from runtimeConfig\");\n }\n const region = runtimeConfig.region;\n if (typeof region === \"string\") {\n return region;\n }\n return region();\n }, \"runtimeConfigRegion\");\n return {\n setRegion(region) {\n runtimeConfigRegion = region;\n },\n region() {\n return runtimeConfigRegion;\n }\n };\n}, \"getAwsRegionExtensionConfiguration\");\nvar resolveAwsRegionExtensionConfiguration = /* @__PURE__ */ __name((awsRegionExtensionConfiguration) => {\n return {\n region: awsRegionExtensionConfiguration.region()\n };\n}, \"resolveAwsRegionExtensionConfiguration\");\n\n// src/regionConfig/config.ts\nvar REGION_ENV_NAME = \"AWS_REGION\";\nvar REGION_INI_NAME = \"region\";\nvar NODE_REGION_CONFIG_OPTIONS = {\n environmentVariableSelector: (env) => env[REGION_ENV_NAME],\n configFileSelector: (profile) => profile[REGION_INI_NAME],\n default: () => {\n throw new Error(\"Region is missing\");\n }\n};\nvar NODE_REGION_CONFIG_FILE_OPTIONS = {\n preferredFile: \"credentials\"\n};\n\n// src/regionConfig/isFipsRegion.ts\nvar isFipsRegion = /* @__PURE__ */ __name((region) => typeof region === \"string\" && (region.startsWith(\"fips-\") || region.endsWith(\"-fips\")), \"isFipsRegion\");\n\n// src/regionConfig/getRealRegion.ts\nvar getRealRegion = /* @__PURE__ */ __name((region) => isFipsRegion(region) ? [\"fips-aws-global\", \"aws-fips\"].includes(region) ? \"us-east-1\" : region.replace(/fips-(dkr-|prod-)?|-fips/, \"\") : region, \"getRealRegion\");\n\n// src/regionConfig/resolveRegionConfig.ts\nvar resolveRegionConfig = /* @__PURE__ */ __name((input) => {\n const { region, useFipsEndpoint } = input;\n if (!region) {\n throw new Error(\"Region is missing\");\n }\n return {\n ...input,\n region: async () => {\n if (typeof region === \"string\") {\n return getRealRegion(region);\n }\n const providedRegion = await region();\n return getRealRegion(providedRegion);\n },\n useFipsEndpoint: async () => {\n const providedRegion = typeof region === \"string\" ? region : await region();\n if (isFipsRegion(providedRegion)) {\n return true;\n }\n return typeof useFipsEndpoint !== \"function\" ? Promise.resolve(!!useFipsEndpoint) : useFipsEndpoint();\n }\n };\n}, \"resolveRegionConfig\");\n// Annotate the CommonJS export names for ESM import in node:\n\n0 && (module.exports = {\n getAwsRegionExtensionConfiguration,\n resolveAwsRegionExtensionConfiguration,\n REGION_ENV_NAME,\n REGION_INI_NAME,\n NODE_REGION_CONFIG_OPTIONS,\n NODE_REGION_CONFIG_FILE_OPTIONS,\n resolveRegionConfig\n});\n\n","\"use strict\";\nvar __create = Object.create;\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __getProtoOf = Object.getPrototypeOf;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(\n // If the importer is in node compatibility mode or this is not an ESM\n // file that has been converted to a CommonJS file using a Babel-\n // compatible transform (i.e. \"__esModule\" has not been set), then set\n // \"default\" to the CommonJS \"module.exports\" for node compatibility.\n isNodeMode || !mod || !mod.__esModule ? __defProp(target, \"default\", { value: mod, enumerable: true }) : target,\n mod\n));\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/index.ts\nvar src_exports = {};\n__export(src_exports, {\n fromSso: () => fromSso,\n fromStatic: () => fromStatic,\n nodeProvider: () => nodeProvider\n});\nmodule.exports = __toCommonJS(src_exports);\n\n// src/fromSso.ts\n\n\n\n// src/constants.ts\nvar EXPIRE_WINDOW_MS = 5 * 60 * 1e3;\nvar REFRESH_MESSAGE = `To refresh this SSO session run 'aws sso login' with the corresponding profile.`;\n\n// src/getSsoOidcClient.ts\nvar ssoOidcClientsHash = {};\nvar getSsoOidcClient = /* @__PURE__ */ __name(async (ssoRegion) => {\n const { SSOOIDCClient } = await Promise.resolve().then(() => __toESM(require(\"@aws-sdk/client-sso-oidc\")));\n if (ssoOidcClientsHash[ssoRegion]) {\n return ssoOidcClientsHash[ssoRegion];\n }\n const ssoOidcClient = new SSOOIDCClient({ region: ssoRegion });\n ssoOidcClientsHash[ssoRegion] = ssoOidcClient;\n return ssoOidcClient;\n}, \"getSsoOidcClient\");\n\n// src/getNewSsoOidcToken.ts\nvar getNewSsoOidcToken = /* @__PURE__ */ __name(async (ssoToken, ssoRegion) => {\n const { CreateTokenCommand } = await Promise.resolve().then(() => __toESM(require(\"@aws-sdk/client-sso-oidc\")));\n const ssoOidcClient = await getSsoOidcClient(ssoRegion);\n return ssoOidcClient.send(\n new CreateTokenCommand({\n clientId: ssoToken.clientId,\n clientSecret: ssoToken.clientSecret,\n refreshToken: ssoToken.refreshToken,\n grantType: \"refresh_token\"\n })\n );\n}, \"getNewSsoOidcToken\");\n\n// src/validateTokenExpiry.ts\nvar import_property_provider = require(\"@smithy/property-provider\");\nvar validateTokenExpiry = /* @__PURE__ */ __name((token) => {\n if (token.expiration && token.expiration.getTime() < Date.now()) {\n throw new import_property_provider.TokenProviderError(`Token is expired. ${REFRESH_MESSAGE}`, false);\n }\n}, \"validateTokenExpiry\");\n\n// src/validateTokenKey.ts\n\nvar validateTokenKey = /* @__PURE__ */ __name((key, value, forRefresh = false) => {\n if (typeof value === \"undefined\") {\n throw new import_property_provider.TokenProviderError(\n `Value not present for '${key}' in SSO Token${forRefresh ? \". Cannot refresh\" : \"\"}. ${REFRESH_MESSAGE}`,\n false\n );\n }\n}, \"validateTokenKey\");\n\n// src/writeSSOTokenToFile.ts\nvar import_shared_ini_file_loader = require(\"@smithy/shared-ini-file-loader\");\nvar import_fs = require(\"fs\");\nvar { writeFile } = import_fs.promises;\nvar writeSSOTokenToFile = /* @__PURE__ */ __name((id, ssoToken) => {\n const tokenFilepath = (0, import_shared_ini_file_loader.getSSOTokenFilepath)(id);\n const tokenString = JSON.stringify(ssoToken, null, 2);\n return writeFile(tokenFilepath, tokenString);\n}, \"writeSSOTokenToFile\");\n\n// src/fromSso.ts\nvar lastRefreshAttemptTime = /* @__PURE__ */ new Date(0);\nvar fromSso = /* @__PURE__ */ __name((init = {}) => async () => {\n var _a;\n (_a = init.logger) == null ? void 0 : _a.debug(\"@aws-sdk/token-providers - fromSso\");\n const profiles = await (0, import_shared_ini_file_loader.parseKnownFiles)(init);\n const profileName = (0, import_shared_ini_file_loader.getProfileName)(init);\n const profile = profiles[profileName];\n if (!profile) {\n throw new import_property_provider.TokenProviderError(`Profile '${profileName}' could not be found in shared credentials file.`, false);\n } else if (!profile[\"sso_session\"]) {\n throw new import_property_provider.TokenProviderError(`Profile '${profileName}' is missing required property 'sso_session'.`);\n }\n const ssoSessionName = profile[\"sso_session\"];\n const ssoSessions = await (0, import_shared_ini_file_loader.loadSsoSessionData)(init);\n const ssoSession = ssoSessions[ssoSessionName];\n if (!ssoSession) {\n throw new import_property_provider.TokenProviderError(\n `Sso session '${ssoSessionName}' could not be found in shared credentials file.`,\n false\n );\n }\n for (const ssoSessionRequiredKey of [\"sso_start_url\", \"sso_region\"]) {\n if (!ssoSession[ssoSessionRequiredKey]) {\n throw new import_property_provider.TokenProviderError(\n `Sso session '${ssoSessionName}' is missing required property '${ssoSessionRequiredKey}'.`,\n false\n );\n }\n }\n const ssoStartUrl = ssoSession[\"sso_start_url\"];\n const ssoRegion = ssoSession[\"sso_region\"];\n let ssoToken;\n try {\n ssoToken = await (0, import_shared_ini_file_loader.getSSOTokenFromFile)(ssoSessionName);\n } catch (e) {\n throw new import_property_provider.TokenProviderError(\n `The SSO session token associated with profile=${profileName} was not found or is invalid. ${REFRESH_MESSAGE}`,\n false\n );\n }\n validateTokenKey(\"accessToken\", ssoToken.accessToken);\n validateTokenKey(\"expiresAt\", ssoToken.expiresAt);\n const { accessToken, expiresAt } = ssoToken;\n const existingToken = { token: accessToken, expiration: new Date(expiresAt) };\n if (existingToken.expiration.getTime() - Date.now() > EXPIRE_WINDOW_MS) {\n return existingToken;\n }\n if (Date.now() - lastRefreshAttemptTime.getTime() < 30 * 1e3) {\n validateTokenExpiry(existingToken);\n return existingToken;\n }\n validateTokenKey(\"clientId\", ssoToken.clientId, true);\n validateTokenKey(\"clientSecret\", ssoToken.clientSecret, true);\n validateTokenKey(\"refreshToken\", ssoToken.refreshToken, true);\n try {\n lastRefreshAttemptTime.setTime(Date.now());\n const newSsoOidcToken = await getNewSsoOidcToken(ssoToken, ssoRegion);\n validateTokenKey(\"accessToken\", newSsoOidcToken.accessToken);\n validateTokenKey(\"expiresIn\", newSsoOidcToken.expiresIn);\n const newTokenExpiration = new Date(Date.now() + newSsoOidcToken.expiresIn * 1e3);\n try {\n await writeSSOTokenToFile(ssoSessionName, {\n ...ssoToken,\n accessToken: newSsoOidcToken.accessToken,\n expiresAt: newTokenExpiration.toISOString(),\n refreshToken: newSsoOidcToken.refreshToken\n });\n } catch (error) {\n }\n return {\n token: newSsoOidcToken.accessToken,\n expiration: newTokenExpiration\n };\n } catch (error) {\n validateTokenExpiry(existingToken);\n return existingToken;\n }\n}, \"fromSso\");\n\n// src/fromStatic.ts\n\nvar fromStatic = /* @__PURE__ */ __name(({ token, logger }) => async () => {\n logger == null ? void 0 : logger.debug(\"@aws-sdk/token-providers - fromStatic\");\n if (!token || !token.token) {\n throw new import_property_provider.TokenProviderError(`Please pass a valid token to fromStatic`, false);\n }\n return token;\n}, \"fromStatic\");\n\n// src/nodeProvider.ts\n\nvar nodeProvider = /* @__PURE__ */ __name((init = {}) => (0, import_property_provider.memoize)(\n (0, import_property_provider.chain)(fromSso(init), async () => {\n throw new import_property_provider.TokenProviderError(\"Could not load token from any providers\", false);\n }),\n (token) => token.expiration !== void 0 && token.expiration.getTime() - Date.now() < 3e5,\n (token) => token.expiration !== void 0\n), \"nodeProvider\");\n// Annotate the CommonJS export names for ESM import in node:\n\n0 && (module.exports = {\n fromSso,\n fromStatic,\n nodeProvider\n});\n\n","\"use strict\";\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/index.ts\nvar src_exports = {};\n__export(src_exports, {\n ConditionObject: () => import_util_endpoints.ConditionObject,\n DeprecatedObject: () => import_util_endpoints.DeprecatedObject,\n EndpointError: () => import_util_endpoints.EndpointError,\n EndpointObject: () => import_util_endpoints.EndpointObject,\n EndpointObjectHeaders: () => import_util_endpoints.EndpointObjectHeaders,\n EndpointObjectProperties: () => import_util_endpoints.EndpointObjectProperties,\n EndpointParams: () => import_util_endpoints.EndpointParams,\n EndpointResolverOptions: () => import_util_endpoints.EndpointResolverOptions,\n EndpointRuleObject: () => import_util_endpoints.EndpointRuleObject,\n ErrorRuleObject: () => import_util_endpoints.ErrorRuleObject,\n EvaluateOptions: () => import_util_endpoints.EvaluateOptions,\n Expression: () => import_util_endpoints.Expression,\n FunctionArgv: () => import_util_endpoints.FunctionArgv,\n FunctionObject: () => import_util_endpoints.FunctionObject,\n FunctionReturn: () => import_util_endpoints.FunctionReturn,\n ParameterObject: () => import_util_endpoints.ParameterObject,\n ReferenceObject: () => import_util_endpoints.ReferenceObject,\n ReferenceRecord: () => import_util_endpoints.ReferenceRecord,\n RuleSetObject: () => import_util_endpoints.RuleSetObject,\n RuleSetRules: () => import_util_endpoints.RuleSetRules,\n TreeRuleObject: () => import_util_endpoints.TreeRuleObject,\n awsEndpointFunctions: () => awsEndpointFunctions,\n getUserAgentPrefix: () => getUserAgentPrefix,\n isIpAddress: () => import_util_endpoints.isIpAddress,\n partition: () => partition,\n resolveEndpoint: () => import_util_endpoints.resolveEndpoint,\n setPartitionInfo: () => setPartitionInfo,\n useDefaultPartitionInfo: () => useDefaultPartitionInfo\n});\nmodule.exports = __toCommonJS(src_exports);\n\n// src/aws.ts\n\n\n// src/lib/aws/isVirtualHostableS3Bucket.ts\n\n\n// src/lib/isIpAddress.ts\nvar import_util_endpoints = require(\"@smithy/util-endpoints\");\n\n// src/lib/aws/isVirtualHostableS3Bucket.ts\nvar isVirtualHostableS3Bucket = /* @__PURE__ */ __name((value, allowSubDomains = false) => {\n if (allowSubDomains) {\n for (const label of value.split(\".\")) {\n if (!isVirtualHostableS3Bucket(label)) {\n return false;\n }\n }\n return true;\n }\n if (!(0, import_util_endpoints.isValidHostLabel)(value)) {\n return false;\n }\n if (value.length < 3 || value.length > 63) {\n return false;\n }\n if (value !== value.toLowerCase()) {\n return false;\n }\n if ((0, import_util_endpoints.isIpAddress)(value)) {\n return false;\n }\n return true;\n}, \"isVirtualHostableS3Bucket\");\n\n// src/lib/aws/parseArn.ts\nvar ARN_DELIMITER = \":\";\nvar RESOURCE_DELIMITER = \"/\";\nvar parseArn = /* @__PURE__ */ __name((value) => {\n const segments = value.split(ARN_DELIMITER);\n if (segments.length < 6)\n return null;\n const [arn, partition2, service, region, accountId, ...resourcePath] = segments;\n if (arn !== \"arn\" || partition2 === \"\" || service === \"\" || resourcePath.join(ARN_DELIMITER) === \"\")\n return null;\n const resourceId = resourcePath.map((resource) => resource.split(RESOURCE_DELIMITER)).flat();\n return {\n partition: partition2,\n service,\n region,\n accountId,\n resourceId\n };\n}, \"parseArn\");\n\n// src/lib/aws/partitions.json\nvar partitions_default = {\n partitions: [{\n id: \"aws\",\n outputs: {\n dnsSuffix: \"amazonaws.com\",\n dualStackDnsSuffix: \"api.aws\",\n implicitGlobalRegion: \"us-east-1\",\n name: \"aws\",\n supportsDualStack: true,\n supportsFIPS: true\n },\n regionRegex: \"^(us|eu|ap|sa|ca|me|af|il|mx)\\\\-\\\\w+\\\\-\\\\d+$\",\n regions: {\n \"af-south-1\": {\n description: \"Africa (Cape Town)\"\n },\n \"ap-east-1\": {\n description: \"Asia Pacific (Hong Kong)\"\n },\n \"ap-northeast-1\": {\n description: \"Asia Pacific (Tokyo)\"\n },\n \"ap-northeast-2\": {\n description: \"Asia Pacific (Seoul)\"\n },\n \"ap-northeast-3\": {\n description: \"Asia Pacific (Osaka)\"\n },\n \"ap-south-1\": {\n description: \"Asia Pacific (Mumbai)\"\n },\n \"ap-south-2\": {\n description: \"Asia Pacific (Hyderabad)\"\n },\n \"ap-southeast-1\": {\n description: \"Asia Pacific (Singapore)\"\n },\n \"ap-southeast-2\": {\n description: \"Asia Pacific (Sydney)\"\n },\n \"ap-southeast-3\": {\n description: \"Asia Pacific (Jakarta)\"\n },\n \"ap-southeast-4\": {\n description: \"Asia Pacific (Melbourne)\"\n },\n \"ap-southeast-5\": {\n description: \"Asia Pacific (Malaysia)\"\n },\n \"aws-global\": {\n description: \"AWS Standard global region\"\n },\n \"ca-central-1\": {\n description: \"Canada (Central)\"\n },\n \"ca-west-1\": {\n description: \"Canada West (Calgary)\"\n },\n \"eu-central-1\": {\n description: \"Europe (Frankfurt)\"\n },\n \"eu-central-2\": {\n description: \"Europe (Zurich)\"\n },\n \"eu-north-1\": {\n description: \"Europe (Stockholm)\"\n },\n \"eu-south-1\": {\n description: \"Europe (Milan)\"\n },\n \"eu-south-2\": {\n description: \"Europe (Spain)\"\n },\n \"eu-west-1\": {\n description: \"Europe (Ireland)\"\n },\n \"eu-west-2\": {\n description: \"Europe (London)\"\n },\n \"eu-west-3\": {\n description: \"Europe (Paris)\"\n },\n \"il-central-1\": {\n description: \"Israel (Tel Aviv)\"\n },\n \"me-central-1\": {\n description: \"Middle East (UAE)\"\n },\n \"me-south-1\": {\n description: \"Middle East (Bahrain)\"\n },\n \"sa-east-1\": {\n description: \"South America (Sao Paulo)\"\n },\n \"us-east-1\": {\n description: \"US East (N. Virginia)\"\n },\n \"us-east-2\": {\n description: \"US East (Ohio)\"\n },\n \"us-west-1\": {\n description: \"US West (N. California)\"\n },\n \"us-west-2\": {\n description: \"US West (Oregon)\"\n }\n }\n }, {\n id: \"aws-cn\",\n outputs: {\n dnsSuffix: \"amazonaws.com.cn\",\n dualStackDnsSuffix: \"api.amazonwebservices.com.cn\",\n implicitGlobalRegion: \"cn-northwest-1\",\n name: \"aws-cn\",\n supportsDualStack: true,\n supportsFIPS: true\n },\n regionRegex: \"^cn\\\\-\\\\w+\\\\-\\\\d+$\",\n regions: {\n \"aws-cn-global\": {\n description: \"AWS China global region\"\n },\n \"cn-north-1\": {\n description: \"China (Beijing)\"\n },\n \"cn-northwest-1\": {\n description: \"China (Ningxia)\"\n }\n }\n }, {\n id: \"aws-us-gov\",\n outputs: {\n dnsSuffix: \"amazonaws.com\",\n dualStackDnsSuffix: \"api.aws\",\n implicitGlobalRegion: \"us-gov-west-1\",\n name: \"aws-us-gov\",\n supportsDualStack: true,\n supportsFIPS: true\n },\n regionRegex: \"^us\\\\-gov\\\\-\\\\w+\\\\-\\\\d+$\",\n regions: {\n \"aws-us-gov-global\": {\n description: \"AWS GovCloud (US) global region\"\n },\n \"us-gov-east-1\": {\n description: \"AWS GovCloud (US-East)\"\n },\n \"us-gov-west-1\": {\n description: \"AWS GovCloud (US-West)\"\n }\n }\n }, {\n id: \"aws-iso\",\n outputs: {\n dnsSuffix: \"c2s.ic.gov\",\n dualStackDnsSuffix: \"c2s.ic.gov\",\n implicitGlobalRegion: \"us-iso-east-1\",\n name: \"aws-iso\",\n supportsDualStack: false,\n supportsFIPS: true\n },\n regionRegex: \"^us\\\\-iso\\\\-\\\\w+\\\\-\\\\d+$\",\n regions: {\n \"aws-iso-global\": {\n description: \"AWS ISO (US) global region\"\n },\n \"us-iso-east-1\": {\n description: \"US ISO East\"\n },\n \"us-iso-west-1\": {\n description: \"US ISO WEST\"\n }\n }\n }, {\n id: \"aws-iso-b\",\n outputs: {\n dnsSuffix: \"sc2s.sgov.gov\",\n dualStackDnsSuffix: \"sc2s.sgov.gov\",\n implicitGlobalRegion: \"us-isob-east-1\",\n name: \"aws-iso-b\",\n supportsDualStack: false,\n supportsFIPS: true\n },\n regionRegex: \"^us\\\\-isob\\\\-\\\\w+\\\\-\\\\d+$\",\n regions: {\n \"aws-iso-b-global\": {\n description: \"AWS ISOB (US) global region\"\n },\n \"us-isob-east-1\": {\n description: \"US ISOB East (Ohio)\"\n }\n }\n }, {\n id: \"aws-iso-e\",\n outputs: {\n dnsSuffix: \"cloud.adc-e.uk\",\n dualStackDnsSuffix: \"cloud.adc-e.uk\",\n implicitGlobalRegion: \"eu-isoe-west-1\",\n name: \"aws-iso-e\",\n supportsDualStack: false,\n supportsFIPS: true\n },\n regionRegex: \"^eu\\\\-isoe\\\\-\\\\w+\\\\-\\\\d+$\",\n regions: {\n \"eu-isoe-west-1\": {\n description: \"EU ISOE West\"\n }\n }\n }, {\n id: \"aws-iso-f\",\n outputs: {\n dnsSuffix: \"csp.hci.ic.gov\",\n dualStackDnsSuffix: \"csp.hci.ic.gov\",\n implicitGlobalRegion: \"us-isof-south-1\",\n name: \"aws-iso-f\",\n supportsDualStack: false,\n supportsFIPS: true\n },\n regionRegex: \"^us\\\\-isof\\\\-\\\\w+\\\\-\\\\d+$\",\n regions: {}\n }],\n version: \"1.1\"\n};\n\n// src/lib/aws/partition.ts\nvar selectedPartitionsInfo = partitions_default;\nvar selectedUserAgentPrefix = \"\";\nvar partition = /* @__PURE__ */ __name((value) => {\n const { partitions } = selectedPartitionsInfo;\n for (const partition2 of partitions) {\n const { regions, outputs } = partition2;\n for (const [region, regionData] of Object.entries(regions)) {\n if (region === value) {\n return {\n ...outputs,\n ...regionData\n };\n }\n }\n }\n for (const partition2 of partitions) {\n const { regionRegex, outputs } = partition2;\n if (new RegExp(regionRegex).test(value)) {\n return {\n ...outputs\n };\n }\n }\n const DEFAULT_PARTITION = partitions.find((partition2) => partition2.id === \"aws\");\n if (!DEFAULT_PARTITION) {\n throw new Error(\n \"Provided region was not found in the partition array or regex, and default partition with id 'aws' doesn't exist.\"\n );\n }\n return {\n ...DEFAULT_PARTITION.outputs\n };\n}, \"partition\");\nvar setPartitionInfo = /* @__PURE__ */ __name((partitionsInfo, userAgentPrefix = \"\") => {\n selectedPartitionsInfo = partitionsInfo;\n selectedUserAgentPrefix = userAgentPrefix;\n}, \"setPartitionInfo\");\nvar useDefaultPartitionInfo = /* @__PURE__ */ __name(() => {\n setPartitionInfo(partitions_default, \"\");\n}, \"useDefaultPartitionInfo\");\nvar getUserAgentPrefix = /* @__PURE__ */ __name(() => selectedUserAgentPrefix, \"getUserAgentPrefix\");\n\n// src/aws.ts\nvar awsEndpointFunctions = {\n isVirtualHostableS3Bucket,\n parseArn,\n partition\n};\nimport_util_endpoints.customEndpointFunctions.aws = awsEndpointFunctions;\n\n// src/resolveEndpoint.ts\n\n\n// src/types/EndpointError.ts\n\n\n// src/types/EndpointRuleObject.ts\n\n\n// src/types/ErrorRuleObject.ts\n\n\n// src/types/RuleSetObject.ts\n\n\n// src/types/TreeRuleObject.ts\n\n\n// src/types/shared.ts\n\n// Annotate the CommonJS export names for ESM import in node:\n\n0 && (module.exports = {\n awsEndpointFunctions,\n partition,\n setPartitionInfo,\n useDefaultPartitionInfo,\n getUserAgentPrefix,\n isIpAddress,\n resolveEndpoint,\n EndpointError\n});\n\n","\"use strict\";\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/index.ts\nvar src_exports = {};\n__export(src_exports, {\n UA_APP_ID_ENV_NAME: () => UA_APP_ID_ENV_NAME,\n UA_APP_ID_INI_NAME: () => UA_APP_ID_INI_NAME,\n crtAvailability: () => crtAvailability,\n defaultUserAgent: () => defaultUserAgent\n});\nmodule.exports = __toCommonJS(src_exports);\nvar import_node_config_provider = require(\"@smithy/node-config-provider\");\nvar import_os = require(\"os\");\nvar import_process = require(\"process\");\n\n// src/crt-availability.ts\nvar crtAvailability = {\n isCrtAvailable: false\n};\n\n// src/is-crt-available.ts\nvar isCrtAvailable = /* @__PURE__ */ __name(() => {\n if (crtAvailability.isCrtAvailable) {\n return [\"md/crt-avail\"];\n }\n return null;\n}, \"isCrtAvailable\");\n\n// src/index.ts\nvar UA_APP_ID_ENV_NAME = \"AWS_SDK_UA_APP_ID\";\nvar UA_APP_ID_INI_NAME = \"sdk-ua-app-id\";\nvar defaultUserAgent = /* @__PURE__ */ __name(({ serviceId, clientVersion }) => {\n const sections = [\n // sdk-metadata\n [\"aws-sdk-js\", clientVersion],\n // ua-metadata\n [\"ua\", \"2.0\"],\n // os-metadata\n [`os/${(0, import_os.platform)()}`, (0, import_os.release)()],\n // language-metadata\n // ECMAScript edition doesn't matter in JS, so no version needed.\n [\"lang/js\"],\n [\"md/nodejs\", `${import_process.versions.node}`]\n ];\n const crtAvailable = isCrtAvailable();\n if (crtAvailable) {\n sections.push(crtAvailable);\n }\n if (serviceId) {\n sections.push([`api/${serviceId}`, clientVersion]);\n }\n if (import_process.env.AWS_EXECUTION_ENV) {\n sections.push([`exec-env/${import_process.env.AWS_EXECUTION_ENV}`]);\n }\n const appIdPromise = (0, import_node_config_provider.loadConfig)({\n environmentVariableSelector: (env2) => env2[UA_APP_ID_ENV_NAME],\n configFileSelector: (profile) => profile[UA_APP_ID_INI_NAME],\n default: void 0\n })();\n let resolvedUserAgent = void 0;\n return async () => {\n if (!resolvedUserAgent) {\n const appId = await appIdPromise;\n resolvedUserAgent = appId ? [...sections, [`app/${appId}`]] : [...sections];\n }\n return resolvedUserAgent;\n };\n}, \"defaultUserAgent\");\n// Annotate the CommonJS export names for ESM import in node:\n\n0 && (module.exports = {\n crtAvailability,\n UA_APP_ID_ENV_NAME,\n UA_APP_ID_INI_NAME,\n defaultUserAgent\n});\n\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Database = void 0;\nconst entity_1 = require(\"./entity\");\nconst relationship_1 = require(\"./relationship\");\nclass Database {\n static entitiesOnly(entities) {\n return new Database(entities, relationship_1.NO_RELATIONSHIPS);\n }\n constructor(entities, relationships) {\n this.idCtr = 0;\n this.schema = {\n ...entities,\n ...relationships({\n relationship: (fromKey, toKey) => (0, relationship_1.relationshipCollection)((id) => this.get(fromKey, id), (id) => this.get(toKey, id)),\n }),\n };\n }\n id() {\n return `${this.idCtr++}`;\n }\n /**\n * Allocate an ID and store\n */\n allocate(key, entity) {\n return this.store(key, this.e(entity));\n }\n /**\n * Store with a preallocated ID\n */\n store(key, entity) {\n const coll = this.schema[key];\n coll.add(entity);\n return entity;\n }\n /**\n * Get an entity by key\n */\n get(key, id) {\n const coll = this.schema[key];\n const ret = coll.entities.get(typeof id === 'string' ? id : id.$ref);\n if (!ret) {\n throw new Error(`No such ${String(key)}: ${id}`);\n }\n return ret;\n }\n /**\n * All entities of a given type\n */\n all(key) {\n const coll = this.schema[key];\n return Array.from(coll.entities.values());\n }\n /**\n * Lookup an entity by index\n */\n lookup(key, index, lookup, value) {\n const coll = this.schema[key];\n const ids = coll.indexes[index].lookups[lookup](value);\n return addOnlyMethod(ids.map((id) => coll.entities.get(id)), `${String(key)} with ${String(index)} ${String(lookup)} ${JSON.stringify(value)}`);\n }\n /**\n * Allocate an ID and store if the entity does not yet exist\n */\n findOrAllocate(key, index, lookup, entity) {\n const res = this.lookup(key, index, lookup, entity[index]);\n if (res.length) {\n return res.only();\n }\n return this.allocate(key, entity);\n }\n link(key, from, to, attributes) {\n const col = this.schema[key];\n col.add(from, to, attributes);\n }\n /**\n * Follow a link\n */\n follow(key, from) {\n var _a;\n const col = this.schema[key];\n const toLinks = (_a = col.forward.get(from.$id)) !== null && _a !== void 0 ? _a : [];\n const ret = toLinks.map((i) => ({ entity: col.toColl(i.$id), ...removeId(i) }));\n return addOnlyMethod(ret, `${String(key)} from ${from}`);\n }\n /**\n * Follow incoming links backwards\n */\n incoming(key, to) {\n var _a;\n const col = this.schema[key];\n const fromIds = (_a = col.backward.get(to.$id)) !== null && _a !== void 0 ? _a : [];\n const ret = fromIds.map((i) => ({ entity: col.fromColl(i.$id), ...removeId(i) }));\n return addOnlyMethod(ret, `${String(key)} to ${to}`);\n }\n e(entity) {\n return {\n $id: this.id(),\n ...entity,\n };\n }\n /**\n * Turn the current database collection into something that can be stored.\n */\n save() {\n return {\n idCtr: this.idCtr,\n schema: dehydrate(this.schema),\n };\n function dehydrate(x) {\n if ((0, entity_1.isEntityCollection)(x)) {\n return x.dehydrate();\n }\n if ((0, relationship_1.isRelationshipCollection)(x)) {\n return x.dehydrate();\n }\n if (Array.isArray(x)) {\n return x.map(dehydrate);\n }\n if (!!x && typeof x === 'object') {\n return Object.fromEntries(Object.entries(x).map(([k, v]) => [k, dehydrate(v)]));\n }\n return x;\n }\n }\n load(db) {\n this.idCtr = db.idCtr;\n hydrate(this.schema, db.schema);\n function hydrate(proto, x) {\n if ((0, entity_1.isEntityCollection)(proto)) {\n proto.hydrateFrom(x);\n }\n if ((0, relationship_1.isRelationshipCollection)(proto)) {\n proto.hydrateFrom(x);\n }\n if (Array.isArray(x)) {\n x.forEach(hydrate);\n }\n if (!!proto && typeof proto === 'object' && !!x && typeof x === 'object') {\n for (const [k, v] of Object.entries(proto)) {\n hydrate(v, x[k]);\n }\n }\n }\n }\n}\nexports.Database = Database;\nfunction removeId(x) {\n const ret = { ...x };\n delete ret.$id;\n return ret;\n}\nfunction addOnlyMethod(xs, description) {\n return Object.defineProperties(xs, {\n only: {\n enumerable: false,\n value: () => {\n if (xs.length !== 1) {\n throw new Error(`Expected exactly 1 ${description}, found ${xs.length}`);\n }\n return xs[0];\n },\n },\n });\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YWJhc2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvZGF0YWJhc2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEscUNBQXVHO0FBQ3ZHLGlEQU13QjtBQVN4QixNQUFhLFFBQVE7SUFDWixNQUFNLENBQUMsWUFBWSxDQUFvQixRQUFZO1FBQ3hELE9BQU8sSUFBSSxRQUFRLENBQUMsUUFBUSxFQUFFLCtCQUFnQixDQUFDLENBQUM7SUFDbEQsQ0FBQztJQUtELFlBQVksUUFBWSxFQUFFLGFBQWtEO1FBRnBFLFVBQUssR0FBRyxDQUFDLENBQUM7UUFHaEIsSUFBSSxDQUFDLE1BQU0sR0FBRztZQUNaLEdBQUcsUUFBUTtZQUNYLEdBQUcsYUFBYSxDQUFDO2dCQUNmLFlBQVksRUFBRSxDQUFDLE9BQU8sRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUMvQixJQUFBLHFDQUFzQixFQUNwQixDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLEVBQzdCLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FDNUI7YUFDSixDQUFDO1NBQ0gsQ0FBQztJQUNKLENBQUM7SUFFTSxFQUFFO1FBQ1AsT0FBTyxHQUFHLElBQUksQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDO0lBQzNCLENBQUM7SUFFRDs7T0FFRztJQUNJLFFBQVEsQ0FBcUIsR0FBTSxFQUFFLE1BQWdDO1FBQzFFLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ3pDLENBQUM7SUFFRDs7T0FFRztJQUNJLEtBQUssQ0FBcUIsR0FBTSxFQUFFLE1BQXlCO1FBQ2hFLE1BQU0sSUFBSSxHQUEwQixJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBUSxDQUFD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bnQiOlsiaW1wb3J0IHsgRW50aXR5LCBFbnRpdHlDb2xsZWN0aW9uLCBFbnRpdHlJbmRleCwgaXNFbnRpdHlDb2xsZWN0aW9uLCBQbGFpbiwgUmVmZXJlbmNlIH0gZnJvbSAnLi9lbnRpdHknO1xuaW1wb3J0IHtcbiAgaXNSZWxhdGlvbnNoaXBDb2xsZWN0aW9uLFxuICBOT19SRUxBVElPTlNISVBTLFxuICBSZWxhdGlvbnNoaXAsXG4gIHJlbGF0aW9uc2hpcENvbGxlY3Rpb24sXG4gIFJlbGF0aW9uc2hpcENvbGxlY3Rpb24sXG59IGZyb20gJy4vcmVsYXRpb25zaGlwJztcblxuZXhwb3J0IGludGVyZmFjZSBSZWxhdGlvbnNoaXBzQnVpbGRlcjxFUyBleHRlbmRzIG9iamVjdD4ge1xuICByZWxhdGlvbnNoaXA8UiBleHRlbmRzIFJlbGF0aW9uc2hpcDxhbnksIGFueSwgYW55Pj4oXG4gICAgZnJvbUtleTogS2V5c0ZvcjxFUywgRW50aXR5Q29sbGVjdGlvbjxSWydmcm9tJ10sIGFueT4+LFxuICAgIHRvS2V5OiBLZXlzRm9yPEVTLCBFbnRpdHlDb2xsZWN0aW9uPFJbJ3RvJ10sIGFueT4+LFxuICApOiBSZWxhdGlvbnNoaXBDb2xsZWN0aW9uPFI+O1xufVxuXG5leHBvcnQgY2xhc3MgRGF0YWJhc2U8RVMgZXh0ZW5kcyBvYmplY3QsIFJTIGV4dGVuZHMgb2JqZWN0PiB7XG4gIHB1YmxpYyBzdGF0aWMgZW50aXRpZXNPbmx5PEVTIGV4dGVuZHMgb2JqZWN0PihlbnRpdGllczogRVMpOiBEYXRhYmFzZTxFUywge30+IHtcbiAgICByZXR1cm4gbmV3IERhdGFiYXNlKGVudGl0aWVzLCBOT19SRUxBVElPTlNISVBTKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVhZG9ubHkgc2NoZW1hOiBFUyAmIFJTO1xuICBwcml2YXRlIGlkQ3RyID0gMDtcblxuICBjb25zdHJ1Y3RvcihlbnRpdGllczogRVMsIHJlbGF0aW9uc2hpcHM6ICh4OiBSZWxhdGlvbnNoaXBzQnVpbGRlcjxFUz4pID0+IFJTKSB7XG4gICAgdGhpcy5zY2hlbWEgPSB7XG4gICAgICAuLi5lbnRpdGllcyxcbiAgICAgIC4uLnJlbGF0aW9uc2hpcHMoe1xuICAgICAgICByZWxhdGlvbnNoaXA6IChmcm9tS2V5LCB0b0tleSkgPT5cbiAgICAgICAgICByZWxhdGlvbnNoaXBDb2xsZWN0aW9uKFxuICAgICAgICAgICAgKGlkKSA9PiB0aGlzLmdldChmcm9tS2V5LCBpZCksXG4gICAgICAgICAgICAoaWQpID0+IHRoaXMuZ2V0KHRvS2V5LCBpZCksXG4gICAgICAgICAgKSxcbiAgICAgIH0pLFxuICAgIH07XG4gIH1cblxuICBwdWJsaWMgaWQoKSB7XG4gICAgcmV0dXJuIGAke3RoaXMuaWRDdHIrK31gO1xuICB9XG5cbiAgLyoqXG4gICAqIEFsbG9jYXRlIGFuIElEIGFuZCBzdG9yZVxuICAgKi9cbiAgcHVibGljIGFsbG9jYXRlPEsgZXh0ZW5kcyBrZXlvZiBFUz4oa2V5OiBLLCBlbnRpdHk6IFBsYWluPEVudGl0eVR5cGU8RVNbS10+Pik6IEVudGl0eVR5cGU8RVNbS10+IHtcbiAgICByZXR1cm4gdGhpcy5zdG9yZShrZXksIHRoaXMuZShlbnRpdHkpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTdG9yZSB3aXRoIGEgcHJlYWxsb2NhdGVkIElEXG4gICAqL1xuICBwdWJsaWMgc3RvcmU8SyBleHRlbmRzIGtleW9mIEVTPihrZXk6IEssIGVudGl0eTogRW50aXR5VHlwZTxFU1tLXT4pOiBFbnRpdHlUeXBlPEVTW0tdPiB7XG4gICAgY29uc3QgY29sbDogRW50aXR5Q29sbGVjdGlvbjxhbnk+ID0gdGhpcy5zY2hlbWFba2V5XSBhcyBhbnk7XG4gICAgY29sbC5hZGQoZW50aXR5KTtcbiAgICByZXR1cm4gZW50aXR5IGFzIGFueTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgYW4gZW50aXR5IGJ5IGtleVxuICAgKi9cbiAgcHVibGljIGdldDxLIGV4dGVuZHMga2V5b2YgRVM+KGtleTogSywgaWQ6IHN0cmluZyB8IFJlZmVyZW5jZTxFbnRpdHlUeXBlPEVTW0tdPj4pOiBFbnRpdHlUeXBlPEVTW0tdPiB7XG4gICAgY29uc3QgY29sbDogRW50aXR5Q29sbGVjdGlvbjxhbnk+ID0gdGhpcy5zY2hlbWFba2V5XSBhcyBhbnk7XG4gICAgY29uc3QgcmV0ID0gY29sbC5lbnRpdGllcy5nZXQodHlwZW9mIGlkID09PSAnc3RyaW5nJyA/IGlkIDogaWQuJHJlZik7XG4gICAgaWYgKCFyZXQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgTm8gc3VjaCAke1N0cmluZyhrZXkpfTogJHtpZH1gKTtcbiAgICB9XG4gICAgcmV0dXJuIHJldDtcbiAgfVxuXG4gIC8qKlxuICAgKiBBbGwgZW50aXRpZXMgb2YgYSBnaXZlbiB0eXBlXG4gICAqL1xuICBwdWJsaWMgYWxsPEsgZXh0ZW5kcyBrZXlvZiBFUz4oa2V5OiBLKTogQXJyYXk8RW50aXR5VHlwZTxFU1tLXT4+IHtcbiAgICBjb25zdCBjb2xsOiBFbnRpdHlDb2xsZWN0aW9uPGFueT4gPSB0aGlzLnNjaGVtYVtrZXldIGFzIGFueTtcbiAgICByZXR1cm4gQXJyYXkuZnJvbShjb2xsLmVudGl0aWVzLnZhbHVlcygpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBMb29rdXAgYW4gZW50aXR5IGJ5IGluZGV4XG4gICAqL1xuICBwdWJsaWMgbG9va3VwPEsgZXh0ZW5kcyBrZXlvZiBFUywgSSBleHRlbmRzIEluZGV4TmFtZXNPZjxFU1tLXT4+KFxuICAgIGtleTogSyxcbiAgICBpbmRleDogSSxcbiAgICBsb29rdXA6IEluZGV4T2Y8RVNbS10sIEk+Wydsb29rdXBzJ10sXG4gICAgdmFsdWU6IEluZGV4T2Y8RVNbS10sIEk+Wyd2YWx1ZVR5cGUnXSxcbiAgKTogUmljaFJlYWRvbmx5QXJyYXk8RW50aXR5VHlwZTxFU1tLXT4+IHtcbiAgICBjb25zdCBjb2xsOiBFbnRpdHlDb2xsZWN0aW9uPGFueT4gPSB0aGlzLnNjaGVtYVtrZXldIGFzIGFueTtcbiAgICBjb25zdCBpZHMgPSAoY29sbC5pbmRleGVzIGFzIGFueSlbaW5kZXhdLmxvb2t1cHNbbG9va3VwXSh2YWx1ZSk7XG4gICAgcmV0dXJuIGFkZE9ubHlNZXRob2QoXG4gICAgICBpZHMubWFwKChpZDogc3RyaW5nKSA9PiBjb2xsLmVudGl0aWVzLmdldChpZCkpLFxuICAgICAgYCR7U3RyaW5nKGtleSl9IHdpdGggJHtTdHJpbmcoaW5kZXgpfSAke1N0cmluZyhsb29rdXApfSAke0pTT04uc3RyaW5naWZ5KHZhbHVlKX1gLFxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogQWxsb2NhdGUgYW4gSUQgYW5kIHN0b3JlIGlmIHRoZSBlbnRpdHkgZG9lcyBub3QgeWV0IGV4aXN0XG4gICAqL1xuICBwdWJsaWMgZmluZE9yQWxsb2NhdGU8SyBleHRlbmRzIGtleW9mIEVTLCBJIGV4dGVuZHMga2V5b2YgUGxhaW48RW50aXR5VHlwZTxFU1tLXT4+ICYgSW5kZXhOYW1lc09mPEVTW0tdPj4oXG4gICAga2V5OiBLLFxuICAgIGluZGV4OiBJLFxuICAgIGxvb2t1cDogSW5kZXhPZjxFU1tLXSwgST5bJ2xvb2t1cHMnXSxcbiAgICBlbnRpdHk6IFBsYWluPEVudGl0eVR5cGU8RVNbS10+PixcbiAgKTogRW50aXR5VHlwZTxFU1tLXT4ge1xuICAgIGNvbnN0IHJlcyA9IHRoaXMubG9va3VwKGtleSwgaW5kZXgsIGxvb2t1cCwgZW50aXR5W2luZGV4XSk7XG4gICAgaWYgKHJlcy5sZW5ndGgpIHtcbiAgICAgIHJldHVybiByZXMub25seSgpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5hbGxvY2F0ZShrZXksIGVudGl0eSk7XG4gIH1cblxuICAvKipcbiAgICogUmVjb3JkIGEgcmVsYXRpb25zaGlwIGJldHdlZW4gdHdvIGVudGl0aWVzXG4gICAqXG4gICAqIE92ZXJsb2FkIHRvIGFjY291bnQgZm9yIHdoZXRoZXIgd2UgaGF2ZSBhdHRyaWJ1dGVzIG9yIG5vdC5cbiAgICovXG4gIHB1YmxpYyBsaW5rPEsgZXh0ZW5kcyBSZWxXQXR0cnM8UlM+PihcbiAgICBrZXk6IEssXG4gICAgZnJvbTogUmVsVHlwZTxSU1tLXT5bJ2Zyb20nXSxcbiAgICB0bzogUmVsVHlwZTxSU1tLXT5bJ3RvJ10sXG4gICAgYXR0cmlidXRlczogUmVsVHlwZTxSU1tLXT5bJ2F0dHInXSxcbiAgKTogdm9pZDtcbiAgcHVibGljIGxpbms8SyBleHRlbmRzIFJlbFdvQXR0cnM8UlM+PihrZXk6IEssIGZyb206IFJlbFR5cGU8UlNbS10+Wydmcm9tJ10sIHRvOiBSZWxUeXBlPFJTW0tdPlsndG8nXSk6IHZvaWQ7XG4gIHB1YmxpYyBsaW5rPEsgZXh0ZW5kcyBrZXlvZiBSUz4oXG4gICAga2V5OiBLLFxuICAgIGZyb206IFJlbFR5cGU8UlNbS10+Wydmcm9tJ10sXG4gICAgdG86IFJlbFR5cGU8UlNbS10+Wyd0byddLFxuICAgIGF0dHJpYnV0ZXM/OiBSZWxUeXBlPFJTW0tdPlsnYXR0ciddLFxuICApIHtcbiAgICBjb25zdCBjb2w6IFJlbGF0aW9uc2hpcENvbGxlY3Rpb248YW55PiA9IHRoaXMuc2NoZW1hW2tleV0gYXMgYW55O1xuICAgIGNvbC5hZGQoZnJvbSwgdG8sIGF0dHJpYnV0ZXMpO1xuICB9XG5cbiAgLyoqXG4gICAqIEZvbGxvdyBhIGxpbmtcbiAgICovXG4gIHB1YmxpYyBmb2xsb3c8SyBleHRlbmRzIGtleW9mIFJTPihcbiAgICBrZXk6IEssXG4gICAgZnJvbTogUmVsVHlwZTxSU1tLXT5bJ2Zyb20nXSxcbiAgKTogUmljaFJlYWRvbmx5QXJyYXk8TGluazxSZWxUeXBlPFJTW0tdPlsndG8nXSwgUmVsVHlwZTxSU1tLXT5bJ2F0dHInXT4+IHtcbiAgICBjb25zdCBjb2w6IFJlbGF0aW9uc2hpcENvbGxlY3Rpb248YW55PiA9IHRoaXMuc2NoZW1hW2tleV0gYXMgYW55O1xuICAgIGNvbnN0IHRvTGlua3MgPSBjb2wuZm9yd2FyZC5nZXQoZnJvbS4kaWQpID8/IFtdO1xuICAgIGNvbnN0IHJldCA9IHRvTGlua3MubWFwKChpKSA9PiAoeyBlbnRpdHk6IGNvbC50b0NvbGwoaS4kaWQpLCAuLi5yZW1vdmVJZChpKSB9IGFzIGFueSkpO1xuXG4gICAgcmV0dXJuIGFkZE9ubHlNZXRob2QocmV0LCBgJHtTdHJpbmcoa2V5KX0gZnJvbSAke2Zyb219YCk7XG4gIH1cblxuICAvKipcbiAgICogRm9sbG93IGluY29taW5nIGxpbmtzIGJhY2t3YXJkc1xuICAgKi9cbiAgcHVibGljIGluY29taW5nPEsgZXh0ZW5kcyBrZXlvZiBSUz4oXG4gICAga2V5OiBLLFxuICAgIHRvOiBSZWxUeXBlPFJTW0tdPlsndG8nXSxcbiAgKTogUmljaFJlYWRvbmx5QXJyYXk8TGluazxSZWxUeXBlPFJTW0tdPlsnZnJvbSddLCBSZWxUeXBlPFJTW0tdPlsnYXR0ciddPj4ge1xuICAgIGNvbnN0IGNvbDogUmVsYXRpb25zaGlwQ29sbGVjdGlvbjxhbnk+ID0gdGhpcy5zY2hlbWFba2V5XSBhcyBhbnk7XG4gICAgY29uc3QgZnJvbUlkcyA9IGNvbC5iYWNrd2FyZC5nZXQodG8uJGlkKSA/PyBbXTtcbiAgICBjb25zdCByZXQgPSBmcm9tSWRzLm1hcCgoaSkgPT4gKHsgZW50aXR5OiBjb2wuZnJvbUNvbGwoaS4kaWQpLCAuLi5yZW1vdmVJZChpKSB9IGFzIGFueSkpO1xuXG4gICAgcmV0dXJuIGFkZE9ubHlNZXRob2QocmV0LCBgJHtTdHJpbmcoa2V5KX0gdG8gJHt0b31gKTtcbiAgfVxuXG4gIHB1YmxpYyBlPEUgZXh0ZW5kcyBFbnRpdHk+KGVudGl0eTogUGxhaW48RT4pOiBFIHtcbiAgICByZXR1cm4ge1xuICAgICAgJGlkOiB0aGlzLmlkKCksXG4gICAgICAuLi5lbnRpdHksXG4gICAgfSBhcyBhbnk7XG4gIH1cblxuICAvKipcbiAgICogVHVybiB0aGUgY3VycmVudCBkYXRhYmFzZSBjb2xsZWN0aW9uIGludG8gc29tZXRoaW5nIHRoYXQgY2FuIGJlIHN0b3JlZC5cbiAgICovXG4gIHB1YmxpYyBzYXZlKCk6IERlaHlkcmF0ZWREYXRhYmFzZSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGlkQ3RyOiB0aGlzLmlkQ3RyLFxuICAgICAgc2NoZW1hOiBkZWh5ZHJhdGUodGhpcy5zY2hlbWEpLFxuICAgIH07XG5cbiAgICBmdW5jdGlvbiBkZWh5ZHJhdGUoeDogdW5rbm93bik6IGFueSB7XG4gICAgICBpZiAoaXNFbnRpdHlDb2xsZWN0aW9uKHgpKSB7XG4gICAgICAgIHJldHVybiB4LmRlaHlkcmF0ZSgpO1xuICAgICAgfVxuICAgICAgaWYgKGlzUmVsYXRpb25zaGlwQ29sbGVjdGlvbih4KSkge1xuICAgICAgICByZXR1cm4geC5kZWh5ZHJhdGUoKTtcbiAgICAgIH1cbiAgICAgIGlmIChBcnJheS5pc0FycmF5KHgpKSB7XG4gICAgICAgIHJldHVybiB4Lm1hcChkZWh5ZHJhdGUpO1xuICAgICAgfVxuICAgICAgaWYgKCEheCAmJiB0eXBlb2YgeCA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgcmV0dXJuIE9iamVjdC5mcm9tRW50cmllcyhPYmplY3QuZW50cmllcyh4KS5tYXAoKFtrLCB2XSkgPT4gW2ssIGRlaHlkcmF0ZSh2KV0pKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB4O1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBsb2FkKGRiOiBEZWh5ZHJhdGVkRGF0YWJhc2UpIHtcbiAgICB0aGlzLmlkQ3RyID0gZGIuaWRDdHI7XG4gICAgaHlkcmF0ZSh0aGlzLnNjaGVtYSwgZGIuc2NoZW1hKTtcblxuICAgIGZ1bmN0aW9uIGh5ZHJhdGUocHJvdG86IHVua25vd24sIHg6IHVua25vd24pOiB2b2lkIHtcbiAgICAgIGlmIChpc0VudGl0eUNvbGxlY3Rpb24ocHJvdG8pKSB7XG4gICAgICAgIHByb3RvLmh5ZHJhdGVGcm9tKHgpO1xuICAgICAgfVxuICAgICAgaWYgKGlzUmVsYXRpb25zaGlwQ29sbGVjdGlvbihwcm90bykpIHtcbiAgICAgICAgcHJvdG8uaHlkcmF0ZUZyb20oeCk7XG4gICAgICB9XG4gICAgICBpZiAoQXJyYXkuaXNBcnJheSh4KSkge1xuICAgICAgICB4LmZvckVhY2goaHlkcmF0ZSk7XG4gICAgICB9XG4gICAgICBpZiAoISFwcm90byAmJiB0eXBlb2YgcHJvdG8gPT09ICdvYmplY3QnICYmICEheCAmJiB0eXBlb2YgeCA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgZm9yIChjb25zdCBbaywgdl0gb2YgT2JqZWN0LmVudHJpZXMocHJvdG8pKSB7XG4gICAgICAgICAgaHlkcmF0ZSh2LCAoeCBhcyBhbnkpW2tdKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG5pbnRlcmZhY2UgRGVoeWRyYXRlZERhdGFiYXNlIHtcbiAgcmVhZG9ubHkgaWRDdHI6IG51bWJlcjtcbiAgcmVhZG9ubHkgc2NoZW1hOiBhbnk7XG59XG5cbmZ1bmN0aW9uIHJlbW92ZUlkPEEgZXh0ZW5kcyBvYmplY3Q+KHg6IEEpOiBPbWl0PEEsICckaWQnPiB7XG4gIGNvbnN0IHJldCA9IHsgLi4ueCB9O1xuICBkZWxldGUgKHJldCBhcyBhbnkpLiRpZDtcbiAgcmV0dXJuIHJldDtcbn1cblxuZXhwb3J0IHR5cGUgTGluazxFLCBBPiA9IHsgcmVhZG9ubHkgZW50aXR5OiBFIH0gJiBBO1xuXG50eXBlIFJlbFdBdHRyczxSUz4gPSB7IFtLIGluIGtleW9mIFJTXToge30gZXh0ZW5kcyBSZWxUeXBlPFJTW0tdPlsnYXR0ciddID8gbmV2ZXIgOiBLIH1ba2V5b2YgUlNdO1xudHlwZSBSZWxXb0F0dHJzPFJTPiA9IHsgW0sgaW4ga2V5b2YgUlNdOiB7fSBleHRlbmRzIFJlbFR5cGU8UlNbS10+WydhdHRyJ10gPyBLIDogbmV2ZXIgfVtrZXlvZiBSU107XG5cbi8vIE5lY2Vzc2FyeSBiZWNhdXNlIHRoaXMgdHlwZSBtaWdodCBiZSBhIHVuaW9uXG50eXBlIEluZGV4TmFtZXNPZjxBPiA9IEEgZXh0ZW5kcyBFbnRpdHlDb2xsZWN0aW9uPGFueT4gPyBLZXlzT2ZVbmlvbjxBWydpbmRleGVzJ10+IDogbmV2ZXI7XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBwcmV0dGllci9wcmV0dGllclxudHlwZSBJbmRleE9mPEVDLCBJIGV4dGVuZHMgSW5kZXhOYW1lc09mPEVDPj4gPVxuICBFQyBleHRlbmRzIEVudGl0eUNvbGxlY3Rpb248YW55PlxuICA/IEVDWydpbmRleGVzJ11bSV0gZXh0ZW5kcyBFbnRpdHlJbmRleDxhbnksIGluZmVyIEluZGV4VHlwZT5cbiAgICA/IHtcbiAgICAgICAgdmFsdWVUeXBlOiBJbmRleFR5cGU7XG4gICAgICAgIGxvb2t1cHM6IGtleW9mIEVDWydpbmRleGVzJ11bSV1bJ2xvb2t1cHMnXTtcbiAgICAgIH1cbiAgICA6IG5ldmVyXG4gIDogbmV2ZXI7XG5cbnR5cGUgRW50aXR5VHlwZTxBPiA9IEEgZXh0ZW5kcyBFbnRpdHlDb2xsZWN0aW9uPGluZmVyIEI+ID8gQiA6IG5ldmVyO1xuXG50eXBlIFJlbFR5cGU8QT4gPSBBIGV4dGVuZHMgUmVsYXRpb25zaGlwQ29sbGVjdGlvbjxpbmZlciBSPiA/IFIgOiBuZXZlcjtcblxudHlwZSBSZXNvbHZlVW5pb248VD4gPSBUIGV4dGVuZHMgVCA/IFQgOiBuZXZlcjtcblxudHlwZSBLZXlzT2ZVbmlvbjxUPiA9IGtleW9mIFJlc29sdmVVbmlvbjxUPjtcblxuZXhwb3J0IHR5cGUgRW50aXRpZXNPZjxEQj4gPSBEQiBleHRlbmRzIERhdGFiYXNlPGluZmVyIEVTLCBhbnk+ID8geyBbayBpbiBrZXlvZiBFU106IEVudGl0eVR5cGU8RVNba10+IH0gOiB7fTtcblxuZXhwb3J0IGludGVyZmFjZSBSaWNoUmVhZG9ubHlBcnJheTxBPiBleHRlbmRzIFJlYWRvbmx5QXJyYXk8QT4ge1xuICAvKipcbiAgICogUmV0dXJuIHRoZSBmaXJzdCBhbmQgb25seSBlbGVtZW50LCB0aHJvd2luZyBpZiB0aGVyZSBhcmUgIT0gMSBlbGVtZW50c1xuICAgKi9cbiAgb25seSgpOiBBO1xufVxuXG5mdW5jdGlvbiBhZGRPbmx5TWV0aG9kPEE+KHhzOiBBW10sIGRlc2NyaXB0aW9uOiBzdHJpbmcpOiBSaWNoUmVhZG9ubHlBcnJheTxBPiB7XG4gIHJldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydGllcyh4cywge1xuICAgIG9ubHk6IHtcbiAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgdmFsdWU6ICgpID0+IHtcbiAgICAgICAgaWYgKHhzLmxlbmd0aCAhPT0gMSkge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgRXhwZWN0ZWQgZXhhY3RseSAxICR7ZGVzY3JpcHRpb259LCBmb3VuZCAke3hzLmxlbmd0aH1gKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4geHNbMF07XG4gICAgICB9LFxuICAgIH0sXG4gIH0pIGFzIGFueTtcbn1cblxuLyoqXG4gKiBSZXR1cm4gdGhlIGtleXMgb2YgYW4gb2JqZWN0IHRoYXQgbWFwIHRvIGEgcGFydGljdWxhciB0eXBlXG4gKi9cbnR5cGUgS2V5c0ZvcjxPIGV4dGVuZHMgb2JqZWN0LCBUPiA9IHsgW2sgaW4ga2V5b2YgT106IE9ba10gZXh0ZW5kcyBUID8gayA6IG5ldmVyIH1ba2V5b2YgT107XG4iXX0=","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.optionalCmp = exports.numberCmp = exports.stringCmp = exports.ref = exports.isEntityCollection = exports.calculatedIndex = exports.fieldIndex = exports.entityCollection = void 0;\nconst sorted_map_1 = require(\"./sorted-map\");\nfunction entityCollection() {\n const entities = new Map();\n const _indexes = {};\n function add(x) {\n entities.set(x.$id, x);\n for (const index of Object.values(_indexes)) {\n // FIXME: why can't we type this?\n index.add(x);\n }\n }\n return {\n type: 'entities',\n entities,\n indexes: _indexes,\n add,\n dehydrate: () => ({\n type: 'entities',\n entities: Array.from(validatePlainObjects(entities).values()),\n }),\n hydrateFrom: (x) => {\n entities.clear();\n for (const e of Object.values(x.entities)) {\n add(e);\n }\n },\n index(indexes) {\n // This limitation exists purely because I couldn't type it otherwise.\n // Declaring a return type of `EntityCollection` would make a lot\n // of our other type inspection code stop working (the union is hard to pick\n // apart). Since adding indexes in multiple goes is not really a use case,\n // the simpler solution is just to type it as if we replaced all indexes\n // and add a runtime check to make sure the types aren't lying.\n if (Object.keys(_indexes).length > 0) {\n throw new Error('You may only call .index() once on a new collection');\n }\n Object.assign(_indexes, indexes);\n return this;\n },\n };\n}\nexports.entityCollection = entityCollection;\n/**\n * An index that uses the value of an entity's field\n */\nfunction fieldIndex(propName, comparator) {\n return calculatedIndex((x) => x[propName], comparator);\n}\nexports.fieldIndex = fieldIndex;\n/**\n * An index that is calculated based on a function applied to an entity\n */\nfunction calculatedIndex(fn, comparator) {\n const index = [];\n return {\n add: (x) => sorted_map_1.sortedMap.add(index, comparator, fn(x), x.$id),\n lookups: {\n equals: (value) => sorted_map_1.sortedMap.findAll(index, comparator, value),\n },\n index,\n };\n}\nexports.calculatedIndex = calculatedIndex;\nfunction isEntityCollection(x) {\n return typeof x === 'object' && !!x && x.type === 'entities';\n}\nexports.isEntityCollection = isEntityCollection;\nfunction validatePlainObjects(xs) {\n for (const x of xs.values()) {\n if (x.constructor !== Object) {\n throw new Error(`Entities should be plain-text objects, got instance of ${x.constructor}`);\n }\n }\n return xs;\n}\nfunction ref(x) {\n return typeof x === 'string' ? { $ref: x } : { $ref: x.$id };\n}\nexports.ref = ref;\n/**\n * Determines whether two strings are equivalent in the current or specified locale.\n */\nfunction stringCmp(a, b) {\n return a.localeCompare(b);\n}\nexports.stringCmp = stringCmp;\n/**\n * Determines whether two numbers are equivalent.\n */\nfunction numberCmp(a, b) {\n return a - b;\n}\nexports.numberCmp = numberCmp;\n/**\n * Creates a comparator to determine equivalent of two values, using a given comparator, but allows values to be optional.\n *\n * @param frontOrder If `true`, returns so that undefined values are ordered at the front. If `false`, undefined values are ordered at the back.\n */\nfunction optionalCmp(cmp, frontOrder = true) {\n return (a, b) => {\n if (a == undefined && b != undefined) {\n return frontOrder ? -1 : 1;\n }\n if (a != undefined && b == undefined) {\n return frontOrder ? 1 : -1;\n }\n if (a == undefined && b == undefined) {\n return 0;\n }\n return cmp(a, b);\n };\n}\nexports.optionalCmp = optionalCmp;\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW50aXR5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2VudGl0eS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSw2Q0FBeUQ7QUE0RXpELFNBQWdCLGdCQUFnQjtJQUM5QixNQUFNLFFBQVEsR0FBRyxJQUFJLEdBQUcsRUFBYSxDQUFDO0lBQ3RDLE1BQU0sUUFBUSxHQUFHLEVBQUUsQ0FBQztJQUVwQixTQUFTLEdBQUcsQ0FBQyxDQUFJO1FBQ2YsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ3ZCLEtBQUssTUFBTSxLQUFLLElBQUksTUFBTSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsRUFBRTtZQUMzQyxpQ0FBaUM7WUFDaEMsS0FBYSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUN2QjtJQUNILENBQUM7SUFFRCxPQUFPO1FBQ0wsSUFBSSxFQUFFLFVBQVU7UUFDaEIsUUFBUTtRQUNSLE9BQU8sRUFBRSxRQUFlO1FBQ3hCLEdBQUc7UUFDSCxTQUFTLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQztZQUNoQixJQUFJLEVBQUUsVUFBVTtZQUNoQixRQUFRLEVBQUUsS0FBSyxDQUFDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxRQUFRLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQztTQUM5RCxDQUFDO1FBQ0YsV0FBVyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUU7WUFDakIsUUFBUSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ2pCLEtBQUssTUFBTSxDQUFDLElBQUksTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEVBQUU7Z0JBQ3pDLEdBQUcsQ0FBQyxDQUFRLENBQUMsQ0FBQzthQUNmO1FBQ0gsQ0FBQztRQUNELEtBQUssQ0FBQyxPQUFPO1lBQ1gsc0VBQXNFO1lBQ3RFLDRFQUE0RTtZQUM1RSw0RUFBNEU7WUFDNUUsMEVBQTBFO1lB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U0FBUyxFQUFFO1lBQ3BDLE9BQU8sVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQzVCO1FBQ0QsSUFBSSxDQUFDLElBQUksU0FBUyxJQUFJLENBQUMsSUFBSSxTQUFTLEVBQUU7WUFDcEMsT0FBTyxDQUFDLENBQUM7U0FDVjtRQUVELE9BQU8sR0FBRyxDQUFDLENBQUUsRUFBRSxDQUFFLENBQUMsQ0FBQztJQUNyQixDQUFDLENBQUM7QUFDSixDQUFDO0FBZEQsa0NBY0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBzb3J0ZWRNYXAsIFNvcnRlZE11bHRpTWFwIH0gZnJvbSAnLi9zb3J0ZWQtbWFwJztcblxuZXhwb3J0IGludGVyZmFjZSBFbnRpdHkge1xuICByZWFkb25seSAkaWQ6IHN0cmluZztcbn1cblxuZXhwb3J0IHR5cGUgUGxhaW48RSBleHRlbmRzIEVudGl0eT4gPSBPbWl0PEUsICckaWQnPjtcblxudHlwZSBJbmRleGVzPEEgZXh0ZW5kcyBFbnRpdHk+ID0geyBbSyBpbiBQcm9wZXJ0eUtleV06IEVudGl0eUluZGV4PEEsIGFueT4gfTtcblxuZXhwb3J0IGludGVyZmFjZSBFbnRpdHlDb2xsZWN0aW9uPEEgZXh0ZW5kcyBFbnRpdHksIEkgZXh0ZW5kcyBJbmRleGVzPEVudGl0eT4gPSB7fT4ge1xuICByZWFkb25seSB0eXBlOiAnZW50aXRpZXMnO1xuICByZWFkb25seSBlbnRpdGllczogTWFwPHN0cmluZywgQT47XG4gIHJlYWRvbmx5IGluZGV4ZXM6IEk7XG5cbiAgYWRkKHg6IEEpOiB2b2lkO1xuICBkZWh5ZHJhdGUoKTogYW55O1xuICBoeWRyYXRlRnJvbSh4OiBhbnkpOiB2b2lkO1xuXG4gIC8qKlxuICAgKiBBZGQgaW5kZXhlcyB0byB0aGlzIGNvbGxlY3Rpb25cbiAgICpcbiAgICogQ3JlYXRpbmcgYW4gaW5kZXhlZCBjb2xsZWN0aW9uIGlzIGEgdHdvLXN0ZXAgb3BlcmF0aW9uIHNvIHRoYXQgd2UgY2FuIHNwZWNpZnkgdGhlXG4gICAqIEVudGl0eSB0eXBlLCBidXQgaW5mZXIgdGhlIGluZGV4IHR5cGVzIChUeXBlU2NyaXB0IGRvZXMgbm90IGFsbG93IGJvdGggc3BlY2lmeWluZyBBTkRcbiAgICogaW5mZXJyaW5nIGdlbmVyaWMgYXJndW1lbnRzIGluIGEgc2luZ2xlIGNhbGwpLlxuICAgKi9cbiAgaW5kZXg8SUkgZXh0ZW5kcyBJbmRleGVzPEE+PihpbmRleGVzOiBJSSk6IEVudGl0eUNvbGxlY3Rpb248QSwgSUk+O1xufVxuXG4vKipcbiAqIEludGVyZmFjZSBmb3IgaW5kZXggb2JqZWN0c1xuICovXG5leHBvcnQgaW50ZXJmYWNlIEVudGl0eUluZGV4PEEgZXh0ZW5kcyBFbnRpdHksIEluZGV4VHlwZT4ge1xuICAvKipcbiAgICogVGhlIGxvb2t1cHMgdGhhdCB0aGUgaW5kZXhlZCBmaWVsZCB0eXBlIGFmZm9yZHNcbiAgICpcbiAgICogRm9yIGV4YW1wbGUsICdlcXVhbHMnLCAnbGVzc1RoYW4nLCAncHJlZml4JywgZXRjLlxuICAgKi9cbiAgcmVhZG9ubHkgbG9va3VwczogSW5kZXhMb29rdXBzPEluZGV4VHlwZT47XG5cbiAgLyoqXG4gICAqIFRoZSBpbmRleCBkYXRhIHN0b3JlXG4gICAqL1xuICByZWFkb25seSBpbmRleDogU29ydGVkTXVsdGlNYXA8SW5kZXhUeXBlLCBzdHJpbmc+O1xuXG4gIC8qKlxuICAgKiBBZGQgYW4gZW50aXR5IHRvIHRoZSBpbmRleFxuICAgKi9cbiAgYWRkKHg6IEEpOiB2b2lkO1xufVxuXG4vKipcbiAqIE1hcCBhIHR5cGUgdGhlIHR5cGVzIG9mIGxvb2t1cHMgd2UgY2FuIGRvIG9uIHRoYXQgdHlwZVxuICovXG5leHBvcnQgdHlwZSBJbmRleExvb2t1cHM8UD4gPSBbUF0gZXh0ZW5kcyBbc3RyaW5nXVxuICA/IFN0cmluZ0luZGV4TG9va3Vwc1xuICA6IFtQXSBleHRlbmRzIFtzdHJpbmcgfCB1bmRlZmluZWRdXG4gID8gT3B0aW9uYWxTdHJpbmdJbmRleExvb2t1cHNcbiAgOiB7fTtcblxuLyoqXG4gKiBBbGwgdGhlIGxvb2t1cHMgb24gJ3N0cmluZycgdHlwZXNcbiAqXG4gKiBXZSBjdXJyZW50bHkgb25seSBoYXZlICdlcXVhbHMnIGJ1dCB3ZSBjb3VsZCBoYXZlIG1vcmUgOilcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTdHJpbmdJbmRleExvb2t1cHMge1xuICBlcXVhbHMoeDogc3RyaW5nKTogc3RyaW5nW107XG59XG5cbi8qKlxuICogQWxsIHRoZSBsb29rdXBzIG9uICdzdHJpbmcgfCB1bmRlZmluZWQnIHR5cGVzXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgT3B0aW9uYWxTdHJpbmdJbmRleExvb2t1cHMge1xuICBlcXVhbHMoeDogc3RyaW5nIHwgdW5kZWZpbmVkKTogc3RyaW5nW107XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBlbnRpdHlDb2xsZWN0aW9uPEEgZXh0ZW5kcyBFbnRpdHk+KCk6IEVudGl0eUNvbGxlY3Rpb248QSwge30+IHtcbiAgY29uc3QgZW50aXRpZXMgPSBuZXcgTWFwPHN0cmluZywgQT4oKTtcbiAgY29uc3QgX2luZGV4ZXMgPSB7fTtcblxuICBmdW5jdGlvbiBhZGQoeDogQSkge1xuICAgIGVudGl0aWVzLnNldCh4LiRpZCwgeCk7XG4gICAgZm9yIChjb25zdCBpbmRleCBvZiBPYmplY3QudmFsdWVzKF9pbmRleGVzKSkge1xuICAgICAgLy8gRklYTUU6IHdoeSBjYW4ndCB3ZSB0eXBlIHRoaXM/XG4gICAgICAoaW5kZXggYXMgYW55KS5hZGQoeCk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHtcbiAgICB0eXBlOiAnZW50aXRpZXMnLFxuICAgIGVudGl0aWVzLFxuICAgIGluZGV4ZXM6IF9pbmRleGVzIGFzIGFueSxcbiAgICBhZGQsXG4gICAgZGVoeWRyYXRlOiAoKSA9PiAoe1xuICAgICAgdHlwZTogJ2VudGl0aWVzJyxcbiAgICAgIGVudGl0aWVzOiBBcnJheS5mcm9tKHZhbGlkYXRlUGxhaW5PYmplY3RzKGVudGl0aWVzKS52YWx1ZXMoKSksXG4gICAgfSksXG4gICAgaHlkcmF0ZUZyb206ICh4KSA9PiB7XG4gICAgICBlbnRpdGllcy5jbGVhcigpO1xuICAgICAgZm9yIChjb25zdCBlIG9mIE9iamVjdC52YWx1ZXMoeC5lbnRpdGllcykpIHtcbiAgICAgICAgYWRkKGUgYXMgYW55KTtcbiAgICAgIH1cbiAgICB9LFxuICAgIGluZGV4KGluZGV4ZXMpIHtcbiAgICAgIC8vIFRoaXMgbGltaXRhdGlvbiBleGlzdHMgcHVyZWx5IGJlY2F1c2UgSSBjb3VsZG4ndCB0eXBlIGl0IG90aGVyd2lzZS5cbiAgICAgIC8vIERlY2xhcmluZyBhIHJldHVybiB0eXBlIG9mIGBFbnRpdHlDb2xsZWN0aW9uPEEsIEkgfCBJST5gIHdvdWxkIG1ha2UgYSBsb3RcbiAgICAgIC8vIG9mIG91ciBvdGhlciB0eXBlIGluc3BlY3Rpb24gY29kZSBzdG9wIHdvcmtpbmcgKHRoZSB1bmlvbiBpcyBoYXJkIHRvIHBpY2tcbiAgICAgIC8vIGFwYXJ0KS4gU2luY2UgYWRkaW5nIGluZGV4ZXMgaW4gbXVsdGlwbGUgZ29lcyBpcyBub3QgcmVhbGx5IGEgdXNlIGNhc2UsXG4gICAgICAvLyB0aGUgc2ltcGxlciBzb2x1dGlvbiBpcyBqdXN0IHRvIHR5cGUgaXQgYXMgaWYgd2UgcmVwbGFjZWQgYWxsIGluZGV4ZXNcbiAgICAgIC8vIGFuZCBhZGQgYSBydW50aW1lIGNoZWNrIHRvIG1ha2Ugc3VyZSB0aGUgdHlwZXMgYXJlbid0IGx5aW5nLlxuICAgICAgaWYgKE9iamVjdC5rZXlzKF9pbmRleGVzKS5sZW5ndGggPiAwKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignWW91IG1heSBvbmx5IGNhbGwgLmluZGV4KCkgb25jZSBvbiBhIG5ldyBjb2xsZWN0aW9uJyk7XG4gICAgICB9XG4gICAgICBPYmplY3QuYXNzaWduKF9pbmRleGVzLCBpbmRleGVzKTtcbiAgICAgIHJldHVybiB0aGlzIGFzIGFueTtcbiAgICB9LFxuICB9O1xufVxuXG4vKipcbiAqIEFuIGluZGV4IHRoYXQgdXNlcyB0aGUgdmFsdWUgb2YgYW4gZW50aXR5J3MgZmllbGRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZpZWxkSW5kZXg8QSBleHRlbmRzIEVudGl0eSwgUCBleHRlbmRzIGtleW9mIEE+KFxuICBwcm9wTmFtZTogUCxcbiAgY29tcGFyYXRvcjogc29ydGVkTWFwLkNvbXBhcmF0b3I8QVtQXT4sXG4pOiBFbnRpdHlJbmRleDxBLCBBW1BdPiB7XG4gIHJldHVybiBjYWxjdWxhdGVkSW5kZXgoKHgpID0+IHhbcHJvcE5hbWVdLCBjb21wYXJhdG9yKTtcbn1cblxuLyoqXG4gKiBBbiBpbmRleCB0aGF0IGlzIGNhbGN1bGF0ZWQgYmFzZWQgb24gYSBmdW5jdGlvbiBhcHBsaWVkIHRvIGFuIGVudGl0eVxuICovXG5leHBvcnQgZnVuY3Rpb24gY2FsY3VsYXRlZEluZGV4PEEgZXh0ZW5kcyBFbnRpdHksIEI+KGZuOiAoeDogQSkgPT4gQiwgY29tcGFyYXRvcjogc29ydGVkTWFwLkNvbXBhcmF0b3I8Qj4pIHtcbiAgY29uc3QgaW5kZXg6IFNvcnRlZE11bHRpTWFwPEIsIHN0cmluZz4gPSBbXTtcbiAgcmV0dXJuIHtcbiAgICBhZGQ6ICh4OiBBKSA9PiBzb3J0ZWRNYXAuYWRkKGluZGV4LCBjb21wYXJhdG9yLCBmbih4KSwgeC4kaWQpLFxuICAgIGxvb2t1cHM6IHtcbiAgICAgIGVxdWFsczogKHZhbHVlOiBCKSA9PiBzb3J0ZWRNYXAuZmluZEFsbChpbmRleCwgY29tcGFyYXRvciwgdmFsdWUpLFxuICAgIH0gYXMgYW55LFxuICAgIGluZGV4LFxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNFbnRpdHlDb2xsZWN0aW9uKHg6IHVua25vd24pOiB4IGlzIEVudGl0eUNvbGxlY3Rpb248YW55PiB7XG4gIHJldHVybiB0eXBlb2YgeCA9PT0gJ29iamVjdCcgJiYgISF4ICYmICh4IGFzIGFueSkudHlwZSA9PT0gJ2VudGl0aWVzJztcbn1cblxuZnVuY3Rpb24gdmFsaWRhdGVQbGFpbk9iamVjdHM8QSBleHRlbmRzIG9iamVjdD4oeHM6IE1hcDxzdHJpbmcsIEE+KTogTWFwPHN0cmluZywgQT4ge1xuICBmb3IgKGNvbnN0IHggb2YgeHMudmFsdWVzKCkpIHtcbiAgICBpZiAoeC5jb25zdHJ1Y3RvciAhPT0gT2JqZWN0KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYEVudGl0aWVzIHNob3VsZCBiZSBwbGFpbi10ZXh0IG9iamVjdHMsIGdvdCBpbnN0YW5jZSBvZiAke3guY29uc3RydWN0b3J9YCk7XG4gICAgfVxuICB9XG4gIHJldHVybiB4cztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBSZWZlcmVuY2U8RSBleHRlbmRzIEVudGl0eT4ge1xuICByZWFkb25seSAkcmVmOiBFWyckaWQnXTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlZjxFIGV4dGVuZHMgRW50aXR5Pih4OiBFIHwgc3RyaW5nKTogUmVmZXJlbmNlPEU+IHtcbiAgcmV0dXJuIHR5cGVvZiB4ID09PSAnc3RyaW5nJyA/IHsgJHJlZjogeCB9IDogeyAkcmVmOiB4LiRpZCB9O1xufVxuXG4vKipcbiAqIERldGVybWluZXMgd2hldGhlciB0d28gc3RyaW5ncyBhcmUgZXF1aXZhbGVudCBpbiB0aGUgY3VycmVudCBvciBzcGVjaWZpZWQgbG9jYWxlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gc3RyaW5nQ21wKGE6IHN0cmluZywgYjogc3RyaW5nKTogbnVtYmVyIHtcbiAgcmV0dXJuIGEubG9jYWxlQ29tcGFyZShiKTtcbn1cblxuLyoqXG4gKiBEZXRlcm1pbmVzIHdoZXRoZXIgdHdvIG51bWJlcnMgYXJlIGVxdWl2YWxlbnQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBudW1iZXJDbXAoYTogbnVtYmVyLCBiOiBudW1iZXIpOiBudW1iZXIge1xuICByZXR1cm4gYSAtIGI7XG59XG5cbi8qKlxuICogQ3JlYXRlcyBhIGNvbXBhcmF0b3IgdG8gZGV0ZXJtaW5lIGVxdWl2YWxlbnQgb2YgdHdvIHZhbHVlcywgdXNpbmcgYSBnaXZlbiBjb21wYXJhdG9yLCBidXQgYWxsb3dzIHZhbHVlcyB0byBiZSBvcHRpb25hbC5cbiAqXG4gKiBAcGFyYW0gZnJvbnRPcmRlciBJZiBgdHJ1ZWAsIHJldHVybnMgc28gdGhhdCB1bmRlZmluZWQgdmFsdWVzIGFyZSBvcmRlcmVkIGF0IHRoZSBmcm9udC4gSWYgYGZhbHNlYCwgdW5kZWZpbmVkIHZhbHVlcyBhcmUgb3JkZXJlZCBhdCB0aGUgYmFjay5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG9wdGlvbmFsQ21wPEE+KGNtcDogKGE6IEEsIGI6IEEpID0+IG51bWJlciwgZnJvbnRPcmRlciA9IHRydWUpIHtcbiAgcmV0dXJuIChhOiBBIHwgdW5kZWZpbmVkLCBiOiBBIHwgdW5kZWZpbmVkKSA9PiB7XG4gICAgaWYgKGEgPT0gdW5kZWZpbmVkICYmIGIgIT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gZnJvbnRPcmRlciA/IC0xIDogMTtcbiAgICB9XG4gICAgaWYgKGEgIT0gdW5kZWZpbmVkICYmIGIgPT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gZnJvbnRPcmRlciA/IDEgOiAtMTtcbiAgICB9XG4gICAgaWYgKGEgPT0gdW5kZWZpbmVkICYmIGIgPT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gMDtcbiAgICB9XG5cbiAgICByZXR1cm4gY21wKGEhLCBiISk7XG4gIH07XG59XG4iXX0=","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./entity\"), exports);\n__exportStar(require(\"./relationship\"), exports);\n__exportStar(require(\"./database\"), exports);\n__exportStar(require(\"./invariant\"), exports);\n__exportStar(require(\"./result\"), exports);\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLDJDQUF5QjtBQUN6QixpREFBK0I7QUFDL0IsNkNBQTJCO0FBQzNCLDhDQUE0QjtBQUM1QiwyQ0FBeUIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2VudGl0eSc7XG5leHBvcnQgKiBmcm9tICcuL3JlbGF0aW9uc2hpcCc7XG5leHBvcnQgKiBmcm9tICcuL2RhdGFiYXNlJztcbmV4cG9ydCAqIGZyb20gJy4vaW52YXJpYW50JztcbmV4cG9ydCAqIGZyb20gJy4vcmVzdWx0JztcbiJdfQ==","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.impliesU = exports.implies = exports.evolutionInvariant = void 0;\nfunction evolutionInvariant(description, pred) {\n // TODO: Find a way\n Array.isArray(description);\n Array.isArray(pred);\n}\nexports.evolutionInvariant = evolutionInvariant;\nfunction implies(x, y) {\n return !x || y;\n}\nexports.implies = implies;\n/**\n * Implies, but treats 'undefined' as 'false'\n */\nfunction impliesU(x, y) {\n return !x || !!y;\n}\nexports.impliesU = impliesU;\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW52YXJpYW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2ludmFyaWFudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFJQSxTQUFnQixrQkFBa0IsQ0FBSSxXQUFtQixFQUFFLElBQStCO0lBQ3hGLG1CQUFtQjtJQUNuQixLQUFLLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQzNCLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDdEIsQ0FBQztBQUpELGdEQUlDO0FBRUQsU0FBZ0IsT0FBTyxDQUFDLENBQVUsRUFBRSxDQUFVO0lBQzVDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ2pCLENBQUM7QUFGRCwwQkFFQztBQUVEOztHQUVHO0FBQ0gsU0FBZ0IsUUFBUSxDQUFDLENBQXNCLEVBQUUsQ0FBc0I7SUFDckUsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ25CLENBQUM7QUFGRCw0QkFFQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB0eXBlIEludmFyaWFudCA9IHZvaWQ7XG5cbmV4cG9ydCB0eXBlIEV2b2x1dGlvbkludmFyaWFudFByZWQ8QT4gPSAocHJldmlvdXM6IEEsIGN1cnJlbnQ6IEEpID0+IGJvb2xlYW47XG5cbmV4cG9ydCBmdW5jdGlvbiBldm9sdXRpb25JbnZhcmlhbnQ8QT4oZGVzY3JpcHRpb246IHN0cmluZywgcHJlZDogRXZvbHV0aW9uSW52YXJpYW50UHJlZDxBPik6IEludmFyaWFudCB7XG4gIC8vIFRPRE86IEZpbmQgYSB3YXlcbiAgQXJyYXkuaXNBcnJheShkZXNjcmlwdGlvbik7XG4gIEFycmF5LmlzQXJyYXkocHJlZCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpbXBsaWVzKHg6IGJvb2xlYW4sIHk6IGJvb2xlYW4pIHtcbiAgcmV0dXJuICF4IHx8IHk7XG59XG5cbi8qKlxuICogSW1wbGllcywgYnV0IHRyZWF0cyAndW5kZWZpbmVkJyBhcyAnZmFsc2UnXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpbXBsaWVzVSh4OiBib29sZWFuIHwgdW5kZWZpbmVkLCB5OiBib29sZWFuIHwgdW5kZWZpbmVkKSB7XG4gIHJldHVybiAheCB8fCAhIXk7XG59XG4iXX0=","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isRelationshipCollection = exports.relationshipCollection = exports.NO_RELATIONSHIPS = void 0;\nconst NO_RELATIONSHIPS = () => ({});\nexports.NO_RELATIONSHIPS = NO_RELATIONSHIPS;\nfunction relationshipCollection(fromField, toField) {\n const forward = new Map();\n const backward = new Map();\n function add(fromId, toId, attrs) {\n let f = forward.get(fromId);\n if (!f) {\n f = [];\n forward.set(fromId, f);\n }\n let b = backward.get(toId);\n if (!b) {\n b = [];\n backward.set(toId, b);\n }\n // Behaves like a set, only add new relationship if it is structurally distinct\n const forwardRel = { $id: toId, ...attrs };\n const forwardRelStr = JSON.stringify(forwardRel);\n const existingRelationship = f.find((x) => JSON.stringify(x) === forwardRelStr);\n if (!existingRelationship) {\n f.push(forwardRel);\n b.push({ $id: fromId, ...attrs });\n }\n }\n return {\n type: 'rel',\n fromColl: fromField,\n toColl: toField,\n forward,\n backward,\n add(from, to, attributes) {\n add(from.$id, to.$id, attributes);\n },\n dehydrate() {\n return {\n type: 'rel',\n forward: Object.fromEntries(forward.entries()),\n };\n },\n hydrateFrom(x) {\n forward.clear();\n backward.clear();\n for (const [fromId, targets] of Object.entries(x.forward)) {\n for (const target of targets) {\n add(fromId, target.$id, removeId(target));\n }\n }\n },\n };\n}\nexports.relationshipCollection = relationshipCollection;\nfunction isRelationshipCollection(x) {\n return typeof x === 'object' && !!x && x.type === 'rel';\n}\nexports.isRelationshipCollection = isRelationshipCollection;\nfunction removeId(x) {\n const ret = { ...x };\n delete ret.$id;\n return ret;\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVsYXRpb25zaGlwLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL3JlbGF0aW9uc2hpcC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUE2Qk8sTUFBTSxnQkFBZ0IsR0FBRyxHQUFHLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQTlCLFFBQUEsZ0JBQWdCLG9CQUFjO0FBRTNDLFNBQWdCLHNCQUFzQixDQUNwQyxTQUF3QixFQUN4QixPQUFvQjtJQUVwQixNQUFNLE9BQU8sR0FBRyxJQUFJLEdBQUcsRUFBMkIsQ0FBQztJQUNuRCxNQUFNLFFBQVEsR0FBRyxJQUFJLEdBQUcsRUFBMkIsQ0FBQztJQUVwRCxTQUFTLEdBQUcsQ0FBQyxNQUFjLEVBQUUsSUFBWSxFQUFFLEtBQVU7UUFDbkQsSUFBSSxDQUFDLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUM1QixJQUFJLENBQUMsQ0FBQyxFQUFFO1lBQ04sQ0FBQyxHQUFHLEVBQUUsQ0FBQztZQUNQLE9BQU8sQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDO1NBQ3hCO1FBQ0QsSUFBSSxDQUFDLEdBQUcsUUFBUSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMzQixJQUFJLENBQUMsQ0FBQyxFQUFFO1lBQ04sQ0FBQyxHQUFHLEVBQUUsQ0FBQztZQUNQLFFBQVEsQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO1NBQ3ZCO1FBRUQsK0VBQStFO1FBQy9FLE1BQU0sVUFBVSxHQUFHLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxHQUFHLEtBQUssRUFBRSxDQUFDO1FBQzNDLE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDakQsTUFBTSxvQkFBb0IsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxLQUFLLGFBQWEsQ0FBQyxDQUFDO1FBRWhGLElBQUksQ0FBQyxvQkFBb0IsRUFBRTtZQUN6QixDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBQ25CLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLEdBQUcsS0FBSyxFQUFFLENBQUMsQ0FBQztTQUNuQztJQUNILENBQUM7SUFFRCxPQUFPO1FBQ0wsSUFBSSxFQUFFLEtBQUs7UUFDWCxRQUFRLEVBQUUsU0FBUztRQUNuQixNQUFNLEVBQUUsT0FBTztRQUNmLE9BQU87UUFDUCxRQUFRO1FBQ1IsR0FBRyxDQUFDLElBQVksRUFBRSxFQUFVLEVBQUUsVUFBZTtZQUMzQyxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsR0FBRyxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBQ3BDLENBQUM7UUFDRCxTQUFTO1lBQ1AsT0FBTztnQkFDTCxJQUFJLEVBQUUsS0FBSztnQkFDWCxPQUFPLEVBQUUsTUFBTSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUM7YUFDL0MsQ0FBQztRQUNKLENBQUM7UUFDRCxXQUFXLENBQUMsQ0FBTTtZQUNoQixPQUFPLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDaEIsUUFBUSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBRWpCLEtBQUssTUFBTSxDQUFDLE1BQU0sRUFBRSxPQUFPLENBQUMsSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsRUFBRTtnQkFDekQsS0FBSyxNQUFNLE1BQU0sSUFBSSxPQUEwQixFQUFFO29CQUMvQyxHQUFHLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxHQUFHLEVBQUUsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7aUJBQzNDO2FBQ0Y7UUFDSCxDQUFDO0tBQ0YsQ0FBQztBQUNKLENBQUM7QUF4REQsd0RBd0RDO0FBRUQsU0FBZ0Isd0JBQXdCLENBQUMsQ0FBVTtJQUNqRCxPQUFPLE9BQU8sQ0FBQyxLQUFLLFFBQVEsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFLLENBQVMsQ0FBQyxJQUFJLEtBQUssS0FBSyxDQUFDO0FBQ25FLENBQUM7QUFGRCw0REFFQztBQUVELFNBQVMsUUFBUSxDQUFtQixDQUFJO0lBQ3RDLE1BQU0sR0FBRyxHQUFHLEVBQUUsR0FBRyxDQUFDLEVBQUUsQ0FBQztJQUNyQixPQUFRLEdBQVcsQ0FBQyxHQUFHLENBQUM7SUFDeEIsT0FBTyxHQUFHLENBQUM7QUFDYixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRW50aXR5LCBFbnRpdHlDb2xsZWN0aW9uIH0gZnJvbSAnLi9lbnRpdHknO1xuXG5leHBvcnQgaW50ZXJmYWNlIFJlbGF0aW9uc2hpcDxGcm9tIGV4dGVuZHMgRW50aXR5LCBUbyBleHRlbmRzIEVudGl0eSwgQXR0cmlidXRlcyA9IHt9PiB7XG4gIHJlYWRvbmx5IGZyb206IEZyb207XG4gIHJlYWRvbmx5IHRvOiBUbztcbiAgcmVhZG9ubHkgYXR0cjogQXR0cmlidXRlcztcbn1cblxudHlwZSBGcm9tR2V0dGVyPFIgZXh0ZW5kcyBSZWxhdGlvbnNoaXA8YW55LCBhbnksIGFueT4+ID0gKGlkOiBzdHJpbmcpID0+IFJbJ2Zyb20nXTtcbnR5cGUgVG9HZXR0ZXI8UiBleHRlbmRzIFJlbGF0aW9uc2hpcDxhbnksIGFueSwgYW55Pj4gPSAoaWQ6IHN0cmluZykgPT4gUlsndG8nXTtcblxuZXhwb3J0IGludGVyZmFjZSBSZWxhdGlvbnNoaXBDb2xsZWN0aW9uPFIgZXh0ZW5kcyBSZWxhdGlvbnNoaXA8YW55LCBhbnksIGFueT4+IHtcbiAgcmVhZG9ubHkgdHlwZTogJ3JlbCc7XG4gIHJlYWRvbmx5IGZyb21Db2xsOiBGcm9tR2V0dGVyPFI+O1xuICByZWFkb25seSB0b0NvbGw6IFRvR2V0dGVyPFI+O1xuICByZWFkb25seSBmb3J3YXJkOiBNYXA8c3RyaW5nLCBSZWw8UlsnYXR0ciddPltdPjtcbiAgcmVhZG9ubHkgYmFja3dhcmQ6IE1hcDxzdHJpbmcsIFJlbDxSWydhdHRyJ10+W10+O1xuXG4gIGFkZChmcm9tOiBSWydmcm9tJ10sIHRvOiBSWyd0byddLCBhdHRyaWJ1dGVzOiBSWydhdHRyJ10pOiB2b2lkO1xuICBkZWh5ZHJhdGUoKTogYW55O1xuICBoeWRyYXRlRnJvbSh4OiBhbnkpOiB2b2lkO1xufVxuXG5leHBvcnQgdHlwZSBSZWw8QXR0cmlidXRlcz4gPSB7IHJlYWRvbmx5ICRpZDogc3RyaW5nIH0gJiBBdHRyaWJ1dGVzO1xuXG5leHBvcnQgdHlwZSBLZXlGb3JFbnRpdHlDb2xsZWN0aW9uPFMsIEUgZXh0ZW5kcyBFbnRpdHk+ID0ge1xuICBbSyBpbiBrZXlvZiBTXTogU1tLXSBleHRlbmRzIEVudGl0eUNvbGxlY3Rpb248RT4gPyBLIDogbmV2ZXI7XG59W2tleW9mIFNdO1xuXG5leHBvcnQgY29uc3QgTk9fUkVMQVRJT05TSElQUyA9ICgpID0+ICh7fSk7XG5cbmV4cG9ydCBmdW5jdGlvbiByZWxhdGlvbnNoaXBDb2xsZWN0aW9uPFIgZXh0ZW5kcyBSZWxhdGlvbnNoaXA8YW55LCBhbnksIGFueT4+KFxuICBmcm9tRmllbGQ6IEZyb21HZXR0ZXI8Uj4sXG4gIHRvRmllbGQ6IFRvR2V0dGVyPFI+LFxuKTogUmVsYXRpb25zaGlwQ29sbGVjdGlvbjxSPiB7XG4gIGNvbnN0IGZvcndhcmQgPSBuZXcgTWFwPHN0cmluZywgQXJyYXk8UmVsPGFueT4+PigpO1xuICBjb25zdCBiYWNrd2FyZCA9IG5ldyBNYXA8c3RyaW5nLCBBcnJheTxSZWw8YW55Pj4+KCk7XG5cbiAgZnVuY3Rpb24gYWRkKGZyb21JZDogc3RyaW5nLCB0b0lkOiBzdHJpbmcsIGF0dHJzOiBhbnkpIHtcbiAgICBsZXQgZiA9IGZvcndhcmQuZ2V0KGZyb21JZCk7XG4gICAgaWYgKCFmKSB7XG4gICAgICBmID0gW107XG4gICAgICBmb3J3YXJkLnNldChmcm9tSWQsIGYpO1xuICAgIH1cbiAgICBsZXQgYiA9IGJhY2t3YXJkLmdldCh0b0lkKTtcbiAgICBpZiAoIWIpIHtcbiAgICAgIGIgPSBbXTtcbiAgICAgIGJhY2t3YXJkLnNldCh0b0lkLCBiKTtcbiAgICB9XG5cbiAgICAvLyBCZWhhdmVzIGxpa2UgYSBzZXQsIG9ubHkgYWRkIG5ldyByZWxhdGlvbnNoaXAgaWYgaXQgaXMgc3RydWN0dXJhbGx5IGRpc3RpbmN0XG4gICAgY29uc3QgZm9yd2FyZFJlbCA9IHsgJGlkOiB0b0lkLCAuLi5hdHRycyB9O1xuICAgIGNvbnN0IGZvcndhcmRSZWxTdHIgPSBKU09OLnN0cmluZ2lmeShmb3J3YXJkUmVsKTtcbiAgICBjb25zdCBleGlzdGluZ1JlbGF0aW9uc2hpcCA9IGYuZmluZCgoeCkgPT4gSlNPTi5zdHJpbmdpZnkoeCkgPT09IGZvcndhcmRSZWxTdHIpO1xuXG4gICAgaWYgKCFleGlzdGluZ1JlbGF0aW9uc2hpcCkge1xuICAgICAgZi5wdXNoKGZvcndhcmRSZWwpO1xuICAgICAgYi5wdXNoKHsgJGlkOiBmcm9tSWQsIC4uLmF0dHJzIH0pO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB7XG4gICAgdHlwZTogJ3JlbCcsXG4gICAgZnJvbUNvbGw6IGZyb21GaWVsZCxcbiAgICB0b0NvbGw6IHRvRmllbGQsXG4gICAgZm9yd2FyZCxcbiAgICBiYWNrd2FyZCxcbiAgICBhZGQoZnJvbTogRW50aXR5LCB0bzogRW50aXR5LCBhdHRyaWJ1dGVzOiBhbnkpIHtcbiAgICAgIGFkZChmcm9tLiRpZCwgdG8uJGlkLCBhdHRyaWJ1dGVzKTtcbiAgICB9LFxuICAgIGRlaHlkcmF0ZSgpOiBhbnkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZTogJ3JlbCcsXG4gICAgICAgIGZvcndhcmQ6IE9iamVjdC5mcm9tRW50cmllcyhmb3J3YXJkLmVudHJpZXMoKSksXG4gICAgICB9O1xuICAgIH0sXG4gICAgaHlkcmF0ZUZyb20oeDogYW55KTogdm9pZCB7XG4gICAgICBmb3J3YXJkLmNsZWFyKCk7XG4gICAgICBiYWNrd2FyZC5jbGVhcigpO1xuXG4gICAgICBmb3IgKGNvbnN0IFtmcm9tSWQsIHRhcmdldHNdIG9mIE9iamVjdC5lbnRyaWVzKHguZm9yd2FyZCkpIHtcbiAgICAgICAgZm9yIChjb25zdCB0YXJnZXQgb2YgdGFyZ2V0cyBhcyBBcnJheTxSZWw8YW55Pj4pIHtcbiAgICAgICAgICBhZGQoZnJvbUlkLCB0YXJnZXQuJGlkLCByZW1vdmVJZCh0YXJnZXQpKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sXG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc1JlbGF0aW9uc2hpcENvbGxlY3Rpb24oeDogdW5rbm93bik6IHggaXMgUmVsYXRpb25zaGlwQ29sbGVjdGlvbjxhbnk+IHtcbiAgcmV0dXJuIHR5cGVvZiB4ID09PSAnb2JqZWN0JyAmJiAhIXggJiYgKHggYXMgYW55KS50eXBlID09PSAncmVsJztcbn1cblxuZnVuY3Rpb24gcmVtb3ZlSWQ8QSBleHRlbmRzIG9iamVjdD4oeDogQSk6IE9taXQ8QSwgJyRpZCc+IHtcbiAgY29uc3QgcmV0ID0geyAuLi54IH07XG4gIGRlbGV0ZSAocmV0IGFzIGFueSkuJGlkO1xuICByZXR1cm4gcmV0O1xufVxuIl19","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.liftUndefined = exports.liftResult = exports.locateFailure = exports.chain = exports.using = exports.tryCatch = exports.assertSuccess = exports.errorFrom = exports.errorMessage = exports.unpackOr = exports.unpack = exports.isSuccess = exports.isFailure = exports.failure = void 0;\n// Ensures you must use `fail()` to construct an instance of type Failure\nconst errorSym = Symbol('error');\nfunction mkLocate(prefix) {\n const ret = (error) => failure(`${prefix}: ${error}`);\n ret.in = (prefix2) => mkLocate(`${prefix}: ${prefix2}`);\n ret.locate = locateFailure(prefix);\n return ret;\n}\nfunction failure(error) {\n return { [errorSym]: error };\n}\nexports.failure = failure;\nfailure.in = (prefix) => mkLocate(prefix);\nfailure.locate = (x) => x;\nfunction isFailure(x) {\n return !!x && typeof x === 'object' && x[errorSym];\n}\nexports.isFailure = isFailure;\nfunction isSuccess(x) {\n return !isFailure(x);\n}\nexports.isSuccess = isSuccess;\nfunction unpack(x) {\n if (isFailure(x)) {\n throw new Error(`unpack: ${x[errorSym]}`);\n }\n return x;\n}\nexports.unpack = unpack;\nfunction unpackOr(x, def) {\n return (isFailure(x) ? def : x);\n}\nexports.unpackOr = unpackOr;\nfunction errorMessage(x) {\n return x[errorSym];\n}\nexports.errorMessage = errorMessage;\nfunction errorFrom(x) {\n return new Error(errorMessage(x));\n}\nexports.errorFrom = errorFrom;\nfunction assertSuccess(x) {\n if (isFailure(x)) {\n throw errorFrom(x);\n }\n}\nexports.assertSuccess = assertSuccess;\nfunction tryCatch(failOrBlock, maybeBlock) {\n const block = (maybeBlock !== null && maybeBlock !== void 0 ? maybeBlock : failOrBlock);\n const f = (maybeBlock ? failOrBlock : failure);\n try {\n return block();\n }\n catch (e) {\n return f(`Error: ${e.message}\\n${e.stack}`);\n }\n}\nexports.tryCatch = tryCatch;\nfunction using(value, block) {\n if (isFailure(value)) {\n return value;\n }\n return block(value);\n}\nexports.using = using;\nfunction chain(value, ...fns) {\n for (const fn of fns) {\n if (isFailure(value)) {\n return value;\n }\n value = fn(value);\n }\n return value;\n}\nexports.chain = chain;\n/* eslint-enable prettier/prettier */\n/**\n * Make a function that will prepend a prefix to error messages\n *\n * This is one way to be specific about the location where errors originate, by prefixing\n * errors as the call stack unwinds.\n *\n * A different method is to pass in a modified failure function using `failure.in(...)`,\n * to build the error message as the call stack deepens.\n */\nfunction locateFailure(prefix) {\n return (x) => (isFailure(x) ? failure(`${prefix}: ${x[errorSym]}`) : x);\n}\nexports.locateFailure = locateFailure;\nfunction liftResult(xs) {\n const failures = Array.isArray(xs) ? xs.filter(isFailure) : Object.values(xs).filter(isFailure);\n if (failures.length > 0) {\n return failure(failures.map(errorMessage).join(', '));\n }\n return xs;\n}\nexports.liftResult = liftResult;\nfunction liftUndefined(valueOrFunction) {\n if (typeof valueOrFunction === 'function') {\n return (...args) => {\n const value = valueOrFunction(...args);\n return value !== undefined ? value : failure('value is undefined');\n };\n }\n return valueOrFunction !== undefined ? valueOrFunction : failure('value is undefined');\n}\nexports.liftUndefined = liftUndefined;\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzdWx0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL3Jlc3VsdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSx5RUFBeUU7QUFDekUsTUFBTSxRQUFRLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBYWpDLFNBQVMsUUFBUSxDQUFDLE1BQWM7SUFDOUIsTUFBTSxHQUFHLEdBQVMsQ0FBQyxLQUFhLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxHQUFHLE1BQU0sS0FBSyxLQUFLLEVBQUUsQ0FBQyxDQUFDO0lBQ3BFLEdBQUcsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxPQUFlLEVBQUUsRUFBRSxDQUFDLFFBQVEsQ0FBQyxHQUFHLE1BQU0sS0FBSyxPQUFPLEVBQUUsQ0FBQyxDQUFDO0lBQ2hFLEdBQUcsQ0FBQyxNQUFNLEdBQUcsYUFBYSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ25DLE9BQU8sR0FBRyxDQUFDO0FBQ2IsQ0FBQztBQUlELFNBQWdCLE9BQU8sQ0FBQyxLQUFhO0lBQ25DLE9BQU8sRUFBRSxDQUFDLFFBQVEsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDO0FBQy9CLENBQUM7QUFGRCwwQkFFQztBQUNELE9BQU8sQ0FBQyxFQUFFLEdBQUcsQ0FBQyxNQUFjLEVBQUUsRUFBRSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUNsRCxPQUFPLENBQUMsTUFBTSxHQUFHLENBQUksQ0FBWSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFFeEMsU0FBZ0IsU0FBUyxDQUFJLENBQVk7SUFDdkMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLE9BQU8sQ0FBQyxLQUFLLFFBQVEsSUFBSyxDQUFTLENBQUMsUUFBUSxDQUFDLENBQUM7QUFDOUQsQ0FBQztBQUZELDhCQUVDO0FBRUQsU0FBZ0IsU0FBUyxDQUFJLENBQVk7SUFDdkMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUN2QixDQUFD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LENBQUMsU0FBUyxDQUFDLENBQUM7SUFDaEcsSUFBSSxRQUFRLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtRQUN2QixPQUFPLE9BQU8sQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0tBQ3ZEO0lBQ0QsT0FBTyxFQUFTLENBQUM7QUFDbkIsQ0FBQztBQVJELGdDQVFDO0FBT0QsU0FBZ0IsYUFBYSxDQUFDLGVBQW9CO0lBQ2hELElBQUksT0FBTyxlQUFlLEtBQUssVUFBVSxFQUFFO1FBQ3pDLE9BQU8sQ0FBQyxHQUFHLElBQVcsRUFBRSxFQUFFO1lBQ3hCLE1BQU0sS0FBSyxHQUFHLGVBQWUsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDO1lBQ3ZDLE9BQU8sS0FBSyxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsb0JBQW9CLENBQUMsQ0FBQztRQUNyRSxDQUFDLENBQUM7S0FDSDtJQUNELE9BQU8sZUFBZSxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsb0JBQW9CLENBQUMsQ0FBQztBQUN6RixDQUFDO0FBUkQsc0NBUUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBFbnN1cmVzIHlvdSBtdXN0IHVzZSBgZmFpbCgpYCB0byBjb25zdHJ1Y3QgYW4gaW5zdGFuY2Ugb2YgdHlwZSBGYWlsdXJlXG5jb25zdCBlcnJvclN5bSA9IFN5bWJvbCgnZXJyb3InKTtcblxuZXhwb3J0IHR5cGUgUmVzdWx0PEE+ID0gQSB8IEZhaWx1cmU7XG5leHBvcnQgaW50ZXJmYWNlIEZhaWx1cmUge1xuICByZWFkb25seSBbZXJyb3JTeW1dOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRmFpbCB7XG4gIChlcnJvcjogc3RyaW5nKTogRmFpbHVyZTtcbiAgaW4ocHJlZml4OiBzdHJpbmcpOiBGYWlsO1xuICBsb2NhdGU8QT4oeDogUmVzdWx0PEE+KTogUmVzdWx0PEE+O1xufVxuXG5mdW5jdGlvbiBta0xvY2F0ZShwcmVmaXg6IHN0cmluZyk6IEZhaWwge1xuICBjb25zdCByZXQ6IEZhaWwgPSAoZXJyb3I6IHN0cmluZykgPT4gZmFpbHVyZShgJHtwcmVmaXh9OiAke2Vycm9yfWApO1xuICByZXQuaW4gPSAocHJlZml4Mjogc3RyaW5nKSA9PiBta0xvY2F0ZShgJHtwcmVmaXh9OiAke3ByZWZpeDJ9YCk7XG4gIHJldC5sb2NhdGUgPSBsb2NhdGVGYWlsdXJlKHByZWZpeCk7XG4gIHJldHVybiByZXQ7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgZmFpbHVyZSBleHRlbmRzIEZhaWwge31cblxuZXhwb3J0IGZ1bmN0aW9uIGZhaWx1cmUoZXJyb3I6IHN0cmluZyk6IEZhaWx1cmUge1xuICByZXR1cm4geyBbZXJyb3JTeW1dOiBlcnJvciB9O1xufVxuZmFpbHVyZS5pbiA9IChwcmVmaXg6IHN0cmluZykgPT4gbWtMb2NhdGUocHJlZml4KTtcbmZhaWx1cmUubG9jYXRlID0gPEE+KHg6IFJlc3VsdDxBPikgPT4geDtcblxuZXhwb3J0IGZ1bmN0aW9uIGlzRmFpbHVyZTxBPih4OiBSZXN1bHQ8QT4pOiB4IGlzIEZhaWx1cmUge1xuICByZXR1cm4gISF4ICYmIHR5cGVvZiB4ID09PSAnb2JqZWN0JyAmJiAoeCBhcyBhbnkpW2Vycm9yU3ltXTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzU3VjY2VzczxBPih4OiBSZXN1bHQ8QT4pOiB4IGlzIEEge1xuICByZXR1cm4gIWlzRmFpbHVyZSh4KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHVucGFjazxBPih4OiBSZXN1bHQ8QT4pOiBBIHtcbiAgaWYgKGlzRmFpbHVyZSh4KSkge1xuICAgIHRocm93IG5ldyBFcnJvcihgdW5wYWNrOiAke3hbZXJyb3JTeW1dfWApO1xuICB9XG4gIHJldHVybiB4O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdW5wYWNrT3I8QSwgQj4oeDogUmVzdWx0PEE+LCBkZWY6IEIpOiBCIGV4dGVuZHMgQSA/IEEgOiBBIHwgQiB7XG4gIHJldHVybiAoaXNGYWlsdXJlKHgpID8gZGVmIDogeCkgYXMgYW55O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZXJyb3JNZXNzYWdlKHg6IEZhaWx1cmUpOiBzdHJpbmcge1xuICByZXR1cm4geFtlcnJvclN5bV07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBlcnJvckZyb20oeDogRmFpbHVyZSk6IEVycm9yIHtcbiAgcmV0dXJuIG5ldyBFcnJvcihlcnJvck1lc3NhZ2UoeCkpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYXNzZXJ0U3VjY2VzczxBPih4OiBSZXN1bHQ8QT4pOiBhc3NlcnRzIHggaXMgQTtcbmV4cG9ydCBmdW5jdGlvbiBhc3NlcnRTdWNjZXNzKHg6IEZhaWx1cmUpOiBuZXZlcjtcbmV4cG9ydCBmdW5jdGlvbiBhc3NlcnRTdWNjZXNzKHg6IEZhaWx1cmUpOiB2b2lkIHtcbiAgaWYgKGlzRmFpbHVyZSh4KSkge1xuICAgIHRocm93IGVycm9yRnJvbSh4KTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gdHJ5Q2F0Y2g8QT4oYmxvY2s6ICgpID0+IEEpOiBSZXN1bHQ8QT47XG5leHBvcnQgZnVuY3Rpb24gdHJ5Q2F0Y2g8QT4oZmFpbEZuOiBGYWlsLCBibG9jazogKCkgPT4gQSk6IFJlc3VsdDxBPjtcbmV4cG9ydCBmdW5jdGlvbiB0cnlDYXRjaDxBPihmYWlsT3JCbG9jazogRmFpbCB8ICgoKSA9PiBBKSwgbWF5YmVCbG9jaz86ICgpID0+IEEpOiBSZXN1bHQ8QT4ge1xuICBjb25zdCBibG9jazogKCkgPT4gQSA9IChtYXliZUJsb2NrID8/IGZhaWxPckJsb2NrKSBhcyBhbnk7XG4gIGNvbnN0IGY6IEZhaWwgPSAobWF5YmVCbG9jayA/IGZhaWxPckJsb2NrIDogZmFpbHVyZSkgYXMgYW55O1xuXG4gIHRyeSB7XG4gICAgcmV0dXJuIGJsb2NrKCk7XG4gIH0gY2F0Y2ggKGU6IGFueSkge1xuICAgIHJldHVybiBmKGBFcnJvcjogJHtlLm1lc3NhZ2V9XFxuJHtlLnN0YWNrfWApO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB1c2luZzxBLCBCPih2YWx1ZTogUmVzdWx0PEE+LCBibG9jazogKHg6IEEpID0+IFJlc3VsdDxCPik6IFJlc3VsdDxCPiB7XG4gIGlmIChpc0ZhaWx1cmUodmFsdWUpKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG4gIHJldHVybiBibG9jayh2YWx1ZSk7XG59XG5cbi8qKlxuICogTGlrZSAndXNpbmcnLCBidXQgY2FuIHRha2UgYW55IG51bWJlciBvZiBmdW5jdGlvbnNcbiAqL1xuLyogZXNsaW50LWRpc2FibGUgcHJldHRpZXIvcHJldHRpZXIgKi9cbmV4cG9ydCBmdW5jdGlvbiBjaGFpbjxBLCBCPih2YWx1ZTogUmVzdWx0PEE+LCBiMDogKHg6IEEpID0+IFJlc3VsdDxCPik6IFJlc3VsdDxCPjtcbmV4cG9ydCBmdW5jdGlvbiBjaGFpbjxBLCBCLCBDPih2YWx1ZTogUmVzdWx0PEE+LCBiMDogKHg6IEEpID0+IFJlc3VsdDxCPiwgYjE6ICh4OiBCKSA9PiBSZXN1bHQ8Qz4pOiBSZXN1bHQ8Qz47XG5leHBvcnQgZnVuY3Rpb24gY2hhaW48QSwgQiwgQywgRD4odmFsdWU6IFJlc3VsdDxBPiwgYjA6ICh4OiBBKSA9PiBSZXN1bHQ8Qj4sIGIxOiAoeDogQikgPT4gUmVzdWx0PEM+LCBiMjogKHg6IEMpID0+IFJlc3VsdDxEPik6IFJlc3VsdDxEPjtcbmV4cG9ydCBmdW5jdGlvbiBjaGFpbjxBLCBCLCBDLCBELCBFPih2YWx1ZTogUmVzdWx0PEE+LCBiMDogKHg6IEEpID0+IFJlc3VsdDxCPiwgYjE6ICh4OiBCKSA9PiBSZXN1bHQ8Qz4sIGIyOiAoeDogQykgPT4gUmVzdWx0PEQ+LCBiMzogKHg6IEQpID0+IFJlc3VsdDxFPik6IFJlc3VsdDxFPjtcbmV4cG9ydCBmdW5jdGlvbiBjaGFpbjxBLCBCLCBDLCBELCBFLCBGPih2YWx1ZTogUmVzdWx0PEE+LCBiMDogKHg6IEEpID0+IFJlc3VsdDxCPiwgYjE6ICh4OiBCKSA9PiBSZXN1bHQ8Qz4sIGIyOiAoeDogQykgPT4gUmVzdWx0PEQ+LCBiMzogKHg6IEQpID0+IFJlc3VsdDxFPiwgYjQ6ICh4OiBFKSA9PiBSZXN1bHQ8Rj4pOiBSZXN1bHQ8Rj47XG5leHBvcnQgZnVuY3Rpb24gY2hhaW48QSwgQiwgQywgRCwgRSwgRiwgRz4odmFsdWU6IFJlc3VsdDxBPiwgYjA6ICh4OiBBKSA9PiBSZXN1bHQ8Qj4sIGIxOiAoeDogQikgPT4gUmVzdWx0PEM+LCBiMjogKHg6IEMpID0+IFJlc3VsdDxEPiwgYjM6ICh4OiBEKSA9PiBSZXN1bHQ8RT4sIGI0OiAoeDogRSkgPT4gUmVzdWx0PEY+LCBiNTogKHg6IEYpID0+IFJlc3VsdDxHPik6IFJlc3VsdDxHPjtcbmV4cG9ydCBmdW5jdGlvbiBjaGFpbih2YWx1ZTogUmVzdWx0PGFueT4sIC4uLmZuczogQXJyYXk8KHg6IGFueSkgPT4gUmVzdWx0PGFueT4+KTogUmVzdWx0PGFueT4ge1xuICBmb3IgKGNvbnN0IGZuIG9mIGZucykge1xuICAgIGlmIChpc0ZhaWx1cmUodmFsdWUpKSB7XG4gICAgICByZXR1cm4gdmFsdWU7XG4gICAgfVxuICAgIHZhbHVlID0gZm4odmFsdWUpO1xuICB9XG4gIHJldHVybiB2YWx1ZTtcbn1cbi8qIGVzbGludC1lbmFibGUgcHJldHRpZXIvcHJldHRpZXIgKi9cblxuLyoqXG4gKiBNYWtlIGEgZnVuY3Rpb24gdGhhdCB3aWxsIHByZXBlbmQgYSBwcmVmaXggdG8gZXJyb3IgbWVzc2FnZXNcbiAqXG4gKiBUaGlzIGlzIG9uZSB3YXkgdG8gYmUgc3BlY2lmaWMgYWJvdXQgdGhlIGxvY2F0aW9uIHdoZXJlIGVycm9ycyBvcmlnaW5hdGUsIGJ5IHByZWZpeGluZ1xuICogZXJyb3JzIGFzIHRoZSBjYWxsIHN0YWNrIHVud2luZHMuXG4gKlxuICogQSBkaWZmZXJlbnQgbWV0aG9kIGlzIHRvIHBhc3MgaW4gYSBtb2RpZmllZCBmYWlsdXJlIGZ1bmN0aW9uIHVzaW5nIGBmYWlsdXJlLmluKC4uLilgLFxuICogdG8gYnVpbGQgdGhlIGVycm9yIG1lc3NhZ2UgYXMgdGhlIGNhbGwgc3RhY2sgZGVlcGVucy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGxvY2F0ZUZhaWx1cmUocHJlZml4OiBzdHJpbmcpIHtcbiAgcmV0dXJuIDxBPih4OiBSZXN1bHQ8QT4pOiBSZXN1bHQ8QT4gPT4gKGlzRmFpbHVyZSh4KSA/IGZhaWx1cmUoYCR7cHJlZml4fTogJHt4W2Vycm9yU3ltXX1gKSA6IHgpO1xufVxuXG5leHBvcnQgdHlwZSBGYWlsdXJlcyA9IEFycmF5PEZhaWx1cmU+O1xuXG5leHBvcnQgZnVuY3Rpb24gbGlmdFJlc3VsdDxBPih4czogUmVjb3JkPHN0cmluZywgUmVzdWx0PEE+Pik6IFJlc3VsdDxSZWNvcmQ8c3RyaW5nLCBBPj47XG5leHBvcnQgZnVuY3Rpb24gbGlmdFJlc3VsdDxBPih4czogQXJyYXk8UmVzdWx0PEE+Pik6IFJlc3VsdDxBcnJheTxBPj47XG5leHBvcnQgZnVuY3Rpb24gbGlmdFJlc3VsdDxBPihcbiAgeHM6IFJlY29yZDxzdHJpbmcsIFJlc3VsdDxBPj4gfCBBcnJheTxSZXN1bHQ8QT4+LFxuKTogUmVzdWx0PFJlY29yZDxzdHJpbmcsIEE+PiB8IFJlc3VsdDxBcnJheTxBPj4ge1xuICBjb25zdCBmYWlsdXJlcyA9IEFycmF5LmlzQXJyYXkoeHMpID8geHMuZmlsdGVyKGlzRmFpbHVyZSkgOiBPYmplY3QudmFsdWVzKHhzKS5maWx0ZXIoaXNGYWlsdXJlKTtcbiAgaWYgKGZhaWx1cmVzLmxlbmd0aCA+IDApIHtcbiAgICByZXR1cm4gZmFpbHVyZShmYWlsdXJlcy5tYXAoZXJyb3JNZXNzYWdlKS5qb2luKCcsICcpKTtcbiAgfVxuICByZXR1cm4geHMgYXMgYW55O1xufVxuXG4vKipcbiAqIExpZnQgYSB2YWx1ZSB0aGF0IGNhbiBiZSAndW5kZWZpbmVkJyB0byBhIHJlc3VsdCwgb3IgYSBmdW5jdGlvbiB0aGF0IGNhbiByZXR1cm4gdW5kZWZpbmVkLlxuICovXG5leHBvcnQgZnVuY3Rpb24gbGlmdFVuZGVmaW5lZDxBPih2OiBBIHwgdW5kZWZpbmVkKTogUmVzdWx0PE5vbk51bGxhYmxlPEE+PjtcbmV4cG9ydCBmdW5jdGlvbiBsaWZ0VW5kZWZpbmVkPEEsIEYgZXh0ZW5kcyAoLi4uYXJnczogYW55W10pID0+IEE+KHY6IEYpOiAoeDogUGFyYW1ldGVyczxGPikgPT4gUmVzdWx0PE5vbk51bGxhYmxlPEE+PjtcbmV4cG9ydCBmdW5jdGlvbiBsaWZ0VW5kZWZpbmVkKHZhbHVlT3JGdW5jdGlvbjogYW55KTogYW55IHtcbiAgaWYgKHR5cGVvZiB2YWx1ZU9yRnVuY3Rpb24gPT09ICdmdW5jdGlvbicpIHtcbiAgICByZXR1cm4gKC4uLmFyZ3M6IGFueVtdKSA9PiB7XG4gICAgICBjb25zdCB2YWx1ZSA9IHZhbHVlT3JGdW5jdGlvbiguLi5hcmdzKTtcbiAgICAgIHJldHVybiB2YWx1ZSAhPT0gdW5kZWZpbmVkID8gdmFsdWUgOiBmYWlsdXJlKCd2YWx1ZSBpcyB1bmRlZmluZWQnKTtcbiAgICB9O1xuICB9XG4gIHJldHVybiB2YWx1ZU9yRnVuY3Rpb24gIT09IHVuZGVmaW5lZCA/IHZhbHVlT3JGdW5jdGlvbiA6IGZhaWx1cmUoJ3ZhbHVlIGlzIHVuZGVmaW5lZCcpO1xufVxuIl19","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.sortedMap = void 0;\n/**\n * A sorted map that may contain the same key multiple times\n *\n * Stored as a sorted array of [key, value] pairs, using binary search to locate\n * entries.\n */\nvar sortedMap;\n(function (sortedMap) {\n function add(map, cmp, key, value) {\n const i = lowerBound(map, cmp, key);\n map.splice(i, 0, [key, value]);\n }\n sortedMap.add = add;\n function find(map, cmp, key) {\n const i = lowerBound(map, cmp, key);\n if (i === map.length) {\n return undefined;\n }\n const [foundKey, value] = map[i];\n return cmp(foundKey, key) === 0 ? value : undefined;\n }\n sortedMap.find = find;\n function findAll(map, cmp, key) {\n let i = lowerBound(map, cmp, key);\n const ret = [];\n while (i < map.length && cmp(map[i][0], key) === 0) {\n ret.push(map[i][1]);\n i += 1;\n }\n return ret;\n }\n sortedMap.findAll = findAll;\n /**\n * Return the index to the first element in the the sorted map\n *\n * @see https://en.cppreference.com/w/cpp/algorithm/lower_bound#Version_2\n */\n function lowerBound(map, cmp, key) {\n let first = 0;\n let count = map.length;\n while (count > 0) {\n let it = first;\n let step = Math.floor(count / 2);\n it += step;\n if (cmp(map[it][0], key) < 0) {\n first = ++it;\n count -= step + 1;\n }\n else {\n count = step;\n }\n }\n return first;\n }\n})(sortedMap = exports.sortedMap || (exports.sortedMap = {}));\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic29ydGVkLW1hcC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9zb3J0ZWQtbWFwLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUVBOzs7OztHQUtHO0FBQ0gsSUFBaUIsU0FBUyxDQXNEekI7QUF0REQsV0FBaUIsU0FBUztJQUd4QixTQUFnQixHQUFHLENBQU8sR0FBeUIsRUFBRSxHQUFrQixFQUFFLEdBQU0sRUFBRSxLQUFRO1FBQ3ZGLE1BQU0sQ0FBQyxHQUFHLFVBQVUsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQ3BDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQ2pDLENBQUM7SUFIZSxhQUFHLE1BR2xCLENBQUE7SUFFRCxTQUFnQixJQUFJLENBQU8sR0FBeUIsRUFBRSxHQUFrQixFQUFFLEdBQU07UUFDOUUsTUFBTSxDQUFDLEdBQUcsVUFBVSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDcEMsSUFBSSxDQUFDLEtBQUssR0FBRyxDQUFDLE1BQU0sRUFBRTtZQUNwQixPQUFPLFNBQVMsQ0FBQztTQUNsQjtRQUVELE1BQU0sQ0FBQyxRQUFRLEVBQUUsS0FBSyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ2pDLE9BQU8sR0FBRyxDQUFDLFFBQVEsRUFBRSxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO0lBQ3RELENBQUM7SUFSZSxjQUFJLE9BUW5CLENBQUE7SUFFRCxTQUFnQixPQUFPLENBQU8sR0FBeUIsRUFBRSxHQUFrQixFQUFFLEdBQU07UUFDakYsSUFBSSxDQUFDLEdBQUcsVUFBVSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFFbEMsTUFBTSxHQUFHLEdBQUcsRUFBRSxDQUFDO1FBQ2YsT0FBTyxDQUFDLEdBQUcsR0FBRyxDQUFDLE1BQU0sSUFBSSxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUNsRCxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3BCLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDUjtRQUVELE9BQU8sR0FBRyxDQUFDO0lBQ2IsQ0FBQztJQVZlLGlCQUFPLFVBVXRCLENBQUE7SUFFRDs7OztPQUlHO0lBQ0gsU0FBUyxVQUFVLENBQU8sR0FBeUIsRUFBRSxHQUFrQixFQUFFLEdBQU07UUFDN0UsSUFBSSxLQUFLLEdBQUcsQ0FBQyxDQUFDO1FBQ2QsSUFBSSxLQUFLLEdBQUcsR0FBRyxDQUFDLE1BQU0sQ0FBQztRQUV2QixPQUFPLEtBQUssR0FBRyxDQUFDLEVBQUU7WUFDaEIsSUFBSSxFQUFFLEdBQUcsS0FBSyxDQUFDO1lBQ2YsSUFBSSxJQUFJLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUM7WUFDakMsRUFBRSxJQUFJLElBQUksQ0FBQztZQUVYLElBQUksR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUU7Z0JBQzVCLEtBQUssR0FBRyxFQUFFLEVBQUUsQ0FBQztnQkFDYixLQUFLLElBQUksSUFBSSxHQUFHLENBQUMsQ0FBQzthQUNuQjtpQkFBTTtnQkFDTCxLQUFLLEdBQUcsSUFBSSxDQUFDO2FBQ2Q7U0FDRjtRQUVELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztBQUNILENBQUMsRUF0RGdCLFNBQVMsR0FBVCxpQkFBUyxLQUFULGlCQUFTLFFBc0R6QiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB0eXBlIFNvcnRlZE11bHRpTWFwPEEsIEI+ID0gQXJyYXk8W0EsIEJdPjtcblxuLyoqXG4gKiBBIHNvcnRlZCBtYXAgdGhhdCBtYXkgY29udGFpbiB0aGUgc2FtZSBrZXkgbXVsdGlwbGUgdGltZXNcbiAqXG4gKiBTdG9yZWQgYXMgYSBzb3J0ZWQgYXJyYXkgb2YgW2tleSwgdmFsdWVdIHBhaXJzLCB1c2luZyBiaW5hcnkgc2VhcmNoIHRvIGxvY2F0ZVxuICogZW50cmllcy5cbiAqL1xuZXhwb3J0IG5hbWVzcGFjZSBzb3J0ZWRNYXAge1xuICBleHBvcnQgdHlwZSBDb21wYXJhdG9yPEE+ID0gKGE6IEEsIGI6IEEpID0+IG51bWJlcjtcblxuICBleHBvcnQgZnVuY3Rpb24gYWRkPEEsIEI+KG1hcDogU29ydGVkTXVsdGlNYXA8QSwgQj4sIGNtcDogQ29tcGFyYXRvcjxBPiwga2V5OiBBLCB2YWx1ZTogQikge1xuICAgIGNvbnN0IGkgPSBsb3dlckJvdW5kKG1hcCwgY21wLCBrZXkpO1xuICAgIG1hcC5zcGxpY2UoaSwgMCwgW2tleSwgdmFsdWVdKTtcbiAgfVxuXG4gIGV4cG9ydCBmdW5jdGlvbiBmaW5kPEEsIEI+KG1hcDogU29ydGVkTXVsdGlNYXA8QSwgQj4sIGNtcDogQ29tcGFyYXRvcjxBPiwga2V5OiBBKTogQiB8IHVuZGVmaW5lZCB7XG4gICAgY29uc3QgaSA9IGxvd2VyQm91bmQobWFwLCBjbXAsIGtleSk7XG4gICAgaWYgKGkgPT09IG1hcC5sZW5ndGgpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgY29uc3QgW2ZvdW5kS2V5LCB2YWx1ZV0gPSBtYXBbaV07XG4gICAgcmV0dXJuIGNtcChmb3VuZEtleSwga2V5KSA9PT0gMCA/IHZhbHVlIDogdW5kZWZpbmVkO1xuICB9XG5cbiAgZXhwb3J0IGZ1bmN0aW9uIGZpbmRBbGw8QSwgQj4obWFwOiBTb3J0ZWRNdWx0aU1hcDxBLCBCPiwgY21wOiBDb21wYXJhdG9yPEE+LCBrZXk6IEEpOiBCW10ge1xuICAgIGxldCBpID0gbG93ZXJCb3VuZChtYXAsIGNtcCwga2V5KTtcblxuICAgIGNvbnN0IHJldCA9IFtdO1xuICAgIHdoaWxlIChpIDwgbWFwLmxlbmd0aCAmJiBjbXAobWFwW2ldWzBdLCBrZXkpID09PSAwKSB7XG4gICAgICByZXQucHVzaChtYXBbaV1bMV0pO1xuICAgICAgaSArPSAxO1xuICAgIH1cblxuICAgIHJldHVybiByZXQ7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJuIHRoZSBpbmRleCB0byB0aGUgZmlyc3QgZWxlbWVudCBpbiB0aGUgdGhlIHNvcnRlZCBtYXBcbiAgICpcbiAgICogQHNlZSBodHRwczovL2VuLmNwcHJlZmVyZW5jZS5jb20vdy9jcHAvYWxnb3JpdGhtL2xvd2VyX2JvdW5kI1ZlcnNpb25fMlxuICAgKi9cbiAgZnVuY3Rpb24gbG93ZXJCb3VuZDxBLCBCPihtYXA6IFNvcnRlZE11bHRpTWFwPEEsIEI+LCBjbXA6IENvbXBhcmF0b3I8QT4sIGtleTogQSk6IG51bWJlciB7XG4gICAgbGV0IGZpcnN0ID0gMDtcbiAgICBsZXQgY291bnQgPSBtYXAubGVuZ3RoO1xuXG4gICAgd2hpbGUgKGNvdW50ID4gMCkge1xuICAgICAgbGV0IGl0ID0gZmlyc3Q7XG4gICAgICBsZXQgc3RlcCA9IE1hdGguZmxvb3IoY291bnQgLyAyKTtcbiAgICAgIGl0ICs9IHN0ZXA7XG5cbiAgICAgIGlmIChjbXAobWFwW2l0XVswXSwga2V5KSA8IDApIHtcbiAgICAgICAgZmlyc3QgPSArK2l0O1xuICAgICAgICBjb3VudCAtPSBzdGVwICsgMTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvdW50ID0gc3RlcDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gZmlyc3Q7XG4gIH1cbn1cbiJdfQ==","\"use strict\";\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// pkg/dist-src/index.js\nvar dist_src_exports = {};\n__export(dist_src_exports, {\n createTokenAuth: () => createTokenAuth\n});\nmodule.exports = __toCommonJS(dist_src_exports);\n\n// pkg/dist-src/auth.js\nvar REGEX_IS_INSTALLATION_LEGACY = /^v1\\./;\nvar REGEX_IS_INSTALLATION = /^ghs_/;\nvar REGEX_IS_USER_TO_SERVER = /^ghu_/;\nasync function auth(token) {\n const isApp = token.split(/\\./).length === 3;\n const isInstallation = REGEX_IS_INSTALLATION_LEGACY.test(token) || REGEX_IS_INSTALLATION.test(token);\n const isUserToServer = REGEX_IS_USER_TO_SERVER.test(token);\n const tokenType = isApp ? \"app\" : isInstallation ? \"installation\" : isUserToServer ? \"user-to-server\" : \"oauth\";\n return {\n type: \"token\",\n token,\n tokenType\n };\n}\n\n// pkg/dist-src/with-authorization-prefix.js\nfunction withAuthorizationPrefix(token) {\n if (token.split(/\\./).length === 3) {\n return `bearer ${token}`;\n }\n return `token ${token}`;\n}\n\n// pkg/dist-src/hook.js\nasync function hook(token, request, route, parameters) {\n const endpoint = request.endpoint.merge(\n route,\n parameters\n );\n endpoint.headers.authorization = withAuthorizationPrefix(token);\n return request(endpoint);\n}\n\n// pkg/dist-src/index.js\nvar createTokenAuth = function createTokenAuth2(token) {\n if (!token) {\n throw new Error(\"[@octokit/auth-token] No token passed to createTokenAuth\");\n }\n if (typeof token !== \"string\") {\n throw new Error(\n \"[@octokit/auth-token] Token passed to createTokenAuth is not a string\"\n );\n }\n token = token.replace(/^(token|bearer) +/i, \"\");\n return Object.assign(auth.bind(null, token), {\n hook: hook.bind(null, token)\n });\n};\n// Annotate the CommonJS export names for ESM import in node:\n0 && (module.exports = {\n createTokenAuth\n});\n","\"use strict\";\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// pkg/dist-src/index.js\nvar dist_src_exports = {};\n__export(dist_src_exports, {\n Octokit: () => Octokit\n});\nmodule.exports = __toCommonJS(dist_src_exports);\nvar import_universal_user_agent = require(\"universal-user-agent\");\nvar import_before_after_hook = require(\"before-after-hook\");\nvar import_request = require(\"@octokit/request\");\nvar import_graphql = require(\"@octokit/graphql\");\nvar import_auth_token = require(\"@octokit/auth-token\");\n\n// pkg/dist-src/version.js\nvar VERSION = \"5.2.0\";\n\n// pkg/dist-src/index.js\nvar noop = () => {\n};\nvar consoleWarn = console.warn.bind(console);\nvar consoleError = console.error.bind(console);\nvar userAgentTrail = `octokit-core.js/${VERSION} ${(0, import_universal_user_agent.getUserAgent)()}`;\nvar Octokit = class {\n static {\n this.VERSION = VERSION;\n }\n static defaults(defaults) {\n const OctokitWithDefaults = class extends this {\n constructor(...args) {\n const options = args[0] || {};\n if (typeof defaults === \"function\") {\n super(defaults(options));\n return;\n }\n super(\n Object.assign(\n {},\n defaults,\n options,\n options.userAgent && defaults.userAgent ? {\n userAgent: `${options.userAgent} ${defaults.userAgent}`\n } : null\n )\n );\n }\n };\n return OctokitWithDefaults;\n }\n static {\n this.plugins = [];\n }\n /**\n * Attach a plugin (or many) to your Octokit instance.\n *\n * @example\n * const API = Octokit.plugin(plugin1, plugin2, plugin3, ...)\n */\n static plugin(...newPlugins) {\n const currentPlugins = this.plugins;\n const NewOctokit = class extends this {\n static {\n this.plugins = currentPlugins.concat(\n newPlugins.filter((plugin) => !currentPlugins.includes(plugin))\n );\n }\n };\n return NewOctokit;\n }\n constructor(options = {}) {\n const hook = new import_before_after_hook.Collection();\n const requestDefaults = {\n baseUrl: import_request.request.endpoint.DEFAULTS.baseUrl,\n headers: {},\n request: Object.assign({}, options.request, {\n // @ts-ignore internal usage only, no need to type\n hook: hook.bind(null, \"request\")\n }),\n mediaType: {\n previews: [],\n format: \"\"\n }\n };\n requestDefaults.headers[\"user-agent\"] = options.userAgent ? `${options.userAgent} ${userAgentTrail}` : userAgentTrail;\n if (options.baseUrl) {\n requestDefaults.baseUrl = options.baseUrl;\n }\n if (options.previews) {\n requestDefaults.mediaType.previews = options.previews;\n }\n if (options.timeZone) {\n requestDefaults.headers[\"time-zone\"] = options.timeZone;\n }\n this.request = import_request.request.defaults(requestDefaults);\n this.graphql = (0, import_graphql.withCustomRequest)(this.request).defaults(requestDefaults);\n this.log = Object.assign(\n {\n debug: noop,\n info: noop,\n warn: consoleWarn,\n error: consoleError\n },\n options.log\n );\n this.hook = hook;\n if (!options.authStrategy) {\n if (!options.auth) {\n this.auth = async () => ({\n type: \"unauthenticated\"\n });\n } else {\n const auth = (0, import_auth_token.createTokenAuth)(options.auth);\n hook.wrap(\"request\", auth.hook);\n this.auth = auth;\n }\n } else {\n const { authStrategy, ...otherOptions } = options;\n const auth = authStrategy(\n Object.assign(\n {\n request: this.request,\n log: this.log,\n // we pass the current octokit instance as well as its constructor options\n // to allow for authentication strategies that return a new octokit instance\n // that shares the same internal state as the current one. The original\n // requirement for this was the \"event-octokit\" authentication strategy\n // of https://github.com/probot/octokit-auth-probot.\n octokit: this,\n octokitOptions: otherOptions\n },\n options.auth\n )\n );\n hook.wrap(\"request\", auth.hook);\n this.auth = auth;\n }\n const classConstructor = this.constructor;\n for (let i = 0; i < classConstructor.plugins.length; ++i) {\n Object.assign(this, classConstructor.plugins[i](this, options));\n }\n }\n};\n// Annotate the CommonJS export names for ESM import in node:\n0 && (module.exports = {\n Octokit\n});\n","\"use strict\";\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// pkg/dist-src/index.js\nvar dist_src_exports = {};\n__export(dist_src_exports, {\n endpoint: () => endpoint\n});\nmodule.exports = __toCommonJS(dist_src_exports);\n\n// pkg/dist-src/defaults.js\nvar import_universal_user_agent = require(\"universal-user-agent\");\n\n// pkg/dist-src/version.js\nvar VERSION = \"9.0.5\";\n\n// pkg/dist-src/defaults.js\nvar userAgent = `octokit-endpoint.js/${VERSION} ${(0, import_universal_user_agent.getUserAgent)()}`;\nvar DEFAULTS = {\n method: \"GET\",\n baseUrl: \"https://api.github.com\",\n headers: {\n accept: \"application/vnd.github.v3+json\",\n \"user-agent\": userAgent\n },\n mediaType: {\n format: \"\"\n }\n};\n\n// pkg/dist-src/util/lowercase-keys.js\nfunction lowercaseKeys(object) {\n if (!object) {\n return {};\n }\n return Object.keys(object).reduce((newObj, key) => {\n newObj[key.toLowerCase()] = object[key];\n return newObj;\n }, {});\n}\n\n// pkg/dist-src/util/is-plain-object.js\nfunction isPlainObject(value) {\n if (typeof value !== \"object\" || value === null)\n return false;\n if (Object.prototype.toString.call(value) !== \"[object Object]\")\n return false;\n const proto = Object.getPrototypeOf(value);\n if (proto === null)\n return true;\n const Ctor = Object.prototype.hasOwnProperty.call(proto, \"constructor\") && proto.constructor;\n return typeof Ctor === \"function\" && Ctor instanceof Ctor && Function.prototype.call(Ctor) === Function.prototype.call(value);\n}\n\n// pkg/dist-src/util/merge-deep.js\nfunction mergeDeep(defaults, options) {\n const result = Object.assign({}, defaults);\n Object.keys(options).forEach((key) => {\n if (isPlainObject(options[key])) {\n if (!(key in defaults))\n Object.assign(result, { [key]: options[key] });\n else\n result[key] = mergeDeep(defaults[key], options[key]);\n } else {\n Object.assign(result, { [key]: options[key] });\n }\n });\n return result;\n}\n\n// pkg/dist-src/util/remove-undefined-properties.js\nfunction removeUndefinedProperties(obj) {\n for (const key in obj) {\n if (obj[key] === void 0) {\n delete obj[key];\n }\n }\n return obj;\n}\n\n// pkg/dist-src/merge.js\nfunction merge(defaults, route, options) {\n if (typeof route === \"string\") {\n let [method, url] = route.split(\" \");\n options = Object.assign(url ? { method, url } : { url: method }, options);\n } else {\n options = Object.assign({}, route);\n }\n options.headers = lowercaseKeys(options.headers);\n removeUndefinedProperties(options);\n removeUndefinedProperties(options.headers);\n const mergedOptions = mergeDeep(defaults || {}, options);\n if (options.url === \"/graphql\") {\n if (defaults && defaults.mediaType.previews?.length) {\n mergedOptions.mediaType.previews = defaults.mediaType.previews.filter(\n (preview) => !mergedOptions.mediaType.previews.includes(preview)\n ).concat(mergedOptions.mediaType.previews);\n }\n mergedOptions.mediaType.previews = (mergedOptions.mediaType.previews || []).map((preview) => preview.replace(/-preview/, \"\"));\n }\n return mergedOptions;\n}\n\n// pkg/dist-src/util/add-query-parameters.js\nfunction addQueryParameters(url, parameters) {\n const separator = /\\?/.test(url) ? \"&\" : \"?\";\n const names = Object.keys(parameters);\n if (names.length === 0) {\n return url;\n }\n return url + separator + names.map((name) => {\n if (name === \"q\") {\n return \"q=\" + parameters.q.split(\"+\").map(encodeURIComponent).join(\"+\");\n }\n return `${name}=${encodeURIComponent(parameters[name])}`;\n }).join(\"&\");\n}\n\n// pkg/dist-src/util/extract-url-variable-names.js\nvar urlVariableRegex = /\\{[^}]+\\}/g;\nfunction removeNonChars(variableName) {\n return variableName.replace(/^\\W+|\\W+$/g, \"\").split(/,/);\n}\nfunction extractUrlVariableNames(url) {\n const matches = url.match(urlVariableRegex);\n if (!matches) {\n return [];\n }\n return matches.map(removeNonChars).reduce((a, b) => a.concat(b), []);\n}\n\n// pkg/dist-src/util/omit.js\nfunction omit(object, keysToOmit) {\n const result = { __proto__: null };\n for (const key of Object.keys(object)) {\n if (keysToOmit.indexOf(key) === -1) {\n result[key] = object[key];\n }\n }\n return result;\n}\n\n// pkg/dist-src/util/url-template.js\nfunction encodeReserved(str) {\n return str.split(/(%[0-9A-Fa-f]{2})/g).map(function(part) {\n if (!/%[0-9A-Fa-f]/.test(part)) {\n part = encodeURI(part).replace(/%5B/g, \"[\").replace(/%5D/g, \"]\");\n }\n return part;\n }).join(\"\");\n}\nfunction encodeUnreserved(str) {\n return encodeURIComponent(str).replace(/[!'()*]/g, function(c) {\n return \"%\" + c.charCodeAt(0).toString(16).toUpperCase();\n });\n}\nfunction encodeValue(operator, value, key) {\n value = operator === \"+\" || operator === \"#\" ? encodeReserved(value) : encodeUnreserved(value);\n if (key) {\n return encodeUnreserved(key) + \"=\" + value;\n } else {\n return value;\n }\n}\nfunction isDefined(value) {\n return value !== void 0 && value !== null;\n}\nfunction isKeyOperator(operator) {\n return operator === \";\" || operator === \"&\" || operator === \"?\";\n}\nfunction getValues(context, operator, key, modifier) {\n var value = context[key], result = [];\n if (isDefined(value) && value !== \"\") {\n if (typeof value === \"string\" || typeof value === \"number\" || typeof value === \"boolean\") {\n value = value.toString();\n if (modifier && modifier !== \"*\") {\n value = value.substring(0, parseInt(modifier, 10));\n }\n result.push(\n encodeValue(operator, value, isKeyOperator(operator) ? key : \"\")\n );\n } else {\n if (modifier === \"*\") {\n if (Array.isArray(value)) {\n value.filter(isDefined).forEach(function(value2) {\n result.push(\n encodeValue(operator, value2, isKeyOperator(operator) ? key : \"\")\n );\n });\n } else {\n Object.keys(value).forEach(function(k) {\n if (isDefined(value[k])) {\n result.push(encodeValue(operator, value[k], k));\n }\n });\n }\n } else {\n const tmp = [];\n if (Array.isArray(value)) {\n value.filter(isDefined).forEach(function(value2) {\n tmp.push(encodeValue(operator, value2));\n });\n } else {\n Object.keys(value).forEach(function(k) {\n if (isDefined(value[k])) {\n tmp.push(encodeUnreserved(k));\n tmp.push(encodeValue(operator, value[k].toString()));\n }\n });\n }\n if (isKeyOperator(operator)) {\n result.push(encodeUnreserved(key) + \"=\" + tmp.join(\",\"));\n } else if (tmp.length !== 0) {\n result.push(tmp.join(\",\"));\n }\n }\n }\n } else {\n if (operator === \";\") {\n if (isDefined(value)) {\n result.push(encodeUnreserved(key));\n }\n } else if (value === \"\" && (operator === \"&\" || operator === \"?\")) {\n result.push(encodeUnreserved(key) + \"=\");\n } else if (value === \"\") {\n result.push(\"\");\n }\n }\n return result;\n}\nfunction parseUrl(template) {\n return {\n expand: expand.bind(null, template)\n };\n}\nfunction expand(template, context) {\n var operators = [\"+\", \"#\", \".\", \"/\", \";\", \"?\", \"&\"];\n template = template.replace(\n /\\{([^\\{\\}]+)\\}|([^\\{\\}]+)/g,\n function(_, expression, literal) {\n if (expression) {\n let operator = \"\";\n const values = [];\n if (operators.indexOf(expression.charAt(0)) !== -1) {\n operator = expression.charAt(0);\n expression = expression.substr(1);\n }\n expression.split(/,/g).forEach(function(variable) {\n var tmp = /([^:\\*]*)(?::(\\d+)|(\\*))?/.exec(variable);\n values.push(getValues(context, operator, tmp[1], tmp[2] || tmp[3]));\n });\n if (operator && operator !== \"+\") {\n var separator = \",\";\n if (operator === \"?\") {\n separator = \"&\";\n } else if (operator !== \"#\") {\n separator = operator;\n }\n return (values.length !== 0 ? operator : \"\") + values.join(separator);\n } else {\n return values.join(\",\");\n }\n } else {\n return encodeReserved(literal);\n }\n }\n );\n if (template === \"/\") {\n return template;\n } else {\n return template.replace(/\\/$/, \"\");\n }\n}\n\n// pkg/dist-src/parse.js\nfunction parse(options) {\n let method = options.method.toUpperCase();\n let url = (options.url || \"/\").replace(/:([a-z]\\w+)/g, \"{$1}\");\n let headers = Object.assign({}, options.headers);\n let body;\n let parameters = omit(options, [\n \"method\",\n \"baseUrl\",\n \"url\",\n \"headers\",\n \"request\",\n \"mediaType\"\n ]);\n const urlVariableNames = extractUrlVariableNames(url);\n url = parseUrl(url).expand(parameters);\n if (!/^http/.test(url)) {\n url = options.baseUrl + url;\n }\n const omittedParameters = Object.keys(options).filter((option) => urlVariableNames.includes(option)).concat(\"baseUrl\");\n const remainingParameters = omit(parameters, omittedParameters);\n const isBinaryRequest = /application\\/octet-stream/i.test(headers.accept);\n if (!isBinaryRequest) {\n if (options.mediaType.format) {\n headers.accept = headers.accept.split(/,/).map(\n (format) => format.replace(\n /application\\/vnd(\\.\\w+)(\\.v3)?(\\.\\w+)?(\\+json)?$/,\n `application/vnd$1$2.${options.mediaType.format}`\n )\n ).join(\",\");\n }\n if (url.endsWith(\"/graphql\")) {\n if (options.mediaType.previews?.length) {\n const previewsFromAcceptHeader = headers.accept.match(/[\\w-]+(?=-preview)/g) || [];\n headers.accept = previewsFromAcceptHeader.concat(options.mediaType.previews).map((preview) => {\n const format = options.mediaType.format ? `.${options.mediaType.format}` : \"+json\";\n return `application/vnd.github.${preview}-preview${format}`;\n }).join(\",\");\n }\n }\n }\n if ([\"GET\", \"HEAD\"].includes(method)) {\n url = addQueryParameters(url, remainingParameters);\n } else {\n if (\"data\" in remainingParameters) {\n body = remainingParameters.data;\n } else {\n if (Object.keys(remainingParameters).length) {\n body = remainingParameters;\n }\n }\n }\n if (!headers[\"content-type\"] && typeof body !== \"undefined\") {\n headers[\"content-type\"] = \"application/json; charset=utf-8\";\n }\n if ([\"PATCH\", \"PUT\"].includes(method) && typeof body === \"undefined\") {\n body = \"\";\n }\n return Object.assign(\n { method, url, headers },\n typeof body !== \"undefined\" ? { body } : null,\n options.request ? { request: options.request } : null\n );\n}\n\n// pkg/dist-src/endpoint-with-defaults.js\nfunction endpointWithDefaults(defaults, route, options) {\n return parse(merge(defaults, route, options));\n}\n\n// pkg/dist-src/with-defaults.js\nfunction withDefaults(oldDefaults, newDefaults) {\n const DEFAULTS2 = merge(oldDefaults, newDefaults);\n const endpoint2 = endpointWithDefaults.bind(null, DEFAULTS2);\n return Object.assign(endpoint2, {\n DEFAULTS: DEFAULTS2,\n defaults: withDefaults.bind(null, DEFAULTS2),\n merge: merge.bind(null, DEFAULTS2),\n parse\n });\n}\n\n// pkg/dist-src/index.js\nvar endpoint = withDefaults(null, DEFAULTS);\n// Annotate the CommonJS export names for ESM import in node:\n0 && (module.exports = {\n endpoint\n});\n","\"use strict\";\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// pkg/dist-src/index.js\nvar dist_src_exports = {};\n__export(dist_src_exports, {\n GraphqlResponseError: () => GraphqlResponseError,\n graphql: () => graphql2,\n withCustomRequest: () => withCustomRequest\n});\nmodule.exports = __toCommonJS(dist_src_exports);\nvar import_request3 = require(\"@octokit/request\");\nvar import_universal_user_agent = require(\"universal-user-agent\");\n\n// pkg/dist-src/version.js\nvar VERSION = \"7.1.0\";\n\n// pkg/dist-src/with-defaults.js\nvar import_request2 = require(\"@octokit/request\");\n\n// pkg/dist-src/graphql.js\nvar import_request = require(\"@octokit/request\");\n\n// pkg/dist-src/error.js\nfunction _buildMessageForResponseErrors(data) {\n return `Request failed due to following response errors:\n` + data.errors.map((e) => ` - ${e.message}`).join(\"\\n\");\n}\nvar GraphqlResponseError = class extends Error {\n constructor(request2, headers, response) {\n super(_buildMessageForResponseErrors(response));\n this.request = request2;\n this.headers = headers;\n this.response = response;\n this.name = \"GraphqlResponseError\";\n this.errors = response.errors;\n this.data = response.data;\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, this.constructor);\n }\n }\n};\n\n// pkg/dist-src/graphql.js\nvar NON_VARIABLE_OPTIONS = [\n \"method\",\n \"baseUrl\",\n \"url\",\n \"headers\",\n \"request\",\n \"query\",\n \"mediaType\"\n];\nvar FORBIDDEN_VARIABLE_OPTIONS = [\"query\", \"method\", \"url\"];\nvar GHES_V3_SUFFIX_REGEX = /\\/api\\/v3\\/?$/;\nfunction graphql(request2, query, options) {\n if (options) {\n if (typeof query === \"string\" && \"query\" in options) {\n return Promise.reject(\n new Error(`[@octokit/graphql] \"query\" cannot be used as variable name`)\n );\n }\n for (const key in options) {\n if (!FORBIDDEN_VARIABLE_OPTIONS.includes(key))\n continue;\n return Promise.reject(\n new Error(\n `[@octokit/graphql] \"${key}\" cannot be used as variable name`\n )\n );\n }\n }\n const parsedOptions = typeof query === \"string\" ? Object.assign({ query }, options) : query;\n const requestOptions = Object.keys(\n parsedOptions\n ).reduce((result, key) => {\n if (NON_VARIABLE_OPTIONS.includes(key)) {\n result[key] = parsedOptions[key];\n return result;\n }\n if (!result.variables) {\n result.variables = {};\n }\n result.variables[key] = parsedOptions[key];\n return result;\n }, {});\n const baseUrl = parsedOptions.baseUrl || request2.endpoint.DEFAULTS.baseUrl;\n if (GHES_V3_SUFFIX_REGEX.test(baseUrl)) {\n requestOptions.url = baseUrl.replace(GHES_V3_SUFFIX_REGEX, \"/api/graphql\");\n }\n return request2(requestOptions).then((response) => {\n if (response.data.errors) {\n const headers = {};\n for (const key of Object.keys(response.headers)) {\n headers[key] = response.headers[key];\n }\n throw new GraphqlResponseError(\n requestOptions,\n headers,\n response.data\n );\n }\n return response.data.data;\n });\n}\n\n// pkg/dist-src/with-defaults.js\nfunction withDefaults(request2, newDefaults) {\n const newRequest = request2.defaults(newDefaults);\n const newApi = (query, options) => {\n return graphql(newRequest, query, options);\n };\n return Object.assign(newApi, {\n defaults: withDefaults.bind(null, newRequest),\n endpoint: newRequest.endpoint\n });\n}\n\n// pkg/dist-src/index.js\nvar graphql2 = withDefaults(import_request3.request, {\n headers: {\n \"user-agent\": `octokit-graphql.js/${VERSION} ${(0, import_universal_user_agent.getUserAgent)()}`\n },\n method: \"POST\",\n url: \"/graphql\"\n});\nfunction withCustomRequest(customRequest) {\n return withDefaults(customRequest, {\n method: \"POST\",\n url: \"/graphql\"\n });\n}\n// Annotate the CommonJS export names for ESM import in node:\n0 && (module.exports = {\n GraphqlResponseError,\n graphql,\n withCustomRequest\n});\n","\"use strict\";\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// pkg/dist-src/index.js\nvar dist_src_exports = {};\n__export(dist_src_exports, {\n composePaginateRest: () => composePaginateRest,\n isPaginatingEndpoint: () => isPaginatingEndpoint,\n paginateRest: () => paginateRest,\n paginatingEndpoints: () => paginatingEndpoints\n});\nmodule.exports = __toCommonJS(dist_src_exports);\n\n// pkg/dist-src/version.js\nvar VERSION = \"9.2.1\";\n\n// pkg/dist-src/normalize-paginated-list-response.js\nfunction normalizePaginatedListResponse(response) {\n if (!response.data) {\n return {\n ...response,\n data: []\n };\n }\n const responseNeedsNormalization = \"total_count\" in response.data && !(\"url\" in response.data);\n if (!responseNeedsNormalization)\n return response;\n const incompleteResults = response.data.incomplete_results;\n const repositorySelection = response.data.repository_selection;\n const totalCount = response.data.total_count;\n delete response.data.incomplete_results;\n delete response.data.repository_selection;\n delete response.data.total_count;\n const namespaceKey = Object.keys(response.data)[0];\n const data = response.data[namespaceKey];\n response.data = data;\n if (typeof incompleteResults !== \"undefined\") {\n response.data.incomplete_results = incompleteResults;\n }\n if (typeof repositorySelection !== \"undefined\") {\n response.data.repository_selection = repositorySelection;\n }\n response.data.total_count = totalCount;\n return response;\n}\n\n// pkg/dist-src/iterator.js\nfunction iterator(octokit, route, parameters) {\n const options = typeof route === \"function\" ? route.endpoint(parameters) : octokit.request.endpoint(route, parameters);\n const requestMethod = typeof route === \"function\" ? route : octokit.request;\n const method = options.method;\n const headers = options.headers;\n let url = options.url;\n return {\n [Symbol.asyncIterator]: () => ({\n async next() {\n if (!url)\n return { done: true };\n try {\n const response = await requestMethod({ method, url, headers });\n const normalizedResponse = normalizePaginatedListResponse(response);\n url = ((normalizedResponse.headers.link || \"\").match(\n /<([^>]+)>;\\s*rel=\"next\"/\n ) || [])[1];\n return { value: normalizedResponse };\n } catch (error) {\n if (error.status !== 409)\n throw error;\n url = \"\";\n return {\n value: {\n status: 200,\n headers: {},\n data: []\n }\n };\n }\n }\n })\n };\n}\n\n// pkg/dist-src/paginate.js\nfunction paginate(octokit, route, parameters, mapFn) {\n if (typeof parameters === \"function\") {\n mapFn = parameters;\n parameters = void 0;\n }\n return gather(\n octokit,\n [],\n iterator(octokit, route, parameters)[Symbol.asyncIterator](),\n mapFn\n );\n}\nfunction gather(octokit, results, iterator2, mapFn) {\n return iterator2.next().then((result) => {\n if (result.done) {\n return results;\n }\n let earlyExit = false;\n function done() {\n earlyExit = true;\n }\n results = results.concat(\n mapFn ? mapFn(result.value, done) : result.value.data\n );\n if (earlyExit) {\n return results;\n }\n return gather(octokit, results, iterator2, mapFn);\n });\n}\n\n// pkg/dist-src/compose-paginate.js\nvar composePaginateRest = Object.assign(paginate, {\n iterator\n});\n\n// pkg/dist-src/generated/paginating-endpoints.js\nvar paginatingEndpoints = [\n \"GET /advisories\",\n \"GET /app/hook/deliveries\",\n \"GET /app/installation-requests\",\n \"GET /app/installations\",\n \"GET /assignments/{assignment_id}/accepted_assignments\",\n \"GET /classrooms\",\n \"GET /classrooms/{classroom_id}/assignments\",\n \"GET /enterprises/{enterprise}/dependabot/alerts\",\n \"GET /enterprises/{enterprise}/secret-scanning/alerts\",\n \"GET /events\",\n \"GET /gists\",\n \"GET /gists/public\",\n \"GET /gists/starred\",\n \"GET /gists/{gist_id}/comments\",\n \"GET /gists/{gist_id}/commits\",\n \"GET /gists/{gist_id}/forks\",\n \"GET /installation/repositories\",\n \"GET /issues\",\n \"GET /licenses\",\n \"GET /marketplace_listing/plans\",\n \"GET /marketplace_listing/plans/{plan_id}/accounts\",\n \"GET /marketplace_listing/stubbed/plans\",\n \"GET /marketplace_listing/stubbed/plans/{plan_id}/accounts\",\n \"GET /networks/{owner}/{repo}/events\",\n \"GET /notifications\",\n \"GET /organizations\",\n \"GET /orgs/{org}/actions/cache/usage-by-repository\",\n \"GET /orgs/{org}/actions/permissions/repositories\",\n \"GET /orgs/{org}/actions/runners\",\n \"GET /orgs/{org}/actions/secrets\",\n \"GET /orgs/{org}/actions/secrets/{secret_name}/repositories\",\n \"GET /orgs/{org}/actions/variables\",\n \"GET /orgs/{org}/actions/variables/{name}/repositories\",\n \"GET /orgs/{org}/blocks\",\n \"GET /orgs/{org}/code-scanning/alerts\",\n \"GET /orgs/{org}/codespaces\",\n \"GET /orgs/{org}/codespaces/secrets\",\n \"GET /orgs/{org}/codespaces/secrets/{secret_name}/repositories\",\n \"GET /orgs/{org}/copilot/billing/seats\",\n \"GET /orgs/{org}/dependabot/alerts\",\n \"GET /orgs/{org}/dependabot/secrets\",\n \"GET /orgs/{org}/dependabot/secrets/{secret_name}/repositories\",\n \"GET /orgs/{org}/events\",\n \"GET /orgs/{org}/failed_invitations\",\n \"GET /orgs/{org}/hooks\",\n \"GET /orgs/{org}/hooks/{hook_id}/deliveries\",\n \"GET /orgs/{org}/installations\",\n \"GET /orgs/{org}/invitations\",\n \"GET /orgs/{org}/invitations/{invitation_id}/teams\",\n \"GET /orgs/{org}/issues\",\n \"GET /orgs/{org}/members\",\n \"GET /orgs/{org}/members/{username}/codespaces\",\n \"GET /orgs/{org}/migrations\",\n \"GET /orgs/{org}/migrations/{migration_id}/repositories\",\n \"GET /orgs/{org}/organization-roles/{role_id}/teams\",\n \"GET /orgs/{org}/organization-roles/{role_id}/users\",\n \"GET /orgs/{org}/outside_collaborators\",\n \"GET /orgs/{org}/packages\",\n \"GET /orgs/{org}/packages/{package_type}/{package_name}/versions\",\n \"GET /orgs/{org}/personal-access-token-requests\",\n \"GET /orgs/{org}/personal-access-token-requests/{pat_request_id}/repositories\",\n \"GET /orgs/{org}/personal-access-tokens\",\n \"GET /orgs/{org}/personal-access-tokens/{pat_id}/repositories\",\n \"GET /orgs/{org}/projects\",\n \"GET /orgs/{org}/properties/values\",\n \"GET /orgs/{org}/public_members\",\n \"GET /orgs/{org}/repos\",\n \"GET /orgs/{org}/rulesets\",\n \"GET /orgs/{org}/rulesets/rule-suites\",\n \"GET /orgs/{org}/secret-scanning/alerts\",\n \"GET /orgs/{org}/security-advisories\",\n \"GET /orgs/{org}/teams\",\n \"GET /orgs/{org}/teams/{team_slug}/discussions\",\n \"GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments\",\n \"GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}/reactions\",\n \"GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/reactions\",\n \"GET /orgs/{org}/teams/{team_slug}/invitations\",\n \"GET /orgs/{org}/teams/{team_slug}/members\",\n \"GET /orgs/{org}/teams/{team_slug}/projects\",\n \"GET /orgs/{org}/teams/{team_slug}/repos\",\n \"GET /orgs/{org}/teams/{team_slug}/teams\",\n \"GET /projects/columns/{column_id}/cards\",\n \"GET /projects/{project_id}/collaborators\",\n \"GET /projects/{project_id}/columns\",\n \"GET /repos/{owner}/{repo}/actions/artifacts\",\n \"GET /repos/{owner}/{repo}/actions/caches\",\n \"GET /repos/{owner}/{repo}/actions/organization-secrets\",\n \"GET /repos/{owner}/{repo}/actions/organization-variables\",\n \"GET /repos/{owner}/{repo}/actions/runners\",\n \"GET /repos/{owner}/{repo}/actions/runs\",\n \"GET /repos/{owner}/{repo}/actions/runs/{run_id}/artifacts\",\n \"GET /repos/{owner}/{repo}/actions/runs/{run_id}/attempts/{attempt_number}/jobs\",\n \"GET /repos/{owner}/{repo}/actions/runs/{run_id}/jobs\",\n \"GET /repos/{owner}/{repo}/actions/secrets\",\n \"GET /repos/{owner}/{repo}/actions/variables\",\n \"GET /repos/{owner}/{repo}/actions/workflows\",\n \"GET /repos/{owner}/{repo}/actions/workflows/{workflow_id}/runs\",\n \"GET /repos/{owner}/{repo}/activity\",\n \"GET /repos/{owner}/{repo}/assignees\",\n \"GET /repos/{owner}/{repo}/branches\",\n \"GET /repos/{owner}/{repo}/check-runs/{check_run_id}/annotations\",\n \"GET /repos/{owner}/{repo}/check-suites/{check_suite_id}/check-runs\",\n \"GET /repos/{owner}/{repo}/code-scanning/alerts\",\n \"GET /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}/instances\",\n \"GET /repos/{owner}/{repo}/code-scanning/analyses\",\n \"GET /repos/{owner}/{repo}/codespaces\",\n \"GET /repos/{owner}/{repo}/codespaces/devcontainers\",\n \"GET /repos/{owner}/{repo}/codespaces/secrets\",\n \"GET /repos/{owner}/{repo}/collaborators\",\n \"GET /repos/{owner}/{repo}/comments\",\n \"GET /repos/{owner}/{repo}/comments/{comment_id}/reactions\",\n \"GET /repos/{owner}/{repo}/commits\",\n \"GET /repos/{owner}/{repo}/commits/{commit_sha}/comments\",\n \"GET /repos/{owner}/{repo}/commits/{commit_sha}/pulls\",\n \"GET /repos/{owner}/{repo}/commits/{ref}/check-runs\",\n \"GET /repos/{owner}/{repo}/commits/{ref}/check-suites\",\n \"GET /repos/{owner}/{repo}/commits/{ref}/status\",\n \"GET /repos/{owner}/{repo}/commits/{ref}/statuses\",\n \"GET /repos/{owner}/{repo}/contributors\",\n \"GET /repos/{owner}/{repo}/dependabot/alerts\",\n \"GET /repos/{owner}/{repo}/dependabot/secrets\",\n \"GET /repos/{owner}/{repo}/deployments\",\n \"GET /repos/{owner}/{repo}/deployments/{deployment_id}/statuses\",\n \"GET /repos/{owner}/{repo}/environments\",\n \"GET /repos/{owner}/{repo}/environments/{environment_name}/deployment-branch-policies\",\n \"GET /repos/{owner}/{repo}/environments/{environment_name}/deployment_protection_rules/apps\",\n \"GET /repos/{owner}/{repo}/events\",\n \"GET /repos/{owner}/{repo}/forks\",\n \"GET /repos/{owner}/{repo}/hooks\",\n \"GET /repos/{owner}/{repo}/hooks/{hook_id}/deliveries\",\n \"GET /repos/{owner}/{repo}/invitations\",\n \"GET /repos/{owner}/{repo}/issues\",\n \"GET /repos/{owner}/{repo}/issues/comments\",\n \"GET /repos/{owner}/{repo}/issues/comments/{comment_id}/reactions\",\n \"GET /repos/{owner}/{repo}/issues/events\",\n \"GET /repos/{owner}/{repo}/issues/{issue_number}/comments\",\n \"GET /repos/{owner}/{repo}/issues/{issue_number}/events\",\n \"GET /repos/{owner}/{repo}/issues/{issue_number}/labels\",\n \"GET /repos/{owner}/{repo}/issues/{issue_number}/reactions\",\n \"GET /repos/{owner}/{repo}/issues/{issue_number}/timeline\",\n \"GET /repos/{owner}/{repo}/keys\",\n \"GET /repos/{owner}/{repo}/labels\",\n \"GET /repos/{owner}/{repo}/milestones\",\n \"GET /repos/{owner}/{repo}/milestones/{milestone_number}/labels\",\n \"GET /repos/{owner}/{repo}/notifications\",\n \"GET /repos/{owner}/{repo}/pages/builds\",\n \"GET /repos/{owner}/{repo}/projects\",\n \"GET /repos/{owner}/{repo}/pulls\",\n \"GET /repos/{owner}/{repo}/pulls/comments\",\n \"GET /repos/{owner}/{repo}/pulls/comments/{comment_id}/reactions\",\n \"GET /repos/{owner}/{repo}/pulls/{pull_number}/comments\",\n \"GET /repos/{owner}/{repo}/pulls/{pull_number}/commits\",\n \"GET /repos/{owner}/{repo}/pulls/{pull_number}/files\",\n \"GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews\",\n \"GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/comments\",\n \"GET /repos/{owner}/{repo}/releases\",\n \"GET /repos/{owner}/{repo}/releases/{release_id}/assets\",\n \"GET /repos/{owner}/{repo}/releases/{release_id}/reactions\",\n \"GET /repos/{owner}/{repo}/rules/branches/{branch}\",\n \"GET /repos/{owner}/{repo}/rulesets\",\n \"GET /repos/{owner}/{repo}/rulesets/rule-suites\",\n \"GET /repos/{owner}/{repo}/secret-scanning/alerts\",\n \"GET /repos/{owner}/{repo}/secret-scanning/alerts/{alert_number}/locations\",\n \"GET /repos/{owner}/{repo}/security-advisories\",\n \"GET /repos/{owner}/{repo}/stargazers\",\n \"GET /repos/{owner}/{repo}/subscribers\",\n \"GET /repos/{owner}/{repo}/tags\",\n \"GET /repos/{owner}/{repo}/teams\",\n \"GET /repos/{owner}/{repo}/topics\",\n \"GET /repositories\",\n \"GET /repositories/{repository_id}/environments/{environment_name}/secrets\",\n \"GET /repositories/{repository_id}/environments/{environment_name}/variables\",\n \"GET /search/code\",\n \"GET /search/commits\",\n \"GET /search/issues\",\n \"GET /search/labels\",\n \"GET /search/repositories\",\n \"GET /search/topics\",\n \"GET /search/users\",\n \"GET /teams/{team_id}/discussions\",\n \"GET /teams/{team_id}/discussions/{discussion_number}/comments\",\n \"GET /teams/{team_id}/discussions/{discussion_number}/comments/{comment_number}/reactions\",\n \"GET /teams/{team_id}/discussions/{discussion_number}/reactions\",\n \"GET /teams/{team_id}/invitations\",\n \"GET /teams/{team_id}/members\",\n \"GET /teams/{team_id}/projects\",\n \"GET /teams/{team_id}/repos\",\n \"GET /teams/{team_id}/teams\",\n \"GET /user/blocks\",\n \"GET /user/codespaces\",\n \"GET /user/codespaces/secrets\",\n \"GET /user/emails\",\n \"GET /user/followers\",\n \"GET /user/following\",\n \"GET /user/gpg_keys\",\n \"GET /user/installations\",\n \"GET /user/installations/{installation_id}/repositories\",\n \"GET /user/issues\",\n \"GET /user/keys\",\n \"GET /user/marketplace_purchases\",\n \"GET /user/marketplace_purchases/stubbed\",\n \"GET /user/memberships/orgs\",\n \"GET /user/migrations\",\n \"GET /user/migrations/{migration_id}/repositories\",\n \"GET /user/orgs\",\n \"GET /user/packages\",\n \"GET /user/packages/{package_type}/{package_name}/versions\",\n \"GET /user/public_emails\",\n \"GET /user/repos\",\n \"GET /user/repository_invitations\",\n \"GET /user/social_accounts\",\n \"GET /user/ssh_signing_keys\",\n \"GET /user/starred\",\n \"GET /user/subscriptions\",\n \"GET /user/teams\",\n \"GET /users\",\n \"GET /users/{username}/events\",\n \"GET /users/{username}/events/orgs/{org}\",\n \"GET /users/{username}/events/public\",\n \"GET /users/{username}/followers\",\n \"GET /users/{username}/following\",\n \"GET /users/{username}/gists\",\n \"GET /users/{username}/gpg_keys\",\n \"GET /users/{username}/keys\",\n \"GET /users/{username}/orgs\",\n \"GET /users/{username}/packages\",\n \"GET /users/{username}/projects\",\n \"GET /users/{username}/received_events\",\n \"GET /users/{username}/received_events/public\",\n \"GET /users/{username}/repos\",\n \"GET /users/{username}/social_accounts\",\n \"GET /users/{username}/ssh_signing_keys\",\n \"GET /users/{username}/starred\",\n \"GET /users/{username}/subscriptions\"\n];\n\n// pkg/dist-src/paginating-endpoints.js\nfunction isPaginatingEndpoint(arg) {\n if (typeof arg === \"string\") {\n return paginatingEndpoints.includes(arg);\n } else {\n return false;\n }\n}\n\n// pkg/dist-src/index.js\nfunction paginateRest(octokit) {\n return {\n paginate: Object.assign(paginate.bind(null, octokit), {\n iterator: iterator.bind(null, octokit)\n })\n };\n}\npaginateRest.VERSION = VERSION;\n// Annotate the CommonJS export names for ESM import in node:\n0 && (module.exports = {\n composePaginateRest,\n isPaginatingEndpoint,\n paginateRest,\n paginatingEndpoints\n});\n","\"use strict\";\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// pkg/dist-src/index.js\nvar dist_src_exports = {};\n__export(dist_src_exports, {\n legacyRestEndpointMethods: () => legacyRestEndpointMethods,\n restEndpointMethods: () => restEndpointMethods\n});\nmodule.exports = __toCommonJS(dist_src_exports);\n\n// pkg/dist-src/version.js\nvar VERSION = \"10.4.1\";\n\n// pkg/dist-src/generated/endpoints.js\nvar Endpoints = {\n actions: {\n addCustomLabelsToSelfHostedRunnerForOrg: [\n \"POST /orgs/{org}/actions/runners/{runner_id}/labels\"\n ],\n addCustomLabelsToSelfHostedRunnerForRepo: [\n \"POST /repos/{owner}/{repo}/actions/runners/{runner_id}/labels\"\n ],\n addSelectedRepoToOrgSecret: [\n \"PUT /orgs/{org}/actions/secrets/{secret_name}/repositories/{repository_id}\"\n ],\n addSelectedRepoToOrgVariable: [\n \"PUT /orgs/{org}/actions/variables/{name}/repositories/{repository_id}\"\n ],\n approveWorkflowRun: [\n \"POST /repos/{owner}/{repo}/actions/runs/{run_id}/approve\"\n ],\n cancelWorkflowRun: [\n \"POST /repos/{owner}/{repo}/actions/runs/{run_id}/cancel\"\n ],\n createEnvironmentVariable: [\n \"POST /repositories/{repository_id}/environments/{environment_name}/variables\"\n ],\n createOrUpdateEnvironmentSecret: [\n \"PUT /repositories/{repository_id}/environments/{environment_name}/secrets/{secret_name}\"\n ],\n createOrUpdateOrgSecret: [\"PUT /orgs/{org}/actions/secrets/{secret_name}\"],\n createOrUpdateRepoSecret: [\n \"PUT /repos/{owner}/{repo}/actions/secrets/{secret_name}\"\n ],\n createOrgVariable: [\"POST /orgs/{org}/actions/variables\"],\n createRegistrationTokenForOrg: [\n \"POST /orgs/{org}/actions/runners/registration-token\"\n ],\n createRegistrationTokenForRepo: [\n \"POST /repos/{owner}/{repo}/actions/runners/registration-token\"\n ],\n createRemoveTokenForOrg: [\"POST /orgs/{org}/actions/runners/remove-token\"],\n createRemoveTokenForRepo: [\n \"POST /repos/{owner}/{repo}/actions/runners/remove-token\"\n ],\n createRepoVariable: [\"POST /repos/{owner}/{repo}/actions/variables\"],\n createWorkflowDispatch: [\n \"POST /repos/{owner}/{repo}/actions/workflows/{workflow_id}/dispatches\"\n ],\n deleteActionsCacheById: [\n \"DELETE /repos/{owner}/{repo}/actions/caches/{cache_id}\"\n ],\n deleteActionsCacheByKey: [\n \"DELETE /repos/{owner}/{repo}/actions/caches{?key,ref}\"\n ],\n deleteArtifact: [\n \"DELETE /repos/{owner}/{repo}/actions/artifacts/{artifact_id}\"\n ],\n deleteEnvironmentSecret: [\n \"DELETE /repositories/{repository_id}/environments/{environment_name}/secrets/{secret_name}\"\n ],\n deleteEnvironmentVariable: [\n \"DELETE /repositories/{repository_id}/environments/{environment_name}/variables/{name}\"\n ],\n deleteOrgSecret: [\"DELETE /orgs/{org}/actions/secrets/{secret_name}\"],\n deleteOrgVariable: [\"DELETE /orgs/{org}/actions/variables/{name}\"],\n deleteRepoSecret: [\n \"DELETE /repos/{owner}/{repo}/actions/secrets/{secret_name}\"\n ],\n deleteRepoVariable: [\n \"DELETE /repos/{owner}/{repo}/actions/variables/{name}\"\n ],\n deleteSelfHostedRunnerFromOrg: [\n \"DELETE /orgs/{org}/actions/runners/{runner_id}\"\n ],\n deleteSelfHostedRunnerFromRepo: [\n \"DELETE /repos/{owner}/{repo}/actions/runners/{runner_id}\"\n ],\n deleteWorkflowRun: [\"DELETE /repos/{owner}/{repo}/actions/runs/{run_id}\"],\n deleteWorkflowRunLogs: [\n \"DELETE /repos/{owner}/{repo}/actions/runs/{run_id}/logs\"\n ],\n disableSelectedRepositoryGithubActionsOrganization: [\n \"DELETE /orgs/{org}/actions/permissions/repositories/{repository_id}\"\n ],\n disableWorkflow: [\n \"PUT /repos/{owner}/{repo}/actions/workflows/{workflow_id}/disable\"\n ],\n downloadArtifact: [\n \"GET /repos/{owner}/{repo}/actions/artifacts/{artifact_id}/{archive_format}\"\n ],\n downloadJobLogsForWorkflowRun: [\n \"GET /repos/{owner}/{repo}/actions/jobs/{job_id}/logs\"\n ],\n downloadWorkflowRunAttemptLogs: [\n \"GET /repos/{owner}/{repo}/actions/runs/{run_id}/attempts/{attempt_number}/logs\"\n ],\n downloadWorkflowRunLogs: [\n \"GET /repos/{owner}/{repo}/actions/runs/{run_id}/logs\"\n ],\n enableSelectedRepositoryGithubActionsOrganization: [\n \"PUT /orgs/{org}/actions/permissions/repositories/{repository_id}\"\n ],\n enableWorkflow: [\n \"PUT /repos/{owner}/{repo}/actions/workflows/{workflow_id}/enable\"\n ],\n forceCancelWorkflowRun: [\n \"POST /repos/{owner}/{repo}/actions/runs/{run_id}/force-cancel\"\n ],\n generateRunnerJitconfigForOrg: [\n \"POST /orgs/{org}/actions/runners/generate-jitconfig\"\n ],\n generateRunnerJitconfigForRepo: [\n \"POST /repos/{owner}/{repo}/actions/runners/generate-jitconfig\"\n ],\n getActionsCacheList: [\"GET /repos/{owner}/{repo}/actions/caches\"],\n getActionsCacheUsage: [\"GET /repos/{owner}/{repo}/actions/cache/usage\"],\n getActionsCacheUsageByRepoForOrg: [\n \"GET /orgs/{org}/actions/cache/usage-by-repository\"\n ],\n getActionsCacheUsageForOrg: [\"GET /orgs/{org}/actions/cache/usage\"],\n getAllowedActionsOrganization: [\n \"GET /orgs/{org}/actions/permissions/selected-actions\"\n ],\n getAllowedActionsRepository: [\n \"GET /repos/{owner}/{repo}/actions/permissions/selected-actions\"\n ],\n getArtifact: [\"GET /repos/{owner}/{repo}/actions/artifacts/{artifact_id}\"],\n getCustomOidcSubClaimForRepo: [\n \"GET /repos/{owner}/{repo}/actions/oidc/customization/sub\"\n ],\n getEnvironmentPublicKey: [\n \"GET /repositories/{repository_id}/environments/{environment_name}/secrets/public-key\"\n ],\n getEnvironmentSecret: [\n \"GET /repositories/{repository_id}/environments/{environment_name}/secrets/{secret_name}\"\n ],\n getEnvironmentVariable: [\n \"GET /repositories/{repository_id}/environments/{environment_name}/variables/{name}\"\n ],\n getGithubActionsDefaultWorkflowPermissionsOrganization: [\n \"GET /orgs/{org}/actions/permissions/workflow\"\n ],\n getGithubActionsDefaultWorkflowPermissionsRepository: [\n \"GET /repos/{owner}/{repo}/actions/permissions/workflow\"\n ],\n getGithubActionsPermissionsOrganization: [\n \"GET /orgs/{org}/actions/permissions\"\n ],\n getGithubActionsPermissionsRepository: [\n \"GET /repos/{owner}/{repo}/actions/permissions\"\n ],\n getJobForWorkflowRun: [\"GET /repos/{owner}/{repo}/actions/jobs/{job_id}\"],\n getOrgPublicKey: [\"GET /orgs/{org}/actions/secrets/public-key\"],\n getOrgSecret: [\"GET /orgs/{org}/actions/secrets/{secret_name}\"],\n getOrgVariable: [\"GET /orgs/{org}/actions/variables/{name}\"],\n getPendingDeploymentsForRun: [\n \"GET /repos/{owner}/{repo}/actions/runs/{run_id}/pending_deployments\"\n ],\n getRepoPermissions: [\n \"GET /repos/{owner}/{repo}/actions/permissions\",\n {},\n { renamed: [\"actions\", \"getGithubActionsPermissionsRepository\"] }\n ],\n getRepoPublicKey: [\"GET /repos/{owner}/{repo}/actions/secrets/public-key\"],\n getRepoSecret: [\"GET /repos/{owner}/{repo}/actions/secrets/{secret_name}\"],\n getRepoVariable: [\"GET /repos/{owner}/{repo}/actions/variables/{name}\"],\n getReviewsForRun: [\n \"GET /repos/{owner}/{repo}/actions/runs/{run_id}/approvals\"\n ],\n getSelfHostedRunnerForOrg: [\"GET /orgs/{org}/actions/runners/{runner_id}\"],\n getSelfHostedRunnerForRepo: [\n \"GET /repos/{owner}/{repo}/actions/runners/{runner_id}\"\n ],\n getWorkflow: [\"GET /repos/{owner}/{repo}/actions/workflows/{workflow_id}\"],\n getWorkflowAccessToRepository: [\n \"GET /repos/{owner}/{repo}/actions/permissions/access\"\n ],\n getWorkflowRun: [\"GET /repos/{owner}/{repo}/actions/runs/{run_id}\"],\n getWorkflowRunAttempt: [\n \"GET /repos/{owner}/{repo}/actions/runs/{run_id}/attempts/{attempt_number}\"\n ],\n getWorkflowRunUsage: [\n \"GET /repos/{owner}/{repo}/actions/runs/{run_id}/timing\"\n ],\n getWorkflowUsage: [\n \"GET /repos/{owner}/{repo}/actions/workflows/{workflow_id}/timing\"\n ],\n listArtifactsForRepo: [\"GET /repos/{owner}/{repo}/actions/artifacts\"],\n listEnvironmentSecrets: [\n \"GET /repositories/{repository_id}/environments/{environment_name}/secrets\"\n ],\n listEnvironmentVariables: [\n \"GET /repositories/{repository_id}/environments/{environment_name}/variables\"\n ],\n listJobsForWorkflowRun: [\n \"GET /repos/{owner}/{repo}/actions/runs/{run_id}/jobs\"\n ],\n listJobsForWorkflowRunAttempt: [\n \"GET /repos/{owner}/{repo}/actions/runs/{run_id}/attempts/{attempt_number}/jobs\"\n ],\n listLabelsForSelfHostedRunnerForOrg: [\n \"GET /orgs/{org}/actions/runners/{runner_id}/labels\"\n ],\n listLabelsForSelfHostedRunnerForRepo: [\n \"GET /repos/{owner}/{repo}/actions/runners/{runner_id}/labels\"\n ],\n listOrgSecrets: [\"GET /orgs/{org}/actions/secrets\"],\n listOrgVariables: [\"GET /orgs/{org}/actions/variables\"],\n listRepoOrganizationSecrets: [\n \"GET /repos/{owner}/{repo}/actions/organization-secrets\"\n ],\n listRepoOrganizationVariables: [\n \"GET /repos/{owner}/{repo}/actions/organization-variables\"\n ],\n listRepoSecrets: [\"GET /repos/{owner}/{repo}/actions/secrets\"],\n listRepoVariables: [\"GET /repos/{owner}/{repo}/actions/variables\"],\n listRepoWorkflows: [\"GET /repos/{owner}/{repo}/actions/workflows\"],\n listRunnerApplicationsForOrg: [\"GET /orgs/{org}/actions/runners/downloads\"],\n listRunnerApplicationsForRepo: [\n \"GET /repos/{owner}/{repo}/actions/runners/downloads\"\n ],\n listSelectedReposForOrgSecret: [\n \"GET /orgs/{org}/actions/secrets/{secret_name}/repositories\"\n ],\n listSelectedReposForOrgVariable: [\n \"GET /orgs/{org}/actions/variables/{name}/repositories\"\n ],\n listSelectedRepositoriesEnabledGithubActionsOrganization: [\n \"GET /orgs/{org}/actions/permissions/repositories\"\n ],\n listSelfHostedRunnersForOrg: [\"GET /orgs/{org}/actions/runners\"],\n listSelfHostedRunnersForRepo: [\"GET /repos/{owner}/{repo}/actions/runners\"],\n listWorkflowRunArtifacts: [\n \"GET /repos/{owner}/{repo}/actions/runs/{run_id}/artifacts\"\n ],\n listWorkflowRuns: [\n \"GET /repos/{owner}/{repo}/actions/workflows/{workflow_id}/runs\"\n ],\n listWorkflowRunsForRepo: [\"GET /repos/{owner}/{repo}/actions/runs\"],\n reRunJobForWorkflowRun: [\n \"POST /repos/{owner}/{repo}/actions/jobs/{job_id}/rerun\"\n ],\n reRunWorkflow: [\"POST /repos/{owner}/{repo}/actions/runs/{run_id}/rerun\"],\n reRunWorkflowFailedJobs: [\n \"POST /repos/{owner}/{repo}/actions/runs/{run_id}/rerun-failed-jobs\"\n ],\n removeAllCustomLabelsFromSelfHostedRunnerForOrg: [\n \"DELETE /orgs/{org}/actions/runners/{runner_id}/labels\"\n ],\n removeAllCustomLabelsFromSelfHostedRunnerForRepo: [\n \"DELETE /repos/{owner}/{repo}/actions/runners/{runner_id}/labels\"\n ],\n removeCustomLabelFromSelfHostedRunnerForOrg: [\n \"DELETE /orgs/{org}/actions/runners/{runner_id}/labels/{name}\"\n ],\n removeCustomLabelFromSelfHostedRunnerForRepo: [\n \"DELETE /repos/{owner}/{repo}/actions/runners/{runner_id}/labels/{name}\"\n ],\n removeSelectedRepoFromOrgSecret: [\n \"DELETE /orgs/{org}/actions/secrets/{secret_name}/repositories/{repository_id}\"\n ],\n removeSelectedRepoFromOrgVariable: [\n \"DELETE /orgs/{org}/actions/variables/{name}/repositories/{repository_id}\"\n ],\n reviewCustomGatesForRun: [\n \"POST /repos/{owner}/{repo}/actions/runs/{run_id}/deployment_protection_rule\"\n ],\n reviewPendingDeploymentsForRun: [\n \"POST /repos/{owner}/{repo}/actions/runs/{run_id}/pending_deployments\"\n ],\n setAllowedActionsOrganization: [\n \"PUT /orgs/{org}/actions/permissions/selected-actions\"\n ],\n setAllowedActionsRepository: [\n \"PUT /repos/{owner}/{repo}/actions/permissions/selected-actions\"\n ],\n setCustomLabelsForSelfHostedRunnerForOrg: [\n \"PUT /orgs/{org}/actions/runners/{runner_id}/labels\"\n ],\n setCustomLabelsForSelfHostedRunnerForRepo: [\n \"PUT /repos/{owner}/{repo}/actions/runners/{runner_id}/labels\"\n ],\n setCustomOidcSubClaimForRepo: [\n \"PUT /repos/{owner}/{repo}/actions/oidc/customization/sub\"\n ],\n setGithubActionsDefaultWorkflowPermissionsOrganization: [\n \"PUT /orgs/{org}/actions/permissions/workflow\"\n ],\n setGithubActionsDefaultWorkflowPermissionsRepository: [\n \"PUT /repos/{owner}/{repo}/actions/permissions/workflow\"\n ],\n setGithubActionsPermissionsOrganization: [\n \"PUT /orgs/{org}/actions/permissions\"\n ],\n setGithubActionsPermissionsRepository: [\n \"PUT /repos/{owner}/{repo}/actions/permissions\"\n ],\n setSelectedReposForOrgSecret: [\n \"PUT /orgs/{org}/actions/secrets/{secret_name}/repositories\"\n ],\n setSelectedReposForOrgVariable: [\n \"PUT /orgs/{org}/actions/variables/{name}/repositories\"\n ],\n setSelectedRepositoriesEnabledGithubActionsOrganization: [\n \"PUT /orgs/{org}/actions/permissions/repositories\"\n ],\n setWorkflowAccessToRepository: [\n \"PUT /repos/{owner}/{repo}/actions/permissions/access\"\n ],\n updateEnvironmentVariable: [\n \"PATCH /repositories/{repository_id}/environments/{environment_name}/variables/{name}\"\n ],\n updateOrgVariable: [\"PATCH /orgs/{org}/actions/variables/{name}\"],\n updateRepoVariable: [\n \"PATCH /repos/{owner}/{repo}/actions/variables/{name}\"\n ]\n },\n activity: {\n checkRepoIsStarredByAuthenticatedUser: [\"GET /user/starred/{owner}/{repo}\"],\n deleteRepoSubscription: [\"DELETE /repos/{owner}/{repo}/subscription\"],\n deleteThreadSubscription: [\n \"DELETE /notifications/threads/{thread_id}/subscription\"\n ],\n getFeeds: [\"GET /feeds\"],\n getRepoSubscription: [\"GET /repos/{owner}/{repo}/subscription\"],\n getThread: [\"GET /notifications/threads/{thread_id}\"],\n getThreadSubscriptionForAuthenticatedUser: [\n \"GET /notifications/threads/{thread_id}/subscription\"\n ],\n listEventsForAuthenticatedUser: [\"GET /users/{username}/events\"],\n listNotificationsForAuthenticatedUser: [\"GET /notifications\"],\n listOrgEventsForAuthenticatedUser: [\n \"GET /users/{username}/events/orgs/{org}\"\n ],\n listPublicEvents: [\"GET /events\"],\n listPublicEventsForRepoNetwork: [\"GET /networks/{owner}/{repo}/events\"],\n listPublicEventsForUser: [\"GET /users/{username}/events/public\"],\n listPublicOrgEvents: [\"GET /orgs/{org}/events\"],\n listReceivedEventsForUser: [\"GET /users/{username}/received_events\"],\n listReceivedPublicEventsForUser: [\n \"GET /users/{username}/received_events/public\"\n ],\n listRepoEvents: [\"GET /repos/{owner}/{repo}/events\"],\n listRepoNotificationsForAuthenticatedUser: [\n \"GET /repos/{owner}/{repo}/notifications\"\n ],\n listReposStarredByAuthenticatedUser: [\"GET /user/starred\"],\n listReposStarredByUser: [\"GET /users/{username}/starred\"],\n listReposWatchedByUser: [\"GET /users/{username}/subscriptions\"],\n listStargazersForRepo: [\"GET /repos/{owner}/{repo}/stargazers\"],\n listWatchedReposForAuthenticatedUser: [\"GET /user/subscriptions\"],\n listWatchersForRepo: [\"GET /repos/{owner}/{repo}/subscribers\"],\n markNotificationsAsRead: [\"PUT /notifications\"],\n markRepoNotificationsAsRead: [\"PUT /repos/{owner}/{repo}/notifications\"],\n markThreadAsDone: [\"DELETE /notifications/threads/{thread_id}\"],\n markThreadAsRead: [\"PATCH /notifications/threads/{thread_id}\"],\n setRepoSubscription: [\"PUT /repos/{owner}/{repo}/subscription\"],\n setThreadSubscription: [\n \"PUT /notifications/threads/{thread_id}/subscription\"\n ],\n starRepoForAuthenticatedUser: [\"PUT /user/starred/{owner}/{repo}\"],\n unstarRepoForAuthenticatedUser: [\"DELETE /user/starred/{owner}/{repo}\"]\n },\n apps: {\n addRepoToInstallation: [\n \"PUT /user/installations/{installation_id}/repositories/{repository_id}\",\n {},\n { renamed: [\"apps\", \"addRepoToInstallationForAuthenticatedUser\"] }\n ],\n addRepoToInstallationForAuthenticatedUser: [\n \"PUT /user/installations/{installation_id}/repositories/{repository_id}\"\n ],\n checkToken: [\"POST /applications/{client_id}/token\"],\n createFromManifest: [\"POST /app-manifests/{code}/conversions\"],\n createInstallationAccessToken: [\n \"POST /app/installations/{installation_id}/access_tokens\"\n ],\n deleteAuthorization: [\"DELETE /applications/{client_id}/grant\"],\n deleteInstallation: [\"DELETE /app/installations/{installation_id}\"],\n deleteToken: [\"DELETE /applications/{client_id}/token\"],\n getAuthenticated: [\"GET /app\"],\n getBySlug: [\"GET /apps/{app_slug}\"],\n getInstallation: [\"GET /app/installations/{installation_id}\"],\n getOrgInstallation: [\"GET /orgs/{org}/installation\"],\n getRepoInstallation: [\"GET /repos/{owner}/{repo}/installation\"],\n getSubscriptionPlanForAccount: [\n \"GET /marketplace_listing/accounts/{account_id}\"\n ],\n getSubscriptionPlanForAccountStubbed: [\n \"GET /marketplace_listing/stubbed/accounts/{account_id}\"\n ],\n getUserInstallation: [\"GET /users/{username}/installation\"],\n getWebhookConfigForApp: [\"GET /app/hook/config\"],\n getWebhookDelivery: [\"GET /app/hook/deliveries/{delivery_id}\"],\n listAccountsForPlan: [\"GET /marketplace_listing/plans/{plan_id}/accounts\"],\n listAccountsForPlanStubbed: [\n \"GET /marketplace_listing/stubbed/plans/{plan_id}/accounts\"\n ],\n listInstallationReposForAuthenticatedUser: [\n \"GET /user/installations/{installation_id}/repositories\"\n ],\n listInstallationRequestsForAuthenticatedApp: [\n \"GET /app/installation-requests\"\n ],\n listInstallations: [\"GET /app/installations\"],\n listInstallationsForAuthenticatedUser: [\"GET /user/installations\"],\n listPlans: [\"GET /marketplace_listing/plans\"],\n listPlansStubbed: [\"GET /marketplace_listing/stubbed/plans\"],\n listReposAccessibleToInstallation: [\"GET /installation/repositories\"],\n listSubscriptionsForAuthenticatedUser: [\"GET /user/marketplace_purchases\"],\n listSubscriptionsForAuthenticatedUserStubbed: [\n \"GET /user/marketplace_purchases/stubbed\"\n ],\n listWebhookDeliveries: [\"GET /app/hook/deliveries\"],\n redeliverWebhookDelivery: [\n \"POST /app/hook/deliveries/{delivery_id}/attempts\"\n ],\n removeRepoFromInstallation: [\n \"DELETE /user/installations/{installation_id}/repositories/{repository_id}\",\n {},\n { renamed: [\"apps\", \"removeRepoFromInstallationForAuthenticatedUser\"] }\n ],\n removeRepoFromInstallationForAuthenticatedUser: [\n \"DELETE /user/installations/{installation_id}/repositories/{repository_id}\"\n ],\n resetToken: [\"PATCH /applications/{client_id}/token\"],\n revokeInstallationAccessToken: [\"DELETE /installation/token\"],\n scopeToken: [\"POST /applications/{client_id}/token/scoped\"],\n suspendInstallation: [\"PUT /app/installations/{installation_id}/suspended\"],\n unsuspendInstallation: [\n \"DELETE /app/installations/{installation_id}/suspended\"\n ],\n updateWebhookConfigForApp: [\"PATCH /app/hook/config\"]\n },\n billing: {\n getGithubActionsBillingOrg: [\"GET /orgs/{org}/settings/billing/actions\"],\n getGithubActionsBillingUser: [\n \"GET /users/{username}/settings/billing/actions\"\n ],\n getGithubPackagesBillingOrg: [\"GET /orgs/{org}/settings/billing/packages\"],\n getGithubPackagesBillingUser: [\n \"GET /users/{username}/settings/billing/packages\"\n ],\n getSharedStorageBillingOrg: [\n \"GET /orgs/{org}/settings/billing/shared-storage\"\n ],\n getSharedStorageBillingUser: [\n \"GET /users/{username}/settings/billing/shared-storage\"\n ]\n },\n checks: {\n create: [\"POST /repos/{owner}/{repo}/check-runs\"],\n createSuite: [\"POST /repos/{owner}/{repo}/check-suites\"],\n get: [\"GET /repos/{owner}/{repo}/check-runs/{check_run_id}\"],\n getSuite: [\"GET /repos/{owner}/{repo}/check-suites/{check_suite_id}\"],\n listAnnotations: [\n \"GET /repos/{owner}/{repo}/check-runs/{check_run_id}/annotations\"\n ],\n listForRef: [\"GET /repos/{owner}/{repo}/commits/{ref}/check-runs\"],\n listForSuite: [\n \"GET /repos/{owner}/{repo}/check-suites/{check_suite_id}/check-runs\"\n ],\n listSuitesForRef: [\"GET /repos/{owner}/{repo}/commits/{ref}/check-suites\"],\n rerequestRun: [\n \"POST /repos/{owner}/{repo}/check-runs/{check_run_id}/rerequest\"\n ],\n rerequestSuite: [\n \"POST /repos/{owner}/{repo}/check-suites/{check_suite_id}/rerequest\"\n ],\n setSuitesPreferences: [\n \"PATCH /repos/{owner}/{repo}/check-suites/preferences\"\n ],\n update: [\"PATCH /repos/{owner}/{repo}/check-runs/{check_run_id}\"]\n },\n codeScanning: {\n deleteAnalysis: [\n \"DELETE /repos/{owner}/{repo}/code-scanning/analyses/{analysis_id}{?confirm_delete}\"\n ],\n getAlert: [\n \"GET /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}\",\n {},\n { renamedParameters: { alert_id: \"alert_number\" } }\n ],\n getAnalysis: [\n \"GET /repos/{owner}/{repo}/code-scanning/analyses/{analysis_id}\"\n ],\n getCodeqlDatabase: [\n \"GET /repos/{owner}/{repo}/code-scanning/codeql/databases/{language}\"\n ],\n getDefaultSetup: [\"GET /repos/{owner}/{repo}/code-scanning/default-setup\"],\n getSarif: [\"GET /repos/{owner}/{repo}/code-scanning/sarifs/{sarif_id}\"],\n listAlertInstances: [\n \"GET /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}/instances\"\n ],\n listAlertsForOrg: [\"GET /orgs/{org}/code-scanning/alerts\"],\n listAlertsForRepo: [\"GET /repos/{owner}/{repo}/code-scanning/alerts\"],\n listAlertsInstances: [\n \"GET /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}/instances\",\n {},\n { renamed: [\"codeScanning\", \"listAlertInstances\"] }\n ],\n listCodeqlDatabases: [\n \"GET /repos/{owner}/{repo}/code-scanning/codeql/databases\"\n ],\n listRecentAnalyses: [\"GET /repos/{owner}/{repo}/code-scanning/analyses\"],\n updateAlert: [\n \"PATCH /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}\"\n ],\n updateDefaultSetup: [\n \"PATCH /repos/{owner}/{repo}/code-scanning/default-setup\"\n ],\n uploadSarif: [\"POST /repos/{owner}/{repo}/code-scanning/sarifs\"]\n },\n codesOfConduct: {\n getAllCodesOfConduct: [\"GET /codes_of_conduct\"],\n getConductCode: [\"GET /codes_of_conduct/{key}\"]\n },\n codespaces: {\n addRepositoryForSecretForAuthenticatedUser: [\n \"PUT /user/codespaces/secrets/{secret_name}/repositories/{repository_id}\"\n ],\n addSelectedRepoToOrgSecret: [\n \"PUT /orgs/{org}/codespaces/secrets/{secret_name}/repositories/{repository_id}\"\n ],\n checkPermissionsForDevcontainer: [\n \"GET /repos/{owner}/{repo}/codespaces/permissions_check\"\n ],\n codespaceMachinesForAuthenticatedUser: [\n \"GET /user/codespaces/{codespace_name}/machines\"\n ],\n createForAuthenticatedUser: [\"POST /user/codespaces\"],\n createOrUpdateOrgSecret: [\n \"PUT /orgs/{org}/codespaces/secrets/{secret_name}\"\n ],\n createOrUpdateRepoSecret: [\n \"PUT /repos/{owner}/{repo}/codespaces/secrets/{secret_name}\"\n ],\n createOrUpdateSecretForAuthenticatedUser: [\n \"PUT /user/codespaces/secrets/{secret_name}\"\n ],\n createWithPrForAuthenticatedUser: [\n \"POST /repos/{owner}/{repo}/pulls/{pull_number}/codespaces\"\n ],\n createWithRepoForAuthenticatedUser: [\n \"POST /repos/{owner}/{repo}/codespaces\"\n ],\n deleteForAuthenticatedUser: [\"DELETE /user/codespaces/{codespace_name}\"],\n deleteFromOrganization: [\n \"DELETE /orgs/{org}/members/{username}/codespaces/{codespace_name}\"\n ],\n deleteOrgSecret: [\"DELETE /orgs/{org}/codespaces/secrets/{secret_name}\"],\n deleteRepoSecret: [\n \"DELETE /repos/{owner}/{repo}/codespaces/secrets/{secret_name}\"\n ],\n deleteSecretForAuthenticatedUser: [\n \"DELETE /user/codespaces/secrets/{secret_name}\"\n ],\n exportForAuthenticatedUser: [\n \"POST /user/codespaces/{codespace_name}/exports\"\n ],\n getCodespacesForUserInOrg: [\n \"GET /orgs/{org}/members/{username}/codespaces\"\n ],\n getExportDetailsForAuthenticatedUser: [\n \"GET /user/codespaces/{codespace_name}/exports/{export_id}\"\n ],\n getForAuthenticatedUser: [\"GET /user/codespaces/{codespace_name}\"],\n getOrgPublicKey: [\"GET /orgs/{org}/codespaces/secrets/public-key\"],\n getOrgSecret: [\"GET /orgs/{org}/codespaces/secrets/{secret_name}\"],\n getPublicKeyForAuthenticatedUser: [\n \"GET /user/codespaces/secrets/public-key\"\n ],\n getRepoPublicKey: [\n \"GET /repos/{owner}/{repo}/codespaces/secrets/public-key\"\n ],\n getRepoSecret: [\n \"GET /repos/{owner}/{repo}/codespaces/secrets/{secret_name}\"\n ],\n getSecretForAuthenticatedUser: [\n \"GET /user/codespaces/secrets/{secret_name}\"\n ],\n listDevcontainersInRepositoryForAuthenticatedUser: [\n \"GET /repos/{owner}/{repo}/codespaces/devcontainers\"\n ],\n listForAuthenticatedUser: [\"GET /user/codespaces\"],\n listInOrganization: [\n \"GET /orgs/{org}/codespaces\",\n {},\n { renamedParameters: { org_id: \"org\" } }\n ],\n listInRepositoryForAuthenticatedUser: [\n \"GET /repos/{owner}/{repo}/codespaces\"\n ],\n listOrgSecrets: [\"GET /orgs/{org}/codespaces/secrets\"],\n listRepoSecrets: [\"GET /repos/{owner}/{repo}/codespaces/secrets\"],\n listRepositoriesForSecretForAuthenticatedUser: [\n \"GET /user/codespaces/secrets/{secret_name}/repositories\"\n ],\n listSecretsForAuthenticatedUser: [\"GET /user/codespaces/secrets\"],\n listSelectedReposForOrgSecret: [\n \"GET /orgs/{org}/codespaces/secrets/{secret_name}/repositories\"\n ],\n preFlightWithRepoForAuthenticatedUser: [\n \"GET /repos/{owner}/{repo}/codespaces/new\"\n ],\n publishForAuthenticatedUser: [\n \"POST /user/codespaces/{codespace_name}/publish\"\n ],\n removeRepositoryForSecretForAuthenticatedUser: [\n \"DELETE /user/codespaces/secrets/{secret_name}/repositories/{repository_id}\"\n ],\n removeSelectedRepoFromOrgSecret: [\n \"DELETE /orgs/{org}/codespaces/secrets/{secret_name}/repositories/{repository_id}\"\n ],\n repoMachinesForAuthenticatedUser: [\n \"GET /repos/{owner}/{repo}/codespaces/machines\"\n ],\n setRepositoriesForSecretForAuthenticatedUser: [\n \"PUT /user/codespaces/secrets/{secret_name}/repositories\"\n ],\n setSelectedReposForOrgSecret: [\n \"PUT /orgs/{org}/codespaces/secrets/{secret_name}/repositories\"\n ],\n startForAuthenticatedUser: [\"POST /user/codespaces/{codespace_name}/start\"],\n stopForAuthenticatedUser: [\"POST /user/codespaces/{codespace_name}/stop\"],\n stopInOrganization: [\n \"POST /orgs/{org}/members/{username}/codespaces/{codespace_name}/stop\"\n ],\n updateForAuthenticatedUser: [\"PATCH /user/codespaces/{codespace_name}\"]\n },\n copilot: {\n addCopilotSeatsForTeams: [\n \"POST /orgs/{org}/copilot/billing/selected_teams\"\n ],\n addCopilotSeatsForUsers: [\n \"POST /orgs/{org}/copilot/billing/selected_users\"\n ],\n cancelCopilotSeatAssignmentForTeams: [\n \"DELETE /orgs/{org}/copilot/billing/selected_teams\"\n ],\n cancelCopilotSeatAssignmentForUsers: [\n \"DELETE /orgs/{org}/copilot/billing/selected_users\"\n ],\n getCopilotOrganizationDetails: [\"GET /orgs/{org}/copilot/billing\"],\n getCopilotSeatDetailsForUser: [\n \"GET /orgs/{org}/members/{username}/copilot\"\n ],\n listCopilotSeats: [\"GET /orgs/{org}/copilot/billing/seats\"]\n },\n dependabot: {\n addSelectedRepoToOrgSecret: [\n \"PUT /orgs/{org}/dependabot/secrets/{secret_name}/repositories/{repository_id}\"\n ],\n createOrUpdateOrgSecret: [\n \"PUT /orgs/{org}/dependabot/secrets/{secret_name}\"\n ],\n createOrUpdateRepoSecret: [\n \"PUT /repos/{owner}/{repo}/dependabot/secrets/{secret_name}\"\n ],\n deleteOrgSecret: [\"DELETE /orgs/{org}/dependabot/secrets/{secret_name}\"],\n deleteRepoSecret: [\n \"DELETE /repos/{owner}/{repo}/dependabot/secrets/{secret_name}\"\n ],\n getAlert: [\"GET /repos/{owner}/{repo}/dependabot/alerts/{alert_number}\"],\n getOrgPublicKey: [\"GET /orgs/{org}/dependabot/secrets/public-key\"],\n getOrgSecret: [\"GET /orgs/{org}/dependabot/secrets/{secret_name}\"],\n getRepoPublicKey: [\n \"GET /repos/{owner}/{repo}/dependabot/secrets/public-key\"\n ],\n getRepoSecret: [\n \"GET /repos/{owner}/{repo}/dependabot/secrets/{secret_name}\"\n ],\n listAlertsForEnterprise: [\n \"GET /enterprises/{enterprise}/dependabot/alerts\"\n ],\n listAlertsForOrg: [\"GET /orgs/{org}/dependabot/alerts\"],\n listAlertsForRepo: [\"GET /repos/{owner}/{repo}/dependabot/alerts\"],\n listOrgSecrets: [\"GET /orgs/{org}/dependabot/secrets\"],\n listRepoSecrets: [\"GET /repos/{owner}/{repo}/dependabot/secrets\"],\n listSelectedReposForOrgSecret: [\n \"GET /orgs/{org}/dependabot/secrets/{secret_name}/repositories\"\n ],\n removeSelectedRepoFromOrgSecret: [\n \"DELETE /orgs/{org}/dependabot/secrets/{secret_name}/repositories/{repository_id}\"\n ],\n setSelectedReposForOrgSecret: [\n \"PUT /orgs/{org}/dependabot/secrets/{secret_name}/repositories\"\n ],\n updateAlert: [\n \"PATCH /repos/{owner}/{repo}/dependabot/alerts/{alert_number}\"\n ]\n },\n dependencyGraph: {\n createRepositorySnapshot: [\n \"POST /repos/{owner}/{repo}/dependency-graph/snapshots\"\n ],\n diffRange: [\n \"GET /repos/{owner}/{repo}/dependency-graph/compare/{basehead}\"\n ],\n exportSbom: [\"GET /repos/{owner}/{repo}/dependency-graph/sbom\"]\n },\n emojis: { get: [\"GET /emojis\"] },\n gists: {\n checkIsStarred: [\"GET /gists/{gist_id}/star\"],\n create: [\"POST /gists\"],\n createComment: [\"POST /gists/{gist_id}/comments\"],\n delete: [\"DELETE /gists/{gist_id}\"],\n deleteComment: [\"DELETE /gists/{gist_id}/comments/{comment_id}\"],\n fork: [\"POST /gists/{gist_id}/forks\"],\n get: [\"GET /gists/{gist_id}\"],\n getComment: [\"GET /gists/{gist_id}/comments/{comment_id}\"],\n getRevision: [\"GET /gists/{gist_id}/{sha}\"],\n list: [\"GET /gists\"],\n listComments: [\"GET /gists/{gist_id}/comments\"],\n listCommits: [\"GET /gists/{gist_id}/commits\"],\n listForUser: [\"GET /users/{username}/gists\"],\n listForks: [\"GET /gists/{gist_id}/forks\"],\n listPublic: [\"GET /gists/public\"],\n listStarred: [\"GET /gists/starred\"],\n star: [\"PUT /gists/{gist_id}/star\"],\n unstar: [\"DELETE /gists/{gist_id}/star\"],\n update: [\"PATCH /gists/{gist_id}\"],\n updateComment: [\"PATCH /gists/{gist_id}/comments/{comment_id}\"]\n },\n git: {\n createBlob: [\"POST /repos/{owner}/{repo}/git/blobs\"],\n createCommit: [\"POST /repos/{owner}/{repo}/git/commits\"],\n createRef: [\"POST /repos/{owner}/{repo}/git/refs\"],\n createTag: [\"POST /repos/{owner}/{repo}/git/tags\"],\n createTree: [\"POST /repos/{owner}/{repo}/git/trees\"],\n deleteRef: [\"DELETE /repos/{owner}/{repo}/git/refs/{ref}\"],\n getBlob: [\"GET /repos/{owner}/{repo}/git/blobs/{file_sha}\"],\n getCommit: [\"GET /repos/{owner}/{repo}/git/commits/{commit_sha}\"],\n getRef: [\"GET /repos/{owner}/{repo}/git/ref/{ref}\"],\n getTag: [\"GET /repos/{owner}/{repo}/git/tags/{tag_sha}\"],\n getTree: [\"GET /repos/{owner}/{repo}/git/trees/{tree_sha}\"],\n listMatchingRefs: [\"GET /repos/{owner}/{repo}/git/matching-refs/{ref}\"],\n updateRef: [\"PATCH /repos/{owner}/{repo}/git/refs/{ref}\"]\n },\n gitignore: {\n getAllTemplates: [\"GET /gitignore/templates\"],\n getTemplate: [\"GET /gitignore/templates/{name}\"]\n },\n interactions: {\n getRestrictionsForAuthenticatedUser: [\"GET /user/interaction-limits\"],\n getRestrictionsForOrg: [\"GET /orgs/{org}/interaction-limits\"],\n getRestrictionsForRepo: [\"GET /repos/{owner}/{repo}/interaction-limits\"],\n getRestrictionsForYourPublicRepos: [\n \"GET /user/interaction-limits\",\n {},\n { renamed: [\"interactions\", \"getRestrictionsForAuthenticatedUser\"] }\n ],\n removeRestrictionsForAuthenticatedUser: [\"DELETE /user/interaction-limits\"],\n removeRestrictionsForOrg: [\"DELETE /orgs/{org}/interaction-limits\"],\n removeRestrictionsForRepo: [\n \"DELETE /repos/{owner}/{repo}/interaction-limits\"\n ],\n removeRestrictionsForYourPublicRepos: [\n \"DELETE /user/interaction-limits\",\n {},\n { renamed: [\"interactions\", \"removeRestrictionsForAuthenticatedUser\"] }\n ],\n setRestrictionsForAuthenticatedUser: [\"PUT /user/interaction-limits\"],\n setRestrictionsForOrg: [\"PUT /orgs/{org}/interaction-limits\"],\n setRestrictionsForRepo: [\"PUT /repos/{owner}/{repo}/interaction-limits\"],\n setRestrictionsForYourPublicRepos: [\n \"PUT /user/interaction-limits\",\n {},\n { renamed: [\"interactions\", \"setRestrictionsForAuthenticatedUser\"] }\n ]\n },\n issues: {\n addAssignees: [\n \"POST /repos/{owner}/{repo}/issues/{issue_number}/assignees\"\n ],\n addLabels: [\"POST /repos/{owner}/{repo}/issues/{issue_number}/labels\"],\n checkUserCanBeAssigned: [\"GET /repos/{owner}/{repo}/assignees/{assignee}\"],\n checkUserCanBeAssignedToIssue: [\n \"GET /repos/{owner}/{repo}/issues/{issue_number}/assignees/{assignee}\"\n ],\n create: [\"POST /repos/{owner}/{repo}/issues\"],\n createComment: [\n \"POST /repos/{owner}/{repo}/issues/{issue_number}/comments\"\n ],\n createLabel: [\"POST /repos/{owner}/{repo}/labels\"],\n createMilestone: [\"POST /repos/{owner}/{repo}/milestones\"],\n deleteComment: [\n \"DELETE /repos/{owner}/{repo}/issues/comments/{comment_id}\"\n ],\n deleteLabel: [\"DELETE /repos/{owner}/{repo}/labels/{name}\"],\n deleteMilestone: [\n \"DELETE /repos/{owner}/{repo}/milestones/{milestone_number}\"\n ],\n get: [\"GET /repos/{owner}/{repo}/issues/{issue_number}\"],\n getComment: [\"GET /repos/{owner}/{repo}/issues/comments/{comment_id}\"],\n getEvent: [\"GET /repos/{owner}/{repo}/issues/events/{event_id}\"],\n getLabel: [\"GET /repos/{owner}/{repo}/labels/{name}\"],\n getMilestone: [\"GET /repos/{owner}/{repo}/milestones/{milestone_number}\"],\n list: [\"GET /issues\"],\n listAssignees: [\"GET /repos/{owner}/{repo}/assignees\"],\n listComments: [\"GET /repos/{owner}/{repo}/issues/{issue_number}/comments\"],\n listCommentsForRepo: [\"GET /repos/{owner}/{repo}/issues/comments\"],\n listEvents: [\"GET /repos/{owner}/{repo}/issues/{issue_number}/events\"],\n listEventsForRepo: [\"GET /repos/{owner}/{repo}/issues/events\"],\n listEventsForTimeline: [\n \"GET /repos/{owner}/{repo}/issues/{issue_number}/timeline\"\n ],\n listForAuthenticatedUser: [\"GET /user/issues\"],\n listForOrg: [\"GET /orgs/{org}/issues\"],\n listForRepo: [\"GET /repos/{owner}/{repo}/issues\"],\n listLabelsForMilestone: [\n \"GET /repos/{owner}/{repo}/milestones/{milestone_number}/labels\"\n ],\n listLabelsForRepo: [\"GET /repos/{owner}/{repo}/labels\"],\n listLabelsOnIssue: [\n \"GET /repos/{owner}/{repo}/issues/{issue_number}/labels\"\n ],\n listMilestones: [\"GET /repos/{owner}/{repo}/milestones\"],\n lock: [\"PUT /repos/{owner}/{repo}/issues/{issue_number}/lock\"],\n removeAllLabels: [\n \"DELETE /repos/{owner}/{repo}/issues/{issue_number}/labels\"\n ],\n removeAssignees: [\n \"DELETE /repos/{owner}/{repo}/issues/{issue_number}/assignees\"\n ],\n removeLabel: [\n \"DELETE /repos/{owner}/{repo}/issues/{issue_number}/labels/{name}\"\n ],\n setLabels: [\"PUT /repos/{owner}/{repo}/issues/{issue_number}/labels\"],\n unlock: [\"DELETE /repos/{owner}/{repo}/issues/{issue_number}/lock\"],\n update: [\"PATCH /repos/{owner}/{repo}/issues/{issue_number}\"],\n updateComment: [\"PATCH /repos/{owner}/{repo}/issues/comments/{comment_id}\"],\n updateLabel: [\"PATCH /repos/{owner}/{repo}/labels/{name}\"],\n updateMilestone: [\n \"PATCH /repos/{owner}/{repo}/milestones/{milestone_number}\"\n ]\n },\n licenses: {\n get: [\"GET /licenses/{license}\"],\n getAllCommonlyUsed: [\"GET /licenses\"],\n getForRepo: [\"GET /repos/{owner}/{repo}/license\"]\n },\n markdown: {\n render: [\"POST /markdown\"],\n renderRaw: [\n \"POST /markdown/raw\",\n { headers: { \"content-type\": \"text/plain; charset=utf-8\" } }\n ]\n },\n meta: {\n get: [\"GET /meta\"],\n getAllVersions: [\"GET /versions\"],\n getOctocat: [\"GET /octocat\"],\n getZen: [\"GET /zen\"],\n root: [\"GET /\"]\n },\n migrations: {\n cancelImport: [\n \"DELETE /repos/{owner}/{repo}/import\",\n {},\n {\n deprecated: \"octokit.rest.migrations.cancelImport() is deprecated, see https://docs.github.com/rest/migrations/source-imports#cancel-an-import\"\n }\n ],\n deleteArchiveForAuthenticatedUser: [\n \"DELETE /user/migrations/{migration_id}/archive\"\n ],\n deleteArchiveForOrg: [\n \"DELETE /orgs/{org}/migrations/{migration_id}/archive\"\n ],\n downloadArchiveForOrg: [\n \"GET /orgs/{org}/migrations/{migration_id}/archive\"\n ],\n getArchiveForAuthenticatedUser: [\n \"GET /user/migrations/{migration_id}/archive\"\n ],\n getCommitAuthors: [\n \"GET /repos/{owner}/{repo}/import/authors\",\n {},\n {\n deprecated: \"octokit.rest.migrations.getCommitAuthors() is deprecated, see https://docs.github.com/rest/migrations/source-imports#get-commit-authors\"\n }\n ],\n getImportStatus: [\n \"GET /repos/{owner}/{repo}/import\",\n {},\n {\n deprecated: \"octokit.rest.migrations.getImportStatus() is deprecated, see https://docs.github.com/rest/migrations/source-imports#get-an-import-status\"\n }\n ],\n getLargeFiles: [\n \"GET /repos/{owner}/{repo}/import/large_files\",\n {},\n {\n deprecated: \"octokit.rest.migrations.getLargeFiles() is deprecated, see https://docs.github.com/rest/migrations/source-imports#get-large-files\"\n }\n ],\n getStatusForAuthenticatedUser: [\"GET /user/migrations/{migration_id}\"],\n getStatusForOrg: [\"GET /orgs/{org}/migrations/{migration_id}\"],\n listForAuthenticatedUser: [\"GET /user/migrations\"],\n listForOrg: [\"GET /orgs/{org}/migrations\"],\n listReposForAuthenticatedUser: [\n \"GET /user/migrations/{migration_id}/repositories\"\n ],\n listReposForOrg: [\"GET /orgs/{org}/migrations/{migration_id}/repositories\"],\n listReposForUser: [\n \"GET /user/migrations/{migration_id}/repositories\",\n {},\n { renamed: [\"migrations\", \"listReposForAuthenticatedUser\"] }\n ],\n mapCommitAuthor: [\n \"PATCH /repos/{owner}/{repo}/import/authors/{author_id}\",\n {},\n {\n deprecated: \"octokit.rest.migrations.mapCommitAuthor() is deprecated, see https://docs.github.com/rest/migrations/source-imports#map-a-commit-author\"\n }\n ],\n setLfsPreference: [\n \"PATCH /repos/{owner}/{repo}/import/lfs\",\n {},\n {\n deprecated: \"octokit.rest.migrations.setLfsPreference() is deprecated, see https://docs.github.com/rest/migrations/source-imports#update-git-lfs-preference\"\n }\n ],\n startForAuthenticatedUser: [\"POST /user/migrations\"],\n startForOrg: [\"POST /orgs/{org}/migrations\"],\n startImport: [\n \"PUT /repos/{owner}/{repo}/import\",\n {},\n {\n deprecated: \"octokit.rest.migrations.startImport() is deprecated, see https://docs.github.com/rest/migrations/source-imports#start-an-import\"\n }\n ],\n unlockRepoForAuthenticatedUser: [\n \"DELETE /user/migrations/{migration_id}/repos/{repo_name}/lock\"\n ],\n unlockRepoForOrg: [\n \"DELETE /orgs/{org}/migrations/{migration_id}/repos/{repo_name}/lock\"\n ],\n updateImport: [\n \"PATCH /repos/{owner}/{repo}/import\",\n {},\n {\n deprecated: \"octokit.rest.migrations.updateImport() is deprecated, see https://docs.github.com/rest/migrations/source-imports#update-an-import\"\n }\n ]\n },\n oidc: {\n getOidcCustomSubTemplateForOrg: [\n \"GET /orgs/{org}/actions/oidc/customization/sub\"\n ],\n updateOidcCustomSubTemplateForOrg: [\n \"PUT /orgs/{org}/actions/oidc/customization/sub\"\n ]\n },\n orgs: {\n addSecurityManagerTeam: [\n \"PUT /orgs/{org}/security-managers/teams/{team_slug}\"\n ],\n assignTeamToOrgRole: [\n \"PUT /orgs/{org}/organization-roles/teams/{team_slug}/{role_id}\"\n ],\n assignUserToOrgRole: [\n \"PUT /orgs/{org}/organization-roles/users/{username}/{role_id}\"\n ],\n blockUser: [\"PUT /orgs/{org}/blocks/{username}\"],\n cancelInvitation: [\"DELETE /orgs/{org}/invitations/{invitation_id}\"],\n checkBlockedUser: [\"GET /orgs/{org}/blocks/{username}\"],\n checkMembershipForUser: [\"GET /orgs/{org}/members/{username}\"],\n checkPublicMembershipForUser: [\"GET /orgs/{org}/public_members/{username}\"],\n convertMemberToOutsideCollaborator: [\n \"PUT /orgs/{org}/outside_collaborators/{username}\"\n ],\n createCustomOrganizationRole: [\"POST /orgs/{org}/organization-roles\"],\n createInvitation: [\"POST /orgs/{org}/invitations\"],\n createOrUpdateCustomProperties: [\"PATCH /orgs/{org}/properties/schema\"],\n createOrUpdateCustomPropertiesValuesForRepos: [\n \"PATCH /orgs/{org}/properties/values\"\n ],\n createOrUpdateCustomProperty: [\n \"PUT /orgs/{org}/properties/schema/{custom_property_name}\"\n ],\n createWebhook: [\"POST /orgs/{org}/hooks\"],\n delete: [\"DELETE /orgs/{org}\"],\n deleteCustomOrganizationRole: [\n \"DELETE /orgs/{org}/organization-roles/{role_id}\"\n ],\n deleteWebhook: [\"DELETE /orgs/{org}/hooks/{hook_id}\"],\n enableOrDisableSecurityProductOnAllOrgRepos: [\n \"POST /orgs/{org}/{security_product}/{enablement}\"\n ],\n get: [\"GET /orgs/{org}\"],\n getAllCustomProperties: [\"GET /orgs/{org}/properties/schema\"],\n getCustomProperty: [\n \"GET /orgs/{org}/properties/schema/{custom_property_name}\"\n ],\n getMembershipForAuthenticatedUser: [\"GET /user/memberships/orgs/{org}\"],\n getMembershipForUser: [\"GET /orgs/{org}/memberships/{username}\"],\n getOrgRole: [\"GET /orgs/{org}/organization-roles/{role_id}\"],\n getWebhook: [\"GET /orgs/{org}/hooks/{hook_id}\"],\n getWebhookConfigForOrg: [\"GET /orgs/{org}/hooks/{hook_id}/config\"],\n getWebhookDelivery: [\n \"GET /orgs/{org}/hooks/{hook_id}/deliveries/{delivery_id}\"\n ],\n list: [\"GET /organizations\"],\n listAppInstallations: [\"GET /orgs/{org}/installations\"],\n listBlockedUsers: [\"GET /orgs/{org}/blocks\"],\n listCustomPropertiesValuesForRepos: [\"GET /orgs/{org}/properties/values\"],\n listFailedInvitations: [\"GET /orgs/{org}/failed_invitations\"],\n listForAuthenticatedUser: [\"GET /user/orgs\"],\n listForUser: [\"GET /users/{username}/orgs\"],\n listInvitationTeams: [\"GET /orgs/{org}/invitations/{invitation_id}/teams\"],\n listMembers: [\"GET /orgs/{org}/members\"],\n listMembershipsForAuthenticatedUser: [\"GET /user/memberships/orgs\"],\n listOrgRoleTeams: [\"GET /orgs/{org}/organization-roles/{role_id}/teams\"],\n listOrgRoleUsers: [\"GET /orgs/{org}/organization-roles/{role_id}/users\"],\n listOrgRoles: [\"GET /orgs/{org}/organization-roles\"],\n listOrganizationFineGrainedPermissions: [\n \"GET /orgs/{org}/organization-fine-grained-permissions\"\n ],\n listOutsideCollaborators: [\"GET /orgs/{org}/outside_collaborators\"],\n listPatGrantRepositories: [\n \"GET /orgs/{org}/personal-access-tokens/{pat_id}/repositories\"\n ],\n listPatGrantRequestRepositories: [\n \"GET /orgs/{org}/personal-access-token-requests/{pat_request_id}/repositories\"\n ],\n listPatGrantRequests: [\"GET /orgs/{org}/personal-access-token-requests\"],\n listPatGrants: [\"GET /orgs/{org}/personal-access-tokens\"],\n listPendingInvitations: [\"GET /orgs/{org}/invitations\"],\n listPublicMembers: [\"GET /orgs/{org}/public_members\"],\n listSecurityManagerTeams: [\"GET /orgs/{org}/security-managers\"],\n listWebhookDeliveries: [\"GET /orgs/{org}/hooks/{hook_id}/deliveries\"],\n listWebhooks: [\"GET /orgs/{org}/hooks\"],\n patchCustomOrganizationRole: [\n \"PATCH /orgs/{org}/organization-roles/{role_id}\"\n ],\n pingWebhook: [\"POST /orgs/{org}/hooks/{hook_id}/pings\"],\n redeliverWebhookDelivery: [\n \"POST /orgs/{org}/hooks/{hook_id}/deliveries/{delivery_id}/attempts\"\n ],\n removeCustomProperty: [\n \"DELETE /orgs/{org}/properties/schema/{custom_property_name}\"\n ],\n removeMember: [\"DELETE /orgs/{org}/members/{username}\"],\n removeMembershipForUser: [\"DELETE /orgs/{org}/memberships/{username}\"],\n removeOutsideCollaborator: [\n \"DELETE /orgs/{org}/outside_collaborators/{username}\"\n ],\n removePublicMembershipForAuthenticatedUser: [\n \"DELETE /orgs/{org}/public_members/{username}\"\n ],\n removeSecurityManagerTeam: [\n \"DELETE /orgs/{org}/security-managers/teams/{team_slug}\"\n ],\n reviewPatGrantRequest: [\n \"POST /orgs/{org}/personal-access-token-requests/{pat_request_id}\"\n ],\n reviewPatGrantRequestsInBulk: [\n \"POST /orgs/{org}/personal-access-token-requests\"\n ],\n revokeAllOrgRolesTeam: [\n \"DELETE /orgs/{org}/organization-roles/teams/{team_slug}\"\n ],\n revokeAllOrgRolesUser: [\n \"DELETE /orgs/{org}/organization-roles/users/{username}\"\n ],\n revokeOrgRoleTeam: [\n \"DELETE /orgs/{org}/organization-roles/teams/{team_slug}/{role_id}\"\n ],\n revokeOrgRoleUser: [\n \"DELETE /orgs/{org}/organization-roles/users/{username}/{role_id}\"\n ],\n setMembershipForUser: [\"PUT /orgs/{org}/memberships/{username}\"],\n setPublicMembershipForAuthenticatedUser: [\n \"PUT /orgs/{org}/public_members/{username}\"\n ],\n unblockUser: [\"DELETE /orgs/{org}/blocks/{username}\"],\n update: [\"PATCH /orgs/{org}\"],\n updateMembershipForAuthenticatedUser: [\n \"PATCH /user/memberships/orgs/{org}\"\n ],\n updatePatAccess: [\"POST /orgs/{org}/personal-access-tokens/{pat_id}\"],\n updatePatAccesses: [\"POST /orgs/{org}/personal-access-tokens\"],\n updateWebhook: [\"PATCH /orgs/{org}/hooks/{hook_id}\"],\n updateWebhookConfigForOrg: [\"PATCH /orgs/{org}/hooks/{hook_id}/config\"]\n },\n packages: {\n deletePackageForAuthenticatedUser: [\n \"DELETE /user/packages/{package_type}/{package_name}\"\n ],\n deletePackageForOrg: [\n \"DELETE /orgs/{org}/packages/{package_type}/{package_name}\"\n ],\n deletePackageForUser: [\n \"DELETE /users/{username}/packages/{package_type}/{package_name}\"\n ],\n deletePackageVersionForAuthenticatedUser: [\n \"DELETE /user/packages/{package_type}/{package_name}/versions/{package_version_id}\"\n ],\n deletePackageVersionForOrg: [\n \"DELETE /orgs/{org}/packages/{package_type}/{package_name}/versions/{package_version_id}\"\n ],\n deletePackageVersionForUser: [\n \"DELETE /users/{username}/packages/{package_type}/{package_name}/versions/{package_version_id}\"\n ],\n getAllPackageVersionsForAPackageOwnedByAnOrg: [\n \"GET /orgs/{org}/packages/{package_type}/{package_name}/versions\",\n {},\n { renamed: [\"packages\", \"getAllPackageVersionsForPackageOwnedByOrg\"] }\n ],\n getAllPackageVersionsForAPackageOwnedByTheAuthenticatedUser: [\n \"GET /user/packages/{package_type}/{package_name}/versions\",\n {},\n {\n renamed: [\n \"packages\",\n \"getAllPackageVersionsForPackageOwnedByAuthenticatedUser\"\n ]\n }\n ],\n getAllPackageVersionsForPackageOwnedByAuthenticatedUser: [\n \"GET /user/packages/{package_type}/{package_name}/versions\"\n ],\n getAllPackageVersionsForPackageOwnedByOrg: [\n \"GET /orgs/{org}/packages/{package_type}/{package_name}/versions\"\n ],\n getAllPackageVersionsForPackageOwnedByUser: [\n \"GET /users/{username}/packages/{package_type}/{package_name}/versions\"\n ],\n getPackageForAuthenticatedUser: [\n \"GET /user/packages/{package_type}/{package_name}\"\n ],\n getPackageForOrganization: [\n \"GET /orgs/{org}/packages/{package_type}/{package_name}\"\n ],\n getPackageForUser: [\n \"GET /users/{username}/packages/{package_type}/{package_name}\"\n ],\n getPackageVersionForAuthenticatedUser: [\n \"GET /user/packages/{package_type}/{package_name}/versions/{package_version_id}\"\n ],\n getPackageVersionForOrganization: [\n \"GET /orgs/{org}/packages/{package_type}/{package_name}/versions/{package_version_id}\"\n ],\n getPackageVersionForUser: [\n \"GET /users/{username}/packages/{package_type}/{package_name}/versions/{package_version_id}\"\n ],\n listDockerMigrationConflictingPackagesForAuthenticatedUser: [\n \"GET /user/docker/conflicts\"\n ],\n listDockerMigrationConflictingPackagesForOrganization: [\n \"GET /orgs/{org}/docker/conflicts\"\n ],\n listDockerMigrationConflictingPackagesForUser: [\n \"GET /users/{username}/docker/conflicts\"\n ],\n listPackagesForAuthenticatedUser: [\"GET /user/packages\"],\n listPackagesForOrganization: [\"GET /orgs/{org}/packages\"],\n listPackagesForUser: [\"GET /users/{username}/packages\"],\n restorePackageForAuthenticatedUser: [\n \"POST /user/packages/{package_type}/{package_name}/restore{?token}\"\n ],\n restorePackageForOrg: [\n \"POST /orgs/{org}/packages/{package_type}/{package_name}/restore{?token}\"\n ],\n restorePackageForUser: [\n \"POST /users/{username}/packages/{package_type}/{package_name}/restore{?token}\"\n ],\n restorePackageVersionForAuthenticatedUser: [\n \"POST /user/packages/{package_type}/{package_name}/versions/{package_version_id}/restore\"\n ],\n restorePackageVersionForOrg: [\n \"POST /orgs/{org}/packages/{package_type}/{package_name}/versions/{package_version_id}/restore\"\n ],\n restorePackageVersionForUser: [\n \"POST /users/{username}/packages/{package_type}/{package_name}/versions/{package_version_id}/restore\"\n ]\n },\n projects: {\n addCollaborator: [\"PUT /projects/{project_id}/collaborators/{username}\"],\n createCard: [\"POST /projects/columns/{column_id}/cards\"],\n createColumn: [\"POST /projects/{project_id}/columns\"],\n createForAuthenticatedUser: [\"POST /user/projects\"],\n createForOrg: [\"POST /orgs/{org}/projects\"],\n createForRepo: [\"POST /repos/{owner}/{repo}/projects\"],\n delete: [\"DELETE /projects/{project_id}\"],\n deleteCard: [\"DELETE /projects/columns/cards/{card_id}\"],\n deleteColumn: [\"DELETE /projects/columns/{column_id}\"],\n get: [\"GET /projects/{project_id}\"],\n getCard: [\"GET /projects/columns/cards/{card_id}\"],\n getColumn: [\"GET /projects/columns/{column_id}\"],\n getPermissionForUser: [\n \"GET /projects/{project_id}/collaborators/{username}/permission\"\n ],\n listCards: [\"GET /projects/columns/{column_id}/cards\"],\n listCollaborators: [\"GET /projects/{project_id}/collaborators\"],\n listColumns: [\"GET /projects/{project_id}/columns\"],\n listForOrg: [\"GET /orgs/{org}/projects\"],\n listForRepo: [\"GET /repos/{owner}/{repo}/projects\"],\n listForUser: [\"GET /users/{username}/projects\"],\n moveCard: [\"POST /projects/columns/cards/{card_id}/moves\"],\n moveColumn: [\"POST /projects/columns/{column_id}/moves\"],\n removeCollaborator: [\n \"DELETE /projects/{project_id}/collaborators/{username}\"\n ],\n update: [\"PATCH /projects/{project_id}\"],\n updateCard: [\"PATCH /projects/columns/cards/{card_id}\"],\n updateColumn: [\"PATCH /projects/columns/{column_id}\"]\n },\n pulls: {\n checkIfMerged: [\"GET /repos/{owner}/{repo}/pulls/{pull_number}/merge\"],\n create: [\"POST /repos/{owner}/{repo}/pulls\"],\n createReplyForReviewComment: [\n \"POST /repos/{owner}/{repo}/pulls/{pull_number}/comments/{comment_id}/replies\"\n ],\n createReview: [\"POST /repos/{owner}/{repo}/pulls/{pull_number}/reviews\"],\n createReviewComment: [\n \"POST /repos/{owner}/{repo}/pulls/{pull_number}/comments\"\n ],\n deletePendingReview: [\n \"DELETE /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}\"\n ],\n deleteReviewComment: [\n \"DELETE /repos/{owner}/{repo}/pulls/comments/{comment_id}\"\n ],\n dismissReview: [\n \"PUT /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/dismissals\"\n ],\n get: [\"GET /repos/{owner}/{repo}/pulls/{pull_number}\"],\n getReview: [\n \"GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}\"\n ],\n getReviewComment: [\"GET /repos/{owner}/{repo}/pulls/comments/{comment_id}\"],\n list: [\"GET /repos/{owner}/{repo}/pulls\"],\n listCommentsForReview: [\n \"GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/comments\"\n ],\n listCommits: [\"GET /repos/{owner}/{repo}/pulls/{pull_number}/commits\"],\n listFiles: [\"GET /repos/{owner}/{repo}/pulls/{pull_number}/files\"],\n listRequestedReviewers: [\n \"GET /repos/{owner}/{repo}/pulls/{pull_number}/requested_reviewers\"\n ],\n listReviewComments: [\n \"GET /repos/{owner}/{repo}/pulls/{pull_number}/comments\"\n ],\n listReviewCommentsForRepo: [\"GET /repos/{owner}/{repo}/pulls/comments\"],\n listReviews: [\"GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews\"],\n merge: [\"PUT /repos/{owner}/{repo}/pulls/{pull_number}/merge\"],\n removeRequestedReviewers: [\n \"DELETE /repos/{owner}/{repo}/pulls/{pull_number}/requested_reviewers\"\n ],\n requestReviewers: [\n \"POST /repos/{owner}/{repo}/pulls/{pull_number}/requested_reviewers\"\n ],\n submitReview: [\n \"POST /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/events\"\n ],\n update: [\"PATCH /repos/{owner}/{repo}/pulls/{pull_number}\"],\n updateBranch: [\n \"PUT /repos/{owner}/{repo}/pulls/{pull_number}/update-branch\"\n ],\n updateReview: [\n \"PUT /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}\"\n ],\n updateReviewComment: [\n \"PATCH /repos/{owner}/{repo}/pulls/comments/{comment_id}\"\n ]\n },\n rateLimit: { get: [\"GET /rate_limit\"] },\n reactions: {\n createForCommitComment: [\n \"POST /repos/{owner}/{repo}/comments/{comment_id}/reactions\"\n ],\n createForIssue: [\n \"POST /repos/{owner}/{repo}/issues/{issue_number}/reactions\"\n ],\n createForIssueComment: [\n \"POST /repos/{owner}/{repo}/issues/comments/{comment_id}/reactions\"\n ],\n createForPullRequestReviewComment: [\n \"POST /repos/{owner}/{repo}/pulls/comments/{comment_id}/reactions\"\n ],\n createForRelease: [\n \"POST /repos/{owner}/{repo}/releases/{release_id}/reactions\"\n ],\n createForTeamDiscussionCommentInOrg: [\n \"POST /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}/reactions\"\n ],\n createForTeamDiscussionInOrg: [\n \"POST /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/reactions\"\n ],\n deleteForCommitComment: [\n \"DELETE /repos/{owner}/{repo}/comments/{comment_id}/reactions/{reaction_id}\"\n ],\n deleteForIssue: [\n \"DELETE /repos/{owner}/{repo}/issues/{issue_number}/reactions/{reaction_id}\"\n ],\n deleteForIssueComment: [\n \"DELETE /repos/{owner}/{repo}/issues/comments/{comment_id}/reactions/{reaction_id}\"\n ],\n deleteForPullRequestComment: [\n \"DELETE /repos/{owner}/{repo}/pulls/comments/{comment_id}/reactions/{reaction_id}\"\n ],\n deleteForRelease: [\n \"DELETE /repos/{owner}/{repo}/releases/{release_id}/reactions/{reaction_id}\"\n ],\n deleteForTeamDiscussion: [\n \"DELETE /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/reactions/{reaction_id}\"\n ],\n deleteForTeamDiscussionComment: [\n \"DELETE /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}/reactions/{reaction_id}\"\n ],\n listForCommitComment: [\n \"GET /repos/{owner}/{repo}/comments/{comment_id}/reactions\"\n ],\n listForIssue: [\"GET /repos/{owner}/{repo}/issues/{issue_number}/reactions\"],\n listForIssueComment: [\n \"GET /repos/{owner}/{repo}/issues/comments/{comment_id}/reactions\"\n ],\n listForPullRequestReviewComment: [\n \"GET /repos/{owner}/{repo}/pulls/comments/{comment_id}/reactions\"\n ],\n listForRelease: [\n \"GET /repos/{owner}/{repo}/releases/{release_id}/reactions\"\n ],\n listForTeamDiscussionCommentInOrg: [\n \"GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}/reactions\"\n ],\n listForTeamDiscussionInOrg: [\n \"GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/reactions\"\n ]\n },\n repos: {\n acceptInvitation: [\n \"PATCH /user/repository_invitations/{invitation_id}\",\n {},\n { renamed: [\"repos\", \"acceptInvitationForAuthenticatedUser\"] }\n ],\n acceptInvitationForAuthenticatedUser: [\n \"PATCH /user/repository_invitations/{invitation_id}\"\n ],\n addAppAccessRestrictions: [\n \"POST /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/apps\",\n {},\n { mapToData: \"apps\" }\n ],\n addCollaborator: [\"PUT /repos/{owner}/{repo}/collaborators/{username}\"],\n addStatusCheckContexts: [\n \"POST /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts\",\n {},\n { mapToData: \"contexts\" }\n ],\n addTeamAccessRestrictions: [\n \"POST /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams\",\n {},\n { mapToData: \"teams\" }\n ],\n addUserAccessRestrictions: [\n \"POST /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users\",\n {},\n { mapToData: \"users\" }\n ],\n cancelPagesDeployment: [\n \"POST /repos/{owner}/{repo}/pages/deployments/{pages_deployment_id}/cancel\"\n ],\n checkAutomatedSecurityFixes: [\n \"GET /repos/{owner}/{repo}/automated-security-fixes\"\n ],\n checkCollaborator: [\"GET /repos/{owner}/{repo}/collaborators/{username}\"],\n checkVulnerabilityAlerts: [\n \"GET /repos/{owner}/{repo}/vulnerability-alerts\"\n ],\n codeownersErrors: [\"GET /repos/{owner}/{repo}/codeowners/errors\"],\n compareCommits: [\"GET /repos/{owner}/{repo}/compare/{base}...{head}\"],\n compareCommitsWithBasehead: [\n \"GET /repos/{owner}/{repo}/compare/{basehead}\"\n ],\n createAutolink: [\"POST /repos/{owner}/{repo}/autolinks\"],\n createCommitComment: [\n \"POST /repos/{owner}/{repo}/commits/{commit_sha}/comments\"\n ],\n createCommitSignatureProtection: [\n \"POST /repos/{owner}/{repo}/branches/{branch}/protection/required_signatures\"\n ],\n createCommitStatus: [\"POST /repos/{owner}/{repo}/statuses/{sha}\"],\n createDeployKey: [\"POST /repos/{owner}/{repo}/keys\"],\n createDeployment: [\"POST /repos/{owner}/{repo}/deployments\"],\n createDeploymentBranchPolicy: [\n \"POST /repos/{owner}/{repo}/environments/{environment_name}/deployment-branch-policies\"\n ],\n createDeploymentProtectionRule: [\n \"POST /repos/{owner}/{repo}/environments/{environment_name}/deployment_protection_rules\"\n ],\n createDeploymentStatus: [\n \"POST /repos/{owner}/{repo}/deployments/{deployment_id}/statuses\"\n ],\n createDispatchEvent: [\"POST /repos/{owner}/{repo}/dispatches\"],\n createForAuthenticatedUser: [\"POST /user/repos\"],\n createFork: [\"POST /repos/{owner}/{repo}/forks\"],\n createInOrg: [\"POST /orgs/{org}/repos\"],\n createOrUpdateCustomPropertiesValues: [\n \"PATCH /repos/{owner}/{repo}/properties/values\"\n ],\n createOrUpdateEnvironment: [\n \"PUT /repos/{owner}/{repo}/environments/{environment_name}\"\n ],\n createOrUpdateFileContents: [\"PUT /repos/{owner}/{repo}/contents/{path}\"],\n createOrgRuleset: [\"POST /orgs/{org}/rulesets\"],\n createPagesDeployment: [\"POST /repos/{owner}/{repo}/pages/deployments\"],\n createPagesSite: [\"POST /repos/{owner}/{repo}/pages\"],\n createRelease: [\"POST /repos/{owner}/{repo}/releases\"],\n createRepoRuleset: [\"POST /repos/{owner}/{repo}/rulesets\"],\n createTagProtection: [\"POST /repos/{owner}/{repo}/tags/protection\"],\n createUsingTemplate: [\n \"POST /repos/{template_owner}/{template_repo}/generate\"\n ],\n createWebhook: [\"POST /repos/{owner}/{repo}/hooks\"],\n declineInvitation: [\n \"DELETE /user/repository_invitations/{invitation_id}\",\n {},\n { renamed: [\"repos\", \"declineInvitationForAuthenticatedUser\"] }\n ],\n declineInvitationForAuthenticatedUser: [\n \"DELETE /user/repository_invitations/{invitation_id}\"\n ],\n delete: [\"DELETE /repos/{owner}/{repo}\"],\n deleteAccessRestrictions: [\n \"DELETE /repos/{owner}/{repo}/branches/{branch}/protection/restrictions\"\n ],\n deleteAdminBranchProtection: [\n \"DELETE /repos/{owner}/{repo}/branches/{branch}/protection/enforce_admins\"\n ],\n deleteAnEnvironment: [\n \"DELETE /repos/{owner}/{repo}/environments/{environment_name}\"\n ],\n deleteAutolink: [\"DELETE /repos/{owner}/{repo}/autolinks/{autolink_id}\"],\n deleteBranchProtection: [\n \"DELETE /repos/{owner}/{repo}/branches/{branch}/protection\"\n ],\n deleteCommitComment: [\"DELETE /repos/{owner}/{repo}/comments/{comment_id}\"],\n deleteCommitSignatureProtection: [\n \"DELETE /repos/{owner}/{repo}/branches/{branch}/protection/required_signatures\"\n ],\n deleteDeployKey: [\"DELETE /repos/{owner}/{repo}/keys/{key_id}\"],\n deleteDeployment: [\n \"DELETE /repos/{owner}/{repo}/deployments/{deployment_id}\"\n ],\n deleteDeploymentBranchPolicy: [\n \"DELETE /repos/{owner}/{repo}/environments/{environment_name}/deployment-branch-policies/{branch_policy_id}\"\n ],\n deleteFile: [\"DELETE /repos/{owner}/{repo}/contents/{path}\"],\n deleteInvitation: [\n \"DELETE /repos/{owner}/{repo}/invitations/{invitation_id}\"\n ],\n deleteOrgRuleset: [\"DELETE /orgs/{org}/rulesets/{ruleset_id}\"],\n deletePagesSite: [\"DELETE /repos/{owner}/{repo}/pages\"],\n deletePullRequestReviewProtection: [\n \"DELETE /repos/{owner}/{repo}/branches/{branch}/protection/required_pull_request_reviews\"\n ],\n deleteRelease: [\"DELETE /repos/{owner}/{repo}/releases/{release_id}\"],\n deleteReleaseAsset: [\n \"DELETE /repos/{owner}/{repo}/releases/assets/{asset_id}\"\n ],\n deleteRepoRuleset: [\"DELETE /repos/{owner}/{repo}/rulesets/{ruleset_id}\"],\n deleteTagProtection: [\n \"DELETE /repos/{owner}/{repo}/tags/protection/{tag_protection_id}\"\n ],\n deleteWebhook: [\"DELETE /repos/{owner}/{repo}/hooks/{hook_id}\"],\n disableAutomatedSecurityFixes: [\n \"DELETE /repos/{owner}/{repo}/automated-security-fixes\"\n ],\n disableDeploymentProtectionRule: [\n \"DELETE /repos/{owner}/{repo}/environments/{environment_name}/deployment_protection_rules/{protection_rule_id}\"\n ],\n disablePrivateVulnerabilityReporting: [\n \"DELETE /repos/{owner}/{repo}/private-vulnerability-reporting\"\n ],\n disableVulnerabilityAlerts: [\n \"DELETE /repos/{owner}/{repo}/vulnerability-alerts\"\n ],\n downloadArchive: [\n \"GET /repos/{owner}/{repo}/zipball/{ref}\",\n {},\n { renamed: [\"repos\", \"downloadZipballArchive\"] }\n ],\n downloadTarballArchive: [\"GET /repos/{owner}/{repo}/tarball/{ref}\"],\n downloadZipballArchive: [\"GET /repos/{owner}/{repo}/zipball/{ref}\"],\n enableAutomatedSecurityFixes: [\n \"PUT /repos/{owner}/{repo}/automated-security-fixes\"\n ],\n enablePrivateVulnerabilityReporting: [\n \"PUT /repos/{owner}/{repo}/private-vulnerability-reporting\"\n ],\n enableVulnerabilityAlerts: [\n \"PUT /repos/{owner}/{repo}/vulnerability-alerts\"\n ],\n generateReleaseNotes: [\n \"POST /repos/{owner}/{repo}/releases/generate-notes\"\n ],\n get: [\"GET /repos/{owner}/{repo}\"],\n getAccessRestrictions: [\n \"GET /repos/{owner}/{repo}/branches/{branch}/protection/restrictions\"\n ],\n getAdminBranchProtection: [\n \"GET /repos/{owner}/{repo}/branches/{branch}/protection/enforce_admins\"\n ],\n getAllDeploymentProtectionRules: [\n \"GET /repos/{owner}/{repo}/environments/{environment_name}/deployment_protection_rules\"\n ],\n getAllEnvironments: [\"GET /repos/{owner}/{repo}/environments\"],\n getAllStatusCheckContexts: [\n \"GET /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts\"\n ],\n getAllTopics: [\"GET /repos/{owner}/{repo}/topics\"],\n getAppsWithAccessToProtectedBranch: [\n \"GET /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/apps\"\n ],\n getAutolink: [\"GET /repos/{owner}/{repo}/autolinks/{autolink_id}\"],\n getBranch: [\"GET /repos/{owner}/{repo}/branches/{branch}\"],\n getBranchProtection: [\n \"GET /repos/{owner}/{repo}/branches/{branch}/protection\"\n ],\n getBranchRules: [\"GET /repos/{owner}/{repo}/rules/branches/{branch}\"],\n getClones: [\"GET /repos/{owner}/{repo}/traffic/clones\"],\n getCodeFrequencyStats: [\"GET /repos/{owner}/{repo}/stats/code_frequency\"],\n getCollaboratorPermissionLevel: [\n \"GET /repos/{owner}/{repo}/collaborators/{username}/permission\"\n ],\n getCombinedStatusForRef: [\"GET /repos/{owner}/{repo}/commits/{ref}/status\"],\n getCommit: [\"GET /repos/{owner}/{repo}/commits/{ref}\"],\n getCommitActivityStats: [\"GET /repos/{owner}/{repo}/stats/commit_activity\"],\n getCommitComment: [\"GET /repos/{owner}/{repo}/comments/{comment_id}\"],\n getCommitSignatureProtection: [\n \"GET /repos/{owner}/{repo}/branches/{branch}/protection/required_signatures\"\n ],\n getCommunityProfileMetrics: [\"GET /repos/{owner}/{repo}/community/profile\"],\n getContent: [\"GET /repos/{owner}/{repo}/contents/{path}\"],\n getContributorsStats: [\"GET /repos/{owner}/{repo}/stats/contributors\"],\n getCustomDeploymentProtectionRule: [\n \"GET /repos/{owner}/{repo}/environments/{environment_name}/deployment_protection_rules/{protection_rule_id}\"\n ],\n getCustomPropertiesValues: [\"GET /repos/{owner}/{repo}/properties/values\"],\n getDeployKey: [\"GET /repos/{owner}/{repo}/keys/{key_id}\"],\n getDeployment: [\"GET /repos/{owner}/{repo}/deployments/{deployment_id}\"],\n getDeploymentBranchPolicy: [\n \"GET /repos/{owner}/{repo}/environments/{environment_name}/deployment-branch-policies/{branch_policy_id}\"\n ],\n getDeploymentStatus: [\n \"GET /repos/{owner}/{repo}/deployments/{deployment_id}/statuses/{status_id}\"\n ],\n getEnvironment: [\n \"GET /repos/{owner}/{repo}/environments/{environment_name}\"\n ],\n getLatestPagesBuild: [\"GET /repos/{owner}/{repo}/pages/builds/latest\"],\n getLatestRelease: [\"GET /repos/{owner}/{repo}/releases/latest\"],\n getOrgRuleSuite: [\"GET /orgs/{org}/rulesets/rule-suites/{rule_suite_id}\"],\n getOrgRuleSuites: [\"GET /orgs/{org}/rulesets/rule-suites\"],\n getOrgRuleset: [\"GET /orgs/{org}/rulesets/{ruleset_id}\"],\n getOrgRulesets: [\"GET /orgs/{org}/rulesets\"],\n getPages: [\"GET /repos/{owner}/{repo}/pages\"],\n getPagesBuild: [\"GET /repos/{owner}/{repo}/pages/builds/{build_id}\"],\n getPagesDeployment: [\n \"GET /repos/{owner}/{repo}/pages/deployments/{pages_deployment_id}\"\n ],\n getPagesHealthCheck: [\"GET /repos/{owner}/{repo}/pages/health\"],\n getParticipationStats: [\"GET /repos/{owner}/{repo}/stats/participation\"],\n getPullRequestReviewProtection: [\n \"GET /repos/{owner}/{repo}/branches/{branch}/protection/required_pull_request_reviews\"\n ],\n getPunchCardStats: [\"GET /repos/{owner}/{repo}/stats/punch_card\"],\n getReadme: [\"GET /repos/{owner}/{repo}/readme\"],\n getReadmeInDirectory: [\"GET /repos/{owner}/{repo}/readme/{dir}\"],\n getRelease: [\"GET /repos/{owner}/{repo}/releases/{release_id}\"],\n getReleaseAsset: [\"GET /repos/{owner}/{repo}/releases/assets/{asset_id}\"],\n getReleaseByTag: [\"GET /repos/{owner}/{repo}/releases/tags/{tag}\"],\n getRepoRuleSuite: [\n \"GET /repos/{owner}/{repo}/rulesets/rule-suites/{rule_suite_id}\"\n ],\n getRepoRuleSuites: [\"GET /repos/{owner}/{repo}/rulesets/rule-suites\"],\n getRepoRuleset: [\"GET /repos/{owner}/{repo}/rulesets/{ruleset_id}\"],\n getRepoRulesets: [\"GET /repos/{owner}/{repo}/rulesets\"],\n getStatusChecksProtection: [\n \"GET /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks\"\n ],\n getTeamsWithAccessToProtectedBranch: [\n \"GET /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams\"\n ],\n getTopPaths: [\"GET /repos/{owner}/{repo}/traffic/popular/paths\"],\n getTopReferrers: [\"GET /repos/{owner}/{repo}/traffic/popular/referrers\"],\n getUsersWithAccessToProtectedBranch: [\n \"GET /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users\"\n ],\n getViews: [\"GET /repos/{owner}/{repo}/traffic/views\"],\n getWebhook: [\"GET /repos/{owner}/{repo}/hooks/{hook_id}\"],\n getWebhookConfigForRepo: [\n \"GET /repos/{owner}/{repo}/hooks/{hook_id}/config\"\n ],\n getWebhookDelivery: [\n \"GET /repos/{owner}/{repo}/hooks/{hook_id}/deliveries/{delivery_id}\"\n ],\n listActivities: [\"GET /repos/{owner}/{repo}/activity\"],\n listAutolinks: [\"GET /repos/{owner}/{repo}/autolinks\"],\n listBranches: [\"GET /repos/{owner}/{repo}/branches\"],\n listBranchesForHeadCommit: [\n \"GET /repos/{owner}/{repo}/commits/{commit_sha}/branches-where-head\"\n ],\n listCollaborators: [\"GET /repos/{owner}/{repo}/collaborators\"],\n listCommentsForCommit: [\n \"GET /repos/{owner}/{repo}/commits/{commit_sha}/comments\"\n ],\n listCommitCommentsForRepo: [\"GET /repos/{owner}/{repo}/comments\"],\n listCommitStatusesForRef: [\n \"GET /repos/{owner}/{repo}/commits/{ref}/statuses\"\n ],\n listCommits: [\"GET /repos/{owner}/{repo}/commits\"],\n listContributors: [\"GET /repos/{owner}/{repo}/contributors\"],\n listCustomDeploymentRuleIntegrations: [\n \"GET /repos/{owner}/{repo}/environments/{environment_name}/deployment_protection_rules/apps\"\n ],\n listDeployKeys: [\"GET /repos/{owner}/{repo}/keys\"],\n listDeploymentBranchPolicies: [\n \"GET /repos/{owner}/{repo}/environments/{environment_name}/deployment-branch-policies\"\n ],\n listDeploymentStatuses: [\n \"GET /repos/{owner}/{repo}/deployments/{deployment_id}/statuses\"\n ],\n listDeployments: [\"GET /repos/{owner}/{repo}/deployments\"],\n listForAuthenticatedUser: [\"GET /user/repos\"],\n listForOrg: [\"GET /orgs/{org}/repos\"],\n listForUser: [\"GET /users/{username}/repos\"],\n listForks: [\"GET /repos/{owner}/{repo}/forks\"],\n listInvitations: [\"GET /repos/{owner}/{repo}/invitations\"],\n listInvitationsForAuthenticatedUser: [\"GET /user/repository_invitations\"],\n listLanguages: [\"GET /repos/{owner}/{repo}/languages\"],\n listPagesBuilds: [\"GET /repos/{owner}/{repo}/pages/builds\"],\n listPublic: [\"GET /repositories\"],\n listPullRequestsAssociatedWithCommit: [\n \"GET /repos/{owner}/{repo}/commits/{commit_sha}/pulls\"\n ],\n listReleaseAssets: [\n \"GET /repos/{owner}/{repo}/releases/{release_id}/assets\"\n ],\n listReleases: [\"GET /repos/{owner}/{repo}/releases\"],\n listTagProtection: [\"GET /repos/{owner}/{repo}/tags/protection\"],\n listTags: [\"GET /repos/{owner}/{repo}/tags\"],\n listTeams: [\"GET /repos/{owner}/{repo}/teams\"],\n listWebhookDeliveries: [\n \"GET /repos/{owner}/{repo}/hooks/{hook_id}/deliveries\"\n ],\n listWebhooks: [\"GET /repos/{owner}/{repo}/hooks\"],\n merge: [\"POST /repos/{owner}/{repo}/merges\"],\n mergeUpstream: [\"POST /repos/{owner}/{repo}/merge-upstream\"],\n pingWebhook: [\"POST /repos/{owner}/{repo}/hooks/{hook_id}/pings\"],\n redeliverWebhookDelivery: [\n \"POST /repos/{owner}/{repo}/hooks/{hook_id}/deliveries/{delivery_id}/attempts\"\n ],\n removeAppAccessRestrictions: [\n \"DELETE /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/apps\",\n {},\n { mapToData: \"apps\" }\n ],\n removeCollaborator: [\n \"DELETE /repos/{owner}/{repo}/collaborators/{username}\"\n ],\n removeStatusCheckContexts: [\n \"DELETE /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts\",\n {},\n { mapToData: \"contexts\" }\n ],\n removeStatusCheckProtection: [\n \"DELETE /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks\"\n ],\n removeTeamAccessRestrictions: [\n \"DELETE /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams\",\n {},\n { mapToData: \"teams\" }\n ],\n removeUserAccessRestrictions: [\n \"DELETE /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users\",\n {},\n { mapToData: \"users\" }\n ],\n renameBranch: [\"POST /repos/{owner}/{repo}/branches/{branch}/rename\"],\n replaceAllTopics: [\"PUT /repos/{owner}/{repo}/topics\"],\n requestPagesBuild: [\"POST /repos/{owner}/{repo}/pages/builds\"],\n setAdminBranchProtection: [\n \"POST /repos/{owner}/{repo}/branches/{branch}/protection/enforce_admins\"\n ],\n setAppAccessRestrictions: [\n \"PUT /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/apps\",\n {},\n { mapToData: \"apps\" }\n ],\n setStatusCheckContexts: [\n \"PUT /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts\",\n {},\n { mapToData: \"contexts\" }\n ],\n setTeamAccessRestrictions: [\n \"PUT /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams\",\n {},\n { mapToData: \"teams\" }\n ],\n setUserAccessRestrictions: [\n \"PUT /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users\",\n {},\n { mapToData: \"users\" }\n ],\n testPushWebhook: [\"POST /repos/{owner}/{repo}/hooks/{hook_id}/tests\"],\n transfer: [\"POST /repos/{owner}/{repo}/transfer\"],\n update: [\"PATCH /repos/{owner}/{repo}\"],\n updateBranchProtection: [\n \"PUT /repos/{owner}/{repo}/branches/{branch}/protection\"\n ],\n updateCommitComment: [\"PATCH /repos/{owner}/{repo}/comments/{comment_id}\"],\n updateDeploymentBranchPolicy: [\n \"PUT /repos/{owner}/{repo}/environments/{environment_name}/deployment-branch-policies/{branch_policy_id}\"\n ],\n updateInformationAboutPagesSite: [\"PUT /repos/{owner}/{repo}/pages\"],\n updateInvitation: [\n \"PATCH /repos/{owner}/{repo}/invitations/{invitation_id}\"\n ],\n updateOrgRuleset: [\"PUT /orgs/{org}/rulesets/{ruleset_id}\"],\n updatePullRequestReviewProtection: [\n \"PATCH /repos/{owner}/{repo}/branches/{branch}/protection/required_pull_request_reviews\"\n ],\n updateRelease: [\"PATCH /repos/{owner}/{repo}/releases/{release_id}\"],\n updateReleaseAsset: [\n \"PATCH /repos/{owner}/{repo}/releases/assets/{asset_id}\"\n ],\n updateRepoRuleset: [\"PUT /repos/{owner}/{repo}/rulesets/{ruleset_id}\"],\n updateStatusCheckPotection: [\n \"PATCH /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks\",\n {},\n { renamed: [\"repos\", \"updateStatusCheckProtection\"] }\n ],\n updateStatusCheckProtection: [\n \"PATCH /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks\"\n ],\n updateWebhook: [\"PATCH /repos/{owner}/{repo}/hooks/{hook_id}\"],\n updateWebhookConfigForRepo: [\n \"PATCH /repos/{owner}/{repo}/hooks/{hook_id}/config\"\n ],\n uploadReleaseAsset: [\n \"POST /repos/{owner}/{repo}/releases/{release_id}/assets{?name,label}\",\n { baseUrl: \"https://uploads.github.com\" }\n ]\n },\n search: {\n code: [\"GET /search/code\"],\n commits: [\"GET /search/commits\"],\n issuesAndPullRequests: [\"GET /search/issues\"],\n labels: [\"GET /search/labels\"],\n repos: [\"GET /search/repositories\"],\n topics: [\"GET /search/topics\"],\n users: [\"GET /search/users\"]\n },\n secretScanning: {\n getAlert: [\n \"GET /repos/{owner}/{repo}/secret-scanning/alerts/{alert_number}\"\n ],\n listAlertsForEnterprise: [\n \"GET /enterprises/{enterprise}/secret-scanning/alerts\"\n ],\n listAlertsForOrg: [\"GET /orgs/{org}/secret-scanning/alerts\"],\n listAlertsForRepo: [\"GET /repos/{owner}/{repo}/secret-scanning/alerts\"],\n listLocationsForAlert: [\n \"GET /repos/{owner}/{repo}/secret-scanning/alerts/{alert_number}/locations\"\n ],\n updateAlert: [\n \"PATCH /repos/{owner}/{repo}/secret-scanning/alerts/{alert_number}\"\n ]\n },\n securityAdvisories: {\n createFork: [\n \"POST /repos/{owner}/{repo}/security-advisories/{ghsa_id}/forks\"\n ],\n createPrivateVulnerabilityReport: [\n \"POST /repos/{owner}/{repo}/security-advisories/reports\"\n ],\n createRepositoryAdvisory: [\n \"POST /repos/{owner}/{repo}/security-advisories\"\n ],\n createRepositoryAdvisoryCveRequest: [\n \"POST /repos/{owner}/{repo}/security-advisories/{ghsa_id}/cve\"\n ],\n getGlobalAdvisory: [\"GET /advisories/{ghsa_id}\"],\n getRepositoryAdvisory: [\n \"GET /repos/{owner}/{repo}/security-advisories/{ghsa_id}\"\n ],\n listGlobalAdvisories: [\"GET /advisories\"],\n listOrgRepositoryAdvisories: [\"GET /orgs/{org}/security-advisories\"],\n listRepositoryAdvisories: [\"GET /repos/{owner}/{repo}/security-advisories\"],\n updateRepositoryAdvisory: [\n \"PATCH /repos/{owner}/{repo}/security-advisories/{ghsa_id}\"\n ]\n },\n teams: {\n addOrUpdateMembershipForUserInOrg: [\n \"PUT /orgs/{org}/teams/{team_slug}/memberships/{username}\"\n ],\n addOrUpdateProjectPermissionsInOrg: [\n \"PUT /orgs/{org}/teams/{team_slug}/projects/{project_id}\"\n ],\n addOrUpdateRepoPermissionsInOrg: [\n \"PUT /orgs/{org}/teams/{team_slug}/repos/{owner}/{repo}\"\n ],\n checkPermissionsForProjectInOrg: [\n \"GET /orgs/{org}/teams/{team_slug}/projects/{project_id}\"\n ],\n checkPermissionsForRepoInOrg: [\n \"GET /orgs/{org}/teams/{team_slug}/repos/{owner}/{repo}\"\n ],\n create: [\"POST /orgs/{org}/teams\"],\n createDiscussionCommentInOrg: [\n \"POST /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments\"\n ],\n createDiscussionInOrg: [\"POST /orgs/{org}/teams/{team_slug}/discussions\"],\n deleteDiscussionCommentInOrg: [\n \"DELETE /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}\"\n ],\n deleteDiscussionInOrg: [\n \"DELETE /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}\"\n ],\n deleteInOrg: [\"DELETE /orgs/{org}/teams/{team_slug}\"],\n getByName: [\"GET /orgs/{org}/teams/{team_slug}\"],\n getDiscussionCommentInOrg: [\n \"GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}\"\n ],\n getDiscussionInOrg: [\n \"GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}\"\n ],\n getMembershipForUserInOrg: [\n \"GET /orgs/{org}/teams/{team_slug}/memberships/{username}\"\n ],\n list: [\"GET /orgs/{org}/teams\"],\n listChildInOrg: [\"GET /orgs/{org}/teams/{team_slug}/teams\"],\n listDiscussionCommentsInOrg: [\n \"GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments\"\n ],\n listDiscussionsInOrg: [\"GET /orgs/{org}/teams/{team_slug}/discussions\"],\n listForAuthenticatedUser: [\"GET /user/teams\"],\n listMembersInOrg: [\"GET /orgs/{org}/teams/{team_slug}/members\"],\n listPendingInvitationsInOrg: [\n \"GET /orgs/{org}/teams/{team_slug}/invitations\"\n ],\n listProjectsInOrg: [\"GET /orgs/{org}/teams/{team_slug}/projects\"],\n listReposInOrg: [\"GET /orgs/{org}/teams/{team_slug}/repos\"],\n removeMembershipForUserInOrg: [\n \"DELETE /orgs/{org}/teams/{team_slug}/memberships/{username}\"\n ],\n removeProjectInOrg: [\n \"DELETE /orgs/{org}/teams/{team_slug}/projects/{project_id}\"\n ],\n removeRepoInOrg: [\n \"DELETE /orgs/{org}/teams/{team_slug}/repos/{owner}/{repo}\"\n ],\n updateDiscussionCommentInOrg: [\n \"PATCH /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}\"\n ],\n updateDiscussionInOrg: [\n \"PATCH /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}\"\n ],\n updateInOrg: [\"PATCH /orgs/{org}/teams/{team_slug}\"]\n },\n users: {\n addEmailForAuthenticated: [\n \"POST /user/emails\",\n {},\n { renamed: [\"users\", \"addEmailForAuthenticatedUser\"] }\n ],\n addEmailForAuthenticatedUser: [\"POST /user/emails\"],\n addSocialAccountForAuthenticatedUser: [\"POST /user/social_accounts\"],\n block: [\"PUT /user/blocks/{username}\"],\n checkBlocked: [\"GET /user/blocks/{username}\"],\n checkFollowingForUser: [\"GET /users/{username}/following/{target_user}\"],\n checkPersonIsFollowedByAuthenticated: [\"GET /user/following/{username}\"],\n createGpgKeyForAuthenticated: [\n \"POST /user/gpg_keys\",\n {},\n { renamed: [\"users\", \"createGpgKeyForAuthenticatedUser\"] }\n ],\n createGpgKeyForAuthenticatedUser: [\"POST /user/gpg_keys\"],\n createPublicSshKeyForAuthenticated: [\n \"POST /user/keys\",\n {},\n { renamed: [\"users\", \"createPublicSshKeyForAuthenticatedUser\"] }\n ],\n createPublicSshKeyForAuthenticatedUser: [\"POST /user/keys\"],\n createSshSigningKeyForAuthenticatedUser: [\"POST /user/ssh_signing_keys\"],\n deleteEmailForAuthenticated: [\n \"DELETE /user/emails\",\n {},\n { renamed: [\"users\", \"deleteEmailForAuthenticatedUser\"] }\n ],\n deleteEmailForAuthenticatedUser: [\"DELETE /user/emails\"],\n deleteGpgKeyForAuthenticated: [\n \"DELETE /user/gpg_keys/{gpg_key_id}\",\n {},\n { renamed: [\"users\", \"deleteGpgKeyForAuthenticatedUser\"] }\n ],\n deleteGpgKeyForAuthenticatedUser: [\"DELETE /user/gpg_keys/{gpg_key_id}\"],\n deletePublicSshKeyForAuthenticated: [\n \"DELETE /user/keys/{key_id}\",\n {},\n { renamed: [\"users\", \"deletePublicSshKeyForAuthenticatedUser\"] }\n ],\n deletePublicSshKeyForAuthenticatedUser: [\"DELETE /user/keys/{key_id}\"],\n deleteSocialAccountForAuthenticatedUser: [\"DELETE /user/social_accounts\"],\n deleteSshSigningKeyForAuthenticatedUser: [\n \"DELETE /user/ssh_signing_keys/{ssh_signing_key_id}\"\n ],\n follow: [\"PUT /user/following/{username}\"],\n getAuthenticated: [\"GET /user\"],\n getByUsername: [\"GET /users/{username}\"],\n getContextForUser: [\"GET /users/{username}/hovercard\"],\n getGpgKeyForAuthenticated: [\n \"GET /user/gpg_keys/{gpg_key_id}\",\n {},\n { renamed: [\"users\", \"getGpgKeyForAuthenticatedUser\"] }\n ],\n getGpgKeyForAuthenticatedUser: [\"GET /user/gpg_keys/{gpg_key_id}\"],\n getPublicSshKeyForAuthenticated: [\n \"GET /user/keys/{key_id}\",\n {},\n { renamed: [\"users\", \"getPublicSshKeyForAuthenticatedUser\"] }\n ],\n getPublicSshKeyForAuthenticatedUser: [\"GET /user/keys/{key_id}\"],\n getSshSigningKeyForAuthenticatedUser: [\n \"GET /user/ssh_signing_keys/{ssh_signing_key_id}\"\n ],\n list: [\"GET /users\"],\n listBlockedByAuthenticated: [\n \"GET /user/blocks\",\n {},\n { renamed: [\"users\", \"listBlockedByAuthenticatedUser\"] }\n ],\n listBlockedByAuthenticatedUser: [\"GET /user/blocks\"],\n listEmailsForAuthenticated: [\n \"GET /user/emails\",\n {},\n { renamed: [\"users\", \"listEmailsForAuthenticatedUser\"] }\n ],\n listEmailsForAuthenticatedUser: [\"GET /user/emails\"],\n listFollowedByAuthenticated: [\n \"GET /user/following\",\n {},\n { renamed: [\"users\", \"listFollowedByAuthenticatedUser\"] }\n ],\n listFollowedByAuthenticatedUser: [\"GET /user/following\"],\n listFollowersForAuthenticatedUser: [\"GET /user/followers\"],\n listFollowersForUser: [\"GET /users/{username}/followers\"],\n listFollowingForUser: [\"GET /users/{username}/following\"],\n listGpgKeysForAuthenticated: [\n \"GET /user/gpg_keys\",\n {},\n { renamed: [\"users\", \"listGpgKeysForAuthenticatedUser\"] }\n ],\n listGpgKeysForAuthenticatedUser: [\"GET /user/gpg_keys\"],\n listGpgKeysForUser: [\"GET /users/{username}/gpg_keys\"],\n listPublicEmailsForAuthenticated: [\n \"GET /user/public_emails\",\n {},\n { renamed: [\"users\", \"listPublicEmailsForAuthenticatedUser\"] }\n ],\n listPublicEmailsForAuthenticatedUser: [\"GET /user/public_emails\"],\n listPublicKeysForUser: [\"GET /users/{username}/keys\"],\n listPublicSshKeysForAuthenticated: [\n \"GET /user/keys\",\n {},\n { renamed: [\"users\", \"listPublicSshKeysForAuthenticatedUser\"] }\n ],\n listPublicSshKeysForAuthenticatedUser: [\"GET /user/keys\"],\n listSocialAccountsForAuthenticatedUser: [\"GET /user/social_accounts\"],\n listSocialAccountsForUser: [\"GET /users/{username}/social_accounts\"],\n listSshSigningKeysForAuthenticatedUser: [\"GET /user/ssh_signing_keys\"],\n listSshSigningKeysForUser: [\"GET /users/{username}/ssh_signing_keys\"],\n setPrimaryEmailVisibilityForAuthenticated: [\n \"PATCH /user/email/visibility\",\n {},\n { renamed: [\"users\", \"setPrimaryEmailVisibilityForAuthenticatedUser\"] }\n ],\n setPrimaryEmailVisibilityForAuthenticatedUser: [\n \"PATCH /user/email/visibility\"\n ],\n unblock: [\"DELETE /user/blocks/{username}\"],\n unfollow: [\"DELETE /user/following/{username}\"],\n updateAuthenticated: [\"PATCH /user\"]\n }\n};\nvar endpoints_default = Endpoints;\n\n// pkg/dist-src/endpoints-to-methods.js\nvar endpointMethodsMap = /* @__PURE__ */ new Map();\nfor (const [scope, endpoints] of Object.entries(endpoints_default)) {\n for (const [methodName, endpoint] of Object.entries(endpoints)) {\n const [route, defaults, decorations] = endpoint;\n const [method, url] = route.split(/ /);\n const endpointDefaults = Object.assign(\n {\n method,\n url\n },\n defaults\n );\n if (!endpointMethodsMap.has(scope)) {\n endpointMethodsMap.set(scope, /* @__PURE__ */ new Map());\n }\n endpointMethodsMap.get(scope).set(methodName, {\n scope,\n methodName,\n endpointDefaults,\n decorations\n });\n }\n}\nvar handler = {\n has({ scope }, methodName) {\n return endpointMethodsMap.get(scope).has(methodName);\n },\n getOwnPropertyDescriptor(target, methodName) {\n return {\n value: this.get(target, methodName),\n // ensures method is in the cache\n configurable: true,\n writable: true,\n enumerable: true\n };\n },\n defineProperty(target, methodName, descriptor) {\n Object.defineProperty(target.cache, methodName, descriptor);\n return true;\n },\n deleteProperty(target, methodName) {\n delete target.cache[methodName];\n return true;\n },\n ownKeys({ scope }) {\n return [...endpointMethodsMap.get(scope).keys()];\n },\n set(target, methodName, value) {\n return target.cache[methodName] = value;\n },\n get({ octokit, scope, cache }, methodName) {\n if (cache[methodName]) {\n return cache[methodName];\n }\n const method = endpointMethodsMap.get(scope).get(methodName);\n if (!method) {\n return void 0;\n }\n const { endpointDefaults, decorations } = method;\n if (decorations) {\n cache[methodName] = decorate(\n octokit,\n scope,\n methodName,\n endpointDefaults,\n decorations\n );\n } else {\n cache[methodName] = octokit.request.defaults(endpointDefaults);\n }\n return cache[methodName];\n }\n};\nfunction endpointsToMethods(octokit) {\n const newMethods = {};\n for (const scope of endpointMethodsMap.keys()) {\n newMethods[scope] = new Proxy({ octokit, scope, cache: {} }, handler);\n }\n return newMethods;\n}\nfunction decorate(octokit, scope, methodName, defaults, decorations) {\n const requestWithDefaults = octokit.request.defaults(defaults);\n function withDecorations(...args) {\n let options = requestWithDefaults.endpoint.merge(...args);\n if (decorations.mapToData) {\n options = Object.assign({}, options, {\n data: options[decorations.mapToData],\n [decorations.mapToData]: void 0\n });\n return requestWithDefaults(options);\n }\n if (decorations.renamed) {\n const [newScope, newMethodName] = decorations.renamed;\n octokit.log.warn(\n `octokit.${scope}.${methodName}() has been renamed to octokit.${newScope}.${newMethodName}()`\n );\n }\n if (decorations.deprecated) {\n octokit.log.warn(decorations.deprecated);\n }\n if (decorations.renamedParameters) {\n const options2 = requestWithDefaults.endpoint.merge(...args);\n for (const [name, alias] of Object.entries(\n decorations.renamedParameters\n )) {\n if (name in options2) {\n octokit.log.warn(\n `\"${name}\" parameter is deprecated for \"octokit.${scope}.${methodName}()\". Use \"${alias}\" instead`\n );\n if (!(alias in options2)) {\n options2[alias] = options2[name];\n }\n delete options2[name];\n }\n }\n return requestWithDefaults(options2);\n }\n return requestWithDefaults(...args);\n }\n return Object.assign(withDecorations, requestWithDefaults);\n}\n\n// pkg/dist-src/index.js\nfunction restEndpointMethods(octokit) {\n const api = endpointsToMethods(octokit);\n return {\n rest: api\n };\n}\nrestEndpointMethods.VERSION = VERSION;\nfunction legacyRestEndpointMethods(octokit) {\n const api = endpointsToMethods(octokit);\n return {\n ...api,\n rest: api\n };\n}\nlegacyRestEndpointMethods.VERSION = VERSION;\n// Annotate the CommonJS export names for ESM import in node:\n0 && (module.exports = {\n legacyRestEndpointMethods,\n restEndpointMethods\n});\n","\"use strict\";\nvar __create = Object.create;\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __getProtoOf = Object.getPrototypeOf;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(\n // If the importer is in node compatibility mode or this is not an ESM\n // file that has been converted to a CommonJS file using a Babel-\n // compatible transform (i.e. \"__esModule\" has not been set), then set\n // \"default\" to the CommonJS \"module.exports\" for node compatibility.\n isNodeMode || !mod || !mod.__esModule ? __defProp(target, \"default\", { value: mod, enumerable: true }) : target,\n mod\n));\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// pkg/dist-src/index.js\nvar dist_src_exports = {};\n__export(dist_src_exports, {\n RequestError: () => RequestError\n});\nmodule.exports = __toCommonJS(dist_src_exports);\nvar import_deprecation = require(\"deprecation\");\nvar import_once = __toESM(require(\"once\"));\nvar logOnceCode = (0, import_once.default)((deprecation) => console.warn(deprecation));\nvar logOnceHeaders = (0, import_once.default)((deprecation) => console.warn(deprecation));\nvar RequestError = class extends Error {\n constructor(message, statusCode, options) {\n super(message);\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, this.constructor);\n }\n this.name = \"HttpError\";\n this.status = statusCode;\n let headers;\n if (\"headers\" in options && typeof options.headers !== \"undefined\") {\n headers = options.headers;\n }\n if (\"response\" in options) {\n this.response = options.response;\n headers = options.response.headers;\n }\n const requestCopy = Object.assign({}, options.request);\n if (options.request.headers.authorization) {\n requestCopy.headers = Object.assign({}, options.request.headers, {\n authorization: options.request.headers.authorization.replace(\n / .*$/,\n \" [REDACTED]\"\n )\n });\n }\n requestCopy.url = requestCopy.url.replace(/\\bclient_secret=\\w+/g, \"client_secret=[REDACTED]\").replace(/\\baccess_token=\\w+/g, \"access_token=[REDACTED]\");\n this.request = requestCopy;\n Object.defineProperty(this, \"code\", {\n get() {\n logOnceCode(\n new import_deprecation.Deprecation(\n \"[@octokit/request-error] `error.code` is deprecated, use `error.status`.\"\n )\n );\n return statusCode;\n }\n });\n Object.defineProperty(this, \"headers\", {\n get() {\n logOnceHeaders(\n new import_deprecation.Deprecation(\n \"[@octokit/request-error] `error.headers` is deprecated, use `error.response.headers`.\"\n )\n );\n return headers || {};\n }\n });\n }\n};\n// Annotate the CommonJS export names for ESM import in node:\n0 && (module.exports = {\n RequestError\n});\n","\"use strict\";\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// pkg/dist-src/index.js\nvar dist_src_exports = {};\n__export(dist_src_exports, {\n request: () => request\n});\nmodule.exports = __toCommonJS(dist_src_exports);\nvar import_endpoint = require(\"@octokit/endpoint\");\nvar import_universal_user_agent = require(\"universal-user-agent\");\n\n// pkg/dist-src/version.js\nvar VERSION = \"8.4.0\";\n\n// pkg/dist-src/is-plain-object.js\nfunction isPlainObject(value) {\n if (typeof value !== \"object\" || value === null)\n return false;\n if (Object.prototype.toString.call(value) !== \"[object Object]\")\n return false;\n const proto = Object.getPrototypeOf(value);\n if (proto === null)\n return true;\n const Ctor = Object.prototype.hasOwnProperty.call(proto, \"constructor\") && proto.constructor;\n return typeof Ctor === \"function\" && Ctor instanceof Ctor && Function.prototype.call(Ctor) === Function.prototype.call(value);\n}\n\n// pkg/dist-src/fetch-wrapper.js\nvar import_request_error = require(\"@octokit/request-error\");\n\n// pkg/dist-src/get-buffer-response.js\nfunction getBufferResponse(response) {\n return response.arrayBuffer();\n}\n\n// pkg/dist-src/fetch-wrapper.js\nfunction fetchWrapper(requestOptions) {\n var _a, _b, _c, _d;\n const log = requestOptions.request && requestOptions.request.log ? requestOptions.request.log : console;\n const parseSuccessResponseBody = ((_a = requestOptions.request) == null ? void 0 : _a.parseSuccessResponseBody) !== false;\n if (isPlainObject(requestOptions.body) || Array.isArray(requestOptions.body)) {\n requestOptions.body = JSON.stringify(requestOptions.body);\n }\n let headers = {};\n let status;\n let url;\n let { fetch } = globalThis;\n if ((_b = requestOptions.request) == null ? void 0 : _b.fetch) {\n fetch = requestOptions.request.fetch;\n }\n if (!fetch) {\n throw new Error(\n \"fetch is not set. Please pass a fetch implementation as new Octokit({ request: { fetch }}). Learn more at https://github.com/octokit/octokit.js/#fetch-missing\"\n );\n }\n return fetch(requestOptions.url, {\n method: requestOptions.method,\n body: requestOptions.body,\n redirect: (_c = requestOptions.request) == null ? void 0 : _c.redirect,\n headers: requestOptions.headers,\n signal: (_d = requestOptions.request) == null ? void 0 : _d.signal,\n // duplex must be set if request.body is ReadableStream or Async Iterables.\n // See https://fetch.spec.whatwg.org/#dom-requestinit-duplex.\n ...requestOptions.body && { duplex: \"half\" }\n }).then(async (response) => {\n url = response.url;\n status = response.status;\n for (const keyAndValue of response.headers) {\n headers[keyAndValue[0]] = keyAndValue[1];\n }\n if (\"deprecation\" in headers) {\n const matches = headers.link && headers.link.match(/<([^>]+)>; rel=\"deprecation\"/);\n const deprecationLink = matches && matches.pop();\n log.warn(\n `[@octokit/request] \"${requestOptions.method} ${requestOptions.url}\" is deprecated. It is scheduled to be removed on ${headers.sunset}${deprecationLink ? `. See ${deprecationLink}` : \"\"}`\n );\n }\n if (status === 204 || status === 205) {\n return;\n }\n if (requestOptions.method === \"HEAD\") {\n if (status < 400) {\n return;\n }\n throw new import_request_error.RequestError(response.statusText, status, {\n response: {\n url,\n status,\n headers,\n data: void 0\n },\n request: requestOptions\n });\n }\n if (status === 304) {\n throw new import_request_error.RequestError(\"Not modified\", status, {\n response: {\n url,\n status,\n headers,\n data: await getResponseData(response)\n },\n request: requestOptions\n });\n }\n if (status >= 400) {\n const data = await getResponseData(response);\n const error = new import_request_error.RequestError(toErrorMessage(data), status, {\n response: {\n url,\n status,\n headers,\n data\n },\n request: requestOptions\n });\n throw error;\n }\n return parseSuccessResponseBody ? await getResponseData(response) : response.body;\n }).then((data) => {\n return {\n status,\n url,\n headers,\n data\n };\n }).catch((error) => {\n if (error instanceof import_request_error.RequestError)\n throw error;\n else if (error.name === \"AbortError\")\n throw error;\n let message = error.message;\n if (error.name === \"TypeError\" && \"cause\" in error) {\n if (error.cause instanceof Error) {\n message = error.cause.message;\n } else if (typeof error.cause === \"string\") {\n message = error.cause;\n }\n }\n throw new import_request_error.RequestError(message, 500, {\n request: requestOptions\n });\n });\n}\nasync function getResponseData(response) {\n const contentType = response.headers.get(\"content-type\");\n if (/application\\/json/.test(contentType)) {\n return response.json().catch(() => response.text()).catch(() => \"\");\n }\n if (!contentType || /^text\\/|charset=utf-8$/.test(contentType)) {\n return response.text();\n }\n return getBufferResponse(response);\n}\nfunction toErrorMessage(data) {\n if (typeof data === \"string\")\n return data;\n let suffix;\n if (\"documentation_url\" in data) {\n suffix = ` - ${data.documentation_url}`;\n } else {\n suffix = \"\";\n }\n if (\"message\" in data) {\n if (Array.isArray(data.errors)) {\n return `${data.message}: ${data.errors.map(JSON.stringify).join(\", \")}${suffix}`;\n }\n return `${data.message}${suffix}`;\n }\n return `Unknown error: ${JSON.stringify(data)}`;\n}\n\n// pkg/dist-src/with-defaults.js\nfunction withDefaults(oldEndpoint, newDefaults) {\n const endpoint2 = oldEndpoint.defaults(newDefaults);\n const newApi = function(route, parameters) {\n const endpointOptions = endpoint2.merge(route, parameters);\n if (!endpointOptions.request || !endpointOptions.request.hook) {\n return fetchWrapper(endpoint2.parse(endpointOptions));\n }\n const request2 = (route2, parameters2) => {\n return fetchWrapper(\n endpoint2.parse(endpoint2.merge(route2, parameters2))\n );\n };\n Object.assign(request2, {\n endpoint: endpoint2,\n defaults: withDefaults.bind(null, endpoint2)\n });\n return endpointOptions.request.hook(request2, endpointOptions);\n };\n return Object.assign(newApi, {\n endpoint: endpoint2,\n defaults: withDefaults.bind(null, endpoint2)\n });\n}\n\n// pkg/dist-src/index.js\nvar request = withDefaults(import_endpoint.endpoint, {\n headers: {\n \"user-agent\": `octokit-request.js/${VERSION} ${(0, import_universal_user_agent.getUserAgent)()}`\n }\n});\n// Annotate the CommonJS export names for ESM import in node:\n0 && (module.exports = {\n request\n});\n","var __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/index.ts\nvar src_exports = {};\n__export(src_exports, {\n CONFIG_USE_DUALSTACK_ENDPOINT: () => CONFIG_USE_DUALSTACK_ENDPOINT,\n CONFIG_USE_FIPS_ENDPOINT: () => CONFIG_USE_FIPS_ENDPOINT,\n DEFAULT_USE_DUALSTACK_ENDPOINT: () => DEFAULT_USE_DUALSTACK_ENDPOINT,\n DEFAULT_USE_FIPS_ENDPOINT: () => DEFAULT_USE_FIPS_ENDPOINT,\n ENV_USE_DUALSTACK_ENDPOINT: () => ENV_USE_DUALSTACK_ENDPOINT,\n ENV_USE_FIPS_ENDPOINT: () => ENV_USE_FIPS_ENDPOINT,\n NODE_REGION_CONFIG_FILE_OPTIONS: () => NODE_REGION_CONFIG_FILE_OPTIONS,\n NODE_REGION_CONFIG_OPTIONS: () => NODE_REGION_CONFIG_OPTIONS,\n NODE_USE_DUALSTACK_ENDPOINT_CONFIG_OPTIONS: () => NODE_USE_DUALSTACK_ENDPOINT_CONFIG_OPTIONS,\n NODE_USE_FIPS_ENDPOINT_CONFIG_OPTIONS: () => NODE_USE_FIPS_ENDPOINT_CONFIG_OPTIONS,\n REGION_ENV_NAME: () => REGION_ENV_NAME,\n REGION_INI_NAME: () => REGION_INI_NAME,\n getRegionInfo: () => getRegionInfo,\n resolveCustomEndpointsConfig: () => resolveCustomEndpointsConfig,\n resolveEndpointsConfig: () => resolveEndpointsConfig,\n resolveRegionConfig: () => resolveRegionConfig\n});\nmodule.exports = __toCommonJS(src_exports);\n\n// src/endpointsConfig/NodeUseDualstackEndpointConfigOptions.ts\nvar import_util_config_provider = require(\"@smithy/util-config-provider\");\nvar ENV_USE_DUALSTACK_ENDPOINT = \"AWS_USE_DUALSTACK_ENDPOINT\";\nvar CONFIG_USE_DUALSTACK_ENDPOINT = \"use_dualstack_endpoint\";\nvar DEFAULT_USE_DUALSTACK_ENDPOINT = false;\nvar NODE_USE_DUALSTACK_ENDPOINT_CONFIG_OPTIONS = {\n environmentVariableSelector: (env) => (0, import_util_config_provider.booleanSelector)(env, ENV_USE_DUALSTACK_ENDPOINT, import_util_config_provider.SelectorType.ENV),\n configFileSelector: (profile) => (0, import_util_config_provider.booleanSelector)(profile, CONFIG_USE_DUALSTACK_ENDPOINT, import_util_config_provider.SelectorType.CONFIG),\n default: false\n};\n\n// src/endpointsConfig/NodeUseFipsEndpointConfigOptions.ts\n\nvar ENV_USE_FIPS_ENDPOINT = \"AWS_USE_FIPS_ENDPOINT\";\nvar CONFIG_USE_FIPS_ENDPOINT = \"use_fips_endpoint\";\nvar DEFAULT_USE_FIPS_ENDPOINT = false;\nvar NODE_USE_FIPS_ENDPOINT_CONFIG_OPTIONS = {\n environmentVariableSelector: (env) => (0, import_util_config_provider.booleanSelector)(env, ENV_USE_FIPS_ENDPOINT, import_util_config_provider.SelectorType.ENV),\n configFileSelector: (profile) => (0, import_util_config_provider.booleanSelector)(profile, CONFIG_USE_FIPS_ENDPOINT, import_util_config_provider.SelectorType.CONFIG),\n default: false\n};\n\n// src/endpointsConfig/resolveCustomEndpointsConfig.ts\nvar import_util_middleware = require(\"@smithy/util-middleware\");\nvar resolveCustomEndpointsConfig = /* @__PURE__ */ __name((input) => {\n const { endpoint, urlParser } = input;\n return {\n ...input,\n tls: input.tls ?? true,\n endpoint: (0, import_util_middleware.normalizeProvider)(typeof endpoint === \"string\" ? urlParser(endpoint) : endpoint),\n isCustomEndpoint: true,\n useDualstackEndpoint: (0, import_util_middleware.normalizeProvider)(input.useDualstackEndpoint ?? false)\n };\n}, \"resolveCustomEndpointsConfig\");\n\n// src/endpointsConfig/resolveEndpointsConfig.ts\n\n\n// src/endpointsConfig/utils/getEndpointFromRegion.ts\nvar getEndpointFromRegion = /* @__PURE__ */ __name(async (input) => {\n const { tls = true } = input;\n const region = await input.region();\n const dnsHostRegex = new RegExp(/^([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9-]{0,61}[a-zA-Z0-9])$/);\n if (!dnsHostRegex.test(region)) {\n throw new Error(\"Invalid region in client config\");\n }\n const useDualstackEndpoint = await input.useDualstackEndpoint();\n const useFipsEndpoint = await input.useFipsEndpoint();\n const { hostname } = await input.regionInfoProvider(region, { useDualstackEndpoint, useFipsEndpoint }) ?? {};\n if (!hostname) {\n throw new Error(\"Cannot resolve hostname from client config\");\n }\n return input.urlParser(`${tls ? \"https:\" : \"http:\"}//${hostname}`);\n}, \"getEndpointFromRegion\");\n\n// src/endpointsConfig/resolveEndpointsConfig.ts\nvar resolveEndpointsConfig = /* @__PURE__ */ __name((input) => {\n const useDualstackEndpoint = (0, import_util_middleware.normalizeProvider)(input.useDualstackEndpoint ?? false);\n const { endpoint, useFipsEndpoint, urlParser } = input;\n return {\n ...input,\n tls: input.tls ?? true,\n endpoint: endpoint ? (0, import_util_middleware.normalizeProvider)(typeof endpoint === \"string\" ? urlParser(endpoint) : endpoint) : () => getEndpointFromRegion({ ...input, useDualstackEndpoint, useFipsEndpoint }),\n isCustomEndpoint: !!endpoint,\n useDualstackEndpoint\n };\n}, \"resolveEndpointsConfig\");\n\n// src/regionConfig/config.ts\nvar REGION_ENV_NAME = \"AWS_REGION\";\nvar REGION_INI_NAME = \"region\";\nvar NODE_REGION_CONFIG_OPTIONS = {\n environmentVariableSelector: (env) => env[REGION_ENV_NAME],\n configFileSelector: (profile) => profile[REGION_INI_NAME],\n default: () => {\n throw new Error(\"Region is missing\");\n }\n};\nvar NODE_REGION_CONFIG_FILE_OPTIONS = {\n preferredFile: \"credentials\"\n};\n\n// src/regionConfig/isFipsRegion.ts\nvar isFipsRegion = /* @__PURE__ */ __name((region) => typeof region === \"string\" && (region.startsWith(\"fips-\") || region.endsWith(\"-fips\")), \"isFipsRegion\");\n\n// src/regionConfig/getRealRegion.ts\nvar getRealRegion = /* @__PURE__ */ __name((region) => isFipsRegion(region) ? [\"fips-aws-global\", \"aws-fips\"].includes(region) ? \"us-east-1\" : region.replace(/fips-(dkr-|prod-)?|-fips/, \"\") : region, \"getRealRegion\");\n\n// src/regionConfig/resolveRegionConfig.ts\nvar resolveRegionConfig = /* @__PURE__ */ __name((input) => {\n const { region, useFipsEndpoint } = input;\n if (!region) {\n throw new Error(\"Region is missing\");\n }\n return {\n ...input,\n region: async () => {\n if (typeof region === \"string\") {\n return getRealRegion(region);\n }\n const providedRegion = await region();\n return getRealRegion(providedRegion);\n },\n useFipsEndpoint: async () => {\n const providedRegion = typeof region === \"string\" ? region : await region();\n if (isFipsRegion(providedRegion)) {\n return true;\n }\n return typeof useFipsEndpoint !== \"function\" ? Promise.resolve(!!useFipsEndpoint) : useFipsEndpoint();\n }\n };\n}, \"resolveRegionConfig\");\n\n// src/regionInfo/getHostnameFromVariants.ts\nvar getHostnameFromVariants = /* @__PURE__ */ __name((variants = [], { useFipsEndpoint, useDualstackEndpoint }) => {\n var _a;\n return (_a = variants.find(\n ({ tags }) => useFipsEndpoint === tags.includes(\"fips\") && useDualstackEndpoint === tags.includes(\"dualstack\")\n )) == null ? void 0 : _a.hostname;\n}, \"getHostnameFromVariants\");\n\n// src/regionInfo/getResolvedHostname.ts\nvar getResolvedHostname = /* @__PURE__ */ __name((resolvedRegion, { regionHostname, partitionHostname }) => regionHostname ? regionHostname : partitionHostname ? partitionHostname.replace(\"{region}\", resolvedRegion) : void 0, \"getResolvedHostname\");\n\n// src/regionInfo/getResolvedPartition.ts\nvar getResolvedPartition = /* @__PURE__ */ __name((region, { partitionHash }) => Object.keys(partitionHash || {}).find((key) => partitionHash[key].regions.includes(region)) ?? \"aws\", \"getResolvedPartition\");\n\n// src/regionInfo/getResolvedSigningRegion.ts\nvar getResolvedSigningRegion = /* @__PURE__ */ __name((hostname, { signingRegion, regionRegex, useFipsEndpoint }) => {\n if (signingRegion) {\n return signingRegion;\n } else if (useFipsEndpoint) {\n const regionRegexJs = regionRegex.replace(\"\\\\\\\\\", \"\\\\\").replace(/^\\^/g, \"\\\\.\").replace(/\\$$/g, \"\\\\.\");\n const regionRegexmatchArray = hostname.match(regionRegexJs);\n if (regionRegexmatchArray) {\n return regionRegexmatchArray[0].slice(1, -1);\n }\n }\n}, \"getResolvedSigningRegion\");\n\n// src/regionInfo/getRegionInfo.ts\nvar getRegionInfo = /* @__PURE__ */ __name((region, {\n useFipsEndpoint = false,\n useDualstackEndpoint = false,\n signingService,\n regionHash,\n partitionHash\n}) => {\n var _a, _b, _c, _d, _e;\n const partition = getResolvedPartition(region, { partitionHash });\n const resolvedRegion = region in regionHash ? region : ((_a = partitionHash[partition]) == null ? void 0 : _a.endpoint) ?? region;\n const hostnameOptions = { useFipsEndpoint, useDualstackEndpoint };\n const regionHostname = getHostnameFromVariants((_b = regionHash[resolvedRegion]) == null ? void 0 : _b.variants, hostnameOptions);\n const partitionHostname = getHostnameFromVariants((_c = partitionHash[partition]) == null ? void 0 : _c.variants, hostnameOptions);\n const hostname = getResolvedHostname(resolvedRegion, { regionHostname, partitionHostname });\n if (hostname === void 0) {\n throw new Error(`Endpoint resolution failed for: ${{ resolvedRegion, useFipsEndpoint, useDualstackEndpoint }}`);\n }\n const signingRegion = getResolvedSigningRegion(hostname, {\n signingRegion: (_d = regionHash[resolvedRegion]) == null ? void 0 : _d.signingRegion,\n regionRegex: partitionHash[partition].regionRegex,\n useFipsEndpoint\n });\n return {\n partition,\n signingService,\n hostname,\n ...signingRegion && { signingRegion },\n ...((_e = regionHash[resolvedRegion]) == null ? void 0 : _e.signingService) && {\n signingService: regionHash[resolvedRegion].signingService\n }\n };\n}, \"getRegionInfo\");\n// Annotate the CommonJS export names for ESM import in node:\n\n0 && (module.exports = {\n ENV_USE_DUALSTACK_ENDPOINT,\n CONFIG_USE_DUALSTACK_ENDPOINT,\n DEFAULT_USE_DUALSTACK_ENDPOINT,\n NODE_USE_DUALSTACK_ENDPOINT_CONFIG_OPTIONS,\n ENV_USE_FIPS_ENDPOINT,\n CONFIG_USE_FIPS_ENDPOINT,\n DEFAULT_USE_FIPS_ENDPOINT,\n NODE_USE_FIPS_ENDPOINT_CONFIG_OPTIONS,\n resolveCustomEndpointsConfig,\n resolveEndpointsConfig,\n REGION_ENV_NAME,\n REGION_INI_NAME,\n NODE_REGION_CONFIG_OPTIONS,\n NODE_REGION_CONFIG_FILE_OPTIONS,\n resolveRegionConfig,\n getRegionInfo\n});\n\n","var __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/index.ts\nvar src_exports = {};\n__export(src_exports, {\n DefaultIdentityProviderConfig: () => DefaultIdentityProviderConfig,\n EXPIRATION_MS: () => EXPIRATION_MS,\n HttpApiKeyAuthSigner: () => HttpApiKeyAuthSigner,\n HttpBearerAuthSigner: () => HttpBearerAuthSigner,\n NoAuthSigner: () => NoAuthSigner,\n RequestBuilder: () => RequestBuilder,\n createIsIdentityExpiredFunction: () => createIsIdentityExpiredFunction,\n createPaginator: () => createPaginator,\n doesIdentityRequireRefresh: () => doesIdentityRequireRefresh,\n getHttpAuthSchemeEndpointRuleSetPlugin: () => getHttpAuthSchemeEndpointRuleSetPlugin,\n getHttpAuthSchemePlugin: () => getHttpAuthSchemePlugin,\n getHttpSigningPlugin: () => getHttpSigningPlugin,\n getSmithyContext: () => getSmithyContext3,\n httpAuthSchemeEndpointRuleSetMiddlewareOptions: () => httpAuthSchemeEndpointRuleSetMiddlewareOptions,\n httpAuthSchemeMiddleware: () => httpAuthSchemeMiddleware,\n httpAuthSchemeMiddlewareOptions: () => httpAuthSchemeMiddlewareOptions,\n httpSigningMiddleware: () => httpSigningMiddleware,\n httpSigningMiddlewareOptions: () => httpSigningMiddlewareOptions,\n isIdentityExpired: () => isIdentityExpired,\n memoizeIdentityProvider: () => memoizeIdentityProvider,\n normalizeProvider: () => normalizeProvider,\n requestBuilder: () => requestBuilder\n});\nmodule.exports = __toCommonJS(src_exports);\n\n// src/middleware-http-auth-scheme/httpAuthSchemeMiddleware.ts\nvar import_util_middleware = require(\"@smithy/util-middleware\");\nfunction convertHttpAuthSchemesToMap(httpAuthSchemes) {\n const map = /* @__PURE__ */ new Map();\n for (const scheme of httpAuthSchemes) {\n map.set(scheme.schemeId, scheme);\n }\n return map;\n}\n__name(convertHttpAuthSchemesToMap, \"convertHttpAuthSchemesToMap\");\nvar httpAuthSchemeMiddleware = /* @__PURE__ */ __name((config, mwOptions) => (next, context) => async (args) => {\n var _a;\n const options = config.httpAuthSchemeProvider(\n await mwOptions.httpAuthSchemeParametersProvider(config, context, args.input)\n );\n const authSchemes = convertHttpAuthSchemesToMap(config.httpAuthSchemes);\n const smithyContext = (0, import_util_middleware.getSmithyContext)(context);\n const failureReasons = [];\n for (const option of options) {\n const scheme = authSchemes.get(option.schemeId);\n if (!scheme) {\n failureReasons.push(`HttpAuthScheme \\`${option.schemeId}\\` was not enabled for this service.`);\n continue;\n }\n const identityProvider = scheme.identityProvider(await mwOptions.identityProviderConfigProvider(config));\n if (!identityProvider) {\n failureReasons.push(`HttpAuthScheme \\`${option.schemeId}\\` did not have an IdentityProvider configured.`);\n continue;\n }\n const { identityProperties = {}, signingProperties = {} } = ((_a = option.propertiesExtractor) == null ? void 0 : _a.call(option, config, context)) || {};\n option.identityProperties = Object.assign(option.identityProperties || {}, identityProperties);\n option.signingProperties = Object.assign(option.signingProperties || {}, signingProperties);\n smithyContext.selectedHttpAuthScheme = {\n httpAuthOption: option,\n identity: await identityProvider(option.identityProperties),\n signer: scheme.signer\n };\n break;\n }\n if (!smithyContext.selectedHttpAuthScheme) {\n throw new Error(failureReasons.join(\"\\n\"));\n }\n return next(args);\n}, \"httpAuthSchemeMiddleware\");\n\n// src/middleware-http-auth-scheme/getHttpAuthSchemeEndpointRuleSetPlugin.ts\nvar import_middleware_endpoint = require(\"@smithy/middleware-endpoint\");\nvar httpAuthSchemeEndpointRuleSetMiddlewareOptions = {\n step: \"serialize\",\n tags: [\"HTTP_AUTH_SCHEME\"],\n name: \"httpAuthSchemeMiddleware\",\n override: true,\n relation: \"before\",\n toMiddleware: import_middleware_endpoint.endpointMiddlewareOptions.name\n};\nvar getHttpAuthSchemeEndpointRuleSetPlugin = /* @__PURE__ */ __name((config, {\n httpAuthSchemeParametersProvider,\n identityProviderConfigProvider\n}) => ({\n applyToStack: (clientStack) => {\n clientStack.addRelativeTo(\n httpAuthSchemeMiddleware(config, {\n httpAuthSchemeParametersProvider,\n identityProviderConfigProvider\n }),\n httpAuthSchemeEndpointRuleSetMiddlewareOptions\n );\n }\n}), \"getHttpAuthSchemeEndpointRuleSetPlugin\");\n\n// src/middleware-http-auth-scheme/getHttpAuthSchemePlugin.ts\nvar import_middleware_serde = require(\"@smithy/middleware-serde\");\nvar httpAuthSchemeMiddlewareOptions = {\n step: \"serialize\",\n tags: [\"HTTP_AUTH_SCHEME\"],\n name: \"httpAuthSchemeMiddleware\",\n override: true,\n relation: \"before\",\n toMiddleware: import_middleware_serde.serializerMiddlewareOption.name\n};\nvar getHttpAuthSchemePlugin = /* @__PURE__ */ __name((config, {\n httpAuthSchemeParametersProvider,\n identityProviderConfigProvider\n}) => ({\n applyToStack: (clientStack) => {\n clientStack.addRelativeTo(\n httpAuthSchemeMiddleware(config, {\n httpAuthSchemeParametersProvider,\n identityProviderConfigProvider\n }),\n httpAuthSchemeMiddlewareOptions\n );\n }\n}), \"getHttpAuthSchemePlugin\");\n\n// src/middleware-http-signing/httpSigningMiddleware.ts\nvar import_protocol_http = require(\"@smithy/protocol-http\");\n\nvar defaultErrorHandler = /* @__PURE__ */ __name((signingProperties) => (error) => {\n throw error;\n}, \"defaultErrorHandler\");\nvar defaultSuccessHandler = /* @__PURE__ */ __name((httpResponse, signingProperties) => {\n}, \"defaultSuccessHandler\");\nvar httpSigningMiddleware = /* @__PURE__ */ __name((config) => (next, context) => async (args) => {\n if (!import_protocol_http.HttpRequest.isInstance(args.request)) {\n return next(args);\n }\n const smithyContext = (0, import_util_middleware.getSmithyContext)(context);\n const scheme = smithyContext.selectedHttpAuthScheme;\n if (!scheme) {\n throw new Error(`No HttpAuthScheme was selected: unable to sign request`);\n }\n const {\n httpAuthOption: { signingProperties = {} },\n identity,\n signer\n } = scheme;\n const output = await next({\n ...args,\n request: await signer.sign(args.request, identity, signingProperties)\n }).catch((signer.errorHandler || defaultErrorHandler)(signingProperties));\n (signer.successHandler || defaultSuccessHandler)(output.response, signingProperties);\n return output;\n}, \"httpSigningMiddleware\");\n\n// src/middleware-http-signing/getHttpSigningMiddleware.ts\nvar import_middleware_retry = require(\"@smithy/middleware-retry\");\nvar httpSigningMiddlewareOptions = {\n step: \"finalizeRequest\",\n tags: [\"HTTP_SIGNING\"],\n name: \"httpSigningMiddleware\",\n aliases: [\"apiKeyMiddleware\", \"tokenMiddleware\", \"awsAuthMiddleware\"],\n override: true,\n relation: \"after\",\n toMiddleware: import_middleware_retry.retryMiddlewareOptions.name\n};\nvar getHttpSigningPlugin = /* @__PURE__ */ __name((config) => ({\n applyToStack: (clientStack) => {\n clientStack.addRelativeTo(httpSigningMiddleware(config), httpSigningMiddlewareOptions);\n }\n}), \"getHttpSigningPlugin\");\n\n// src/util-identity-and-auth/DefaultIdentityProviderConfig.ts\nvar _DefaultIdentityProviderConfig = class _DefaultIdentityProviderConfig {\n /**\n * Creates an IdentityProviderConfig with a record of scheme IDs to identity providers.\n *\n * @param config scheme IDs and identity providers to configure\n */\n constructor(config) {\n this.authSchemes = /* @__PURE__ */ new Map();\n for (const [key, value] of Object.entries(config)) {\n if (value !== void 0) {\n this.authSchemes.set(key, value);\n }\n }\n }\n getIdentityProvider(schemeId) {\n return this.authSchemes.get(schemeId);\n }\n};\n__name(_DefaultIdentityProviderConfig, \"DefaultIdentityProviderConfig\");\nvar DefaultIdentityProviderConfig = _DefaultIdentityProviderConfig;\n\n// src/util-identity-and-auth/httpAuthSchemes/httpApiKeyAuth.ts\n\nvar import_types = require(\"@smithy/types\");\nvar _HttpApiKeyAuthSigner = class _HttpApiKeyAuthSigner {\n async sign(httpRequest, identity, signingProperties) {\n if (!signingProperties) {\n throw new Error(\n \"request could not be signed with `apiKey` since the `name` and `in` signer properties are missing\"\n );\n }\n if (!signingProperties.name) {\n throw new Error(\"request could not be signed with `apiKey` since the `name` signer property is missing\");\n }\n if (!signingProperties.in) {\n throw new Error(\"request could not be signed with `apiKey` since the `in` signer property is missing\");\n }\n if (!identity.apiKey) {\n throw new Error(\"request could not be signed with `apiKey` since the `apiKey` is not defined\");\n }\n const clonedRequest = import_protocol_http.HttpRequest.clone(httpRequest);\n if (signingProperties.in === import_types.HttpApiKeyAuthLocation.QUERY) {\n clonedRequest.query[signingProperties.name] = identity.apiKey;\n } else if (signingProperties.in === import_types.HttpApiKeyAuthLocation.HEADER) {\n clonedRequest.headers[signingProperties.name] = signingProperties.scheme ? `${signingProperties.scheme} ${identity.apiKey}` : identity.apiKey;\n } else {\n throw new Error(\n \"request can only be signed with `apiKey` locations `query` or `header`, but found: `\" + signingProperties.in + \"`\"\n );\n }\n return clonedRequest;\n }\n};\n__name(_HttpApiKeyAuthSigner, \"HttpApiKeyAuthSigner\");\nvar HttpApiKeyAuthSigner = _HttpApiKeyAuthSigner;\n\n// src/util-identity-and-auth/httpAuthSchemes/httpBearerAuth.ts\n\nvar _HttpBearerAuthSigner = class _HttpBearerAuthSigner {\n async sign(httpRequest, identity, signingProperties) {\n const clonedRequest = import_protocol_http.HttpRequest.clone(httpRequest);\n if (!identity.token) {\n throw new Error(\"request could not be signed with `token` since the `token` is not defined\");\n }\n clonedRequest.headers[\"Authorization\"] = `Bearer ${identity.token}`;\n return clonedRequest;\n }\n};\n__name(_HttpBearerAuthSigner, \"HttpBearerAuthSigner\");\nvar HttpBearerAuthSigner = _HttpBearerAuthSigner;\n\n// src/util-identity-and-auth/httpAuthSchemes/noAuth.ts\nvar _NoAuthSigner = class _NoAuthSigner {\n async sign(httpRequest, identity, signingProperties) {\n return httpRequest;\n }\n};\n__name(_NoAuthSigner, \"NoAuthSigner\");\nvar NoAuthSigner = _NoAuthSigner;\n\n// src/util-identity-and-auth/memoizeIdentityProvider.ts\nvar createIsIdentityExpiredFunction = /* @__PURE__ */ __name((expirationMs) => (identity) => doesIdentityRequireRefresh(identity) && identity.expiration.getTime() - Date.now() < expirationMs, \"createIsIdentityExpiredFunction\");\nvar EXPIRATION_MS = 3e5;\nvar isIdentityExpired = createIsIdentityExpiredFunction(EXPIRATION_MS);\nvar doesIdentityRequireRefresh = /* @__PURE__ */ __name((identity) => identity.expiration !== void 0, \"doesIdentityRequireRefresh\");\nvar memoizeIdentityProvider = /* @__PURE__ */ __name((provider, isExpired, requiresRefresh) => {\n if (provider === void 0) {\n return void 0;\n }\n const normalizedProvider = typeof provider !== \"function\" ? async () => Promise.resolve(provider) : provider;\n let resolved;\n let pending;\n let hasResult;\n let isConstant = false;\n const coalesceProvider = /* @__PURE__ */ __name(async (options) => {\n if (!pending) {\n pending = normalizedProvider(options);\n }\n try {\n resolved = await pending;\n hasResult = true;\n isConstant = false;\n } finally {\n pending = void 0;\n }\n return resolved;\n }, \"coalesceProvider\");\n if (isExpired === void 0) {\n return async (options) => {\n if (!hasResult || (options == null ? void 0 : options.forceRefresh)) {\n resolved = await coalesceProvider(options);\n }\n return resolved;\n };\n }\n return async (options) => {\n if (!hasResult || (options == null ? void 0 : options.forceRefresh)) {\n resolved = await coalesceProvider(options);\n }\n if (isConstant) {\n return resolved;\n }\n if (!requiresRefresh(resolved)) {\n isConstant = true;\n return resolved;\n }\n if (isExpired(resolved)) {\n await coalesceProvider(options);\n return resolved;\n }\n return resolved;\n };\n}, \"memoizeIdentityProvider\");\n\n// src/getSmithyContext.ts\n\nvar getSmithyContext3 = /* @__PURE__ */ __name((context) => context[import_types.SMITHY_CONTEXT_KEY] || (context[import_types.SMITHY_CONTEXT_KEY] = {}), \"getSmithyContext\");\n\n// src/normalizeProvider.ts\nvar normalizeProvider = /* @__PURE__ */ __name((input) => {\n if (typeof input === \"function\")\n return input;\n const promisified = Promise.resolve(input);\n return () => promisified;\n}, \"normalizeProvider\");\n\n// src/protocols/requestBuilder.ts\n\nvar import_smithy_client = require(\"@smithy/smithy-client\");\nfunction requestBuilder(input, context) {\n return new RequestBuilder(input, context);\n}\n__name(requestBuilder, \"requestBuilder\");\nvar _RequestBuilder = class _RequestBuilder {\n constructor(input, context) {\n this.input = input;\n this.context = context;\n this.query = {};\n this.method = \"\";\n this.headers = {};\n this.path = \"\";\n this.body = null;\n this.hostname = \"\";\n this.resolvePathStack = [];\n }\n async build() {\n const { hostname, protocol = \"https\", port, path: basePath } = await this.context.endpoint();\n this.path = basePath;\n for (const resolvePath of this.resolvePathStack) {\n resolvePath(this.path);\n }\n return new import_protocol_http.HttpRequest({\n protocol,\n hostname: this.hostname || hostname,\n port,\n method: this.method,\n path: this.path,\n query: this.query,\n body: this.body,\n headers: this.headers\n });\n }\n /**\n * Brevity setter for \"hostname\".\n */\n hn(hostname) {\n this.hostname = hostname;\n return this;\n }\n /**\n * Brevity initial builder for \"basepath\".\n */\n bp(uriLabel) {\n this.resolvePathStack.push((basePath) => {\n this.path = `${(basePath == null ? void 0 : basePath.endsWith(\"/\")) ? basePath.slice(0, -1) : basePath || \"\"}` + uriLabel;\n });\n return this;\n }\n /**\n * Brevity incremental builder for \"path\".\n */\n p(memberName, labelValueProvider, uriLabel, isGreedyLabel) {\n this.resolvePathStack.push((path) => {\n this.path = (0, import_smithy_client.resolvedPath)(path, this.input, memberName, labelValueProvider, uriLabel, isGreedyLabel);\n });\n return this;\n }\n /**\n * Brevity setter for \"headers\".\n */\n h(headers) {\n this.headers = headers;\n return this;\n }\n /**\n * Brevity setter for \"query\".\n */\n q(query) {\n this.query = query;\n return this;\n }\n /**\n * Brevity setter for \"body\".\n */\n b(body) {\n this.body = body;\n return this;\n }\n /**\n * Brevity setter for \"method\".\n */\n m(method) {\n this.method = method;\n return this;\n }\n};\n__name(_RequestBuilder, \"RequestBuilder\");\nvar RequestBuilder = _RequestBuilder;\n\n// src/pagination/createPaginator.ts\nvar makePagedClientRequest = /* @__PURE__ */ __name(async (CommandCtor, client, input, ...args) => {\n return await client.send(new CommandCtor(input), ...args);\n}, \"makePagedClientRequest\");\nfunction createPaginator(ClientCtor, CommandCtor, inputTokenName, outputTokenName, pageSizeTokenName) {\n return /* @__PURE__ */ __name(async function* paginateOperation(config, input, ...additionalArguments) {\n let token = config.startingToken || void 0;\n let hasNext = true;\n let page;\n while (hasNext) {\n input[inputTokenName] = token;\n if (pageSizeTokenName) {\n input[pageSizeTokenName] = input[pageSizeTokenName] ?? config.pageSize;\n }\n if (config.client instanceof ClientCtor) {\n page = await makePagedClientRequest(CommandCtor, config.client, input, ...additionalArguments);\n } else {\n throw new Error(`Invalid client, expected instance of ${ClientCtor.name}`);\n }\n yield page;\n const prevToken = token;\n token = get(page, outputTokenName);\n hasNext = !!(token && (!config.stopOnSameToken || token !== prevToken));\n }\n return void 0;\n }, \"paginateOperation\");\n}\n__name(createPaginator, \"createPaginator\");\nvar get = /* @__PURE__ */ __name((fromObject, path) => {\n let cursor = fromObject;\n const pathComponents = path.split(\".\");\n for (const step of pathComponents) {\n if (!cursor || typeof cursor !== \"object\") {\n return void 0;\n }\n cursor = cursor[step];\n }\n return cursor;\n}, \"get\");\n// Annotate the CommonJS export names for ESM import in node:\n\n0 && (module.exports = {\n createPaginator,\n httpAuthSchemeMiddleware,\n httpAuthSchemeEndpointRuleSetMiddlewareOptions,\n getHttpAuthSchemeEndpointRuleSetPlugin,\n httpAuthSchemeMiddlewareOptions,\n getHttpAuthSchemePlugin,\n httpSigningMiddleware,\n httpSigningMiddlewareOptions,\n getHttpSigningPlugin,\n DefaultIdentityProviderConfig,\n HttpApiKeyAuthSigner,\n HttpBearerAuthSigner,\n NoAuthSigner,\n createIsIdentityExpiredFunction,\n EXPIRATION_MS,\n isIdentityExpired,\n doesIdentityRequireRefresh,\n memoizeIdentityProvider,\n getSmithyContext,\n normalizeProvider,\n requestBuilder,\n RequestBuilder\n});\n\n","var __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/index.ts\nvar src_exports = {};\n__export(src_exports, {\n AlgorithmId: () => AlgorithmId,\n EndpointURLScheme: () => EndpointURLScheme,\n FieldPosition: () => FieldPosition,\n HttpApiKeyAuthLocation: () => HttpApiKeyAuthLocation,\n HttpAuthLocation: () => HttpAuthLocation,\n IniSectionType: () => IniSectionType,\n RequestHandlerProtocol: () => RequestHandlerProtocol,\n SMITHY_CONTEXT_KEY: () => SMITHY_CONTEXT_KEY,\n getDefaultClientConfiguration: () => getDefaultClientConfiguration,\n resolveDefaultRuntimeConfig: () => resolveDefaultRuntimeConfig\n});\nmodule.exports = __toCommonJS(src_exports);\n\n// src/auth/auth.ts\nvar HttpAuthLocation = /* @__PURE__ */ ((HttpAuthLocation2) => {\n HttpAuthLocation2[\"HEADER\"] = \"header\";\n HttpAuthLocation2[\"QUERY\"] = \"query\";\n return HttpAuthLocation2;\n})(HttpAuthLocation || {});\n\n// src/auth/HttpApiKeyAuth.ts\nvar HttpApiKeyAuthLocation = /* @__PURE__ */ ((HttpApiKeyAuthLocation2) => {\n HttpApiKeyAuthLocation2[\"HEADER\"] = \"header\";\n HttpApiKeyAuthLocation2[\"QUERY\"] = \"query\";\n return HttpApiKeyAuthLocation2;\n})(HttpApiKeyAuthLocation || {});\n\n// src/endpoint.ts\nvar EndpointURLScheme = /* @__PURE__ */ ((EndpointURLScheme2) => {\n EndpointURLScheme2[\"HTTP\"] = \"http\";\n EndpointURLScheme2[\"HTTPS\"] = \"https\";\n return EndpointURLScheme2;\n})(EndpointURLScheme || {});\n\n// src/extensions/checksum.ts\nvar AlgorithmId = /* @__PURE__ */ ((AlgorithmId2) => {\n AlgorithmId2[\"MD5\"] = \"md5\";\n AlgorithmId2[\"CRC32\"] = \"crc32\";\n AlgorithmId2[\"CRC32C\"] = \"crc32c\";\n AlgorithmId2[\"SHA1\"] = \"sha1\";\n AlgorithmId2[\"SHA256\"] = \"sha256\";\n return AlgorithmId2;\n})(AlgorithmId || {});\nvar getChecksumConfiguration = /* @__PURE__ */ __name((runtimeConfig) => {\n const checksumAlgorithms = [];\n if (runtimeConfig.sha256 !== void 0) {\n checksumAlgorithms.push({\n algorithmId: () => \"sha256\" /* SHA256 */,\n checksumConstructor: () => runtimeConfig.sha256\n });\n }\n if (runtimeConfig.md5 != void 0) {\n checksumAlgorithms.push({\n algorithmId: () => \"md5\" /* MD5 */,\n checksumConstructor: () => runtimeConfig.md5\n });\n }\n return {\n _checksumAlgorithms: checksumAlgorithms,\n addChecksumAlgorithm(algo) {\n this._checksumAlgorithms.push(algo);\n },\n checksumAlgorithms() {\n return this._checksumAlgorithms;\n }\n };\n}, \"getChecksumConfiguration\");\nvar resolveChecksumRuntimeConfig = /* @__PURE__ */ __name((clientConfig) => {\n const runtimeConfig = {};\n clientConfig.checksumAlgorithms().forEach((checksumAlgorithm) => {\n runtimeConfig[checksumAlgorithm.algorithmId()] = checksumAlgorithm.checksumConstructor();\n });\n return runtimeConfig;\n}, \"resolveChecksumRuntimeConfig\");\n\n// src/extensions/defaultClientConfiguration.ts\nvar getDefaultClientConfiguration = /* @__PURE__ */ __name((runtimeConfig) => {\n return {\n ...getChecksumConfiguration(runtimeConfig)\n };\n}, \"getDefaultClientConfiguration\");\nvar resolveDefaultRuntimeConfig = /* @__PURE__ */ __name((config) => {\n return {\n ...resolveChecksumRuntimeConfig(config)\n };\n}, \"resolveDefaultRuntimeConfig\");\n\n// src/http.ts\nvar FieldPosition = /* @__PURE__ */ ((FieldPosition2) => {\n FieldPosition2[FieldPosition2[\"HEADER\"] = 0] = \"HEADER\";\n FieldPosition2[FieldPosition2[\"TRAILER\"] = 1] = \"TRAILER\";\n return FieldPosition2;\n})(FieldPosition || {});\n\n// src/middleware.ts\nvar SMITHY_CONTEXT_KEY = \"__smithy_context\";\n\n// src/profile.ts\nvar IniSectionType = /* @__PURE__ */ ((IniSectionType2) => {\n IniSectionType2[\"PROFILE\"] = \"profile\";\n IniSectionType2[\"SSO_SESSION\"] = \"sso-session\";\n IniSectionType2[\"SERVICES\"] = \"services\";\n return IniSectionType2;\n})(IniSectionType || {});\n\n// src/transfer.ts\nvar RequestHandlerProtocol = /* @__PURE__ */ ((RequestHandlerProtocol2) => {\n RequestHandlerProtocol2[\"HTTP_0_9\"] = \"http/0.9\";\n RequestHandlerProtocol2[\"HTTP_1_0\"] = \"http/1.0\";\n RequestHandlerProtocol2[\"TDS_8_0\"] = \"tds/8.0\";\n return RequestHandlerProtocol2;\n})(RequestHandlerProtocol || {});\n// Annotate the CommonJS export names for ESM import in node:\n\n0 && (module.exports = {\n HttpAuthLocation,\n HttpApiKeyAuthLocation,\n EndpointURLScheme,\n AlgorithmId,\n getDefaultClientConfiguration,\n resolveDefaultRuntimeConfig,\n FieldPosition,\n SMITHY_CONTEXT_KEY,\n IniSectionType,\n RequestHandlerProtocol\n});\n\n","var __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/index.ts\nvar src_exports = {};\n__export(src_exports, {\n DEFAULT_MAX_RETRIES: () => DEFAULT_MAX_RETRIES,\n DEFAULT_TIMEOUT: () => DEFAULT_TIMEOUT,\n ENV_CMDS_AUTH_TOKEN: () => ENV_CMDS_AUTH_TOKEN,\n ENV_CMDS_FULL_URI: () => ENV_CMDS_FULL_URI,\n ENV_CMDS_RELATIVE_URI: () => ENV_CMDS_RELATIVE_URI,\n Endpoint: () => Endpoint,\n fromContainerMetadata: () => fromContainerMetadata,\n fromInstanceMetadata: () => fromInstanceMetadata,\n getInstanceMetadataEndpoint: () => getInstanceMetadataEndpoint,\n httpRequest: () => httpRequest,\n providerConfigFromInit: () => providerConfigFromInit\n});\nmodule.exports = __toCommonJS(src_exports);\n\n// src/fromContainerMetadata.ts\n\nvar import_url = require(\"url\");\n\n// src/remoteProvider/httpRequest.ts\nvar import_property_provider = require(\"@smithy/property-provider\");\nvar import_buffer = require(\"buffer\");\nvar import_http = require(\"http\");\nfunction httpRequest(options) {\n return new Promise((resolve, reject) => {\n var _a;\n const req = (0, import_http.request)({\n method: \"GET\",\n ...options,\n // Node.js http module doesn't accept hostname with square brackets\n // Refs: https://github.com/nodejs/node/issues/39738\n hostname: (_a = options.hostname) == null ? void 0 : _a.replace(/^\\[(.+)\\]$/, \"$1\")\n });\n req.on(\"error\", (err) => {\n reject(Object.assign(new import_property_provider.ProviderError(\"Unable to connect to instance metadata service\"), err));\n req.destroy();\n });\n req.on(\"timeout\", () => {\n reject(new import_property_provider.ProviderError(\"TimeoutError from instance metadata service\"));\n req.destroy();\n });\n req.on(\"response\", (res) => {\n const { statusCode = 400 } = res;\n if (statusCode < 200 || 300 <= statusCode) {\n reject(\n Object.assign(new import_property_provider.ProviderError(\"Error response received from instance metadata service\"), { statusCode })\n );\n req.destroy();\n }\n const chunks = [];\n res.on(\"data\", (chunk) => {\n chunks.push(chunk);\n });\n res.on(\"end\", () => {\n resolve(import_buffer.Buffer.concat(chunks));\n req.destroy();\n });\n });\n req.end();\n });\n}\n__name(httpRequest, \"httpRequest\");\n\n// src/remoteProvider/ImdsCredentials.ts\nvar isImdsCredentials = /* @__PURE__ */ __name((arg) => Boolean(arg) && typeof arg === \"object\" && typeof arg.AccessKeyId === \"string\" && typeof arg.SecretAccessKey === \"string\" && typeof arg.Token === \"string\" && typeof arg.Expiration === \"string\", \"isImdsCredentials\");\nvar fromImdsCredentials = /* @__PURE__ */ __name((creds) => ({\n accessKeyId: creds.AccessKeyId,\n secretAccessKey: creds.SecretAccessKey,\n sessionToken: creds.Token,\n expiration: new Date(creds.Expiration),\n ...creds.AccountId && { accountId: creds.AccountId }\n}), \"fromImdsCredentials\");\n\n// src/remoteProvider/RemoteProviderInit.ts\nvar DEFAULT_TIMEOUT = 1e3;\nvar DEFAULT_MAX_RETRIES = 0;\nvar providerConfigFromInit = /* @__PURE__ */ __name(({\n maxRetries = DEFAULT_MAX_RETRIES,\n timeout = DEFAULT_TIMEOUT\n}) => ({ maxRetries, timeout }), \"providerConfigFromInit\");\n\n// src/remoteProvider/retry.ts\nvar retry = /* @__PURE__ */ __name((toRetry, maxRetries) => {\n let promise = toRetry();\n for (let i = 0; i < maxRetries; i++) {\n promise = promise.catch(toRetry);\n }\n return promise;\n}, \"retry\");\n\n// src/fromContainerMetadata.ts\nvar ENV_CMDS_FULL_URI = \"AWS_CONTAINER_CREDENTIALS_FULL_URI\";\nvar ENV_CMDS_RELATIVE_URI = \"AWS_CONTAINER_CREDENTIALS_RELATIVE_URI\";\nvar ENV_CMDS_AUTH_TOKEN = \"AWS_CONTAINER_AUTHORIZATION_TOKEN\";\nvar fromContainerMetadata = /* @__PURE__ */ __name((init = {}) => {\n const { timeout, maxRetries } = providerConfigFromInit(init);\n return () => retry(async () => {\n const requestOptions = await getCmdsUri({ logger: init.logger });\n const credsResponse = JSON.parse(await requestFromEcsImds(timeout, requestOptions));\n if (!isImdsCredentials(credsResponse)) {\n throw new import_property_provider.CredentialsProviderError(\"Invalid response received from instance metadata service.\", {\n logger: init.logger\n });\n }\n return fromImdsCredentials(credsResponse);\n }, maxRetries);\n}, \"fromContainerMetadata\");\nvar requestFromEcsImds = /* @__PURE__ */ __name(async (timeout, options) => {\n if (process.env[ENV_CMDS_AUTH_TOKEN]) {\n options.headers = {\n ...options.headers,\n Authorization: process.env[ENV_CMDS_AUTH_TOKEN]\n };\n }\n const buffer = await httpRequest({\n ...options,\n timeout\n });\n return buffer.toString();\n}, \"requestFromEcsImds\");\nvar CMDS_IP = \"169.254.170.2\";\nvar GREENGRASS_HOSTS = {\n localhost: true,\n \"127.0.0.1\": true\n};\nvar GREENGRASS_PROTOCOLS = {\n \"http:\": true,\n \"https:\": true\n};\nvar getCmdsUri = /* @__PURE__ */ __name(async ({ logger }) => {\n if (process.env[ENV_CMDS_RELATIVE_URI]) {\n return {\n hostname: CMDS_IP,\n path: process.env[ENV_CMDS_RELATIVE_URI]\n };\n }\n if (process.env[ENV_CMDS_FULL_URI]) {\n const parsed = (0, import_url.parse)(process.env[ENV_CMDS_FULL_URI]);\n if (!parsed.hostname || !(parsed.hostname in GREENGRASS_HOSTS)) {\n throw new import_property_provider.CredentialsProviderError(`${parsed.hostname} is not a valid container metadata service hostname`, {\n tryNextLink: false,\n logger\n });\n }\n if (!parsed.protocol || !(parsed.protocol in GREENGRASS_PROTOCOLS)) {\n throw new import_property_provider.CredentialsProviderError(`${parsed.protocol} is not a valid container metadata service protocol`, {\n tryNextLink: false,\n logger\n });\n }\n return {\n ...parsed,\n port: parsed.port ? parseInt(parsed.port, 10) : void 0\n };\n }\n throw new import_property_provider.CredentialsProviderError(\n `The container metadata credential provider cannot be used unless the ${ENV_CMDS_RELATIVE_URI} or ${ENV_CMDS_FULL_URI} environment variable is set`,\n {\n tryNextLink: false,\n logger\n }\n );\n}, \"getCmdsUri\");\n\n// src/fromInstanceMetadata.ts\n\n\n\n// src/error/InstanceMetadataV1FallbackError.ts\n\nvar _InstanceMetadataV1FallbackError = class _InstanceMetadataV1FallbackError extends import_property_provider.CredentialsProviderError {\n constructor(message, tryNextLink = true) {\n super(message, tryNextLink);\n this.tryNextLink = tryNextLink;\n this.name = \"InstanceMetadataV1FallbackError\";\n Object.setPrototypeOf(this, _InstanceMetadataV1FallbackError.prototype);\n }\n};\n__name(_InstanceMetadataV1FallbackError, \"InstanceMetadataV1FallbackError\");\nvar InstanceMetadataV1FallbackError = _InstanceMetadataV1FallbackError;\n\n// src/utils/getInstanceMetadataEndpoint.ts\nvar import_node_config_provider = require(\"@smithy/node-config-provider\");\nvar import_url_parser = require(\"@smithy/url-parser\");\n\n// src/config/Endpoint.ts\nvar Endpoint = /* @__PURE__ */ ((Endpoint2) => {\n Endpoint2[\"IPv4\"] = \"http://169.254.169.254\";\n Endpoint2[\"IPv6\"] = \"http://[fd00:ec2::254]\";\n return Endpoint2;\n})(Endpoint || {});\n\n// src/config/EndpointConfigOptions.ts\nvar ENV_ENDPOINT_NAME = \"AWS_EC2_METADATA_SERVICE_ENDPOINT\";\nvar CONFIG_ENDPOINT_NAME = \"ec2_metadata_service_endpoint\";\nvar ENDPOINT_CONFIG_OPTIONS = {\n environmentVariableSelector: (env) => env[ENV_ENDPOINT_NAME],\n configFileSelector: (profile) => profile[CONFIG_ENDPOINT_NAME],\n default: void 0\n};\n\n// src/config/EndpointMode.ts\nvar EndpointMode = /* @__PURE__ */ ((EndpointMode2) => {\n EndpointMode2[\"IPv4\"] = \"IPv4\";\n EndpointMode2[\"IPv6\"] = \"IPv6\";\n return EndpointMode2;\n})(EndpointMode || {});\n\n// src/config/EndpointModeConfigOptions.ts\nvar ENV_ENDPOINT_MODE_NAME = \"AWS_EC2_METADATA_SERVICE_ENDPOINT_MODE\";\nvar CONFIG_ENDPOINT_MODE_NAME = \"ec2_metadata_service_endpoint_mode\";\nvar ENDPOINT_MODE_CONFIG_OPTIONS = {\n environmentVariableSelector: (env) => env[ENV_ENDPOINT_MODE_NAME],\n configFileSelector: (profile) => profile[CONFIG_ENDPOINT_MODE_NAME],\n default: \"IPv4\" /* IPv4 */\n};\n\n// src/utils/getInstanceMetadataEndpoint.ts\nvar getInstanceMetadataEndpoint = /* @__PURE__ */ __name(async () => (0, import_url_parser.parseUrl)(await getFromEndpointConfig() || await getFromEndpointModeConfig()), \"getInstanceMetadataEndpoint\");\nvar getFromEndpointConfig = /* @__PURE__ */ __name(async () => (0, import_node_config_provider.loadConfig)(ENDPOINT_CONFIG_OPTIONS)(), \"getFromEndpointConfig\");\nvar getFromEndpointModeConfig = /* @__PURE__ */ __name(async () => {\n const endpointMode = await (0, import_node_config_provider.loadConfig)(ENDPOINT_MODE_CONFIG_OPTIONS)();\n switch (endpointMode) {\n case \"IPv4\" /* IPv4 */:\n return \"http://169.254.169.254\" /* IPv4 */;\n case \"IPv6\" /* IPv6 */:\n return \"http://[fd00:ec2::254]\" /* IPv6 */;\n default:\n throw new Error(`Unsupported endpoint mode: ${endpointMode}. Select from ${Object.values(EndpointMode)}`);\n }\n}, \"getFromEndpointModeConfig\");\n\n// src/utils/getExtendedInstanceMetadataCredentials.ts\nvar STATIC_STABILITY_REFRESH_INTERVAL_SECONDS = 5 * 60;\nvar STATIC_STABILITY_REFRESH_INTERVAL_JITTER_WINDOW_SECONDS = 5 * 60;\nvar STATIC_STABILITY_DOC_URL = \"https://docs.aws.amazon.com/sdkref/latest/guide/feature-static-credentials.html\";\nvar getExtendedInstanceMetadataCredentials = /* @__PURE__ */ __name((credentials, logger) => {\n const refreshInterval = STATIC_STABILITY_REFRESH_INTERVAL_SECONDS + Math.floor(Math.random() * STATIC_STABILITY_REFRESH_INTERVAL_JITTER_WINDOW_SECONDS);\n const newExpiration = new Date(Date.now() + refreshInterval * 1e3);\n logger.warn(\n `Attempting credential expiration extension due to a credential service availability issue. A refresh of these credentials will be attempted after ${new Date(newExpiration)}.\nFor more information, please visit: ` + STATIC_STABILITY_DOC_URL\n );\n const originalExpiration = credentials.originalExpiration ?? credentials.expiration;\n return {\n ...credentials,\n ...originalExpiration ? { originalExpiration } : {},\n expiration: newExpiration\n };\n}, \"getExtendedInstanceMetadataCredentials\");\n\n// src/utils/staticStabilityProvider.ts\nvar staticStabilityProvider = /* @__PURE__ */ __name((provider, options = {}) => {\n const logger = (options == null ? void 0 : options.logger) || console;\n let pastCredentials;\n return async () => {\n let credentials;\n try {\n credentials = await provider();\n if (credentials.expiration && credentials.expiration.getTime() < Date.now()) {\n credentials = getExtendedInstanceMetadataCredentials(credentials, logger);\n }\n } catch (e) {\n if (pastCredentials) {\n logger.warn(\"Credential renew failed: \", e);\n credentials = getExtendedInstanceMetadataCredentials(pastCredentials, logger);\n } else {\n throw e;\n }\n }\n pastCredentials = credentials;\n return credentials;\n };\n}, \"staticStabilityProvider\");\n\n// src/fromInstanceMetadata.ts\nvar IMDS_PATH = \"/latest/meta-data/iam/security-credentials/\";\nvar IMDS_TOKEN_PATH = \"/latest/api/token\";\nvar AWS_EC2_METADATA_V1_DISABLED = \"AWS_EC2_METADATA_V1_DISABLED\";\nvar PROFILE_AWS_EC2_METADATA_V1_DISABLED = \"ec2_metadata_v1_disabled\";\nvar X_AWS_EC2_METADATA_TOKEN = \"x-aws-ec2-metadata-token\";\nvar fromInstanceMetadata = /* @__PURE__ */ __name((init = {}) => staticStabilityProvider(getInstanceMetadataProvider(init), { logger: init.logger }), \"fromInstanceMetadata\");\nvar getInstanceMetadataProvider = /* @__PURE__ */ __name((init = {}) => {\n let disableFetchToken = false;\n const { logger, profile } = init;\n const { timeout, maxRetries } = providerConfigFromInit(init);\n const getCredentials = /* @__PURE__ */ __name(async (maxRetries2, options) => {\n var _a;\n const isImdsV1Fallback = disableFetchToken || ((_a = options.headers) == null ? void 0 : _a[X_AWS_EC2_METADATA_TOKEN]) == null;\n if (isImdsV1Fallback) {\n let fallbackBlockedFromProfile = false;\n let fallbackBlockedFromProcessEnv = false;\n const configValue = await (0, import_node_config_provider.loadConfig)(\n {\n environmentVariableSelector: (env) => {\n const envValue = env[AWS_EC2_METADATA_V1_DISABLED];\n fallbackBlockedFromProcessEnv = !!envValue && envValue !== \"false\";\n if (envValue === void 0) {\n throw new import_property_provider.CredentialsProviderError(\n `${AWS_EC2_METADATA_V1_DISABLED} not set in env, checking config file next.`,\n { logger: init.logger }\n );\n }\n return fallbackBlockedFromProcessEnv;\n },\n configFileSelector: (profile2) => {\n const profileValue = profile2[PROFILE_AWS_EC2_METADATA_V1_DISABLED];\n fallbackBlockedFromProfile = !!profileValue && profileValue !== \"false\";\n return fallbackBlockedFromProfile;\n },\n default: false\n },\n {\n profile\n }\n )();\n if (init.ec2MetadataV1Disabled || configValue) {\n const causes = [];\n if (init.ec2MetadataV1Disabled)\n causes.push(\"credential provider initialization (runtime option ec2MetadataV1Disabled)\");\n if (fallbackBlockedFromProfile)\n causes.push(`config file profile (${PROFILE_AWS_EC2_METADATA_V1_DISABLED})`);\n if (fallbackBlockedFromProcessEnv)\n causes.push(`process environment variable (${AWS_EC2_METADATA_V1_DISABLED})`);\n throw new InstanceMetadataV1FallbackError(\n `AWS EC2 Metadata v1 fallback has been blocked by AWS SDK configuration in the following: [${causes.join(\n \", \"\n )}].`\n );\n }\n }\n const imdsProfile = (await retry(async () => {\n let profile2;\n try {\n profile2 = await getProfile(options);\n } catch (err) {\n if (err.statusCode === 401) {\n disableFetchToken = false;\n }\n throw err;\n }\n return profile2;\n }, maxRetries2)).trim();\n return retry(async () => {\n let creds;\n try {\n creds = await getCredentialsFromProfile(imdsProfile, options, init);\n } catch (err) {\n if (err.statusCode === 401) {\n disableFetchToken = false;\n }\n throw err;\n }\n return creds;\n }, maxRetries2);\n }, \"getCredentials\");\n return async () => {\n const endpoint = await getInstanceMetadataEndpoint();\n if (disableFetchToken) {\n logger == null ? void 0 : logger.debug(\"AWS SDK Instance Metadata\", \"using v1 fallback (no token fetch)\");\n return getCredentials(maxRetries, { ...endpoint, timeout });\n } else {\n let token;\n try {\n token = (await getMetadataToken({ ...endpoint, timeout })).toString();\n } catch (error) {\n if ((error == null ? void 0 : error.statusCode) === 400) {\n throw Object.assign(error, {\n message: \"EC2 Metadata token request returned error\"\n });\n } else if (error.message === \"TimeoutError\" || [403, 404, 405].includes(error.statusCode)) {\n disableFetchToken = true;\n }\n logger == null ? void 0 : logger.debug(\"AWS SDK Instance Metadata\", \"using v1 fallback (initial)\");\n return getCredentials(maxRetries, { ...endpoint, timeout });\n }\n return getCredentials(maxRetries, {\n ...endpoint,\n headers: {\n [X_AWS_EC2_METADATA_TOKEN]: token\n },\n timeout\n });\n }\n };\n}, \"getInstanceMetadataProvider\");\nvar getMetadataToken = /* @__PURE__ */ __name(async (options) => httpRequest({\n ...options,\n path: IMDS_TOKEN_PATH,\n method: \"PUT\",\n headers: {\n \"x-aws-ec2-metadata-token-ttl-seconds\": \"21600\"\n }\n}), \"getMetadataToken\");\nvar getProfile = /* @__PURE__ */ __name(async (options) => (await httpRequest({ ...options, path: IMDS_PATH })).toString(), \"getProfile\");\nvar getCredentialsFromProfile = /* @__PURE__ */ __name(async (profile, options, init) => {\n const credentialsResponse = JSON.parse(\n (await httpRequest({\n ...options,\n path: IMDS_PATH + profile\n })).toString()\n );\n if (!isImdsCredentials(credentialsResponse)) {\n throw new import_property_provider.CredentialsProviderError(\"Invalid response received from instance metadata service.\", {\n logger: init.logger\n });\n }\n return fromImdsCredentials(credentialsResponse);\n}, \"getCredentialsFromProfile\");\n// Annotate the CommonJS export names for ESM import in node:\n\n0 && (module.exports = {\n httpRequest,\n getInstanceMetadataEndpoint,\n Endpoint,\n ENV_CMDS_FULL_URI,\n ENV_CMDS_RELATIVE_URI,\n ENV_CMDS_AUTH_TOKEN,\n fromContainerMetadata,\n fromInstanceMetadata,\n DEFAULT_TIMEOUT,\n DEFAULT_MAX_RETRIES,\n providerConfigFromInit\n});\n\n","var __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/index.ts\nvar src_exports = {};\n__export(src_exports, {\n FetchHttpHandler: () => FetchHttpHandler,\n keepAliveSupport: () => keepAliveSupport,\n streamCollector: () => streamCollector\n});\nmodule.exports = __toCommonJS(src_exports);\n\n// src/fetch-http-handler.ts\nvar import_protocol_http = require(\"@smithy/protocol-http\");\nvar import_querystring_builder = require(\"@smithy/querystring-builder\");\n\n// src/request-timeout.ts\nfunction requestTimeout(timeoutInMs = 0) {\n return new Promise((resolve, reject) => {\n if (timeoutInMs) {\n setTimeout(() => {\n const timeoutError = new Error(`Request did not complete within ${timeoutInMs} ms`);\n timeoutError.name = \"TimeoutError\";\n reject(timeoutError);\n }, timeoutInMs);\n }\n });\n}\n__name(requestTimeout, \"requestTimeout\");\n\n// src/fetch-http-handler.ts\nvar keepAliveSupport = {\n supported: void 0\n};\nvar _FetchHttpHandler = class _FetchHttpHandler {\n /**\n * @returns the input if it is an HttpHandler of any class,\n * or instantiates a new instance of this handler.\n */\n static create(instanceOrOptions) {\n if (typeof (instanceOrOptions == null ? void 0 : instanceOrOptions.handle) === \"function\") {\n return instanceOrOptions;\n }\n return new _FetchHttpHandler(instanceOrOptions);\n }\n constructor(options) {\n if (typeof options === \"function\") {\n this.configProvider = options().then((opts) => opts || {});\n } else {\n this.config = options ?? {};\n this.configProvider = Promise.resolve(this.config);\n }\n if (keepAliveSupport.supported === void 0) {\n keepAliveSupport.supported = Boolean(\n typeof Request !== \"undefined\" && \"keepalive\" in new Request(\"https://[::1]\")\n );\n }\n }\n destroy() {\n }\n async handle(request, { abortSignal } = {}) {\n var _a;\n if (!this.config) {\n this.config = await this.configProvider;\n }\n const requestTimeoutInMs = this.config.requestTimeout;\n const keepAlive = this.config.keepAlive === true;\n const credentials = this.config.credentials;\n if (abortSignal == null ? void 0 : abortSignal.aborted) {\n const abortError = new Error(\"Request aborted\");\n abortError.name = \"AbortError\";\n return Promise.reject(abortError);\n }\n let path = request.path;\n const queryString = (0, import_querystring_builder.buildQueryString)(request.query || {});\n if (queryString) {\n path += `?${queryString}`;\n }\n if (request.fragment) {\n path += `#${request.fragment}`;\n }\n let auth = \"\";\n if (request.username != null || request.password != null) {\n const username = request.username ?? \"\";\n const password = request.password ?? \"\";\n auth = `${username}:${password}@`;\n }\n const { port, method } = request;\n const url = `${request.protocol}//${auth}${request.hostname}${port ? `:${port}` : \"\"}${path}`;\n const body = method === \"GET\" || method === \"HEAD\" ? void 0 : request.body;\n const requestOptions = {\n body,\n headers: new Headers(request.headers),\n method,\n credentials\n };\n if ((_a = this.config) == null ? void 0 : _a.cache) {\n requestOptions.cache = this.config.cache;\n }\n if (body) {\n requestOptions.duplex = \"half\";\n }\n if (typeof AbortController !== \"undefined\") {\n requestOptions.signal = abortSignal;\n }\n if (keepAliveSupport.supported) {\n requestOptions.keepalive = keepAlive;\n }\n if (typeof this.config.requestInit === \"function\") {\n Object.assign(requestOptions, this.config.requestInit(request));\n }\n let removeSignalEventListener = /* @__PURE__ */ __name(() => {\n }, \"removeSignalEventListener\");\n const fetchRequest = new Request(url, requestOptions);\n const raceOfPromises = [\n fetch(fetchRequest).then((response) => {\n const fetchHeaders = response.headers;\n const transformedHeaders = {};\n for (const pair of fetchHeaders.entries()) {\n transformedHeaders[pair[0]] = pair[1];\n }\n const hasReadableStream = response.body != void 0;\n if (!hasReadableStream) {\n return response.blob().then((body2) => ({\n response: new import_protocol_http.HttpResponse({\n headers: transformedHeaders,\n reason: response.statusText,\n statusCode: response.status,\n body: body2\n })\n }));\n }\n return {\n response: new import_protocol_http.HttpResponse({\n headers: transformedHeaders,\n reason: response.statusText,\n statusCode: response.status,\n body: response.body\n })\n };\n }),\n requestTimeout(requestTimeoutInMs)\n ];\n if (abortSignal) {\n raceOfPromises.push(\n new Promise((resolve, reject) => {\n const onAbort = /* @__PURE__ */ __name(() => {\n const abortError = new Error(\"Request aborted\");\n abortError.name = \"AbortError\";\n reject(abortError);\n }, \"onAbort\");\n if (typeof abortSignal.addEventListener === \"function\") {\n const signal = abortSignal;\n signal.addEventListener(\"abort\", onAbort, { once: true });\n removeSignalEventListener = /* @__PURE__ */ __name(() => signal.removeEventListener(\"abort\", onAbort), \"removeSignalEventListener\");\n } else {\n abortSignal.onabort = onAbort;\n }\n })\n );\n }\n return Promise.race(raceOfPromises).finally(removeSignalEventListener);\n }\n updateHttpClientConfig(key, value) {\n this.config = void 0;\n this.configProvider = this.configProvider.then((config) => {\n config[key] = value;\n return config;\n });\n }\n httpHandlerConfigs() {\n return this.config ?? {};\n }\n};\n__name(_FetchHttpHandler, \"FetchHttpHandler\");\nvar FetchHttpHandler = _FetchHttpHandler;\n\n// src/stream-collector.ts\nvar import_util_base64 = require(\"@smithy/util-base64\");\nvar streamCollector = /* @__PURE__ */ __name((stream) => {\n if (typeof Blob === \"function\" && stream instanceof Blob) {\n return collectBlob(stream);\n }\n return collectStream(stream);\n}, \"streamCollector\");\nasync function collectBlob(blob) {\n const base64 = await readToBase64(blob);\n const arrayBuffer = (0, import_util_base64.fromBase64)(base64);\n return new Uint8Array(arrayBuffer);\n}\n__name(collectBlob, \"collectBlob\");\nasync function collectStream(stream) {\n const chunks = [];\n const reader = stream.getReader();\n let isDone = false;\n let length = 0;\n while (!isDone) {\n const { done, value } = await reader.read();\n if (value) {\n chunks.push(value);\n length += value.length;\n }\n isDone = done;\n }\n const collected = new Uint8Array(length);\n let offset = 0;\n for (const chunk of chunks) {\n collected.set(chunk, offset);\n offset += chunk.length;\n }\n return collected;\n}\n__name(collectStream, \"collectStream\");\nfunction readToBase64(blob) {\n return new Promise((resolve, reject) => {\n const reader = new FileReader();\n reader.onloadend = () => {\n if (reader.readyState !== 2) {\n return reject(new Error(\"Reader aborted too early\"));\n }\n const result = reader.result ?? \"\";\n const commaIndex = result.indexOf(\",\");\n const dataOffset = commaIndex > -1 ? commaIndex + 1 : result.length;\n resolve(result.substring(dataOffset));\n };\n reader.onabort = () => reject(new Error(\"Read aborted\"));\n reader.onerror = () => reject(reader.error);\n reader.readAsDataURL(blob);\n });\n}\n__name(readToBase64, \"readToBase64\");\n// Annotate the CommonJS export names for ESM import in node:\n\n0 && (module.exports = {\n keepAliveSupport,\n FetchHttpHandler,\n streamCollector\n});\n\n","var __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/index.ts\nvar src_exports = {};\n__export(src_exports, {\n Hash: () => Hash\n});\nmodule.exports = __toCommonJS(src_exports);\nvar import_util_buffer_from = require(\"@smithy/util-buffer-from\");\nvar import_util_utf8 = require(\"@smithy/util-utf8\");\nvar import_buffer = require(\"buffer\");\nvar import_crypto = require(\"crypto\");\nvar _Hash = class _Hash {\n constructor(algorithmIdentifier, secret) {\n this.algorithmIdentifier = algorithmIdentifier;\n this.secret = secret;\n this.reset();\n }\n update(toHash, encoding) {\n this.hash.update((0, import_util_utf8.toUint8Array)(castSourceData(toHash, encoding)));\n }\n digest() {\n return Promise.resolve(this.hash.digest());\n }\n reset() {\n this.hash = this.secret ? (0, import_crypto.createHmac)(this.algorithmIdentifier, castSourceData(this.secret)) : (0, import_crypto.createHash)(this.algorithmIdentifier);\n }\n};\n__name(_Hash, \"Hash\");\nvar Hash = _Hash;\nfunction castSourceData(toCast, encoding) {\n if (import_buffer.Buffer.isBuffer(toCast)) {\n return toCast;\n }\n if (typeof toCast === \"string\") {\n return (0, import_util_buffer_from.fromString)(toCast, encoding);\n }\n if (ArrayBuffer.isView(toCast)) {\n return (0, import_util_buffer_from.fromArrayBuffer)(toCast.buffer, toCast.byteOffset, toCast.byteLength);\n }\n return (0, import_util_buffer_from.fromArrayBuffer)(toCast);\n}\n__name(castSourceData, \"castSourceData\");\n// Annotate the CommonJS export names for ESM import in node:\n\n0 && (module.exports = {\n Hash\n});\n\n","var __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/index.ts\nvar src_exports = {};\n__export(src_exports, {\n isArrayBuffer: () => isArrayBuffer\n});\nmodule.exports = __toCommonJS(src_exports);\nvar isArrayBuffer = /* @__PURE__ */ __name((arg) => typeof ArrayBuffer === \"function\" && arg instanceof ArrayBuffer || Object.prototype.toString.call(arg) === \"[object ArrayBuffer]\", \"isArrayBuffer\");\n// Annotate the CommonJS export names for ESM import in node:\n\n0 && (module.exports = {\n isArrayBuffer\n});\n\n","var __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/index.ts\nvar src_exports = {};\n__export(src_exports, {\n contentLengthMiddleware: () => contentLengthMiddleware,\n contentLengthMiddlewareOptions: () => contentLengthMiddlewareOptions,\n getContentLengthPlugin: () => getContentLengthPlugin\n});\nmodule.exports = __toCommonJS(src_exports);\nvar import_protocol_http = require(\"@smithy/protocol-http\");\nvar CONTENT_LENGTH_HEADER = \"content-length\";\nfunction contentLengthMiddleware(bodyLengthChecker) {\n return (next) => async (args) => {\n const request = args.request;\n if (import_protocol_http.HttpRequest.isInstance(request)) {\n const { body, headers } = request;\n if (body && Object.keys(headers).map((str) => str.toLowerCase()).indexOf(CONTENT_LENGTH_HEADER) === -1) {\n try {\n const length = bodyLengthChecker(body);\n request.headers = {\n ...request.headers,\n [CONTENT_LENGTH_HEADER]: String(length)\n };\n } catch (error) {\n }\n }\n }\n return next({\n ...args,\n request\n });\n };\n}\n__name(contentLengthMiddleware, \"contentLengthMiddleware\");\nvar contentLengthMiddlewareOptions = {\n step: \"build\",\n tags: [\"SET_CONTENT_LENGTH\", \"CONTENT_LENGTH\"],\n name: \"contentLengthMiddleware\",\n override: true\n};\nvar getContentLengthPlugin = /* @__PURE__ */ __name((options) => ({\n applyToStack: (clientStack) => {\n clientStack.add(contentLengthMiddleware(options.bodyLengthChecker), contentLengthMiddlewareOptions);\n }\n}), \"getContentLengthPlugin\");\n// Annotate the CommonJS export names for ESM import in node:\n\n0 && (module.exports = {\n contentLengthMiddleware,\n contentLengthMiddlewareOptions,\n getContentLengthPlugin\n});\n\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getEndpointFromConfig = void 0;\nconst node_config_provider_1 = require(\"@smithy/node-config-provider\");\nconst getEndpointUrlConfig_1 = require(\"./getEndpointUrlConfig\");\nconst getEndpointFromConfig = async (serviceId) => (0, node_config_provider_1.loadConfig)((0, getEndpointUrlConfig_1.getEndpointUrlConfig)(serviceId !== null && serviceId !== void 0 ? serviceId : \"\"))();\nexports.getEndpointFromConfig = getEndpointFromConfig;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getEndpointUrlConfig = void 0;\nconst shared_ini_file_loader_1 = require(\"@smithy/shared-ini-file-loader\");\nconst ENV_ENDPOINT_URL = \"AWS_ENDPOINT_URL\";\nconst CONFIG_ENDPOINT_URL = \"endpoint_url\";\nconst getEndpointUrlConfig = (serviceId) => ({\n environmentVariableSelector: (env) => {\n const serviceSuffixParts = serviceId.split(\" \").map((w) => w.toUpperCase());\n const serviceEndpointUrl = env[[ENV_ENDPOINT_URL, ...serviceSuffixParts].join(\"_\")];\n if (serviceEndpointUrl)\n return serviceEndpointUrl;\n const endpointUrl = env[ENV_ENDPOINT_URL];\n if (endpointUrl)\n return endpointUrl;\n return undefined;\n },\n configFileSelector: (profile, config) => {\n if (config && profile.services) {\n const servicesSection = config[[\"services\", profile.services].join(shared_ini_file_loader_1.CONFIG_PREFIX_SEPARATOR)];\n if (servicesSection) {\n const servicePrefixParts = serviceId.split(\" \").map((w) => w.toLowerCase());\n const endpointUrl = servicesSection[[servicePrefixParts.join(\"_\"), CONFIG_ENDPOINT_URL].join(shared_ini_file_loader_1.CONFIG_PREFIX_SEPARATOR)];\n if (endpointUrl)\n return endpointUrl;\n }\n }\n const endpointUrl = profile[CONFIG_ENDPOINT_URL];\n if (endpointUrl)\n return endpointUrl;\n return undefined;\n },\n default: undefined,\n});\nexports.getEndpointUrlConfig = getEndpointUrlConfig;\n","var __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/index.ts\nvar src_exports = {};\n__export(src_exports, {\n endpointMiddleware: () => endpointMiddleware,\n endpointMiddlewareOptions: () => endpointMiddlewareOptions,\n getEndpointFromInstructions: () => getEndpointFromInstructions,\n getEndpointPlugin: () => getEndpointPlugin,\n resolveEndpointConfig: () => resolveEndpointConfig,\n resolveParams: () => resolveParams,\n toEndpointV1: () => toEndpointV1\n});\nmodule.exports = __toCommonJS(src_exports);\n\n// src/service-customizations/s3.ts\nvar resolveParamsForS3 = /* @__PURE__ */ __name(async (endpointParams) => {\n const bucket = (endpointParams == null ? void 0 : endpointParams.Bucket) || \"\";\n if (typeof endpointParams.Bucket === \"string\") {\n endpointParams.Bucket = bucket.replace(/#/g, encodeURIComponent(\"#\")).replace(/\\?/g, encodeURIComponent(\"?\"));\n }\n if (isArnBucketName(bucket)) {\n if (endpointParams.ForcePathStyle === true) {\n throw new Error(\"Path-style addressing cannot be used with ARN buckets\");\n }\n } else if (!isDnsCompatibleBucketName(bucket) || bucket.indexOf(\".\") !== -1 && !String(endpointParams.Endpoint).startsWith(\"http:\") || bucket.toLowerCase() !== bucket || bucket.length < 3) {\n endpointParams.ForcePathStyle = true;\n }\n if (endpointParams.DisableMultiRegionAccessPoints) {\n endpointParams.disableMultiRegionAccessPoints = true;\n endpointParams.DisableMRAP = true;\n }\n return endpointParams;\n}, \"resolveParamsForS3\");\nvar DOMAIN_PATTERN = /^[a-z0-9][a-z0-9\\.\\-]{1,61}[a-z0-9]$/;\nvar IP_ADDRESS_PATTERN = /(\\d+\\.){3}\\d+/;\nvar DOTS_PATTERN = /\\.\\./;\nvar isDnsCompatibleBucketName = /* @__PURE__ */ __name((bucketName) => DOMAIN_PATTERN.test(bucketName) && !IP_ADDRESS_PATTERN.test(bucketName) && !DOTS_PATTERN.test(bucketName), \"isDnsCompatibleBucketName\");\nvar isArnBucketName = /* @__PURE__ */ __name((bucketName) => {\n const [arn, partition, service, , , bucket] = bucketName.split(\":\");\n const isArn = arn === \"arn\" && bucketName.split(\":\").length >= 6;\n const isValidArn = Boolean(isArn && partition && service && bucket);\n if (isArn && !isValidArn) {\n throw new Error(`Invalid ARN: ${bucketName} was an invalid ARN.`);\n }\n return isValidArn;\n}, \"isArnBucketName\");\n\n// src/adaptors/createConfigValueProvider.ts\nvar createConfigValueProvider = /* @__PURE__ */ __name((configKey, canonicalEndpointParamKey, config) => {\n const configProvider = /* @__PURE__ */ __name(async () => {\n const configValue = config[configKey] ?? config[canonicalEndpointParamKey];\n if (typeof configValue === \"function\") {\n return configValue();\n }\n return configValue;\n }, \"configProvider\");\n if (configKey === \"credentialScope\" || canonicalEndpointParamKey === \"CredentialScope\") {\n return async () => {\n const credentials = typeof config.credentials === \"function\" ? await config.credentials() : config.credentials;\n const configValue = (credentials == null ? void 0 : credentials.credentialScope) ?? (credentials == null ? void 0 : credentials.CredentialScope);\n return configValue;\n };\n }\n if (configKey === \"accountId\" || canonicalEndpointParamKey === \"AccountId\") {\n return async () => {\n const credentials = typeof config.credentials === \"function\" ? await config.credentials() : config.credentials;\n const configValue = (credentials == null ? void 0 : credentials.accountId) ?? (credentials == null ? void 0 : credentials.AccountId);\n return configValue;\n };\n }\n if (configKey === \"endpoint\" || canonicalEndpointParamKey === \"endpoint\") {\n return async () => {\n const endpoint = await configProvider();\n if (endpoint && typeof endpoint === \"object\") {\n if (\"url\" in endpoint) {\n return endpoint.url.href;\n }\n if (\"hostname\" in endpoint) {\n const { protocol, hostname, port, path } = endpoint;\n return `${protocol}//${hostname}${port ? \":\" + port : \"\"}${path}`;\n }\n }\n return endpoint;\n };\n }\n return configProvider;\n}, \"createConfigValueProvider\");\n\n// src/adaptors/getEndpointFromInstructions.ts\nvar import_getEndpointFromConfig = require(\"./adaptors/getEndpointFromConfig\");\n\n// src/adaptors/toEndpointV1.ts\nvar import_url_parser = require(\"@smithy/url-parser\");\nvar toEndpointV1 = /* @__PURE__ */ __name((endpoint) => {\n if (typeof endpoint === \"object\") {\n if (\"url\" in endpoint) {\n return (0, import_url_parser.parseUrl)(endpoint.url);\n }\n return endpoint;\n }\n return (0, import_url_parser.parseUrl)(endpoint);\n}, \"toEndpointV1\");\n\n// src/adaptors/getEndpointFromInstructions.ts\nvar getEndpointFromInstructions = /* @__PURE__ */ __name(async (commandInput, instructionsSupplier, clientConfig, context) => {\n if (!clientConfig.endpoint) {\n let endpointFromConfig;\n if (clientConfig.serviceConfiguredEndpoint) {\n endpointFromConfig = await clientConfig.serviceConfiguredEndpoint();\n } else {\n endpointFromConfig = await (0, import_getEndpointFromConfig.getEndpointFromConfig)(clientConfig.serviceId);\n }\n if (endpointFromConfig) {\n clientConfig.endpoint = () => Promise.resolve(toEndpointV1(endpointFromConfig));\n }\n }\n const endpointParams = await resolveParams(commandInput, instructionsSupplier, clientConfig);\n if (typeof clientConfig.endpointProvider !== \"function\") {\n throw new Error(\"config.endpointProvider is not set.\");\n }\n const endpoint = clientConfig.endpointProvider(endpointParams, context);\n return endpoint;\n}, \"getEndpointFromInstructions\");\nvar resolveParams = /* @__PURE__ */ __name(async (commandInput, instructionsSupplier, clientConfig) => {\n var _a;\n const endpointParams = {};\n const instructions = ((_a = instructionsSupplier == null ? void 0 : instructionsSupplier.getEndpointParameterInstructions) == null ? void 0 : _a.call(instructionsSupplier)) || {};\n for (const [name, instruction] of Object.entries(instructions)) {\n switch (instruction.type) {\n case \"staticContextParams\":\n endpointParams[name] = instruction.value;\n break;\n case \"contextParams\":\n endpointParams[name] = commandInput[instruction.name];\n break;\n case \"clientContextParams\":\n case \"builtInParams\":\n endpointParams[name] = await createConfigValueProvider(instruction.name, name, clientConfig)();\n break;\n default:\n throw new Error(\"Unrecognized endpoint parameter instruction: \" + JSON.stringify(instruction));\n }\n }\n if (Object.keys(instructions).length === 0) {\n Object.assign(endpointParams, clientConfig);\n }\n if (String(clientConfig.serviceId).toLowerCase() === \"s3\") {\n await resolveParamsForS3(endpointParams);\n }\n return endpointParams;\n}, \"resolveParams\");\n\n// src/endpointMiddleware.ts\nvar import_util_middleware = require(\"@smithy/util-middleware\");\nvar endpointMiddleware = /* @__PURE__ */ __name(({\n config,\n instructions\n}) => {\n return (next, context) => async (args) => {\n var _a, _b, _c;\n const endpoint = await getEndpointFromInstructions(\n args.input,\n {\n getEndpointParameterInstructions() {\n return instructions;\n }\n },\n { ...config },\n context\n );\n context.endpointV2 = endpoint;\n context.authSchemes = (_a = endpoint.properties) == null ? void 0 : _a.authSchemes;\n const authScheme = (_b = context.authSchemes) == null ? void 0 : _b[0];\n if (authScheme) {\n context[\"signing_region\"] = authScheme.signingRegion;\n context[\"signing_service\"] = authScheme.signingName;\n const smithyContext = (0, import_util_middleware.getSmithyContext)(context);\n const httpAuthOption = (_c = smithyContext == null ? void 0 : smithyContext.selectedHttpAuthScheme) == null ? void 0 : _c.httpAuthOption;\n if (httpAuthOption) {\n httpAuthOption.signingProperties = Object.assign(\n httpAuthOption.signingProperties || {},\n {\n signing_region: authScheme.signingRegion,\n signingRegion: authScheme.signingRegion,\n signing_service: authScheme.signingName,\n signingName: authScheme.signingName,\n signingRegionSet: authScheme.signingRegionSet\n },\n authScheme.properties\n );\n }\n }\n return next({\n ...args\n });\n };\n}, \"endpointMiddleware\");\n\n// src/getEndpointPlugin.ts\nvar import_middleware_serde = require(\"@smithy/middleware-serde\");\nvar endpointMiddlewareOptions = {\n step: \"serialize\",\n tags: [\"ENDPOINT_PARAMETERS\", \"ENDPOINT_V2\", \"ENDPOINT\"],\n name: \"endpointV2Middleware\",\n override: true,\n relation: \"before\",\n toMiddleware: import_middleware_serde.serializerMiddlewareOption.name\n};\nvar getEndpointPlugin = /* @__PURE__ */ __name((config, instructions) => ({\n applyToStack: (clientStack) => {\n clientStack.addRelativeTo(\n endpointMiddleware({\n config,\n instructions\n }),\n endpointMiddlewareOptions\n );\n }\n}), \"getEndpointPlugin\");\n\n// src/resolveEndpointConfig.ts\n\nvar import_getEndpointFromConfig2 = require(\"./adaptors/getEndpointFromConfig\");\nvar resolveEndpointConfig = /* @__PURE__ */ __name((input) => {\n const tls = input.tls ?? true;\n const { endpoint } = input;\n const customEndpointProvider = endpoint != null ? async () => toEndpointV1(await (0, import_util_middleware.normalizeProvider)(endpoint)()) : void 0;\n const isCustomEndpoint = !!endpoint;\n const resolvedConfig = {\n ...input,\n endpoint: customEndpointProvider,\n tls,\n isCustomEndpoint,\n useDualstackEndpoint: (0, import_util_middleware.normalizeProvider)(input.useDualstackEndpoint ?? false),\n useFipsEndpoint: (0, import_util_middleware.normalizeProvider)(input.useFipsEndpoint ?? false)\n };\n let configuredEndpointPromise = void 0;\n resolvedConfig.serviceConfiguredEndpoint = async () => {\n if (input.serviceId && !configuredEndpointPromise) {\n configuredEndpointPromise = (0, import_getEndpointFromConfig2.getEndpointFromConfig)(input.serviceId);\n }\n return configuredEndpointPromise;\n };\n return resolvedConfig;\n}, \"resolveEndpointConfig\");\n// Annotate the CommonJS export names for ESM import in node:\n\n0 && (module.exports = {\n getEndpointFromInstructions,\n resolveParams,\n toEndpointV1,\n endpointMiddleware,\n endpointMiddlewareOptions,\n getEndpointPlugin,\n resolveEndpointConfig\n});\n\n","var __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/index.ts\nvar src_exports = {};\n__export(src_exports, {\n AdaptiveRetryStrategy: () => AdaptiveRetryStrategy,\n CONFIG_MAX_ATTEMPTS: () => CONFIG_MAX_ATTEMPTS,\n CONFIG_RETRY_MODE: () => CONFIG_RETRY_MODE,\n ENV_MAX_ATTEMPTS: () => ENV_MAX_ATTEMPTS,\n ENV_RETRY_MODE: () => ENV_RETRY_MODE,\n NODE_MAX_ATTEMPT_CONFIG_OPTIONS: () => NODE_MAX_ATTEMPT_CONFIG_OPTIONS,\n NODE_RETRY_MODE_CONFIG_OPTIONS: () => NODE_RETRY_MODE_CONFIG_OPTIONS,\n StandardRetryStrategy: () => StandardRetryStrategy,\n defaultDelayDecider: () => defaultDelayDecider,\n defaultRetryDecider: () => defaultRetryDecider,\n getOmitRetryHeadersPlugin: () => getOmitRetryHeadersPlugin,\n getRetryAfterHint: () => getRetryAfterHint,\n getRetryPlugin: () => getRetryPlugin,\n omitRetryHeadersMiddleware: () => omitRetryHeadersMiddleware,\n omitRetryHeadersMiddlewareOptions: () => omitRetryHeadersMiddlewareOptions,\n resolveRetryConfig: () => resolveRetryConfig,\n retryMiddleware: () => retryMiddleware,\n retryMiddlewareOptions: () => retryMiddlewareOptions\n});\nmodule.exports = __toCommonJS(src_exports);\n\n// src/AdaptiveRetryStrategy.ts\n\n\n// src/StandardRetryStrategy.ts\nvar import_protocol_http = require(\"@smithy/protocol-http\");\n\n\nvar import_uuid = require(\"uuid\");\n\n// src/defaultRetryQuota.ts\nvar import_util_retry = require(\"@smithy/util-retry\");\nvar getDefaultRetryQuota = /* @__PURE__ */ __name((initialRetryTokens, options) => {\n const MAX_CAPACITY = initialRetryTokens;\n const noRetryIncrement = (options == null ? void 0 : options.noRetryIncrement) ?? import_util_retry.NO_RETRY_INCREMENT;\n const retryCost = (options == null ? void 0 : options.retryCost) ?? import_util_retry.RETRY_COST;\n const timeoutRetryCost = (options == null ? void 0 : options.timeoutRetryCost) ?? import_util_retry.TIMEOUT_RETRY_COST;\n let availableCapacity = initialRetryTokens;\n const getCapacityAmount = /* @__PURE__ */ __name((error) => error.name === \"TimeoutError\" ? timeoutRetryCost : retryCost, \"getCapacityAmount\");\n const hasRetryTokens = /* @__PURE__ */ __name((error) => getCapacityAmount(error) <= availableCapacity, \"hasRetryTokens\");\n const retrieveRetryTokens = /* @__PURE__ */ __name((error) => {\n if (!hasRetryTokens(error)) {\n throw new Error(\"No retry token available\");\n }\n const capacityAmount = getCapacityAmount(error);\n availableCapacity -= capacityAmount;\n return capacityAmount;\n }, \"retrieveRetryTokens\");\n const releaseRetryTokens = /* @__PURE__ */ __name((capacityReleaseAmount) => {\n availableCapacity += capacityReleaseAmount ?? noRetryIncrement;\n availableCapacity = Math.min(availableCapacity, MAX_CAPACITY);\n }, \"releaseRetryTokens\");\n return Object.freeze({\n hasRetryTokens,\n retrieveRetryTokens,\n releaseRetryTokens\n });\n}, \"getDefaultRetryQuota\");\n\n// src/delayDecider.ts\n\nvar defaultDelayDecider = /* @__PURE__ */ __name((delayBase, attempts) => Math.floor(Math.min(import_util_retry.MAXIMUM_RETRY_DELAY, Math.random() * 2 ** attempts * delayBase)), \"defaultDelayDecider\");\n\n// src/retryDecider.ts\nvar import_service_error_classification = require(\"@smithy/service-error-classification\");\nvar defaultRetryDecider = /* @__PURE__ */ __name((error) => {\n if (!error) {\n return false;\n }\n return (0, import_service_error_classification.isRetryableByTrait)(error) || (0, import_service_error_classification.isClockSkewError)(error) || (0, import_service_error_classification.isThrottlingError)(error) || (0, import_service_error_classification.isTransientError)(error);\n}, \"defaultRetryDecider\");\n\n// src/util.ts\nvar asSdkError = /* @__PURE__ */ __name((error) => {\n if (error instanceof Error)\n return error;\n if (error instanceof Object)\n return Object.assign(new Error(), error);\n if (typeof error === \"string\")\n return new Error(error);\n return new Error(`AWS SDK error wrapper for ${error}`);\n}, \"asSdkError\");\n\n// src/StandardRetryStrategy.ts\nvar _StandardRetryStrategy = class _StandardRetryStrategy {\n constructor(maxAttemptsProvider, options) {\n this.maxAttemptsProvider = maxAttemptsProvider;\n this.mode = import_util_retry.RETRY_MODES.STANDARD;\n this.retryDecider = (options == null ? void 0 : options.retryDecider) ?? defaultRetryDecider;\n this.delayDecider = (options == null ? void 0 : options.delayDecider) ?? defaultDelayDecider;\n this.retryQuota = (options == null ? void 0 : options.retryQuota) ?? getDefaultRetryQuota(import_util_retry.INITIAL_RETRY_TOKENS);\n }\n shouldRetry(error, attempts, maxAttempts) {\n return attempts < maxAttempts && this.retryDecider(error) && this.retryQuota.hasRetryTokens(error);\n }\n async getMaxAttempts() {\n let maxAttempts;\n try {\n maxAttempts = await this.maxAttemptsProvider();\n } catch (error) {\n maxAttempts = import_util_retry.DEFAULT_MAX_ATTEMPTS;\n }\n return maxAttempts;\n }\n async retry(next, args, options) {\n let retryTokenAmount;\n let attempts = 0;\n let totalDelay = 0;\n const maxAttempts = await this.getMaxAttempts();\n const { request } = args;\n if (import_protocol_http.HttpRequest.isInstance(request)) {\n request.headers[import_util_retry.INVOCATION_ID_HEADER] = (0, import_uuid.v4)();\n }\n while (true) {\n try {\n if (import_protocol_http.HttpRequest.isInstance(request)) {\n request.headers[import_util_retry.REQUEST_HEADER] = `attempt=${attempts + 1}; max=${maxAttempts}`;\n }\n if (options == null ? void 0 : options.beforeRequest) {\n await options.beforeRequest();\n }\n const { response, output } = await next(args);\n if (options == null ? void 0 : options.afterRequest) {\n options.afterRequest(response);\n }\n this.retryQuota.releaseRetryTokens(retryTokenAmount);\n output.$metadata.attempts = attempts + 1;\n output.$metadata.totalRetryDelay = totalDelay;\n return { response, output };\n } catch (e) {\n const err = asSdkError(e);\n attempts++;\n if (this.shouldRetry(err, attempts, maxAttempts)) {\n retryTokenAmount = this.retryQuota.retrieveRetryTokens(err);\n const delayFromDecider = this.delayDecider(\n (0, import_service_error_classification.isThrottlingError)(err) ? import_util_retry.THROTTLING_RETRY_DELAY_BASE : import_util_retry.DEFAULT_RETRY_DELAY_BASE,\n attempts\n );\n const delayFromResponse = getDelayFromRetryAfterHeader(err.$response);\n const delay = Math.max(delayFromResponse || 0, delayFromDecider);\n totalDelay += delay;\n await new Promise((resolve) => setTimeout(resolve, delay));\n continue;\n }\n if (!err.$metadata) {\n err.$metadata = {};\n }\n err.$metadata.attempts = attempts;\n err.$metadata.totalRetryDelay = totalDelay;\n throw err;\n }\n }\n }\n};\n__name(_StandardRetryStrategy, \"StandardRetryStrategy\");\nvar StandardRetryStrategy = _StandardRetryStrategy;\nvar getDelayFromRetryAfterHeader = /* @__PURE__ */ __name((response) => {\n if (!import_protocol_http.HttpResponse.isInstance(response))\n return;\n const retryAfterHeaderName = Object.keys(response.headers).find((key) => key.toLowerCase() === \"retry-after\");\n if (!retryAfterHeaderName)\n return;\n const retryAfter = response.headers[retryAfterHeaderName];\n const retryAfterSeconds = Number(retryAfter);\n if (!Number.isNaN(retryAfterSeconds))\n return retryAfterSeconds * 1e3;\n const retryAfterDate = new Date(retryAfter);\n return retryAfterDate.getTime() - Date.now();\n}, \"getDelayFromRetryAfterHeader\");\n\n// src/AdaptiveRetryStrategy.ts\nvar _AdaptiveRetryStrategy = class _AdaptiveRetryStrategy extends StandardRetryStrategy {\n constructor(maxAttemptsProvider, options) {\n const { rateLimiter, ...superOptions } = options ?? {};\n super(maxAttemptsProvider, superOptions);\n this.rateLimiter = rateLimiter ?? new import_util_retry.DefaultRateLimiter();\n this.mode = import_util_retry.RETRY_MODES.ADAPTIVE;\n }\n async retry(next, args) {\n return super.retry(next, args, {\n beforeRequest: async () => {\n return this.rateLimiter.getSendToken();\n },\n afterRequest: (response) => {\n this.rateLimiter.updateClientSendingRate(response);\n }\n });\n }\n};\n__name(_AdaptiveRetryStrategy, \"AdaptiveRetryStrategy\");\nvar AdaptiveRetryStrategy = _AdaptiveRetryStrategy;\n\n// src/configurations.ts\nvar import_util_middleware = require(\"@smithy/util-middleware\");\n\nvar ENV_MAX_ATTEMPTS = \"AWS_MAX_ATTEMPTS\";\nvar CONFIG_MAX_ATTEMPTS = \"max_attempts\";\nvar NODE_MAX_ATTEMPT_CONFIG_OPTIONS = {\n environmentVariableSelector: (env) => {\n const value = env[ENV_MAX_ATTEMPTS];\n if (!value)\n return void 0;\n const maxAttempt = parseInt(value);\n if (Number.isNaN(maxAttempt)) {\n throw new Error(`Environment variable ${ENV_MAX_ATTEMPTS} mast be a number, got \"${value}\"`);\n }\n return maxAttempt;\n },\n configFileSelector: (profile) => {\n const value = profile[CONFIG_MAX_ATTEMPTS];\n if (!value)\n return void 0;\n const maxAttempt = parseInt(value);\n if (Number.isNaN(maxAttempt)) {\n throw new Error(`Shared config file entry ${CONFIG_MAX_ATTEMPTS} mast be a number, got \"${value}\"`);\n }\n return maxAttempt;\n },\n default: import_util_retry.DEFAULT_MAX_ATTEMPTS\n};\nvar resolveRetryConfig = /* @__PURE__ */ __name((input) => {\n const { retryStrategy } = input;\n const maxAttempts = (0, import_util_middleware.normalizeProvider)(input.maxAttempts ?? import_util_retry.DEFAULT_MAX_ATTEMPTS);\n return {\n ...input,\n maxAttempts,\n retryStrategy: async () => {\n if (retryStrategy) {\n return retryStrategy;\n }\n const retryMode = await (0, import_util_middleware.normalizeProvider)(input.retryMode)();\n if (retryMode === import_util_retry.RETRY_MODES.ADAPTIVE) {\n return new import_util_retry.AdaptiveRetryStrategy(maxAttempts);\n }\n return new import_util_retry.StandardRetryStrategy(maxAttempts);\n }\n };\n}, \"resolveRetryConfig\");\nvar ENV_RETRY_MODE = \"AWS_RETRY_MODE\";\nvar CONFIG_RETRY_MODE = \"retry_mode\";\nvar NODE_RETRY_MODE_CONFIG_OPTIONS = {\n environmentVariableSelector: (env) => env[ENV_RETRY_MODE],\n configFileSelector: (profile) => profile[CONFIG_RETRY_MODE],\n default: import_util_retry.DEFAULT_RETRY_MODE\n};\n\n// src/omitRetryHeadersMiddleware.ts\n\n\nvar omitRetryHeadersMiddleware = /* @__PURE__ */ __name(() => (next) => async (args) => {\n const { request } = args;\n if (import_protocol_http.HttpRequest.isInstance(request)) {\n delete request.headers[import_util_retry.INVOCATION_ID_HEADER];\n delete request.headers[import_util_retry.REQUEST_HEADER];\n }\n return next(args);\n}, \"omitRetryHeadersMiddleware\");\nvar omitRetryHeadersMiddlewareOptions = {\n name: \"omitRetryHeadersMiddleware\",\n tags: [\"RETRY\", \"HEADERS\", \"OMIT_RETRY_HEADERS\"],\n relation: \"before\",\n toMiddleware: \"awsAuthMiddleware\",\n override: true\n};\nvar getOmitRetryHeadersPlugin = /* @__PURE__ */ __name((options) => ({\n applyToStack: (clientStack) => {\n clientStack.addRelativeTo(omitRetryHeadersMiddleware(), omitRetryHeadersMiddlewareOptions);\n }\n}), \"getOmitRetryHeadersPlugin\");\n\n// src/retryMiddleware.ts\n\n\nvar import_smithy_client = require(\"@smithy/smithy-client\");\n\n\nvar import_isStreamingPayload = require(\"./isStreamingPayload/isStreamingPayload\");\nvar retryMiddleware = /* @__PURE__ */ __name((options) => (next, context) => async (args) => {\n var _a;\n let retryStrategy = await options.retryStrategy();\n const maxAttempts = await options.maxAttempts();\n if (isRetryStrategyV2(retryStrategy)) {\n retryStrategy = retryStrategy;\n let retryToken = await retryStrategy.acquireInitialRetryToken(context[\"partition_id\"]);\n let lastError = new Error();\n let attempts = 0;\n let totalRetryDelay = 0;\n const { request } = args;\n const isRequest = import_protocol_http.HttpRequest.isInstance(request);\n if (isRequest) {\n request.headers[import_util_retry.INVOCATION_ID_HEADER] = (0, import_uuid.v4)();\n }\n while (true) {\n try {\n if (isRequest) {\n request.headers[import_util_retry.REQUEST_HEADER] = `attempt=${attempts + 1}; max=${maxAttempts}`;\n }\n const { response, output } = await next(args);\n retryStrategy.recordSuccess(retryToken);\n output.$metadata.attempts = attempts + 1;\n output.$metadata.totalRetryDelay = totalRetryDelay;\n return { response, output };\n } catch (e) {\n const retryErrorInfo = getRetryErrorInfo(e);\n lastError = asSdkError(e);\n if (isRequest && (0, import_isStreamingPayload.isStreamingPayload)(request)) {\n (_a = context.logger instanceof import_smithy_client.NoOpLogger ? console : context.logger) == null ? void 0 : _a.warn(\n \"An error was encountered in a non-retryable streaming request.\"\n );\n throw lastError;\n }\n try {\n retryToken = await retryStrategy.refreshRetryTokenForRetry(retryToken, retryErrorInfo);\n } catch (refreshError) {\n if (!lastError.$metadata) {\n lastError.$metadata = {};\n }\n lastError.$metadata.attempts = attempts + 1;\n lastError.$metadata.totalRetryDelay = totalRetryDelay;\n throw lastError;\n }\n attempts = retryToken.getRetryCount();\n const delay = retryToken.getRetryDelay();\n totalRetryDelay += delay;\n await new Promise((resolve) => setTimeout(resolve, delay));\n }\n }\n } else {\n retryStrategy = retryStrategy;\n if (retryStrategy == null ? void 0 : retryStrategy.mode)\n context.userAgent = [...context.userAgent || [], [\"cfg/retry-mode\", retryStrategy.mode]];\n return retryStrategy.retry(next, args);\n }\n}, \"retryMiddleware\");\nvar isRetryStrategyV2 = /* @__PURE__ */ __name((retryStrategy) => typeof retryStrategy.acquireInitialRetryToken !== \"undefined\" && typeof retryStrategy.refreshRetryTokenForRetry !== \"undefined\" && typeof retryStrategy.recordSuccess !== \"undefined\", \"isRetryStrategyV2\");\nvar getRetryErrorInfo = /* @__PURE__ */ __name((error) => {\n const errorInfo = {\n error,\n errorType: getRetryErrorType(error)\n };\n const retryAfterHint = getRetryAfterHint(error.$response);\n if (retryAfterHint) {\n errorInfo.retryAfterHint = retryAfterHint;\n }\n return errorInfo;\n}, \"getRetryErrorInfo\");\nvar getRetryErrorType = /* @__PURE__ */ __name((error) => {\n if ((0, import_service_error_classification.isThrottlingError)(error))\n return \"THROTTLING\";\n if ((0, import_service_error_classification.isTransientError)(error))\n return \"TRANSIENT\";\n if ((0, import_service_error_classification.isServerError)(error))\n return \"SERVER_ERROR\";\n return \"CLIENT_ERROR\";\n}, \"getRetryErrorType\");\nvar retryMiddlewareOptions = {\n name: \"retryMiddleware\",\n tags: [\"RETRY\"],\n step: \"finalizeRequest\",\n priority: \"high\",\n override: true\n};\nvar getRetryPlugin = /* @__PURE__ */ __name((options) => ({\n applyToStack: (clientStack) => {\n clientStack.add(retryMiddleware(options), retryMiddlewareOptions);\n }\n}), \"getRetryPlugin\");\nvar getRetryAfterHint = /* @__PURE__ */ __name((response) => {\n if (!import_protocol_http.HttpResponse.isInstance(response))\n return;\n const retryAfterHeaderName = Object.keys(response.headers).find((key) => key.toLowerCase() === \"retry-after\");\n if (!retryAfterHeaderName)\n return;\n const retryAfter = response.headers[retryAfterHeaderName];\n const retryAfterSeconds = Number(retryAfter);\n if (!Number.isNaN(retryAfterSeconds))\n return new Date(retryAfterSeconds * 1e3);\n const retryAfterDate = new Date(retryAfter);\n return retryAfterDate;\n}, \"getRetryAfterHint\");\n// Annotate the CommonJS export names for ESM import in node:\n\n0 && (module.exports = {\n AdaptiveRetryStrategy,\n StandardRetryStrategy,\n ENV_MAX_ATTEMPTS,\n CONFIG_MAX_ATTEMPTS,\n NODE_MAX_ATTEMPT_CONFIG_OPTIONS,\n resolveRetryConfig,\n ENV_RETRY_MODE,\n CONFIG_RETRY_MODE,\n NODE_RETRY_MODE_CONFIG_OPTIONS,\n defaultDelayDecider,\n omitRetryHeadersMiddleware,\n omitRetryHeadersMiddlewareOptions,\n getOmitRetryHeadersPlugin,\n defaultRetryDecider,\n retryMiddleware,\n retryMiddlewareOptions,\n getRetryPlugin,\n getRetryAfterHint\n});\n\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isStreamingPayload = void 0;\nconst stream_1 = require(\"stream\");\nconst isStreamingPayload = (request) => (request === null || request === void 0 ? void 0 : request.body) instanceof stream_1.Readable ||\n (typeof ReadableStream !== \"undefined\" && (request === null || request === void 0 ? void 0 : request.body) instanceof ReadableStream);\nexports.isStreamingPayload = isStreamingPayload;\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"NIL\", {\n enumerable: true,\n get: function () {\n return _nil.default;\n }\n});\nObject.defineProperty(exports, \"parse\", {\n enumerable: true,\n get: function () {\n return _parse.default;\n }\n});\nObject.defineProperty(exports, \"stringify\", {\n enumerable: true,\n get: function () {\n return _stringify.default;\n }\n});\nObject.defineProperty(exports, \"v1\", {\n enumerable: true,\n get: function () {\n return _v.default;\n }\n});\nObject.defineProperty(exports, \"v3\", {\n enumerable: true,\n get: function () {\n return _v2.default;\n }\n});\nObject.defineProperty(exports, \"v4\", {\n enumerable: true,\n get: function () {\n return _v3.default;\n }\n});\nObject.defineProperty(exports, \"v5\", {\n enumerable: true,\n get: function () {\n return _v4.default;\n }\n});\nObject.defineProperty(exports, \"validate\", {\n enumerable: true,\n get: function () {\n return _validate.default;\n }\n});\nObject.defineProperty(exports, \"version\", {\n enumerable: true,\n get: function () {\n return _version.default;\n }\n});\n\nvar _v = _interopRequireDefault(require(\"./v1.js\"));\n\nvar _v2 = _interopRequireDefault(require(\"./v3.js\"));\n\nvar _v3 = _interopRequireDefault(require(\"./v4.js\"));\n\nvar _v4 = _interopRequireDefault(require(\"./v5.js\"));\n\nvar _nil = _interopRequireDefault(require(\"./nil.js\"));\n\nvar _version = _interopRequireDefault(require(\"./version.js\"));\n\nvar _validate = _interopRequireDefault(require(\"./validate.js\"));\n\nvar _stringify = _interopRequireDefault(require(\"./stringify.js\"));\n\nvar _parse = _interopRequireDefault(require(\"./parse.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _crypto = _interopRequireDefault(require(\"crypto\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction md5(bytes) {\n if (Array.isArray(bytes)) {\n bytes = Buffer.from(bytes);\n } else if (typeof bytes === 'string') {\n bytes = Buffer.from(bytes, 'utf8');\n }\n\n return _crypto.default.createHash('md5').update(bytes).digest();\n}\n\nvar _default = md5;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _crypto = _interopRequireDefault(require(\"crypto\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar _default = {\n randomUUID: _crypto.default.randomUUID\n};\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _default = '00000000-0000-0000-0000-000000000000';\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _validate = _interopRequireDefault(require(\"./validate.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction parse(uuid) {\n if (!(0, _validate.default)(uuid)) {\n throw TypeError('Invalid UUID');\n }\n\n let v;\n const arr = new Uint8Array(16); // Parse ########-....-....-....-............\n\n arr[0] = (v = parseInt(uuid.slice(0, 8), 16)) >>> 24;\n arr[1] = v >>> 16 & 0xff;\n arr[2] = v >>> 8 & 0xff;\n arr[3] = v & 0xff; // Parse ........-####-....-....-............\n\n arr[4] = (v = parseInt(uuid.slice(9, 13), 16)) >>> 8;\n arr[5] = v & 0xff; // Parse ........-....-####-....-............\n\n arr[6] = (v = parseInt(uuid.slice(14, 18), 16)) >>> 8;\n arr[7] = v & 0xff; // Parse ........-....-....-####-............\n\n arr[8] = (v = parseInt(uuid.slice(19, 23), 16)) >>> 8;\n arr[9] = v & 0xff; // Parse ........-....-....-....-############\n // (Use \"/\" to avoid 32-bit truncation when bit-shifting high-order bytes)\n\n arr[10] = (v = parseInt(uuid.slice(24, 36), 16)) / 0x10000000000 & 0xff;\n arr[11] = v / 0x100000000 & 0xff;\n arr[12] = v >>> 24 & 0xff;\n arr[13] = v >>> 16 & 0xff;\n arr[14] = v >>> 8 & 0xff;\n arr[15] = v & 0xff;\n return arr;\n}\n\nvar _default = parse;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _default = /^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = rng;\n\nvar _crypto = _interopRequireDefault(require(\"crypto\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nconst rnds8Pool = new Uint8Array(256); // # of random values to pre-allocate\n\nlet poolPtr = rnds8Pool.length;\n\nfunction rng() {\n if (poolPtr > rnds8Pool.length - 16) {\n _crypto.default.randomFillSync(rnds8Pool);\n\n poolPtr = 0;\n }\n\n return rnds8Pool.slice(poolPtr, poolPtr += 16);\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _crypto = _interopRequireDefault(require(\"crypto\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction sha1(bytes) {\n if (Array.isArray(bytes)) {\n bytes = Buffer.from(bytes);\n } else if (typeof bytes === 'string') {\n bytes = Buffer.from(bytes, 'utf8');\n }\n\n return _crypto.default.createHash('sha1').update(bytes).digest();\n}\n\nvar _default = sha1;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nexports.unsafeStringify = unsafeStringify;\n\nvar _validate = _interopRequireDefault(require(\"./validate.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * Convert array of 16 byte values to UUID string format of the form:\n * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX\n */\nconst byteToHex = [];\n\nfor (let i = 0; i < 256; ++i) {\n byteToHex.push((i + 0x100).toString(16).slice(1));\n}\n\nfunction unsafeStringify(arr, offset = 0) {\n // Note: Be careful editing this code! It's been tuned for performance\n // and works in ways you may not expect. See https://github.com/uuidjs/uuid/pull/434\n return byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + '-' + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + '-' + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + '-' + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + '-' + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]];\n}\n\nfunction stringify(arr, offset = 0) {\n const uuid = unsafeStringify(arr, offset); // Consistency check for valid UUID. If this throws, it's likely due to one\n // of the following:\n // - One or more input array values don't map to a hex octet (leading to\n // \"undefined\" in the uuid)\n // - Invalid input values for the RFC `version` or `variant` fields\n\n if (!(0, _validate.default)(uuid)) {\n throw TypeError('Stringified UUID is invalid');\n }\n\n return uuid;\n}\n\nvar _default = stringify;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _rng = _interopRequireDefault(require(\"./rng.js\"));\n\nvar _stringify = require(\"./stringify.js\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// **`v1()` - Generate time-based UUID**\n//\n// Inspired by https://github.com/LiosK/UUID.js\n// and http://docs.python.org/library/uuid.html\nlet _nodeId;\n\nlet _clockseq; // Previous uuid creation time\n\n\nlet _lastMSecs = 0;\nlet _lastNSecs = 0; // See https://github.com/uuidjs/uuid for API details\n\nfunction v1(options, buf, offset) {\n let i = buf && offset || 0;\n const b = buf || new Array(16);\n options = options || {};\n let node = options.node || _nodeId;\n let clockseq = options.clockseq !== undefined ? options.clockseq : _clockseq; // node and clockseq need to be initialized to random values if they're not\n // specified. We do this lazily to minimize issues related to insufficient\n // system entropy. See #189\n\n if (node == null || clockseq == null) {\n const seedBytes = options.random || (options.rng || _rng.default)();\n\n if (node == null) {\n // Per 4.5, create and 48-bit node id, (47 random bits + multicast bit = 1)\n node = _nodeId = [seedBytes[0] | 0x01, seedBytes[1], seedBytes[2], seedBytes[3], seedBytes[4], seedBytes[5]];\n }\n\n if (clockseq == null) {\n // Per 4.2.2, randomize (14 bit) clockseq\n clockseq = _clockseq = (seedBytes[6] << 8 | seedBytes[7]) & 0x3fff;\n }\n } // UUID timestamps are 100 nano-second units since the Gregorian epoch,\n // (1582-10-15 00:00). JSNumbers aren't precise enough for this, so\n // time is handled internally as 'msecs' (integer milliseconds) and 'nsecs'\n // (100-nanoseconds offset from msecs) since unix epoch, 1970-01-01 00:00.\n\n\n let msecs = options.msecs !== undefined ? options.msecs : Date.now(); // Per 4.2.1.2, use count of uuid's generated during the current clock\n // cycle to simulate higher resolution clock\n\n let nsecs = options.nsecs !== undefined ? options.nsecs : _lastNSecs + 1; // Time since last uuid creation (in msecs)\n\n const dt = msecs - _lastMSecs + (nsecs - _lastNSecs) / 10000; // Per 4.2.1.2, Bump clockseq on clock regression\n\n if (dt < 0 && options.clockseq === undefined) {\n clockseq = clockseq + 1 & 0x3fff;\n } // Reset nsecs if clock regresses (new clockseq) or we've moved onto a new\n // time interval\n\n\n if ((dt < 0 || msecs > _lastMSecs) && options.nsecs === undefined) {\n nsecs = 0;\n } // Per 4.2.1.2 Throw error if too many uuids are requested\n\n\n if (nsecs >= 10000) {\n throw new Error(\"uuid.v1(): Can't create more than 10M uuids/sec\");\n }\n\n _lastMSecs = msecs;\n _lastNSecs = nsecs;\n _clockseq = clockseq; // Per 4.1.4 - Convert from unix epoch to Gregorian epoch\n\n msecs += 12219292800000; // `time_low`\n\n const tl = ((msecs & 0xfffffff) * 10000 + nsecs) % 0x100000000;\n b[i++] = tl >>> 24 & 0xff;\n b[i++] = tl >>> 16 & 0xff;\n b[i++] = tl >>> 8 & 0xff;\n b[i++] = tl & 0xff; // `time_mid`\n\n const tmh = msecs / 0x100000000 * 10000 & 0xfffffff;\n b[i++] = tmh >>> 8 & 0xff;\n b[i++] = tmh & 0xff; // `time_high_and_version`\n\n b[i++] = tmh >>> 24 & 0xf | 0x10; // include version\n\n b[i++] = tmh >>> 16 & 0xff; // `clock_seq_hi_and_reserved` (Per 4.2.2 - include variant)\n\n b[i++] = clockseq >>> 8 | 0x80; // `clock_seq_low`\n\n b[i++] = clockseq & 0xff; // `node`\n\n for (let n = 0; n < 6; ++n) {\n b[i + n] = node[n];\n }\n\n return buf || (0, _stringify.unsafeStringify)(b);\n}\n\nvar _default = v1;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _v = _interopRequireDefault(require(\"./v35.js\"));\n\nvar _md = _interopRequireDefault(require(\"./md5.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nconst v3 = (0, _v.default)('v3', 0x30, _md.default);\nvar _default = v3;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.URL = exports.DNS = void 0;\nexports.default = v35;\n\nvar _stringify = require(\"./stringify.js\");\n\nvar _parse = _interopRequireDefault(require(\"./parse.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction stringToBytes(str) {\n str = unescape(encodeURIComponent(str)); // UTF8 escape\n\n const bytes = [];\n\n for (let i = 0; i < str.length; ++i) {\n bytes.push(str.charCodeAt(i));\n }\n\n return bytes;\n}\n\nconst DNS = '6ba7b810-9dad-11d1-80b4-00c04fd430c8';\nexports.DNS = DNS;\nconst URL = '6ba7b811-9dad-11d1-80b4-00c04fd430c8';\nexports.URL = URL;\n\nfunction v35(name, version, hashfunc) {\n function generateUUID(value, namespace, buf, offset) {\n var _namespace;\n\n if (typeof value === 'string') {\n value = stringToBytes(value);\n }\n\n if (typeof namespace === 'string') {\n namespace = (0, _parse.default)(namespace);\n }\n\n if (((_namespace = namespace) === null || _namespace === void 0 ? void 0 : _namespace.length) !== 16) {\n throw TypeError('Namespace must be array-like (16 iterable integer values, 0-255)');\n } // Compute hash of namespace and value, Per 4.3\n // Future: Use spread syntax when supported on all platforms, e.g. `bytes =\n // hashfunc([...namespace, ... value])`\n\n\n let bytes = new Uint8Array(16 + value.length);\n bytes.set(namespace);\n bytes.set(value, namespace.length);\n bytes = hashfunc(bytes);\n bytes[6] = bytes[6] & 0x0f | version;\n bytes[8] = bytes[8] & 0x3f | 0x80;\n\n if (buf) {\n offset = offset || 0;\n\n for (let i = 0; i < 16; ++i) {\n buf[offset + i] = bytes[i];\n }\n\n return buf;\n }\n\n return (0, _stringify.unsafeStringify)(bytes);\n } // Function#name is not settable on some platforms (#270)\n\n\n try {\n generateUUID.name = name; // eslint-disable-next-line no-empty\n } catch (err) {} // For CommonJS default export support\n\n\n generateUUID.DNS = DNS;\n generateUUID.URL = URL;\n return generateUUID;\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _native = _interopRequireDefault(require(\"./native.js\"));\n\nvar _rng = _interopRequireDefault(require(\"./rng.js\"));\n\nvar _stringify = require(\"./stringify.js\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction v4(options, buf, offset) {\n if (_native.default.randomUUID && !buf && !options) {\n return _native.default.randomUUID();\n }\n\n options = options || {};\n\n const rnds = options.random || (options.rng || _rng.default)(); // Per 4.4, set bits for version and `clock_seq_hi_and_reserved`\n\n\n rnds[6] = rnds[6] & 0x0f | 0x40;\n rnds[8] = rnds[8] & 0x3f | 0x80; // Copy bytes to buffer, if provided\n\n if (buf) {\n offset = offset || 0;\n\n for (let i = 0; i < 16; ++i) {\n buf[offset + i] = rnds[i];\n }\n\n return buf;\n }\n\n return (0, _stringify.unsafeStringify)(rnds);\n}\n\nvar _default = v4;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _v = _interopRequireDefault(require(\"./v35.js\"));\n\nvar _sha = _interopRequireDefault(require(\"./sha1.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nconst v5 = (0, _v.default)('v5', 0x50, _sha.default);\nvar _default = v5;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _regex = _interopRequireDefault(require(\"./regex.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction validate(uuid) {\n return typeof uuid === 'string' && _regex.default.test(uuid);\n}\n\nvar _default = validate;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _validate = _interopRequireDefault(require(\"./validate.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction version(uuid) {\n if (!(0, _validate.default)(uuid)) {\n throw TypeError('Invalid UUID');\n }\n\n return parseInt(uuid.slice(14, 15), 16);\n}\n\nvar _default = version;\nexports.default = _default;","var __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/index.ts\nvar src_exports = {};\n__export(src_exports, {\n deserializerMiddleware: () => deserializerMiddleware,\n deserializerMiddlewareOption: () => deserializerMiddlewareOption,\n getSerdePlugin: () => getSerdePlugin,\n serializerMiddleware: () => serializerMiddleware,\n serializerMiddlewareOption: () => serializerMiddlewareOption\n});\nmodule.exports = __toCommonJS(src_exports);\n\n// src/deserializerMiddleware.ts\nvar deserializerMiddleware = /* @__PURE__ */ __name((options, deserializer) => (next) => async (args) => {\n const { response } = await next(args);\n try {\n const parsed = await deserializer(response, options);\n return {\n response,\n output: parsed\n };\n } catch (error) {\n Object.defineProperty(error, \"$response\", {\n value: response\n });\n if (!(\"$metadata\" in error)) {\n const hint = `Deserialization error: to see the raw response, inspect the hidden field {error}.$response on this object.`;\n error.message += \"\\n \" + hint;\n if (typeof error.$responseBodyText !== \"undefined\") {\n if (error.$response) {\n error.$response.body = error.$responseBodyText;\n }\n }\n }\n throw error;\n }\n}, \"deserializerMiddleware\");\n\n// src/serializerMiddleware.ts\nvar serializerMiddleware = /* @__PURE__ */ __name((options, serializer) => (next, context) => async (args) => {\n var _a;\n const endpoint = ((_a = context.endpointV2) == null ? void 0 : _a.url) && options.urlParser ? async () => options.urlParser(context.endpointV2.url) : options.endpoint;\n if (!endpoint) {\n throw new Error(\"No valid endpoint provider available.\");\n }\n const request = await serializer(args.input, { ...options, endpoint });\n return next({\n ...args,\n request\n });\n}, \"serializerMiddleware\");\n\n// src/serdePlugin.ts\nvar deserializerMiddlewareOption = {\n name: \"deserializerMiddleware\",\n step: \"deserialize\",\n tags: [\"DESERIALIZER\"],\n override: true\n};\nvar serializerMiddlewareOption = {\n name: \"serializerMiddleware\",\n step: \"serialize\",\n tags: [\"SERIALIZER\"],\n override: true\n};\nfunction getSerdePlugin(config, serializer, deserializer) {\n return {\n applyToStack: (commandStack) => {\n commandStack.add(deserializerMiddleware(config, deserializer), deserializerMiddlewareOption);\n commandStack.add(serializerMiddleware(config, serializer), serializerMiddlewareOption);\n }\n };\n}\n__name(getSerdePlugin, \"getSerdePlugin\");\n// Annotate the CommonJS export names for ESM import in node:\n\n0 && (module.exports = {\n deserializerMiddleware,\n deserializerMiddlewareOption,\n serializerMiddlewareOption,\n getSerdePlugin,\n serializerMiddleware\n});\n\n","var __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/index.ts\nvar src_exports = {};\n__export(src_exports, {\n constructStack: () => constructStack\n});\nmodule.exports = __toCommonJS(src_exports);\n\n// src/MiddlewareStack.ts\nvar getAllAliases = /* @__PURE__ */ __name((name, aliases) => {\n const _aliases = [];\n if (name) {\n _aliases.push(name);\n }\n if (aliases) {\n for (const alias of aliases) {\n _aliases.push(alias);\n }\n }\n return _aliases;\n}, \"getAllAliases\");\nvar getMiddlewareNameWithAliases = /* @__PURE__ */ __name((name, aliases) => {\n return `${name || \"anonymous\"}${aliases && aliases.length > 0 ? ` (a.k.a. ${aliases.join(\",\")})` : \"\"}`;\n}, \"getMiddlewareNameWithAliases\");\nvar constructStack = /* @__PURE__ */ __name(() => {\n let absoluteEntries = [];\n let relativeEntries = [];\n let identifyOnResolve = false;\n const entriesNameSet = /* @__PURE__ */ new Set();\n const sort = /* @__PURE__ */ __name((entries) => entries.sort(\n (a, b) => stepWeights[b.step] - stepWeights[a.step] || priorityWeights[b.priority || \"normal\"] - priorityWeights[a.priority || \"normal\"]\n ), \"sort\");\n const removeByName = /* @__PURE__ */ __name((toRemove) => {\n let isRemoved = false;\n const filterCb = /* @__PURE__ */ __name((entry) => {\n const aliases = getAllAliases(entry.name, entry.aliases);\n if (aliases.includes(toRemove)) {\n isRemoved = true;\n for (const alias of aliases) {\n entriesNameSet.delete(alias);\n }\n return false;\n }\n return true;\n }, \"filterCb\");\n absoluteEntries = absoluteEntries.filter(filterCb);\n relativeEntries = relativeEntries.filter(filterCb);\n return isRemoved;\n }, \"removeByName\");\n const removeByReference = /* @__PURE__ */ __name((toRemove) => {\n let isRemoved = false;\n const filterCb = /* @__PURE__ */ __name((entry) => {\n if (entry.middleware === toRemove) {\n isRemoved = true;\n for (const alias of getAllAliases(entry.name, entry.aliases)) {\n entriesNameSet.delete(alias);\n }\n return false;\n }\n return true;\n }, \"filterCb\");\n absoluteEntries = absoluteEntries.filter(filterCb);\n relativeEntries = relativeEntries.filter(filterCb);\n return isRemoved;\n }, \"removeByReference\");\n const cloneTo = /* @__PURE__ */ __name((toStack) => {\n var _a;\n absoluteEntries.forEach((entry) => {\n toStack.add(entry.middleware, { ...entry });\n });\n relativeEntries.forEach((entry) => {\n toStack.addRelativeTo(entry.middleware, { ...entry });\n });\n (_a = toStack.identifyOnResolve) == null ? void 0 : _a.call(toStack, stack.identifyOnResolve());\n return toStack;\n }, \"cloneTo\");\n const expandRelativeMiddlewareList = /* @__PURE__ */ __name((from) => {\n const expandedMiddlewareList = [];\n from.before.forEach((entry) => {\n if (entry.before.length === 0 && entry.after.length === 0) {\n expandedMiddlewareList.push(entry);\n } else {\n expandedMiddlewareList.push(...expandRelativeMiddlewareList(entry));\n }\n });\n expandedMiddlewareList.push(from);\n from.after.reverse().forEach((entry) => {\n if (entry.before.length === 0 && entry.after.length === 0) {\n expandedMiddlewareList.push(entry);\n } else {\n expandedMiddlewareList.push(...expandRelativeMiddlewareList(entry));\n }\n });\n return expandedMiddlewareList;\n }, \"expandRelativeMiddlewareList\");\n const getMiddlewareList = /* @__PURE__ */ __name((debug = false) => {\n const normalizedAbsoluteEntries = [];\n const normalizedRelativeEntries = [];\n const normalizedEntriesNameMap = {};\n absoluteEntries.forEach((entry) => {\n const normalizedEntry = {\n ...entry,\n before: [],\n after: []\n };\n for (const alias of getAllAliases(normalizedEntry.name, normalizedEntry.aliases)) {\n normalizedEntriesNameMap[alias] = normalizedEntry;\n }\n normalizedAbsoluteEntries.push(normalizedEntry);\n });\n relativeEntries.forEach((entry) => {\n const normalizedEntry = {\n ...entry,\n before: [],\n after: []\n };\n for (const alias of getAllAliases(normalizedEntry.name, normalizedEntry.aliases)) {\n normalizedEntriesNameMap[alias] = normalizedEntry;\n }\n normalizedRelativeEntries.push(normalizedEntry);\n });\n normalizedRelativeEntries.forEach((entry) => {\n if (entry.toMiddleware) {\n const toMiddleware = normalizedEntriesNameMap[entry.toMiddleware];\n if (toMiddleware === void 0) {\n if (debug) {\n return;\n }\n throw new Error(\n `${entry.toMiddleware} is not found when adding ${getMiddlewareNameWithAliases(entry.name, entry.aliases)} middleware ${entry.relation} ${entry.toMiddleware}`\n );\n }\n if (entry.relation === \"after\") {\n toMiddleware.after.push(entry);\n }\n if (entry.relation === \"before\") {\n toMiddleware.before.push(entry);\n }\n }\n });\n const mainChain = sort(normalizedAbsoluteEntries).map(expandRelativeMiddlewareList).reduce(\n (wholeList, expandedMiddlewareList) => {\n wholeList.push(...expandedMiddlewareList);\n return wholeList;\n },\n []\n );\n return mainChain;\n }, \"getMiddlewareList\");\n const stack = {\n add: (middleware, options = {}) => {\n const { name, override, aliases: _aliases } = options;\n const entry = {\n step: \"initialize\",\n priority: \"normal\",\n middleware,\n ...options\n };\n const aliases = getAllAliases(name, _aliases);\n if (aliases.length > 0) {\n if (aliases.some((alias) => entriesNameSet.has(alias))) {\n if (!override)\n throw new Error(`Duplicate middleware name '${getMiddlewareNameWithAliases(name, _aliases)}'`);\n for (const alias of aliases) {\n const toOverrideIndex = absoluteEntries.findIndex(\n (entry2) => {\n var _a;\n return entry2.name === alias || ((_a = entry2.aliases) == null ? void 0 : _a.some((a) => a === alias));\n }\n );\n if (toOverrideIndex === -1) {\n continue;\n }\n const toOverride = absoluteEntries[toOverrideIndex];\n if (toOverride.step !== entry.step || entry.priority !== toOverride.priority) {\n throw new Error(\n `\"${getMiddlewareNameWithAliases(toOverride.name, toOverride.aliases)}\" middleware with ${toOverride.priority} priority in ${toOverride.step} step cannot be overridden by \"${getMiddlewareNameWithAliases(name, _aliases)}\" middleware with ${entry.priority} priority in ${entry.step} step.`\n );\n }\n absoluteEntries.splice(toOverrideIndex, 1);\n }\n }\n for (const alias of aliases) {\n entriesNameSet.add(alias);\n }\n }\n absoluteEntries.push(entry);\n },\n addRelativeTo: (middleware, options) => {\n const { name, override, aliases: _aliases } = options;\n const entry = {\n middleware,\n ...options\n };\n const aliases = getAllAliases(name, _aliases);\n if (aliases.length > 0) {\n if (aliases.some((alias) => entriesNameSet.has(alias))) {\n if (!override)\n throw new Error(`Duplicate middleware name '${getMiddlewareNameWithAliases(name, _aliases)}'`);\n for (const alias of aliases) {\n const toOverrideIndex = relativeEntries.findIndex(\n (entry2) => {\n var _a;\n return entry2.name === alias || ((_a = entry2.aliases) == null ? void 0 : _a.some((a) => a === alias));\n }\n );\n if (toOverrideIndex === -1) {\n continue;\n }\n const toOverride = relativeEntries[toOverrideIndex];\n if (toOverride.toMiddleware !== entry.toMiddleware || toOverride.relation !== entry.relation) {\n throw new Error(\n `\"${getMiddlewareNameWithAliases(toOverride.name, toOverride.aliases)}\" middleware ${toOverride.relation} \"${toOverride.toMiddleware}\" middleware cannot be overridden by \"${getMiddlewareNameWithAliases(name, _aliases)}\" middleware ${entry.relation} \"${entry.toMiddleware}\" middleware.`\n );\n }\n relativeEntries.splice(toOverrideIndex, 1);\n }\n }\n for (const alias of aliases) {\n entriesNameSet.add(alias);\n }\n }\n relativeEntries.push(entry);\n },\n clone: () => cloneTo(constructStack()),\n use: (plugin) => {\n plugin.applyToStack(stack);\n },\n remove: (toRemove) => {\n if (typeof toRemove === \"string\")\n return removeByName(toRemove);\n else\n return removeByReference(toRemove);\n },\n removeByTag: (toRemove) => {\n let isRemoved = false;\n const filterCb = /* @__PURE__ */ __name((entry) => {\n const { tags, name, aliases: _aliases } = entry;\n if (tags && tags.includes(toRemove)) {\n const aliases = getAllAliases(name, _aliases);\n for (const alias of aliases) {\n entriesNameSet.delete(alias);\n }\n isRemoved = true;\n return false;\n }\n return true;\n }, \"filterCb\");\n absoluteEntries = absoluteEntries.filter(filterCb);\n relativeEntries = relativeEntries.filter(filterCb);\n return isRemoved;\n },\n concat: (from) => {\n var _a;\n const cloned = cloneTo(constructStack());\n cloned.use(from);\n cloned.identifyOnResolve(\n identifyOnResolve || cloned.identifyOnResolve() || (((_a = from.identifyOnResolve) == null ? void 0 : _a.call(from)) ?? false)\n );\n return cloned;\n },\n applyToStack: cloneTo,\n identify: () => {\n return getMiddlewareList(true).map((mw) => {\n const step = mw.step ?? mw.relation + \" \" + mw.toMiddleware;\n return getMiddlewareNameWithAliases(mw.name, mw.aliases) + \" - \" + step;\n });\n },\n identifyOnResolve(toggle) {\n if (typeof toggle === \"boolean\")\n identifyOnResolve = toggle;\n return identifyOnResolve;\n },\n resolve: (handler, context) => {\n for (const middleware of getMiddlewareList().map((entry) => entry.middleware).reverse()) {\n handler = middleware(handler, context);\n }\n if (identifyOnResolve) {\n console.log(stack.identify());\n }\n return handler;\n }\n };\n return stack;\n}, \"constructStack\");\nvar stepWeights = {\n initialize: 5,\n serialize: 4,\n build: 3,\n finalizeRequest: 2,\n deserialize: 1\n};\nvar priorityWeights = {\n high: 3,\n normal: 2,\n low: 1\n};\n// Annotate the CommonJS export names for ESM import in node:\n\n0 && (module.exports = {\n constructStack\n});\n\n","var __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/index.ts\nvar src_exports = {};\n__export(src_exports, {\n loadConfig: () => loadConfig\n});\nmodule.exports = __toCommonJS(src_exports);\n\n// src/configLoader.ts\n\n\n// src/fromEnv.ts\nvar import_property_provider = require(\"@smithy/property-provider\");\n\n// src/getSelectorName.ts\nfunction getSelectorName(functionString) {\n try {\n const constants = new Set(Array.from(functionString.match(/([A-Z_]){3,}/g) ?? []));\n constants.delete(\"CONFIG\");\n constants.delete(\"CONFIG_PREFIX_SEPARATOR\");\n constants.delete(\"ENV\");\n return [...constants].join(\", \");\n } catch (e) {\n return functionString;\n }\n}\n__name(getSelectorName, \"getSelectorName\");\n\n// src/fromEnv.ts\nvar fromEnv = /* @__PURE__ */ __name((envVarSelector, logger) => async () => {\n try {\n const config = envVarSelector(process.env);\n if (config === void 0) {\n throw new Error();\n }\n return config;\n } catch (e) {\n throw new import_property_provider.CredentialsProviderError(\n e.message || `Not found in ENV: ${getSelectorName(envVarSelector.toString())}`,\n { logger }\n );\n }\n}, \"fromEnv\");\n\n// src/fromSharedConfigFiles.ts\n\nvar import_shared_ini_file_loader = require(\"@smithy/shared-ini-file-loader\");\nvar fromSharedConfigFiles = /* @__PURE__ */ __name((configSelector, { preferredFile = \"config\", ...init } = {}) => async () => {\n const profile = (0, import_shared_ini_file_loader.getProfileName)(init);\n const { configFile, credentialsFile } = await (0, import_shared_ini_file_loader.loadSharedConfigFiles)(init);\n const profileFromCredentials = credentialsFile[profile] || {};\n const profileFromConfig = configFile[profile] || {};\n const mergedProfile = preferredFile === \"config\" ? { ...profileFromCredentials, ...profileFromConfig } : { ...profileFromConfig, ...profileFromCredentials };\n try {\n const cfgFile = preferredFile === \"config\" ? configFile : credentialsFile;\n const configValue = configSelector(mergedProfile, cfgFile);\n if (configValue === void 0) {\n throw new Error();\n }\n return configValue;\n } catch (e) {\n throw new import_property_provider.CredentialsProviderError(\n e.message || `Not found in config files w/ profile [${profile}]: ${getSelectorName(configSelector.toString())}`,\n { logger: init.logger }\n );\n }\n}, \"fromSharedConfigFiles\");\n\n// src/fromStatic.ts\n\nvar isFunction = /* @__PURE__ */ __name((func) => typeof func === \"function\", \"isFunction\");\nvar fromStatic = /* @__PURE__ */ __name((defaultValue) => isFunction(defaultValue) ? async () => await defaultValue() : (0, import_property_provider.fromStatic)(defaultValue), \"fromStatic\");\n\n// src/configLoader.ts\nvar loadConfig = /* @__PURE__ */ __name(({ environmentVariableSelector, configFileSelector, default: defaultValue }, configuration = {}) => (0, import_property_provider.memoize)(\n (0, import_property_provider.chain)(\n fromEnv(environmentVariableSelector),\n fromSharedConfigFiles(configFileSelector, configuration),\n fromStatic(defaultValue)\n )\n), \"loadConfig\");\n// Annotate the CommonJS export names for ESM import in node:\n\n0 && (module.exports = {\n loadConfig\n});\n\n","var __create = Object.create;\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __getProtoOf = Object.getPrototypeOf;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(\n // If the importer is in node compatibility mode or this is not an ESM\n // file that has been converted to a CommonJS file using a Babel-\n // compatible transform (i.e. \"__esModule\" has not been set), then set\n // \"default\" to the CommonJS \"module.exports\" for node compatibility.\n isNodeMode || !mod || !mod.__esModule ? __defProp(target, \"default\", { value: mod, enumerable: true }) : target,\n mod\n));\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/index.ts\nvar src_exports = {};\n__export(src_exports, {\n DEFAULT_REQUEST_TIMEOUT: () => DEFAULT_REQUEST_TIMEOUT,\n NodeHttp2Handler: () => NodeHttp2Handler,\n NodeHttpHandler: () => NodeHttpHandler,\n streamCollector: () => streamCollector\n});\nmodule.exports = __toCommonJS(src_exports);\n\n// src/node-http-handler.ts\nvar import_protocol_http = require(\"@smithy/protocol-http\");\nvar import_querystring_builder = require(\"@smithy/querystring-builder\");\nvar import_http = require(\"http\");\nvar import_https = require(\"https\");\n\n// src/constants.ts\nvar NODEJS_TIMEOUT_ERROR_CODES = [\"ECONNRESET\", \"EPIPE\", \"ETIMEDOUT\"];\n\n// src/get-transformed-headers.ts\nvar getTransformedHeaders = /* @__PURE__ */ __name((headers) => {\n const transformedHeaders = {};\n for (const name of Object.keys(headers)) {\n const headerValues = headers[name];\n transformedHeaders[name] = Array.isArray(headerValues) ? headerValues.join(\",\") : headerValues;\n }\n return transformedHeaders;\n}, \"getTransformedHeaders\");\n\n// src/set-connection-timeout.ts\nvar DEFER_EVENT_LISTENER_TIME = 1e3;\nvar setConnectionTimeout = /* @__PURE__ */ __name((request, reject, timeoutInMs = 0) => {\n if (!timeoutInMs) {\n return -1;\n }\n const registerTimeout = /* @__PURE__ */ __name((offset) => {\n const timeoutId = setTimeout(() => {\n request.destroy();\n reject(\n Object.assign(new Error(`Socket timed out without establishing a connection within ${timeoutInMs} ms`), {\n name: \"TimeoutError\"\n })\n );\n }, timeoutInMs - offset);\n const doWithSocket = /* @__PURE__ */ __name((socket) => {\n if (socket == null ? void 0 : socket.connecting) {\n socket.on(\"connect\", () => {\n clearTimeout(timeoutId);\n });\n } else {\n clearTimeout(timeoutId);\n }\n }, \"doWithSocket\");\n if (request.socket) {\n doWithSocket(request.socket);\n } else {\n request.on(\"socket\", doWithSocket);\n }\n }, \"registerTimeout\");\n if (timeoutInMs < 2e3) {\n registerTimeout(0);\n return 0;\n }\n return setTimeout(registerTimeout.bind(null, DEFER_EVENT_LISTENER_TIME), DEFER_EVENT_LISTENER_TIME);\n}, \"setConnectionTimeout\");\n\n// src/set-socket-keep-alive.ts\nvar DEFER_EVENT_LISTENER_TIME2 = 3e3;\nvar setSocketKeepAlive = /* @__PURE__ */ __name((request, { keepAlive, keepAliveMsecs }, deferTimeMs = DEFER_EVENT_LISTENER_TIME2) => {\n if (keepAlive !== true) {\n return -1;\n }\n const registerListener = /* @__PURE__ */ __name(() => {\n if (request.socket) {\n request.socket.setKeepAlive(keepAlive, keepAliveMsecs || 0);\n } else {\n request.on(\"socket\", (socket) => {\n socket.setKeepAlive(keepAlive, keepAliveMsecs || 0);\n });\n }\n }, \"registerListener\");\n if (deferTimeMs === 0) {\n registerListener();\n return 0;\n }\n return setTimeout(registerListener, deferTimeMs);\n}, \"setSocketKeepAlive\");\n\n// src/set-socket-timeout.ts\nvar DEFER_EVENT_LISTENER_TIME3 = 3e3;\nvar setSocketTimeout = /* @__PURE__ */ __name((request, reject, timeoutInMs = 0) => {\n const registerTimeout = /* @__PURE__ */ __name((offset) => {\n request.setTimeout(timeoutInMs - offset, () => {\n request.destroy();\n reject(Object.assign(new Error(`Connection timed out after ${timeoutInMs} ms`), { name: \"TimeoutError\" }));\n });\n }, \"registerTimeout\");\n if (0 < timeoutInMs && timeoutInMs < 6e3) {\n registerTimeout(0);\n return 0;\n }\n return setTimeout(\n registerTimeout.bind(null, timeoutInMs === 0 ? 0 : DEFER_EVENT_LISTENER_TIME3),\n DEFER_EVENT_LISTENER_TIME3\n );\n}, \"setSocketTimeout\");\n\n// src/write-request-body.ts\nvar import_stream = require(\"stream\");\nvar MIN_WAIT_TIME = 1e3;\nasync function writeRequestBody(httpRequest, request, maxContinueTimeoutMs = MIN_WAIT_TIME) {\n const headers = request.headers ?? {};\n const expect = headers[\"Expect\"] || headers[\"expect\"];\n let timeoutId = -1;\n let hasError = false;\n if (expect === \"100-continue\") {\n await Promise.race([\n new Promise((resolve) => {\n timeoutId = Number(setTimeout(resolve, Math.max(MIN_WAIT_TIME, maxContinueTimeoutMs)));\n }),\n new Promise((resolve) => {\n httpRequest.on(\"continue\", () => {\n clearTimeout(timeoutId);\n resolve();\n });\n httpRequest.on(\"error\", () => {\n hasError = true;\n clearTimeout(timeoutId);\n resolve();\n });\n })\n ]);\n }\n if (!hasError) {\n writeBody(httpRequest, request.body);\n }\n}\n__name(writeRequestBody, \"writeRequestBody\");\nfunction writeBody(httpRequest, body) {\n if (body instanceof import_stream.Readable) {\n body.pipe(httpRequest);\n return;\n }\n if (body) {\n if (Buffer.isBuffer(body) || typeof body === \"string\") {\n httpRequest.end(body);\n return;\n }\n const uint8 = body;\n if (typeof uint8 === \"object\" && uint8.buffer && typeof uint8.byteOffset === \"number\" && typeof uint8.byteLength === \"number\") {\n httpRequest.end(Buffer.from(uint8.buffer, uint8.byteOffset, uint8.byteLength));\n return;\n }\n httpRequest.end(Buffer.from(body));\n return;\n }\n httpRequest.end();\n}\n__name(writeBody, \"writeBody\");\n\n// src/node-http-handler.ts\nvar DEFAULT_REQUEST_TIMEOUT = 0;\nvar _NodeHttpHandler = class _NodeHttpHandler {\n constructor(options) {\n this.socketWarningTimestamp = 0;\n // Node http handler is hard-coded to http/1.1: https://github.com/nodejs/node/blob/ff5664b83b89c55e4ab5d5f60068fb457f1f5872/lib/_http_server.js#L286\n this.metadata = { handlerProtocol: \"http/1.1\" };\n this.configProvider = new Promise((resolve, reject) => {\n if (typeof options === \"function\") {\n options().then((_options) => {\n resolve(this.resolveDefaultConfig(_options));\n }).catch(reject);\n } else {\n resolve(this.resolveDefaultConfig(options));\n }\n });\n }\n /**\n * @returns the input if it is an HttpHandler of any class,\n * or instantiates a new instance of this handler.\n */\n static create(instanceOrOptions) {\n if (typeof (instanceOrOptions == null ? void 0 : instanceOrOptions.handle) === \"function\") {\n return instanceOrOptions;\n }\n return new _NodeHttpHandler(instanceOrOptions);\n }\n /**\n * @internal\n *\n * @param agent - http(s) agent in use by the NodeHttpHandler instance.\n * @param socketWarningTimestamp - last socket usage check timestamp.\n * @param logger - channel for the warning.\n * @returns timestamp of last emitted warning.\n */\n static checkSocketUsage(agent, socketWarningTimestamp, logger = console) {\n var _a, _b, _c;\n const { sockets, requests, maxSockets } = agent;\n if (typeof maxSockets !== \"number\" || maxSockets === Infinity) {\n return socketWarningTimestamp;\n }\n const interval = 15e3;\n if (Date.now() - interval < socketWarningTimestamp) {\n return socketWarningTimestamp;\n }\n if (sockets && requests) {\n for (const origin in sockets) {\n const socketsInUse = ((_a = sockets[origin]) == null ? void 0 : _a.length) ?? 0;\n const requestsEnqueued = ((_b = requests[origin]) == null ? void 0 : _b.length) ?? 0;\n if (socketsInUse >= maxSockets && requestsEnqueued >= 2 * maxSockets) {\n (_c = logger == null ? void 0 : logger.warn) == null ? void 0 : _c.call(\n logger,\n `@smithy/node-http-handler:WARN - socket usage at capacity=${socketsInUse} and ${requestsEnqueued} additional requests are enqueued.\nSee https://docs.aws.amazon.com/sdk-for-javascript/v3/developer-guide/node-configuring-maxsockets.html\nor increase socketAcquisitionWarningTimeout=(millis) in the NodeHttpHandler config.`\n );\n return Date.now();\n }\n }\n }\n return socketWarningTimestamp;\n }\n resolveDefaultConfig(options) {\n const { requestTimeout, connectionTimeout, socketTimeout, httpAgent, httpsAgent } = options || {};\n const keepAlive = true;\n const maxSockets = 50;\n return {\n connectionTimeout,\n requestTimeout: requestTimeout ?? socketTimeout,\n httpAgent: (() => {\n if (httpAgent instanceof import_http.Agent || typeof (httpAgent == null ? void 0 : httpAgent.destroy) === \"function\") {\n return httpAgent;\n }\n return new import_http.Agent({ keepAlive, maxSockets, ...httpAgent });\n })(),\n httpsAgent: (() => {\n if (httpsAgent instanceof import_https.Agent || typeof (httpsAgent == null ? void 0 : httpsAgent.destroy) === \"function\") {\n return httpsAgent;\n }\n return new import_https.Agent({ keepAlive, maxSockets, ...httpsAgent });\n })(),\n logger: console\n };\n }\n destroy() {\n var _a, _b, _c, _d;\n (_b = (_a = this.config) == null ? void 0 : _a.httpAgent) == null ? void 0 : _b.destroy();\n (_d = (_c = this.config) == null ? void 0 : _c.httpsAgent) == null ? void 0 : _d.destroy();\n }\n async handle(request, { abortSignal } = {}) {\n if (!this.config) {\n this.config = await this.configProvider;\n }\n return new Promise((_resolve, _reject) => {\n let writeRequestBodyPromise = void 0;\n const timeouts = [];\n const resolve = /* @__PURE__ */ __name(async (arg) => {\n await writeRequestBodyPromise;\n timeouts.forEach(clearTimeout);\n _resolve(arg);\n }, \"resolve\");\n const reject = /* @__PURE__ */ __name(async (arg) => {\n await writeRequestBodyPromise;\n timeouts.forEach(clearTimeout);\n _reject(arg);\n }, \"reject\");\n if (!this.config) {\n throw new Error(\"Node HTTP request handler config is not resolved\");\n }\n if (abortSignal == null ? void 0 : abortSignal.aborted) {\n const abortError = new Error(\"Request aborted\");\n abortError.name = \"AbortError\";\n reject(abortError);\n return;\n }\n const isSSL = request.protocol === \"https:\";\n const agent = isSSL ? this.config.httpsAgent : this.config.httpAgent;\n timeouts.push(\n setTimeout(\n () => {\n this.socketWarningTimestamp = _NodeHttpHandler.checkSocketUsage(\n agent,\n this.socketWarningTimestamp,\n this.config.logger\n );\n },\n this.config.socketAcquisitionWarningTimeout ?? (this.config.requestTimeout ?? 2e3) + (this.config.connectionTimeout ?? 1e3)\n )\n );\n const queryString = (0, import_querystring_builder.buildQueryString)(request.query || {});\n let auth = void 0;\n if (request.username != null || request.password != null) {\n const username = request.username ?? \"\";\n const password = request.password ?? \"\";\n auth = `${username}:${password}`;\n }\n let path = request.path;\n if (queryString) {\n path += `?${queryString}`;\n }\n if (request.fragment) {\n path += `#${request.fragment}`;\n }\n let hostname = request.hostname ?? \"\";\n if (hostname[0] === \"[\" && hostname.endsWith(\"]\")) {\n hostname = request.hostname.slice(1, -1);\n } else {\n hostname = request.hostname;\n }\n const nodeHttpsOptions = {\n headers: request.headers,\n host: hostname,\n method: request.method,\n path,\n port: request.port,\n agent,\n auth\n };\n const requestFunc = isSSL ? import_https.request : import_http.request;\n const req = requestFunc(nodeHttpsOptions, (res) => {\n const httpResponse = new import_protocol_http.HttpResponse({\n statusCode: res.statusCode || -1,\n reason: res.statusMessage,\n headers: getTransformedHeaders(res.headers),\n body: res\n });\n resolve({ response: httpResponse });\n });\n req.on(\"error\", (err) => {\n if (NODEJS_TIMEOUT_ERROR_CODES.includes(err.code)) {\n reject(Object.assign(err, { name: \"TimeoutError\" }));\n } else {\n reject(err);\n }\n });\n if (abortSignal) {\n const onAbort = /* @__PURE__ */ __name(() => {\n req.destroy();\n const abortError = new Error(\"Request aborted\");\n abortError.name = \"AbortError\";\n reject(abortError);\n }, \"onAbort\");\n if (typeof abortSignal.addEventListener === \"function\") {\n const signal = abortSignal;\n signal.addEventListener(\"abort\", onAbort, { once: true });\n req.once(\"close\", () => signal.removeEventListener(\"abort\", onAbort));\n } else {\n abortSignal.onabort = onAbort;\n }\n }\n timeouts.push(setConnectionTimeout(req, reject, this.config.connectionTimeout));\n timeouts.push(setSocketTimeout(req, reject, this.config.requestTimeout));\n const httpAgent = nodeHttpsOptions.agent;\n if (typeof httpAgent === \"object\" && \"keepAlive\" in httpAgent) {\n timeouts.push(\n setSocketKeepAlive(req, {\n // @ts-expect-error keepAlive is not public on httpAgent.\n keepAlive: httpAgent.keepAlive,\n // @ts-expect-error keepAliveMsecs is not public on httpAgent.\n keepAliveMsecs: httpAgent.keepAliveMsecs\n })\n );\n }\n writeRequestBodyPromise = writeRequestBody(req, request, this.config.requestTimeout).catch((e) => {\n timeouts.forEach(clearTimeout);\n return _reject(e);\n });\n });\n }\n updateHttpClientConfig(key, value) {\n this.config = void 0;\n this.configProvider = this.configProvider.then((config) => {\n return {\n ...config,\n [key]: value\n };\n });\n }\n httpHandlerConfigs() {\n return this.config ?? {};\n }\n};\n__name(_NodeHttpHandler, \"NodeHttpHandler\");\nvar NodeHttpHandler = _NodeHttpHandler;\n\n// src/node-http2-handler.ts\n\n\nvar import_http22 = require(\"http2\");\n\n// src/node-http2-connection-manager.ts\nvar import_http2 = __toESM(require(\"http2\"));\n\n// src/node-http2-connection-pool.ts\nvar _NodeHttp2ConnectionPool = class _NodeHttp2ConnectionPool {\n constructor(sessions) {\n this.sessions = [];\n this.sessions = sessions ?? [];\n }\n poll() {\n if (this.sessions.length > 0) {\n return this.sessions.shift();\n }\n }\n offerLast(session) {\n this.sessions.push(session);\n }\n contains(session) {\n return this.sessions.includes(session);\n }\n remove(session) {\n this.sessions = this.sessions.filter((s) => s !== session);\n }\n [Symbol.iterator]() {\n return this.sessions[Symbol.iterator]();\n }\n destroy(connection) {\n for (const session of this.sessions) {\n if (session === connection) {\n if (!session.destroyed) {\n session.destroy();\n }\n }\n }\n }\n};\n__name(_NodeHttp2ConnectionPool, \"NodeHttp2ConnectionPool\");\nvar NodeHttp2ConnectionPool = _NodeHttp2ConnectionPool;\n\n// src/node-http2-connection-manager.ts\nvar _NodeHttp2ConnectionManager = class _NodeHttp2ConnectionManager {\n constructor(config) {\n this.sessionCache = /* @__PURE__ */ new Map();\n this.config = config;\n if (this.config.maxConcurrency && this.config.maxConcurrency <= 0) {\n throw new RangeError(\"maxConcurrency must be greater than zero.\");\n }\n }\n lease(requestContext, connectionConfiguration) {\n const url = this.getUrlString(requestContext);\n const existingPool = this.sessionCache.get(url);\n if (existingPool) {\n const existingSession = existingPool.poll();\n if (existingSession && !this.config.disableConcurrency) {\n return existingSession;\n }\n }\n const session = import_http2.default.connect(url);\n if (this.config.maxConcurrency) {\n session.settings({ maxConcurrentStreams: this.config.maxConcurrency }, (err) => {\n if (err) {\n throw new Error(\n \"Fail to set maxConcurrentStreams to \" + this.config.maxConcurrency + \"when creating new session for \" + requestContext.destination.toString()\n );\n }\n });\n }\n session.unref();\n const destroySessionCb = /* @__PURE__ */ __name(() => {\n session.destroy();\n this.deleteSession(url, session);\n }, \"destroySessionCb\");\n session.on(\"goaway\", destroySessionCb);\n session.on(\"error\", destroySessionCb);\n session.on(\"frameError\", destroySessionCb);\n session.on(\"close\", () => this.deleteSession(url, session));\n if (connectionConfiguration.requestTimeout) {\n session.setTimeout(connectionConfiguration.requestTimeout, destroySessionCb);\n }\n const connectionPool = this.sessionCache.get(url) || new NodeHttp2ConnectionPool();\n connectionPool.offerLast(session);\n this.sessionCache.set(url, connectionPool);\n return session;\n }\n /**\n * Delete a session from the connection pool.\n * @param authority The authority of the session to delete.\n * @param session The session to delete.\n */\n deleteSession(authority, session) {\n const existingConnectionPool = this.sessionCache.get(authority);\n if (!existingConnectionPool) {\n return;\n }\n if (!existingConnectionPool.contains(session)) {\n return;\n }\n existingConnectionPool.remove(session);\n this.sessionCache.set(authority, existingConnectionPool);\n }\n release(requestContext, session) {\n var _a;\n const cacheKey = this.getUrlString(requestContext);\n (_a = this.sessionCache.get(cacheKey)) == null ? void 0 : _a.offerLast(session);\n }\n destroy() {\n for (const [key, connectionPool] of this.sessionCache) {\n for (const session of connectionPool) {\n if (!session.destroyed) {\n session.destroy();\n }\n connectionPool.remove(session);\n }\n this.sessionCache.delete(key);\n }\n }\n setMaxConcurrentStreams(maxConcurrentStreams) {\n if (this.config.maxConcurrency && this.config.maxConcurrency <= 0) {\n throw new RangeError(\"maxConcurrentStreams must be greater than zero.\");\n }\n this.config.maxConcurrency = maxConcurrentStreams;\n }\n setDisableConcurrentStreams(disableConcurrentStreams) {\n this.config.disableConcurrency = disableConcurrentStreams;\n }\n getUrlString(request) {\n return request.destination.toString();\n }\n};\n__name(_NodeHttp2ConnectionManager, \"NodeHttp2ConnectionManager\");\nvar NodeHttp2ConnectionManager = _NodeHttp2ConnectionManager;\n\n// src/node-http2-handler.ts\nvar _NodeHttp2Handler = class _NodeHttp2Handler {\n constructor(options) {\n this.metadata = { handlerProtocol: \"h2\" };\n this.connectionManager = new NodeHttp2ConnectionManager({});\n this.configProvider = new Promise((resolve, reject) => {\n if (typeof options === \"function\") {\n options().then((opts) => {\n resolve(opts || {});\n }).catch(reject);\n } else {\n resolve(options || {});\n }\n });\n }\n /**\n * @returns the input if it is an HttpHandler of any class,\n * or instantiates a new instance of this handler.\n */\n static create(instanceOrOptions) {\n if (typeof (instanceOrOptions == null ? void 0 : instanceOrOptions.handle) === \"function\") {\n return instanceOrOptions;\n }\n return new _NodeHttp2Handler(instanceOrOptions);\n }\n destroy() {\n this.connectionManager.destroy();\n }\n async handle(request, { abortSignal } = {}) {\n if (!this.config) {\n this.config = await this.configProvider;\n this.connectionManager.setDisableConcurrentStreams(this.config.disableConcurrentStreams || false);\n if (this.config.maxConcurrentStreams) {\n this.connectionManager.setMaxConcurrentStreams(this.config.maxConcurrentStreams);\n }\n }\n const { requestTimeout, disableConcurrentStreams } = this.config;\n return new Promise((_resolve, _reject) => {\n var _a;\n let fulfilled = false;\n let writeRequestBodyPromise = void 0;\n const resolve = /* @__PURE__ */ __name(async (arg) => {\n await writeRequestBodyPromise;\n _resolve(arg);\n }, \"resolve\");\n const reject = /* @__PURE__ */ __name(async (arg) => {\n await writeRequestBodyPromise;\n _reject(arg);\n }, \"reject\");\n if (abortSignal == null ? void 0 : abortSignal.aborted) {\n fulfilled = true;\n const abortError = new Error(\"Request aborted\");\n abortError.name = \"AbortError\";\n reject(abortError);\n return;\n }\n const { hostname, method, port, protocol, query } = request;\n let auth = \"\";\n if (request.username != null || request.password != null) {\n const username = request.username ?? \"\";\n const password = request.password ?? \"\";\n auth = `${username}:${password}@`;\n }\n const authority = `${protocol}//${auth}${hostname}${port ? `:${port}` : \"\"}`;\n const requestContext = { destination: new URL(authority) };\n const session = this.connectionManager.lease(requestContext, {\n requestTimeout: (_a = this.config) == null ? void 0 : _a.sessionTimeout,\n disableConcurrentStreams: disableConcurrentStreams || false\n });\n const rejectWithDestroy = /* @__PURE__ */ __name((err) => {\n if (disableConcurrentStreams) {\n this.destroySession(session);\n }\n fulfilled = true;\n reject(err);\n }, \"rejectWithDestroy\");\n const queryString = (0, import_querystring_builder.buildQueryString)(query || {});\n let path = request.path;\n if (queryString) {\n path += `?${queryString}`;\n }\n if (request.fragment) {\n path += `#${request.fragment}`;\n }\n const req = session.request({\n ...request.headers,\n [import_http22.constants.HTTP2_HEADER_PATH]: path,\n [import_http22.constants.HTTP2_HEADER_METHOD]: method\n });\n session.ref();\n req.on(\"response\", (headers) => {\n const httpResponse = new import_protocol_http.HttpResponse({\n statusCode: headers[\":status\"] || -1,\n headers: getTransformedHeaders(headers),\n body: req\n });\n fulfilled = true;\n resolve({ response: httpResponse });\n if (disableConcurrentStreams) {\n session.close();\n this.connectionManager.deleteSession(authority, session);\n }\n });\n if (requestTimeout) {\n req.setTimeout(requestTimeout, () => {\n req.close();\n const timeoutError = new Error(`Stream timed out because of no activity for ${requestTimeout} ms`);\n timeoutError.name = \"TimeoutError\";\n rejectWithDestroy(timeoutError);\n });\n }\n if (abortSignal) {\n const onAbort = /* @__PURE__ */ __name(() => {\n req.close();\n const abortError = new Error(\"Request aborted\");\n abortError.name = \"AbortError\";\n rejectWithDestroy(abortError);\n }, \"onAbort\");\n if (typeof abortSignal.addEventListener === \"function\") {\n const signal = abortSignal;\n signal.addEventListener(\"abort\", onAbort, { once: true });\n req.once(\"close\", () => signal.removeEventListener(\"abort\", onAbort));\n } else {\n abortSignal.onabort = onAbort;\n }\n }\n req.on(\"frameError\", (type, code, id) => {\n rejectWithDestroy(new Error(`Frame type id ${type} in stream id ${id} has failed with code ${code}.`));\n });\n req.on(\"error\", rejectWithDestroy);\n req.on(\"aborted\", () => {\n rejectWithDestroy(\n new Error(`HTTP/2 stream is abnormally aborted in mid-communication with result code ${req.rstCode}.`)\n );\n });\n req.on(\"close\", () => {\n session.unref();\n if (disableConcurrentStreams) {\n session.destroy();\n }\n if (!fulfilled) {\n rejectWithDestroy(new Error(\"Unexpected error: http2 request did not get a response\"));\n }\n });\n writeRequestBodyPromise = writeRequestBody(req, request, requestTimeout);\n });\n }\n updateHttpClientConfig(key, value) {\n this.config = void 0;\n this.configProvider = this.configProvider.then((config) => {\n return {\n ...config,\n [key]: value\n };\n });\n }\n httpHandlerConfigs() {\n return this.config ?? {};\n }\n /**\n * Destroys a session.\n * @param session The session to destroy.\n */\n destroySession(session) {\n if (!session.destroyed) {\n session.destroy();\n }\n }\n};\n__name(_NodeHttp2Handler, \"NodeHttp2Handler\");\nvar NodeHttp2Handler = _NodeHttp2Handler;\n\n// src/stream-collector/collector.ts\n\nvar _Collector = class _Collector extends import_stream.Writable {\n constructor() {\n super(...arguments);\n this.bufferedBytes = [];\n }\n _write(chunk, encoding, callback) {\n this.bufferedBytes.push(chunk);\n callback();\n }\n};\n__name(_Collector, \"Collector\");\nvar Collector = _Collector;\n\n// src/stream-collector/index.ts\nvar streamCollector = /* @__PURE__ */ __name((stream) => {\n if (isReadableStreamInstance(stream)) {\n return collectReadableStream(stream);\n }\n return new Promise((resolve, reject) => {\n const collector = new Collector();\n stream.pipe(collector);\n stream.on(\"error\", (err) => {\n collector.end();\n reject(err);\n });\n collector.on(\"error\", reject);\n collector.on(\"finish\", function() {\n const bytes = new Uint8Array(Buffer.concat(this.bufferedBytes));\n resolve(bytes);\n });\n });\n}, \"streamCollector\");\nvar isReadableStreamInstance = /* @__PURE__ */ __name((stream) => typeof ReadableStream === \"function\" && stream instanceof ReadableStream, \"isReadableStreamInstance\");\nasync function collectReadableStream(stream) {\n const chunks = [];\n const reader = stream.getReader();\n let isDone = false;\n let length = 0;\n while (!isDone) {\n const { done, value } = await reader.read();\n if (value) {\n chunks.push(value);\n length += value.length;\n }\n isDone = done;\n }\n const collected = new Uint8Array(length);\n let offset = 0;\n for (const chunk of chunks) {\n collected.set(chunk, offset);\n offset += chunk.length;\n }\n return collected;\n}\n__name(collectReadableStream, \"collectReadableStream\");\n// Annotate the CommonJS export names for ESM import in node:\n\n0 && (module.exports = {\n DEFAULT_REQUEST_TIMEOUT,\n NodeHttpHandler,\n NodeHttp2Handler,\n streamCollector\n});\n\n","var __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/index.ts\nvar src_exports = {};\n__export(src_exports, {\n CredentialsProviderError: () => CredentialsProviderError,\n ProviderError: () => ProviderError,\n TokenProviderError: () => TokenProviderError,\n chain: () => chain,\n fromStatic: () => fromStatic,\n memoize: () => memoize\n});\nmodule.exports = __toCommonJS(src_exports);\n\n// src/ProviderError.ts\nvar _ProviderError = class _ProviderError extends Error {\n constructor(message, options = true) {\n var _a;\n let logger;\n let tryNextLink = true;\n if (typeof options === \"boolean\") {\n logger = void 0;\n tryNextLink = options;\n } else if (options != null && typeof options === \"object\") {\n logger = options.logger;\n tryNextLink = options.tryNextLink ?? true;\n }\n super(message);\n this.name = \"ProviderError\";\n this.tryNextLink = tryNextLink;\n Object.setPrototypeOf(this, _ProviderError.prototype);\n (_a = logger == null ? void 0 : logger.debug) == null ? void 0 : _a.call(logger, `@smithy/property-provider ${tryNextLink ? \"->\" : \"(!)\"} ${message}`);\n }\n /**\n * @deprecated use new operator.\n */\n static from(error, options = true) {\n return Object.assign(new this(error.message, options), error);\n }\n};\n__name(_ProviderError, \"ProviderError\");\nvar ProviderError = _ProviderError;\n\n// src/CredentialsProviderError.ts\nvar _CredentialsProviderError = class _CredentialsProviderError extends ProviderError {\n /**\n * @override\n */\n constructor(message, options = true) {\n super(message, options);\n this.name = \"CredentialsProviderError\";\n Object.setPrototypeOf(this, _CredentialsProviderError.prototype);\n }\n};\n__name(_CredentialsProviderError, \"CredentialsProviderError\");\nvar CredentialsProviderError = _CredentialsProviderError;\n\n// src/TokenProviderError.ts\nvar _TokenProviderError = class _TokenProviderError extends ProviderError {\n /**\n * @override\n */\n constructor(message, options = true) {\n super(message, options);\n this.name = \"TokenProviderError\";\n Object.setPrototypeOf(this, _TokenProviderError.prototype);\n }\n};\n__name(_TokenProviderError, \"TokenProviderError\");\nvar TokenProviderError = _TokenProviderError;\n\n// src/chain.ts\nvar chain = /* @__PURE__ */ __name((...providers) => async () => {\n if (providers.length === 0) {\n throw new ProviderError(\"No providers in chain\");\n }\n let lastProviderError;\n for (const provider of providers) {\n try {\n const credentials = await provider();\n return credentials;\n } catch (err) {\n lastProviderError = err;\n if (err == null ? void 0 : err.tryNextLink) {\n continue;\n }\n throw err;\n }\n }\n throw lastProviderError;\n}, \"chain\");\n\n// src/fromStatic.ts\nvar fromStatic = /* @__PURE__ */ __name((staticValue) => () => Promise.resolve(staticValue), \"fromStatic\");\n\n// src/memoize.ts\nvar memoize = /* @__PURE__ */ __name((provider, isExpired, requiresRefresh) => {\n let resolved;\n let pending;\n let hasResult;\n let isConstant = false;\n const coalesceProvider = /* @__PURE__ */ __name(async () => {\n if (!pending) {\n pending = provider();\n }\n try {\n resolved = await pending;\n hasResult = true;\n isConstant = false;\n } finally {\n pending = void 0;\n }\n return resolved;\n }, \"coalesceProvider\");\n if (isExpired === void 0) {\n return async (options) => {\n if (!hasResult || (options == null ? void 0 : options.forceRefresh)) {\n resolved = await coalesceProvider();\n }\n return resolved;\n };\n }\n return async (options) => {\n if (!hasResult || (options == null ? void 0 : options.forceRefresh)) {\n resolved = await coalesceProvider();\n }\n if (isConstant) {\n return resolved;\n }\n if (requiresRefresh && !requiresRefresh(resolved)) {\n isConstant = true;\n return resolved;\n }\n if (isExpired(resolved)) {\n await coalesceProvider();\n return resolved;\n }\n return resolved;\n };\n}, \"memoize\");\n// Annotate the CommonJS export names for ESM import in node:\n\n0 && (module.exports = {\n CredentialsProviderError,\n ProviderError,\n TokenProviderError,\n chain,\n fromStatic,\n memoize\n});\n\n","var __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/index.ts\nvar src_exports = {};\n__export(src_exports, {\n Field: () => Field,\n Fields: () => Fields,\n HttpRequest: () => HttpRequest,\n HttpResponse: () => HttpResponse,\n IHttpRequest: () => import_types.HttpRequest,\n getHttpHandlerExtensionConfiguration: () => getHttpHandlerExtensionConfiguration,\n isValidHostname: () => isValidHostname,\n resolveHttpHandlerRuntimeConfig: () => resolveHttpHandlerRuntimeConfig\n});\nmodule.exports = __toCommonJS(src_exports);\n\n// src/extensions/httpExtensionConfiguration.ts\nvar getHttpHandlerExtensionConfiguration = /* @__PURE__ */ __name((runtimeConfig) => {\n let httpHandler = runtimeConfig.httpHandler;\n return {\n setHttpHandler(handler) {\n httpHandler = handler;\n },\n httpHandler() {\n return httpHandler;\n },\n updateHttpClientConfig(key, value) {\n httpHandler.updateHttpClientConfig(key, value);\n },\n httpHandlerConfigs() {\n return httpHandler.httpHandlerConfigs();\n }\n };\n}, \"getHttpHandlerExtensionConfiguration\");\nvar resolveHttpHandlerRuntimeConfig = /* @__PURE__ */ __name((httpHandlerExtensionConfiguration) => {\n return {\n httpHandler: httpHandlerExtensionConfiguration.httpHandler()\n };\n}, \"resolveHttpHandlerRuntimeConfig\");\n\n// src/Field.ts\nvar import_types = require(\"@smithy/types\");\nvar _Field = class _Field {\n constructor({ name, kind = import_types.FieldPosition.HEADER, values = [] }) {\n this.name = name;\n this.kind = kind;\n this.values = values;\n }\n /**\n * Appends a value to the field.\n *\n * @param value The value to append.\n */\n add(value) {\n this.values.push(value);\n }\n /**\n * Overwrite existing field values.\n *\n * @param values The new field values.\n */\n set(values) {\n this.values = values;\n }\n /**\n * Remove all matching entries from list.\n *\n * @param value Value to remove.\n */\n remove(value) {\n this.values = this.values.filter((v) => v !== value);\n }\n /**\n * Get comma-delimited string.\n *\n * @returns String representation of {@link Field}.\n */\n toString() {\n return this.values.map((v) => v.includes(\",\") || v.includes(\" \") ? `\"${v}\"` : v).join(\", \");\n }\n /**\n * Get string values as a list\n *\n * @returns Values in {@link Field} as a list.\n */\n get() {\n return this.values;\n }\n};\n__name(_Field, \"Field\");\nvar Field = _Field;\n\n// src/Fields.ts\nvar _Fields = class _Fields {\n constructor({ fields = [], encoding = \"utf-8\" }) {\n this.entries = {};\n fields.forEach(this.setField.bind(this));\n this.encoding = encoding;\n }\n /**\n * Set entry for a {@link Field} name. The `name`\n * attribute will be used to key the collection.\n *\n * @param field The {@link Field} to set.\n */\n setField(field) {\n this.entries[field.name.toLowerCase()] = field;\n }\n /**\n * Retrieve {@link Field} entry by name.\n *\n * @param name The name of the {@link Field} entry\n * to retrieve\n * @returns The {@link Field} if it exists.\n */\n getField(name) {\n return this.entries[name.toLowerCase()];\n }\n /**\n * Delete entry from collection.\n *\n * @param name Name of the entry to delete.\n */\n removeField(name) {\n delete this.entries[name.toLowerCase()];\n }\n /**\n * Helper function for retrieving specific types of fields.\n * Used to grab all headers or all trailers.\n *\n * @param kind {@link FieldPosition} of entries to retrieve.\n * @returns The {@link Field} entries with the specified\n * {@link FieldPosition}.\n */\n getByType(kind) {\n return Object.values(this.entries).filter((field) => field.kind === kind);\n }\n};\n__name(_Fields, \"Fields\");\nvar Fields = _Fields;\n\n// src/httpRequest.ts\n\nvar _HttpRequest = class _HttpRequest {\n constructor(options) {\n this.method = options.method || \"GET\";\n this.hostname = options.hostname || \"localhost\";\n this.port = options.port;\n this.query = options.query || {};\n this.headers = options.headers || {};\n this.body = options.body;\n this.protocol = options.protocol ? options.protocol.slice(-1) !== \":\" ? `${options.protocol}:` : options.protocol : \"https:\";\n this.path = options.path ? options.path.charAt(0) !== \"/\" ? `/${options.path}` : options.path : \"/\";\n this.username = options.username;\n this.password = options.password;\n this.fragment = options.fragment;\n }\n /**\n * Note: this does not deep-clone the body.\n */\n static clone(request) {\n const cloned = new _HttpRequest({\n ...request,\n headers: { ...request.headers }\n });\n if (cloned.query) {\n cloned.query = cloneQuery(cloned.query);\n }\n return cloned;\n }\n /**\n * This method only actually asserts that request is the interface {@link IHttpRequest},\n * and not necessarily this concrete class. Left in place for API stability.\n *\n * Do not call instance methods on the input of this function, and\n * do not assume it has the HttpRequest prototype.\n */\n static isInstance(request) {\n if (!request) {\n return false;\n }\n const req = request;\n return \"method\" in req && \"protocol\" in req && \"hostname\" in req && \"path\" in req && typeof req[\"query\"] === \"object\" && typeof req[\"headers\"] === \"object\";\n }\n /**\n * @deprecated use static HttpRequest.clone(request) instead. It's not safe to call\n * this method because {@link HttpRequest.isInstance} incorrectly\n * asserts that IHttpRequest (interface) objects are of type HttpRequest (class).\n */\n clone() {\n return _HttpRequest.clone(this);\n }\n};\n__name(_HttpRequest, \"HttpRequest\");\nvar HttpRequest = _HttpRequest;\nfunction cloneQuery(query) {\n return Object.keys(query).reduce((carry, paramName) => {\n const param = query[paramName];\n return {\n ...carry,\n [paramName]: Array.isArray(param) ? [...param] : param\n };\n }, {});\n}\n__name(cloneQuery, \"cloneQuery\");\n\n// src/httpResponse.ts\nvar _HttpResponse = class _HttpResponse {\n constructor(options) {\n this.statusCode = options.statusCode;\n this.reason = options.reason;\n this.headers = options.headers || {};\n this.body = options.body;\n }\n static isInstance(response) {\n if (!response)\n return false;\n const resp = response;\n return typeof resp.statusCode === \"number\" && typeof resp.headers === \"object\";\n }\n};\n__name(_HttpResponse, \"HttpResponse\");\nvar HttpResponse = _HttpResponse;\n\n// src/isValidHostname.ts\nfunction isValidHostname(hostname) {\n const hostPattern = /^[a-z0-9][a-z0-9\\.\\-]*[a-z0-9]$/;\n return hostPattern.test(hostname);\n}\n__name(isValidHostname, \"isValidHostname\");\n// Annotate the CommonJS export names for ESM import in node:\n\n0 && (module.exports = {\n getHttpHandlerExtensionConfiguration,\n resolveHttpHandlerRuntimeConfig,\n Field,\n Fields,\n HttpRequest,\n HttpResponse,\n isValidHostname\n});\n\n","var __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/index.ts\nvar src_exports = {};\n__export(src_exports, {\n AlgorithmId: () => AlgorithmId,\n EndpointURLScheme: () => EndpointURLScheme,\n FieldPosition: () => FieldPosition,\n HttpApiKeyAuthLocation: () => HttpApiKeyAuthLocation,\n HttpAuthLocation: () => HttpAuthLocation,\n IniSectionType: () => IniSectionType,\n RequestHandlerProtocol: () => RequestHandlerProtocol,\n SMITHY_CONTEXT_KEY: () => SMITHY_CONTEXT_KEY,\n getDefaultClientConfiguration: () => getDefaultClientConfiguration,\n resolveDefaultRuntimeConfig: () => resolveDefaultRuntimeConfig\n});\nmodule.exports = __toCommonJS(src_exports);\n\n// src/auth/auth.ts\nvar HttpAuthLocation = /* @__PURE__ */ ((HttpAuthLocation2) => {\n HttpAuthLocation2[\"HEADER\"] = \"header\";\n HttpAuthLocation2[\"QUERY\"] = \"query\";\n return HttpAuthLocation2;\n})(HttpAuthLocation || {});\n\n// src/auth/HttpApiKeyAuth.ts\nvar HttpApiKeyAuthLocation = /* @__PURE__ */ ((HttpApiKeyAuthLocation2) => {\n HttpApiKeyAuthLocation2[\"HEADER\"] = \"header\";\n HttpApiKeyAuthLocation2[\"QUERY\"] = \"query\";\n return HttpApiKeyAuthLocation2;\n})(HttpApiKeyAuthLocation || {});\n\n// src/endpoint.ts\nvar EndpointURLScheme = /* @__PURE__ */ ((EndpointURLScheme2) => {\n EndpointURLScheme2[\"HTTP\"] = \"http\";\n EndpointURLScheme2[\"HTTPS\"] = \"https\";\n return EndpointURLScheme2;\n})(EndpointURLScheme || {});\n\n// src/extensions/checksum.ts\nvar AlgorithmId = /* @__PURE__ */ ((AlgorithmId2) => {\n AlgorithmId2[\"MD5\"] = \"md5\";\n AlgorithmId2[\"CRC32\"] = \"crc32\";\n AlgorithmId2[\"CRC32C\"] = \"crc32c\";\n AlgorithmId2[\"SHA1\"] = \"sha1\";\n AlgorithmId2[\"SHA256\"] = \"sha256\";\n return AlgorithmId2;\n})(AlgorithmId || {});\nvar getChecksumConfiguration = /* @__PURE__ */ __name((runtimeConfig) => {\n const checksumAlgorithms = [];\n if (runtimeConfig.sha256 !== void 0) {\n checksumAlgorithms.push({\n algorithmId: () => \"sha256\" /* SHA256 */,\n checksumConstructor: () => runtimeConfig.sha256\n });\n }\n if (runtimeConfig.md5 != void 0) {\n checksumAlgorithms.push({\n algorithmId: () => \"md5\" /* MD5 */,\n checksumConstructor: () => runtimeConfig.md5\n });\n }\n return {\n _checksumAlgorithms: checksumAlgorithms,\n addChecksumAlgorithm(algo) {\n this._checksumAlgorithms.push(algo);\n },\n checksumAlgorithms() {\n return this._checksumAlgorithms;\n }\n };\n}, \"getChecksumConfiguration\");\nvar resolveChecksumRuntimeConfig = /* @__PURE__ */ __name((clientConfig) => {\n const runtimeConfig = {};\n clientConfig.checksumAlgorithms().forEach((checksumAlgorithm) => {\n runtimeConfig[checksumAlgorithm.algorithmId()] = checksumAlgorithm.checksumConstructor();\n });\n return runtimeConfig;\n}, \"resolveChecksumRuntimeConfig\");\n\n// src/extensions/defaultClientConfiguration.ts\nvar getDefaultClientConfiguration = /* @__PURE__ */ __name((runtimeConfig) => {\n return {\n ...getChecksumConfiguration(runtimeConfig)\n };\n}, \"getDefaultClientConfiguration\");\nvar resolveDefaultRuntimeConfig = /* @__PURE__ */ __name((config) => {\n return {\n ...resolveChecksumRuntimeConfig(config)\n };\n}, \"resolveDefaultRuntimeConfig\");\n\n// src/http.ts\nvar FieldPosition = /* @__PURE__ */ ((FieldPosition2) => {\n FieldPosition2[FieldPosition2[\"HEADER\"] = 0] = \"HEADER\";\n FieldPosition2[FieldPosition2[\"TRAILER\"] = 1] = \"TRAILER\";\n return FieldPosition2;\n})(FieldPosition || {});\n\n// src/middleware.ts\nvar SMITHY_CONTEXT_KEY = \"__smithy_context\";\n\n// src/profile.ts\nvar IniSectionType = /* @__PURE__ */ ((IniSectionType2) => {\n IniSectionType2[\"PROFILE\"] = \"profile\";\n IniSectionType2[\"SSO_SESSION\"] = \"sso-session\";\n IniSectionType2[\"SERVICES\"] = \"services\";\n return IniSectionType2;\n})(IniSectionType || {});\n\n// src/transfer.ts\nvar RequestHandlerProtocol = /* @__PURE__ */ ((RequestHandlerProtocol2) => {\n RequestHandlerProtocol2[\"HTTP_0_9\"] = \"http/0.9\";\n RequestHandlerProtocol2[\"HTTP_1_0\"] = \"http/1.0\";\n RequestHandlerProtocol2[\"TDS_8_0\"] = \"tds/8.0\";\n return RequestHandlerProtocol2;\n})(RequestHandlerProtocol || {});\n// Annotate the CommonJS export names for ESM import in node:\n\n0 && (module.exports = {\n HttpAuthLocation,\n HttpApiKeyAuthLocation,\n EndpointURLScheme,\n AlgorithmId,\n getDefaultClientConfiguration,\n resolveDefaultRuntimeConfig,\n FieldPosition,\n SMITHY_CONTEXT_KEY,\n IniSectionType,\n RequestHandlerProtocol\n});\n\n","var __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/index.ts\nvar src_exports = {};\n__export(src_exports, {\n buildQueryString: () => buildQueryString\n});\nmodule.exports = __toCommonJS(src_exports);\nvar import_util_uri_escape = require(\"@smithy/util-uri-escape\");\nfunction buildQueryString(query) {\n const parts = [];\n for (let key of Object.keys(query).sort()) {\n const value = query[key];\n key = (0, import_util_uri_escape.escapeUri)(key);\n if (Array.isArray(value)) {\n for (let i = 0, iLen = value.length; i < iLen; i++) {\n parts.push(`${key}=${(0, import_util_uri_escape.escapeUri)(value[i])}`);\n }\n } else {\n let qsEntry = key;\n if (value || typeof value === \"string\") {\n qsEntry += `=${(0, import_util_uri_escape.escapeUri)(value)}`;\n }\n parts.push(qsEntry);\n }\n }\n return parts.join(\"&\");\n}\n__name(buildQueryString, \"buildQueryString\");\n// Annotate the CommonJS export names for ESM import in node:\n\n0 && (module.exports = {\n buildQueryString\n});\n\n","var __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/index.ts\nvar src_exports = {};\n__export(src_exports, {\n parseQueryString: () => parseQueryString\n});\nmodule.exports = __toCommonJS(src_exports);\nfunction parseQueryString(querystring) {\n const query = {};\n querystring = querystring.replace(/^\\?/, \"\");\n if (querystring) {\n for (const pair of querystring.split(\"&\")) {\n let [key, value = null] = pair.split(\"=\");\n key = decodeURIComponent(key);\n if (value) {\n value = decodeURIComponent(value);\n }\n if (!(key in query)) {\n query[key] = value;\n } else if (Array.isArray(query[key])) {\n query[key].push(value);\n } else {\n query[key] = [query[key], value];\n }\n }\n }\n return query;\n}\n__name(parseQueryString, \"parseQueryString\");\n// Annotate the CommonJS export names for ESM import in node:\n\n0 && (module.exports = {\n parseQueryString\n});\n\n","var __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/index.ts\nvar src_exports = {};\n__export(src_exports, {\n isClockSkewCorrectedError: () => isClockSkewCorrectedError,\n isClockSkewError: () => isClockSkewError,\n isRetryableByTrait: () => isRetryableByTrait,\n isServerError: () => isServerError,\n isThrottlingError: () => isThrottlingError,\n isTransientError: () => isTransientError\n});\nmodule.exports = __toCommonJS(src_exports);\n\n// src/constants.ts\nvar CLOCK_SKEW_ERROR_CODES = [\n \"AuthFailure\",\n \"InvalidSignatureException\",\n \"RequestExpired\",\n \"RequestInTheFuture\",\n \"RequestTimeTooSkewed\",\n \"SignatureDoesNotMatch\"\n];\nvar THROTTLING_ERROR_CODES = [\n \"BandwidthLimitExceeded\",\n \"EC2ThrottledException\",\n \"LimitExceededException\",\n \"PriorRequestNotComplete\",\n \"ProvisionedThroughputExceededException\",\n \"RequestLimitExceeded\",\n \"RequestThrottled\",\n \"RequestThrottledException\",\n \"SlowDown\",\n \"ThrottledException\",\n \"Throttling\",\n \"ThrottlingException\",\n \"TooManyRequestsException\",\n \"TransactionInProgressException\"\n // DynamoDB\n];\nvar TRANSIENT_ERROR_CODES = [\"TimeoutError\", \"RequestTimeout\", \"RequestTimeoutException\"];\nvar TRANSIENT_ERROR_STATUS_CODES = [500, 502, 503, 504];\nvar NODEJS_TIMEOUT_ERROR_CODES = [\"ECONNRESET\", \"ECONNREFUSED\", \"EPIPE\", \"ETIMEDOUT\"];\n\n// src/index.ts\nvar isRetryableByTrait = /* @__PURE__ */ __name((error) => error.$retryable !== void 0, \"isRetryableByTrait\");\nvar isClockSkewError = /* @__PURE__ */ __name((error) => CLOCK_SKEW_ERROR_CODES.includes(error.name), \"isClockSkewError\");\nvar isClockSkewCorrectedError = /* @__PURE__ */ __name((error) => {\n var _a;\n return (_a = error.$metadata) == null ? void 0 : _a.clockSkewCorrected;\n}, \"isClockSkewCorrectedError\");\nvar isThrottlingError = /* @__PURE__ */ __name((error) => {\n var _a, _b;\n return ((_a = error.$metadata) == null ? void 0 : _a.httpStatusCode) === 429 || THROTTLING_ERROR_CODES.includes(error.name) || ((_b = error.$retryable) == null ? void 0 : _b.throttling) == true;\n}, \"isThrottlingError\");\nvar isTransientError = /* @__PURE__ */ __name((error) => {\n var _a;\n return isClockSkewCorrectedError(error) || TRANSIENT_ERROR_CODES.includes(error.name) || NODEJS_TIMEOUT_ERROR_CODES.includes((error == null ? void 0 : error.code) || \"\") || TRANSIENT_ERROR_STATUS_CODES.includes(((_a = error.$metadata) == null ? void 0 : _a.httpStatusCode) || 0);\n}, \"isTransientError\");\nvar isServerError = /* @__PURE__ */ __name((error) => {\n var _a;\n if (((_a = error.$metadata) == null ? void 0 : _a.httpStatusCode) !== void 0) {\n const statusCode = error.$metadata.httpStatusCode;\n if (500 <= statusCode && statusCode <= 599 && !isTransientError(error)) {\n return true;\n }\n return false;\n }\n return false;\n}, \"isServerError\");\n// Annotate the CommonJS export names for ESM import in node:\n\n0 && (module.exports = {\n isRetryableByTrait,\n isClockSkewError,\n isClockSkewCorrectedError,\n isThrottlingError,\n isTransientError,\n isServerError\n});\n\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getHomeDir = void 0;\nconst os_1 = require(\"os\");\nconst path_1 = require(\"path\");\nconst homeDirCache = {};\nconst getHomeDirCacheKey = () => {\n if (process && process.geteuid) {\n return `${process.geteuid()}`;\n }\n return \"DEFAULT\";\n};\nconst getHomeDir = () => {\n const { HOME, USERPROFILE, HOMEPATH, HOMEDRIVE = `C:${path_1.sep}` } = process.env;\n if (HOME)\n return HOME;\n if (USERPROFILE)\n return USERPROFILE;\n if (HOMEPATH)\n return `${HOMEDRIVE}${HOMEPATH}`;\n const homeDirCacheKey = getHomeDirCacheKey();\n if (!homeDirCache[homeDirCacheKey])\n homeDirCache[homeDirCacheKey] = (0, os_1.homedir)();\n return homeDirCache[homeDirCacheKey];\n};\nexports.getHomeDir = getHomeDir;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getSSOTokenFilepath = void 0;\nconst crypto_1 = require(\"crypto\");\nconst path_1 = require(\"path\");\nconst getHomeDir_1 = require(\"./getHomeDir\");\nconst getSSOTokenFilepath = (id) => {\n const hasher = (0, crypto_1.createHash)(\"sha1\");\n const cacheName = hasher.update(id).digest(\"hex\");\n return (0, path_1.join)((0, getHomeDir_1.getHomeDir)(), \".aws\", \"sso\", \"cache\", `${cacheName}.json`);\n};\nexports.getSSOTokenFilepath = getSSOTokenFilepath;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getSSOTokenFromFile = void 0;\nconst fs_1 = require(\"fs\");\nconst getSSOTokenFilepath_1 = require(\"./getSSOTokenFilepath\");\nconst { readFile } = fs_1.promises;\nconst getSSOTokenFromFile = async (id) => {\n const ssoTokenFilepath = (0, getSSOTokenFilepath_1.getSSOTokenFilepath)(id);\n const ssoTokenText = await readFile(ssoTokenFilepath, \"utf8\");\n return JSON.parse(ssoTokenText);\n};\nexports.getSSOTokenFromFile = getSSOTokenFromFile;\n","var __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, \"default\"), secondTarget && __copyProps(secondTarget, mod, \"default\"));\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/index.ts\nvar src_exports = {};\n__export(src_exports, {\n CONFIG_PREFIX_SEPARATOR: () => CONFIG_PREFIX_SEPARATOR,\n DEFAULT_PROFILE: () => DEFAULT_PROFILE,\n ENV_PROFILE: () => ENV_PROFILE,\n getProfileName: () => getProfileName,\n loadSharedConfigFiles: () => loadSharedConfigFiles,\n loadSsoSessionData: () => loadSsoSessionData,\n parseKnownFiles: () => parseKnownFiles\n});\nmodule.exports = __toCommonJS(src_exports);\n__reExport(src_exports, require(\"././getHomeDir\"), module.exports);\n\n// src/getProfileName.ts\nvar ENV_PROFILE = \"AWS_PROFILE\";\nvar DEFAULT_PROFILE = \"default\";\nvar getProfileName = /* @__PURE__ */ __name((init) => init.profile || process.env[ENV_PROFILE] || DEFAULT_PROFILE, \"getProfileName\");\n\n// src/index.ts\n__reExport(src_exports, require(\"././getSSOTokenFilepath\"), module.exports);\n__reExport(src_exports, require(\"././getSSOTokenFromFile\"), module.exports);\n\n// src/loadSharedConfigFiles.ts\n\n\n// src/getConfigData.ts\nvar import_types = require(\"@smithy/types\");\nvar getConfigData = /* @__PURE__ */ __name((data) => Object.entries(data).filter(([key]) => {\n const indexOfSeparator = key.indexOf(CONFIG_PREFIX_SEPARATOR);\n if (indexOfSeparator === -1) {\n return false;\n }\n return Object.values(import_types.IniSectionType).includes(key.substring(0, indexOfSeparator));\n}).reduce(\n (acc, [key, value]) => {\n const indexOfSeparator = key.indexOf(CONFIG_PREFIX_SEPARATOR);\n const updatedKey = key.substring(0, indexOfSeparator) === import_types.IniSectionType.PROFILE ? key.substring(indexOfSeparator + 1) : key;\n acc[updatedKey] = value;\n return acc;\n },\n {\n // Populate default profile, if present.\n ...data.default && { default: data.default }\n }\n), \"getConfigData\");\n\n// src/getConfigFilepath.ts\nvar import_path = require(\"path\");\nvar import_getHomeDir = require(\"././getHomeDir\");\nvar ENV_CONFIG_PATH = \"AWS_CONFIG_FILE\";\nvar getConfigFilepath = /* @__PURE__ */ __name(() => process.env[ENV_CONFIG_PATH] || (0, import_path.join)((0, import_getHomeDir.getHomeDir)(), \".aws\", \"config\"), \"getConfigFilepath\");\n\n// src/getCredentialsFilepath.ts\n\nvar import_getHomeDir2 = require(\"././getHomeDir\");\nvar ENV_CREDENTIALS_PATH = \"AWS_SHARED_CREDENTIALS_FILE\";\nvar getCredentialsFilepath = /* @__PURE__ */ __name(() => process.env[ENV_CREDENTIALS_PATH] || (0, import_path.join)((0, import_getHomeDir2.getHomeDir)(), \".aws\", \"credentials\"), \"getCredentialsFilepath\");\n\n// src/loadSharedConfigFiles.ts\nvar import_getHomeDir3 = require(\"././getHomeDir\");\n\n// src/parseIni.ts\n\nvar prefixKeyRegex = /^([\\w-]+)\\s([\"'])?([\\w-@\\+\\.%:/]+)\\2$/;\nvar profileNameBlockList = [\"__proto__\", \"profile __proto__\"];\nvar parseIni = /* @__PURE__ */ __name((iniData) => {\n const map = {};\n let currentSection;\n let currentSubSection;\n for (const iniLine of iniData.split(/\\r?\\n/)) {\n const trimmedLine = iniLine.split(/(^|\\s)[;#]/)[0].trim();\n const isSection = trimmedLine[0] === \"[\" && trimmedLine[trimmedLine.length - 1] === \"]\";\n if (isSection) {\n currentSection = void 0;\n currentSubSection = void 0;\n const sectionName = trimmedLine.substring(1, trimmedLine.length - 1);\n const matches = prefixKeyRegex.exec(sectionName);\n if (matches) {\n const [, prefix, , name] = matches;\n if (Object.values(import_types.IniSectionType).includes(prefix)) {\n currentSection = [prefix, name].join(CONFIG_PREFIX_SEPARATOR);\n }\n } else {\n currentSection = sectionName;\n }\n if (profileNameBlockList.includes(sectionName)) {\n throw new Error(`Found invalid profile name \"${sectionName}\"`);\n }\n } else if (currentSection) {\n const indexOfEqualsSign = trimmedLine.indexOf(\"=\");\n if (![0, -1].includes(indexOfEqualsSign)) {\n const [name, value] = [\n trimmedLine.substring(0, indexOfEqualsSign).trim(),\n trimmedLine.substring(indexOfEqualsSign + 1).trim()\n ];\n if (value === \"\") {\n currentSubSection = name;\n } else {\n if (currentSubSection && iniLine.trimStart() === iniLine) {\n currentSubSection = void 0;\n }\n map[currentSection] = map[currentSection] || {};\n const key = currentSubSection ? [currentSubSection, name].join(CONFIG_PREFIX_SEPARATOR) : name;\n map[currentSection][key] = value;\n }\n }\n }\n }\n return map;\n}, \"parseIni\");\n\n// src/loadSharedConfigFiles.ts\nvar import_slurpFile = require(\"././slurpFile\");\nvar swallowError = /* @__PURE__ */ __name(() => ({}), \"swallowError\");\nvar CONFIG_PREFIX_SEPARATOR = \".\";\nvar loadSharedConfigFiles = /* @__PURE__ */ __name(async (init = {}) => {\n const { filepath = getCredentialsFilepath(), configFilepath = getConfigFilepath() } = init;\n const homeDir = (0, import_getHomeDir3.getHomeDir)();\n const relativeHomeDirPrefix = \"~/\";\n let resolvedFilepath = filepath;\n if (filepath.startsWith(relativeHomeDirPrefix)) {\n resolvedFilepath = (0, import_path.join)(homeDir, filepath.slice(2));\n }\n let resolvedConfigFilepath = configFilepath;\n if (configFilepath.startsWith(relativeHomeDirPrefix)) {\n resolvedConfigFilepath = (0, import_path.join)(homeDir, configFilepath.slice(2));\n }\n const parsedFiles = await Promise.all([\n (0, import_slurpFile.slurpFile)(resolvedConfigFilepath, {\n ignoreCache: init.ignoreCache\n }).then(parseIni).then(getConfigData).catch(swallowError),\n (0, import_slurpFile.slurpFile)(resolvedFilepath, {\n ignoreCache: init.ignoreCache\n }).then(parseIni).catch(swallowError)\n ]);\n return {\n configFile: parsedFiles[0],\n credentialsFile: parsedFiles[1]\n };\n}, \"loadSharedConfigFiles\");\n\n// src/getSsoSessionData.ts\n\nvar getSsoSessionData = /* @__PURE__ */ __name((data) => Object.entries(data).filter(([key]) => key.startsWith(import_types.IniSectionType.SSO_SESSION + CONFIG_PREFIX_SEPARATOR)).reduce((acc, [key, value]) => ({ ...acc, [key.substring(key.indexOf(CONFIG_PREFIX_SEPARATOR) + 1)]: value }), {}), \"getSsoSessionData\");\n\n// src/loadSsoSessionData.ts\nvar import_slurpFile2 = require(\"././slurpFile\");\nvar swallowError2 = /* @__PURE__ */ __name(() => ({}), \"swallowError\");\nvar loadSsoSessionData = /* @__PURE__ */ __name(async (init = {}) => (0, import_slurpFile2.slurpFile)(init.configFilepath ?? getConfigFilepath()).then(parseIni).then(getSsoSessionData).catch(swallowError2), \"loadSsoSessionData\");\n\n// src/mergeConfigFiles.ts\nvar mergeConfigFiles = /* @__PURE__ */ __name((...files) => {\n const merged = {};\n for (const file of files) {\n for (const [key, values] of Object.entries(file)) {\n if (merged[key] !== void 0) {\n Object.assign(merged[key], values);\n } else {\n merged[key] = values;\n }\n }\n }\n return merged;\n}, \"mergeConfigFiles\");\n\n// src/parseKnownFiles.ts\nvar parseKnownFiles = /* @__PURE__ */ __name(async (init) => {\n const parsedFiles = await loadSharedConfigFiles(init);\n return mergeConfigFiles(parsedFiles.configFile, parsedFiles.credentialsFile);\n}, \"parseKnownFiles\");\n// Annotate the CommonJS export names for ESM import in node:\n\n0 && (module.exports = {\n getHomeDir,\n ENV_PROFILE,\n DEFAULT_PROFILE,\n getProfileName,\n getSSOTokenFilepath,\n getSSOTokenFromFile,\n CONFIG_PREFIX_SEPARATOR,\n loadSharedConfigFiles,\n loadSsoSessionData,\n parseKnownFiles\n});\n\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.slurpFile = void 0;\nconst fs_1 = require(\"fs\");\nconst { readFile } = fs_1.promises;\nconst filePromisesHash = {};\nconst slurpFile = (path, options) => {\n if (!filePromisesHash[path] || (options === null || options === void 0 ? void 0 : options.ignoreCache)) {\n filePromisesHash[path] = readFile(path, \"utf8\");\n }\n return filePromisesHash[path];\n};\nexports.slurpFile = slurpFile;\n","var __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/index.ts\nvar src_exports = {};\n__export(src_exports, {\n AlgorithmId: () => AlgorithmId,\n EndpointURLScheme: () => EndpointURLScheme,\n FieldPosition: () => FieldPosition,\n HttpApiKeyAuthLocation: () => HttpApiKeyAuthLocation,\n HttpAuthLocation: () => HttpAuthLocation,\n IniSectionType: () => IniSectionType,\n RequestHandlerProtocol: () => RequestHandlerProtocol,\n SMITHY_CONTEXT_KEY: () => SMITHY_CONTEXT_KEY,\n getDefaultClientConfiguration: () => getDefaultClientConfiguration,\n resolveDefaultRuntimeConfig: () => resolveDefaultRuntimeConfig\n});\nmodule.exports = __toCommonJS(src_exports);\n\n// src/auth/auth.ts\nvar HttpAuthLocation = /* @__PURE__ */ ((HttpAuthLocation2) => {\n HttpAuthLocation2[\"HEADER\"] = \"header\";\n HttpAuthLocation2[\"QUERY\"] = \"query\";\n return HttpAuthLocation2;\n})(HttpAuthLocation || {});\n\n// src/auth/HttpApiKeyAuth.ts\nvar HttpApiKeyAuthLocation = /* @__PURE__ */ ((HttpApiKeyAuthLocation2) => {\n HttpApiKeyAuthLocation2[\"HEADER\"] = \"header\";\n HttpApiKeyAuthLocation2[\"QUERY\"] = \"query\";\n return HttpApiKeyAuthLocation2;\n})(HttpApiKeyAuthLocation || {});\n\n// src/endpoint.ts\nvar EndpointURLScheme = /* @__PURE__ */ ((EndpointURLScheme2) => {\n EndpointURLScheme2[\"HTTP\"] = \"http\";\n EndpointURLScheme2[\"HTTPS\"] = \"https\";\n return EndpointURLScheme2;\n})(EndpointURLScheme || {});\n\n// src/extensions/checksum.ts\nvar AlgorithmId = /* @__PURE__ */ ((AlgorithmId2) => {\n AlgorithmId2[\"MD5\"] = \"md5\";\n AlgorithmId2[\"CRC32\"] = \"crc32\";\n AlgorithmId2[\"CRC32C\"] = \"crc32c\";\n AlgorithmId2[\"SHA1\"] = \"sha1\";\n AlgorithmId2[\"SHA256\"] = \"sha256\";\n return AlgorithmId2;\n})(AlgorithmId || {});\nvar getChecksumConfiguration = /* @__PURE__ */ __name((runtimeConfig) => {\n const checksumAlgorithms = [];\n if (runtimeConfig.sha256 !== void 0) {\n checksumAlgorithms.push({\n algorithmId: () => \"sha256\" /* SHA256 */,\n checksumConstructor: () => runtimeConfig.sha256\n });\n }\n if (runtimeConfig.md5 != void 0) {\n checksumAlgorithms.push({\n algorithmId: () => \"md5\" /* MD5 */,\n checksumConstructor: () => runtimeConfig.md5\n });\n }\n return {\n _checksumAlgorithms: checksumAlgorithms,\n addChecksumAlgorithm(algo) {\n this._checksumAlgorithms.push(algo);\n },\n checksumAlgorithms() {\n return this._checksumAlgorithms;\n }\n };\n}, \"getChecksumConfiguration\");\nvar resolveChecksumRuntimeConfig = /* @__PURE__ */ __name((clientConfig) => {\n const runtimeConfig = {};\n clientConfig.checksumAlgorithms().forEach((checksumAlgorithm) => {\n runtimeConfig[checksumAlgorithm.algorithmId()] = checksumAlgorithm.checksumConstructor();\n });\n return runtimeConfig;\n}, \"resolveChecksumRuntimeConfig\");\n\n// src/extensions/defaultClientConfiguration.ts\nvar getDefaultClientConfiguration = /* @__PURE__ */ __name((runtimeConfig) => {\n return {\n ...getChecksumConfiguration(runtimeConfig)\n };\n}, \"getDefaultClientConfiguration\");\nvar resolveDefaultRuntimeConfig = /* @__PURE__ */ __name((config) => {\n return {\n ...resolveChecksumRuntimeConfig(config)\n };\n}, \"resolveDefaultRuntimeConfig\");\n\n// src/http.ts\nvar FieldPosition = /* @__PURE__ */ ((FieldPosition2) => {\n FieldPosition2[FieldPosition2[\"HEADER\"] = 0] = \"HEADER\";\n FieldPosition2[FieldPosition2[\"TRAILER\"] = 1] = \"TRAILER\";\n return FieldPosition2;\n})(FieldPosition || {});\n\n// src/middleware.ts\nvar SMITHY_CONTEXT_KEY = \"__smithy_context\";\n\n// src/profile.ts\nvar IniSectionType = /* @__PURE__ */ ((IniSectionType2) => {\n IniSectionType2[\"PROFILE\"] = \"profile\";\n IniSectionType2[\"SSO_SESSION\"] = \"sso-session\";\n IniSectionType2[\"SERVICES\"] = \"services\";\n return IniSectionType2;\n})(IniSectionType || {});\n\n// src/transfer.ts\nvar RequestHandlerProtocol = /* @__PURE__ */ ((RequestHandlerProtocol2) => {\n RequestHandlerProtocol2[\"HTTP_0_9\"] = \"http/0.9\";\n RequestHandlerProtocol2[\"HTTP_1_0\"] = \"http/1.0\";\n RequestHandlerProtocol2[\"TDS_8_0\"] = \"tds/8.0\";\n return RequestHandlerProtocol2;\n})(RequestHandlerProtocol || {});\n// Annotate the CommonJS export names for ESM import in node:\n\n0 && (module.exports = {\n HttpAuthLocation,\n HttpApiKeyAuthLocation,\n EndpointURLScheme,\n AlgorithmId,\n getDefaultClientConfiguration,\n resolveDefaultRuntimeConfig,\n FieldPosition,\n SMITHY_CONTEXT_KEY,\n IniSectionType,\n RequestHandlerProtocol\n});\n\n","var __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/index.ts\nvar src_exports = {};\n__export(src_exports, {\n SignatureV4: () => SignatureV4,\n clearCredentialCache: () => clearCredentialCache,\n createScope: () => createScope,\n getCanonicalHeaders: () => getCanonicalHeaders,\n getCanonicalQuery: () => getCanonicalQuery,\n getPayloadHash: () => getPayloadHash,\n getSigningKey: () => getSigningKey,\n moveHeadersToQuery: () => moveHeadersToQuery,\n prepareRequest: () => prepareRequest\n});\nmodule.exports = __toCommonJS(src_exports);\n\n// src/SignatureV4.ts\n\nvar import_util_middleware = require(\"@smithy/util-middleware\");\n\nvar import_util_utf84 = require(\"@smithy/util-utf8\");\n\n// src/constants.ts\nvar ALGORITHM_QUERY_PARAM = \"X-Amz-Algorithm\";\nvar CREDENTIAL_QUERY_PARAM = \"X-Amz-Credential\";\nvar AMZ_DATE_QUERY_PARAM = \"X-Amz-Date\";\nvar SIGNED_HEADERS_QUERY_PARAM = \"X-Amz-SignedHeaders\";\nvar EXPIRES_QUERY_PARAM = \"X-Amz-Expires\";\nvar SIGNATURE_QUERY_PARAM = \"X-Amz-Signature\";\nvar TOKEN_QUERY_PARAM = \"X-Amz-Security-Token\";\nvar AUTH_HEADER = \"authorization\";\nvar AMZ_DATE_HEADER = AMZ_DATE_QUERY_PARAM.toLowerCase();\nvar DATE_HEADER = \"date\";\nvar GENERATED_HEADERS = [AUTH_HEADER, AMZ_DATE_HEADER, DATE_HEADER];\nvar SIGNATURE_HEADER = SIGNATURE_QUERY_PARAM.toLowerCase();\nvar SHA256_HEADER = \"x-amz-content-sha256\";\nvar TOKEN_HEADER = TOKEN_QUERY_PARAM.toLowerCase();\nvar ALWAYS_UNSIGNABLE_HEADERS = {\n authorization: true,\n \"cache-control\": true,\n connection: true,\n expect: true,\n from: true,\n \"keep-alive\": true,\n \"max-forwards\": true,\n pragma: true,\n referer: true,\n te: true,\n trailer: true,\n \"transfer-encoding\": true,\n upgrade: true,\n \"user-agent\": true,\n \"x-amzn-trace-id\": true\n};\nvar PROXY_HEADER_PATTERN = /^proxy-/;\nvar SEC_HEADER_PATTERN = /^sec-/;\nvar ALGORITHM_IDENTIFIER = \"AWS4-HMAC-SHA256\";\nvar EVENT_ALGORITHM_IDENTIFIER = \"AWS4-HMAC-SHA256-PAYLOAD\";\nvar UNSIGNED_PAYLOAD = \"UNSIGNED-PAYLOAD\";\nvar MAX_CACHE_SIZE = 50;\nvar KEY_TYPE_IDENTIFIER = \"aws4_request\";\nvar MAX_PRESIGNED_TTL = 60 * 60 * 24 * 7;\n\n// src/credentialDerivation.ts\nvar import_util_hex_encoding = require(\"@smithy/util-hex-encoding\");\nvar import_util_utf8 = require(\"@smithy/util-utf8\");\nvar signingKeyCache = {};\nvar cacheQueue = [];\nvar createScope = /* @__PURE__ */ __name((shortDate, region, service) => `${shortDate}/${region}/${service}/${KEY_TYPE_IDENTIFIER}`, \"createScope\");\nvar getSigningKey = /* @__PURE__ */ __name(async (sha256Constructor, credentials, shortDate, region, service) => {\n const credsHash = await hmac(sha256Constructor, credentials.secretAccessKey, credentials.accessKeyId);\n const cacheKey = `${shortDate}:${region}:${service}:${(0, import_util_hex_encoding.toHex)(credsHash)}:${credentials.sessionToken}`;\n if (cacheKey in signingKeyCache) {\n return signingKeyCache[cacheKey];\n }\n cacheQueue.push(cacheKey);\n while (cacheQueue.length > MAX_CACHE_SIZE) {\n delete signingKeyCache[cacheQueue.shift()];\n }\n let key = `AWS4${credentials.secretAccessKey}`;\n for (const signable of [shortDate, region, service, KEY_TYPE_IDENTIFIER]) {\n key = await hmac(sha256Constructor, key, signable);\n }\n return signingKeyCache[cacheKey] = key;\n}, \"getSigningKey\");\nvar clearCredentialCache = /* @__PURE__ */ __name(() => {\n cacheQueue.length = 0;\n Object.keys(signingKeyCache).forEach((cacheKey) => {\n delete signingKeyCache[cacheKey];\n });\n}, \"clearCredentialCache\");\nvar hmac = /* @__PURE__ */ __name((ctor, secret, data) => {\n const hash = new ctor(secret);\n hash.update((0, import_util_utf8.toUint8Array)(data));\n return hash.digest();\n}, \"hmac\");\n\n// src/getCanonicalHeaders.ts\nvar getCanonicalHeaders = /* @__PURE__ */ __name(({ headers }, unsignableHeaders, signableHeaders) => {\n const canonical = {};\n for (const headerName of Object.keys(headers).sort()) {\n if (headers[headerName] == void 0) {\n continue;\n }\n const canonicalHeaderName = headerName.toLowerCase();\n if (canonicalHeaderName in ALWAYS_UNSIGNABLE_HEADERS || (unsignableHeaders == null ? void 0 : unsignableHeaders.has(canonicalHeaderName)) || PROXY_HEADER_PATTERN.test(canonicalHeaderName) || SEC_HEADER_PATTERN.test(canonicalHeaderName)) {\n if (!signableHeaders || signableHeaders && !signableHeaders.has(canonicalHeaderName)) {\n continue;\n }\n }\n canonical[canonicalHeaderName] = headers[headerName].trim().replace(/\\s+/g, \" \");\n }\n return canonical;\n}, \"getCanonicalHeaders\");\n\n// src/getCanonicalQuery.ts\nvar import_util_uri_escape = require(\"@smithy/util-uri-escape\");\nvar getCanonicalQuery = /* @__PURE__ */ __name(({ query = {} }) => {\n const keys = [];\n const serialized = {};\n for (const key of Object.keys(query)) {\n if (key.toLowerCase() === SIGNATURE_HEADER) {\n continue;\n }\n const encodedKey = (0, import_util_uri_escape.escapeUri)(key);\n keys.push(encodedKey);\n const value = query[key];\n if (typeof value === \"string\") {\n serialized[encodedKey] = `${encodedKey}=${(0, import_util_uri_escape.escapeUri)(value)}`;\n } else if (Array.isArray(value)) {\n serialized[encodedKey] = value.slice(0).reduce((encoded, value2) => encoded.concat([`${encodedKey}=${(0, import_util_uri_escape.escapeUri)(value2)}`]), []).sort().join(\"&\");\n }\n }\n return keys.sort().map((key) => serialized[key]).filter((serialized2) => serialized2).join(\"&\");\n}, \"getCanonicalQuery\");\n\n// src/getPayloadHash.ts\nvar import_is_array_buffer = require(\"@smithy/is-array-buffer\");\n\nvar import_util_utf82 = require(\"@smithy/util-utf8\");\nvar getPayloadHash = /* @__PURE__ */ __name(async ({ headers, body }, hashConstructor) => {\n for (const headerName of Object.keys(headers)) {\n if (headerName.toLowerCase() === SHA256_HEADER) {\n return headers[headerName];\n }\n }\n if (body == void 0) {\n return \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\";\n } else if (typeof body === \"string\" || ArrayBuffer.isView(body) || (0, import_is_array_buffer.isArrayBuffer)(body)) {\n const hashCtor = new hashConstructor();\n hashCtor.update((0, import_util_utf82.toUint8Array)(body));\n return (0, import_util_hex_encoding.toHex)(await hashCtor.digest());\n }\n return UNSIGNED_PAYLOAD;\n}, \"getPayloadHash\");\n\n// src/HeaderFormatter.ts\n\nvar import_util_utf83 = require(\"@smithy/util-utf8\");\nvar _HeaderFormatter = class _HeaderFormatter {\n format(headers) {\n const chunks = [];\n for (const headerName of Object.keys(headers)) {\n const bytes = (0, import_util_utf83.fromUtf8)(headerName);\n chunks.push(Uint8Array.from([bytes.byteLength]), bytes, this.formatHeaderValue(headers[headerName]));\n }\n const out = new Uint8Array(chunks.reduce((carry, bytes) => carry + bytes.byteLength, 0));\n let position = 0;\n for (const chunk of chunks) {\n out.set(chunk, position);\n position += chunk.byteLength;\n }\n return out;\n }\n formatHeaderValue(header) {\n switch (header.type) {\n case \"boolean\":\n return Uint8Array.from([header.value ? 0 /* boolTrue */ : 1 /* boolFalse */]);\n case \"byte\":\n return Uint8Array.from([2 /* byte */, header.value]);\n case \"short\":\n const shortView = new DataView(new ArrayBuffer(3));\n shortView.setUint8(0, 3 /* short */);\n shortView.setInt16(1, header.value, false);\n return new Uint8Array(shortView.buffer);\n case \"integer\":\n const intView = new DataView(new ArrayBuffer(5));\n intView.setUint8(0, 4 /* integer */);\n intView.setInt32(1, header.value, false);\n return new Uint8Array(intView.buffer);\n case \"long\":\n const longBytes = new Uint8Array(9);\n longBytes[0] = 5 /* long */;\n longBytes.set(header.value.bytes, 1);\n return longBytes;\n case \"binary\":\n const binView = new DataView(new ArrayBuffer(3 + header.value.byteLength));\n binView.setUint8(0, 6 /* byteArray */);\n binView.setUint16(1, header.value.byteLength, false);\n const binBytes = new Uint8Array(binView.buffer);\n binBytes.set(header.value, 3);\n return binBytes;\n case \"string\":\n const utf8Bytes = (0, import_util_utf83.fromUtf8)(header.value);\n const strView = new DataView(new ArrayBuffer(3 + utf8Bytes.byteLength));\n strView.setUint8(0, 7 /* string */);\n strView.setUint16(1, utf8Bytes.byteLength, false);\n const strBytes = new Uint8Array(strView.buffer);\n strBytes.set(utf8Bytes, 3);\n return strBytes;\n case \"timestamp\":\n const tsBytes = new Uint8Array(9);\n tsBytes[0] = 8 /* timestamp */;\n tsBytes.set(Int64.fromNumber(header.value.valueOf()).bytes, 1);\n return tsBytes;\n case \"uuid\":\n if (!UUID_PATTERN.test(header.value)) {\n throw new Error(`Invalid UUID received: ${header.value}`);\n }\n const uuidBytes = new Uint8Array(17);\n uuidBytes[0] = 9 /* uuid */;\n uuidBytes.set((0, import_util_hex_encoding.fromHex)(header.value.replace(/\\-/g, \"\")), 1);\n return uuidBytes;\n }\n }\n};\n__name(_HeaderFormatter, \"HeaderFormatter\");\nvar HeaderFormatter = _HeaderFormatter;\nvar UUID_PATTERN = /^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$/;\nvar _Int64 = class _Int64 {\n constructor(bytes) {\n this.bytes = bytes;\n if (bytes.byteLength !== 8) {\n throw new Error(\"Int64 buffers must be exactly 8 bytes\");\n }\n }\n static fromNumber(number) {\n if (number > 9223372036854776e3 || number < -9223372036854776e3) {\n throw new Error(`${number} is too large (or, if negative, too small) to represent as an Int64`);\n }\n const bytes = new Uint8Array(8);\n for (let i = 7, remaining = Math.abs(Math.round(number)); i > -1 && remaining > 0; i--, remaining /= 256) {\n bytes[i] = remaining;\n }\n if (number < 0) {\n negate(bytes);\n }\n return new _Int64(bytes);\n }\n /**\n * Called implicitly by infix arithmetic operators.\n */\n valueOf() {\n const bytes = this.bytes.slice(0);\n const negative = bytes[0] & 128;\n if (negative) {\n negate(bytes);\n }\n return parseInt((0, import_util_hex_encoding.toHex)(bytes), 16) * (negative ? -1 : 1);\n }\n toString() {\n return String(this.valueOf());\n }\n};\n__name(_Int64, \"Int64\");\nvar Int64 = _Int64;\nfunction negate(bytes) {\n for (let i = 0; i < 8; i++) {\n bytes[i] ^= 255;\n }\n for (let i = 7; i > -1; i--) {\n bytes[i]++;\n if (bytes[i] !== 0)\n break;\n }\n}\n__name(negate, \"negate\");\n\n// src/headerUtil.ts\nvar hasHeader = /* @__PURE__ */ __name((soughtHeader, headers) => {\n soughtHeader = soughtHeader.toLowerCase();\n for (const headerName of Object.keys(headers)) {\n if (soughtHeader === headerName.toLowerCase()) {\n return true;\n }\n }\n return false;\n}, \"hasHeader\");\n\n// src/moveHeadersToQuery.ts\nvar import_protocol_http = require(\"@smithy/protocol-http\");\nvar moveHeadersToQuery = /* @__PURE__ */ __name((request, options = {}) => {\n var _a;\n const { headers, query = {} } = import_protocol_http.HttpRequest.clone(request);\n for (const name of Object.keys(headers)) {\n const lname = name.toLowerCase();\n if (lname.slice(0, 6) === \"x-amz-\" && !((_a = options.unhoistableHeaders) == null ? void 0 : _a.has(lname))) {\n query[name] = headers[name];\n delete headers[name];\n }\n }\n return {\n ...request,\n headers,\n query\n };\n}, \"moveHeadersToQuery\");\n\n// src/prepareRequest.ts\n\nvar prepareRequest = /* @__PURE__ */ __name((request) => {\n request = import_protocol_http.HttpRequest.clone(request);\n for (const headerName of Object.keys(request.headers)) {\n if (GENERATED_HEADERS.indexOf(headerName.toLowerCase()) > -1) {\n delete request.headers[headerName];\n }\n }\n return request;\n}, \"prepareRequest\");\n\n// src/utilDate.ts\nvar iso8601 = /* @__PURE__ */ __name((time) => toDate(time).toISOString().replace(/\\.\\d{3}Z$/, \"Z\"), \"iso8601\");\nvar toDate = /* @__PURE__ */ __name((time) => {\n if (typeof time === \"number\") {\n return new Date(time * 1e3);\n }\n if (typeof time === \"string\") {\n if (Number(time)) {\n return new Date(Number(time) * 1e3);\n }\n return new Date(time);\n }\n return time;\n}, \"toDate\");\n\n// src/SignatureV4.ts\nvar _SignatureV4 = class _SignatureV4 {\n constructor({\n applyChecksum,\n credentials,\n region,\n service,\n sha256,\n uriEscapePath = true\n }) {\n this.headerFormatter = new HeaderFormatter();\n this.service = service;\n this.sha256 = sha256;\n this.uriEscapePath = uriEscapePath;\n this.applyChecksum = typeof applyChecksum === \"boolean\" ? applyChecksum : true;\n this.regionProvider = (0, import_util_middleware.normalizeProvider)(region);\n this.credentialProvider = (0, import_util_middleware.normalizeProvider)(credentials);\n }\n async presign(originalRequest, options = {}) {\n const {\n signingDate = /* @__PURE__ */ new Date(),\n expiresIn = 3600,\n unsignableHeaders,\n unhoistableHeaders,\n signableHeaders,\n signingRegion,\n signingService\n } = options;\n const credentials = await this.credentialProvider();\n this.validateResolvedCredentials(credentials);\n const region = signingRegion ?? await this.regionProvider();\n const { longDate, shortDate } = formatDate(signingDate);\n if (expiresIn > MAX_PRESIGNED_TTL) {\n return Promise.reject(\n \"Signature version 4 presigned URLs must have an expiration date less than one week in the future\"\n );\n }\n const scope = createScope(shortDate, region, signingService ?? this.service);\n const request = moveHeadersToQuery(prepareRequest(originalRequest), { unhoistableHeaders });\n if (credentials.sessionToken) {\n request.query[TOKEN_QUERY_PARAM] = credentials.sessionToken;\n }\n request.query[ALGORITHM_QUERY_PARAM] = ALGORITHM_IDENTIFIER;\n request.query[CREDENTIAL_QUERY_PARAM] = `${credentials.accessKeyId}/${scope}`;\n request.query[AMZ_DATE_QUERY_PARAM] = longDate;\n request.query[EXPIRES_QUERY_PARAM] = expiresIn.toString(10);\n const canonicalHeaders = getCanonicalHeaders(request, unsignableHeaders, signableHeaders);\n request.query[SIGNED_HEADERS_QUERY_PARAM] = getCanonicalHeaderList(canonicalHeaders);\n request.query[SIGNATURE_QUERY_PARAM] = await this.getSignature(\n longDate,\n scope,\n this.getSigningKey(credentials, region, shortDate, signingService),\n this.createCanonicalRequest(request, canonicalHeaders, await getPayloadHash(originalRequest, this.sha256))\n );\n return request;\n }\n async sign(toSign, options) {\n if (typeof toSign === \"string\") {\n return this.signString(toSign, options);\n } else if (toSign.headers && toSign.payload) {\n return this.signEvent(toSign, options);\n } else if (toSign.message) {\n return this.signMessage(toSign, options);\n } else {\n return this.signRequest(toSign, options);\n }\n }\n async signEvent({ headers, payload }, { signingDate = /* @__PURE__ */ new Date(), priorSignature, signingRegion, signingService }) {\n const region = signingRegion ?? await this.regionProvider();\n const { shortDate, longDate } = formatDate(signingDate);\n const scope = createScope(shortDate, region, signingService ?? this.service);\n const hashedPayload = await getPayloadHash({ headers: {}, body: payload }, this.sha256);\n const hash = new this.sha256();\n hash.update(headers);\n const hashedHeaders = (0, import_util_hex_encoding.toHex)(await hash.digest());\n const stringToSign = [\n EVENT_ALGORITHM_IDENTIFIER,\n longDate,\n scope,\n priorSignature,\n hashedHeaders,\n hashedPayload\n ].join(\"\\n\");\n return this.signString(stringToSign, { signingDate, signingRegion: region, signingService });\n }\n async signMessage(signableMessage, { signingDate = /* @__PURE__ */ new Date(), signingRegion, signingService }) {\n const promise = this.signEvent(\n {\n headers: this.headerFormatter.format(signableMessage.message.headers),\n payload: signableMessage.message.body\n },\n {\n signingDate,\n signingRegion,\n signingService,\n priorSignature: signableMessage.priorSignature\n }\n );\n return promise.then((signature) => {\n return { message: signableMessage.message, signature };\n });\n }\n async signString(stringToSign, { signingDate = /* @__PURE__ */ new Date(), signingRegion, signingService } = {}) {\n const credentials = await this.credentialProvider();\n this.validateResolvedCredentials(credentials);\n const region = signingRegion ?? await this.regionProvider();\n const { shortDate } = formatDate(signingDate);\n const hash = new this.sha256(await this.getSigningKey(credentials, region, shortDate, signingService));\n hash.update((0, import_util_utf84.toUint8Array)(stringToSign));\n return (0, import_util_hex_encoding.toHex)(await hash.digest());\n }\n async signRequest(requestToSign, {\n signingDate = /* @__PURE__ */ new Date(),\n signableHeaders,\n unsignableHeaders,\n signingRegion,\n signingService\n } = {}) {\n const credentials = await this.credentialProvider();\n this.validateResolvedCredentials(credentials);\n const region = signingRegion ?? await this.regionProvider();\n const request = prepareRequest(requestToSign);\n const { longDate, shortDate } = formatDate(signingDate);\n const scope = createScope(shortDate, region, signingService ?? this.service);\n request.headers[AMZ_DATE_HEADER] = longDate;\n if (credentials.sessionToken) {\n request.headers[TOKEN_HEADER] = credentials.sessionToken;\n }\n const payloadHash = await getPayloadHash(request, this.sha256);\n if (!hasHeader(SHA256_HEADER, request.headers) && this.applyChecksum) {\n request.headers[SHA256_HEADER] = payloadHash;\n }\n const canonicalHeaders = getCanonicalHeaders(request, unsignableHeaders, signableHeaders);\n const signature = await this.getSignature(\n longDate,\n scope,\n this.getSigningKey(credentials, region, shortDate, signingService),\n this.createCanonicalRequest(request, canonicalHeaders, payloadHash)\n );\n request.headers[AUTH_HEADER] = `${ALGORITHM_IDENTIFIER} Credential=${credentials.accessKeyId}/${scope}, SignedHeaders=${getCanonicalHeaderList(canonicalHeaders)}, Signature=${signature}`;\n return request;\n }\n createCanonicalRequest(request, canonicalHeaders, payloadHash) {\n const sortedHeaders = Object.keys(canonicalHeaders).sort();\n return `${request.method}\n${this.getCanonicalPath(request)}\n${getCanonicalQuery(request)}\n${sortedHeaders.map((name) => `${name}:${canonicalHeaders[name]}`).join(\"\\n\")}\n\n${sortedHeaders.join(\";\")}\n${payloadHash}`;\n }\n async createStringToSign(longDate, credentialScope, canonicalRequest) {\n const hash = new this.sha256();\n hash.update((0, import_util_utf84.toUint8Array)(canonicalRequest));\n const hashedRequest = await hash.digest();\n return `${ALGORITHM_IDENTIFIER}\n${longDate}\n${credentialScope}\n${(0, import_util_hex_encoding.toHex)(hashedRequest)}`;\n }\n getCanonicalPath({ path }) {\n if (this.uriEscapePath) {\n const normalizedPathSegments = [];\n for (const pathSegment of path.split(\"/\")) {\n if ((pathSegment == null ? void 0 : pathSegment.length) === 0)\n continue;\n if (pathSegment === \".\")\n continue;\n if (pathSegment === \"..\") {\n normalizedPathSegments.pop();\n } else {\n normalizedPathSegments.push(pathSegment);\n }\n }\n const normalizedPath = `${(path == null ? void 0 : path.startsWith(\"/\")) ? \"/\" : \"\"}${normalizedPathSegments.join(\"/\")}${normalizedPathSegments.length > 0 && (path == null ? void 0 : path.endsWith(\"/\")) ? \"/\" : \"\"}`;\n const doubleEncoded = (0, import_util_uri_escape.escapeUri)(normalizedPath);\n return doubleEncoded.replace(/%2F/g, \"/\");\n }\n return path;\n }\n async getSignature(longDate, credentialScope, keyPromise, canonicalRequest) {\n const stringToSign = await this.createStringToSign(longDate, credentialScope, canonicalRequest);\n const hash = new this.sha256(await keyPromise);\n hash.update((0, import_util_utf84.toUint8Array)(stringToSign));\n return (0, import_util_hex_encoding.toHex)(await hash.digest());\n }\n getSigningKey(credentials, region, shortDate, service) {\n return getSigningKey(this.sha256, credentials, shortDate, region, service || this.service);\n }\n validateResolvedCredentials(credentials) {\n if (typeof credentials !== \"object\" || // @ts-expect-error: Property 'accessKeyId' does not exist on type 'object'.ts(2339)\n typeof credentials.accessKeyId !== \"string\" || // @ts-expect-error: Property 'secretAccessKey' does not exist on type 'object'.ts(2339)\n typeof credentials.secretAccessKey !== \"string\") {\n throw new Error(\"Resolved credential object is not valid\");\n }\n }\n};\n__name(_SignatureV4, \"SignatureV4\");\nvar SignatureV4 = _SignatureV4;\nvar formatDate = /* @__PURE__ */ __name((now) => {\n const longDate = iso8601(now).replace(/[\\-:]/g, \"\");\n return {\n longDate,\n shortDate: longDate.slice(0, 8)\n };\n}, \"formatDate\");\nvar getCanonicalHeaderList = /* @__PURE__ */ __name((headers) => Object.keys(headers).sort().join(\";\"), \"getCanonicalHeaderList\");\n// Annotate the CommonJS export names for ESM import in node:\n\n0 && (module.exports = {\n getCanonicalHeaders,\n getCanonicalQuery,\n getPayloadHash,\n moveHeadersToQuery,\n prepareRequest,\n SignatureV4,\n createScope,\n getSigningKey,\n clearCredentialCache\n});\n\n","var __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/index.ts\nvar src_exports = {};\n__export(src_exports, {\n Client: () => Client,\n Command: () => Command,\n LazyJsonString: () => LazyJsonString,\n NoOpLogger: () => NoOpLogger,\n SENSITIVE_STRING: () => SENSITIVE_STRING,\n ServiceException: () => ServiceException,\n StringWrapper: () => StringWrapper,\n _json: () => _json,\n collectBody: () => collectBody,\n convertMap: () => convertMap,\n createAggregatedClient: () => createAggregatedClient,\n dateToUtcString: () => dateToUtcString,\n decorateServiceException: () => decorateServiceException,\n emitWarningIfUnsupportedVersion: () => emitWarningIfUnsupportedVersion,\n expectBoolean: () => expectBoolean,\n expectByte: () => expectByte,\n expectFloat32: () => expectFloat32,\n expectInt: () => expectInt,\n expectInt32: () => expectInt32,\n expectLong: () => expectLong,\n expectNonNull: () => expectNonNull,\n expectNumber: () => expectNumber,\n expectObject: () => expectObject,\n expectShort: () => expectShort,\n expectString: () => expectString,\n expectUnion: () => expectUnion,\n extendedEncodeURIComponent: () => extendedEncodeURIComponent,\n getArrayIfSingleItem: () => getArrayIfSingleItem,\n getDefaultClientConfiguration: () => getDefaultClientConfiguration,\n getDefaultExtensionConfiguration: () => getDefaultExtensionConfiguration,\n getValueFromTextNode: () => getValueFromTextNode,\n handleFloat: () => handleFloat,\n isSerializableHeaderValue: () => isSerializableHeaderValue,\n limitedParseDouble: () => limitedParseDouble,\n limitedParseFloat: () => limitedParseFloat,\n limitedParseFloat32: () => limitedParseFloat32,\n loadConfigsForDefaultMode: () => loadConfigsForDefaultMode,\n logger: () => logger,\n map: () => map,\n parseBoolean: () => parseBoolean,\n parseEpochTimestamp: () => parseEpochTimestamp,\n parseRfc3339DateTime: () => parseRfc3339DateTime,\n parseRfc3339DateTimeWithOffset: () => parseRfc3339DateTimeWithOffset,\n parseRfc7231DateTime: () => parseRfc7231DateTime,\n resolveDefaultRuntimeConfig: () => resolveDefaultRuntimeConfig,\n resolvedPath: () => resolvedPath,\n serializeDateTime: () => serializeDateTime,\n serializeFloat: () => serializeFloat,\n splitEvery: () => splitEvery,\n strictParseByte: () => strictParseByte,\n strictParseDouble: () => strictParseDouble,\n strictParseFloat: () => strictParseFloat,\n strictParseFloat32: () => strictParseFloat32,\n strictParseInt: () => strictParseInt,\n strictParseInt32: () => strictParseInt32,\n strictParseLong: () => strictParseLong,\n strictParseShort: () => strictParseShort,\n take: () => take,\n throwDefaultError: () => throwDefaultError,\n withBaseException: () => withBaseException\n});\nmodule.exports = __toCommonJS(src_exports);\n\n// src/client.ts\nvar import_middleware_stack = require(\"@smithy/middleware-stack\");\nvar _Client = class _Client {\n constructor(config) {\n this.config = config;\n this.middlewareStack = (0, import_middleware_stack.constructStack)();\n }\n send(command, optionsOrCb, cb) {\n const options = typeof optionsOrCb !== \"function\" ? optionsOrCb : void 0;\n const callback = typeof optionsOrCb === \"function\" ? optionsOrCb : cb;\n const useHandlerCache = options === void 0 && this.config.cacheMiddleware === true;\n let handler;\n if (useHandlerCache) {\n if (!this.handlers) {\n this.handlers = /* @__PURE__ */ new WeakMap();\n }\n const handlers = this.handlers;\n if (handlers.has(command.constructor)) {\n handler = handlers.get(command.constructor);\n } else {\n handler = command.resolveMiddleware(this.middlewareStack, this.config, options);\n handlers.set(command.constructor, handler);\n }\n } else {\n delete this.handlers;\n handler = command.resolveMiddleware(this.middlewareStack, this.config, options);\n }\n if (callback) {\n handler(command).then(\n (result) => callback(null, result.output),\n (err) => callback(err)\n ).catch(\n // prevent any errors thrown in the callback from triggering an\n // unhandled promise rejection\n () => {\n }\n );\n } else {\n return handler(command).then((result) => result.output);\n }\n }\n destroy() {\n var _a, _b, _c;\n (_c = (_b = (_a = this.config) == null ? void 0 : _a.requestHandler) == null ? void 0 : _b.destroy) == null ? void 0 : _c.call(_b);\n delete this.handlers;\n }\n};\n__name(_Client, \"Client\");\nvar Client = _Client;\n\n// src/collect-stream-body.ts\nvar import_util_stream = require(\"@smithy/util-stream\");\nvar collectBody = /* @__PURE__ */ __name(async (streamBody = new Uint8Array(), context) => {\n if (streamBody instanceof Uint8Array) {\n return import_util_stream.Uint8ArrayBlobAdapter.mutate(streamBody);\n }\n if (!streamBody) {\n return import_util_stream.Uint8ArrayBlobAdapter.mutate(new Uint8Array());\n }\n const fromContext = context.streamCollector(streamBody);\n return import_util_stream.Uint8ArrayBlobAdapter.mutate(await fromContext);\n}, \"collectBody\");\n\n// src/command.ts\n\nvar import_types = require(\"@smithy/types\");\nvar _Command = class _Command {\n constructor() {\n this.middlewareStack = (0, import_middleware_stack.constructStack)();\n }\n /**\n * Factory for Command ClassBuilder.\n * @internal\n */\n static classBuilder() {\n return new ClassBuilder();\n }\n /**\n * @internal\n */\n resolveMiddlewareWithContext(clientStack, configuration, options, {\n middlewareFn,\n clientName,\n commandName,\n inputFilterSensitiveLog,\n outputFilterSensitiveLog,\n smithyContext,\n additionalContext,\n CommandCtor\n }) {\n for (const mw of middlewareFn.bind(this)(CommandCtor, clientStack, configuration, options)) {\n this.middlewareStack.use(mw);\n }\n const stack = clientStack.concat(this.middlewareStack);\n const { logger: logger2 } = configuration;\n const handlerExecutionContext = {\n logger: logger2,\n clientName,\n commandName,\n inputFilterSensitiveLog,\n outputFilterSensitiveLog,\n [import_types.SMITHY_CONTEXT_KEY]: {\n commandInstance: this,\n ...smithyContext\n },\n ...additionalContext\n };\n const { requestHandler } = configuration;\n return stack.resolve(\n (request) => requestHandler.handle(request.request, options || {}),\n handlerExecutionContext\n );\n }\n};\n__name(_Command, \"Command\");\nvar Command = _Command;\nvar _ClassBuilder = class _ClassBuilder {\n constructor() {\n this._init = () => {\n };\n this._ep = {};\n this._middlewareFn = () => [];\n this._commandName = \"\";\n this._clientName = \"\";\n this._additionalContext = {};\n this._smithyContext = {};\n this._inputFilterSensitiveLog = (_) => _;\n this._outputFilterSensitiveLog = (_) => _;\n this._serializer = null;\n this._deserializer = null;\n }\n /**\n * Optional init callback.\n */\n init(cb) {\n this._init = cb;\n }\n /**\n * Set the endpoint parameter instructions.\n */\n ep(endpointParameterInstructions) {\n this._ep = endpointParameterInstructions;\n return this;\n }\n /**\n * Add any number of middleware.\n */\n m(middlewareSupplier) {\n this._middlewareFn = middlewareSupplier;\n return this;\n }\n /**\n * Set the initial handler execution context Smithy field.\n */\n s(service, operation, smithyContext = {}) {\n this._smithyContext = {\n service,\n operation,\n ...smithyContext\n };\n return this;\n }\n /**\n * Set the initial handler execution context.\n */\n c(additionalContext = {}) {\n this._additionalContext = additionalContext;\n return this;\n }\n /**\n * Set constant string identifiers for the operation.\n */\n n(clientName, commandName) {\n this._clientName = clientName;\n this._commandName = commandName;\n return this;\n }\n /**\n * Set the input and output sensistive log filters.\n */\n f(inputFilter = (_) => _, outputFilter = (_) => _) {\n this._inputFilterSensitiveLog = inputFilter;\n this._outputFilterSensitiveLog = outputFilter;\n return this;\n }\n /**\n * Sets the serializer.\n */\n ser(serializer) {\n this._serializer = serializer;\n return this;\n }\n /**\n * Sets the deserializer.\n */\n de(deserializer) {\n this._deserializer = deserializer;\n return this;\n }\n /**\n * @returns a Command class with the classBuilder properties.\n */\n build() {\n var _a;\n const closure = this;\n let CommandRef;\n return CommandRef = (_a = class extends Command {\n /**\n * @public\n */\n constructor(...[input]) {\n super();\n /**\n * @internal\n */\n // @ts-ignore used in middlewareFn closure.\n this.serialize = closure._serializer;\n /**\n * @internal\n */\n // @ts-ignore used in middlewareFn closure.\n this.deserialize = closure._deserializer;\n this.input = input ?? {};\n closure._init(this);\n }\n /**\n * @public\n */\n static getEndpointParameterInstructions() {\n return closure._ep;\n }\n /**\n * @internal\n */\n resolveMiddleware(stack, configuration, options) {\n return this.resolveMiddlewareWithContext(stack, configuration, options, {\n CommandCtor: CommandRef,\n middlewareFn: closure._middlewareFn,\n clientName: closure._clientName,\n commandName: closure._commandName,\n inputFilterSensitiveLog: closure._inputFilterSensitiveLog,\n outputFilterSensitiveLog: closure._outputFilterSensitiveLog,\n smithyContext: closure._smithyContext,\n additionalContext: closure._additionalContext\n });\n }\n }, __name(_a, \"CommandRef\"), _a);\n }\n};\n__name(_ClassBuilder, \"ClassBuilder\");\nvar ClassBuilder = _ClassBuilder;\n\n// src/constants.ts\nvar SENSITIVE_STRING = \"***SensitiveInformation***\";\n\n// src/create-aggregated-client.ts\nvar createAggregatedClient = /* @__PURE__ */ __name((commands, Client2) => {\n for (const command of Object.keys(commands)) {\n const CommandCtor = commands[command];\n const methodImpl = /* @__PURE__ */ __name(async function(args, optionsOrCb, cb) {\n const command2 = new CommandCtor(args);\n if (typeof optionsOrCb === \"function\") {\n this.send(command2, optionsOrCb);\n } else if (typeof cb === \"function\") {\n if (typeof optionsOrCb !== \"object\")\n throw new Error(`Expected http options but got ${typeof optionsOrCb}`);\n this.send(command2, optionsOrCb || {}, cb);\n } else {\n return this.send(command2, optionsOrCb);\n }\n }, \"methodImpl\");\n const methodName = (command[0].toLowerCase() + command.slice(1)).replace(/Command$/, \"\");\n Client2.prototype[methodName] = methodImpl;\n }\n}, \"createAggregatedClient\");\n\n// src/parse-utils.ts\nvar parseBoolean = /* @__PURE__ */ __name((value) => {\n switch (value) {\n case \"true\":\n return true;\n case \"false\":\n return false;\n default:\n throw new Error(`Unable to parse boolean value \"${value}\"`);\n }\n}, \"parseBoolean\");\nvar expectBoolean = /* @__PURE__ */ __name((value) => {\n if (value === null || value === void 0) {\n return void 0;\n }\n if (typeof value === \"number\") {\n if (value === 0 || value === 1) {\n logger.warn(stackTraceWarning(`Expected boolean, got ${typeof value}: ${value}`));\n }\n if (value === 0) {\n return false;\n }\n if (value === 1) {\n return true;\n }\n }\n if (typeof value === \"string\") {\n const lower = value.toLowerCase();\n if (lower === \"false\" || lower === \"true\") {\n logger.warn(stackTraceWarning(`Expected boolean, got ${typeof value}: ${value}`));\n }\n if (lower === \"false\") {\n return false;\n }\n if (lower === \"true\") {\n return true;\n }\n }\n if (typeof value === \"boolean\") {\n return value;\n }\n throw new TypeError(`Expected boolean, got ${typeof value}: ${value}`);\n}, \"expectBoolean\");\nvar expectNumber = /* @__PURE__ */ __name((value) => {\n if (value === null || value === void 0) {\n return void 0;\n }\n if (typeof value === \"string\") {\n const parsed = parseFloat(value);\n if (!Number.isNaN(parsed)) {\n if (String(parsed) !== String(value)) {\n logger.warn(stackTraceWarning(`Expected number but observed string: ${value}`));\n }\n return parsed;\n }\n }\n if (typeof value === \"number\") {\n return value;\n }\n throw new TypeError(`Expected number, got ${typeof value}: ${value}`);\n}, \"expectNumber\");\nvar MAX_FLOAT = Math.ceil(2 ** 127 * (2 - 2 ** -23));\nvar expectFloat32 = /* @__PURE__ */ __name((value) => {\n const expected = expectNumber(value);\n if (expected !== void 0 && !Number.isNaN(expected) && expected !== Infinity && expected !== -Infinity) {\n if (Math.abs(expected) > MAX_FLOAT) {\n throw new TypeError(`Expected 32-bit float, got ${value}`);\n }\n }\n return expected;\n}, \"expectFloat32\");\nvar expectLong = /* @__PURE__ */ __name((value) => {\n if (value === null || value === void 0) {\n return void 0;\n }\n if (Number.isInteger(value) && !Number.isNaN(value)) {\n return value;\n }\n throw new TypeError(`Expected integer, got ${typeof value}: ${value}`);\n}, \"expectLong\");\nvar expectInt = expectLong;\nvar expectInt32 = /* @__PURE__ */ __name((value) => expectSizedInt(value, 32), \"expectInt32\");\nvar expectShort = /* @__PURE__ */ __name((value) => expectSizedInt(value, 16), \"expectShort\");\nvar expectByte = /* @__PURE__ */ __name((value) => expectSizedInt(value, 8), \"expectByte\");\nvar expectSizedInt = /* @__PURE__ */ __name((value, size) => {\n const expected = expectLong(value);\n if (expected !== void 0 && castInt(expected, size) !== expected) {\n throw new TypeError(`Expected ${size}-bit integer, got ${value}`);\n }\n return expected;\n}, \"expectSizedInt\");\nvar castInt = /* @__PURE__ */ __name((value, size) => {\n switch (size) {\n case 32:\n return Int32Array.of(value)[0];\n case 16:\n return Int16Array.of(value)[0];\n case 8:\n return Int8Array.of(value)[0];\n }\n}, \"castInt\");\nvar expectNonNull = /* @__PURE__ */ __name((value, location) => {\n if (value === null || value === void 0) {\n if (location) {\n throw new TypeError(`Expected a non-null value for ${location}`);\n }\n throw new TypeError(\"Expected a non-null value\");\n }\n return value;\n}, \"expectNonNull\");\nvar expectObject = /* @__PURE__ */ __name((value) => {\n if (value === null || value === void 0) {\n return void 0;\n }\n if (typeof value === \"object\" && !Array.isArray(value)) {\n return value;\n }\n const receivedType = Array.isArray(value) ? \"array\" : typeof value;\n throw new TypeError(`Expected object, got ${receivedType}: ${value}`);\n}, \"expectObject\");\nvar expectString = /* @__PURE__ */ __name((value) => {\n if (value === null || value === void 0) {\n return void 0;\n }\n if (typeof value === \"string\") {\n return value;\n }\n if ([\"boolean\", \"number\", \"bigint\"].includes(typeof value)) {\n logger.warn(stackTraceWarning(`Expected string, got ${typeof value}: ${value}`));\n return String(value);\n }\n throw new TypeError(`Expected string, got ${typeof value}: ${value}`);\n}, \"expectString\");\nvar expectUnion = /* @__PURE__ */ __name((value) => {\n if (value === null || value === void 0) {\n return void 0;\n }\n const asObject = expectObject(value);\n const setKeys = Object.entries(asObject).filter(([, v]) => v != null).map(([k]) => k);\n if (setKeys.length === 0) {\n throw new TypeError(`Unions must have exactly one non-null member. None were found.`);\n }\n if (setKeys.length > 1) {\n throw new TypeError(`Unions must have exactly one non-null member. Keys ${setKeys} were not null.`);\n }\n return asObject;\n}, \"expectUnion\");\nvar strictParseDouble = /* @__PURE__ */ __name((value) => {\n if (typeof value == \"string\") {\n return expectNumber(parseNumber(value));\n }\n return expectNumber(value);\n}, \"strictParseDouble\");\nvar strictParseFloat = strictParseDouble;\nvar strictParseFloat32 = /* @__PURE__ */ __name((value) => {\n if (typeof value == \"string\") {\n return expectFloat32(parseNumber(value));\n }\n return expectFloat32(value);\n}, \"strictParseFloat32\");\nvar NUMBER_REGEX = /(-?(?:0|[1-9]\\d*)(?:\\.\\d+)?(?:[eE][+-]?\\d+)?)|(-?Infinity)|(NaN)/g;\nvar parseNumber = /* @__PURE__ */ __name((value) => {\n const matches = value.match(NUMBER_REGEX);\n if (matches === null || matches[0].length !== value.length) {\n throw new TypeError(`Expected real number, got implicit NaN`);\n }\n return parseFloat(value);\n}, \"parseNumber\");\nvar limitedParseDouble = /* @__PURE__ */ __name((value) => {\n if (typeof value == \"string\") {\n return parseFloatString(value);\n }\n return expectNumber(value);\n}, \"limitedParseDouble\");\nvar handleFloat = limitedParseDouble;\nvar limitedParseFloat = limitedParseDouble;\nvar limitedParseFloat32 = /* @__PURE__ */ __name((value) => {\n if (typeof value == \"string\") {\n return parseFloatString(value);\n }\n return expectFloat32(value);\n}, \"limitedParseFloat32\");\nvar parseFloatString = /* @__PURE__ */ __name((value) => {\n switch (value) {\n case \"NaN\":\n return NaN;\n case \"Infinity\":\n return Infinity;\n case \"-Infinity\":\n return -Infinity;\n default:\n throw new Error(`Unable to parse float value: ${value}`);\n }\n}, \"parseFloatString\");\nvar strictParseLong = /* @__PURE__ */ __name((value) => {\n if (typeof value === \"string\") {\n return expectLong(parseNumber(value));\n }\n return expectLong(value);\n}, \"strictParseLong\");\nvar strictParseInt = strictParseLong;\nvar strictParseInt32 = /* @__PURE__ */ __name((value) => {\n if (typeof value === \"string\") {\n return expectInt32(parseNumber(value));\n }\n return expectInt32(value);\n}, \"strictParseInt32\");\nvar strictParseShort = /* @__PURE__ */ __name((value) => {\n if (typeof value === \"string\") {\n return expectShort(parseNumber(value));\n }\n return expectShort(value);\n}, \"strictParseShort\");\nvar strictParseByte = /* @__PURE__ */ __name((value) => {\n if (typeof value === \"string\") {\n return expectByte(parseNumber(value));\n }\n return expectByte(value);\n}, \"strictParseByte\");\nvar stackTraceWarning = /* @__PURE__ */ __name((message) => {\n return String(new TypeError(message).stack || message).split(\"\\n\").slice(0, 5).filter((s) => !s.includes(\"stackTraceWarning\")).join(\"\\n\");\n}, \"stackTraceWarning\");\nvar logger = {\n warn: console.warn\n};\n\n// src/date-utils.ts\nvar DAYS = [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"];\nvar MONTHS = [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"];\nfunction dateToUtcString(date) {\n const year = date.getUTCFullYear();\n const month = date.getUTCMonth();\n const dayOfWeek = date.getUTCDay();\n const dayOfMonthInt = date.getUTCDate();\n const hoursInt = date.getUTCHours();\n const minutesInt = date.getUTCMinutes();\n const secondsInt = date.getUTCSeconds();\n const dayOfMonthString = dayOfMonthInt < 10 ? `0${dayOfMonthInt}` : `${dayOfMonthInt}`;\n const hoursString = hoursInt < 10 ? `0${hoursInt}` : `${hoursInt}`;\n const minutesString = minutesInt < 10 ? `0${minutesInt}` : `${minutesInt}`;\n const secondsString = secondsInt < 10 ? `0${secondsInt}` : `${secondsInt}`;\n return `${DAYS[dayOfWeek]}, ${dayOfMonthString} ${MONTHS[month]} ${year} ${hoursString}:${minutesString}:${secondsString} GMT`;\n}\n__name(dateToUtcString, \"dateToUtcString\");\nvar RFC3339 = new RegExp(/^(\\d{4})-(\\d{2})-(\\d{2})[tT](\\d{2}):(\\d{2}):(\\d{2})(?:\\.(\\d+))?[zZ]$/);\nvar parseRfc3339DateTime = /* @__PURE__ */ __name((value) => {\n if (value === null || value === void 0) {\n return void 0;\n }\n if (typeof value !== \"string\") {\n throw new TypeError(\"RFC-3339 date-times must be expressed as strings\");\n }\n const match = RFC3339.exec(value);\n if (!match) {\n throw new TypeError(\"Invalid RFC-3339 date-time value\");\n }\n const [_, yearStr, monthStr, dayStr, hours, minutes, seconds, fractionalMilliseconds] = match;\n const year = strictParseShort(stripLeadingZeroes(yearStr));\n const month = parseDateValue(monthStr, \"month\", 1, 12);\n const day = parseDateValue(dayStr, \"day\", 1, 31);\n return buildDate(year, month, day, { hours, minutes, seconds, fractionalMilliseconds });\n}, \"parseRfc3339DateTime\");\nvar RFC3339_WITH_OFFSET = new RegExp(\n /^(\\d{4})-(\\d{2})-(\\d{2})[tT](\\d{2}):(\\d{2}):(\\d{2})(?:\\.(\\d+))?(([-+]\\d{2}\\:\\d{2})|[zZ])$/\n);\nvar parseRfc3339DateTimeWithOffset = /* @__PURE__ */ __name((value) => {\n if (value === null || value === void 0) {\n return void 0;\n }\n if (typeof value !== \"string\") {\n throw new TypeError(\"RFC-3339 date-times must be expressed as strings\");\n }\n const match = RFC3339_WITH_OFFSET.exec(value);\n if (!match) {\n throw new TypeError(\"Invalid RFC-3339 date-time value\");\n }\n const [_, yearStr, monthStr, dayStr, hours, minutes, seconds, fractionalMilliseconds, offsetStr] = match;\n const year = strictParseShort(stripLeadingZeroes(yearStr));\n const month = parseDateValue(monthStr, \"month\", 1, 12);\n const day = parseDateValue(dayStr, \"day\", 1, 31);\n const date = buildDate(year, month, day, { hours, minutes, seconds, fractionalMilliseconds });\n if (offsetStr.toUpperCase() != \"Z\") {\n date.setTime(date.getTime() - parseOffsetToMilliseconds(offsetStr));\n }\n return date;\n}, \"parseRfc3339DateTimeWithOffset\");\nvar IMF_FIXDATE = new RegExp(\n /^(?:Mon|Tue|Wed|Thu|Fri|Sat|Sun), (\\d{2}) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) (\\d{4}) (\\d{1,2}):(\\d{2}):(\\d{2})(?:\\.(\\d+))? GMT$/\n);\nvar RFC_850_DATE = new RegExp(\n /^(?:Monday|Tuesday|Wednesday|Thursday|Friday|Saturday|Sunday), (\\d{2})-(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)-(\\d{2}) (\\d{1,2}):(\\d{2}):(\\d{2})(?:\\.(\\d+))? GMT$/\n);\nvar ASC_TIME = new RegExp(\n /^(?:Mon|Tue|Wed|Thu|Fri|Sat|Sun) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) ( [1-9]|\\d{2}) (\\d{1,2}):(\\d{2}):(\\d{2})(?:\\.(\\d+))? (\\d{4})$/\n);\nvar parseRfc7231DateTime = /* @__PURE__ */ __name((value) => {\n if (value === null || value === void 0) {\n return void 0;\n }\n if (typeof value !== \"string\") {\n throw new TypeError(\"RFC-7231 date-times must be expressed as strings\");\n }\n let match = IMF_FIXDATE.exec(value);\n if (match) {\n const [_, dayStr, monthStr, yearStr, hours, minutes, seconds, fractionalMilliseconds] = match;\n return buildDate(\n strictParseShort(stripLeadingZeroes(yearStr)),\n parseMonthByShortName(monthStr),\n parseDateValue(dayStr, \"day\", 1, 31),\n { hours, minutes, seconds, fractionalMilliseconds }\n );\n }\n match = RFC_850_DATE.exec(value);\n if (match) {\n const [_, dayStr, monthStr, yearStr, hours, minutes, seconds, fractionalMilliseconds] = match;\n return adjustRfc850Year(\n buildDate(parseTwoDigitYear(yearStr), parseMonthByShortName(monthStr), parseDateValue(dayStr, \"day\", 1, 31), {\n hours,\n minutes,\n seconds,\n fractionalMilliseconds\n })\n );\n }\n match = ASC_TIME.exec(value);\n if (match) {\n const [_, monthStr, dayStr, hours, minutes, seconds, fractionalMilliseconds, yearStr] = match;\n return buildDate(\n strictParseShort(stripLeadingZeroes(yearStr)),\n parseMonthByShortName(monthStr),\n parseDateValue(dayStr.trimLeft(), \"day\", 1, 31),\n { hours, minutes, seconds, fractionalMilliseconds }\n );\n }\n throw new TypeError(\"Invalid RFC-7231 date-time value\");\n}, \"parseRfc7231DateTime\");\nvar parseEpochTimestamp = /* @__PURE__ */ __name((value) => {\n if (value === null || value === void 0) {\n return void 0;\n }\n let valueAsDouble;\n if (typeof value === \"number\") {\n valueAsDouble = value;\n } else if (typeof value === \"string\") {\n valueAsDouble = strictParseDouble(value);\n } else if (typeof value === \"object\" && value.tag === 1) {\n valueAsDouble = value.value;\n } else {\n throw new TypeError(\"Epoch timestamps must be expressed as floating point numbers or their string representation\");\n }\n if (Number.isNaN(valueAsDouble) || valueAsDouble === Infinity || valueAsDouble === -Infinity) {\n throw new TypeError(\"Epoch timestamps must be valid, non-Infinite, non-NaN numerics\");\n }\n return new Date(Math.round(valueAsDouble * 1e3));\n}, \"parseEpochTimestamp\");\nvar buildDate = /* @__PURE__ */ __name((year, month, day, time) => {\n const adjustedMonth = month - 1;\n validateDayOfMonth(year, adjustedMonth, day);\n return new Date(\n Date.UTC(\n year,\n adjustedMonth,\n day,\n parseDateValue(time.hours, \"hour\", 0, 23),\n parseDateValue(time.minutes, \"minute\", 0, 59),\n // seconds can go up to 60 for leap seconds\n parseDateValue(time.seconds, \"seconds\", 0, 60),\n parseMilliseconds(time.fractionalMilliseconds)\n )\n );\n}, \"buildDate\");\nvar parseTwoDigitYear = /* @__PURE__ */ __name((value) => {\n const thisYear = (/* @__PURE__ */ new Date()).getUTCFullYear();\n const valueInThisCentury = Math.floor(thisYear / 100) * 100 + strictParseShort(stripLeadingZeroes(value));\n if (valueInThisCentury < thisYear) {\n return valueInThisCentury + 100;\n }\n return valueInThisCentury;\n}, \"parseTwoDigitYear\");\nvar FIFTY_YEARS_IN_MILLIS = 50 * 365 * 24 * 60 * 60 * 1e3;\nvar adjustRfc850Year = /* @__PURE__ */ __name((input) => {\n if (input.getTime() - (/* @__PURE__ */ new Date()).getTime() > FIFTY_YEARS_IN_MILLIS) {\n return new Date(\n Date.UTC(\n input.getUTCFullYear() - 100,\n input.getUTCMonth(),\n input.getUTCDate(),\n input.getUTCHours(),\n input.getUTCMinutes(),\n input.getUTCSeconds(),\n input.getUTCMilliseconds()\n )\n );\n }\n return input;\n}, \"adjustRfc850Year\");\nvar parseMonthByShortName = /* @__PURE__ */ __name((value) => {\n const monthIdx = MONTHS.indexOf(value);\n if (monthIdx < 0) {\n throw new TypeError(`Invalid month: ${value}`);\n }\n return monthIdx + 1;\n}, \"parseMonthByShortName\");\nvar DAYS_IN_MONTH = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\nvar validateDayOfMonth = /* @__PURE__ */ __name((year, month, day) => {\n let maxDays = DAYS_IN_MONTH[month];\n if (month === 1 && isLeapYear(year)) {\n maxDays = 29;\n }\n if (day > maxDays) {\n throw new TypeError(`Invalid day for ${MONTHS[month]} in ${year}: ${day}`);\n }\n}, \"validateDayOfMonth\");\nvar isLeapYear = /* @__PURE__ */ __name((year) => {\n return year % 4 === 0 && (year % 100 !== 0 || year % 400 === 0);\n}, \"isLeapYear\");\nvar parseDateValue = /* @__PURE__ */ __name((value, type, lower, upper) => {\n const dateVal = strictParseByte(stripLeadingZeroes(value));\n if (dateVal < lower || dateVal > upper) {\n throw new TypeError(`${type} must be between ${lower} and ${upper}, inclusive`);\n }\n return dateVal;\n}, \"parseDateValue\");\nvar parseMilliseconds = /* @__PURE__ */ __name((value) => {\n if (value === null || value === void 0) {\n return 0;\n }\n return strictParseFloat32(\"0.\" + value) * 1e3;\n}, \"parseMilliseconds\");\nvar parseOffsetToMilliseconds = /* @__PURE__ */ __name((value) => {\n const directionStr = value[0];\n let direction = 1;\n if (directionStr == \"+\") {\n direction = 1;\n } else if (directionStr == \"-\") {\n direction = -1;\n } else {\n throw new TypeError(`Offset direction, ${directionStr}, must be \"+\" or \"-\"`);\n }\n const hour = Number(value.substring(1, 3));\n const minute = Number(value.substring(4, 6));\n return direction * (hour * 60 + minute) * 60 * 1e3;\n}, \"parseOffsetToMilliseconds\");\nvar stripLeadingZeroes = /* @__PURE__ */ __name((value) => {\n let idx = 0;\n while (idx < value.length - 1 && value.charAt(idx) === \"0\") {\n idx++;\n }\n if (idx === 0) {\n return value;\n }\n return value.slice(idx);\n}, \"stripLeadingZeroes\");\n\n// src/exceptions.ts\nvar _ServiceException = class _ServiceException extends Error {\n constructor(options) {\n super(options.message);\n Object.setPrototypeOf(this, _ServiceException.prototype);\n this.name = options.name;\n this.$fault = options.$fault;\n this.$metadata = options.$metadata;\n }\n};\n__name(_ServiceException, \"ServiceException\");\nvar ServiceException = _ServiceException;\nvar decorateServiceException = /* @__PURE__ */ __name((exception, additions = {}) => {\n Object.entries(additions).filter(([, v]) => v !== void 0).forEach(([k, v]) => {\n if (exception[k] == void 0 || exception[k] === \"\") {\n exception[k] = v;\n }\n });\n const message = exception.message || exception.Message || \"UnknownError\";\n exception.message = message;\n delete exception.Message;\n return exception;\n}, \"decorateServiceException\");\n\n// src/default-error-handler.ts\nvar throwDefaultError = /* @__PURE__ */ __name(({ output, parsedBody, exceptionCtor, errorCode }) => {\n const $metadata = deserializeMetadata(output);\n const statusCode = $metadata.httpStatusCode ? $metadata.httpStatusCode + \"\" : void 0;\n const response = new exceptionCtor({\n name: (parsedBody == null ? void 0 : parsedBody.code) || (parsedBody == null ? void 0 : parsedBody.Code) || errorCode || statusCode || \"UnknownError\",\n $fault: \"client\",\n $metadata\n });\n throw decorateServiceException(response, parsedBody);\n}, \"throwDefaultError\");\nvar withBaseException = /* @__PURE__ */ __name((ExceptionCtor) => {\n return ({ output, parsedBody, errorCode }) => {\n throwDefaultError({ output, parsedBody, exceptionCtor: ExceptionCtor, errorCode });\n };\n}, \"withBaseException\");\nvar deserializeMetadata = /* @__PURE__ */ __name((output) => ({\n httpStatusCode: output.statusCode,\n requestId: output.headers[\"x-amzn-requestid\"] ?? output.headers[\"x-amzn-request-id\"] ?? output.headers[\"x-amz-request-id\"],\n extendedRequestId: output.headers[\"x-amz-id-2\"],\n cfId: output.headers[\"x-amz-cf-id\"]\n}), \"deserializeMetadata\");\n\n// src/defaults-mode.ts\nvar loadConfigsForDefaultMode = /* @__PURE__ */ __name((mode) => {\n switch (mode) {\n case \"standard\":\n return {\n retryMode: \"standard\",\n connectionTimeout: 3100\n };\n case \"in-region\":\n return {\n retryMode: \"standard\",\n connectionTimeout: 1100\n };\n case \"cross-region\":\n return {\n retryMode: \"standard\",\n connectionTimeout: 3100\n };\n case \"mobile\":\n return {\n retryMode: \"standard\",\n connectionTimeout: 3e4\n };\n default:\n return {};\n }\n}, \"loadConfigsForDefaultMode\");\n\n// src/emitWarningIfUnsupportedVersion.ts\nvar warningEmitted = false;\nvar emitWarningIfUnsupportedVersion = /* @__PURE__ */ __name((version) => {\n if (version && !warningEmitted && parseInt(version.substring(1, version.indexOf(\".\"))) < 16) {\n warningEmitted = true;\n }\n}, \"emitWarningIfUnsupportedVersion\");\n\n// src/extended-encode-uri-component.ts\nfunction extendedEncodeURIComponent(str) {\n return encodeURIComponent(str).replace(/[!'()*]/g, function(c) {\n return \"%\" + c.charCodeAt(0).toString(16).toUpperCase();\n });\n}\n__name(extendedEncodeURIComponent, \"extendedEncodeURIComponent\");\n\n// src/extensions/checksum.ts\n\nvar getChecksumConfiguration = /* @__PURE__ */ __name((runtimeConfig) => {\n const checksumAlgorithms = [];\n for (const id in import_types.AlgorithmId) {\n const algorithmId = import_types.AlgorithmId[id];\n if (runtimeConfig[algorithmId] === void 0) {\n continue;\n }\n checksumAlgorithms.push({\n algorithmId: () => algorithmId,\n checksumConstructor: () => runtimeConfig[algorithmId]\n });\n }\n return {\n _checksumAlgorithms: checksumAlgorithms,\n addChecksumAlgorithm(algo) {\n this._checksumAlgorithms.push(algo);\n },\n checksumAlgorithms() {\n return this._checksumAlgorithms;\n }\n };\n}, \"getChecksumConfiguration\");\nvar resolveChecksumRuntimeConfig = /* @__PURE__ */ __name((clientConfig) => {\n const runtimeConfig = {};\n clientConfig.checksumAlgorithms().forEach((checksumAlgorithm) => {\n runtimeConfig[checksumAlgorithm.algorithmId()] = checksumAlgorithm.checksumConstructor();\n });\n return runtimeConfig;\n}, \"resolveChecksumRuntimeConfig\");\n\n// src/extensions/retry.ts\nvar getRetryConfiguration = /* @__PURE__ */ __name((runtimeConfig) => {\n let _retryStrategy = runtimeConfig.retryStrategy;\n return {\n setRetryStrategy(retryStrategy) {\n _retryStrategy = retryStrategy;\n },\n retryStrategy() {\n return _retryStrategy;\n }\n };\n}, \"getRetryConfiguration\");\nvar resolveRetryRuntimeConfig = /* @__PURE__ */ __name((retryStrategyConfiguration) => {\n const runtimeConfig = {};\n runtimeConfig.retryStrategy = retryStrategyConfiguration.retryStrategy();\n return runtimeConfig;\n}, \"resolveRetryRuntimeConfig\");\n\n// src/extensions/defaultExtensionConfiguration.ts\nvar getDefaultExtensionConfiguration = /* @__PURE__ */ __name((runtimeConfig) => {\n return {\n ...getChecksumConfiguration(runtimeConfig),\n ...getRetryConfiguration(runtimeConfig)\n };\n}, \"getDefaultExtensionConfiguration\");\nvar getDefaultClientConfiguration = getDefaultExtensionConfiguration;\nvar resolveDefaultRuntimeConfig = /* @__PURE__ */ __name((config) => {\n return {\n ...resolveChecksumRuntimeConfig(config),\n ...resolveRetryRuntimeConfig(config)\n };\n}, \"resolveDefaultRuntimeConfig\");\n\n// src/get-array-if-single-item.ts\nvar getArrayIfSingleItem = /* @__PURE__ */ __name((mayBeArray) => Array.isArray(mayBeArray) ? mayBeArray : [mayBeArray], \"getArrayIfSingleItem\");\n\n// src/get-value-from-text-node.ts\nvar getValueFromTextNode = /* @__PURE__ */ __name((obj) => {\n const textNodeName = \"#text\";\n for (const key in obj) {\n if (obj.hasOwnProperty(key) && obj[key][textNodeName] !== void 0) {\n obj[key] = obj[key][textNodeName];\n } else if (typeof obj[key] === \"object\" && obj[key] !== null) {\n obj[key] = getValueFromTextNode(obj[key]);\n }\n }\n return obj;\n}, \"getValueFromTextNode\");\n\n// src/is-serializable-header-value.ts\nvar isSerializableHeaderValue = /* @__PURE__ */ __name((value) => {\n return value != null;\n}, \"isSerializableHeaderValue\");\n\n// src/lazy-json.ts\nvar StringWrapper = /* @__PURE__ */ __name(function() {\n const Class = Object.getPrototypeOf(this).constructor;\n const Constructor = Function.bind.apply(String, [null, ...arguments]);\n const instance = new Constructor();\n Object.setPrototypeOf(instance, Class.prototype);\n return instance;\n}, \"StringWrapper\");\nStringWrapper.prototype = Object.create(String.prototype, {\n constructor: {\n value: StringWrapper,\n enumerable: false,\n writable: true,\n configurable: true\n }\n});\nObject.setPrototypeOf(StringWrapper, String);\nvar _LazyJsonString = class _LazyJsonString extends StringWrapper {\n deserializeJSON() {\n return JSON.parse(super.toString());\n }\n toJSON() {\n return super.toString();\n }\n static fromObject(object) {\n if (object instanceof _LazyJsonString) {\n return object;\n } else if (object instanceof String || typeof object === \"string\") {\n return new _LazyJsonString(object);\n }\n return new _LazyJsonString(JSON.stringify(object));\n }\n};\n__name(_LazyJsonString, \"LazyJsonString\");\nvar LazyJsonString = _LazyJsonString;\n\n// src/NoOpLogger.ts\nvar _NoOpLogger = class _NoOpLogger {\n trace() {\n }\n debug() {\n }\n info() {\n }\n warn() {\n }\n error() {\n }\n};\n__name(_NoOpLogger, \"NoOpLogger\");\nvar NoOpLogger = _NoOpLogger;\n\n// src/object-mapping.ts\nfunction map(arg0, arg1, arg2) {\n let target;\n let filter;\n let instructions;\n if (typeof arg1 === \"undefined\" && typeof arg2 === \"undefined\") {\n target = {};\n instructions = arg0;\n } else {\n target = arg0;\n if (typeof arg1 === \"function\") {\n filter = arg1;\n instructions = arg2;\n return mapWithFilter(target, filter, instructions);\n } else {\n instructions = arg1;\n }\n }\n for (const key of Object.keys(instructions)) {\n if (!Array.isArray(instructions[key])) {\n target[key] = instructions[key];\n continue;\n }\n applyInstruction(target, null, instructions, key);\n }\n return target;\n}\n__name(map, \"map\");\nvar convertMap = /* @__PURE__ */ __name((target) => {\n const output = {};\n for (const [k, v] of Object.entries(target || {})) {\n output[k] = [, v];\n }\n return output;\n}, \"convertMap\");\nvar take = /* @__PURE__ */ __name((source, instructions) => {\n const out = {};\n for (const key in instructions) {\n applyInstruction(out, source, instructions, key);\n }\n return out;\n}, \"take\");\nvar mapWithFilter = /* @__PURE__ */ __name((target, filter, instructions) => {\n return map(\n target,\n Object.entries(instructions).reduce(\n (_instructions, [key, value]) => {\n if (Array.isArray(value)) {\n _instructions[key] = value;\n } else {\n if (typeof value === \"function\") {\n _instructions[key] = [filter, value()];\n } else {\n _instructions[key] = [filter, value];\n }\n }\n return _instructions;\n },\n {}\n )\n );\n}, \"mapWithFilter\");\nvar applyInstruction = /* @__PURE__ */ __name((target, source, instructions, targetKey) => {\n if (source !== null) {\n let instruction = instructions[targetKey];\n if (typeof instruction === \"function\") {\n instruction = [, instruction];\n }\n const [filter2 = nonNullish, valueFn = pass, sourceKey = targetKey] = instruction;\n if (typeof filter2 === \"function\" && filter2(source[sourceKey]) || typeof filter2 !== \"function\" && !!filter2) {\n target[targetKey] = valueFn(source[sourceKey]);\n }\n return;\n }\n let [filter, value] = instructions[targetKey];\n if (typeof value === \"function\") {\n let _value;\n const defaultFilterPassed = filter === void 0 && (_value = value()) != null;\n const customFilterPassed = typeof filter === \"function\" && !!filter(void 0) || typeof filter !== \"function\" && !!filter;\n if (defaultFilterPassed) {\n target[targetKey] = _value;\n } else if (customFilterPassed) {\n target[targetKey] = value();\n }\n } else {\n const defaultFilterPassed = filter === void 0 && value != null;\n const customFilterPassed = typeof filter === \"function\" && !!filter(value) || typeof filter !== \"function\" && !!filter;\n if (defaultFilterPassed || customFilterPassed) {\n target[targetKey] = value;\n }\n }\n}, \"applyInstruction\");\nvar nonNullish = /* @__PURE__ */ __name((_) => _ != null, \"nonNullish\");\nvar pass = /* @__PURE__ */ __name((_) => _, \"pass\");\n\n// src/resolve-path.ts\nvar resolvedPath = /* @__PURE__ */ __name((resolvedPath2, input, memberName, labelValueProvider, uriLabel, isGreedyLabel) => {\n if (input != null && input[memberName] !== void 0) {\n const labelValue = labelValueProvider();\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: \" + memberName + \".\");\n }\n resolvedPath2 = resolvedPath2.replace(\n uriLabel,\n isGreedyLabel ? labelValue.split(\"/\").map((segment) => extendedEncodeURIComponent(segment)).join(\"/\") : extendedEncodeURIComponent(labelValue)\n );\n } else {\n throw new Error(\"No value provided for input HTTP label: \" + memberName + \".\");\n }\n return resolvedPath2;\n}, \"resolvedPath\");\n\n// src/ser-utils.ts\nvar serializeFloat = /* @__PURE__ */ __name((value) => {\n if (value !== value) {\n return \"NaN\";\n }\n switch (value) {\n case Infinity:\n return \"Infinity\";\n case -Infinity:\n return \"-Infinity\";\n default:\n return value;\n }\n}, \"serializeFloat\");\nvar serializeDateTime = /* @__PURE__ */ __name((date) => date.toISOString().replace(\".000Z\", \"Z\"), \"serializeDateTime\");\n\n// src/serde-json.ts\nvar _json = /* @__PURE__ */ __name((obj) => {\n if (obj == null) {\n return {};\n }\n if (Array.isArray(obj)) {\n return obj.filter((_) => _ != null).map(_json);\n }\n if (typeof obj === \"object\") {\n const target = {};\n for (const key of Object.keys(obj)) {\n if (obj[key] == null) {\n continue;\n }\n target[key] = _json(obj[key]);\n }\n return target;\n }\n return obj;\n}, \"_json\");\n\n// src/split-every.ts\nfunction splitEvery(value, delimiter, numDelimiters) {\n if (numDelimiters <= 0 || !Number.isInteger(numDelimiters)) {\n throw new Error(\"Invalid number of delimiters (\" + numDelimiters + \") for splitEvery.\");\n }\n const segments = value.split(delimiter);\n if (numDelimiters === 1) {\n return segments;\n }\n const compoundSegments = [];\n let currentSegment = \"\";\n for (let i = 0; i < segments.length; i++) {\n if (currentSegment === \"\") {\n currentSegment = segments[i];\n } else {\n currentSegment += delimiter + segments[i];\n }\n if ((i + 1) % numDelimiters === 0) {\n compoundSegments.push(currentSegment);\n currentSegment = \"\";\n }\n }\n if (currentSegment !== \"\") {\n compoundSegments.push(currentSegment);\n }\n return compoundSegments;\n}\n__name(splitEvery, \"splitEvery\");\n// Annotate the CommonJS export names for ESM import in node:\n\n0 && (module.exports = {\n Client,\n collectBody,\n Command,\n SENSITIVE_STRING,\n createAggregatedClient,\n dateToUtcString,\n parseRfc3339DateTime,\n parseRfc3339DateTimeWithOffset,\n parseRfc7231DateTime,\n parseEpochTimestamp,\n throwDefaultError,\n withBaseException,\n loadConfigsForDefaultMode,\n emitWarningIfUnsupportedVersion,\n ServiceException,\n decorateServiceException,\n extendedEncodeURIComponent,\n getDefaultExtensionConfiguration,\n getDefaultClientConfiguration,\n resolveDefaultRuntimeConfig,\n getArrayIfSingleItem,\n getValueFromTextNode,\n isSerializableHeaderValue,\n StringWrapper,\n LazyJsonString,\n NoOpLogger,\n map,\n convertMap,\n take,\n parseBoolean,\n expectBoolean,\n expectNumber,\n expectFloat32,\n expectLong,\n expectInt,\n expectInt32,\n expectShort,\n expectByte,\n expectNonNull,\n expectObject,\n expectString,\n expectUnion,\n strictParseDouble,\n strictParseFloat,\n strictParseFloat32,\n limitedParseDouble,\n handleFloat,\n limitedParseFloat,\n limitedParseFloat32,\n strictParseLong,\n strictParseInt,\n strictParseInt32,\n strictParseShort,\n strictParseByte,\n logger,\n resolvedPath,\n serializeFloat,\n serializeDateTime,\n _json,\n splitEvery\n});\n\n","var __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/index.ts\nvar src_exports = {};\n__export(src_exports, {\n AlgorithmId: () => AlgorithmId,\n EndpointURLScheme: () => EndpointURLScheme,\n FieldPosition: () => FieldPosition,\n HttpApiKeyAuthLocation: () => HttpApiKeyAuthLocation,\n HttpAuthLocation: () => HttpAuthLocation,\n IniSectionType: () => IniSectionType,\n RequestHandlerProtocol: () => RequestHandlerProtocol,\n SMITHY_CONTEXT_KEY: () => SMITHY_CONTEXT_KEY,\n getDefaultClientConfiguration: () => getDefaultClientConfiguration,\n resolveDefaultRuntimeConfig: () => resolveDefaultRuntimeConfig\n});\nmodule.exports = __toCommonJS(src_exports);\n\n// src/auth/auth.ts\nvar HttpAuthLocation = /* @__PURE__ */ ((HttpAuthLocation2) => {\n HttpAuthLocation2[\"HEADER\"] = \"header\";\n HttpAuthLocation2[\"QUERY\"] = \"query\";\n return HttpAuthLocation2;\n})(HttpAuthLocation || {});\n\n// src/auth/HttpApiKeyAuth.ts\nvar HttpApiKeyAuthLocation = /* @__PURE__ */ ((HttpApiKeyAuthLocation2) => {\n HttpApiKeyAuthLocation2[\"HEADER\"] = \"header\";\n HttpApiKeyAuthLocation2[\"QUERY\"] = \"query\";\n return HttpApiKeyAuthLocation2;\n})(HttpApiKeyAuthLocation || {});\n\n// src/endpoint.ts\nvar EndpointURLScheme = /* @__PURE__ */ ((EndpointURLScheme2) => {\n EndpointURLScheme2[\"HTTP\"] = \"http\";\n EndpointURLScheme2[\"HTTPS\"] = \"https\";\n return EndpointURLScheme2;\n})(EndpointURLScheme || {});\n\n// src/extensions/checksum.ts\nvar AlgorithmId = /* @__PURE__ */ ((AlgorithmId2) => {\n AlgorithmId2[\"MD5\"] = \"md5\";\n AlgorithmId2[\"CRC32\"] = \"crc32\";\n AlgorithmId2[\"CRC32C\"] = \"crc32c\";\n AlgorithmId2[\"SHA1\"] = \"sha1\";\n AlgorithmId2[\"SHA256\"] = \"sha256\";\n return AlgorithmId2;\n})(AlgorithmId || {});\nvar getChecksumConfiguration = /* @__PURE__ */ __name((runtimeConfig) => {\n const checksumAlgorithms = [];\n if (runtimeConfig.sha256 !== void 0) {\n checksumAlgorithms.push({\n algorithmId: () => \"sha256\" /* SHA256 */,\n checksumConstructor: () => runtimeConfig.sha256\n });\n }\n if (runtimeConfig.md5 != void 0) {\n checksumAlgorithms.push({\n algorithmId: () => \"md5\" /* MD5 */,\n checksumConstructor: () => runtimeConfig.md5\n });\n }\n return {\n _checksumAlgorithms: checksumAlgorithms,\n addChecksumAlgorithm(algo) {\n this._checksumAlgorithms.push(algo);\n },\n checksumAlgorithms() {\n return this._checksumAlgorithms;\n }\n };\n}, \"getChecksumConfiguration\");\nvar resolveChecksumRuntimeConfig = /* @__PURE__ */ __name((clientConfig) => {\n const runtimeConfig = {};\n clientConfig.checksumAlgorithms().forEach((checksumAlgorithm) => {\n runtimeConfig[checksumAlgorithm.algorithmId()] = checksumAlgorithm.checksumConstructor();\n });\n return runtimeConfig;\n}, \"resolveChecksumRuntimeConfig\");\n\n// src/extensions/defaultClientConfiguration.ts\nvar getDefaultClientConfiguration = /* @__PURE__ */ __name((runtimeConfig) => {\n return {\n ...getChecksumConfiguration(runtimeConfig)\n };\n}, \"getDefaultClientConfiguration\");\nvar resolveDefaultRuntimeConfig = /* @__PURE__ */ __name((config) => {\n return {\n ...resolveChecksumRuntimeConfig(config)\n };\n}, \"resolveDefaultRuntimeConfig\");\n\n// src/http.ts\nvar FieldPosition = /* @__PURE__ */ ((FieldPosition2) => {\n FieldPosition2[FieldPosition2[\"HEADER\"] = 0] = \"HEADER\";\n FieldPosition2[FieldPosition2[\"TRAILER\"] = 1] = \"TRAILER\";\n return FieldPosition2;\n})(FieldPosition || {});\n\n// src/middleware.ts\nvar SMITHY_CONTEXT_KEY = \"__smithy_context\";\n\n// src/profile.ts\nvar IniSectionType = /* @__PURE__ */ ((IniSectionType2) => {\n IniSectionType2[\"PROFILE\"] = \"profile\";\n IniSectionType2[\"SSO_SESSION\"] = \"sso-session\";\n IniSectionType2[\"SERVICES\"] = \"services\";\n return IniSectionType2;\n})(IniSectionType || {});\n\n// src/transfer.ts\nvar RequestHandlerProtocol = /* @__PURE__ */ ((RequestHandlerProtocol2) => {\n RequestHandlerProtocol2[\"HTTP_0_9\"] = \"http/0.9\";\n RequestHandlerProtocol2[\"HTTP_1_0\"] = \"http/1.0\";\n RequestHandlerProtocol2[\"TDS_8_0\"] = \"tds/8.0\";\n return RequestHandlerProtocol2;\n})(RequestHandlerProtocol || {});\n// Annotate the CommonJS export names for ESM import in node:\n\n0 && (module.exports = {\n HttpAuthLocation,\n HttpApiKeyAuthLocation,\n EndpointURLScheme,\n AlgorithmId,\n getDefaultClientConfiguration,\n resolveDefaultRuntimeConfig,\n FieldPosition,\n SMITHY_CONTEXT_KEY,\n IniSectionType,\n RequestHandlerProtocol\n});\n\n","var __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/index.ts\nvar src_exports = {};\n__export(src_exports, {\n parseUrl: () => parseUrl\n});\nmodule.exports = __toCommonJS(src_exports);\nvar import_querystring_parser = require(\"@smithy/querystring-parser\");\nvar parseUrl = /* @__PURE__ */ __name((url) => {\n if (typeof url === \"string\") {\n return parseUrl(new URL(url));\n }\n const { hostname, pathname, port, protocol, search } = url;\n let query;\n if (search) {\n query = (0, import_querystring_parser.parseQueryString)(search);\n }\n return {\n hostname,\n port: port ? parseInt(port) : void 0,\n protocol,\n path: pathname,\n query\n };\n}, \"parseUrl\");\n// Annotate the CommonJS export names for ESM import in node:\n\n0 && (module.exports = {\n parseUrl\n});\n\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.fromBase64 = void 0;\nconst util_buffer_from_1 = require(\"@smithy/util-buffer-from\");\nconst BASE64_REGEX = /^[A-Za-z0-9+/]*={0,2}$/;\nconst fromBase64 = (input) => {\n if ((input.length * 3) % 4 !== 0) {\n throw new TypeError(`Incorrect padding on base64 string.`);\n }\n if (!BASE64_REGEX.exec(input)) {\n throw new TypeError(`Invalid base64 string.`);\n }\n const buffer = (0, util_buffer_from_1.fromString)(input, \"base64\");\n return new Uint8Array(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n};\nexports.fromBase64 = fromBase64;\n","var __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, \"default\"), secondTarget && __copyProps(secondTarget, mod, \"default\"));\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/index.ts\nvar src_exports = {};\nmodule.exports = __toCommonJS(src_exports);\n__reExport(src_exports, require(\"././fromBase64\"), module.exports);\n__reExport(src_exports, require(\"././toBase64\"), module.exports);\n// Annotate the CommonJS export names for ESM import in node:\n\n0 && (module.exports = {\n fromBase64,\n toBase64\n});\n\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.toBase64 = void 0;\nconst util_buffer_from_1 = require(\"@smithy/util-buffer-from\");\nconst util_utf8_1 = require(\"@smithy/util-utf8\");\nconst toBase64 = (_input) => {\n let input;\n if (typeof _input === \"string\") {\n input = (0, util_utf8_1.fromUtf8)(_input);\n }\n else {\n input = _input;\n }\n if (typeof input !== \"object\" || typeof input.byteOffset !== \"number\" || typeof input.byteLength !== \"number\") {\n throw new Error(\"@smithy/util-base64: toBase64 encoder function only accepts string | Uint8Array.\");\n }\n return (0, util_buffer_from_1.fromArrayBuffer)(input.buffer, input.byteOffset, input.byteLength).toString(\"base64\");\n};\nexports.toBase64 = toBase64;\n","var __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/index.ts\nvar src_exports = {};\n__export(src_exports, {\n calculateBodyLength: () => calculateBodyLength\n});\nmodule.exports = __toCommonJS(src_exports);\n\n// src/calculateBodyLength.ts\nvar import_fs = require(\"fs\");\nvar calculateBodyLength = /* @__PURE__ */ __name((body) => {\n if (!body) {\n return 0;\n }\n if (typeof body === \"string\") {\n return Buffer.byteLength(body);\n } else if (typeof body.byteLength === \"number\") {\n return body.byteLength;\n } else if (typeof body.size === \"number\") {\n return body.size;\n } else if (typeof body.start === \"number\" && typeof body.end === \"number\") {\n return body.end + 1 - body.start;\n } else if (typeof body.path === \"string\" || Buffer.isBuffer(body.path)) {\n return (0, import_fs.lstatSync)(body.path).size;\n } else if (typeof body.fd === \"number\") {\n return (0, import_fs.fstatSync)(body.fd).size;\n }\n throw new Error(`Body Length computation failed for ${body}`);\n}, \"calculateBodyLength\");\n// Annotate the CommonJS export names for ESM import in node:\n\n0 && (module.exports = {\n calculateBodyLength\n});\n\n","var __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/index.ts\nvar src_exports = {};\n__export(src_exports, {\n fromArrayBuffer: () => fromArrayBuffer,\n fromString: () => fromString\n});\nmodule.exports = __toCommonJS(src_exports);\nvar import_is_array_buffer = require(\"@smithy/is-array-buffer\");\nvar import_buffer = require(\"buffer\");\nvar fromArrayBuffer = /* @__PURE__ */ __name((input, offset = 0, length = input.byteLength - offset) => {\n if (!(0, import_is_array_buffer.isArrayBuffer)(input)) {\n throw new TypeError(`The \"input\" argument must be ArrayBuffer. Received type ${typeof input} (${input})`);\n }\n return import_buffer.Buffer.from(input, offset, length);\n}, \"fromArrayBuffer\");\nvar fromString = /* @__PURE__ */ __name((input, encoding) => {\n if (typeof input !== \"string\") {\n throw new TypeError(`The \"input\" argument must be of type string. Received type ${typeof input} (${input})`);\n }\n return encoding ? import_buffer.Buffer.from(input, encoding) : import_buffer.Buffer.from(input);\n}, \"fromString\");\n// Annotate the CommonJS export names for ESM import in node:\n\n0 && (module.exports = {\n fromArrayBuffer,\n fromString\n});\n\n","var __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/index.ts\nvar src_exports = {};\n__export(src_exports, {\n SelectorType: () => SelectorType,\n booleanSelector: () => booleanSelector,\n numberSelector: () => numberSelector\n});\nmodule.exports = __toCommonJS(src_exports);\n\n// src/booleanSelector.ts\nvar booleanSelector = /* @__PURE__ */ __name((obj, key, type) => {\n if (!(key in obj))\n return void 0;\n if (obj[key] === \"true\")\n return true;\n if (obj[key] === \"false\")\n return false;\n throw new Error(`Cannot load ${type} \"${key}\". Expected \"true\" or \"false\", got ${obj[key]}.`);\n}, \"booleanSelector\");\n\n// src/numberSelector.ts\nvar numberSelector = /* @__PURE__ */ __name((obj, key, type) => {\n if (!(key in obj))\n return void 0;\n const numberValue = parseInt(obj[key], 10);\n if (Number.isNaN(numberValue)) {\n throw new TypeError(`Cannot load ${type} '${key}'. Expected number, got '${obj[key]}'.`);\n }\n return numberValue;\n}, \"numberSelector\");\n\n// src/types.ts\nvar SelectorType = /* @__PURE__ */ ((SelectorType2) => {\n SelectorType2[\"ENV\"] = \"env\";\n SelectorType2[\"CONFIG\"] = \"shared config entry\";\n return SelectorType2;\n})(SelectorType || {});\n// Annotate the CommonJS export names for ESM import in node:\n\n0 && (module.exports = {\n booleanSelector,\n numberSelector,\n SelectorType\n});\n\n","var __create = Object.create;\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __getProtoOf = Object.getPrototypeOf;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(\n // If the importer is in node compatibility mode or this is not an ESM\n // file that has been converted to a CommonJS file using a Babel-\n // compatible transform (i.e. \"__esModule\" has not been set), then set\n // \"default\" to the CommonJS \"module.exports\" for node compatibility.\n isNodeMode || !mod || !mod.__esModule ? __defProp(target, \"default\", { value: mod, enumerable: true }) : target,\n mod\n));\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/index.ts\nvar src_exports = {};\n__export(src_exports, {\n resolveDefaultsModeConfig: () => resolveDefaultsModeConfig\n});\nmodule.exports = __toCommonJS(src_exports);\n\n// src/resolveDefaultsModeConfig.ts\nvar import_config_resolver = require(\"@smithy/config-resolver\");\nvar import_node_config_provider = require(\"@smithy/node-config-provider\");\nvar import_property_provider = require(\"@smithy/property-provider\");\n\n// src/constants.ts\nvar AWS_EXECUTION_ENV = \"AWS_EXECUTION_ENV\";\nvar AWS_REGION_ENV = \"AWS_REGION\";\nvar AWS_DEFAULT_REGION_ENV = \"AWS_DEFAULT_REGION\";\nvar ENV_IMDS_DISABLED = \"AWS_EC2_METADATA_DISABLED\";\nvar DEFAULTS_MODE_OPTIONS = [\"in-region\", \"cross-region\", \"mobile\", \"standard\", \"legacy\"];\nvar IMDS_REGION_PATH = \"/latest/meta-data/placement/region\";\n\n// src/defaultsModeConfig.ts\nvar AWS_DEFAULTS_MODE_ENV = \"AWS_DEFAULTS_MODE\";\nvar AWS_DEFAULTS_MODE_CONFIG = \"defaults_mode\";\nvar NODE_DEFAULTS_MODE_CONFIG_OPTIONS = {\n environmentVariableSelector: (env) => {\n return env[AWS_DEFAULTS_MODE_ENV];\n },\n configFileSelector: (profile) => {\n return profile[AWS_DEFAULTS_MODE_CONFIG];\n },\n default: \"legacy\"\n};\n\n// src/resolveDefaultsModeConfig.ts\nvar resolveDefaultsModeConfig = /* @__PURE__ */ __name(({\n region = (0, import_node_config_provider.loadConfig)(import_config_resolver.NODE_REGION_CONFIG_OPTIONS),\n defaultsMode = (0, import_node_config_provider.loadConfig)(NODE_DEFAULTS_MODE_CONFIG_OPTIONS)\n} = {}) => (0, import_property_provider.memoize)(async () => {\n const mode = typeof defaultsMode === \"function\" ? await defaultsMode() : defaultsMode;\n switch (mode == null ? void 0 : mode.toLowerCase()) {\n case \"auto\":\n return resolveNodeDefaultsModeAuto(region);\n case \"in-region\":\n case \"cross-region\":\n case \"mobile\":\n case \"standard\":\n case \"legacy\":\n return Promise.resolve(mode == null ? void 0 : mode.toLocaleLowerCase());\n case void 0:\n return Promise.resolve(\"legacy\");\n default:\n throw new Error(\n `Invalid parameter for \"defaultsMode\", expect ${DEFAULTS_MODE_OPTIONS.join(\", \")}, got ${mode}`\n );\n }\n}), \"resolveDefaultsModeConfig\");\nvar resolveNodeDefaultsModeAuto = /* @__PURE__ */ __name(async (clientRegion) => {\n if (clientRegion) {\n const resolvedRegion = typeof clientRegion === \"function\" ? await clientRegion() : clientRegion;\n const inferredRegion = await inferPhysicalRegion();\n if (!inferredRegion) {\n return \"standard\";\n }\n if (resolvedRegion === inferredRegion) {\n return \"in-region\";\n } else {\n return \"cross-region\";\n }\n }\n return \"standard\";\n}, \"resolveNodeDefaultsModeAuto\");\nvar inferPhysicalRegion = /* @__PURE__ */ __name(async () => {\n if (process.env[AWS_EXECUTION_ENV] && (process.env[AWS_REGION_ENV] || process.env[AWS_DEFAULT_REGION_ENV])) {\n return process.env[AWS_REGION_ENV] ?? process.env[AWS_DEFAULT_REGION_ENV];\n }\n if (!process.env[ENV_IMDS_DISABLED]) {\n try {\n const { getInstanceMetadataEndpoint, httpRequest } = await Promise.resolve().then(() => __toESM(require(\"@smithy/credential-provider-imds\")));\n const endpoint = await getInstanceMetadataEndpoint();\n return (await httpRequest({ ...endpoint, path: IMDS_REGION_PATH })).toString();\n } catch (e) {\n }\n }\n}, \"inferPhysicalRegion\");\n// Annotate the CommonJS export names for ESM import in node:\n\n0 && (module.exports = {\n resolveDefaultsModeConfig\n});\n\n","var __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/index.ts\nvar src_exports = {};\n__export(src_exports, {\n EndpointCache: () => EndpointCache,\n EndpointError: () => EndpointError,\n customEndpointFunctions: () => customEndpointFunctions,\n isIpAddress: () => isIpAddress,\n isValidHostLabel: () => isValidHostLabel,\n resolveEndpoint: () => resolveEndpoint\n});\nmodule.exports = __toCommonJS(src_exports);\n\n// src/cache/EndpointCache.ts\nvar _EndpointCache = class _EndpointCache {\n /**\n * @param [size] - desired average maximum capacity. A buffer of 10 additional keys will be allowed\n * before keys are dropped.\n * @param [params] - list of params to consider as part of the cache key.\n *\n * If the params list is not populated, no caching will happen.\n * This may be out of order depending on how the object is created and arrives to this class.\n */\n constructor({ size, params }) {\n this.data = /* @__PURE__ */ new Map();\n this.parameters = [];\n this.capacity = size ?? 50;\n if (params) {\n this.parameters = params;\n }\n }\n /**\n * @param endpointParams - query for endpoint.\n * @param resolver - provider of the value if not present.\n * @returns endpoint corresponding to the query.\n */\n get(endpointParams, resolver) {\n const key = this.hash(endpointParams);\n if (key === false) {\n return resolver();\n }\n if (!this.data.has(key)) {\n if (this.data.size > this.capacity + 10) {\n const keys = this.data.keys();\n let i = 0;\n while (true) {\n const { value, done } = keys.next();\n this.data.delete(value);\n if (done || ++i > 10) {\n break;\n }\n }\n }\n this.data.set(key, resolver());\n }\n return this.data.get(key);\n }\n size() {\n return this.data.size;\n }\n /**\n * @returns cache key or false if not cachable.\n */\n hash(endpointParams) {\n let buffer = \"\";\n const { parameters } = this;\n if (parameters.length === 0) {\n return false;\n }\n for (const param of parameters) {\n const val = String(endpointParams[param] ?? \"\");\n if (val.includes(\"|;\")) {\n return false;\n }\n buffer += val + \"|;\";\n }\n return buffer;\n }\n};\n__name(_EndpointCache, \"EndpointCache\");\nvar EndpointCache = _EndpointCache;\n\n// src/lib/isIpAddress.ts\nvar IP_V4_REGEX = new RegExp(\n `^(?:25[0-5]|2[0-4]\\\\d|1\\\\d\\\\d|[1-9]\\\\d|\\\\d)(?:\\\\.(?:25[0-5]|2[0-4]\\\\d|1\\\\d\\\\d|[1-9]\\\\d|\\\\d)){3}$`\n);\nvar isIpAddress = /* @__PURE__ */ __name((value) => IP_V4_REGEX.test(value) || value.startsWith(\"[\") && value.endsWith(\"]\"), \"isIpAddress\");\n\n// src/lib/isValidHostLabel.ts\nvar VALID_HOST_LABEL_REGEX = new RegExp(`^(?!.*-$)(?!-)[a-zA-Z0-9-]{1,63}$`);\nvar isValidHostLabel = /* @__PURE__ */ __name((value, allowSubDomains = false) => {\n if (!allowSubDomains) {\n return VALID_HOST_LABEL_REGEX.test(value);\n }\n const labels = value.split(\".\");\n for (const label of labels) {\n if (!isValidHostLabel(label)) {\n return false;\n }\n }\n return true;\n}, \"isValidHostLabel\");\n\n// src/utils/customEndpointFunctions.ts\nvar customEndpointFunctions = {};\n\n// src/debug/debugId.ts\nvar debugId = \"endpoints\";\n\n// src/debug/toDebugString.ts\nfunction toDebugString(input) {\n if (typeof input !== \"object\" || input == null) {\n return input;\n }\n if (\"ref\" in input) {\n return `$${toDebugString(input.ref)}`;\n }\n if (\"fn\" in input) {\n return `${input.fn}(${(input.argv || []).map(toDebugString).join(\", \")})`;\n }\n return JSON.stringify(input, null, 2);\n}\n__name(toDebugString, \"toDebugString\");\n\n// src/types/EndpointError.ts\nvar _EndpointError = class _EndpointError extends Error {\n constructor(message) {\n super(message);\n this.name = \"EndpointError\";\n }\n};\n__name(_EndpointError, \"EndpointError\");\nvar EndpointError = _EndpointError;\n\n// src/lib/booleanEquals.ts\nvar booleanEquals = /* @__PURE__ */ __name((value1, value2) => value1 === value2, \"booleanEquals\");\n\n// src/lib/getAttrPathList.ts\nvar getAttrPathList = /* @__PURE__ */ __name((path) => {\n const parts = path.split(\".\");\n const pathList = [];\n for (const part of parts) {\n const squareBracketIndex = part.indexOf(\"[\");\n if (squareBracketIndex !== -1) {\n if (part.indexOf(\"]\") !== part.length - 1) {\n throw new EndpointError(`Path: '${path}' does not end with ']'`);\n }\n const arrayIndex = part.slice(squareBracketIndex + 1, -1);\n if (Number.isNaN(parseInt(arrayIndex))) {\n throw new EndpointError(`Invalid array index: '${arrayIndex}' in path: '${path}'`);\n }\n if (squareBracketIndex !== 0) {\n pathList.push(part.slice(0, squareBracketIndex));\n }\n pathList.push(arrayIndex);\n } else {\n pathList.push(part);\n }\n }\n return pathList;\n}, \"getAttrPathList\");\n\n// src/lib/getAttr.ts\nvar getAttr = /* @__PURE__ */ __name((value, path) => getAttrPathList(path).reduce((acc, index) => {\n if (typeof acc !== \"object\") {\n throw new EndpointError(`Index '${index}' in '${path}' not found in '${JSON.stringify(value)}'`);\n } else if (Array.isArray(acc)) {\n return acc[parseInt(index)];\n }\n return acc[index];\n}, value), \"getAttr\");\n\n// src/lib/isSet.ts\nvar isSet = /* @__PURE__ */ __name((value) => value != null, \"isSet\");\n\n// src/lib/not.ts\nvar not = /* @__PURE__ */ __name((value) => !value, \"not\");\n\n// src/lib/parseURL.ts\nvar import_types3 = require(\"@smithy/types\");\nvar DEFAULT_PORTS = {\n [import_types3.EndpointURLScheme.HTTP]: 80,\n [import_types3.EndpointURLScheme.HTTPS]: 443\n};\nvar parseURL = /* @__PURE__ */ __name((value) => {\n const whatwgURL = (() => {\n try {\n if (value instanceof URL) {\n return value;\n }\n if (typeof value === \"object\" && \"hostname\" in value) {\n const { hostname: hostname2, port, protocol: protocol2 = \"\", path = \"\", query = {} } = value;\n const url = new URL(`${protocol2}//${hostname2}${port ? `:${port}` : \"\"}${path}`);\n url.search = Object.entries(query).map(([k, v]) => `${k}=${v}`).join(\"&\");\n return url;\n }\n return new URL(value);\n } catch (error) {\n return null;\n }\n })();\n if (!whatwgURL) {\n console.error(`Unable to parse ${JSON.stringify(value)} as a whatwg URL.`);\n return null;\n }\n const urlString = whatwgURL.href;\n const { host, hostname, pathname, protocol, search } = whatwgURL;\n if (search) {\n return null;\n }\n const scheme = protocol.slice(0, -1);\n if (!Object.values(import_types3.EndpointURLScheme).includes(scheme)) {\n return null;\n }\n const isIp = isIpAddress(hostname);\n const inputContainsDefaultPort = urlString.includes(`${host}:${DEFAULT_PORTS[scheme]}`) || typeof value === \"string\" && value.includes(`${host}:${DEFAULT_PORTS[scheme]}`);\n const authority = `${host}${inputContainsDefaultPort ? `:${DEFAULT_PORTS[scheme]}` : ``}`;\n return {\n scheme,\n authority,\n path: pathname,\n normalizedPath: pathname.endsWith(\"/\") ? pathname : `${pathname}/`,\n isIp\n };\n}, \"parseURL\");\n\n// src/lib/stringEquals.ts\nvar stringEquals = /* @__PURE__ */ __name((value1, value2) => value1 === value2, \"stringEquals\");\n\n// src/lib/substring.ts\nvar substring = /* @__PURE__ */ __name((input, start, stop, reverse) => {\n if (start >= stop || input.length < stop) {\n return null;\n }\n if (!reverse) {\n return input.substring(start, stop);\n }\n return input.substring(input.length - stop, input.length - start);\n}, \"substring\");\n\n// src/lib/uriEncode.ts\nvar uriEncode = /* @__PURE__ */ __name((value) => encodeURIComponent(value).replace(/[!*'()]/g, (c) => `%${c.charCodeAt(0).toString(16).toUpperCase()}`), \"uriEncode\");\n\n// src/utils/endpointFunctions.ts\nvar endpointFunctions = {\n booleanEquals,\n getAttr,\n isSet,\n isValidHostLabel,\n not,\n parseURL,\n stringEquals,\n substring,\n uriEncode\n};\n\n// src/utils/evaluateTemplate.ts\nvar evaluateTemplate = /* @__PURE__ */ __name((template, options) => {\n const evaluatedTemplateArr = [];\n const templateContext = {\n ...options.endpointParams,\n ...options.referenceRecord\n };\n let currentIndex = 0;\n while (currentIndex < template.length) {\n const openingBraceIndex = template.indexOf(\"{\", currentIndex);\n if (openingBraceIndex === -1) {\n evaluatedTemplateArr.push(template.slice(currentIndex));\n break;\n }\n evaluatedTemplateArr.push(template.slice(currentIndex, openingBraceIndex));\n const closingBraceIndex = template.indexOf(\"}\", openingBraceIndex);\n if (closingBraceIndex === -1) {\n evaluatedTemplateArr.push(template.slice(openingBraceIndex));\n break;\n }\n if (template[openingBraceIndex + 1] === \"{\" && template[closingBraceIndex + 1] === \"}\") {\n evaluatedTemplateArr.push(template.slice(openingBraceIndex + 1, closingBraceIndex));\n currentIndex = closingBraceIndex + 2;\n }\n const parameterName = template.substring(openingBraceIndex + 1, closingBraceIndex);\n if (parameterName.includes(\"#\")) {\n const [refName, attrName] = parameterName.split(\"#\");\n evaluatedTemplateArr.push(getAttr(templateContext[refName], attrName));\n } else {\n evaluatedTemplateArr.push(templateContext[parameterName]);\n }\n currentIndex = closingBraceIndex + 1;\n }\n return evaluatedTemplateArr.join(\"\");\n}, \"evaluateTemplate\");\n\n// src/utils/getReferenceValue.ts\nvar getReferenceValue = /* @__PURE__ */ __name(({ ref }, options) => {\n const referenceRecord = {\n ...options.endpointParams,\n ...options.referenceRecord\n };\n return referenceRecord[ref];\n}, \"getReferenceValue\");\n\n// src/utils/evaluateExpression.ts\nvar evaluateExpression = /* @__PURE__ */ __name((obj, keyName, options) => {\n if (typeof obj === \"string\") {\n return evaluateTemplate(obj, options);\n } else if (obj[\"fn\"]) {\n return callFunction(obj, options);\n } else if (obj[\"ref\"]) {\n return getReferenceValue(obj, options);\n }\n throw new EndpointError(`'${keyName}': ${String(obj)} is not a string, function or reference.`);\n}, \"evaluateExpression\");\n\n// src/utils/callFunction.ts\nvar callFunction = /* @__PURE__ */ __name(({ fn, argv }, options) => {\n const evaluatedArgs = argv.map(\n (arg) => [\"boolean\", \"number\"].includes(typeof arg) ? arg : evaluateExpression(arg, \"arg\", options)\n );\n const fnSegments = fn.split(\".\");\n if (fnSegments[0] in customEndpointFunctions && fnSegments[1] != null) {\n return customEndpointFunctions[fnSegments[0]][fnSegments[1]](...evaluatedArgs);\n }\n return endpointFunctions[fn](...evaluatedArgs);\n}, \"callFunction\");\n\n// src/utils/evaluateCondition.ts\nvar evaluateCondition = /* @__PURE__ */ __name(({ assign, ...fnArgs }, options) => {\n var _a, _b;\n if (assign && assign in options.referenceRecord) {\n throw new EndpointError(`'${assign}' is already defined in Reference Record.`);\n }\n const value = callFunction(fnArgs, options);\n (_b = (_a = options.logger) == null ? void 0 : _a.debug) == null ? void 0 : _b.call(_a, `${debugId} evaluateCondition: ${toDebugString(fnArgs)} = ${toDebugString(value)}`);\n return {\n result: value === \"\" ? true : !!value,\n ...assign != null && { toAssign: { name: assign, value } }\n };\n}, \"evaluateCondition\");\n\n// src/utils/evaluateConditions.ts\nvar evaluateConditions = /* @__PURE__ */ __name((conditions = [], options) => {\n var _a, _b;\n const conditionsReferenceRecord = {};\n for (const condition of conditions) {\n const { result, toAssign } = evaluateCondition(condition, {\n ...options,\n referenceRecord: {\n ...options.referenceRecord,\n ...conditionsReferenceRecord\n }\n });\n if (!result) {\n return { result };\n }\n if (toAssign) {\n conditionsReferenceRecord[toAssign.name] = toAssign.value;\n (_b = (_a = options.logger) == null ? void 0 : _a.debug) == null ? void 0 : _b.call(_a, `${debugId} assign: ${toAssign.name} := ${toDebugString(toAssign.value)}`);\n }\n }\n return { result: true, referenceRecord: conditionsReferenceRecord };\n}, \"evaluateConditions\");\n\n// src/utils/getEndpointHeaders.ts\nvar getEndpointHeaders = /* @__PURE__ */ __name((headers, options) => Object.entries(headers).reduce(\n (acc, [headerKey, headerVal]) => ({\n ...acc,\n [headerKey]: headerVal.map((headerValEntry) => {\n const processedExpr = evaluateExpression(headerValEntry, \"Header value entry\", options);\n if (typeof processedExpr !== \"string\") {\n throw new EndpointError(`Header '${headerKey}' value '${processedExpr}' is not a string`);\n }\n return processedExpr;\n })\n }),\n {}\n), \"getEndpointHeaders\");\n\n// src/utils/getEndpointProperty.ts\nvar getEndpointProperty = /* @__PURE__ */ __name((property, options) => {\n if (Array.isArray(property)) {\n return property.map((propertyEntry) => getEndpointProperty(propertyEntry, options));\n }\n switch (typeof property) {\n case \"string\":\n return evaluateTemplate(property, options);\n case \"object\":\n if (property === null) {\n throw new EndpointError(`Unexpected endpoint property: ${property}`);\n }\n return getEndpointProperties(property, options);\n case \"boolean\":\n return property;\n default:\n throw new EndpointError(`Unexpected endpoint property type: ${typeof property}`);\n }\n}, \"getEndpointProperty\");\n\n// src/utils/getEndpointProperties.ts\nvar getEndpointProperties = /* @__PURE__ */ __name((properties, options) => Object.entries(properties).reduce(\n (acc, [propertyKey, propertyVal]) => ({\n ...acc,\n [propertyKey]: getEndpointProperty(propertyVal, options)\n }),\n {}\n), \"getEndpointProperties\");\n\n// src/utils/getEndpointUrl.ts\nvar getEndpointUrl = /* @__PURE__ */ __name((endpointUrl, options) => {\n const expression = evaluateExpression(endpointUrl, \"Endpoint URL\", options);\n if (typeof expression === \"string\") {\n try {\n return new URL(expression);\n } catch (error) {\n console.error(`Failed to construct URL with ${expression}`, error);\n throw error;\n }\n }\n throw new EndpointError(`Endpoint URL must be a string, got ${typeof expression}`);\n}, \"getEndpointUrl\");\n\n// src/utils/evaluateEndpointRule.ts\nvar evaluateEndpointRule = /* @__PURE__ */ __name((endpointRule, options) => {\n var _a, _b;\n const { conditions, endpoint } = endpointRule;\n const { result, referenceRecord } = evaluateConditions(conditions, options);\n if (!result) {\n return;\n }\n const endpointRuleOptions = {\n ...options,\n referenceRecord: { ...options.referenceRecord, ...referenceRecord }\n };\n const { url, properties, headers } = endpoint;\n (_b = (_a = options.logger) == null ? void 0 : _a.debug) == null ? void 0 : _b.call(_a, `${debugId} Resolving endpoint from template: ${toDebugString(endpoint)}`);\n return {\n ...headers != void 0 && {\n headers: getEndpointHeaders(headers, endpointRuleOptions)\n },\n ...properties != void 0 && {\n properties: getEndpointProperties(properties, endpointRuleOptions)\n },\n url: getEndpointUrl(url, endpointRuleOptions)\n };\n}, \"evaluateEndpointRule\");\n\n// src/utils/evaluateErrorRule.ts\nvar evaluateErrorRule = /* @__PURE__ */ __name((errorRule, options) => {\n const { conditions, error } = errorRule;\n const { result, referenceRecord } = evaluateConditions(conditions, options);\n if (!result) {\n return;\n }\n throw new EndpointError(\n evaluateExpression(error, \"Error\", {\n ...options,\n referenceRecord: { ...options.referenceRecord, ...referenceRecord }\n })\n );\n}, \"evaluateErrorRule\");\n\n// src/utils/evaluateTreeRule.ts\nvar evaluateTreeRule = /* @__PURE__ */ __name((treeRule, options) => {\n const { conditions, rules } = treeRule;\n const { result, referenceRecord } = evaluateConditions(conditions, options);\n if (!result) {\n return;\n }\n return evaluateRules(rules, {\n ...options,\n referenceRecord: { ...options.referenceRecord, ...referenceRecord }\n });\n}, \"evaluateTreeRule\");\n\n// src/utils/evaluateRules.ts\nvar evaluateRules = /* @__PURE__ */ __name((rules, options) => {\n for (const rule of rules) {\n if (rule.type === \"endpoint\") {\n const endpointOrUndefined = evaluateEndpointRule(rule, options);\n if (endpointOrUndefined) {\n return endpointOrUndefined;\n }\n } else if (rule.type === \"error\") {\n evaluateErrorRule(rule, options);\n } else if (rule.type === \"tree\") {\n const endpointOrUndefined = evaluateTreeRule(rule, options);\n if (endpointOrUndefined) {\n return endpointOrUndefined;\n }\n } else {\n throw new EndpointError(`Unknown endpoint rule: ${rule}`);\n }\n }\n throw new EndpointError(`Rules evaluation failed`);\n}, \"evaluateRules\");\n\n// src/resolveEndpoint.ts\nvar resolveEndpoint = /* @__PURE__ */ __name((ruleSetObject, options) => {\n var _a, _b, _c, _d;\n const { endpointParams, logger } = options;\n const { parameters, rules } = ruleSetObject;\n (_b = (_a = options.logger) == null ? void 0 : _a.debug) == null ? void 0 : _b.call(_a, `${debugId} Initial EndpointParams: ${toDebugString(endpointParams)}`);\n const paramsWithDefault = Object.entries(parameters).filter(([, v]) => v.default != null).map(([k, v]) => [k, v.default]);\n if (paramsWithDefault.length > 0) {\n for (const [paramKey, paramDefaultValue] of paramsWithDefault) {\n endpointParams[paramKey] = endpointParams[paramKey] ?? paramDefaultValue;\n }\n }\n const requiredParams = Object.entries(parameters).filter(([, v]) => v.required).map(([k]) => k);\n for (const requiredParam of requiredParams) {\n if (endpointParams[requiredParam] == null) {\n throw new EndpointError(`Missing required parameter: '${requiredParam}'`);\n }\n }\n const endpoint = evaluateRules(rules, { endpointParams, logger, referenceRecord: {} });\n (_d = (_c = options.logger) == null ? void 0 : _c.debug) == null ? void 0 : _d.call(_c, `${debugId} Resolved endpoint: ${toDebugString(endpoint)}`);\n return endpoint;\n}, \"resolveEndpoint\");\n// Annotate the CommonJS export names for ESM import in node:\n\n0 && (module.exports = {\n EndpointCache,\n isIpAddress,\n isValidHostLabel,\n customEndpointFunctions,\n resolveEndpoint,\n EndpointError\n});\n\n","var __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/index.ts\nvar src_exports = {};\n__export(src_exports, {\n AlgorithmId: () => AlgorithmId,\n EndpointURLScheme: () => EndpointURLScheme,\n FieldPosition: () => FieldPosition,\n HttpApiKeyAuthLocation: () => HttpApiKeyAuthLocation,\n HttpAuthLocation: () => HttpAuthLocation,\n IniSectionType: () => IniSectionType,\n RequestHandlerProtocol: () => RequestHandlerProtocol,\n SMITHY_CONTEXT_KEY: () => SMITHY_CONTEXT_KEY,\n getDefaultClientConfiguration: () => getDefaultClientConfiguration,\n resolveDefaultRuntimeConfig: () => resolveDefaultRuntimeConfig\n});\nmodule.exports = __toCommonJS(src_exports);\n\n// src/auth/auth.ts\nvar HttpAuthLocation = /* @__PURE__ */ ((HttpAuthLocation2) => {\n HttpAuthLocation2[\"HEADER\"] = \"header\";\n HttpAuthLocation2[\"QUERY\"] = \"query\";\n return HttpAuthLocation2;\n})(HttpAuthLocation || {});\n\n// src/auth/HttpApiKeyAuth.ts\nvar HttpApiKeyAuthLocation = /* @__PURE__ */ ((HttpApiKeyAuthLocation2) => {\n HttpApiKeyAuthLocation2[\"HEADER\"] = \"header\";\n HttpApiKeyAuthLocation2[\"QUERY\"] = \"query\";\n return HttpApiKeyAuthLocation2;\n})(HttpApiKeyAuthLocation || {});\n\n// src/endpoint.ts\nvar EndpointURLScheme = /* @__PURE__ */ ((EndpointURLScheme2) => {\n EndpointURLScheme2[\"HTTP\"] = \"http\";\n EndpointURLScheme2[\"HTTPS\"] = \"https\";\n return EndpointURLScheme2;\n})(EndpointURLScheme || {});\n\n// src/extensions/checksum.ts\nvar AlgorithmId = /* @__PURE__ */ ((AlgorithmId2) => {\n AlgorithmId2[\"MD5\"] = \"md5\";\n AlgorithmId2[\"CRC32\"] = \"crc32\";\n AlgorithmId2[\"CRC32C\"] = \"crc32c\";\n AlgorithmId2[\"SHA1\"] = \"sha1\";\n AlgorithmId2[\"SHA256\"] = \"sha256\";\n return AlgorithmId2;\n})(AlgorithmId || {});\nvar getChecksumConfiguration = /* @__PURE__ */ __name((runtimeConfig) => {\n const checksumAlgorithms = [];\n if (runtimeConfig.sha256 !== void 0) {\n checksumAlgorithms.push({\n algorithmId: () => \"sha256\" /* SHA256 */,\n checksumConstructor: () => runtimeConfig.sha256\n });\n }\n if (runtimeConfig.md5 != void 0) {\n checksumAlgorithms.push({\n algorithmId: () => \"md5\" /* MD5 */,\n checksumConstructor: () => runtimeConfig.md5\n });\n }\n return {\n _checksumAlgorithms: checksumAlgorithms,\n addChecksumAlgorithm(algo) {\n this._checksumAlgorithms.push(algo);\n },\n checksumAlgorithms() {\n return this._checksumAlgorithms;\n }\n };\n}, \"getChecksumConfiguration\");\nvar resolveChecksumRuntimeConfig = /* @__PURE__ */ __name((clientConfig) => {\n const runtimeConfig = {};\n clientConfig.checksumAlgorithms().forEach((checksumAlgorithm) => {\n runtimeConfig[checksumAlgorithm.algorithmId()] = checksumAlgorithm.checksumConstructor();\n });\n return runtimeConfig;\n}, \"resolveChecksumRuntimeConfig\");\n\n// src/extensions/defaultClientConfiguration.ts\nvar getDefaultClientConfiguration = /* @__PURE__ */ __name((runtimeConfig) => {\n return {\n ...getChecksumConfiguration(runtimeConfig)\n };\n}, \"getDefaultClientConfiguration\");\nvar resolveDefaultRuntimeConfig = /* @__PURE__ */ __name((config) => {\n return {\n ...resolveChecksumRuntimeConfig(config)\n };\n}, \"resolveDefaultRuntimeConfig\");\n\n// src/http.ts\nvar FieldPosition = /* @__PURE__ */ ((FieldPosition2) => {\n FieldPosition2[FieldPosition2[\"HEADER\"] = 0] = \"HEADER\";\n FieldPosition2[FieldPosition2[\"TRAILER\"] = 1] = \"TRAILER\";\n return FieldPosition2;\n})(FieldPosition || {});\n\n// src/middleware.ts\nvar SMITHY_CONTEXT_KEY = \"__smithy_context\";\n\n// src/profile.ts\nvar IniSectionType = /* @__PURE__ */ ((IniSectionType2) => {\n IniSectionType2[\"PROFILE\"] = \"profile\";\n IniSectionType2[\"SSO_SESSION\"] = \"sso-session\";\n IniSectionType2[\"SERVICES\"] = \"services\";\n return IniSectionType2;\n})(IniSectionType || {});\n\n// src/transfer.ts\nvar RequestHandlerProtocol = /* @__PURE__ */ ((RequestHandlerProtocol2) => {\n RequestHandlerProtocol2[\"HTTP_0_9\"] = \"http/0.9\";\n RequestHandlerProtocol2[\"HTTP_1_0\"] = \"http/1.0\";\n RequestHandlerProtocol2[\"TDS_8_0\"] = \"tds/8.0\";\n return RequestHandlerProtocol2;\n})(RequestHandlerProtocol || {});\n// Annotate the CommonJS export names for ESM import in node:\n\n0 && (module.exports = {\n HttpAuthLocation,\n HttpApiKeyAuthLocation,\n EndpointURLScheme,\n AlgorithmId,\n getDefaultClientConfiguration,\n resolveDefaultRuntimeConfig,\n FieldPosition,\n SMITHY_CONTEXT_KEY,\n IniSectionType,\n RequestHandlerProtocol\n});\n\n","var __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/index.ts\nvar src_exports = {};\n__export(src_exports, {\n fromHex: () => fromHex,\n toHex: () => toHex\n});\nmodule.exports = __toCommonJS(src_exports);\nvar SHORT_TO_HEX = {};\nvar HEX_TO_SHORT = {};\nfor (let i = 0; i < 256; i++) {\n let encodedByte = i.toString(16).toLowerCase();\n if (encodedByte.length === 1) {\n encodedByte = `0${encodedByte}`;\n }\n SHORT_TO_HEX[i] = encodedByte;\n HEX_TO_SHORT[encodedByte] = i;\n}\nfunction fromHex(encoded) {\n if (encoded.length % 2 !== 0) {\n throw new Error(\"Hex encoded strings must have an even number length\");\n }\n const out = new Uint8Array(encoded.length / 2);\n for (let i = 0; i < encoded.length; i += 2) {\n const encodedByte = encoded.slice(i, i + 2).toLowerCase();\n if (encodedByte in HEX_TO_SHORT) {\n out[i / 2] = HEX_TO_SHORT[encodedByte];\n } else {\n throw new Error(`Cannot decode unrecognized sequence ${encodedByte} as hexadecimal`);\n }\n }\n return out;\n}\n__name(fromHex, \"fromHex\");\nfunction toHex(bytes) {\n let out = \"\";\n for (let i = 0; i < bytes.byteLength; i++) {\n out += SHORT_TO_HEX[bytes[i]];\n }\n return out;\n}\n__name(toHex, \"toHex\");\n// Annotate the CommonJS export names for ESM import in node:\n\n0 && (module.exports = {\n fromHex,\n toHex\n});\n\n","var __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/index.ts\nvar src_exports = {};\n__export(src_exports, {\n getSmithyContext: () => getSmithyContext,\n normalizeProvider: () => normalizeProvider\n});\nmodule.exports = __toCommonJS(src_exports);\n\n// src/getSmithyContext.ts\nvar import_types = require(\"@smithy/types\");\nvar getSmithyContext = /* @__PURE__ */ __name((context) => context[import_types.SMITHY_CONTEXT_KEY] || (context[import_types.SMITHY_CONTEXT_KEY] = {}), \"getSmithyContext\");\n\n// src/normalizeProvider.ts\nvar normalizeProvider = /* @__PURE__ */ __name((input) => {\n if (typeof input === \"function\")\n return input;\n const promisified = Promise.resolve(input);\n return () => promisified;\n}, \"normalizeProvider\");\n// Annotate the CommonJS export names for ESM import in node:\n\n0 && (module.exports = {\n getSmithyContext,\n normalizeProvider\n});\n\n","var __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/index.ts\nvar src_exports = {};\n__export(src_exports, {\n AlgorithmId: () => AlgorithmId,\n EndpointURLScheme: () => EndpointURLScheme,\n FieldPosition: () => FieldPosition,\n HttpApiKeyAuthLocation: () => HttpApiKeyAuthLocation,\n HttpAuthLocation: () => HttpAuthLocation,\n IniSectionType: () => IniSectionType,\n RequestHandlerProtocol: () => RequestHandlerProtocol,\n SMITHY_CONTEXT_KEY: () => SMITHY_CONTEXT_KEY,\n getDefaultClientConfiguration: () => getDefaultClientConfiguration,\n resolveDefaultRuntimeConfig: () => resolveDefaultRuntimeConfig\n});\nmodule.exports = __toCommonJS(src_exports);\n\n// src/auth/auth.ts\nvar HttpAuthLocation = /* @__PURE__ */ ((HttpAuthLocation2) => {\n HttpAuthLocation2[\"HEADER\"] = \"header\";\n HttpAuthLocation2[\"QUERY\"] = \"query\";\n return HttpAuthLocation2;\n})(HttpAuthLocation || {});\n\n// src/auth/HttpApiKeyAuth.ts\nvar HttpApiKeyAuthLocation = /* @__PURE__ */ ((HttpApiKeyAuthLocation2) => {\n HttpApiKeyAuthLocation2[\"HEADER\"] = \"header\";\n HttpApiKeyAuthLocation2[\"QUERY\"] = \"query\";\n return HttpApiKeyAuthLocation2;\n})(HttpApiKeyAuthLocation || {});\n\n// src/endpoint.ts\nvar EndpointURLScheme = /* @__PURE__ */ ((EndpointURLScheme2) => {\n EndpointURLScheme2[\"HTTP\"] = \"http\";\n EndpointURLScheme2[\"HTTPS\"] = \"https\";\n return EndpointURLScheme2;\n})(EndpointURLScheme || {});\n\n// src/extensions/checksum.ts\nvar AlgorithmId = /* @__PURE__ */ ((AlgorithmId2) => {\n AlgorithmId2[\"MD5\"] = \"md5\";\n AlgorithmId2[\"CRC32\"] = \"crc32\";\n AlgorithmId2[\"CRC32C\"] = \"crc32c\";\n AlgorithmId2[\"SHA1\"] = \"sha1\";\n AlgorithmId2[\"SHA256\"] = \"sha256\";\n return AlgorithmId2;\n})(AlgorithmId || {});\nvar getChecksumConfiguration = /* @__PURE__ */ __name((runtimeConfig) => {\n const checksumAlgorithms = [];\n if (runtimeConfig.sha256 !== void 0) {\n checksumAlgorithms.push({\n algorithmId: () => \"sha256\" /* SHA256 */,\n checksumConstructor: () => runtimeConfig.sha256\n });\n }\n if (runtimeConfig.md5 != void 0) {\n checksumAlgorithms.push({\n algorithmId: () => \"md5\" /* MD5 */,\n checksumConstructor: () => runtimeConfig.md5\n });\n }\n return {\n _checksumAlgorithms: checksumAlgorithms,\n addChecksumAlgorithm(algo) {\n this._checksumAlgorithms.push(algo);\n },\n checksumAlgorithms() {\n return this._checksumAlgorithms;\n }\n };\n}, \"getChecksumConfiguration\");\nvar resolveChecksumRuntimeConfig = /* @__PURE__ */ __name((clientConfig) => {\n const runtimeConfig = {};\n clientConfig.checksumAlgorithms().forEach((checksumAlgorithm) => {\n runtimeConfig[checksumAlgorithm.algorithmId()] = checksumAlgorithm.checksumConstructor();\n });\n return runtimeConfig;\n}, \"resolveChecksumRuntimeConfig\");\n\n// src/extensions/defaultClientConfiguration.ts\nvar getDefaultClientConfiguration = /* @__PURE__ */ __name((runtimeConfig) => {\n return {\n ...getChecksumConfiguration(runtimeConfig)\n };\n}, \"getDefaultClientConfiguration\");\nvar resolveDefaultRuntimeConfig = /* @__PURE__ */ __name((config) => {\n return {\n ...resolveChecksumRuntimeConfig(config)\n };\n}, \"resolveDefaultRuntimeConfig\");\n\n// src/http.ts\nvar FieldPosition = /* @__PURE__ */ ((FieldPosition2) => {\n FieldPosition2[FieldPosition2[\"HEADER\"] = 0] = \"HEADER\";\n FieldPosition2[FieldPosition2[\"TRAILER\"] = 1] = \"TRAILER\";\n return FieldPosition2;\n})(FieldPosition || {});\n\n// src/middleware.ts\nvar SMITHY_CONTEXT_KEY = \"__smithy_context\";\n\n// src/profile.ts\nvar IniSectionType = /* @__PURE__ */ ((IniSectionType2) => {\n IniSectionType2[\"PROFILE\"] = \"profile\";\n IniSectionType2[\"SSO_SESSION\"] = \"sso-session\";\n IniSectionType2[\"SERVICES\"] = \"services\";\n return IniSectionType2;\n})(IniSectionType || {});\n\n// src/transfer.ts\nvar RequestHandlerProtocol = /* @__PURE__ */ ((RequestHandlerProtocol2) => {\n RequestHandlerProtocol2[\"HTTP_0_9\"] = \"http/0.9\";\n RequestHandlerProtocol2[\"HTTP_1_0\"] = \"http/1.0\";\n RequestHandlerProtocol2[\"TDS_8_0\"] = \"tds/8.0\";\n return RequestHandlerProtocol2;\n})(RequestHandlerProtocol || {});\n// Annotate the CommonJS export names for ESM import in node:\n\n0 && (module.exports = {\n HttpAuthLocation,\n HttpApiKeyAuthLocation,\n EndpointURLScheme,\n AlgorithmId,\n getDefaultClientConfiguration,\n resolveDefaultRuntimeConfig,\n FieldPosition,\n SMITHY_CONTEXT_KEY,\n IniSectionType,\n RequestHandlerProtocol\n});\n\n","var __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/index.ts\nvar src_exports = {};\n__export(src_exports, {\n AdaptiveRetryStrategy: () => AdaptiveRetryStrategy,\n ConfiguredRetryStrategy: () => ConfiguredRetryStrategy,\n DEFAULT_MAX_ATTEMPTS: () => DEFAULT_MAX_ATTEMPTS,\n DEFAULT_RETRY_DELAY_BASE: () => DEFAULT_RETRY_DELAY_BASE,\n DEFAULT_RETRY_MODE: () => DEFAULT_RETRY_MODE,\n DefaultRateLimiter: () => DefaultRateLimiter,\n INITIAL_RETRY_TOKENS: () => INITIAL_RETRY_TOKENS,\n INVOCATION_ID_HEADER: () => INVOCATION_ID_HEADER,\n MAXIMUM_RETRY_DELAY: () => MAXIMUM_RETRY_DELAY,\n NO_RETRY_INCREMENT: () => NO_RETRY_INCREMENT,\n REQUEST_HEADER: () => REQUEST_HEADER,\n RETRY_COST: () => RETRY_COST,\n RETRY_MODES: () => RETRY_MODES,\n StandardRetryStrategy: () => StandardRetryStrategy,\n THROTTLING_RETRY_DELAY_BASE: () => THROTTLING_RETRY_DELAY_BASE,\n TIMEOUT_RETRY_COST: () => TIMEOUT_RETRY_COST\n});\nmodule.exports = __toCommonJS(src_exports);\n\n// src/config.ts\nvar RETRY_MODES = /* @__PURE__ */ ((RETRY_MODES2) => {\n RETRY_MODES2[\"STANDARD\"] = \"standard\";\n RETRY_MODES2[\"ADAPTIVE\"] = \"adaptive\";\n return RETRY_MODES2;\n})(RETRY_MODES || {});\nvar DEFAULT_MAX_ATTEMPTS = 3;\nvar DEFAULT_RETRY_MODE = \"standard\" /* STANDARD */;\n\n// src/DefaultRateLimiter.ts\nvar import_service_error_classification = require(\"@smithy/service-error-classification\");\nvar _DefaultRateLimiter = class _DefaultRateLimiter {\n constructor(options) {\n // Pre-set state variables\n this.currentCapacity = 0;\n this.enabled = false;\n this.lastMaxRate = 0;\n this.measuredTxRate = 0;\n this.requestCount = 0;\n this.lastTimestamp = 0;\n this.timeWindow = 0;\n this.beta = (options == null ? void 0 : options.beta) ?? 0.7;\n this.minCapacity = (options == null ? void 0 : options.minCapacity) ?? 1;\n this.minFillRate = (options == null ? void 0 : options.minFillRate) ?? 0.5;\n this.scaleConstant = (options == null ? void 0 : options.scaleConstant) ?? 0.4;\n this.smooth = (options == null ? void 0 : options.smooth) ?? 0.8;\n const currentTimeInSeconds = this.getCurrentTimeInSeconds();\n this.lastThrottleTime = currentTimeInSeconds;\n this.lastTxRateBucket = Math.floor(this.getCurrentTimeInSeconds());\n this.fillRate = this.minFillRate;\n this.maxCapacity = this.minCapacity;\n }\n getCurrentTimeInSeconds() {\n return Date.now() / 1e3;\n }\n async getSendToken() {\n return this.acquireTokenBucket(1);\n }\n async acquireTokenBucket(amount) {\n if (!this.enabled) {\n return;\n }\n this.refillTokenBucket();\n if (amount > this.currentCapacity) {\n const delay = (amount - this.currentCapacity) / this.fillRate * 1e3;\n await new Promise((resolve) => setTimeout(resolve, delay));\n }\n this.currentCapacity = this.currentCapacity - amount;\n }\n refillTokenBucket() {\n const timestamp = this.getCurrentTimeInSeconds();\n if (!this.lastTimestamp) {\n this.lastTimestamp = timestamp;\n return;\n }\n const fillAmount = (timestamp - this.lastTimestamp) * this.fillRate;\n this.currentCapacity = Math.min(this.maxCapacity, this.currentCapacity + fillAmount);\n this.lastTimestamp = timestamp;\n }\n updateClientSendingRate(response) {\n let calculatedRate;\n this.updateMeasuredRate();\n if ((0, import_service_error_classification.isThrottlingError)(response)) {\n const rateToUse = !this.enabled ? this.measuredTxRate : Math.min(this.measuredTxRate, this.fillRate);\n this.lastMaxRate = rateToUse;\n this.calculateTimeWindow();\n this.lastThrottleTime = this.getCurrentTimeInSeconds();\n calculatedRate = this.cubicThrottle(rateToUse);\n this.enableTokenBucket();\n } else {\n this.calculateTimeWindow();\n calculatedRate = this.cubicSuccess(this.getCurrentTimeInSeconds());\n }\n const newRate = Math.min(calculatedRate, 2 * this.measuredTxRate);\n this.updateTokenBucketRate(newRate);\n }\n calculateTimeWindow() {\n this.timeWindow = this.getPrecise(Math.pow(this.lastMaxRate * (1 - this.beta) / this.scaleConstant, 1 / 3));\n }\n cubicThrottle(rateToUse) {\n return this.getPrecise(rateToUse * this.beta);\n }\n cubicSuccess(timestamp) {\n return this.getPrecise(\n this.scaleConstant * Math.pow(timestamp - this.lastThrottleTime - this.timeWindow, 3) + this.lastMaxRate\n );\n }\n enableTokenBucket() {\n this.enabled = true;\n }\n updateTokenBucketRate(newRate) {\n this.refillTokenBucket();\n this.fillRate = Math.max(newRate, this.minFillRate);\n this.maxCapacity = Math.max(newRate, this.minCapacity);\n this.currentCapacity = Math.min(this.currentCapacity, this.maxCapacity);\n }\n updateMeasuredRate() {\n const t = this.getCurrentTimeInSeconds();\n const timeBucket = Math.floor(t * 2) / 2;\n this.requestCount++;\n if (timeBucket > this.lastTxRateBucket) {\n const currentRate = this.requestCount / (timeBucket - this.lastTxRateBucket);\n this.measuredTxRate = this.getPrecise(currentRate * this.smooth + this.measuredTxRate * (1 - this.smooth));\n this.requestCount = 0;\n this.lastTxRateBucket = timeBucket;\n }\n }\n getPrecise(num) {\n return parseFloat(num.toFixed(8));\n }\n};\n__name(_DefaultRateLimiter, \"DefaultRateLimiter\");\nvar DefaultRateLimiter = _DefaultRateLimiter;\n\n// src/constants.ts\nvar DEFAULT_RETRY_DELAY_BASE = 100;\nvar MAXIMUM_RETRY_DELAY = 20 * 1e3;\nvar THROTTLING_RETRY_DELAY_BASE = 500;\nvar INITIAL_RETRY_TOKENS = 500;\nvar RETRY_COST = 5;\nvar TIMEOUT_RETRY_COST = 10;\nvar NO_RETRY_INCREMENT = 1;\nvar INVOCATION_ID_HEADER = \"amz-sdk-invocation-id\";\nvar REQUEST_HEADER = \"amz-sdk-request\";\n\n// src/defaultRetryBackoffStrategy.ts\nvar getDefaultRetryBackoffStrategy = /* @__PURE__ */ __name(() => {\n let delayBase = DEFAULT_RETRY_DELAY_BASE;\n const computeNextBackoffDelay = /* @__PURE__ */ __name((attempts) => {\n return Math.floor(Math.min(MAXIMUM_RETRY_DELAY, Math.random() * 2 ** attempts * delayBase));\n }, \"computeNextBackoffDelay\");\n const setDelayBase = /* @__PURE__ */ __name((delay) => {\n delayBase = delay;\n }, \"setDelayBase\");\n return {\n computeNextBackoffDelay,\n setDelayBase\n };\n}, \"getDefaultRetryBackoffStrategy\");\n\n// src/defaultRetryToken.ts\nvar createDefaultRetryToken = /* @__PURE__ */ __name(({\n retryDelay,\n retryCount,\n retryCost\n}) => {\n const getRetryCount = /* @__PURE__ */ __name(() => retryCount, \"getRetryCount\");\n const getRetryDelay = /* @__PURE__ */ __name(() => Math.min(MAXIMUM_RETRY_DELAY, retryDelay), \"getRetryDelay\");\n const getRetryCost = /* @__PURE__ */ __name(() => retryCost, \"getRetryCost\");\n return {\n getRetryCount,\n getRetryDelay,\n getRetryCost\n };\n}, \"createDefaultRetryToken\");\n\n// src/StandardRetryStrategy.ts\nvar _StandardRetryStrategy = class _StandardRetryStrategy {\n constructor(maxAttempts) {\n this.maxAttempts = maxAttempts;\n this.mode = \"standard\" /* STANDARD */;\n this.capacity = INITIAL_RETRY_TOKENS;\n this.retryBackoffStrategy = getDefaultRetryBackoffStrategy();\n this.maxAttemptsProvider = typeof maxAttempts === \"function\" ? maxAttempts : async () => maxAttempts;\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n async acquireInitialRetryToken(retryTokenScope) {\n return createDefaultRetryToken({\n retryDelay: DEFAULT_RETRY_DELAY_BASE,\n retryCount: 0\n });\n }\n async refreshRetryTokenForRetry(token, errorInfo) {\n const maxAttempts = await this.getMaxAttempts();\n if (this.shouldRetry(token, errorInfo, maxAttempts)) {\n const errorType = errorInfo.errorType;\n this.retryBackoffStrategy.setDelayBase(\n errorType === \"THROTTLING\" ? THROTTLING_RETRY_DELAY_BASE : DEFAULT_RETRY_DELAY_BASE\n );\n const delayFromErrorType = this.retryBackoffStrategy.computeNextBackoffDelay(token.getRetryCount());\n const retryDelay = errorInfo.retryAfterHint ? Math.max(errorInfo.retryAfterHint.getTime() - Date.now() || 0, delayFromErrorType) : delayFromErrorType;\n const capacityCost = this.getCapacityCost(errorType);\n this.capacity -= capacityCost;\n return createDefaultRetryToken({\n retryDelay,\n retryCount: token.getRetryCount() + 1,\n retryCost: capacityCost\n });\n }\n throw new Error(\"No retry token available\");\n }\n recordSuccess(token) {\n this.capacity = Math.max(INITIAL_RETRY_TOKENS, this.capacity + (token.getRetryCost() ?? NO_RETRY_INCREMENT));\n }\n /**\n * @returns the current available retry capacity.\n *\n * This number decreases when retries are executed and refills when requests or retries succeed.\n */\n getCapacity() {\n return this.capacity;\n }\n async getMaxAttempts() {\n try {\n return await this.maxAttemptsProvider();\n } catch (error) {\n console.warn(`Max attempts provider could not resolve. Using default of ${DEFAULT_MAX_ATTEMPTS}`);\n return DEFAULT_MAX_ATTEMPTS;\n }\n }\n shouldRetry(tokenToRenew, errorInfo, maxAttempts) {\n const attempts = tokenToRenew.getRetryCount() + 1;\n return attempts < maxAttempts && this.capacity >= this.getCapacityCost(errorInfo.errorType) && this.isRetryableError(errorInfo.errorType);\n }\n getCapacityCost(errorType) {\n return errorType === \"TRANSIENT\" ? TIMEOUT_RETRY_COST : RETRY_COST;\n }\n isRetryableError(errorType) {\n return errorType === \"THROTTLING\" || errorType === \"TRANSIENT\";\n }\n};\n__name(_StandardRetryStrategy, \"StandardRetryStrategy\");\nvar StandardRetryStrategy = _StandardRetryStrategy;\n\n// src/AdaptiveRetryStrategy.ts\nvar _AdaptiveRetryStrategy = class _AdaptiveRetryStrategy {\n constructor(maxAttemptsProvider, options) {\n this.maxAttemptsProvider = maxAttemptsProvider;\n this.mode = \"adaptive\" /* ADAPTIVE */;\n const { rateLimiter } = options ?? {};\n this.rateLimiter = rateLimiter ?? new DefaultRateLimiter();\n this.standardRetryStrategy = new StandardRetryStrategy(maxAttemptsProvider);\n }\n async acquireInitialRetryToken(retryTokenScope) {\n await this.rateLimiter.getSendToken();\n return this.standardRetryStrategy.acquireInitialRetryToken(retryTokenScope);\n }\n async refreshRetryTokenForRetry(tokenToRenew, errorInfo) {\n this.rateLimiter.updateClientSendingRate(errorInfo);\n return this.standardRetryStrategy.refreshRetryTokenForRetry(tokenToRenew, errorInfo);\n }\n recordSuccess(token) {\n this.rateLimiter.updateClientSendingRate({});\n this.standardRetryStrategy.recordSuccess(token);\n }\n};\n__name(_AdaptiveRetryStrategy, \"AdaptiveRetryStrategy\");\nvar AdaptiveRetryStrategy = _AdaptiveRetryStrategy;\n\n// src/ConfiguredRetryStrategy.ts\nvar _ConfiguredRetryStrategy = class _ConfiguredRetryStrategy extends StandardRetryStrategy {\n /**\n * @param maxAttempts - the maximum number of retry attempts allowed.\n * e.g., if set to 3, then 4 total requests are possible.\n * @param computeNextBackoffDelay - a millisecond delay for each retry or a function that takes the retry attempt\n * and returns the delay.\n *\n * @example exponential backoff.\n * ```js\n * new Client({\n * retryStrategy: new ConfiguredRetryStrategy(3, (attempt) => attempt ** 2)\n * });\n * ```\n * @example constant delay.\n * ```js\n * new Client({\n * retryStrategy: new ConfiguredRetryStrategy(3, 2000)\n * });\n * ```\n */\n constructor(maxAttempts, computeNextBackoffDelay = DEFAULT_RETRY_DELAY_BASE) {\n super(typeof maxAttempts === \"function\" ? maxAttempts : async () => maxAttempts);\n if (typeof computeNextBackoffDelay === \"number\") {\n this.computeNextBackoffDelay = () => computeNextBackoffDelay;\n } else {\n this.computeNextBackoffDelay = computeNextBackoffDelay;\n }\n }\n async refreshRetryTokenForRetry(tokenToRenew, errorInfo) {\n const token = await super.refreshRetryTokenForRetry(tokenToRenew, errorInfo);\n token.getRetryDelay = () => this.computeNextBackoffDelay(token.getRetryCount());\n return token;\n }\n};\n__name(_ConfiguredRetryStrategy, \"ConfiguredRetryStrategy\");\nvar ConfiguredRetryStrategy = _ConfiguredRetryStrategy;\n// Annotate the CommonJS export names for ESM import in node:\n\n0 && (module.exports = {\n AdaptiveRetryStrategy,\n ConfiguredRetryStrategy,\n DefaultRateLimiter,\n StandardRetryStrategy,\n RETRY_MODES,\n DEFAULT_MAX_ATTEMPTS,\n DEFAULT_RETRY_MODE,\n DEFAULT_RETRY_DELAY_BASE,\n MAXIMUM_RETRY_DELAY,\n THROTTLING_RETRY_DELAY_BASE,\n INITIAL_RETRY_TOKENS,\n RETRY_COST,\n TIMEOUT_RETRY_COST,\n NO_RETRY_INCREMENT,\n INVOCATION_ID_HEADER,\n REQUEST_HEADER\n});\n\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getAwsChunkedEncodingStream = void 0;\nconst stream_1 = require(\"stream\");\nconst getAwsChunkedEncodingStream = (readableStream, options) => {\n const { base64Encoder, bodyLengthChecker, checksumAlgorithmFn, checksumLocationName, streamHasher } = options;\n const checksumRequired = base64Encoder !== undefined &&\n checksumAlgorithmFn !== undefined &&\n checksumLocationName !== undefined &&\n streamHasher !== undefined;\n const digest = checksumRequired ? streamHasher(checksumAlgorithmFn, readableStream) : undefined;\n const awsChunkedEncodingStream = new stream_1.Readable({ read: () => { } });\n readableStream.on(\"data\", (data) => {\n const length = bodyLengthChecker(data) || 0;\n awsChunkedEncodingStream.push(`${length.toString(16)}\\r\\n`);\n awsChunkedEncodingStream.push(data);\n awsChunkedEncodingStream.push(\"\\r\\n\");\n });\n readableStream.on(\"end\", async () => {\n awsChunkedEncodingStream.push(`0\\r\\n`);\n if (checksumRequired) {\n const checksum = base64Encoder(await digest);\n awsChunkedEncodingStream.push(`${checksumLocationName}:${checksum}\\r\\n`);\n awsChunkedEncodingStream.push(`\\r\\n`);\n }\n awsChunkedEncodingStream.push(null);\n });\n return awsChunkedEncodingStream;\n};\nexports.getAwsChunkedEncodingStream = getAwsChunkedEncodingStream;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.headStream = void 0;\nasync function headStream(stream, bytes) {\n var _a;\n let byteLengthCounter = 0;\n const chunks = [];\n const reader = stream.getReader();\n let isDone = false;\n while (!isDone) {\n const { done, value } = await reader.read();\n if (value) {\n chunks.push(value);\n byteLengthCounter += (_a = value === null || value === void 0 ? void 0 : value.byteLength) !== null && _a !== void 0 ? _a : 0;\n }\n if (byteLengthCounter >= bytes) {\n break;\n }\n isDone = done;\n }\n reader.releaseLock();\n const collected = new Uint8Array(Math.min(bytes, byteLengthCounter));\n let offset = 0;\n for (const chunk of chunks) {\n if (chunk.byteLength > collected.byteLength - offset) {\n collected.set(chunk.subarray(0, collected.byteLength - offset), offset);\n break;\n }\n else {\n collected.set(chunk, offset);\n }\n offset += chunk.length;\n }\n return collected;\n}\nexports.headStream = headStream;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.headStream = void 0;\nconst stream_1 = require(\"stream\");\nconst headStream_browser_1 = require(\"./headStream.browser\");\nconst stream_type_check_1 = require(\"./stream-type-check\");\nconst headStream = (stream, bytes) => {\n if ((0, stream_type_check_1.isReadableStream)(stream)) {\n return (0, headStream_browser_1.headStream)(stream, bytes);\n }\n return new Promise((resolve, reject) => {\n const collector = new Collector();\n collector.limit = bytes;\n stream.pipe(collector);\n stream.on(\"error\", (err) => {\n collector.end();\n reject(err);\n });\n collector.on(\"error\", reject);\n collector.on(\"finish\", function () {\n const bytes = new Uint8Array(Buffer.concat(this.buffers));\n resolve(bytes);\n });\n });\n};\nexports.headStream = headStream;\nclass Collector extends stream_1.Writable {\n constructor() {\n super(...arguments);\n this.buffers = [];\n this.limit = Infinity;\n this.bytesBuffered = 0;\n }\n _write(chunk, encoding, callback) {\n var _a;\n this.buffers.push(chunk);\n this.bytesBuffered += (_a = chunk.byteLength) !== null && _a !== void 0 ? _a : 0;\n if (this.bytesBuffered >= this.limit) {\n const excess = this.bytesBuffered - this.limit;\n const tailBuffer = this.buffers[this.buffers.length - 1];\n this.buffers[this.buffers.length - 1] = tailBuffer.subarray(0, tailBuffer.byteLength - excess);\n this.emit(\"finish\");\n }\n callback();\n }\n}\n","var __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, \"default\"), secondTarget && __copyProps(secondTarget, mod, \"default\"));\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/index.ts\nvar src_exports = {};\n__export(src_exports, {\n Uint8ArrayBlobAdapter: () => Uint8ArrayBlobAdapter\n});\nmodule.exports = __toCommonJS(src_exports);\n\n// src/blob/transforms.ts\nvar import_util_base64 = require(\"@smithy/util-base64\");\nvar import_util_utf8 = require(\"@smithy/util-utf8\");\nfunction transformToString(payload, encoding = \"utf-8\") {\n if (encoding === \"base64\") {\n return (0, import_util_base64.toBase64)(payload);\n }\n return (0, import_util_utf8.toUtf8)(payload);\n}\n__name(transformToString, \"transformToString\");\nfunction transformFromString(str, encoding) {\n if (encoding === \"base64\") {\n return Uint8ArrayBlobAdapter.mutate((0, import_util_base64.fromBase64)(str));\n }\n return Uint8ArrayBlobAdapter.mutate((0, import_util_utf8.fromUtf8)(str));\n}\n__name(transformFromString, \"transformFromString\");\n\n// src/blob/Uint8ArrayBlobAdapter.ts\nvar _Uint8ArrayBlobAdapter = class _Uint8ArrayBlobAdapter extends Uint8Array {\n /**\n * @param source - such as a string or Stream.\n * @returns a new Uint8ArrayBlobAdapter extending Uint8Array.\n */\n static fromString(source, encoding = \"utf-8\") {\n switch (typeof source) {\n case \"string\":\n return transformFromString(source, encoding);\n default:\n throw new Error(`Unsupported conversion from ${typeof source} to Uint8ArrayBlobAdapter.`);\n }\n }\n /**\n * @param source - Uint8Array to be mutated.\n * @returns the same Uint8Array but with prototype switched to Uint8ArrayBlobAdapter.\n */\n static mutate(source) {\n Object.setPrototypeOf(source, _Uint8ArrayBlobAdapter.prototype);\n return source;\n }\n /**\n * @param encoding - default 'utf-8'.\n * @returns the blob as string.\n */\n transformToString(encoding = \"utf-8\") {\n return transformToString(this, encoding);\n }\n};\n__name(_Uint8ArrayBlobAdapter, \"Uint8ArrayBlobAdapter\");\nvar Uint8ArrayBlobAdapter = _Uint8ArrayBlobAdapter;\n\n// src/index.ts\n__reExport(src_exports, require(\"././getAwsChunkedEncodingStream\"), module.exports);\n__reExport(src_exports, require(\"././sdk-stream-mixin\"), module.exports);\n__reExport(src_exports, require(\"././splitStream\"), module.exports);\n__reExport(src_exports, require(\"././headStream\"), module.exports);\n__reExport(src_exports, require(\"././stream-type-check\"), module.exports);\n// Annotate the CommonJS export names for ESM import in node:\n\n0 && (module.exports = {\n Uint8ArrayBlobAdapter,\n getAwsChunkedEncodingStream,\n sdkStreamMixin,\n splitStream,\n headStream,\n isReadableStream\n});\n\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.sdkStreamMixin = void 0;\nconst fetch_http_handler_1 = require(\"@smithy/fetch-http-handler\");\nconst util_base64_1 = require(\"@smithy/util-base64\");\nconst util_hex_encoding_1 = require(\"@smithy/util-hex-encoding\");\nconst util_utf8_1 = require(\"@smithy/util-utf8\");\nconst stream_type_check_1 = require(\"./stream-type-check\");\nconst ERR_MSG_STREAM_HAS_BEEN_TRANSFORMED = \"The stream has already been transformed.\";\nconst sdkStreamMixin = (stream) => {\n var _a, _b;\n if (!isBlobInstance(stream) && !(0, stream_type_check_1.isReadableStream)(stream)) {\n const name = ((_b = (_a = stream === null || stream === void 0 ? void 0 : stream.__proto__) === null || _a === void 0 ? void 0 : _a.constructor) === null || _b === void 0 ? void 0 : _b.name) || stream;\n throw new Error(`Unexpected stream implementation, expect Blob or ReadableStream, got ${name}`);\n }\n let transformed = false;\n const transformToByteArray = async () => {\n if (transformed) {\n throw new Error(ERR_MSG_STREAM_HAS_BEEN_TRANSFORMED);\n }\n transformed = true;\n return await (0, fetch_http_handler_1.streamCollector)(stream);\n };\n const blobToWebStream = (blob) => {\n if (typeof blob.stream !== \"function\") {\n throw new Error(\"Cannot transform payload Blob to web stream. Please make sure the Blob.stream() is polyfilled.\\n\" +\n \"If you are using React Native, this API is not yet supported, see: https://react-native.canny.io/feature-requests/p/fetch-streaming-body\");\n }\n return blob.stream();\n };\n return Object.assign(stream, {\n transformToByteArray: transformToByteArray,\n transformToString: async (encoding) => {\n const buf = await transformToByteArray();\n if (encoding === \"base64\") {\n return (0, util_base64_1.toBase64)(buf);\n }\n else if (encoding === \"hex\") {\n return (0, util_hex_encoding_1.toHex)(buf);\n }\n else if (encoding === undefined || encoding === \"utf8\" || encoding === \"utf-8\") {\n return (0, util_utf8_1.toUtf8)(buf);\n }\n else if (typeof TextDecoder === \"function\") {\n return new TextDecoder(encoding).decode(buf);\n }\n else {\n throw new Error(\"TextDecoder is not available, please make sure polyfill is provided.\");\n }\n },\n transformToWebStream: () => {\n if (transformed) {\n throw new Error(ERR_MSG_STREAM_HAS_BEEN_TRANSFORMED);\n }\n transformed = true;\n if (isBlobInstance(stream)) {\n return blobToWebStream(stream);\n }\n else if ((0, stream_type_check_1.isReadableStream)(stream)) {\n return stream;\n }\n else {\n throw new Error(`Cannot transform payload to web stream, got ${stream}`);\n }\n },\n });\n};\nexports.sdkStreamMixin = sdkStreamMixin;\nconst isBlobInstance = (stream) => typeof Blob === \"function\" && stream instanceof Blob;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.sdkStreamMixin = void 0;\nconst node_http_handler_1 = require(\"@smithy/node-http-handler\");\nconst util_buffer_from_1 = require(\"@smithy/util-buffer-from\");\nconst stream_1 = require(\"stream\");\nconst util_1 = require(\"util\");\nconst sdk_stream_mixin_browser_1 = require(\"./sdk-stream-mixin.browser\");\nconst ERR_MSG_STREAM_HAS_BEEN_TRANSFORMED = \"The stream has already been transformed.\";\nconst sdkStreamMixin = (stream) => {\n var _a, _b;\n if (!(stream instanceof stream_1.Readable)) {\n try {\n return (0, sdk_stream_mixin_browser_1.sdkStreamMixin)(stream);\n }\n catch (e) {\n const name = ((_b = (_a = stream === null || stream === void 0 ? void 0 : stream.__proto__) === null || _a === void 0 ? void 0 : _a.constructor) === null || _b === void 0 ? void 0 : _b.name) || stream;\n throw new Error(`Unexpected stream implementation, expect Stream.Readable instance, got ${name}`);\n }\n }\n let transformed = false;\n const transformToByteArray = async () => {\n if (transformed) {\n throw new Error(ERR_MSG_STREAM_HAS_BEEN_TRANSFORMED);\n }\n transformed = true;\n return await (0, node_http_handler_1.streamCollector)(stream);\n };\n return Object.assign(stream, {\n transformToByteArray,\n transformToString: async (encoding) => {\n const buf = await transformToByteArray();\n if (encoding === undefined || Buffer.isEncoding(encoding)) {\n return (0, util_buffer_from_1.fromArrayBuffer)(buf.buffer, buf.byteOffset, buf.byteLength).toString(encoding);\n }\n else {\n const decoder = new util_1.TextDecoder(encoding);\n return decoder.decode(buf);\n }\n },\n transformToWebStream: () => {\n if (transformed) {\n throw new Error(ERR_MSG_STREAM_HAS_BEEN_TRANSFORMED);\n }\n if (stream.readableFlowing !== null) {\n throw new Error(\"The stream has been consumed by other callbacks.\");\n }\n if (typeof stream_1.Readable.toWeb !== \"function\") {\n throw new Error(\"Readable.toWeb() is not supported. Please make sure you are using Node.js >= 17.0.0, or polyfill is available.\");\n }\n transformed = true;\n return stream_1.Readable.toWeb(stream);\n },\n });\n};\nexports.sdkStreamMixin = sdkStreamMixin;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.splitStream = void 0;\nasync function splitStream(stream) {\n if (typeof stream.stream === \"function\") {\n stream = stream.stream();\n }\n const readableStream = stream;\n return readableStream.tee();\n}\nexports.splitStream = splitStream;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.splitStream = void 0;\nconst stream_1 = require(\"stream\");\nconst splitStream_browser_1 = require(\"./splitStream.browser\");\nconst stream_type_check_1 = require(\"./stream-type-check\");\nasync function splitStream(stream) {\n if ((0, stream_type_check_1.isReadableStream)(stream)) {\n return (0, splitStream_browser_1.splitStream)(stream);\n }\n const stream1 = new stream_1.PassThrough();\n const stream2 = new stream_1.PassThrough();\n stream.pipe(stream1);\n stream.pipe(stream2);\n return [stream1, stream2];\n}\nexports.splitStream = splitStream;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isReadableStream = void 0;\nconst isReadableStream = (stream) => {\n var _a;\n return typeof ReadableStream === \"function\" &&\n (((_a = stream === null || stream === void 0 ? void 0 : stream.constructor) === null || _a === void 0 ? void 0 : _a.name) === ReadableStream.name || stream instanceof ReadableStream);\n};\nexports.isReadableStream = isReadableStream;\n","var __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/index.ts\nvar src_exports = {};\n__export(src_exports, {\n escapeUri: () => escapeUri,\n escapeUriPath: () => escapeUriPath\n});\nmodule.exports = __toCommonJS(src_exports);\n\n// src/escape-uri.ts\nvar escapeUri = /* @__PURE__ */ __name((uri) => (\n // AWS percent-encodes some extra non-standard characters in a URI\n encodeURIComponent(uri).replace(/[!'()*]/g, hexEncode)\n), \"escapeUri\");\nvar hexEncode = /* @__PURE__ */ __name((c) => `%${c.charCodeAt(0).toString(16).toUpperCase()}`, \"hexEncode\");\n\n// src/escape-uri-path.ts\nvar escapeUriPath = /* @__PURE__ */ __name((uri) => uri.split(\"/\").map(escapeUri).join(\"/\"), \"escapeUriPath\");\n// Annotate the CommonJS export names for ESM import in node:\n\n0 && (module.exports = {\n escapeUri,\n escapeUriPath\n});\n\n","var __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/index.ts\nvar src_exports = {};\n__export(src_exports, {\n fromUtf8: () => fromUtf8,\n toUint8Array: () => toUint8Array,\n toUtf8: () => toUtf8\n});\nmodule.exports = __toCommonJS(src_exports);\n\n// src/fromUtf8.ts\nvar import_util_buffer_from = require(\"@smithy/util-buffer-from\");\nvar fromUtf8 = /* @__PURE__ */ __name((input) => {\n const buf = (0, import_util_buffer_from.fromString)(input, \"utf8\");\n return new Uint8Array(buf.buffer, buf.byteOffset, buf.byteLength / Uint8Array.BYTES_PER_ELEMENT);\n}, \"fromUtf8\");\n\n// src/toUint8Array.ts\nvar toUint8Array = /* @__PURE__ */ __name((data) => {\n if (typeof data === \"string\") {\n return fromUtf8(data);\n }\n if (ArrayBuffer.isView(data)) {\n return new Uint8Array(data.buffer, data.byteOffset, data.byteLength / Uint8Array.BYTES_PER_ELEMENT);\n }\n return new Uint8Array(data);\n}, \"toUint8Array\");\n\n// src/toUtf8.ts\n\nvar toUtf8 = /* @__PURE__ */ __name((input) => {\n if (typeof input === \"string\") {\n return input;\n }\n if (typeof input !== \"object\" || typeof input.byteOffset !== \"number\" || typeof input.byteLength !== \"number\") {\n throw new Error(\"@smithy/util-utf8: toUtf8 encoder function only accepts string | Uint8Array.\");\n }\n return (0, import_util_buffer_from.fromArrayBuffer)(input.buffer, input.byteOffset, input.byteLength).toString(\"utf8\");\n}, \"toUtf8\");\n// Annotate the CommonJS export names for ESM import in node:\n\n0 && (module.exports = {\n fromUtf8,\n toUint8Array,\n toUtf8\n});\n\n","var __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/index.ts\nvar src_exports = {};\n__export(src_exports, {\n WaiterState: () => WaiterState,\n checkExceptions: () => checkExceptions,\n createWaiter: () => createWaiter,\n waiterServiceDefaults: () => waiterServiceDefaults\n});\nmodule.exports = __toCommonJS(src_exports);\n\n// src/utils/sleep.ts\nvar sleep = /* @__PURE__ */ __name((seconds) => {\n return new Promise((resolve) => setTimeout(resolve, seconds * 1e3));\n}, \"sleep\");\n\n// src/waiter.ts\nvar waiterServiceDefaults = {\n minDelay: 2,\n maxDelay: 120\n};\nvar WaiterState = /* @__PURE__ */ ((WaiterState2) => {\n WaiterState2[\"ABORTED\"] = \"ABORTED\";\n WaiterState2[\"FAILURE\"] = \"FAILURE\";\n WaiterState2[\"SUCCESS\"] = \"SUCCESS\";\n WaiterState2[\"RETRY\"] = \"RETRY\";\n WaiterState2[\"TIMEOUT\"] = \"TIMEOUT\";\n return WaiterState2;\n})(WaiterState || {});\nvar checkExceptions = /* @__PURE__ */ __name((result) => {\n if (result.state === \"ABORTED\" /* ABORTED */) {\n const abortError = new Error(\n `${JSON.stringify({\n ...result,\n reason: \"Request was aborted\"\n })}`\n );\n abortError.name = \"AbortError\";\n throw abortError;\n } else if (result.state === \"TIMEOUT\" /* TIMEOUT */) {\n const timeoutError = new Error(\n `${JSON.stringify({\n ...result,\n reason: \"Waiter has timed out\"\n })}`\n );\n timeoutError.name = \"TimeoutError\";\n throw timeoutError;\n } else if (result.state !== \"SUCCESS\" /* SUCCESS */) {\n throw new Error(`${JSON.stringify(result)}`);\n }\n return result;\n}, \"checkExceptions\");\n\n// src/poller.ts\nvar exponentialBackoffWithJitter = /* @__PURE__ */ __name((minDelay, maxDelay, attemptCeiling, attempt) => {\n if (attempt > attemptCeiling)\n return maxDelay;\n const delay = minDelay * 2 ** (attempt - 1);\n return randomInRange(minDelay, delay);\n}, \"exponentialBackoffWithJitter\");\nvar randomInRange = /* @__PURE__ */ __name((min, max) => min + Math.random() * (max - min), \"randomInRange\");\nvar runPolling = /* @__PURE__ */ __name(async ({ minDelay, maxDelay, maxWaitTime, abortController, client, abortSignal }, input, acceptorChecks) => {\n var _a;\n const { state, reason } = await acceptorChecks(client, input);\n if (state !== \"RETRY\" /* RETRY */) {\n return { state, reason };\n }\n let currentAttempt = 1;\n const waitUntil = Date.now() + maxWaitTime * 1e3;\n const attemptCeiling = Math.log(maxDelay / minDelay) / Math.log(2) + 1;\n while (true) {\n if (((_a = abortController == null ? void 0 : abortController.signal) == null ? void 0 : _a.aborted) || (abortSignal == null ? void 0 : abortSignal.aborted)) {\n return { state: \"ABORTED\" /* ABORTED */ };\n }\n const delay = exponentialBackoffWithJitter(minDelay, maxDelay, attemptCeiling, currentAttempt);\n if (Date.now() + delay * 1e3 > waitUntil) {\n return { state: \"TIMEOUT\" /* TIMEOUT */ };\n }\n await sleep(delay);\n const { state: state2, reason: reason2 } = await acceptorChecks(client, input);\n if (state2 !== \"RETRY\" /* RETRY */) {\n return { state: state2, reason: reason2 };\n }\n currentAttempt += 1;\n }\n}, \"runPolling\");\n\n// src/utils/validate.ts\nvar validateWaiterOptions = /* @__PURE__ */ __name((options) => {\n if (options.maxWaitTime < 1) {\n throw new Error(`WaiterConfiguration.maxWaitTime must be greater than 0`);\n } else if (options.minDelay < 1) {\n throw new Error(`WaiterConfiguration.minDelay must be greater than 0`);\n } else if (options.maxDelay < 1) {\n throw new Error(`WaiterConfiguration.maxDelay must be greater than 0`);\n } else if (options.maxWaitTime <= options.minDelay) {\n throw new Error(\n `WaiterConfiguration.maxWaitTime [${options.maxWaitTime}] must be greater than WaiterConfiguration.minDelay [${options.minDelay}] for this waiter`\n );\n } else if (options.maxDelay < options.minDelay) {\n throw new Error(\n `WaiterConfiguration.maxDelay [${options.maxDelay}] must be greater than WaiterConfiguration.minDelay [${options.minDelay}] for this waiter`\n );\n }\n}, \"validateWaiterOptions\");\n\n// src/createWaiter.ts\nvar abortTimeout = /* @__PURE__ */ __name(async (abortSignal) => {\n return new Promise((resolve) => {\n const onAbort = /* @__PURE__ */ __name(() => resolve({ state: \"ABORTED\" /* ABORTED */ }), \"onAbort\");\n if (typeof abortSignal.addEventListener === \"function\") {\n abortSignal.addEventListener(\"abort\", onAbort);\n } else {\n abortSignal.onabort = onAbort;\n }\n });\n}, \"abortTimeout\");\nvar createWaiter = /* @__PURE__ */ __name(async (options, input, acceptorChecks) => {\n const params = {\n ...waiterServiceDefaults,\n ...options\n };\n validateWaiterOptions(params);\n const exitConditions = [runPolling(params, input, acceptorChecks)];\n if (options.abortController) {\n exitConditions.push(abortTimeout(options.abortController.signal));\n }\n if (options.abortSignal) {\n exitConditions.push(abortTimeout(options.abortSignal));\n }\n return Promise.race(exitConditions);\n}, \"createWaiter\");\n// Annotate the CommonJS export names for ESM import in node:\n\n0 && (module.exports = {\n createWaiter,\n waiterServiceDefaults,\n WaiterState,\n checkExceptions\n});\n\n","'use strict';\n\nmodule.exports = ({onlyFirst = false} = {}) => {\n\tconst pattern = [\n\t\t'[\\\\u001B\\\\u009B][[\\\\]()#;?]*(?:(?:(?:(?:;[-a-zA-Z\\\\d\\\\/#&.:=?%@~_]+)*|[a-zA-Z\\\\d]+(?:;[-a-zA-Z\\\\d\\\\/#&.:=?%@~_]*)*)?\\\\u0007)',\n\t\t'(?:(?:\\\\d{1,4}(?:;\\\\d{0,4})*)?[\\\\dA-PR-TZcf-ntqry=><~]))'\n\t].join('|');\n\n\treturn new RegExp(pattern, onlyFirst ? undefined : 'g');\n};\n","'use strict';\n\nconst wrapAnsi16 = (fn, offset) => (...args) => {\n\tconst code = fn(...args);\n\treturn `\\u001B[${code + offset}m`;\n};\n\nconst wrapAnsi256 = (fn, offset) => (...args) => {\n\tconst code = fn(...args);\n\treturn `\\u001B[${38 + offset};5;${code}m`;\n};\n\nconst wrapAnsi16m = (fn, offset) => (...args) => {\n\tconst rgb = fn(...args);\n\treturn `\\u001B[${38 + offset};2;${rgb[0]};${rgb[1]};${rgb[2]}m`;\n};\n\nconst ansi2ansi = n => n;\nconst rgb2rgb = (r, g, b) => [r, g, b];\n\nconst setLazyProperty = (object, property, get) => {\n\tObject.defineProperty(object, property, {\n\t\tget: () => {\n\t\t\tconst value = get();\n\n\t\t\tObject.defineProperty(object, property, {\n\t\t\t\tvalue,\n\t\t\t\tenumerable: true,\n\t\t\t\tconfigurable: true\n\t\t\t});\n\n\t\t\treturn value;\n\t\t},\n\t\tenumerable: true,\n\t\tconfigurable: true\n\t});\n};\n\n/** @type {typeof import('color-convert')} */\nlet colorConvert;\nconst makeDynamicStyles = (wrap, targetSpace, identity, isBackground) => {\n\tif (colorConvert === undefined) {\n\t\tcolorConvert = require('color-convert');\n\t}\n\n\tconst offset = isBackground ? 10 : 0;\n\tconst styles = {};\n\n\tfor (const [sourceSpace, suite] of Object.entries(colorConvert)) {\n\t\tconst name = sourceSpace === 'ansi16' ? 'ansi' : sourceSpace;\n\t\tif (sourceSpace === targetSpace) {\n\t\t\tstyles[name] = wrap(identity, offset);\n\t\t} else if (typeof suite === 'object') {\n\t\t\tstyles[name] = wrap(suite[targetSpace], offset);\n\t\t}\n\t}\n\n\treturn styles;\n};\n\nfunction assembleStyles() {\n\tconst codes = new Map();\n\tconst styles = {\n\t\tmodifier: {\n\t\t\treset: [0, 0],\n\t\t\t// 21 isn't widely supported and 22 does the same thing\n\t\t\tbold: [1, 22],\n\t\t\tdim: [2, 22],\n\t\t\titalic: [3, 23],\n\t\t\tunderline: [4, 24],\n\t\t\tinverse: [7, 27],\n\t\t\thidden: [8, 28],\n\t\t\tstrikethrough: [9, 29]\n\t\t},\n\t\tcolor: {\n\t\t\tblack: [30, 39],\n\t\t\tred: [31, 39],\n\t\t\tgreen: [32, 39],\n\t\t\tyellow: [33, 39],\n\t\t\tblue: [34, 39],\n\t\t\tmagenta: [35, 39],\n\t\t\tcyan: [36, 39],\n\t\t\twhite: [37, 39],\n\n\t\t\t// Bright color\n\t\t\tblackBright: [90, 39],\n\t\t\tredBright: [91, 39],\n\t\t\tgreenBright: [92, 39],\n\t\t\tyellowBright: [93, 39],\n\t\t\tblueBright: [94, 39],\n\t\t\tmagentaBright: [95, 39],\n\t\t\tcyanBright: [96, 39],\n\t\t\twhiteBright: [97, 39]\n\t\t},\n\t\tbgColor: {\n\t\t\tbgBlack: [40, 49],\n\t\t\tbgRed: [41, 49],\n\t\t\tbgGreen: [42, 49],\n\t\t\tbgYellow: [43, 49],\n\t\t\tbgBlue: [44, 49],\n\t\t\tbgMagenta: [45, 49],\n\t\t\tbgCyan: [46, 49],\n\t\t\tbgWhite: [47, 49],\n\n\t\t\t// Bright color\n\t\t\tbgBlackBright: [100, 49],\n\t\t\tbgRedBright: [101, 49],\n\t\t\tbgGreenBright: [102, 49],\n\t\t\tbgYellowBright: [103, 49],\n\t\t\tbgBlueBright: [104, 49],\n\t\t\tbgMagentaBright: [105, 49],\n\t\t\tbgCyanBright: [106, 49],\n\t\t\tbgWhiteBright: [107, 49]\n\t\t}\n\t};\n\n\t// Alias bright black as gray (and grey)\n\tstyles.color.gray = styles.color.blackBright;\n\tstyles.bgColor.bgGray = styles.bgColor.bgBlackBright;\n\tstyles.color.grey = styles.color.blackBright;\n\tstyles.bgColor.bgGrey = styles.bgColor.bgBlackBright;\n\n\tfor (const [groupName, group] of Object.entries(styles)) {\n\t\tfor (const [styleName, style] of Object.entries(group)) {\n\t\t\tstyles[styleName] = {\n\t\t\t\topen: `\\u001B[${style[0]}m`,\n\t\t\t\tclose: `\\u001B[${style[1]}m`\n\t\t\t};\n\n\t\t\tgroup[styleName] = styles[styleName];\n\n\t\t\tcodes.set(style[0], style[1]);\n\t\t}\n\n\t\tObject.defineProperty(styles, groupName, {\n\t\t\tvalue: group,\n\t\t\tenumerable: false\n\t\t});\n\t}\n\n\tObject.defineProperty(styles, 'codes', {\n\t\tvalue: codes,\n\t\tenumerable: false\n\t});\n\n\tstyles.color.close = '\\u001B[39m';\n\tstyles.bgColor.close = '\\u001B[49m';\n\n\tsetLazyProperty(styles.color, 'ansi', () => makeDynamicStyles(wrapAnsi16, 'ansi16', ansi2ansi, false));\n\tsetLazyProperty(styles.color, 'ansi256', () => makeDynamicStyles(wrapAnsi256, 'ansi256', ansi2ansi, false));\n\tsetLazyProperty(styles.color, 'ansi16m', () => makeDynamicStyles(wrapAnsi16m, 'rgb', rgb2rgb, false));\n\tsetLazyProperty(styles.bgColor, 'ansi', () => makeDynamicStyles(wrapAnsi16, 'ansi16', ansi2ansi, true));\n\tsetLazyProperty(styles.bgColor, 'ansi256', () => makeDynamicStyles(wrapAnsi256, 'ansi256', ansi2ansi, true));\n\tsetLazyProperty(styles.bgColor, 'ansi16m', () => makeDynamicStyles(wrapAnsi16m, 'rgb', rgb2rgb, true));\n\n\treturn styles;\n}\n\n// Make the export immutable\nObject.defineProperty(module, 'exports', {\n\tenumerable: true,\n\tget: assembleStyles\n});\n","'use strict';\nconst regex = '[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]';\n\nconst astralRegex = options => options && options.exact ? new RegExp(`^${regex}$`) : new RegExp(regex, 'g');\n\nmodule.exports = astralRegex;\n","var register = require(\"./lib/register\");\nvar addHook = require(\"./lib/add\");\nvar removeHook = require(\"./lib/remove\");\n\n// bind with array of arguments: https://stackoverflow.com/a/21792913\nvar bind = Function.bind;\nvar bindable = bind.bind(bind);\n\nfunction bindApi(hook, state, name) {\n var removeHookRef = bindable(removeHook, null).apply(\n null,\n name ? [state, name] : [state]\n );\n hook.api = { remove: removeHookRef };\n hook.remove = removeHookRef;\n [\"before\", \"error\", \"after\", \"wrap\"].forEach(function (kind) {\n var args = name ? [state, kind, name] : [state, kind];\n hook[kind] = hook.api[kind] = bindable(addHook, null).apply(null, args);\n });\n}\n\nfunction HookSingular() {\n var singularHookName = \"h\";\n var singularHookState = {\n registry: {},\n };\n var singularHook = register.bind(null, singularHookState, singularHookName);\n bindApi(singularHook, singularHookState, singularHookName);\n return singularHook;\n}\n\nfunction HookCollection() {\n var state = {\n registry: {},\n };\n\n var hook = register.bind(null, state);\n bindApi(hook, state);\n\n return hook;\n}\n\nvar collectionHookDeprecationMessageDisplayed = false;\nfunction Hook() {\n if (!collectionHookDeprecationMessageDisplayed) {\n console.warn(\n '[before-after-hook]: \"Hook()\" repurposing warning, use \"Hook.Collection()\". Read more: https://git.io/upgrade-before-after-hook-to-1.4'\n );\n collectionHookDeprecationMessageDisplayed = true;\n }\n return HookCollection();\n}\n\nHook.Singular = HookSingular.bind();\nHook.Collection = HookCollection.bind();\n\nmodule.exports = Hook;\n// expose constructors as a named property for TypeScript\nmodule.exports.Hook = Hook;\nmodule.exports.Singular = Hook.Singular;\nmodule.exports.Collection = Hook.Collection;\n","module.exports = addHook;\n\nfunction addHook(state, kind, name, hook) {\n var orig = hook;\n if (!state.registry[name]) {\n state.registry[name] = [];\n }\n\n if (kind === \"before\") {\n hook = function (method, options) {\n return Promise.resolve()\n .then(orig.bind(null, options))\n .then(method.bind(null, options));\n };\n }\n\n if (kind === \"after\") {\n hook = function (method, options) {\n var result;\n return Promise.resolve()\n .then(method.bind(null, options))\n .then(function (result_) {\n result = result_;\n return orig(result, options);\n })\n .then(function () {\n return result;\n });\n };\n }\n\n if (kind === \"error\") {\n hook = function (method, options) {\n return Promise.resolve()\n .then(method.bind(null, options))\n .catch(function (error) {\n return orig(error, options);\n });\n };\n }\n\n state.registry[name].push({\n hook: hook,\n orig: orig,\n });\n}\n","module.exports = register;\n\nfunction register(state, name, method, options) {\n if (typeof method !== \"function\") {\n throw new Error(\"method for before hook must be a function\");\n }\n\n if (!options) {\n options = {};\n }\n\n if (Array.isArray(name)) {\n return name.reverse().reduce(function (callback, name) {\n return register.bind(null, state, name, callback, options);\n }, method)();\n }\n\n return Promise.resolve().then(function () {\n if (!state.registry[name]) {\n return method(options);\n }\n\n return state.registry[name].reduce(function (method, registered) {\n return registered.hook.bind(null, method, options);\n }, method)();\n });\n}\n","module.exports = removeHook;\n\nfunction removeHook(state, name, method) {\n if (!state.registry[name]) {\n return;\n }\n\n var index = state.registry[name]\n .map(function (registered) {\n return registered.orig;\n })\n .indexOf(method);\n\n if (index === -1) {\n return;\n }\n\n state.registry[name].splice(index, 1);\n}\n","'use strict';\nconst ansiStyles = require('ansi-styles');\nconst {stdout: stdoutColor, stderr: stderrColor} = require('supports-color');\nconst {\n\tstringReplaceAll,\n\tstringEncaseCRLFWithFirstIndex\n} = require('./util');\n\nconst {isArray} = Array;\n\n// `supportsColor.level` → `ansiStyles.color[name]` mapping\nconst levelMapping = [\n\t'ansi',\n\t'ansi',\n\t'ansi256',\n\t'ansi16m'\n];\n\nconst styles = Object.create(null);\n\nconst applyOptions = (object, options = {}) => {\n\tif (options.level && !(Number.isInteger(options.level) && options.level >= 0 && options.level <= 3)) {\n\t\tthrow new Error('The `level` option should be an integer from 0 to 3');\n\t}\n\n\t// Detect level if not set manually\n\tconst colorLevel = stdoutColor ? stdoutColor.level : 0;\n\tobject.level = options.level === undefined ? colorLevel : options.level;\n};\n\nclass ChalkClass {\n\tconstructor(options) {\n\t\t// eslint-disable-next-line no-constructor-return\n\t\treturn chalkFactory(options);\n\t}\n}\n\nconst chalkFactory = options => {\n\tconst chalk = {};\n\tapplyOptions(chalk, options);\n\n\tchalk.template = (...arguments_) => chalkTag(chalk.template, ...arguments_);\n\n\tObject.setPrototypeOf(chalk, Chalk.prototype);\n\tObject.setPrototypeOf(chalk.template, chalk);\n\n\tchalk.template.constructor = () => {\n\t\tthrow new Error('`chalk.constructor()` is deprecated. Use `new chalk.Instance()` instead.');\n\t};\n\n\tchalk.template.Instance = ChalkClass;\n\n\treturn chalk.template;\n};\n\nfunction Chalk(options) {\n\treturn chalkFactory(options);\n}\n\nfor (const [styleName, style] of Object.entries(ansiStyles)) {\n\tstyles[styleName] = {\n\t\tget() {\n\t\t\tconst builder = createBuilder(this, createStyler(style.open, style.close, this._styler), this._isEmpty);\n\t\t\tObject.defineProperty(this, styleName, {value: builder});\n\t\t\treturn builder;\n\t\t}\n\t};\n}\n\nstyles.visible = {\n\tget() {\n\t\tconst builder = createBuilder(this, this._styler, true);\n\t\tObject.defineProperty(this, 'visible', {value: builder});\n\t\treturn builder;\n\t}\n};\n\nconst usedModels = ['rgb', 'hex', 'keyword', 'hsl', 'hsv', 'hwb', 'ansi', 'ansi256'];\n\nfor (const model of usedModels) {\n\tstyles[model] = {\n\t\tget() {\n\t\t\tconst {level} = this;\n\t\t\treturn function (...arguments_) {\n\t\t\t\tconst styler = createStyler(ansiStyles.color[levelMapping[level]][model](...arguments_), ansiStyles.color.close, this._styler);\n\t\t\t\treturn createBuilder(this, styler, this._isEmpty);\n\t\t\t};\n\t\t}\n\t};\n}\n\nfor (const model of usedModels) {\n\tconst bgModel = 'bg' + model[0].toUpperCase() + model.slice(1);\n\tstyles[bgModel] = {\n\t\tget() {\n\t\t\tconst {level} = this;\n\t\t\treturn function (...arguments_) {\n\t\t\t\tconst styler = createStyler(ansiStyles.bgColor[levelMapping[level]][model](...arguments_), ansiStyles.bgColor.close, this._styler);\n\t\t\t\treturn createBuilder(this, styler, this._isEmpty);\n\t\t\t};\n\t\t}\n\t};\n}\n\nconst proto = Object.defineProperties(() => {}, {\n\t...styles,\n\tlevel: {\n\t\tenumerable: true,\n\t\tget() {\n\t\t\treturn this._generator.level;\n\t\t},\n\t\tset(level) {\n\t\t\tthis._generator.level = level;\n\t\t}\n\t}\n});\n\nconst createStyler = (open, close, parent) => {\n\tlet openAll;\n\tlet closeAll;\n\tif (parent === undefined) {\n\t\topenAll = open;\n\t\tcloseAll = close;\n\t} else {\n\t\topenAll = parent.openAll + open;\n\t\tcloseAll = close + parent.closeAll;\n\t}\n\n\treturn {\n\t\topen,\n\t\tclose,\n\t\topenAll,\n\t\tcloseAll,\n\t\tparent\n\t};\n};\n\nconst createBuilder = (self, _styler, _isEmpty) => {\n\tconst builder = (...arguments_) => {\n\t\tif (isArray(arguments_[0]) && isArray(arguments_[0].raw)) {\n\t\t\t// Called as a template literal, for example: chalk.red`2 + 3 = {bold ${2+3}}`\n\t\t\treturn applyStyle(builder, chalkTag(builder, ...arguments_));\n\t\t}\n\n\t\t// Single argument is hot path, implicit coercion is faster than anything\n\t\t// eslint-disable-next-line no-implicit-coercion\n\t\treturn applyStyle(builder, (arguments_.length === 1) ? ('' + arguments_[0]) : arguments_.join(' '));\n\t};\n\n\t// We alter the prototype because we must return a function, but there is\n\t// no way to create a function with a different prototype\n\tObject.setPrototypeOf(builder, proto);\n\n\tbuilder._generator = self;\n\tbuilder._styler = _styler;\n\tbuilder._isEmpty = _isEmpty;\n\n\treturn builder;\n};\n\nconst applyStyle = (self, string) => {\n\tif (self.level <= 0 || !string) {\n\t\treturn self._isEmpty ? '' : string;\n\t}\n\n\tlet styler = self._styler;\n\n\tif (styler === undefined) {\n\t\treturn string;\n\t}\n\n\tconst {openAll, closeAll} = styler;\n\tif (string.indexOf('\\u001B') !== -1) {\n\t\twhile (styler !== undefined) {\n\t\t\t// Replace any instances already present with a re-opening code\n\t\t\t// otherwise only the part of the string until said closing code\n\t\t\t// will be colored, and the rest will simply be 'plain'.\n\t\t\tstring = stringReplaceAll(string, styler.close, styler.open);\n\n\t\t\tstyler = styler.parent;\n\t\t}\n\t}\n\n\t// We can move both next actions out of loop, because remaining actions in loop won't have\n\t// any/visible effect on parts we add here. Close the styling before a linebreak and reopen\n\t// after next line to fix a bleed issue on macOS: https://github.com/chalk/chalk/pull/92\n\tconst lfIndex = string.indexOf('\\n');\n\tif (lfIndex !== -1) {\n\t\tstring = stringEncaseCRLFWithFirstIndex(string, closeAll, openAll, lfIndex);\n\t}\n\n\treturn openAll + string + closeAll;\n};\n\nlet template;\nconst chalkTag = (chalk, ...strings) => {\n\tconst [firstString] = strings;\n\n\tif (!isArray(firstString) || !isArray(firstString.raw)) {\n\t\t// If chalk() was called by itself or with a string,\n\t\t// return the string itself as a string.\n\t\treturn strings.join(' ');\n\t}\n\n\tconst arguments_ = strings.slice(1);\n\tconst parts = [firstString.raw[0]];\n\n\tfor (let i = 1; i < firstString.length; i++) {\n\t\tparts.push(\n\t\t\tString(arguments_[i - 1]).replace(/[{}\\\\]/g, '\\\\$&'),\n\t\t\tString(firstString.raw[i])\n\t\t);\n\t}\n\n\tif (template === undefined) {\n\t\ttemplate = require('./templates');\n\t}\n\n\treturn template(chalk, parts.join(''));\n};\n\nObject.defineProperties(Chalk.prototype, styles);\n\nconst chalk = Chalk(); // eslint-disable-line new-cap\nchalk.supportsColor = stdoutColor;\nchalk.stderr = Chalk({level: stderrColor ? stderrColor.level : 0}); // eslint-disable-line new-cap\nchalk.stderr.supportsColor = stderrColor;\n\nmodule.exports = chalk;\n","'use strict';\nconst TEMPLATE_REGEX = /(?:\\\\(u(?:[a-f\\d]{4}|\\{[a-f\\d]{1,6}\\})|x[a-f\\d]{2}|.))|(?:\\{(~)?(\\w+(?:\\([^)]*\\))?(?:\\.\\w+(?:\\([^)]*\\))?)*)(?:[ \\t]|(?=\\r?\\n)))|(\\})|((?:.|[\\r\\n\\f])+?)/gi;\nconst STYLE_REGEX = /(?:^|\\.)(\\w+)(?:\\(([^)]*)\\))?/g;\nconst STRING_REGEX = /^(['\"])((?:\\\\.|(?!\\1)[^\\\\])*)\\1$/;\nconst ESCAPE_REGEX = /\\\\(u(?:[a-f\\d]{4}|{[a-f\\d]{1,6}})|x[a-f\\d]{2}|.)|([^\\\\])/gi;\n\nconst ESCAPES = new Map([\n\t['n', '\\n'],\n\t['r', '\\r'],\n\t['t', '\\t'],\n\t['b', '\\b'],\n\t['f', '\\f'],\n\t['v', '\\v'],\n\t['0', '\\0'],\n\t['\\\\', '\\\\'],\n\t['e', '\\u001B'],\n\t['a', '\\u0007']\n]);\n\nfunction unescape(c) {\n\tconst u = c[0] === 'u';\n\tconst bracket = c[1] === '{';\n\n\tif ((u && !bracket && c.length === 5) || (c[0] === 'x' && c.length === 3)) {\n\t\treturn String.fromCharCode(parseInt(c.slice(1), 16));\n\t}\n\n\tif (u && bracket) {\n\t\treturn String.fromCodePoint(parseInt(c.slice(2, -1), 16));\n\t}\n\n\treturn ESCAPES.get(c) || c;\n}\n\nfunction parseArguments(name, arguments_) {\n\tconst results = [];\n\tconst chunks = arguments_.trim().split(/\\s*,\\s*/g);\n\tlet matches;\n\n\tfor (const chunk of chunks) {\n\t\tconst number = Number(chunk);\n\t\tif (!Number.isNaN(number)) {\n\t\t\tresults.push(number);\n\t\t} else if ((matches = chunk.match(STRING_REGEX))) {\n\t\t\tresults.push(matches[2].replace(ESCAPE_REGEX, (m, escape, character) => escape ? unescape(escape) : character));\n\t\t} else {\n\t\t\tthrow new Error(`Invalid Chalk template style argument: ${chunk} (in style '${name}')`);\n\t\t}\n\t}\n\n\treturn results;\n}\n\nfunction parseStyle(style) {\n\tSTYLE_REGEX.lastIndex = 0;\n\n\tconst results = [];\n\tlet matches;\n\n\twhile ((matches = STYLE_REGEX.exec(style)) !== null) {\n\t\tconst name = matches[1];\n\n\t\tif (matches[2]) {\n\t\t\tconst args = parseArguments(name, matches[2]);\n\t\t\tresults.push([name].concat(args));\n\t\t} else {\n\t\t\tresults.push([name]);\n\t\t}\n\t}\n\n\treturn results;\n}\n\nfunction buildStyle(chalk, styles) {\n\tconst enabled = {};\n\n\tfor (const layer of styles) {\n\t\tfor (const style of layer.styles) {\n\t\t\tenabled[style[0]] = layer.inverse ? null : style.slice(1);\n\t\t}\n\t}\n\n\tlet current = chalk;\n\tfor (const [styleName, styles] of Object.entries(enabled)) {\n\t\tif (!Array.isArray(styles)) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (!(styleName in current)) {\n\t\t\tthrow new Error(`Unknown Chalk style: ${styleName}`);\n\t\t}\n\n\t\tcurrent = styles.length > 0 ? current[styleName](...styles) : current[styleName];\n\t}\n\n\treturn current;\n}\n\nmodule.exports = (chalk, temporary) => {\n\tconst styles = [];\n\tconst chunks = [];\n\tlet chunk = [];\n\n\t// eslint-disable-next-line max-params\n\ttemporary.replace(TEMPLATE_REGEX, (m, escapeCharacter, inverse, style, close, character) => {\n\t\tif (escapeCharacter) {\n\t\t\tchunk.push(unescape(escapeCharacter));\n\t\t} else if (style) {\n\t\t\tconst string = chunk.join('');\n\t\t\tchunk = [];\n\t\t\tchunks.push(styles.length === 0 ? string : buildStyle(chalk, styles)(string));\n\t\t\tstyles.push({inverse, styles: parseStyle(style)});\n\t\t} else if (close) {\n\t\t\tif (styles.length === 0) {\n\t\t\t\tthrow new Error('Found extraneous } in Chalk template literal');\n\t\t\t}\n\n\t\t\tchunks.push(buildStyle(chalk, styles)(chunk.join('')));\n\t\t\tchunk = [];\n\t\t\tstyles.pop();\n\t\t} else {\n\t\t\tchunk.push(character);\n\t\t}\n\t});\n\n\tchunks.push(chunk.join(''));\n\n\tif (styles.length > 0) {\n\t\tconst errMessage = `Chalk template literal is missing ${styles.length} closing bracket${styles.length === 1 ? '' : 's'} (\\`}\\`)`;\n\t\tthrow new Error(errMessage);\n\t}\n\n\treturn chunks.join('');\n};\n","'use strict';\n\nconst stringReplaceAll = (string, substring, replacer) => {\n\tlet index = string.indexOf(substring);\n\tif (index === -1) {\n\t\treturn string;\n\t}\n\n\tconst substringLength = substring.length;\n\tlet endIndex = 0;\n\tlet returnValue = '';\n\tdo {\n\t\treturnValue += string.substr(endIndex, index - endIndex) + substring + replacer;\n\t\tendIndex = index + substringLength;\n\t\tindex = string.indexOf(substring, endIndex);\n\t} while (index !== -1);\n\n\treturnValue += string.substr(endIndex);\n\treturn returnValue;\n};\n\nconst stringEncaseCRLFWithFirstIndex = (string, prefix, postfix, index) => {\n\tlet endIndex = 0;\n\tlet returnValue = '';\n\tdo {\n\t\tconst gotCR = string[index - 1] === '\\r';\n\t\treturnValue += string.substr(endIndex, (gotCR ? index - 1 : index) - endIndex) + prefix + (gotCR ? '\\r\\n' : '\\n') + postfix;\n\t\tendIndex = index + 1;\n\t\tindex = string.indexOf('\\n', endIndex);\n\t} while (index !== -1);\n\n\treturnValue += string.substr(endIndex);\n\treturn returnValue;\n};\n\nmodule.exports = {\n\tstringReplaceAll,\n\tstringEncaseCRLFWithFirstIndex\n};\n","/* MIT license */\n/* eslint-disable no-mixed-operators */\nconst cssKeywords = require('color-name');\n\n// NOTE: conversions should only return primitive values (i.e. arrays, or\n// values that give correct `typeof` results).\n// do not use box values types (i.e. Number(), String(), etc.)\n\nconst reverseKeywords = {};\nfor (const key of Object.keys(cssKeywords)) {\n\treverseKeywords[cssKeywords[key]] = key;\n}\n\nconst convert = {\n\trgb: {channels: 3, labels: 'rgb'},\n\thsl: {channels: 3, labels: 'hsl'},\n\thsv: {channels: 3, labels: 'hsv'},\n\thwb: {channels: 3, labels: 'hwb'},\n\tcmyk: {channels: 4, labels: 'cmyk'},\n\txyz: {channels: 3, labels: 'xyz'},\n\tlab: {channels: 3, labels: 'lab'},\n\tlch: {channels: 3, labels: 'lch'},\n\thex: {channels: 1, labels: ['hex']},\n\tkeyword: {channels: 1, labels: ['keyword']},\n\tansi16: {channels: 1, labels: ['ansi16']},\n\tansi256: {channels: 1, labels: ['ansi256']},\n\thcg: {channels: 3, labels: ['h', 'c', 'g']},\n\tapple: {channels: 3, labels: ['r16', 'g16', 'b16']},\n\tgray: {channels: 1, labels: ['gray']}\n};\n\nmodule.exports = convert;\n\n// Hide .channels and .labels properties\nfor (const model of Object.keys(convert)) {\n\tif (!('channels' in convert[model])) {\n\t\tthrow new Error('missing channels property: ' + model);\n\t}\n\n\tif (!('labels' in convert[model])) {\n\t\tthrow new Error('missing channel labels property: ' + model);\n\t}\n\n\tif (convert[model].labels.length !== convert[model].channels) {\n\t\tthrow new Error('channel and label counts mismatch: ' + model);\n\t}\n\n\tconst {channels, labels} = convert[model];\n\tdelete convert[model].channels;\n\tdelete convert[model].labels;\n\tObject.defineProperty(convert[model], 'channels', {value: channels});\n\tObject.defineProperty(convert[model], 'labels', {value: labels});\n}\n\nconvert.rgb.hsl = function (rgb) {\n\tconst r = rgb[0] / 255;\n\tconst g = rgb[1] / 255;\n\tconst b = rgb[2] / 255;\n\tconst min = Math.min(r, g, b);\n\tconst max = Math.max(r, g, b);\n\tconst delta = max - min;\n\tlet h;\n\tlet s;\n\n\tif (max === min) {\n\t\th = 0;\n\t} else if (r === max) {\n\t\th = (g - b) / delta;\n\t} else if (g === max) {\n\t\th = 2 + (b - r) / delta;\n\t} else if (b === max) {\n\t\th = 4 + (r - g) / delta;\n\t}\n\n\th = Math.min(h * 60, 360);\n\n\tif (h < 0) {\n\t\th += 360;\n\t}\n\n\tconst l = (min + max) / 2;\n\n\tif (max === min) {\n\t\ts = 0;\n\t} else if (l <= 0.5) {\n\t\ts = delta / (max + min);\n\t} else {\n\t\ts = delta / (2 - max - min);\n\t}\n\n\treturn [h, s * 100, l * 100];\n};\n\nconvert.rgb.hsv = function (rgb) {\n\tlet rdif;\n\tlet gdif;\n\tlet bdif;\n\tlet h;\n\tlet s;\n\n\tconst r = rgb[0] / 255;\n\tconst g = rgb[1] / 255;\n\tconst b = rgb[2] / 255;\n\tconst v = Math.max(r, g, b);\n\tconst diff = v - Math.min(r, g, b);\n\tconst diffc = function (c) {\n\t\treturn (v - c) / 6 / diff + 1 / 2;\n\t};\n\n\tif (diff === 0) {\n\t\th = 0;\n\t\ts = 0;\n\t} else {\n\t\ts = diff / v;\n\t\trdif = diffc(r);\n\t\tgdif = diffc(g);\n\t\tbdif = diffc(b);\n\n\t\tif (r === v) {\n\t\t\th = bdif - gdif;\n\t\t} else if (g === v) {\n\t\t\th = (1 / 3) + rdif - bdif;\n\t\t} else if (b === v) {\n\t\t\th = (2 / 3) + gdif - rdif;\n\t\t}\n\n\t\tif (h < 0) {\n\t\t\th += 1;\n\t\t} else if (h > 1) {\n\t\t\th -= 1;\n\t\t}\n\t}\n\n\treturn [\n\t\th * 360,\n\t\ts * 100,\n\t\tv * 100\n\t];\n};\n\nconvert.rgb.hwb = function (rgb) {\n\tconst r = rgb[0];\n\tconst g = rgb[1];\n\tlet b = rgb[2];\n\tconst h = convert.rgb.hsl(rgb)[0];\n\tconst w = 1 / 255 * Math.min(r, Math.min(g, b));\n\n\tb = 1 - 1 / 255 * Math.max(r, Math.max(g, b));\n\n\treturn [h, w * 100, b * 100];\n};\n\nconvert.rgb.cmyk = function (rgb) {\n\tconst r = rgb[0] / 255;\n\tconst g = rgb[1] / 255;\n\tconst b = rgb[2] / 255;\n\n\tconst k = Math.min(1 - r, 1 - g, 1 - b);\n\tconst c = (1 - r - k) / (1 - k) || 0;\n\tconst m = (1 - g - k) / (1 - k) || 0;\n\tconst y = (1 - b - k) / (1 - k) || 0;\n\n\treturn [c * 100, m * 100, y * 100, k * 100];\n};\n\nfunction comparativeDistance(x, y) {\n\t/*\n\t\tSee https://en.m.wikipedia.org/wiki/Euclidean_distance#Squared_Euclidean_distance\n\t*/\n\treturn (\n\t\t((x[0] - y[0]) ** 2) +\n\t\t((x[1] - y[1]) ** 2) +\n\t\t((x[2] - y[2]) ** 2)\n\t);\n}\n\nconvert.rgb.keyword = function (rgb) {\n\tconst reversed = reverseKeywords[rgb];\n\tif (reversed) {\n\t\treturn reversed;\n\t}\n\n\tlet currentClosestDistance = Infinity;\n\tlet currentClosestKeyword;\n\n\tfor (const keyword of Object.keys(cssKeywords)) {\n\t\tconst value = cssKeywords[keyword];\n\n\t\t// Compute comparative distance\n\t\tconst distance = comparativeDistance(rgb, value);\n\n\t\t// Check if its less, if so set as closest\n\t\tif (distance < currentClosestDistance) {\n\t\t\tcurrentClosestDistance = distance;\n\t\t\tcurrentClosestKeyword = keyword;\n\t\t}\n\t}\n\n\treturn currentClosestKeyword;\n};\n\nconvert.keyword.rgb = function (keyword) {\n\treturn cssKeywords[keyword];\n};\n\nconvert.rgb.xyz = function (rgb) {\n\tlet r = rgb[0] / 255;\n\tlet g = rgb[1] / 255;\n\tlet b = rgb[2] / 255;\n\n\t// Assume sRGB\n\tr = r > 0.04045 ? (((r + 0.055) / 1.055) ** 2.4) : (r / 12.92);\n\tg = g > 0.04045 ? (((g + 0.055) / 1.055) ** 2.4) : (g / 12.92);\n\tb = b > 0.04045 ? (((b + 0.055) / 1.055) ** 2.4) : (b / 12.92);\n\n\tconst x = (r * 0.4124) + (g * 0.3576) + (b * 0.1805);\n\tconst y = (r * 0.2126) + (g * 0.7152) + (b * 0.0722);\n\tconst z = (r * 0.0193) + (g * 0.1192) + (b * 0.9505);\n\n\treturn [x * 100, y * 100, z * 100];\n};\n\nconvert.rgb.lab = function (rgb) {\n\tconst xyz = convert.rgb.xyz(rgb);\n\tlet x = xyz[0];\n\tlet y = xyz[1];\n\tlet z = xyz[2];\n\n\tx /= 95.047;\n\ty /= 100;\n\tz /= 108.883;\n\n\tx = x > 0.008856 ? (x ** (1 / 3)) : (7.787 * x) + (16 / 116);\n\ty = y > 0.008856 ? (y ** (1 / 3)) : (7.787 * y) + (16 / 116);\n\tz = z > 0.008856 ? (z ** (1 / 3)) : (7.787 * z) + (16 / 116);\n\n\tconst l = (116 * y) - 16;\n\tconst a = 500 * (x - y);\n\tconst b = 200 * (y - z);\n\n\treturn [l, a, b];\n};\n\nconvert.hsl.rgb = function (hsl) {\n\tconst h = hsl[0] / 360;\n\tconst s = hsl[1] / 100;\n\tconst l = hsl[2] / 100;\n\tlet t2;\n\tlet t3;\n\tlet val;\n\n\tif (s === 0) {\n\t\tval = l * 255;\n\t\treturn [val, val, val];\n\t}\n\n\tif (l < 0.5) {\n\t\tt2 = l * (1 + s);\n\t} else {\n\t\tt2 = l + s - l * s;\n\t}\n\n\tconst t1 = 2 * l - t2;\n\n\tconst rgb = [0, 0, 0];\n\tfor (let i = 0; i < 3; i++) {\n\t\tt3 = h + 1 / 3 * -(i - 1);\n\t\tif (t3 < 0) {\n\t\t\tt3++;\n\t\t}\n\n\t\tif (t3 > 1) {\n\t\t\tt3--;\n\t\t}\n\n\t\tif (6 * t3 < 1) {\n\t\t\tval = t1 + (t2 - t1) * 6 * t3;\n\t\t} else if (2 * t3 < 1) {\n\t\t\tval = t2;\n\t\t} else if (3 * t3 < 2) {\n\t\t\tval = t1 + (t2 - t1) * (2 / 3 - t3) * 6;\n\t\t} else {\n\t\t\tval = t1;\n\t\t}\n\n\t\trgb[i] = val * 255;\n\t}\n\n\treturn rgb;\n};\n\nconvert.hsl.hsv = function (hsl) {\n\tconst h = hsl[0];\n\tlet s = hsl[1] / 100;\n\tlet l = hsl[2] / 100;\n\tlet smin = s;\n\tconst lmin = Math.max(l, 0.01);\n\n\tl *= 2;\n\ts *= (l <= 1) ? l : 2 - l;\n\tsmin *= lmin <= 1 ? lmin : 2 - lmin;\n\tconst v = (l + s) / 2;\n\tconst sv = l === 0 ? (2 * smin) / (lmin + smin) : (2 * s) / (l + s);\n\n\treturn [h, sv * 100, v * 100];\n};\n\nconvert.hsv.rgb = function (hsv) {\n\tconst h = hsv[0] / 60;\n\tconst s = hsv[1] / 100;\n\tlet v = hsv[2] / 100;\n\tconst hi = Math.floor(h) % 6;\n\n\tconst f = h - Math.floor(h);\n\tconst p = 255 * v * (1 - s);\n\tconst q = 255 * v * (1 - (s * f));\n\tconst t = 255 * v * (1 - (s * (1 - f)));\n\tv *= 255;\n\n\tswitch (hi) {\n\t\tcase 0:\n\t\t\treturn [v, t, p];\n\t\tcase 1:\n\t\t\treturn [q, v, p];\n\t\tcase 2:\n\t\t\treturn [p, v, t];\n\t\tcase 3:\n\t\t\treturn [p, q, v];\n\t\tcase 4:\n\t\t\treturn [t, p, v];\n\t\tcase 5:\n\t\t\treturn [v, p, q];\n\t}\n};\n\nconvert.hsv.hsl = function (hsv) {\n\tconst h = hsv[0];\n\tconst s = hsv[1] / 100;\n\tconst v = hsv[2] / 100;\n\tconst vmin = Math.max(v, 0.01);\n\tlet sl;\n\tlet l;\n\n\tl = (2 - s) * v;\n\tconst lmin = (2 - s) * vmin;\n\tsl = s * vmin;\n\tsl /= (lmin <= 1) ? lmin : 2 - lmin;\n\tsl = sl || 0;\n\tl /= 2;\n\n\treturn [h, sl * 100, l * 100];\n};\n\n// http://dev.w3.org/csswg/css-color/#hwb-to-rgb\nconvert.hwb.rgb = function (hwb) {\n\tconst h = hwb[0] / 360;\n\tlet wh = hwb[1] / 100;\n\tlet bl = hwb[2] / 100;\n\tconst ratio = wh + bl;\n\tlet f;\n\n\t// Wh + bl cant be > 1\n\tif (ratio > 1) {\n\t\twh /= ratio;\n\t\tbl /= ratio;\n\t}\n\n\tconst i = Math.floor(6 * h);\n\tconst v = 1 - bl;\n\tf = 6 * h - i;\n\n\tif ((i & 0x01) !== 0) {\n\t\tf = 1 - f;\n\t}\n\n\tconst n = wh + f * (v - wh); // Linear interpolation\n\n\tlet r;\n\tlet g;\n\tlet b;\n\t/* eslint-disable max-statements-per-line,no-multi-spaces */\n\tswitch (i) {\n\t\tdefault:\n\t\tcase 6:\n\t\tcase 0: r = v; g = n; b = wh; break;\n\t\tcase 1: r = n; g = v; b = wh; break;\n\t\tcase 2: r = wh; g = v; b = n; break;\n\t\tcase 3: r = wh; g = n; b = v; break;\n\t\tcase 4: r = n; g = wh; b = v; break;\n\t\tcase 5: r = v; g = wh; b = n; break;\n\t}\n\t/* eslint-enable max-statements-per-line,no-multi-spaces */\n\n\treturn [r * 255, g * 255, b * 255];\n};\n\nconvert.cmyk.rgb = function (cmyk) {\n\tconst c = cmyk[0] / 100;\n\tconst m = cmyk[1] / 100;\n\tconst y = cmyk[2] / 100;\n\tconst k = cmyk[3] / 100;\n\n\tconst r = 1 - Math.min(1, c * (1 - k) + k);\n\tconst g = 1 - Math.min(1, m * (1 - k) + k);\n\tconst b = 1 - Math.min(1, y * (1 - k) + k);\n\n\treturn [r * 255, g * 255, b * 255];\n};\n\nconvert.xyz.rgb = function (xyz) {\n\tconst x = xyz[0] / 100;\n\tconst y = xyz[1] / 100;\n\tconst z = xyz[2] / 100;\n\tlet r;\n\tlet g;\n\tlet b;\n\n\tr = (x * 3.2406) + (y * -1.5372) + (z * -0.4986);\n\tg = (x * -0.9689) + (y * 1.8758) + (z * 0.0415);\n\tb = (x * 0.0557) + (y * -0.2040) + (z * 1.0570);\n\n\t// Assume sRGB\n\tr = r > 0.0031308\n\t\t? ((1.055 * (r ** (1.0 / 2.4))) - 0.055)\n\t\t: r * 12.92;\n\n\tg = g > 0.0031308\n\t\t? ((1.055 * (g ** (1.0 / 2.4))) - 0.055)\n\t\t: g * 12.92;\n\n\tb = b > 0.0031308\n\t\t? ((1.055 * (b ** (1.0 / 2.4))) - 0.055)\n\t\t: b * 12.92;\n\n\tr = Math.min(Math.max(0, r), 1);\n\tg = Math.min(Math.max(0, g), 1);\n\tb = Math.min(Math.max(0, b), 1);\n\n\treturn [r * 255, g * 255, b * 255];\n};\n\nconvert.xyz.lab = function (xyz) {\n\tlet x = xyz[0];\n\tlet y = xyz[1];\n\tlet z = xyz[2];\n\n\tx /= 95.047;\n\ty /= 100;\n\tz /= 108.883;\n\n\tx = x > 0.008856 ? (x ** (1 / 3)) : (7.787 * x) + (16 / 116);\n\ty = y > 0.008856 ? (y ** (1 / 3)) : (7.787 * y) + (16 / 116);\n\tz = z > 0.008856 ? (z ** (1 / 3)) : (7.787 * z) + (16 / 116);\n\n\tconst l = (116 * y) - 16;\n\tconst a = 500 * (x - y);\n\tconst b = 200 * (y - z);\n\n\treturn [l, a, b];\n};\n\nconvert.lab.xyz = function (lab) {\n\tconst l = lab[0];\n\tconst a = lab[1];\n\tconst b = lab[2];\n\tlet x;\n\tlet y;\n\tlet z;\n\n\ty = (l + 16) / 116;\n\tx = a / 500 + y;\n\tz = y - b / 200;\n\n\tconst y2 = y ** 3;\n\tconst x2 = x ** 3;\n\tconst z2 = z ** 3;\n\ty = y2 > 0.008856 ? y2 : (y - 16 / 116) / 7.787;\n\tx = x2 > 0.008856 ? x2 : (x - 16 / 116) / 7.787;\n\tz = z2 > 0.008856 ? z2 : (z - 16 / 116) / 7.787;\n\n\tx *= 95.047;\n\ty *= 100;\n\tz *= 108.883;\n\n\treturn [x, y, z];\n};\n\nconvert.lab.lch = function (lab) {\n\tconst l = lab[0];\n\tconst a = lab[1];\n\tconst b = lab[2];\n\tlet h;\n\n\tconst hr = Math.atan2(b, a);\n\th = hr * 360 / 2 / Math.PI;\n\n\tif (h < 0) {\n\t\th += 360;\n\t}\n\n\tconst c = Math.sqrt(a * a + b * b);\n\n\treturn [l, c, h];\n};\n\nconvert.lch.lab = function (lch) {\n\tconst l = lch[0];\n\tconst c = lch[1];\n\tconst h = lch[2];\n\n\tconst hr = h / 360 * 2 * Math.PI;\n\tconst a = c * Math.cos(hr);\n\tconst b = c * Math.sin(hr);\n\n\treturn [l, a, b];\n};\n\nconvert.rgb.ansi16 = function (args, saturation = null) {\n\tconst [r, g, b] = args;\n\tlet value = saturation === null ? convert.rgb.hsv(args)[2] : saturation; // Hsv -> ansi16 optimization\n\n\tvalue = Math.round(value / 50);\n\n\tif (value === 0) {\n\t\treturn 30;\n\t}\n\n\tlet ansi = 30\n\t\t+ ((Math.round(b / 255) << 2)\n\t\t| (Math.round(g / 255) << 1)\n\t\t| Math.round(r / 255));\n\n\tif (value === 2) {\n\t\tansi += 60;\n\t}\n\n\treturn ansi;\n};\n\nconvert.hsv.ansi16 = function (args) {\n\t// Optimization here; we already know the value and don't need to get\n\t// it converted for us.\n\treturn convert.rgb.ansi16(convert.hsv.rgb(args), args[2]);\n};\n\nconvert.rgb.ansi256 = function (args) {\n\tconst r = args[0];\n\tconst g = args[1];\n\tconst b = args[2];\n\n\t// We use the extended greyscale palette here, with the exception of\n\t// black and white. normal palette only has 4 greyscale shades.\n\tif (r === g && g === b) {\n\t\tif (r < 8) {\n\t\t\treturn 16;\n\t\t}\n\n\t\tif (r > 248) {\n\t\t\treturn 231;\n\t\t}\n\n\t\treturn Math.round(((r - 8) / 247) * 24) + 232;\n\t}\n\n\tconst ansi = 16\n\t\t+ (36 * Math.round(r / 255 * 5))\n\t\t+ (6 * Math.round(g / 255 * 5))\n\t\t+ Math.round(b / 255 * 5);\n\n\treturn ansi;\n};\n\nconvert.ansi16.rgb = function (args) {\n\tlet color = args % 10;\n\n\t// Handle greyscale\n\tif (color === 0 || color === 7) {\n\t\tif (args > 50) {\n\t\t\tcolor += 3.5;\n\t\t}\n\n\t\tcolor = color / 10.5 * 255;\n\n\t\treturn [color, color, color];\n\t}\n\n\tconst mult = (~~(args > 50) + 1) * 0.5;\n\tconst r = ((color & 1) * mult) * 255;\n\tconst g = (((color >> 1) & 1) * mult) * 255;\n\tconst b = (((color >> 2) & 1) * mult) * 255;\n\n\treturn [r, g, b];\n};\n\nconvert.ansi256.rgb = function (args) {\n\t// Handle greyscale\n\tif (args >= 232) {\n\t\tconst c = (args - 232) * 10 + 8;\n\t\treturn [c, c, c];\n\t}\n\n\targs -= 16;\n\n\tlet rem;\n\tconst r = Math.floor(args / 36) / 5 * 255;\n\tconst g = Math.floor((rem = args % 36) / 6) / 5 * 255;\n\tconst b = (rem % 6) / 5 * 255;\n\n\treturn [r, g, b];\n};\n\nconvert.rgb.hex = function (args) {\n\tconst integer = ((Math.round(args[0]) & 0xFF) << 16)\n\t\t+ ((Math.round(args[1]) & 0xFF) << 8)\n\t\t+ (Math.round(args[2]) & 0xFF);\n\n\tconst string = integer.toString(16).toUpperCase();\n\treturn '000000'.substring(string.length) + string;\n};\n\nconvert.hex.rgb = function (args) {\n\tconst match = args.toString(16).match(/[a-f0-9]{6}|[a-f0-9]{3}/i);\n\tif (!match) {\n\t\treturn [0, 0, 0];\n\t}\n\n\tlet colorString = match[0];\n\n\tif (match[0].length === 3) {\n\t\tcolorString = colorString.split('').map(char => {\n\t\t\treturn char + char;\n\t\t}).join('');\n\t}\n\n\tconst integer = parseInt(colorString, 16);\n\tconst r = (integer >> 16) & 0xFF;\n\tconst g = (integer >> 8) & 0xFF;\n\tconst b = integer & 0xFF;\n\n\treturn [r, g, b];\n};\n\nconvert.rgb.hcg = function (rgb) {\n\tconst r = rgb[0] / 255;\n\tconst g = rgb[1] / 255;\n\tconst b = rgb[2] / 255;\n\tconst max = Math.max(Math.max(r, g), b);\n\tconst min = Math.min(Math.min(r, g), b);\n\tconst chroma = (max - min);\n\tlet grayscale;\n\tlet hue;\n\n\tif (chroma < 1) {\n\t\tgrayscale = min / (1 - chroma);\n\t} else {\n\t\tgrayscale = 0;\n\t}\n\n\tif (chroma <= 0) {\n\t\thue = 0;\n\t} else\n\tif (max === r) {\n\t\thue = ((g - b) / chroma) % 6;\n\t} else\n\tif (max === g) {\n\t\thue = 2 + (b - r) / chroma;\n\t} else {\n\t\thue = 4 + (r - g) / chroma;\n\t}\n\n\thue /= 6;\n\thue %= 1;\n\n\treturn [hue * 360, chroma * 100, grayscale * 100];\n};\n\nconvert.hsl.hcg = function (hsl) {\n\tconst s = hsl[1] / 100;\n\tconst l = hsl[2] / 100;\n\n\tconst c = l < 0.5 ? (2.0 * s * l) : (2.0 * s * (1.0 - l));\n\n\tlet f = 0;\n\tif (c < 1.0) {\n\t\tf = (l - 0.5 * c) / (1.0 - c);\n\t}\n\n\treturn [hsl[0], c * 100, f * 100];\n};\n\nconvert.hsv.hcg = function (hsv) {\n\tconst s = hsv[1] / 100;\n\tconst v = hsv[2] / 100;\n\n\tconst c = s * v;\n\tlet f = 0;\n\n\tif (c < 1.0) {\n\t\tf = (v - c) / (1 - c);\n\t}\n\n\treturn [hsv[0], c * 100, f * 100];\n};\n\nconvert.hcg.rgb = function (hcg) {\n\tconst h = hcg[0] / 360;\n\tconst c = hcg[1] / 100;\n\tconst g = hcg[2] / 100;\n\n\tif (c === 0.0) {\n\t\treturn [g * 255, g * 255, g * 255];\n\t}\n\n\tconst pure = [0, 0, 0];\n\tconst hi = (h % 1) * 6;\n\tconst v = hi % 1;\n\tconst w = 1 - v;\n\tlet mg = 0;\n\n\t/* eslint-disable max-statements-per-line */\n\tswitch (Math.floor(hi)) {\n\t\tcase 0:\n\t\t\tpure[0] = 1; pure[1] = v; pure[2] = 0; break;\n\t\tcase 1:\n\t\t\tpure[0] = w; pure[1] = 1; pure[2] = 0; break;\n\t\tcase 2:\n\t\t\tpure[0] = 0; pure[1] = 1; pure[2] = v; break;\n\t\tcase 3:\n\t\t\tpure[0] = 0; pure[1] = w; pure[2] = 1; break;\n\t\tcase 4:\n\t\t\tpure[0] = v; pure[1] = 0; pure[2] = 1; break;\n\t\tdefault:\n\t\t\tpure[0] = 1; pure[1] = 0; pure[2] = w;\n\t}\n\t/* eslint-enable max-statements-per-line */\n\n\tmg = (1.0 - c) * g;\n\n\treturn [\n\t\t(c * pure[0] + mg) * 255,\n\t\t(c * pure[1] + mg) * 255,\n\t\t(c * pure[2] + mg) * 255\n\t];\n};\n\nconvert.hcg.hsv = function (hcg) {\n\tconst c = hcg[1] / 100;\n\tconst g = hcg[2] / 100;\n\n\tconst v = c + g * (1.0 - c);\n\tlet f = 0;\n\n\tif (v > 0.0) {\n\t\tf = c / v;\n\t}\n\n\treturn [hcg[0], f * 100, v * 100];\n};\n\nconvert.hcg.hsl = function (hcg) {\n\tconst c = hcg[1] / 100;\n\tconst g = hcg[2] / 100;\n\n\tconst l = g * (1.0 - c) + 0.5 * c;\n\tlet s = 0;\n\n\tif (l > 0.0 && l < 0.5) {\n\t\ts = c / (2 * l);\n\t} else\n\tif (l >= 0.5 && l < 1.0) {\n\t\ts = c / (2 * (1 - l));\n\t}\n\n\treturn [hcg[0], s * 100, l * 100];\n};\n\nconvert.hcg.hwb = function (hcg) {\n\tconst c = hcg[1] / 100;\n\tconst g = hcg[2] / 100;\n\tconst v = c + g * (1.0 - c);\n\treturn [hcg[0], (v - c) * 100, (1 - v) * 100];\n};\n\nconvert.hwb.hcg = function (hwb) {\n\tconst w = hwb[1] / 100;\n\tconst b = hwb[2] / 100;\n\tconst v = 1 - b;\n\tconst c = v - w;\n\tlet g = 0;\n\n\tif (c < 1) {\n\t\tg = (v - c) / (1 - c);\n\t}\n\n\treturn [hwb[0], c * 100, g * 100];\n};\n\nconvert.apple.rgb = function (apple) {\n\treturn [(apple[0] / 65535) * 255, (apple[1] / 65535) * 255, (apple[2] / 65535) * 255];\n};\n\nconvert.rgb.apple = function (rgb) {\n\treturn [(rgb[0] / 255) * 65535, (rgb[1] / 255) * 65535, (rgb[2] / 255) * 65535];\n};\n\nconvert.gray.rgb = function (args) {\n\treturn [args[0] / 100 * 255, args[0] / 100 * 255, args[0] / 100 * 255];\n};\n\nconvert.gray.hsl = function (args) {\n\treturn [0, 0, args[0]];\n};\n\nconvert.gray.hsv = convert.gray.hsl;\n\nconvert.gray.hwb = function (gray) {\n\treturn [0, 100, gray[0]];\n};\n\nconvert.gray.cmyk = function (gray) {\n\treturn [0, 0, 0, gray[0]];\n};\n\nconvert.gray.lab = function (gray) {\n\treturn [gray[0], 0, 0];\n};\n\nconvert.gray.hex = function (gray) {\n\tconst val = Math.round(gray[0] / 100 * 255) & 0xFF;\n\tconst integer = (val << 16) + (val << 8) + val;\n\n\tconst string = integer.toString(16).toUpperCase();\n\treturn '000000'.substring(string.length) + string;\n};\n\nconvert.rgb.gray = function (rgb) {\n\tconst val = (rgb[0] + rgb[1] + rgb[2]) / 3;\n\treturn [val / 255 * 100];\n};\n","const conversions = require('./conversions');\nconst route = require('./route');\n\nconst convert = {};\n\nconst models = Object.keys(conversions);\n\nfunction wrapRaw(fn) {\n\tconst wrappedFn = function (...args) {\n\t\tconst arg0 = args[0];\n\t\tif (arg0 === undefined || arg0 === null) {\n\t\t\treturn arg0;\n\t\t}\n\n\t\tif (arg0.length > 1) {\n\t\t\targs = arg0;\n\t\t}\n\n\t\treturn fn(args);\n\t};\n\n\t// Preserve .conversion property if there is one\n\tif ('conversion' in fn) {\n\t\twrappedFn.conversion = fn.conversion;\n\t}\n\n\treturn wrappedFn;\n}\n\nfunction wrapRounded(fn) {\n\tconst wrappedFn = function (...args) {\n\t\tconst arg0 = args[0];\n\n\t\tif (arg0 === undefined || arg0 === null) {\n\t\t\treturn arg0;\n\t\t}\n\n\t\tif (arg0.length > 1) {\n\t\t\targs = arg0;\n\t\t}\n\n\t\tconst result = fn(args);\n\n\t\t// We're assuming the result is an array here.\n\t\t// see notice in conversions.js; don't use box types\n\t\t// in conversion functions.\n\t\tif (typeof result === 'object') {\n\t\t\tfor (let len = result.length, i = 0; i < len; i++) {\n\t\t\t\tresult[i] = Math.round(result[i]);\n\t\t\t}\n\t\t}\n\n\t\treturn result;\n\t};\n\n\t// Preserve .conversion property if there is one\n\tif ('conversion' in fn) {\n\t\twrappedFn.conversion = fn.conversion;\n\t}\n\n\treturn wrappedFn;\n}\n\nmodels.forEach(fromModel => {\n\tconvert[fromModel] = {};\n\n\tObject.defineProperty(convert[fromModel], 'channels', {value: conversions[fromModel].channels});\n\tObject.defineProperty(convert[fromModel], 'labels', {value: conversions[fromModel].labels});\n\n\tconst routes = route(fromModel);\n\tconst routeModels = Object.keys(routes);\n\n\trouteModels.forEach(toModel => {\n\t\tconst fn = routes[toModel];\n\n\t\tconvert[fromModel][toModel] = wrapRounded(fn);\n\t\tconvert[fromModel][toModel].raw = wrapRaw(fn);\n\t});\n});\n\nmodule.exports = convert;\n","const conversions = require('./conversions');\n\n/*\n\tThis function routes a model to all other models.\n\n\tall functions that are routed have a property `.conversion` attached\n\tto the returned synthetic function. This property is an array\n\tof strings, each with the steps in between the 'from' and 'to'\n\tcolor models (inclusive).\n\n\tconversions that are not possible simply are not included.\n*/\n\nfunction buildGraph() {\n\tconst graph = {};\n\t// https://jsperf.com/object-keys-vs-for-in-with-closure/3\n\tconst models = Object.keys(conversions);\n\n\tfor (let len = models.length, i = 0; i < len; i++) {\n\t\tgraph[models[i]] = {\n\t\t\t// http://jsperf.com/1-vs-infinity\n\t\t\t// micro-opt, but this is simple.\n\t\t\tdistance: -1,\n\t\t\tparent: null\n\t\t};\n\t}\n\n\treturn graph;\n}\n\n// https://en.wikipedia.org/wiki/Breadth-first_search\nfunction deriveBFS(fromModel) {\n\tconst graph = buildGraph();\n\tconst queue = [fromModel]; // Unshift -> queue -> pop\n\n\tgraph[fromModel].distance = 0;\n\n\twhile (queue.length) {\n\t\tconst current = queue.pop();\n\t\tconst adjacents = Object.keys(conversions[current]);\n\n\t\tfor (let len = adjacents.length, i = 0; i < len; i++) {\n\t\t\tconst adjacent = adjacents[i];\n\t\t\tconst node = graph[adjacent];\n\n\t\t\tif (node.distance === -1) {\n\t\t\t\tnode.distance = graph[current].distance + 1;\n\t\t\t\tnode.parent = current;\n\t\t\t\tqueue.unshift(adjacent);\n\t\t\t}\n\t\t}\n\t}\n\n\treturn graph;\n}\n\nfunction link(from, to) {\n\treturn function (args) {\n\t\treturn to(from(args));\n\t};\n}\n\nfunction wrapConversion(toModel, graph) {\n\tconst path = [graph[toModel].parent, toModel];\n\tlet fn = conversions[graph[toModel].parent][toModel];\n\n\tlet cur = graph[toModel].parent;\n\twhile (graph[cur].parent) {\n\t\tpath.unshift(graph[cur].parent);\n\t\tfn = link(conversions[graph[cur].parent][cur], fn);\n\t\tcur = graph[cur].parent;\n\t}\n\n\tfn.conversion = path;\n\treturn fn;\n}\n\nmodule.exports = function (fromModel) {\n\tconst graph = deriveBFS(fromModel);\n\tconst conversion = {};\n\n\tconst models = Object.keys(graph);\n\tfor (let len = models.length, i = 0; i < len; i++) {\n\t\tconst toModel = models[i];\n\t\tconst node = graph[toModel];\n\n\t\tif (node.parent === null) {\n\t\t\t// No possible conversion, or this node is the source model.\n\t\t\tcontinue;\n\t\t}\n\n\t\tconversion[toModel] = wrapConversion(toModel, graph);\n\t}\n\n\treturn conversion;\n};\n\n","'use strict'\r\n\r\nmodule.exports = {\r\n\t\"aliceblue\": [240, 248, 255],\r\n\t\"antiquewhite\": [250, 235, 215],\r\n\t\"aqua\": [0, 255, 255],\r\n\t\"aquamarine\": [127, 255, 212],\r\n\t\"azure\": [240, 255, 255],\r\n\t\"beige\": [245, 245, 220],\r\n\t\"bisque\": [255, 228, 196],\r\n\t\"black\": [0, 0, 0],\r\n\t\"blanchedalmond\": [255, 235, 205],\r\n\t\"blue\": [0, 0, 255],\r\n\t\"blueviolet\": [138, 43, 226],\r\n\t\"brown\": [165, 42, 42],\r\n\t\"burlywood\": [222, 184, 135],\r\n\t\"cadetblue\": [95, 158, 160],\r\n\t\"chartreuse\": [127, 255, 0],\r\n\t\"chocolate\": [210, 105, 30],\r\n\t\"coral\": [255, 127, 80],\r\n\t\"cornflowerblue\": [100, 149, 237],\r\n\t\"cornsilk\": [255, 248, 220],\r\n\t\"crimson\": [220, 20, 60],\r\n\t\"cyan\": [0, 255, 255],\r\n\t\"darkblue\": [0, 0, 139],\r\n\t\"darkcyan\": [0, 139, 139],\r\n\t\"darkgoldenrod\": [184, 134, 11],\r\n\t\"darkgray\": [169, 169, 169],\r\n\t\"darkgreen\": [0, 100, 0],\r\n\t\"darkgrey\": [169, 169, 169],\r\n\t\"darkkhaki\": [189, 183, 107],\r\n\t\"darkmagenta\": [139, 0, 139],\r\n\t\"darkolivegreen\": [85, 107, 47],\r\n\t\"darkorange\": [255, 140, 0],\r\n\t\"darkorchid\": [153, 50, 204],\r\n\t\"darkred\": [139, 0, 0],\r\n\t\"darksalmon\": [233, 150, 122],\r\n\t\"darkseagreen\": [143, 188, 143],\r\n\t\"darkslateblue\": [72, 61, 139],\r\n\t\"darkslategray\": [47, 79, 79],\r\n\t\"darkslategrey\": [47, 79, 79],\r\n\t\"darkturquoise\": [0, 206, 209],\r\n\t\"darkviolet\": [148, 0, 211],\r\n\t\"deeppink\": [255, 20, 147],\r\n\t\"deepskyblue\": [0, 191, 255],\r\n\t\"dimgray\": [105, 105, 105],\r\n\t\"dimgrey\": [105, 105, 105],\r\n\t\"dodgerblue\": [30, 144, 255],\r\n\t\"firebrick\": [178, 34, 34],\r\n\t\"floralwhite\": [255, 250, 240],\r\n\t\"forestgreen\": [34, 139, 34],\r\n\t\"fuchsia\": [255, 0, 255],\r\n\t\"gainsboro\": [220, 220, 220],\r\n\t\"ghostwhite\": [248, 248, 255],\r\n\t\"gold\": [255, 215, 0],\r\n\t\"goldenrod\": [218, 165, 32],\r\n\t\"gray\": [128, 128, 128],\r\n\t\"green\": [0, 128, 0],\r\n\t\"greenyellow\": [173, 255, 47],\r\n\t\"grey\": [128, 128, 128],\r\n\t\"honeydew\": [240, 255, 240],\r\n\t\"hotpink\": [255, 105, 180],\r\n\t\"indianred\": [205, 92, 92],\r\n\t\"indigo\": [75, 0, 130],\r\n\t\"ivory\": [255, 255, 240],\r\n\t\"khaki\": [240, 230, 140],\r\n\t\"lavender\": [230, 230, 250],\r\n\t\"lavenderblush\": [255, 240, 245],\r\n\t\"lawngreen\": [124, 252, 0],\r\n\t\"lemonchiffon\": [255, 250, 205],\r\n\t\"lightblue\": [173, 216, 230],\r\n\t\"lightcoral\": [240, 128, 128],\r\n\t\"lightcyan\": [224, 255, 255],\r\n\t\"lightgoldenrodyellow\": [250, 250, 210],\r\n\t\"lightgray\": [211, 211, 211],\r\n\t\"lightgreen\": [144, 238, 144],\r\n\t\"lightgrey\": [211, 211, 211],\r\n\t\"lightpink\": [255, 182, 193],\r\n\t\"lightsalmon\": [255, 160, 122],\r\n\t\"lightseagreen\": [32, 178, 170],\r\n\t\"lightskyblue\": [135, 206, 250],\r\n\t\"lightslategray\": [119, 136, 153],\r\n\t\"lightslategrey\": [119, 136, 153],\r\n\t\"lightsteelblue\": [176, 196, 222],\r\n\t\"lightyellow\": [255, 255, 224],\r\n\t\"lime\": [0, 255, 0],\r\n\t\"limegreen\": [50, 205, 50],\r\n\t\"linen\": [250, 240, 230],\r\n\t\"magenta\": [255, 0, 255],\r\n\t\"maroon\": [128, 0, 0],\r\n\t\"mediumaquamarine\": [102, 205, 170],\r\n\t\"mediumblue\": [0, 0, 205],\r\n\t\"mediumorchid\": [186, 85, 211],\r\n\t\"mediumpurple\": [147, 112, 219],\r\n\t\"mediumseagreen\": [60, 179, 113],\r\n\t\"mediumslateblue\": [123, 104, 238],\r\n\t\"mediumspringgreen\": [0, 250, 154],\r\n\t\"mediumturquoise\": [72, 209, 204],\r\n\t\"mediumvioletred\": [199, 21, 133],\r\n\t\"midnightblue\": [25, 25, 112],\r\n\t\"mintcream\": [245, 255, 250],\r\n\t\"mistyrose\": [255, 228, 225],\r\n\t\"moccasin\": [255, 228, 181],\r\n\t\"navajowhite\": [255, 222, 173],\r\n\t\"navy\": [0, 0, 128],\r\n\t\"oldlace\": [253, 245, 230],\r\n\t\"olive\": [128, 128, 0],\r\n\t\"olivedrab\": [107, 142, 35],\r\n\t\"orange\": [255, 165, 0],\r\n\t\"orangered\": [255, 69, 0],\r\n\t\"orchid\": [218, 112, 214],\r\n\t\"palegoldenrod\": [238, 232, 170],\r\n\t\"palegreen\": [152, 251, 152],\r\n\t\"paleturquoise\": [175, 238, 238],\r\n\t\"palevioletred\": [219, 112, 147],\r\n\t\"papayawhip\": [255, 239, 213],\r\n\t\"peachpuff\": [255, 218, 185],\r\n\t\"peru\": [205, 133, 63],\r\n\t\"pink\": [255, 192, 203],\r\n\t\"plum\": [221, 160, 221],\r\n\t\"powderblue\": [176, 224, 230],\r\n\t\"purple\": [128, 0, 128],\r\n\t\"rebeccapurple\": [102, 51, 153],\r\n\t\"red\": [255, 0, 0],\r\n\t\"rosybrown\": [188, 143, 143],\r\n\t\"royalblue\": [65, 105, 225],\r\n\t\"saddlebrown\": [139, 69, 19],\r\n\t\"salmon\": [250, 128, 114],\r\n\t\"sandybrown\": [244, 164, 96],\r\n\t\"seagreen\": [46, 139, 87],\r\n\t\"seashell\": [255, 245, 238],\r\n\t\"sienna\": [160, 82, 45],\r\n\t\"silver\": [192, 192, 192],\r\n\t\"skyblue\": [135, 206, 235],\r\n\t\"slateblue\": [106, 90, 205],\r\n\t\"slategray\": [112, 128, 144],\r\n\t\"slategrey\": [112, 128, 144],\r\n\t\"snow\": [255, 250, 250],\r\n\t\"springgreen\": [0, 255, 127],\r\n\t\"steelblue\": [70, 130, 180],\r\n\t\"tan\": [210, 180, 140],\r\n\t\"teal\": [0, 128, 128],\r\n\t\"thistle\": [216, 191, 216],\r\n\t\"tomato\": [255, 99, 71],\r\n\t\"turquoise\": [64, 224, 208],\r\n\t\"violet\": [238, 130, 238],\r\n\t\"wheat\": [245, 222, 179],\r\n\t\"white\": [255, 255, 255],\r\n\t\"whitesmoke\": [245, 245, 245],\r\n\t\"yellow\": [255, 255, 0],\r\n\t\"yellowgreen\": [154, 205, 50]\r\n};\r\n","'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\nclass Deprecation extends Error {\n constructor(message) {\n super(message); // Maintains proper stack trace (only available on V8)\n\n /* istanbul ignore next */\n\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, this.constructor);\n }\n\n this.name = 'Deprecation';\n }\n\n}\n\nexports.Deprecation = Deprecation;\n","/*istanbul ignore start*/\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.convertChangesToDMP = convertChangesToDMP;\n\n/*istanbul ignore end*/\n// See: http://code.google.com/p/google-diff-match-patch/wiki/API\nfunction convertChangesToDMP(changes) {\n var ret = [],\n change,\n operation;\n\n for (var i = 0; i < changes.length; i++) {\n change = changes[i];\n\n if (change.added) {\n operation = 1;\n } else if (change.removed) {\n operation = -1;\n } else {\n operation = 0;\n }\n\n ret.push([operation, change.value]);\n }\n\n return ret;\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb252ZXJ0L2RtcC5qcyJdLCJuYW1lcyI6WyJjb252ZXJ0Q2hhbmdlc1RvRE1QIiwiY2hhbmdlcyIsInJldCIsImNoYW5nZSIsIm9wZXJhdGlvbiIsImkiLCJsZW5ndGgiLCJhZGRlZCIsInJlbW92ZWQiLCJwdXNoIiwidmFsdWUiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFBO0FBQ08sU0FBU0EsbUJBQVQsQ0FBNkJDLE9BQTdCLEVBQXNDO0FBQzNDLE1BQUlDLEdBQUcsR0FBRyxFQUFWO0FBQUEsTUFDSUMsTUFESjtBQUFBLE1BRUlDLFNBRko7O0FBR0EsT0FBSyxJQUFJQyxDQUFDLEdBQUcsQ0FBYixFQUFnQkEsQ0FBQyxHQUFHSixPQUFPLENBQUNLLE1BQTVCLEVBQW9DRCxDQUFDLEVBQXJDLEVBQXlDO0FBQ3ZDRixJQUFBQSxNQUFNLEdBQUdGLE9BQU8sQ0FBQ0ksQ0FBRCxDQUFoQjs7QUFDQSxRQUFJRixNQUFNLENBQUNJLEtBQVgsRUFBa0I7QUFDaEJILE1BQUFBLFNBQVMsR0FBRyxDQUFaO0FBQ0QsS0FGRCxNQUVPLElBQUlELE1BQU0sQ0FBQ0ssT0FBWCxFQUFvQjtBQUN6QkosTUFBQUEsU0FBUyxHQUFHLENBQUMsQ0FBYjtBQUNELEtBRk0sTUFFQTtBQUNMQSxNQUFBQSxTQUFTLEdBQUcsQ0FBWjtBQUNEOztBQUVERixJQUFBQSxHQUFHLENBQUNPLElBQUosQ0FBUyxDQUFDTCxTQUFELEVBQVlELE1BQU0sQ0FBQ08sS0FBbkIsQ0FBVDtBQUNEOztBQUNELFNBQU9SLEdBQVA7QUFDRCIsInNvdXJjZXNDb250ZW50IjpbIi8vIFNlZTogaHR0cDovL2NvZGUuZ29vZ2xlLmNvbS9wL2dvb2dsZS1kaWZmLW1hdGNoLXBhdGNoL3dpa2kvQVBJXG5leHBvcnQgZnVuY3Rpb24gY29udmVydENoYW5nZXNUb0RNUChjaGFuZ2VzKSB7XG4gIGxldCByZXQgPSBbXSxcbiAgICAgIGNoYW5nZSxcbiAgICAgIG9wZXJhdGlvbjtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBjaGFuZ2VzLmxlbmd0aDsgaSsrKSB7XG4gICAgY2hhbmdlID0gY2hhbmdlc1tpXTtcbiAgICBpZiAoY2hhbmdlLmFkZGVkKSB7XG4gICAgICBvcGVyYXRpb24gPSAxO1xuICAgIH0gZWxzZSBpZiAoY2hhbmdlLnJlbW92ZWQpIHtcbiAgICAgIG9wZXJhdGlvbiA9IC0xO1xuICAgIH0gZWxzZSB7XG4gICAgICBvcGVyYXRpb24gPSAwO1xuICAgIH1cblxuICAgIHJldC5wdXNoKFtvcGVyYXRpb24sIGNoYW5nZS52YWx1ZV0pO1xuICB9XG4gIHJldHVybiByZXQ7XG59XG4iXX0=\n","/*istanbul ignore start*/\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.convertChangesToXML = convertChangesToXML;\n\n/*istanbul ignore end*/\nfunction convertChangesToXML(changes) {\n var ret = [];\n\n for (var i = 0; i < changes.length; i++) {\n var change = changes[i];\n\n if (change.added) {\n ret.push('');\n } else if (change.removed) {\n ret.push('');\n }\n\n ret.push(escapeHTML(change.value));\n\n if (change.added) {\n ret.push('');\n } else if (change.removed) {\n ret.push('');\n }\n }\n\n return ret.join('');\n}\n\nfunction escapeHTML(s) {\n var n = s;\n n = n.replace(/&/g, '&');\n n = n.replace(//g, '>');\n n = n.replace(/\"/g, '"');\n return n;\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb252ZXJ0L3htbC5qcyJdLCJuYW1lcyI6WyJjb252ZXJ0Q2hhbmdlc1RvWE1MIiwiY2hhbmdlcyIsInJldCIsImkiLCJsZW5ndGgiLCJjaGFuZ2UiLCJhZGRlZCIsInB1c2giLCJyZW1vdmVkIiwiZXNjYXBlSFRNTCIsInZhbHVlIiwiam9pbiIsInMiLCJuIiwicmVwbGFjZSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQU8sU0FBU0EsbUJBQVQsQ0FBNkJDLE9BQTdCLEVBQXNDO0FBQzNDLE1BQUlDLEdBQUcsR0FBRyxFQUFWOztBQUNBLE9BQUssSUFBSUMsQ0FBQyxHQUFHLENBQWIsRUFBZ0JBLENBQUMsR0FBR0YsT0FBTyxDQUFDRyxNQUE1QixFQUFvQ0QsQ0FBQyxFQUFyQyxFQUF5QztBQUN2QyxRQUFJRSxNQUFNLEdBQUdKLE9BQU8sQ0FBQ0UsQ0FBRCxDQUFwQjs7QUFDQSxRQUFJRSxNQUFNLENBQUNDLEtBQVgsRUFBa0I7QUFDaEJKLE1BQUFBLEdBQUcsQ0FBQ0ssSUFBSixDQUFTLE9BQVQ7QUFDRCxLQUZELE1BRU8sSUFBSUYsTUFBTSxDQUFDRyxPQUFYLEVBQW9CO0FBQ3pCTixNQUFBQSxHQUFHLENBQUNLLElBQUosQ0FBUyxPQUFUO0FBQ0Q7O0FBRURMLElBQUFBLEdBQUcsQ0FBQ0ssSUFBSixDQUFTRSxVQUFVLENBQUNKLE1BQU0sQ0FBQ0ssS0FBUixDQUFuQjs7QUFFQSxRQUFJTCxNQUFNLENBQUNDLEtBQVgsRUFBa0I7QUFDaEJKLE1BQUFBLEdBQUcsQ0FBQ0ssSUFBSixDQUFTLFFBQVQ7QUFDRCxLQUZELE1BRU8sSUFBSUYsTUFBTSxDQUFDRyxPQUFYLEVBQW9CO0FBQ3pCTixNQUFBQSxHQUFHLENBQUNLLElBQUosQ0FBUyxRQUFUO0FBQ0Q7QUFDRjs7QUFDRCxTQUFPTCxHQUFHLENBQUNTLElBQUosQ0FBUyxFQUFULENBQVA7QUFDRDs7QUFFRCxTQUFTRixVQUFULENBQW9CRyxDQUFwQixFQUF1QjtBQUNyQixNQUFJQyxDQUFDLEdBQUdELENBQVI7QUFDQUMsRUFBQUEsQ0FBQyxHQUFHQSxDQUFDLENBQUNDLE9BQUYsQ0FBVSxJQUFWLEVBQWdCLE9BQWhCLENBQUo7QUFDQUQsRUFBQUEsQ0FBQyxHQUFHQSxDQUFDLENBQUNDLE9BQUYsQ0FBVSxJQUFWLEVBQWdCLE1BQWhCLENBQUo7QUFDQUQsRUFBQUEsQ0FBQyxHQUFHQSxDQUFDLENBQUNDLE9BQUYsQ0FBVSxJQUFWLEVBQWdCLE1BQWhCLENBQUo7QUFDQUQsRUFBQUEsQ0FBQyxHQUFHQSxDQUFDLENBQUNDLE9BQUYsQ0FBVSxJQUFWLEVBQWdCLFFBQWhCLENBQUo7QUFFQSxTQUFPRCxDQUFQO0FBQ0QiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZnVuY3Rpb24gY29udmVydENoYW5nZXNUb1hNTChjaGFuZ2VzKSB7XG4gIGxldCByZXQgPSBbXTtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBjaGFuZ2VzLmxlbmd0aDsgaSsrKSB7XG4gICAgbGV0IGNoYW5nZSA9IGNoYW5nZXNbaV07XG4gICAgaWYgKGNoYW5nZS5hZGRlZCkge1xuICAgICAgcmV0LnB1c2goJzxpbnM+Jyk7XG4gICAgfSBlbHNlIGlmIChjaGFuZ2UucmVtb3ZlZCkge1xuICAgICAgcmV0LnB1c2goJzxkZWw+Jyk7XG4gICAgfVxuXG4gICAgcmV0LnB1c2goZXNjYXBlSFRNTChjaGFuZ2UudmFsdWUpKTtcblxuICAgIGlmIChjaGFuZ2UuYWRkZWQpIHtcbiAgICAgIHJldC5wdXNoKCc8L2lucz4nKTtcbiAgICB9IGVsc2UgaWYgKGNoYW5nZS5yZW1vdmVkKSB7XG4gICAgICByZXQucHVzaCgnPC9kZWw+Jyk7XG4gICAgfVxuICB9XG4gIHJldHVybiByZXQuam9pbignJyk7XG59XG5cbmZ1bmN0aW9uIGVzY2FwZUhUTUwocykge1xuICBsZXQgbiA9IHM7XG4gIG4gPSBuLnJlcGxhY2UoLyYvZywgJyZhbXA7Jyk7XG4gIG4gPSBuLnJlcGxhY2UoLzwvZywgJyZsdDsnKTtcbiAgbiA9IG4ucmVwbGFjZSgvPi9nLCAnJmd0OycpO1xuICBuID0gbi5yZXBsYWNlKC9cIi9nLCAnJnF1b3Q7Jyk7XG5cbiAgcmV0dXJuIG47XG59XG4iXX0=\n","/*istanbul ignore start*/\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.diffArrays = diffArrays;\nexports.arrayDiff = void 0;\n\n/*istanbul ignore end*/\nvar\n/*istanbul ignore start*/\n_base = _interopRequireDefault(require(\"./base\"))\n/*istanbul ignore end*/\n;\n\n/*istanbul ignore start*/ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\n/*istanbul ignore end*/\nvar arrayDiff = new\n/*istanbul ignore start*/\n_base\n/*istanbul ignore end*/\n[\n/*istanbul ignore start*/\n\"default\"\n/*istanbul ignore end*/\n]();\n\n/*istanbul ignore start*/\nexports.arrayDiff = arrayDiff;\n\n/*istanbul ignore end*/\narrayDiff.tokenize = function (value) {\n return value.slice();\n};\n\narrayDiff.join = arrayDiff.removeEmpty = function (value) {\n return value;\n};\n\nfunction diffArrays(oldArr, newArr, callback) {\n return arrayDiff.diff(oldArr, newArr, callback);\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kaWZmL2FycmF5LmpzIl0sIm5hbWVzIjpbImFycmF5RGlmZiIsIkRpZmYiLCJ0b2tlbml6ZSIsInZhbHVlIiwic2xpY2UiLCJqb2luIiwicmVtb3ZlRW1wdHkiLCJkaWZmQXJyYXlzIiwib2xkQXJyIiwibmV3QXJyIiwiY2FsbGJhY2siLCJkaWZmIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTs7Ozs7QUFFTyxJQUFNQSxTQUFTLEdBQUc7QUFBSUM7QUFBQUE7QUFBQUE7QUFBQUE7QUFBQUE7QUFBQUE7QUFBQUE7QUFBQUEsQ0FBSixFQUFsQjs7Ozs7O0FBQ1BELFNBQVMsQ0FBQ0UsUUFBVixHQUFxQixVQUFTQyxLQUFULEVBQWdCO0FBQ25DLFNBQU9BLEtBQUssQ0FBQ0MsS0FBTixFQUFQO0FBQ0QsQ0FGRDs7QUFHQUosU0FBUyxDQUFDSyxJQUFWLEdBQWlCTCxTQUFTLENBQUNNLFdBQVYsR0FBd0IsVUFBU0gsS0FBVCxFQUFnQjtBQUN2RCxTQUFPQSxLQUFQO0FBQ0QsQ0FGRDs7QUFJTyxTQUFTSSxVQUFULENBQW9CQyxNQUFwQixFQUE0QkMsTUFBNUIsRUFBb0NDLFFBQXBDLEVBQThDO0FBQUUsU0FBT1YsU0FBUyxDQUFDVyxJQUFWLENBQWVILE1BQWYsRUFBdUJDLE1BQXZCLEVBQStCQyxRQUEvQixDQUFQO0FBQWtEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IERpZmYgZnJvbSAnLi9iYXNlJztcblxuZXhwb3J0IGNvbnN0IGFycmF5RGlmZiA9IG5ldyBEaWZmKCk7XG5hcnJheURpZmYudG9rZW5pemUgPSBmdW5jdGlvbih2YWx1ZSkge1xuICByZXR1cm4gdmFsdWUuc2xpY2UoKTtcbn07XG5hcnJheURpZmYuam9pbiA9IGFycmF5RGlmZi5yZW1vdmVFbXB0eSA9IGZ1bmN0aW9uKHZhbHVlKSB7XG4gIHJldHVybiB2YWx1ZTtcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBkaWZmQXJyYXlzKG9sZEFyciwgbmV3QXJyLCBjYWxsYmFjaykgeyByZXR1cm4gYXJyYXlEaWZmLmRpZmYob2xkQXJyLCBuZXdBcnIsIGNhbGxiYWNrKTsgfVxuIl19\n","/*istanbul ignore start*/\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = Diff;\n\n/*istanbul ignore end*/\nfunction Diff() {}\n\nDiff.prototype = {\n /*istanbul ignore start*/\n\n /*istanbul ignore end*/\n diff: function diff(oldString, newString) {\n /*istanbul ignore start*/\n var _options$timeout;\n\n var\n /*istanbul ignore end*/\n options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var callback = options.callback;\n\n if (typeof options === 'function') {\n callback = options;\n options = {};\n }\n\n this.options = options;\n var self = this;\n\n function done(value) {\n if (callback) {\n setTimeout(function () {\n callback(undefined, value);\n }, 0);\n return true;\n } else {\n return value;\n }\n } // Allow subclasses to massage the input prior to running\n\n\n oldString = this.castInput(oldString);\n newString = this.castInput(newString);\n oldString = this.removeEmpty(this.tokenize(oldString));\n newString = this.removeEmpty(this.tokenize(newString));\n var newLen = newString.length,\n oldLen = oldString.length;\n var editLength = 1;\n var maxEditLength = newLen + oldLen;\n\n if (options.maxEditLength) {\n maxEditLength = Math.min(maxEditLength, options.maxEditLength);\n }\n\n var maxExecutionTime =\n /*istanbul ignore start*/\n (_options$timeout =\n /*istanbul ignore end*/\n options.timeout) !== null && _options$timeout !== void 0 ? _options$timeout : Infinity;\n var abortAfterTimestamp = Date.now() + maxExecutionTime;\n var bestPath = [{\n oldPos: -1,\n lastComponent: undefined\n }]; // Seed editLength = 0, i.e. the content starts with the same values\n\n var newPos = this.extractCommon(bestPath[0], newString, oldString, 0);\n\n if (bestPath[0].oldPos + 1 >= oldLen && newPos + 1 >= newLen) {\n // Identity per the equality and tokenizer\n return done([{\n value: this.join(newString),\n count: newString.length\n }]);\n } // Once we hit the right edge of the edit graph on some diagonal k, we can\n // definitely reach the end of the edit graph in no more than k edits, so\n // there's no point in considering any moves to diagonal k+1 any more (from\n // which we're guaranteed to need at least k+1 more edits).\n // Similarly, once we've reached the bottom of the edit graph, there's no\n // point considering moves to lower diagonals.\n // We record this fact by setting minDiagonalToConsider and\n // maxDiagonalToConsider to some finite value once we've hit the edge of\n // the edit graph.\n // This optimization is not faithful to the original algorithm presented in\n // Myers's paper, which instead pointlessly extends D-paths off the end of\n // the edit graph - see page 7 of Myers's paper which notes this point\n // explicitly and illustrates it with a diagram. This has major performance\n // implications for some common scenarios. For instance, to compute a diff\n // where the new text simply appends d characters on the end of the\n // original text of length n, the true Myers algorithm will take O(n+d^2)\n // time while this optimization needs only O(n+d) time.\n\n\n var minDiagonalToConsider = -Infinity,\n maxDiagonalToConsider = Infinity; // Main worker method. checks all permutations of a given edit length for acceptance.\n\n function execEditLength() {\n for (var diagonalPath = Math.max(minDiagonalToConsider, -editLength); diagonalPath <= Math.min(maxDiagonalToConsider, editLength); diagonalPath += 2) {\n var basePath =\n /*istanbul ignore start*/\n void 0\n /*istanbul ignore end*/\n ;\n var removePath = bestPath[diagonalPath - 1],\n addPath = bestPath[diagonalPath + 1];\n\n if (removePath) {\n // No one else is going to attempt to use this value, clear it\n bestPath[diagonalPath - 1] = undefined;\n }\n\n var canAdd = false;\n\n if (addPath) {\n // what newPos will be after we do an insertion:\n var addPathNewPos = addPath.oldPos - diagonalPath;\n canAdd = addPath && 0 <= addPathNewPos && addPathNewPos < newLen;\n }\n\n var canRemove = removePath && removePath.oldPos + 1 < oldLen;\n\n if (!canAdd && !canRemove) {\n // If this path is a terminal then prune\n bestPath[diagonalPath] = undefined;\n continue;\n } // Select the diagonal that we want to branch from. We select the prior\n // path whose position in the old string is the farthest from the origin\n // and does not pass the bounds of the diff graph\n // TODO: Remove the `+ 1` here to make behavior match Myers algorithm\n // and prefer to order removals before insertions.\n\n\n if (!canRemove || canAdd && removePath.oldPos + 1 < addPath.oldPos) {\n basePath = self.addToPath(addPath, true, undefined, 0);\n } else {\n basePath = self.addToPath(removePath, undefined, true, 1);\n }\n\n newPos = self.extractCommon(basePath, newString, oldString, diagonalPath);\n\n if (basePath.oldPos + 1 >= oldLen && newPos + 1 >= newLen) {\n // If we have hit the end of both strings, then we are done\n return done(buildValues(self, basePath.lastComponent, newString, oldString, self.useLongestToken));\n } else {\n bestPath[diagonalPath] = basePath;\n\n if (basePath.oldPos + 1 >= oldLen) {\n maxDiagonalToConsider = Math.min(maxDiagonalToConsider, diagonalPath - 1);\n }\n\n if (newPos + 1 >= newLen) {\n minDiagonalToConsider = Math.max(minDiagonalToConsider, diagonalPath + 1);\n }\n }\n }\n\n editLength++;\n } // Performs the length of edit iteration. Is a bit fugly as this has to support the\n // sync and async mode which is never fun. Loops over execEditLength until a value\n // is produced, or until the edit length exceeds options.maxEditLength (if given),\n // in which case it will return undefined.\n\n\n if (callback) {\n (function exec() {\n setTimeout(function () {\n if (editLength > maxEditLength || Date.now() > abortAfterTimestamp) {\n return callback();\n }\n\n if (!execEditLength()) {\n exec();\n }\n }, 0);\n })();\n } else {\n while (editLength <= maxEditLength && Date.now() <= abortAfterTimestamp) {\n var ret = execEditLength();\n\n if (ret) {\n return ret;\n }\n }\n }\n },\n\n /*istanbul ignore start*/\n\n /*istanbul ignore end*/\n addToPath: function addToPath(path, added, removed, oldPosInc) {\n var last = path.lastComponent;\n\n if (last && last.added === added && last.removed === removed) {\n return {\n oldPos: path.oldPos + oldPosInc,\n lastComponent: {\n count: last.count + 1,\n added: added,\n removed: removed,\n previousComponent: last.previousComponent\n }\n };\n } else {\n return {\n oldPos: path.oldPos + oldPosInc,\n lastComponent: {\n count: 1,\n added: added,\n removed: removed,\n previousComponent: last\n }\n };\n }\n },\n\n /*istanbul ignore start*/\n\n /*istanbul ignore end*/\n extractCommon: function extractCommon(basePath, newString, oldString, diagonalPath) {\n var newLen = newString.length,\n oldLen = oldString.length,\n oldPos = basePath.oldPos,\n newPos = oldPos - diagonalPath,\n commonCount = 0;\n\n while (newPos + 1 < newLen && oldPos + 1 < oldLen && this.equals(newString[newPos + 1], oldString[oldPos + 1])) {\n newPos++;\n oldPos++;\n commonCount++;\n }\n\n if (commonCount) {\n basePath.lastComponent = {\n count: commonCount,\n previousComponent: basePath.lastComponent\n };\n }\n\n basePath.oldPos = oldPos;\n return newPos;\n },\n\n /*istanbul ignore start*/\n\n /*istanbul ignore end*/\n equals: function equals(left, right) {\n if (this.options.comparator) {\n return this.options.comparator(left, right);\n } else {\n return left === right || this.options.ignoreCase && left.toLowerCase() === right.toLowerCase();\n }\n },\n\n /*istanbul ignore start*/\n\n /*istanbul ignore end*/\n removeEmpty: function removeEmpty(array) {\n var ret = [];\n\n for (var i = 0; i < array.length; i++) {\n if (array[i]) {\n ret.push(array[i]);\n }\n }\n\n return ret;\n },\n\n /*istanbul ignore start*/\n\n /*istanbul ignore end*/\n castInput: function castInput(value) {\n return value;\n },\n\n /*istanbul ignore start*/\n\n /*istanbul ignore end*/\n tokenize: function tokenize(value) {\n return value.split('');\n },\n\n /*istanbul ignore start*/\n\n /*istanbul ignore end*/\n join: function join(chars) {\n return chars.join('');\n }\n};\n\nfunction buildValues(diff, lastComponent, newString, oldString, useLongestToken) {\n // First we convert our linked list of components in reverse order to an\n // array in the right order:\n var components = [];\n var nextComponent;\n\n while (lastComponent) {\n components.push(lastComponent);\n nextComponent = lastComponent.previousComponent;\n delete lastComponent.previousComponent;\n lastComponent = nextComponent;\n }\n\n components.reverse();\n var componentPos = 0,\n componentLen = components.length,\n newPos = 0,\n oldPos = 0;\n\n for (; componentPos < componentLen; componentPos++) {\n var component = components[componentPos];\n\n if (!component.removed) {\n if (!component.added && useLongestToken) {\n var value = newString.slice(newPos, newPos + component.count);\n value = value.map(function (value, i) {\n var oldValue = oldString[oldPos + i];\n return oldValue.length > value.length ? oldValue : value;\n });\n component.value = diff.join(value);\n } else {\n component.value = diff.join(newString.slice(newPos, newPos + component.count));\n }\n\n newPos += component.count; // Common case\n\n if (!component.added) {\n oldPos += component.count;\n }\n } else {\n component.value = diff.join(oldString.slice(oldPos, oldPos + component.count));\n oldPos += component.count; // Reverse add and remove so removes are output first to match common convention\n // The diffing algorithm is tied to add then remove output and this is the simplest\n // route to get the desired output with minimal overhead.\n\n if (componentPos && components[componentPos - 1].added) {\n var tmp = components[componentPos - 1];\n components[componentPos - 1] = components[componentPos];\n components[componentPos] = tmp;\n }\n }\n } // Special case handle for when one terminal is ignored (i.e. whitespace).\n // For this case we merge the terminal into the prior string and drop the change.\n // This is only available for string mode.\n\n\n var finalComponent = components[componentLen - 1];\n\n if (componentLen > 1 && typeof finalComponent.value === 'string' && (finalComponent.added || finalComponent.removed) && diff.equals('', finalComponent.value)) {\n components[componentLen - 2].value += finalComponent.value;\n components.pop();\n }\n\n return components;\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kaWZmL2Jhc2UuanMiXSwibmFtZXMiOlsiRGlmZiIsInByb3RvdHlwZSIsImRpZmYiLCJvbGRTdHJpbmciLCJuZXdTdHJpbmciLCJvcHRpb25zIiwiY2FsbGJhY2siLCJzZWxmIiwiZG9uZSIsInZhbHVlIiwic2V0VGltZW91dCIsInVuZGVmaW5lZCIsImNhc3RJbnB1dCIsInJlbW92ZUVtcHR5IiwidG9rZW5pemUiLCJuZXdMZW4iLCJsZW5ndGgiLCJvbGRMZW4iLCJlZGl0TGVuZ3RoIiwibWF4RWRpdExlbmd0aCIsIk1hdGgiLCJtaW4iLCJtYXhFeGVjdXRpb25UaW1lIiwidGltZW91dCIsIkluZmluaXR5IiwiYWJvcnRBZnRlclRpbWVzdGFtcCIsIkRhdGUiLCJub3ciLCJiZXN0UGF0aCIsIm9sZFBvcyIsImxhc3RDb21wb25lbnQiLCJuZXdQb3MiLCJleHRyYWN0Q29tbW9uIiwiam9pbiIsImNvdW50IiwibWluRGlhZ29uYWxUb0NvbnNpZGVyIiwibWF4RGlhZ29uYWxUb0NvbnNpZGVyIiwiZXhlY0VkaXRMZW5ndGgiLCJkaWFnb25hbFBhdGgiLCJtYXgiLCJiYXNlUGF0aCIsInJlbW92ZVBhdGgiLCJhZGRQYXRoIiwiY2FuQWRkIiwiYWRkUGF0aE5ld1BvcyIsImNhblJlbW92ZSIsImFkZFRvUGF0aCIsImJ1aWxkVmFsdWVzIiwidXNlTG9uZ2VzdFRva2VuIiwiZXhlYyIsInJldCIsInBhdGgiLCJhZGRlZCIsInJlbW92ZWQiLCJvbGRQb3NJbmMiLCJsYXN0IiwicHJldmlvdXNDb21wb25lbnQiLCJjb21tb25Db3VudCIsImVxdWFscyIsImxlZnQiLCJyaWdodCIsImNvbXBhcmF0b3IiLCJpZ25vcmVDYXNlIiwidG9Mb3dlckNhc2UiLCJhcnJheSIsImkiLCJwdXNoIiwic3BsaXQiLCJjaGFycyIsImNvbXBvbmVudHMiLCJuZXh0Q29tcG9uZW50IiwicmV2ZXJzZSIsImNvbXBvbmVudFBvcyIsImNvbXBvbmVudExlbiIsImNvbXBv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IERpZmYoKSB7fVxuXG5EaWZmLnByb3RvdHlwZSA9IHtcbiAgZGlmZihvbGRTdHJpbmcsIG5ld1N0cmluZywgb3B0aW9ucyA9IHt9KSB7XG4gICAgbGV0IGNhbGxiYWNrID0gb3B0aW9ucy5jYWxsYmFjaztcbiAgICBpZiAodHlwZW9mIG9wdGlvbnMgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIGNhbGxiYWNrID0gb3B0aW9ucztcbiAgICAgIG9wdGlvbnMgPSB7fTtcbiAgICB9XG4gICAgdGhpcy5vcHRpb25zID0gb3B0aW9ucztcblxuICAgIGxldCBzZWxmID0gdGhpcztcblxuICAgIGZ1bmN0aW9uIGRvbmUodmFsdWUpIHtcbiAgICAgIGlmIChjYWxsYmFjaykge1xuICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBjYWxsYmFjayh1bmRlZmluZWQsIHZhbHVlKTsgfSwgMCk7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIEFsbG93IHN1YmNsYXNzZXMgdG8gbWFzc2FnZSB0aGUgaW5wdXQgcHJpb3IgdG8gcnVubmluZ1xuICAgIG9sZFN0cmluZyA9IHRoaXMuY2FzdElucHV0KG9sZFN0cmluZyk7XG4gICAgbmV3U3RyaW5nID0gdGhpcy5jYXN0SW5wdXQobmV3U3RyaW5nKTtcblxuICAgIG9sZFN0cmluZyA9IHRoaXMucmVtb3ZlRW1wdHkodGhpcy50b2tlbml6ZShvbGRTdHJpbmcpKTtcbiAgICBuZXdTdHJpbmcgPSB0aGlzLnJlbW92ZUVtcHR5KHRoaXMudG9rZW5pemUobmV3U3RyaW5nKSk7XG5cbiAgICBsZXQgbmV3TGVuID0gbmV3U3RyaW5nLmxlbmd0aCwgb2xkTGVuID0gb2xkU3RyaW5nLmxlbmd0aDtcbiAgICBsZXQgZWRpdExlbmd0aCA9IDE7XG4gICAgbGV0IG1heEVkaXRMZW5ndGggPSBuZXdMZW4gKyBvbGRMZW47XG4gICAgaWYob3B0aW9ucy5tYXhFZGl0TGVuZ3RoKSB7XG4gICAgICBtYXhFZGl0TGVuZ3RoID0gTWF0aC5taW4obWF4RWRpdExlbmd0aCwgb3B0aW9ucy5tYXhFZGl0TGVuZ3RoKTtcbiAgICB9XG4gICAgY29uc3QgbWF4RXhlY3V0aW9uVGltZSA9IG9wdGlvbnMudGltZW91dCA/PyBJbmZpbml0eTtcbiAgICBjb25zdCBhYm9ydEFmdGVyVGltZXN0YW1wID0gRGF0ZS5ub3coKSArIG1heEV4ZWN1dGlvblRpbWU7XG5cbiAgICBsZXQgYmVzdFBhdGggPSBbeyBvbGRQb3M6IC0xLCBsYXN0Q29tcG9uZW50OiB1bmRlZmluZWQgfV07XG5cbiAgICAvLyBTZWVkIGVkaXRMZW5ndGggPSAwLCBpLmUuIHRoZSBjb250ZW50IHN0YXJ0cyB3aXRoIHRoZSBzYW1lIHZhbHVlc1xuICAgIGxldCBuZXdQb3MgPSB0aGlzLmV4dHJhY3RDb21tb24oYmVzdFBhdGhbMF0sIG5ld1N0cmluZywgb2xkU3RyaW5nLCAwKTtcbiAgICBpZiAoYmVzdFBhdGhbMF0ub2xkUG9zICsgMSA+PSBvbGRMZW4gJiYgbmV3UG9zICsgMSA+PSBuZXdMZW4pIHtcbiAgICAgIC8vIElkZW50aXR5IHBlciB0aGUgZXF1YWxpdHkgYW5kIHRva2VuaXplclxuICAgICAgcmV0dXJuIGRvbmUoW3t2YWx1ZTogdGhpcy5qb2luKG5ld1N0cmluZyksIGNvdW50OiBuZXdTdHJpbmcubGVuZ3RofV0pO1xuICAgIH1cblxuICAgIC8vIE9uY2Ugd2UgaGl0IHRoZSByaWdodCBlZGdlIG9mIHRoZSBlZGl0IGdyYXBoIG9uIHNvbWUgZGlhZ29uYWwgaywgd2UgY2FuXG4gICAgLy8gZGVmaW5pdGVseSByZWFjaCB0aGUgZW5kIG9mIHRoZSBlZGl0IGdyYXBoIGluIG5vIG1vcmUgdGhhbiBrIGVkaXRzLCBzb1xuICAgIC8vIHRoZXJlJ3Mgbm8gcG9pbnQgaW4gY29uc2lkZXJpbmcgYW55IG1vdmVzIHRvIGRpYWdvbmFsIGsrMSBhbnkgbW9yZSAoZnJvbVxuICAgIC8vIHdoaWNoIHdlJ3JlIGd1YXJhbnRlZWQgdG8gbmVlZCBhdCBsZWFzdCBrKzEgbW9yZSBlZGl0cykuXG4gICAgLy8gU2ltaWxhcmx5LCBvbmNlIHdlJ3ZlIHJlYWNoZWQgdGhlIGJvdHRvbSBvZiB0aGUgZWRpdCBncmFwaCwgdGhlcmUncyBub1xuICAgIC8vIHBvaW50IGNvbnNpZGVyaW5nIG1vdmVzIHRvIGxvd2VyIGRpYWdvbmFscy5cbiAgICAvLyBXZSByZWNvcmQgdGhpcyBmYWN0IGJ5IHNldHRpbmcgbWluRGlhZ29uYWxUb0NvbnNpZGVyIGFuZFxuICAgIC8vIG1heERpYWdvbmFsVG9Db25zaWRlciB0byBzb21lIGZpbml0ZSB2YWx1ZSBvbmNlIHdlJ3ZlIGhpdCB0aGUgZWRnZSBvZlxuICAgIC8vIHRoZSBlZGl0IGdyYXBoLlxuICAgIC8vIFRoaXMgb3B0aW1pemF0aW9uIGlzIG5vdCBmYWl0aGZ1bCB0byB0aGUgb3JpZ2luYWwgYWxnb3JpdGhtIHByZXNlbnRlZCBpblxuICAgIC8vIE15ZXJzJ3MgcGFwZXIsIHdoaWNoIGluc3RlYWQgcG9pbnRsZXNzbHkgZXh0ZW5kcyBELXBhdGhzIG9mZiB0aGUgZW5kIG9mXG4gICAgLy8gdGhlIGVkaXQgZ3JhcGggLSBzZWUgcGFnZSA3IG9mIE15ZXJzJ3MgcGFwZXIgd2hpY2ggbm90ZXMgdGhpcyBwb2ludFxuICAgIC8vIGV4cGxpY2l0bHkgYW5kIGlsbHVzdHJhdGVzIGl0IHdpdGggYSBkaWFncmFtLiBUaGlzIGhhcyBtYWpvciBwZXJmb3JtYW5jZVxuICAgIC8vIGltcGxpY2F0aW9ucyBmb3Igc29tZSBjb21tb24gc2NlbmFyaW9zLiBGb3IgaW5zdGFuY2UsIHRvIGNvbXB1dGUgYSBkaWZmXG4gICAgLy8gd2hlcmUgdGhlIG5ldyB0ZXh0IHNpbXBseSBhcHBlbmRzIGQgY2hhcmFjdGVycyBvbiB0aGUgZW5kIG9mIHRoZVxuICAgIC8vIG9yaWdpbmFsIHRleHQgb2YgbGVuZ3RoIG4sIHRoZSB0cnVlIE15ZXJzIGFsZ29yaXRobSB3aWxsIHRha2UgTyhuK2ReMilcbiAgICAvLyB0aW1lIHdoaWxlIHRoaXMgb3B0aW1pemF0aW9uIG5lZWRzIG9ubHkgTyhuK2QpIHRpbWUuXG4gICAgbGV0IG1pbkRpYWdvbmFsVG9Db25zaWRlciA9IC1JbmZpbml0eSwgbWF4RGlhZ29uYWxUb0NvbnNpZGVyID0gSW5maW5pdHk7XG5cbiAgICAvLyBNYWluIHdvcmtlciBtZXRob2QuIGNoZWNrcyBhbGwgcGVybXV0YXRpb25zIG9mIGEgZ2l2ZW4gZWRpdCBsZW5ndGggZm9yIGFjY2VwdGFuY2UuXG4gICAgZnVuY3Rpb24gZXhlY0VkaXRMZW5ndGgoKSB7XG4gICAgICBmb3IgKFxuICAgICAgICBsZXQgZGlhZ29uYWxQYXRoID0gTWF0aC5tYXgobWluRGlhZ29uYWxUb0NvbnNpZGVyLCAtZWRpdExlbmd0aCk7XG4gICAgICAgIGRpYWdvbmFsUGF0aCA8PSBNYXRoLm1pbihtYXhEaWFnb25hbFRvQ29uc2lkZXIsIGVkaXRMZW5ndGgpO1xuICAgICAgICBkaWFnb25hbFBhdGggKz0gMlxuICAgICAgKSB7XG4gICAgICAgIGxldCBiYXNlUGF0aDtcbiAgICAgICAgbGV0IHJlbW92ZVBhdGggPSBiZXN0UGF0aFtkaWFnb25hbFBhdGggLSAxXSxcbiAgICAgICAgICAgIGFkZFBhdGggPSBiZXN0UGF0aFtkaWFnb25hbFBhdGggKyAxXTtcbiAgICAgICAgaWYgKHJlbW92ZVBhdGgpIHtcbiAgICAgICAgICAvLyBObyBvbmUgZWxzZSBpcyBnb2luZyB0byBhdHRlbXB0IHRvIHVzZSB0aGlzIHZhbHVlLCBjbGVhciBpdFxuICAgICAgICAgIGJlc3RQYXRoW2RpYWdvbmFsUGF0aCAtIDFdID0gdW5kZWZpbmVkO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IGNhbkFkZCA9IGZhbHNlO1xuICAgICAgICBpZiAoYWRkUGF0aCkge1xuICAgICAgICAgIC8vIHdoYXQgbmV3UG9zIHdpbGwgYmUgYWZ0ZXIgd2UgZG8gYW4gaW5zZXJ0aW9uOlxuICAgICAgICAgIGNvbnN0IGFkZFBhdGhOZXdQb3MgPSBhZGRQYXRoLm9sZFBvcyAtIGRpYWdvbmFsUGF0aDtcbiAgICAgICAgICBjYW5BZGQgPSBhZGRQYXRoICYmIDAgPD0gYWRkUGF0aE5ld1BvcyAmJiBhZGRQYXRoTmV3UG9zIDwgbmV3TGVuO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IGNhblJlbW92ZSA9IHJlbW92ZVBhdGggJiYgcmVtb3ZlUGF0aC5vbGRQb3MgKyAxIDwgb2xkTGVuO1xuICAgICAgICBpZiAoIWNhbkFkZCAmJiAhY2FuUmVtb3ZlKSB7XG4gICAgICAgICAgLy8gSWYgdGhpcyBwYXRoIGlzIGEgdGVybWluYWwgdGhlbiBwcnVuZVxuICAgICAgICAgIGJlc3RQYXRoW2RpYWdvbmFsUGF0aF0gPSB1bmRlZmluZWQ7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBTZWxlY3QgdGhlIGRpYWdvbmFsIHRoYXQgd2Ugd2FudCB0byBicmFuY2ggZnJvbS4gV2Ugc2VsZWN0IHRoZSBwcmlvclxuICAgICAgICAvLyBwYXRoIHdob3NlIHBvc2l0aW9uIGluIHRoZSBvbGQgc3RyaW5nIGlzIHRoZSBmYXJ0aGVzdCBmcm9tIHRoZSBvcmlnaW5cbiAgICAgICAgLy8gYW5kIGRvZXMgbm90IHBhc3MgdGhlIGJvdW5kcyBvZiB0aGUgZGlmZiBncmFwaFxuICAgICAgICAvLyBUT0RPOiBSZW1vdmUgdGhlIGArIDFgIGhlcmUgdG8gbWFrZSBiZWhhdmlvciBtYXRjaCBNeWVycyBhbGdvcml0aG1cbiAgICAgICAgLy8gICAgICAgYW5kIHByZWZlciB0byBvcmRlciByZW1vdmFscyBiZWZvcmUgaW5zZXJ0aW9ucy5cbiAgICAgICAgaWYgKCFjYW5SZW1vdmUgfHwgKGNhbkFkZCAmJiByZW1vdmVQYXRoLm9sZFBvcyArIDEgPCBhZGRQYXRoLm9sZFBvcykpIHtcbiAgICAgICAgICBiYXNlUGF0aCA9IHNlbGYuYWRkVG9QYXRoKGFkZFBhdGgsIHRydWUsIHVuZGVmaW5lZCwgMCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgYmFzZVBhdGggPSBzZWxmLmFkZFRvUGF0aChyZW1vdmVQYXRoLCB1bmRlZmluZWQsIHRydWUsIDEpO1xuICAgICAgICB9XG5cbiAgICAgICAgbmV3UG9zID0gc2VsZi5leHRyYWN0Q29tbW9uKGJhc2VQYXRoLCBuZXdTdHJpbmcsIG9sZFN0cmluZywgZGlhZ29uYWxQYXRoKTtcblxuICAgICAgICBpZiAoYmFzZVBhdGgub2xkUG9zICsgMSA+PSBvbGRMZW4gJiYgbmV3UG9zICsgMSA+PSBuZXdMZW4pIHtcbiAgICAgICAgICAvLyBJZiB3ZSBoYXZlIGhpdCB0aGUgZW5kIG9mIGJvdGggc3RyaW5ncywgdGhlbiB3ZSBhcmUgZG9uZVxuICAgICAgICAgIHJldHVybiBkb25lKGJ1aWxkVmFsdWVzKHNlbGYsIGJhc2VQYXRoLmxhc3RDb21wb25lbnQsIG5ld1N0cmluZywgb2xkU3RyaW5nLCBzZWxmLnVzZUxvbmdlc3RUb2tlbikpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGJlc3RQYXRoW2RpYWdvbmFsUGF0aF0gPSBiYXNlUGF0aDtcbiAgICAgICAgICBpZiAoYmFzZVBhdGgub2xkUG9zICsgMSA+PSBvbGRMZW4pIHtcbiAgICAgICAgICAgIG1heERpYWdvbmFsVG9Db25zaWRlciA9IE1hdGgubWluKG1heERpYWdvbmFsVG9Db25zaWRlciwgZGlhZ29uYWxQYXRoIC0gMSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChuZXdQb3MgKyAxID49IG5ld0xlbikge1xuICAgICAgICAgICAgbWluRGlhZ29uYWxUb0NvbnNpZGVyID0gTWF0aC5tYXgobWluRGlhZ29uYWxUb0NvbnNpZGVyLCBkaWFnb25hbFBhdGggKyAxKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgZWRpdExlbmd0aCsrO1xuICAgIH1cblxuICAgIC8vIFBlcmZvcm1zIHRoZSBsZW5ndGggb2YgZWRpdCBpdGVyYXRpb24uIElzIGEgYml0IGZ1Z2x5IGFzIHRoaXMgaGFzIHRvIHN1cHBvcnQgdGhlXG4gICAgLy8gc3luYyBhbmQgYXN5bmMgbW9kZSB3aGljaCBpcyBuZXZlciBmdW4uIExvb3BzIG92ZXIgZXhlY0VkaXRMZW5ndGggdW50aWwgYSB2YWx1ZVxuICAgIC8vIGlzIHByb2R1Y2VkLCBvciB1bnRpbCB0aGUgZWRpdCBsZW5ndGggZXhjZWVkcyBvcHRpb25zLm1heEVkaXRMZW5ndGggKGlmIGdpdmVuKSxcbiAgICAvLyBpbiB3aGljaCBjYXNlIGl0IHdpbGwgcmV0dXJuIHVuZGVmaW5lZC5cbiAgICBpZiAoY2FsbGJhY2spIHtcbiAgICAgIChmdW5jdGlvbiBleGVjKCkge1xuICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkge1xuICAgICAgICAgIGlmIChlZGl0TGVuZ3RoID4gbWF4RWRpdExlbmd0aCB8fCBEYXRlLm5vdygpID4gYWJvcnRBZnRlclRpbWVzdGFtcCkge1xuICAgICAgICAgICAgcmV0dXJuIGNhbGxiYWNrKCk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKCFleGVjRWRpdExlbmd0aCgpKSB7XG4gICAgICAgICAgICBleGVjKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9LCAwKTtcbiAgICAgIH0oKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHdoaWxlIChlZGl0TGVuZ3RoIDw9IG1heEVkaXRMZW5ndGggJiYgRGF0ZS5ub3coKSA8PSBhYm9ydEFmdGVyVGltZXN0YW1wKSB7XG4gICAgICAgIGxldCByZXQgPSBleGVjRWRpdExlbmd0aCgpO1xuICAgICAgICBpZiAocmV0KSB7XG4gICAgICAgICAgcmV0dXJuIHJldDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfSxcblxuICBhZGRUb1BhdGgocGF0aCwgYWRkZWQsIHJlbW92ZWQsIG9sZFBvc0luYykge1xuICAgIGxldCBsYXN0ID0gcGF0aC5sYXN0Q29tcG9uZW50O1xuICAgIGlmIChsYXN0ICYmIGxhc3QuYWRkZWQgPT09IGFkZGVkICYmIGxhc3QucmVtb3ZlZCA9PT0gcmVtb3ZlZCkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgb2xkUG9zOiBwYXRoLm9sZFBvcyArIG9sZFBvc0luYyxcbiAgICAgICAgbGFzdENvbXBvbmVudDoge2NvdW50OiBsYXN0LmNvdW50ICsgMSwgYWRkZWQ6IGFkZGVkLCByZW1vdmVkOiByZW1vdmVkLCBwcmV2aW91c0NvbXBvbmVudDogbGFzdC5wcmV2aW91c0NvbXBvbmVudCB9XG4gICAgICB9O1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBvbGRQb3M6IHBhdGgub2xkUG9zICsgb2xkUG9zSW5jLFxuICAgICAgICBsYXN0Q29tcG9uZW50OiB7Y291bnQ6IDEsIGFkZGVkOiBhZGRlZCwgcmVtb3ZlZDogcmVtb3ZlZCwgcHJldmlvdXNDb21wb25lbnQ6IGxhc3QgfVxuICAgICAgfTtcbiAgICB9XG4gIH0sXG4gIGV4dHJhY3RDb21tb24oYmFzZVBhdGgsIG5ld1N0cmluZywgb2xkU3RyaW5nLCBkaWFnb25hbFBhdGgpIHtcbiAgICBsZXQgbmV3TGVuID0gbmV3U3RyaW5nLmxlbmd0aCxcbiAgICAgICAgb2xkTGVuID0gb2xkU3RyaW5nLmxlbmd0aCxcbiAgICAgICAgb2xkUG9zID0gYmFzZVBhdGgub2xkUG9zLFxuICAgICAgICBuZXdQb3MgPSBvbGRQb3MgLSBkaWFnb25hbFBhdGgsXG5cbiAgICAgICAgY29tbW9uQ291bnQgPSAwO1xuICAgIHdoaWxlIChuZXdQb3MgKyAxIDwgbmV3TGVuICYmIG9sZFBvcyArIDEgPCBvbGRMZW4gJiYgdGhpcy5lcXVhbHMobmV3U3RyaW5nW25ld1BvcyArIDFdLCBvbGRTdHJpbmdbb2xkUG9zICsgMV0pKSB7XG4gICAgICBuZXdQb3MrKztcbiAgICAgIG9sZFBvcysrO1xuICAgICAgY29tbW9uQ291bnQrKztcbiAgICB9XG5cbiAgICBpZiAoY29tbW9uQ291bnQpIHtcbiAgICAgIGJhc2VQYXRoLmxhc3RDb21wb25lbnQgPSB7Y291bnQ6IGNvbW1vbkNvdW50LCBwcmV2aW91c0NvbXBvbmVudDogYmFzZVBhdGgubGFzdENvbXBvbmVudH07XG4gICAgfVxuXG4gICAgYmFzZVBhdGgub2xkUG9zID0gb2xkUG9zO1xuICAgIHJldHVybiBuZXdQb3M7XG4gIH0sXG5cbiAgZXF1YWxzKGxlZnQsIHJpZ2h0KSB7XG4gICAgaWYgKHRoaXMub3B0aW9ucy5jb21wYXJhdG9yKSB7XG4gICAgICByZXR1cm4gdGhpcy5vcHRpb25zLmNvbXBhcmF0b3IobGVmdCwgcmlnaHQpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gbGVmdCA9PT0gcmlnaHRcbiAgICAgICAgfHwgKHRoaXMub3B0aW9ucy5pZ25vcmVDYXNlICYmIGxlZnQudG9Mb3dlckNhc2UoKSA9PT0gcmlnaHQudG9Mb3dlckNhc2UoKSk7XG4gICAgfVxuICB9LFxuICByZW1vdmVFbXB0eShhcnJheSkge1xuICAgIGxldCByZXQgPSBbXTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGFycmF5Lmxlbmd0aDsgaSsrKSB7XG4gICAgICBpZiAoYXJyYXlbaV0pIHtcbiAgICAgICAgcmV0LnB1c2goYXJyYXlbaV0pO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcmV0O1xuICB9LFxuICBjYXN0SW5wdXQodmFsdWUpIHtcbiAgICByZXR1cm4gdmFsdWU7XG4gIH0sXG4gIHRva2VuaXplKHZhbHVlKSB7XG4gICAgcmV0dXJuIHZhbHVlLnNwbGl0KCcnKTtcbiAgfSxcbiAgam9pbihjaGFycykge1xuICAgIHJldHVybiBjaGFycy5qb2luKCcnKTtcbiAgfVxufTtcblxuZnVuY3Rpb24gYnVpbGRWYWx1ZXMoZGlmZiwgbGFzdENvbXBvbmVudCwgbmV3U3RyaW5nLCBvbGRTdHJpbmcsIHVzZUxvbmdlc3RUb2tlbikge1xuICAvLyBGaXJzdCB3ZSBjb252ZXJ0IG91ciBsaW5rZWQgbGlzdCBvZiBjb21wb25lbnRzIGluIHJldmVyc2Ugb3JkZXIgdG8gYW5cbiAgLy8gYXJyYXkgaW4gdGhlIHJpZ2h0IG9yZGVyOlxuICBjb25zdCBjb21wb25lbnRzID0gW107XG4gIGxldCBuZXh0Q29tcG9uZW50O1xuICB3aGlsZSAobGFzdENvbXBvbmVudCkge1xuICAgIGNvbXBvbmVudHMucHVzaChsYXN0Q29tcG9uZW50KTtcbiAgICBuZXh0Q29tcG9uZW50ID0gbGFzdENvbXBvbmVudC5wcmV2aW91c0NvbXBvbmVudDtcbiAgICBkZWxldGUgbGFzdENvbXBvbmVudC5wcmV2aW91c0NvbXBvbmVudDtcbiAgICBsYXN0Q29tcG9uZW50ID0gbmV4dENvbXBvbmVudDtcbiAgfVxuICBjb21wb25lbnRzLnJldmVyc2UoKTtcblxuICBsZXQgY29tcG9uZW50UG9zID0gMCxcbiAgICAgIGNvbXBvbmVudExlbiA9IGNvbXBvbmVudHMubGVuZ3RoLFxuICAgICAgbmV3UG9zID0gMCxcbiAgICAgIG9sZFBvcyA9IDA7XG5cbiAgZm9yICg7IGNvbXBvbmVudFBvcyA8IGNvbXBvbmVudExlbjsgY29tcG9uZW50UG9zKyspIHtcbiAgICBsZXQgY29tcG9uZW50ID0gY29tcG9uZW50c1tjb21wb25lbnRQb3NdO1xuICAgIGlmICghY29tcG9uZW50LnJlbW92ZWQpIHtcbiAgICAgIGlmICghY29tcG9uZW50LmFkZGVkICYmIHVzZUxvbmdlc3RUb2tlbikge1xuICAgICAgICBsZXQgdmFsdWUgPSBuZXdTdHJpbmcuc2xpY2UobmV3UG9zLCBuZXdQb3MgKyBjb21wb25lbnQuY291bnQpO1xuICAgICAgICB2YWx1ZSA9IHZhbHVlLm1hcChmdW5jdGlvbih2YWx1ZSwgaSkge1xuICAgICAgICAgIGxldCBvbGRWYWx1ZSA9IG9sZFN0cmluZ1tvbGRQb3MgKyBpXTtcbiAgICAgICAgICByZXR1cm4gb2xkVmFsdWUubGVuZ3RoID4gdmFsdWUubGVuZ3RoID8gb2xkVmFsdWUgOiB2YWx1ZTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgY29tcG9uZW50LnZhbHVlID0gZGlmZi5qb2luKHZhbHVlKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbXBvbmVudC52YWx1ZSA9IGRpZmYuam9pbihuZXdTdHJpbmcuc2xpY2UobmV3UG9zLCBuZXdQb3MgKyBjb21wb25lbnQuY291bnQpKTtcbiAgICAgIH1cbiAgICAgIG5ld1BvcyArPSBjb21wb25lbnQuY291bnQ7XG5cbiAgICAgIC8vIENvbW1vbiBjYXNlXG4gICAgICBpZiAoIWNvbXBvbmVudC5hZGRlZCkge1xuICAgICAgICBvbGRQb3MgKz0gY29tcG9uZW50LmNvdW50O1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBjb21wb25lbnQudmFsdWUgPSBkaWZmLmpvaW4ob2xkU3RyaW5nLnNsaWNlKG9sZFBvcywgb2xkUG9zICsgY29tcG9uZW50LmNvdW50KSk7XG4gICAgICBvbGRQb3MgKz0gY29tcG9uZW50LmNvdW50O1xuXG4gICAgICAvLyBSZXZlcnNlIGFkZCBhbmQgcmVtb3ZlIHNvIHJlbW92ZXMgYXJlIG91dHB1dCBmaXJzdCB0byBtYXRjaCBjb21tb24gY29udmVudGlvblxuICAgICAgLy8gVGhlIGRpZmZpbmcgYWxnb3JpdGhtIGlzIHRpZWQgdG8gYWRkIHRoZW4gcmVtb3ZlIG91dHB1dCBhbmQgdGhpcyBpcyB0aGUgc2ltcGxlc3RcbiAgICAgIC8vIHJvdXRlIHRvIGdldCB0aGUgZGVzaXJlZCBvdXRwdXQgd2l0aCBtaW5pbWFsIG92ZXJoZWFkLlxuICAgICAgaWYgKGNvbXBvbmVudFBvcyAmJiBjb21wb25lbnRzW2NvbXBvbmVudFBvcyAtIDFdLmFkZGVkKSB7XG4gICAgICAgIGxldCB0bXAgPSBjb21wb25lbnRzW2NvbXBvbmVudFBvcyAtIDFdO1xuICAgICAgICBjb21wb25lbnRzW2NvbXBvbmVudFBvcyAtIDFdID0gY29tcG9uZW50c1tjb21wb25lbnRQb3NdO1xuICAgICAgICBjb21wb25lbnRzW2NvbXBvbmVudFBvc10gPSB0bXA7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLy8gU3BlY2lhbCBjYXNlIGhhbmRsZSBmb3Igd2hlbiBvbmUgdGVybWluYWwgaXMgaWdub3JlZCAoaS5lLiB3aGl0ZXNwYWNlKS5cbiAgLy8gRm9yIHRoaXMgY2FzZSB3ZSBtZXJnZSB0aGUgdGVybWluYWwgaW50byB0aGUgcHJpb3Igc3RyaW5nIGFuZCBkcm9wIHRoZSBjaGFuZ2UuXG4gIC8vIFRoaXMgaXMgb25seSBhdmFpbGFibGUgZm9yIHN0cmluZyBtb2RlLlxuICBsZXQgZmluYWxDb21wb25lbnQgPSBjb21wb25lbnRzW2NvbXBvbmVudExlbiAtIDFdO1xuICBpZiAoY29tcG9uZW50TGVuID4gMVxuICAgICAgJiYgdHlwZW9mIGZpbmFsQ29tcG9uZW50LnZhbHVlID09PSAnc3RyaW5nJ1xuICAgICAgJiYgKGZpbmFsQ29tcG9uZW50LmFkZGVkIHx8IGZpbmFsQ29tcG9uZW50LnJlbW92ZWQpXG4gICAgICAmJiBkaWZmLmVxdWFscygnJywgZmluYWxDb21wb25lbnQudmFsdWUpKSB7XG4gICAgY29tcG9uZW50c1tjb21wb25lbnRMZW4gLSAyXS52YWx1ZSArPSBmaW5hbENvbXBvbmVudC52YWx1ZTtcbiAgICBjb21wb25lbnRzLnBvcCgpO1xuICB9XG5cbiAgcmV0dXJuIGNvbXBvbmVudHM7XG59XG4iXX0=\n","/*istanbul ignore start*/\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.diffChars = diffChars;\nexports.characterDiff = void 0;\n\n/*istanbul ignore end*/\nvar\n/*istanbul ignore start*/\n_base = _interopRequireDefault(require(\"./base\"))\n/*istanbul ignore end*/\n;\n\n/*istanbul ignore start*/ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\n/*istanbul ignore end*/\nvar characterDiff = new\n/*istanbul ignore start*/\n_base\n/*istanbul ignore end*/\n[\n/*istanbul ignore start*/\n\"default\"\n/*istanbul ignore end*/\n]();\n\n/*istanbul ignore start*/\nexports.characterDiff = characterDiff;\n\n/*istanbul ignore end*/\nfunction diffChars(oldStr, newStr, options) {\n return characterDiff.diff(oldStr, newStr, options);\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kaWZmL2NoYXJhY3Rlci5qcyJdLCJuYW1lcyI6WyJjaGFyYWN0ZXJEaWZmIiwiRGlmZiIsImRpZmZDaGFycyIsIm9sZFN0ciIsIm5ld1N0ciIsIm9wdGlvbnMiLCJkaWZmIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTs7Ozs7QUFFTyxJQUFNQSxhQUFhLEdBQUc7QUFBSUM7QUFBQUE7QUFBQUE7QUFBQUE7QUFBQUE7QUFBQUE7QUFBQUE7QUFBQUEsQ0FBSixFQUF0Qjs7Ozs7O0FBQ0EsU0FBU0MsU0FBVCxDQUFtQkMsTUFBbkIsRUFBMkJDLE1BQTNCLEVBQW1DQyxPQUFuQyxFQUE0QztBQUFFLFNBQU9MLGFBQWEsQ0FBQ00sSUFBZCxDQUFtQkgsTUFBbkIsRUFBMkJDLE1BQTNCLEVBQW1DQyxPQUFuQyxDQUFQO0FBQXFEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IERpZmYgZnJvbSAnLi9iYXNlJztcblxuZXhwb3J0IGNvbnN0IGNoYXJhY3RlckRpZmYgPSBuZXcgRGlmZigpO1xuZXhwb3J0IGZ1bmN0aW9uIGRpZmZDaGFycyhvbGRTdHIsIG5ld1N0ciwgb3B0aW9ucykgeyByZXR1cm4gY2hhcmFjdGVyRGlmZi5kaWZmKG9sZFN0ciwgbmV3U3RyLCBvcHRpb25zKTsgfVxuIl19\n","/*istanbul ignore start*/\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.diffCss = diffCss;\nexports.cssDiff = void 0;\n\n/*istanbul ignore end*/\nvar\n/*istanbul ignore start*/\n_base = _interopRequireDefault(require(\"./base\"))\n/*istanbul ignore end*/\n;\n\n/*istanbul ignore start*/ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\n/*istanbul ignore end*/\nvar cssDiff = new\n/*istanbul ignore start*/\n_base\n/*istanbul ignore end*/\n[\n/*istanbul ignore start*/\n\"default\"\n/*istanbul ignore end*/\n]();\n\n/*istanbul ignore start*/\nexports.cssDiff = cssDiff;\n\n/*istanbul ignore end*/\ncssDiff.tokenize = function (value) {\n return value.split(/([{}:;,]|\\s+)/);\n};\n\nfunction diffCss(oldStr, newStr, callback) {\n return cssDiff.diff(oldStr, newStr, callback);\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kaWZmL2Nzcy5qcyJdLCJuYW1lcyI6WyJjc3NEaWZmIiwiRGlmZiIsInRva2VuaXplIiwidmFsdWUiLCJzcGxpdCIsImRpZmZDc3MiLCJvbGRTdHIiLCJuZXdTdHIiLCJjYWxsYmFjayIsImRpZmYiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBOzs7OztBQUVPLElBQU1BLE9BQU8sR0FBRztBQUFJQztBQUFBQTtBQUFBQTtBQUFBQTtBQUFBQTtBQUFBQTtBQUFBQTtBQUFBQSxDQUFKLEVBQWhCOzs7Ozs7QUFDUEQsT0FBTyxDQUFDRSxRQUFSLEdBQW1CLFVBQVNDLEtBQVQsRUFBZ0I7QUFDakMsU0FBT0EsS0FBSyxDQUFDQyxLQUFOLENBQVksZUFBWixDQUFQO0FBQ0QsQ0FGRDs7QUFJTyxTQUFTQyxPQUFULENBQWlCQyxNQUFqQixFQUF5QkMsTUFBekIsRUFBaUNDLFFBQWpDLEVBQTJDO0FBQUUsU0FBT1IsT0FBTyxDQUFDUyxJQUFSLENBQWFILE1BQWIsRUFBcUJDLE1BQXJCLEVBQTZCQyxRQUE3QixDQUFQO0FBQWdEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IERpZmYgZnJvbSAnLi9iYXNlJztcblxuZXhwb3J0IGNvbnN0IGNzc0RpZmYgPSBuZXcgRGlmZigpO1xuY3NzRGlmZi50b2tlbml6ZSA9IGZ1bmN0aW9uKHZhbHVlKSB7XG4gIHJldHVybiB2YWx1ZS5zcGxpdCgvKFt7fTo7LF18XFxzKykvKTtcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBkaWZmQ3NzKG9sZFN0ciwgbmV3U3RyLCBjYWxsYmFjaykgeyByZXR1cm4gY3NzRGlmZi5kaWZmKG9sZFN0ciwgbmV3U3RyLCBjYWxsYmFjayk7IH1cbiJdfQ==\n","/*istanbul ignore start*/\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.diffJson = diffJson;\nexports.canonicalize = canonicalize;\nexports.jsonDiff = void 0;\n\n/*istanbul ignore end*/\nvar\n/*istanbul ignore start*/\n_base = _interopRequireDefault(require(\"./base\"))\n/*istanbul ignore end*/\n;\n\nvar\n/*istanbul ignore start*/\n_line = require(\"./line\")\n/*istanbul ignore end*/\n;\n\n/*istanbul ignore start*/ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\n/*istanbul ignore end*/\nvar objectPrototypeToString = Object.prototype.toString;\nvar jsonDiff = new\n/*istanbul ignore start*/\n_base\n/*istanbul ignore end*/\n[\n/*istanbul ignore start*/\n\"default\"\n/*istanbul ignore end*/\n](); // Discriminate between two lines of pretty-printed, serialized JSON where one of them has a\n// dangling comma and the other doesn't. Turns out including the dangling comma yields the nicest output:\n\n/*istanbul ignore start*/\nexports.jsonDiff = jsonDiff;\n\n/*istanbul ignore end*/\njsonDiff.useLongestToken = true;\njsonDiff.tokenize =\n/*istanbul ignore start*/\n_line\n/*istanbul ignore end*/\n.\n/*istanbul ignore start*/\nlineDiff\n/*istanbul ignore end*/\n.tokenize;\n\njsonDiff.castInput = function (value) {\n /*istanbul ignore start*/\n var _this$options =\n /*istanbul ignore end*/\n this.options,\n undefinedReplacement = _this$options.undefinedReplacement,\n _this$options$stringi = _this$options.stringifyReplacer,\n stringifyReplacer = _this$options$stringi === void 0 ? function (k, v)\n /*istanbul ignore start*/\n {\n return (\n /*istanbul ignore end*/\n typeof v === 'undefined' ? undefinedReplacement : v\n );\n } : _this$options$stringi;\n return typeof value === 'string' ? value : JSON.stringify(canonicalize(value, null, null, stringifyReplacer), stringifyReplacer, ' ');\n};\n\njsonDiff.equals = function (left, right) {\n return (\n /*istanbul ignore start*/\n _base\n /*istanbul ignore end*/\n [\n /*istanbul ignore start*/\n \"default\"\n /*istanbul ignore end*/\n ].prototype.equals.call(jsonDiff, left.replace(/,([\\r\\n])/g, '$1'), right.replace(/,([\\r\\n])/g, '$1'))\n );\n};\n\nfunction diffJson(oldObj, newObj, options) {\n return jsonDiff.diff(oldObj, newObj, options);\n} // This function handles the presence of circular references by bailing out when encountering an\n// object that is already on the \"stack\" of items being processed. Accepts an optional replacer\n\n\nfunction canonicalize(obj, stack, replacementStack, replacer, key) {\n stack = stack || [];\n replacementStack = replacementStack || [];\n\n if (replacer) {\n obj = replacer(key, obj);\n }\n\n var i;\n\n for (i = 0; i < stack.length; i += 1) {\n if (stack[i] === obj) {\n return replacementStack[i];\n }\n }\n\n var canonicalizedObj;\n\n if ('[object Array]' === objectPrototypeToString.call(obj)) {\n stack.push(obj);\n canonicalizedObj = new Array(obj.length);\n replacementStack.push(canonicalizedObj);\n\n for (i = 0; i < obj.length; i += 1) {\n canonicalizedObj[i] = canonicalize(obj[i], stack, replacementStack, replacer, key);\n }\n\n stack.pop();\n replacementStack.pop();\n return canonicalizedObj;\n }\n\n if (obj && obj.toJSON) {\n obj = obj.toJSON();\n }\n\n if (\n /*istanbul ignore start*/\n _typeof(\n /*istanbul ignore end*/\n obj) === 'object' && obj !== null) {\n stack.push(obj);\n canonicalizedObj = {};\n replacementStack.push(canonicalizedObj);\n\n var sortedKeys = [],\n _key;\n\n for (_key in obj) {\n /* istanbul ignore else */\n if (obj.hasOwnProperty(_key)) {\n sortedKeys.push(_key);\n }\n }\n\n sortedKeys.sort();\n\n for (i = 0; i < sortedKeys.length; i += 1) {\n _key = sortedKeys[i];\n canonicalizedObj[_key] = canonicalize(obj[_key], stack, replacementStack, replacer, _key);\n }\n\n stack.pop();\n replacementStack.pop();\n } else {\n canonicalizedObj = obj;\n }\n\n return canonicalizedObj;\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kaWZmL2pzb24uanMiXSwibmFtZXMiOlsib2JqZWN0UHJvdG90eXBlVG9TdHJpbmciLCJPYmplY3QiLCJwcm90b3R5cGUiLCJ0b1N0cmluZyIsImpzb25EaWZmIiwiRGlmZiIsInVzZUxvbmdlc3RUb2tlbiIsInRva2VuaXplIiwibGluZURpZmYiLCJjYXN0SW5wdXQiLCJ2YWx1ZSIsIm9wdGlvbnMiLCJ1bmRlZmluZWRSZXBsYWNlbWVudCIsInN0cmluZ2lmeVJlcGxhY2VyIiwiayIsInYiLCJKU09OIiwic3RyaW5naWZ5IiwiY2Fub25pY2FsaXplIiwiZXF1YWxzIiwibGVmdCIsInJpZ2h0IiwiY2FsbCIsInJlcGxhY2UiLCJkaWZmSnNvbiIsIm9sZE9iaiIsIm5ld09iaiIsImRpZmYiLCJvYmoiLCJzdGFjayIsInJlcGxhY2VtZW50U3RhY2siLCJyZXBsYWNlciIsImtleSIsImkiLCJsZW5ndGgiLCJjYW5vbmljYWxpemVkT2JqIiwicHVzaCIsIkFycmF5IiwicG9wIiwidG9KU09OIiwic29ydGVkS2V5cyIsImhhc093blByb3BlcnR5Iiwic29ydCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBOztBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7Ozs7Ozs7QUFFQSxJQUFNQSx1QkFBdUIsR0FBR0MsTUFBTSxDQUFDQyxTQUFQLENBQWlCQyxRQUFqRDtBQUdPLElBQU1DLFFBQVEsR0FBRztBQUFJQztBQUFBQTtBQUFBQTtBQUFBQTtBQUFBQTtBQUFBQTtBQUFBQTtBQUFBQSxDQUFKLEVBQWpCLEMsQ0FDUDtBQUNBOzs7Ozs7QUFDQUQsUUFBUSxDQUFDRSxlQUFULEdBQTJCLElBQTNCO0FBRUFGLFFBQVEsQ0FBQ0csUUFBVDtBQUFvQkM7QUFBQUE7QUFBQUE7QUFBQUE7QUFBQUE7QUFBQUE7QUFBQTtBQUFBLENBQVNELFFBQTdCOztBQUNBSCxRQUFRLENBQUNLLFNBQVQsR0FBcUIsVUFBU0MsS0FB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Z0IsR0FBR1AsR0FBbkI7QUFDRDs7QUFDRCxTQUFPTyxnQkFBUDtBQUNEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IERpZmYgZnJvbSAnLi9iYXNlJztcbmltcG9ydCB7bGluZURpZmZ9IGZyb20gJy4vbGluZSc7XG5cbmNvbnN0IG9iamVjdFByb3RvdHlwZVRvU3RyaW5nID0gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZztcblxuXG5leHBvcnQgY29uc3QganNvbkRpZmYgPSBuZXcgRGlmZigpO1xuLy8gRGlzY3JpbWluYXRlIGJldHdlZW4gdHdvIGxpbmVzIG9mIHByZXR0eS1wcmludGVkLCBzZXJpYWxpemVkIEpTT04gd2hlcmUgb25lIG9mIHRoZW0gaGFzIGFcbi8vIGRhbmdsaW5nIGNvbW1hIGFuZCB0aGUgb3RoZXIgZG9lc24ndC4gVHVybnMgb3V0IGluY2x1ZGluZyB0aGUgZGFuZ2xpbmcgY29tbWEgeWllbGRzIHRoZSBuaWNlc3Qgb3V0cHV0OlxuanNvbkRpZmYudXNlTG9uZ2VzdFRva2VuID0gdHJ1ZTtcblxuanNvbkRpZmYudG9rZW5pemUgPSBsaW5lRGlmZi50b2tlbml6ZTtcbmpzb25EaWZmLmNhc3RJbnB1dCA9IGZ1bmN0aW9uKHZhbHVlKSB7XG4gIGNvbnN0IHt1bmRlZmluZWRSZXBsYWNlbWVudCwgc3RyaW5naWZ5UmVwbGFjZXIgPSAoaywgdikgPT4gdHlwZW9mIHYgPT09ICd1bmRlZmluZWQnID8gdW5kZWZpbmVkUmVwbGFjZW1lbnQgOiB2fSA9IHRoaXMub3B0aW9ucztcblxuICByZXR1cm4gdHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJyA/IHZhbHVlIDogSlNPTi5zdHJpbmdpZnkoY2Fub25pY2FsaXplKHZhbHVlLCBudWxsLCBudWxsLCBzdHJpbmdpZnlSZXBsYWNlciksIHN0cmluZ2lmeVJlcGxhY2VyLCAnICAnKTtcbn07XG5qc29uRGlmZi5lcXVhbHMgPSBmdW5jdGlvbihsZWZ0LCByaWdodCkge1xuICByZXR1cm4gRGlmZi5wcm90b3R5cGUuZXF1YWxzLmNhbGwoanNvbkRpZmYsIGxlZnQucmVwbGFjZSgvLChbXFxyXFxuXSkvZywgJyQxJyksIHJpZ2h0LnJlcGxhY2UoLywoW1xcclxcbl0pL2csICckMScpKTtcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBkaWZmSnNvbihvbGRPYmosIG5ld09iaiwgb3B0aW9ucykgeyByZXR1cm4ganNvbkRpZmYuZGlmZihvbGRPYmosIG5ld09iaiwgb3B0aW9ucyk7IH1cblxuLy8gVGhpcyBmdW5jdGlvbiBoYW5kbGVzIHRoZSBwcmVzZW5jZSBvZiBjaXJjdWxhciByZWZlcmVuY2VzIGJ5IGJhaWxpbmcgb3V0IHdoZW4gZW5jb3VudGVyaW5nIGFuXG4vLyBvYmplY3QgdGhhdCBpcyBhbHJlYWR5IG9uIHRoZSBcInN0YWNrXCIgb2YgaXRlbXMgYmVpbmcgcHJvY2Vzc2VkLiBBY2NlcHRzIGFuIG9wdGlvbmFsIHJlcGxhY2VyXG5leHBvcnQgZnVuY3Rpb24gY2Fub25pY2FsaXplKG9iaiwgc3RhY2ssIHJlcGxhY2VtZW50U3RhY2ssIHJlcGxhY2VyLCBrZXkpIHtcbiAgc3RhY2sgPSBzdGFjayB8fCBbXTtcbiAgcmVwbGFjZW1lbnRTdGFjayA9IHJlcGxhY2VtZW50U3RhY2sgfHwgW107XG5cbiAgaWYgKHJlcGxhY2VyKSB7XG4gICAgb2JqID0gcmVwbGFjZXIoa2V5LCBvYmopO1xuICB9XG5cbiAgbGV0IGk7XG5cbiAgZm9yIChpID0gMDsgaSA8IHN0YWNrLmxlbmd0aDsgaSArPSAxKSB7XG4gICAgaWYgKHN0YWNrW2ldID09PSBvYmopIHtcbiAgICAgIHJldHVybiByZXBsYWNlbWVudFN0YWNrW2ldO1xuICAgIH1cbiAgfVxuXG4gIGxldCBjYW5vbmljYWxpemVkT2JqO1xuXG4gIGlmICgnW29iamVjdCBBcnJheV0nID09PSBvYmplY3RQcm90b3R5cGVUb1N0cmluZy5jYWxsKG9iaikpIHtcbiAgICBzdGFjay5wdXNoKG9iaik7XG4gICAgY2Fub25pY2FsaXplZE9iaiA9IG5ldyBBcnJheShvYmoubGVuZ3RoKTtcbiAgICByZXBsYWNlbWVudFN0YWNrLnB1c2goY2Fub25pY2FsaXplZE9iaik7XG4gICAgZm9yIChpID0gMDsgaSA8IG9iai5sZW5ndGg7IGkgKz0gMSkge1xuICAgICAgY2Fub25pY2FsaXplZE9ialtpXSA9IGNhbm9uaWNhbGl6ZShvYmpbaV0sIHN0YWNrLCByZXBsYWNlbWVudFN0YWNrLCByZXBsYWNlciwga2V5KTtcbiAgICB9XG4gICAgc3RhY2sucG9wKCk7XG4gICAgcmVwbGFjZW1lbnRTdGFjay5wb3AoKTtcbiAgICByZXR1cm4gY2Fub25pY2FsaXplZE9iajtcbiAgfVxuXG4gIGlmIChvYmogJiYgb2JqLnRvSlNPTikge1xuICAgIG9iaiA9IG9iai50b0pTT04oKTtcbiAgfVxuXG4gIGlmICh0eXBlb2Ygb2JqID09PSAnb2JqZWN0JyAmJiBvYmogIT09IG51bGwpIHtcbiAgICBzdGFjay5wdXNoKG9iaik7XG4gICAgY2Fub25pY2FsaXplZE9iaiA9IHt9O1xuICAgIHJlcGxhY2VtZW50U3RhY2sucHVzaChjYW5vbmljYWxpemVkT2JqKTtcbiAgICBsZXQgc29ydGVkS2V5cyA9IFtdLFxuICAgICAgICBrZXk7XG4gICAgZm9yIChrZXkgaW4gb2JqKSB7XG4gICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgICAgaWYgKG9iai5oYXNPd25Qcm9wZXJ0eShrZXkpKSB7XG4gICAgICAgIHNvcnRlZEtleXMucHVzaChrZXkpO1xuICAgICAgfVxuICAgIH1cbiAgICBzb3J0ZWRLZXlzLnNvcnQoKTtcbiAgICBmb3IgKGkgPSAwOyBpIDwgc29ydGVkS2V5cy5sZW5ndGg7IGkgKz0gMSkge1xuICAgICAga2V5ID0gc29ydGVkS2V5c1tpXTtcbiAgICAgIGNhbm9uaWNhbGl6ZWRPYmpba2V5XSA9IGNhbm9uaWNhbGl6ZShvYmpba2V5XSwgc3RhY2ssIHJlcGxhY2VtZW50U3RhY2ssIHJlcGxhY2VyLCBrZXkpO1xuICAgIH1cbiAgICBzdGFjay5wb3AoKTtcbiAgICByZXBsYWNlbWVudFN0YWNrLnBvcCgpO1xuICB9IGVsc2Uge1xuICAgIGNhbm9uaWNhbGl6ZWRPYmogPSBvYmo7XG4gIH1cbiAgcmV0dXJuIGNhbm9uaWNhbGl6ZWRPYmo7XG59XG4iXX0=\n","/*istanbul ignore start*/\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.diffLines = diffLines;\nexports.diffTrimmedLines = diffTrimmedLines;\nexports.lineDiff = void 0;\n\n/*istanbul ignore end*/\nvar\n/*istanbul ignore start*/\n_base = _interopRequireDefault(require(\"./base\"))\n/*istanbul ignore end*/\n;\n\nvar\n/*istanbul ignore start*/\n_params = require(\"../util/params\")\n/*istanbul ignore end*/\n;\n\n/*istanbul ignore start*/ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\n/*istanbul ignore end*/\nvar lineDiff = new\n/*istanbul ignore start*/\n_base\n/*istanbul ignore end*/\n[\n/*istanbul ignore start*/\n\"default\"\n/*istanbul ignore end*/\n]();\n\n/*istanbul ignore start*/\nexports.lineDiff = lineDiff;\n\n/*istanbul ignore end*/\nlineDiff.tokenize = function (value) {\n if (this.options.stripTrailingCr) {\n // remove one \\r before \\n to match GNU diff's --strip-trailing-cr behavior\n value = value.replace(/\\r\\n/g, '\\n');\n }\n\n var retLines = [],\n linesAndNewlines = value.split(/(\\n|\\r\\n)/); // Ignore the final empty token that occurs if the string ends with a new line\n\n if (!linesAndNewlines[linesAndNewlines.length - 1]) {\n linesAndNewlines.pop();\n } // Merge the content and line separators into single tokens\n\n\n for (var i = 0; i < linesAndNewlines.length; i++) {\n var line = linesAndNewlines[i];\n\n if (i % 2 && !this.options.newlineIsToken) {\n retLines[retLines.length - 1] += line;\n } else {\n if (this.options.ignoreWhitespace) {\n line = line.trim();\n }\n\n retLines.push(line);\n }\n }\n\n return retLines;\n};\n\nfunction diffLines(oldStr, newStr, callback) {\n return lineDiff.diff(oldStr, newStr, callback);\n}\n\nfunction diffTrimmedLines(oldStr, newStr, callback) {\n var options =\n /*istanbul ignore start*/\n (0,\n /*istanbul ignore end*/\n\n /*istanbul ignore start*/\n _params\n /*istanbul ignore end*/\n .\n /*istanbul ignore start*/\n generateOptions)\n /*istanbul ignore end*/\n (callback, {\n ignoreWhitespace: true\n });\n return lineDiff.diff(oldStr, newStr, options);\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kaWZmL2xpbmUuanMiXSwibmFtZXMiOlsibGluZURpZmYiLCJEaWZmIiwidG9rZW5pemUiLCJ2YWx1ZSIsIm9wdGlvbnMiLCJzdHJpcFRyYWlsaW5nQ3IiLCJyZXBsYWNlIiwicmV0TGluZXMiLCJsaW5lc0FuZE5ld2xpbmVzIiwic3BsaXQiLCJsZW5ndGgiLCJwb3AiLCJpIiwibGluZSIsIm5ld2xpbmVJc1Rva2VuIiwiaWdub3JlV2hpdGVzcGFjZSIsInRyaW0iLCJwdXNoIiwiZGlmZkxpbmVzIiwib2xkU3RyIiwibmV3U3RyIiwiY2FsbGJhY2siLCJkaWZmIiwiZGlmZlRyaW1tZWRMaW5lcyIsImdlbmVyYXRlT3B0aW9ucyJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBOztBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7Ozs7O0FBRU8sSUFBTUEsUUFBUSxHQUFHO0FBQUlDO0FBQUFBO0FBQUFBO0FBQUFBO0FBQUFBO0FBQUFBO0FBQUFBO0FBQUFBLENBQUosRUFBakI7Ozs7OztBQUNQRCxRQUFRLENBQUNFLFFBQVQsR0FBb0IsVUFBU0MsS0FBVCxFQUFnQjtBQUNsQyxNQUFHLEtBQUtDLE9BQUwsQ0FBYUMsZUFBaEIsRUFBaUM7QUFDL0I7QUFDQUYsSUFBQUEsS0FBSyxHQUFHQSxLQUFLLENBQUNHLE9BQU4sQ0FBYyxPQUFkLEVBQXVCLElBQXZCLENBQVI7QUFDRDs7QUFFRCxNQUFJQyxRQUFRLEdBQUcsRUFBZjtBQUFBLE1BQ0lDLGdCQUFnQixHQUFHTCxLQUFLLENBQUNNLEtBQU4sQ0FBWSxXQUFaLENBRHZCLENBTmtDLENBU2xDOztBQUNBLE1BQUksQ0FBQ0QsZ0JBQWdCLENBQUNBLGdCQUFnQixDQUFDRSxNQUFqQixHQUEwQixDQUEzQixDQUFyQixFQUFvRDtBQUNsREYsSUFBQUEsZ0JBQWdCLENBQUNHLEdBQWpCO0FBQ0QsR0FaaUMsQ0FjbEM7OztBQUNBLE9BQUssSUFBSUMsQ0FBQyxHQUFHLENBQWIsRUFBZ0JBLENBQUMsR0FBR0osZ0JBQWdCLENBQUNFLE1BQXJDLEVBQTZDRSxDQUFDLEVBQTlDLEVBQWtEO0FBQ2hELFFBQUlDLElBQUksR0FBR0wsZ0JBQWdCLENBQUNJLENBQUQsQ0FBM0I7O0FBRUEsUUFBSUEsQ0FBQyxHQUFHLENBQUosSUFBUyxDQUFDLEtBQUtSLE9BQUwsQ0FBYVUsY0FBM0IsRUFBMkM7QUFDekNQLE1BQUFBLFFBQVEsQ0FBQ0EsUUFBUSxDQUFDRyxNQUFULEdBQWtCLENBQW5CLENBQVIsSUFBaUNHLElBQWpDO0FBQ0QsS0FGRCxNQUVPO0FBQ0wsVUFBSSxLQUFLVCxPQUFMLENBQWFXLGdCQUFqQixFQUFtQztBQUNqQ0YsUUFBQUEsSUFBSSxHQUFHQSxJQUFJLENBQUNHLElBQUwsRUFBUDtBQUNEOztBQUNEVCxNQUFBQSxRQUFRLENBQUNVLElBQVQsQ0FBY0osSUFBZDtBQUNEO0FBQ0Y7O0FBRUQsU0FBT04sUUFBUDtBQUNELENBN0JEOztBQStCTyxTQUFTVyxTQUFULENBQW1CQyxNQUFuQixFQUEyQkMsTUFBM0IsRUFBbUNDLFFBQW5DLEVBQTZDO0FBQUUsU0FBT3JCLFFBQVEsQ0FBQ3NCLElBQVQsQ0FBY0gsTUFBZCxFQUFzQkMsTUFBdEIsRUFBOEJDLFFBQTlCLENBQVA7QUFBaUQ7O0FBQ2hHLFNBQVNFLGdCQUFULENBQTBCSixNQUExQixFQUFrQ0MsTUFBbEMsRUFBMENDLFFBQTFDLEVBQW9EO0FBQ3pELE1BQUlqQixPQUFPO0FBQUc7QUFBQTtBQUFBOztBQUFBb0I7QUFBQUE7QUFBQUE7QUFBQUE7QUFBQUE7QUFBQUE7QUFBQTtBQUFBLEdBQWdCSCxRQUFoQixFQUEwQjtBQUFDTixJQUFBQSxnQkFBZ0IsRUFBRTtBQUFuQixHQUExQixDQUFkO0FBQ0EsU0FBT2YsUUFBUSxDQUFDc0IsSUFBVCxDQUFjSCxNQUFkLEVBQXNCQyxNQUF0QixFQUE4QmhCLE9BQTlCLENBQVA7QUFDRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBEaWZmIGZyb20gJy4vYmFzZSc7XG5pbXBvcnQge2dlbmVyYXRlT3B0aW9uc30gZnJvbSAnLi4vdXRpbC9wYXJhbXMnO1xuXG5leHBvcnQgY29uc3QgbGluZURpZmYgPSBuZXcgRGlmZigpO1xubGluZURpZmYudG9rZW5pemUgPSBmdW5jdGlvbih2YWx1ZSkge1xuICBpZih0aGlzLm9wdGlvbnMuc3RyaXBUcmFpbGluZ0NyKSB7XG4gICAgLy8gcmVtb3ZlIG9uZSBcXHIgYmVmb3JlIFxcbiB0byBtYXRjaCBHTlUgZGlmZidzIC0tc3RyaXAtdHJhaWxpbmctY3IgYmVoYXZpb3JcbiAgICB2YWx1ZSA9IHZhbHVlLnJlcGxhY2UoL1xcclxcbi9nLCAnXFxuJyk7XG4gIH1cblxuICBsZXQgcmV0TGluZXMgPSBbXSxcbiAgICAgIGxpbmVzQW5kTmV3bGluZXMgPSB2YWx1ZS5zcGxpdCgvKFxcbnxcXHJcXG4pLyk7XG5cbiAgLy8gSWdub3JlIHRoZSBmaW5hbCBlbXB0eSB0b2tlbiB0aGF0IG9jY3VycyBpZiB0aGUgc3RyaW5nIGVuZHMgd2l0aCBhIG5ldyBsaW5lXG4gIGlmICghbGluZXNBbmROZXdsaW5lc1tsaW5lc0FuZE5ld2xpbmVzLmxlbmd0aCAtIDFdKSB7XG4gICAgbGluZXNBbmROZXdsaW5lcy5wb3AoKTtcbiAgfVxuXG4gIC8vIE1lcmdlIHRoZSBjb250ZW50IGFuZCBsaW5lIHNlcGFyYXRvcnMgaW50byBzaW5nbGUgdG9rZW5zXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgbGluZXNBbmROZXdsaW5lcy5sZW5ndGg7IGkrKykge1xuICAgIGxldCBsaW5lID0gbGluZXNBbmROZXdsaW5lc1tpXTtcblxuICAgIGlmIChpICUgMiAmJiAhdGhpcy5vcHRpb25zLm5ld2xpbmVJc1Rva2VuKSB7XG4gICAgICByZXRMaW5lc1tyZXRMaW5lcy5sZW5ndGggLSAxXSArPSBsaW5lO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAodGhpcy5vcHRpb25zLmlnbm9yZVdoaXRlc3BhY2UpIHtcbiAgICAgICAgbGluZSA9IGxpbmUudHJpbSgpO1xuICAgICAgfVxuICAgICAgcmV0TGluZXMucHVzaChsaW5lKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gcmV0TGluZXM7XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gZGlmZkxpbmVzKG9sZFN0ciwgbmV3U3RyLCBjYWxsYmFjaykgeyByZXR1cm4gbGluZURpZmYuZGlmZihvbGRTdHIsIG5ld1N0ciwgY2FsbGJhY2spOyB9XG5leHBvcnQgZnVuY3Rpb24gZGlmZlRyaW1tZWRMaW5lcyhvbGRTdHIsIG5ld1N0ciwgY2FsbGJhY2spIHtcbiAgbGV0IG9wdGlvbnMgPSBnZW5lcmF0ZU9wdGlvbnMoY2FsbGJhY2ssIHtpZ25vcmVXaGl0ZXNwYWNlOiB0cnVlfSk7XG4gIHJldHVybiBsaW5lRGlmZi5kaWZmKG9sZFN0ciwgbmV3U3RyLCBvcHRpb25zKTtcbn1cbiJdfQ==\n","/*istanbul ignore start*/\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.diffSentences = diffSentences;\nexports.sentenceDiff = void 0;\n\n/*istanbul ignore end*/\nvar\n/*istanbul ignore start*/\n_base = _interopRequireDefault(require(\"./base\"))\n/*istanbul ignore end*/\n;\n\n/*istanbul ignore start*/ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\n/*istanbul ignore end*/\nvar sentenceDiff = new\n/*istanbul ignore start*/\n_base\n/*istanbul ignore end*/\n[\n/*istanbul ignore start*/\n\"default\"\n/*istanbul ignore end*/\n]();\n\n/*istanbul ignore start*/\nexports.sentenceDiff = sentenceDiff;\n\n/*istanbul ignore end*/\nsentenceDiff.tokenize = function (value) {\n return value.split(/(\\S.+?[.!?])(?=\\s+|$)/);\n};\n\nfunction diffSentences(oldStr, newStr, callback) {\n return sentenceDiff.diff(oldStr, newStr, callback);\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kaWZmL3NlbnRlbmNlLmpzIl0sIm5hbWVzIjpbInNlbnRlbmNlRGlmZiIsIkRpZmYiLCJ0b2tlbml6ZSIsInZhbHVlIiwic3BsaXQiLCJkaWZmU2VudGVuY2VzIiwib2xkU3RyIiwibmV3U3RyIiwiY2FsbGJhY2siLCJkaWZmIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTs7Ozs7QUFHTyxJQUFNQSxZQUFZLEdBQUc7QUFBSUM7QUFBQUE7QUFBQUE7QUFBQUE7QUFBQUE7QUFBQUE7QUFBQUE7QUFBQUEsQ0FBSixFQUFyQjs7Ozs7O0FBQ1BELFlBQVksQ0FBQ0UsUUFBYixHQUF3QixVQUFTQyxLQUFULEVBQWdCO0FBQ3RDLFNBQU9BLEtBQUssQ0FBQ0MsS0FBTixDQUFZLHVCQUFaLENBQVA7QUFDRCxDQUZEOztBQUlPLFNBQVNDLGFBQVQsQ0FBdUJDLE1BQXZCLEVBQStCQyxNQUEvQixFQUF1Q0MsUUFBdkMsRUFBaUQ7QUFBRSxTQUFPUixZQUFZLENBQUNTLElBQWIsQ0FBa0JILE1BQWxCLEVBQTBCQyxNQUExQixFQUFrQ0MsUUFBbEMsQ0FBUDtBQUFxRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBEaWZmIGZyb20gJy4vYmFzZSc7XG5cblxuZXhwb3J0IGNvbnN0IHNlbnRlbmNlRGlmZiA9IG5ldyBEaWZmKCk7XG5zZW50ZW5jZURpZmYudG9rZW5pemUgPSBmdW5jdGlvbih2YWx1ZSkge1xuICByZXR1cm4gdmFsdWUuc3BsaXQoLyhcXFMuKz9bLiE/XSkoPz1cXHMrfCQpLyk7XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gZGlmZlNlbnRlbmNlcyhvbGRTdHIsIG5ld1N0ciwgY2FsbGJhY2spIHsgcmV0dXJuIHNlbnRlbmNlRGlmZi5kaWZmKG9sZFN0ciwgbmV3U3RyLCBjYWxsYmFjayk7IH1cbiJdfQ==\n","/*istanbul ignore start*/\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.diffWords = diffWords;\nexports.diffWordsWithSpace = diffWordsWithSpace;\nexports.wordDiff = void 0;\n\n/*istanbul ignore end*/\nvar\n/*istanbul ignore start*/\n_base = _interopRequireDefault(require(\"./base\"))\n/*istanbul ignore end*/\n;\n\nvar\n/*istanbul ignore start*/\n_params = require(\"../util/params\")\n/*istanbul ignore end*/\n;\n\n/*istanbul ignore start*/ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\n/*istanbul ignore end*/\n// Based on https://en.wikipedia.org/wiki/Latin_script_in_Unicode\n//\n// Ranges and exceptions:\n// Latin-1 Supplement, 0080–00FF\n// - U+00D7 × Multiplication sign\n// - U+00F7 ÷ Division sign\n// Latin Extended-A, 0100–017F\n// Latin Extended-B, 0180–024F\n// IPA Extensions, 0250–02AF\n// Spacing Modifier Letters, 02B0–02FF\n// - U+02C7 ˇ ˇ Caron\n// - U+02D8 ˘ ˘ Breve\n// - U+02D9 ˙ ˙ Dot Above\n// - U+02DA ˚ ˚ Ring Above\n// - U+02DB ˛ ˛ Ogonek\n// - U+02DC ˜ ˜ Small Tilde\n// - U+02DD ˝ ˝ Double Acute Accent\n// Latin Extended Additional, 1E00–1EFF\nvar extendedWordChars = /^[A-Za-z\\xC0-\\u02C6\\u02C8-\\u02D7\\u02DE-\\u02FF\\u1E00-\\u1EFF]+$/;\nvar reWhitespace = /\\S/;\nvar wordDiff = new\n/*istanbul ignore start*/\n_base\n/*istanbul ignore end*/\n[\n/*istanbul ignore start*/\n\"default\"\n/*istanbul ignore end*/\n]();\n\n/*istanbul ignore start*/\nexports.wordDiff = wordDiff;\n\n/*istanbul ignore end*/\nwordDiff.equals = function (left, right) {\n if (this.options.ignoreCase) {\n left = left.toLowerCase();\n right = right.toLowerCase();\n }\n\n return left === right || this.options.ignoreWhitespace && !reWhitespace.test(left) && !reWhitespace.test(right);\n};\n\nwordDiff.tokenize = function (value) {\n // All whitespace symbols except newline group into one token, each newline - in separate token\n var tokens = value.split(/([^\\S\\r\\n]+|[()[\\]{}'\"\\r\\n]|\\b)/); // Join the boundary splits that we do not consider to be boundaries. This is primarily the extended Latin character set.\n\n for (var i = 0; i < tokens.length - 1; i++) {\n // If we have an empty string in the next field and we have only word chars before and after, merge\n if (!tokens[i + 1] && tokens[i + 2] && extendedWordChars.test(tokens[i]) && extendedWordChars.test(tokens[i + 2])) {\n tokens[i] += tokens[i + 2];\n tokens.splice(i + 1, 2);\n i--;\n }\n }\n\n return tokens;\n};\n\nfunction diffWords(oldStr, newStr, options) {\n options =\n /*istanbul ignore start*/\n (0,\n /*istanbul ignore end*/\n\n /*istanbul ignore start*/\n _params\n /*istanbul ignore end*/\n .\n /*istanbul ignore start*/\n generateOptions)\n /*istanbul ignore end*/\n (options, {\n ignoreWhitespace: true\n });\n return wordDiff.diff(oldStr, newStr, options);\n}\n\nfunction diffWordsWithSpace(oldStr, newStr, options) {\n return wordDiff.diff(oldStr, newStr, options);\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kaWZmL3dvcmQuanMiXSwibmFtZXMiOlsiZXh0ZW5kZWRXb3JkQ2hhcnMiLCJyZVdoaXRlc3BhY2UiLCJ3b3JkRGlmZiIsIkRpZmYiLCJlcXVhbHMiLCJsZWZ0IiwicmlnaHQiLCJvcHRpb25zIiwiaWdub3JlQ2FzZSIsInRvTG93ZXJDYXNlIiwiaWdub3JlV2hpdGVzcGFjZSIsInRlc3QiLCJ0b2tlbml6ZSIsInZhbHVlIiwidG9rZW5zIiwic3BsaXQiLCJpIiwibGVuZ3RoIiwic3BsaWNlIiwiZGlmZldvcmRzIiwib2xkU3RyIiwibmV3U3RyIiwiZ2VuZXJhdGVPcHRpb25zIiwiZGlmZiIsImRpZmZXb3Jkc1dpdGhTcGFjZSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBOztBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7Ozs7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBTUEsaUJBQWlCLEdBQUcsK0RBQTFCO0FBRUEsSUFBTUMsWUFBWSxHQUFHLElBQXJCO0FBRU8sSUFBTUMsUUFBUSxHQUFHO0FBQUlDO0FBQUFBO0FBQUFBO0FBQUFBO0FBQUFBO0FBQUFBO0FBQUFBO0FBQUFBLENBQUosRUFBakI7Ozs7OztBQUNQRCxRQUFRLENBQUNFLE1BQVQsR0FBa0IsVUFBU0MsSUFBVCxFQUFlQyxLQUFmLEVBQXNCO0FBQ3RDLE1BQUksS0FBS0MsT0FBTCxDQUFhQyxVQUFqQixFQUE2QjtBQUMzQkgsSUFBQUEsSUFBSSxHQUFHQSxJQUFJLENBQUNJLFdBQUwsRUFBUDtBQUNBSCxJQUFBQSxLQUFLLEdBQUdBLEtBQUssQ0FBQ0csV0FBTixFQUFSO0FBQ0Q7O0FBQ0QsU0FBT0osSUFBSSxLQUFLQyxLQUFULElBQW1CLEtBQUtDLE9BQUwsQ0FBYUcsZ0JBQWIsSUFBaUMsQ0FBQ1QsWUFBWSxDQUFDVSxJQUFiLENBQWtCTixJQUFsQixDQUFsQyxJQUE2RCxDQUFDSixZQUFZLENBQUNVLElBQWIsQ0FBa0JMLEtBQWxCLENBQXhGO0FBQ0QsQ0FORDs7QUFPQUosUUFBUSxDQUFDVSxRQUFULEdBQW9CLFVBQVNDLEtBQVQsRUFBZ0I7QUFDbEM7QUFDQSxNQUFJQyxNQUFNLEdBQUdELEtBQUssQ0FBQ0UsS0FBTixDQUFZLGlDQUFaLENBQWIsQ0FGa0MsQ0FJbEM7O0FBQ0EsT0FBSyxJQUFJQyxDQUFDLEdBQUcsQ0FBYixFQUFnQkEsQ0FBQyxHQUFHRixNQUFNLENBQUNHLE1BQVAsR0FBZ0IsQ0FBcEMsRUFBdUNELENBQUMsRUFBeEMsRUFBNEM7QUFDMUM7QUFDQSxRQUFJLENBQUNGLE1BQU0sQ0FBQ0UsQ0FBQyxHQUFHLENBQUwsQ0FBUCxJQUFrQkYsTUFBTSxDQUFDRSxDQUFDLEdBQUcsQ0FBTCxDQUF4QixJQUNLaEIsaUJBQWlCLENBQUNXLElBQWxCLENBQXVCRyxNQUFNLENBQUNFLENBQUQsQ0FBN0IsQ0FETCxJQUVLaEIsaUJBQWlCLENBQUNXLElBQWxCLENBQXVCRyxNQUFNLENBQUNFLENBQUMsR0FBRyxDQUFMLENBQTdCLENBRlQsRUFFZ0Q7QUFDOUNGLE1BQUFBLE1BQU0sQ0FBQ0UsQ0FBRCxDQUFOLElBQWFGLE1BQU0sQ0FBQ0UsQ0FBQyxHQUFHLENBQUwsQ0FBbkI7QUFDQUYsTUFBQUEsTUFBTSxDQUFDSSxNQUFQLENBQWNGLENBQUMsR0FBRyxDQUFsQixFQUFxQixDQUFyQjtBQUNBQSxNQUFBQSxDQUFDO0FBQ0Y7QUFDRjs7QUFFRCxTQUFPRixNQUFQO0FBQ0QsQ0FqQkQ7O0FBbUJPLFNBQVNLLFNBQVQsQ0FBbUJDLE1BQW5CLEVBQTJCQyxNQUEzQixFQUFtQ2QsT0FBbkMsRUFBNEM7QUFDakRBLEVBQUFBLE9BQU87QUFBRztBQUFBO0FBQUE7O0FBQUFlO0FBQUFBO0FBQUFBO0FBQUFBO0FBQUFBO0FBQUFBO0FBQUE7QUFBQSxHQUFnQmYsT0FBaEIsRUFBeUI7QUFBQ0csSUFBQUEsZ0JBQWdCLEVBQUU7QUFBbkIsR0FBekIsQ0FBVjtBQUNBLFNBQU9SLFFBQVEsQ0FBQ3FCLElBQVQsQ0FBY0gsTUFBZCxFQUFzQkMsTUFBdEIsRUFBOEJkLE9BQTlCLENBQVA7QUFDRDs7QUFFTSxTQUFTaUIsa0JBQVQsQ0FBNEJKLE1BQTVCLEVBQW9DQyxNQUFwQyxFQUE0Q2QsT0FBNUMsRUFBcUQ7QUFDMUQsU0FBT0wsUUFBUSxDQUFDcUIsSUFBVCxDQUFjSCxNQUFkLEVBQXNCQyxNQUF0QixFQUE4QmQsT0FBOUIsQ0FBUDtBQUNEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IERpZmYgZnJvbSAnLi9iYXNlJztcbmltcG9ydCB7Z2VuZXJhdGVPcHRpb25zfSBmcm9tICcuLi91dGlsL3BhcmFtcyc7XG5cbi8vIEJhc2VkIG9uIGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0xhdGluX3NjcmlwdF9pbl9Vbmljb2RlXG4vL1xuLy8gUmFuZ2VzIGFuZCBleGNlcHRpb25zOlxuLy8gTGF0aW4tMSBTdXBwbGVtZW50LCAwMDgw4oCTMDBGRlxuLy8gIC0gVSswMEQ3ICDDlyBNdWx0aXBsaWNhdGlvbiBzaWduXG4vLyAgLSBVKzAwRjcgIMO3IERpdmlzaW9uIHNpZ25cbi8vIExhdGluIEV4dGVuZGVkLUEsIDAxMDDigJMwMTdGXG4vLyBMYXRpbiBFeHRlbmRlZC1CLCAwMTgw4oCTMDI0RlxuLy8gSVBBIEV4dGVuc2lvbnMsIDAyNTDigJMwMkFGXG4vLyBTcGFjaW5nIE1vZGlmaWVyIExldHRlcnMsIDAyQjDigJMwMkZGXG4vLyAgLSBVKzAyQzcgIMuHICYjNzExOyAgQ2Fyb25cbi8vICAtIFUrMDJEOCAgy5ggJiM3Mjg7ICBCcmV2ZVxuLy8gIC0gVSswMkQ5ICDLmSAmIzcyOTsgIERvdCBBYm92ZVxuLy8gIC0gVSswMkRBICDLmiAmIzczMDsgIFJpbmcgQWJvdmVcbi8vICAtIFUrMDJEQiAgy5sgJiM3MzE7ICBPZ29uZWtcbi8vICAtIFUrMDJEQyAgy5wgJiM3MzI7ICBTbWFsbCBUaWxkZVxuLy8gIC0gVSswMkREICDLnSAmIzczMzsgIERvdWJsZSBBY3V0ZSBBY2NlbnRcbi8vIExhdGluIEV4dGVuZGVkIEFkZGl0aW9uYWwsIDFFMDDigJMxRUZGXG5jb25zdCBleHRlbmRlZFdvcmRDaGFycyA9IC9eW2EtekEtWlxcdXtDMH0tXFx1e0ZGfVxcdXtEOH0tXFx1e0Y2fVxcdXtGOH0tXFx1ezJDNn1cXHV7MkM4fS1cXHV7MkQ3fVxcdXsyREV9LVxcdXsyRkZ9XFx1ezFFMDB9LVxcdXsxRUZGfV0rJC91O1xuXG5jb25zdCByZVdoaXRlc3BhY2UgPSAvXFxTLztcblxuZXhwb3J0IGNvbnN0IHdvcmREaWZmID0gbmV3IERpZmYoKTtcbndvcmREaWZmLmVxdWFscyA9IGZ1bmN0aW9uKGxlZnQsIHJpZ2h0KSB7XG4gIGlmICh0aGlzLm9wdGlvbnMuaWdub3JlQ2FzZSkge1xuICAgIGxlZnQgPSBsZWZ0LnRvTG93ZXJDYXNlKCk7XG4gICAgcmlnaHQgPSByaWdodC50b0xvd2VyQ2FzZSgpO1xuICB9XG4gIHJldHVybiBsZWZ0ID09PSByaWdodCB8fCAodGhpcy5vcHRpb25zLmlnbm9yZVdoaXRlc3BhY2UgJiYgIXJlV2hpdGVzcGFjZS50ZXN0KGxlZnQpICYmICFyZVdoaXRlc3BhY2UudGVzdChyaWdodCkpO1xufTtcbndvcmREaWZmLnRva2VuaXplID0gZnVuY3Rpb24odmFsdWUpIHtcbiAgLy8gQWxsIHdoaXRlc3BhY2Ugc3ltYm9scyBleGNlcHQgbmV3bGluZSBncm91cCBpbnRvIG9uZSB0b2tlbiwgZWFjaCBuZXdsaW5lIC0gaW4gc2VwYXJhdGUgdG9rZW5cbiAgbGV0IHRva2VucyA9IHZhbHVlLnNwbGl0KC8oW15cXFNcXHJcXG5dK3xbKClbXFxde30nXCJcXHJcXG5dfFxcYikvKTtcblxuICAvLyBKb2luIHRoZSBib3VuZGFyeSBzcGxpdHMgdGhhdCB3ZSBkbyBub3QgY29uc2lkZXIgdG8gYmUgYm91bmRhcmllcy4gVGhpcyBpcyBwcmltYXJpbHkgdGhlIGV4dGVuZGVkIExhdGluIGNoYXJhY3RlciBzZXQuXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgdG9rZW5zLmxlbmd0aCAtIDE7IGkrKykge1xuICAgIC8vIElmIHdlIGhhdmUgYW4gZW1wdHkgc3RyaW5nIGluIHRoZSBuZXh0IGZpZWxkIGFuZCB3ZSBoYXZlIG9ubHkgd29yZCBjaGFycyBiZWZvcmUgYW5kIGFmdGVyLCBtZXJnZVxuICAgIGlmICghdG9rZW5zW2kgKyAxXSAmJiB0b2tlbnNbaSArIDJdXG4gICAgICAgICAgJiYgZXh0ZW5kZWRXb3JkQ2hhcnMudGVzdCh0b2tlbnNbaV0pXG4gICAgICAgICAgJiYgZXh0ZW5kZWRXb3JkQ2hhcnMudGVzdCh0b2tlbnNbaSArIDJdKSkge1xuICAgICAgdG9rZW5zW2ldICs9IHRva2Vuc1tpICsgMl07XG4gICAgICB0b2tlbnMuc3BsaWNlKGkgKyAxLCAyKTtcbiAgICAgIGktLTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gdG9rZW5zO1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIGRpZmZXb3JkcyhvbGRTdHIsIG5ld1N0ciwgb3B0aW9ucykge1xuICBvcHRpb25zID0gZ2VuZXJhdGVPcHRpb25zKG9wdGlvbnMsIHtpZ25vcmVXaGl0ZXNwYWNlOiB0cnVlfSk7XG4gIHJldHVybiB3b3JkRGlmZi5kaWZmKG9sZFN0ciwgbmV3U3RyLCBvcHRpb25zKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRpZmZXb3Jkc1dpdGhTcGFjZShvbGRTdHIsIG5ld1N0ciwgb3B0aW9ucykge1xuICByZXR1cm4gd29yZERpZmYuZGlmZihvbGRTdHIsIG5ld1N0ciwgb3B0aW9ucyk7XG59XG4iXX0=\n","/*istanbul ignore start*/\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"Diff\", {\n enumerable: true,\n get: function get() {\n return _base[\"default\"];\n }\n});\nObject.defineProperty(exports, \"diffChars\", {\n enumerable: true,\n get: function get() {\n return _character.diffChars;\n }\n});\nObject.defineProperty(exports, \"diffWords\", {\n enumerable: true,\n get: function get() {\n return _word.diffWords;\n }\n});\nObject.defineProperty(exports, \"diffWordsWithSpace\", {\n enumerable: true,\n get: function get() {\n return _word.diffWordsWithSpace;\n }\n});\nObject.defineProperty(exports, \"diffLines\", {\n enumerable: true,\n get: function get() {\n return _line.diffLines;\n }\n});\nObject.defineProperty(exports, \"diffTrimmedLines\", {\n enumerable: true,\n get: function get() {\n return _line.diffTrimmedLines;\n }\n});\nObject.defineProperty(exports, \"diffSentences\", {\n enumerable: true,\n get: function get() {\n return _sentence.diffSentences;\n }\n});\nObject.defineProperty(exports, \"diffCss\", {\n enumerable: true,\n get: function get() {\n return _css.diffCss;\n }\n});\nObject.defineProperty(exports, \"diffJson\", {\n enumerable: true,\n get: function get() {\n return _json.diffJson;\n }\n});\nObject.defineProperty(exports, \"canonicalize\", {\n enumerable: true,\n get: function get() {\n return _json.canonicalize;\n }\n});\nObject.defineProperty(exports, \"diffArrays\", {\n enumerable: true,\n get: function get() {\n return _array.diffArrays;\n }\n});\nObject.defineProperty(exports, \"applyPatch\", {\n enumerable: true,\n get: function get() {\n return _apply.applyPatch;\n }\n});\nObject.defineProperty(exports, \"applyPatches\", {\n enumerable: true,\n get: function get() {\n return _apply.applyPatches;\n }\n});\nObject.defineProperty(exports, \"parsePatch\", {\n enumerable: true,\n get: function get() {\n return _parse.parsePatch;\n }\n});\nObject.defineProperty(exports, \"merge\", {\n enumerable: true,\n get: function get() {\n return _merge.merge;\n }\n});\nObject.defineProperty(exports, \"reversePatch\", {\n enumerable: true,\n get: function get() {\n return _reverse.reversePatch;\n }\n});\nObject.defineProperty(exports, \"structuredPatch\", {\n enumerable: true,\n get: function get() {\n return _create.structuredPatch;\n }\n});\nObject.defineProperty(exports, \"createTwoFilesPatch\", {\n enumerable: true,\n get: function get() {\n return _create.createTwoFilesPatch;\n }\n});\nObject.defineProperty(exports, \"createPatch\", {\n enumerable: true,\n get: function get() {\n return _create.createPatch;\n }\n});\nObject.defineProperty(exports, \"formatPatch\", {\n enumerable: true,\n get: function get() {\n return _create.formatPatch;\n }\n});\nObject.defineProperty(exports, \"convertChangesToDMP\", {\n enumerable: true,\n get: function get() {\n return _dmp.convertChangesToDMP;\n }\n});\nObject.defineProperty(exports, \"convertChangesToXML\", {\n enumerable: true,\n get: function get() {\n return _xml.convertChangesToXML;\n }\n});\n\n/*istanbul ignore end*/\nvar\n/*istanbul ignore start*/\n_base = _interopRequireDefault(require(\"./diff/base\"))\n/*istanbul ignore end*/\n;\n\nvar\n/*istanbul ignore start*/\n_character = require(\"./diff/character\")\n/*istanbul ignore end*/\n;\n\nvar\n/*istanbul ignore start*/\n_word = require(\"./diff/word\")\n/*istanbul ignore end*/\n;\n\nvar\n/*istanbul ignore start*/\n_line = require(\"./diff/line\")\n/*istanbul ignore end*/\n;\n\nvar\n/*istanbul ignore start*/\n_sentence = require(\"./diff/sentence\")\n/*istanbul ignore end*/\n;\n\nvar\n/*istanbul ignore start*/\n_css = require(\"./diff/css\")\n/*istanbul ignore end*/\n;\n\nvar\n/*istanbul ignore start*/\n_json = require(\"./diff/json\")\n/*istanbul ignore end*/\n;\n\nvar\n/*istanbul ignore start*/\n_array = require(\"./diff/array\")\n/*istanbul ignore end*/\n;\n\nvar\n/*istanbul ignore start*/\n_apply = require(\"./patch/apply\")\n/*istanbul ignore end*/\n;\n\nvar\n/*istanbul ignore start*/\n_parse = require(\"./patch/parse\")\n/*istanbul ignore end*/\n;\n\nvar\n/*istanbul ignore start*/\n_merge = require(\"./patch/merge\")\n/*istanbul ignore end*/\n;\n\nvar\n/*istanbul ignore start*/\n_reverse = require(\"./patch/reverse\")\n/*istanbul ignore end*/\n;\n\nvar\n/*istanbul ignore start*/\n_create = require(\"./patch/create\")\n/*istanbul ignore end*/\n;\n\nvar\n/*istanbul ignore start*/\n_dmp = require(\"./convert/dmp\")\n/*istanbul ignore end*/\n;\n\nvar\n/*istanbul ignore start*/\n_xml = require(\"./convert/xml\")\n/*istanbul ignore end*/\n;\n\n/*istanbul ignore start*/ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\n/*istanbul ignore end*/\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9pbmRleC5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQWdCQTtBQUFBO0FBQUE7QUFBQTtBQUFBOztBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7O0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTs7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBOztBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7O0FBRUE7QUFBQTtBQUFBO0FBQUE7QUFBQTs7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBOztBQUVBO0FBQUE7QUFBQTtBQUFBO0FBQUE7O0FBRUE7QUFBQTtBQUFBO0FBQUE7QUFBQTs7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBOztBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7O0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTs7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBOztBQUVBO0FBQUE7QUFBQTtBQUFBO0FBQUE7O0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQSIsInNvdXJjZXNDb250ZW50IjpbIi8qIFNlZSBMSUNFTlNFIGZpbGUgZm9yIHRlcm1zIG9mIHVzZSAqL1xuXG4vKlxuICogVGV4dCBkaWZmIGltcGxlbWVudGF0aW9uLlxuICpcbiAqIFRoaXMgbGlicmFyeSBzdXBwb3J0cyB0aGUgZm9sbG93aW5nIEFQSXM6XG4gKiBEaWZmLmRpZmZDaGFyczogQ2hhcmFjdGVyIGJ5IGNoYXJhY3RlciBkaWZmXG4gKiBEaWZmLmRpZmZXb3JkczogV29yZCAoYXMgZGVmaW5lZCBieSBcXGIgcmVnZXgpIGRpZmYgd2hpY2ggaWdub3JlcyB3aGl0ZXNwYWNlXG4gKiBEaWZmLmRpZmZMaW5lczogTGluZSBiYXNlZCBkaWZmXG4gKlxuICogRGlmZi5kaWZmQ3NzOiBEaWZmIHRhcmdldGVkIGF0IENTUyBjb250ZW50XG4gKlxuICogVGhlc2UgbWV0aG9kcyBhcmUgYmFzZWQgb24gdGhlIGltcGxlbWVudGF0aW9uIHByb3Bvc2VkIGluXG4gKiBcIkFuIE8oTkQpIERpZmZlcmVuY2UgQWxnb3JpdGhtIGFuZCBpdHMgVmFyaWF0aW9uc1wiIChNeWVycywgMTk4NikuXG4gKiBodHRwOi8vY2l0ZXNlZXJ4LmlzdC5wc3UuZWR1L3ZpZXdkb2Mvc3VtbWFyeT9kb2k9MTAuMS4xLjQuNjkyN1xuICovXG5pbXBvcnQgRGlmZiBmcm9tICcuL2RpZmYvYmFzZSc7XG5pbXBvcnQge2RpZmZDaGFyc30gZnJvbSAnLi9kaWZmL2NoYXJhY3Rlcic7XG5pbXBvcnQge2RpZmZXb3JkcywgZGlmZldvcmRzV2l0aFNwYWNlfSBmcm9tICcuL2RpZmYvd29yZCc7XG5pbXBvcnQge2RpZmZMaW5lcywgZGlmZlRyaW1tZWRMaW5lc30gZnJvbSAnLi9kaWZmL2xpbmUnO1xuaW1wb3J0IHtkaWZmU2VudGVuY2VzfSBmcm9tICcuL2RpZmYvc2VudGVuY2UnO1xuXG5pbXBvcnQge2RpZmZDc3N9IGZyb20gJy4vZGlmZi9jc3MnO1xuaW1wb3J0IHtkaWZmSnNvbiwgY2Fub25pY2FsaXplfSBmcm9tICcuL2RpZmYvanNvbic7XG5cbmltcG9ydCB7ZGlmZkFycmF5c30gZnJvbSAnLi9kaWZmL2FycmF5JztcblxuaW1wb3J0IHthcHBseVBhdGNoLCBhcHBseVBhdGNoZXN9IGZyb20gJy4vcGF0Y2gvYXBwbHknO1xuaW1wb3J0IHtwYXJzZVBhdGNofSBmcm9tICcuL3BhdGNoL3BhcnNlJztcbmltcG9ydCB7bWVyZ2V9IGZyb20gJy4vcGF0Y2gvbWVyZ2UnO1xuaW1wb3J0IHtyZXZlcnNlUGF0Y2h9IGZyb20gJy4vcGF0Y2gvcmV2ZXJzZSc7XG5pbXBvcnQge3N0cnVjdHVyZWRQYXRjaCwgY3JlYXRlVHdvRmlsZXNQYXRjaCwgY3JlYXRlUGF0Y2gsIGZvcm1hdFBhdGNofSBmcm9tICcuL3BhdGNoL2NyZWF0ZSc7XG5cbmltcG9ydCB7Y29udmVydENoYW5nZXNUb0RNUH0gZnJvbSAnLi9jb252ZXJ0L2RtcCc7XG5pbXBvcnQge2NvbnZlcnRDaGFuZ2VzVG9YTUx9IGZyb20gJy4vY29udmVydC94bWwnO1xuXG5leHBvcnQge1xuICBEaWZmLFxuXG4gIGRpZmZDaGFycyxcbiAgZGlmZldvcmRzLFxuICBkaWZmV29yZHNXaXRoU3BhY2UsXG4gIGRpZmZMaW5lcyxcbiAgZGlmZlRyaW1tZWRMaW5lcyxcbiAgZGlmZlNlbnRlbmNlcyxcblxuICBkaWZmQ3NzLFxuICBkaWZmSnNvbixcblxuICBkaWZmQXJyYXlzLFxuXG4gIHN0cnVjdHVyZWRQYXRjaCxcbiAgY3JlYXRlVHdvRmlsZXNQYXRjaCxcbiAgY3JlYXRlUGF0Y2gsXG4gIGZvcm1hdFBhdGNoLFxuICBhcHBseVBhdGNoLFxuICBhcHBseVBhdGNoZXMsXG4gIHBhcnNlUGF0Y2gsXG4gIG1lcmdlLFxuICByZXZlcnNlUGF0Y2gsXG4gIGNvbnZlcnRDaGFuZ2VzVG9ETVAsXG4gIGNvbnZlcnRDaGFuZ2VzVG9YTUwsXG4gIGNhbm9uaWNhbGl6ZVxufTtcbiJdfQ==\n","/*istanbul ignore start*/\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.applyPatch = applyPatch;\nexports.applyPatches = applyPatches;\n\n/*istanbul ignore end*/\nvar\n/*istanbul ignore start*/\n_parse = require(\"./parse\")\n/*istanbul ignore end*/\n;\n\nvar\n/*istanbul ignore start*/\n_distanceIterator = _interopRequireDefault(require(\"../util/distance-iterator\"))\n/*istanbul ignore end*/\n;\n\n/*istanbul ignore start*/ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\n/*istanbul ignore end*/\nfunction applyPatch(source, uniDiff) {\n /*istanbul ignore start*/\n var\n /*istanbul ignore end*/\n options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n\n if (typeof uniDiff === 'string') {\n uniDiff =\n /*istanbul ignore start*/\n (0,\n /*istanbul ignore end*/\n\n /*istanbul ignore start*/\n _parse\n /*istanbul ignore end*/\n .\n /*istanbul ignore start*/\n parsePatch)\n /*istanbul ignore end*/\n (uniDiff);\n }\n\n if (Array.isArray(uniDiff)) {\n if (uniDiff.length > 1) {\n throw new Error('applyPatch only works with a single input.');\n }\n\n uniDiff = uniDiff[0];\n } // Apply the diff to the input\n\n\n var lines = source.split(/\\r\\n|[\\n\\v\\f\\r\\x85]/),\n delimiters = source.match(/\\r\\n|[\\n\\v\\f\\r\\x85]/g) || [],\n hunks = uniDiff.hunks,\n compareLine = options.compareLine || function (lineNumber, line, operation, patchContent)\n /*istanbul ignore start*/\n {\n return (\n /*istanbul ignore end*/\n line === patchContent\n );\n },\n errorCount = 0,\n fuzzFactor = options.fuzzFactor || 0,\n minLine = 0,\n offset = 0,\n removeEOFNL,\n addEOFNL;\n /**\n * Checks if the hunk exactly fits on the provided location\n */\n\n\n function hunkFits(hunk, toPos) {\n for (var j = 0; j < hunk.lines.length; j++) {\n var line = hunk.lines[j],\n operation = line.length > 0 ? line[0] : ' ',\n content = line.length > 0 ? line.substr(1) : line;\n\n if (operation === ' ' || operation === '-') {\n // Context sanity check\n if (!compareLine(toPos + 1, lines[toPos], operation, content)) {\n errorCount++;\n\n if (errorCount > fuzzFactor) {\n return false;\n }\n }\n\n toPos++;\n }\n }\n\n return true;\n } // Search best fit offsets for each hunk based on the previous ones\n\n\n for (var i = 0; i < hunks.length; i++) {\n var hunk = hunks[i],\n maxLine = lines.length - hunk.oldLines,\n localOffset = 0,\n toPos = offset + hunk.oldStart - 1;\n var iterator =\n /*istanbul ignore start*/\n (0,\n /*istanbul ignore end*/\n\n /*istanbul ignore start*/\n _distanceIterator\n /*istanbul ignore end*/\n [\n /*istanbul ignore start*/\n \"default\"\n /*istanbul ignore end*/\n ])(toPos, minLine, maxLine);\n\n for (; localOffset !== undefined; localOffset = iterator()) {\n if (hunkFits(hunk, toPos + localOffset)) {\n hunk.offset = offset += localOffset;\n break;\n }\n }\n\n if (localOffset === undefined) {\n return false;\n } // Set lower text limit to end of the current hunk, so next ones don't try\n // to fit over already patched text\n\n\n minLine = hunk.offset + hunk.oldStart + hunk.oldLines;\n } // Apply patch hunks\n\n\n var diffOffset = 0;\n\n for (var _i = 0; _i < hunks.length; _i++) {\n var _hunk = hunks[_i],\n _toPos = _hunk.oldStart + _hunk.offset + diffOffset - 1;\n\n diffOffset += _hunk.newLines - _hunk.oldLines;\n\n for (var j = 0; j < _hunk.lines.length; j++) {\n var line = _hunk.lines[j],\n operation = line.length > 0 ? line[0] : ' ',\n content = line.length > 0 ? line.substr(1) : line,\n delimiter = _hunk.linedelimiters && _hunk.linedelimiters[j] || '\\n';\n\n if (operation === ' ') {\n _toPos++;\n } else if (operation === '-') {\n lines.splice(_toPos, 1);\n delimiters.splice(_toPos, 1);\n /* istanbul ignore else */\n } else if (operation === '+') {\n lines.splice(_toPos, 0, content);\n delimiters.splice(_toPos, 0, delimiter);\n _toPos++;\n } else if (operation === '\\\\') {\n var previousOperation = _hunk.lines[j - 1] ? _hunk.lines[j - 1][0] : null;\n\n if (previousOperation === '+') {\n removeEOFNL = true;\n } else if (previousOperation === '-') {\n addEOFNL = true;\n }\n }\n }\n } // Handle EOFNL insertion/removal\n\n\n if (removeEOFNL) {\n while (!lines[lines.length - 1]) {\n lines.pop();\n delimiters.pop();\n }\n } else if (addEOFNL) {\n lines.push('');\n delimiters.push('\\n');\n }\n\n for (var _k = 0; _k < lines.length - 1; _k++) {\n lines[_k] = lines[_k] + delimiters[_k];\n }\n\n return lines.join('');\n} // Wrapper that supports multiple file patches via callbacks.\n\n\nfunction applyPatches(uniDiff, options) {\n if (typeof uniDiff === 'string') {\n uniDiff =\n /*istanbul ignore start*/\n (0,\n /*istanbul ignore end*/\n\n /*istanbul ignore start*/\n _parse\n /*istanbul ignore end*/\n .\n /*istanbul ignore start*/\n parsePatch)\n /*istanbul ignore end*/\n (uniDiff);\n }\n\n var currentIndex = 0;\n\n function processIndex() {\n var index = uniDiff[currentIndex++];\n\n if (!index) {\n return options.complete();\n }\n\n options.loadFile(index, function (err, data) {\n if (err) {\n return options.complete(err);\n }\n\n var updatedContent = applyPatch(data, index, options);\n options.patched(index, updatedContent, function (err) {\n if (err) {\n return options.complete(err);\n }\n\n processIndex();\n });\n });\n }\n\n processIndex();\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wYXRjaC9hcHBseS5qcyJdLCJuYW1lcyI6WyJhcHBseVBhdGNoIiwic291cmNlIiwidW5pRGlmZiIsIm9wdGlvbnMiLCJwYXJzZVBhdGNoIiwiQXJyYXkiLCJpc0FycmF5IiwibGVuZ3RoIiwiRXJyb3IiLCJsaW5lcyIsInNwbGl0IiwiZGVsaW1pdGVycyIsIm1hdGNoIiwiaHVua3MiLCJjb21wYXJlTGluZSIsImxpbmVOdW1iZXIiLCJsaW5lIiwib3BlcmF0aW9uIiwicGF0Y2hDb250ZW50IiwiZXJyb3JDb3VudCIsImZ1enpGYWN0b3IiLCJtaW5MaW5lIiwib2Zmc2V0IiwicmVtb3ZlRU9GTkwiLCJhZGRFT0ZOTCIsImh1bmtGaXRzIiwiaHVuayIsInRvUG9zIiwiaiIsImNvbnRlbnQiLCJzdWJzdHIiLCJpIiwibWF4TGluZSIsIm9sZExpbmVzIiwibG9jYWxPZmZzZXQiLCJvbGRTdGFydCIsIml0ZXJhdG9yIiwiZGlzdGFuY2VJdGVyYXRvciIsInVuZGVmaW5lZCIsImRpZmZPZmZzZXQiLCJuZXdMaW5lcyIsImRlbGltaXRlciIsImxpbmVkZWxpbWl0ZXJzIiwic3BsaWNlIiwicHJldmlvdXNPcGVyYXRpb24iLCJwb3AiLCJwdXNoIiwiX2siLCJqb2luIiwiYXBwbHlQYXRjaGVzIiwiY3VycmVudEluZGV4IiwicHJvY2Vzc0luZGV4IiwiaW5kZXgiLCJjb21wbGV0ZSIsImxvYWRGaWxlIiwiZXJyIiwiZGF0YSIsInVwZGF0ZWRDb250ZW50IiwicGF0Y2hlZCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7O0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTs7Ozs7QUFFTyxTQUFTQSxVQUFULENBQW9CQyxNQUFwQixFQUE0QkMsT0FBNUIsRUFBbUQ7QUFBQTtBQUFBO0FBQUE7QUFBZEMsRUFBQUEsT0FBYyx1RUFBSixFQUFJOztBQUN4RCxNQUFJLE9BQU9ELE9BQVAsS0FBbUIsUUFBdkIsRUFBaUM7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QUFBO0FBQUFBO0FBQUE7QUFBQSxLQUFXRixPQUFYLENBQVY7QUFDRDs7QUFFRCxNQUFJZ0QsWUFBWSxHQUFHLENBQW5COztBQUNBLFdBQVNDLFlBQVQsR0FBd0I7QUFDdEIsUUFBSUMsS0FBSyxHQUFHbEQsT0FBTyxDQUFDZ0QsWUFBWSxFQUFiLENBQW5COztBQUNBLFFBQUksQ0FBQ0UsS0FBTCxFQUFZO0FBQ1YsYUFBT2pELE9BQU8sQ0FBQ2tELFFBQVIsRUFBUDtBQUNEOztBQUVEbEQsSUFBQUEsT0FBTyxDQUFDbUQsUUFBUixDQUFpQkYsS0FBakIsRUFBd0IsVUFBU0csR0FBVCxFQUFjQyxJQUFkLEVBQW9CO0FBQzFDLFVBQUlELEdBQUosRUFBUztBQUNQLGVBQU9wRCxPQUFPLENBQUNrRCxRQUFSLENBQWlCRSxHQUFqQixDQUFQO0FBQ0Q7O0FBRUQsVUFBSUUsY0FBYyxHQUFHekQsVUFBVSxDQUFDd0QsSUFBRCxFQUFPSixLQUFQLEVBQWNqRCxPQUFkLENBQS9CO0FBQ0FBLE1BQUFBLE9BQU8sQ0FBQ3VELE9BQVIsQ0FBZ0JOLEtBQWhCLEVBQXVCSyxjQUF2QixFQUF1QyxVQUFTRixHQUFULEVBQWM7QUFDbkQsWUFBSUEsR0FBSixFQUFTO0FBQ1AsaUJBQU9wRCxPQUFPLENBQUNrRCxRQUFSLENBQWlCRSxHQUFqQixDQUFQO0FBQ0Q7O0FBRURKLFFBQUFBLFlBQVk7QUFDYixPQU5EO0FBT0QsS0FiRDtBQWNEOztBQUNEQSxFQUFBQSxZQUFZO0FBQ2IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge3BhcnNlUGF0Y2h9IGZyb20gJy4vcGFyc2UnO1xuaW1wb3J0IGRpc3RhbmNlSXRlcmF0b3IgZnJvbSAnLi4vdXRpbC9kaXN0YW5jZS1pdGVyYXRvcic7XG5cbmV4cG9ydCBmdW5jdGlvbiBhcHBseVBhdGNoKHNvdXJjZSwgdW5pRGlmZiwgb3B0aW9ucyA9IHt9KSB7XG4gIGlmICh0eXBlb2YgdW5pRGlmZiA9PT0gJ3N0cmluZycpIHtcbiAgICB1bmlEaWZmID0gcGFyc2VQYXRjaCh1bmlEaWZmKTtcbiAgfVxuXG4gIGlmIChBcnJheS5pc0FycmF5KHVuaURpZmYpKSB7XG4gICAgaWYgKHVuaURpZmYubGVuZ3RoID4gMSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdhcHBseVBhdGNoIG9ubHkgd29ya3Mgd2l0aCBhIHNpbmdsZSBpbnB1dC4nKTtcbiAgICB9XG5cbiAgICB1bmlEaWZmID0gdW5pRGlmZlswXTtcbiAgfVxuXG4gIC8vIEFwcGx5IHRoZSBkaWZmIHRvIHRoZSBpbnB1dFxuICBsZXQgbGluZXMgPSBzb3VyY2Uuc3BsaXQoL1xcclxcbnxbXFxuXFx2XFxmXFxyXFx4ODVdLyksXG4gICAgICBkZWxpbWl0ZXJzID0gc291cmNlLm1hdGNoKC9cXHJcXG58W1xcblxcdlxcZlxcclxceDg1XS9nKSB8fCBbXSxcbiAgICAgIGh1bmtzID0gdW5pRGlmZi5odW5rcyxcblxuICAgICAgY29tcGFyZUxpbmUgPSBvcHRpb25zLmNvbXBhcmVMaW5lIHx8ICgobGluZU51bWJlciwgbGluZSwgb3BlcmF0aW9uLCBwYXRjaENvbnRlbnQpID0+IGxpbmUgPT09IHBhdGNoQ29udGVudCksXG4gICAgICBlcnJvckNvdW50ID0gMCxcbiAgICAgIGZ1enpGYWN0b3IgPSBvcHRpb25zLmZ1enpGYWN0b3IgfHwgMCxcbiAgICAgIG1pbkxpbmUgPSAwLFxuICAgICAgb2Zmc2V0ID0gMCxcblxuICAgICAgcmVtb3ZlRU9GTkwsXG4gICAgICBhZGRFT0ZOTDtcblxuICAvKipcbiAgICogQ2hlY2tzIGlmIHRoZSBodW5rIGV4YWN0bHkgZml0cyBvbiB0aGUgcHJvdmlkZWQgbG9jYXRpb25cbiAgICovXG4gIGZ1bmN0aW9uIGh1bmtGaXRzKGh1bmssIHRvUG9zKSB7XG4gICAgZm9yIChsZXQgaiA9IDA7IGogPCBodW5rLmxpbmVzLmxlbmd0aDsgaisrKSB7XG4gICAgICBsZXQgbGluZSA9IGh1bmsubGluZXNbal0sXG4gICAgICAgICAgb3BlcmF0aW9uID0gKGxpbmUubGVuZ3RoID4gMCA/IGxpbmVbMF0gOiAnICcpLFxuICAgICAgICAgIGNvbnRlbnQgPSAobGluZS5sZW5ndGggPiAwID8gbGluZS5zdWJzdHIoMSkgOiBsaW5lKTtcblxuICAgICAgaWYgKG9wZXJhdGlvbiA9PT0gJyAnIHx8IG9wZXJhdGlvbiA9PT0gJy0nKSB7XG4gICAgICAgIC8vIENvbnRleHQgc2FuaXR5IGNoZWNrXG4gICAgICAgIGlmICghY29tcGFyZUxpbmUodG9Qb3MgKyAxLCBsaW5lc1t0b1Bvc10sIG9wZXJhdGlvbiwgY29udGVudCkpIHtcbiAgICAgICAgICBlcnJvckNvdW50Kys7XG5cbiAgICAgICAgICBpZiAoZXJyb3JDb3VudCA+IGZ1enpGYWN0b3IpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdG9Qb3MrKztcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIC8vIFNlYXJjaCBiZXN0IGZpdCBvZmZzZXRzIGZvciBlYWNoIGh1bmsgYmFzZWQgb24gdGhlIHByZXZpb3VzIG9uZXNcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBodW5rcy5sZW5ndGg7IGkrKykge1xuICAgIGxldCBodW5rID0gaHVua3NbaV0sXG4gICAgICAgIG1heExpbmUgPSBsaW5lcy5sZW5ndGggLSBodW5rLm9sZExpbmVzLFxuICAgICAgICBsb2NhbE9mZnNldCA9IDAsXG4gICAgICAgIHRvUG9zID0gb2Zmc2V0ICsgaHVuay5vbGRTdGFydCAtIDE7XG5cbiAgICBsZXQgaXRlcmF0b3IgPSBkaXN0YW5jZUl0ZXJhdG9yKHRvUG9zLCBtaW5MaW5lLCBtYXhMaW5lKTtcblxuICAgIGZvciAoOyBsb2NhbE9mZnNldCAhPT0gdW5kZWZpbmVkOyBsb2NhbE9mZnNldCA9IGl0ZXJhdG9yKCkpIHtcbiAgICAgIGlmIChodW5rRml0cyhodW5rLCB0b1BvcyArIGxvY2FsT2Zmc2V0KSkge1xuICAgICAgICBodW5rLm9mZnNldCA9IG9mZnNldCArPSBsb2NhbE9mZnNldDtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGxvY2FsT2Zmc2V0ID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICAvLyBTZXQgbG93ZXIgdGV4dCBsaW1pdCB0byBlbmQgb2YgdGhlIGN1cnJlbnQgaHVuaywgc28gbmV4dCBvbmVzIGRvbid0IHRyeVxuICAgIC8vIHRvIGZpdCBvdmVyIGFscmVhZHkgcGF0Y2hlZCB0ZXh0XG4gICAgbWluTGluZSA9IGh1bmsub2Zmc2V0ICsgaHVuay5vbGRTdGFydCArIGh1bmsub2xkTGluZXM7XG4gIH1cblxuICAvLyBBcHBseSBwYXRjaCBodW5rc1xuICBsZXQgZGlmZk9mZnNldCA9IDA7XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgaHVua3MubGVuZ3RoOyBpKyspIHtcbiAgICBsZXQgaHVuayA9IGh1bmtzW2ldLFxuICAgICAgICB0b1BvcyA9IGh1bmsub2xkU3RhcnQgKyBodW5rLm9mZnNldCArIGRpZmZPZmZzZXQgLSAxO1xuICAgIGRpZmZPZmZzZXQgKz0gaHVuay5uZXdMaW5lcyAtIGh1bmsub2xkTGluZXM7XG5cbiAgICBmb3IgKGxldCBqID0gMDsgaiA8IGh1bmsubGluZXMubGVuZ3RoOyBqKyspIHtcbiAgICAgIGxldCBsaW5lID0gaHVuay5saW5lc1tqXSxcbiAgICAgICAgICBvcGVyYXRpb24gPSAobGluZS5sZW5ndGggPiAwID8gbGluZVswXSA6ICcgJyksXG4gICAgICAgICAgY29udGVudCA9IChsaW5lLmxlbmd0aCA+IDAgPyBsaW5lLnN1YnN0cigxKSA6IGxpbmUpLFxuICAgICAgICAgIGRlbGltaXRlciA9IGh1bmsubGluZWRlbGltaXRlcnMgJiYgaHVuay5saW5lZGVsaW1pdGVyc1tqXSB8fCAnXFxuJztcblxuICAgICAgaWYgKG9wZXJhdGlvbiA9PT0gJyAnKSB7XG4gICAgICAgIHRvUG9zKys7XG4gICAgICB9IGVsc2UgaWYgKG9wZXJhdGlvbiA9PT0gJy0nKSB7XG4gICAgICAgIGxpbmVzLnNwbGljZSh0b1BvcywgMSk7XG4gICAgICAgIGRlbGltaXRlcnMuc3BsaWNlKHRvUG9zLCAxKTtcbiAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgICB9IGVsc2UgaWYgKG9wZXJhdGlvbiA9PT0gJysnKSB7XG4gICAgICAgIGxpbmVzLnNwbGljZSh0b1BvcywgMCwgY29udGVudCk7XG4gICAgICAgIGRlbGltaXRlcnMuc3BsaWNlKHRvUG9zLCAwLCBkZWxpbWl0ZXIpO1xuICAgICAgICB0b1BvcysrO1xuICAgICAgfSBlbHNlIGlmIChvcGVyYXRpb24gPT09ICdcXFxcJykge1xuICAgICAgICBsZXQgcHJldmlvdXNPcGVyYXRpb24gPSBodW5rLmxpbmVzW2ogLSAxXSA/IGh1bmsubGluZXNbaiAtIDFdWzBdIDogbnVsbDtcbiAgICAgICAgaWYgKHByZXZpb3VzT3BlcmF0aW9uID09PSAnKycpIHtcbiAgICAgICAgICByZW1vdmVFT0ZOTCA9IHRydWU7XG4gICAgICAgIH0gZWxzZSBpZiAocHJldmlvdXNPcGVyYXRpb24gPT09ICctJykge1xuICAgICAgICAgIGFkZEVPRk5MID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vIEhhbmRsZSBFT0ZOTCBpbnNlcnRpb24vcmVtb3ZhbFxuICBpZiAocmVtb3ZlRU9GTkwpIHtcbiAgICB3aGlsZSAoIWxpbmVzW2xpbmVzLmxlbmd0aCAtIDFdKSB7XG4gICAgICBsaW5lcy5wb3AoKTtcbiAgICAgIGRlbGltaXRlcnMucG9wKCk7XG4gICAgfVxuICB9IGVsc2UgaWYgKGFkZEVPRk5MKSB7XG4gICAgbGluZXMucHVzaCgnJyk7XG4gICAgZGVsaW1pdGVycy5wdXNoKCdcXG4nKTtcbiAgfVxuICBmb3IgKGxldCBfayA9IDA7IF9rIDwgbGluZXMubGVuZ3RoIC0gMTsgX2srKykge1xuICAgIGxpbmVzW19rXSA9IGxpbmVzW19rXSArIGRlbGltaXRlcnNbX2tdO1xuICB9XG4gIHJldHVybiBsaW5lcy5qb2luKCcnKTtcbn1cblxuLy8gV3JhcHBlciB0aGF0IHN1cHBvcnRzIG11bHRpcGxlIGZpbGUgcGF0Y2hlcyB2aWEgY2FsbGJhY2tzLlxuZXhwb3J0IGZ1bmN0aW9uIGFwcGx5UGF0Y2hlcyh1bmlEaWZmLCBvcHRpb25zKSB7XG4gIGlmICh0eXBlb2YgdW5pRGlmZiA9PT0gJ3N0cmluZycpIHtcbiAgICB1bmlEaWZmID0gcGFyc2VQYXRjaCh1bmlEaWZmKTtcbiAgfVxuXG4gIGxldCBjdXJyZW50SW5kZXggPSAwO1xuICBmdW5jdGlvbiBwcm9jZXNzSW5kZXgoKSB7XG4gICAgbGV0IGluZGV4ID0gdW5pRGlmZltjdXJyZW50SW5kZXgrK107XG4gICAgaWYgKCFpbmRleCkge1xuICAgICAgcmV0dXJuIG9wdGlvbnMuY29tcGxldGUoKTtcbiAgICB9XG5cbiAgICBvcHRpb25zLmxvYWRGaWxlKGluZGV4LCBmdW5jdGlvbihlcnIsIGRhdGEpIHtcbiAgICAgIGlmIChlcnIpIHtcbiAgICAgICAgcmV0dXJuIG9wdGlvbnMuY29tcGxldGUoZXJyKTtcbiAgICAgIH1cblxuICAgICAgbGV0IHVwZGF0ZWRDb250ZW50ID0gYXBwbHlQYXRjaChkYXRhLCBpbmRleCwgb3B0aW9ucyk7XG4gICAgICBvcHRpb25zLnBhdGNoZWQoaW5kZXgsIHVwZGF0ZWRDb250ZW50LCBmdW5jdGlvbihlcnIpIHtcbiAgICAgICAgaWYgKGVycikge1xuICAgICAgICAgIHJldHVybiBvcHRpb25zLmNvbXBsZXRlKGVycik7XG4gICAgICAgIH1cblxuICAgICAgICBwcm9jZXNzSW5kZXgoKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG4gIHByb2Nlc3NJbmRleCgpO1xufVxuIl19\n","/*istanbul ignore start*/\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.structuredPatch = structuredPatch;\nexports.formatPatch = formatPatch;\nexports.createTwoFilesPatch = createTwoFilesPatch;\nexports.createPatch = createPatch;\n\n/*istanbul ignore end*/\nvar\n/*istanbul ignore start*/\n_line = require(\"../diff/line\")\n/*istanbul ignore end*/\n;\n\n/*istanbul ignore start*/ function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && Symbol.iterator in Object(iter)) return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\n/*istanbul ignore end*/\nfunction structuredPatch(oldFileName, newFileName, oldStr, newStr, oldHeader, newHeader, options) {\n if (!options) {\n options = {};\n }\n\n if (typeof options.context === 'undefined') {\n options.context = 4;\n }\n\n var diff =\n /*istanbul ignore start*/\n (0,\n /*istanbul ignore end*/\n\n /*istanbul ignore start*/\n _line\n /*istanbul ignore end*/\n .\n /*istanbul ignore start*/\n diffLines)\n /*istanbul ignore end*/\n (oldStr, newStr, options);\n\n if (!diff) {\n return;\n }\n\n diff.push({\n value: '',\n lines: []\n }); // Append an empty value to make cleanup easier\n\n function contextLines(lines) {\n return lines.map(function (entry) {\n return ' ' + entry;\n });\n }\n\n var hunks = [];\n var oldRangeStart = 0,\n newRangeStart = 0,\n curRange = [],\n oldLine = 1,\n newLine = 1;\n\n /*istanbul ignore start*/\n var _loop = function _loop(\n /*istanbul ignore end*/\n i) {\n var current = diff[i],\n lines = current.lines || current.value.replace(/\\n$/, '').split('\\n');\n current.lines = lines;\n\n if (current.added || current.removed) {\n /*istanbul ignore start*/\n var _curRange;\n\n /*istanbul ignore end*/\n // If we have previous context, start with that\n if (!oldRangeStart) {\n var prev = diff[i - 1];\n oldRangeStart = oldLine;\n newRangeStart = newLine;\n\n if (prev) {\n curRange = options.context > 0 ? contextLines(prev.lines.slice(-options.context)) : [];\n oldRangeStart -= curRange.length;\n newRangeStart -= curRange.length;\n }\n } // Output our changes\n\n\n /*istanbul ignore start*/\n\n /*istanbul ignore end*/\n\n /*istanbul ignore start*/\n (_curRange =\n /*istanbul ignore end*/\n curRange).push.apply(\n /*istanbul ignore start*/\n _curRange\n /*istanbul ignore end*/\n ,\n /*istanbul ignore start*/\n _toConsumableArray(\n /*istanbul ignore end*/\n lines.map(function (entry) {\n return (current.added ? '+' : '-') + entry;\n }))); // Track the updated file position\n\n\n if (current.added) {\n newLine += lines.length;\n } else {\n oldLine += lines.length;\n }\n } else {\n // Identical context lines. Track line changes\n if (oldRangeStart) {\n // Close out any changes that have been output (or join overlapping)\n if (lines.length <= options.context * 2 && i < diff.length - 2) {\n /*istanbul ignore start*/\n var _curRange2;\n\n /*istanbul ignore end*/\n // Overlapping\n\n /*istanbul ignore start*/\n\n /*istanbul ignore end*/\n\n /*istanbul ignore start*/\n (_curRange2 =\n /*istanbul ignore end*/\n curRange).push.apply(\n /*istanbul ignore start*/\n _curRange2\n /*istanbul ignore end*/\n ,\n /*istanbul ignore start*/\n _toConsumableArray(\n /*istanbul ignore end*/\n contextLines(lines)));\n } else {\n /*istanbul ignore start*/\n var _curRange3;\n\n /*istanbul ignore end*/\n // end the range and output\n var contextSize = Math.min(lines.length, options.context);\n\n /*istanbul ignore start*/\n\n /*istanbul ignore end*/\n\n /*istanbul ignore start*/\n (_curRange3 =\n /*istanbul ignore end*/\n curRange).push.apply(\n /*istanbul ignore start*/\n _curRange3\n /*istanbul ignore end*/\n ,\n /*istanbul ignore start*/\n _toConsumableArray(\n /*istanbul ignore end*/\n contextLines(lines.slice(0, contextSize))));\n\n var hunk = {\n oldStart: oldRangeStart,\n oldLines: oldLine - oldRangeStart + contextSize,\n newStart: newRangeStart,\n newLines: newLine - newRangeStart + contextSize,\n lines: curRange\n };\n\n if (i >= diff.length - 2 && lines.length <= options.context) {\n // EOF is inside this hunk\n var oldEOFNewline = /\\n$/.test(oldStr);\n var newEOFNewline = /\\n$/.test(newStr);\n var noNlBeforeAdds = lines.length == 0 && curRange.length > hunk.oldLines;\n\n if (!oldEOFNewline && noNlBeforeAdds && oldStr.length > 0) {\n // special case: old has no eol and no trailing context; no-nl can end up before adds\n // however, if the old file is empty, do not output the no-nl line\n curRange.splice(hunk.oldLines, 0, '\\\\ No newline at end of file');\n }\n\n if (!oldEOFNewline && !noNlBeforeAdds || !newEOFNewline) {\n curRange.push('\\\\ No newline at end of file');\n }\n }\n\n hunks.push(hunk);\n oldRangeStart = 0;\n newRangeStart = 0;\n curRange = [];\n }\n }\n\n oldLine += lines.length;\n newLine += lines.length;\n }\n };\n\n for (var i = 0; i < diff.length; i++) {\n /*istanbul ignore start*/\n _loop(\n /*istanbul ignore end*/\n i);\n }\n\n return {\n oldFileName: oldFileName,\n newFileName: newFileName,\n oldHeader: oldHeader,\n newHeader: newHeader,\n hunks: hunks\n };\n}\n\nfunction formatPatch(diff) {\n if (Array.isArray(diff)) {\n return diff.map(formatPatch).join('\\n');\n }\n\n var ret = [];\n\n if (diff.oldFileName == diff.newFileName) {\n ret.push('Index: ' + diff.oldFileName);\n }\n\n ret.push('===================================================================');\n ret.push('--- ' + diff.oldFileName + (typeof diff.oldHeader === 'undefined' ? '' : '\\t' + diff.oldHeader));\n ret.push('+++ ' + diff.newFileName + (typeof diff.newHeader === 'undefined' ? '' : '\\t' + diff.newHeader));\n\n for (var i = 0; i < diff.hunks.length; i++) {\n var hunk = diff.hunks[i]; // Unified Diff Format quirk: If the chunk size is 0,\n // the first number is one lower than one would expect.\n // https://www.artima.com/weblogs/viewpost.jsp?thread=164293\n\n if (hunk.oldLines === 0) {\n hunk.oldStart -= 1;\n }\n\n if (hunk.newLines === 0) {\n hunk.newStart -= 1;\n }\n\n ret.push('@@ -' + hunk.oldStart + ',' + hunk.oldLines + ' +' + hunk.newStart + ',' + hunk.newLines + ' @@');\n ret.push.apply(ret, hunk.lines);\n }\n\n return ret.join('\\n') + '\\n';\n}\n\nfunction createTwoFilesPatch(oldFileName, newFileName, oldStr, newStr, oldHeader, newHeader, options) {\n return formatPatch(structuredPatch(oldFileName, newFileName, oldStr, newStr, oldHeader, newHeader, options));\n}\n\nfunction createPatch(fileName, oldStr, newStr, oldHeader, newHeader, options) {\n return createTwoFilesPatch(fileName, fileName, oldStr, newStr, oldHeader, newHeader, options);\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wYXRjaC9jcmVhdGUuanMiXSwibmFtZXMiOlsic3RydWN0dXJlZFBhdGNoIiwib2xkRmlsZU5hbWUiLCJuZXdGaWxlTmFtZSIsIm9sZFN0ciIsIm5ld1N0ciIsIm9sZEhlYWRlciIsIm5ld0hlYWRlciIsIm9wdGlvbnMiLCJjb250ZXh0IiwiZGlmZiIsImRpZmZMaW5lcyIsInB1c2giLCJ2YWx1ZSIsImxpbmVzIiwiY29udGV4dExpbmVzIiwibWFwIiwiZW50cnkiLCJodW5rcyIsIm9sZFJhbmdlU3RhcnQiLCJuZXdSYW5nZVN0YXJ0IiwiY3VyUmFuZ2UiLCJvbGRMaW5lIiwibmV3TGluZSIsImkiLCJjdXJyZW50IiwicmVwbGFjZSIsInNwbGl0IiwiYWRkZWQiLCJyZW1vdmVkIiwicHJldiIsInNsaWNlIiwibGVuZ3RoIiwiY29udGV4dFNpemUiLCJNYXRoIiwibWluIiwiaHVuayIsIm9sZFN0YXJ0Iiwib2xkTGluZXMiLCJuZXdTdGFydCIsIm5ld0xpbmVzIiwib2xkRU9GTmV3bGluZSIsInRlc3QiLCJuZXdFT0ZOZXdsaW5lIiwibm9ObEJlZm9yZUFkZHMiLCJzcGxpY2UiLCJmb3JtYXRQYXRjaCIsIkFycmF5IiwiaXNBcnJheSIsImpvaW4iLCJyZXQiLCJhcHBseSIsImNyZWF0ZVR3b0ZpbGVzUGF0Y2giLCJjcmVhdGVQYXRjaCIsImZpbGVOYW1lIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBOzs7Ozs7Ozs7Ozs7Ozs7QUFFTyxTQUFTQSxlQUFULENBQXlCQyxXQUF6QixFQUFzQ0MsV0FBdEMsRUFBbURDLE1BQW5ELEVBQTJEQyxNQUEzRCxFQUFtRUMsU0FBbkUsRUFBOEVDLFNBQTlFLEVBQXlGQyxPQUF6RixFQUFrRztBQUN2RyxNQUFJLENBQUNBLE9BQUwsRUFBYztBQUNaQSxJQUFBQSxPQUFPLEdBQUcsRUFBVjtBQUNEOztBQUNELE1BQUksT0FBT0EsT0FBTyxDQUFDQyxPQUFmLEtB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QUNuRixTQUFPNEMsbUJBQW1CLENBQUNFLFFBQUQsRUFBV0EsUUFBWCxFQUFxQmxELE1BQXJCLEVBQTZCQyxNQUE3QixFQUFxQ0MsU0FBckMsRUFBZ0RDLFNBQWhELEVBQTJEQyxPQUEzRCxDQUExQjtBQUNEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtkaWZmTGluZXN9IGZyb20gJy4uL2RpZmYvbGluZSc7XG5cbmV4cG9ydCBmdW5jdGlvbiBzdHJ1Y3R1cmVkUGF0Y2gob2xkRmlsZU5hbWUsIG5ld0ZpbGVOYW1lLCBvbGRTdHIsIG5ld1N0ciwgb2xkSGVhZGVyLCBuZXdIZWFkZXIsIG9wdGlvbnMpIHtcbiAgaWYgKCFvcHRpb25zKSB7XG4gICAgb3B0aW9ucyA9IHt9O1xuICB9XG4gIGlmICh0eXBlb2Ygb3B0aW9ucy5jb250ZXh0ID09PSAndW5kZWZpbmVkJykge1xuICAgIG9wdGlvbnMuY29udGV4dCA9IDQ7XG4gIH1cblxuICBjb25zdCBkaWZmID0gZGlmZkxpbmVzKG9sZFN0ciwgbmV3U3RyLCBvcHRpb25zKTtcbiAgaWYoIWRpZmYpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBkaWZmLnB1c2goe3ZhbHVlOiAnJywgbGluZXM6IFtdfSk7IC8vIEFwcGVuZCBhbiBlbXB0eSB2YWx1ZSB0byBtYWtlIGNsZWFudXAgZWFzaWVyXG5cbiAgZnVuY3Rpb24gY29udGV4dExpbmVzKGxpbmVzKSB7XG4gICAgcmV0dXJuIGxpbmVzLm1hcChmdW5jdGlvbihlbnRyeSkgeyByZXR1cm4gJyAnICsgZW50cnk7IH0pO1xuICB9XG5cbiAgbGV0IGh1bmtzID0gW107XG4gIGxldCBvbGRSYW5nZVN0YXJ0ID0gMCwgbmV3UmFuZ2VTdGFydCA9IDAsIGN1clJhbmdlID0gW10sXG4gICAgICBvbGRMaW5lID0gMSwgbmV3TGluZSA9IDE7XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgZGlmZi5sZW5ndGg7IGkrKykge1xuICAgIGNvbnN0IGN1cnJlbnQgPSBkaWZmW2ldLFxuICAgICAgICAgIGxpbmVzID0gY3VycmVudC5saW5lcyB8fCBjdXJyZW50LnZhbHVlLnJlcGxhY2UoL1xcbiQvLCAnJykuc3BsaXQoJ1xcbicpO1xuICAgIGN1cnJlbnQubGluZXMgPSBsaW5lcztcblxuICAgIGlmIChjdXJyZW50LmFkZGVkIHx8IGN1cnJlbnQucmVtb3ZlZCkge1xuICAgICAgLy8gSWYgd2UgaGF2ZSBwcmV2aW91cyBjb250ZXh0LCBzdGFydCB3aXRoIHRoYXRcbiAgICAgIGlmICghb2xkUmFuZ2VTdGFydCkge1xuICAgICAgICBjb25zdCBwcmV2ID0gZGlmZltpIC0gMV07XG4gICAgICAgIG9sZFJhbmdlU3RhcnQgPSBvbGRMaW5lO1xuICAgICAgICBuZXdSYW5nZVN0YXJ0ID0gbmV3TGluZTtcblxuICAgICAgICBpZiAocHJldikge1xuICAgICAgICAgIGN1clJhbmdlID0gb3B0aW9ucy5jb250ZXh0ID4gMCA/IGNvbnRleHRMaW5lcyhwcmV2LmxpbmVzLnNsaWNlKC1vcHRpb25zLmNvbnRleHQpKSA6IFtdO1xuICAgICAgICAgIG9sZFJhbmdlU3RhcnQgLT0gY3VyUmFuZ2UubGVuZ3RoO1xuICAgICAgICAgIG5ld1JhbmdlU3RhcnQgLT0gY3VyUmFuZ2UubGVuZ3RoO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC8vIE91dHB1dCBvdXIgY2hhbmdlc1xuICAgICAgY3VyUmFuZ2UucHVzaCguLi4gbGluZXMubWFwKGZ1bmN0aW9uKGVudHJ5KSB7XG4gICAgICAgIHJldHVybiAoY3VycmVudC5hZGRlZCA/ICcrJyA6ICctJykgKyBlbnRyeTtcbiAgICAgIH0pKTtcblxuICAgICAgLy8gVHJhY2sgdGhlIHVwZGF0ZWQgZmlsZSBwb3NpdGlvblxuICAgICAgaWYgKGN1cnJlbnQuYWRkZWQpIHtcbiAgICAgICAgbmV3TGluZSArPSBsaW5lcy5sZW5ndGg7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBvbGRMaW5lICs9IGxpbmVzLmxlbmd0aDtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgLy8gSWRlbnRpY2FsIGNvbnRleHQgbGluZXMuIFRyYWNrIGxpbmUgY2hhbmdlc1xuICAgICAgaWYgKG9sZFJhbmdlU3RhcnQpIHtcbiAgICAgICAgLy8gQ2xvc2Ugb3V0IGFueSBjaGFuZ2VzIHRoYXQgaGF2ZSBiZWVuIG91dHB1dCAob3Igam9pbiBvdmVybGFwcGluZylcbiAgICAgICAgaWYgKGxpbmVzLmxlbmd0aCA8PSBvcHRpb25zLmNvbnRleHQgKiAyICYmIGkgPCBkaWZmLmxlbmd0aCAtIDIpIHtcbiAgICAgICAgICAvLyBPdmVybGFwcGluZ1xuICAgICAgICAgIGN1clJhbmdlLnB1c2goLi4uIGNvbnRleHRMaW5lcyhsaW5lcykpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIC8vIGVuZCB0aGUgcmFuZ2UgYW5kIG91dHB1dFxuICAgICAgICAgIGxldCBjb250ZXh0U2l6ZSA9IE1hdGgubWluKGxpbmVzLmxlbmd0aCwgb3B0aW9ucy5jb250ZXh0KTtcbiAgICAgICAgICBjdXJSYW5nZS5wdXNoKC4uLiBjb250ZXh0TGluZXMobGluZXMuc2xpY2UoMCwgY29udGV4dFNpemUpKSk7XG5cbiAgICAgICAgICBsZXQgaHVuayA9IHtcbiAgICAgICAgICAgIG9sZFN0YXJ0OiBvbGRSYW5nZVN0YXJ0LFxuICAgICAgICAgICAgb2xkTGluZXM6IChvbGRMaW5lIC0gb2xkUmFuZ2VTdGFydCArIGNvbnRleHRTaXplKSxcbiAgICAgICAgICAgIG5ld1N0YXJ0OiBuZXdSYW5nZVN0YXJ0LFxuICAgICAgICAgICAgbmV3TGluZXM6IChuZXdMaW5lIC0gbmV3UmFuZ2VTdGFydCArIGNvbnRleHRTaXplKSxcbiAgICAgICAgICAgIGxpbmVzOiBjdXJSYW5nZVxuICAgICAgICAgIH07XG4gICAgICAgICAgaWYgKGkgPj0gZGlmZi5sZW5ndGggLSAyICYmIGxpbmVzLmxlbmd0aCA8PSBvcHRpb25zLmNvbnRleHQpIHtcbiAgICAgICAgICAgIC8vIEVPRiBpcyBpbnNpZGUgdGhpcyBodW5rXG4gICAgICAgICAgICBsZXQgb2xkRU9GTmV3bGluZSA9ICgoL1xcbiQvKS50ZXN0KG9sZFN0cikpO1xuICAgICAgICAgICAgbGV0IG5ld0VPRk5ld2xpbmUgPSAoKC9cXG4kLykudGVzdChuZXdTdHIpKTtcbiAgICAgICAgICAgIGxldCBub05sQmVmb3JlQWRkcyA9IGxpbmVzLmxlbmd0aCA9PSAwICYmIGN1clJhbmdlLmxlbmd0aCA+IGh1bmsub2xkTGluZXM7XG4gICAgICAgICAgICBpZiAoIW9sZEVPRk5ld2xpbmUgJiYgbm9ObEJlZm9yZUFkZHMgJiYgb2xkU3RyLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgLy8gc3BlY2lhbCBjYXNlOiBvbGQgaGFzIG5vIGVvbCBhbmQgbm8gdHJhaWxpbmcgY29udGV4dDsgbm8tbmwgY2FuIGVuZCB1cCBiZWZvcmUgYWRkc1xuICAgICAgICAgICAgICAvLyBob3dldmVyLCBpZiB0aGUgb2xkIGZpbGUgaXMgZW1wdHksIGRvIG5vdCBvdXRwdXQgdGhlIG5vLW5sIGxpbmVcbiAgICAgICAgICAgICAgY3VyUmFuZ2Uuc3BsaWNlKGh1bmsub2xkTGluZXMsIDAsICdcXFxcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICgoIW9sZEVPRk5ld2xpbmUgJiYgIW5vTmxCZWZvcmVBZGRzKSB8fCAhbmV3RU9GTmV3bGluZSkge1xuICAgICAgICAgICAgICBjdXJSYW5nZS5wdXNoKCdcXFxcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgaHVua3MucHVzaChodW5rKTtcblxuICAgICAgICAgIG9sZFJhbmdlU3RhcnQgPSAwO1xuICAgICAgICAgIG5ld1JhbmdlU3RhcnQgPSAwO1xuICAgICAgICAgIGN1clJhbmdlID0gW107XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIG9sZExpbmUgKz0gbGluZXMubGVuZ3RoO1xuICAgICAgbmV3TGluZSArPSBsaW5lcy5sZW5ndGg7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBvbGRGaWxlTmFtZTogb2xkRmlsZU5hbWUsIG5ld0ZpbGVOYW1lOiBuZXdGaWxlTmFtZSxcbiAgICBvbGRIZWFkZXI6IG9sZEhlYWRlciwgbmV3SGVhZGVyOiBuZXdIZWFkZXIsXG4gICAgaHVua3M6IGh1bmtzXG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmb3JtYXRQYXRjaChkaWZmKSB7XG4gIGlmIChBcnJheS5pc0FycmF5KGRpZmYpKSB7XG4gICAgcmV0dXJuIGRpZmYubWFwKGZvcm1hdFBhdGNoKS5qb2luKCdcXG4nKTtcbiAgfVxuXG4gIGNvbnN0IHJldCA9IFtdO1xuICBpZiAoZGlmZi5vbGRGaWxlTmFtZSA9PSBkaWZmLm5ld0ZpbGVOYW1lKSB7XG4gICAgcmV0LnB1c2goJ0luZGV4OiAnICsgZGlmZi5vbGRGaWxlTmFtZSk7XG4gIH1cbiAgcmV0LnB1c2goJz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0nKTtcbiAgcmV0LnB1c2goJy0tLSAnICsgZGlmZi5vbGRGaWxlTmFtZSArICh0eXBlb2YgZGlmZi5vbGRIZWFkZXIgPT09ICd1bmRlZmluZWQnID8gJycgOiAnXFx0JyArIGRpZmYub2xkSGVhZGVyKSk7XG4gIHJldC5wdXNoKCcrKysgJyArIGRpZmYubmV3RmlsZU5hbWUgKyAodHlwZW9mIGRpZmYubmV3SGVhZGVyID09PSAndW5kZWZpbmVkJyA/ICcnIDogJ1xcdCcgKyBkaWZmLm5ld0hlYWRlcikpO1xuXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgZGlmZi5odW5rcy5sZW5ndGg7IGkrKykge1xuICAgIGNvbnN0IGh1bmsgPSBkaWZmLmh1bmtzW2ldO1xuICAgIC8vIFVuaWZpZWQgRGlmZiBGb3JtYXQgcXVpcms6IElmIHRoZSBjaHVuayBzaXplIGlzIDAsXG4gICAgLy8gdGhlIGZpcnN0IG51bWJlciBpcyBvbmUgbG93ZXIgdGhhbiBvbmUgd291bGQgZXhwZWN0LlxuICAgIC8vIGh0dHBzOi8vd3d3LmFydGltYS5jb20vd2VibG9ncy92aWV3cG9zdC5qc3A/dGhyZWFkPTE2NDI5M1xuICAgIGlmIChodW5rLm9sZExpbmVzID09PSAwKSB7XG4gICAgICBodW5rLm9sZFN0YXJ0IC09IDE7XG4gICAgfVxuICAgIGlmIChodW5rLm5ld0xpbmVzID09PSAwKSB7XG4gICAgICBodW5rLm5ld1N0YXJ0IC09IDE7XG4gICAgfVxuICAgIHJldC5wdXNoKFxuICAgICAgJ0BAIC0nICsgaHVuay5vbGRTdGFydCArICcsJyArIGh1bmsub2xkTGluZXNcbiAgICAgICsgJyArJyArIGh1bmsubmV3U3RhcnQgKyAnLCcgKyBodW5rLm5ld0xpbmVzXG4gICAgICArICcgQEAnXG4gICAgKTtcbiAgICByZXQucHVzaC5hcHBseShyZXQsIGh1bmsubGluZXMpO1xuICB9XG5cbiAgcmV0dXJuIHJldC5qb2luKCdcXG4nKSArICdcXG4nO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlVHdvRmlsZXNQYXRjaChvbGRGaWxlTmFtZSwgbmV3RmlsZU5hbWUsIG9sZFN0ciwgbmV3U3RyLCBvbGRIZWFkZXIsIG5ld0hlYWRlciwgb3B0aW9ucykge1xuICByZXR1cm4gZm9ybWF0UGF0Y2goc3RydWN0dXJlZFBhdGNoKG9sZEZpbGVOYW1lLCBuZXdGaWxlTmFtZSwgb2xkU3RyLCBuZXdTdHIsIG9sZEhlYWRlciwgbmV3SGVhZGVyLCBvcHRpb25zKSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVQYXRjaChmaWxlTmFtZSwgb2xkU3RyLCBuZXdTdHIsIG9sZEhlYWRlciwgbmV3SGVhZGVyLCBvcHRpb25zKSB7XG4gIHJldHVybiBjcmVhdGVUd29GaWxlc1BhdGNoKGZpbGVOYW1lLCBmaWxlTmFtZSwgb2xkU3RyLCBuZXdTdHIsIG9sZEhlYWRlciwgbmV3SGVhZGVyLCBvcHRpb25zKTtcbn1cbiJdfQ==\n","/*istanbul ignore start*/\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.calcLineCount = calcLineCount;\nexports.merge = merge;\n\n/*istanbul ignore end*/\nvar\n/*istanbul ignore start*/\n_create = require(\"./create\")\n/*istanbul ignore end*/\n;\n\nvar\n/*istanbul ignore start*/\n_parse = require(\"./parse\")\n/*istanbul ignore end*/\n;\n\nvar\n/*istanbul ignore start*/\n_array = require(\"../util/array\")\n/*istanbul ignore end*/\n;\n\n/*istanbul ignore start*/ function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && Symbol.iterator in Object(iter)) return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\n/*istanbul ignore end*/\nfunction calcLineCount(hunk) {\n /*istanbul ignore start*/\n var _calcOldNewLineCount =\n /*istanbul ignore end*/\n calcOldNewLineCount(hunk.lines),\n oldLines = _calcOldNewLineCount.oldLines,\n newLines = _calcOldNewLineCount.newLines;\n\n if (oldLines !== undefined) {\n hunk.oldLines = oldLines;\n } else {\n delete hunk.oldLines;\n }\n\n if (newLines !== undefined) {\n hunk.newLines = newLines;\n } else {\n delete hunk.newLines;\n }\n}\n\nfunction merge(mine, theirs, base) {\n mine = loadPatch(mine, base);\n theirs = loadPatch(theirs, base);\n var ret = {}; // For index we just let it pass through as it doesn't have any necessary meaning.\n // Leaving sanity checks on this to the API consumer that may know more about the\n // meaning in their own context.\n\n if (mine.index || theirs.index) {\n ret.index = mine.index || theirs.index;\n }\n\n if (mine.newFileName || theirs.newFileName) {\n if (!fileNameChanged(mine)) {\n // No header or no change in ours, use theirs (and ours if theirs does not exist)\n ret.oldFileName = theirs.oldFileName || mine.oldFileName;\n ret.newFileName = theirs.newFileName || mine.newFileName;\n ret.oldHeader = theirs.oldHeader || mine.oldHeader;\n ret.newHeader = theirs.newHeader || mine.newHeader;\n } else if (!fileNameChanged(theirs)) {\n // No header or no change in theirs, use ours\n ret.oldFileName = mine.oldFileName;\n ret.newFileName = mine.newFileName;\n ret.oldHeader = mine.oldHeader;\n ret.newHeader = mine.newHeader;\n } else {\n // Both changed... figure it out\n ret.oldFileName = selectField(ret, mine.oldFileName, theirs.oldFileName);\n ret.newFileName = selectField(ret, mine.newFileName, theirs.newFileName);\n ret.oldHeader = selectField(ret, mine.oldHeader, theirs.oldHeader);\n ret.newHeader = selectField(ret, mine.newHeader, theirs.newHeader);\n }\n }\n\n ret.hunks = [];\n var mineIndex = 0,\n theirsIndex = 0,\n mineOffset = 0,\n theirsOffset = 0;\n\n while (mineIndex < mine.hunks.length || theirsIndex < theirs.hunks.length) {\n var mineCurrent = mine.hunks[mineIndex] || {\n oldStart: Infinity\n },\n theirsCurrent = theirs.hunks[theirsIndex] || {\n oldStart: Infinity\n };\n\n if (hunkBefore(mineCurrent, theirsCurrent)) {\n // This patch does not overlap with any of the others, yay.\n ret.hunks.push(cloneHunk(mineCurrent, mineOffset));\n mineIndex++;\n theirsOffset += mineCurrent.newLines - mineCurrent.oldLines;\n } else if (hunkBefore(theirsCurrent, mineCurrent)) {\n // This patch does not overlap with any of the others, yay.\n ret.hunks.push(cloneHunk(theirsCurrent, theirsOffset));\n theirsIndex++;\n mineOffset += theirsCurrent.newLines - theirsCurrent.oldLines;\n } else {\n // Overlap, merge as best we can\n var mergedHunk = {\n oldStart: Math.min(mineCurrent.oldStart, theirsCurrent.oldStart),\n oldLines: 0,\n newStart: Math.min(mineCurrent.newStart + mineOffset, theirsCurrent.oldStart + theirsOffset),\n newLines: 0,\n lines: []\n };\n mergeLines(mergedHunk, mineCurrent.oldStart, mineCurrent.lines, theirsCurrent.oldStart, theirsCurrent.lines);\n theirsIndex++;\n mineIndex++;\n ret.hunks.push(mergedHunk);\n }\n }\n\n return ret;\n}\n\nfunction loadPatch(param, base) {\n if (typeof param === 'string') {\n if (/^@@/m.test(param) || /^Index:/m.test(param)) {\n return (\n /*istanbul ignore start*/\n (0,\n /*istanbul ignore end*/\n\n /*istanbul ignore start*/\n _parse\n /*istanbul ignore end*/\n .\n /*istanbul ignore start*/\n parsePatch)\n /*istanbul ignore end*/\n (param)[0]\n );\n }\n\n if (!base) {\n throw new Error('Must provide a base reference or pass in a patch');\n }\n\n return (\n /*istanbul ignore start*/\n (0,\n /*istanbul ignore end*/\n\n /*istanbul ignore start*/\n _create\n /*istanbul ignore end*/\n .\n /*istanbul ignore start*/\n structuredPatch)\n /*istanbul ignore end*/\n (undefined, undefined, base, param)\n );\n }\n\n return param;\n}\n\nfunction fileNameChanged(patch) {\n return patch.newFileName && patch.newFileName !== patch.oldFileName;\n}\n\nfunction selectField(index, mine, theirs) {\n if (mine === theirs) {\n return mine;\n } else {\n index.conflict = true;\n return {\n mine: mine,\n theirs: theirs\n };\n }\n}\n\nfunction hunkBefore(test, check) {\n return test.oldStart < check.oldStart && test.oldStart + test.oldLines < check.oldStart;\n}\n\nfunction cloneHunk(hunk, offset) {\n return {\n oldStart: hunk.oldStart,\n oldLines: hunk.oldLines,\n newStart: hunk.newStart + offset,\n newLines: hunk.newLines,\n lines: hunk.lines\n };\n}\n\nfunction mergeLines(hunk, mineOffset, mineLines, theirOffset, theirLines) {\n // This will generally result in a conflicted hunk, but there are cases where the context\n // is the only overlap where we can successfully merge the content here.\n var mine = {\n offset: mineOffset,\n lines: mineLines,\n index: 0\n },\n their = {\n offset: theirOffset,\n lines: theirLines,\n index: 0\n }; // Handle any leading content\n\n insertLeading(hunk, mine, their);\n insertLeading(hunk, their, mine); // Now in the overlap content. Scan through and select the best changes from each.\n\n while (mine.index < mine.lines.length && their.index < their.lines.length) {\n var mineCurrent = mine.lines[mine.index],\n theirCurrent = their.lines[their.index];\n\n if ((mineCurrent[0] === '-' || mineCurrent[0] === '+') && (theirCurrent[0] === '-' || theirCurrent[0] === '+')) {\n // Both modified ...\n mutualChange(hunk, mine, their);\n } else if (mineCurrent[0] === '+' && theirCurrent[0] === ' ') {\n /*istanbul ignore start*/\n var _hunk$lines;\n\n /*istanbul ignore end*/\n // Mine inserted\n\n /*istanbul ignore start*/\n\n /*istanbul ignore end*/\n\n /*istanbul ignore start*/\n (_hunk$lines =\n /*istanbul ignore end*/\n hunk.lines).push.apply(\n /*istanbul ignore start*/\n _hunk$lines\n /*istanbul ignore end*/\n ,\n /*istanbul ignore start*/\n _toConsumableArray(\n /*istanbul ignore end*/\n collectChange(mine)));\n } else if (theirCurrent[0] === '+' && mineCurrent[0] === ' ') {\n /*istanbul ignore start*/\n var _hunk$lines2;\n\n /*istanbul ignore end*/\n // Theirs inserted\n\n /*istanbul ignore start*/\n\n /*istanbul ignore end*/\n\n /*istanbul ignore start*/\n (_hunk$lines2 =\n /*istanbul ignore end*/\n hunk.lines).push.apply(\n /*istanbul ignore start*/\n _hunk$lines2\n /*istanbul ignore end*/\n ,\n /*istanbul ignore start*/\n _toConsumableArray(\n /*istanbul ignore end*/\n collectChange(their)));\n } else if (mineCurrent[0] === '-' && theirCurrent[0] === ' ') {\n // Mine removed or edited\n removal(hunk, mine, their);\n } else if (theirCurrent[0] === '-' && mineCurrent[0] === ' ') {\n // Their removed or edited\n removal(hunk, their, mine, true);\n } else if (mineCurrent === theirCurrent) {\n // Context identity\n hunk.lines.push(mineCurrent);\n mine.index++;\n their.index++;\n } else {\n // Context mismatch\n conflict(hunk, collectChange(mine), collectChange(their));\n }\n } // Now push anything that may be remaining\n\n\n insertTrailing(hunk, mine);\n insertTrailing(hunk, their);\n calcLineCount(hunk);\n}\n\nfunction mutualChange(hunk, mine, their) {\n var myChanges = collectChange(mine),\n theirChanges = collectChange(their);\n\n if (allRemoves(myChanges) && allRemoves(theirChanges)) {\n // Special case for remove changes that are supersets of one another\n if (\n /*istanbul ignore start*/\n (0,\n /*istanbul ignore end*/\n\n /*istanbul ignore start*/\n _array\n /*istanbul ignore end*/\n .\n /*istanbul ignore start*/\n arrayStartsWith)\n /*istanbul ignore end*/\n (myChanges, theirChanges) && skipRemoveSuperset(their, myChanges, myChanges.length - theirChanges.length)) {\n /*istanbul ignore start*/\n var _hunk$lines3;\n\n /*istanbul ignore end*/\n\n /*istanbul ignore start*/\n\n /*istanbul ignore end*/\n\n /*istanbul ignore start*/\n (_hunk$lines3 =\n /*istanbul ignore end*/\n hunk.lines).push.apply(\n /*istanbul ignore start*/\n _hunk$lines3\n /*istanbul ignore end*/\n ,\n /*istanbul ignore start*/\n _toConsumableArray(\n /*istanbul ignore end*/\n myChanges));\n\n return;\n } else if (\n /*istanbul ignore start*/\n (0,\n /*istanbul ignore end*/\n\n /*istanbul ignore start*/\n _array\n /*istanbul ignore end*/\n .\n /*istanbul ignore start*/\n arrayStartsWith)\n /*istanbul ignore end*/\n (theirChanges, myChanges) && skipRemoveSuperset(mine, theirChanges, theirChanges.length - myChanges.length)) {\n /*istanbul ignore start*/\n var _hunk$lines4;\n\n /*istanbul ignore end*/\n\n /*istanbul ignore start*/\n\n /*istanbul ignore end*/\n\n /*istanbul ignore start*/\n (_hunk$lines4 =\n /*istanbul ignore end*/\n hunk.lines).push.apply(\n /*istanbul ignore start*/\n _hunk$lines4\n /*istanbul ignore end*/\n ,\n /*istanbul ignore start*/\n _toConsumableArray(\n /*istanbul ignore end*/\n theirChanges));\n\n return;\n }\n } else if (\n /*istanbul ignore start*/\n (0,\n /*istanbul ignore end*/\n\n /*istanbul ignore start*/\n _array\n /*istanbul ignore end*/\n .\n /*istanbul ignore start*/\n arrayEqual)\n /*istanbul ignore end*/\n (myChanges, theirChanges)) {\n /*istanbul ignore start*/\n var _hunk$lines5;\n\n /*istanbul ignore end*/\n\n /*istanbul ignore start*/\n\n /*istanbul ignore end*/\n\n /*istanbul ignore start*/\n (_hunk$lines5 =\n /*istanbul ignore end*/\n hunk.lines).push.apply(\n /*istanbul ignore start*/\n _hunk$lines5\n /*istanbul ignore end*/\n ,\n /*istanbul ignore start*/\n _toConsumableArray(\n /*istanbul ignore end*/\n myChanges));\n\n return;\n }\n\n conflict(hunk, myChanges, theirChanges);\n}\n\nfunction removal(hunk, mine, their, swap) {\n var myChanges = collectChange(mine),\n theirChanges = collectContext(their, myChanges);\n\n if (theirChanges.merged) {\n /*istanbul ignore start*/\n var _hunk$lines6;\n\n /*istanbul ignore end*/\n\n /*istanbul ignore start*/\n\n /*istanbul ignore end*/\n\n /*istanbul ignore start*/\n (_hunk$lines6 =\n /*istanbul ignore end*/\n hunk.lines).push.apply(\n /*istanbul ignore start*/\n _hunk$lines6\n /*istanbul ignore end*/\n ,\n /*istanbul ignore start*/\n _toConsumableArray(\n /*istanbul ignore end*/\n theirChanges.merged));\n } else {\n conflict(hunk, swap ? theirChanges : myChanges, swap ? myChanges : theirChanges);\n }\n}\n\nfunction conflict(hunk, mine, their) {\n hunk.conflict = true;\n hunk.lines.push({\n conflict: true,\n mine: mine,\n theirs: their\n });\n}\n\nfunction insertLeading(hunk, insert, their) {\n while (insert.offset < their.offset && insert.index < insert.lines.length) {\n var line = insert.lines[insert.index++];\n hunk.lines.push(line);\n insert.offset++;\n }\n}\n\nfunction insertTrailing(hunk, insert) {\n while (insert.index < insert.lines.length) {\n var line = insert.lines[insert.index++];\n hunk.lines.push(line);\n }\n}\n\nfunction collectChange(state) {\n var ret = [],\n operation = state.lines[state.index][0];\n\n while (state.index < state.lines.length) {\n var line = state.lines[state.index]; // Group additions that are immediately after subtractions and treat them as one \"atomic\" modify change.\n\n if (operation === '-' && line[0] === '+') {\n operation = '+';\n }\n\n if (operation === line[0]) {\n ret.push(line);\n state.index++;\n } else {\n break;\n }\n }\n\n return ret;\n}\n\nfunction collectContext(state, matchChanges) {\n var changes = [],\n merged = [],\n matchIndex = 0,\n contextChanges = false,\n conflicted = false;\n\n while (matchIndex < matchChanges.length && state.index < state.lines.length) {\n var change = state.lines[state.index],\n match = matchChanges[matchIndex]; // Once we've hit our add, then we are done\n\n if (match[0] === '+') {\n break;\n }\n\n contextChanges = contextChanges || change[0] !== ' ';\n merged.push(match);\n matchIndex++; // Consume any additions in the other block as a conflict to attempt\n // to pull in the remaining context after this\n\n if (change[0] === '+') {\n conflicted = true;\n\n while (change[0] === '+') {\n changes.push(change);\n change = state.lines[++state.index];\n }\n }\n\n if (match.substr(1) === change.substr(1)) {\n changes.push(change);\n state.index++;\n } else {\n conflicted = true;\n }\n }\n\n if ((matchChanges[matchIndex] || '')[0] === '+' && contextChanges) {\n conflicted = true;\n }\n\n if (conflicted) {\n return changes;\n }\n\n while (matchIndex < matchChanges.length) {\n merged.push(matchChanges[matchIndex++]);\n }\n\n return {\n merged: merged,\n changes: changes\n };\n}\n\nfunction allRemoves(changes) {\n return changes.reduce(function (prev, change) {\n return prev && change[0] === '-';\n }, true);\n}\n\nfunction skipRemoveSuperset(state, removeChanges, delta) {\n for (var i = 0; i < delta; i++) {\n var changeContent = removeChanges[removeChanges.length - delta + i].substr(1);\n\n if (state.lines[state.index + i] !== ' ' + changeContent) {\n return false;\n }\n }\n\n state.index += delta;\n return true;\n}\n\nfunction calcOldNewLineCount(lines) {\n var oldLines = 0;\n var newLines = 0;\n lines.forEach(function (line) {\n if (typeof line !== 'string') {\n var myCount = calcOldNewLineCount(line.mine);\n var theirCount = calcOldNewLineCount(line.theirs);\n\n if (oldLines !== undefined) {\n if (myCount.oldLines === theirCount.oldLines) {\n oldLines += myCount.oldLines;\n } else {\n oldLines = undefined;\n }\n }\n\n if (newLines !== undefined) {\n if (myCount.newLines === theirCount.newLines) {\n newLines += myCount.newLines;\n } else {\n newLines = undefined;\n }\n }\n } else {\n if (newLines !== undefined && (line[0] === '+' || line[0] === ' ')) {\n newLines++;\n }\n\n if (oldLines !== undefined && (line[0] === '-' || line[0] === ' ')) {\n oldLines++;\n }\n }\n });\n return {\n oldLines: oldLines,\n newLines: newLines\n };\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wYXRjaC9tZXJnZS5qcyJdLCJuYW1lcyI6WyJjYWxjTGluZUNvdW50IiwiaHVuayIsImNhbGNPbGROZXdMaW5lQ291bnQiLCJsaW5lcyIsIm9sZExpbmVzIiwibmV3TGluZXMiLCJ1bmRlZmluZWQiLCJtZXJnZSIsIm1pbmUiLCJ0aGVpcnMiLCJiYXNlIiwibG9hZFBhdGNoIiwicmV0IiwiaW5kZXgiLCJuZXdGaWxlTmFtZSIsImZpbGVOYW1lQ2hhbmdlZCIsIm9sZEZpbGVOYW1lIiwib2xkSGVhZGVyIiwibmV3SGVhZGVyIiwic2VsZWN0RmllbGQiLCJodW5rcyIsIm1pbmVJbmRleCIsInRoZWlyc0luZGV4IiwibWluZU9mZnNldCIsInRoZWlyc09mZnNldCIsImxlbmd0aCIsIm1pbmVDdXJyZW50Iiwib2xkU3RhcnQiLCJJbmZpbml0eSIsInRoZWlyc0N1cnJlbnQiLCJodW5rQmVmb3JlIiwicHVzaCIsImNsb25lSHVuayIsIm1lcmdlZEh1bmsiLCJNYXRoIiwibWluIiwibmV3U3RhcnQiLCJtZXJnZUxpbmVzIiwicGFyYW0iLCJ0ZXN0IiwicGFyc2VQYXRjaCIsIkVycm9yIiwic3RydWN0dXJlZFBhdGNoIiwicGF0Y2giLCJjb25mbGljdCIsImNoZWNrIiwib2Zmc2V0IiwibWluZUxpbmVzIiwidGhlaXJPZmZzZXQiLCJ0aGVpckxpbmVzIiwidGhlaXIiLCJpbnNlcnRMZWFkaW5nIiwidGhlaXJDdXJyZW50IiwibXV0dWFsQ2hhbmdlIiwiY29sbGVjdENoYW5nZSIsInJlbW92YWwiLCJpbnNlcnRUcmFpbGluZyIsIm15Q2hhbmdlcyIsInRoZWlyQ2hhbmdlcyIsImFsbFJlbW92ZXMiLCJhcnJheVN0YXJ0c1dpdGgiLCJza2lwUmVtb3ZlU3VwZXJzZXQiLCJhcnJheUVxdWFsIiwic3dhcCIsImNvbGxlY3RDb250ZXh0IiwibWVyZ2VkIiwiaW5zZXJ0IiwibGluZSIsInN0YXRlIiwib3BlcmF0aW9uIiwibWF0Y2hDaGFuZ2VzIiwiY2hhbmdlcyIsIm1hdGNoSW5kZXgiLCJjb250ZXh0Q2hhbmdlcyIsImNvbmZsaWN0ZWQiLCJjaGFuZ2UiLCJtYXRjaCIsInN1YnN0ciIsInJlZHVjZSIsInByZXYiLCJyZW1vdmVDaGFuZ2VzIiwiZGVsdGEiLCJpIiwiY2hhbmdlQ29udGVudCIsImZvckVhY2giLCJteUNvdW50IiwidGhlaXJDb3VudCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7O0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTs7QUFFQTtBQUFBO0FBQUE7QUFBQTtBQUFBOzs7Ozs7Ozs7Ozs7Ozs7QUFFTyxTQUFTQSxhQUFULENBQXVCQyxJQUF2QixFQUE2QjtBQUFBO0FBQUE7QUFBQTtBQUNMQyxFQUFBQSxtQkFBbUIsQ0FBQ0QsSUFBSSxDQUFDRSxLQUFOLENBRGQ7QUFBQSxNQUMzQkMsUUFEMkIsd0JBQzNCQSxRQUQyQjtBQUFBLE1BQ2pCQyxRQURpQix3QkFDakJBLFFBRGlCOztBQUdsQyxNQUFJRCxRQUFRLEtBQUtFLFNBQWpCLEVBQTRCO0FBQzFCTCxJQUFBQSxJQUFJLENBQUNHLFFBQUwsR0FBZ0JBLFFBQWhCO0FBQ0QsR0FGRCxNQUVPO0FBQ0wsV0FBT0gsSUFBSSxDQUFDRyxRQUFaO0FBQ0Q7O0FBRUQsTUFBSUMsUUFBUSxLQUFLQyxTQUFqQixFQUE0QjtBQUMxQkwsSUFBQUEsSUFBSSxDQUFDSSxRQUFMLEdBQWdCQSxRQUFoQjtBQUNELEdBRkQsTUFFTztBQUNMLFdBQU9KLElBQUksQ0FBQ0ksUUFBWjtBQUNEO0FBQ0Y7O0FBRU0sU0FBU0UsS0FBVCxDQUFlQyxJQUFmLEVBQXFCQyxNQUFyQixFQUE2QkMsSUFBN0IsRUFBbUM7QUFDeENGLEVBQUFBLElBQUksR0FBR0csU0FBUyxDQUFDSCxJQUFELEVBQU9FLElBQVAsQ0FBaEI7QUFDQUQsRUFBQUEsTUFBTSxHQUFHRSxTQUFTLENBQUNGLE1BQUQsRUFBU0MsSUFBVCxDQUFsQjtBQUVBLE1BQUlFLEdBQUcsR0FBRyxFQUFWLENBSndD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QUFKLEVBQW9FO0FBQ2xFL0QsUUFBQUEsUUFBUTtBQUNUO0FBQ0Y7QUFDRixHQTVCRDtBQThCQSxTQUFPO0FBQUNBLElBQUFBLFFBQVEsRUFBUkEsUUFBRDtBQUFXQyxJQUFBQSxRQUFRLEVBQVJBO0FBQVgsR0FBUDtBQUNEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtzdHJ1Y3R1cmVkUGF0Y2h9IGZyb20gJy4vY3JlYXRlJztcbmltcG9ydCB7cGFyc2VQYXRjaH0gZnJvbSAnLi9wYXJzZSc7XG5cbmltcG9ydCB7YXJyYXlFcXVhbCwgYXJyYXlTdGFydHNXaXRofSBmcm9tICcuLi91dGlsL2FycmF5JztcblxuZXhwb3J0IGZ1bmN0aW9uIGNhbGNMaW5lQ291bnQoaHVuaykge1xuICBjb25zdCB7b2xkTGluZXMsIG5ld0xpbmVzfSA9IGNhbGNPbGROZXdMaW5lQ291bnQoaHVuay5saW5lcyk7XG5cbiAgaWYgKG9sZExpbmVzICE9PSB1bmRlZmluZWQpIHtcbiAgICBodW5rLm9sZExpbmVzID0gb2xkTGluZXM7XG4gIH0gZWxzZSB7XG4gICAgZGVsZXRlIGh1bmsub2xkTGluZXM7XG4gIH1cblxuICBpZiAobmV3TGluZXMgIT09IHVuZGVmaW5lZCkge1xuICAgIGh1bmsubmV3TGluZXMgPSBuZXdMaW5lcztcbiAgfSBlbHNlIHtcbiAgICBkZWxldGUgaHVuay5uZXdMaW5lcztcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gbWVyZ2UobWluZSwgdGhlaXJzLCBiYXNlKSB7XG4gIG1pbmUgPSBsb2FkUGF0Y2gobWluZSwgYmFzZSk7XG4gIHRoZWlycyA9IGxvYWRQYXRjaCh0aGVpcnMsIGJhc2UpO1xuXG4gIGxldCByZXQgPSB7fTtcblxuICAvLyBGb3IgaW5kZXggd2UganVzdCBsZXQgaXQgcGFzcyB0aHJvdWdoIGFzIGl0IGRvZXNuJ3QgaGF2ZSBhbnkgbmVjZXNzYXJ5IG1lYW5pbmcuXG4gIC8vIExlYXZpbmcgc2FuaXR5IGNoZWNrcyBvbiB0aGlzIHRvIHRoZSBBUEkgY29uc3VtZXIgdGhhdCBtYXkga25vdyBtb3JlIGFib3V0IHRoZVxuICAvLyBtZWFuaW5nIGluIHRoZWlyIG93biBjb250ZXh0LlxuICBpZiAobWluZS5pbmRleCB8fCB0aGVpcnMuaW5kZXgpIHtcbiAgICByZXQuaW5kZXggPSBtaW5lLmluZGV4IHx8IHRoZWlycy5pbmRleDtcbiAgfVxuXG4gIGlmIChtaW5lLm5ld0ZpbGVOYW1lIHx8IHRoZWlycy5uZXdGaWxlTmFtZSkge1xuICAgIGlmICghZmlsZU5hbWVDaGFuZ2VkKG1pbmUpKSB7XG4gICAgICAvLyBObyBoZWFkZXIgb3Igbm8gY2hhbmdlIGluIG91cnMsIHVzZSB0aGVpcnMgKGFuZCBvdXJzIGlmIHRoZWlycyBkb2VzIG5vdCBleGlzdClcbiAgICAgIHJldC5vbGRGaWxlTmFtZSA9IHRoZWlycy5vbGRGaWxlTmFtZSB8fCBtaW5lLm9sZEZpbGVOYW1lO1xuICAgICAgcmV0Lm5ld0ZpbGVOYW1lID0gdGhlaXJzLm5ld0ZpbGVOYW1lIHx8IG1pbmUubmV3RmlsZU5hbWU7XG4gICAgICByZXQub2xkSGVhZGVyID0gdGhlaXJzLm9sZEhlYWRlciB8fCBtaW5lLm9sZEhlYWRlcjtcbiAgICAgIHJldC5uZXdIZWFkZXIgPSB0aGVpcnMubmV3SGVhZGVyIHx8IG1pbmUubmV3SGVhZGVyO1xuICAgIH0gZWxzZSBpZiAoIWZpbGVOYW1lQ2hhbmdlZCh0aGVpcnMpKSB7XG4gICAgICAvLyBObyBoZWFkZXIgb3Igbm8gY2hhbmdlIGluIHRoZWlycywgdXNlIG91cnNcbiAgICAgIHJldC5vbGRGaWxlTmFtZSA9IG1pbmUub2xkRmlsZU5hbWU7XG4gICAgICByZXQubmV3RmlsZU5hbWUgPSBtaW5lLm5ld0ZpbGVOYW1lO1xuICAgICAgcmV0Lm9sZEhlYWRlciA9IG1pbmUub2xkSGVhZGVyO1xuICAgICAgcmV0Lm5ld0hlYWRlciA9IG1pbmUubmV3SGVhZGVyO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBCb3RoIGNoYW5nZWQuLi4gZmlndXJlIGl0IG91dFxuICAgICAgcmV0Lm9sZEZpbGVOYW1lID0gc2VsZWN0RmllbGQocmV0LCBtaW5lLm9sZEZpbGVOYW1lLCB0aGVpcnMub2xkRmlsZU5hbWUpO1xuICAgICAgcmV0Lm5ld0ZpbGVOYW1lID0gc2VsZWN0RmllbGQocmV0LCBtaW5lLm5ld0ZpbGVOYW1lLCB0aGVpcnMubmV3RmlsZU5hbWUpO1xuICAgICAgcmV0Lm9sZEhlYWRlciA9IHNlbGVjdEZpZWxkKHJldCwgbWluZS5vbGRIZWFkZXIsIHRoZWlycy5vbGRIZWFkZXIpO1xuICAgICAgcmV0Lm5ld0hlYWRlciA9IHNlbGVjdEZpZWxkKHJldCwgbWluZS5uZXdIZWFkZXIsIHRoZWlycy5uZXdIZWFkZXIpO1xuICAgIH1cbiAgfVxuXG4gIHJldC5odW5rcyA9IFtdO1xuXG4gIGxldCBtaW5lSW5kZXggPSAwLFxuICAgICAgdGhlaXJzSW5kZXggPSAwLFxuICAgICAgbWluZU9mZnNldCA9IDAsXG4gICAgICB0aGVpcnNPZmZzZXQgPSAwO1xuXG4gIHdoaWxlIChtaW5lSW5kZXggPCBtaW5lLmh1bmtzLmxlbmd0aCB8fCB0aGVpcnNJbmRleCA8IHRoZWlycy5odW5rcy5sZW5ndGgpIHtcbiAgICBsZXQgbWluZUN1cnJlbnQgPSBtaW5lLmh1bmtzW21pbmVJbmRleF0gfHwge29sZFN0YXJ0OiBJbmZpbml0eX0sXG4gICAgICAgIHRoZWlyc0N1cnJlbnQgPSB0aGVpcnMuaHVua3NbdGhlaXJzSW5kZXhdIHx8IHtvbGRTdGFydDogSW5maW5pdHl9O1xuXG4gICAgaWYgKGh1bmtCZWZvcmUobWluZUN1cnJlbnQsIHRoZWlyc0N1cnJlbnQpKSB7XG4gICAgICAvLyBUaGlzIHBhdGNoIGRvZXMgbm90IG92ZXJsYXAgd2l0aCBhbnkgb2YgdGhlIG90aGVycywgeWF5LlxuICAgICAgcmV0Lmh1bmtzLnB1c2goY2xvbmVIdW5rKG1pbmVDdXJyZW50LCBtaW5lT2Zmc2V0KSk7XG4gICAgICBtaW5lSW5kZXgrKztcbiAgICAgIHRoZWlyc09mZnNldCArPSBtaW5lQ3VycmVudC5uZXdMaW5lcyAtIG1pbmVDdXJyZW50Lm9sZExpbmVzO1xuICAgIH0gZWxzZSBpZiAoaHVua0JlZm9yZSh0aGVpcnNDdXJyZW50LCBtaW5lQ3VycmVudCkpIHtcbiAgICAgIC8vIFRoaXMgcGF0Y2ggZG9lcyBub3Qgb3ZlcmxhcCB3aXRoIGFueSBvZiB0aGUgb3RoZXJzLCB5YXkuXG4gICAgICByZXQuaHVua3MucHVzaChjbG9uZUh1bmsodGhlaXJzQ3VycmVudCwgdGhlaXJzT2Zmc2V0KSk7XG4gICAgICB0aGVpcnNJbmRleCsrO1xuICAgICAgbWluZU9mZnNldCArPSB0aGVpcnNDdXJyZW50Lm5ld0xpbmVzIC0gdGhlaXJzQ3VycmVudC5vbGRMaW5lcztcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gT3ZlcmxhcCwgbWVyZ2UgYXMgYmVzdCB3ZSBjYW5cbiAgICAgIGxldCBtZXJnZWRIdW5rID0ge1xuICAgICAgICBvbGRTdGFydDogTWF0aC5taW4obWluZUN1cnJlbnQub2xkU3RhcnQsIHRoZWlyc0N1cnJlbnQub2xkU3RhcnQpLFxuICAgICAgICBvbGRMaW5lczogMCxcbiAgICAgICAgbmV3U3RhcnQ6IE1hdGgubWluKG1pbmVDdXJyZW50Lm5ld1N0YXJ0ICsgbWluZU9mZnNldCwgdGhlaXJzQ3VycmVudC5vbGRTdGFydCArIHRoZWlyc09mZnNldCksXG4gICAgICAgIG5ld0xpbmVzOiAwLFxuICAgICAgICBsaW5lczogW11cbiAgICAgIH07XG4gICAgICBtZXJnZUxpbmVzKG1lcmdlZEh1bmssIG1pbmVDdXJyZW50Lm9sZFN0YXJ0LCBtaW5lQ3VycmVudC5saW5lcywgdGhlaXJzQ3VycmVudC5vbGRTdGFydCwgdGhlaXJzQ3VycmVudC5saW5lcyk7XG4gICAgICB0aGVpcnNJbmRleCsrO1xuICAgICAgbWluZUluZGV4Kys7XG5cbiAgICAgIHJldC5odW5rcy5wdXNoKG1lcmdlZEh1bmspO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiByZXQ7XG59XG5cbmZ1bmN0aW9uIGxvYWRQYXRjaChwYXJhbSwgYmFzZSkge1xuICBpZiAodHlwZW9mIHBhcmFtID09PSAnc3RyaW5nJykge1xuICAgIGlmICgoL15AQC9tKS50ZXN0KHBhcmFtKSB8fCAoKC9eSW5kZXg6L20pLnRlc3QocGFyYW0pKSkge1xuICAgICAgcmV0dXJuIHBhcnNlUGF0Y2gocGFyYW0pWzBdO1xuICAgIH1cblxuICAgIGlmICghYmFzZSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdNdXN0IHByb3ZpZGUgYSBiYXNlIHJlZmVyZW5jZSBvciBwYXNzIGluIGEgcGF0Y2gnKTtcbiAgICB9XG4gICAgcmV0dXJuIHN0cnVjdHVyZWRQYXRjaCh1bmRlZmluZWQsIHVuZGVmaW5lZCwgYmFzZSwgcGFyYW0pO1xuICB9XG5cbiAgcmV0dXJuIHBhcmFtO1xufVxuXG5mdW5jdGlvbiBmaWxlTmFtZUNoYW5nZWQocGF0Y2gpIHtcbiAgcmV0dXJuIHBhdGNoLm5ld0ZpbGVOYW1lICYmIHBhdGNoLm5ld0ZpbGVOYW1lICE9PSBwYXRjaC5vbGRGaWxlTmFtZTtcbn1cblxuZnVuY3Rpb24gc2VsZWN0RmllbGQoaW5kZXgsIG1pbmUsIHRoZWlycykge1xuICBpZiAobWluZSA9PT0gdGhlaXJzKSB7XG4gICAgcmV0dXJuIG1pbmU7XG4gIH0gZWxzZSB7XG4gICAgaW5kZXguY29uZmxpY3QgPSB0cnVlO1xuICAgIHJldHVybiB7bWluZSwgdGhlaXJzfTtcbiAgfVxufVxuXG5mdW5jdGlvbiBodW5rQmVmb3JlKHRlc3QsIGNoZWNrKSB7XG4gIHJldHVybiB0ZXN0Lm9sZFN0YXJ0IDwgY2hlY2sub2xkU3RhcnRcbiAgICAmJiAodGVzdC5vbGRTdGFydCArIHRlc3Qub2xkTGluZXMpIDwgY2hlY2sub2xkU3RhcnQ7XG59XG5cbmZ1bmN0aW9uIGNsb25lSHVuayhodW5rLCBvZmZzZXQpIHtcbiAgcmV0dXJuIHtcbiAgICBvbGRTdGFydDogaHVuay5vbGRTdGFydCwgb2xkTGluZXM6IGh1bmsub2xkTGluZXMsXG4gICAgbmV3U3RhcnQ6IGh1bmsubmV3U3RhcnQgKyBvZmZzZXQsIG5ld0xpbmVzOiBodW5rLm5ld0xpbmVzLFxuICAgIGxpbmVzOiBodW5rLmxpbmVzXG4gIH07XG59XG5cbmZ1bmN0aW9uIG1lcmdlTGluZXMoaHVuaywgbWluZU9mZnNldCwgbWluZUxpbmVzLCB0aGVpck9mZnNldCwgdGhlaXJMaW5lcykge1xuICAvLyBUaGlzIHdpbGwgZ2VuZXJhbGx5IHJlc3VsdCBpbiBhIGNvbmZsaWN0ZWQgaHVuaywgYnV0IHRoZXJlIGFyZSBjYXNlcyB3aGVyZSB0aGUgY29udGV4dFxuICAvLyBpcyB0aGUgb25seSBvdmVybGFwIHdoZXJlIHdlIGNhbiBzdWNjZXNzZnVsbHkgbWVyZ2UgdGhlIGNvbnRlbnQgaGVyZS5cbiAgbGV0IG1pbmUgPSB7b2Zmc2V0OiBtaW5lT2Zmc2V0LCBsaW5lczogbWluZUxpbmVzLCBpbmRleDogMH0sXG4gICAgICB0aGVpciA9IHtvZmZzZXQ6IHRoZWlyT2Zmc2V0LCBsaW5lczogdGhlaXJMaW5lcywgaW5kZXg6IDB9O1xuXG4gIC8vIEhhbmRsZSBhbnkgbGVhZGluZyBjb250ZW50XG4gIGluc2VydExlYWRpbmcoaHVuaywgbWluZSwgdGhlaXIpO1xuICBpbnNlcnRMZWFkaW5nKGh1bmssIHRoZWlyLCBtaW5lKTtcblxuICAvLyBOb3cgaW4gdGhlIG92ZXJsYXAgY29udGVudC4gU2NhbiB0aHJvdWdoIGFuZCBzZWxlY3QgdGhlIGJlc3QgY2hhbmdlcyBmcm9tIGVhY2guXG4gIHdoaWxlIChtaW5lLmluZGV4IDwgbWluZS5saW5lcy5sZW5ndGggJiYgdGhlaXIuaW5kZXggPCB0aGVpci5saW5lcy5sZW5ndGgpIHtcbiAgICBsZXQgbWluZUN1cnJlbnQgPSBtaW5lLmxpbmVzW21pbmUuaW5kZXhdLFxuICAgICAgICB0aGVpckN1cnJlbnQgPSB0aGVpci5saW5lc1t0aGVpci5pbmRleF07XG5cbiAgICBpZiAoKG1pbmVDdXJyZW50WzBdID09PSAnLScgfHwgbWluZUN1cnJlbnRbMF0gPT09ICcrJylcbiAgICAgICAgJiYgKHRoZWlyQ3VycmVudFswXSA9PT0gJy0nIHx8IHRoZWlyQ3VycmVudFswXSA9PT0gJysnKSkge1xuICAgICAgLy8gQm90aCBtb2RpZmllZCAuLi5cbiAgICAgIG11dHVhbENoYW5nZShodW5rLCBtaW5lLCB0aGVpcik7XG4gICAgfSBlbHNlIGlmIChtaW5lQ3VycmVudFswXSA9PT0gJysnICYmIHRoZWlyQ3VycmVudFswXSA9PT0gJyAnKSB7XG4gICAgICAvLyBNaW5lIGluc2VydGVkXG4gICAgICBodW5rLmxpbmVzLnB1c2goLi4uIGNvbGxlY3RDaGFuZ2UobWluZSkpO1xuICAgIH0gZWxzZSBpZiAodGhlaXJDdXJyZW50WzBdID09PSAnKycgJiYgbWluZUN1cnJlbnRbMF0gPT09ICcgJykge1xuICAgICAgLy8gVGhlaXJzIGluc2VydGVkXG4gICAgICBodW5rLmxpbmVzLnB1c2goLi4uIGNvbGxlY3RDaGFuZ2UodGhlaXIpKTtcbiAgICB9IGVsc2UgaWYgKG1pbmVDdXJyZW50WzBdID09PSAnLScgJiYgdGhlaXJDdXJyZW50WzBdID09PSAnICcpIHtcbiAgICAgIC8vIE1pbmUgcmVtb3ZlZCBvciBlZGl0ZWRcbiAgICAgIHJlbW92YWwoaHVuaywgbWluZSwgdGhlaXIpO1xuICAgIH0gZWxzZSBpZiAodGhlaXJDdXJyZW50WzBdID09PSAnLScgJiYgbWluZUN1cnJlbnRbMF0gPT09ICcgJykge1xuICAgICAgLy8gVGhlaXIgcmVtb3ZlZCBvciBlZGl0ZWRcbiAgICAgIHJlbW92YWwoaHVuaywgdGhlaXIsIG1pbmUsIHRydWUpO1xuICAgIH0gZWxzZSBpZiAobWluZUN1cnJlbnQgPT09IHRoZWlyQ3VycmVudCkge1xuICAgICAgLy8gQ29udGV4dCBpZGVudGl0eVxuICAgICAgaHVuay5saW5lcy5wdXNoKG1pbmVDdXJyZW50KTtcbiAgICAgIG1pbmUuaW5kZXgrKztcbiAgICAgIHRoZWlyLmluZGV4Kys7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIENvbnRleHQgbWlzbWF0Y2hcbiAgICAgIGNvbmZsaWN0KGh1bmssIGNvbGxlY3RDaGFuZ2UobWluZSksIGNvbGxlY3RDaGFuZ2UodGhlaXIpKTtcbiAgICB9XG4gIH1cblxuICAvLyBOb3cgcHVzaCBhbnl0aGluZyB0aGF0IG1heSBiZSByZW1haW5pbmdcbiAgaW5zZXJ0VHJhaWxpbmcoaHVuaywgbWluZSk7XG4gIGluc2VydFRyYWlsaW5nKGh1bmssIHRoZWlyKTtcblxuICBjYWxjTGluZUNvdW50KGh1bmspO1xufVxuXG5mdW5jdGlvbiBtdXR1YWxDaGFuZ2UoaHVuaywgbWluZSwgdGhlaXIpIHtcbiAgbGV0IG15Q2hhbmdlcyA9IGNvbGxlY3RDaGFuZ2UobWluZSksXG4gICAgICB0aGVpckNoYW5nZXMgPSBjb2xsZWN0Q2hhbmdlKHRoZWlyKTtcblxuICBpZiAoYWxsUmVtb3ZlcyhteUNoYW5nZXMpICYmIGFsbFJlbW92ZXModGhlaXJDaGFuZ2VzKSkge1xuICAgIC8vIFNwZWNpYWwgY2FzZSBmb3IgcmVtb3ZlIGNoYW5nZXMgdGhhdCBhcmUgc3VwZXJzZXRzIG9mIG9uZSBhbm90aGVyXG4gICAgaWYgKGFycmF5U3RhcnRzV2l0aChteUNoYW5nZXMsIHRoZWlyQ2hhbmdlcylcbiAgICAgICAgJiYgc2tpcFJlbW92ZVN1cGVyc2V0KHRoZWlyLCBteUNoYW5nZXMsIG15Q2hhbmdlcy5sZW5ndGggLSB0aGVpckNoYW5nZXMubGVuZ3RoKSkge1xuICAgICAgaHVuay5saW5lcy5wdXNoKC4uLiBteUNoYW5nZXMpO1xuICAgICAgcmV0dXJuO1xuICAgIH0gZWxzZSBpZiAoYXJyYXlTdGFydHNXaXRoKHRoZWlyQ2hhbmdlcywgbXlDaGFuZ2VzKVxuICAgICAgICAmJiBza2lwUmVtb3ZlU3VwZXJzZXQobWluZSwgdGhlaXJDaGFuZ2VzLCB0aGVpckNoYW5nZXMubGVuZ3RoIC0gbXlDaGFuZ2VzLmxlbmd0aCkpIHtcbiAgICAgIGh1bmsubGluZXMucHVzaCguLi4gdGhlaXJDaGFuZ2VzKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gIH0gZWxzZSBpZiAoYXJyYXlFcXVhbChteUNoYW5nZXMsIHRoZWlyQ2hhbmdlcykpIHtcbiAgICBodW5rLmxpbmVzLnB1c2goLi4uIG15Q2hhbmdlcyk7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29uZmxpY3QoaHVuaywgbXlDaGFuZ2VzLCB0aGVpckNoYW5nZXMpO1xufVxuXG5mdW5jdGlvbiByZW1vdmFsKGh1bmssIG1pbmUsIHRoZWlyLCBzd2FwKSB7XG4gIGxldCBteUNoYW5nZXMgPSBjb2xsZWN0Q2hhbmdlKG1pbmUpLFxuICAgICAgdGhlaXJDaGFuZ2VzID0gY29sbGVjdENvbnRleHQodGhlaXIsIG15Q2hhbmdlcyk7XG4gIGlmICh0aGVpckNoYW5nZXMubWVyZ2VkKSB7XG4gICAgaHVuay5saW5lcy5wdXNoKC4uLiB0aGVpckNoYW5nZXMubWVyZ2VkKTtcbiAgfSBlbHNlIHtcbiAgICBjb25mbGljdChodW5rLCBzd2FwID8gdGhlaXJDaGFuZ2VzIDogbXlDaGFuZ2VzLCBzd2FwID8gbXlDaGFuZ2VzIDogdGhlaXJDaGFuZ2VzKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBjb25mbGljdChodW5rLCBtaW5lLCB0aGVpcikge1xuICBodW5rLmNvbmZsaWN0ID0gdHJ1ZTtcbiAgaHVuay5saW5lcy5wdXNoKHtcbiAgICBjb25mbGljdDogdHJ1ZSxcbiAgICBtaW5lOiBtaW5lLFxuICAgIHRoZWlyczogdGhlaXJcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIGluc2VydExlYWRpbmcoaHVuaywgaW5zZXJ0LCB0aGVpcikge1xuICB3aGlsZSAoaW5zZXJ0Lm9mZnNldCA8IHRoZWlyLm9mZnNldCAmJiBpbnNlcnQuaW5kZXggPCBpbnNlcnQubGluZXMubGVuZ3RoKSB7XG4gICAgbGV0IGxpbmUgPSBpbnNlcnQubGluZXNbaW5zZXJ0LmluZGV4KytdO1xuICAgIGh1bmsubGluZXMucHVzaChsaW5lKTtcbiAgICBpbnNlcnQub2Zmc2V0Kys7XG4gIH1cbn1cbmZ1bmN0aW9uIGluc2VydFRyYWlsaW5nKGh1bmssIGluc2VydCkge1xuICB3aGlsZSAoaW5zZXJ0LmluZGV4IDwgaW5zZXJ0LmxpbmVzLmxlbmd0aCkge1xuICAgIGxldCBsaW5lID0gaW5zZXJ0LmxpbmVzW2luc2VydC5pbmRleCsrXTtcbiAgICBodW5rLmxpbmVzLnB1c2gobGluZSk7XG4gIH1cbn1cblxuZnVuY3Rpb24gY29sbGVjdENoYW5nZShzdGF0ZSkge1xuICBsZXQgcmV0ID0gW10sXG4gICAgICBvcGVyYXRpb24gPSBzdGF0ZS5saW5lc1tzdGF0ZS5pbmRleF1bMF07XG4gIHdoaWxlIChzdGF0ZS5pbmRleCA8IHN0YXRlLmxpbmVzLmxlbmd0aCkge1xuICAgIGxldCBsaW5lID0gc3RhdGUubGluZXNbc3RhdGUuaW5kZXhdO1xuXG4gICAgLy8gR3JvdXAgYWRkaXRpb25zIHRoYXQgYXJlIGltbWVkaWF0ZWx5IGFmdGVyIHN1YnRyYWN0aW9ucyBhbmQgdHJlYXQgdGhlbSBhcyBvbmUgXCJhdG9taWNcIiBtb2RpZnkgY2hhbmdlLlxuICAgIGlmIChvcGVyYXRpb24gPT09ICctJyAmJiBsaW5lWzBdID09PSAnKycpIHtcbiAgICAgIG9wZXJhdGlvbiA9ICcrJztcbiAgICB9XG5cbiAgICBpZiAob3BlcmF0aW9uID09PSBsaW5lWzBdKSB7XG4gICAgICByZXQucHVzaChsaW5lKTtcbiAgICAgIHN0YXRlLmluZGV4Kys7XG4gICAgfSBlbHNlIHtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiByZXQ7XG59XG5mdW5jdGlvbiBjb2xsZWN0Q29udGV4dChzdGF0ZSwgbWF0Y2hDaGFuZ2VzKSB7XG4gIGxldCBjaGFuZ2VzID0gW10sXG4gICAgICBtZXJnZWQgPSBbXSxcbiAgICAgIG1hdGNoSW5kZXggPSAwLFxuICAgICAgY29udGV4dENoYW5nZXMgPSBmYWxzZSxcbiAgICAgIGNvbmZsaWN0ZWQgPSBmYWxzZTtcbiAgd2hpbGUgKG1hdGNoSW5kZXggPCBtYXRjaENoYW5nZXMubGVuZ3RoXG4gICAgICAgICYmIHN0YXRlLmluZGV4IDwgc3RhdGUubGluZXMubGVuZ3RoKSB7XG4gICAgbGV0IGNoYW5nZSA9IHN0YXRlLmxpbmVzW3N0YXRlLmluZGV4XSxcbiAgICAgICAgbWF0Y2ggPSBtYXRjaENoYW5nZXNbbWF0Y2hJbmRleF07XG5cbiAgICAvLyBPbmNlIHdlJ3ZlIGhpdCBvdXIgYWRkLCB0aGVuIHdlIGFyZSBkb25lXG4gICAgaWYgKG1hdGNoWzBdID09PSAnKycpIHtcbiAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIGNvbnRleHRDaGFuZ2VzID0gY29udGV4dENoYW5nZXMgfHwgY2hhbmdlWzBdICE9PSAnICc7XG5cbiAgICBtZXJnZWQucHVzaChtYXRjaCk7XG4gICAgbWF0Y2hJbmRleCsrO1xuXG4gICAgLy8gQ29uc3VtZSBhbnkgYWRkaXRpb25zIGluIHRoZSBvdGhlciBibG9jayBhcyBhIGNvbmZsaWN0IHRvIGF0dGVtcHRcbiAgICAvLyB0byBwdWxsIGluIHRoZSByZW1haW5pbmcgY29udGV4dCBhZnRlciB0aGlzXG4gICAgaWYgKGNoYW5nZVswXSA9PT0gJysnKSB7XG4gICAgICBjb25mbGljdGVkID0gdHJ1ZTtcblxuICAgICAgd2hpbGUgKGNoYW5nZVswXSA9PT0gJysnKSB7XG4gICAgICAgIGNoYW5nZXMucHVzaChjaGFuZ2UpO1xuICAgICAgICBjaGFuZ2UgPSBzdGF0ZS5saW5lc1srK3N0YXRlLmluZGV4XTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAobWF0Y2guc3Vic3RyKDEpID09PSBjaGFuZ2Uuc3Vic3RyKDEpKSB7XG4gICAgICBjaGFuZ2VzLnB1c2goY2hhbmdlKTtcbiAgICAgIHN0YXRlLmluZGV4Kys7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbmZsaWN0ZWQgPSB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIGlmICgobWF0Y2hDaGFuZ2VzW21hdGNoSW5kZXhdIHx8ICcnKVswXSA9PT0gJysnXG4gICAgICAmJiBjb250ZXh0Q2hhbmdlcykge1xuICAgIGNvbmZsaWN0ZWQgPSB0cnVlO1xuICB9XG5cbiAgaWYgKGNvbmZsaWN0ZWQpIHtcbiAgICByZXR1cm4gY2hhbmdlcztcbiAgfVxuXG4gIHdoaWxlIChtYXRjaEluZGV4IDwgbWF0Y2hDaGFuZ2VzLmxlbmd0aCkge1xuICAgIG1lcmdlZC5wdXNoKG1hdGNoQ2hhbmdlc1ttYXRjaEluZGV4KytdKTtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgbWVyZ2VkLFxuICAgIGNoYW5nZXNcbiAgfTtcbn1cblxuZnVuY3Rpb24gYWxsUmVtb3ZlcyhjaGFuZ2VzKSB7XG4gIHJldHVybiBjaGFuZ2VzLnJlZHVjZShmdW5jdGlvbihwcmV2LCBjaGFuZ2UpIHtcbiAgICByZXR1cm4gcHJldiAmJiBjaGFuZ2VbMF0gPT09ICctJztcbiAgfSwgdHJ1ZSk7XG59XG5mdW5jdGlvbiBza2lwUmVtb3ZlU3VwZXJzZXQoc3RhdGUsIHJlbW92ZUNoYW5nZXMsIGRlbHRhKSB7XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgZGVsdGE7IGkrKykge1xuICAgIGxldCBjaGFuZ2VDb250ZW50ID0gcmVtb3ZlQ2hhbmdlc1tyZW1vdmVDaGFuZ2VzLmxlbmd0aCAtIGRlbHRhICsgaV0uc3Vic3RyKDEpO1xuICAgIGlmIChzdGF0ZS5saW5lc1tzdGF0ZS5pbmRleCArIGldICE9PSAnICcgKyBjaGFuZ2VDb250ZW50KSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgc3RhdGUuaW5kZXggKz0gZGVsdGE7XG4gIHJldHVybiB0cnVlO1xufVxuXG5mdW5jdGlvbiBjYWxjT2xkTmV3TGluZUNvdW50KGxpbmVzKSB7XG4gIGxldCBvbGRMaW5lcyA9IDA7XG4gIGxldCBuZXdMaW5lcyA9IDA7XG5cbiAgbGluZXMuZm9yRWFjaChmdW5jdGlvbihsaW5lKSB7XG4gICAgaWYgKHR5cGVvZiBsaW5lICE9PSAnc3RyaW5nJykge1xuICAgICAgbGV0IG15Q291bnQgPSBjYWxjT2xkTmV3TGluZUNvdW50KGxpbmUubWluZSk7XG4gICAgICBsZXQgdGhlaXJDb3VudCA9IGNhbGNPbGROZXdMaW5lQ291bnQobGluZS50aGVpcnMpO1xuXG4gICAgICBpZiAob2xkTGluZXMgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBpZiAobXlDb3VudC5vbGRMaW5lcyA9PT0gdGhlaXJDb3VudC5vbGRMaW5lcykge1xuICAgICAgICAgIG9sZExpbmVzICs9IG15Q291bnQub2xkTGluZXM7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgb2xkTGluZXMgPSB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKG5ld0xpbmVzICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgaWYgKG15Q291bnQubmV3TGluZXMgPT09IHRoZWlyQ291bnQubmV3TGluZXMpIHtcbiAgICAgICAgICBuZXdMaW5lcyArPSBteUNvdW50Lm5ld0xpbmVzO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIG5ld0xpbmVzID0gdW5kZWZpbmVkO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChuZXdMaW5lcyAhPT0gdW5kZWZpbmVkICYmIChsaW5lWzBdID09PSAnKycgfHwgbGluZVswXSA9PT0gJyAnKSkge1xuICAgICAgICBuZXdMaW5lcysrO1xuICAgICAgfVxuICAgICAgaWYgKG9sZExpbmVzICE9PSB1bmRlZmluZWQgJiYgKGxpbmVbMF0gPT09ICctJyB8fCBsaW5lWzBdID09PSAnICcpKSB7XG4gICAgICAgIG9sZExpbmVzKys7XG4gICAgICB9XG4gICAgfVxuICB9KTtcblxuICByZXR1cm4ge29sZExpbmVzLCBuZXdMaW5lc307XG59XG4iXX0=\n","/*istanbul ignore start*/\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.parsePatch = parsePatch;\n\n/*istanbul ignore end*/\nfunction parsePatch(uniDiff) {\n /*istanbul ignore start*/\n var\n /*istanbul ignore end*/\n options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var diffstr = uniDiff.split(/\\r\\n|[\\n\\v\\f\\r\\x85]/),\n delimiters = uniDiff.match(/\\r\\n|[\\n\\v\\f\\r\\x85]/g) || [],\n list = [],\n i = 0;\n\n function parseIndex() {\n var index = {};\n list.push(index); // Parse diff metadata\n\n while (i < diffstr.length) {\n var line = diffstr[i]; // File header found, end parsing diff metadata\n\n if (/^(\\-\\-\\-|\\+\\+\\+|@@)\\s/.test(line)) {\n break;\n } // Diff index\n\n\n var header = /^(?:Index:|diff(?: -r \\w+)+)\\s+(.+?)\\s*$/.exec(line);\n\n if (header) {\n index.index = header[1];\n }\n\n i++;\n } // Parse file headers if they are defined. Unified diff requires them, but\n // there's no technical issues to have an isolated hunk without file header\n\n\n parseFileHeader(index);\n parseFileHeader(index); // Parse hunks\n\n index.hunks = [];\n\n while (i < diffstr.length) {\n var _line = diffstr[i];\n\n if (/^(Index:|diff|\\-\\-\\-|\\+\\+\\+)\\s/.test(_line)) {\n break;\n } else if (/^@@/.test(_line)) {\n index.hunks.push(parseHunk());\n } else if (_line && options.strict) {\n // Ignore unexpected content unless in strict mode\n throw new Error('Unknown line ' + (i + 1) + ' ' + JSON.stringify(_line));\n } else {\n i++;\n }\n }\n } // Parses the --- and +++ headers, if none are found, no lines\n // are consumed.\n\n\n function parseFileHeader(index) {\n var fileHeader = /^(---|\\+\\+\\+)\\s+(.*)$/.exec(diffstr[i]);\n\n if (fileHeader) {\n var keyPrefix = fileHeader[1] === '---' ? 'old' : 'new';\n var data = fileHeader[2].split('\\t', 2);\n var fileName = data[0].replace(/\\\\\\\\/g, '\\\\');\n\n if (/^\".*\"$/.test(fileName)) {\n fileName = fileName.substr(1, fileName.length - 2);\n }\n\n index[keyPrefix + 'FileName'] = fileName;\n index[keyPrefix + 'Header'] = (data[1] || '').trim();\n i++;\n }\n } // Parses a hunk\n // This assumes that we are at the start of a hunk.\n\n\n function parseHunk() {\n var chunkHeaderIndex = i,\n chunkHeaderLine = diffstr[i++],\n chunkHeader = chunkHeaderLine.split(/@@ -(\\d+)(?:,(\\d+))? \\+(\\d+)(?:,(\\d+))? @@/);\n var hunk = {\n oldStart: +chunkHeader[1],\n oldLines: typeof chunkHeader[2] === 'undefined' ? 1 : +chunkHeader[2],\n newStart: +chunkHeader[3],\n newLines: typeof chunkHeader[4] === 'undefined' ? 1 : +chunkHeader[4],\n lines: [],\n linedelimiters: []\n }; // Unified Diff Format quirk: If the chunk size is 0,\n // the first number is one lower than one would expect.\n // https://www.artima.com/weblogs/viewpost.jsp?thread=164293\n\n if (hunk.oldLines === 0) {\n hunk.oldStart += 1;\n }\n\n if (hunk.newLines === 0) {\n hunk.newStart += 1;\n }\n\n var addCount = 0,\n removeCount = 0;\n\n for (; i < diffstr.length; i++) {\n // Lines starting with '---' could be mistaken for the \"remove line\" operation\n // But they could be the header for the next file. Therefore prune such cases out.\n if (diffstr[i].indexOf('--- ') === 0 && i + 2 < diffstr.length && diffstr[i + 1].indexOf('+++ ') === 0 && diffstr[i + 2].indexOf('@@') === 0) {\n break;\n }\n\n var operation = diffstr[i].length == 0 && i != diffstr.length - 1 ? ' ' : diffstr[i][0];\n\n if (operation === '+' || operation === '-' || operation === ' ' || operation === '\\\\') {\n hunk.lines.push(diffstr[i]);\n hunk.linedelimiters.push(delimiters[i] || '\\n');\n\n if (operation === '+') {\n addCount++;\n } else if (operation === '-') {\n removeCount++;\n } else if (operation === ' ') {\n addCount++;\n removeCount++;\n }\n } else {\n break;\n }\n } // Handle the empty block count case\n\n\n if (!addCount && hunk.newLines === 1) {\n hunk.newLines = 0;\n }\n\n if (!removeCount && hunk.oldLines === 1) {\n hunk.oldLines = 0;\n } // Perform optional sanity checking\n\n\n if (options.strict) {\n if (addCount !== hunk.newLines) {\n throw new Error('Added line count did not match for hunk at line ' + (chunkHeaderIndex + 1));\n }\n\n if (removeCount !== hunk.oldLines) {\n throw new Error('Removed line count did not match for hunk at line ' + (chunkHeaderIndex + 1));\n }\n }\n\n return hunk;\n }\n\n while (i < diffstr.length) {\n parseIndex();\n }\n\n return list;\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wYXRjaC9wYXJzZS5qcyJdLCJuYW1lcyI6WyJwYXJzZVBhdGNoIiwidW5pRGlmZiIsIm9wdGlvbnMiLCJkaWZmc3RyIiwic3BsaXQiLCJkZWxpbWl0ZXJzIiwibWF0Y2giLCJsaXN0IiwiaSIsInBhcnNlSW5kZXgiLCJpbmRleCIsInB1c2giLCJsZW5ndGgiLCJsaW5lIiwidGVzdCIsImhlYWRlciIsImV4ZWMiLCJwYXJzZUZpbGVIZWFkZXIiLCJodW5rcyIsInBhcnNlSHVuayIsInN0cmljdCIsIkVycm9yIiwiSlNPTiIsInN0cmluZ2lmeSIsImZpbGVIZWFkZXIiLCJrZXlQcmVmaXgiLCJkYXRhIiwiZmlsZU5hbWUiLCJyZXBsYWNlIiwic3Vic3RyIiwidHJpbSIsImNodW5rSGVhZGVySW5kZXgiLCJjaHVua0hlYWRlckxpbmUiLCJjaHVua0hlYWRlciIsImh1bmsiLCJvbGRTdGFydCIsIm9sZExpbmVzIiwibmV3U3RhcnQiLCJuZXdMaW5lcyIsImxpbmVzIiwibGluZWRlbGltaXRlcnMiLCJhZGRDb3VudCIsInJlbW92ZUNvdW50IiwiaW5kZXhPZiIsIm9wZXJhdGlvbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQU8sU0FBU0EsVUFBVCxDQUFvQkMsT0FBcEIsRUFBMkM7QUFBQTtBQUFBO0FBQUE7QUFBZEMsRUFBQUEsT0FBYyx1RUFBSixFQUFJO0FBQ2hELE1BQUlDLE9BQU8sR0FBR0YsT0FBTyxDQUFDRyxLQUFSLENBQWMscUJBQWQsQ0FBZDtBQUFBLE1BQ0lDLFVBQVUsR0FBR0osT0FBTyxDQUFDSyxLQUFSLENBQWMsc0JBQWQsS0FBeUMsRUFEMUQ7QUFBQSxNQUVJQyxJQUFJLEdBQUcsRUFGWDtBQUFBLE1BR0lDLENBQUMsR0FBRyxDQUhSOztBQUtBLFdBQVNDLFVBQVQsR0FBc0I7QUFDcEIsUUFBSUMsS0FBSyxHQUFHLEVBQVo7QUFDQUgsSUFBQUEsSUFBSSxDQUFDSSxJQUFMLENBQVVELEtBQVYsRUFGb0IsQ0FJcEI7O0FB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QUwsS0FBa0IsQ0FBbkMsRUFBc0M7QUFDcENKLE1BQUFBLElBQUksQ0FBQ0ksUUFBTCxHQUFnQixDQUFoQjtBQUNEOztBQUNELFFBQUksQ0FBQ0ksV0FBRCxJQUFnQlIsSUFBSSxDQUFDRSxRQUFMLEtBQWtCLENBQXRDLEVBQXlDO0FBQ3ZDRixNQUFBQSxJQUFJLENBQUNFLFFBQUwsR0FBZ0IsQ0FBaEI7QUFDRCxLQTVEa0IsQ0E4RG5COzs7QUFDQSxRQUFJbEMsT0FBTyxDQUFDa0IsTUFBWixFQUFvQjtBQUNsQixVQUFJcUIsUUFBUSxLQUFLUCxJQUFJLENBQUNJLFFBQXRCLEVBQWdDO0FBQzlCLGNBQU0sSUFBSWpCLEtBQUosQ0FBVSxzREFBc0RVLGdCQUFnQixHQUFHLENBQXpFLENBQVYsQ0FBTjtBQUNEOztBQUNELFVBQUlXLFdBQVcsS0FBS1IsSUFBSSxDQUFDRSxRQUF6QixFQUFtQztBQUNqQyxjQUFNLElBQUlmLEtBQUosQ0FBVSx3REFBd0RVLGdCQUFnQixHQUFHLENBQTNFLENBQVYsQ0FBTjtBQUNEO0FBQ0Y7O0FBRUQsV0FBT0csSUFBUDtBQUNEOztBQUVELFNBQU8xQixDQUFDLEdBQUdMLE9BQU8sQ0FBQ1MsTUFBbkIsRUFBMkI7QUFDekJILElBQUFBLFVBQVU7QUFDWDs7QUFFRCxTQUFPRixJQUFQO0FBQ0QiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZnVuY3Rpb24gcGFyc2VQYXRjaCh1bmlEaWZmLCBvcHRpb25zID0ge30pIHtcbiAgbGV0IGRpZmZzdHIgPSB1bmlEaWZmLnNwbGl0KC9cXHJcXG58W1xcblxcdlxcZlxcclxceDg1XS8pLFxuICAgICAgZGVsaW1pdGVycyA9IHVuaURpZmYubWF0Y2goL1xcclxcbnxbXFxuXFx2XFxmXFxyXFx4ODVdL2cpIHx8IFtdLFxuICAgICAgbGlzdCA9IFtdLFxuICAgICAgaSA9IDA7XG5cbiAgZnVuY3Rpb24gcGFyc2VJbmRleCgpIHtcbiAgICBsZXQgaW5kZXggPSB7fTtcbiAgICBsaXN0LnB1c2goaW5kZXgpO1xuXG4gICAgLy8gUGFyc2UgZGlmZiBtZXRhZGF0YVxuICAgIHdoaWxlIChpIDwgZGlmZnN0ci5sZW5ndGgpIHtcbiAgICAgIGxldCBsaW5lID0gZGlmZnN0cltpXTtcblxuICAgICAgLy8gRmlsZSBoZWFkZXIgZm91bmQsIGVuZCBwYXJzaW5nIGRpZmYgbWV0YWRhdGFcbiAgICAgIGlmICgoL14oXFwtXFwtXFwtfFxcK1xcK1xcK3xAQClcXHMvKS50ZXN0KGxpbmUpKSB7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuXG4gICAgICAvLyBEaWZmIGluZGV4XG4gICAgICBsZXQgaGVhZGVyID0gKC9eKD86SW5kZXg6fGRpZmYoPzogLXIgXFx3KykrKVxccysoLis/KVxccyokLykuZXhlYyhsaW5lKTtcbiAgICAgIGlmIChoZWFkZXIpIHtcbiAgICAgICAgaW5kZXguaW5kZXggPSBoZWFkZXJbMV07XG4gICAgICB9XG5cbiAgICAgIGkrKztcbiAgICB9XG5cbiAgICAvLyBQYXJzZSBmaWxlIGhlYWRlcnMgaWYgdGhleSBhcmUgZGVmaW5lZC4gVW5pZmllZCBkaWZmIHJlcXVpcmVzIHRoZW0sIGJ1dFxuICAgIC8vIHRoZXJlJ3Mgbm8gdGVjaG5pY2FsIGlzc3VlcyB0byBoYXZlIGFuIGlzb2xhdGVkIGh1bmsgd2l0aG91dCBmaWxlIGhlYWRlclxuICAgIHBhcnNlRmlsZUhlYWRlcihpbmRleCk7XG4gICAgcGFyc2VGaWxlSGVhZGVyKGluZGV4KTtcblxuICAgIC8vIFBhcnNlIGh1bmtzXG4gICAgaW5kZXguaHVua3MgPSBbXTtcblxuICAgIHdoaWxlIChpIDwgZGlmZnN0ci5sZW5ndGgpIHtcbiAgICAgIGxldCBsaW5lID0gZGlmZnN0cltpXTtcblxuICAgICAgaWYgKCgvXihJbmRleDp8ZGlmZnxcXC1cXC1cXC18XFwrXFwrXFwrKVxccy8pLnRlc3QobGluZSkpIHtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9IGVsc2UgaWYgKCgvXkBALykudGVzdChsaW5lKSkge1xuICAgICAgICBpbmRleC5odW5rcy5wdXNoKHBhcnNlSHVuaygpKTtcbiAgICAgIH0gZWxzZSBpZiAobGluZSAmJiBvcHRpb25zLnN0cmljdCkge1xuICAgICAgICAvLyBJZ25vcmUgdW5leHBlY3RlZCBjb250ZW50IHVubGVzcyBpbiBzdHJpY3QgbW9kZVxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1Vua25vd24gbGluZSAnICsgKGkgKyAxKSArICcgJyArIEpTT04uc3RyaW5naWZ5KGxpbmUpKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGkrKztcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvLyBQYXJzZXMgdGhlIC0tLSBhbmQgKysrIGhlYWRlcnMsIGlmIG5vbmUgYXJlIGZvdW5kLCBubyBsaW5lc1xuICAvLyBhcmUgY29uc3VtZWQuXG4gIGZ1bmN0aW9uIHBhcnNlRmlsZUhlYWRlcihpbmRleCkge1xuICAgIGNvbnN0IGZpbGVIZWFkZXIgPSAoL14oLS0tfFxcK1xcK1xcKylcXHMrKC4qKSQvKS5leGVjKGRpZmZzdHJbaV0pO1xuICAgIGlmIChmaWxlSGVhZGVyKSB7XG4gICAgICBsZXQga2V5UHJlZml4ID0gZmlsZUhlYWRlclsxXSA9PT0gJy0tLScgPyAnb2xkJyA6ICduZXcnO1xuICAgICAgY29uc3QgZGF0YSA9IGZpbGVIZWFkZXJbMl0uc3BsaXQoJ1xcdCcsIDIpO1xuICAgICAgbGV0IGZpbGVOYW1lID0gZGF0YVswXS5yZXBsYWNlKC9cXFxcXFxcXC9nLCAnXFxcXCcpO1xuICAgICAgaWYgKCgvXlwiLipcIiQvKS50ZXN0KGZpbGVOYW1lKSkge1xuICAgICAgICBmaWxlTmFtZSA9IGZpbGVOYW1lLnN1YnN0cigxLCBmaWxlTmFtZS5sZW5ndGggLSAyKTtcbiAgICAgIH1cbiAgICAgIGluZGV4W2tleVByZWZpeCArICdGaWxlTmFtZSddID0gZmlsZU5hbWU7XG4gICAgICBpbmRleFtrZXlQcmVmaXggKyAnSGVhZGVyJ10gPSAoZGF0YVsxXSB8fCAnJykudHJpbSgpO1xuXG4gICAgICBpKys7XG4gICAgfVxuICB9XG5cbiAgLy8gUGFyc2VzIGEgaHVua1xuICAvLyBUaGlzIGFzc3VtZXMgdGhhdCB3ZSBhcmUgYXQgdGhlIHN0YXJ0IG9mIGEgaHVuay5cbiAgZnVuY3Rpb24gcGFyc2VIdW5rKCkge1xuICAgIGxldCBjaHVua0hlYWRlckluZGV4ID0gaSxcbiAgICAgICAgY2h1bmtIZWFkZXJMaW5lID0gZGlmZnN0cltpKytdLFxuICAgICAgICBjaHVua0hlYWRlciA9IGNodW5rSGVhZGVyTGluZS5zcGxpdCgvQEAgLShcXGQrKSg/OiwoXFxkKykpPyBcXCsoXFxkKykoPzosKFxcZCspKT8gQEAvKTtcblxuICAgIGxldCBodW5rID0ge1xuICAgICAgb2xkU3RhcnQ6ICtjaHVua0hlYWRlclsxXSxcbiAgICAgIG9sZExpbmVzOiB0eXBlb2YgY2h1bmtIZWFkZXJbMl0gPT09ICd1bmRlZmluZWQnID8gMSA6ICtjaHVua0hlYWRlclsyXSxcbiAgICAgIG5ld1N0YXJ0OiArY2h1bmtIZWFkZXJbM10sXG4gICAgICBuZXdMaW5lczogdHlwZW9mIGNodW5rSGVhZGVyWzRdID09PSAndW5kZWZpbmVkJyA/IDEgOiArY2h1bmtIZWFkZXJbNF0sXG4gICAgICBsaW5lczogW10sXG4gICAgICBsaW5lZGVsaW1pdGVyczogW11cbiAgICB9O1xuXG4gICAgLy8gVW5pZmllZCBEaWZmIEZvcm1hdCBxdWlyazogSWYgdGhlIGNodW5rIHNpemUgaXMgMCxcbiAgICAvLyB0aGUgZmlyc3QgbnVtYmVyIGlzIG9uZSBsb3dlciB0aGFuIG9uZSB3b3VsZCBleHBlY3QuXG4gICAgLy8gaHR0cHM6Ly93d3cuYXJ0aW1hLmNvbS93ZWJsb2dzL3ZpZXdwb3N0LmpzcD90aHJlYWQ9MTY0MjkzXG4gICAgaWYgKGh1bmsub2xkTGluZXMgPT09IDApIHtcbiAgICAgIGh1bmsub2xkU3RhcnQgKz0gMTtcbiAgICB9XG4gICAgaWYgKGh1bmsubmV3TGluZXMgPT09IDApIHtcbiAgICAgIGh1bmsubmV3U3RhcnQgKz0gMTtcbiAgICB9XG5cbiAgICBsZXQgYWRkQ291bnQgPSAwLFxuICAgICAgICByZW1vdmVDb3VudCA9IDA7XG4gICAgZm9yICg7IGkgPCBkaWZmc3RyLmxlbmd0aDsgaSsrKSB7XG4gICAgICAvLyBMaW5lcyBzdGFydGluZyB3aXRoICctLS0nIGNvdWxkIGJlIG1pc3Rha2VuIGZvciB0aGUgXCJyZW1vdmUgbGluZVwiIG9wZXJhdGlvblxuICAgICAgLy8gQnV0IHRoZXkgY291bGQgYmUgdGhlIGhlYWRlciBmb3IgdGhlIG5leHQgZmlsZS4gVGhlcmVmb3JlIHBydW5lIHN1Y2ggY2FzZXMgb3V0LlxuICAgICAgaWYgKGRpZmZzdHJbaV0uaW5kZXhPZignLS0tICcpID09PSAwXG4gICAgICAgICAgICAmJiAoaSArIDIgPCBkaWZmc3RyLmxlbmd0aClcbiAgICAgICAgICAgICYmIGRpZmZzdHJbaSArIDFdLmluZGV4T2YoJysrKyAnKSA9PT0gMFxuICAgICAgICAgICAgJiYgZGlmZnN0cltpICsgMl0uaW5kZXhPZignQEAnKSA9PT0gMCkge1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgbGV0IG9wZXJhdGlvbiA9IChkaWZmc3RyW2ldLmxlbmd0aCA9PSAwICYmIGkgIT0gKGRpZmZzdHIubGVuZ3RoIC0gMSkpID8gJyAnIDogZGlmZnN0cltpXVswXTtcblxuICAgICAgaWYgKG9wZXJhdGlvbiA9PT0gJysnIHx8IG9wZXJhdGlvbiA9PT0gJy0nIHx8IG9wZXJhdGlvbiA9PT0gJyAnIHx8IG9wZXJhdGlvbiA9PT0gJ1xcXFwnKSB7XG4gICAgICAgIGh1bmsubGluZXMucHVzaChkaWZmc3RyW2ldKTtcbiAgICAgICAgaHVuay5saW5lZGVsaW1pdGVycy5wdXNoKGRlbGltaXRlcnNbaV0gfHwgJ1xcbicpO1xuXG4gICAgICAgIGlmIChvcGVyYXRpb24gPT09ICcrJykge1xuICAgICAgICAgIGFkZENvdW50Kys7XG4gICAgICAgIH0gZWxzZSBpZiAob3BlcmF0aW9uID09PSAnLScpIHtcbiAgICAgICAgICByZW1vdmVDb3VudCsrO1xuICAgICAgICB9IGVsc2UgaWYgKG9wZXJhdGlvbiA9PT0gJyAnKSB7XG4gICAgICAgICAgYWRkQ291bnQrKztcbiAgICAgICAgICByZW1vdmVDb3VudCsrO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBIYW5kbGUgdGhlIGVtcHR5IGJsb2NrIGNvdW50IGNhc2VcbiAgICBpZiAoIWFkZENvdW50ICYmIGh1bmsubmV3TGluZXMgPT09IDEpIHtcbiAgICAgIGh1bmsubmV3TGluZXMgPSAwO1xuICAgIH1cbiAgICBpZiAoIXJlbW92ZUNvdW50ICYmIGh1bmsub2xkTGluZXMgPT09IDEpIHtcbiAgICAgIGh1bmsub2xkTGluZXMgPSAwO1xuICAgIH1cblxuICAgIC8vIFBlcmZvcm0gb3B0aW9uYWwgc2FuaXR5IGNoZWNraW5nXG4gICAgaWYgKG9wdGlvbnMuc3RyaWN0KSB7XG4gICAgICBpZiAoYWRkQ291bnQgIT09IGh1bmsubmV3TGluZXMpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdBZGRlZCBsaW5lIGNvdW50IGRpZCBub3QgbWF0Y2ggZm9yIGh1bmsgYXQgbGluZSAnICsgKGNodW5rSGVhZGVySW5kZXggKyAxKSk7XG4gICAgICB9XG4gICAgICBpZiAocmVtb3ZlQ291bnQgIT09IGh1bmsub2xkTGluZXMpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdSZW1vdmVkIGxpbmUgY291bnQgZGlkIG5vdCBtYXRjaCBmb3IgaHVuayBhdCBsaW5lICcgKyAoY2h1bmtIZWFkZXJJbmRleCArIDEpKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gaHVuaztcbiAgfVxuXG4gIHdoaWxlIChpIDwgZGlmZnN0ci5sZW5ndGgpIHtcbiAgICBwYXJzZUluZGV4KCk7XG4gIH1cblxuICByZXR1cm4gbGlzdDtcbn1cbiJdfQ==\n","/*istanbul ignore start*/\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.reversePatch = reversePatch;\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n/*istanbul ignore end*/\nfunction reversePatch(structuredPatch) {\n if (Array.isArray(structuredPatch)) {\n return structuredPatch.map(reversePatch).reverse();\n }\n\n return (\n /*istanbul ignore start*/\n _objectSpread(_objectSpread({},\n /*istanbul ignore end*/\n structuredPatch), {}, {\n oldFileName: structuredPatch.newFileName,\n oldHeader: structuredPatch.newHeader,\n newFileName: structuredPatch.oldFileName,\n newHeader: structuredPatch.oldHeader,\n hunks: structuredPatch.hunks.map(function (hunk) {\n return {\n oldLines: hunk.newLines,\n oldStart: hunk.newStart,\n newLines: hunk.oldLines,\n newStart: hunk.oldStart,\n linedelimiters: hunk.linedelimiters,\n lines: hunk.lines.map(function (l) {\n if (l.startsWith('-')) {\n return (\n /*istanbul ignore start*/\n \"+\".concat(\n /*istanbul ignore end*/\n l.slice(1))\n );\n }\n\n if (l.startsWith('+')) {\n return (\n /*istanbul ignore start*/\n \"-\".concat(\n /*istanbul ignore end*/\n l.slice(1))\n );\n }\n\n return l;\n })\n };\n })\n })\n );\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wYXRjaC9yZXZlcnNlLmpzIl0sIm5hbWVzIjpbInJldmVyc2VQYXRjaCIsInN0cnVjdHVyZWRQYXRjaCIsIkFycmF5IiwiaXNBcnJheSIsIm1hcCIsInJldmVyc2UiLCJvbGRGaWxlTmFtZSIsIm5ld0ZpbGVOYW1lIiwib2xkSGVhZGVyIiwibmV3SGVhZGVyIiwiaHVua3MiLCJodW5rIiwib2xkTGluZXMiLCJuZXdMaW5lcyIsIm9sZFN0YXJ0IiwibmV3U3RhcnQiLCJsaW5lZGVsaW1pdGVycyIsImxpbmVzIiwibCIsInN0YXJ0c1dpdGgiLCJzbGljZSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7O0FBQU8sU0FBU0EsWUFBVCxDQUFzQkMsZUFBdEIsRUFBdUM7QUFDNUMsTUFBSUMsS0FBSyxDQUFDQyxPQUFOLENBQWNGLGVBQWQsQ0FBSixFQUFvQztBQUNsQyxXQUFPQSxlQUFlLENBQUNHLEdBQWhCLENBQW9CSixZQUFwQixFQUFrQ0ssT0FBbEMsRUFBUDtBQUNEOztBQUVEO0FBQUE7QUFBQTtBQUFBO0FBQ0tKLElBQUFBLGVBREw7QUFFRUssTUFBQUEsV0FBVyxFQUFFTCxlQUFlLENBQUNNLFdBRi9CO0FBR0VDLE1BQUFBLFNBQVMsRUFBRVAsZUFBZSxDQUFDUSxTQUg3QjtBQUlFRixNQUFBQSxXQUFXLEVBQUVOLGVBQWUsQ0FBQ0ssV0FKL0I7QUFLRUcsTUFBQUEsU0FBUyxFQUFFUixlQUFlLENBQUNPLFNBTDdCO0FBTUVFLE1BQUFBLEtBQUssRUFBRVQsZUFBZSxDQUFDUyxLQUFoQixDQUFzQk4sR0FBdEIsQ0FBMEIsVUFBQU8sSUFBSSxFQUFJO0FBQ3ZDLGVBQU87QUFDTEMsVUFBQUEsUUFBUSxFQUFFRCxJQUFJLENBQUNFLFFBRFY7QUFFTEMsVUFBQUEsUUFBUSxFQUFFSCxJQUFJLENBQUNJLFFBRlY7QUFHTEYsVUFBQUEsUUFBUSxFQUFFRixJQUFJLENBQUNDLFFBSFY7QUFJTEcsVUFBQUEsUUFBUSxFQUFFSixJQUFJLENBQUNHLFFBSlY7QUFLTEUsVUFBQUEsY0FBYyxFQUFFTCxJQUFJLENBQUNLLGNBTGhCO0FBTUxDLFVBQUFBLEtBQUssRUFBRU4sSUFBSSxDQUFDTSxLQUFMLENBQVdiLEdBQVgsQ0FBZSxVQUFBYyxDQUFDLEVBQUk7QUFDekIsZ0JBQUlBLENBQUMsQ0FBQ0MsVUFBRixDQUFhLEdBQWIsQ0FBSixFQUF1QjtBQUFFO0FBQUE7QUFBQTtBQUFBO0FBQVdELGdCQUFBQSxDQUFDLENBQUNFLEtBQUYsQ0FBUSxDQUFSLENBQVg7QUFBQTtBQUEwQjs7QUFDbkQsZ0JBQUlGLENBQUMsQ0FBQ0MsVUFBRixDQUFhLEdBQWIsQ0FBSixFQUF1QjtBQUFFO0FBQUE7QUFBQTtBQUFBO0FBQVdELGdCQUFBQSxDQUFDLENBQUNFLEtBQUYsQ0FBUSxDQUFSLENBQVg7QUFBQTtBQUEwQjs7QUFDbkQsbUJBQU9GLENBQVA7QUFDRCxXQUpNO0FBTkYsU0FBUDtBQVlELE9BYk07QUFOVDtBQUFBO0FBcUJEIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGZ1bmN0aW9uIHJldmVyc2VQYXRjaChzdHJ1Y3R1cmVkUGF0Y2gpIHtcbiAgaWYgKEFycmF5LmlzQXJyYXkoc3RydWN0dXJlZFBhdGNoKSkge1xuICAgIHJldHVybiBzdHJ1Y3R1cmVkUGF0Y2gubWFwKHJldmVyc2VQYXRjaCkucmV2ZXJzZSgpO1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICAuLi5zdHJ1Y3R1cmVkUGF0Y2gsXG4gICAgb2xkRmlsZU5hbWU6IHN0cnVjdHVyZWRQYXRjaC5uZXdGaWxlTmFtZSxcbiAgICBvbGRIZWFkZXI6IHN0cnVjdHVyZWRQYXRjaC5uZXdIZWFkZXIsXG4gICAgbmV3RmlsZU5hbWU6IHN0cnVjdHVyZWRQYXRjaC5vbGRGaWxlTmFtZSxcbiAgICBuZXdIZWFkZXI6IHN0cnVjdHVyZWRQYXRjaC5vbGRIZWFkZXIsXG4gICAgaHVua3M6IHN0cnVjdHVyZWRQYXRjaC5odW5rcy5tYXAoaHVuayA9PiB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBvbGRMaW5lczogaHVuay5uZXdMaW5lcyxcbiAgICAgICAgb2xkU3RhcnQ6IGh1bmsubmV3U3RhcnQsXG4gICAgICAgIG5ld0xpbmVzOiBodW5rLm9sZExpbmVzLFxuICAgICAgICBuZXdTdGFydDogaHVuay5vbGRTdGFydCxcbiAgICAgICAgbGluZWRlbGltaXRlcnM6IGh1bmsubGluZWRlbGltaXRlcnMsXG4gICAgICAgIGxpbmVzOiBodW5rLmxpbmVzLm1hcChsID0+IHtcbiAgICAgICAgICBpZiAobC5zdGFydHNXaXRoKCctJykpIHsgcmV0dXJuIGArJHtsLnNsaWNlKDEpfWA7IH1cbiAgICAgICAgICBpZiAobC5zdGFydHNXaXRoKCcrJykpIHsgcmV0dXJuIGAtJHtsLnNsaWNlKDEpfWA7IH1cbiAgICAgICAgICByZXR1cm4gbDtcbiAgICAgICAgfSlcbiAgICAgIH07XG4gICAgfSlcbiAgfTtcbn1cbiJdfQ==\n","/*istanbul ignore start*/\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.arrayEqual = arrayEqual;\nexports.arrayStartsWith = arrayStartsWith;\n\n/*istanbul ignore end*/\nfunction arrayEqual(a, b) {\n if (a.length !== b.length) {\n return false;\n }\n\n return arrayStartsWith(a, b);\n}\n\nfunction arrayStartsWith(array, start) {\n if (start.length > array.length) {\n return false;\n }\n\n for (var i = 0; i < start.length; i++) {\n if (start[i] !== array[i]) {\n return false;\n }\n }\n\n return true;\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsL2FycmF5LmpzIl0sIm5hbWVzIjpbImFycmF5RXF1YWwiLCJhIiwiYiIsImxlbmd0aCIsImFycmF5U3RhcnRzV2l0aCIsImFycmF5Iiwic3RhcnQiLCJpIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O0FBQU8sU0FBU0EsVUFBVCxDQUFvQkMsQ0FBcEIsRUFBdUJDLENBQXZCLEVBQTBCO0FBQy9CLE1BQUlELENBQUMsQ0FBQ0UsTUFBRixLQUFhRCxDQUFDLENBQUNDLE1BQW5CLEVBQTJCO0FBQ3pCLFdBQU8sS0FBUDtBQUNEOztBQUVELFNBQU9DLGVBQWUsQ0FBQ0gsQ0FBRCxFQUFJQyxDQUFKLENBQXRCO0FBQ0Q7O0FBRU0sU0FBU0UsZUFBVCxDQUF5QkMsS0FBekIsRUFBZ0NDLEtBQWhDLEVBQXVDO0FBQzVDLE1BQUlBLEtBQUssQ0FBQ0gsTUFBTixHQUFlRSxLQUFLLENBQUNGLE1BQXpCLEVBQWlDO0FBQy9CLFdBQU8sS0FBUDtBQUNEOztBQUVELE9BQUssSUFBSUksQ0FBQyxHQUFHLENBQWIsRUFBZ0JBLENBQUMsR0FBR0QsS0FBSyxDQUFDSCxNQUExQixFQUFrQ0ksQ0FBQyxFQUFuQyxFQUF1QztBQUNyQyxRQUFJRCxLQUFLLENBQUNDLENBQUQsQ0FBTCxLQUFhRixLQUFLLENBQUNFLENBQUQsQ0FBdEIsRUFBMkI7QUFDekIsYUFBTyxLQUFQO0FBQ0Q7QUFDRjs7QUFFRCxTQUFPLElBQVA7QUFDRCIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBmdW5jdGlvbiBhcnJheUVxdWFsKGEsIGIpIHtcbiAgaWYgKGEubGVuZ3RoICE9PSBiLmxlbmd0aCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHJldHVybiBhcnJheVN0YXJ0c1dpdGgoYSwgYik7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhcnJheVN0YXJ0c1dpdGgoYXJyYXksIHN0YXJ0KSB7XG4gIGlmIChzdGFydC5sZW5ndGggPiBhcnJheS5sZW5ndGgpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBmb3IgKGxldCBpID0gMDsgaSA8IHN0YXJ0Lmxlbmd0aDsgaSsrKSB7XG4gICAgaWYgKHN0YXJ0W2ldICE9PSBhcnJheVtpXSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB0cnVlO1xufVxuIl19\n","/*istanbul ignore start*/\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = _default;\n\n/*istanbul ignore end*/\n// Iterator that traverses in the range of [min, max], stepping\n// by distance from a given start position. I.e. for [0, 4], with\n// start of 2, this will iterate 2, 3, 1, 4, 0.\nfunction\n/*istanbul ignore start*/\n_default\n/*istanbul ignore end*/\n(start, minLine, maxLine) {\n var wantForward = true,\n backwardExhausted = false,\n forwardExhausted = false,\n localOffset = 1;\n return function iterator() {\n if (wantForward && !forwardExhausted) {\n if (backwardExhausted) {\n localOffset++;\n } else {\n wantForward = false;\n } // Check if trying to fit beyond text length, and if not, check it fits\n // after offset location (or desired location on first iteration)\n\n\n if (start + localOffset <= maxLine) {\n return localOffset;\n }\n\n forwardExhausted = true;\n }\n\n if (!backwardExhausted) {\n if (!forwardExhausted) {\n wantForward = true;\n } // Check if trying to fit before text beginning, and if not, check it fits\n // before offset location\n\n\n if (minLine <= start - localOffset) {\n return -localOffset++;\n }\n\n backwardExhausted = true;\n return iterator();\n } // We tried to fit hunk before text beginning and beyond text length, then\n // hunk can't fit on the text. Return undefined\n\n };\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsL2Rpc3RhbmNlLWl0ZXJhdG9yLmpzIl0sIm5hbWVzIjpbInN0YXJ0IiwibWluTGluZSIsIm1heExpbmUiLCJ3YW50Rm9yd2FyZCIsImJhY2t3YXJkRXhoYXVzdGVkIiwiZm9yd2FyZEV4aGF1c3RlZCIsImxvY2FsT2Zmc2V0IiwiaXRlcmF0b3IiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQUNlO0FBQUE7QUFBQTtBQUFBO0FBQUEsQ0FBU0EsS0FBVCxFQUFnQkMsT0FBaEIsRUFBeUJDLE9BQXpCLEVBQWtDO0FBQy9DLE1BQUlDLFdBQVcsR0FBRyxJQUFsQjtBQUFBLE1BQ0lDLGlCQUFpQixHQUFHLEtBRHhCO0FBQUEsTUFFSUMsZ0JBQWdCLEdBQUcsS0FGdkI7QUFBQSxNQUdJQyxXQUFXLEdBQUcsQ0FIbEI7QUFLQSxTQUFPLFNBQVNDLFFBQVQsR0FBb0I7QUFDekIsUUFBSUosV0FBVyxJQUFJLENBQUNFLGdCQUFwQixFQUFzQztBQUNwQyxVQUFJRCxpQkFBSixFQUF1QjtBQUNyQkUsUUFBQUEsV0FBVztBQUNaLE9BRkQsTUFFTztBQUNMSCxRQUFBQSxXQUFXLEdBQUcsS0FBZDtBQUNELE9BTG1DLENBT3BDO0FBQ0E7OztBQUNBLFVBQUlILEtBQUssR0FBR00sV0FBUixJQUF1QkosT0FBM0IsRUFBb0M7QUFDbEMsZUFBT0ksV0FBUDtBQUNEOztBQUVERCxNQUFBQSxnQkFBZ0IsR0FBRyxJQUFuQjtBQUNEOztBQUVELFFBQUksQ0FBQ0QsaUJBQUwsRUFBd0I7QUFDdEIsVUFBSSxDQUFDQyxnQkFBTCxFQUF1QjtBQUNyQkYsUUFBQUEsV0FBVyxHQUFHLElBQWQ7QUFDRCxPQUhxQixDQUt0QjtBQUNBOzs7QUFDQSxVQUFJRixPQUFPLElBQUlELEtBQUssR0FBR00sV0FBdkIsRUFBb0M7QUFDbEMsZUFBTyxDQUFDQSxXQUFXLEVBQW5CO0FBQ0Q7O0FBRURGLE1BQUFBLGlCQUFpQixHQUFHLElBQXBCO0FBQ0EsYUFBT0csUUFBUSxFQUFmO0FBQ0QsS0E5QndCLENBZ0N6QjtBQUNBOztBQUNELEdBbENEO0FBbUNEIiwic291cmNlc0NvbnRlbnQiOlsiLy8gSXRlcmF0b3IgdGhhdCB0cmF2ZXJzZXMgaW4gdGhlIHJhbmdlIG9mIFttaW4sIG1heF0sIHN0ZXBwaW5nXG4vLyBieSBkaXN0YW5jZSBmcm9tIGEgZ2l2ZW4gc3RhcnQgcG9zaXRpb24uIEkuZS4gZm9yIFswLCA0XSwgd2l0aFxuLy8gc3RhcnQgb2YgMiwgdGhpcyB3aWxsIGl0ZXJhdGUgMiwgMywgMSwgNCwgMC5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKHN0YXJ0LCBtaW5MaW5lLCBtYXhMaW5lKSB7XG4gIGxldCB3YW50Rm9yd2FyZCA9IHRydWUsXG4gICAgICBiYWNrd2FyZEV4aGF1c3RlZCA9IGZhbHNlLFxuICAgICAgZm9yd2FyZEV4aGF1c3RlZCA9IGZhbHNlLFxuICAgICAgbG9jYWxPZmZzZXQgPSAxO1xuXG4gIHJldHVybiBmdW5jdGlvbiBpdGVyYXRvcigpIHtcbiAgICBpZiAod2FudEZvcndhcmQgJiYgIWZvcndhcmRFeGhhdXN0ZWQpIHtcbiAgICAgIGlmIChiYWNrd2FyZEV4aGF1c3RlZCkge1xuICAgICAgICBsb2NhbE9mZnNldCsrO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgd2FudEZvcndhcmQgPSBmYWxzZTtcbiAgICAgIH1cblxuICAgICAgLy8gQ2hlY2sgaWYgdHJ5aW5nIHRvIGZpdCBiZXlvbmQgdGV4dCBsZW5ndGgsIGFuZCBpZiBub3QsIGNoZWNrIGl0IGZpdHNcbiAgICAgIC8vIGFmdGVyIG9mZnNldCBsb2NhdGlvbiAob3IgZGVzaXJlZCBsb2NhdGlvbiBvbiBmaXJzdCBpdGVyYXRpb24pXG4gICAgICBpZiAoc3RhcnQgKyBsb2NhbE9mZnNldCA8PSBtYXhMaW5lKSB7XG4gICAgICAgIHJldHVybiBsb2NhbE9mZnNldDtcbiAgICAgIH1cblxuICAgICAgZm9yd2FyZEV4aGF1c3RlZCA9IHRydWU7XG4gICAgfVxuXG4gICAgaWYgKCFiYWNrd2FyZEV4aGF1c3RlZCkge1xuICAgICAgaWYgKCFmb3J3YXJkRXhoYXVzdGVkKSB7XG4gICAgICAgIHdhbnRGb3J3YXJkID0gdHJ1ZTtcbiAgICAgIH1cblxuICAgICAgLy8gQ2hlY2sgaWYgdHJ5aW5nIHRvIGZpdCBiZWZvcmUgdGV4dCBiZWdpbm5pbmcsIGFuZCBpZiBub3QsIGNoZWNrIGl0IGZpdHNcbiAgICAgIC8vIGJlZm9yZSBvZmZzZXQgbG9jYXRpb25cbiAgICAgIGlmIChtaW5MaW5lIDw9IHN0YXJ0IC0gbG9jYWxPZmZzZXQpIHtcbiAgICAgICAgcmV0dXJuIC1sb2NhbE9mZnNldCsrO1xuICAgICAgfVxuXG4gICAgICBiYWNrd2FyZEV4aGF1c3RlZCA9IHRydWU7XG4gICAgICByZXR1cm4gaXRlcmF0b3IoKTtcbiAgICB9XG5cbiAgICAvLyBXZSB0cmllZCB0byBmaXQgaHVuayBiZWZvcmUgdGV4dCBiZWdpbm5pbmcgYW5kIGJleW9uZCB0ZXh0IGxlbmd0aCwgdGhlblxuICAgIC8vIGh1bmsgY2FuJ3QgZml0IG9uIHRoZSB0ZXh0LiBSZXR1cm4gdW5kZWZpbmVkXG4gIH07XG59XG4iXX0=\n","/*istanbul ignore start*/\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.generateOptions = generateOptions;\n\n/*istanbul ignore end*/\nfunction generateOptions(options, defaults) {\n if (typeof options === 'function') {\n defaults.callback = options;\n } else if (options) {\n for (var name in options) {\n /* istanbul ignore else */\n if (options.hasOwnProperty(name)) {\n defaults[name] = options[name];\n }\n }\n }\n\n return defaults;\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsL3BhcmFtcy5qcyJdLCJuYW1lcyI6WyJnZW5lcmF0ZU9wdGlvbnMiLCJvcHRpb25zIiwiZGVmYXVsdHMiLCJjYWxsYmFjayIsIm5hbWUiLCJoYXNPd25Qcm9wZXJ0eSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQU8sU0FBU0EsZUFBVCxDQUF5QkMsT0FBekIsRUFBa0NDLFFBQWxDLEVBQTRDO0FBQ2pELE1BQUksT0FBT0QsT0FBUCxLQUFtQixVQUF2QixFQUFtQztBQUNqQ0MsSUFBQUEsUUFBUSxDQUFDQyxRQUFULEdBQW9CRixPQUFwQjtBQUNELEdBRkQsTUFFTyxJQUFJQSxPQUFKLEVBQWE7QUFDbEIsU0FBSyxJQUFJRyxJQUFULElBQWlCSCxPQUFqQixFQUEwQjtBQUN4QjtBQUNBLFVBQUlBLE9BQU8sQ0FBQ0ksY0FBUixDQUF1QkQsSUFBdkIsQ0FBSixFQUFrQztBQUNoQ0YsUUFBQUEsUUFBUSxDQUFDRSxJQUFELENBQVIsR0FBaUJILE9BQU8sQ0FBQ0csSUFBRCxDQUF4QjtBQUNEO0FBQ0Y7QUFDRjs7QUFDRCxTQUFPRixRQUFQO0FBQ0QiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZnVuY3Rpb24gZ2VuZXJhdGVPcHRpb25zKG9wdGlvbnMsIGRlZmF1bHRzKSB7XG4gIGlmICh0eXBlb2Ygb3B0aW9ucyA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIGRlZmF1bHRzLmNhbGxiYWNrID0gb3B0aW9ucztcbiAgfSBlbHNlIGlmIChvcHRpb25zKSB7XG4gICAgZm9yIChsZXQgbmFtZSBpbiBvcHRpb25zKSB7XG4gICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgICAgaWYgKG9wdGlvbnMuaGFzT3duUHJvcGVydHkobmFtZSkpIHtcbiAgICAgICAgZGVmYXVsdHNbbmFtZV0gPSBvcHRpb25zW25hbWVdO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICByZXR1cm4gZGVmYXVsdHM7XG59XG4iXX0=\n","\"use strict\";\n\nmodule.exports = function () {\n // https://mths.be/emoji\n return /\\uD83C\\uDFF4\\uDB40\\uDC67\\uDB40\\uDC62(?:\\uDB40\\uDC65\\uDB40\\uDC6E\\uDB40\\uDC67|\\uDB40\\uDC73\\uDB40\\uDC63\\uDB40\\uDC74|\\uDB40\\uDC77\\uDB40\\uDC6C\\uDB40\\uDC73)\\uDB40\\uDC7F|\\uD83D\\uDC68(?:\\uD83C\\uDFFC\\u200D(?:\\uD83E\\uDD1D\\u200D\\uD83D\\uDC68\\uD83C\\uDFFB|\\uD83C[\\uDF3E\\uDF73\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFF\\u200D(?:\\uD83E\\uDD1D\\u200D\\uD83D\\uDC68(?:\\uD83C[\\uDFFB-\\uDFFE])|\\uD83C[\\uDF3E\\uDF73\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFE\\u200D(?:\\uD83E\\uDD1D\\u200D\\uD83D\\uDC68(?:\\uD83C[\\uDFFB-\\uDFFD])|\\uD83C[\\uDF3E\\uDF73\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFD\\u200D(?:\\uD83E\\uDD1D\\u200D\\uD83D\\uDC68(?:\\uD83C[\\uDFFB\\uDFFC])|\\uD83C[\\uDF3E\\uDF73\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\u200D(?:\\u2764\\uFE0F\\u200D(?:\\uD83D\\uDC8B\\u200D)?\\uD83D\\uDC68|(?:\\uD83D[\\uDC68\\uDC69])\\u200D(?:\\uD83D\\uDC66\\u200D\\uD83D\\uDC66|\\uD83D\\uDC67\\u200D(?:\\uD83D[\\uDC66\\uDC67]))|\\uD83D\\uDC66\\u200D\\uD83D\\uDC66|\\uD83D\\uDC67\\u200D(?:\\uD83D[\\uDC66\\uDC67])|(?:\\uD83D[\\uDC68\\uDC69])\\u200D(?:\\uD83D[\\uDC66\\uDC67])|[\\u2695\\u2696\\u2708]\\uFE0F|\\uD83D[\\uDC66\\uDC67]|\\uD83C[\\uDF3E\\uDF73\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|(?:\\uD83C\\uDFFB\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFF\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFE\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFD\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFC\\u200D[\\u2695\\u2696\\u2708])\\uFE0F|\\uD83C\\uDFFB\\u200D(?:\\uD83C[\\uDF3E\\uDF73\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C[\\uDFFB-\\uDFFF])|(?:\\uD83E\\uDDD1\\uD83C\\uDFFB\\u200D\\uD83E\\uDD1D\\u200D\\uD83E\\uDDD1|\\uD83D\\uDC69\\uD83C\\uDFFC\\u200D\\uD83E\\uDD1D\\u200D\\uD83D\\uDC69)\\uD83C\\uDFFB|\\uD83E\\uDDD1(?:\\uD83C\\uDFFF\\u200D\\uD83E\\uDD1D\\u200D\\uD83E\\uDDD1(?:\\uD83C[\\uDFFB-\\uDFFF])|\\u200D\\uD83E\\uDD1D\\u200D\\uD83E\\uDDD1)|(?:\\uD83E\\uDDD1\\uD83C\\uDFFE\\u200D\\uD83E\\uDD1D\\u200D\\uD83E\\uDDD1|\\uD83D\\uDC69\\uD83C\\uDFFF\\u200D\\uD83E\\uDD1D\\u200D(?:\\uD83D[\\uDC68\\uDC69]))(?:\\uD83C[\\uDFFB-\\uDFFE])|(?:\\uD83E\\uDDD1\\uD83C\\uDFFC\\u200D\\uD83E\\uDD1D\\u200D\\uD83E\\uDDD1|\\uD83D\\uDC69\\uD83C\\uDFFD\\u200D\\uD83E\\uDD1D\\u200D\\uD83D\\uDC69)(?:\\uD83C[\\uDFFB\\uDFFC])|\\uD83D\\uDC69(?:\\uD83C\\uDFFE\\u200D(?:\\uD83E\\uDD1D\\u200D\\uD83D\\uDC68(?:\\uD83C[\\uDFFB-\\uDFFD\\uDFFF])|\\uD83C[\\uDF3E\\uDF73\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFC\\u200D(?:\\uD83E\\uDD1D\\u200D\\uD83D\\uDC68(?:\\uD83C[\\uDFFB\\uDFFD-\\uDFFF])|\\uD83C[\\uDF3E\\uDF73\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFB\\u200D(?:\\uD83E\\uDD1D\\u200D\\uD83D\\uDC68(?:\\uD83C[\\uDFFC-\\uDFFF])|\\uD83C[\\uDF3E\\uDF73\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFD\\u200D(?:\\uD83E\\uDD1D\\u200D\\uD83D\\uDC68(?:\\uD83C[\\uDFFB\\uDFFC\\uDFFE\\uDFFF])|\\uD83C[\\uDF3E\\uDF73\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\u200D(?:\\u2764\\uFE0F\\u200D(?:\\uD83D\\uDC8B\\u200D(?:\\uD83D[\\uDC68\\uDC69])|\\uD83D[\\uDC68\\uDC69])|\\uD83C[\\uDF3E\\uDF73\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFF\\u200D(?:\\uD83C[\\uDF3E\\uDF73\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD]))|\\uD83D\\uDC69\\u200D\\uD83D\\uDC69\\u200D(?:\\uD83D\\uDC66\\u200D\\uD83D\\uDC66|\\uD83D\\uDC67\\u200D(?:\\uD83D[\\uDC66\\uDC67]))|(?:\\uD83E\\uDDD1\\uD83C\\uDFFD\\u200D\\uD83E\\uDD1D\\u200D\\uD83E\\uDDD1|\\uD83D\\uDC69\\uD83C\\uDFFE\\u200D\\uD83E\\uDD1D\\u200D\\uD83D\\uDC69)(?:\\uD83C[\\uDFFB-\\uDFFD])|\\uD83D\\uDC69\\u200D\\uD83D\\uDC66\\u200D\\uD83D\\uDC66|\\uD83D\\uDC69\\u200D\\uD83D\\uDC69\\u200D(?:\\uD83D[\\uDC66\\uDC67])|(?:\\uD83D\\uDC41\\uFE0F\\u200D\\uD83D\\uDDE8|\\uD83D\\uDC69(?:\\uD83C\\uDFFF\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFE\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFC\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFB\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFD\\u200D[\\u2695\\u2696\\u2708]|\\u200D[\\u2695\\u2696\\u2708])|(?:(?:\\u26F9|\\uD83C[\\uDFCB\\uDFCC]|\\uD83D\\uDD75)\\uFE0F|\\uD83D\\uDC6F|\\uD83E[\\uDD3C\\uDDDE\\uDDDF])\\u200D[\\u2640\\u2642]|(?:\\u26F9|\\uD83C[\\uDFCB\\uDFCC]|\\uD83D\\uDD75)(?:\\uD83C[\\uDFFB-\\uDFFF])\\u200D[\\u2640\\u2642]|(?:\\uD83C[\\uDFC3\\uDFC4\\uDFCA]|\\uD83D[\\uDC6E\\uDC71\\uDC73\\uDC77\\uDC81\\uDC82\\uDC86\\uDC87\\uDE45-\\uDE47\\uDE4B\\uDE4D\\uDE4E\\uDEA3\\uDEB4-\\uDEB6]|\\uD83E[\\uDD26\\uDD37-\\uDD39\\uDD3D\\uDD3E\\uDDB8\\uDDB9\\uDDCD-\\uDDCF\\uDDD6-\\uDDDD])(?:(?:\\uD83C[\\uDFFB-\\uDFFF])\\u200D[\\u2640\\u2642]|\\u200D[\\u2640\\u2642])|\\uD83C\\uDFF4\\u200D\\u2620)\\uFE0F|\\uD83D\\uDC69\\u200D\\uD83D\\uDC67\\u200D(?:\\uD83D[\\uDC66\\uDC67])|\\uD83C\\uDFF3\\uFE0F\\u200D\\uD83C\\uDF08|\\uD83D\\uDC15\\u200D\\uD83E\\uDDBA|\\uD83D\\uDC69\\u200D\\uD83D\\uDC66|\\uD83D\\uDC69\\u200D\\uD83D\\uDC67|\\uD83C\\uDDFD\\uD83C\\uDDF0|\\uD83C\\uDDF4\\uD83C\\uDDF2|\\uD83C\\uDDF6\\uD83C\\uDDE6|[#\\*0-9]\\uFE0F\\u20E3|\\uD83C\\uDDE7(?:\\uD83C[\\uDDE6\\uDDE7\\uDDE9-\\uDDEF\\uDDF1-\\uDDF4\\uDDF6-\\uDDF9\\uDDFB\\uDDFC\\uDDFE\\uDDFF])|\\uD83C\\uDDF9(?:\\uD83C[\\uDDE6\\uDDE8\\uDDE9\\uDDEB-\\uDDED\\uDDEF-\\uDDF4\\uDDF7\\uDDF9\\uDDFB\\uDDFC\\uDDFF])|\\uD83C\\uDDEA(?:\\uD83C[\\uDDE6\\uDDE8\\uDDEA\\uDDEC\\uDDED\\uDDF7-\\uDDFA])|\\uD83E\\uDDD1(?:\\uD83C[\\uDFFB-\\uDFFF])|\\uD83C\\uDDF7(?:\\uD83C[\\uDDEA\\uDDF4\\uDDF8\\uDDFA\\uDDFC])|\\uD83D\\uDC69(?:\\uD83C[\\uDFFB-\\uDFFF])|\\uD83C\\uDDF2(?:\\uD83C[\\uDDE6\\uDDE8-\\uDDED\\uDDF0-\\uDDFF])|\\uD83C\\uDDE6(?:\\uD83C[\\uDDE8-\\uDDEC\\uDDEE\\uDDF1\\uDDF2\\uDDF4\\uDDF6-\\uDDFA\\uDDFC\\uDDFD\\uDDFF])|\\uD83C\\uDDF0(?:\\uD83C[\\uDDEA\\uDDEC-\\uDDEE\\uDDF2\\uDDF3\\uDDF5\\uDDF7\\uDDFC\\uDDFE\\uDDFF])|\\uD83C\\uDDED(?:\\uD83C[\\uDDF0\\uDDF2\\uDDF3\\uDDF7\\uDDF9\\uDDFA])|\\uD83C\\uDDE9(?:\\uD83C[\\uDDEA\\uDDEC\\uDDEF\\uDDF0\\uDDF2\\uDDF4\\uDDFF])|\\uD83C\\uDDFE(?:\\uD83C[\\uDDEA\\uDDF9])|\\uD83C\\uDDEC(?:\\uD83C[\\uDDE6\\uDDE7\\uDDE9-\\uDDEE\\uDDF1-\\uDDF3\\uDDF5-\\uDDFA\\uDDFC\\uDDFE])|\\uD83C\\uDDF8(?:\\uD83C[\\uDDE6-\\uDDEA\\uDDEC-\\uDDF4\\uDDF7-\\uDDF9\\uDDFB\\uDDFD-\\uDDFF])|\\uD83C\\uDDEB(?:\\uD83C[\\uDDEE-\\uDDF0\\uDDF2\\uDDF4\\uDDF7])|\\uD83C\\uDDF5(?:\\uD83C[\\uDDE6\\uDDEA-\\uDDED\\uDDF0-\\uDDF3\\uDDF7-\\uDDF9\\uDDFC\\uDDFE])|\\uD83C\\uDDFB(?:\\uD83C[\\uDDE6\\uDDE8\\uDDEA\\uDDEC\\uDDEE\\uDDF3\\uDDFA])|\\uD83C\\uDDF3(?:\\uD83C[\\uDDE6\\uDDE8\\uDDEA-\\uDDEC\\uDDEE\\uDDF1\\uDDF4\\uDDF5\\uDDF7\\uDDFA\\uDDFF])|\\uD83C\\uDDE8(?:\\uD83C[\\uDDE6\\uDDE8\\uDDE9\\uDDEB-\\uDDEE\\uDDF0-\\uDDF5\\uDDF7\\uDDFA-\\uDDFF])|\\uD83C\\uDDF1(?:\\uD83C[\\uDDE6-\\uDDE8\\uDDEE\\uDDF0\\uDDF7-\\uDDFB\\uDDFE])|\\uD83C\\uDDFF(?:\\uD83C[\\uDDE6\\uDDF2\\uDDFC])|\\uD83C\\uDDFC(?:\\uD83C[\\uDDEB\\uDDF8])|\\uD83C\\uDDFA(?:\\uD83C[\\uDDE6\\uDDEC\\uDDF2\\uDDF3\\uDDF8\\uDDFE\\uDDFF])|\\uD83C\\uDDEE(?:\\uD83C[\\uDDE8-\\uDDEA\\uDDF1-\\uDDF4\\uDDF6-\\uDDF9])|\\uD83C\\uDDEF(?:\\uD83C[\\uDDEA\\uDDF2\\uDDF4\\uDDF5])|(?:\\uD83C[\\uDFC3\\uDFC4\\uDFCA]|\\uD83D[\\uDC6E\\uDC71\\uDC73\\uDC77\\uDC81\\uDC82\\uDC86\\uDC87\\uDE45-\\uDE47\\uDE4B\\uDE4D\\uDE4E\\uDEA3\\uDEB4-\\uDEB6]|\\uD83E[\\uDD26\\uDD37-\\uDD39\\uDD3D\\uDD3E\\uDDB8\\uDDB9\\uDDCD-\\uDDCF\\uDDD6-\\uDDDD])(?:\\uD83C[\\uDFFB-\\uDFFF])|(?:\\u26F9|\\uD83C[\\uDFCB\\uDFCC]|\\uD83D\\uDD75)(?:\\uD83C[\\uDFFB-\\uDFFF])|(?:[\\u261D\\u270A-\\u270D]|\\uD83C[\\uDF85\\uDFC2\\uDFC7]|\\uD83D[\\uDC42\\uDC43\\uDC46-\\uDC50\\uDC66\\uDC67\\uDC6B-\\uDC6D\\uDC70\\uDC72\\uDC74-\\uDC76\\uDC78\\uDC7C\\uDC83\\uDC85\\uDCAA\\uDD74\\uDD7A\\uDD90\\uDD95\\uDD96\\uDE4C\\uDE4F\\uDEC0\\uDECC]|\\uD83E[\\uDD0F\\uDD18-\\uDD1C\\uDD1E\\uDD1F\\uDD30-\\uDD36\\uDDB5\\uDDB6\\uDDBB\\uDDD2-\\uDDD5])(?:\\uD83C[\\uDFFB-\\uDFFF])|(?:[\\u231A\\u231B\\u23E9-\\u23EC\\u23F0\\u23F3\\u25FD\\u25FE\\u2614\\u2615\\u2648-\\u2653\\u267F\\u2693\\u26A1\\u26AA\\u26AB\\u26BD\\u26BE\\u26C4\\u26C5\\u26CE\\u26D4\\u26EA\\u26F2\\u26F3\\u26F5\\u26FA\\u26FD\\u2705\\u270A\\u270B\\u2728\\u274C\\u274E\\u2753-\\u2755\\u2757\\u2795-\\u2797\\u27B0\\u27BF\\u2B1B\\u2B1C\\u2B50\\u2B55]|\\uD83C[\\uDC04\\uDCCF\\uDD8E\\uDD91-\\uDD9A\\uDDE6-\\uDDFF\\uDE01\\uDE1A\\uDE2F\\uDE32-\\uDE36\\uDE38-\\uDE3A\\uDE50\\uDE51\\uDF00-\\uDF20\\uDF2D-\\uDF35\\uDF37-\\uDF7C\\uDF7E-\\uDF93\\uDFA0-\\uDFCA\\uDFCF-\\uDFD3\\uDFE0-\\uDFF0\\uDFF4\\uDFF8-\\uDFFF]|\\uD83D[\\uDC00-\\uDC3E\\uDC40\\uDC42-\\uDCFC\\uDCFF-\\uDD3D\\uDD4B-\\uDD4E\\uDD50-\\uDD67\\uDD7A\\uDD95\\uDD96\\uDDA4\\uDDFB-\\uDE4F\\uDE80-\\uDEC5\\uDECC\\uDED0-\\uDED2\\uDED5\\uDEEB\\uDEEC\\uDEF4-\\uDEFA\\uDFE0-\\uDFEB]|\\uD83E[\\uDD0D-\\uDD3A\\uDD3C-\\uDD45\\uDD47-\\uDD71\\uDD73-\\uDD76\\uDD7A-\\uDDA2\\uDDA5-\\uDDAA\\uDDAE-\\uDDCA\\uDDCD-\\uDDFF\\uDE70-\\uDE73\\uDE78-\\uDE7A\\uDE80-\\uDE82\\uDE90-\\uDE95])|(?:[#\\*0-9\\xA9\\xAE\\u203C\\u2049\\u2122\\u2139\\u2194-\\u2199\\u21A9\\u21AA\\u231A\\u231B\\u2328\\u23CF\\u23E9-\\u23F3\\u23F8-\\u23FA\\u24C2\\u25AA\\u25AB\\u25B6\\u25C0\\u25FB-\\u25FE\\u2600-\\u2604\\u260E\\u2611\\u2614\\u2615\\u2618\\u261D\\u2620\\u2622\\u2623\\u2626\\u262A\\u262E\\u262F\\u2638-\\u263A\\u2640\\u2642\\u2648-\\u2653\\u265F\\u2660\\u2663\\u2665\\u2666\\u2668\\u267B\\u267E\\u267F\\u2692-\\u2697\\u2699\\u269B\\u269C\\u26A0\\u26A1\\u26AA\\u26AB\\u26B0\\u26B1\\u26BD\\u26BE\\u26C4\\u26C5\\u26C8\\u26CE\\u26CF\\u26D1\\u26D3\\u26D4\\u26E9\\u26EA\\u26F0-\\u26F5\\u26F7-\\u26FA\\u26FD\\u2702\\u2705\\u2708-\\u270D\\u270F\\u2712\\u2714\\u2716\\u271D\\u2721\\u2728\\u2733\\u2734\\u2744\\u2747\\u274C\\u274E\\u2753-\\u2755\\u2757\\u2763\\u2764\\u2795-\\u2797\\u27A1\\u27B0\\u27BF\\u2934\\u2935\\u2B05-\\u2B07\\u2B1B\\u2B1C\\u2B50\\u2B55\\u3030\\u303D\\u3297\\u3299]|\\uD83C[\\uDC04\\uDCCF\\uDD70\\uDD71\\uDD7E\\uDD7F\\uDD8E\\uDD91-\\uDD9A\\uDDE6-\\uDDFF\\uDE01\\uDE02\\uDE1A\\uDE2F\\uDE32-\\uDE3A\\uDE50\\uDE51\\uDF00-\\uDF21\\uDF24-\\uDF93\\uDF96\\uDF97\\uDF99-\\uDF9B\\uDF9E-\\uDFF0\\uDFF3-\\uDFF5\\uDFF7-\\uDFFF]|\\uD83D[\\uDC00-\\uDCFD\\uDCFF-\\uDD3D\\uDD49-\\uDD4E\\uDD50-\\uDD67\\uDD6F\\uDD70\\uDD73-\\uDD7A\\uDD87\\uDD8A-\\uDD8D\\uDD90\\uDD95\\uDD96\\uDDA4\\uDDA5\\uDDA8\\uDDB1\\uDDB2\\uDDBC\\uDDC2-\\uDDC4\\uDDD1-\\uDDD3\\uDDDC-\\uDDDE\\uDDE1\\uDDE3\\uDDE8\\uDDEF\\uDDF3\\uDDFA-\\uDE4F\\uDE80-\\uDEC5\\uDECB-\\uDED2\\uDED5\\uDEE0-\\uDEE5\\uDEE9\\uDEEB\\uDEEC\\uDEF0\\uDEF3-\\uDEFA\\uDFE0-\\uDFEB]|\\uD83E[\\uDD0D-\\uDD3A\\uDD3C-\\uDD45\\uDD47-\\uDD71\\uDD73-\\uDD76\\uDD7A-\\uDDA2\\uDDA5-\\uDDAA\\uDDAE-\\uDDCA\\uDDCD-\\uDDFF\\uDE70-\\uDE73\\uDE78-\\uDE7A\\uDE80-\\uDE82\\uDE90-\\uDE95])\\uFE0F|(?:[\\u261D\\u26F9\\u270A-\\u270D]|\\uD83C[\\uDF85\\uDFC2-\\uDFC4\\uDFC7\\uDFCA-\\uDFCC]|\\uD83D[\\uDC42\\uDC43\\uDC46-\\uDC50\\uDC66-\\uDC78\\uDC7C\\uDC81-\\uDC83\\uDC85-\\uDC87\\uDC8F\\uDC91\\uDCAA\\uDD74\\uDD75\\uDD7A\\uDD90\\uDD95\\uDD96\\uDE45-\\uDE47\\uDE4B-\\uDE4F\\uDEA3\\uDEB4-\\uDEB6\\uDEC0\\uDECC]|\\uD83E[\\uDD0F\\uDD18-\\uDD1F\\uDD26\\uDD30-\\uDD39\\uDD3C-\\uDD3E\\uDDB5\\uDDB6\\uDDB8\\uDDB9\\uDDBB\\uDDCD-\\uDDCF\\uDDD1-\\uDDDD])/g;\n};\n","'use strict';\n\n// do not edit .js files directly - edit src/index.jst\n\n\n\nmodule.exports = function equal(a, b) {\n if (a === b) return true;\n\n if (a && b && typeof a == 'object' && typeof b == 'object') {\n if (a.constructor !== b.constructor) return false;\n\n var length, i, keys;\n if (Array.isArray(a)) {\n length = a.length;\n if (length != b.length) return false;\n for (i = length; i-- !== 0;)\n if (!equal(a[i], b[i])) return false;\n return true;\n }\n\n\n\n if (a.constructor === RegExp) return a.source === b.source && a.flags === b.flags;\n if (a.valueOf !== Object.prototype.valueOf) return a.valueOf() === b.valueOf();\n if (a.toString !== Object.prototype.toString) return a.toString() === b.toString();\n\n keys = Object.keys(a);\n length = keys.length;\n if (length !== Object.keys(b).length) return false;\n\n for (i = length; i-- !== 0;)\n if (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false;\n\n for (i = length; i-- !== 0;) {\n var key = keys[i];\n\n if (!equal(a[key], b[key])) return false;\n }\n\n return true;\n }\n\n // true if both NaN, false otherwise\n return a!==a && b!==b;\n};\n","'use strict';\n\nconst validator = require('./validator');\nconst XMLParser = require('./xmlparser/XMLParser');\nconst XMLBuilder = require('./xmlbuilder/json2xml');\n\nmodule.exports = {\n XMLParser: XMLParser,\n XMLValidator: validator,\n XMLBuilder: XMLBuilder\n}","'use strict';\n\nconst nameStartChar = ':A-Za-z_\\\\u00C0-\\\\u00D6\\\\u00D8-\\\\u00F6\\\\u00F8-\\\\u02FF\\\\u0370-\\\\u037D\\\\u037F-\\\\u1FFF\\\\u200C-\\\\u200D\\\\u2070-\\\\u218F\\\\u2C00-\\\\u2FEF\\\\u3001-\\\\uD7FF\\\\uF900-\\\\uFDCF\\\\uFDF0-\\\\uFFFD';\nconst nameChar = nameStartChar + '\\\\-.\\\\d\\\\u00B7\\\\u0300-\\\\u036F\\\\u203F-\\\\u2040';\nconst nameRegexp = '[' + nameStartChar + '][' + nameChar + ']*'\nconst regexName = new RegExp('^' + nameRegexp + '$');\n\nconst getAllMatches = function(string, regex) {\n const matches = [];\n let match = regex.exec(string);\n while (match) {\n const allmatches = [];\n allmatches.startIndex = regex.lastIndex - match[0].length;\n const len = match.length;\n for (let index = 0; index < len; index++) {\n allmatches.push(match[index]);\n }\n matches.push(allmatches);\n match = regex.exec(string);\n }\n return matches;\n};\n\nconst isName = function(string) {\n const match = regexName.exec(string);\n return !(match === null || typeof match === 'undefined');\n};\n\nexports.isExist = function(v) {\n return typeof v !== 'undefined';\n};\n\nexports.isEmptyObject = function(obj) {\n return Object.keys(obj).length === 0;\n};\n\n/**\n * Copy all the properties of a into b.\n * @param {*} target\n * @param {*} a\n */\nexports.merge = function(target, a, arrayMode) {\n if (a) {\n const keys = Object.keys(a); // will return an array of own properties\n const len = keys.length; //don't make it inline\n for (let i = 0; i < len; i++) {\n if (arrayMode === 'strict') {\n target[keys[i]] = [ a[keys[i]] ];\n } else {\n target[keys[i]] = a[keys[i]];\n }\n }\n }\n};\n/* exports.merge =function (b,a){\n return Object.assign(b,a);\n} */\n\nexports.getValue = function(v) {\n if (exports.isExist(v)) {\n return v;\n } else {\n return '';\n }\n};\n\n// const fakeCall = function(a) {return a;};\n// const fakeCallNoReturn = function() {};\n\nexports.isName = isName;\nexports.getAllMatches = getAllMatches;\nexports.nameRegexp = nameRegexp;\n","'use strict';\n\nconst util = require('./util');\n\nconst defaultOptions = {\n allowBooleanAttributes: false, //A tag can have attributes without any value\n unpairedTags: []\n};\n\n//const tagsPattern = new RegExp(\"<\\\\/?([\\\\w:\\\\-_\\.]+)\\\\s*\\/?>\",\"g\");\nexports.validate = function (xmlData, options) {\n options = Object.assign({}, defaultOptions, options);\n\n //xmlData = xmlData.replace(/(\\r\\n|\\n|\\r)/gm,\"\");//make it single line\n //xmlData = xmlData.replace(/(^\\s*<\\?xml.*?\\?>)/g,\"\");//Remove XML starting tag\n //xmlData = xmlData.replace(/()/g,\"\");//Remove DOCTYPE\n const tags = [];\n let tagFound = false;\n\n //indicates that the root tag has been closed (aka. depth 0 has been reached)\n let reachedRoot = false;\n\n if (xmlData[0] === '\\ufeff') {\n // check for byte order mark (BOM)\n xmlData = xmlData.substr(1);\n }\n \n for (let i = 0; i < xmlData.length; i++) {\n\n if (xmlData[i] === '<' && xmlData[i+1] === '?') {\n i+=2;\n i = readPI(xmlData,i);\n if (i.err) return i;\n }else if (xmlData[i] === '<') {\n //starting of tag\n //read until you reach to '>' avoiding any '>' in attribute value\n let tagStartPos = i;\n i++;\n \n if (xmlData[i] === '!') {\n i = readCommentAndCDATA(xmlData, i);\n continue;\n } else {\n let closingTag = false;\n if (xmlData[i] === '/') {\n //closing tag\n closingTag = true;\n i++;\n }\n //read tagname\n let tagName = '';\n for (; i < xmlData.length &&\n xmlData[i] !== '>' &&\n xmlData[i] !== ' ' &&\n xmlData[i] !== '\\t' &&\n xmlData[i] !== '\\n' &&\n xmlData[i] !== '\\r'; i++\n ) {\n tagName += xmlData[i];\n }\n tagName = tagName.trim();\n //console.log(tagName);\n\n if (tagName[tagName.length - 1] === '/') {\n //self closing tag without attributes\n tagName = tagName.substring(0, tagName.length - 1);\n //continue;\n i--;\n }\n if (!validateTagName(tagName)) {\n let msg;\n if (tagName.trim().length === 0) {\n msg = \"Invalid space after '<'.\";\n } else {\n msg = \"Tag '\"+tagName+\"' is an invalid name.\";\n }\n return getErrorObject('InvalidTag', msg, getLineNumberForPosition(xmlData, i));\n }\n\n const result = readAttributeStr(xmlData, i);\n if (result === false) {\n return getErrorObject('InvalidAttr', \"Attributes for '\"+tagName+\"' have open quote.\", getLineNumberForPosition(xmlData, i));\n }\n let attrStr = result.value;\n i = result.index;\n\n if (attrStr[attrStr.length - 1] === '/') {\n //self closing tag\n const attrStrStart = i - attrStr.length;\n attrStr = attrStr.substring(0, attrStr.length - 1);\n const isValid = validateAttributeString(attrStr, options);\n if (isValid === true) {\n tagFound = true;\n //continue; //text may presents after self closing tag\n } else {\n //the result from the nested function returns the position of the error within the attribute\n //in order to get the 'true' error line, we need to calculate the position where the attribute begins (i - attrStr.length) and then add the position within the attribute\n //this gives us the absolute index in the entire xml, which we can use to find the line at last\n return getErrorObject(isValid.err.code, isValid.err.msg, getLineNumberForPosition(xmlData, attrStrStart + isValid.err.line));\n }\n } else if (closingTag) {\n if (!result.tagClosed) {\n return getErrorObject('InvalidTag', \"Closing tag '\"+tagName+\"' doesn't have proper closing.\", getLineNumberForPosition(xmlData, i));\n } else if (attrStr.trim().length > 0) {\n return getErrorObject('InvalidTag', \"Closing tag '\"+tagName+\"' can't have attributes or invalid starting.\", getLineNumberForPosition(xmlData, tagStartPos));\n } else if (tags.length === 0) {\n return getErrorObject('InvalidTag', \"Closing tag '\"+tagName+\"' has not been opened.\", getLineNumberForPosition(xmlData, tagStartPos));\n } else {\n const otg = tags.pop();\n if (tagName !== otg.tagName) {\n let openPos = getLineNumberForPosition(xmlData, otg.tagStartPos);\n return getErrorObject('InvalidTag',\n \"Expected closing tag '\"+otg.tagName+\"' (opened in line \"+openPos.line+\", col \"+openPos.col+\") instead of closing tag '\"+tagName+\"'.\",\n getLineNumberForPosition(xmlData, tagStartPos));\n }\n\n //when there are no more tags, we reached the root level.\n if (tags.length == 0) {\n reachedRoot = true;\n }\n }\n } else {\n const isValid = validateAttributeString(attrStr, options);\n if (isValid !== true) {\n //the result from the nested function returns the position of the error within the attribute\n //in order to get the 'true' error line, we need to calculate the position where the attribute begins (i - attrStr.length) and then add the position within the attribute\n //this gives us the absolute index in the entire xml, which we can use to find the line at last\n return getErrorObject(isValid.err.code, isValid.err.msg, getLineNumberForPosition(xmlData, i - attrStr.length + isValid.err.line));\n }\n\n //if the root level has been reached before ...\n if (reachedRoot === true) {\n return getErrorObject('InvalidXml', 'Multiple possible root nodes found.', getLineNumberForPosition(xmlData, i));\n } else if(options.unpairedTags.indexOf(tagName) !== -1){\n //don't push into stack\n } else {\n tags.push({tagName, tagStartPos});\n }\n tagFound = true;\n }\n\n //skip tag text value\n //It may include comments and CDATA value\n for (i++; i < xmlData.length; i++) {\n if (xmlData[i] === '<') {\n if (xmlData[i + 1] === '!') {\n //comment or CADATA\n i++;\n i = readCommentAndCDATA(xmlData, i);\n continue;\n } else if (xmlData[i+1] === '?') {\n i = readPI(xmlData, ++i);\n if (i.err) return i;\n } else{\n break;\n }\n } else if (xmlData[i] === '&') {\n const afterAmp = validateAmpersand(xmlData, i);\n if (afterAmp == -1)\n return getErrorObject('InvalidChar', \"char '&' is not expected.\", getLineNumberForPosition(xmlData, i));\n i = afterAmp;\n }else{\n if (reachedRoot === true && !isWhiteSpace(xmlData[i])) {\n return getErrorObject('InvalidXml', \"Extra text at the end\", getLineNumberForPosition(xmlData, i));\n }\n }\n } //end of reading tag text value\n if (xmlData[i] === '<') {\n i--;\n }\n }\n } else {\n if ( isWhiteSpace(xmlData[i])) {\n continue;\n }\n return getErrorObject('InvalidChar', \"char '\"+xmlData[i]+\"' is not expected.\", getLineNumberForPosition(xmlData, i));\n }\n }\n\n if (!tagFound) {\n return getErrorObject('InvalidXml', 'Start tag expected.', 1);\n }else if (tags.length == 1) {\n return getErrorObject('InvalidTag', \"Unclosed tag '\"+tags[0].tagName+\"'.\", getLineNumberForPosition(xmlData, tags[0].tagStartPos));\n }else if (tags.length > 0) {\n return getErrorObject('InvalidXml', \"Invalid '\"+\n JSON.stringify(tags.map(t => t.tagName), null, 4).replace(/\\r?\\n/g, '')+\n \"' found.\", {line: 1, col: 1});\n }\n\n return true;\n};\n\nfunction isWhiteSpace(char){\n return char === ' ' || char === '\\t' || char === '\\n' || char === '\\r';\n}\n/**\n * Read Processing insstructions and skip\n * @param {*} xmlData\n * @param {*} i\n */\nfunction readPI(xmlData, i) {\n const start = i;\n for (; i < xmlData.length; i++) {\n if (xmlData[i] == '?' || xmlData[i] == ' ') {\n //tagname\n const tagname = xmlData.substr(start, i - start);\n if (i > 5 && tagname === 'xml') {\n return getErrorObject('InvalidXml', 'XML declaration allowed only at the start of the document.', getLineNumberForPosition(xmlData, i));\n } else if (xmlData[i] == '?' && xmlData[i + 1] == '>') {\n //check if valid attribut string\n i++;\n break;\n } else {\n continue;\n }\n }\n }\n return i;\n}\n\nfunction readCommentAndCDATA(xmlData, i) {\n if (xmlData.length > i + 5 && xmlData[i + 1] === '-' && xmlData[i + 2] === '-') {\n //comment\n for (i += 3; i < xmlData.length; i++) {\n if (xmlData[i] === '-' && xmlData[i + 1] === '-' && xmlData[i + 2] === '>') {\n i += 2;\n break;\n }\n }\n } else if (\n xmlData.length > i + 8 &&\n xmlData[i + 1] === 'D' &&\n xmlData[i + 2] === 'O' &&\n xmlData[i + 3] === 'C' &&\n xmlData[i + 4] === 'T' &&\n xmlData[i + 5] === 'Y' &&\n xmlData[i + 6] === 'P' &&\n xmlData[i + 7] === 'E'\n ) {\n let angleBracketsCount = 1;\n for (i += 8; i < xmlData.length; i++) {\n if (xmlData[i] === '<') {\n angleBracketsCount++;\n } else if (xmlData[i] === '>') {\n angleBracketsCount--;\n if (angleBracketsCount === 0) {\n break;\n }\n }\n }\n } else if (\n xmlData.length > i + 9 &&\n xmlData[i + 1] === '[' &&\n xmlData[i + 2] === 'C' &&\n xmlData[i + 3] === 'D' &&\n xmlData[i + 4] === 'A' &&\n xmlData[i + 5] === 'T' &&\n xmlData[i + 6] === 'A' &&\n xmlData[i + 7] === '['\n ) {\n for (i += 8; i < xmlData.length; i++) {\n if (xmlData[i] === ']' && xmlData[i + 1] === ']' && xmlData[i + 2] === '>') {\n i += 2;\n break;\n }\n }\n }\n\n return i;\n}\n\nconst doubleQuote = '\"';\nconst singleQuote = \"'\";\n\n/**\n * Keep reading xmlData until '<' is found outside the attribute value.\n * @param {string} xmlData\n * @param {number} i\n */\nfunction readAttributeStr(xmlData, i) {\n let attrStr = '';\n let startChar = '';\n let tagClosed = false;\n for (; i < xmlData.length; i++) {\n if (xmlData[i] === doubleQuote || xmlData[i] === singleQuote) {\n if (startChar === '') {\n startChar = xmlData[i];\n } else if (startChar !== xmlData[i]) {\n //if vaue is enclosed with double quote then single quotes are allowed inside the value and vice versa\n } else {\n startChar = '';\n }\n } else if (xmlData[i] === '>') {\n if (startChar === '') {\n tagClosed = true;\n break;\n }\n }\n attrStr += xmlData[i];\n }\n if (startChar !== '') {\n return false;\n }\n\n return {\n value: attrStr,\n index: i,\n tagClosed: tagClosed\n };\n}\n\n/**\n * Select all the attributes whether valid or invalid.\n */\nconst validAttrStrRegxp = new RegExp('(\\\\s*)([^\\\\s=]+)(\\\\s*=)?(\\\\s*([\\'\"])(([\\\\s\\\\S])*?)\\\\5)?', 'g');\n\n//attr, =\"sd\", a=\"amit's\", a=\"sd\"b=\"saf\", ab cd=\"\"\n\nfunction validateAttributeString(attrStr, options) {\n //console.log(\"start:\"+attrStr+\":end\");\n\n //if(attrStr.trim().length === 0) return true; //empty string\n\n const matches = util.getAllMatches(attrStr, validAttrStrRegxp);\n const attrNames = {};\n\n for (let i = 0; i < matches.length; i++) {\n if (matches[i][1].length === 0) {\n //nospace before attribute name: a=\"sd\"b=\"saf\"\n return getErrorObject('InvalidAttr', \"Attribute '\"+matches[i][2]+\"' has no space in starting.\", getPositionFromMatch(matches[i]))\n } else if (matches[i][3] !== undefined && matches[i][4] === undefined) {\n return getErrorObject('InvalidAttr', \"Attribute '\"+matches[i][2]+\"' is without value.\", getPositionFromMatch(matches[i]));\n } else if (matches[i][3] === undefined && !options.allowBooleanAttributes) {\n //independent attribute: ab\n return getErrorObject('InvalidAttr', \"boolean attribute '\"+matches[i][2]+\"' is not allowed.\", getPositionFromMatch(matches[i]));\n }\n /* else if(matches[i][6] === undefined){//attribute without value: ab=\n return { err: { code:\"InvalidAttr\",msg:\"attribute \" + matches[i][2] + \" has no value assigned.\"}};\n } */\n const attrName = matches[i][2];\n if (!validateAttrName(attrName)) {\n return getErrorObject('InvalidAttr', \"Attribute '\"+attrName+\"' is an invalid name.\", getPositionFromMatch(matches[i]));\n }\n if (!attrNames.hasOwnProperty(attrName)) {\n //check for duplicate attribute.\n attrNames[attrName] = 1;\n } else {\n return getErrorObject('InvalidAttr', \"Attribute '\"+attrName+\"' is repeated.\", getPositionFromMatch(matches[i]));\n }\n }\n\n return true;\n}\n\nfunction validateNumberAmpersand(xmlData, i) {\n let re = /\\d/;\n if (xmlData[i] === 'x') {\n i++;\n re = /[\\da-fA-F]/;\n }\n for (; i < xmlData.length; i++) {\n if (xmlData[i] === ';')\n return i;\n if (!xmlData[i].match(re))\n break;\n }\n return -1;\n}\n\nfunction validateAmpersand(xmlData, i) {\n // https://www.w3.org/TR/xml/#dt-charref\n i++;\n if (xmlData[i] === ';')\n return -1;\n if (xmlData[i] === '#') {\n i++;\n return validateNumberAmpersand(xmlData, i);\n }\n let count = 0;\n for (; i < xmlData.length; i++, count++) {\n if (xmlData[i].match(/\\w/) && count < 20)\n continue;\n if (xmlData[i] === ';')\n break;\n return -1;\n }\n return i;\n}\n\nfunction getErrorObject(code, message, lineNumber) {\n return {\n err: {\n code: code,\n msg: message,\n line: lineNumber.line || lineNumber,\n col: lineNumber.col,\n },\n };\n}\n\nfunction validateAttrName(attrName) {\n return util.isName(attrName);\n}\n\n// const startsWithXML = /^xml/i;\n\nfunction validateTagName(tagname) {\n return util.isName(tagname) /* && !tagname.match(startsWithXML) */;\n}\n\n//this function returns the line number for the character at the given index\nfunction getLineNumberForPosition(xmlData, index) {\n const lines = xmlData.substring(0, index).split(/\\r?\\n/);\n return {\n line: lines.length,\n\n // column number is last line's length + 1, because column numbering starts at 1:\n col: lines[lines.length - 1].length + 1\n };\n}\n\n//this function returns the position of the first character of match within attrStr\nfunction getPositionFromMatch(match) {\n return match.startIndex + match[1].length;\n}\n","'use strict';\n//parse Empty Node as self closing node\nconst buildFromOrderedJs = require('./orderedJs2Xml');\n\nconst defaultOptions = {\n attributeNamePrefix: '@_',\n attributesGroupName: false,\n textNodeName: '#text',\n ignoreAttributes: true,\n cdataPropName: false,\n format: false,\n indentBy: ' ',\n suppressEmptyNode: false,\n suppressUnpairedNode: true,\n suppressBooleanAttributes: true,\n tagValueProcessor: function(key, a) {\n return a;\n },\n attributeValueProcessor: function(attrName, a) {\n return a;\n },\n preserveOrder: false,\n commentPropName: false,\n unpairedTags: [],\n entities: [\n { regex: new RegExp(\"&\", \"g\"), val: \"&\" },//it must be on top\n { regex: new RegExp(\">\", \"g\"), val: \">\" },\n { regex: new RegExp(\"<\", \"g\"), val: \"<\" },\n { regex: new RegExp(\"\\'\", \"g\"), val: \"'\" },\n { regex: new RegExp(\"\\\"\", \"g\"), val: \""\" }\n ],\n processEntities: true,\n stopNodes: [],\n // transformTagName: false,\n // transformAttributeName: false,\n oneListGroup: false\n};\n\nfunction Builder(options) {\n this.options = Object.assign({}, defaultOptions, options);\n if (this.options.ignoreAttributes || this.options.attributesGroupName) {\n this.isAttribute = function(/*a*/) {\n return false;\n };\n } else {\n this.attrPrefixLen = this.options.attributeNamePrefix.length;\n this.isAttribute = isAttribute;\n }\n\n this.processTextOrObjNode = processTextOrObjNode\n\n if (this.options.format) {\n this.indentate = indentate;\n this.tagEndChar = '>\\n';\n this.newLine = '\\n';\n } else {\n this.indentate = function() {\n return '';\n };\n this.tagEndChar = '>';\n this.newLine = '';\n }\n}\n\nBuilder.prototype.build = function(jObj) {\n if(this.options.preserveOrder){\n return buildFromOrderedJs(jObj, this.options);\n }else {\n if(Array.isArray(jObj) && this.options.arrayNodeName && this.options.arrayNodeName.length > 1){\n jObj = {\n [this.options.arrayNodeName] : jObj\n }\n }\n return this.j2x(jObj, 0).val;\n }\n};\n\nBuilder.prototype.j2x = function(jObj, level) {\n let attrStr = '';\n let val = '';\n for (let key in jObj) {\n if(!Object.prototype.hasOwnProperty.call(jObj, key)) continue;\n if (typeof jObj[key] === 'undefined') {\n // supress undefined node only if it is not an attribute\n if (this.isAttribute(key)) {\n val += '';\n }\n } else if (jObj[key] === null) {\n // null attribute should be ignored by the attribute list, but should not cause the tag closing\n if (this.isAttribute(key)) {\n val += '';\n } else if (key[0] === '?') {\n val += this.indentate(level) + '<' + key + '?' + this.tagEndChar;\n } else {\n val += this.indentate(level) + '<' + key + '/' + this.tagEndChar;\n }\n // val += this.indentate(level) + '<' + key + '/' + this.tagEndChar;\n } else if (jObj[key] instanceof Date) {\n val += this.buildTextValNode(jObj[key], key, '', level);\n } else if (typeof jObj[key] !== 'object') {\n //premitive type\n const attr = this.isAttribute(key);\n if (attr) {\n attrStr += this.buildAttrPairStr(attr, '' + jObj[key]);\n }else {\n //tag value\n if (key === this.options.textNodeName) {\n let newval = this.options.tagValueProcessor(key, '' + jObj[key]);\n val += this.replaceEntitiesValue(newval);\n } else {\n val += this.buildTextValNode(jObj[key], key, '', level);\n }\n }\n } else if (Array.isArray(jObj[key])) {\n //repeated nodes\n const arrLen = jObj[key].length;\n let listTagVal = \"\";\n let listTagAttr = \"\";\n for (let j = 0; j < arrLen; j++) {\n const item = jObj[key][j];\n if (typeof item === 'undefined') {\n // supress undefined node\n } else if (item === null) {\n if(key[0] === \"?\") val += this.indentate(level) + '<' + key + '?' + this.tagEndChar;\n else val += this.indentate(level) + '<' + key + '/' + this.tagEndChar;\n // val += this.indentate(level) + '<' + key + '/' + this.tagEndChar;\n } else if (typeof item === 'object') {\n if(this.options.oneListGroup){\n const result = this.j2x(item, level + 1);\n listTagVal += result.val;\n if (this.options.attributesGroupName && item.hasOwnProperty(this.options.attributesGroupName)) {\n listTagAttr += result.attrStr\n }\n }else{\n listTagVal += this.processTextOrObjNode(item, key, level)\n }\n } else {\n if (this.options.oneListGroup) {\n let textValue = this.options.tagValueProcessor(key, item);\n textValue = this.replaceEntitiesValue(textValue);\n listTagVal += textValue;\n } else {\n listTagVal += this.buildTextValNode(item, key, '', level);\n }\n }\n }\n if(this.options.oneListGroup){\n listTagVal = this.buildObjectNode(listTagVal, key, listTagAttr, level);\n }\n val += listTagVal;\n } else {\n //nested node\n if (this.options.attributesGroupName && key === this.options.attributesGroupName) {\n const Ks = Object.keys(jObj[key]);\n const L = Ks.length;\n for (let j = 0; j < L; j++) {\n attrStr += this.buildAttrPairStr(Ks[j], '' + jObj[key][Ks[j]]);\n }\n } else {\n val += this.processTextOrObjNode(jObj[key], key, level)\n }\n }\n }\n return {attrStr: attrStr, val: val};\n};\n\nBuilder.prototype.buildAttrPairStr = function(attrName, val){\n val = this.options.attributeValueProcessor(attrName, '' + val);\n val = this.replaceEntitiesValue(val);\n if (this.options.suppressBooleanAttributes && val === \"true\") {\n return ' ' + attrName;\n } else return ' ' + attrName + '=\"' + val + '\"';\n}\n\nfunction processTextOrObjNode (object, key, level) {\n const result = this.j2x(object, level + 1);\n if (object[this.options.textNodeName] !== undefined && Object.keys(object).length === 1) {\n return this.buildTextValNode(object[this.options.textNodeName], key, result.attrStr, level);\n } else {\n return this.buildObjectNode(result.val, key, result.attrStr, level);\n }\n}\n\nBuilder.prototype.buildObjectNode = function(val, key, attrStr, level) {\n if(val === \"\"){\n if(key[0] === \"?\") return this.indentate(level) + '<' + key + attrStr+ '?' + this.tagEndChar;\n else {\n return this.indentate(level) + '<' + key + attrStr + this.closeTag(key) + this.tagEndChar;\n }\n }else{\n\n let tagEndExp = '' + val + tagEndExp );\n } else if (this.options.commentPropName !== false && key === this.options.commentPropName && piClosingChar.length === 0) {\n return this.indentate(level) + `` + this.newLine;\n }else {\n return (\n this.indentate(level) + '<' + key + attrStr + piClosingChar + this.tagEndChar +\n val +\n this.indentate(level) + tagEndExp );\n }\n }\n}\n\nBuilder.prototype.closeTag = function(key){\n let closeTag = \"\";\n if(this.options.unpairedTags.indexOf(key) !== -1){ //unpaired\n if(!this.options.suppressUnpairedNode) closeTag = \"/\"\n }else if(this.options.suppressEmptyNode){ //empty\n closeTag = \"/\";\n }else{\n closeTag = `>` + this.newLine;\n }else if (this.options.commentPropName !== false && key === this.options.commentPropName) {\n return this.indentate(level) + `` + this.newLine;\n }else if(key[0] === \"?\") {//PI tag\n return this.indentate(level) + '<' + key + attrStr+ '?' + this.tagEndChar; \n }else{\n let textValue = this.options.tagValueProcessor(key, val);\n textValue = this.replaceEntitiesValue(textValue);\n \n if( textValue === ''){\n return this.indentate(level) + '<' + key + attrStr + this.closeTag(key) + this.tagEndChar;\n }else{\n return this.indentate(level) + '<' + key + attrStr + '>' +\n textValue +\n ' 0 && this.options.processEntities){\n for (let i=0; i 0) {\n indentation = EOL;\n }\n return arrToStr(jArray, options, \"\", indentation);\n}\n\nfunction arrToStr(arr, options, jPath, indentation) {\n let xmlStr = \"\";\n let isPreviousElementTag = false;\n\n for (let i = 0; i < arr.length; i++) {\n const tagObj = arr[i];\n const tagName = propName(tagObj);\n if(tagName === undefined) continue;\n\n let newJPath = \"\";\n if (jPath.length === 0) newJPath = tagName\n else newJPath = `${jPath}.${tagName}`;\n\n if (tagName === options.textNodeName) {\n let tagText = tagObj[tagName];\n if (!isStopNode(newJPath, options)) {\n tagText = options.tagValueProcessor(tagName, tagText);\n tagText = replaceEntitiesValue(tagText, options);\n }\n if (isPreviousElementTag) {\n xmlStr += indentation;\n }\n xmlStr += tagText;\n isPreviousElementTag = false;\n continue;\n } else if (tagName === options.cdataPropName) {\n if (isPreviousElementTag) {\n xmlStr += indentation;\n }\n xmlStr += ``;\n isPreviousElementTag = false;\n continue;\n } else if (tagName === options.commentPropName) {\n xmlStr += indentation + ``;\n isPreviousElementTag = true;\n continue;\n } else if (tagName[0] === \"?\") {\n const attStr = attr_to_str(tagObj[\":@\"], options);\n const tempInd = tagName === \"?xml\" ? \"\" : indentation;\n let piTextNodeName = tagObj[tagName][0][options.textNodeName];\n piTextNodeName = piTextNodeName.length !== 0 ? \" \" + piTextNodeName : \"\"; //remove extra spacing\n xmlStr += tempInd + `<${tagName}${piTextNodeName}${attStr}?>`;\n isPreviousElementTag = true;\n continue;\n }\n let newIdentation = indentation;\n if (newIdentation !== \"\") {\n newIdentation += options.indentBy;\n }\n const attStr = attr_to_str(tagObj[\":@\"], options);\n const tagStart = indentation + `<${tagName}${attStr}`;\n const tagValue = arrToStr(tagObj[tagName], options, newJPath, newIdentation);\n if (options.unpairedTags.indexOf(tagName) !== -1) {\n if (options.suppressUnpairedNode) xmlStr += tagStart + \">\";\n else xmlStr += tagStart + \"/>\";\n } else if ((!tagValue || tagValue.length === 0) && options.suppressEmptyNode) {\n xmlStr += tagStart + \"/>\";\n } else if (tagValue && tagValue.endsWith(\">\")) {\n xmlStr += tagStart + `>${tagValue}${indentation}`;\n } else {\n xmlStr += tagStart + \">\";\n if (tagValue && indentation !== \"\" && (tagValue.includes(\"/>\") || tagValue.includes(\"`;\n }\n isPreviousElementTag = true;\n }\n\n return xmlStr;\n}\n\nfunction propName(obj) {\n const keys = Object.keys(obj);\n for (let i = 0; i < keys.length; i++) {\n const key = keys[i];\n if(!obj.hasOwnProperty(key)) continue;\n if (key !== \":@\") return key;\n }\n}\n\nfunction attr_to_str(attrMap, options) {\n let attrStr = \"\";\n if (attrMap && !options.ignoreAttributes) {\n for (let attr in attrMap) {\n if(!attrMap.hasOwnProperty(attr)) continue;\n let attrVal = options.attributeValueProcessor(attr, attrMap[attr]);\n attrVal = replaceEntitiesValue(attrVal, options);\n if (attrVal === true && options.suppressBooleanAttributes) {\n attrStr += ` ${attr.substr(options.attributeNamePrefix.length)}`;\n } else {\n attrStr += ` ${attr.substr(options.attributeNamePrefix.length)}=\"${attrVal}\"`;\n }\n }\n }\n return attrStr;\n}\n\nfunction isStopNode(jPath, options) {\n jPath = jPath.substr(0, jPath.length - options.textNodeName.length - 1);\n let tagName = jPath.substr(jPath.lastIndexOf(\".\") + 1);\n for (let index in options.stopNodes) {\n if (options.stopNodes[index] === jPath || options.stopNodes[index] === \"*.\" + tagName) return true;\n }\n return false;\n}\n\nfunction replaceEntitiesValue(textValue, options) {\n if (textValue && textValue.length > 0 && options.processEntities) {\n for (let i = 0; i < options.entities.length; i++) {\n const entity = options.entities[i];\n textValue = textValue.replace(entity.regex, entity.val);\n }\n }\n return textValue;\n}\nmodule.exports = toXml;\n","const util = require('../util');\n\n//TODO: handle comments\nfunction readDocType(xmlData, i){\n \n const entities = {};\n if( xmlData[i + 3] === 'O' &&\n xmlData[i + 4] === 'C' &&\n xmlData[i + 5] === 'T' &&\n xmlData[i + 6] === 'Y' &&\n xmlData[i + 7] === 'P' &&\n xmlData[i + 8] === 'E')\n { \n i = i+9;\n let angleBracketsCount = 1;\n let hasBody = false, comment = false;\n let exp = \"\";\n for(;i') { //Read tag content\n if(comment){\n if( xmlData[i - 1] === \"-\" && xmlData[i - 2] === \"-\"){\n comment = false;\n angleBracketsCount--;\n }\n }else{\n angleBracketsCount--;\n }\n if (angleBracketsCount === 0) {\n break;\n }\n }else if( xmlData[i] === '['){\n hasBody = true;\n }else{\n exp += xmlData[i];\n }\n }\n if(angleBracketsCount !== 0){\n throw new Error(`Unclosed DOCTYPE`);\n }\n }else{\n throw new Error(`Invalid Tag instead of DOCTYPE`);\n }\n return {entities, i};\n}\n\nfunction readEntityExp(xmlData,i){\n //External entities are not supported\n // \n\n //Parameter entities are not supported\n // \n\n //Internal entities are supported\n // \n \n //read EntityName\n let entityName = \"\";\n for (; i < xmlData.length && (xmlData[i] !== \"'\" && xmlData[i] !== '\"' ); i++) {\n // if(xmlData[i] === \" \") continue;\n // else \n entityName += xmlData[i];\n }\n entityName = entityName.trim();\n if(entityName.indexOf(\" \") !== -1) throw new Error(\"External entites are not supported\");\n\n //read Entity Value\n const startChar = xmlData[i++];\n let val = \"\"\n for (; i < xmlData.length && xmlData[i] !== startChar ; i++) {\n val += xmlData[i];\n }\n return [entityName, val, i];\n}\n\nfunction isComment(xmlData, i){\n if(xmlData[i+1] === '!' &&\n xmlData[i+2] === '-' &&\n xmlData[i+3] === '-') return true\n return false\n}\nfunction isEntity(xmlData, i){\n if(xmlData[i+1] === '!' &&\n xmlData[i+2] === 'E' &&\n xmlData[i+3] === 'N' &&\n xmlData[i+4] === 'T' &&\n xmlData[i+5] === 'I' &&\n xmlData[i+6] === 'T' &&\n xmlData[i+7] === 'Y') return true\n return false\n}\nfunction isElement(xmlData, i){\n if(xmlData[i+1] === '!' &&\n xmlData[i+2] === 'E' &&\n xmlData[i+3] === 'L' &&\n xmlData[i+4] === 'E' &&\n xmlData[i+5] === 'M' &&\n xmlData[i+6] === 'E' &&\n xmlData[i+7] === 'N' &&\n xmlData[i+8] === 'T') return true\n return false\n}\n\nfunction isAttlist(xmlData, i){\n if(xmlData[i+1] === '!' &&\n xmlData[i+2] === 'A' &&\n xmlData[i+3] === 'T' &&\n xmlData[i+4] === 'T' &&\n xmlData[i+5] === 'L' &&\n xmlData[i+6] === 'I' &&\n xmlData[i+7] === 'S' &&\n xmlData[i+8] === 'T') return true\n return false\n}\nfunction isNotation(xmlData, i){\n if(xmlData[i+1] === '!' &&\n xmlData[i+2] === 'N' &&\n xmlData[i+3] === 'O' &&\n xmlData[i+4] === 'T' &&\n xmlData[i+5] === 'A' &&\n xmlData[i+6] === 'T' &&\n xmlData[i+7] === 'I' &&\n xmlData[i+8] === 'O' &&\n xmlData[i+9] === 'N') return true\n return false\n}\n\nfunction validateEntityName(name){\n if (util.isName(name))\n\treturn name;\n else\n throw new Error(`Invalid entity name ${name}`);\n}\n\nmodule.exports = readDocType;\n","\nconst defaultOptions = {\n preserveOrder: false,\n attributeNamePrefix: '@_',\n attributesGroupName: false,\n textNodeName: '#text',\n ignoreAttributes: true,\n removeNSPrefix: false, // remove NS from tag name or attribute name if true\n allowBooleanAttributes: false, //a tag can have attributes without any value\n //ignoreRootElement : false,\n parseTagValue: true,\n parseAttributeValue: false,\n trimValues: true, //Trim string values of tag and attributes\n cdataPropName: false,\n numberParseOptions: {\n hex: true,\n leadingZeros: true,\n eNotation: true\n },\n tagValueProcessor: function(tagName, val) {\n return val;\n },\n attributeValueProcessor: function(attrName, val) {\n return val;\n },\n stopNodes: [], //nested tags will not be parsed even for errors\n alwaysCreateTextNode: false,\n isArray: () => false,\n commentPropName: false,\n unpairedTags: [],\n processEntities: true,\n htmlEntities: false,\n ignoreDeclaration: false,\n ignorePiTags: false,\n transformTagName: false,\n transformAttributeName: false,\n updateTag: function(tagName, jPath, attrs){\n return tagName\n },\n // skipEmptyListItem: false\n};\n \nconst buildOptions = function(options) {\n return Object.assign({}, defaultOptions, options);\n};\n\nexports.buildOptions = buildOptions;\nexports.defaultOptions = defaultOptions;","'use strict';\n///@ts-check\n\nconst util = require('../util');\nconst xmlNode = require('./xmlNode');\nconst readDocType = require(\"./DocTypeReader\");\nconst toNumber = require(\"strnum\");\n\n// const regx =\n// '<((!\\\\[CDATA\\\\[([\\\\s\\\\S]*?)(]]>))|((NAME:)?(NAME))([^>]*)>|((\\\\/)(NAME)\\\\s*>))([^<]*)'\n// .replace(/NAME/g, util.nameRegexp);\n\n//const tagsRegx = new RegExp(\"<(\\\\/?[\\\\w:\\\\-\\._]+)([^>]*)>(\\\\s*\"+cdataRegx+\")*([^<]+)?\",\"g\");\n//const tagsRegx = new RegExp(\"<(\\\\/?)((\\\\w*:)?([\\\\w:\\\\-\\._]+))([^>]*)>([^<]*)(\"+cdataRegx+\"([^<]*))*([^<]+)?\",\"g\");\n\nclass OrderedObjParser{\n constructor(options){\n this.options = options;\n this.currentNode = null;\n this.tagsNodeStack = [];\n this.docTypeEntities = {};\n this.lastEntities = {\n \"apos\" : { regex: /&(apos|#39|#x27);/g, val : \"'\"},\n \"gt\" : { regex: /&(gt|#62|#x3E);/g, val : \">\"},\n \"lt\" : { regex: /&(lt|#60|#x3C);/g, val : \"<\"},\n \"quot\" : { regex: /&(quot|#34|#x22);/g, val : \"\\\"\"},\n };\n this.ampEntity = { regex: /&(amp|#38|#x26);/g, val : \"&\"};\n this.htmlEntities = {\n \"space\": { regex: /&(nbsp|#160);/g, val: \" \" },\n // \"lt\" : { regex: /&(lt|#60);/g, val: \"<\" },\n // \"gt\" : { regex: /&(gt|#62);/g, val: \">\" },\n // \"amp\" : { regex: /&(amp|#38);/g, val: \"&\" },\n // \"quot\" : { regex: /&(quot|#34);/g, val: \"\\\"\" },\n // \"apos\" : { regex: /&(apos|#39);/g, val: \"'\" },\n \"cent\" : { regex: /&(cent|#162);/g, val: \"¢\" },\n \"pound\" : { regex: /&(pound|#163);/g, val: \"£\" },\n \"yen\" : { regex: /&(yen|#165);/g, val: \"¥\" },\n \"euro\" : { regex: /&(euro|#8364);/g, val: \"€\" },\n \"copyright\" : { regex: /&(copy|#169);/g, val: \"©\" },\n \"reg\" : { regex: /&(reg|#174);/g, val: \"®\" },\n \"inr\" : { regex: /&(inr|#8377);/g, val: \"₹\" },\n \"num_dec\": { regex: /&#([0-9]{1,7});/g, val : (_, str) => String.fromCharCode(Number.parseInt(str, 10)) },\n \"num_hex\": { regex: /&#x([0-9a-fA-F]{1,6});/g, val : (_, str) => String.fromCharCode(Number.parseInt(str, 16)) },\n };\n this.addExternalEntities = addExternalEntities;\n this.parseXml = parseXml;\n this.parseTextData = parseTextData;\n this.resolveNameSpace = resolveNameSpace;\n this.buildAttributesMap = buildAttributesMap;\n this.isItStopNode = isItStopNode;\n this.replaceEntitiesValue = replaceEntitiesValue;\n this.readStopNodeData = readStopNodeData;\n this.saveTextToParentTag = saveTextToParentTag;\n this.addChild = addChild;\n }\n\n}\n\nfunction addExternalEntities(externalEntities){\n const entKeys = Object.keys(externalEntities);\n for (let i = 0; i < entKeys.length; i++) {\n const ent = entKeys[i];\n this.lastEntities[ent] = {\n regex: new RegExp(\"&\"+ent+\";\",\"g\"),\n val : externalEntities[ent]\n }\n }\n}\n\n/**\n * @param {string} val\n * @param {string} tagName\n * @param {string} jPath\n * @param {boolean} dontTrim\n * @param {boolean} hasAttributes\n * @param {boolean} isLeafNode\n * @param {boolean} escapeEntities\n */\nfunction parseTextData(val, tagName, jPath, dontTrim, hasAttributes, isLeafNode, escapeEntities) {\n if (val !== undefined) {\n if (this.options.trimValues && !dontTrim) {\n val = val.trim();\n }\n if(val.length > 0){\n if(!escapeEntities) val = this.replaceEntitiesValue(val);\n \n const newval = this.options.tagValueProcessor(tagName, val, jPath, hasAttributes, isLeafNode);\n if(newval === null || newval === undefined){\n //don't parse\n return val;\n }else if(typeof newval !== typeof val || newval !== val){\n //overwrite\n return newval;\n }else if(this.options.trimValues){\n return parseValue(val, this.options.parseTagValue, this.options.numberParseOptions);\n }else{\n const trimmedVal = val.trim();\n if(trimmedVal === val){\n return parseValue(val, this.options.parseTagValue, this.options.numberParseOptions);\n }else{\n return val;\n }\n }\n }\n }\n}\n\nfunction resolveNameSpace(tagname) {\n if (this.options.removeNSPrefix) {\n const tags = tagname.split(':');\n const prefix = tagname.charAt(0) === '/' ? '/' : '';\n if (tags[0] === 'xmlns') {\n return '';\n }\n if (tags.length === 2) {\n tagname = prefix + tags[1];\n }\n }\n return tagname;\n}\n\n//TODO: change regex to capture NS\n//const attrsRegx = new RegExp(\"([\\\\w\\\\-\\\\.\\\\:]+)\\\\s*=\\\\s*(['\\\"])((.|\\n)*?)\\\\2\",\"gm\");\nconst attrsRegx = new RegExp('([^\\\\s=]+)\\\\s*(=\\\\s*([\\'\"])([\\\\s\\\\S]*?)\\\\3)?', 'gm');\n\nfunction buildAttributesMap(attrStr, jPath, tagName) {\n if (!this.options.ignoreAttributes && typeof attrStr === 'string') {\n // attrStr = attrStr.replace(/\\r?\\n/g, ' ');\n //attrStr = attrStr || attrStr.trim();\n\n const matches = util.getAllMatches(attrStr, attrsRegx);\n const len = matches.length; //don't make it inline\n const attrs = {};\n for (let i = 0; i < len; i++) {\n const attrName = this.resolveNameSpace(matches[i][1]);\n let oldVal = matches[i][4];\n let aName = this.options.attributeNamePrefix + attrName;\n if (attrName.length) {\n if (this.options.transformAttributeName) {\n aName = this.options.transformAttributeName(aName);\n }\n if(aName === \"__proto__\") aName = \"#__proto__\";\n if (oldVal !== undefined) {\n if (this.options.trimValues) {\n oldVal = oldVal.trim();\n }\n oldVal = this.replaceEntitiesValue(oldVal);\n const newVal = this.options.attributeValueProcessor(attrName, oldVal, jPath);\n if(newVal === null || newVal === undefined){\n //don't parse\n attrs[aName] = oldVal;\n }else if(typeof newVal !== typeof oldVal || newVal !== oldVal){\n //overwrite\n attrs[aName] = newVal;\n }else{\n //parse\n attrs[aName] = parseValue(\n oldVal,\n this.options.parseAttributeValue,\n this.options.numberParseOptions\n );\n }\n } else if (this.options.allowBooleanAttributes) {\n attrs[aName] = true;\n }\n }\n }\n if (!Object.keys(attrs).length) {\n return;\n }\n if (this.options.attributesGroupName) {\n const attrCollection = {};\n attrCollection[this.options.attributesGroupName] = attrs;\n return attrCollection;\n }\n return attrs\n }\n}\n\nconst parseXml = function(xmlData) {\n xmlData = xmlData.replace(/\\r\\n?/g, \"\\n\"); //TODO: remove this line\n const xmlObj = new xmlNode('!xml');\n let currentNode = xmlObj;\n let textData = \"\";\n let jPath = \"\";\n for(let i=0; i< xmlData.length; i++){//for each char in XML data\n const ch = xmlData[i];\n if(ch === '<'){\n // const nextIndex = i+1;\n // const _2ndChar = xmlData[nextIndex];\n if( xmlData[i+1] === '/') {//Closing Tag\n const closeIndex = findClosingIndex(xmlData, \">\", i, \"Closing Tag is not closed.\")\n let tagName = xmlData.substring(i+2,closeIndex).trim();\n\n if(this.options.removeNSPrefix){\n const colonIndex = tagName.indexOf(\":\");\n if(colonIndex !== -1){\n tagName = tagName.substr(colonIndex+1);\n }\n }\n\n if(this.options.transformTagName) {\n tagName = this.options.transformTagName(tagName);\n }\n\n if(currentNode){\n textData = this.saveTextToParentTag(textData, currentNode, jPath);\n }\n\n //check if last tag of nested tag was unpaired tag\n const lastTagName = jPath.substring(jPath.lastIndexOf(\".\")+1);\n if(tagName && this.options.unpairedTags.indexOf(tagName) !== -1 ){\n throw new Error(`Unpaired tag can not be used as closing tag: `);\n }\n let propIndex = 0\n if(lastTagName && this.options.unpairedTags.indexOf(lastTagName) !== -1 ){\n propIndex = jPath.lastIndexOf('.', jPath.lastIndexOf('.')-1)\n this.tagsNodeStack.pop();\n }else{\n propIndex = jPath.lastIndexOf(\".\");\n }\n jPath = jPath.substring(0, propIndex);\n\n currentNode = this.tagsNodeStack.pop();//avoid recursion, set the parent tag scope\n textData = \"\";\n i = closeIndex;\n } else if( xmlData[i+1] === '?') {\n\n let tagData = readTagExp(xmlData,i, false, \"?>\");\n if(!tagData) throw new Error(\"Pi Tag is not closed.\");\n\n textData = this.saveTextToParentTag(textData, currentNode, jPath);\n if( (this.options.ignoreDeclaration && tagData.tagName === \"?xml\") || this.options.ignorePiTags){\n\n }else{\n \n const childNode = new xmlNode(tagData.tagName);\n childNode.add(this.options.textNodeName, \"\");\n \n if(tagData.tagName !== tagData.tagExp && tagData.attrExpPresent){\n childNode[\":@\"] = this.buildAttributesMap(tagData.tagExp, jPath, tagData.tagName);\n }\n this.addChild(currentNode, childNode, jPath)\n\n }\n\n\n i = tagData.closeIndex + 1;\n } else if(xmlData.substr(i + 1, 3) === '!--') {\n const endIndex = findClosingIndex(xmlData, \"-->\", i+4, \"Comment is not closed.\")\n if(this.options.commentPropName){\n const comment = xmlData.substring(i + 4, endIndex - 2);\n\n textData = this.saveTextToParentTag(textData, currentNode, jPath);\n\n currentNode.add(this.options.commentPropName, [ { [this.options.textNodeName] : comment } ]);\n }\n i = endIndex;\n } else if( xmlData.substr(i + 1, 2) === '!D') {\n const result = readDocType(xmlData, i);\n this.docTypeEntities = result.entities;\n i = result.i;\n }else if(xmlData.substr(i + 1, 2) === '![') {\n const closeIndex = findClosingIndex(xmlData, \"]]>\", i, \"CDATA is not closed.\") - 2;\n const tagExp = xmlData.substring(i + 9,closeIndex);\n\n textData = this.saveTextToParentTag(textData, currentNode, jPath);\n\n let val = this.parseTextData(tagExp, currentNode.tagname, jPath, true, false, true, true);\n if(val == undefined) val = \"\";\n\n //cdata should be set even if it is 0 length string\n if(this.options.cdataPropName){\n currentNode.add(this.options.cdataPropName, [ { [this.options.textNodeName] : tagExp } ]);\n }else{\n currentNode.add(this.options.textNodeName, val);\n }\n \n i = closeIndex + 2;\n }else {//Opening tag\n let result = readTagExp(xmlData,i, this.options.removeNSPrefix);\n let tagName= result.tagName;\n const rawTagName = result.rawTagName;\n let tagExp = result.tagExp;\n let attrExpPresent = result.attrExpPresent;\n let closeIndex = result.closeIndex;\n\n if (this.options.transformTagName) {\n tagName = this.options.transformTagName(tagName);\n }\n \n //save text as child node\n if (currentNode && textData) {\n if(currentNode.tagname !== '!xml'){\n //when nested tag is found\n textData = this.saveTextToParentTag(textData, currentNode, jPath, false);\n }\n }\n\n //check if last tag was unpaired tag\n const lastTag = currentNode;\n if(lastTag && this.options.unpairedTags.indexOf(lastTag.tagname) !== -1 ){\n currentNode = this.tagsNodeStack.pop();\n jPath = jPath.substring(0, jPath.lastIndexOf(\".\"));\n }\n if(tagName !== xmlObj.tagname){\n jPath += jPath ? \".\" + tagName : tagName;\n }\n if (this.isItStopNode(this.options.stopNodes, jPath, tagName)) {\n let tagContent = \"\";\n //self-closing tag\n if(tagExp.length > 0 && tagExp.lastIndexOf(\"/\") === tagExp.length - 1){\n if(tagName[tagName.length - 1] === \"/\"){ //remove trailing '/'\n tagName = tagName.substr(0, tagName.length - 1);\n jPath = jPath.substr(0, jPath.length - 1);\n tagExp = tagName;\n }else{\n tagExp = tagExp.substr(0, tagExp.length - 1);\n }\n i = result.closeIndex;\n }\n //unpaired tag\n else if(this.options.unpairedTags.indexOf(tagName) !== -1){\n \n i = result.closeIndex;\n }\n //normal tag\n else{\n //read until closing tag is found\n const result = this.readStopNodeData(xmlData, rawTagName, closeIndex + 1);\n if(!result) throw new Error(`Unexpected end of ${rawTagName}`);\n i = result.i;\n tagContent = result.tagContent;\n }\n\n const childNode = new xmlNode(tagName);\n if(tagName !== tagExp && attrExpPresent){\n childNode[\":@\"] = this.buildAttributesMap(tagExp, jPath, tagName);\n }\n if(tagContent) {\n tagContent = this.parseTextData(tagContent, tagName, jPath, true, attrExpPresent, true, true);\n }\n \n jPath = jPath.substr(0, jPath.lastIndexOf(\".\"));\n childNode.add(this.options.textNodeName, tagContent);\n \n this.addChild(currentNode, childNode, jPath)\n }else{\n //selfClosing tag\n if(tagExp.length > 0 && tagExp.lastIndexOf(\"/\") === tagExp.length - 1){\n if(tagName[tagName.length - 1] === \"/\"){ //remove trailing '/'\n tagName = tagName.substr(0, tagName.length - 1);\n jPath = jPath.substr(0, jPath.length - 1);\n tagExp = tagName;\n }else{\n tagExp = tagExp.substr(0, tagExp.length - 1);\n }\n \n if(this.options.transformTagName) {\n tagName = this.options.transformTagName(tagName);\n }\n\n const childNode = new xmlNode(tagName);\n if(tagName !== tagExp && attrExpPresent){\n childNode[\":@\"] = this.buildAttributesMap(tagExp, jPath, tagName);\n }\n this.addChild(currentNode, childNode, jPath)\n jPath = jPath.substr(0, jPath.lastIndexOf(\".\"));\n }\n //opening tag\n else{\n const childNode = new xmlNode( tagName);\n this.tagsNodeStack.push(currentNode);\n \n if(tagName !== tagExp && attrExpPresent){\n childNode[\":@\"] = this.buildAttributesMap(tagExp, jPath, tagName);\n }\n this.addChild(currentNode, childNode, jPath)\n currentNode = childNode;\n }\n textData = \"\";\n i = closeIndex;\n }\n }\n }else{\n textData += xmlData[i];\n }\n }\n return xmlObj.child;\n}\n\nfunction addChild(currentNode, childNode, jPath){\n const result = this.options.updateTag(childNode.tagname, jPath, childNode[\":@\"])\n if(result === false){\n }else if(typeof result === \"string\"){\n childNode.tagname = result\n currentNode.addChild(childNode);\n }else{\n currentNode.addChild(childNode);\n }\n}\n\nconst replaceEntitiesValue = function(val){\n\n if(this.options.processEntities){\n for(let entityName in this.docTypeEntities){\n const entity = this.docTypeEntities[entityName];\n val = val.replace( entity.regx, entity.val);\n }\n for(let entityName in this.lastEntities){\n const entity = this.lastEntities[entityName];\n val = val.replace( entity.regex, entity.val);\n }\n if(this.options.htmlEntities){\n for(let entityName in this.htmlEntities){\n const entity = this.htmlEntities[entityName];\n val = val.replace( entity.regex, entity.val);\n }\n }\n val = val.replace( this.ampEntity.regex, this.ampEntity.val);\n }\n return val;\n}\nfunction saveTextToParentTag(textData, currentNode, jPath, isLeafNode) {\n if (textData) { //store previously collected data as textNode\n if(isLeafNode === undefined) isLeafNode = Object.keys(currentNode.child).length === 0\n \n textData = this.parseTextData(textData,\n currentNode.tagname,\n jPath,\n false,\n currentNode[\":@\"] ? Object.keys(currentNode[\":@\"]).length !== 0 : false,\n isLeafNode);\n\n if (textData !== undefined && textData !== \"\")\n currentNode.add(this.options.textNodeName, textData);\n textData = \"\";\n }\n return textData;\n}\n\n//TODO: use jPath to simplify the logic\n/**\n * \n * @param {string[]} stopNodes \n * @param {string} jPath\n * @param {string} currentTagName \n */\nfunction isItStopNode(stopNodes, jPath, currentTagName){\n const allNodesExp = \"*.\" + currentTagName;\n for (const stopNodePath in stopNodes) {\n const stopNodeExp = stopNodes[stopNodePath];\n if( allNodesExp === stopNodeExp || jPath === stopNodeExp ) return true;\n }\n return false;\n}\n\n/**\n * Returns the tag Expression and where it is ending handling single-double quotes situation\n * @param {string} xmlData \n * @param {number} i starting index\n * @returns \n */\nfunction tagExpWithClosingIndex(xmlData, i, closingChar = \">\"){\n let attrBoundary;\n let tagExp = \"\";\n for (let index = i; index < xmlData.length; index++) {\n let ch = xmlData[index];\n if (attrBoundary) {\n if (ch === attrBoundary) attrBoundary = \"\";//reset\n } else if (ch === '\"' || ch === \"'\") {\n attrBoundary = ch;\n } else if (ch === closingChar[0]) {\n if(closingChar[1]){\n if(xmlData[index + 1] === closingChar[1]){\n return {\n data: tagExp,\n index: index\n }\n }\n }else{\n return {\n data: tagExp,\n index: index\n }\n }\n } else if (ch === '\\t') {\n ch = \" \"\n }\n tagExp += ch;\n }\n}\n\nfunction findClosingIndex(xmlData, str, i, errMsg){\n const closingIndex = xmlData.indexOf(str, i);\n if(closingIndex === -1){\n throw new Error(errMsg)\n }else{\n return closingIndex + str.length - 1;\n }\n}\n\nfunction readTagExp(xmlData,i, removeNSPrefix, closingChar = \">\"){\n const result = tagExpWithClosingIndex(xmlData, i+1, closingChar);\n if(!result) return;\n let tagExp = result.data;\n const closeIndex = result.index;\n const separatorIndex = tagExp.search(/\\s/);\n let tagName = tagExp;\n let attrExpPresent = true;\n if(separatorIndex !== -1){//separate tag name and attributes expression\n tagName = tagExp.substring(0, separatorIndex);\n tagExp = tagExp.substring(separatorIndex + 1).trimStart();\n }\n\n const rawTagName = tagName;\n if(removeNSPrefix){\n const colonIndex = tagName.indexOf(\":\");\n if(colonIndex !== -1){\n tagName = tagName.substr(colonIndex+1);\n attrExpPresent = tagName !== result.data.substr(colonIndex + 1);\n }\n }\n\n return {\n tagName: tagName,\n tagExp: tagExp,\n closeIndex: closeIndex,\n attrExpPresent: attrExpPresent,\n rawTagName: rawTagName,\n }\n}\n/**\n * find paired tag for a stop node\n * @param {string} xmlData \n * @param {string} tagName \n * @param {number} i \n */\nfunction readStopNodeData(xmlData, tagName, i){\n const startIndex = i;\n // Starting at 1 since we already have an open tag\n let openTagCount = 1;\n\n for (; i < xmlData.length; i++) {\n if( xmlData[i] === \"<\"){ \n if (xmlData[i+1] === \"/\") {//close tag\n const closeIndex = findClosingIndex(xmlData, \">\", i, `${tagName} is not closed`);\n let closeTagName = xmlData.substring(i+2,closeIndex).trim();\n if(closeTagName === tagName){\n openTagCount--;\n if (openTagCount === 0) {\n return {\n tagContent: xmlData.substring(startIndex, i),\n i : closeIndex\n }\n }\n }\n i=closeIndex;\n } else if(xmlData[i+1] === '?') { \n const closeIndex = findClosingIndex(xmlData, \"?>\", i+1, \"StopNode is not closed.\")\n i=closeIndex;\n } else if(xmlData.substr(i + 1, 3) === '!--') { \n const closeIndex = findClosingIndex(xmlData, \"-->\", i+3, \"StopNode is not closed.\")\n i=closeIndex;\n } else if(xmlData.substr(i + 1, 2) === '![') { \n const closeIndex = findClosingIndex(xmlData, \"]]>\", i, \"StopNode is not closed.\") - 2;\n i=closeIndex;\n } else {\n const tagData = readTagExp(xmlData, i, '>')\n\n if (tagData) {\n const openTagName = tagData && tagData.tagName;\n if (openTagName === tagName && tagData.tagExp[tagData.tagExp.length-1] !== \"/\") {\n openTagCount++;\n }\n i=tagData.closeIndex;\n }\n }\n }\n }//end for loop\n}\n\nfunction parseValue(val, shouldParse, options) {\n if (shouldParse && typeof val === 'string') {\n //console.log(options)\n const newval = val.trim();\n if(newval === 'true' ) return true;\n else if(newval === 'false' ) return false;\n else return toNumber(val, options);\n } else {\n if (util.isExist(val)) {\n return val;\n } else {\n return '';\n }\n }\n}\n\n\nmodule.exports = OrderedObjParser;\n","const { buildOptions} = require(\"./OptionsBuilder\");\nconst OrderedObjParser = require(\"./OrderedObjParser\");\nconst { prettify} = require(\"./node2json\");\nconst validator = require('../validator');\n\nclass XMLParser{\n \n constructor(options){\n this.externalEntities = {};\n this.options = buildOptions(options);\n \n }\n /**\n * Parse XML dats to JS object \n * @param {string|Buffer} xmlData \n * @param {boolean|Object} validationOption \n */\n parse(xmlData,validationOption){\n if(typeof xmlData === \"string\"){\n }else if( xmlData.toString){\n xmlData = xmlData.toString();\n }else{\n throw new Error(\"XML data is accepted in String or Bytes[] form.\")\n }\n if( validationOption){\n if(validationOption === true) validationOption = {}; //validate with default options\n \n const result = validator.validate(xmlData, validationOption);\n if (result !== true) {\n throw Error( `${result.err.msg}:${result.err.line}:${result.err.col}` )\n }\n }\n const orderedObjParser = new OrderedObjParser(this.options);\n orderedObjParser.addExternalEntities(this.externalEntities);\n const orderedResult = orderedObjParser.parseXml(xmlData);\n if(this.options.preserveOrder || orderedResult === undefined) return orderedResult;\n else return prettify(orderedResult, this.options);\n }\n\n /**\n * Add Entity which is not by default supported by this library\n * @param {string} key \n * @param {string} value \n */\n addEntity(key, value){\n if(value.indexOf(\"&\") !== -1){\n throw new Error(\"Entity value can't have '&'\")\n }else if(key.indexOf(\"&\") !== -1 || key.indexOf(\";\") !== -1){\n throw new Error(\"An entity must be set without '&' and ';'. Eg. use '#xD' for ' '\")\n }else if(value === \"&\"){\n throw new Error(\"An entity with value '&' is not permitted\");\n }else{\n this.externalEntities[key] = value;\n }\n }\n}\n\nmodule.exports = XMLParser;","'use strict';\n\n/**\n * \n * @param {array} node \n * @param {any} options \n * @returns \n */\nfunction prettify(node, options){\n return compress( node, options);\n}\n\n/**\n * \n * @param {array} arr \n * @param {object} options \n * @param {string} jPath \n * @returns object\n */\nfunction compress(arr, options, jPath){\n let text;\n const compressedObj = {};\n for (let i = 0; i < arr.length; i++) {\n const tagObj = arr[i];\n const property = propName(tagObj);\n let newJpath = \"\";\n if(jPath === undefined) newJpath = property;\n else newJpath = jPath + \".\" + property;\n\n if(property === options.textNodeName){\n if(text === undefined) text = tagObj[property];\n else text += \"\" + tagObj[property];\n }else if(property === undefined){\n continue;\n }else if(tagObj[property]){\n \n let val = compress(tagObj[property], options, newJpath);\n const isLeaf = isLeafTag(val, options);\n\n if(tagObj[\":@\"]){\n assignAttributes( val, tagObj[\":@\"], newJpath, options);\n }else if(Object.keys(val).length === 1 && val[options.textNodeName] !== undefined && !options.alwaysCreateTextNode){\n val = val[options.textNodeName];\n }else if(Object.keys(val).length === 0){\n if(options.alwaysCreateTextNode) val[options.textNodeName] = \"\";\n else val = \"\";\n }\n\n if(compressedObj[property] !== undefined && compressedObj.hasOwnProperty(property)) {\n if(!Array.isArray(compressedObj[property])) {\n compressedObj[property] = [ compressedObj[property] ];\n }\n compressedObj[property].push(val);\n }else{\n //TODO: if a node is not an array, then check if it should be an array\n //also determine if it is a leaf node\n if (options.isArray(property, newJpath, isLeaf )) {\n compressedObj[property] = [val];\n }else{\n compressedObj[property] = val;\n }\n }\n }\n \n }\n // if(text && text.length > 0) compressedObj[options.textNodeName] = text;\n if(typeof text === \"string\"){\n if(text.length > 0) compressedObj[options.textNodeName] = text;\n }else if(text !== undefined) compressedObj[options.textNodeName] = text;\n return compressedObj;\n}\n\nfunction propName(obj){\n const keys = Object.keys(obj);\n for (let i = 0; i < keys.length; i++) {\n const key = keys[i];\n if(key !== \":@\") return key;\n }\n}\n\nfunction assignAttributes(obj, attrMap, jpath, options){\n if (attrMap) {\n const keys = Object.keys(attrMap);\n const len = keys.length; //don't make it inline\n for (let i = 0; i < len; i++) {\n const atrrName = keys[i];\n if (options.isArray(atrrName, jpath + \".\" + atrrName, true, true)) {\n obj[atrrName] = [ attrMap[atrrName] ];\n } else {\n obj[atrrName] = attrMap[atrrName];\n }\n }\n }\n}\n\nfunction isLeafTag(obj, options){\n const { textNodeName } = options;\n const propCount = Object.keys(obj).length;\n \n if (propCount === 0) {\n return true;\n }\n\n if (\n propCount === 1 &&\n (obj[textNodeName] || typeof obj[textNodeName] === \"boolean\" || obj[textNodeName] === 0)\n ) {\n return true;\n }\n\n return false;\n}\nexports.prettify = prettify;\n","'use strict';\n\nclass XmlNode{\n constructor(tagname) {\n this.tagname = tagname;\n this.child = []; //nested tags, text, cdata, comments in order\n this[\":@\"] = {}; //attributes map\n }\n add(key,val){\n // this.child.push( {name : key, val: val, isCdata: isCdata });\n if(key === \"__proto__\") key = \"#__proto__\";\n this.child.push( {[key]: val });\n }\n addChild(node) {\n if(node.tagname === \"__proto__\") node.tagname = \"#__proto__\";\n if(node[\":@\"] && Object.keys(node[\":@\"]).length > 0){\n this.child.push( { [node.tagname]: node.child, [\":@\"]: node[\":@\"] });\n }else{\n this.child.push( { [node.tagname]: node.child });\n }\n };\n};\n\n\nmodule.exports = XmlNode;","'use strict'\n\nconst fs = require('graceful-fs')\nconst path = require('path')\nconst mkdirsSync = require('../mkdirs').mkdirsSync\nconst utimesMillisSync = require('../util/utimes').utimesMillisSync\nconst stat = require('../util/stat')\n\nfunction copySync (src, dest, opts) {\n if (typeof opts === 'function') {\n opts = { filter: opts }\n }\n\n opts = opts || {}\n opts.clobber = 'clobber' in opts ? !!opts.clobber : true // default to true for now\n opts.overwrite = 'overwrite' in opts ? !!opts.overwrite : opts.clobber // overwrite falls back to clobber\n\n // Warn about using preserveTimestamps on 32-bit node\n if (opts.preserveTimestamps && process.arch === 'ia32') {\n process.emitWarning(\n 'Using the preserveTimestamps option in 32-bit node is not recommended;\\n\\n' +\n '\\tsee https://github.com/jprichardson/node-fs-extra/issues/269',\n 'Warning', 'fs-extra-WARN0002'\n )\n }\n\n const { srcStat, destStat } = stat.checkPathsSync(src, dest, 'copy', opts)\n stat.checkParentPathsSync(src, srcStat, dest, 'copy')\n if (opts.filter && !opts.filter(src, dest)) return\n const destParent = path.dirname(dest)\n if (!fs.existsSync(destParent)) mkdirsSync(destParent)\n return getStats(destStat, src, dest, opts)\n}\n\nfunction getStats (destStat, src, dest, opts) {\n const statSync = opts.dereference ? fs.statSync : fs.lstatSync\n const srcStat = statSync(src)\n\n if (srcStat.isDirectory()) return onDir(srcStat, destStat, src, dest, opts)\n else if (srcStat.isFile() ||\n srcStat.isCharacterDevice() ||\n srcStat.isBlockDevice()) return onFile(srcStat, destStat, src, dest, opts)\n else if (srcStat.isSymbolicLink()) return onLink(destStat, src, dest, opts)\n else if (srcStat.isSocket()) throw new Error(`Cannot copy a socket file: ${src}`)\n else if (srcStat.isFIFO()) throw new Error(`Cannot copy a FIFO pipe: ${src}`)\n throw new Error(`Unknown file: ${src}`)\n}\n\nfunction onFile (srcStat, destStat, src, dest, opts) {\n if (!destStat) return copyFile(srcStat, src, dest, opts)\n return mayCopyFile(srcStat, src, dest, opts)\n}\n\nfunction mayCopyFile (srcStat, src, dest, opts) {\n if (opts.overwrite) {\n fs.unlinkSync(dest)\n return copyFile(srcStat, src, dest, opts)\n } else if (opts.errorOnExist) {\n throw new Error(`'${dest}' already exists`)\n }\n}\n\nfunction copyFile (srcStat, src, dest, opts) {\n fs.copyFileSync(src, dest)\n if (opts.preserveTimestamps) handleTimestamps(srcStat.mode, src, dest)\n return setDestMode(dest, srcStat.mode)\n}\n\nfunction handleTimestamps (srcMode, src, dest) {\n // Make sure the file is writable before setting the timestamp\n // otherwise open fails with EPERM when invoked with 'r+'\n // (through utimes call)\n if (fileIsNotWritable(srcMode)) makeFileWritable(dest, srcMode)\n return setDestTimestamps(src, dest)\n}\n\nfunction fileIsNotWritable (srcMode) {\n return (srcMode & 0o200) === 0\n}\n\nfunction makeFileWritable (dest, srcMode) {\n return setDestMode(dest, srcMode | 0o200)\n}\n\nfunction setDestMode (dest, srcMode) {\n return fs.chmodSync(dest, srcMode)\n}\n\nfunction setDestTimestamps (src, dest) {\n // The initial srcStat.atime cannot be trusted\n // because it is modified by the read(2) system call\n // (See https://nodejs.org/api/fs.html#fs_stat_time_values)\n const updatedSrcStat = fs.statSync(src)\n return utimesMillisSync(dest, updatedSrcStat.atime, updatedSrcStat.mtime)\n}\n\nfunction onDir (srcStat, destStat, src, dest, opts) {\n if (!destStat) return mkDirAndCopy(srcStat.mode, src, dest, opts)\n return copyDir(src, dest, opts)\n}\n\nfunction mkDirAndCopy (srcMode, src, dest, opts) {\n fs.mkdirSync(dest)\n copyDir(src, dest, opts)\n return setDestMode(dest, srcMode)\n}\n\nfunction copyDir (src, dest, opts) {\n fs.readdirSync(src).forEach(item => copyDirItem(item, src, dest, opts))\n}\n\nfunction copyDirItem (item, src, dest, opts) {\n const srcItem = path.join(src, item)\n const destItem = path.join(dest, item)\n if (opts.filter && !opts.filter(srcItem, destItem)) return\n const { destStat } = stat.checkPathsSync(srcItem, destItem, 'copy', opts)\n return getStats(destStat, srcItem, destItem, opts)\n}\n\nfunction onLink (destStat, src, dest, opts) {\n let resolvedSrc = fs.readlinkSync(src)\n if (opts.dereference) {\n resolvedSrc = path.resolve(process.cwd(), resolvedSrc)\n }\n\n if (!destStat) {\n return fs.symlinkSync(resolvedSrc, dest)\n } else {\n let resolvedDest\n try {\n resolvedDest = fs.readlinkSync(dest)\n } catch (err) {\n // dest exists and is a regular file or directory,\n // Windows may throw UNKNOWN error. If dest already exists,\n // fs throws error anyway, so no need to guard against it here.\n if (err.code === 'EINVAL' || err.code === 'UNKNOWN') return fs.symlinkSync(resolvedSrc, dest)\n throw err\n }\n if (opts.dereference) {\n resolvedDest = path.resolve(process.cwd(), resolvedDest)\n }\n if (stat.isSrcSubdir(resolvedSrc, resolvedDest)) {\n throw new Error(`Cannot copy '${resolvedSrc}' to a subdirectory of itself, '${resolvedDest}'.`)\n }\n\n // prevent copy if src is a subdir of dest since unlinking\n // dest in this case would result in removing src contents\n // and therefore a broken symlink would be created.\n if (stat.isSrcSubdir(resolvedDest, resolvedSrc)) {\n throw new Error(`Cannot overwrite '${resolvedDest}' with '${resolvedSrc}'.`)\n }\n return copyLink(resolvedSrc, dest)\n }\n}\n\nfunction copyLink (resolvedSrc, dest) {\n fs.unlinkSync(dest)\n return fs.symlinkSync(resolvedSrc, dest)\n}\n\nmodule.exports = copySync\n","'use strict'\n\nconst fs = require('../fs')\nconst path = require('path')\nconst { mkdirs } = require('../mkdirs')\nconst { pathExists } = require('../path-exists')\nconst { utimesMillis } = require('../util/utimes')\nconst stat = require('../util/stat')\n\nasync function copy (src, dest, opts = {}) {\n if (typeof opts === 'function') {\n opts = { filter: opts }\n }\n\n opts.clobber = 'clobber' in opts ? !!opts.clobber : true // default to true for now\n opts.overwrite = 'overwrite' in opts ? !!opts.overwrite : opts.clobber // overwrite falls back to clobber\n\n // Warn about using preserveTimestamps on 32-bit node\n if (opts.preserveTimestamps && process.arch === 'ia32') {\n process.emitWarning(\n 'Using the preserveTimestamps option in 32-bit node is not recommended;\\n\\n' +\n '\\tsee https://github.com/jprichardson/node-fs-extra/issues/269',\n 'Warning', 'fs-extra-WARN0001'\n )\n }\n\n const { srcStat, destStat } = await stat.checkPaths(src, dest, 'copy', opts)\n\n await stat.checkParentPaths(src, srcStat, dest, 'copy')\n\n const include = await runFilter(src, dest, opts)\n\n if (!include) return\n\n // check if the parent of dest exists, and create it if it doesn't exist\n const destParent = path.dirname(dest)\n const dirExists = await pathExists(destParent)\n if (!dirExists) {\n await mkdirs(destParent)\n }\n\n await getStatsAndPerformCopy(destStat, src, dest, opts)\n}\n\nasync function runFilter (src, dest, opts) {\n if (!opts.filter) return true\n return opts.filter(src, dest)\n}\n\nasync function getStatsAndPerformCopy (destStat, src, dest, opts) {\n const statFn = opts.dereference ? fs.stat : fs.lstat\n const srcStat = await statFn(src)\n\n if (srcStat.isDirectory()) return onDir(srcStat, destStat, src, dest, opts)\n\n if (\n srcStat.isFile() ||\n srcStat.isCharacterDevice() ||\n srcStat.isBlockDevice()\n ) return onFile(srcStat, destStat, src, dest, opts)\n\n if (srcStat.isSymbolicLink()) return onLink(destStat, src, dest, opts)\n if (srcStat.isSocket()) throw new Error(`Cannot copy a socket file: ${src}`)\n if (srcStat.isFIFO()) throw new Error(`Cannot copy a FIFO pipe: ${src}`)\n throw new Error(`Unknown file: ${src}`)\n}\n\nasync function onFile (srcStat, destStat, src, dest, opts) {\n if (!destStat) return copyFile(srcStat, src, dest, opts)\n\n if (opts.overwrite) {\n await fs.unlink(dest)\n return copyFile(srcStat, src, dest, opts)\n }\n if (opts.errorOnExist) {\n throw new Error(`'${dest}' already exists`)\n }\n}\n\nasync function copyFile (srcStat, src, dest, opts) {\n await fs.copyFile(src, dest)\n if (opts.preserveTimestamps) {\n // Make sure the file is writable before setting the timestamp\n // otherwise open fails with EPERM when invoked with 'r+'\n // (through utimes call)\n if (fileIsNotWritable(srcStat.mode)) {\n await makeFileWritable(dest, srcStat.mode)\n }\n\n // Set timestamps and mode correspondingly\n\n // Note that The initial srcStat.atime cannot be trusted\n // because it is modified by the read(2) system call\n // (See https://nodejs.org/api/fs.html#fs_stat_time_values)\n const updatedSrcStat = await fs.stat(src)\n await utimesMillis(dest, updatedSrcStat.atime, updatedSrcStat.mtime)\n }\n\n return fs.chmod(dest, srcStat.mode)\n}\n\nfunction fileIsNotWritable (srcMode) {\n return (srcMode & 0o200) === 0\n}\n\nfunction makeFileWritable (dest, srcMode) {\n return fs.chmod(dest, srcMode | 0o200)\n}\n\nasync function onDir (srcStat, destStat, src, dest, opts) {\n // the dest directory might not exist, create it\n if (!destStat) {\n await fs.mkdir(dest)\n }\n\n const items = await fs.readdir(src)\n\n // loop through the files in the current directory to copy everything\n await Promise.all(items.map(async item => {\n const srcItem = path.join(src, item)\n const destItem = path.join(dest, item)\n\n // skip the item if it is matches by the filter function\n const include = await runFilter(srcItem, destItem, opts)\n if (!include) return\n\n const { destStat } = await stat.checkPaths(srcItem, destItem, 'copy', opts)\n\n // If the item is a copyable file, `getStatsAndPerformCopy` will copy it\n // If the item is a directory, `getStatsAndPerformCopy` will call `onDir` recursively\n return getStatsAndPerformCopy(destStat, srcItem, destItem, opts)\n }))\n\n if (!destStat) {\n await fs.chmod(dest, srcStat.mode)\n }\n}\n\nasync function onLink (destStat, src, dest, opts) {\n let resolvedSrc = await fs.readlink(src)\n if (opts.dereference) {\n resolvedSrc = path.resolve(process.cwd(), resolvedSrc)\n }\n if (!destStat) {\n return fs.symlink(resolvedSrc, dest)\n }\n\n let resolvedDest = null\n try {\n resolvedDest = await fs.readlink(dest)\n } catch (e) {\n // dest exists and is a regular file or directory,\n // Windows may throw UNKNOWN error. If dest already exists,\n // fs throws error anyway, so no need to guard against it here.\n if (e.code === 'EINVAL' || e.code === 'UNKNOWN') return fs.symlink(resolvedSrc, dest)\n throw e\n }\n if (opts.dereference) {\n resolvedDest = path.resolve(process.cwd(), resolvedDest)\n }\n if (stat.isSrcSubdir(resolvedSrc, resolvedDest)) {\n throw new Error(`Cannot copy '${resolvedSrc}' to a subdirectory of itself, '${resolvedDest}'.`)\n }\n\n // do not copy if src is a subdir of dest since unlinking\n // dest in this case would result in removing src contents\n // and therefore a broken symlink would be created.\n if (stat.isSrcSubdir(resolvedDest, resolvedSrc)) {\n throw new Error(`Cannot overwrite '${resolvedDest}' with '${resolvedSrc}'.`)\n }\n\n // copy the link\n await fs.unlink(dest)\n return fs.symlink(resolvedSrc, dest)\n}\n\nmodule.exports = copy\n","'use strict'\n\nconst u = require('universalify').fromPromise\nmodule.exports = {\n copy: u(require('./copy')),\n copySync: require('./copy-sync')\n}\n","'use strict'\n\nconst u = require('universalify').fromPromise\nconst fs = require('../fs')\nconst path = require('path')\nconst mkdir = require('../mkdirs')\nconst remove = require('../remove')\n\nconst emptyDir = u(async function emptyDir (dir) {\n let items\n try {\n items = await fs.readdir(dir)\n } catch {\n return mkdir.mkdirs(dir)\n }\n\n return Promise.all(items.map(item => remove.remove(path.join(dir, item))))\n})\n\nfunction emptyDirSync (dir) {\n let items\n try {\n items = fs.readdirSync(dir)\n } catch {\n return mkdir.mkdirsSync(dir)\n }\n\n items.forEach(item => {\n item = path.join(dir, item)\n remove.removeSync(item)\n })\n}\n\nmodule.exports = {\n emptyDirSync,\n emptydirSync: emptyDirSync,\n emptyDir,\n emptydir: emptyDir\n}\n","'use strict'\n\nconst u = require('universalify').fromPromise\nconst path = require('path')\nconst fs = require('../fs')\nconst mkdir = require('../mkdirs')\n\nasync function createFile (file) {\n let stats\n try {\n stats = await fs.stat(file)\n } catch { }\n if (stats && stats.isFile()) return\n\n const dir = path.dirname(file)\n\n let dirStats = null\n try {\n dirStats = await fs.stat(dir)\n } catch (err) {\n // if the directory doesn't exist, make it\n if (err.code === 'ENOENT') {\n await mkdir.mkdirs(dir)\n await fs.writeFile(file, '')\n return\n } else {\n throw err\n }\n }\n\n if (dirStats.isDirectory()) {\n await fs.writeFile(file, '')\n } else {\n // parent is not a directory\n // This is just to cause an internal ENOTDIR error to be thrown\n await fs.readdir(dir)\n }\n}\n\nfunction createFileSync (file) {\n let stats\n try {\n stats = fs.statSync(file)\n } catch { }\n if (stats && stats.isFile()) return\n\n const dir = path.dirname(file)\n try {\n if (!fs.statSync(dir).isDirectory()) {\n // parent is not a directory\n // This is just to cause an internal ENOTDIR error to be thrown\n fs.readdirSync(dir)\n }\n } catch (err) {\n // If the stat call above failed because the directory doesn't exist, create it\n if (err && err.code === 'ENOENT') mkdir.mkdirsSync(dir)\n else throw err\n }\n\n fs.writeFileSync(file, '')\n}\n\nmodule.exports = {\n createFile: u(createFile),\n createFileSync\n}\n","'use strict'\n\nconst { createFile, createFileSync } = require('./file')\nconst { createLink, createLinkSync } = require('./link')\nconst { createSymlink, createSymlinkSync } = require('./symlink')\n\nmodule.exports = {\n // file\n createFile,\n createFileSync,\n ensureFile: createFile,\n ensureFileSync: createFileSync,\n // link\n createLink,\n createLinkSync,\n ensureLink: createLink,\n ensureLinkSync: createLinkSync,\n // symlink\n createSymlink,\n createSymlinkSync,\n ensureSymlink: createSymlink,\n ensureSymlinkSync: createSymlinkSync\n}\n","'use strict'\n\nconst u = require('universalify').fromPromise\nconst path = require('path')\nconst fs = require('../fs')\nconst mkdir = require('../mkdirs')\nconst { pathExists } = require('../path-exists')\nconst { areIdentical } = require('../util/stat')\n\nasync function createLink (srcpath, dstpath) {\n let dstStat\n try {\n dstStat = await fs.lstat(dstpath)\n } catch {\n // ignore error\n }\n\n let srcStat\n try {\n srcStat = await fs.lstat(srcpath)\n } catch (err) {\n err.message = err.message.replace('lstat', 'ensureLink')\n throw err\n }\n\n if (dstStat && areIdentical(srcStat, dstStat)) return\n\n const dir = path.dirname(dstpath)\n\n const dirExists = await pathExists(dir)\n\n if (!dirExists) {\n await mkdir.mkdirs(dir)\n }\n\n await fs.link(srcpath, dstpath)\n}\n\nfunction createLinkSync (srcpath, dstpath) {\n let dstStat\n try {\n dstStat = fs.lstatSync(dstpath)\n } catch {}\n\n try {\n const srcStat = fs.lstatSync(srcpath)\n if (dstStat && areIdentical(srcStat, dstStat)) return\n } catch (err) {\n err.message = err.message.replace('lstat', 'ensureLink')\n throw err\n }\n\n const dir = path.dirname(dstpath)\n const dirExists = fs.existsSync(dir)\n if (dirExists) return fs.linkSync(srcpath, dstpath)\n mkdir.mkdirsSync(dir)\n\n return fs.linkSync(srcpath, dstpath)\n}\n\nmodule.exports = {\n createLink: u(createLink),\n createLinkSync\n}\n","'use strict'\n\nconst path = require('path')\nconst fs = require('../fs')\nconst { pathExists } = require('../path-exists')\n\nconst u = require('universalify').fromPromise\n\n/**\n * Function that returns two types of paths, one relative to symlink, and one\n * relative to the current working directory. Checks if path is absolute or\n * relative. If the path is relative, this function checks if the path is\n * relative to symlink or relative to current working directory. This is an\n * initiative to find a smarter `srcpath` to supply when building symlinks.\n * This allows you to determine which path to use out of one of three possible\n * types of source paths. The first is an absolute path. This is detected by\n * `path.isAbsolute()`. When an absolute path is provided, it is checked to\n * see if it exists. If it does it's used, if not an error is returned\n * (callback)/ thrown (sync). The other two options for `srcpath` are a\n * relative url. By default Node's `fs.symlink` works by creating a symlink\n * using `dstpath` and expects the `srcpath` to be relative to the newly\n * created symlink. If you provide a `srcpath` that does not exist on the file\n * system it results in a broken symlink. To minimize this, the function\n * checks to see if the 'relative to symlink' source file exists, and if it\n * does it will use it. If it does not, it checks if there's a file that\n * exists that is relative to the current working directory, if does its used.\n * This preserves the expectations of the original fs.symlink spec and adds\n * the ability to pass in `relative to current working direcotry` paths.\n */\n\nasync function symlinkPaths (srcpath, dstpath) {\n if (path.isAbsolute(srcpath)) {\n try {\n await fs.lstat(srcpath)\n } catch (err) {\n err.message = err.message.replace('lstat', 'ensureSymlink')\n throw err\n }\n\n return {\n toCwd: srcpath,\n toDst: srcpath\n }\n }\n\n const dstdir = path.dirname(dstpath)\n const relativeToDst = path.join(dstdir, srcpath)\n\n const exists = await pathExists(relativeToDst)\n if (exists) {\n return {\n toCwd: relativeToDst,\n toDst: srcpath\n }\n }\n\n try {\n await fs.lstat(srcpath)\n } catch (err) {\n err.message = err.message.replace('lstat', 'ensureSymlink')\n throw err\n }\n\n return {\n toCwd: srcpath,\n toDst: path.relative(dstdir, srcpath)\n }\n}\n\nfunction symlinkPathsSync (srcpath, dstpath) {\n if (path.isAbsolute(srcpath)) {\n const exists = fs.existsSync(srcpath)\n if (!exists) throw new Error('absolute srcpath does not exist')\n return {\n toCwd: srcpath,\n toDst: srcpath\n }\n }\n\n const dstdir = path.dirname(dstpath)\n const relativeToDst = path.join(dstdir, srcpath)\n const exists = fs.existsSync(relativeToDst)\n if (exists) {\n return {\n toCwd: relativeToDst,\n toDst: srcpath\n }\n }\n\n const srcExists = fs.existsSync(srcpath)\n if (!srcExists) throw new Error('relative srcpath does not exist')\n return {\n toCwd: srcpath,\n toDst: path.relative(dstdir, srcpath)\n }\n}\n\nmodule.exports = {\n symlinkPaths: u(symlinkPaths),\n symlinkPathsSync\n}\n","'use strict'\n\nconst fs = require('../fs')\nconst u = require('universalify').fromPromise\n\nasync function symlinkType (srcpath, type) {\n if (type) return type\n\n let stats\n try {\n stats = await fs.lstat(srcpath)\n } catch {\n return 'file'\n }\n\n return (stats && stats.isDirectory()) ? 'dir' : 'file'\n}\n\nfunction symlinkTypeSync (srcpath, type) {\n if (type) return type\n\n let stats\n try {\n stats = fs.lstatSync(srcpath)\n } catch {\n return 'file'\n }\n return (stats && stats.isDirectory()) ? 'dir' : 'file'\n}\n\nmodule.exports = {\n symlinkType: u(symlinkType),\n symlinkTypeSync\n}\n","'use strict'\n\nconst u = require('universalify').fromPromise\nconst path = require('path')\nconst fs = require('../fs')\n\nconst { mkdirs, mkdirsSync } = require('../mkdirs')\n\nconst { symlinkPaths, symlinkPathsSync } = require('./symlink-paths')\nconst { symlinkType, symlinkTypeSync } = require('./symlink-type')\n\nconst { pathExists } = require('../path-exists')\n\nconst { areIdentical } = require('../util/stat')\n\nasync function createSymlink (srcpath, dstpath, type) {\n let stats\n try {\n stats = await fs.lstat(dstpath)\n } catch { }\n\n if (stats && stats.isSymbolicLink()) {\n const [srcStat, dstStat] = await Promise.all([\n fs.stat(srcpath),\n fs.stat(dstpath)\n ])\n\n if (areIdentical(srcStat, dstStat)) return\n }\n\n const relative = await symlinkPaths(srcpath, dstpath)\n srcpath = relative.toDst\n const toType = await symlinkType(relative.toCwd, type)\n const dir = path.dirname(dstpath)\n\n if (!(await pathExists(dir))) {\n await mkdirs(dir)\n }\n\n return fs.symlink(srcpath, dstpath, toType)\n}\n\nfunction createSymlinkSync (srcpath, dstpath, type) {\n let stats\n try {\n stats = fs.lstatSync(dstpath)\n } catch { }\n if (stats && stats.isSymbolicLink()) {\n const srcStat = fs.statSync(srcpath)\n const dstStat = fs.statSync(dstpath)\n if (areIdentical(srcStat, dstStat)) return\n }\n\n const relative = symlinkPathsSync(srcpath, dstpath)\n srcpath = relative.toDst\n type = symlinkTypeSync(relative.toCwd, type)\n const dir = path.dirname(dstpath)\n const exists = fs.existsSync(dir)\n if (exists) return fs.symlinkSync(srcpath, dstpath, type)\n mkdirsSync(dir)\n return fs.symlinkSync(srcpath, dstpath, type)\n}\n\nmodule.exports = {\n createSymlink: u(createSymlink),\n createSymlinkSync\n}\n","'use strict'\n// This is adapted from https://github.com/normalize/mz\n// Copyright (c) 2014-2016 Jonathan Ong me@jongleberry.com and Contributors\nconst u = require('universalify').fromCallback\nconst fs = require('graceful-fs')\n\nconst api = [\n 'access',\n 'appendFile',\n 'chmod',\n 'chown',\n 'close',\n 'copyFile',\n 'fchmod',\n 'fchown',\n 'fdatasync',\n 'fstat',\n 'fsync',\n 'ftruncate',\n 'futimes',\n 'lchmod',\n 'lchown',\n 'link',\n 'lstat',\n 'mkdir',\n 'mkdtemp',\n 'open',\n 'opendir',\n 'readdir',\n 'readFile',\n 'readlink',\n 'realpath',\n 'rename',\n 'rm',\n 'rmdir',\n 'stat',\n 'symlink',\n 'truncate',\n 'unlink',\n 'utimes',\n 'writeFile'\n].filter(key => {\n // Some commands are not available on some systems. Ex:\n // fs.cp was added in Node.js v16.7.0\n // fs.lchown is not available on at least some Linux\n return typeof fs[key] === 'function'\n})\n\n// Export cloned fs:\nObject.assign(exports, fs)\n\n// Universalify async methods:\napi.forEach(method => {\n exports[method] = u(fs[method])\n})\n\n// We differ from mz/fs in that we still ship the old, broken, fs.exists()\n// since we are a drop-in replacement for the native module\nexports.exists = function (filename, callback) {\n if (typeof callback === 'function') {\n return fs.exists(filename, callback)\n }\n return new Promise(resolve => {\n return fs.exists(filename, resolve)\n })\n}\n\n// fs.read(), fs.write(), fs.readv(), & fs.writev() need special treatment due to multiple callback args\n\nexports.read = function (fd, buffer, offset, length, position, callback) {\n if (typeof callback === 'function') {\n return fs.read(fd, buffer, offset, length, position, callback)\n }\n return new Promise((resolve, reject) => {\n fs.read(fd, buffer, offset, length, position, (err, bytesRead, buffer) => {\n if (err) return reject(err)\n resolve({ bytesRead, buffer })\n })\n })\n}\n\n// Function signature can be\n// fs.write(fd, buffer[, offset[, length[, position]]], callback)\n// OR\n// fs.write(fd, string[, position[, encoding]], callback)\n// We need to handle both cases, so we use ...args\nexports.write = function (fd, buffer, ...args) {\n if (typeof args[args.length - 1] === 'function') {\n return fs.write(fd, buffer, ...args)\n }\n\n return new Promise((resolve, reject) => {\n fs.write(fd, buffer, ...args, (err, bytesWritten, buffer) => {\n if (err) return reject(err)\n resolve({ bytesWritten, buffer })\n })\n })\n}\n\n// Function signature is\n// s.readv(fd, buffers[, position], callback)\n// We need to handle the optional arg, so we use ...args\nexports.readv = function (fd, buffers, ...args) {\n if (typeof args[args.length - 1] === 'function') {\n return fs.readv(fd, buffers, ...args)\n }\n\n return new Promise((resolve, reject) => {\n fs.readv(fd, buffers, ...args, (err, bytesRead, buffers) => {\n if (err) return reject(err)\n resolve({ bytesRead, buffers })\n })\n })\n}\n\n// Function signature is\n// s.writev(fd, buffers[, position], callback)\n// We need to handle the optional arg, so we use ...args\nexports.writev = function (fd, buffers, ...args) {\n if (typeof args[args.length - 1] === 'function') {\n return fs.writev(fd, buffers, ...args)\n }\n\n return new Promise((resolve, reject) => {\n fs.writev(fd, buffers, ...args, (err, bytesWritten, buffers) => {\n if (err) return reject(err)\n resolve({ bytesWritten, buffers })\n })\n })\n}\n\n// fs.realpath.native sometimes not available if fs is monkey-patched\nif (typeof fs.realpath.native === 'function') {\n exports.realpath.native = u(fs.realpath.native)\n} else {\n process.emitWarning(\n 'fs.realpath.native is not a function. Is fs being monkey-patched?',\n 'Warning', 'fs-extra-WARN0003'\n )\n}\n","'use strict'\n\nmodule.exports = {\n // Export promiseified graceful-fs:\n ...require('./fs'),\n // Export extra methods:\n ...require('./copy'),\n ...require('./empty'),\n ...require('./ensure'),\n ...require('./json'),\n ...require('./mkdirs'),\n ...require('./move'),\n ...require('./output-file'),\n ...require('./path-exists'),\n ...require('./remove')\n}\n","'use strict'\n\nconst u = require('universalify').fromPromise\nconst jsonFile = require('./jsonfile')\n\njsonFile.outputJson = u(require('./output-json'))\njsonFile.outputJsonSync = require('./output-json-sync')\n// aliases\njsonFile.outputJSON = jsonFile.outputJson\njsonFile.outputJSONSync = jsonFile.outputJsonSync\njsonFile.writeJSON = jsonFile.writeJson\njsonFile.writeJSONSync = jsonFile.writeJsonSync\njsonFile.readJSON = jsonFile.readJson\njsonFile.readJSONSync = jsonFile.readJsonSync\n\nmodule.exports = jsonFile\n","'use strict'\n\nconst jsonFile = require('jsonfile')\n\nmodule.exports = {\n // jsonfile exports\n readJson: jsonFile.readFile,\n readJsonSync: jsonFile.readFileSync,\n writeJson: jsonFile.writeFile,\n writeJsonSync: jsonFile.writeFileSync\n}\n","'use strict'\n\nconst { stringify } = require('jsonfile/utils')\nconst { outputFileSync } = require('../output-file')\n\nfunction outputJsonSync (file, data, options) {\n const str = stringify(data, options)\n\n outputFileSync(file, str, options)\n}\n\nmodule.exports = outputJsonSync\n","'use strict'\n\nconst { stringify } = require('jsonfile/utils')\nconst { outputFile } = require('../output-file')\n\nasync function outputJson (file, data, options = {}) {\n const str = stringify(data, options)\n\n await outputFile(file, str, options)\n}\n\nmodule.exports = outputJson\n","'use strict'\nconst u = require('universalify').fromPromise\nconst { makeDir: _makeDir, makeDirSync } = require('./make-dir')\nconst makeDir = u(_makeDir)\n\nmodule.exports = {\n mkdirs: makeDir,\n mkdirsSync: makeDirSync,\n // alias\n mkdirp: makeDir,\n mkdirpSync: makeDirSync,\n ensureDir: makeDir,\n ensureDirSync: makeDirSync\n}\n","'use strict'\nconst fs = require('../fs')\nconst { checkPath } = require('./utils')\n\nconst getMode = options => {\n const defaults = { mode: 0o777 }\n if (typeof options === 'number') return options\n return ({ ...defaults, ...options }).mode\n}\n\nmodule.exports.makeDir = async (dir, options) => {\n checkPath(dir)\n\n return fs.mkdir(dir, {\n mode: getMode(options),\n recursive: true\n })\n}\n\nmodule.exports.makeDirSync = (dir, options) => {\n checkPath(dir)\n\n return fs.mkdirSync(dir, {\n mode: getMode(options),\n recursive: true\n })\n}\n","// Adapted from https://github.com/sindresorhus/make-dir\n// Copyright (c) Sindre Sorhus (sindresorhus.com)\n// Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n// The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n'use strict'\nconst path = require('path')\n\n// https://github.com/nodejs/node/issues/8987\n// https://github.com/libuv/libuv/pull/1088\nmodule.exports.checkPath = function checkPath (pth) {\n if (process.platform === 'win32') {\n const pathHasInvalidWinCharacters = /[<>:\"|?*]/.test(pth.replace(path.parse(pth).root, ''))\n\n if (pathHasInvalidWinCharacters) {\n const error = new Error(`Path contains invalid characters: ${pth}`)\n error.code = 'EINVAL'\n throw error\n }\n }\n}\n","'use strict'\n\nconst u = require('universalify').fromPromise\nmodule.exports = {\n move: u(require('./move')),\n moveSync: require('./move-sync')\n}\n","'use strict'\n\nconst fs = require('graceful-fs')\nconst path = require('path')\nconst copySync = require('../copy').copySync\nconst removeSync = require('../remove').removeSync\nconst mkdirpSync = require('../mkdirs').mkdirpSync\nconst stat = require('../util/stat')\n\nfunction moveSync (src, dest, opts) {\n opts = opts || {}\n const overwrite = opts.overwrite || opts.clobber || false\n\n const { srcStat, isChangingCase = false } = stat.checkPathsSync(src, dest, 'move', opts)\n stat.checkParentPathsSync(src, srcStat, dest, 'move')\n if (!isParentRoot(dest)) mkdirpSync(path.dirname(dest))\n return doRename(src, dest, overwrite, isChangingCase)\n}\n\nfunction isParentRoot (dest) {\n const parent = path.dirname(dest)\n const parsedPath = path.parse(parent)\n return parsedPath.root === parent\n}\n\nfunction doRename (src, dest, overwrite, isChangingCase) {\n if (isChangingCase) return rename(src, dest, overwrite)\n if (overwrite) {\n removeSync(dest)\n return rename(src, dest, overwrite)\n }\n if (fs.existsSync(dest)) throw new Error('dest already exists.')\n return rename(src, dest, overwrite)\n}\n\nfunction rename (src, dest, overwrite) {\n try {\n fs.renameSync(src, dest)\n } catch (err) {\n if (err.code !== 'EXDEV') throw err\n return moveAcrossDevice(src, dest, overwrite)\n }\n}\n\nfunction moveAcrossDevice (src, dest, overwrite) {\n const opts = {\n overwrite,\n errorOnExist: true,\n preserveTimestamps: true\n }\n copySync(src, dest, opts)\n return removeSync(src)\n}\n\nmodule.exports = moveSync\n","'use strict'\n\nconst fs = require('../fs')\nconst path = require('path')\nconst { copy } = require('../copy')\nconst { remove } = require('../remove')\nconst { mkdirp } = require('../mkdirs')\nconst { pathExists } = require('../path-exists')\nconst stat = require('../util/stat')\n\nasync function move (src, dest, opts = {}) {\n const overwrite = opts.overwrite || opts.clobber || false\n\n const { srcStat, isChangingCase = false } = await stat.checkPaths(src, dest, 'move', opts)\n\n await stat.checkParentPaths(src, srcStat, dest, 'move')\n\n // If the parent of dest is not root, make sure it exists before proceeding\n const destParent = path.dirname(dest)\n const parsedParentPath = path.parse(destParent)\n if (parsedParentPath.root !== destParent) {\n await mkdirp(destParent)\n }\n\n return doRename(src, dest, overwrite, isChangingCase)\n}\n\nasync function doRename (src, dest, overwrite, isChangingCase) {\n if (!isChangingCase) {\n if (overwrite) {\n await remove(dest)\n } else if (await pathExists(dest)) {\n throw new Error('dest already exists.')\n }\n }\n\n try {\n // Try w/ rename first, and try copy + remove if EXDEV\n await fs.rename(src, dest)\n } catch (err) {\n if (err.code !== 'EXDEV') {\n throw err\n }\n await moveAcrossDevice(src, dest, overwrite)\n }\n}\n\nasync function moveAcrossDevice (src, dest, overwrite) {\n const opts = {\n overwrite,\n errorOnExist: true,\n preserveTimestamps: true\n }\n\n await copy(src, dest, opts)\n return remove(src)\n}\n\nmodule.exports = move\n","'use strict'\n\nconst u = require('universalify').fromPromise\nconst fs = require('../fs')\nconst path = require('path')\nconst mkdir = require('../mkdirs')\nconst pathExists = require('../path-exists').pathExists\n\nasync function outputFile (file, data, encoding = 'utf-8') {\n const dir = path.dirname(file)\n\n if (!(await pathExists(dir))) {\n await mkdir.mkdirs(dir)\n }\n\n return fs.writeFile(file, data, encoding)\n}\n\nfunction outputFileSync (file, ...args) {\n const dir = path.dirname(file)\n if (!fs.existsSync(dir)) {\n mkdir.mkdirsSync(dir)\n }\n\n fs.writeFileSync(file, ...args)\n}\n\nmodule.exports = {\n outputFile: u(outputFile),\n outputFileSync\n}\n","'use strict'\nconst u = require('universalify').fromPromise\nconst fs = require('../fs')\n\nfunction pathExists (path) {\n return fs.access(path).then(() => true).catch(() => false)\n}\n\nmodule.exports = {\n pathExists: u(pathExists),\n pathExistsSync: fs.existsSync\n}\n","'use strict'\n\nconst fs = require('graceful-fs')\nconst u = require('universalify').fromCallback\n\nfunction remove (path, callback) {\n fs.rm(path, { recursive: true, force: true }, callback)\n}\n\nfunction removeSync (path) {\n fs.rmSync(path, { recursive: true, force: true })\n}\n\nmodule.exports = {\n remove: u(remove),\n removeSync\n}\n","'use strict'\n\nconst fs = require('../fs')\nconst path = require('path')\nconst u = require('universalify').fromPromise\n\nfunction getStats (src, dest, opts) {\n const statFunc = opts.dereference\n ? (file) => fs.stat(file, { bigint: true })\n : (file) => fs.lstat(file, { bigint: true })\n return Promise.all([\n statFunc(src),\n statFunc(dest).catch(err => {\n if (err.code === 'ENOENT') return null\n throw err\n })\n ]).then(([srcStat, destStat]) => ({ srcStat, destStat }))\n}\n\nfunction getStatsSync (src, dest, opts) {\n let destStat\n const statFunc = opts.dereference\n ? (file) => fs.statSync(file, { bigint: true })\n : (file) => fs.lstatSync(file, { bigint: true })\n const srcStat = statFunc(src)\n try {\n destStat = statFunc(dest)\n } catch (err) {\n if (err.code === 'ENOENT') return { srcStat, destStat: null }\n throw err\n }\n return { srcStat, destStat }\n}\n\nasync function checkPaths (src, dest, funcName, opts) {\n const { srcStat, destStat } = await getStats(src, dest, opts)\n if (destStat) {\n if (areIdentical(srcStat, destStat)) {\n const srcBaseName = path.basename(src)\n const destBaseName = path.basename(dest)\n if (funcName === 'move' &&\n srcBaseName !== destBaseName &&\n srcBaseName.toLowerCase() === destBaseName.toLowerCase()) {\n return { srcStat, destStat, isChangingCase: true }\n }\n throw new Error('Source and destination must not be the same.')\n }\n if (srcStat.isDirectory() && !destStat.isDirectory()) {\n throw new Error(`Cannot overwrite non-directory '${dest}' with directory '${src}'.`)\n }\n if (!srcStat.isDirectory() && destStat.isDirectory()) {\n throw new Error(`Cannot overwrite directory '${dest}' with non-directory '${src}'.`)\n }\n }\n\n if (srcStat.isDirectory() && isSrcSubdir(src, dest)) {\n throw new Error(errMsg(src, dest, funcName))\n }\n\n return { srcStat, destStat }\n}\n\nfunction checkPathsSync (src, dest, funcName, opts) {\n const { srcStat, destStat } = getStatsSync(src, dest, opts)\n\n if (destStat) {\n if (areIdentical(srcStat, destStat)) {\n const srcBaseName = path.basename(src)\n const destBaseName = path.basename(dest)\n if (funcName === 'move' &&\n srcBaseName !== destBaseName &&\n srcBaseName.toLowerCase() === destBaseName.toLowerCase()) {\n return { srcStat, destStat, isChangingCase: true }\n }\n throw new Error('Source and destination must not be the same.')\n }\n if (srcStat.isDirectory() && !destStat.isDirectory()) {\n throw new Error(`Cannot overwrite non-directory '${dest}' with directory '${src}'.`)\n }\n if (!srcStat.isDirectory() && destStat.isDirectory()) {\n throw new Error(`Cannot overwrite directory '${dest}' with non-directory '${src}'.`)\n }\n }\n\n if (srcStat.isDirectory() && isSrcSubdir(src, dest)) {\n throw new Error(errMsg(src, dest, funcName))\n }\n return { srcStat, destStat }\n}\n\n// recursively check if dest parent is a subdirectory of src.\n// It works for all file types including symlinks since it\n// checks the src and dest inodes. It starts from the deepest\n// parent and stops once it reaches the src parent or the root path.\nasync function checkParentPaths (src, srcStat, dest, funcName) {\n const srcParent = path.resolve(path.dirname(src))\n const destParent = path.resolve(path.dirname(dest))\n if (destParent === srcParent || destParent === path.parse(destParent).root) return\n\n let destStat\n try {\n destStat = await fs.stat(destParent, { bigint: true })\n } catch (err) {\n if (err.code === 'ENOENT') return\n throw err\n }\n\n if (areIdentical(srcStat, destStat)) {\n throw new Error(errMsg(src, dest, funcName))\n }\n\n return checkParentPaths(src, srcStat, destParent, funcName)\n}\n\nfunction checkParentPathsSync (src, srcStat, dest, funcName) {\n const srcParent = path.resolve(path.dirname(src))\n const destParent = path.resolve(path.dirname(dest))\n if (destParent === srcParent || destParent === path.parse(destParent).root) return\n let destStat\n try {\n destStat = fs.statSync(destParent, { bigint: true })\n } catch (err) {\n if (err.code === 'ENOENT') return\n throw err\n }\n if (areIdentical(srcStat, destStat)) {\n throw new Error(errMsg(src, dest, funcName))\n }\n return checkParentPathsSync(src, srcStat, destParent, funcName)\n}\n\nfunction areIdentical (srcStat, destStat) {\n return destStat.ino && destStat.dev && destStat.ino === srcStat.ino && destStat.dev === srcStat.dev\n}\n\n// return true if dest is a subdir of src, otherwise false.\n// It only checks the path strings.\nfunction isSrcSubdir (src, dest) {\n const srcArr = path.resolve(src).split(path.sep).filter(i => i)\n const destArr = path.resolve(dest).split(path.sep).filter(i => i)\n return srcArr.every((cur, i) => destArr[i] === cur)\n}\n\nfunction errMsg (src, dest, funcName) {\n return `Cannot ${funcName} '${src}' to a subdirectory of itself, '${dest}'.`\n}\n\nmodule.exports = {\n // checkPaths\n checkPaths: u(checkPaths),\n checkPathsSync,\n // checkParent\n checkParentPaths: u(checkParentPaths),\n checkParentPathsSync,\n // Misc\n isSrcSubdir,\n areIdentical\n}\n","'use strict'\n\nconst fs = require('../fs')\nconst u = require('universalify').fromPromise\n\nasync function utimesMillis (path, atime, mtime) {\n // if (!HAS_MILLIS_RES) return fs.utimes(path, atime, mtime, callback)\n const fd = await fs.open(path, 'r+')\n\n let closeErr = null\n\n try {\n await fs.futimes(fd, atime, mtime)\n } finally {\n try {\n await fs.close(fd)\n } catch (e) {\n closeErr = e\n }\n }\n\n if (closeErr) {\n throw closeErr\n }\n}\n\nfunction utimesMillisSync (path, atime, mtime) {\n const fd = fs.openSync(path, 'r+')\n fs.futimesSync(fd, atime, mtime)\n return fs.closeSync(fd)\n}\n\nmodule.exports = {\n utimesMillis: u(utimesMillis),\n utimesMillisSync\n}\n","'use strict'\n\nmodule.exports = clone\n\nvar getPrototypeOf = Object.getPrototypeOf || function (obj) {\n return obj.__proto__\n}\n\nfunction clone (obj) {\n if (obj === null || typeof obj !== 'object')\n return obj\n\n if (obj instanceof Object)\n var copy = { __proto__: getPrototypeOf(obj) }\n else\n var copy = Object.create(null)\n\n Object.getOwnPropertyNames(obj).forEach(function (key) {\n Object.defineProperty(copy, key, Object.getOwnPropertyDescriptor(obj, key))\n })\n\n return copy\n}\n","var fs = require('fs')\nvar polyfills = require('./polyfills.js')\nvar legacy = require('./legacy-streams.js')\nvar clone = require('./clone.js')\n\nvar util = require('util')\n\n/* istanbul ignore next - node 0.x polyfill */\nvar gracefulQueue\nvar previousSymbol\n\n/* istanbul ignore else - node 0.x polyfill */\nif (typeof Symbol === 'function' && typeof Symbol.for === 'function') {\n gracefulQueue = Symbol.for('graceful-fs.queue')\n // This is used in testing by future versions\n previousSymbol = Symbol.for('graceful-fs.previous')\n} else {\n gracefulQueue = '___graceful-fs.queue'\n previousSymbol = '___graceful-fs.previous'\n}\n\nfunction noop () {}\n\nfunction publishQueue(context, queue) {\n Object.defineProperty(context, gracefulQueue, {\n get: function() {\n return queue\n }\n })\n}\n\nvar debug = noop\nif (util.debuglog)\n debug = util.debuglog('gfs4')\nelse if (/\\bgfs4\\b/i.test(process.env.NODE_DEBUG || ''))\n debug = function() {\n var m = util.format.apply(util, arguments)\n m = 'GFS4: ' + m.split(/\\n/).join('\\nGFS4: ')\n console.error(m)\n }\n\n// Once time initialization\nif (!fs[gracefulQueue]) {\n // This queue can be shared by multiple loaded instances\n var queue = global[gracefulQueue] || []\n publishQueue(fs, queue)\n\n // Patch fs.close/closeSync to shared queue version, because we need\n // to retry() whenever a close happens *anywhere* in the program.\n // This is essential when multiple graceful-fs instances are\n // in play at the same time.\n fs.close = (function (fs$close) {\n function close (fd, cb) {\n return fs$close.call(fs, fd, function (err) {\n // This function uses the graceful-fs shared queue\n if (!err) {\n resetQueue()\n }\n\n if (typeof cb === 'function')\n cb.apply(this, arguments)\n })\n }\n\n Object.defineProperty(close, previousSymbol, {\n value: fs$close\n })\n return close\n })(fs.close)\n\n fs.closeSync = (function (fs$closeSync) {\n function closeSync (fd) {\n // This function uses the graceful-fs shared queue\n fs$closeSync.apply(fs, arguments)\n resetQueue()\n }\n\n Object.defineProperty(closeSync, previousSymbol, {\n value: fs$closeSync\n })\n return closeSync\n })(fs.closeSync)\n\n if (/\\bgfs4\\b/i.test(process.env.NODE_DEBUG || '')) {\n process.on('exit', function() {\n debug(fs[gracefulQueue])\n require('assert').equal(fs[gracefulQueue].length, 0)\n })\n }\n}\n\nif (!global[gracefulQueue]) {\n publishQueue(global, fs[gracefulQueue]);\n}\n\nmodule.exports = patch(clone(fs))\nif (process.env.TEST_GRACEFUL_FS_GLOBAL_PATCH && !fs.__patched) {\n module.exports = patch(fs)\n fs.__patched = true;\n}\n\nfunction patch (fs) {\n // Everything that references the open() function needs to be in here\n polyfills(fs)\n fs.gracefulify = patch\n\n fs.createReadStream = createReadStream\n fs.createWriteStream = createWriteStream\n var fs$readFile = fs.readFile\n fs.readFile = readFile\n function readFile (path, options, cb) {\n if (typeof options === 'function')\n cb = options, options = null\n\n return go$readFile(path, options, cb)\n\n function go$readFile (path, options, cb, startTime) {\n return fs$readFile(path, options, function (err) {\n if (err && (err.code === 'EMFILE' || err.code === 'ENFILE'))\n enqueue([go$readFile, [path, options, cb], err, startTime || Date.now(), Date.now()])\n else {\n if (typeof cb === 'function')\n cb.apply(this, arguments)\n }\n })\n }\n }\n\n var fs$writeFile = fs.writeFile\n fs.writeFile = writeFile\n function writeFile (path, data, options, cb) {\n if (typeof options === 'function')\n cb = options, options = null\n\n return go$writeFile(path, data, options, cb)\n\n function go$writeFile (path, data, options, cb, startTime) {\n return fs$writeFile(path, data, options, function (err) {\n if (err && (err.code === 'EMFILE' || err.code === 'ENFILE'))\n enqueue([go$writeFile, [path, data, options, cb], err, startTime || Date.now(), Date.now()])\n else {\n if (typeof cb === 'function')\n cb.apply(this, arguments)\n }\n })\n }\n }\n\n var fs$appendFile = fs.appendFile\n if (fs$appendFile)\n fs.appendFile = appendFile\n function appendFile (path, data, options, cb) {\n if (typeof options === 'function')\n cb = options, options = null\n\n return go$appendFile(path, data, options, cb)\n\n function go$appendFile (path, data, options, cb, startTime) {\n return fs$appendFile(path, data, options, function (err) {\n if (err && (err.code === 'EMFILE' || err.code === 'ENFILE'))\n enqueue([go$appendFile, [path, data, options, cb], err, startTime || Date.now(), Date.now()])\n else {\n if (typeof cb === 'function')\n cb.apply(this, arguments)\n }\n })\n }\n }\n\n var fs$copyFile = fs.copyFile\n if (fs$copyFile)\n fs.copyFile = copyFile\n function copyFile (src, dest, flags, cb) {\n if (typeof flags === 'function') {\n cb = flags\n flags = 0\n }\n return go$copyFile(src, dest, flags, cb)\n\n function go$copyFile (src, dest, flags, cb, startTime) {\n return fs$copyFile(src, dest, flags, function (err) {\n if (err && (err.code === 'EMFILE' || err.code === 'ENFILE'))\n enqueue([go$copyFile, [src, dest, flags, cb], err, startTime || Date.now(), Date.now()])\n else {\n if (typeof cb === 'function')\n cb.apply(this, arguments)\n }\n })\n }\n }\n\n var fs$readdir = fs.readdir\n fs.readdir = readdir\n var noReaddirOptionVersions = /^v[0-5]\\./\n function readdir (path, options, cb) {\n if (typeof options === 'function')\n cb = options, options = null\n\n var go$readdir = noReaddirOptionVersions.test(process.version)\n ? function go$readdir (path, options, cb, startTime) {\n return fs$readdir(path, fs$readdirCallback(\n path, options, cb, startTime\n ))\n }\n : function go$readdir (path, options, cb, startTime) {\n return fs$readdir(path, options, fs$readdirCallback(\n path, options, cb, startTime\n ))\n }\n\n return go$readdir(path, options, cb)\n\n function fs$readdirCallback (path, options, cb, startTime) {\n return function (err, files) {\n if (err && (err.code === 'EMFILE' || err.code === 'ENFILE'))\n enqueue([\n go$readdir,\n [path, options, cb],\n err,\n startTime || Date.now(),\n Date.now()\n ])\n else {\n if (files && files.sort)\n files.sort()\n\n if (typeof cb === 'function')\n cb.call(this, err, files)\n }\n }\n }\n }\n\n if (process.version.substr(0, 4) === 'v0.8') {\n var legStreams = legacy(fs)\n ReadStream = legStreams.ReadStream\n WriteStream = legStreams.WriteStream\n }\n\n var fs$ReadStream = fs.ReadStream\n if (fs$ReadStream) {\n ReadStream.prototype = Object.create(fs$ReadStream.prototype)\n ReadStream.prototype.open = ReadStream$open\n }\n\n var fs$WriteStream = fs.WriteStream\n if (fs$WriteStream) {\n WriteStream.prototype = Object.create(fs$WriteStream.prototype)\n WriteStream.prototype.open = WriteStream$open\n }\n\n Object.defineProperty(fs, 'ReadStream', {\n get: function () {\n return ReadStream\n },\n set: function (val) {\n ReadStream = val\n },\n enumerable: true,\n configurable: true\n })\n Object.defineProperty(fs, 'WriteStream', {\n get: function () {\n return WriteStream\n },\n set: function (val) {\n WriteStream = val\n },\n enumerable: true,\n configurable: true\n })\n\n // legacy names\n var FileReadStream = ReadStream\n Object.defineProperty(fs, 'FileReadStream', {\n get: function () {\n return FileReadStream\n },\n set: function (val) {\n FileReadStream = val\n },\n enumerable: true,\n configurable: true\n })\n var FileWriteStream = WriteStream\n Object.defineProperty(fs, 'FileWriteStream', {\n get: function () {\n return FileWriteStream\n },\n set: function (val) {\n FileWriteStream = val\n },\n enumerable: true,\n configurable: true\n })\n\n function ReadStream (path, options) {\n if (this instanceof ReadStream)\n return fs$ReadStream.apply(this, arguments), this\n else\n return ReadStream.apply(Object.create(ReadStream.prototype), arguments)\n }\n\n function ReadStream$open () {\n var that = this\n open(that.path, that.flags, that.mode, function (err, fd) {\n if (err) {\n if (that.autoClose)\n that.destroy()\n\n that.emit('error', err)\n } else {\n that.fd = fd\n that.emit('open', fd)\n that.read()\n }\n })\n }\n\n function WriteStream (path, options) {\n if (this instanceof WriteStream)\n return fs$WriteStream.apply(this, arguments), this\n else\n return WriteStream.apply(Object.create(WriteStream.prototype), arguments)\n }\n\n function WriteStream$open () {\n var that = this\n open(that.path, that.flags, that.mode, function (err, fd) {\n if (err) {\n that.destroy()\n that.emit('error', err)\n } else {\n that.fd = fd\n that.emit('open', fd)\n }\n })\n }\n\n function createReadStream (path, options) {\n return new fs.ReadStream(path, options)\n }\n\n function createWriteStream (path, options) {\n return new fs.WriteStream(path, options)\n }\n\n var fs$open = fs.open\n fs.open = open\n function open (path, flags, mode, cb) {\n if (typeof mode === 'function')\n cb = mode, mode = null\n\n return go$open(path, flags, mode, cb)\n\n function go$open (path, flags, mode, cb, startTime) {\n return fs$open(path, flags, mode, function (err, fd) {\n if (err && (err.code === 'EMFILE' || err.code === 'ENFILE'))\n enqueue([go$open, [path, flags, mode, cb], err, startTime || Date.now(), Date.now()])\n else {\n if (typeof cb === 'function')\n cb.apply(this, arguments)\n }\n })\n }\n }\n\n return fs\n}\n\nfunction enqueue (elem) {\n debug('ENQUEUE', elem[0].name, elem[1])\n fs[gracefulQueue].push(elem)\n retry()\n}\n\n// keep track of the timeout between retry() calls\nvar retryTimer\n\n// reset the startTime and lastTime to now\n// this resets the start of the 60 second overall timeout as well as the\n// delay between attempts so that we'll retry these jobs sooner\nfunction resetQueue () {\n var now = Date.now()\n for (var i = 0; i < fs[gracefulQueue].length; ++i) {\n // entries that are only a length of 2 are from an older version, don't\n // bother modifying those since they'll be retried anyway.\n if (fs[gracefulQueue][i].length > 2) {\n fs[gracefulQueue][i][3] = now // startTime\n fs[gracefulQueue][i][4] = now // lastTime\n }\n }\n // call retry to make sure we're actively processing the queue\n retry()\n}\n\nfunction retry () {\n // clear the timer and remove it to help prevent unintended concurrency\n clearTimeout(retryTimer)\n retryTimer = undefined\n\n if (fs[gracefulQueue].length === 0)\n return\n\n var elem = fs[gracefulQueue].shift()\n var fn = elem[0]\n var args = elem[1]\n // these items may be unset if they were added by an older graceful-fs\n var err = elem[2]\n var startTime = elem[3]\n var lastTime = elem[4]\n\n // if we don't have a startTime we have no way of knowing if we've waited\n // long enough, so go ahead and retry this item now\n if (startTime === undefined) {\n debug('RETRY', fn.name, args)\n fn.apply(null, args)\n } else if (Date.now() - startTime >= 60000) {\n // it's been more than 60 seconds total, bail now\n debug('TIMEOUT', fn.name, args)\n var cb = args.pop()\n if (typeof cb === 'function')\n cb.call(null, err)\n } else {\n // the amount of time between the last attempt and right now\n var sinceAttempt = Date.now() - lastTime\n // the amount of time between when we first tried, and when we last tried\n // rounded up to at least 1\n var sinceStart = Math.max(lastTime - startTime, 1)\n // backoff. wait longer than the total time we've been retrying, but only\n // up to a maximum of 100ms\n var desiredDelay = Math.min(sinceStart * 1.2, 100)\n // it's been long enough since the last retry, do it again\n if (sinceAttempt >= desiredDelay) {\n debug('RETRY', fn.name, args)\n fn.apply(null, args.concat([startTime]))\n } else {\n // if we can't do this job yet, push it to the end of the queue\n // and let the next iteration check again\n fs[gracefulQueue].push(elem)\n }\n }\n\n // schedule our next run if one isn't already scheduled\n if (retryTimer === undefined) {\n retryTimer = setTimeout(retry, 0)\n }\n}\n","var Stream = require('stream').Stream\n\nmodule.exports = legacy\n\nfunction legacy (fs) {\n return {\n ReadStream: ReadStream,\n WriteStream: WriteStream\n }\n\n function ReadStream (path, options) {\n if (!(this instanceof ReadStream)) return new ReadStream(path, options);\n\n Stream.call(this);\n\n var self = this;\n\n this.path = path;\n this.fd = null;\n this.readable = true;\n this.paused = false;\n\n this.flags = 'r';\n this.mode = 438; /*=0666*/\n this.bufferSize = 64 * 1024;\n\n options = options || {};\n\n // Mixin options into this\n var keys = Object.keys(options);\n for (var index = 0, length = keys.length; index < length; index++) {\n var key = keys[index];\n this[key] = options[key];\n }\n\n if (this.encoding) this.setEncoding(this.encoding);\n\n if (this.start !== undefined) {\n if ('number' !== typeof this.start) {\n throw TypeError('start must be a Number');\n }\n if (this.end === undefined) {\n this.end = Infinity;\n } else if ('number' !== typeof this.end) {\n throw TypeError('end must be a Number');\n }\n\n if (this.start > this.end) {\n throw new Error('start must be <= end');\n }\n\n this.pos = this.start;\n }\n\n if (this.fd !== null) {\n process.nextTick(function() {\n self._read();\n });\n return;\n }\n\n fs.open(this.path, this.flags, this.mode, function (err, fd) {\n if (err) {\n self.emit('error', err);\n self.readable = false;\n return;\n }\n\n self.fd = fd;\n self.emit('open', fd);\n self._read();\n })\n }\n\n function WriteStream (path, options) {\n if (!(this instanceof WriteStream)) return new WriteStream(path, options);\n\n Stream.call(this);\n\n this.path = path;\n this.fd = null;\n this.writable = true;\n\n this.flags = 'w';\n this.encoding = 'binary';\n this.mode = 438; /*=0666*/\n this.bytesWritten = 0;\n\n options = options || {};\n\n // Mixin options into this\n var keys = Object.keys(options);\n for (var index = 0, length = keys.length; index < length; index++) {\n var key = keys[index];\n this[key] = options[key];\n }\n\n if (this.start !== undefined) {\n if ('number' !== typeof this.start) {\n throw TypeError('start must be a Number');\n }\n if (this.start < 0) {\n throw new Error('start must be >= zero');\n }\n\n this.pos = this.start;\n }\n\n this.busy = false;\n this._queue = [];\n\n if (this.fd === null) {\n this._open = fs.open;\n this._queue.push([this._open, this.path, this.flags, this.mode, undefined]);\n this.flush();\n }\n }\n}\n","var constants = require('constants')\n\nvar origCwd = process.cwd\nvar cwd = null\n\nvar platform = process.env.GRACEFUL_FS_PLATFORM || process.platform\n\nprocess.cwd = function() {\n if (!cwd)\n cwd = origCwd.call(process)\n return cwd\n}\ntry {\n process.cwd()\n} catch (er) {}\n\n// This check is needed until node.js 12 is required\nif (typeof process.chdir === 'function') {\n var chdir = process.chdir\n process.chdir = function (d) {\n cwd = null\n chdir.call(process, d)\n }\n if (Object.setPrototypeOf) Object.setPrototypeOf(process.chdir, chdir)\n}\n\nmodule.exports = patch\n\nfunction patch (fs) {\n // (re-)implement some things that are known busted or missing.\n\n // lchmod, broken prior to 0.6.2\n // back-port the fix here.\n if (constants.hasOwnProperty('O_SYMLINK') &&\n process.version.match(/^v0\\.6\\.[0-2]|^v0\\.5\\./)) {\n patchLchmod(fs)\n }\n\n // lutimes implementation, or no-op\n if (!fs.lutimes) {\n patchLutimes(fs)\n }\n\n // https://github.com/isaacs/node-graceful-fs/issues/4\n // Chown should not fail on einval or eperm if non-root.\n // It should not fail on enosys ever, as this just indicates\n // that a fs doesn't support the intended operation.\n\n fs.chown = chownFix(fs.chown)\n fs.fchown = chownFix(fs.fchown)\n fs.lchown = chownFix(fs.lchown)\n\n fs.chmod = chmodFix(fs.chmod)\n fs.fchmod = chmodFix(fs.fchmod)\n fs.lchmod = chmodFix(fs.lchmod)\n\n fs.chownSync = chownFixSync(fs.chownSync)\n fs.fchownSync = chownFixSync(fs.fchownSync)\n fs.lchownSync = chownFixSync(fs.lchownSync)\n\n fs.chmodSync = chmodFixSync(fs.chmodSync)\n fs.fchmodSync = chmodFixSync(fs.fchmodSync)\n fs.lchmodSync = chmodFixSync(fs.lchmodSync)\n\n fs.stat = statFix(fs.stat)\n fs.fstat = statFix(fs.fstat)\n fs.lstat = statFix(fs.lstat)\n\n fs.statSync = statFixSync(fs.statSync)\n fs.fstatSync = statFixSync(fs.fstatSync)\n fs.lstatSync = statFixSync(fs.lstatSync)\n\n // if lchmod/lchown do not exist, then make them no-ops\n if (fs.chmod && !fs.lchmod) {\n fs.lchmod = function (path, mode, cb) {\n if (cb) process.nextTick(cb)\n }\n fs.lchmodSync = function () {}\n }\n if (fs.chown && !fs.lchown) {\n fs.lchown = function (path, uid, gid, cb) {\n if (cb) process.nextTick(cb)\n }\n fs.lchownSync = function () {}\n }\n\n // on Windows, A/V software can lock the directory, causing this\n // to fail with an EACCES or EPERM if the directory contains newly\n // created files. Try again on failure, for up to 60 seconds.\n\n // Set the timeout this long because some Windows Anti-Virus, such as Parity\n // bit9, may lock files for up to a minute, causing npm package install\n // failures. Also, take care to yield the scheduler. Windows scheduling gives\n // CPU to a busy looping process, which can cause the program causing the lock\n // contention to be starved of CPU by node, so the contention doesn't resolve.\n if (platform === \"win32\") {\n fs.rename = typeof fs.rename !== 'function' ? fs.rename\n : (function (fs$rename) {\n function rename (from, to, cb) {\n var start = Date.now()\n var backoff = 0;\n fs$rename(from, to, function CB (er) {\n if (er\n && (er.code === \"EACCES\" || er.code === \"EPERM\" || er.code === \"EBUSY\")\n && Date.now() - start < 60000) {\n setTimeout(function() {\n fs.stat(to, function (stater, st) {\n if (stater && stater.code === \"ENOENT\")\n fs$rename(from, to, CB);\n else\n cb(er)\n })\n }, backoff)\n if (backoff < 100)\n backoff += 10;\n return;\n }\n if (cb) cb(er)\n })\n }\n if (Object.setPrototypeOf) Object.setPrototypeOf(rename, fs$rename)\n return rename\n })(fs.rename)\n }\n\n // if read() returns EAGAIN, then just try it again.\n fs.read = typeof fs.read !== 'function' ? fs.read\n : (function (fs$read) {\n function read (fd, buffer, offset, length, position, callback_) {\n var callback\n if (callback_ && typeof callback_ === 'function') {\n var eagCounter = 0\n callback = function (er, _, __) {\n if (er && er.code === 'EAGAIN' && eagCounter < 10) {\n eagCounter ++\n return fs$read.call(fs, fd, buffer, offset, length, position, callback)\n }\n callback_.apply(this, arguments)\n }\n }\n return fs$read.call(fs, fd, buffer, offset, length, position, callback)\n }\n\n // This ensures `util.promisify` works as it does for native `fs.read`.\n if (Object.setPrototypeOf) Object.setPrototypeOf(read, fs$read)\n return read\n })(fs.read)\n\n fs.readSync = typeof fs.readSync !== 'function' ? fs.readSync\n : (function (fs$readSync) { return function (fd, buffer, offset, length, position) {\n var eagCounter = 0\n while (true) {\n try {\n return fs$readSync.call(fs, fd, buffer, offset, length, position)\n } catch (er) {\n if (er.code === 'EAGAIN' && eagCounter < 10) {\n eagCounter ++\n continue\n }\n throw er\n }\n }\n }})(fs.readSync)\n\n function patchLchmod (fs) {\n fs.lchmod = function (path, mode, callback) {\n fs.open( path\n , constants.O_WRONLY | constants.O_SYMLINK\n , mode\n , function (err, fd) {\n if (err) {\n if (callback) callback(err)\n return\n }\n // prefer to return the chmod error, if one occurs,\n // but still try to close, and report closing errors if they occur.\n fs.fchmod(fd, mode, function (err) {\n fs.close(fd, function(err2) {\n if (callback) callback(err || err2)\n })\n })\n })\n }\n\n fs.lchmodSync = function (path, mode) {\n var fd = fs.openSync(path, constants.O_WRONLY | constants.O_SYMLINK, mode)\n\n // prefer to return the chmod error, if one occurs,\n // but still try to close, and report closing errors if they occur.\n var threw = true\n var ret\n try {\n ret = fs.fchmodSync(fd, mode)\n threw = false\n } finally {\n if (threw) {\n try {\n fs.closeSync(fd)\n } catch (er) {}\n } else {\n fs.closeSync(fd)\n }\n }\n return ret\n }\n }\n\n function patchLutimes (fs) {\n if (constants.hasOwnProperty(\"O_SYMLINK\") && fs.futimes) {\n fs.lutimes = function (path, at, mt, cb) {\n fs.open(path, constants.O_SYMLINK, function (er, fd) {\n if (er) {\n if (cb) cb(er)\n return\n }\n fs.futimes(fd, at, mt, function (er) {\n fs.close(fd, function (er2) {\n if (cb) cb(er || er2)\n })\n })\n })\n }\n\n fs.lutimesSync = function (path, at, mt) {\n var fd = fs.openSync(path, constants.O_SYMLINK)\n var ret\n var threw = true\n try {\n ret = fs.futimesSync(fd, at, mt)\n threw = false\n } finally {\n if (threw) {\n try {\n fs.closeSync(fd)\n } catch (er) {}\n } else {\n fs.closeSync(fd)\n }\n }\n return ret\n }\n\n } else if (fs.futimes) {\n fs.lutimes = function (_a, _b, _c, cb) { if (cb) process.nextTick(cb) }\n fs.lutimesSync = function () {}\n }\n }\n\n function chmodFix (orig) {\n if (!orig) return orig\n return function (target, mode, cb) {\n return orig.call(fs, target, mode, function (er) {\n if (chownErOk(er)) er = null\n if (cb) cb.apply(this, arguments)\n })\n }\n }\n\n function chmodFixSync (orig) {\n if (!orig) return orig\n return function (target, mode) {\n try {\n return orig.call(fs, target, mode)\n } catch (er) {\n if (!chownErOk(er)) throw er\n }\n }\n }\n\n\n function chownFix (orig) {\n if (!orig) return orig\n return function (target, uid, gid, cb) {\n return orig.call(fs, target, uid, gid, function (er) {\n if (chownErOk(er)) er = null\n if (cb) cb.apply(this, arguments)\n })\n }\n }\n\n function chownFixSync (orig) {\n if (!orig) return orig\n return function (target, uid, gid) {\n try {\n return orig.call(fs, target, uid, gid)\n } catch (er) {\n if (!chownErOk(er)) throw er\n }\n }\n }\n\n function statFix (orig) {\n if (!orig) return orig\n // Older versions of Node erroneously returned signed integers for\n // uid + gid.\n return function (target, options, cb) {\n if (typeof options === 'function') {\n cb = options\n options = null\n }\n function callback (er, stats) {\n if (stats) {\n if (stats.uid < 0) stats.uid += 0x100000000\n if (stats.gid < 0) stats.gid += 0x100000000\n }\n if (cb) cb.apply(this, arguments)\n }\n return options ? orig.call(fs, target, options, callback)\n : orig.call(fs, target, callback)\n }\n }\n\n function statFixSync (orig) {\n if (!orig) return orig\n // Older versions of Node erroneously returned signed integers for\n // uid + gid.\n return function (target, options) {\n var stats = options ? orig.call(fs, target, options)\n : orig.call(fs, target)\n if (stats) {\n if (stats.uid < 0) stats.uid += 0x100000000\n if (stats.gid < 0) stats.gid += 0x100000000\n }\n return stats;\n }\n }\n\n // ENOSYS means that the fs doesn't support the op. Just ignore\n // that, because it doesn't matter.\n //\n // if there's no getuid, or if getuid() is something other\n // than 0, and the error is EINVAL or EPERM, then just ignore\n // it.\n //\n // This specific case is a silent failure in cp, install, tar,\n // and most other unix tools that manage permissions.\n //\n // When running as root, or if other types of errors are\n // encountered, then it's strict.\n function chownErOk (er) {\n if (!er)\n return true\n\n if (er.code === \"ENOSYS\")\n return true\n\n var nonroot = !process.getuid || process.getuid() !== 0\n if (nonroot) {\n if (er.code === \"EINVAL\" || er.code === \"EPERM\")\n return true\n }\n\n return false\n }\n}\n","'use strict';\n\nmodule.exports = (flag, argv = process.argv) => {\n\tconst prefix = flag.startsWith('-') ? '' : (flag.length === 1 ? '-' : '--');\n\tconst position = argv.indexOf(prefix + flag);\n\tconst terminatorPosition = argv.indexOf('--');\n\treturn position !== -1 && (terminatorPosition === -1 || position < terminatorPosition);\n};\n","/* eslint-disable yoda */\n'use strict';\n\nconst isFullwidthCodePoint = codePoint => {\n\tif (Number.isNaN(codePoint)) {\n\t\treturn false;\n\t}\n\n\t// Code points are derived from:\n\t// http://www.unix.org/Public/UNIDATA/EastAsianWidth.txt\n\tif (\n\t\tcodePoint >= 0x1100 && (\n\t\t\tcodePoint <= 0x115F || // Hangul Jamo\n\t\t\tcodePoint === 0x2329 || // LEFT-POINTING ANGLE BRACKET\n\t\t\tcodePoint === 0x232A || // RIGHT-POINTING ANGLE BRACKET\n\t\t\t// CJK Radicals Supplement .. Enclosed CJK Letters and Months\n\t\t\t(0x2E80 <= codePoint && codePoint <= 0x3247 && codePoint !== 0x303F) ||\n\t\t\t// Enclosed CJK Letters and Months .. CJK Unified Ideographs Extension A\n\t\t\t(0x3250 <= codePoint && codePoint <= 0x4DBF) ||\n\t\t\t// CJK Unified Ideographs .. Yi Radicals\n\t\t\t(0x4E00 <= codePoint && codePoint <= 0xA4C6) ||\n\t\t\t// Hangul Jamo Extended-A\n\t\t\t(0xA960 <= codePoint && codePoint <= 0xA97C) ||\n\t\t\t// Hangul Syllables\n\t\t\t(0xAC00 <= codePoint && codePoint <= 0xD7A3) ||\n\t\t\t// CJK Compatibility Ideographs\n\t\t\t(0xF900 <= codePoint && codePoint <= 0xFAFF) ||\n\t\t\t// Vertical Forms\n\t\t\t(0xFE10 <= codePoint && codePoint <= 0xFE19) ||\n\t\t\t// CJK Compatibility Forms .. Small Form Variants\n\t\t\t(0xFE30 <= codePoint && codePoint <= 0xFE6B) ||\n\t\t\t// Halfwidth and Fullwidth Forms\n\t\t\t(0xFF01 <= codePoint && codePoint <= 0xFF60) ||\n\t\t\t(0xFFE0 <= codePoint && codePoint <= 0xFFE6) ||\n\t\t\t// Kana Supplement\n\t\t\t(0x1B000 <= codePoint && codePoint <= 0x1B001) ||\n\t\t\t// Enclosed Ideographic Supplement\n\t\t\t(0x1F200 <= codePoint && codePoint <= 0x1F251) ||\n\t\t\t// CJK Unified Ideographs Extension B .. Tertiary Ideographic Plane\n\t\t\t(0x20000 <= codePoint && codePoint <= 0x3FFFD)\n\t\t)\n\t) {\n\t\treturn true;\n\t}\n\n\treturn false;\n};\n\nmodule.exports = isFullwidthCodePoint;\nmodule.exports.default = isFullwidthCodePoint;\n","let _fs\ntry {\n _fs = require('graceful-fs')\n} catch (_) {\n _fs = require('fs')\n}\nconst universalify = require('universalify')\nconst { stringify, stripBom } = require('./utils')\n\nasync function _readFile (file, options = {}) {\n if (typeof options === 'string') {\n options = { encoding: options }\n }\n\n const fs = options.fs || _fs\n\n const shouldThrow = 'throws' in options ? options.throws : true\n\n let data = await universalify.fromCallback(fs.readFile)(file, options)\n\n data = stripBom(data)\n\n let obj\n try {\n obj = JSON.parse(data, options ? options.reviver : null)\n } catch (err) {\n if (shouldThrow) {\n err.message = `${file}: ${err.message}`\n throw err\n } else {\n return null\n }\n }\n\n return obj\n}\n\nconst readFile = universalify.fromPromise(_readFile)\n\nfunction readFileSync (file, options = {}) {\n if (typeof options === 'string') {\n options = { encoding: options }\n }\n\n const fs = options.fs || _fs\n\n const shouldThrow = 'throws' in options ? options.throws : true\n\n try {\n let content = fs.readFileSync(file, options)\n content = stripBom(content)\n return JSON.parse(content, options.reviver)\n } catch (err) {\n if (shouldThrow) {\n err.message = `${file}: ${err.message}`\n throw err\n } else {\n return null\n }\n }\n}\n\nasync function _writeFile (file, obj, options = {}) {\n const fs = options.fs || _fs\n\n const str = stringify(obj, options)\n\n await universalify.fromCallback(fs.writeFile)(file, str, options)\n}\n\nconst writeFile = universalify.fromPromise(_writeFile)\n\nfunction writeFileSync (file, obj, options = {}) {\n const fs = options.fs || _fs\n\n const str = stringify(obj, options)\n // not sure if fs.writeFileSync returns anything, but just in case\n return fs.writeFileSync(file, str, options)\n}\n\nconst jsonfile = {\n readFile,\n readFileSync,\n writeFile,\n writeFileSync\n}\n\nmodule.exports = jsonfile\n","function stringify (obj, { EOL = '\\n', finalEOL = true, replacer = null, spaces } = {}) {\n const EOF = finalEOL ? EOL : ''\n const str = JSON.stringify(obj, replacer, spaces)\n\n return str.replace(/\\n/g, EOL) + EOF\n}\n\nfunction stripBom (content) {\n // we do this because JSON.parse would convert it to a utf8 string if encoding wasn't specified\n if (Buffer.isBuffer(content)) content = content.toString('utf8')\n return content.replace(/^\\uFEFF/, '')\n}\n\nmodule.exports = { stringify, stripBom }\n","/**\n * lodash (Custom Build) \n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as default options for `_.truncate`. */\nvar DEFAULT_TRUNC_LENGTH = 30,\n DEFAULT_TRUNC_OMISSION = '...';\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0,\n MAX_INTEGER = 1.7976931348623157e+308,\n NAN = 0 / 0;\n\n/** `Object#toString` result references. */\nvar regexpTag = '[object RegExp]',\n symbolTag = '[object Symbol]';\n\n/** Used to match leading and trailing whitespace. */\nvar reTrim = /^\\s+|\\s+$/g;\n\n/** Used to match `RegExp` flags from their coerced string values. */\nvar reFlags = /\\w*$/;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Used to compose unicode character classes. */\nvar rsAstralRange = '\\\\ud800-\\\\udfff',\n rsComboMarksRange = '\\\\u0300-\\\\u036f\\\\ufe20-\\\\ufe23',\n rsComboSymbolsRange = '\\\\u20d0-\\\\u20f0',\n rsVarRange = '\\\\ufe0e\\\\ufe0f';\n\n/** Used to compose unicode capture groups. */\nvar rsAstral = '[' + rsAstralRange + ']',\n rsCombo = '[' + rsComboMarksRange + rsComboSymbolsRange + ']',\n rsFitz = '\\\\ud83c[\\\\udffb-\\\\udfff]',\n rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')',\n rsNonAstral = '[^' + rsAstralRange + ']',\n rsRegional = '(?:\\\\ud83c[\\\\udde6-\\\\uddff]){2}',\n rsSurrPair = '[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff]',\n rsZWJ = '\\\\u200d';\n\n/** Used to compose unicode regexes. */\nvar reOptMod = rsModifier + '?',\n rsOptVar = '[' + rsVarRange + ']?',\n rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*',\n rsSeq = rsOptVar + reOptMod + rsOptJoin,\n rsSymbol = '(?:' + [rsNonAstral + rsCombo + '?', rsCombo, rsRegional, rsSurrPair, rsAstral].join('|') + ')';\n\n/** Used to match [string symbols](https://mathiasbynens.be/notes/javascript-unicode). */\nvar reUnicode = RegExp(rsFitz + '(?=' + rsFitz + ')|' + rsSymbol + rsSeq, 'g');\n\n/** Used to detect strings with [zero-width joiners or code points from the astral planes](http://eev.ee/blog/2015/09/12/dark-corners-of-unicode/). */\nvar reHasUnicode = RegExp('[' + rsZWJ + rsAstralRange + rsComboMarksRange + rsComboSymbolsRange + rsVarRange + ']');\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n try {\n return freeProcess && freeProcess.binding('util');\n } catch (e) {}\n}());\n\n/* Node.js helper references. */\nvar nodeIsRegExp = nodeUtil && nodeUtil.isRegExp;\n\n/**\n * Gets the size of an ASCII `string`.\n *\n * @private\n * @param {string} string The string inspect.\n * @returns {number} Returns the string size.\n */\nvar asciiSize = baseProperty('length');\n\n/**\n * Converts an ASCII `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction asciiToArray(string) {\n return string.split('');\n}\n\n/**\n * The base implementation of `_.property` without support for deep paths.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction baseProperty(key) {\n return function(object) {\n return object == null ? undefined : object[key];\n };\n}\n\n/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n return function(value) {\n return func(value);\n };\n}\n\n/**\n * Checks if `string` contains Unicode symbols.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {boolean} Returns `true` if a symbol is found, else `false`.\n */\nfunction hasUnicode(string) {\n return reHasUnicode.test(string);\n}\n\n/**\n * Gets the number of symbols in `string`.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {number} Returns the string size.\n */\nfunction stringSize(string) {\n return hasUnicode(string)\n ? unicodeSize(string)\n : asciiSize(string);\n}\n\n/**\n * Converts `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction stringToArray(string) {\n return hasUnicode(string)\n ? unicodeToArray(string)\n : asciiToArray(string);\n}\n\n/**\n * Gets the size of a Unicode `string`.\n *\n * @private\n * @param {string} string The string inspect.\n * @returns {number} Returns the string size.\n */\nfunction unicodeSize(string) {\n var result = reUnicode.lastIndex = 0;\n while (reUnicode.test(string)) {\n result++;\n }\n return result;\n}\n\n/**\n * Converts a Unicode `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction unicodeToArray(string) {\n return string.match(reUnicode) || [];\n}\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n/**\n * The base implementation of `_.isRegExp` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a regexp, else `false`.\n */\nfunction baseIsRegExp(value) {\n return isObject(value) && objectToString.call(value) == regexpTag;\n}\n\n/**\n * The base implementation of `_.slice` without an iteratee call guard.\n *\n * @private\n * @param {Array} array The array to slice.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the slice of `array`.\n */\nfunction baseSlice(array, start, end) {\n var index = -1,\n length = array.length;\n\n if (start < 0) {\n start = -start > length ? 0 : (length + start);\n }\n end = end > length ? length : end;\n if (end < 0) {\n end += length;\n }\n length = start > end ? 0 : ((end - start) >>> 0);\n start >>>= 0;\n\n var result = Array(length);\n while (++index < length) {\n result[index] = array[index + start];\n }\n return result;\n}\n\n/**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\nfunction baseToString(value) {\n // Exit early for strings to avoid a performance hit in some environments.\n if (typeof value == 'string') {\n return value;\n }\n if (isSymbol(value)) {\n return symbolToString ? symbolToString.call(value) : '';\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\n/**\n * Casts `array` to a slice if it's needed.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {number} start The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the cast slice.\n */\nfunction castSlice(array, start, end) {\n var length = array.length;\n end = end === undefined ? length : end;\n return (!start && end >= length) ? array : baseSlice(array, start, end);\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return !!value && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is classified as a `RegExp` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a regexp, else `false`.\n * @example\n *\n * _.isRegExp(/abc/);\n * // => true\n *\n * _.isRegExp('/abc/');\n * // => false\n */\nvar isRegExp = nodeIsRegExp ? baseUnary(nodeIsRegExp) : baseIsRegExp;\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && objectToString.call(value) == symbolTag);\n}\n\n/**\n * Converts `value` to a finite number.\n *\n * @static\n * @memberOf _\n * @since 4.12.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted number.\n * @example\n *\n * _.toFinite(3.2);\n * // => 3.2\n *\n * _.toFinite(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toFinite(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toFinite('3.2');\n * // => 3.2\n */\nfunction toFinite(value) {\n if (!value) {\n return value === 0 ? value : 0;\n }\n value = toNumber(value);\n if (value === INFINITY || value === -INFINITY) {\n var sign = (value < 0 ? -1 : 1);\n return sign * MAX_INTEGER;\n }\n return value === value ? value : 0;\n}\n\n/**\n * Converts `value` to an integer.\n *\n * **Note:** This method is loosely based on\n * [`ToInteger`](http://www.ecma-international.org/ecma-262/7.0/#sec-tointeger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toInteger(3.2);\n * // => 3\n *\n * _.toInteger(Number.MIN_VALUE);\n * // => 0\n *\n * _.toInteger(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toInteger('3.2');\n * // => 3\n */\nfunction toInteger(value) {\n var result = toFinite(value),\n remainder = result % 1;\n\n return result === result ? (remainder ? result - remainder : result) : 0;\n}\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = value.replace(reTrim, '');\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n}\n\n/**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\nfunction toString(value) {\n return value == null ? '' : baseToString(value);\n}\n\n/**\n * Truncates `string` if it's longer than the given maximum string length.\n * The last characters of the truncated string are replaced with the omission\n * string which defaults to \"...\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to truncate.\n * @param {Object} [options={}] The options object.\n * @param {number} [options.length=30] The maximum string length.\n * @param {string} [options.omission='...'] The string to indicate text is omitted.\n * @param {RegExp|string} [options.separator] The separator pattern to truncate to.\n * @returns {string} Returns the truncated string.\n * @example\n *\n * _.truncate('hi-diddly-ho there, neighborino');\n * // => 'hi-diddly-ho there, neighbo...'\n *\n * _.truncate('hi-diddly-ho there, neighborino', {\n * 'length': 24,\n * 'separator': ' '\n * });\n * // => 'hi-diddly-ho there,...'\n *\n * _.truncate('hi-diddly-ho there, neighborino', {\n * 'length': 24,\n * 'separator': /,? +/\n * });\n * // => 'hi-diddly-ho there...'\n *\n * _.truncate('hi-diddly-ho there, neighborino', {\n * 'omission': ' [...]'\n * });\n * // => 'hi-diddly-ho there, neig [...]'\n */\nfunction truncate(string, options) {\n var length = DEFAULT_TRUNC_LENGTH,\n omission = DEFAULT_TRUNC_OMISSION;\n\n if (isObject(options)) {\n var separator = 'separator' in options ? options.separator : separator;\n length = 'length' in options ? toInteger(options.length) : length;\n omission = 'omission' in options ? baseToString(options.omission) : omission;\n }\n string = toString(string);\n\n var strLength = string.length;\n if (hasUnicode(string)) {\n var strSymbols = stringToArray(string);\n strLength = strSymbols.length;\n }\n if (length >= strLength) {\n return string;\n }\n var end = length - stringSize(omission);\n if (end < 1) {\n return omission;\n }\n var result = strSymbols\n ? castSlice(strSymbols, 0, end).join('')\n : string.slice(0, end);\n\n if (separator === undefined) {\n return result + omission;\n }\n if (strSymbols) {\n end += (result.length - end);\n }\n if (isRegExp(separator)) {\n if (string.slice(end).search(separator)) {\n var match,\n substring = result;\n\n if (!separator.global) {\n separator = RegExp(separator.source, toString(reFlags.exec(separator)) + 'g');\n }\n separator.lastIndex = 0;\n while ((match = separator.exec(substring))) {\n var newEnd = match.index;\n }\n result = result.slice(0, newEnd === undefined ? end : newEnd);\n }\n } else if (string.indexOf(baseToString(separator), end) != end) {\n var index = result.lastIndexOf(separator);\n if (index > -1) {\n result = result.slice(0, index);\n }\n }\n return result + omission;\n}\n\nmodule.exports = truncate;\n","var wrappy = require('wrappy')\nmodule.exports = wrappy(once)\nmodule.exports.strict = wrappy(onceStrict)\n\nonce.proto = once(function () {\n Object.defineProperty(Function.prototype, 'once', {\n value: function () {\n return once(this)\n },\n configurable: true\n })\n\n Object.defineProperty(Function.prototype, 'onceStrict', {\n value: function () {\n return onceStrict(this)\n },\n configurable: true\n })\n})\n\nfunction once (fn) {\n var f = function () {\n if (f.called) return f.value\n f.called = true\n return f.value = fn.apply(this, arguments)\n }\n f.called = false\n return f\n}\n\nfunction onceStrict (fn) {\n var f = function () {\n if (f.called)\n throw new Error(f.onceError)\n f.called = true\n return f.value = fn.apply(this, arguments)\n }\n var name = fn.name || 'Function wrapped with `once`'\n f.onceError = name + \" shouldn't be called more than once\"\n f.called = false\n return f\n}\n","'use strict';\nconst isFullwidthCodePoint = require('is-fullwidth-code-point');\nconst astralRegex = require('astral-regex');\nconst ansiStyles = require('ansi-styles');\n\nconst ESCAPES = [\n\t'\\u001B',\n\t'\\u009B'\n];\n\nconst wrapAnsi = code => `${ESCAPES[0]}[${code}m`;\n\nconst checkAnsi = (ansiCodes, isEscapes, endAnsiCode) => {\n\tlet output = [];\n\tansiCodes = [...ansiCodes];\n\n\tfor (let ansiCode of ansiCodes) {\n\t\tconst ansiCodeOrigin = ansiCode;\n\t\tif (ansiCode.includes(';')) {\n\t\t\tansiCode = ansiCode.split(';')[0][0] + '0';\n\t\t}\n\n\t\tconst item = ansiStyles.codes.get(Number.parseInt(ansiCode, 10));\n\t\tif (item) {\n\t\t\tconst indexEscape = ansiCodes.indexOf(item.toString());\n\t\t\tif (indexEscape === -1) {\n\t\t\t\toutput.push(wrapAnsi(isEscapes ? item : ansiCodeOrigin));\n\t\t\t} else {\n\t\t\t\tansiCodes.splice(indexEscape, 1);\n\t\t\t}\n\t\t} else if (isEscapes) {\n\t\t\toutput.push(wrapAnsi(0));\n\t\t\tbreak;\n\t\t} else {\n\t\t\toutput.push(wrapAnsi(ansiCodeOrigin));\n\t\t}\n\t}\n\n\tif (isEscapes) {\n\t\toutput = output.filter((element, index) => output.indexOf(element) === index);\n\n\t\tif (endAnsiCode !== undefined) {\n\t\t\tconst fistEscapeCode = wrapAnsi(ansiStyles.codes.get(Number.parseInt(endAnsiCode, 10)));\n\t\t\toutput = output.reduce((current, next) => next === fistEscapeCode ? [next, ...current] : [...current, next], []);\n\t\t}\n\t}\n\n\treturn output.join('');\n};\n\nmodule.exports = (string, begin, end) => {\n\tconst characters = [...string];\n\tconst ansiCodes = [];\n\n\tlet stringEnd = typeof end === 'number' ? end : characters.length;\n\tlet isInsideEscape = false;\n\tlet ansiCode;\n\tlet visible = 0;\n\tlet output = '';\n\n\tfor (const [index, character] of characters.entries()) {\n\t\tlet leftEscape = false;\n\n\t\tif (ESCAPES.includes(character)) {\n\t\t\tconst code = /\\d[^m]*/.exec(string.slice(index, index + 18));\n\t\t\tansiCode = code && code.length > 0 ? code[0] : undefined;\n\n\t\t\tif (visible < stringEnd) {\n\t\t\t\tisInsideEscape = true;\n\n\t\t\t\tif (ansiCode !== undefined) {\n\t\t\t\t\tansiCodes.push(ansiCode);\n\t\t\t\t}\n\t\t\t}\n\t\t} else if (isInsideEscape && character === 'm') {\n\t\t\tisInsideEscape = false;\n\t\t\tleftEscape = true;\n\t\t}\n\n\t\tif (!isInsideEscape && !leftEscape) {\n\t\t\tvisible++;\n\t\t}\n\n\t\tif (!astralRegex({exact: true}).test(character) && isFullwidthCodePoint(character.codePointAt())) {\n\t\t\tvisible++;\n\n\t\t\tif (typeof end !== 'number') {\n\t\t\t\tstringEnd++;\n\t\t\t}\n\t\t}\n\n\t\tif (visible > begin && visible <= stringEnd) {\n\t\t\toutput += character;\n\t\t} else if (visible === begin && !isInsideEscape && ansiCode !== undefined) {\n\t\t\toutput = checkAnsi(ansiCodes);\n\t\t} else if (visible >= stringEnd) {\n\t\t\toutput += checkAnsi(ansiCodes, true, ansiCode);\n\t\t\tbreak;\n\t\t}\n\t}\n\n\treturn output;\n};\n","'use strict';\nconst stripAnsi = require('strip-ansi');\nconst isFullwidthCodePoint = require('is-fullwidth-code-point');\nconst emojiRegex = require('emoji-regex');\n\nconst stringWidth = string => {\n\tif (typeof string !== 'string' || string.length === 0) {\n\t\treturn 0;\n\t}\n\n\tstring = stripAnsi(string);\n\n\tif (string.length === 0) {\n\t\treturn 0;\n\t}\n\n\tstring = string.replace(emojiRegex(), ' ');\n\n\tlet width = 0;\n\n\tfor (let i = 0; i < string.length; i++) {\n\t\tconst code = string.codePointAt(i);\n\n\t\t// Ignore control characters\n\t\tif (code <= 0x1F || (code >= 0x7F && code <= 0x9F)) {\n\t\t\tcontinue;\n\t\t}\n\n\t\t// Ignore combining characters\n\t\tif (code >= 0x300 && code <= 0x36F) {\n\t\t\tcontinue;\n\t\t}\n\n\t\t// Surrogates\n\t\tif (code > 0xFFFF) {\n\t\t\ti++;\n\t\t}\n\n\t\twidth += isFullwidthCodePoint(code) ? 2 : 1;\n\t}\n\n\treturn width;\n};\n\nmodule.exports = stringWidth;\n// TODO: remove this in the next major version\nmodule.exports.default = stringWidth;\n","'use strict';\nconst ansiRegex = require('ansi-regex');\n\nmodule.exports = string => typeof string === 'string' ? string.replace(ansiRegex(), '') : string;\n","const hexRegex = /^[-+]?0x[a-fA-F0-9]+$/;\nconst numRegex = /^([\\-\\+])?(0*)(\\.[0-9]+([eE]\\-?[0-9]+)?|[0-9]+(\\.[0-9]+([eE]\\-?[0-9]+)?)?)$/;\n// const octRegex = /0x[a-z0-9]+/;\n// const binRegex = /0x[a-z0-9]+/;\n\n\n//polyfill\nif (!Number.parseInt && window.parseInt) {\n Number.parseInt = window.parseInt;\n}\nif (!Number.parseFloat && window.parseFloat) {\n Number.parseFloat = window.parseFloat;\n}\n\n \nconst consider = {\n hex : true,\n leadingZeros: true,\n decimalPoint: \"\\.\",\n eNotation: true\n //skipLike: /regex/\n};\n\nfunction toNumber(str, options = {}){\n // const options = Object.assign({}, consider);\n // if(opt.leadingZeros === false){\n // options.leadingZeros = false;\n // }else if(opt.hex === false){\n // options.hex = false;\n // }\n\n options = Object.assign({}, consider, options );\n if(!str || typeof str !== \"string\" ) return str;\n \n let trimmedStr = str.trim();\n // if(trimmedStr === \"0.0\") return 0;\n // else if(trimmedStr === \"+0.0\") return 0;\n // else if(trimmedStr === \"-0.0\") return -0;\n\n if(options.skipLike !== undefined && options.skipLike.test(trimmedStr)) return str;\n else if (options.hex && hexRegex.test(trimmedStr)) {\n return Number.parseInt(trimmedStr, 16);\n // } else if (options.parseOct && octRegex.test(str)) {\n // return Number.parseInt(val, 8);\n // }else if (options.parseBin && binRegex.test(str)) {\n // return Number.parseInt(val, 2);\n }else{\n //separate negative sign, leading zeros, and rest number\n const match = numRegex.exec(trimmedStr);\n if(match){\n const sign = match[1];\n const leadingZeros = match[2];\n let numTrimmedByZeros = trimZeros(match[3]); //complete num without leading zeros\n //trim ending zeros for floating number\n \n const eNotation = match[4] || match[6];\n if(!options.leadingZeros && leadingZeros.length > 0 && sign && trimmedStr[2] !== \".\") return str; //-0123\n else if(!options.leadingZeros && leadingZeros.length > 0 && !sign && trimmedStr[1] !== \".\") return str; //0123\n else{//no leading zeros or leading zeros are allowed\n const num = Number(trimmedStr);\n const numStr = \"\" + num;\n if(numStr.search(/[eE]/) !== -1){ //given number is long and parsed to eNotation\n if(options.eNotation) return num;\n else return str;\n }else if(eNotation){ //given number has enotation\n if(options.eNotation) return num;\n else return str;\n }else if(trimmedStr.indexOf(\".\") !== -1){ //floating number\n // const decimalPart = match[5].substr(1);\n // const intPart = trimmedStr.substr(0,trimmedStr.indexOf(\".\"));\n\n \n // const p = numStr.indexOf(\".\");\n // const givenIntPart = numStr.substr(0,p);\n // const givenDecPart = numStr.substr(p+1);\n if(numStr === \"0\" && (numTrimmedByZeros === \"\") ) return num; //0.0\n else if(numStr === numTrimmedByZeros) return num; //0.456. 0.79000\n else if( sign && numStr === \"-\"+numTrimmedByZeros) return num;\n else return str;\n }\n \n if(leadingZeros){\n // if(numTrimmedByZeros === numStr){\n // if(options.leadingZeros) return num;\n // else return str;\n // }else return str;\n if(numTrimmedByZeros === numStr) return num;\n else if(sign+numTrimmedByZeros === numStr) return num;\n else return str;\n }\n\n if(trimmedStr === numStr) return num;\n else if(trimmedStr === sign+numStr) return num;\n // else{\n // //number with +/- sign\n // trimmedStr.test(/[-+][0-9]);\n\n // }\n return str;\n }\n // else if(!eNotation && trimmedStr && trimmedStr !== Number(trimmedStr) ) return str;\n \n }else{ //non-numeric string\n return str;\n }\n }\n}\n\n/**\n * \n * @param {string} numStr without leading zeros\n * @returns \n */\nfunction trimZeros(numStr){\n if(numStr && numStr.indexOf(\".\") !== -1){//float\n numStr = numStr.replace(/0+$/, \"\"); //remove ending zeros\n if(numStr === \".\") numStr = \"0\";\n else if(numStr[0] === \".\") numStr = \"0\"+numStr;\n else if(numStr[numStr.length-1] === \".\") numStr = numStr.substr(0,numStr.length-1);\n return numStr;\n }\n return numStr;\n}\nmodule.exports = toNumber\n","'use strict';\nconst os = require('os');\nconst tty = require('tty');\nconst hasFlag = require('has-flag');\n\nconst {env} = process;\n\nlet forceColor;\nif (hasFlag('no-color') ||\n\thasFlag('no-colors') ||\n\thasFlag('color=false') ||\n\thasFlag('color=never')) {\n\tforceColor = 0;\n} else if (hasFlag('color') ||\n\thasFlag('colors') ||\n\thasFlag('color=true') ||\n\thasFlag('color=always')) {\n\tforceColor = 1;\n}\n\nif ('FORCE_COLOR' in env) {\n\tif (env.FORCE_COLOR === 'true') {\n\t\tforceColor = 1;\n\t} else if (env.FORCE_COLOR === 'false') {\n\t\tforceColor = 0;\n\t} else {\n\t\tforceColor = env.FORCE_COLOR.length === 0 ? 1 : Math.min(parseInt(env.FORCE_COLOR, 10), 3);\n\t}\n}\n\nfunction translateLevel(level) {\n\tif (level === 0) {\n\t\treturn false;\n\t}\n\n\treturn {\n\t\tlevel,\n\t\thasBasic: true,\n\t\thas256: level >= 2,\n\t\thas16m: level >= 3\n\t};\n}\n\nfunction supportsColor(haveStream, streamIsTTY) {\n\tif (forceColor === 0) {\n\t\treturn 0;\n\t}\n\n\tif (hasFlag('color=16m') ||\n\t\thasFlag('color=full') ||\n\t\thasFlag('color=truecolor')) {\n\t\treturn 3;\n\t}\n\n\tif (hasFlag('color=256')) {\n\t\treturn 2;\n\t}\n\n\tif (haveStream && !streamIsTTY && forceColor === undefined) {\n\t\treturn 0;\n\t}\n\n\tconst min = forceColor || 0;\n\n\tif (env.TERM === 'dumb') {\n\t\treturn min;\n\t}\n\n\tif (process.platform === 'win32') {\n\t\t// Windows 10 build 10586 is the first Windows release that supports 256 colors.\n\t\t// Windows 10 build 14931 is the first release that supports 16m/TrueColor.\n\t\tconst osRelease = os.release().split('.');\n\t\tif (\n\t\t\tNumber(osRelease[0]) >= 10 &&\n\t\t\tNumber(osRelease[2]) >= 10586\n\t\t) {\n\t\t\treturn Number(osRelease[2]) >= 14931 ? 3 : 2;\n\t\t}\n\n\t\treturn 1;\n\t}\n\n\tif ('CI' in env) {\n\t\tif (['TRAVIS', 'CIRCLECI', 'APPVEYOR', 'GITLAB_CI', 'GITHUB_ACTIONS', 'BUILDKITE'].some(sign => sign in env) || env.CI_NAME === 'codeship') {\n\t\t\treturn 1;\n\t\t}\n\n\t\treturn min;\n\t}\n\n\tif ('TEAMCITY_VERSION' in env) {\n\t\treturn /^(9\\.(0*[1-9]\\d*)\\.|\\d{2,}\\.)/.test(env.TEAMCITY_VERSION) ? 1 : 0;\n\t}\n\n\tif (env.COLORTERM === 'truecolor') {\n\t\treturn 3;\n\t}\n\n\tif ('TERM_PROGRAM' in env) {\n\t\tconst version = parseInt((env.TERM_PROGRAM_VERSION || '').split('.')[0], 10);\n\n\t\tswitch (env.TERM_PROGRAM) {\n\t\t\tcase 'iTerm.app':\n\t\t\t\treturn version >= 3 ? 3 : 2;\n\t\t\tcase 'Apple_Terminal':\n\t\t\t\treturn 2;\n\t\t\t// No default\n\t\t}\n\t}\n\n\tif (/-256(color)?$/i.test(env.TERM)) {\n\t\treturn 2;\n\t}\n\n\tif (/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(env.TERM)) {\n\t\treturn 1;\n\t}\n\n\tif ('COLORTERM' in env) {\n\t\treturn 1;\n\t}\n\n\treturn min;\n}\n\nfunction getSupportLevel(stream) {\n\tconst level = supportsColor(stream, stream && stream.isTTY);\n\treturn translateLevel(level);\n}\n\nmodule.exports = {\n\tsupportsColor: getSupportLevel,\n\tstdout: translateLevel(supportsColor(true, tty.isatty(1))),\n\tstderr: translateLevel(supportsColor(true, tty.isatty(2)))\n};\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.alignVerticalRangeContent = exports.wrapRangeContent = void 0;\nconst string_width_1 = __importDefault(require(\"string-width\"));\nconst alignString_1 = require(\"./alignString\");\nconst mapDataUsingRowHeights_1 = require(\"./mapDataUsingRowHeights\");\nconst padTableData_1 = require(\"./padTableData\");\nconst truncateTableData_1 = require(\"./truncateTableData\");\nconst utils_1 = require(\"./utils\");\nconst wrapCell_1 = require(\"./wrapCell\");\n/**\n * Fill content into all cells in range in order to calculate total height\n */\nconst wrapRangeContent = (rangeConfig, rangeWidth, context) => {\n const { topLeft, paddingRight, paddingLeft, truncate, wrapWord, alignment } = rangeConfig;\n const originalContent = context.rows[topLeft.row][topLeft.col];\n const contentWidth = rangeWidth - paddingLeft - paddingRight;\n return (0, wrapCell_1.wrapCell)((0, truncateTableData_1.truncateString)(originalContent, truncate), contentWidth, wrapWord).map((line) => {\n const alignedLine = (0, alignString_1.alignString)(line, contentWidth, alignment);\n return (0, padTableData_1.padString)(alignedLine, paddingLeft, paddingRight);\n });\n};\nexports.wrapRangeContent = wrapRangeContent;\nconst alignVerticalRangeContent = (range, content, context) => {\n const { rows, drawHorizontalLine, rowHeights } = context;\n const { topLeft, bottomRight, verticalAlignment } = range;\n // They are empty before calculateRowHeights function run\n if (rowHeights.length === 0) {\n return [];\n }\n const totalCellHeight = (0, utils_1.sumArray)(rowHeights.slice(topLeft.row, bottomRight.row + 1));\n const totalBorderHeight = bottomRight.row - topLeft.row;\n const hiddenHorizontalBorderCount = (0, utils_1.sequence)(topLeft.row + 1, bottomRight.row).filter((horizontalBorderIndex) => {\n return !drawHorizontalLine(horizontalBorderIndex, rows.length);\n }).length;\n const availableRangeHeight = totalCellHeight + totalBorderHeight - hiddenHorizontalBorderCount;\n return (0, mapDataUsingRowHeights_1.padCellVertically)(content, availableRangeHeight, verticalAlignment).map((line) => {\n if (line.length === 0) {\n return ' '.repeat((0, string_width_1.default)(content[0]));\n }\n return line;\n });\n};\nexports.alignVerticalRangeContent = alignVerticalRangeContent;\n//# sourceMappingURL=alignSpanningCell.js.map","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.alignString = void 0;\nconst string_width_1 = __importDefault(require(\"string-width\"));\nconst utils_1 = require(\"./utils\");\nconst alignLeft = (subject, width) => {\n return subject + ' '.repeat(width);\n};\nconst alignRight = (subject, width) => {\n return ' '.repeat(width) + subject;\n};\nconst alignCenter = (subject, width) => {\n return ' '.repeat(Math.floor(width / 2)) + subject + ' '.repeat(Math.ceil(width / 2));\n};\nconst alignJustify = (subject, width) => {\n const spaceSequenceCount = (0, utils_1.countSpaceSequence)(subject);\n if (spaceSequenceCount === 0) {\n return alignLeft(subject, width);\n }\n const addingSpaces = (0, utils_1.distributeUnevenly)(width, spaceSequenceCount);\n if (Math.max(...addingSpaces) > 3) {\n return alignLeft(subject, width);\n }\n let spaceSequenceIndex = 0;\n return subject.replace(/\\s+/g, (groupSpace) => {\n return groupSpace + ' '.repeat(addingSpaces[spaceSequenceIndex++]);\n });\n};\n/**\n * Pads a string to the left and/or right to position the subject\n * text in a desired alignment within a container.\n */\nconst alignString = (subject, containerWidth, alignment) => {\n const subjectWidth = (0, string_width_1.default)(subject);\n if (subjectWidth === containerWidth) {\n return subject;\n }\n if (subjectWidth > containerWidth) {\n throw new Error('Subject parameter value width cannot be greater than the container width.');\n }\n if (subjectWidth === 0) {\n return ' '.repeat(containerWidth);\n }\n const availableWidth = containerWidth - subjectWidth;\n if (alignment === 'left') {\n return alignLeft(subject, availableWidth);\n }\n if (alignment === 'right') {\n return alignRight(subject, availableWidth);\n }\n if (alignment === 'justify') {\n return alignJustify(subject, availableWidth);\n }\n return alignCenter(subject, availableWidth);\n};\nexports.alignString = alignString;\n//# sourceMappingURL=alignString.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.alignTableData = void 0;\nconst alignString_1 = require(\"./alignString\");\nconst alignTableData = (rows, config) => {\n return rows.map((row, rowIndex) => {\n return row.map((cell, cellIndex) => {\n var _a;\n const { width, alignment } = config.columns[cellIndex];\n const containingRange = (_a = config.spanningCellManager) === null || _a === void 0 ? void 0 : _a.getContainingRange({ col: cellIndex,\n row: rowIndex }, { mapped: true });\n if (containingRange) {\n return cell;\n }\n return (0, alignString_1.alignString)(cell, width, alignment);\n });\n });\n};\nexports.alignTableData = alignTableData;\n//# sourceMappingURL=alignTableData.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.calculateCellHeight = void 0;\nconst wrapCell_1 = require(\"./wrapCell\");\n/**\n * Calculates height of cell content in regard to its width and word wrapping.\n */\nconst calculateCellHeight = (value, columnWidth, useWrapWord = false) => {\n return (0, wrapCell_1.wrapCell)(value, columnWidth, useWrapWord).length;\n};\nexports.calculateCellHeight = calculateCellHeight;\n//# sourceMappingURL=calculateCellHeight.js.map","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.calculateMaximumColumnWidths = exports.calculateMaximumCellWidth = void 0;\nconst string_width_1 = __importDefault(require(\"string-width\"));\nconst utils_1 = require(\"./utils\");\nconst calculateMaximumCellWidth = (cell) => {\n return Math.max(...cell.split('\\n').map(string_width_1.default));\n};\nexports.calculateMaximumCellWidth = calculateMaximumCellWidth;\n/**\n * Produces an array of values that describe the largest value length (width) in every column.\n */\nconst calculateMaximumColumnWidths = (rows, spanningCellConfigs = []) => {\n const columnWidths = new Array(rows[0].length).fill(0);\n const rangeCoordinates = spanningCellConfigs.map(utils_1.calculateRangeCoordinate);\n const isSpanningCell = (rowIndex, columnIndex) => {\n return rangeCoordinates.some((rangeCoordinate) => {\n return (0, utils_1.isCellInRange)({ col: columnIndex,\n row: rowIndex }, rangeCoordinate);\n });\n };\n rows.forEach((row, rowIndex) => {\n row.forEach((cell, cellIndex) => {\n if (isSpanningCell(rowIndex, cellIndex)) {\n return;\n }\n columnWidths[cellIndex] = Math.max(columnWidths[cellIndex], (0, exports.calculateMaximumCellWidth)(cell));\n });\n });\n return columnWidths;\n};\nexports.calculateMaximumColumnWidths = calculateMaximumColumnWidths;\n//# sourceMappingURL=calculateMaximumColumnWidths.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.calculateOutputColumnWidths = void 0;\nconst calculateOutputColumnWidths = (config) => {\n return config.columns.map((col) => {\n return col.paddingLeft + col.width + col.paddingRight;\n });\n};\nexports.calculateOutputColumnWidths = calculateOutputColumnWidths;\n//# sourceMappingURL=calculateOutputColumnWidths.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.calculateRowHeights = void 0;\nconst calculateCellHeight_1 = require(\"./calculateCellHeight\");\nconst utils_1 = require(\"./utils\");\n/**\n * Produces an array of values that describe the largest value length (height) in every row.\n */\nconst calculateRowHeights = (rows, config) => {\n const rowHeights = [];\n for (const [rowIndex, row] of rows.entries()) {\n let rowHeight = 1;\n row.forEach((cell, cellIndex) => {\n var _a;\n const containingRange = (_a = config.spanningCellManager) === null || _a === void 0 ? void 0 : _a.getContainingRange({ col: cellIndex,\n row: rowIndex });\n if (!containingRange) {\n const cellHeight = (0, calculateCellHeight_1.calculateCellHeight)(cell, config.columns[cellIndex].width, config.columns[cellIndex].wrapWord);\n rowHeight = Math.max(rowHeight, cellHeight);\n return;\n }\n const { topLeft, bottomRight, height } = containingRange;\n // bottom-most cell of a range needs to contain all remain lines of spanning cells\n if (rowIndex === bottomRight.row) {\n const totalOccupiedSpanningCellHeight = (0, utils_1.sumArray)(rowHeights.slice(topLeft.row));\n const totalHorizontalBorderHeight = bottomRight.row - topLeft.row;\n const totalHiddenHorizontalBorderHeight = (0, utils_1.sequence)(topLeft.row + 1, bottomRight.row).filter((horizontalBorderIndex) => {\n var _a;\n /* istanbul ignore next */\n return !((_a = config.drawHorizontalLine) === null || _a === void 0 ? void 0 : _a.call(config, horizontalBorderIndex, rows.length));\n }).length;\n const cellHeight = height - totalOccupiedSpanningCellHeight - totalHorizontalBorderHeight + totalHiddenHorizontalBorderHeight;\n rowHeight = Math.max(rowHeight, cellHeight);\n }\n // otherwise, just depend on other sibling cell heights in the row\n });\n rowHeights.push(rowHeight);\n }\n return rowHeights;\n};\nexports.calculateRowHeights = calculateRowHeights;\n//# sourceMappingURL=calculateRowHeights.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.calculateSpanningCellWidth = void 0;\nconst utils_1 = require(\"./utils\");\nconst calculateSpanningCellWidth = (rangeConfig, dependencies) => {\n const { columnsConfig, drawVerticalLine } = dependencies;\n const { topLeft, bottomRight } = rangeConfig;\n const totalWidth = (0, utils_1.sumArray)(columnsConfig.slice(topLeft.col, bottomRight.col + 1).map(({ width }) => {\n return width;\n }));\n const totalPadding = topLeft.col === bottomRight.col ?\n columnsConfig[topLeft.col].paddingRight +\n columnsConfig[bottomRight.col].paddingLeft :\n (0, utils_1.sumArray)(columnsConfig\n .slice(topLeft.col, bottomRight.col + 1)\n .map(({ paddingLeft, paddingRight }) => {\n return paddingLeft + paddingRight;\n }));\n const totalBorderWidths = bottomRight.col - topLeft.col;\n const totalHiddenVerticalBorders = (0, utils_1.sequence)(topLeft.col + 1, bottomRight.col).filter((verticalBorderIndex) => {\n return !drawVerticalLine(verticalBorderIndex, columnsConfig.length);\n }).length;\n return totalWidth + totalPadding + totalBorderWidths - totalHiddenVerticalBorders;\n};\nexports.calculateSpanningCellWidth = calculateSpanningCellWidth;\n//# sourceMappingURL=calculateSpanningCellWidth.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.createStream = void 0;\nconst alignTableData_1 = require(\"./alignTableData\");\nconst calculateRowHeights_1 = require(\"./calculateRowHeights\");\nconst drawBorder_1 = require(\"./drawBorder\");\nconst drawRow_1 = require(\"./drawRow\");\nconst makeStreamConfig_1 = require(\"./makeStreamConfig\");\nconst mapDataUsingRowHeights_1 = require(\"./mapDataUsingRowHeights\");\nconst padTableData_1 = require(\"./padTableData\");\nconst stringifyTableData_1 = require(\"./stringifyTableData\");\nconst truncateTableData_1 = require(\"./truncateTableData\");\nconst utils_1 = require(\"./utils\");\nconst prepareData = (data, config) => {\n let rows = (0, stringifyTableData_1.stringifyTableData)(data);\n rows = (0, truncateTableData_1.truncateTableData)(rows, (0, utils_1.extractTruncates)(config));\n const rowHeights = (0, calculateRowHeights_1.calculateRowHeights)(rows, config);\n rows = (0, mapDataUsingRowHeights_1.mapDataUsingRowHeights)(rows, rowHeights, config);\n rows = (0, alignTableData_1.alignTableData)(rows, config);\n rows = (0, padTableData_1.padTableData)(rows, config);\n return rows;\n};\nconst create = (row, columnWidths, config) => {\n const rows = prepareData([row], config);\n const body = rows.map((literalRow) => {\n return (0, drawRow_1.drawRow)(literalRow, config);\n }).join('');\n let output;\n output = '';\n output += (0, drawBorder_1.drawBorderTop)(columnWidths, config);\n output += body;\n output += (0, drawBorder_1.drawBorderBottom)(columnWidths, config);\n output = output.trimEnd();\n process.stdout.write(output);\n};\nconst append = (row, columnWidths, config) => {\n const rows = prepareData([row], config);\n const body = rows.map((literalRow) => {\n return (0, drawRow_1.drawRow)(literalRow, config);\n }).join('');\n let output = '';\n const bottom = (0, drawBorder_1.drawBorderBottom)(columnWidths, config);\n if (bottom !== '\\n') {\n output = '\\r\\u001B[K';\n }\n output += (0, drawBorder_1.drawBorderJoin)(columnWidths, config);\n output += body;\n output += bottom;\n output = output.trimEnd();\n process.stdout.write(output);\n};\nconst createStream = (userConfig) => {\n const config = (0, makeStreamConfig_1.makeStreamConfig)(userConfig);\n const columnWidths = Object.values(config.columns).map((column) => {\n return column.width + column.paddingLeft + column.paddingRight;\n });\n let empty = true;\n return {\n write: (row) => {\n if (row.length !== config.columnCount) {\n throw new Error('Row cell count does not match the config.columnCount.');\n }\n if (empty) {\n empty = false;\n create(row, columnWidths, config);\n }\n else {\n append(row, columnWidths, config);\n }\n },\n };\n};\nexports.createStream = createStream;\n//# sourceMappingURL=createStream.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.createTableBorderGetter = exports.drawBorderBottom = exports.drawBorderJoin = exports.drawBorderTop = exports.drawBorder = exports.createSeparatorGetter = exports.drawBorderSegments = void 0;\nconst drawContent_1 = require(\"./drawContent\");\nconst drawBorderSegments = (columnWidths, parameters) => {\n const { separator, horizontalBorderIndex, spanningCellManager } = parameters;\n return columnWidths.map((columnWidth, columnIndex) => {\n const normalSegment = separator.body.repeat(columnWidth);\n if (horizontalBorderIndex === undefined) {\n return normalSegment;\n }\n /* istanbul ignore next */\n const range = spanningCellManager === null || spanningCellManager === void 0 ? void 0 : spanningCellManager.getContainingRange({ col: columnIndex,\n row: horizontalBorderIndex });\n if (!range) {\n return normalSegment;\n }\n const { topLeft } = range;\n // draw border segments as usual for top border of spanning cell\n if (horizontalBorderIndex === topLeft.row) {\n return normalSegment;\n }\n // if for first column/row of spanning cell, just skip\n if (columnIndex !== topLeft.col) {\n return '';\n }\n return range.extractBorderContent(horizontalBorderIndex);\n });\n};\nexports.drawBorderSegments = drawBorderSegments;\nconst createSeparatorGetter = (dependencies) => {\n const { separator, spanningCellManager, horizontalBorderIndex, rowCount } = dependencies;\n // eslint-disable-next-line complexity\n return (verticalBorderIndex, columnCount) => {\n const inSameRange = spanningCellManager === null || spanningCellManager === void 0 ? void 0 : spanningCellManager.inSameRange;\n if (horizontalBorderIndex !== undefined && inSameRange) {\n const topCell = { col: verticalBorderIndex,\n row: horizontalBorderIndex - 1 };\n const leftCell = { col: verticalBorderIndex - 1,\n row: horizontalBorderIndex };\n const oppositeCell = { col: verticalBorderIndex - 1,\n row: horizontalBorderIndex - 1 };\n const currentCell = { col: verticalBorderIndex,\n row: horizontalBorderIndex };\n const pairs = [\n [oppositeCell, topCell],\n [topCell, currentCell],\n [currentCell, leftCell],\n [leftCell, oppositeCell],\n ];\n // left side of horizontal border\n if (verticalBorderIndex === 0) {\n if (inSameRange(currentCell, topCell) && separator.bodyJoinOuter) {\n return separator.bodyJoinOuter;\n }\n return separator.left;\n }\n // right side of horizontal border\n if (verticalBorderIndex === columnCount) {\n if (inSameRange(oppositeCell, leftCell) && separator.bodyJoinOuter) {\n return separator.bodyJoinOuter;\n }\n return separator.right;\n }\n // top horizontal border\n if (horizontalBorderIndex === 0) {\n if (inSameRange(currentCell, leftCell)) {\n return separator.body;\n }\n return separator.join;\n }\n // bottom horizontal border\n if (horizontalBorderIndex === rowCount) {\n if (inSameRange(topCell, oppositeCell)) {\n return separator.body;\n }\n return separator.join;\n }\n const sameRangeCount = pairs.map((pair) => {\n return inSameRange(...pair);\n }).filter(Boolean).length;\n // four cells are belongs to different spanning cells\n if (sameRangeCount === 0) {\n return separator.join;\n }\n // belong to one spanning cell\n if (sameRangeCount === 4) {\n return '';\n }\n // belongs to two spanning cell\n if (sameRangeCount === 2) {\n if (inSameRange(...pairs[1]) && inSameRange(...pairs[3]) && separator.bodyJoinInner) {\n return separator.bodyJoinInner;\n }\n return separator.body;\n }\n /* istanbul ignore next */\n if (sameRangeCount === 1) {\n if (!separator.joinRight || !separator.joinLeft || !separator.joinUp || !separator.joinDown) {\n throw new Error(`Can not get border separator for position [${horizontalBorderIndex}, ${verticalBorderIndex}]`);\n }\n if (inSameRange(...pairs[0])) {\n return separator.joinDown;\n }\n if (inSameRange(...pairs[1])) {\n return separator.joinLeft;\n }\n if (inSameRange(...pairs[2])) {\n return separator.joinUp;\n }\n return separator.joinRight;\n }\n /* istanbul ignore next */\n throw new Error('Invalid case');\n }\n if (verticalBorderIndex === 0) {\n return separator.left;\n }\n if (verticalBorderIndex === columnCount) {\n return separator.right;\n }\n return separator.join;\n };\n};\nexports.createSeparatorGetter = createSeparatorGetter;\nconst drawBorder = (columnWidths, parameters) => {\n const borderSegments = (0, exports.drawBorderSegments)(columnWidths, parameters);\n const { drawVerticalLine, horizontalBorderIndex, spanningCellManager } = parameters;\n return (0, drawContent_1.drawContent)({\n contents: borderSegments,\n drawSeparator: drawVerticalLine,\n elementType: 'border',\n rowIndex: horizontalBorderIndex,\n separatorGetter: (0, exports.createSeparatorGetter)(parameters),\n spanningCellManager,\n }) + '\\n';\n};\nexports.drawBorder = drawBorder;\nconst drawBorderTop = (columnWidths, parameters) => {\n const { border } = parameters;\n const result = (0, exports.drawBorder)(columnWidths, {\n ...parameters,\n separator: {\n body: border.topBody,\n join: border.topJoin,\n left: border.topLeft,\n right: border.topRight,\n },\n });\n if (result === '\\n') {\n return '';\n }\n return result;\n};\nexports.drawBorderTop = drawBorderTop;\nconst drawBorderJoin = (columnWidths, parameters) => {\n const { border } = parameters;\n return (0, exports.drawBorder)(columnWidths, {\n ...parameters,\n separator: {\n body: border.joinBody,\n bodyJoinInner: border.bodyJoin,\n bodyJoinOuter: border.bodyLeft,\n join: border.joinJoin,\n joinDown: border.joinMiddleDown,\n joinLeft: border.joinMiddleLeft,\n joinRight: border.joinMiddleRight,\n joinUp: border.joinMiddleUp,\n left: border.joinLeft,\n right: border.joinRight,\n },\n });\n};\nexports.drawBorderJoin = drawBorderJoin;\nconst drawBorderBottom = (columnWidths, parameters) => {\n const { border } = parameters;\n return (0, exports.drawBorder)(columnWidths, {\n ...parameters,\n separator: {\n body: border.bottomBody,\n join: border.bottomJoin,\n left: border.bottomLeft,\n right: border.bottomRight,\n },\n });\n};\nexports.drawBorderBottom = drawBorderBottom;\nconst createTableBorderGetter = (columnWidths, parameters) => {\n return (index, size) => {\n const drawBorderParameters = { ...parameters,\n horizontalBorderIndex: index };\n if (index === 0) {\n return (0, exports.drawBorderTop)(columnWidths, drawBorderParameters);\n }\n else if (index === size) {\n return (0, exports.drawBorderBottom)(columnWidths, drawBorderParameters);\n }\n return (0, exports.drawBorderJoin)(columnWidths, drawBorderParameters);\n };\n};\nexports.createTableBorderGetter = createTableBorderGetter;\n//# sourceMappingURL=drawBorder.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.drawContent = void 0;\nconst drawContent = (parameters) => {\n const { contents, separatorGetter, drawSeparator, spanningCellManager, rowIndex, elementType } = parameters;\n const contentSize = contents.length;\n const result = [];\n if (drawSeparator(0, contentSize)) {\n result.push(separatorGetter(0, contentSize));\n }\n contents.forEach((content, contentIndex) => {\n if (!elementType || elementType === 'border' || elementType === 'row') {\n result.push(content);\n }\n if (elementType === 'cell' && rowIndex === undefined) {\n result.push(content);\n }\n if (elementType === 'cell' && rowIndex !== undefined) {\n /* istanbul ignore next */\n const containingRange = spanningCellManager === null || spanningCellManager === void 0 ? void 0 : spanningCellManager.getContainingRange({ col: contentIndex,\n row: rowIndex });\n // when drawing content row, just add a cell when it is a normal cell\n // or belongs to first column of spanning cell\n if (!containingRange || contentIndex === containingRange.topLeft.col) {\n result.push(content);\n }\n }\n // Only append the middle separator if the content is not the last\n if (contentIndex + 1 < contentSize && drawSeparator(contentIndex + 1, contentSize)) {\n const separator = separatorGetter(contentIndex + 1, contentSize);\n if (elementType === 'cell' && rowIndex !== undefined) {\n const currentCell = { col: contentIndex + 1,\n row: rowIndex };\n /* istanbul ignore next */\n const containingRange = spanningCellManager === null || spanningCellManager === void 0 ? void 0 : spanningCellManager.getContainingRange(currentCell);\n if (!containingRange || containingRange.topLeft.col === currentCell.col) {\n result.push(separator);\n }\n }\n else {\n result.push(separator);\n }\n }\n });\n if (drawSeparator(contentSize, contentSize)) {\n result.push(separatorGetter(contentSize, contentSize));\n }\n return result.join('');\n};\nexports.drawContent = drawContent;\n//# sourceMappingURL=drawContent.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.drawRow = void 0;\nconst drawContent_1 = require(\"./drawContent\");\nconst drawRow = (row, config) => {\n const { border, drawVerticalLine, rowIndex, spanningCellManager } = config;\n return (0, drawContent_1.drawContent)({\n contents: row,\n drawSeparator: drawVerticalLine,\n elementType: 'cell',\n rowIndex,\n separatorGetter: (index, columnCount) => {\n if (index === 0) {\n return border.bodyLeft;\n }\n if (index === columnCount) {\n return border.bodyRight;\n }\n return border.bodyJoin;\n },\n spanningCellManager,\n }) + '\\n';\n};\nexports.drawRow = drawRow;\n//# sourceMappingURL=drawRow.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.drawTable = void 0;\nconst drawBorder_1 = require(\"./drawBorder\");\nconst drawContent_1 = require(\"./drawContent\");\nconst drawRow_1 = require(\"./drawRow\");\nconst utils_1 = require(\"./utils\");\nconst drawTable = (rows, outputColumnWidths, rowHeights, config) => {\n const { drawHorizontalLine, singleLine, } = config;\n const contents = (0, utils_1.groupBySizes)(rows, rowHeights).map((group, groupIndex) => {\n return group.map((row) => {\n return (0, drawRow_1.drawRow)(row, { ...config,\n rowIndex: groupIndex });\n }).join('');\n });\n return (0, drawContent_1.drawContent)({ contents,\n drawSeparator: (index, size) => {\n // Top/bottom border\n if (index === 0 || index === size) {\n return drawHorizontalLine(index, size);\n }\n return !singleLine && drawHorizontalLine(index, size);\n },\n elementType: 'row',\n rowIndex: -1,\n separatorGetter: (0, drawBorder_1.createTableBorderGetter)(outputColumnWidths, { ...config,\n rowCount: contents.length }),\n spanningCellManager: config.spanningCellManager });\n};\nexports.drawTable = drawTable;\n//# sourceMappingURL=drawTable.js.map","\"use strict\";\nexports[\"config.json\"] = validate43;\nconst schema13 = {\n \"$id\": \"config.json\",\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"type\": \"object\",\n \"properties\": {\n \"border\": {\n \"$ref\": \"shared.json#/definitions/borders\"\n },\n \"header\": {\n \"type\": \"object\",\n \"properties\": {\n \"content\": {\n \"type\": \"string\"\n },\n \"alignment\": {\n \"$ref\": \"shared.json#/definitions/alignment\"\n },\n \"wrapWord\": {\n \"type\": \"boolean\"\n },\n \"truncate\": {\n \"type\": \"integer\"\n },\n \"paddingLeft\": {\n \"type\": \"integer\"\n },\n \"paddingRight\": {\n \"type\": \"integer\"\n }\n },\n \"required\": [\"content\"],\n \"additionalProperties\": false\n },\n \"columns\": {\n \"$ref\": \"shared.json#/definitions/columns\"\n },\n \"columnDefault\": {\n \"$ref\": \"shared.json#/definitions/column\"\n },\n \"drawVerticalLine\": {\n \"typeof\": \"function\"\n },\n \"drawHorizontalLine\": {\n \"typeof\": \"function\"\n },\n \"singleLine\": {\n \"typeof\": \"boolean\"\n },\n \"spanningCells\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"col\": {\n \"type\": \"integer\",\n \"minimum\": 0\n },\n \"row\": {\n \"type\": \"integer\",\n \"minimum\": 0\n },\n \"colSpan\": {\n \"type\": \"integer\",\n \"minimum\": 1\n },\n \"rowSpan\": {\n \"type\": \"integer\",\n \"minimum\": 1\n },\n \"alignment\": {\n \"$ref\": \"shared.json#/definitions/alignment\"\n },\n \"verticalAlignment\": {\n \"$ref\": \"shared.json#/definitions/verticalAlignment\"\n },\n \"wrapWord\": {\n \"type\": \"boolean\"\n },\n \"truncate\": {\n \"type\": \"integer\"\n },\n \"paddingLeft\": {\n \"type\": \"integer\"\n },\n \"paddingRight\": {\n \"type\": \"integer\"\n }\n },\n \"required\": [\"row\", \"col\"],\n \"additionalProperties\": false\n }\n }\n },\n \"additionalProperties\": false\n};\nconst schema15 = {\n \"type\": \"object\",\n \"properties\": {\n \"topBody\": {\n \"$ref\": \"#/definitions/border\"\n },\n \"topJoin\": {\n \"$ref\": \"#/definitions/border\"\n },\n \"topLeft\": {\n \"$ref\": \"#/definitions/border\"\n },\n \"topRight\": {\n \"$ref\": \"#/definitions/border\"\n },\n \"bottomBody\": {\n \"$ref\": \"#/definitions/border\"\n },\n \"bottomJoin\": {\n \"$ref\": \"#/definitions/border\"\n },\n \"bottomLeft\": {\n \"$ref\": \"#/definitions/border\"\n },\n \"bottomRight\": {\n \"$ref\": \"#/definitions/border\"\n },\n \"bodyLeft\": {\n \"$ref\": \"#/definitions/border\"\n },\n \"bodyRight\": {\n \"$ref\": \"#/definitions/border\"\n },\n \"bodyJoin\": {\n \"$ref\": \"#/definitions/border\"\n },\n \"headerJoin\": {\n \"$ref\": \"#/definitions/border\"\n },\n \"joinBody\": {\n \"$ref\": \"#/definitions/border\"\n },\n \"joinLeft\": {\n \"$ref\": \"#/definitions/border\"\n },\n \"joinRight\": {\n \"$ref\": \"#/definitions/border\"\n },\n \"joinJoin\": {\n \"$ref\": \"#/definitions/border\"\n },\n \"joinMiddleUp\": {\n \"$ref\": \"#/definitions/border\"\n },\n \"joinMiddleDown\": {\n \"$ref\": \"#/definitions/border\"\n },\n \"joinMiddleLeft\": {\n \"$ref\": \"#/definitions/border\"\n },\n \"joinMiddleRight\": {\n \"$ref\": \"#/definitions/border\"\n }\n },\n \"additionalProperties\": false\n};\nconst func8 = Object.prototype.hasOwnProperty;\nconst schema16 = {\n \"type\": \"string\"\n};\nfunction validate46(data, { instancePath = \"\", parentData, parentDataProperty, rootData = data } = {}) {\n let vErrors = null;\n let errors = 0;\n if (typeof data !== \"string\") {\n const err0 = {\n instancePath,\n schemaPath: \"#/type\",\n keyword: \"type\",\n params: {\n type: \"string\"\n },\n message: \"must be string\"\n };\n if (vErrors === null) {\n vErrors = [err0];\n }\n else {\n vErrors.push(err0);\n }\n errors++;\n }\n validate46.errors = vErrors;\n return errors === 0;\n}\nfunction validate45(data, { instancePath = \"\", parentData, parentDataProperty, rootData = data } = {}) {\n let vErrors = null;\n let errors = 0;\n if (data && typeof data == \"object\" && !Array.isArray(data)) {\n for (const key0 in data) {\n if (!(func8.call(schema15.properties, key0))) {\n const err0 = {\n instancePath,\n schemaPath: \"#/additionalProperties\",\n keyword: \"additionalProperties\",\n params: {\n additionalProperty: key0\n },\n message: \"must NOT have additional properties\"\n };\n if (vErrors === null) {\n vErrors = [err0];\n }\n else {\n vErrors.push(err0);\n }\n errors++;\n }\n }\n if (data.topBody !== undefined) {\n if (!(validate46(data.topBody, {\n instancePath: instancePath + \"/topBody\",\n parentData: data,\n parentDataProperty: \"topBody\",\n rootData\n }))) {\n vErrors = vErrors === null ? validate46.errors : vErrors.concat(validate46.errors);\n errors = vErrors.length;\n }\n }\n if (data.topJoin !== undefined) {\n if (!(validate46(data.topJoin, {\n instancePath: instancePath + \"/topJoin\",\n parentData: data,\n parentDataProperty: \"topJoin\",\n rootData\n }))) {\n vErrors = vErrors === null ? validate46.errors : vErrors.concat(validate46.errors);\n errors = vErrors.length;\n }\n }\n if (data.topLeft !== undefined) {\n if (!(validate46(data.topLeft, {\n instancePath: instancePath + \"/topLeft\",\n parentData: data,\n parentDataProperty: \"topLeft\",\n rootData\n }))) {\n vErrors = vErrors === null ? validate46.errors : vErrors.concat(validate46.errors);\n errors = vErrors.length;\n }\n }\n if (data.topRight !== undefined) {\n if (!(validate46(data.topRight, {\n instancePath: instancePath + \"/topRight\",\n parentData: data,\n parentDataProperty: \"topRight\",\n rootData\n }))) {\n vErrors = vErrors === null ? validate46.errors : vErrors.concat(validate46.errors);\n errors = vErrors.length;\n }\n }\n if (data.bottomBody !== undefined) {\n if (!(validate46(data.bottomBody, {\n instancePath: instancePath + \"/bottomBody\",\n parentData: data,\n parentDataProperty: \"bottomBody\",\n rootData\n }))) {\n vErrors = vErrors === null ? validate46.errors : vErrors.concat(validate46.errors);\n errors = vErrors.length;\n }\n }\n if (data.bottomJoin !== undefined) {\n if (!(validate46(data.bottomJoin, {\n instancePath: instancePath + \"/bottomJoin\",\n parentData: data,\n parentDataProperty: \"bottomJoin\",\n rootData\n }))) {\n vErrors = vErrors === null ? validate46.errors : vErrors.concat(validate46.errors);\n errors = vErrors.length;\n }\n }\n if (data.bottomLeft !== undefined) {\n if (!(validate46(data.bottomLeft, {\n instancePath: instancePath + \"/bottomLeft\",\n parentData: data,\n parentDataProperty: \"bottomLeft\",\n rootData\n }))) {\n vErrors = vErrors === null ? validate46.errors : vErrors.concat(validate46.errors);\n errors = vErrors.length;\n }\n }\n if (data.bottomRight !== undefined) {\n if (!(validate46(data.bottomRight, {\n instancePath: instancePath + \"/bottomRight\",\n parentData: data,\n parentDataProperty: \"bottomRight\",\n rootData\n }))) {\n vErrors = vErrors === null ? validate46.errors : vErrors.concat(validate46.errors);\n errors = vErrors.length;\n }\n }\n if (data.bodyLeft !== undefined) {\n if (!(validate46(data.bodyLeft, {\n instancePath: instancePath + \"/bodyLeft\",\n parentData: data,\n parentDataProperty: \"bodyLeft\",\n rootData\n }))) {\n vErrors = vErrors === null ? validate46.errors : vErrors.concat(validate46.errors);\n errors = vErrors.length;\n }\n }\n if (data.bodyRight !== undefined) {\n if (!(validate46(data.bodyRight, {\n instancePath: instancePath + \"/bodyRight\",\n parentData: data,\n parentDataProperty: \"bodyRight\",\n rootData\n }))) {\n vErrors = vErrors === null ? validate46.errors : vErrors.concat(validate46.errors);\n errors = vErrors.length;\n }\n }\n if (data.bodyJoin !== undefined) {\n if (!(validate46(data.bodyJoin, {\n instancePath: instancePath + \"/bodyJoin\",\n parentData: data,\n parentDataProperty: \"bodyJoin\",\n rootData\n }))) {\n vErrors = vErrors === null ? validate46.errors : vErrors.concat(validate46.errors);\n errors = vErrors.length;\n }\n }\n if (data.headerJoin !== undefined) {\n if (!(validate46(data.headerJoin, {\n instancePath: instancePath + \"/headerJoin\",\n parentData: data,\n parentDataProperty: \"headerJoin\",\n rootData\n }))) {\n vErrors = vErrors === null ? validate46.errors : vErrors.concat(validate46.errors);\n errors = vErrors.length;\n }\n }\n if (data.joinBody !== undefined) {\n if (!(validate46(data.joinBody, {\n instancePath: instancePath + \"/joinBody\",\n parentData: data,\n parentDataProperty: \"joinBody\",\n rootData\n }))) {\n vErrors = vErrors === null ? validate46.errors : vErrors.concat(validate46.errors);\n errors = vErrors.length;\n }\n }\n if (data.joinLeft !== undefined) {\n if (!(validate46(data.joinLeft, {\n instancePath: instancePath + \"/joinLeft\",\n parentData: data,\n parentDataProperty: \"joinLeft\",\n rootData\n }))) {\n vErrors = vErrors === null ? validate46.errors : vErrors.concat(validate46.errors);\n errors = vErrors.length;\n }\n }\n if (data.joinRight !== undefined) {\n if (!(validate46(data.joinRight, {\n instancePath: instancePath + \"/joinRight\",\n parentData: data,\n parentDataProperty: \"joinRight\",\n rootData\n }))) {\n vErrors = vErrors === null ? validate46.errors : vErrors.concat(validate46.errors);\n errors = vErrors.length;\n }\n }\n if (data.joinJoin !== undefined) {\n if (!(validate46(data.joinJoin, {\n instancePath: instancePath + \"/joinJoin\",\n parentData: data,\n parentDataProperty: \"joinJoin\",\n rootData\n }))) {\n vErrors = vErrors === null ? validate46.errors : vErrors.concat(validate46.errors);\n errors = vErrors.length;\n }\n }\n if (data.joinMiddleUp !== undefined) {\n if (!(validate46(data.joinMiddleUp, {\n instancePath: instancePath + \"/joinMiddleUp\",\n parentData: data,\n parentDataProperty: \"joinMiddleUp\",\n rootData\n }))) {\n vErrors = vErrors === null ? validate46.errors : vErrors.concat(validate46.errors);\n errors = vErrors.length;\n }\n }\n if (data.joinMiddleDown !== undefined) {\n if (!(validate46(data.joinMiddleDown, {\n instancePath: instancePath + \"/joinMiddleDown\",\n parentData: data,\n parentDataProperty: \"joinMiddleDown\",\n rootData\n }))) {\n vErrors = vErrors === null ? validate46.errors : vErrors.concat(validate46.errors);\n errors = vErrors.length;\n }\n }\n if (data.joinMiddleLeft !== undefined) {\n if (!(validate46(data.joinMiddleLeft, {\n instancePath: instancePath + \"/joinMiddleLeft\",\n parentData: data,\n parentDataProperty: \"joinMiddleLeft\",\n rootData\n }))) {\n vErrors = vErrors === null ? validate46.errors : vErrors.concat(validate46.errors);\n errors = vErrors.length;\n }\n }\n if (data.joinMiddleRight !== undefined) {\n if (!(validate46(data.joinMiddleRight, {\n instancePath: instancePath + \"/joinMiddleRight\",\n parentData: data,\n parentDataProperty: \"joinMiddleRight\",\n rootData\n }))) {\n vErrors = vErrors === null ? validate46.errors : vErrors.concat(validate46.errors);\n errors = vErrors.length;\n }\n }\n }\n else {\n const err1 = {\n instancePath,\n schemaPath: \"#/type\",\n keyword: \"type\",\n params: {\n type: \"object\"\n },\n message: \"must be object\"\n };\n if (vErrors === null) {\n vErrors = [err1];\n }\n else {\n vErrors.push(err1);\n }\n errors++;\n }\n validate45.errors = vErrors;\n return errors === 0;\n}\nconst schema17 = {\n \"type\": \"string\",\n \"enum\": [\"left\", \"right\", \"center\", \"justify\"]\n};\nconst func0 = require(\"ajv/dist/runtime/equal\").default;\nfunction validate68(data, { instancePath = \"\", parentData, parentDataProperty, rootData = data } = {}) {\n let vErrors = null;\n let errors = 0;\n if (typeof data !== \"string\") {\n const err0 = {\n instancePath,\n schemaPath: \"#/type\",\n keyword: \"type\",\n params: {\n type: \"string\"\n },\n message: \"must be string\"\n };\n if (vErrors === null) {\n vErrors = [err0];\n }\n else {\n vErrors.push(err0);\n }\n errors++;\n }\n if (!((((data === \"left\") || (data === \"right\")) || (data === \"center\")) || (data === \"justify\"))) {\n const err1 = {\n instancePath,\n schemaPath: \"#/enum\",\n keyword: \"enum\",\n params: {\n allowedValues: schema17.enum\n },\n message: \"must be equal to one of the allowed values\"\n };\n if (vErrors === null) {\n vErrors = [err1];\n }\n else {\n vErrors.push(err1);\n }\n errors++;\n }\n validate68.errors = vErrors;\n return errors === 0;\n}\nconst schema18 = {\n \"oneOf\": [{\n \"type\": \"object\",\n \"patternProperties\": {\n \"^[0-9]+$\": {\n \"$ref\": \"#/definitions/column\"\n }\n },\n \"additionalProperties\": false\n }, {\n \"type\": \"array\",\n \"items\": {\n \"$ref\": \"#/definitions/column\"\n }\n }]\n};\nconst pattern0 = new RegExp(\"^[0-9]+$\", \"u\");\nconst schema19 = {\n \"type\": \"object\",\n \"properties\": {\n \"alignment\": {\n \"$ref\": \"#/definitions/alignment\"\n },\n \"verticalAlignment\": {\n \"$ref\": \"#/definitions/verticalAlignment\"\n },\n \"width\": {\n \"type\": \"integer\",\n \"minimum\": 1\n },\n \"wrapWord\": {\n \"type\": \"boolean\"\n },\n \"truncate\": {\n \"type\": \"integer\"\n },\n \"paddingLeft\": {\n \"type\": \"integer\"\n },\n \"paddingRight\": {\n \"type\": \"integer\"\n }\n },\n \"additionalProperties\": false\n};\nfunction validate72(data, { instancePath = \"\", parentData, parentDataProperty, rootData = data } = {}) {\n let vErrors = null;\n let errors = 0;\n if (typeof data !== \"string\") {\n const err0 = {\n instancePath,\n schemaPath: \"#/type\",\n keyword: \"type\",\n params: {\n type: \"string\"\n },\n message: \"must be string\"\n };\n if (vErrors === null) {\n vErrors = [err0];\n }\n else {\n vErrors.push(err0);\n }\n errors++;\n }\n if (!((((data === \"left\") || (data === \"right\")) || (data === \"center\")) || (data === \"justify\"))) {\n const err1 = {\n instancePath,\n schemaPath: \"#/enum\",\n keyword: \"enum\",\n params: {\n allowedValues: schema17.enum\n },\n message: \"must be equal to one of the allowed values\"\n };\n if (vErrors === null) {\n vErrors = [err1];\n }\n else {\n vErrors.push(err1);\n }\n errors++;\n }\n validate72.errors = vErrors;\n return errors === 0;\n}\nconst schema21 = {\n \"type\": \"string\",\n \"enum\": [\"top\", \"middle\", \"bottom\"]\n};\nfunction validate74(data, { instancePath = \"\", parentData, parentDataProperty, rootData = data } = {}) {\n let vErrors = null;\n let errors = 0;\n if (typeof data !== \"string\") {\n const err0 = {\n instancePath,\n schemaPath: \"#/type\",\n keyword: \"type\",\n params: {\n type: \"string\"\n },\n message: \"must be string\"\n };\n if (vErrors === null) {\n vErrors = [err0];\n }\n else {\n vErrors.push(err0);\n }\n errors++;\n }\n if (!(((data === \"top\") || (data === \"middle\")) || (data === \"bottom\"))) {\n const err1 = {\n instancePath,\n schemaPath: \"#/enum\",\n keyword: \"enum\",\n params: {\n allowedValues: schema21.enum\n },\n message: \"must be equal to one of the allowed values\"\n };\n if (vErrors === null) {\n vErrors = [err1];\n }\n else {\n vErrors.push(err1);\n }\n errors++;\n }\n validate74.errors = vErrors;\n return errors === 0;\n}\nfunction validate71(data, { instancePath = \"\", parentData, parentDataProperty, rootData = data } = {}) {\n let vErrors = null;\n let errors = 0;\n if (data && typeof data == \"object\" && !Array.isArray(data)) {\n for (const key0 in data) {\n if (!(((((((key0 === \"alignment\") || (key0 === \"verticalAlignment\")) || (key0 === \"width\")) || (key0 === \"wrapWord\")) || (key0 === \"truncate\")) || (key0 === \"paddingLeft\")) || (key0 === \"paddingRight\"))) {\n const err0 = {\n instancePath,\n schemaPath: \"#/additionalProperties\",\n keyword: \"additionalProperties\",\n params: {\n additionalProperty: key0\n },\n message: \"must NOT have additional properties\"\n };\n if (vErrors === null) {\n vErrors = [err0];\n }\n else {\n vErrors.push(err0);\n }\n errors++;\n }\n }\n if (data.alignment !== undefined) {\n if (!(validate72(data.alignment, {\n instancePath: instancePath + \"/alignment\",\n parentData: data,\n parentDataProperty: \"alignment\",\n rootData\n }))) {\n vErrors = vErrors === null ? validate72.errors : vErrors.concat(validate72.errors);\n errors = vErrors.length;\n }\n }\n if (data.verticalAlignment !== undefined) {\n if (!(validate74(data.verticalAlignment, {\n instancePath: instancePath + \"/verticalAlignment\",\n parentData: data,\n parentDataProperty: \"verticalAlignment\",\n rootData\n }))) {\n vErrors = vErrors === null ? validate74.errors : vErrors.concat(validate74.errors);\n errors = vErrors.length;\n }\n }\n if (data.width !== undefined) {\n let data2 = data.width;\n if (!(((typeof data2 == \"number\") && (!(data2 % 1) && !isNaN(data2))) && (isFinite(data2)))) {\n const err1 = {\n instancePath: instancePath + \"/width\",\n schemaPath: \"#/properties/width/type\",\n keyword: \"type\",\n params: {\n type: \"integer\"\n },\n message: \"must be integer\"\n };\n if (vErrors === null) {\n vErrors = [err1];\n }\n else {\n vErrors.push(err1);\n }\n errors++;\n }\n if ((typeof data2 == \"number\") && (isFinite(data2))) {\n if (data2 < 1 || isNaN(data2)) {\n const err2 = {\n instancePath: instancePath + \"/width\",\n schemaPath: \"#/properties/width/minimum\",\n keyword: \"minimum\",\n params: {\n comparison: \">=\",\n limit: 1\n },\n message: \"must be >= 1\"\n };\n if (vErrors === null) {\n vErrors = [err2];\n }\n else {\n vErrors.push(err2);\n }\n errors++;\n }\n }\n }\n if (data.wrapWord !== undefined) {\n if (typeof data.wrapWord !== \"boolean\") {\n const err3 = {\n instancePath: instancePath + \"/wrapWord\",\n schemaPath: \"#/properties/wrapWord/type\",\n keyword: \"type\",\n params: {\n type: \"boolean\"\n },\n message: \"must be boolean\"\n };\n if (vErrors === null) {\n vErrors = [err3];\n }\n else {\n vErrors.push(err3);\n }\n errors++;\n }\n }\n if (data.truncate !== undefined) {\n let data4 = data.truncate;\n if (!(((typeof data4 == \"number\") && (!(data4 % 1) && !isNaN(data4))) && (isFinite(data4)))) {\n const err4 = {\n instancePath: instancePath + \"/truncate\",\n schemaPath: \"#/properties/truncate/type\",\n keyword: \"type\",\n params: {\n type: \"integer\"\n },\n message: \"must be integer\"\n };\n if (vErrors === null) {\n vErrors = [err4];\n }\n else {\n vErrors.push(err4);\n }\n errors++;\n }\n }\n if (data.paddingLeft !== undefined) {\n let data5 = data.paddingLeft;\n if (!(((typeof data5 == \"number\") && (!(data5 % 1) && !isNaN(data5))) && (isFinite(data5)))) {\n const err5 = {\n instancePath: instancePath + \"/paddingLeft\",\n schemaPath: \"#/properties/paddingLeft/type\",\n keyword: \"type\",\n params: {\n type: \"integer\"\n },\n message: \"must be integer\"\n };\n if (vErrors === null) {\n vErrors = [err5];\n }\n else {\n vErrors.push(err5);\n }\n errors++;\n }\n }\n if (data.paddingRight !== undefined) {\n let data6 = data.paddingRight;\n if (!(((typeof data6 == \"number\") && (!(data6 % 1) && !isNaN(data6))) && (isFinite(data6)))) {\n const err6 = {\n instancePath: instancePath + \"/paddingRight\",\n schemaPath: \"#/properties/paddingRight/type\",\n keyword: \"type\",\n params: {\n type: \"integer\"\n },\n message: \"must be integer\"\n };\n if (vErrors === null) {\n vErrors = [err6];\n }\n else {\n vErrors.push(err6);\n }\n errors++;\n }\n }\n }\n else {\n const err7 = {\n instancePath,\n schemaPath: \"#/type\",\n keyword: \"type\",\n params: {\n type: \"object\"\n },\n message: \"must be object\"\n };\n if (vErrors === null) {\n vErrors = [err7];\n }\n else {\n vErrors.push(err7);\n }\n errors++;\n }\n validate71.errors = vErrors;\n return errors === 0;\n}\nfunction validate70(data, { instancePath = \"\", parentData, parentDataProperty, rootData = data } = {}) {\n let vErrors = null;\n let errors = 0;\n const _errs0 = errors;\n let valid0 = false;\n let passing0 = null;\n const _errs1 = errors;\n if (data && typeof data == \"object\" && !Array.isArray(data)) {\n for (const key0 in data) {\n if (!(pattern0.test(key0))) {\n const err0 = {\n instancePath,\n schemaPath: \"#/oneOf/0/additionalProperties\",\n keyword: \"additionalProperties\",\n params: {\n additionalProperty: key0\n },\n message: \"must NOT have additional properties\"\n };\n if (vErrors === null) {\n vErrors = [err0];\n }\n else {\n vErrors.push(err0);\n }\n errors++;\n }\n }\n for (const key1 in data) {\n if (pattern0.test(key1)) {\n if (!(validate71(data[key1], {\n instancePath: instancePath + \"/\" + key1.replace(/~/g, \"~0\").replace(/\\//g, \"~1\"),\n parentData: data,\n parentDataProperty: key1,\n rootData\n }))) {\n vErrors = vErrors === null ? validate71.errors : vErrors.concat(validate71.errors);\n errors = vErrors.length;\n }\n }\n }\n }\n else {\n const err1 = {\n instancePath,\n schemaPath: \"#/oneOf/0/type\",\n keyword: \"type\",\n params: {\n type: \"object\"\n },\n message: \"must be object\"\n };\n if (vErrors === null) {\n vErrors = [err1];\n }\n else {\n vErrors.push(err1);\n }\n errors++;\n }\n var _valid0 = _errs1 === errors;\n if (_valid0) {\n valid0 = true;\n passing0 = 0;\n }\n const _errs5 = errors;\n if (Array.isArray(data)) {\n const len0 = data.length;\n for (let i0 = 0; i0 < len0; i0++) {\n if (!(validate71(data[i0], {\n instancePath: instancePath + \"/\" + i0,\n parentData: data,\n parentDataProperty: i0,\n rootData\n }))) {\n vErrors = vErrors === null ? validate71.errors : vErrors.concat(validate71.errors);\n errors = vErrors.length;\n }\n }\n }\n else {\n const err2 = {\n instancePath,\n schemaPath: \"#/oneOf/1/type\",\n keyword: \"type\",\n params: {\n type: \"array\"\n },\n message: \"must be array\"\n };\n if (vErrors === null) {\n vErrors = [err2];\n }\n else {\n vErrors.push(err2);\n }\n errors++;\n }\n var _valid0 = _errs5 === errors;\n if (_valid0 && valid0) {\n valid0 = false;\n passing0 = [passing0, 1];\n }\n else {\n if (_valid0) {\n valid0 = true;\n passing0 = 1;\n }\n }\n if (!valid0) {\n const err3 = {\n instancePath,\n schemaPath: \"#/oneOf\",\n keyword: \"oneOf\",\n params: {\n passingSchemas: passing0\n },\n message: \"must match exactly one schema in oneOf\"\n };\n if (vErrors === null) {\n vErrors = [err3];\n }\n else {\n vErrors.push(err3);\n }\n errors++;\n }\n else {\n errors = _errs0;\n if (vErrors !== null) {\n if (_errs0) {\n vErrors.length = _errs0;\n }\n else {\n vErrors = null;\n }\n }\n }\n validate70.errors = vErrors;\n return errors === 0;\n}\nfunction validate79(data, { instancePath = \"\", parentData, parentDataProperty, rootData = data } = {}) {\n let vErrors = null;\n let errors = 0;\n if (data && typeof data == \"object\" && !Array.isArray(data)) {\n for (const key0 in data) {\n if (!(((((((key0 === \"alignment\") || (key0 === \"verticalAlignment\")) || (key0 === \"width\")) || (key0 === \"wrapWord\")) || (key0 === \"truncate\")) || (key0 === \"paddingLeft\")) || (key0 === \"paddingRight\"))) {\n const err0 = {\n instancePath,\n schemaPath: \"#/additionalProperties\",\n keyword: \"additionalProperties\",\n params: {\n additionalProperty: key0\n },\n message: \"must NOT have additional properties\"\n };\n if (vErrors === null) {\n vErrors = [err0];\n }\n else {\n vErrors.push(err0);\n }\n errors++;\n }\n }\n if (data.alignment !== undefined) {\n if (!(validate72(data.alignment, {\n instancePath: instancePath + \"/alignment\",\n parentData: data,\n parentDataProperty: \"alignment\",\n rootData\n }))) {\n vErrors = vErrors === null ? validate72.errors : vErrors.concat(validate72.errors);\n errors = vErrors.length;\n }\n }\n if (data.verticalAlignment !== undefined) {\n if (!(validate74(data.verticalAlignment, {\n instancePath: instancePath + \"/verticalAlignment\",\n parentData: data,\n parentDataProperty: \"verticalAlignment\",\n rootData\n }))) {\n vErrors = vErrors === null ? validate74.errors : vErrors.concat(validate74.errors);\n errors = vErrors.length;\n }\n }\n if (data.width !== undefined) {\n let data2 = data.width;\n if (!(((typeof data2 == \"number\") && (!(data2 % 1) && !isNaN(data2))) && (isFinite(data2)))) {\n const err1 = {\n instancePath: instancePath + \"/width\",\n schemaPath: \"#/properties/width/type\",\n keyword: \"type\",\n params: {\n type: \"integer\"\n },\n message: \"must be integer\"\n };\n if (vErrors === null) {\n vErrors = [err1];\n }\n else {\n vErrors.push(err1);\n }\n errors++;\n }\n if ((typeof data2 == \"number\") && (isFinite(data2))) {\n if (data2 < 1 || isNaN(data2)) {\n const err2 = {\n instancePath: instancePath + \"/width\",\n schemaPath: \"#/properties/width/minimum\",\n keyword: \"minimum\",\n params: {\n comparison: \">=\",\n limit: 1\n },\n message: \"must be >= 1\"\n };\n if (vErrors === null) {\n vErrors = [err2];\n }\n else {\n vErrors.push(err2);\n }\n errors++;\n }\n }\n }\n if (data.wrapWord !== undefined) {\n if (typeof data.wrapWord !== \"boolean\") {\n const err3 = {\n instancePath: instancePath + \"/wrapWord\",\n schemaPath: \"#/properties/wrapWord/type\",\n keyword: \"type\",\n params: {\n type: \"boolean\"\n },\n message: \"must be boolean\"\n };\n if (vErrors === null) {\n vErrors = [err3];\n }\n else {\n vErrors.push(err3);\n }\n errors++;\n }\n }\n if (data.truncate !== undefined) {\n let data4 = data.truncate;\n if (!(((typeof data4 == \"number\") && (!(data4 % 1) && !isNaN(data4))) && (isFinite(data4)))) {\n const err4 = {\n instancePath: instancePath + \"/truncate\",\n schemaPath: \"#/properties/truncate/type\",\n keyword: \"type\",\n params: {\n type: \"integer\"\n },\n message: \"must be integer\"\n };\n if (vErrors === null) {\n vErrors = [err4];\n }\n else {\n vErrors.push(err4);\n }\n errors++;\n }\n }\n if (data.paddingLeft !== undefined) {\n let data5 = data.paddingLeft;\n if (!(((typeof data5 == \"number\") && (!(data5 % 1) && !isNaN(data5))) && (isFinite(data5)))) {\n const err5 = {\n instancePath: instancePath + \"/paddingLeft\",\n schemaPath: \"#/properties/paddingLeft/type\",\n keyword: \"type\",\n params: {\n type: \"integer\"\n },\n message: \"must be integer\"\n };\n if (vErrors === null) {\n vErrors = [err5];\n }\n else {\n vErrors.push(err5);\n }\n errors++;\n }\n }\n if (data.paddingRight !== undefined) {\n let data6 = data.paddingRight;\n if (!(((typeof data6 == \"number\") && (!(data6 % 1) && !isNaN(data6))) && (isFinite(data6)))) {\n const err6 = {\n instancePath: instancePath + \"/paddingRight\",\n schemaPath: \"#/properties/paddingRight/type\",\n keyword: \"type\",\n params: {\n type: \"integer\"\n },\n message: \"must be integer\"\n };\n if (vErrors === null) {\n vErrors = [err6];\n }\n else {\n vErrors.push(err6);\n }\n errors++;\n }\n }\n }\n else {\n const err7 = {\n instancePath,\n schemaPath: \"#/type\",\n keyword: \"type\",\n params: {\n type: \"object\"\n },\n message: \"must be object\"\n };\n if (vErrors === null) {\n vErrors = [err7];\n }\n else {\n vErrors.push(err7);\n }\n errors++;\n }\n validate79.errors = vErrors;\n return errors === 0;\n}\nfunction validate84(data, { instancePath = \"\", parentData, parentDataProperty, rootData = data } = {}) {\n let vErrors = null;\n let errors = 0;\n if (typeof data !== \"string\") {\n const err0 = {\n instancePath,\n schemaPath: \"#/type\",\n keyword: \"type\",\n params: {\n type: \"string\"\n },\n message: \"must be string\"\n };\n if (vErrors === null) {\n vErrors = [err0];\n }\n else {\n vErrors.push(err0);\n }\n errors++;\n }\n if (!(((data === \"top\") || (data === \"middle\")) || (data === \"bottom\"))) {\n const err1 = {\n instancePath,\n schemaPath: \"#/enum\",\n keyword: \"enum\",\n params: {\n allowedValues: schema21.enum\n },\n message: \"must be equal to one of the allowed values\"\n };\n if (vErrors === null) {\n vErrors = [err1];\n }\n else {\n vErrors.push(err1);\n }\n errors++;\n }\n validate84.errors = vErrors;\n return errors === 0;\n}\nfunction validate43(data, { instancePath = \"\", parentData, parentDataProperty, rootData = data } = {}) {\n /*# sourceURL=\"config.json\" */ ;\n let vErrors = null;\n let errors = 0;\n if (data && typeof data == \"object\" && !Array.isArray(data)) {\n for (const key0 in data) {\n if (!((((((((key0 === \"border\") || (key0 === \"header\")) || (key0 === \"columns\")) || (key0 === \"columnDefault\")) || (key0 === \"drawVerticalLine\")) || (key0 === \"drawHorizontalLine\")) || (key0 === \"singleLine\")) || (key0 === \"spanningCells\"))) {\n const err0 = {\n instancePath,\n schemaPath: \"#/additionalProperties\",\n keyword: \"additionalProperties\",\n params: {\n additionalProperty: key0\n },\n message: \"must NOT have additional properties\"\n };\n if (vErrors === null) {\n vErrors = [err0];\n }\n else {\n vErrors.push(err0);\n }\n errors++;\n }\n }\n if (data.border !== undefined) {\n if (!(validate45(data.border, {\n instancePath: instancePath + \"/border\",\n parentData: data,\n parentDataProperty: \"border\",\n rootData\n }))) {\n vErrors = vErrors === null ? validate45.errors : vErrors.concat(validate45.errors);\n errors = vErrors.length;\n }\n }\n if (data.header !== undefined) {\n let data1 = data.header;\n if (data1 && typeof data1 == \"object\" && !Array.isArray(data1)) {\n if (data1.content === undefined) {\n const err1 = {\n instancePath: instancePath + \"/header\",\n schemaPath: \"#/properties/header/required\",\n keyword: \"required\",\n params: {\n missingProperty: \"content\"\n },\n message: \"must have required property '\" + \"content\" + \"'\"\n };\n if (vErrors === null) {\n vErrors = [err1];\n }\n else {\n vErrors.push(err1);\n }\n errors++;\n }\n for (const key1 in data1) {\n if (!((((((key1 === \"content\") || (key1 === \"alignment\")) || (key1 === \"wrapWord\")) || (key1 === \"truncate\")) || (key1 === \"paddingLeft\")) || (key1 === \"paddingRight\"))) {\n const err2 = {\n instancePath: instancePath + \"/header\",\n schemaPath: \"#/properties/header/additionalProperties\",\n keyword: \"additionalProperties\",\n params: {\n additionalProperty: key1\n },\n message: \"must NOT have additional properties\"\n };\n if (vErrors === null) {\n vErrors = [err2];\n }\n else {\n vErrors.push(err2);\n }\n errors++;\n }\n }\n if (data1.content !== undefined) {\n if (typeof data1.content !== \"string\") {\n const err3 = {\n instancePath: instancePath + \"/header/content\",\n schemaPath: \"#/properties/header/properties/content/type\",\n keyword: \"type\",\n params: {\n type: \"string\"\n },\n message: \"must be string\"\n };\n if (vErrors === null) {\n vErrors = [err3];\n }\n else {\n vErrors.push(err3);\n }\n errors++;\n }\n }\n if (data1.alignment !== undefined) {\n if (!(validate68(data1.alignment, {\n instancePath: instancePath + \"/header/alignment\",\n parentData: data1,\n parentDataProperty: \"alignment\",\n rootData\n }))) {\n vErrors = vErrors === null ? validate68.errors : vErrors.concat(validate68.errors);\n errors = vErrors.length;\n }\n }\n if (data1.wrapWord !== undefined) {\n if (typeof data1.wrapWord !== \"boolean\") {\n const err4 = {\n instancePath: instancePath + \"/header/wrapWord\",\n schemaPath: \"#/properties/header/properties/wrapWord/type\",\n keyword: \"type\",\n params: {\n type: \"boolean\"\n },\n message: \"must be boolean\"\n };\n if (vErrors === null) {\n vErrors = [err4];\n }\n else {\n vErrors.push(err4);\n }\n errors++;\n }\n }\n if (data1.truncate !== undefined) {\n let data5 = data1.truncate;\n if (!(((typeof data5 == \"number\") && (!(data5 % 1) && !isNaN(data5))) && (isFinite(data5)))) {\n const err5 = {\n instancePath: instancePath + \"/header/truncate\",\n schemaPath: \"#/properties/header/properties/truncate/type\",\n keyword: \"type\",\n params: {\n type: \"integer\"\n },\n message: \"must be integer\"\n };\n if (vErrors === null) {\n vErrors = [err5];\n }\n else {\n vErrors.push(err5);\n }\n errors++;\n }\n }\n if (data1.paddingLeft !== undefined) {\n let data6 = data1.paddingLeft;\n if (!(((typeof data6 == \"number\") && (!(data6 % 1) && !isNaN(data6))) && (isFinite(data6)))) {\n const err6 = {\n instancePath: instancePath + \"/header/paddingLeft\",\n schemaPath: \"#/properties/header/properties/paddingLeft/type\",\n keyword: \"type\",\n params: {\n type: \"integer\"\n },\n message: \"must be integer\"\n };\n if (vErrors === null) {\n vErrors = [err6];\n }\n else {\n vErrors.push(err6);\n }\n errors++;\n }\n }\n if (data1.paddingRight !== undefined) {\n let data7 = data1.paddingRight;\n if (!(((typeof data7 == \"number\") && (!(data7 % 1) && !isNaN(data7))) && (isFinite(data7)))) {\n const err7 = {\n instancePath: instancePath + \"/header/paddingRight\",\n schemaPath: \"#/properties/header/properties/paddingRight/type\",\n keyword: \"type\",\n params: {\n type: \"integer\"\n },\n message: \"must be integer\"\n };\n if (vErrors === null) {\n vErrors = [err7];\n }\n else {\n vErrors.push(err7);\n }\n errors++;\n }\n }\n }\n else {\n const err8 = {\n instancePath: instancePath + \"/header\",\n schemaPath: \"#/properties/header/type\",\n keyword: \"type\",\n params: {\n type: \"object\"\n },\n message: \"must be object\"\n };\n if (vErrors === null) {\n vErrors = [err8];\n }\n else {\n vErrors.push(err8);\n }\n errors++;\n }\n }\n if (data.columns !== undefined) {\n if (!(validate70(data.columns, {\n instancePath: instancePath + \"/columns\",\n parentData: data,\n parentDataProperty: \"columns\",\n rootData\n }))) {\n vErrors = vErrors === null ? validate70.errors : vErrors.concat(validate70.errors);\n errors = vErrors.length;\n }\n }\n if (data.columnDefault !== undefined) {\n if (!(validate79(data.columnDefault, {\n instancePath: instancePath + \"/columnDefault\",\n parentData: data,\n parentDataProperty: \"columnDefault\",\n rootData\n }))) {\n vErrors = vErrors === null ? validate79.errors : vErrors.concat(validate79.errors);\n errors = vErrors.length;\n }\n }\n if (data.drawVerticalLine !== undefined) {\n if (typeof data.drawVerticalLine != \"function\") {\n const err9 = {\n instancePath: instancePath + \"/drawVerticalLine\",\n schemaPath: \"#/properties/drawVerticalLine/typeof\",\n keyword: \"typeof\",\n params: {},\n message: \"must pass \\\"typeof\\\" keyword validation\"\n };\n if (vErrors === null) {\n vErrors = [err9];\n }\n else {\n vErrors.push(err9);\n }\n errors++;\n }\n }\n if (data.drawHorizontalLine !== undefined) {\n if (typeof data.drawHorizontalLine != \"function\") {\n const err10 = {\n instancePath: instancePath + \"/drawHorizontalLine\",\n schemaPath: \"#/properties/drawHorizontalLine/typeof\",\n keyword: \"typeof\",\n params: {},\n message: \"must pass \\\"typeof\\\" keyword validation\"\n };\n if (vErrors === null) {\n vErrors = [err10];\n }\n else {\n vErrors.push(err10);\n }\n errors++;\n }\n }\n if (data.singleLine !== undefined) {\n if (typeof data.singleLine != \"boolean\") {\n const err11 = {\n instancePath: instancePath + \"/singleLine\",\n schemaPath: \"#/properties/singleLine/typeof\",\n keyword: \"typeof\",\n params: {},\n message: \"must pass \\\"typeof\\\" keyword validation\"\n };\n if (vErrors === null) {\n vErrors = [err11];\n }\n else {\n vErrors.push(err11);\n }\n errors++;\n }\n }\n if (data.spanningCells !== undefined) {\n let data13 = data.spanningCells;\n if (Array.isArray(data13)) {\n const len0 = data13.length;\n for (let i0 = 0; i0 < len0; i0++) {\n let data14 = data13[i0];\n if (data14 && typeof data14 == \"object\" && !Array.isArray(data14)) {\n if (data14.row === undefined) {\n const err12 = {\n instancePath: instancePath + \"/spanningCells/\" + i0,\n schemaPath: \"#/properties/spanningCells/items/required\",\n keyword: \"required\",\n params: {\n missingProperty: \"row\"\n },\n message: \"must have required property '\" + \"row\" + \"'\"\n };\n if (vErrors === null) {\n vErrors = [err12];\n }\n else {\n vErrors.push(err12);\n }\n errors++;\n }\n if (data14.col === undefined) {\n const err13 = {\n instancePath: instancePath + \"/spanningCells/\" + i0,\n schemaPath: \"#/properties/spanningCells/items/required\",\n keyword: \"required\",\n params: {\n missingProperty: \"col\"\n },\n message: \"must have required property '\" + \"col\" + \"'\"\n };\n if (vErrors === null) {\n vErrors = [err13];\n }\n else {\n vErrors.push(err13);\n }\n errors++;\n }\n for (const key2 in data14) {\n if (!(func8.call(schema13.properties.spanningCells.items.properties, key2))) {\n const err14 = {\n instancePath: instancePath + \"/spanningCells/\" + i0,\n schemaPath: \"#/properties/spanningCells/items/additionalProperties\",\n keyword: \"additionalProperties\",\n params: {\n additionalProperty: key2\n },\n message: \"must NOT have additional properties\"\n };\n if (vErrors === null) {\n vErrors = [err14];\n }\n else {\n vErrors.push(err14);\n }\n errors++;\n }\n }\n if (data14.col !== undefined) {\n let data15 = data14.col;\n if (!(((typeof data15 == \"number\") && (!(data15 % 1) && !isNaN(data15))) && (isFinite(data15)))) {\n const err15 = {\n instancePath: instancePath + \"/spanningCells/\" + i0 + \"/col\",\n schemaPath: \"#/properties/spanningCells/items/properties/col/type\",\n keyword: \"type\",\n params: {\n type: \"integer\"\n },\n message: \"must be integer\"\n };\n if (vErrors === null) {\n vErrors = [err15];\n }\n else {\n vErrors.push(err15);\n }\n errors++;\n }\n if ((typeof data15 == \"number\") && (isFinite(data15))) {\n if (data15 < 0 || isNaN(data15)) {\n const err16 = {\n instancePath: instancePath + \"/spanningCells/\" + i0 + \"/col\",\n schemaPath: \"#/properties/spanningCells/items/properties/col/minimum\",\n keyword: \"minimum\",\n params: {\n comparison: \">=\",\n limit: 0\n },\n message: \"must be >= 0\"\n };\n if (vErrors === null) {\n vErrors = [err16];\n }\n else {\n vErrors.push(err16);\n }\n errors++;\n }\n }\n }\n if (data14.row !== undefined) {\n let data16 = data14.row;\n if (!(((typeof data16 == \"number\") && (!(data16 % 1) && !isNaN(data16))) && (isFinite(data16)))) {\n const err17 = {\n instancePath: instancePath + \"/spanningCells/\" + i0 + \"/row\",\n schemaPath: \"#/properties/spanningCells/items/properties/row/type\",\n keyword: \"type\",\n params: {\n type: \"integer\"\n },\n message: \"must be integer\"\n };\n if (vErrors === null) {\n vErrors = [err17];\n }\n else {\n vErrors.push(err17);\n }\n errors++;\n }\n if ((typeof data16 == \"number\") && (isFinite(data16))) {\n if (data16 < 0 || isNaN(data16)) {\n const err18 = {\n instancePath: instancePath + \"/spanningCells/\" + i0 + \"/row\",\n schemaPath: \"#/properties/spanningCells/items/properties/row/minimum\",\n keyword: \"minimum\",\n params: {\n comparison: \">=\",\n limit: 0\n },\n message: \"must be >= 0\"\n };\n if (vErrors === null) {\n vErrors = [err18];\n }\n else {\n vErrors.push(err18);\n }\n errors++;\n }\n }\n }\n if (data14.colSpan !== undefined) {\n let data17 = data14.colSpan;\n if (!(((typeof data17 == \"number\") && (!(data17 % 1) && !isNaN(data17))) && (isFinite(data17)))) {\n const err19 = {\n instancePath: instancePath + \"/spanningCells/\" + i0 + \"/colSpan\",\n schemaPath: \"#/properties/spanningCells/items/properties/colSpan/type\",\n keyword: \"type\",\n params: {\n type: \"integer\"\n },\n message: \"must be integer\"\n };\n if (vErrors === null) {\n vErrors = [err19];\n }\n else {\n vErrors.push(err19);\n }\n errors++;\n }\n if ((typeof data17 == \"number\") && (isFinite(data17))) {\n if (data17 < 1 || isNaN(data17)) {\n const err20 = {\n instancePath: instancePath + \"/spanningCells/\" + i0 + \"/colSpan\",\n schemaPath: \"#/properties/spanningCells/items/properties/colSpan/minimum\",\n keyword: \"minimum\",\n params: {\n comparison: \">=\",\n limit: 1\n },\n message: \"must be >= 1\"\n };\n if (vErrors === null) {\n vErrors = [err20];\n }\n else {\n vErrors.push(err20);\n }\n errors++;\n }\n }\n }\n if (data14.rowSpan !== undefined) {\n let data18 = data14.rowSpan;\n if (!(((typeof data18 == \"number\") && (!(data18 % 1) && !isNaN(data18))) && (isFinite(data18)))) {\n const err21 = {\n instancePath: instancePath + \"/spanningCells/\" + i0 + \"/rowSpan\",\n schemaPath: \"#/properties/spanningCells/items/properties/rowSpan/type\",\n keyword: \"type\",\n params: {\n type: \"integer\"\n },\n message: \"must be integer\"\n };\n if (vErrors === null) {\n vErrors = [err21];\n }\n else {\n vErrors.push(err21);\n }\n errors++;\n }\n if ((typeof data18 == \"number\") && (isFinite(data18))) {\n if (data18 < 1 || isNaN(data18)) {\n const err22 = {\n instancePath: instancePath + \"/spanningCells/\" + i0 + \"/rowSpan\",\n schemaPath: \"#/properties/spanningCells/items/properties/rowSpan/minimum\",\n keyword: \"minimum\",\n params: {\n comparison: \">=\",\n limit: 1\n },\n message: \"must be >= 1\"\n };\n if (vErrors === null) {\n vErrors = [err22];\n }\n else {\n vErrors.push(err22);\n }\n errors++;\n }\n }\n }\n if (data14.alignment !== undefined) {\n if (!(validate68(data14.alignment, {\n instancePath: instancePath + \"/spanningCells/\" + i0 + \"/alignment\",\n parentData: data14,\n parentDataProperty: \"alignment\",\n rootData\n }))) {\n vErrors = vErrors === null ? validate68.errors : vErrors.concat(validate68.errors);\n errors = vErrors.length;\n }\n }\n if (data14.verticalAlignment !== undefined) {\n if (!(validate84(data14.verticalAlignment, {\n instancePath: instancePath + \"/spanningCells/\" + i0 + \"/verticalAlignment\",\n parentData: data14,\n parentDataProperty: \"verticalAlignment\",\n rootData\n }))) {\n vErrors = vErrors === null ? validate84.errors : vErrors.concat(validate84.errors);\n errors = vErrors.length;\n }\n }\n if (data14.wrapWord !== undefined) {\n if (typeof data14.wrapWord !== \"boolean\") {\n const err23 = {\n instancePath: instancePath + \"/spanningCells/\" + i0 + \"/wrapWord\",\n schemaPath: \"#/properties/spanningCells/items/properties/wrapWord/type\",\n keyword: \"type\",\n params: {\n type: \"boolean\"\n },\n message: \"must be boolean\"\n };\n if (vErrors === null) {\n vErrors = [err23];\n }\n else {\n vErrors.push(err23);\n }\n errors++;\n }\n }\n if (data14.truncate !== undefined) {\n let data22 = data14.truncate;\n if (!(((typeof data22 == \"number\") && (!(data22 % 1) && !isNaN(data22))) && (isFinite(data22)))) {\n const err24 = {\n instancePath: instancePath + \"/spanningCells/\" + i0 + \"/truncate\",\n schemaPath: \"#/properties/spanningCells/items/properties/truncate/type\",\n keyword: \"type\",\n params: {\n type: \"integer\"\n },\n message: \"must be integer\"\n };\n if (vErrors === null) {\n vErrors = [err24];\n }\n else {\n vErrors.push(err24);\n }\n errors++;\n }\n }\n if (data14.paddingLeft !== undefined) {\n let data23 = data14.paddingLeft;\n if (!(((typeof data23 == \"number\") && (!(data23 % 1) && !isNaN(data23))) && (isFinite(data23)))) {\n const err25 = {\n instancePath: instancePath + \"/spanningCells/\" + i0 + \"/paddingLeft\",\n schemaPath: \"#/properties/spanningCells/items/properties/paddingLeft/type\",\n keyword: \"type\",\n params: {\n type: \"integer\"\n },\n message: \"must be integer\"\n };\n if (vErrors === null) {\n vErrors = [err25];\n }\n else {\n vErrors.push(err25);\n }\n errors++;\n }\n }\n if (data14.paddingRight !== undefined) {\n let data24 = data14.paddingRight;\n if (!(((typeof data24 == \"number\") && (!(data24 % 1) && !isNaN(data24))) && (isFinite(data24)))) {\n const err26 = {\n instancePath: instancePath + \"/spanningCells/\" + i0 + \"/paddingRight\",\n schemaPath: \"#/properties/spanningCells/items/properties/paddingRight/type\",\n keyword: \"type\",\n params: {\n type: \"integer\"\n },\n message: \"must be integer\"\n };\n if (vErrors === null) {\n vErrors = [err26];\n }\n else {\n vErrors.push(err26);\n }\n errors++;\n }\n }\n }\n else {\n const err27 = {\n instancePath: instancePath + \"/spanningCells/\" + i0,\n schemaPath: \"#/properties/spanningCells/items/type\",\n keyword: \"type\",\n params: {\n type: \"object\"\n },\n message: \"must be object\"\n };\n if (vErrors === null) {\n vErrors = [err27];\n }\n else {\n vErrors.push(err27);\n }\n errors++;\n }\n }\n }\n else {\n const err28 = {\n instancePath: instancePath + \"/spanningCells\",\n schemaPath: \"#/properties/spanningCells/type\",\n keyword: \"type\",\n params: {\n type: \"array\"\n },\n message: \"must be array\"\n };\n if (vErrors === null) {\n vErrors = [err28];\n }\n else {\n vErrors.push(err28);\n }\n errors++;\n }\n }\n }\n else {\n const err29 = {\n instancePath,\n schemaPath: \"#/type\",\n keyword: \"type\",\n params: {\n type: \"object\"\n },\n message: \"must be object\"\n };\n if (vErrors === null) {\n vErrors = [err29];\n }\n else {\n vErrors.push(err29);\n }\n errors++;\n }\n validate43.errors = vErrors;\n return errors === 0;\n}\nexports[\"streamConfig.json\"] = validate86;\nconst schema24 = {\n \"$id\": \"streamConfig.json\",\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"type\": \"object\",\n \"properties\": {\n \"border\": {\n \"$ref\": \"shared.json#/definitions/borders\"\n },\n \"columns\": {\n \"$ref\": \"shared.json#/definitions/columns\"\n },\n \"columnDefault\": {\n \"$ref\": \"shared.json#/definitions/column\"\n },\n \"columnCount\": {\n \"type\": \"integer\",\n \"minimum\": 1\n },\n \"drawVerticalLine\": {\n \"typeof\": \"function\"\n }\n },\n \"required\": [\"columnDefault\", \"columnCount\"],\n \"additionalProperties\": false\n};\nfunction validate87(data, { instancePath = \"\", parentData, parentDataProperty, rootData = data } = {}) {\n let vErrors = null;\n let errors = 0;\n if (data && typeof data == \"object\" && !Array.isArray(data)) {\n for (const key0 in data) {\n if (!(func8.call(schema15.properties, key0))) {\n const err0 = {\n instancePath,\n schemaPath: \"#/additionalProperties\",\n keyword: \"additionalProperties\",\n params: {\n additionalProperty: key0\n },\n message: \"must NOT have additional properties\"\n };\n if (vErrors === null) {\n vErrors = [err0];\n }\n else {\n vErrors.push(err0);\n }\n errors++;\n }\n }\n if (data.topBody !== undefined) {\n if (!(validate46(data.topBody, {\n instancePath: instancePath + \"/topBody\",\n parentData: data,\n parentDataProperty: \"topBody\",\n rootData\n }))) {\n vErrors = vErrors === null ? validate46.errors : vErrors.concat(validate46.errors);\n errors = vErrors.length;\n }\n }\n if (data.topJoin !== undefined) {\n if (!(validate46(data.topJoin, {\n instancePath: instancePath + \"/topJoin\",\n parentData: data,\n parentDataProperty: \"topJoin\",\n rootData\n }))) {\n vErrors = vErrors === null ? validate46.errors : vErrors.concat(validate46.errors);\n errors = vErrors.length;\n }\n }\n if (data.topLeft !== undefined) {\n if (!(validate46(data.topLeft, {\n instancePath: instancePath + \"/topLeft\",\n parentData: data,\n parentDataProperty: \"topLeft\",\n rootData\n }))) {\n vErrors = vErrors === null ? validate46.errors : vErrors.concat(validate46.errors);\n errors = vErrors.length;\n }\n }\n if (data.topRight !== undefined) {\n if (!(validate46(data.topRight, {\n instancePath: instancePath + \"/topRight\",\n parentData: data,\n parentDataProperty: \"topRight\",\n rootData\n }))) {\n vErrors = vErrors === null ? validate46.errors : vErrors.concat(validate46.errors);\n errors = vErrors.length;\n }\n }\n if (data.bottomBody !== undefined) {\n if (!(validate46(data.bottomBody, {\n instancePath: instancePath + \"/bottomBody\",\n parentData: data,\n parentDataProperty: \"bottomBody\",\n rootData\n }))) {\n vErrors = vErrors === null ? validate46.errors : vErrors.concat(validate46.errors);\n errors = vErrors.length;\n }\n }\n if (data.bottomJoin !== undefined) {\n if (!(validate46(data.bottomJoin, {\n instancePath: instancePath + \"/bottomJoin\",\n parentData: data,\n parentDataProperty: \"bottomJoin\",\n rootData\n }))) {\n vErrors = vErrors === null ? validate46.errors : vErrors.concat(validate46.errors);\n errors = vErrors.length;\n }\n }\n if (data.bottomLeft !== undefined) {\n if (!(validate46(data.bottomLeft, {\n instancePath: instancePath + \"/bottomLeft\",\n parentData: data,\n parentDataProperty: \"bottomLeft\",\n rootData\n }))) {\n vErrors = vErrors === null ? validate46.errors : vErrors.concat(validate46.errors);\n errors = vErrors.length;\n }\n }\n if (data.bottomRight !== undefined) {\n if (!(validate46(data.bottomRight, {\n instancePath: instancePath + \"/bottomRight\",\n parentData: data,\n parentDataProperty: \"bottomRight\",\n rootData\n }))) {\n vErrors = vErrors === null ? validate46.errors : vErrors.concat(validate46.errors);\n errors = vErrors.length;\n }\n }\n if (data.bodyLeft !== undefined) {\n if (!(validate46(data.bodyLeft, {\n instancePath: instancePath + \"/bodyLeft\",\n parentData: data,\n parentDataProperty: \"bodyLeft\",\n rootData\n }))) {\n vErrors = vErrors === null ? validate46.errors : vErrors.concat(validate46.errors);\n errors = vErrors.length;\n }\n }\n if (data.bodyRight !== undefined) {\n if (!(validate46(data.bodyRight, {\n instancePath: instancePath + \"/bodyRight\",\n parentData: data,\n parentDataProperty: \"bodyRight\",\n rootData\n }))) {\n vErrors = vErrors === null ? validate46.errors : vErrors.concat(validate46.errors);\n errors = vErrors.length;\n }\n }\n if (data.bodyJoin !== undefined) {\n if (!(validate46(data.bodyJoin, {\n instancePath: instancePath + \"/bodyJoin\",\n parentData: data,\n parentDataProperty: \"bodyJoin\",\n rootData\n }))) {\n vErrors = vErrors === null ? validate46.errors : vErrors.concat(validate46.errors);\n errors = vErrors.length;\n }\n }\n if (data.headerJoin !== undefined) {\n if (!(validate46(data.headerJoin, {\n instancePath: instancePath + \"/headerJoin\",\n parentData: data,\n parentDataProperty: \"headerJoin\",\n rootData\n }))) {\n vErrors = vErrors === null ? validate46.errors : vErrors.concat(validate46.errors);\n errors = vErrors.length;\n }\n }\n if (data.joinBody !== undefined) {\n if (!(validate46(data.joinBody, {\n instancePath: instancePath + \"/joinBody\",\n parentData: data,\n parentDataProperty: \"joinBody\",\n rootData\n }))) {\n vErrors = vErrors === null ? validate46.errors : vErrors.concat(validate46.errors);\n errors = vErrors.length;\n }\n }\n if (data.joinLeft !== undefined) {\n if (!(validate46(data.joinLeft, {\n instancePath: instancePath + \"/joinLeft\",\n parentData: data,\n parentDataProperty: \"joinLeft\",\n rootData\n }))) {\n vErrors = vErrors === null ? validate46.errors : vErrors.concat(validate46.errors);\n errors = vErrors.length;\n }\n }\n if (data.joinRight !== undefined) {\n if (!(validate46(data.joinRight, {\n instancePath: instancePath + \"/joinRight\",\n parentData: data,\n parentDataProperty: \"joinRight\",\n rootData\n }))) {\n vErrors = vErrors === null ? validate46.errors : vErrors.concat(validate46.errors);\n errors = vErrors.length;\n }\n }\n if (data.joinJoin !== undefined) {\n if (!(validate46(data.joinJoin, {\n instancePath: instancePath + \"/joinJoin\",\n parentData: data,\n parentDataProperty: \"joinJoin\",\n rootData\n }))) {\n vErrors = vErrors === null ? validate46.errors : vErrors.concat(validate46.errors);\n errors = vErrors.length;\n }\n }\n if (data.joinMiddleUp !== undefined) {\n if (!(validate46(data.joinMiddleUp, {\n instancePath: instancePath + \"/joinMiddleUp\",\n parentData: data,\n parentDataProperty: \"joinMiddleUp\",\n rootData\n }))) {\n vErrors = vErrors === null ? validate46.errors : vErrors.concat(validate46.errors);\n errors = vErrors.length;\n }\n }\n if (data.joinMiddleDown !== undefined) {\n if (!(validate46(data.joinMiddleDown, {\n instancePath: instancePath + \"/joinMiddleDown\",\n parentData: data,\n parentDataProperty: \"joinMiddleDown\",\n rootData\n }))) {\n vErrors = vErrors === null ? validate46.errors : vErrors.concat(validate46.errors);\n errors = vErrors.length;\n }\n }\n if (data.joinMiddleLeft !== undefined) {\n if (!(validate46(data.joinMiddleLeft, {\n instancePath: instancePath + \"/joinMiddleLeft\",\n parentData: data,\n parentDataProperty: \"joinMiddleLeft\",\n rootData\n }))) {\n vErrors = vErrors === null ? validate46.errors : vErrors.concat(validate46.errors);\n errors = vErrors.length;\n }\n }\n if (data.joinMiddleRight !== undefined) {\n if (!(validate46(data.joinMiddleRight, {\n instancePath: instancePath + \"/joinMiddleRight\",\n parentData: data,\n parentDataProperty: \"joinMiddleRight\",\n rootData\n }))) {\n vErrors = vErrors === null ? validate46.errors : vErrors.concat(validate46.errors);\n errors = vErrors.length;\n }\n }\n }\n else {\n const err1 = {\n instancePath,\n schemaPath: \"#/type\",\n keyword: \"type\",\n params: {\n type: \"object\"\n },\n message: \"must be object\"\n };\n if (vErrors === null) {\n vErrors = [err1];\n }\n else {\n vErrors.push(err1);\n }\n errors++;\n }\n validate87.errors = vErrors;\n return errors === 0;\n}\nfunction validate109(data, { instancePath = \"\", parentData, parentDataProperty, rootData = data } = {}) {\n let vErrors = null;\n let errors = 0;\n const _errs0 = errors;\n let valid0 = false;\n let passing0 = null;\n const _errs1 = errors;\n if (data && typeof data == \"object\" && !Array.isArray(data)) {\n for (const key0 in data) {\n if (!(pattern0.test(key0))) {\n const err0 = {\n instancePath,\n schemaPath: \"#/oneOf/0/additionalProperties\",\n keyword: \"additionalProperties\",\n params: {\n additionalProperty: key0\n },\n message: \"must NOT have additional properties\"\n };\n if (vErrors === null) {\n vErrors = [err0];\n }\n else {\n vErrors.push(err0);\n }\n errors++;\n }\n }\n for (const key1 in data) {\n if (pattern0.test(key1)) {\n if (!(validate71(data[key1], {\n instancePath: instancePath + \"/\" + key1.replace(/~/g, \"~0\").replace(/\\//g, \"~1\"),\n parentData: data,\n parentDataProperty: key1,\n rootData\n }))) {\n vErrors = vErrors === null ? validate71.errors : vErrors.concat(validate71.errors);\n errors = vErrors.length;\n }\n }\n }\n }\n else {\n const err1 = {\n instancePath,\n schemaPath: \"#/oneOf/0/type\",\n keyword: \"type\",\n params: {\n type: \"object\"\n },\n message: \"must be object\"\n };\n if (vErrors === null) {\n vErrors = [err1];\n }\n else {\n vErrors.push(err1);\n }\n errors++;\n }\n var _valid0 = _errs1 === errors;\n if (_valid0) {\n valid0 = true;\n passing0 = 0;\n }\n const _errs5 = errors;\n if (Array.isArray(data)) {\n const len0 = data.length;\n for (let i0 = 0; i0 < len0; i0++) {\n if (!(validate71(data[i0], {\n instancePath: instancePath + \"/\" + i0,\n parentData: data,\n parentDataProperty: i0,\n rootData\n }))) {\n vErrors = vErrors === null ? validate71.errors : vErrors.concat(validate71.errors);\n errors = vErrors.length;\n }\n }\n }\n else {\n const err2 = {\n instancePath,\n schemaPath: \"#/oneOf/1/type\",\n keyword: \"type\",\n params: {\n type: \"array\"\n },\n message: \"must be array\"\n };\n if (vErrors === null) {\n vErrors = [err2];\n }\n else {\n vErrors.push(err2);\n }\n errors++;\n }\n var _valid0 = _errs5 === errors;\n if (_valid0 && valid0) {\n valid0 = false;\n passing0 = [passing0, 1];\n }\n else {\n if (_valid0) {\n valid0 = true;\n passing0 = 1;\n }\n }\n if (!valid0) {\n const err3 = {\n instancePath,\n schemaPath: \"#/oneOf\",\n keyword: \"oneOf\",\n params: {\n passingSchemas: passing0\n },\n message: \"must match exactly one schema in oneOf\"\n };\n if (vErrors === null) {\n vErrors = [err3];\n }\n else {\n vErrors.push(err3);\n }\n errors++;\n }\n else {\n errors = _errs0;\n if (vErrors !== null) {\n if (_errs0) {\n vErrors.length = _errs0;\n }\n else {\n vErrors = null;\n }\n }\n }\n validate109.errors = vErrors;\n return errors === 0;\n}\nfunction validate113(data, { instancePath = \"\", parentData, parentDataProperty, rootData = data } = {}) {\n let vErrors = null;\n let errors = 0;\n if (data && typeof data == \"object\" && !Array.isArray(data)) {\n for (const key0 in data) {\n if (!(((((((key0 === \"alignment\") || (key0 === \"verticalAlignment\")) || (key0 === \"width\")) || (key0 === \"wrapWord\")) || (key0 === \"truncate\")) || (key0 === \"paddingLeft\")) || (key0 === \"paddingRight\"))) {\n const err0 = {\n instancePath,\n schemaPath: \"#/additionalProperties\",\n keyword: \"additionalProperties\",\n params: {\n additionalProperty: key0\n },\n message: \"must NOT have additional properties\"\n };\n if (vErrors === null) {\n vErrors = [err0];\n }\n else {\n vErrors.push(err0);\n }\n errors++;\n }\n }\n if (data.alignment !== undefined) {\n if (!(validate72(data.alignment, {\n instancePath: instancePath + \"/alignment\",\n parentData: data,\n parentDataProperty: \"alignment\",\n rootData\n }))) {\n vErrors = vErrors === null ? validate72.errors : vErrors.concat(validate72.errors);\n errors = vErrors.length;\n }\n }\n if (data.verticalAlignment !== undefined) {\n if (!(validate74(data.verticalAlignment, {\n instancePath: instancePath + \"/verticalAlignment\",\n parentData: data,\n parentDataProperty: \"verticalAlignment\",\n rootData\n }))) {\n vErrors = vErrors === null ? validate74.errors : vErrors.concat(validate74.errors);\n errors = vErrors.length;\n }\n }\n if (data.width !== undefined) {\n let data2 = data.width;\n if (!(((typeof data2 == \"number\") && (!(data2 % 1) && !isNaN(data2))) && (isFinite(data2)))) {\n const err1 = {\n instancePath: instancePath + \"/width\",\n schemaPath: \"#/properties/width/type\",\n keyword: \"type\",\n params: {\n type: \"integer\"\n },\n message: \"must be integer\"\n };\n if (vErrors === null) {\n vErrors = [err1];\n }\n else {\n vErrors.push(err1);\n }\n errors++;\n }\n if ((typeof data2 == \"number\") && (isFinite(data2))) {\n if (data2 < 1 || isNaN(data2)) {\n const err2 = {\n instancePath: instancePath + \"/width\",\n schemaPath: \"#/properties/width/minimum\",\n keyword: \"minimum\",\n params: {\n comparison: \">=\",\n limit: 1\n },\n message: \"must be >= 1\"\n };\n if (vErrors === null) {\n vErrors = [err2];\n }\n else {\n vErrors.push(err2);\n }\n errors++;\n }\n }\n }\n if (data.wrapWord !== undefined) {\n if (typeof data.wrapWord !== \"boolean\") {\n const err3 = {\n instancePath: instancePath + \"/wrapWord\",\n schemaPath: \"#/properties/wrapWord/type\",\n keyword: \"type\",\n params: {\n type: \"boolean\"\n },\n message: \"must be boolean\"\n };\n if (vErrors === null) {\n vErrors = [err3];\n }\n else {\n vErrors.push(err3);\n }\n errors++;\n }\n }\n if (data.truncate !== undefined) {\n let data4 = data.truncate;\n if (!(((typeof data4 == \"number\") && (!(data4 % 1) && !isNaN(data4))) && (isFinite(data4)))) {\n const err4 = {\n instancePath: instancePath + \"/truncate\",\n schemaPath: \"#/properties/truncate/type\",\n keyword: \"type\",\n params: {\n type: \"integer\"\n },\n message: \"must be integer\"\n };\n if (vErrors === null) {\n vErrors = [err4];\n }\n else {\n vErrors.push(err4);\n }\n errors++;\n }\n }\n if (data.paddingLeft !== undefined) {\n let data5 = data.paddingLeft;\n if (!(((typeof data5 == \"number\") && (!(data5 % 1) && !isNaN(data5))) && (isFinite(data5)))) {\n const err5 = {\n instancePath: instancePath + \"/paddingLeft\",\n schemaPath: \"#/properties/paddingLeft/type\",\n keyword: \"type\",\n params: {\n type: \"integer\"\n },\n message: \"must be integer\"\n };\n if (vErrors === null) {\n vErrors = [err5];\n }\n else {\n vErrors.push(err5);\n }\n errors++;\n }\n }\n if (data.paddingRight !== undefined) {\n let data6 = data.paddingRight;\n if (!(((typeof data6 == \"number\") && (!(data6 % 1) && !isNaN(data6))) && (isFinite(data6)))) {\n const err6 = {\n instancePath: instancePath + \"/paddingRight\",\n schemaPath: \"#/properties/paddingRight/type\",\n keyword: \"type\",\n params: {\n type: \"integer\"\n },\n message: \"must be integer\"\n };\n if (vErrors === null) {\n vErrors = [err6];\n }\n else {\n vErrors.push(err6);\n }\n errors++;\n }\n }\n }\n else {\n const err7 = {\n instancePath,\n schemaPath: \"#/type\",\n keyword: \"type\",\n params: {\n type: \"object\"\n },\n message: \"must be object\"\n };\n if (vErrors === null) {\n vErrors = [err7];\n }\n else {\n vErrors.push(err7);\n }\n errors++;\n }\n validate113.errors = vErrors;\n return errors === 0;\n}\nfunction validate86(data, { instancePath = \"\", parentData, parentDataProperty, rootData = data } = {}) {\n /*# sourceURL=\"streamConfig.json\" */ ;\n let vErrors = null;\n let errors = 0;\n if (data && typeof data == \"object\" && !Array.isArray(data)) {\n if (data.columnDefault === undefined) {\n const err0 = {\n instancePath,\n schemaPath: \"#/required\",\n keyword: \"required\",\n params: {\n missingProperty: \"columnDefault\"\n },\n message: \"must have required property '\" + \"columnDefault\" + \"'\"\n };\n if (vErrors === null) {\n vErrors = [err0];\n }\n else {\n vErrors.push(err0);\n }\n errors++;\n }\n if (data.columnCount === undefined) {\n const err1 = {\n instancePath,\n schemaPath: \"#/required\",\n keyword: \"required\",\n params: {\n missingProperty: \"columnCount\"\n },\n message: \"must have required property '\" + \"columnCount\" + \"'\"\n };\n if (vErrors === null) {\n vErrors = [err1];\n }\n else {\n vErrors.push(err1);\n }\n errors++;\n }\n for (const key0 in data) {\n if (!(((((key0 === \"border\") || (key0 === \"columns\")) || (key0 === \"columnDefault\")) || (key0 === \"columnCount\")) || (key0 === \"drawVerticalLine\"))) {\n const err2 = {\n instancePath,\n schemaPath: \"#/additionalProperties\",\n keyword: \"additionalProperties\",\n params: {\n additionalProperty: key0\n },\n message: \"must NOT have additional properties\"\n };\n if (vErrors === null) {\n vErrors = [err2];\n }\n else {\n vErrors.push(err2);\n }\n errors++;\n }\n }\n if (data.border !== undefined) {\n if (!(validate87(data.border, {\n instancePath: instancePath + \"/border\",\n parentData: data,\n parentDataProperty: \"border\",\n rootData\n }))) {\n vErrors = vErrors === null ? validate87.errors : vErrors.concat(validate87.errors);\n errors = vErrors.length;\n }\n }\n if (data.columns !== undefined) {\n if (!(validate109(data.columns, {\n instancePath: instancePath + \"/columns\",\n parentData: data,\n parentDataProperty: \"columns\",\n rootData\n }))) {\n vErrors = vErrors === null ? validate109.errors : vErrors.concat(validate109.errors);\n errors = vErrors.length;\n }\n }\n if (data.columnDefault !== undefined) {\n if (!(validate113(data.columnDefault, {\n instancePath: instancePath + \"/columnDefault\",\n parentData: data,\n parentDataProperty: \"columnDefault\",\n rootData\n }))) {\n vErrors = vErrors === null ? validate113.errors : vErrors.concat(validate113.errors);\n errors = vErrors.length;\n }\n }\n if (data.columnCount !== undefined) {\n let data3 = data.columnCount;\n if (!(((typeof data3 == \"number\") && (!(data3 % 1) && !isNaN(data3))) && (isFinite(data3)))) {\n const err3 = {\n instancePath: instancePath + \"/columnCount\",\n schemaPath: \"#/properties/columnCount/type\",\n keyword: \"type\",\n params: {\n type: \"integer\"\n },\n message: \"must be integer\"\n };\n if (vErrors === null) {\n vErrors = [err3];\n }\n else {\n vErrors.push(err3);\n }\n errors++;\n }\n if ((typeof data3 == \"number\") && (isFinite(data3))) {\n if (data3 < 1 || isNaN(data3)) {\n const err4 = {\n instancePath: instancePath + \"/columnCount\",\n schemaPath: \"#/properties/columnCount/minimum\",\n keyword: \"minimum\",\n params: {\n comparison: \">=\",\n limit: 1\n },\n message: \"must be >= 1\"\n };\n if (vErrors === null) {\n vErrors = [err4];\n }\n else {\n vErrors.push(err4);\n }\n errors++;\n }\n }\n }\n if (data.drawVerticalLine !== undefined) {\n if (typeof data.drawVerticalLine != \"function\") {\n const err5 = {\n instancePath: instancePath + \"/drawVerticalLine\",\n schemaPath: \"#/properties/drawVerticalLine/typeof\",\n keyword: \"typeof\",\n params: {},\n message: \"must pass \\\"typeof\\\" keyword validation\"\n };\n if (vErrors === null) {\n vErrors = [err5];\n }\n else {\n vErrors.push(err5);\n }\n errors++;\n }\n }\n }\n else {\n const err6 = {\n instancePath,\n schemaPath: \"#/type\",\n keyword: \"type\",\n params: {\n type: \"object\"\n },\n message: \"must be object\"\n };\n if (vErrors === null) {\n vErrors = [err6];\n }\n else {\n vErrors.push(err6);\n }\n errors++;\n }\n validate86.errors = vErrors;\n return errors === 0;\n}\n//# sourceMappingURL=validators.js.map","\"use strict\";\n/* eslint-disable sort-keys-fix/sort-keys-fix */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getBorderCharacters = void 0;\nconst getBorderCharacters = (name) => {\n if (name === 'honeywell') {\n return {\n topBody: '═',\n topJoin: '╤',\n topLeft: '╔',\n topRight: '╗',\n bottomBody: '═',\n bottomJoin: '╧',\n bottomLeft: '╚',\n bottomRight: '╝',\n bodyLeft: '║',\n bodyRight: '║',\n bodyJoin: '│',\n headerJoin: '┬',\n joinBody: '─',\n joinLeft: '╟',\n joinRight: '╢',\n joinJoin: '┼',\n joinMiddleDown: '┬',\n joinMiddleUp: '┴',\n joinMiddleLeft: '┤',\n joinMiddleRight: '├',\n };\n }\n if (name === 'norc') {\n return {\n topBody: '─',\n topJoin: '┬',\n topLeft: '┌',\n topRight: '┐',\n bottomBody: '─',\n bottomJoin: '┴',\n bottomLeft: '└',\n bottomRight: '┘',\n bodyLeft: '│',\n bodyRight: '│',\n bodyJoin: '│',\n headerJoin: '┬',\n joinBody: '─',\n joinLeft: '├',\n joinRight: '┤',\n joinJoin: '┼',\n joinMiddleDown: '┬',\n joinMiddleUp: '┴',\n joinMiddleLeft: '┤',\n joinMiddleRight: '├',\n };\n }\n if (name === 'ramac') {\n return {\n topBody: '-',\n topJoin: '+',\n topLeft: '+',\n topRight: '+',\n bottomBody: '-',\n bottomJoin: '+',\n bottomLeft: '+',\n bottomRight: '+',\n bodyLeft: '|',\n bodyRight: '|',\n bodyJoin: '|',\n headerJoin: '+',\n joinBody: '-',\n joinLeft: '|',\n joinRight: '|',\n joinJoin: '|',\n joinMiddleDown: '+',\n joinMiddleUp: '+',\n joinMiddleLeft: '+',\n joinMiddleRight: '+',\n };\n }\n if (name === 'void') {\n return {\n topBody: '',\n topJoin: '',\n topLeft: '',\n topRight: '',\n bottomBody: '',\n bottomJoin: '',\n bottomLeft: '',\n bottomRight: '',\n bodyLeft: '',\n bodyRight: '',\n bodyJoin: '',\n headerJoin: '',\n joinBody: '',\n joinLeft: '',\n joinRight: '',\n joinJoin: '',\n joinMiddleDown: '',\n joinMiddleUp: '',\n joinMiddleLeft: '',\n joinMiddleRight: '',\n };\n }\n throw new Error('Unknown border template \"' + name + '\".');\n};\nexports.getBorderCharacters = getBorderCharacters;\n//# sourceMappingURL=getBorderCharacters.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getBorderCharacters = exports.createStream = exports.table = void 0;\nconst createStream_1 = require(\"./createStream\");\nObject.defineProperty(exports, \"createStream\", { enumerable: true, get: function () { return createStream_1.createStream; } });\nconst getBorderCharacters_1 = require(\"./getBorderCharacters\");\nObject.defineProperty(exports, \"getBorderCharacters\", { enumerable: true, get: function () { return getBorderCharacters_1.getBorderCharacters; } });\nconst table_1 = require(\"./table\");\nObject.defineProperty(exports, \"table\", { enumerable: true, get: function () { return table_1.table; } });\n__exportStar(require(\"./types/api\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.injectHeaderConfig = void 0;\nconst injectHeaderConfig = (rows, config) => {\n var _a;\n let spanningCellConfig = (_a = config.spanningCells) !== null && _a !== void 0 ? _a : [];\n const headerConfig = config.header;\n const adjustedRows = [...rows];\n if (headerConfig) {\n spanningCellConfig = spanningCellConfig.map(({ row, ...rest }) => {\n return { ...rest,\n row: row + 1 };\n });\n const { content, ...headerStyles } = headerConfig;\n spanningCellConfig.unshift({ alignment: 'center',\n col: 0,\n colSpan: rows[0].length,\n paddingLeft: 1,\n paddingRight: 1,\n row: 0,\n wrapWord: false,\n ...headerStyles });\n adjustedRows.unshift([content, ...Array.from({ length: rows[0].length - 1 }).fill('')]);\n }\n return [adjustedRows,\n spanningCellConfig];\n};\nexports.injectHeaderConfig = injectHeaderConfig;\n//# sourceMappingURL=injectHeaderConfig.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.makeRangeConfig = void 0;\nconst utils_1 = require(\"./utils\");\nconst makeRangeConfig = (spanningCellConfig, columnsConfig) => {\n var _a;\n const { topLeft, bottomRight } = (0, utils_1.calculateRangeCoordinate)(spanningCellConfig);\n const cellConfig = {\n ...columnsConfig[topLeft.col],\n ...spanningCellConfig,\n paddingRight: (_a = spanningCellConfig.paddingRight) !== null && _a !== void 0 ? _a : columnsConfig[bottomRight.col].paddingRight,\n };\n return { ...cellConfig,\n bottomRight,\n topLeft };\n};\nexports.makeRangeConfig = makeRangeConfig;\n//# sourceMappingURL=makeRangeConfig.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.makeStreamConfig = void 0;\nconst utils_1 = require(\"./utils\");\nconst validateConfig_1 = require(\"./validateConfig\");\n/**\n * Creates a configuration for every column using default\n * values for the missing configuration properties.\n */\nconst makeColumnsConfig = (columnCount, columns = {}, columnDefault) => {\n return Array.from({ length: columnCount }).map((_, index) => {\n return {\n alignment: 'left',\n paddingLeft: 1,\n paddingRight: 1,\n truncate: Number.POSITIVE_INFINITY,\n verticalAlignment: 'top',\n wrapWord: false,\n ...columnDefault,\n ...columns[index],\n };\n });\n};\n/**\n * Makes a new configuration object out of the userConfig object\n * using default values for the missing configuration properties.\n */\nconst makeStreamConfig = (config) => {\n (0, validateConfig_1.validateConfig)('streamConfig.json', config);\n if (config.columnDefault.width === undefined) {\n throw new Error('Must provide config.columnDefault.width when creating a stream.');\n }\n return {\n drawVerticalLine: () => {\n return true;\n },\n ...config,\n border: (0, utils_1.makeBorderConfig)(config.border),\n columns: makeColumnsConfig(config.columnCount, config.columns, config.columnDefault),\n };\n};\nexports.makeStreamConfig = makeStreamConfig;\n//# sourceMappingURL=makeStreamConfig.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.makeTableConfig = void 0;\nconst calculateMaximumColumnWidths_1 = require(\"./calculateMaximumColumnWidths\");\nconst spanningCellManager_1 = require(\"./spanningCellManager\");\nconst utils_1 = require(\"./utils\");\nconst validateConfig_1 = require(\"./validateConfig\");\nconst validateSpanningCellConfig_1 = require(\"./validateSpanningCellConfig\");\n/**\n * Creates a configuration for every column using default\n * values for the missing configuration properties.\n */\nconst makeColumnsConfig = (rows, columns, columnDefault, spanningCellConfigs) => {\n const columnWidths = (0, calculateMaximumColumnWidths_1.calculateMaximumColumnWidths)(rows, spanningCellConfigs);\n return rows[0].map((_, columnIndex) => {\n return {\n alignment: 'left',\n paddingLeft: 1,\n paddingRight: 1,\n truncate: Number.POSITIVE_INFINITY,\n verticalAlignment: 'top',\n width: columnWidths[columnIndex],\n wrapWord: false,\n ...columnDefault,\n ...columns === null || columns === void 0 ? void 0 : columns[columnIndex],\n };\n });\n};\n/**\n * Makes a new configuration object out of the userConfig object\n * using default values for the missing configuration properties.\n */\nconst makeTableConfig = (rows, config = {}, injectedSpanningCellConfig) => {\n var _a, _b, _c, _d, _e;\n (0, validateConfig_1.validateConfig)('config.json', config);\n (0, validateSpanningCellConfig_1.validateSpanningCellConfig)(rows, (_a = config.spanningCells) !== null && _a !== void 0 ? _a : []);\n const spanningCellConfigs = (_b = injectedSpanningCellConfig !== null && injectedSpanningCellConfig !== void 0 ? injectedSpanningCellConfig : config.spanningCells) !== null && _b !== void 0 ? _b : [];\n const columnsConfig = makeColumnsConfig(rows, config.columns, config.columnDefault, spanningCellConfigs);\n const drawVerticalLine = (_c = config.drawVerticalLine) !== null && _c !== void 0 ? _c : (() => {\n return true;\n });\n const drawHorizontalLine = (_d = config.drawHorizontalLine) !== null && _d !== void 0 ? _d : (() => {\n return true;\n });\n return {\n ...config,\n border: (0, utils_1.makeBorderConfig)(config.border),\n columns: columnsConfig,\n drawHorizontalLine,\n drawVerticalLine,\n singleLine: (_e = config.singleLine) !== null && _e !== void 0 ? _e : false,\n spanningCellManager: (0, spanningCellManager_1.createSpanningCellManager)({\n columnsConfig,\n drawHorizontalLine,\n drawVerticalLine,\n rows,\n spanningCellConfigs,\n }),\n };\n};\nexports.makeTableConfig = makeTableConfig;\n//# sourceMappingURL=makeTableConfig.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.mapDataUsingRowHeights = exports.padCellVertically = void 0;\nconst utils_1 = require(\"./utils\");\nconst wrapCell_1 = require(\"./wrapCell\");\nconst createEmptyStrings = (length) => {\n return new Array(length).fill('');\n};\nconst padCellVertically = (lines, rowHeight, verticalAlignment) => {\n const availableLines = rowHeight - lines.length;\n if (verticalAlignment === 'top') {\n return [...lines, ...createEmptyStrings(availableLines)];\n }\n if (verticalAlignment === 'bottom') {\n return [...createEmptyStrings(availableLines), ...lines];\n }\n return [\n ...createEmptyStrings(Math.floor(availableLines / 2)),\n ...lines,\n ...createEmptyStrings(Math.ceil(availableLines / 2)),\n ];\n};\nexports.padCellVertically = padCellVertically;\nconst mapDataUsingRowHeights = (unmappedRows, rowHeights, config) => {\n const nColumns = unmappedRows[0].length;\n const mappedRows = unmappedRows.map((unmappedRow, unmappedRowIndex) => {\n const outputRowHeight = rowHeights[unmappedRowIndex];\n const outputRow = Array.from({ length: outputRowHeight }, () => {\n return new Array(nColumns).fill('');\n });\n unmappedRow.forEach((cell, cellIndex) => {\n var _a;\n const containingRange = (_a = config.spanningCellManager) === null || _a === void 0 ? void 0 : _a.getContainingRange({ col: cellIndex,\n row: unmappedRowIndex });\n if (containingRange) {\n containingRange.extractCellContent(unmappedRowIndex).forEach((cellLine, cellLineIndex) => {\n outputRow[cellLineIndex][cellIndex] = cellLine;\n });\n return;\n }\n const cellLines = (0, wrapCell_1.wrapCell)(cell, config.columns[cellIndex].width, config.columns[cellIndex].wrapWord);\n const paddedCellLines = (0, exports.padCellVertically)(cellLines, outputRowHeight, config.columns[cellIndex].verticalAlignment);\n paddedCellLines.forEach((cellLine, cellLineIndex) => {\n outputRow[cellLineIndex][cellIndex] = cellLine;\n });\n });\n return outputRow;\n });\n return (0, utils_1.flatten)(mappedRows);\n};\nexports.mapDataUsingRowHeights = mapDataUsingRowHeights;\n//# sourceMappingURL=mapDataUsingRowHeights.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.padTableData = exports.padString = void 0;\nconst padString = (input, paddingLeft, paddingRight) => {\n return ' '.repeat(paddingLeft) + input + ' '.repeat(paddingRight);\n};\nexports.padString = padString;\nconst padTableData = (rows, config) => {\n return rows.map((cells, rowIndex) => {\n return cells.map((cell, cellIndex) => {\n var _a;\n const containingRange = (_a = config.spanningCellManager) === null || _a === void 0 ? void 0 : _a.getContainingRange({ col: cellIndex,\n row: rowIndex }, { mapped: true });\n if (containingRange) {\n return cell;\n }\n const { paddingLeft, paddingRight } = config.columns[cellIndex];\n return (0, exports.padString)(cell, paddingLeft, paddingRight);\n });\n });\n};\nexports.padTableData = padTableData;\n//# sourceMappingURL=padTableData.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.createSpanningCellManager = void 0;\nconst alignSpanningCell_1 = require(\"./alignSpanningCell\");\nconst calculateSpanningCellWidth_1 = require(\"./calculateSpanningCellWidth\");\nconst makeRangeConfig_1 = require(\"./makeRangeConfig\");\nconst utils_1 = require(\"./utils\");\nconst findRangeConfig = (cell, rangeConfigs) => {\n return rangeConfigs.find((rangeCoordinate) => {\n return (0, utils_1.isCellInRange)(cell, rangeCoordinate);\n });\n};\nconst getContainingRange = (rangeConfig, context) => {\n const width = (0, calculateSpanningCellWidth_1.calculateSpanningCellWidth)(rangeConfig, context);\n const wrappedContent = (0, alignSpanningCell_1.wrapRangeContent)(rangeConfig, width, context);\n const alignedContent = (0, alignSpanningCell_1.alignVerticalRangeContent)(rangeConfig, wrappedContent, context);\n const getCellContent = (rowIndex) => {\n const { topLeft } = rangeConfig;\n const { drawHorizontalLine, rowHeights } = context;\n const totalWithinHorizontalBorderHeight = rowIndex - topLeft.row;\n const totalHiddenHorizontalBorderHeight = (0, utils_1.sequence)(topLeft.row + 1, rowIndex).filter((index) => {\n /* istanbul ignore next */\n return !(drawHorizontalLine === null || drawHorizontalLine === void 0 ? void 0 : drawHorizontalLine(index, rowHeights.length));\n }).length;\n const offset = (0, utils_1.sumArray)(rowHeights.slice(topLeft.row, rowIndex)) + totalWithinHorizontalBorderHeight - totalHiddenHorizontalBorderHeight;\n return alignedContent.slice(offset, offset + rowHeights[rowIndex]);\n };\n const getBorderContent = (borderIndex) => {\n const { topLeft } = rangeConfig;\n const offset = (0, utils_1.sumArray)(context.rowHeights.slice(topLeft.row, borderIndex)) + (borderIndex - topLeft.row - 1);\n return alignedContent[offset];\n };\n return {\n ...rangeConfig,\n extractBorderContent: getBorderContent,\n extractCellContent: getCellContent,\n height: wrappedContent.length,\n width,\n };\n};\nconst inSameRange = (cell1, cell2, ranges) => {\n const range1 = findRangeConfig(cell1, ranges);\n const range2 = findRangeConfig(cell2, ranges);\n if (range1 && range2) {\n return (0, utils_1.areCellEqual)(range1.topLeft, range2.topLeft);\n }\n return false;\n};\nconst hashRange = (range) => {\n const { row, col } = range.topLeft;\n return `${row}/${col}`;\n};\nconst createSpanningCellManager = (parameters) => {\n const { spanningCellConfigs, columnsConfig } = parameters;\n const ranges = spanningCellConfigs.map((config) => {\n return (0, makeRangeConfig_1.makeRangeConfig)(config, columnsConfig);\n });\n const rangeCache = {};\n let rowHeights = [];\n let rowIndexMapping = [];\n return { getContainingRange: (cell, options) => {\n var _a;\n const originalRow = (options === null || options === void 0 ? void 0 : options.mapped) ? rowIndexMapping[cell.row] : cell.row;\n const range = findRangeConfig({ ...cell,\n row: originalRow }, ranges);\n if (!range) {\n return undefined;\n }\n if (rowHeights.length === 0) {\n return getContainingRange(range, { ...parameters,\n rowHeights });\n }\n const hash = hashRange(range);\n (_a = rangeCache[hash]) !== null && _a !== void 0 ? _a : (rangeCache[hash] = getContainingRange(range, { ...parameters,\n rowHeights }));\n return rangeCache[hash];\n },\n inSameRange: (cell1, cell2) => {\n return inSameRange(cell1, cell2, ranges);\n },\n rowHeights,\n rowIndexMapping,\n setRowHeights: (_rowHeights) => {\n rowHeights = _rowHeights;\n },\n setRowIndexMapping: (mappedRowHeights) => {\n rowIndexMapping = (0, utils_1.flatten)(mappedRowHeights.map((height, index) => {\n return Array.from({ length: height }, () => {\n return index;\n });\n }));\n } };\n};\nexports.createSpanningCellManager = createSpanningCellManager;\n//# sourceMappingURL=spanningCellManager.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.stringifyTableData = void 0;\nconst utils_1 = require(\"./utils\");\nconst stringifyTableData = (rows) => {\n return rows.map((cells) => {\n return cells.map((cell) => {\n return (0, utils_1.normalizeString)(String(cell));\n });\n });\n};\nexports.stringifyTableData = stringifyTableData;\n//# sourceMappingURL=stringifyTableData.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.table = void 0;\nconst alignTableData_1 = require(\"./alignTableData\");\nconst calculateOutputColumnWidths_1 = require(\"./calculateOutputColumnWidths\");\nconst calculateRowHeights_1 = require(\"./calculateRowHeights\");\nconst drawTable_1 = require(\"./drawTable\");\nconst injectHeaderConfig_1 = require(\"./injectHeaderConfig\");\nconst makeTableConfig_1 = require(\"./makeTableConfig\");\nconst mapDataUsingRowHeights_1 = require(\"./mapDataUsingRowHeights\");\nconst padTableData_1 = require(\"./padTableData\");\nconst stringifyTableData_1 = require(\"./stringifyTableData\");\nconst truncateTableData_1 = require(\"./truncateTableData\");\nconst utils_1 = require(\"./utils\");\nconst validateTableData_1 = require(\"./validateTableData\");\nconst table = (data, userConfig = {}) => {\n (0, validateTableData_1.validateTableData)(data);\n let rows = (0, stringifyTableData_1.stringifyTableData)(data);\n const [injectedRows, injectedSpanningCellConfig] = (0, injectHeaderConfig_1.injectHeaderConfig)(rows, userConfig);\n const config = (0, makeTableConfig_1.makeTableConfig)(injectedRows, userConfig, injectedSpanningCellConfig);\n rows = (0, truncateTableData_1.truncateTableData)(injectedRows, (0, utils_1.extractTruncates)(config));\n const rowHeights = (0, calculateRowHeights_1.calculateRowHeights)(rows, config);\n config.spanningCellManager.setRowHeights(rowHeights);\n config.spanningCellManager.setRowIndexMapping(rowHeights);\n rows = (0, mapDataUsingRowHeights_1.mapDataUsingRowHeights)(rows, rowHeights, config);\n rows = (0, alignTableData_1.alignTableData)(rows, config);\n rows = (0, padTableData_1.padTableData)(rows, config);\n const outputColumnWidths = (0, calculateOutputColumnWidths_1.calculateOutputColumnWidths)(config);\n return (0, drawTable_1.drawTable)(rows, outputColumnWidths, rowHeights, config);\n};\nexports.table = table;\n//# sourceMappingURL=table.js.map","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.truncateTableData = exports.truncateString = void 0;\nconst lodash_truncate_1 = __importDefault(require(\"lodash.truncate\"));\nconst truncateString = (input, length) => {\n return (0, lodash_truncate_1.default)(input, { length,\n omission: '…' });\n};\nexports.truncateString = truncateString;\n/**\n * @todo Make it work with ASCII content.\n */\nconst truncateTableData = (rows, truncates) => {\n return rows.map((cells) => {\n return cells.map((cell, cellIndex) => {\n return (0, exports.truncateString)(cell, truncates[cellIndex]);\n });\n });\n};\nexports.truncateTableData = truncateTableData;\n//# sourceMappingURL=truncateTableData.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//# sourceMappingURL=api.js.map","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isCellInRange = exports.areCellEqual = exports.calculateRangeCoordinate = exports.flatten = exports.extractTruncates = exports.sumArray = exports.sequence = exports.distributeUnevenly = exports.countSpaceSequence = exports.groupBySizes = exports.makeBorderConfig = exports.splitAnsi = exports.normalizeString = void 0;\nconst slice_ansi_1 = __importDefault(require(\"slice-ansi\"));\nconst string_width_1 = __importDefault(require(\"string-width\"));\nconst strip_ansi_1 = __importDefault(require(\"strip-ansi\"));\nconst getBorderCharacters_1 = require(\"./getBorderCharacters\");\n/**\n * Converts Windows-style newline to Unix-style\n *\n * @internal\n */\nconst normalizeString = (input) => {\n return input.replace(/\\r\\n/g, '\\n');\n};\nexports.normalizeString = normalizeString;\n/**\n * Splits ansi string by newlines\n *\n * @internal\n */\nconst splitAnsi = (input) => {\n const lengths = (0, strip_ansi_1.default)(input).split('\\n').map(string_width_1.default);\n const result = [];\n let startIndex = 0;\n lengths.forEach((length) => {\n result.push(length === 0 ? '' : (0, slice_ansi_1.default)(input, startIndex, startIndex + length));\n // Plus 1 for the newline character itself\n startIndex += length + 1;\n });\n return result;\n};\nexports.splitAnsi = splitAnsi;\n/**\n * Merges user provided border characters with the default border (\"honeywell\") characters.\n *\n * @internal\n */\nconst makeBorderConfig = (border) => {\n return {\n ...(0, getBorderCharacters_1.getBorderCharacters)('honeywell'),\n ...border,\n };\n};\nexports.makeBorderConfig = makeBorderConfig;\n/**\n * Groups the array into sub-arrays by sizes.\n *\n * @internal\n * @example\n * groupBySizes(['a', 'b', 'c', 'd', 'e'], [2, 1, 2]) = [ ['a', 'b'], ['c'], ['d', 'e'] ]\n */\nconst groupBySizes = (array, sizes) => {\n let startIndex = 0;\n return sizes.map((size) => {\n const group = array.slice(startIndex, startIndex + size);\n startIndex += size;\n return group;\n });\n};\nexports.groupBySizes = groupBySizes;\n/**\n * Counts the number of continuous spaces in a string\n *\n * @internal\n * @example\n * countGroupSpaces('a bc de f') = 3\n */\nconst countSpaceSequence = (input) => {\n var _a, _b;\n return (_b = (_a = input.match(/\\s+/g)) === null || _a === void 0 ? void 0 : _a.length) !== null && _b !== void 0 ? _b : 0;\n};\nexports.countSpaceSequence = countSpaceSequence;\n/**\n * Creates the non-increasing number array given sum and length\n * whose the difference between maximum and minimum is not greater than 1\n *\n * @internal\n * @example\n * distributeUnevenly(6, 3) = [2, 2, 2]\n * distributeUnevenly(8, 3) = [3, 3, 2]\n */\nconst distributeUnevenly = (sum, length) => {\n const result = Array.from({ length }).fill(Math.floor(sum / length));\n return result.map((element, index) => {\n return element + (index < sum % length ? 1 : 0);\n });\n};\nexports.distributeUnevenly = distributeUnevenly;\nconst sequence = (start, end) => {\n return Array.from({ length: end - start + 1 }, (_, index) => {\n return index + start;\n });\n};\nexports.sequence = sequence;\nconst sumArray = (array) => {\n return array.reduce((accumulator, element) => {\n return accumulator + element;\n }, 0);\n};\nexports.sumArray = sumArray;\nconst extractTruncates = (config) => {\n return config.columns.map(({ truncate }) => {\n return truncate;\n });\n};\nexports.extractTruncates = extractTruncates;\nconst flatten = (array) => {\n return [].concat(...array);\n};\nexports.flatten = flatten;\nconst calculateRangeCoordinate = (spanningCellConfig) => {\n const { row, col, colSpan = 1, rowSpan = 1 } = spanningCellConfig;\n return { bottomRight: { col: col + colSpan - 1,\n row: row + rowSpan - 1 },\n topLeft: { col,\n row } };\n};\nexports.calculateRangeCoordinate = calculateRangeCoordinate;\nconst areCellEqual = (cell1, cell2) => {\n return cell1.row === cell2.row && cell1.col === cell2.col;\n};\nexports.areCellEqual = areCellEqual;\nconst isCellInRange = (cell, { topLeft, bottomRight }) => {\n return (topLeft.row <= cell.row &&\n cell.row <= bottomRight.row &&\n topLeft.col <= cell.col &&\n cell.col <= bottomRight.col);\n};\nexports.isCellInRange = isCellInRange;\n//# sourceMappingURL=utils.js.map","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.validateConfig = void 0;\nconst validators_1 = __importDefault(require(\"./generated/validators\"));\nconst validateConfig = (schemaId, config) => {\n const validate = validators_1.default[schemaId];\n if (!validate(config) && validate.errors) {\n // eslint-disable-next-line promise/prefer-await-to-callbacks\n const errors = validate.errors.map((error) => {\n return {\n message: error.message,\n params: error.params,\n schemaPath: error.schemaPath,\n };\n });\n /* eslint-disable no-console */\n console.log('config', config);\n console.log('errors', errors);\n /* eslint-enable no-console */\n throw new Error('Invalid config.');\n }\n};\nexports.validateConfig = validateConfig;\n//# sourceMappingURL=validateConfig.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.validateSpanningCellConfig = void 0;\nconst utils_1 = require(\"./utils\");\nconst inRange = (start, end, value) => {\n return start <= value && value <= end;\n};\nconst validateSpanningCellConfig = (rows, configs) => {\n const [nRow, nCol] = [rows.length, rows[0].length];\n configs.forEach((config, configIndex) => {\n const { colSpan, rowSpan } = config;\n if (colSpan === undefined && rowSpan === undefined) {\n throw new Error(`Expect at least colSpan or rowSpan is provided in config.spanningCells[${configIndex}]`);\n }\n if (colSpan !== undefined && colSpan < 1) {\n throw new Error(`Expect colSpan is not equal zero, instead got: ${colSpan} in config.spanningCells[${configIndex}]`);\n }\n if (rowSpan !== undefined && rowSpan < 1) {\n throw new Error(`Expect rowSpan is not equal zero, instead got: ${rowSpan} in config.spanningCells[${configIndex}]`);\n }\n });\n const rangeCoordinates = configs.map(utils_1.calculateRangeCoordinate);\n rangeCoordinates.forEach(({ topLeft, bottomRight }, rangeIndex) => {\n if (!inRange(0, nCol - 1, topLeft.col) ||\n !inRange(0, nRow - 1, topLeft.row) ||\n !inRange(0, nCol - 1, bottomRight.col) ||\n !inRange(0, nRow - 1, bottomRight.row)) {\n throw new Error(`Some cells in config.spanningCells[${rangeIndex}] are out of the table`);\n }\n });\n const configOccupy = Array.from({ length: nRow }, () => {\n return Array.from({ length: nCol });\n });\n rangeCoordinates.forEach(({ topLeft, bottomRight }, rangeIndex) => {\n (0, utils_1.sequence)(topLeft.row, bottomRight.row).forEach((row) => {\n (0, utils_1.sequence)(topLeft.col, bottomRight.col).forEach((col) => {\n if (configOccupy[row][col] !== undefined) {\n throw new Error(`Spanning cells in config.spanningCells[${configOccupy[row][col]}] and config.spanningCells[${rangeIndex}] are overlap each other`);\n }\n configOccupy[row][col] = rangeIndex;\n });\n });\n });\n};\nexports.validateSpanningCellConfig = validateSpanningCellConfig;\n//# sourceMappingURL=validateSpanningCellConfig.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.validateTableData = void 0;\nconst utils_1 = require(\"./utils\");\nconst validateTableData = (rows) => {\n if (!Array.isArray(rows)) {\n throw new TypeError('Table data must be an array.');\n }\n if (rows.length === 0) {\n throw new Error('Table must define at least one row.');\n }\n if (rows[0].length === 0) {\n throw new Error('Table must define at least one column.');\n }\n const columnNumber = rows[0].length;\n for (const row of rows) {\n if (!Array.isArray(row)) {\n throw new TypeError('Table row data must be an array.');\n }\n if (row.length !== columnNumber) {\n throw new Error('Table must have a consistent number of cells.');\n }\n for (const cell of row) {\n // eslint-disable-next-line no-control-regex\n if (/[\\u0001-\\u0006\\u0008\\u0009\\u000B-\\u001A]/.test((0, utils_1.normalizeString)(String(cell)))) {\n throw new Error('Table data must not contain control characters.');\n }\n }\n }\n};\nexports.validateTableData = validateTableData;\n//# sourceMappingURL=validateTableData.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.wrapCell = void 0;\nconst utils_1 = require(\"./utils\");\nconst wrapString_1 = require(\"./wrapString\");\nconst wrapWord_1 = require(\"./wrapWord\");\n/**\n * Wrap a single cell value into a list of lines\n *\n * Always wraps on newlines, for the remainder uses either word or string wrapping\n * depending on user configuration.\n *\n */\nconst wrapCell = (cellValue, cellWidth, useWrapWord) => {\n // First split on literal newlines\n const cellLines = (0, utils_1.splitAnsi)(cellValue);\n // Then iterate over the list and word-wrap every remaining line if necessary.\n for (let lineNr = 0; lineNr < cellLines.length;) {\n let lineChunks;\n if (useWrapWord) {\n lineChunks = (0, wrapWord_1.wrapWord)(cellLines[lineNr], cellWidth);\n }\n else {\n lineChunks = (0, wrapString_1.wrapString)(cellLines[lineNr], cellWidth);\n }\n // Replace our original array element with whatever the wrapping returned\n cellLines.splice(lineNr, 1, ...lineChunks);\n lineNr += lineChunks.length;\n }\n return cellLines;\n};\nexports.wrapCell = wrapCell;\n//# sourceMappingURL=wrapCell.js.map","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.wrapString = void 0;\nconst slice_ansi_1 = __importDefault(require(\"slice-ansi\"));\nconst string_width_1 = __importDefault(require(\"string-width\"));\n/**\n * Creates an array of strings split into groups the length of size.\n * This function works with strings that contain ASCII characters.\n *\n * wrapText is different from would-be \"chunk\" implementation\n * in that whitespace characters that occur on a chunk size limit are trimmed.\n *\n */\nconst wrapString = (subject, size) => {\n let subjectSlice = subject;\n const chunks = [];\n do {\n chunks.push((0, slice_ansi_1.default)(subjectSlice, 0, size));\n subjectSlice = (0, slice_ansi_1.default)(subjectSlice, size).trim();\n } while ((0, string_width_1.default)(subjectSlice));\n return chunks;\n};\nexports.wrapString = wrapString;\n//# sourceMappingURL=wrapString.js.map","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.wrapWord = void 0;\nconst slice_ansi_1 = __importDefault(require(\"slice-ansi\"));\nconst strip_ansi_1 = __importDefault(require(\"strip-ansi\"));\nconst calculateStringLengths = (input, size) => {\n let subject = (0, strip_ansi_1.default)(input);\n const chunks = [];\n // https://regex101.com/r/gY5kZ1/1\n const re = new RegExp('(^.{1,' + String(Math.max(size, 1)) + '}(\\\\s+|$))|(^.{1,' + String(Math.max(size - 1, 1)) + '}(\\\\\\\\|/|_|\\\\.|,|;|-))');\n do {\n let chunk;\n const match = re.exec(subject);\n if (match) {\n chunk = match[0];\n subject = subject.slice(chunk.length);\n const trimmedLength = chunk.trim().length;\n const offset = chunk.length - trimmedLength;\n chunks.push([trimmedLength, offset]);\n }\n else {\n chunk = subject.slice(0, size);\n subject = subject.slice(size);\n chunks.push([chunk.length, 0]);\n }\n } while (subject.length);\n return chunks;\n};\nconst wrapWord = (input, size) => {\n const result = [];\n let startIndex = 0;\n calculateStringLengths(input, size).forEach(([length, offset]) => {\n result.push((0, slice_ansi_1.default)(input, startIndex, startIndex + length));\n startIndex += length + offset;\n });\n return result;\n};\nexports.wrapWord = wrapWord;\n//# sourceMappingURL=wrapWord.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n// https://github.com/ajv-validator/ajv/issues/889\nconst equal = require(\"fast-deep-equal\");\nequal.code = 'require(\"ajv/dist/runtime/equal\").default';\nexports.default = equal;\n//# sourceMappingURL=equal.js.map","/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global global, define, Symbol, Reflect, Promise, SuppressedError, Iterator */\r\nvar __extends;\r\nvar __assign;\r\nvar __rest;\r\nvar __decorate;\r\nvar __param;\r\nvar __esDecorate;\r\nvar __runInitializers;\r\nvar __propKey;\r\nvar __setFunctionName;\r\nvar __metadata;\r\nvar __awaiter;\r\nvar __generator;\r\nvar __exportStar;\r\nvar __values;\r\nvar __read;\r\nvar __spread;\r\nvar __spreadArrays;\r\nvar __spreadArray;\r\nvar __await;\r\nvar __asyncGenerator;\r\nvar __asyncDelegator;\r\nvar __asyncValues;\r\nvar __makeTemplateObject;\r\nvar __importStar;\r\nvar __importDefault;\r\nvar __classPrivateFieldGet;\r\nvar __classPrivateFieldSet;\r\nvar __classPrivateFieldIn;\r\nvar __createBinding;\r\nvar __addDisposableResource;\r\nvar __disposeResources;\r\n(function (factory) {\r\n var root = typeof global === \"object\" ? global : typeof self === \"object\" ? self : typeof this === \"object\" ? this : {};\r\n if (typeof define === \"function\" && define.amd) {\r\n define(\"tslib\", [\"exports\"], function (exports) { factory(createExporter(root, createExporter(exports))); });\r\n }\r\n else if (typeof module === \"object\" && typeof module.exports === \"object\") {\r\n factory(createExporter(root, createExporter(module.exports)));\r\n }\r\n else {\r\n factory(createExporter(root));\r\n }\r\n function createExporter(exports, previous) {\r\n if (exports !== root) {\r\n if (typeof Object.create === \"function\") {\r\n Object.defineProperty(exports, \"__esModule\", { value: true });\r\n }\r\n else {\r\n exports.__esModule = true;\r\n }\r\n }\r\n return function (id, v) { return exports[id] = previous ? previous(id, v) : v; };\r\n }\r\n})\r\n(function (exporter) {\r\n var extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n\r\n __extends = function (d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n\r\n __assign = Object.assign || function (t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n };\r\n\r\n __rest = function (s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n };\r\n\r\n __decorate = function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n };\r\n\r\n __param = function (paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n };\r\n\r\n __esDecorate = function (ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\r\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\r\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\r\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\r\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\r\n var _, done = false;\r\n for (var i = decorators.length - 1; i >= 0; i--) {\r\n var context = {};\r\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\r\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\r\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\r\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\r\n if (kind === \"accessor\") {\r\n if (result === void 0) continue;\r\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\r\n if (_ = accept(result.get)) descriptor.get = _;\r\n if (_ = accept(result.set)) descriptor.set = _;\r\n if (_ = accept(result.init)) initializers.unshift(_);\r\n }\r\n else if (_ = accept(result)) {\r\n if (kind === \"field\") initializers.unshift(_);\r\n else descriptor[key] = _;\r\n }\r\n }\r\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\r\n done = true;\r\n };\r\n\r\n __runInitializers = function (thisArg, initializers, value) {\r\n var useValue = arguments.length > 2;\r\n for (var i = 0; i < initializers.length; i++) {\r\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\r\n }\r\n return useValue ? value : void 0;\r\n };\r\n\r\n __propKey = function (x) {\r\n return typeof x === \"symbol\" ? x : \"\".concat(x);\r\n };\r\n\r\n __setFunctionName = function (f, name, prefix) {\r\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\r\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\r\n };\r\n\r\n __metadata = function (metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n };\r\n\r\n __awaiter = function (thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n };\r\n\r\n __generator = function (thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\r\n return g.next = verb(0), g[\"throw\"] = verb(1), g[\"return\"] = verb(2), typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n };\r\n\r\n __exportStar = function(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n };\r\n\r\n __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n var desc = Object.getOwnPropertyDescriptor(m, k);\r\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\r\n desc = { enumerable: true, get: function() { return m[k]; } };\r\n }\r\n Object.defineProperty(o, k2, desc);\r\n }) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n });\r\n\r\n __values = function (o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n };\r\n\r\n __read = function (o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n };\r\n\r\n /** @deprecated */\r\n __spread = function () {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n };\r\n\r\n /** @deprecated */\r\n __spreadArrays = function () {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n };\r\n\r\n __spreadArray = function (to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n };\r\n\r\n __await = function (v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n };\r\n\r\n __asyncGenerator = function (thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = Object.create((typeof AsyncIterator === \"function\" ? AsyncIterator : Object).prototype), verb(\"next\"), verb(\"throw\"), verb(\"return\", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }\r\n function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n };\r\n\r\n __asyncDelegator = function (o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\r\n };\r\n\r\n __asyncValues = function (o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n };\r\n\r\n __makeTemplateObject = function (cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n };\r\n\r\n var __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n }) : function(o, v) {\r\n o[\"default\"] = v;\r\n };\r\n\r\n __importStar = function (mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n };\r\n\r\n __importDefault = function (mod) {\r\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\r\n };\r\n\r\n __classPrivateFieldGet = function (receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n };\r\n\r\n __classPrivateFieldSet = function (receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n };\r\n\r\n __classPrivateFieldIn = function (state, receiver) {\r\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\r\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\r\n };\r\n\r\n __addDisposableResource = function (env, value, async) {\r\n if (value !== null && value !== void 0) {\r\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\r\n var dispose, inner;\r\n if (async) {\r\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\r\n dispose = value[Symbol.asyncDispose];\r\n }\r\n if (dispose === void 0) {\r\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\r\n dispose = value[Symbol.dispose];\r\n if (async) inner = dispose;\r\n }\r\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\r\n if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\r\n env.stack.push({ value: value, dispose: dispose, async: async });\r\n }\r\n else if (async) {\r\n env.stack.push({ async: true });\r\n }\r\n return value;\r\n };\r\n\r\n var _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\r\n var e = new Error(message);\r\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\r\n };\r\n\r\n __disposeResources = function (env) {\r\n function fail(e) {\r\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\r\n env.hasError = true;\r\n }\r\n var r, s = 0;\r\n function next() {\r\n while (r = env.stack.pop()) {\r\n try {\r\n if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);\r\n if (r.dispose) {\r\n var result = r.dispose.call(r.value);\r\n if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\r\n }\r\n else s |= 1;\r\n }\r\n catch (e) {\r\n fail(e);\r\n }\r\n }\r\n if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();\r\n if (env.hasError) throw env.error;\r\n }\r\n return next();\r\n };\r\n\r\n exporter(\"__extends\", __extends);\r\n exporter(\"__assign\", __assign);\r\n exporter(\"__rest\", __rest);\r\n exporter(\"__decorate\", __decorate);\r\n exporter(\"__param\", __param);\r\n exporter(\"__esDecorate\", __esDecorate);\r\n exporter(\"__runInitializers\", __runInitializers);\r\n exporter(\"__propKey\", __propKey);\r\n exporter(\"__setFunctionName\", __setFunctionName);\r\n exporter(\"__metadata\", __metadata);\r\n exporter(\"__awaiter\", __awaiter);\r\n exporter(\"__generator\", __generator);\r\n exporter(\"__exportStar\", __exportStar);\r\n exporter(\"__createBinding\", __createBinding);\r\n exporter(\"__values\", __values);\r\n exporter(\"__read\", __read);\r\n exporter(\"__spread\", __spread);\r\n exporter(\"__spreadArrays\", __spreadArrays);\r\n exporter(\"__spreadArray\", __spreadArray);\r\n exporter(\"__await\", __await);\r\n exporter(\"__asyncGenerator\", __asyncGenerator);\r\n exporter(\"__asyncDelegator\", __asyncDelegator);\r\n exporter(\"__asyncValues\", __asyncValues);\r\n exporter(\"__makeTemplateObject\", __makeTemplateObject);\r\n exporter(\"__importStar\", __importStar);\r\n exporter(\"__importDefault\", __importDefault);\r\n exporter(\"__classPrivateFieldGet\", __classPrivateFieldGet);\r\n exporter(\"__classPrivateFieldSet\", __classPrivateFieldSet);\r\n exporter(\"__classPrivateFieldIn\", __classPrivateFieldIn);\r\n exporter(\"__addDisposableResource\", __addDisposableResource);\r\n exporter(\"__disposeResources\", __disposeResources);\r\n});\r\n","module.exports = require('./lib/tunnel');\n","'use strict';\n\nvar net = require('net');\nvar tls = require('tls');\nvar http = require('http');\nvar https = require('https');\nvar events = require('events');\nvar assert = require('assert');\nvar util = require('util');\n\n\nexports.httpOverHttp = httpOverHttp;\nexports.httpsOverHttp = httpsOverHttp;\nexports.httpOverHttps = httpOverHttps;\nexports.httpsOverHttps = httpsOverHttps;\n\n\nfunction httpOverHttp(options) {\n var agent = new TunnelingAgent(options);\n agent.request = http.request;\n return agent;\n}\n\nfunction httpsOverHttp(options) {\n var agent = new TunnelingAgent(options);\n agent.request = http.request;\n agent.createSocket = createSecureSocket;\n agent.defaultPort = 443;\n return agent;\n}\n\nfunction httpOverHttps(options) {\n var agent = new TunnelingAgent(options);\n agent.request = https.request;\n return agent;\n}\n\nfunction httpsOverHttps(options) {\n var agent = new TunnelingAgent(options);\n agent.request = https.request;\n agent.createSocket = createSecureSocket;\n agent.defaultPort = 443;\n return agent;\n}\n\n\nfunction TunnelingAgent(options) {\n var self = this;\n self.options = options || {};\n self.proxyOptions = self.options.proxy || {};\n self.maxSockets = self.options.maxSockets || http.Agent.defaultMaxSockets;\n self.requests = [];\n self.sockets = [];\n\n self.on('free', function onFree(socket, host, port, localAddress) {\n var options = toOptions(host, port, localAddress);\n for (var i = 0, len = self.requests.length; i < len; ++i) {\n var pending = self.requests[i];\n if (pending.host === options.host && pending.port === options.port) {\n // Detect the request to connect same origin server,\n // reuse the connection.\n self.requests.splice(i, 1);\n pending.request.onSocket(socket);\n return;\n }\n }\n socket.destroy();\n self.removeSocket(socket);\n });\n}\nutil.inherits(TunnelingAgent, events.EventEmitter);\n\nTunnelingAgent.prototype.addRequest = function addRequest(req, host, port, localAddress) {\n var self = this;\n var options = mergeOptions({request: req}, self.options, toOptions(host, port, localAddress));\n\n if (self.sockets.length >= this.maxSockets) {\n // We are over limit so we'll add it to the queue.\n self.requests.push(options);\n return;\n }\n\n // If we are under maxSockets create a new one.\n self.createSocket(options, function(socket) {\n socket.on('free', onFree);\n socket.on('close', onCloseOrRemove);\n socket.on('agentRemove', onCloseOrRemove);\n req.onSocket(socket);\n\n function onFree() {\n self.emit('free', socket, options);\n }\n\n function onCloseOrRemove(err) {\n self.removeSocket(socket);\n socket.removeListener('free', onFree);\n socket.removeListener('close', onCloseOrRemove);\n socket.removeListener('agentRemove', onCloseOrRemove);\n }\n });\n};\n\nTunnelingAgent.prototype.createSocket = function createSocket(options, cb) {\n var self = this;\n var placeholder = {};\n self.sockets.push(placeholder);\n\n var connectOptions = mergeOptions({}, self.proxyOptions, {\n method: 'CONNECT',\n path: options.host + ':' + options.port,\n agent: false,\n headers: {\n host: options.host + ':' + options.port\n }\n });\n if (options.localAddress) {\n connectOptions.localAddress = options.localAddress;\n }\n if (connectOptions.proxyAuth) {\n connectOptions.headers = connectOptions.headers || {};\n connectOptions.headers['Proxy-Authorization'] = 'Basic ' +\n new Buffer(connectOptions.proxyAuth).toString('base64');\n }\n\n debug('making CONNECT request');\n var connectReq = self.request(connectOptions);\n connectReq.useChunkedEncodingByDefault = false; // for v0.6\n connectReq.once('response', onResponse); // for v0.6\n connectReq.once('upgrade', onUpgrade); // for v0.6\n connectReq.once('connect', onConnect); // for v0.7 or later\n connectReq.once('error', onError);\n connectReq.end();\n\n function onResponse(res) {\n // Very hacky. This is necessary to avoid http-parser leaks.\n res.upgrade = true;\n }\n\n function onUpgrade(res, socket, head) {\n // Hacky.\n process.nextTick(function() {\n onConnect(res, socket, head);\n });\n }\n\n function onConnect(res, socket, head) {\n connectReq.removeAllListeners();\n socket.removeAllListeners();\n\n if (res.statusCode !== 200) {\n debug('tunneling socket could not be established, statusCode=%d',\n res.statusCode);\n socket.destroy();\n var error = new Error('tunneling socket could not be established, ' +\n 'statusCode=' + res.statusCode);\n error.code = 'ECONNRESET';\n options.request.emit('error', error);\n self.removeSocket(placeholder);\n return;\n }\n if (head.length > 0) {\n debug('got illegal response body from proxy');\n socket.destroy();\n var error = new Error('got illegal response body from proxy');\n error.code = 'ECONNRESET';\n options.request.emit('error', error);\n self.removeSocket(placeholder);\n return;\n }\n debug('tunneling connection has established');\n self.sockets[self.sockets.indexOf(placeholder)] = socket;\n return cb(socket);\n }\n\n function onError(cause) {\n connectReq.removeAllListeners();\n\n debug('tunneling socket could not be established, cause=%s\\n',\n cause.message, cause.stack);\n var error = new Error('tunneling socket could not be established, ' +\n 'cause=' + cause.message);\n error.code = 'ECONNRESET';\n options.request.emit('error', error);\n self.removeSocket(placeholder);\n }\n};\n\nTunnelingAgent.prototype.removeSocket = function removeSocket(socket) {\n var pos = this.sockets.indexOf(socket)\n if (pos === -1) {\n return;\n }\n this.sockets.splice(pos, 1);\n\n var pending = this.requests.shift();\n if (pending) {\n // If we have pending requests and a socket gets closed a new one\n // needs to be created to take over in the pool for the one that closed.\n this.createSocket(pending, function(socket) {\n pending.request.onSocket(socket);\n });\n }\n};\n\nfunction createSecureSocket(options, cb) {\n var self = this;\n TunnelingAgent.prototype.createSocket.call(self, options, function(socket) {\n var hostHeader = options.request.getHeader('host');\n var tlsOptions = mergeOptions({}, self.options, {\n socket: socket,\n servername: hostHeader ? hostHeader.replace(/:.*$/, '') : options.host\n });\n\n // 0 is dummy port for v0.6\n var secureSocket = tls.connect(0, tlsOptions);\n self.sockets[self.sockets.indexOf(socket)] = secureSocket;\n cb(secureSocket);\n });\n}\n\n\nfunction toOptions(host, port, localAddress) {\n if (typeof host === 'string') { // since v0.10\n return {\n host: host,\n port: port,\n localAddress: localAddress\n };\n }\n return host; // for v0.11 or later\n}\n\nfunction mergeOptions(target) {\n for (var i = 1, len = arguments.length; i < len; ++i) {\n var overrides = arguments[i];\n if (typeof overrides === 'object') {\n var keys = Object.keys(overrides);\n for (var j = 0, keyLen = keys.length; j < keyLen; ++j) {\n var k = keys[j];\n if (overrides[k] !== undefined) {\n target[k] = overrides[k];\n }\n }\n }\n }\n return target;\n}\n\n\nvar debug;\nif (process.env.NODE_DEBUG && /\\btunnel\\b/.test(process.env.NODE_DEBUG)) {\n debug = function() {\n var args = Array.prototype.slice.call(arguments);\n if (typeof args[0] === 'string') {\n args[0] = 'TUNNEL: ' + args[0];\n } else {\n args.unshift('TUNNEL:');\n }\n console.error.apply(console, args);\n }\n} else {\n debug = function() {};\n}\nexports.debug = debug; // for test\n","'use strict'\n\nconst Client = require('./lib/client')\nconst Dispatcher = require('./lib/dispatcher')\nconst errors = require('./lib/core/errors')\nconst Pool = require('./lib/pool')\nconst BalancedPool = require('./lib/balanced-pool')\nconst Agent = require('./lib/agent')\nconst util = require('./lib/core/util')\nconst { InvalidArgumentError } = errors\nconst api = require('./lib/api')\nconst buildConnector = require('./lib/core/connect')\nconst MockClient = require('./lib/mock/mock-client')\nconst MockAgent = require('./lib/mock/mock-agent')\nconst MockPool = require('./lib/mock/mock-pool')\nconst mockErrors = require('./lib/mock/mock-errors')\nconst ProxyAgent = require('./lib/proxy-agent')\nconst RetryHandler = require('./lib/handler/RetryHandler')\nconst { getGlobalDispatcher, setGlobalDispatcher } = require('./lib/global')\nconst DecoratorHandler = require('./lib/handler/DecoratorHandler')\nconst RedirectHandler = require('./lib/handler/RedirectHandler')\nconst createRedirectInterceptor = require('./lib/interceptor/redirectInterceptor')\n\nlet hasCrypto\ntry {\n require('crypto')\n hasCrypto = true\n} catch {\n hasCrypto = false\n}\n\nObject.assign(Dispatcher.prototype, api)\n\nmodule.exports.Dispatcher = Dispatcher\nmodule.exports.Client = Client\nmodule.exports.Pool = Pool\nmodule.exports.BalancedPool = BalancedPool\nmodule.exports.Agent = Agent\nmodule.exports.ProxyAgent = ProxyAgent\nmodule.exports.RetryHandler = RetryHandler\n\nmodule.exports.DecoratorHandler = DecoratorHandler\nmodule.exports.RedirectHandler = RedirectHandler\nmodule.exports.createRedirectInterceptor = createRedirectInterceptor\n\nmodule.exports.buildConnector = buildConnector\nmodule.exports.errors = errors\n\nfunction makeDispatcher (fn) {\n return (url, opts, handler) => {\n if (typeof opts === 'function') {\n handler = opts\n opts = null\n }\n\n if (!url || (typeof url !== 'string' && typeof url !== 'object' && !(url instanceof URL))) {\n throw new InvalidArgumentError('invalid url')\n }\n\n if (opts != null && typeof opts !== 'object') {\n throw new InvalidArgumentError('invalid opts')\n }\n\n if (opts && opts.path != null) {\n if (typeof opts.path !== 'string') {\n throw new InvalidArgumentError('invalid opts.path')\n }\n\n let path = opts.path\n if (!opts.path.startsWith('/')) {\n path = `/${path}`\n }\n\n url = new URL(util.parseOrigin(url).origin + path)\n } else {\n if (!opts) {\n opts = typeof url === 'object' ? url : {}\n }\n\n url = util.parseURL(url)\n }\n\n const { agent, dispatcher = getGlobalDispatcher() } = opts\n\n if (agent) {\n throw new InvalidArgumentError('unsupported opts.agent. Did you mean opts.client?')\n }\n\n return fn.call(dispatcher, {\n ...opts,\n origin: url.origin,\n path: url.search ? `${url.pathname}${url.search}` : url.pathname,\n method: opts.method || (opts.body ? 'PUT' : 'GET')\n }, handler)\n }\n}\n\nmodule.exports.setGlobalDispatcher = setGlobalDispatcher\nmodule.exports.getGlobalDispatcher = getGlobalDispatcher\n\nif (util.nodeMajor > 16 || (util.nodeMajor === 16 && util.nodeMinor >= 8)) {\n let fetchImpl = null\n module.exports.fetch = async function fetch (resource) {\n if (!fetchImpl) {\n fetchImpl = require('./lib/fetch').fetch\n }\n\n try {\n return await fetchImpl(...arguments)\n } catch (err) {\n if (typeof err === 'object') {\n Error.captureStackTrace(err, this)\n }\n\n throw err\n }\n }\n module.exports.Headers = require('./lib/fetch/headers').Headers\n module.exports.Response = require('./lib/fetch/response').Response\n module.exports.Request = require('./lib/fetch/request').Request\n module.exports.FormData = require('./lib/fetch/formdata').FormData\n module.exports.File = require('./lib/fetch/file').File\n module.exports.FileReader = require('./lib/fileapi/filereader').FileReader\n\n const { setGlobalOrigin, getGlobalOrigin } = require('./lib/fetch/global')\n\n module.exports.setGlobalOrigin = setGlobalOrigin\n module.exports.getGlobalOrigin = getGlobalOrigin\n\n const { CacheStorage } = require('./lib/cache/cachestorage')\n const { kConstruct } = require('./lib/cache/symbols')\n\n // Cache & CacheStorage are tightly coupled with fetch. Even if it may run\n // in an older version of Node, it doesn't have any use without fetch.\n module.exports.caches = new CacheStorage(kConstruct)\n}\n\nif (util.nodeMajor >= 16) {\n const { deleteCookie, getCookies, getSetCookies, setCookie } = require('./lib/cookies')\n\n module.exports.deleteCookie = deleteCookie\n module.exports.getCookies = getCookies\n module.exports.getSetCookies = getSetCookies\n module.exports.setCookie = setCookie\n\n const { parseMIMEType, serializeAMimeType } = require('./lib/fetch/dataURL')\n\n module.exports.parseMIMEType = parseMIMEType\n module.exports.serializeAMimeType = serializeAMimeType\n}\n\nif (util.nodeMajor >= 18 && hasCrypto) {\n const { WebSocket } = require('./lib/websocket/websocket')\n\n module.exports.WebSocket = WebSocket\n}\n\nmodule.exports.request = makeDispatcher(api.request)\nmodule.exports.stream = makeDispatcher(api.stream)\nmodule.exports.pipeline = makeDispatcher(api.pipeline)\nmodule.exports.connect = makeDispatcher(api.connect)\nmodule.exports.upgrade = makeDispatcher(api.upgrade)\n\nmodule.exports.MockClient = MockClient\nmodule.exports.MockPool = MockPool\nmodule.exports.MockAgent = MockAgent\nmodule.exports.mockErrors = mockErrors\n","'use strict'\n\nconst { InvalidArgumentError } = require('./core/errors')\nconst { kClients, kRunning, kClose, kDestroy, kDispatch, kInterceptors } = require('./core/symbols')\nconst DispatcherBase = require('./dispatcher-base')\nconst Pool = require('./pool')\nconst Client = require('./client')\nconst util = require('./core/util')\nconst createRedirectInterceptor = require('./interceptor/redirectInterceptor')\nconst { WeakRef, FinalizationRegistry } = require('./compat/dispatcher-weakref')()\n\nconst kOnConnect = Symbol('onConnect')\nconst kOnDisconnect = Symbol('onDisconnect')\nconst kOnConnectionError = Symbol('onConnectionError')\nconst kMaxRedirections = Symbol('maxRedirections')\nconst kOnDrain = Symbol('onDrain')\nconst kFactory = Symbol('factory')\nconst kFinalizer = Symbol('finalizer')\nconst kOptions = Symbol('options')\n\nfunction defaultFactory (origin, opts) {\n return opts && opts.connections === 1\n ? new Client(origin, opts)\n : new Pool(origin, opts)\n}\n\nclass Agent extends DispatcherBase {\n constructor ({ factory = defaultFactory, maxRedirections = 0, connect, ...options } = {}) {\n super()\n\n if (typeof factory !== 'function') {\n throw new InvalidArgumentError('factory must be a function.')\n }\n\n if (connect != null && typeof connect !== 'function' && typeof connect !== 'object') {\n throw new InvalidArgumentError('connect must be a function or an object')\n }\n\n if (!Number.isInteger(maxRedirections) || maxRedirections < 0) {\n throw new InvalidArgumentError('maxRedirections must be a positive number')\n }\n\n if (connect && typeof connect !== 'function') {\n connect = { ...connect }\n }\n\n this[kInterceptors] = options.interceptors && options.interceptors.Agent && Array.isArray(options.interceptors.Agent)\n ? options.interceptors.Agent\n : [createRedirectInterceptor({ maxRedirections })]\n\n this[kOptions] = { ...util.deepClone(options), connect }\n this[kOptions].interceptors = options.interceptors\n ? { ...options.interceptors }\n : undefined\n this[kMaxRedirections] = maxRedirections\n this[kFactory] = factory\n this[kClients] = new Map()\n this[kFinalizer] = new FinalizationRegistry(/* istanbul ignore next: gc is undeterministic */ key => {\n const ref = this[kClients].get(key)\n if (ref !== undefined && ref.deref() === undefined) {\n this[kClients].delete(key)\n }\n })\n\n const agent = this\n\n this[kOnDrain] = (origin, targets) => {\n agent.emit('drain', origin, [agent, ...targets])\n }\n\n this[kOnConnect] = (origin, targets) => {\n agent.emit('connect', origin, [agent, ...targets])\n }\n\n this[kOnDisconnect] = (origin, targets, err) => {\n agent.emit('disconnect', origin, [agent, ...targets], err)\n }\n\n this[kOnConnectionError] = (origin, targets, err) => {\n agent.emit('connectionError', origin, [agent, ...targets], err)\n }\n }\n\n get [kRunning] () {\n let ret = 0\n for (const ref of this[kClients].values()) {\n const client = ref.deref()\n /* istanbul ignore next: gc is undeterministic */\n if (client) {\n ret += client[kRunning]\n }\n }\n return ret\n }\n\n [kDispatch] (opts, handler) {\n let key\n if (opts.origin && (typeof opts.origin === 'string' || opts.origin instanceof URL)) {\n key = String(opts.origin)\n } else {\n throw new InvalidArgumentError('opts.origin must be a non-empty string or URL.')\n }\n\n const ref = this[kClients].get(key)\n\n let dispatcher = ref ? ref.deref() : null\n if (!dispatcher) {\n dispatcher = this[kFactory](opts.origin, this[kOptions])\n .on('drain', this[kOnDrain])\n .on('connect', this[kOnConnect])\n .on('disconnect', this[kOnDisconnect])\n .on('connectionError', this[kOnConnectionError])\n\n this[kClients].set(key, new WeakRef(dispatcher))\n this[kFinalizer].register(dispatcher, key)\n }\n\n return dispatcher.dispatch(opts, handler)\n }\n\n async [kClose] () {\n const closePromises = []\n for (const ref of this[kClients].values()) {\n const client = ref.deref()\n /* istanbul ignore else: gc is undeterministic */\n if (client) {\n closePromises.push(client.close())\n }\n }\n\n await Promise.all(closePromises)\n }\n\n async [kDestroy] (err) {\n const destroyPromises = []\n for (const ref of this[kClients].values()) {\n const client = ref.deref()\n /* istanbul ignore else: gc is undeterministic */\n if (client) {\n destroyPromises.push(client.destroy(err))\n }\n }\n\n await Promise.all(destroyPromises)\n }\n}\n\nmodule.exports = Agent\n","const { addAbortListener } = require('../core/util')\nconst { RequestAbortedError } = require('../core/errors')\n\nconst kListener = Symbol('kListener')\nconst kSignal = Symbol('kSignal')\n\nfunction abort (self) {\n if (self.abort) {\n self.abort()\n } else {\n self.onError(new RequestAbortedError())\n }\n}\n\nfunction addSignal (self, signal) {\n self[kSignal] = null\n self[kListener] = null\n\n if (!signal) {\n return\n }\n\n if (signal.aborted) {\n abort(self)\n return\n }\n\n self[kSignal] = signal\n self[kListener] = () => {\n abort(self)\n }\n\n addAbortListener(self[kSignal], self[kListener])\n}\n\nfunction removeSignal (self) {\n if (!self[kSignal]) {\n return\n }\n\n if ('removeEventListener' in self[kSignal]) {\n self[kSignal].removeEventListener('abort', self[kListener])\n } else {\n self[kSignal].removeListener('abort', self[kListener])\n }\n\n self[kSignal] = null\n self[kListener] = null\n}\n\nmodule.exports = {\n addSignal,\n removeSignal\n}\n","'use strict'\n\nconst { AsyncResource } = require('async_hooks')\nconst { InvalidArgumentError, RequestAbortedError, SocketError } = require('../core/errors')\nconst util = require('../core/util')\nconst { addSignal, removeSignal } = require('./abort-signal')\n\nclass ConnectHandler extends AsyncResource {\n constructor (opts, callback) {\n if (!opts || typeof opts !== 'object') {\n throw new InvalidArgumentError('invalid opts')\n }\n\n if (typeof callback !== 'function') {\n throw new InvalidArgumentError('invalid callback')\n }\n\n const { signal, opaque, responseHeaders } = opts\n\n if (signal && typeof signal.on !== 'function' && typeof signal.addEventListener !== 'function') {\n throw new InvalidArgumentError('signal must be an EventEmitter or EventTarget')\n }\n\n super('UNDICI_CONNECT')\n\n this.opaque = opaque || null\n this.responseHeaders = responseHeaders || null\n this.callback = callback\n this.abort = null\n\n addSignal(this, signal)\n }\n\n onConnect (abort, context) {\n if (!this.callback) {\n throw new RequestAbortedError()\n }\n\n this.abort = abort\n this.context = context\n }\n\n onHeaders () {\n throw new SocketError('bad connect', null)\n }\n\n onUpgrade (statusCode, rawHeaders, socket) {\n const { callback, opaque, context } = this\n\n removeSignal(this)\n\n this.callback = null\n\n let headers = rawHeaders\n // Indicates is an HTTP2Session\n if (headers != null) {\n headers = this.responseHeaders === 'raw' ? util.parseRawHeaders(rawHeaders) : util.parseHeaders(rawHeaders)\n }\n\n this.runInAsyncScope(callback, null, null, {\n statusCode,\n headers,\n socket,\n opaque,\n context\n })\n }\n\n onError (err) {\n const { callback, opaque } = this\n\n removeSignal(this)\n\n if (callback) {\n this.callback = null\n queueMicrotask(() => {\n this.runInAsyncScope(callback, null, err, { opaque })\n })\n }\n }\n}\n\nfunction connect (opts, callback) {\n if (callback === undefined) {\n return new Promise((resolve, reject) => {\n connect.call(this, opts, (err, data) => {\n return err ? reject(err) : resolve(data)\n })\n })\n }\n\n try {\n const connectHandler = new ConnectHandler(opts, callback)\n this.dispatch({ ...opts, method: 'CONNECT' }, connectHandler)\n } catch (err) {\n if (typeof callback !== 'function') {\n throw err\n }\n const opaque = opts && opts.opaque\n queueMicrotask(() => callback(err, { opaque }))\n }\n}\n\nmodule.exports = connect\n","'use strict'\n\nconst {\n Readable,\n Duplex,\n PassThrough\n} = require('stream')\nconst {\n InvalidArgumentError,\n InvalidReturnValueError,\n RequestAbortedError\n} = require('../core/errors')\nconst util = require('../core/util')\nconst { AsyncResource } = require('async_hooks')\nconst { addSignal, removeSignal } = require('./abort-signal')\nconst assert = require('assert')\n\nconst kResume = Symbol('resume')\n\nclass PipelineRequest extends Readable {\n constructor () {\n super({ autoDestroy: true })\n\n this[kResume] = null\n }\n\n _read () {\n const { [kResume]: resume } = this\n\n if (resume) {\n this[kResume] = null\n resume()\n }\n }\n\n _destroy (err, callback) {\n this._read()\n\n callback(err)\n }\n}\n\nclass PipelineResponse extends Readable {\n constructor (resume) {\n super({ autoDestroy: true })\n this[kResume] = resume\n }\n\n _read () {\n this[kResume]()\n }\n\n _destroy (err, callback) {\n if (!err && !this._readableState.endEmitted) {\n err = new RequestAbortedError()\n }\n\n callback(err)\n }\n}\n\nclass PipelineHandler extends AsyncResource {\n constructor (opts, handler) {\n if (!opts || typeof opts !== 'object') {\n throw new InvalidArgumentError('invalid opts')\n }\n\n if (typeof handler !== 'function') {\n throw new InvalidArgumentError('invalid handler')\n }\n\n const { signal, method, opaque, onInfo, responseHeaders } = opts\n\n if (signal && typeof signal.on !== 'function' && typeof signal.addEventListener !== 'function') {\n throw new InvalidArgumentError('signal must be an EventEmitter or EventTarget')\n }\n\n if (method === 'CONNECT') {\n throw new InvalidArgumentError('invalid method')\n }\n\n if (onInfo && typeof onInfo !== 'function') {\n throw new InvalidArgumentError('invalid onInfo callback')\n }\n\n super('UNDICI_PIPELINE')\n\n this.opaque = opaque || null\n this.responseHeaders = responseHeaders || null\n this.handler = handler\n this.abort = null\n this.context = null\n this.onInfo = onInfo || null\n\n this.req = new PipelineRequest().on('error', util.nop)\n\n this.ret = new Duplex({\n readableObjectMode: opts.objectMode,\n autoDestroy: true,\n read: () => {\n const { body } = this\n\n if (body && body.resume) {\n body.resume()\n }\n },\n write: (chunk, encoding, callback) => {\n const { req } = this\n\n if (req.push(chunk, encoding) || req._readableState.destroyed) {\n callback()\n } else {\n req[kResume] = callback\n }\n },\n destroy: (err, callback) => {\n const { body, req, res, ret, abort } = this\n\n if (!err && !ret._readableState.endEmitted) {\n err = new RequestAbortedError()\n }\n\n if (abort && err) {\n abort()\n }\n\n util.destroy(body, err)\n util.destroy(req, err)\n util.destroy(res, err)\n\n removeSignal(this)\n\n callback(err)\n }\n }).on('prefinish', () => {\n const { req } = this\n\n // Node < 15 does not call _final in same tick.\n req.push(null)\n })\n\n this.res = null\n\n addSignal(this, signal)\n }\n\n onConnect (abort, context) {\n const { ret, res } = this\n\n assert(!res, 'pipeline cannot be retried')\n\n if (ret.destroyed) {\n throw new RequestAbortedError()\n }\n\n this.abort = abort\n this.context = context\n }\n\n onHeaders (statusCode, rawHeaders, resume) {\n const { opaque, handler, context } = this\n\n if (statusCode < 200) {\n if (this.onInfo) {\n const headers = this.responseHeaders === 'raw' ? util.parseRawHeaders(rawHeaders) : util.parseHeaders(rawHeaders)\n this.onInfo({ statusCode, headers })\n }\n return\n }\n\n this.res = new PipelineResponse(resume)\n\n let body\n try {\n this.handler = null\n const headers = this.responseHeaders === 'raw' ? util.parseRawHeaders(rawHeaders) : util.parseHeaders(rawHeaders)\n body = this.runInAsyncScope(handler, null, {\n statusCode,\n headers,\n opaque,\n body: this.res,\n context\n })\n } catch (err) {\n this.res.on('error', util.nop)\n throw err\n }\n\n if (!body || typeof body.on !== 'function') {\n throw new InvalidReturnValueError('expected Readable')\n }\n\n body\n .on('data', (chunk) => {\n const { ret, body } = this\n\n if (!ret.push(chunk) && body.pause) {\n body.pause()\n }\n })\n .on('error', (err) => {\n const { ret } = this\n\n util.destroy(ret, err)\n })\n .on('end', () => {\n const { ret } = this\n\n ret.push(null)\n })\n .on('close', () => {\n const { ret } = this\n\n if (!ret._readableState.ended) {\n util.destroy(ret, new RequestAbortedError())\n }\n })\n\n this.body = body\n }\n\n onData (chunk) {\n const { res } = this\n return res.push(chunk)\n }\n\n onComplete (trailers) {\n const { res } = this\n res.push(null)\n }\n\n onError (err) {\n const { ret } = this\n this.handler = null\n util.destroy(ret, err)\n }\n}\n\nfunction pipeline (opts, handler) {\n try {\n const pipelineHandler = new PipelineHandler(opts, handler)\n this.dispatch({ ...opts, body: pipelineHandler.req }, pipelineHandler)\n return pipelineHandler.ret\n } catch (err) {\n return new PassThrough().destroy(err)\n }\n}\n\nmodule.exports = pipeline\n","'use strict'\n\nconst Readable = require('./readable')\nconst {\n InvalidArgumentError,\n RequestAbortedError\n} = require('../core/errors')\nconst util = require('../core/util')\nconst { getResolveErrorBodyCallback } = require('./util')\nconst { AsyncResource } = require('async_hooks')\nconst { addSignal, removeSignal } = require('./abort-signal')\n\nclass RequestHandler extends AsyncResource {\n constructor (opts, callback) {\n if (!opts || typeof opts !== 'object') {\n throw new InvalidArgumentError('invalid opts')\n }\n\n const { signal, method, opaque, body, onInfo, responseHeaders, throwOnError, highWaterMark } = opts\n\n try {\n if (typeof callback !== 'function') {\n throw new InvalidArgumentError('invalid callback')\n }\n\n if (highWaterMark && (typeof highWaterMark !== 'number' || highWaterMark < 0)) {\n throw new InvalidArgumentError('invalid highWaterMark')\n }\n\n if (signal && typeof signal.on !== 'function' && typeof signal.addEventListener !== 'function') {\n throw new InvalidArgumentError('signal must be an EventEmitter or EventTarget')\n }\n\n if (method === 'CONNECT') {\n throw new InvalidArgumentError('invalid method')\n }\n\n if (onInfo && typeof onInfo !== 'function') {\n throw new InvalidArgumentError('invalid onInfo callback')\n }\n\n super('UNDICI_REQUEST')\n } catch (err) {\n if (util.isStream(body)) {\n util.destroy(body.on('error', util.nop), err)\n }\n throw err\n }\n\n this.responseHeaders = responseHeaders || null\n this.opaque = opaque || null\n this.callback = callback\n this.res = null\n this.abort = null\n this.body = body\n this.trailers = {}\n this.context = null\n this.onInfo = onInfo || null\n this.throwOnError = throwOnError\n this.highWaterMark = highWaterMark\n\n if (util.isStream(body)) {\n body.on('error', (err) => {\n this.onError(err)\n })\n }\n\n addSignal(this, signal)\n }\n\n onConnect (abort, context) {\n if (!this.callback) {\n throw new RequestAbortedError()\n }\n\n this.abort = abort\n this.context = context\n }\n\n onHeaders (statusCode, rawHeaders, resume, statusMessage) {\n const { callback, opaque, abort, context, responseHeaders, highWaterMark } = this\n\n const headers = responseHeaders === 'raw' ? util.parseRawHeaders(rawHeaders) : util.parseHeaders(rawHeaders)\n\n if (statusCode < 200) {\n if (this.onInfo) {\n this.onInfo({ statusCode, headers })\n }\n return\n }\n\n const parsedHeaders = responseHeaders === 'raw' ? util.parseHeaders(rawHeaders) : headers\n const contentType = parsedHeaders['content-type']\n const body = new Readable({ resume, abort, contentType, highWaterMark })\n\n this.callback = null\n this.res = body\n if (callback !== null) {\n if (this.throwOnError && statusCode >= 400) {\n this.runInAsyncScope(getResolveErrorBodyCallback, null,\n { callback, body, contentType, statusCode, statusMessage, headers }\n )\n } else {\n this.runInAsyncScope(callback, null, null, {\n statusCode,\n headers,\n trailers: this.trailers,\n opaque,\n body,\n context\n })\n }\n }\n }\n\n onData (chunk) {\n const { res } = this\n return res.push(chunk)\n }\n\n onComplete (trailers) {\n const { res } = this\n\n removeSignal(this)\n\n util.parseHeaders(trailers, this.trailers)\n\n res.push(null)\n }\n\n onError (err) {\n const { res, callback, body, opaque } = this\n\n removeSignal(this)\n\n if (callback) {\n // TODO: Does this need queueMicrotask?\n this.callback = null\n queueMicrotask(() => {\n this.runInAsyncScope(callback, null, err, { opaque })\n })\n }\n\n if (res) {\n this.res = null\n // Ensure all queued handlers are invoked before destroying res.\n queueMicrotask(() => {\n util.destroy(res, err)\n })\n }\n\n if (body) {\n this.body = null\n util.destroy(body, err)\n }\n }\n}\n\nfunction request (opts, callback) {\n if (callback === undefined) {\n return new Promise((resolve, reject) => {\n request.call(this, opts, (err, data) => {\n return err ? reject(err) : resolve(data)\n })\n })\n }\n\n try {\n this.dispatch(opts, new RequestHandler(opts, callback))\n } catch (err) {\n if (typeof callback !== 'function') {\n throw err\n }\n const opaque = opts && opts.opaque\n queueMicrotask(() => callback(err, { opaque }))\n }\n}\n\nmodule.exports = request\nmodule.exports.RequestHandler = RequestHandler\n","'use strict'\n\nconst { finished, PassThrough } = require('stream')\nconst {\n InvalidArgumentError,\n InvalidReturnValueError,\n RequestAbortedError\n} = require('../core/errors')\nconst util = require('../core/util')\nconst { getResolveErrorBodyCallback } = require('./util')\nconst { AsyncResource } = require('async_hooks')\nconst { addSignal, removeSignal } = require('./abort-signal')\n\nclass StreamHandler extends AsyncResource {\n constructor (opts, factory, callback) {\n if (!opts || typeof opts !== 'object') {\n throw new InvalidArgumentError('invalid opts')\n }\n\n const { signal, method, opaque, body, onInfo, responseHeaders, throwOnError } = opts\n\n try {\n if (typeof callback !== 'function') {\n throw new InvalidArgumentError('invalid callback')\n }\n\n if (typeof factory !== 'function') {\n throw new InvalidArgumentError('invalid factory')\n }\n\n if (signal && typeof signal.on !== 'function' && typeof signal.addEventListener !== 'function') {\n throw new InvalidArgumentError('signal must be an EventEmitter or EventTarget')\n }\n\n if (method === 'CONNECT') {\n throw new InvalidArgumentError('invalid method')\n }\n\n if (onInfo && typeof onInfo !== 'function') {\n throw new InvalidArgumentError('invalid onInfo callback')\n }\n\n super('UNDICI_STREAM')\n } catch (err) {\n if (util.isStream(body)) {\n util.destroy(body.on('error', util.nop), err)\n }\n throw err\n }\n\n this.responseHeaders = responseHeaders || null\n this.opaque = opaque || null\n this.factory = factory\n this.callback = callback\n this.res = null\n this.abort = null\n this.context = null\n this.trailers = null\n this.body = body\n this.onInfo = onInfo || null\n this.throwOnError = throwOnError || false\n\n if (util.isStream(body)) {\n body.on('error', (err) => {\n this.onError(err)\n })\n }\n\n addSignal(this, signal)\n }\n\n onConnect (abort, context) {\n if (!this.callback) {\n throw new RequestAbortedError()\n }\n\n this.abort = abort\n this.context = context\n }\n\n onHeaders (statusCode, rawHeaders, resume, statusMessage) {\n const { factory, opaque, context, callback, responseHeaders } = this\n\n const headers = responseHeaders === 'raw' ? util.parseRawHeaders(rawHeaders) : util.parseHeaders(rawHeaders)\n\n if (statusCode < 200) {\n if (this.onInfo) {\n this.onInfo({ statusCode, headers })\n }\n return\n }\n\n this.factory = null\n\n let res\n\n if (this.throwOnError && statusCode >= 400) {\n const parsedHeaders = responseHeaders === 'raw' ? util.parseHeaders(rawHeaders) : headers\n const contentType = parsedHeaders['content-type']\n res = new PassThrough()\n\n this.callback = null\n this.runInAsyncScope(getResolveErrorBodyCallback, null,\n { callback, body: res, contentType, statusCode, statusMessage, headers }\n )\n } else {\n if (factory === null) {\n return\n }\n\n res = this.runInAsyncScope(factory, null, {\n statusCode,\n headers,\n opaque,\n context\n })\n\n if (\n !res ||\n typeof res.write !== 'function' ||\n typeof res.end !== 'function' ||\n typeof res.on !== 'function'\n ) {\n throw new InvalidReturnValueError('expected Writable')\n }\n\n // TODO: Avoid finished. It registers an unnecessary amount of listeners.\n finished(res, { readable: false }, (err) => {\n const { callback, res, opaque, trailers, abort } = this\n\n this.res = null\n if (err || !res.readable) {\n util.destroy(res, err)\n }\n\n this.callback = null\n this.runInAsyncScope(callback, null, err || null, { opaque, trailers })\n\n if (err) {\n abort()\n }\n })\n }\n\n res.on('drain', resume)\n\n this.res = res\n\n const needDrain = res.writableNeedDrain !== undefined\n ? res.writableNeedDrain\n : res._writableState && res._writableState.needDrain\n\n return needDrain !== true\n }\n\n onData (chunk) {\n const { res } = this\n\n return res ? res.write(chunk) : true\n }\n\n onComplete (trailers) {\n const { res } = this\n\n removeSignal(this)\n\n if (!res) {\n return\n }\n\n this.trailers = util.parseHeaders(trailers)\n\n res.end()\n }\n\n onError (err) {\n const { res, callback, opaque, body } = this\n\n removeSignal(this)\n\n this.factory = null\n\n if (res) {\n this.res = null\n util.destroy(res, err)\n } else if (callback) {\n this.callback = null\n queueMicrotask(() => {\n this.runInAsyncScope(callback, null, err, { opaque })\n })\n }\n\n if (body) {\n this.body = null\n util.destroy(body, err)\n }\n }\n}\n\nfunction stream (opts, factory, callback) {\n if (callback === undefined) {\n return new Promise((resolve, reject) => {\n stream.call(this, opts, factory, (err, data) => {\n return err ? reject(err) : resolve(data)\n })\n })\n }\n\n try {\n this.dispatch(opts, new StreamHandler(opts, factory, callback))\n } catch (err) {\n if (typeof callback !== 'function') {\n throw err\n }\n const opaque = opts && opts.opaque\n queueMicrotask(() => callback(err, { opaque }))\n }\n}\n\nmodule.exports = stream\n","'use strict'\n\nconst { InvalidArgumentError, RequestAbortedError, SocketError } = require('../core/errors')\nconst { AsyncResource } = require('async_hooks')\nconst util = require('../core/util')\nconst { addSignal, removeSignal } = require('./abort-signal')\nconst assert = require('assert')\n\nclass UpgradeHandler extends AsyncResource {\n constructor (opts, callback) {\n if (!opts || typeof opts !== 'object') {\n throw new InvalidArgumentError('invalid opts')\n }\n\n if (typeof callback !== 'function') {\n throw new InvalidArgumentError('invalid callback')\n }\n\n const { signal, opaque, responseHeaders } = opts\n\n if (signal && typeof signal.on !== 'function' && typeof signal.addEventListener !== 'function') {\n throw new InvalidArgumentError('signal must be an EventEmitter or EventTarget')\n }\n\n super('UNDICI_UPGRADE')\n\n this.responseHeaders = responseHeaders || null\n this.opaque = opaque || null\n this.callback = callback\n this.abort = null\n this.context = null\n\n addSignal(this, signal)\n }\n\n onConnect (abort, context) {\n if (!this.callback) {\n throw new RequestAbortedError()\n }\n\n this.abort = abort\n this.context = null\n }\n\n onHeaders () {\n throw new SocketError('bad upgrade', null)\n }\n\n onUpgrade (statusCode, rawHeaders, socket) {\n const { callback, opaque, context } = this\n\n assert.strictEqual(statusCode, 101)\n\n removeSignal(this)\n\n this.callback = null\n const headers = this.responseHeaders === 'raw' ? util.parseRawHeaders(rawHeaders) : util.parseHeaders(rawHeaders)\n this.runInAsyncScope(callback, null, null, {\n headers,\n socket,\n opaque,\n context\n })\n }\n\n onError (err) {\n const { callback, opaque } = this\n\n removeSignal(this)\n\n if (callback) {\n this.callback = null\n queueMicrotask(() => {\n this.runInAsyncScope(callback, null, err, { opaque })\n })\n }\n }\n}\n\nfunction upgrade (opts, callback) {\n if (callback === undefined) {\n return new Promise((resolve, reject) => {\n upgrade.call(this, opts, (err, data) => {\n return err ? reject(err) : resolve(data)\n })\n })\n }\n\n try {\n const upgradeHandler = new UpgradeHandler(opts, callback)\n this.dispatch({\n ...opts,\n method: opts.method || 'GET',\n upgrade: opts.protocol || 'Websocket'\n }, upgradeHandler)\n } catch (err) {\n if (typeof callback !== 'function') {\n throw err\n }\n const opaque = opts && opts.opaque\n queueMicrotask(() => callback(err, { opaque }))\n }\n}\n\nmodule.exports = upgrade\n","'use strict'\n\nmodule.exports.request = require('./api-request')\nmodule.exports.stream = require('./api-stream')\nmodule.exports.pipeline = require('./api-pipeline')\nmodule.exports.upgrade = require('./api-upgrade')\nmodule.exports.connect = require('./api-connect')\n","// Ported from https://github.com/nodejs/undici/pull/907\n\n'use strict'\n\nconst assert = require('assert')\nconst { Readable } = require('stream')\nconst { RequestAbortedError, NotSupportedError, InvalidArgumentError } = require('../core/errors')\nconst util = require('../core/util')\nconst { ReadableStreamFrom, toUSVString } = require('../core/util')\n\nlet Blob\n\nconst kConsume = Symbol('kConsume')\nconst kReading = Symbol('kReading')\nconst kBody = Symbol('kBody')\nconst kAbort = Symbol('abort')\nconst kContentType = Symbol('kContentType')\n\nconst noop = () => {}\n\nmodule.exports = class BodyReadable extends Readable {\n constructor ({\n resume,\n abort,\n contentType = '',\n highWaterMark = 64 * 1024 // Same as nodejs fs streams.\n }) {\n super({\n autoDestroy: true,\n read: resume,\n highWaterMark\n })\n\n this._readableState.dataEmitted = false\n\n this[kAbort] = abort\n this[kConsume] = null\n this[kBody] = null\n this[kContentType] = contentType\n\n // Is stream being consumed through Readable API?\n // This is an optimization so that we avoid checking\n // for 'data' and 'readable' listeners in the hot path\n // inside push().\n this[kReading] = false\n }\n\n destroy (err) {\n if (this.destroyed) {\n // Node < 16\n return this\n }\n\n if (!err && !this._readableState.endEmitted) {\n err = new RequestAbortedError()\n }\n\n if (err) {\n this[kAbort]()\n }\n\n return super.destroy(err)\n }\n\n emit (ev, ...args) {\n if (ev === 'data') {\n // Node < 16.7\n this._readableState.dataEmitted = true\n } else if (ev === 'error') {\n // Node < 16\n this._readableState.errorEmitted = true\n }\n return super.emit(ev, ...args)\n }\n\n on (ev, ...args) {\n if (ev === 'data' || ev === 'readable') {\n this[kReading] = true\n }\n return super.on(ev, ...args)\n }\n\n addListener (ev, ...args) {\n return this.on(ev, ...args)\n }\n\n off (ev, ...args) {\n const ret = super.off(ev, ...args)\n if (ev === 'data' || ev === 'readable') {\n this[kReading] = (\n this.listenerCount('data') > 0 ||\n this.listenerCount('readable') > 0\n )\n }\n return ret\n }\n\n removeListener (ev, ...args) {\n return this.off(ev, ...args)\n }\n\n push (chunk) {\n if (this[kConsume] && chunk !== null && this.readableLength === 0) {\n consumePush(this[kConsume], chunk)\n return this[kReading] ? super.push(chunk) : true\n }\n return super.push(chunk)\n }\n\n // https://fetch.spec.whatwg.org/#dom-body-text\n async text () {\n return consume(this, 'text')\n }\n\n // https://fetch.spec.whatwg.org/#dom-body-json\n async json () {\n return consume(this, 'json')\n }\n\n // https://fetch.spec.whatwg.org/#dom-body-blob\n async blob () {\n return consume(this, 'blob')\n }\n\n // https://fetch.spec.whatwg.org/#dom-body-arraybuffer\n async arrayBuffer () {\n return consume(this, 'arrayBuffer')\n }\n\n // https://fetch.spec.whatwg.org/#dom-body-formdata\n async formData () {\n // TODO: Implement.\n throw new NotSupportedError()\n }\n\n // https://fetch.spec.whatwg.org/#dom-body-bodyused\n get bodyUsed () {\n return util.isDisturbed(this)\n }\n\n // https://fetch.spec.whatwg.org/#dom-body-body\n get body () {\n if (!this[kBody]) {\n this[kBody] = ReadableStreamFrom(this)\n if (this[kConsume]) {\n // TODO: Is this the best way to force a lock?\n this[kBody].getReader() // Ensure stream is locked.\n assert(this[kBody].locked)\n }\n }\n return this[kBody]\n }\n\n dump (opts) {\n let limit = opts && Number.isFinite(opts.limit) ? opts.limit : 262144\n const signal = opts && opts.signal\n\n if (signal) {\n try {\n if (typeof signal !== 'object' || !('aborted' in signal)) {\n throw new InvalidArgumentError('signal must be an AbortSignal')\n }\n util.throwIfAborted(signal)\n } catch (err) {\n return Promise.reject(err)\n }\n }\n\n if (this.closed) {\n return Promise.resolve(null)\n }\n\n return new Promise((resolve, reject) => {\n const signalListenerCleanup = signal\n ? util.addAbortListener(signal, () => {\n this.destroy()\n })\n : noop\n\n this\n .on('close', function () {\n signalListenerCleanup()\n if (signal && signal.aborted) {\n reject(signal.reason || Object.assign(new Error('The operation was aborted'), { name: 'AbortError' }))\n } else {\n resolve(null)\n }\n })\n .on('error', noop)\n .on('data', function (chunk) {\n limit -= chunk.length\n if (limit <= 0) {\n this.destroy()\n }\n })\n .resume()\n })\n }\n}\n\n// https://streams.spec.whatwg.org/#readablestream-locked\nfunction isLocked (self) {\n // Consume is an implicit lock.\n return (self[kBody] && self[kBody].locked === true) || self[kConsume]\n}\n\n// https://fetch.spec.whatwg.org/#body-unusable\nfunction isUnusable (self) {\n return util.isDisturbed(self) || isLocked(self)\n}\n\nasync function consume (stream, type) {\n if (isUnusable(stream)) {\n throw new TypeError('unusable')\n }\n\n assert(!stream[kConsume])\n\n return new Promise((resolve, reject) => {\n stream[kConsume] = {\n type,\n stream,\n resolve,\n reject,\n length: 0,\n body: []\n }\n\n stream\n .on('error', function (err) {\n consumeFinish(this[kConsume], err)\n })\n .on('close', function () {\n if (this[kConsume].body !== null) {\n consumeFinish(this[kConsume], new RequestAbortedError())\n }\n })\n\n process.nextTick(consumeStart, stream[kConsume])\n })\n}\n\nfunction consumeStart (consume) {\n if (consume.body === null) {\n return\n }\n\n const { _readableState: state } = consume.stream\n\n for (const chunk of state.buffer) {\n consumePush(consume, chunk)\n }\n\n if (state.endEmitted) {\n consumeEnd(this[kConsume])\n } else {\n consume.stream.on('end', function () {\n consumeEnd(this[kConsume])\n })\n }\n\n consume.stream.resume()\n\n while (consume.stream.read() != null) {\n // Loop\n }\n}\n\nfunction consumeEnd (consume) {\n const { type, body, resolve, stream, length } = consume\n\n try {\n if (type === 'text') {\n resolve(toUSVString(Buffer.concat(body)))\n } else if (type === 'json') {\n resolve(JSON.parse(Buffer.concat(body)))\n } else if (type === 'arrayBuffer') {\n const dst = new Uint8Array(length)\n\n let pos = 0\n for (const buf of body) {\n dst.set(buf, pos)\n pos += buf.byteLength\n }\n\n resolve(dst.buffer)\n } else if (type === 'blob') {\n if (!Blob) {\n Blob = require('buffer').Blob\n }\n resolve(new Blob(body, { type: stream[kContentType] }))\n }\n\n consumeFinish(consume)\n } catch (err) {\n stream.destroy(err)\n }\n}\n\nfunction consumePush (consume, chunk) {\n consume.length += chunk.length\n consume.body.push(chunk)\n}\n\nfunction consumeFinish (consume, err) {\n if (consume.body === null) {\n return\n }\n\n if (err) {\n consume.reject(err)\n } else {\n consume.resolve()\n }\n\n consume.type = null\n consume.stream = null\n consume.resolve = null\n consume.reject = null\n consume.length = 0\n consume.body = null\n}\n","const assert = require('assert')\nconst {\n ResponseStatusCodeError\n} = require('../core/errors')\nconst { toUSVString } = require('../core/util')\n\nasync function getResolveErrorBodyCallback ({ callback, body, contentType, statusCode, statusMessage, headers }) {\n assert(body)\n\n let chunks = []\n let limit = 0\n\n for await (const chunk of body) {\n chunks.push(chunk)\n limit += chunk.length\n if (limit > 128 * 1024) {\n chunks = null\n break\n }\n }\n\n if (statusCode === 204 || !contentType || !chunks) {\n process.nextTick(callback, new ResponseStatusCodeError(`Response status code ${statusCode}${statusMessage ? `: ${statusMessage}` : ''}`, statusCode, headers))\n return\n }\n\n try {\n if (contentType.startsWith('application/json')) {\n const payload = JSON.parse(toUSVString(Buffer.concat(chunks)))\n process.nextTick(callback, new ResponseStatusCodeError(`Response status code ${statusCode}${statusMessage ? `: ${statusMessage}` : ''}`, statusCode, headers, payload))\n return\n }\n\n if (contentType.startsWith('text/')) {\n const payload = toUSVString(Buffer.concat(chunks))\n process.nextTick(callback, new ResponseStatusCodeError(`Response status code ${statusCode}${statusMessage ? `: ${statusMessage}` : ''}`, statusCode, headers, payload))\n return\n }\n } catch (err) {\n // Process in a fallback if error\n }\n\n process.nextTick(callback, new ResponseStatusCodeError(`Response status code ${statusCode}${statusMessage ? `: ${statusMessage}` : ''}`, statusCode, headers))\n}\n\nmodule.exports = { getResolveErrorBodyCallback }\n","'use strict'\n\nconst {\n BalancedPoolMissingUpstreamError,\n InvalidArgumentError\n} = require('./core/errors')\nconst {\n PoolBase,\n kClients,\n kNeedDrain,\n kAddClient,\n kRemoveClient,\n kGetDispatcher\n} = require('./pool-base')\nconst Pool = require('./pool')\nconst { kUrl, kInterceptors } = require('./core/symbols')\nconst { parseOrigin } = require('./core/util')\nconst kFactory = Symbol('factory')\n\nconst kOptions = Symbol('options')\nconst kGreatestCommonDivisor = Symbol('kGreatestCommonDivisor')\nconst kCurrentWeight = Symbol('kCurrentWeight')\nconst kIndex = Symbol('kIndex')\nconst kWeight = Symbol('kWeight')\nconst kMaxWeightPerServer = Symbol('kMaxWeightPerServer')\nconst kErrorPenalty = Symbol('kErrorPenalty')\n\nfunction getGreatestCommonDivisor (a, b) {\n if (b === 0) return a\n return getGreatestCommonDivisor(b, a % b)\n}\n\nfunction defaultFactory (origin, opts) {\n return new Pool(origin, opts)\n}\n\nclass BalancedPool extends PoolBase {\n constructor (upstreams = [], { factory = defaultFactory, ...opts } = {}) {\n super()\n\n this[kOptions] = opts\n this[kIndex] = -1\n this[kCurrentWeight] = 0\n\n this[kMaxWeightPerServer] = this[kOptions].maxWeightPerServer || 100\n this[kErrorPenalty] = this[kOptions].errorPenalty || 15\n\n if (!Array.isArray(upstreams)) {\n upstreams = [upstreams]\n }\n\n if (typeof factory !== 'function') {\n throw new InvalidArgumentError('factory must be a function.')\n }\n\n this[kInterceptors] = opts.interceptors && opts.interceptors.BalancedPool && Array.isArray(opts.interceptors.BalancedPool)\n ? opts.interceptors.BalancedPool\n : []\n this[kFactory] = factory\n\n for (const upstream of upstreams) {\n this.addUpstream(upstream)\n }\n this._updateBalancedPoolStats()\n }\n\n addUpstream (upstream) {\n const upstreamOrigin = parseOrigin(upstream).origin\n\n if (this[kClients].find((pool) => (\n pool[kUrl].origin === upstreamOrigin &&\n pool.closed !== true &&\n pool.destroyed !== true\n ))) {\n return this\n }\n const pool = this[kFactory](upstreamOrigin, Object.assign({}, this[kOptions]))\n\n this[kAddClient](pool)\n pool.on('connect', () => {\n pool[kWeight] = Math.min(this[kMaxWeightPerServer], pool[kWeight] + this[kErrorPenalty])\n })\n\n pool.on('connectionError', () => {\n pool[kWeight] = Math.max(1, pool[kWeight] - this[kErrorPenalty])\n this._updateBalancedPoolStats()\n })\n\n pool.on('disconnect', (...args) => {\n const err = args[2]\n if (err && err.code === 'UND_ERR_SOCKET') {\n // decrease the weight of the pool.\n pool[kWeight] = Math.max(1, pool[kWeight] - this[kErrorPenalty])\n this._updateBalancedPoolStats()\n }\n })\n\n for (const client of this[kClients]) {\n client[kWeight] = this[kMaxWeightPerServer]\n }\n\n this._updateBalancedPoolStats()\n\n return this\n }\n\n _updateBalancedPoolStats () {\n this[kGreatestCommonDivisor] = this[kClients].map(p => p[kWeight]).reduce(getGreatestCommonDivisor, 0)\n }\n\n removeUpstream (upstream) {\n const upstreamOrigin = parseOrigin(upstream).origin\n\n const pool = this[kClients].find((pool) => (\n pool[kUrl].origin === upstreamOrigin &&\n pool.closed !== true &&\n pool.destroyed !== true\n ))\n\n if (pool) {\n this[kRemoveClient](pool)\n }\n\n return this\n }\n\n get upstreams () {\n return this[kClients]\n .filter(dispatcher => dispatcher.closed !== true && dispatcher.destroyed !== true)\n .map((p) => p[kUrl].origin)\n }\n\n [kGetDispatcher] () {\n // We validate that pools is greater than 0,\n // otherwise we would have to wait until an upstream\n // is added, which might never happen.\n if (this[kClients].length === 0) {\n throw new BalancedPoolMissingUpstreamError()\n }\n\n const dispatcher = this[kClients].find(dispatcher => (\n !dispatcher[kNeedDrain] &&\n dispatcher.closed !== true &&\n dispatcher.destroyed !== true\n ))\n\n if (!dispatcher) {\n return\n }\n\n const allClientsBusy = this[kClients].map(pool => pool[kNeedDrain]).reduce((a, b) => a && b, true)\n\n if (allClientsBusy) {\n return\n }\n\n let counter = 0\n\n let maxWeightIndex = this[kClients].findIndex(pool => !pool[kNeedDrain])\n\n while (counter++ < this[kClients].length) {\n this[kIndex] = (this[kIndex] + 1) % this[kClients].length\n const pool = this[kClients][this[kIndex]]\n\n // find pool index with the largest weight\n if (pool[kWeight] > this[kClients][maxWeightIndex][kWeight] && !pool[kNeedDrain]) {\n maxWeightIndex = this[kIndex]\n }\n\n // decrease the current weight every `this[kClients].length`.\n if (this[kIndex] === 0) {\n // Set the current weight to the next lower weight.\n this[kCurrentWeight] = this[kCurrentWeight] - this[kGreatestCommonDivisor]\n\n if (this[kCurrentWeight] <= 0) {\n this[kCurrentWeight] = this[kMaxWeightPerServer]\n }\n }\n if (pool[kWeight] >= this[kCurrentWeight] && (!pool[kNeedDrain])) {\n return pool\n }\n }\n\n this[kCurrentWeight] = this[kClients][maxWeightIndex][kWeight]\n this[kIndex] = maxWeightIndex\n return this[kClients][maxWeightIndex]\n }\n}\n\nmodule.exports = BalancedPool\n","'use strict'\n\nconst { kConstruct } = require('./symbols')\nconst { urlEquals, fieldValues: getFieldValues } = require('./util')\nconst { kEnumerableProperty, isDisturbed } = require('../core/util')\nconst { kHeadersList } = require('../core/symbols')\nconst { webidl } = require('../fetch/webidl')\nconst { Response, cloneResponse } = require('../fetch/response')\nconst { Request } = require('../fetch/request')\nconst { kState, kHeaders, kGuard, kRealm } = require('../fetch/symbols')\nconst { fetching } = require('../fetch/index')\nconst { urlIsHttpHttpsScheme, createDeferredPromise, readAllBytes } = require('../fetch/util')\nconst assert = require('assert')\nconst { getGlobalDispatcher } = require('../global')\n\n/**\n * @see https://w3c.github.io/ServiceWorker/#dfn-cache-batch-operation\n * @typedef {Object} CacheBatchOperation\n * @property {'delete' | 'put'} type\n * @property {any} request\n * @property {any} response\n * @property {import('../../types/cache').CacheQueryOptions} options\n */\n\n/**\n * @see https://w3c.github.io/ServiceWorker/#dfn-request-response-list\n * @typedef {[any, any][]} requestResponseList\n */\n\nclass Cache {\n /**\n * @see https://w3c.github.io/ServiceWorker/#dfn-relevant-request-response-list\n * @type {requestResponseList}\n */\n #relevantRequestResponseList\n\n constructor () {\n if (arguments[0] !== kConstruct) {\n webidl.illegalConstructor()\n }\n\n this.#relevantRequestResponseList = arguments[1]\n }\n\n async match (request, options = {}) {\n webidl.brandCheck(this, Cache)\n webidl.argumentLengthCheck(arguments, 1, { header: 'Cache.match' })\n\n request = webidl.converters.RequestInfo(request)\n options = webidl.converters.CacheQueryOptions(options)\n\n const p = await this.matchAll(request, options)\n\n if (p.length === 0) {\n return\n }\n\n return p[0]\n }\n\n async matchAll (request = undefined, options = {}) {\n webidl.brandCheck(this, Cache)\n\n if (request !== undefined) request = webidl.converters.RequestInfo(request)\n options = webidl.converters.CacheQueryOptions(options)\n\n // 1.\n let r = null\n\n // 2.\n if (request !== undefined) {\n if (request instanceof Request) {\n // 2.1.1\n r = request[kState]\n\n // 2.1.2\n if (r.method !== 'GET' && !options.ignoreMethod) {\n return []\n }\n } else if (typeof request === 'string') {\n // 2.2.1\n r = new Request(request)[kState]\n }\n }\n\n // 5.\n // 5.1\n const responses = []\n\n // 5.2\n if (request === undefined) {\n // 5.2.1\n for (const requestResponse of this.#relevantRequestResponseList) {\n responses.push(requestResponse[1])\n }\n } else { // 5.3\n // 5.3.1\n const requestResponses = this.#queryCache(r, options)\n\n // 5.3.2\n for (const requestResponse of requestResponses) {\n responses.push(requestResponse[1])\n }\n }\n\n // 5.4\n // We don't implement CORs so we don't need to loop over the responses, yay!\n\n // 5.5.1\n const responseList = []\n\n // 5.5.2\n for (const response of responses) {\n // 5.5.2.1\n const responseObject = new Response(response.body?.source ?? null)\n const body = responseObject[kState].body\n responseObject[kState] = response\n responseObject[kState].body = body\n responseObject[kHeaders][kHeadersList] = response.headersList\n responseObject[kHeaders][kGuard] = 'immutable'\n\n responseList.push(responseObject)\n }\n\n // 6.\n return Object.freeze(responseList)\n }\n\n async add (request) {\n webidl.brandCheck(this, Cache)\n webidl.argumentLengthCheck(arguments, 1, { header: 'Cache.add' })\n\n request = webidl.converters.RequestInfo(request)\n\n // 1.\n const requests = [request]\n\n // 2.\n const responseArrayPromise = this.addAll(requests)\n\n // 3.\n return await responseArrayPromise\n }\n\n async addAll (requests) {\n webidl.brandCheck(this, Cache)\n webidl.argumentLengthCheck(arguments, 1, { header: 'Cache.addAll' })\n\n requests = webidl.converters['sequence'](requests)\n\n // 1.\n const responsePromises = []\n\n // 2.\n const requestList = []\n\n // 3.\n for (const request of requests) {\n if (typeof request === 'string') {\n continue\n }\n\n // 3.1\n const r = request[kState]\n\n // 3.2\n if (!urlIsHttpHttpsScheme(r.url) || r.method !== 'GET') {\n throw webidl.errors.exception({\n header: 'Cache.addAll',\n message: 'Expected http/s scheme when method is not GET.'\n })\n }\n }\n\n // 4.\n /** @type {ReturnType[]} */\n const fetchControllers = []\n\n // 5.\n for (const request of requests) {\n // 5.1\n const r = new Request(request)[kState]\n\n // 5.2\n if (!urlIsHttpHttpsScheme(r.url)) {\n throw webidl.errors.exception({\n header: 'Cache.addAll',\n message: 'Expected http/s scheme.'\n })\n }\n\n // 5.4\n r.initiator = 'fetch'\n r.destination = 'subresource'\n\n // 5.5\n requestList.push(r)\n\n // 5.6\n const responsePromise = createDeferredPromise()\n\n // 5.7\n fetchControllers.push(fetching({\n request: r,\n dispatcher: getGlobalDispatcher(),\n processResponse (response) {\n // 1.\n if (response.type === 'error' || response.status === 206 || response.status < 200 || response.status > 299) {\n responsePromise.reject(webidl.errors.exception({\n header: 'Cache.addAll',\n message: 'Received an invalid status code or the request failed.'\n }))\n } else if (response.headersList.contains('vary')) { // 2.\n // 2.1\n const fieldValues = getFieldValues(response.headersList.get('vary'))\n\n // 2.2\n for (const fieldValue of fieldValues) {\n // 2.2.1\n if (fieldValue === '*') {\n responsePromise.reject(webidl.errors.exception({\n header: 'Cache.addAll',\n message: 'invalid vary field value'\n }))\n\n for (const controller of fetchControllers) {\n controller.abort()\n }\n\n return\n }\n }\n }\n },\n processResponseEndOfBody (response) {\n // 1.\n if (response.aborted) {\n responsePromise.reject(new DOMException('aborted', 'AbortError'))\n return\n }\n\n // 2.\n responsePromise.resolve(response)\n }\n }))\n\n // 5.8\n responsePromises.push(responsePromise.promise)\n }\n\n // 6.\n const p = Promise.all(responsePromises)\n\n // 7.\n const responses = await p\n\n // 7.1\n const operations = []\n\n // 7.2\n let index = 0\n\n // 7.3\n for (const response of responses) {\n // 7.3.1\n /** @type {CacheBatchOperation} */\n const operation = {\n type: 'put', // 7.3.2\n request: requestList[index], // 7.3.3\n response // 7.3.4\n }\n\n operations.push(operation) // 7.3.5\n\n index++ // 7.3.6\n }\n\n // 7.5\n const cacheJobPromise = createDeferredPromise()\n\n // 7.6.1\n let errorData = null\n\n // 7.6.2\n try {\n this.#batchCacheOperations(operations)\n } catch (e) {\n errorData = e\n }\n\n // 7.6.3\n queueMicrotask(() => {\n // 7.6.3.1\n if (errorData === null) {\n cacheJobPromise.resolve(undefined)\n } else {\n // 7.6.3.2\n cacheJobPromise.reject(errorData)\n }\n })\n\n // 7.7\n return cacheJobPromise.promise\n }\n\n async put (request, response) {\n webidl.brandCheck(this, Cache)\n webidl.argumentLengthCheck(arguments, 2, { header: 'Cache.put' })\n\n request = webidl.converters.RequestInfo(request)\n response = webidl.converters.Response(response)\n\n // 1.\n let innerRequest = null\n\n // 2.\n if (request instanceof Request) {\n innerRequest = request[kState]\n } else { // 3.\n innerRequest = new Request(request)[kState]\n }\n\n // 4.\n if (!urlIsHttpHttpsScheme(innerRequest.url) || innerRequest.method !== 'GET') {\n throw webidl.errors.exception({\n header: 'Cache.put',\n message: 'Expected an http/s scheme when method is not GET'\n })\n }\n\n // 5.\n const innerResponse = response[kState]\n\n // 6.\n if (innerResponse.status === 206) {\n throw webidl.errors.exception({\n header: 'Cache.put',\n message: 'Got 206 status'\n })\n }\n\n // 7.\n if (innerResponse.headersList.contains('vary')) {\n // 7.1.\n const fieldValues = getFieldValues(innerResponse.headersList.get('vary'))\n\n // 7.2.\n for (const fieldValue of fieldValues) {\n // 7.2.1\n if (fieldValue === '*') {\n throw webidl.errors.exception({\n header: 'Cache.put',\n message: 'Got * vary field value'\n })\n }\n }\n }\n\n // 8.\n if (innerResponse.body && (isDisturbed(innerResponse.body.stream) || innerResponse.body.stream.locked)) {\n throw webidl.errors.exception({\n header: 'Cache.put',\n message: 'Response body is locked or disturbed'\n })\n }\n\n // 9.\n const clonedResponse = cloneResponse(innerResponse)\n\n // 10.\n const bodyReadPromise = createDeferredPromise()\n\n // 11.\n if (innerResponse.body != null) {\n // 11.1\n const stream = innerResponse.body.stream\n\n // 11.2\n const reader = stream.getReader()\n\n // 11.3\n readAllBytes(reader).then(bodyReadPromise.resolve, bodyReadPromise.reject)\n } else {\n bodyReadPromise.resolve(undefined)\n }\n\n // 12.\n /** @type {CacheBatchOperation[]} */\n const operations = []\n\n // 13.\n /** @type {CacheBatchOperation} */\n const operation = {\n type: 'put', // 14.\n request: innerRequest, // 15.\n response: clonedResponse // 16.\n }\n\n // 17.\n operations.push(operation)\n\n // 19.\n const bytes = await bodyReadPromise.promise\n\n if (clonedResponse.body != null) {\n clonedResponse.body.source = bytes\n }\n\n // 19.1\n const cacheJobPromise = createDeferredPromise()\n\n // 19.2.1\n let errorData = null\n\n // 19.2.2\n try {\n this.#batchCacheOperations(operations)\n } catch (e) {\n errorData = e\n }\n\n // 19.2.3\n queueMicrotask(() => {\n // 19.2.3.1\n if (errorData === null) {\n cacheJobPromise.resolve()\n } else { // 19.2.3.2\n cacheJobPromise.reject(errorData)\n }\n })\n\n return cacheJobPromise.promise\n }\n\n async delete (request, options = {}) {\n webidl.brandCheck(this, Cache)\n webidl.argumentLengthCheck(arguments, 1, { header: 'Cache.delete' })\n\n request = webidl.converters.RequestInfo(request)\n options = webidl.converters.CacheQueryOptions(options)\n\n /**\n * @type {Request}\n */\n let r = null\n\n if (request instanceof Request) {\n r = request[kState]\n\n if (r.method !== 'GET' && !options.ignoreMethod) {\n return false\n }\n } else {\n assert(typeof request === 'string')\n\n r = new Request(request)[kState]\n }\n\n /** @type {CacheBatchOperation[]} */\n const operations = []\n\n /** @type {CacheBatchOperation} */\n const operation = {\n type: 'delete',\n request: r,\n options\n }\n\n operations.push(operation)\n\n const cacheJobPromise = createDeferredPromise()\n\n let errorData = null\n let requestResponses\n\n try {\n requestResponses = this.#batchCacheOperations(operations)\n } catch (e) {\n errorData = e\n }\n\n queueMicrotask(() => {\n if (errorData === null) {\n cacheJobPromise.resolve(!!requestResponses?.length)\n } else {\n cacheJobPromise.reject(errorData)\n }\n })\n\n return cacheJobPromise.promise\n }\n\n /**\n * @see https://w3c.github.io/ServiceWorker/#dom-cache-keys\n * @param {any} request\n * @param {import('../../types/cache').CacheQueryOptions} options\n * @returns {readonly Request[]}\n */\n async keys (request = undefined, options = {}) {\n webidl.brandCheck(this, Cache)\n\n if (request !== undefined) request = webidl.converters.RequestInfo(request)\n options = webidl.converters.CacheQueryOptions(options)\n\n // 1.\n let r = null\n\n // 2.\n if (request !== undefined) {\n // 2.1\n if (request instanceof Request) {\n // 2.1.1\n r = request[kState]\n\n // 2.1.2\n if (r.method !== 'GET' && !options.ignoreMethod) {\n return []\n }\n } else if (typeof request === 'string') { // 2.2\n r = new Request(request)[kState]\n }\n }\n\n // 4.\n const promise = createDeferredPromise()\n\n // 5.\n // 5.1\n const requests = []\n\n // 5.2\n if (request === undefined) {\n // 5.2.1\n for (const requestResponse of this.#relevantRequestResponseList) {\n // 5.2.1.1\n requests.push(requestResponse[0])\n }\n } else { // 5.3\n // 5.3.1\n const requestResponses = this.#queryCache(r, options)\n\n // 5.3.2\n for (const requestResponse of requestResponses) {\n // 5.3.2.1\n requests.push(requestResponse[0])\n }\n }\n\n // 5.4\n queueMicrotask(() => {\n // 5.4.1\n const requestList = []\n\n // 5.4.2\n for (const request of requests) {\n const requestObject = new Request('https://a')\n requestObject[kState] = request\n requestObject[kHeaders][kHeadersList] = request.headersList\n requestObject[kHeaders][kGuard] = 'immutable'\n requestObject[kRealm] = request.client\n\n // 5.4.2.1\n requestList.push(requestObject)\n }\n\n // 5.4.3\n promise.resolve(Object.freeze(requestList))\n })\n\n return promise.promise\n }\n\n /**\n * @see https://w3c.github.io/ServiceWorker/#batch-cache-operations-algorithm\n * @param {CacheBatchOperation[]} operations\n * @returns {requestResponseList}\n */\n #batchCacheOperations (operations) {\n // 1.\n const cache = this.#relevantRequestResponseList\n\n // 2.\n const backupCache = [...cache]\n\n // 3.\n const addedItems = []\n\n // 4.1\n const resultList = []\n\n try {\n // 4.2\n for (const operation of operations) {\n // 4.2.1\n if (operation.type !== 'delete' && operation.type !== 'put') {\n throw webidl.errors.exception({\n header: 'Cache.#batchCacheOperations',\n message: 'operation type does not match \"delete\" or \"put\"'\n })\n }\n\n // 4.2.2\n if (operation.type === 'delete' && operation.response != null) {\n throw webidl.errors.exception({\n header: 'Cache.#batchCacheOperations',\n message: 'delete operation should not have an associated response'\n })\n }\n\n // 4.2.3\n if (this.#queryCache(operation.request, operation.options, addedItems).length) {\n throw new DOMException('???', 'InvalidStateError')\n }\n\n // 4.2.4\n let requestResponses\n\n // 4.2.5\n if (operation.type === 'delete') {\n // 4.2.5.1\n requestResponses = this.#queryCache(operation.request, operation.options)\n\n // TODO: the spec is wrong, this is needed to pass WPTs\n if (requestResponses.length === 0) {\n return []\n }\n\n // 4.2.5.2\n for (const requestResponse of requestResponses) {\n const idx = cache.indexOf(requestResponse)\n assert(idx !== -1)\n\n // 4.2.5.2.1\n cache.splice(idx, 1)\n }\n } else if (operation.type === 'put') { // 4.2.6\n // 4.2.6.1\n if (operation.response == null) {\n throw webidl.errors.exception({\n header: 'Cache.#batchCacheOperations',\n message: 'put operation should have an associated response'\n })\n }\n\n // 4.2.6.2\n const r = operation.request\n\n // 4.2.6.3\n if (!urlIsHttpHttpsScheme(r.url)) {\n throw webidl.errors.exception({\n header: 'Cache.#batchCacheOperations',\n message: 'expected http or https scheme'\n })\n }\n\n // 4.2.6.4\n if (r.method !== 'GET') {\n throw webidl.errors.exception({\n header: 'Cache.#batchCacheOperations',\n message: 'not get method'\n })\n }\n\n // 4.2.6.5\n if (operation.options != null) {\n throw webidl.errors.exception({\n header: 'Cache.#batchCacheOperations',\n message: 'options must not be defined'\n })\n }\n\n // 4.2.6.6\n requestResponses = this.#queryCache(operation.request)\n\n // 4.2.6.7\n for (const requestResponse of requestResponses) {\n const idx = cache.indexOf(requestResponse)\n assert(idx !== -1)\n\n // 4.2.6.7.1\n cache.splice(idx, 1)\n }\n\n // 4.2.6.8\n cache.push([operation.request, operation.response])\n\n // 4.2.6.10\n addedItems.push([operation.request, operation.response])\n }\n\n // 4.2.7\n resultList.push([operation.request, operation.response])\n }\n\n // 4.3\n return resultList\n } catch (e) { // 5.\n // 5.1\n this.#relevantRequestResponseList.length = 0\n\n // 5.2\n this.#relevantRequestResponseList = backupCache\n\n // 5.3\n throw e\n }\n }\n\n /**\n * @see https://w3c.github.io/ServiceWorker/#query-cache\n * @param {any} requestQuery\n * @param {import('../../types/cache').CacheQueryOptions} options\n * @param {requestResponseList} targetStorage\n * @returns {requestResponseList}\n */\n #queryCache (requestQuery, options, targetStorage) {\n /** @type {requestResponseList} */\n const resultList = []\n\n const storage = targetStorage ?? this.#relevantRequestResponseList\n\n for (const requestResponse of storage) {\n const [cachedRequest, cachedResponse] = requestResponse\n if (this.#requestMatchesCachedItem(requestQuery, cachedRequest, cachedResponse, options)) {\n resultList.push(requestResponse)\n }\n }\n\n return resultList\n }\n\n /**\n * @see https://w3c.github.io/ServiceWorker/#request-matches-cached-item-algorithm\n * @param {any} requestQuery\n * @param {any} request\n * @param {any | null} response\n * @param {import('../../types/cache').CacheQueryOptions | undefined} options\n * @returns {boolean}\n */\n #requestMatchesCachedItem (requestQuery, request, response = null, options) {\n // if (options?.ignoreMethod === false && request.method === 'GET') {\n // return false\n // }\n\n const queryURL = new URL(requestQuery.url)\n\n const cachedURL = new URL(request.url)\n\n if (options?.ignoreSearch) {\n cachedURL.search = ''\n\n queryURL.search = ''\n }\n\n if (!urlEquals(queryURL, cachedURL, true)) {\n return false\n }\n\n if (\n response == null ||\n options?.ignoreVary ||\n !response.headersList.contains('vary')\n ) {\n return true\n }\n\n const fieldValues = getFieldValues(response.headersList.get('vary'))\n\n for (const fieldValue of fieldValues) {\n if (fieldValue === '*') {\n return false\n }\n\n const requestValue = request.headersList.get(fieldValue)\n const queryValue = requestQuery.headersList.get(fieldValue)\n\n // If one has the header and the other doesn't, or one has\n // a different value than the other, return false\n if (requestValue !== queryValue) {\n return false\n }\n }\n\n return true\n }\n}\n\nObject.defineProperties(Cache.prototype, {\n [Symbol.toStringTag]: {\n value: 'Cache',\n configurable: true\n },\n match: kEnumerableProperty,\n matchAll: kEnumerableProperty,\n add: kEnumerableProperty,\n addAll: kEnumerableProperty,\n put: kEnumerableProperty,\n delete: kEnumerableProperty,\n keys: kEnumerableProperty\n})\n\nconst cacheQueryOptionConverters = [\n {\n key: 'ignoreSearch',\n converter: webidl.converters.boolean,\n defaultValue: false\n },\n {\n key: 'ignoreMethod',\n converter: webidl.converters.boolean,\n defaultValue: false\n },\n {\n key: 'ignoreVary',\n converter: webidl.converters.boolean,\n defaultValue: false\n }\n]\n\nwebidl.converters.CacheQueryOptions = webidl.dictionaryConverter(cacheQueryOptionConverters)\n\nwebidl.converters.MultiCacheQueryOptions = webidl.dictionaryConverter([\n ...cacheQueryOptionConverters,\n {\n key: 'cacheName',\n converter: webidl.converters.DOMString\n }\n])\n\nwebidl.converters.Response = webidl.interfaceConverter(Response)\n\nwebidl.converters['sequence'] = webidl.sequenceConverter(\n webidl.converters.RequestInfo\n)\n\nmodule.exports = {\n Cache\n}\n","'use strict'\n\nconst { kConstruct } = require('./symbols')\nconst { Cache } = require('./cache')\nconst { webidl } = require('../fetch/webidl')\nconst { kEnumerableProperty } = require('../core/util')\n\nclass CacheStorage {\n /**\n * @see https://w3c.github.io/ServiceWorker/#dfn-relevant-name-to-cache-map\n * @type {Map}\n */\n async has (cacheName) {\n webidl.brandCheck(this, CacheStorage)\n webidl.argumentLengthCheck(arguments, 1, { header: 'CacheStorage.has' })\n\n cacheName = webidl.converters.DOMString(cacheName)\n\n // 2.1.1\n // 2.2\n return this.#caches.has(cacheName)\n }\n\n /**\n * @see https://w3c.github.io/ServiceWorker/#dom-cachestorage-open\n * @param {string} cacheName\n * @returns {Promise}\n */\n async open (cacheName) {\n webidl.brandCheck(this, CacheStorage)\n webidl.argumentLengthCheck(arguments, 1, { header: 'CacheStorage.open' })\n\n cacheName = webidl.converters.DOMString(cacheName)\n\n // 2.1\n if (this.#caches.has(cacheName)) {\n // await caches.open('v1') !== await caches.open('v1')\n\n // 2.1.1\n const cache = this.#caches.get(cacheName)\n\n // 2.1.1.1\n return new Cache(kConstruct, cache)\n }\n\n // 2.2\n const cache = []\n\n // 2.3\n this.#caches.set(cacheName, cache)\n\n // 2.4\n return new Cache(kConstruct, cache)\n }\n\n /**\n * @see https://w3c.github.io/ServiceWorker/#cache-storage-delete\n * @param {string} cacheName\n * @returns {Promise}\n */\n async delete (cacheName) {\n webidl.brandCheck(this, CacheStorage)\n webidl.argumentLengthCheck(arguments, 1, { header: 'CacheStorage.delete' })\n\n cacheName = webidl.converters.DOMString(cacheName)\n\n return this.#caches.delete(cacheName)\n }\n\n /**\n * @see https://w3c.github.io/ServiceWorker/#cache-storage-keys\n * @returns {string[]}\n */\n async keys () {\n webidl.brandCheck(this, CacheStorage)\n\n // 2.1\n const keys = this.#caches.keys()\n\n // 2.2\n return [...keys]\n }\n}\n\nObject.defineProperties(CacheStorage.prototype, {\n [Symbol.toStringTag]: {\n value: 'CacheStorage',\n configurable: true\n },\n match: kEnumerableProperty,\n has: kEnumerableProperty,\n open: kEnumerableProperty,\n delete: kEnumerableProperty,\n keys: kEnumerableProperty\n})\n\nmodule.exports = {\n CacheStorage\n}\n","'use strict'\n\nmodule.exports = {\n kConstruct: require('../core/symbols').kConstruct\n}\n","'use strict'\n\nconst assert = require('assert')\nconst { URLSerializer } = require('../fetch/dataURL')\nconst { isValidHeaderName } = require('../fetch/util')\n\n/**\n * @see https://url.spec.whatwg.org/#concept-url-equals\n * @param {URL} A\n * @param {URL} B\n * @param {boolean | undefined} excludeFragment\n * @returns {boolean}\n */\nfunction urlEquals (A, B, excludeFragment = false) {\n const serializedA = URLSerializer(A, excludeFragment)\n\n const serializedB = URLSerializer(B, excludeFragment)\n\n return serializedA === serializedB\n}\n\n/**\n * @see https://github.com/chromium/chromium/blob/694d20d134cb553d8d89e5500b9148012b1ba299/content/browser/cache_storage/cache_storage_cache.cc#L260-L262\n * @param {string} header\n */\nfunction fieldValues (header) {\n assert(header !== null)\n\n const values = []\n\n for (let value of header.split(',')) {\n value = value.trim()\n\n if (!value.length) {\n continue\n } else if (!isValidHeaderName(value)) {\n continue\n }\n\n values.push(value)\n }\n\n return values\n}\n\nmodule.exports = {\n urlEquals,\n fieldValues\n}\n","// @ts-check\n\n'use strict'\n\n/* global WebAssembly */\n\nconst assert = require('assert')\nconst net = require('net')\nconst http = require('http')\nconst { pipeline } = require('stream')\nconst util = require('./core/util')\nconst timers = require('./timers')\nconst Request = require('./core/request')\nconst DispatcherBase = require('./dispatcher-base')\nconst {\n RequestContentLengthMismatchError,\n ResponseContentLengthMismatchError,\n InvalidArgumentError,\n RequestAbortedError,\n HeadersTimeoutError,\n HeadersOverflowError,\n SocketError,\n InformationalError,\n BodyTimeoutError,\n HTTPParserError,\n ResponseExceededMaxSizeError,\n ClientDestroyedError\n} = require('./core/errors')\nconst buildConnector = require('./core/connect')\nconst {\n kUrl,\n kReset,\n kServerName,\n kClient,\n kBusy,\n kParser,\n kConnect,\n kBlocking,\n kResuming,\n kRunning,\n kPending,\n kSize,\n kWriting,\n kQueue,\n kConnected,\n kConnecting,\n kNeedDrain,\n kNoRef,\n kKeepAliveDefaultTimeout,\n kHostHeader,\n kPendingIdx,\n kRunningIdx,\n kError,\n kPipelining,\n kSocket,\n kKeepAliveTimeoutValue,\n kMaxHeadersSize,\n kKeepAliveMaxTimeout,\n kKeepAliveTimeoutThreshold,\n kHeadersTimeout,\n kBodyTimeout,\n kStrictContentLength,\n kConnector,\n kMaxRedirections,\n kMaxRequests,\n kCounter,\n kClose,\n kDestroy,\n kDispatch,\n kInterceptors,\n kLocalAddress,\n kMaxResponseSize,\n kHTTPConnVersion,\n // HTTP2\n kHost,\n kHTTP2Session,\n kHTTP2SessionState,\n kHTTP2BuildRequest,\n kHTTP2CopyHeaders,\n kHTTP1BuildRequest\n} = require('./core/symbols')\n\n/** @type {import('http2')} */\nlet http2\ntry {\n http2 = require('http2')\n} catch {\n // @ts-ignore\n http2 = { constants: {} }\n}\n\nconst {\n constants: {\n HTTP2_HEADER_AUTHORITY,\n HTTP2_HEADER_METHOD,\n HTTP2_HEADER_PATH,\n HTTP2_HEADER_SCHEME,\n HTTP2_HEADER_CONTENT_LENGTH,\n HTTP2_HEADER_EXPECT,\n HTTP2_HEADER_STATUS\n }\n} = http2\n\n// Experimental\nlet h2ExperimentalWarned = false\n\nconst FastBuffer = Buffer[Symbol.species]\n\nconst kClosedResolve = Symbol('kClosedResolve')\n\nconst channels = {}\n\ntry {\n const diagnosticsChannel = require('diagnostics_channel')\n channels.sendHeaders = diagnosticsChannel.channel('undici:client:sendHeaders')\n channels.beforeConnect = diagnosticsChannel.channel('undici:client:beforeConnect')\n channels.connectError = diagnosticsChannel.channel('undici:client:connectError')\n channels.connected = diagnosticsChannel.channel('undici:client:connected')\n} catch {\n channels.sendHeaders = { hasSubscribers: false }\n channels.beforeConnect = { hasSubscribers: false }\n channels.connectError = { hasSubscribers: false }\n channels.connected = { hasSubscribers: false }\n}\n\n/**\n * @type {import('../types/client').default}\n */\nclass Client extends DispatcherBase {\n /**\n *\n * @param {string|URL} url\n * @param {import('../types/client').Client.Options} options\n */\n constructor (url, {\n interceptors,\n maxHeaderSize,\n headersTimeout,\n socketTimeout,\n requestTimeout,\n connectTimeout,\n bodyTimeout,\n idleTimeout,\n keepAlive,\n keepAliveTimeout,\n maxKeepAliveTimeout,\n keepAliveMaxTimeout,\n keepAliveTimeoutThreshold,\n socketPath,\n pipelining,\n tls,\n strictContentLength,\n maxCachedSessions,\n maxRedirections,\n connect,\n maxRequestsPerClient,\n localAddress,\n maxResponseSize,\n autoSelectFamily,\n autoSelectFamilyAttemptTimeout,\n // h2\n allowH2,\n maxConcurrentStreams\n } = {}) {\n super()\n\n if (keepAlive !== undefined) {\n throw new InvalidArgumentError('unsupported keepAlive, use pipelining=0 instead')\n }\n\n if (socketTimeout !== undefined) {\n throw new InvalidArgumentError('unsupported socketTimeout, use headersTimeout & bodyTimeout instead')\n }\n\n if (requestTimeout !== undefined) {\n throw new InvalidArgumentError('unsupported requestTimeout, use headersTimeout & bodyTimeout instead')\n }\n\n if (idleTimeout !== undefined) {\n throw new InvalidArgumentError('unsupported idleTimeout, use keepAliveTimeout instead')\n }\n\n if (maxKeepAliveTimeout !== undefined) {\n throw new InvalidArgumentError('unsupported maxKeepAliveTimeout, use keepAliveMaxTimeout instead')\n }\n\n if (maxHeaderSize != null && !Number.isFinite(maxHeaderSize)) {\n throw new InvalidArgumentError('invalid maxHeaderSize')\n }\n\n if (socketPath != null && typeof socketPath !== 'string') {\n throw new InvalidArgumentError('invalid socketPath')\n }\n\n if (connectTimeout != null && (!Number.isFinite(connectTimeout) || connectTimeout < 0)) {\n throw new InvalidArgumentError('invalid connectTimeout')\n }\n\n if (keepAliveTimeout != null && (!Number.isFinite(keepAliveTimeout) || keepAliveTimeout <= 0)) {\n throw new InvalidArgumentError('invalid keepAliveTimeout')\n }\n\n if (keepAliveMaxTimeout != null && (!Number.isFinite(keepAliveMaxTimeout) || keepAliveMaxTimeout <= 0)) {\n throw new InvalidArgumentError('invalid keepAliveMaxTimeout')\n }\n\n if (keepAliveTimeoutThreshold != null && !Number.isFinite(keepAliveTimeoutThreshold)) {\n throw new InvalidArgumentError('invalid keepAliveTimeoutThreshold')\n }\n\n if (headersTimeout != null && (!Number.isInteger(headersTimeout) || headersTimeout < 0)) {\n throw new InvalidArgumentError('headersTimeout must be a positive integer or zero')\n }\n\n if (bodyTimeout != null && (!Number.isInteger(bodyTimeout) || bodyTimeout < 0)) {\n throw new InvalidArgumentError('bodyTimeout must be a positive integer or zero')\n }\n\n if (connect != null && typeof connect !== 'function' && typeof connect !== 'object') {\n throw new InvalidArgumentError('connect must be a function or an object')\n }\n\n if (maxRedirections != null && (!Number.isInteger(maxRedirections) || maxRedirections < 0)) {\n throw new InvalidArgumentError('maxRedirections must be a positive number')\n }\n\n if (maxRequestsPerClient != null && (!Number.isInteger(maxRequestsPerClient) || maxRequestsPerClient < 0)) {\n throw new InvalidArgumentError('maxRequestsPerClient must be a positive number')\n }\n\n if (localAddress != null && (typeof localAddress !== 'string' || net.isIP(localAddress) === 0)) {\n throw new InvalidArgumentError('localAddress must be valid string IP address')\n }\n\n if (maxResponseSize != null && (!Number.isInteger(maxResponseSize) || maxResponseSize < -1)) {\n throw new InvalidArgumentError('maxResponseSize must be a positive number')\n }\n\n if (\n autoSelectFamilyAttemptTimeout != null &&\n (!Number.isInteger(autoSelectFamilyAttemptTimeout) || autoSelectFamilyAttemptTimeout < -1)\n ) {\n throw new InvalidArgumentError('autoSelectFamilyAttemptTimeout must be a positive number')\n }\n\n // h2\n if (allowH2 != null && typeof allowH2 !== 'boolean') {\n throw new InvalidArgumentError('allowH2 must be a valid boolean value')\n }\n\n if (maxConcurrentStreams != null && (typeof maxConcurrentStreams !== 'number' || maxConcurrentStreams < 1)) {\n throw new InvalidArgumentError('maxConcurrentStreams must be a possitive integer, greater than 0')\n }\n\n if (typeof connect !== 'function') {\n connect = buildConnector({\n ...tls,\n maxCachedSessions,\n allowH2,\n socketPath,\n timeout: connectTimeout,\n ...(util.nodeHasAutoSelectFamily && autoSelectFamily ? { autoSelectFamily, autoSelectFamilyAttemptTimeout } : undefined),\n ...connect\n })\n }\n\n this[kInterceptors] = interceptors && interceptors.Client && Array.isArray(interceptors.Client)\n ? interceptors.Client\n : [createRedirectInterceptor({ maxRedirections })]\n this[kUrl] = util.parseOrigin(url)\n this[kConnector] = connect\n this[kSocket] = null\n this[kPipelining] = pipelining != null ? pipelining : 1\n this[kMaxHeadersSize] = maxHeaderSize || http.maxHeaderSize\n this[kKeepAliveDefaultTimeout] = keepAliveTimeout == null ? 4e3 : keepAliveTimeout\n this[kKeepAliveMaxTimeout] = keepAliveMaxTimeout == null ? 600e3 : keepAliveMaxTimeout\n this[kKeepAliveTimeoutThreshold] = keepAliveTimeoutThreshold == null ? 1e3 : keepAliveTimeoutThreshold\n this[kKeepAliveTimeoutValue] = this[kKeepAliveDefaultTimeout]\n this[kServerName] = null\n this[kLocalAddress] = localAddress != null ? localAddress : null\n this[kResuming] = 0 // 0, idle, 1, scheduled, 2 resuming\n this[kNeedDrain] = 0 // 0, idle, 1, scheduled, 2 resuming\n this[kHostHeader] = `host: ${this[kUrl].hostname}${this[kUrl].port ? `:${this[kUrl].port}` : ''}\\r\\n`\n this[kBodyTimeout] = bodyTimeout != null ? bodyTimeout : 300e3\n this[kHeadersTimeout] = headersTimeout != null ? headersTimeout : 300e3\n this[kStrictContentLength] = strictContentLength == null ? true : strictContentLength\n this[kMaxRedirections] = maxRedirections\n this[kMaxRequests] = maxRequestsPerClient\n this[kClosedResolve] = null\n this[kMaxResponseSize] = maxResponseSize > -1 ? maxResponseSize : -1\n this[kHTTPConnVersion] = 'h1'\n\n // HTTP/2\n this[kHTTP2Session] = null\n this[kHTTP2SessionState] = !allowH2\n ? null\n : {\n // streams: null, // Fixed queue of streams - For future support of `push`\n openStreams: 0, // Keep track of them to decide wether or not unref the session\n maxConcurrentStreams: maxConcurrentStreams != null ? maxConcurrentStreams : 100 // Max peerConcurrentStreams for a Node h2 server\n }\n this[kHost] = `${this[kUrl].hostname}${this[kUrl].port ? `:${this[kUrl].port}` : ''}`\n\n // kQueue is built up of 3 sections separated by\n // the kRunningIdx and kPendingIdx indices.\n // | complete | running | pending |\n // ^ kRunningIdx ^ kPendingIdx ^ kQueue.length\n // kRunningIdx points to the first running element.\n // kPendingIdx points to the first pending element.\n // This implements a fast queue with an amortized\n // time of O(1).\n\n this[kQueue] = []\n this[kRunningIdx] = 0\n this[kPendingIdx] = 0\n }\n\n get pipelining () {\n return this[kPipelining]\n }\n\n set pipelining (value) {\n this[kPipelining] = value\n resume(this, true)\n }\n\n get [kPending] () {\n return this[kQueue].length - this[kPendingIdx]\n }\n\n get [kRunning] () {\n return this[kPendingIdx] - this[kRunningIdx]\n }\n\n get [kSize] () {\n return this[kQueue].length - this[kRunningIdx]\n }\n\n get [kConnected] () {\n return !!this[kSocket] && !this[kConnecting] && !this[kSocket].destroyed\n }\n\n get [kBusy] () {\n const socket = this[kSocket]\n return (\n (socket && (socket[kReset] || socket[kWriting] || socket[kBlocking])) ||\n (this[kSize] >= (this[kPipelining] || 1)) ||\n this[kPending] > 0\n )\n }\n\n /* istanbul ignore: only used for test */\n [kConnect] (cb) {\n connect(this)\n this.once('connect', cb)\n }\n\n [kDispatch] (opts, handler) {\n const origin = opts.origin || this[kUrl].origin\n\n const request = this[kHTTPConnVersion] === 'h2'\n ? Request[kHTTP2BuildRequest](origin, opts, handler)\n : Request[kHTTP1BuildRequest](origin, opts, handler)\n\n this[kQueue].push(request)\n if (this[kResuming]) {\n // Do nothing.\n } else if (util.bodyLength(request.body) == null && util.isIterable(request.body)) {\n // Wait a tick in case stream/iterator is ended in the same tick.\n this[kResuming] = 1\n process.nextTick(resume, this)\n } else {\n resume(this, true)\n }\n\n if (this[kResuming] && this[kNeedDrain] !== 2 && this[kBusy]) {\n this[kNeedDrain] = 2\n }\n\n return this[kNeedDrain] < 2\n }\n\n async [kClose] () {\n // TODO: for H2 we need to gracefully flush the remaining enqueued\n // request and close each stream.\n return new Promise((resolve) => {\n if (!this[kSize]) {\n resolve(null)\n } else {\n this[kClosedResolve] = resolve\n }\n })\n }\n\n async [kDestroy] (err) {\n return new Promise((resolve) => {\n const requests = this[kQueue].splice(this[kPendingIdx])\n for (let i = 0; i < requests.length; i++) {\n const request = requests[i]\n errorRequest(this, request, err)\n }\n\n const callback = () => {\n if (this[kClosedResolve]) {\n // TODO (fix): Should we error here with ClientDestroyedError?\n this[kClosedResolve]()\n this[kClosedResolve] = null\n }\n resolve()\n }\n\n if (this[kHTTP2Session] != null) {\n util.destroy(this[kHTTP2Session], err)\n this[kHTTP2Session] = null\n this[kHTTP2SessionState] = null\n }\n\n if (!this[kSocket]) {\n queueMicrotask(callback)\n } else {\n util.destroy(this[kSocket].on('close', callback), err)\n }\n\n resume(this)\n })\n }\n}\n\nfunction onHttp2SessionError (err) {\n assert(err.code !== 'ERR_TLS_CERT_ALTNAME_INVALID')\n\n this[kSocket][kError] = err\n\n onError(this[kClient], err)\n}\n\nfunction onHttp2FrameError (type, code, id) {\n const err = new InformationalError(`HTTP/2: \"frameError\" received - type ${type}, code ${code}`)\n\n if (id === 0) {\n this[kSocket][kError] = err\n onError(this[kClient], err)\n }\n}\n\nfunction onHttp2SessionEnd () {\n util.destroy(this, new SocketError('other side closed'))\n util.destroy(this[kSocket], new SocketError('other side closed'))\n}\n\nfunction onHTTP2GoAway (code) {\n const client = this[kClient]\n const err = new InformationalError(`HTTP/2: \"GOAWAY\" frame received with code ${code}`)\n client[kSocket] = null\n client[kHTTP2Session] = null\n\n if (client.destroyed) {\n assert(this[kPending] === 0)\n\n // Fail entire queue.\n const requests = client[kQueue].splice(client[kRunningIdx])\n for (let i = 0; i < requests.length; i++) {\n const request = requests[i]\n errorRequest(this, request, err)\n }\n } else if (client[kRunning] > 0) {\n // Fail head of pipeline.\n const request = client[kQueue][client[kRunningIdx]]\n client[kQueue][client[kRunningIdx]++] = null\n\n errorRequest(client, request, err)\n }\n\n client[kPendingIdx] = client[kRunningIdx]\n\n assert(client[kRunning] === 0)\n\n client.emit('disconnect',\n client[kUrl],\n [client],\n err\n )\n\n resume(client)\n}\n\nconst constants = require('./llhttp/constants')\nconst createRedirectInterceptor = require('./interceptor/redirectInterceptor')\nconst EMPTY_BUF = Buffer.alloc(0)\n\nasync function lazyllhttp () {\n const llhttpWasmData = process.env.JEST_WORKER_ID ? require('./llhttp/llhttp-wasm.js') : undefined\n\n let mod\n try {\n mod = await WebAssembly.compile(Buffer.from(require('./llhttp/llhttp_simd-wasm.js'), 'base64'))\n } catch (e) {\n /* istanbul ignore next */\n\n // We could check if the error was caused by the simd option not\n // being enabled, but the occurring of this other error\n // * https://github.com/emscripten-core/emscripten/issues/11495\n // got me to remove that check to avoid breaking Node 12.\n mod = await WebAssembly.compile(Buffer.from(llhttpWasmData || require('./llhttp/llhttp-wasm.js'), 'base64'))\n }\n\n return await WebAssembly.instantiate(mod, {\n env: {\n /* eslint-disable camelcase */\n\n wasm_on_url: (p, at, len) => {\n /* istanbul ignore next */\n return 0\n },\n wasm_on_status: (p, at, len) => {\n assert.strictEqual(currentParser.ptr, p)\n const start = at - currentBufferPtr + currentBufferRef.byteOffset\n return currentParser.onStatus(new FastBuffer(currentBufferRef.buffer, start, len)) || 0\n },\n wasm_on_message_begin: (p) => {\n assert.strictEqual(currentParser.ptr, p)\n return currentParser.onMessageBegin() || 0\n },\n wasm_on_header_field: (p, at, len) => {\n assert.strictEqual(currentParser.ptr, p)\n const start = at - currentBufferPtr + currentBufferRef.byteOffset\n return currentParser.onHeaderField(new FastBuffer(currentBufferRef.buffer, start, len)) || 0\n },\n wasm_on_header_value: (p, at, len) => {\n assert.strictEqual(currentParser.ptr, p)\n const start = at - currentBufferPtr + currentBufferRef.byteOffset\n return currentParser.onHeaderValue(new FastBuffer(currentBufferRef.buffer, start, len)) || 0\n },\n wasm_on_headers_complete: (p, statusCode, upgrade, shouldKeepAlive) => {\n assert.strictEqual(currentParser.ptr, p)\n return currentParser.onHeadersComplete(statusCode, Boolean(upgrade), Boolean(shouldKeepAlive)) || 0\n },\n wasm_on_body: (p, at, len) => {\n assert.strictEqual(currentParser.ptr, p)\n const start = at - currentBufferPtr + currentBufferRef.byteOffset\n return currentParser.onBody(new FastBuffer(currentBufferRef.buffer, start, len)) || 0\n },\n wasm_on_message_complete: (p) => {\n assert.strictEqual(currentParser.ptr, p)\n return currentParser.onMessageComplete() || 0\n }\n\n /* eslint-enable camelcase */\n }\n })\n}\n\nlet llhttpInstance = null\nlet llhttpPromise = lazyllhttp()\nllhttpPromise.catch()\n\nlet currentParser = null\nlet currentBufferRef = null\nlet currentBufferSize = 0\nlet currentBufferPtr = null\n\nconst TIMEOUT_HEADERS = 1\nconst TIMEOUT_BODY = 2\nconst TIMEOUT_IDLE = 3\n\nclass Parser {\n constructor (client, socket, { exports }) {\n assert(Number.isFinite(client[kMaxHeadersSize]) && client[kMaxHeadersSize] > 0)\n\n this.llhttp = exports\n this.ptr = this.llhttp.llhttp_alloc(constants.TYPE.RESPONSE)\n this.client = client\n this.socket = socket\n this.timeout = null\n this.timeoutValue = null\n this.timeoutType = null\n this.statusCode = null\n this.statusText = ''\n this.upgrade = false\n this.headers = []\n this.headersSize = 0\n this.headersMaxSize = client[kMaxHeadersSize]\n this.shouldKeepAlive = false\n this.paused = false\n this.resume = this.resume.bind(this)\n\n this.bytesRead = 0\n\n this.keepAlive = ''\n this.contentLength = ''\n this.connection = ''\n this.maxResponseSize = client[kMaxResponseSize]\n }\n\n setTimeout (value, type) {\n this.timeoutType = type\n if (value !== this.timeoutValue) {\n timers.clearTimeout(this.timeout)\n if (value) {\n this.timeout = timers.setTimeout(onParserTimeout, value, this)\n // istanbul ignore else: only for jest\n if (this.timeout.unref) {\n this.timeout.unref()\n }\n } else {\n this.timeout = null\n }\n this.timeoutValue = value\n } else if (this.timeout) {\n // istanbul ignore else: only for jest\n if (this.timeout.refresh) {\n this.timeout.refresh()\n }\n }\n }\n\n resume () {\n if (this.socket.destroyed || !this.paused) {\n return\n }\n\n assert(this.ptr != null)\n assert(currentParser == null)\n\n this.llhttp.llhttp_resume(this.ptr)\n\n assert(this.timeoutType === TIMEOUT_BODY)\n if (this.timeout) {\n // istanbul ignore else: only for jest\n if (this.timeout.refresh) {\n this.timeout.refresh()\n }\n }\n\n this.paused = false\n this.execute(this.socket.read() || EMPTY_BUF) // Flush parser.\n this.readMore()\n }\n\n readMore () {\n while (!this.paused && this.ptr) {\n const chunk = this.socket.read()\n if (chunk === null) {\n break\n }\n this.execute(chunk)\n }\n }\n\n execute (data) {\n assert(this.ptr != null)\n assert(currentParser == null)\n assert(!this.paused)\n\n const { socket, llhttp } = this\n\n if (data.length > currentBufferSize) {\n if (currentBufferPtr) {\n llhttp.free(currentBufferPtr)\n }\n currentBufferSize = Math.ceil(data.length / 4096) * 4096\n currentBufferPtr = llhttp.malloc(currentBufferSize)\n }\n\n new Uint8Array(llhttp.memory.buffer, currentBufferPtr, currentBufferSize).set(data)\n\n // Call `execute` on the wasm parser.\n // We pass the `llhttp_parser` pointer address, the pointer address of buffer view data,\n // and finally the length of bytes to parse.\n // The return value is an error code or `constants.ERROR.OK`.\n try {\n let ret\n\n try {\n currentBufferRef = data\n currentParser = this\n ret = llhttp.llhttp_execute(this.ptr, currentBufferPtr, data.length)\n /* eslint-disable-next-line no-useless-catch */\n } catch (err) {\n /* istanbul ignore next: difficult to make a test case for */\n throw err\n } finally {\n currentParser = null\n currentBufferRef = null\n }\n\n const offset = llhttp.llhttp_get_error_pos(this.ptr) - currentBufferPtr\n\n if (ret === constants.ERROR.PAUSED_UPGRADE) {\n this.onUpgrade(data.slice(offset))\n } else if (ret === constants.ERROR.PAUSED) {\n this.paused = true\n socket.unshift(data.slice(offset))\n } else if (ret !== constants.ERROR.OK) {\n const ptr = llhttp.llhttp_get_error_reason(this.ptr)\n let message = ''\n /* istanbul ignore else: difficult to make a test case for */\n if (ptr) {\n const len = new Uint8Array(llhttp.memory.buffer, ptr).indexOf(0)\n message =\n 'Response does not match the HTTP/1.1 protocol (' +\n Buffer.from(llhttp.memory.buffer, ptr, len).toString() +\n ')'\n }\n throw new HTTPParserError(message, constants.ERROR[ret], data.slice(offset))\n }\n } catch (err) {\n util.destroy(socket, err)\n }\n }\n\n destroy () {\n assert(this.ptr != null)\n assert(currentParser == null)\n\n this.llhttp.llhttp_free(this.ptr)\n this.ptr = null\n\n timers.clearTimeout(this.timeout)\n this.timeout = null\n this.timeoutValue = null\n this.timeoutType = null\n\n this.paused = false\n }\n\n onStatus (buf) {\n this.statusText = buf.toString()\n }\n\n onMessageBegin () {\n const { socket, client } = this\n\n /* istanbul ignore next: difficult to make a test case for */\n if (socket.destroyed) {\n return -1\n }\n\n const request = client[kQueue][client[kRunningIdx]]\n if (!request) {\n return -1\n }\n }\n\n onHeaderField (buf) {\n const len = this.headers.length\n\n if ((len & 1) === 0) {\n this.headers.push(buf)\n } else {\n this.headers[len - 1] = Buffer.concat([this.headers[len - 1], buf])\n }\n\n this.trackHeader(buf.length)\n }\n\n onHeaderValue (buf) {\n let len = this.headers.length\n\n if ((len & 1) === 1) {\n this.headers.push(buf)\n len += 1\n } else {\n this.headers[len - 1] = Buffer.concat([this.headers[len - 1], buf])\n }\n\n const key = this.headers[len - 2]\n if (key.length === 10 && key.toString().toLowerCase() === 'keep-alive') {\n this.keepAlive += buf.toString()\n } else if (key.length === 10 && key.toString().toLowerCase() === 'connection') {\n this.connection += buf.toString()\n } else if (key.length === 14 && key.toString().toLowerCase() === 'content-length') {\n this.contentLength += buf.toString()\n }\n\n this.trackHeader(buf.length)\n }\n\n trackHeader (len) {\n this.headersSize += len\n if (this.headersSize >= this.headersMaxSize) {\n util.destroy(this.socket, new HeadersOverflowError())\n }\n }\n\n onUpgrade (head) {\n const { upgrade, client, socket, headers, statusCode } = this\n\n assert(upgrade)\n\n const request = client[kQueue][client[kRunningIdx]]\n assert(request)\n\n assert(!socket.destroyed)\n assert(socket === client[kSocket])\n assert(!this.paused)\n assert(request.upgrade || request.method === 'CONNECT')\n\n this.statusCode = null\n this.statusText = ''\n this.shouldKeepAlive = null\n\n assert(this.headers.length % 2 === 0)\n this.headers = []\n this.headersSize = 0\n\n socket.unshift(head)\n\n socket[kParser].destroy()\n socket[kParser] = null\n\n socket[kClient] = null\n socket[kError] = null\n socket\n .removeListener('error', onSocketError)\n .removeListener('readable', onSocketReadable)\n .removeListener('end', onSocketEnd)\n .removeListener('close', onSocketClose)\n\n client[kSocket] = null\n client[kQueue][client[kRunningIdx]++] = null\n client.emit('disconnect', client[kUrl], [client], new InformationalError('upgrade'))\n\n try {\n request.onUpgrade(statusCode, headers, socket)\n } catch (err) {\n util.destroy(socket, err)\n }\n\n resume(client)\n }\n\n onHeadersComplete (statusCode, upgrade, shouldKeepAlive) {\n const { client, socket, headers, statusText } = this\n\n /* istanbul ignore next: difficult to make a test case for */\n if (socket.destroyed) {\n return -1\n }\n\n const request = client[kQueue][client[kRunningIdx]]\n\n /* istanbul ignore next: difficult to make a test case for */\n if (!request) {\n return -1\n }\n\n assert(!this.upgrade)\n assert(this.statusCode < 200)\n\n if (statusCode === 100) {\n util.destroy(socket, new SocketError('bad response', util.getSocketInfo(socket)))\n return -1\n }\n\n /* this can only happen if server is misbehaving */\n if (upgrade && !request.upgrade) {\n util.destroy(socket, new SocketError('bad upgrade', util.getSocketInfo(socket)))\n return -1\n }\n\n assert.strictEqual(this.timeoutType, TIMEOUT_HEADERS)\n\n this.statusCode = statusCode\n this.shouldKeepAlive = (\n shouldKeepAlive ||\n // Override llhttp value which does not allow keepAlive for HEAD.\n (request.method === 'HEAD' && !socket[kReset] && this.connection.toLowerCase() === 'keep-alive')\n )\n\n if (this.statusCode >= 200) {\n const bodyTimeout = request.bodyTimeout != null\n ? request.bodyTimeout\n : client[kBodyTimeout]\n this.setTimeout(bodyTimeout, TIMEOUT_BODY)\n } else if (this.timeout) {\n // istanbul ignore else: only for jest\n if (this.timeout.refresh) {\n this.timeout.refresh()\n }\n }\n\n if (request.method === 'CONNECT') {\n assert(client[kRunning] === 1)\n this.upgrade = true\n return 2\n }\n\n if (upgrade) {\n assert(client[kRunning] === 1)\n this.upgrade = true\n return 2\n }\n\n assert(this.headers.length % 2 === 0)\n this.headers = []\n this.headersSize = 0\n\n if (this.shouldKeepAlive && client[kPipelining]) {\n const keepAliveTimeout = this.keepAlive ? util.parseKeepAliveTimeout(this.keepAlive) : null\n\n if (keepAliveTimeout != null) {\n const timeout = Math.min(\n keepAliveTimeout - client[kKeepAliveTimeoutThreshold],\n client[kKeepAliveMaxTimeout]\n )\n if (timeout <= 0) {\n socket[kReset] = true\n } else {\n client[kKeepAliveTimeoutValue] = timeout\n }\n } else {\n client[kKeepAliveTimeoutValue] = client[kKeepAliveDefaultTimeout]\n }\n } else {\n // Stop more requests from being dispatched.\n socket[kReset] = true\n }\n\n const pause = request.onHeaders(statusCode, headers, this.resume, statusText) === false\n\n if (request.aborted) {\n return -1\n }\n\n if (request.method === 'HEAD') {\n return 1\n }\n\n if (statusCode < 200) {\n return 1\n }\n\n if (socket[kBlocking]) {\n socket[kBlocking] = false\n resume(client)\n }\n\n return pause ? constants.ERROR.PAUSED : 0\n }\n\n onBody (buf) {\n const { client, socket, statusCode, maxResponseSize } = this\n\n if (socket.destroyed) {\n return -1\n }\n\n const request = client[kQueue][client[kRunningIdx]]\n assert(request)\n\n assert.strictEqual(this.timeoutType, TIMEOUT_BODY)\n if (this.timeout) {\n // istanbul ignore else: only for jest\n if (this.timeout.refresh) {\n this.timeout.refresh()\n }\n }\n\n assert(statusCode >= 200)\n\n if (maxResponseSize > -1 && this.bytesRead + buf.length > maxResponseSize) {\n util.destroy(socket, new ResponseExceededMaxSizeError())\n return -1\n }\n\n this.bytesRead += buf.length\n\n if (request.onData(buf) === false) {\n return constants.ERROR.PAUSED\n }\n }\n\n onMessageComplete () {\n const { client, socket, statusCode, upgrade, headers, contentLength, bytesRead, shouldKeepAlive } = this\n\n if (socket.destroyed && (!statusCode || shouldKeepAlive)) {\n return -1\n }\n\n if (upgrade) {\n return\n }\n\n const request = client[kQueue][client[kRunningIdx]]\n assert(request)\n\n assert(statusCode >= 100)\n\n this.statusCode = null\n this.statusText = ''\n this.bytesRead = 0\n this.contentLength = ''\n this.keepAlive = ''\n this.connection = ''\n\n assert(this.headers.length % 2 === 0)\n this.headers = []\n this.headersSize = 0\n\n if (statusCode < 200) {\n return\n }\n\n /* istanbul ignore next: should be handled by llhttp? */\n if (request.method !== 'HEAD' && contentLength && bytesRead !== parseInt(contentLength, 10)) {\n util.destroy(socket, new ResponseContentLengthMismatchError())\n return -1\n }\n\n request.onComplete(headers)\n\n client[kQueue][client[kRunningIdx]++] = null\n\n if (socket[kWriting]) {\n assert.strictEqual(client[kRunning], 0)\n // Response completed before request.\n util.destroy(socket, new InformationalError('reset'))\n return constants.ERROR.PAUSED\n } else if (!shouldKeepAlive) {\n util.destroy(socket, new InformationalError('reset'))\n return constants.ERROR.PAUSED\n } else if (socket[kReset] && client[kRunning] === 0) {\n // Destroy socket once all requests have completed.\n // The request at the tail of the pipeline is the one\n // that requested reset and no further requests should\n // have been queued since then.\n util.destroy(socket, new InformationalError('reset'))\n return constants.ERROR.PAUSED\n } else if (client[kPipelining] === 1) {\n // We must wait a full event loop cycle to reuse this socket to make sure\n // that non-spec compliant servers are not closing the connection even if they\n // said they won't.\n setImmediate(resume, client)\n } else {\n resume(client)\n }\n }\n}\n\nfunction onParserTimeout (parser) {\n const { socket, timeoutType, client } = parser\n\n /* istanbul ignore else */\n if (timeoutType === TIMEOUT_HEADERS) {\n if (!socket[kWriting] || socket.writableNeedDrain || client[kRunning] > 1) {\n assert(!parser.paused, 'cannot be paused while waiting for headers')\n util.destroy(socket, new HeadersTimeoutError())\n }\n } else if (timeoutType === TIMEOUT_BODY) {\n if (!parser.paused) {\n util.destroy(socket, new BodyTimeoutError())\n }\n } else if (timeoutType === TIMEOUT_IDLE) {\n assert(client[kRunning] === 0 && client[kKeepAliveTimeoutValue])\n util.destroy(socket, new InformationalError('socket idle timeout'))\n }\n}\n\nfunction onSocketReadable () {\n const { [kParser]: parser } = this\n if (parser) {\n parser.readMore()\n }\n}\n\nfunction onSocketError (err) {\n const { [kClient]: client, [kParser]: parser } = this\n\n assert(err.code !== 'ERR_TLS_CERT_ALTNAME_INVALID')\n\n if (client[kHTTPConnVersion] !== 'h2') {\n // On Mac OS, we get an ECONNRESET even if there is a full body to be forwarded\n // to the user.\n if (err.code === 'ECONNRESET' && parser.statusCode && !parser.shouldKeepAlive) {\n // We treat all incoming data so for as a valid response.\n parser.onMessageComplete()\n return\n }\n }\n\n this[kError] = err\n\n onError(this[kClient], err)\n}\n\nfunction onError (client, err) {\n if (\n client[kRunning] === 0 &&\n err.code !== 'UND_ERR_INFO' &&\n err.code !== 'UND_ERR_SOCKET'\n ) {\n // Error is not caused by running request and not a recoverable\n // socket error.\n\n assert(client[kPendingIdx] === client[kRunningIdx])\n\n const requests = client[kQueue].splice(client[kRunningIdx])\n for (let i = 0; i < requests.length; i++) {\n const request = requests[i]\n errorRequest(client, request, err)\n }\n assert(client[kSize] === 0)\n }\n}\n\nfunction onSocketEnd () {\n const { [kParser]: parser, [kClient]: client } = this\n\n if (client[kHTTPConnVersion] !== 'h2') {\n if (parser.statusCode && !parser.shouldKeepAlive) {\n // We treat all incoming data so far as a valid response.\n parser.onMessageComplete()\n return\n }\n }\n\n util.destroy(this, new SocketError('other side closed', util.getSocketInfo(this)))\n}\n\nfunction onSocketClose () {\n const { [kClient]: client, [kParser]: parser } = this\n\n if (client[kHTTPConnVersion] === 'h1' && parser) {\n if (!this[kError] && parser.statusCode && !parser.shouldKeepAlive) {\n // We treat all incoming data so far as a valid response.\n parser.onMessageComplete()\n }\n\n this[kParser].destroy()\n this[kParser] = null\n }\n\n const err = this[kError] || new SocketError('closed', util.getSocketInfo(this))\n\n client[kSocket] = null\n\n if (client.destroyed) {\n assert(client[kPending] === 0)\n\n // Fail entire queue.\n const requests = client[kQueue].splice(client[kRunningIdx])\n for (let i = 0; i < requests.length; i++) {\n const request = requests[i]\n errorRequest(client, request, err)\n }\n } else if (client[kRunning] > 0 && err.code !== 'UND_ERR_INFO') {\n // Fail head of pipeline.\n const request = client[kQueue][client[kRunningIdx]]\n client[kQueue][client[kRunningIdx]++] = null\n\n errorRequest(client, request, err)\n }\n\n client[kPendingIdx] = client[kRunningIdx]\n\n assert(client[kRunning] === 0)\n\n client.emit('disconnect', client[kUrl], [client], err)\n\n resume(client)\n}\n\nasync function connect (client) {\n assert(!client[kConnecting])\n assert(!client[kSocket])\n\n let { host, hostname, protocol, port } = client[kUrl]\n\n // Resolve ipv6\n if (hostname[0] === '[') {\n const idx = hostname.indexOf(']')\n\n assert(idx !== -1)\n const ip = hostname.substring(1, idx)\n\n assert(net.isIP(ip))\n hostname = ip\n }\n\n client[kConnecting] = true\n\n if (channels.beforeConnect.hasSubscribers) {\n channels.beforeConnect.publish({\n connectParams: {\n host,\n hostname,\n protocol,\n port,\n servername: client[kServerName],\n localAddress: client[kLocalAddress]\n },\n connector: client[kConnector]\n })\n }\n\n try {\n const socket = await new Promise((resolve, reject) => {\n client[kConnector]({\n host,\n hostname,\n protocol,\n port,\n servername: client[kServerName],\n localAddress: client[kLocalAddress]\n }, (err, socket) => {\n if (err) {\n reject(err)\n } else {\n resolve(socket)\n }\n })\n })\n\n if (client.destroyed) {\n util.destroy(socket.on('error', () => {}), new ClientDestroyedError())\n return\n }\n\n client[kConnecting] = false\n\n assert(socket)\n\n const isH2 = socket.alpnProtocol === 'h2'\n if (isH2) {\n if (!h2ExperimentalWarned) {\n h2ExperimentalWarned = true\n process.emitWarning('H2 support is experimental, expect them to change at any time.', {\n code: 'UNDICI-H2'\n })\n }\n\n const session = http2.connect(client[kUrl], {\n createConnection: () => socket,\n peerMaxConcurrentStreams: client[kHTTP2SessionState].maxConcurrentStreams\n })\n\n client[kHTTPConnVersion] = 'h2'\n session[kClient] = client\n session[kSocket] = socket\n session.on('error', onHttp2SessionError)\n session.on('frameError', onHttp2FrameError)\n session.on('end', onHttp2SessionEnd)\n session.on('goaway', onHTTP2GoAway)\n session.on('close', onSocketClose)\n session.unref()\n\n client[kHTTP2Session] = session\n socket[kHTTP2Session] = session\n } else {\n if (!llhttpInstance) {\n llhttpInstance = await llhttpPromise\n llhttpPromise = null\n }\n\n socket[kNoRef] = false\n socket[kWriting] = false\n socket[kReset] = false\n socket[kBlocking] = false\n socket[kParser] = new Parser(client, socket, llhttpInstance)\n }\n\n socket[kCounter] = 0\n socket[kMaxRequests] = client[kMaxRequests]\n socket[kClient] = client\n socket[kError] = null\n\n socket\n .on('error', onSocketError)\n .on('readable', onSocketReadable)\n .on('end', onSocketEnd)\n .on('close', onSocketClose)\n\n client[kSocket] = socket\n\n if (channels.connected.hasSubscribers) {\n channels.connected.publish({\n connectParams: {\n host,\n hostname,\n protocol,\n port,\n servername: client[kServerName],\n localAddress: client[kLocalAddress]\n },\n connector: client[kConnector],\n socket\n })\n }\n client.emit('connect', client[kUrl], [client])\n } catch (err) {\n if (client.destroyed) {\n return\n }\n\n client[kConnecting] = false\n\n if (channels.connectError.hasSubscribers) {\n channels.connectError.publish({\n connectParams: {\n host,\n hostname,\n protocol,\n port,\n servername: client[kServerName],\n localAddress: client[kLocalAddress]\n },\n connector: client[kConnector],\n error: err\n })\n }\n\n if (err.code === 'ERR_TLS_CERT_ALTNAME_INVALID') {\n assert(client[kRunning] === 0)\n while (client[kPending] > 0 && client[kQueue][client[kPendingIdx]].servername === client[kServerName]) {\n const request = client[kQueue][client[kPendingIdx]++]\n errorRequest(client, request, err)\n }\n } else {\n onError(client, err)\n }\n\n client.emit('connectionError', client[kUrl], [client], err)\n }\n\n resume(client)\n}\n\nfunction emitDrain (client) {\n client[kNeedDrain] = 0\n client.emit('drain', client[kUrl], [client])\n}\n\nfunction resume (client, sync) {\n if (client[kResuming] === 2) {\n return\n }\n\n client[kResuming] = 2\n\n _resume(client, sync)\n client[kResuming] = 0\n\n if (client[kRunningIdx] > 256) {\n client[kQueue].splice(0, client[kRunningIdx])\n client[kPendingIdx] -= client[kRunningIdx]\n client[kRunningIdx] = 0\n }\n}\n\nfunction _resume (client, sync) {\n while (true) {\n if (client.destroyed) {\n assert(client[kPending] === 0)\n return\n }\n\n if (client[kClosedResolve] && !client[kSize]) {\n client[kClosedResolve]()\n client[kClosedResolve] = null\n return\n }\n\n const socket = client[kSocket]\n\n if (socket && !socket.destroyed && socket.alpnProtocol !== 'h2') {\n if (client[kSize] === 0) {\n if (!socket[kNoRef] && socket.unref) {\n socket.unref()\n socket[kNoRef] = true\n }\n } else if (socket[kNoRef] && socket.ref) {\n socket.ref()\n socket[kNoRef] = false\n }\n\n if (client[kSize] === 0) {\n if (socket[kParser].timeoutType !== TIMEOUT_IDLE) {\n socket[kParser].setTimeout(client[kKeepAliveTimeoutValue], TIMEOUT_IDLE)\n }\n } else if (client[kRunning] > 0 && socket[kParser].statusCode < 200) {\n if (socket[kParser].timeoutType !== TIMEOUT_HEADERS) {\n const request = client[kQueue][client[kRunningIdx]]\n const headersTimeout = request.headersTimeout != null\n ? request.headersTimeout\n : client[kHeadersTimeout]\n socket[kParser].setTimeout(headersTimeout, TIMEOUT_HEADERS)\n }\n }\n }\n\n if (client[kBusy]) {\n client[kNeedDrain] = 2\n } else if (client[kNeedDrain] === 2) {\n if (sync) {\n client[kNeedDrain] = 1\n process.nextTick(emitDrain, client)\n } else {\n emitDrain(client)\n }\n continue\n }\n\n if (client[kPending] === 0) {\n return\n }\n\n if (client[kRunning] >= (client[kPipelining] || 1)) {\n return\n }\n\n const request = client[kQueue][client[kPendingIdx]]\n\n if (client[kUrl].protocol === 'https:' && client[kServerName] !== request.servername) {\n if (client[kRunning] > 0) {\n return\n }\n\n client[kServerName] = request.servername\n\n if (socket && socket.servername !== request.servername) {\n util.destroy(socket, new InformationalError('servername changed'))\n return\n }\n }\n\n if (client[kConnecting]) {\n return\n }\n\n if (!socket && !client[kHTTP2Session]) {\n connect(client)\n return\n }\n\n if (socket.destroyed || socket[kWriting] || socket[kReset] || socket[kBlocking]) {\n return\n }\n\n if (client[kRunning] > 0 && !request.idempotent) {\n // Non-idempotent request cannot be retried.\n // Ensure that no other requests are inflight and\n // could cause failure.\n return\n }\n\n if (client[kRunning] > 0 && (request.upgrade || request.method === 'CONNECT')) {\n // Don't dispatch an upgrade until all preceding requests have completed.\n // A misbehaving server might upgrade the connection before all pipelined\n // request has completed.\n return\n }\n\n if (client[kRunning] > 0 && util.bodyLength(request.body) !== 0 &&\n (util.isStream(request.body) || util.isAsyncIterable(request.body))) {\n // Request with stream or iterator body can error while other requests\n // are inflight and indirectly error those as well.\n // Ensure this doesn't happen by waiting for inflight\n // to complete before dispatching.\n\n // Request with stream or iterator body cannot be retried.\n // Ensure that no other requests are inflight and\n // could cause failure.\n return\n }\n\n if (!request.aborted && write(client, request)) {\n client[kPendingIdx]++\n } else {\n client[kQueue].splice(client[kPendingIdx], 1)\n }\n }\n}\n\n// https://www.rfc-editor.org/rfc/rfc7230#section-3.3.2\nfunction shouldSendContentLength (method) {\n return method !== 'GET' && method !== 'HEAD' && method !== 'OPTIONS' && method !== 'TRACE' && method !== 'CONNECT'\n}\n\nfunction write (client, request) {\n if (client[kHTTPConnVersion] === 'h2') {\n writeH2(client, client[kHTTP2Session], request)\n return\n }\n\n const { body, method, path, host, upgrade, headers, blocking, reset } = request\n\n // https://tools.ietf.org/html/rfc7231#section-4.3.1\n // https://tools.ietf.org/html/rfc7231#section-4.3.2\n // https://tools.ietf.org/html/rfc7231#section-4.3.5\n\n // Sending a payload body on a request that does not\n // expect it can cause undefined behavior on some\n // servers and corrupt connection state. Do not\n // re-use the connection for further requests.\n\n const expectsPayload = (\n method === 'PUT' ||\n method === 'POST' ||\n method === 'PATCH'\n )\n\n if (body && typeof body.read === 'function') {\n // Try to read EOF in order to get length.\n body.read(0)\n }\n\n const bodyLength = util.bodyLength(body)\n\n let contentLength = bodyLength\n\n if (contentLength === null) {\n contentLength = request.contentLength\n }\n\n if (contentLength === 0 && !expectsPayload) {\n // https://tools.ietf.org/html/rfc7230#section-3.3.2\n // A user agent SHOULD NOT send a Content-Length header field when\n // the request message does not contain a payload body and the method\n // semantics do not anticipate such a body.\n\n contentLength = null\n }\n\n // https://github.com/nodejs/undici/issues/2046\n // A user agent may send a Content-Length header with 0 value, this should be allowed.\n if (shouldSendContentLength(method) && contentLength > 0 && request.contentLength !== null && request.contentLength !== contentLength) {\n if (client[kStrictContentLength]) {\n errorRequest(client, request, new RequestContentLengthMismatchError())\n return false\n }\n\n process.emitWarning(new RequestContentLengthMismatchError())\n }\n\n const socket = client[kSocket]\n\n try {\n request.onConnect((err) => {\n if (request.aborted || request.completed) {\n return\n }\n\n errorRequest(client, request, err || new RequestAbortedError())\n\n util.destroy(socket, new InformationalError('aborted'))\n })\n } catch (err) {\n errorRequest(client, request, err)\n }\n\n if (request.aborted) {\n return false\n }\n\n if (method === 'HEAD') {\n // https://github.com/mcollina/undici/issues/258\n // Close after a HEAD request to interop with misbehaving servers\n // that may send a body in the response.\n\n socket[kReset] = true\n }\n\n if (upgrade || method === 'CONNECT') {\n // On CONNECT or upgrade, block pipeline from dispatching further\n // requests on this connection.\n\n socket[kReset] = true\n }\n\n if (reset != null) {\n socket[kReset] = reset\n }\n\n if (client[kMaxRequests] && socket[kCounter]++ >= client[kMaxRequests]) {\n socket[kReset] = true\n }\n\n if (blocking) {\n socket[kBlocking] = true\n }\n\n let header = `${method} ${path} HTTP/1.1\\r\\n`\n\n if (typeof host === 'string') {\n header += `host: ${host}\\r\\n`\n } else {\n header += client[kHostHeader]\n }\n\n if (upgrade) {\n header += `connection: upgrade\\r\\nupgrade: ${upgrade}\\r\\n`\n } else if (client[kPipelining] && !socket[kReset]) {\n header += 'connection: keep-alive\\r\\n'\n } else {\n header += 'connection: close\\r\\n'\n }\n\n if (headers) {\n header += headers\n }\n\n if (channels.sendHeaders.hasSubscribers) {\n channels.sendHeaders.publish({ request, headers: header, socket })\n }\n\n /* istanbul ignore else: assertion */\n if (!body || bodyLength === 0) {\n if (contentLength === 0) {\n socket.write(`${header}content-length: 0\\r\\n\\r\\n`, 'latin1')\n } else {\n assert(contentLength === null, 'no body must not have content length')\n socket.write(`${header}\\r\\n`, 'latin1')\n }\n request.onRequestSent()\n } else if (util.isBuffer(body)) {\n assert(contentLength === body.byteLength, 'buffer body must have content length')\n\n socket.cork()\n socket.write(`${header}content-length: ${contentLength}\\r\\n\\r\\n`, 'latin1')\n socket.write(body)\n socket.uncork()\n request.onBodySent(body)\n request.onRequestSent()\n if (!expectsPayload) {\n socket[kReset] = true\n }\n } else if (util.isBlobLike(body)) {\n if (typeof body.stream === 'function') {\n writeIterable({ body: body.stream(), client, request, socket, contentLength, header, expectsPayload })\n } else {\n writeBlob({ body, client, request, socket, contentLength, header, expectsPayload })\n }\n } else if (util.isStream(body)) {\n writeStream({ body, client, request, socket, contentLength, header, expectsPayload })\n } else if (util.isIterable(body)) {\n writeIterable({ body, client, request, socket, contentLength, header, expectsPayload })\n } else {\n assert(false)\n }\n\n return true\n}\n\nfunction writeH2 (client, session, request) {\n const { body, method, path, host, upgrade, expectContinue, signal, headers: reqHeaders } = request\n\n let headers\n if (typeof reqHeaders === 'string') headers = Request[kHTTP2CopyHeaders](reqHeaders.trim())\n else headers = reqHeaders\n\n if (upgrade) {\n errorRequest(client, request, new Error('Upgrade not supported for H2'))\n return false\n }\n\n try {\n // TODO(HTTP/2): Should we call onConnect immediately or on stream ready event?\n request.onConnect((err) => {\n if (request.aborted || request.completed) {\n return\n }\n\n errorRequest(client, request, err || new RequestAbortedError())\n })\n } catch (err) {\n errorRequest(client, request, err)\n }\n\n if (request.aborted) {\n return false\n }\n\n /** @type {import('node:http2').ClientHttp2Stream} */\n let stream\n const h2State = client[kHTTP2SessionState]\n\n headers[HTTP2_HEADER_AUTHORITY] = host || client[kHost]\n headers[HTTP2_HEADER_METHOD] = method\n\n if (method === 'CONNECT') {\n session.ref()\n // we are already connected, streams are pending, first request\n // will create a new stream. We trigger a request to create the stream and wait until\n // `ready` event is triggered\n // We disabled endStream to allow the user to write to the stream\n stream = session.request(headers, { endStream: false, signal })\n\n if (stream.id && !stream.pending) {\n request.onUpgrade(null, null, stream)\n ++h2State.openStreams\n } else {\n stream.once('ready', () => {\n request.onUpgrade(null, null, stream)\n ++h2State.openStreams\n })\n }\n\n stream.once('close', () => {\n h2State.openStreams -= 1\n // TODO(HTTP/2): unref only if current streams count is 0\n if (h2State.openStreams === 0) session.unref()\n })\n\n return true\n }\n\n // https://tools.ietf.org/html/rfc7540#section-8.3\n // :path and :scheme headers must be omited when sending CONNECT\n\n headers[HTTP2_HEADER_PATH] = path\n headers[HTTP2_HEADER_SCHEME] = 'https'\n\n // https://tools.ietf.org/html/rfc7231#section-4.3.1\n // https://tools.ietf.org/html/rfc7231#section-4.3.2\n // https://tools.ietf.org/html/rfc7231#section-4.3.5\n\n // Sending a payload body on a request that does not\n // expect it can cause undefined behavior on some\n // servers and corrupt connection state. Do not\n // re-use the connection for further requests.\n\n const expectsPayload = (\n method === 'PUT' ||\n method === 'POST' ||\n method === 'PATCH'\n )\n\n if (body && typeof body.read === 'function') {\n // Try to read EOF in order to get length.\n body.read(0)\n }\n\n let contentLength = util.bodyLength(body)\n\n if (contentLength == null) {\n contentLength = request.contentLength\n }\n\n if (contentLength === 0 || !expectsPayload) {\n // https://tools.ietf.org/html/rfc7230#section-3.3.2\n // A user agent SHOULD NOT send a Content-Length header field when\n // the request message does not contain a payload body and the method\n // semantics do not anticipate such a body.\n\n contentLength = null\n }\n\n // https://github.com/nodejs/undici/issues/2046\n // A user agent may send a Content-Length header with 0 value, this should be allowed.\n if (shouldSendContentLength(method) && contentLength > 0 && request.contentLength != null && request.contentLength !== contentLength) {\n if (client[kStrictContentLength]) {\n errorRequest(client, request, new RequestContentLengthMismatchError())\n return false\n }\n\n process.emitWarning(new RequestContentLengthMismatchError())\n }\n\n if (contentLength != null) {\n assert(body, 'no body must not have content length')\n headers[HTTP2_HEADER_CONTENT_LENGTH] = `${contentLength}`\n }\n\n session.ref()\n\n const shouldEndStream = method === 'GET' || method === 'HEAD'\n if (expectContinue) {\n headers[HTTP2_HEADER_EXPECT] = '100-continue'\n stream = session.request(headers, { endStream: shouldEndStream, signal })\n\n stream.once('continue', writeBodyH2)\n } else {\n stream = session.request(headers, {\n endStream: shouldEndStream,\n signal\n })\n writeBodyH2()\n }\n\n // Increment counter as we have new several streams open\n ++h2State.openStreams\n\n stream.once('response', headers => {\n const { [HTTP2_HEADER_STATUS]: statusCode, ...realHeaders } = headers\n\n if (request.onHeaders(Number(statusCode), realHeaders, stream.resume.bind(stream), '') === false) {\n stream.pause()\n }\n })\n\n stream.once('end', () => {\n request.onComplete([])\n })\n\n stream.on('data', (chunk) => {\n if (request.onData(chunk) === false) {\n stream.pause()\n }\n })\n\n stream.once('close', () => {\n h2State.openStreams -= 1\n // TODO(HTTP/2): unref only if current streams count is 0\n if (h2State.openStreams === 0) {\n session.unref()\n }\n })\n\n stream.once('error', function (err) {\n if (client[kHTTP2Session] && !client[kHTTP2Session].destroyed && !this.closed && !this.destroyed) {\n h2State.streams -= 1\n util.destroy(stream, err)\n }\n })\n\n stream.once('frameError', (type, code) => {\n const err = new InformationalError(`HTTP/2: \"frameError\" received - type ${type}, code ${code}`)\n errorRequest(client, request, err)\n\n if (client[kHTTP2Session] && !client[kHTTP2Session].destroyed && !this.closed && !this.destroyed) {\n h2State.streams -= 1\n util.destroy(stream, err)\n }\n })\n\n // stream.on('aborted', () => {\n // // TODO(HTTP/2): Support aborted\n // })\n\n // stream.on('timeout', () => {\n // // TODO(HTTP/2): Support timeout\n // })\n\n // stream.on('push', headers => {\n // // TODO(HTTP/2): Suppor push\n // })\n\n // stream.on('trailers', headers => {\n // // TODO(HTTP/2): Support trailers\n // })\n\n return true\n\n function writeBodyH2 () {\n /* istanbul ignore else: assertion */\n if (!body) {\n request.onRequestSent()\n } else if (util.isBuffer(body)) {\n assert(contentLength === body.byteLength, 'buffer body must have content length')\n stream.cork()\n stream.write(body)\n stream.uncork()\n stream.end()\n request.onBodySent(body)\n request.onRequestSent()\n } else if (util.isBlobLike(body)) {\n if (typeof body.stream === 'function') {\n writeIterable({\n client,\n request,\n contentLength,\n h2stream: stream,\n expectsPayload,\n body: body.stream(),\n socket: client[kSocket],\n header: ''\n })\n } else {\n writeBlob({\n body,\n client,\n request,\n contentLength,\n expectsPayload,\n h2stream: stream,\n header: '',\n socket: client[kSocket]\n })\n }\n } else if (util.isStream(body)) {\n writeStream({\n body,\n client,\n request,\n contentLength,\n expectsPayload,\n socket: client[kSocket],\n h2stream: stream,\n header: ''\n })\n } else if (util.isIterable(body)) {\n writeIterable({\n body,\n client,\n request,\n contentLength,\n expectsPayload,\n header: '',\n h2stream: stream,\n socket: client[kSocket]\n })\n } else {\n assert(false)\n }\n }\n}\n\nfunction writeStream ({ h2stream, body, client, request, socket, contentLength, header, expectsPayload }) {\n assert(contentLength !== 0 || client[kRunning] === 0, 'stream body cannot be pipelined')\n\n if (client[kHTTPConnVersion] === 'h2') {\n // For HTTP/2, is enough to pipe the stream\n const pipe = pipeline(\n body,\n h2stream,\n (err) => {\n if (err) {\n util.destroy(body, err)\n util.destroy(h2stream, err)\n } else {\n request.onRequestSent()\n }\n }\n )\n\n pipe.on('data', onPipeData)\n pipe.once('end', () => {\n pipe.removeListener('data', onPipeData)\n util.destroy(pipe)\n })\n\n function onPipeData (chunk) {\n request.onBodySent(chunk)\n }\n\n return\n }\n\n let finished = false\n\n const writer = new AsyncWriter({ socket, request, contentLength, client, expectsPayload, header })\n\n const onData = function (chunk) {\n if (finished) {\n return\n }\n\n try {\n if (!writer.write(chunk) && this.pause) {\n this.pause()\n }\n } catch (err) {\n util.destroy(this, err)\n }\n }\n const onDrain = function () {\n if (finished) {\n return\n }\n\n if (body.resume) {\n body.resume()\n }\n }\n const onAbort = function () {\n if (finished) {\n return\n }\n const err = new RequestAbortedError()\n queueMicrotask(() => onFinished(err))\n }\n const onFinished = function (err) {\n if (finished) {\n return\n }\n\n finished = true\n\n assert(socket.destroyed || (socket[kWriting] && client[kRunning] <= 1))\n\n socket\n .off('drain', onDrain)\n .off('error', onFinished)\n\n body\n .removeListener('data', onData)\n .removeListener('end', onFinished)\n .removeListener('error', onFinished)\n .removeListener('close', onAbort)\n\n if (!err) {\n try {\n writer.end()\n } catch (er) {\n err = er\n }\n }\n\n writer.destroy(err)\n\n if (err && (err.code !== 'UND_ERR_INFO' || err.message !== 'reset')) {\n util.destroy(body, err)\n } else {\n util.destroy(body)\n }\n }\n\n body\n .on('data', onData)\n .on('end', onFinished)\n .on('error', onFinished)\n .on('close', onAbort)\n\n if (body.resume) {\n body.resume()\n }\n\n socket\n .on('drain', onDrain)\n .on('error', onFinished)\n}\n\nasync function writeBlob ({ h2stream, body, client, request, socket, contentLength, header, expectsPayload }) {\n assert(contentLength === body.size, 'blob body must have content length')\n\n const isH2 = client[kHTTPConnVersion] === 'h2'\n try {\n if (contentLength != null && contentLength !== body.size) {\n throw new RequestContentLengthMismatchError()\n }\n\n const buffer = Buffer.from(await body.arrayBuffer())\n\n if (isH2) {\n h2stream.cork()\n h2stream.write(buffer)\n h2stream.uncork()\n } else {\n socket.cork()\n socket.write(`${header}content-length: ${contentLength}\\r\\n\\r\\n`, 'latin1')\n socket.write(buffer)\n socket.uncork()\n }\n\n request.onBodySent(buffer)\n request.onRequestSent()\n\n if (!expectsPayload) {\n socket[kReset] = true\n }\n\n resume(client)\n } catch (err) {\n util.destroy(isH2 ? h2stream : socket, err)\n }\n}\n\nasync function writeIterable ({ h2stream, body, client, request, socket, contentLength, header, expectsPayload }) {\n assert(contentLength !== 0 || client[kRunning] === 0, 'iterator body cannot be pipelined')\n\n let callback = null\n function onDrain () {\n if (callback) {\n const cb = callback\n callback = null\n cb()\n }\n }\n\n const waitForDrain = () => new Promise((resolve, reject) => {\n assert(callback === null)\n\n if (socket[kError]) {\n reject(socket[kError])\n } else {\n callback = resolve\n }\n })\n\n if (client[kHTTPConnVersion] === 'h2') {\n h2stream\n .on('close', onDrain)\n .on('drain', onDrain)\n\n try {\n // It's up to the user to somehow abort the async iterable.\n for await (const chunk of body) {\n if (socket[kError]) {\n throw socket[kError]\n }\n\n const res = h2stream.write(chunk)\n request.onBodySent(chunk)\n if (!res) {\n await waitForDrain()\n }\n }\n } catch (err) {\n h2stream.destroy(err)\n } finally {\n request.onRequestSent()\n h2stream.end()\n h2stream\n .off('close', onDrain)\n .off('drain', onDrain)\n }\n\n return\n }\n\n socket\n .on('close', onDrain)\n .on('drain', onDrain)\n\n const writer = new AsyncWriter({ socket, request, contentLength, client, expectsPayload, header })\n try {\n // It's up to the user to somehow abort the async iterable.\n for await (const chunk of body) {\n if (socket[kError]) {\n throw socket[kError]\n }\n\n if (!writer.write(chunk)) {\n await waitForDrain()\n }\n }\n\n writer.end()\n } catch (err) {\n writer.destroy(err)\n } finally {\n socket\n .off('close', onDrain)\n .off('drain', onDrain)\n }\n}\n\nclass AsyncWriter {\n constructor ({ socket, request, contentLength, client, expectsPayload, header }) {\n this.socket = socket\n this.request = request\n this.contentLength = contentLength\n this.client = client\n this.bytesWritten = 0\n this.expectsPayload = expectsPayload\n this.header = header\n\n socket[kWriting] = true\n }\n\n write (chunk) {\n const { socket, request, contentLength, client, bytesWritten, expectsPayload, header } = this\n\n if (socket[kError]) {\n throw socket[kError]\n }\n\n if (socket.destroyed) {\n return false\n }\n\n const len = Buffer.byteLength(chunk)\n if (!len) {\n return true\n }\n\n // We should defer writing chunks.\n if (contentLength !== null && bytesWritten + len > contentLength) {\n if (client[kStrictContentLength]) {\n throw new RequestContentLengthMismatchError()\n }\n\n process.emitWarning(new RequestContentLengthMismatchError())\n }\n\n socket.cork()\n\n if (bytesWritten === 0) {\n if (!expectsPayload) {\n socket[kReset] = true\n }\n\n if (contentLength === null) {\n socket.write(`${header}transfer-encoding: chunked\\r\\n`, 'latin1')\n } else {\n socket.write(`${header}content-length: ${contentLength}\\r\\n\\r\\n`, 'latin1')\n }\n }\n\n if (contentLength === null) {\n socket.write(`\\r\\n${len.toString(16)}\\r\\n`, 'latin1')\n }\n\n this.bytesWritten += len\n\n const ret = socket.write(chunk)\n\n socket.uncork()\n\n request.onBodySent(chunk)\n\n if (!ret) {\n if (socket[kParser].timeout && socket[kParser].timeoutType === TIMEOUT_HEADERS) {\n // istanbul ignore else: only for jest\n if (socket[kParser].timeout.refresh) {\n socket[kParser].timeout.refresh()\n }\n }\n }\n\n return ret\n }\n\n end () {\n const { socket, contentLength, client, bytesWritten, expectsPayload, header, request } = this\n request.onRequestSent()\n\n socket[kWriting] = false\n\n if (socket[kError]) {\n throw socket[kError]\n }\n\n if (socket.destroyed) {\n return\n }\n\n if (bytesWritten === 0) {\n if (expectsPayload) {\n // https://tools.ietf.org/html/rfc7230#section-3.3.2\n // A user agent SHOULD send a Content-Length in a request message when\n // no Transfer-Encoding is sent and the request method defines a meaning\n // for an enclosed payload body.\n\n socket.write(`${header}content-length: 0\\r\\n\\r\\n`, 'latin1')\n } else {\n socket.write(`${header}\\r\\n`, 'latin1')\n }\n } else if (contentLength === null) {\n socket.write('\\r\\n0\\r\\n\\r\\n', 'latin1')\n }\n\n if (contentLength !== null && bytesWritten !== contentLength) {\n if (client[kStrictContentLength]) {\n throw new RequestContentLengthMismatchError()\n } else {\n process.emitWarning(new RequestContentLengthMismatchError())\n }\n }\n\n if (socket[kParser].timeout && socket[kParser].timeoutType === TIMEOUT_HEADERS) {\n // istanbul ignore else: only for jest\n if (socket[kParser].timeout.refresh) {\n socket[kParser].timeout.refresh()\n }\n }\n\n resume(client)\n }\n\n destroy (err) {\n const { socket, client } = this\n\n socket[kWriting] = false\n\n if (err) {\n assert(client[kRunning] <= 1, 'pipeline should only contain this request')\n util.destroy(socket, err)\n }\n }\n}\n\nfunction errorRequest (client, request, err) {\n try {\n request.onError(err)\n assert(request.aborted)\n } catch (err) {\n client.emit('error', err)\n }\n}\n\nmodule.exports = Client\n","'use strict'\n\n/* istanbul ignore file: only for Node 12 */\n\nconst { kConnected, kSize } = require('../core/symbols')\n\nclass CompatWeakRef {\n constructor (value) {\n this.value = value\n }\n\n deref () {\n return this.value[kConnected] === 0 && this.value[kSize] === 0\n ? undefined\n : this.value\n }\n}\n\nclass CompatFinalizer {\n constructor (finalizer) {\n this.finalizer = finalizer\n }\n\n register (dispatcher, key) {\n if (dispatcher.on) {\n dispatcher.on('disconnect', () => {\n if (dispatcher[kConnected] === 0 && dispatcher[kSize] === 0) {\n this.finalizer(key)\n }\n })\n }\n }\n}\n\nmodule.exports = function () {\n // FIXME: remove workaround when the Node bug is fixed\n // https://github.com/nodejs/node/issues/49344#issuecomment-1741776308\n if (process.env.NODE_V8_COVERAGE) {\n return {\n WeakRef: CompatWeakRef,\n FinalizationRegistry: CompatFinalizer\n }\n }\n return {\n WeakRef: global.WeakRef || CompatWeakRef,\n FinalizationRegistry: global.FinalizationRegistry || CompatFinalizer\n }\n}\n","'use strict'\n\n// https://wicg.github.io/cookie-store/#cookie-maximum-attribute-value-size\nconst maxAttributeValueSize = 1024\n\n// https://wicg.github.io/cookie-store/#cookie-maximum-name-value-pair-size\nconst maxNameValuePairSize = 4096\n\nmodule.exports = {\n maxAttributeValueSize,\n maxNameValuePairSize\n}\n","'use strict'\n\nconst { parseSetCookie } = require('./parse')\nconst { stringify, getHeadersList } = require('./util')\nconst { webidl } = require('../fetch/webidl')\nconst { Headers } = require('../fetch/headers')\n\n/**\n * @typedef {Object} Cookie\n * @property {string} name\n * @property {string} value\n * @property {Date|number|undefined} expires\n * @property {number|undefined} maxAge\n * @property {string|undefined} domain\n * @property {string|undefined} path\n * @property {boolean|undefined} secure\n * @property {boolean|undefined} httpOnly\n * @property {'Strict'|'Lax'|'None'} sameSite\n * @property {string[]} unparsed\n */\n\n/**\n * @param {Headers} headers\n * @returns {Record}\n */\nfunction getCookies (headers) {\n webidl.argumentLengthCheck(arguments, 1, { header: 'getCookies' })\n\n webidl.brandCheck(headers, Headers, { strict: false })\n\n const cookie = headers.get('cookie')\n const out = {}\n\n if (!cookie) {\n return out\n }\n\n for (const piece of cookie.split(';')) {\n const [name, ...value] = piece.split('=')\n\n out[name.trim()] = value.join('=')\n }\n\n return out\n}\n\n/**\n * @param {Headers} headers\n * @param {string} name\n * @param {{ path?: string, domain?: string }|undefined} attributes\n * @returns {void}\n */\nfunction deleteCookie (headers, name, attributes) {\n webidl.argumentLengthCheck(arguments, 2, { header: 'deleteCookie' })\n\n webidl.brandCheck(headers, Headers, { strict: false })\n\n name = webidl.converters.DOMString(name)\n attributes = webidl.converters.DeleteCookieAttributes(attributes)\n\n // Matches behavior of\n // https://github.com/denoland/deno_std/blob/63827b16330b82489a04614027c33b7904e08be5/http/cookie.ts#L278\n setCookie(headers, {\n name,\n value: '',\n expires: new Date(0),\n ...attributes\n })\n}\n\n/**\n * @param {Headers} headers\n * @returns {Cookie[]}\n */\nfunction getSetCookies (headers) {\n webidl.argumentLengthCheck(arguments, 1, { header: 'getSetCookies' })\n\n webidl.brandCheck(headers, Headers, { strict: false })\n\n const cookies = getHeadersList(headers).cookies\n\n if (!cookies) {\n return []\n }\n\n // In older versions of undici, cookies is a list of name:value.\n return cookies.map((pair) => parseSetCookie(Array.isArray(pair) ? pair[1] : pair))\n}\n\n/**\n * @param {Headers} headers\n * @param {Cookie} cookie\n * @returns {void}\n */\nfunction setCookie (headers, cookie) {\n webidl.argumentLengthCheck(arguments, 2, { header: 'setCookie' })\n\n webidl.brandCheck(headers, Headers, { strict: false })\n\n cookie = webidl.converters.Cookie(cookie)\n\n const str = stringify(cookie)\n\n if (str) {\n headers.append('Set-Cookie', stringify(cookie))\n }\n}\n\nwebidl.converters.DeleteCookieAttributes = webidl.dictionaryConverter([\n {\n converter: webidl.nullableConverter(webidl.converters.DOMString),\n key: 'path',\n defaultValue: null\n },\n {\n converter: webidl.nullableConverter(webidl.converters.DOMString),\n key: 'domain',\n defaultValue: null\n }\n])\n\nwebidl.converters.Cookie = webidl.dictionaryConverter([\n {\n converter: webidl.converters.DOMString,\n key: 'name'\n },\n {\n converter: webidl.converters.DOMString,\n key: 'value'\n },\n {\n converter: webidl.nullableConverter((value) => {\n if (typeof value === 'number') {\n return webidl.converters['unsigned long long'](value)\n }\n\n return new Date(value)\n }),\n key: 'expires',\n defaultValue: null\n },\n {\n converter: webidl.nullableConverter(webidl.converters['long long']),\n key: 'maxAge',\n defaultValue: null\n },\n {\n converter: webidl.nullableConverter(webidl.converters.DOMString),\n key: 'domain',\n defaultValue: null\n },\n {\n converter: webidl.nullableConverter(webidl.converters.DOMString),\n key: 'path',\n defaultValue: null\n },\n {\n converter: webidl.nullableConverter(webidl.converters.boolean),\n key: 'secure',\n defaultValue: null\n },\n {\n converter: webidl.nullableConverter(webidl.converters.boolean),\n key: 'httpOnly',\n defaultValue: null\n },\n {\n converter: webidl.converters.USVString,\n key: 'sameSite',\n allowedValues: ['Strict', 'Lax', 'None']\n },\n {\n converter: webidl.sequenceConverter(webidl.converters.DOMString),\n key: 'unparsed',\n defaultValue: []\n }\n])\n\nmodule.exports = {\n getCookies,\n deleteCookie,\n getSetCookies,\n setCookie\n}\n","'use strict'\n\nconst { maxNameValuePairSize, maxAttributeValueSize } = require('./constants')\nconst { isCTLExcludingHtab } = require('./util')\nconst { collectASequenceOfCodePointsFast } = require('../fetch/dataURL')\nconst assert = require('assert')\n\n/**\n * @description Parses the field-value attributes of a set-cookie header string.\n * @see https://datatracker.ietf.org/doc/html/draft-ietf-httpbis-rfc6265bis#section-5.4\n * @param {string} header\n * @returns if the header is invalid, null will be returned\n */\nfunction parseSetCookie (header) {\n // 1. If the set-cookie-string contains a %x00-08 / %x0A-1F / %x7F\n // character (CTL characters excluding HTAB): Abort these steps and\n // ignore the set-cookie-string entirely.\n if (isCTLExcludingHtab(header)) {\n return null\n }\n\n let nameValuePair = ''\n let unparsedAttributes = ''\n let name = ''\n let value = ''\n\n // 2. If the set-cookie-string contains a %x3B (\";\") character:\n if (header.includes(';')) {\n // 1. The name-value-pair string consists of the characters up to,\n // but not including, the first %x3B (\";\"), and the unparsed-\n // attributes consist of the remainder of the set-cookie-string\n // (including the %x3B (\";\") in question).\n const position = { position: 0 }\n\n nameValuePair = collectASequenceOfCodePointsFast(';', header, position)\n unparsedAttributes = header.slice(position.position)\n } else {\n // Otherwise:\n\n // 1. The name-value-pair string consists of all the characters\n // contained in the set-cookie-string, and the unparsed-\n // attributes is the empty string.\n nameValuePair = header\n }\n\n // 3. If the name-value-pair string lacks a %x3D (\"=\") character, then\n // the name string is empty, and the value string is the value of\n // name-value-pair.\n if (!nameValuePair.includes('=')) {\n value = nameValuePair\n } else {\n // Otherwise, the name string consists of the characters up to, but\n // not including, the first %x3D (\"=\") character, and the (possibly\n // empty) value string consists of the characters after the first\n // %x3D (\"=\") character.\n const position = { position: 0 }\n name = collectASequenceOfCodePointsFast(\n '=',\n nameValuePair,\n position\n )\n value = nameValuePair.slice(position.position + 1)\n }\n\n // 4. Remove any leading or trailing WSP characters from the name\n // string and the value string.\n name = name.trim()\n value = value.trim()\n\n // 5. If the sum of the lengths of the name string and the value string\n // is more than 4096 octets, abort these steps and ignore the set-\n // cookie-string entirely.\n if (name.length + value.length > maxNameValuePairSize) {\n return null\n }\n\n // 6. The cookie-name is the name string, and the cookie-value is the\n // value string.\n return {\n name, value, ...parseUnparsedAttributes(unparsedAttributes)\n }\n}\n\n/**\n * Parses the remaining attributes of a set-cookie header\n * @see https://datatracker.ietf.org/doc/html/draft-ietf-httpbis-rfc6265bis#section-5.4\n * @param {string} unparsedAttributes\n * @param {[Object.]={}} cookieAttributeList\n */\nfunction parseUnparsedAttributes (unparsedAttributes, cookieAttributeList = {}) {\n // 1. If the unparsed-attributes string is empty, skip the rest of\n // these steps.\n if (unparsedAttributes.length === 0) {\n return cookieAttributeList\n }\n\n // 2. Discard the first character of the unparsed-attributes (which\n // will be a %x3B (\";\") character).\n assert(unparsedAttributes[0] === ';')\n unparsedAttributes = unparsedAttributes.slice(1)\n\n let cookieAv = ''\n\n // 3. If the remaining unparsed-attributes contains a %x3B (\";\")\n // character:\n if (unparsedAttributes.includes(';')) {\n // 1. Consume the characters of the unparsed-attributes up to, but\n // not including, the first %x3B (\";\") character.\n cookieAv = collectASequenceOfCodePointsFast(\n ';',\n unparsedAttributes,\n { position: 0 }\n )\n unparsedAttributes = unparsedAttributes.slice(cookieAv.length)\n } else {\n // Otherwise:\n\n // 1. Consume the remainder of the unparsed-attributes.\n cookieAv = unparsedAttributes\n unparsedAttributes = ''\n }\n\n // Let the cookie-av string be the characters consumed in this step.\n\n let attributeName = ''\n let attributeValue = ''\n\n // 4. If the cookie-av string contains a %x3D (\"=\") character:\n if (cookieAv.includes('=')) {\n // 1. The (possibly empty) attribute-name string consists of the\n // characters up to, but not including, the first %x3D (\"=\")\n // character, and the (possibly empty) attribute-value string\n // consists of the characters after the first %x3D (\"=\")\n // character.\n const position = { position: 0 }\n\n attributeName = collectASequenceOfCodePointsFast(\n '=',\n cookieAv,\n position\n )\n attributeValue = cookieAv.slice(position.position + 1)\n } else {\n // Otherwise:\n\n // 1. The attribute-name string consists of the entire cookie-av\n // string, and the attribute-value string is empty.\n attributeName = cookieAv\n }\n\n // 5. Remove any leading or trailing WSP characters from the attribute-\n // name string and the attribute-value string.\n attributeName = attributeName.trim()\n attributeValue = attributeValue.trim()\n\n // 6. If the attribute-value is longer than 1024 octets, ignore the\n // cookie-av string and return to Step 1 of this algorithm.\n if (attributeValue.length > maxAttributeValueSize) {\n return parseUnparsedAttributes(unparsedAttributes, cookieAttributeList)\n }\n\n // 7. Process the attribute-name and attribute-value according to the\n // requirements in the following subsections. (Notice that\n // attributes with unrecognized attribute-names are ignored.)\n const attributeNameLowercase = attributeName.toLowerCase()\n\n // https://datatracker.ietf.org/doc/html/draft-ietf-httpbis-rfc6265bis#section-5.4.1\n // If the attribute-name case-insensitively matches the string\n // \"Expires\", the user agent MUST process the cookie-av as follows.\n if (attributeNameLowercase === 'expires') {\n // 1. Let the expiry-time be the result of parsing the attribute-value\n // as cookie-date (see Section 5.1.1).\n const expiryTime = new Date(attributeValue)\n\n // 2. If the attribute-value failed to parse as a cookie date, ignore\n // the cookie-av.\n\n cookieAttributeList.expires = expiryTime\n } else if (attributeNameLowercase === 'max-age') {\n // https://datatracker.ietf.org/doc/html/draft-ietf-httpbis-rfc6265bis#section-5.4.2\n // If the attribute-name case-insensitively matches the string \"Max-\n // Age\", the user agent MUST process the cookie-av as follows.\n\n // 1. If the first character of the attribute-value is not a DIGIT or a\n // \"-\" character, ignore the cookie-av.\n const charCode = attributeValue.charCodeAt(0)\n\n if ((charCode < 48 || charCode > 57) && attributeValue[0] !== '-') {\n return parseUnparsedAttributes(unparsedAttributes, cookieAttributeList)\n }\n\n // 2. If the remainder of attribute-value contains a non-DIGIT\n // character, ignore the cookie-av.\n if (!/^\\d+$/.test(attributeValue)) {\n return parseUnparsedAttributes(unparsedAttributes, cookieAttributeList)\n }\n\n // 3. Let delta-seconds be the attribute-value converted to an integer.\n const deltaSeconds = Number(attributeValue)\n\n // 4. Let cookie-age-limit be the maximum age of the cookie (which\n // SHOULD be 400 days or less, see Section 4.1.2.2).\n\n // 5. Set delta-seconds to the smaller of its present value and cookie-\n // age-limit.\n // deltaSeconds = Math.min(deltaSeconds * 1000, maxExpiresMs)\n\n // 6. If delta-seconds is less than or equal to zero (0), let expiry-\n // time be the earliest representable date and time. Otherwise, let\n // the expiry-time be the current date and time plus delta-seconds\n // seconds.\n // const expiryTime = deltaSeconds <= 0 ? Date.now() : Date.now() + deltaSeconds\n\n // 7. Append an attribute to the cookie-attribute-list with an\n // attribute-name of Max-Age and an attribute-value of expiry-time.\n cookieAttributeList.maxAge = deltaSeconds\n } else if (attributeNameLowercase === 'domain') {\n // https://datatracker.ietf.org/doc/html/draft-ietf-httpbis-rfc6265bis#section-5.4.3\n // If the attribute-name case-insensitively matches the string \"Domain\",\n // the user agent MUST process the cookie-av as follows.\n\n // 1. Let cookie-domain be the attribute-value.\n let cookieDomain = attributeValue\n\n // 2. If cookie-domain starts with %x2E (\".\"), let cookie-domain be\n // cookie-domain without its leading %x2E (\".\").\n if (cookieDomain[0] === '.') {\n cookieDomain = cookieDomain.slice(1)\n }\n\n // 3. Convert the cookie-domain to lower case.\n cookieDomain = cookieDomain.toLowerCase()\n\n // 4. Append an attribute to the cookie-attribute-list with an\n // attribute-name of Domain and an attribute-value of cookie-domain.\n cookieAttributeList.domain = cookieDomain\n } else if (attributeNameLowercase === 'path') {\n // https://datatracker.ietf.org/doc/html/draft-ietf-httpbis-rfc6265bis#section-5.4.4\n // If the attribute-name case-insensitively matches the string \"Path\",\n // the user agent MUST process the cookie-av as follows.\n\n // 1. If the attribute-value is empty or if the first character of the\n // attribute-value is not %x2F (\"/\"):\n let cookiePath = ''\n if (attributeValue.length === 0 || attributeValue[0] !== '/') {\n // 1. Let cookie-path be the default-path.\n cookiePath = '/'\n } else {\n // Otherwise:\n\n // 1. Let cookie-path be the attribute-value.\n cookiePath = attributeValue\n }\n\n // 2. Append an attribute to the cookie-attribute-list with an\n // attribute-name of Path and an attribute-value of cookie-path.\n cookieAttributeList.path = cookiePath\n } else if (attributeNameLowercase === 'secure') {\n // https://datatracker.ietf.org/doc/html/draft-ietf-httpbis-rfc6265bis#section-5.4.5\n // If the attribute-name case-insensitively matches the string \"Secure\",\n // the user agent MUST append an attribute to the cookie-attribute-list\n // with an attribute-name of Secure and an empty attribute-value.\n\n cookieAttributeList.secure = true\n } else if (attributeNameLowercase === 'httponly') {\n // https://datatracker.ietf.org/doc/html/draft-ietf-httpbis-rfc6265bis#section-5.4.6\n // If the attribute-name case-insensitively matches the string\n // \"HttpOnly\", the user agent MUST append an attribute to the cookie-\n // attribute-list with an attribute-name of HttpOnly and an empty\n // attribute-value.\n\n cookieAttributeList.httpOnly = true\n } else if (attributeNameLowercase === 'samesite') {\n // https://datatracker.ietf.org/doc/html/draft-ietf-httpbis-rfc6265bis#section-5.4.7\n // If the attribute-name case-insensitively matches the string\n // \"SameSite\", the user agent MUST process the cookie-av as follows:\n\n // 1. Let enforcement be \"Default\".\n let enforcement = 'Default'\n\n const attributeValueLowercase = attributeValue.toLowerCase()\n // 2. If cookie-av's attribute-value is a case-insensitive match for\n // \"None\", set enforcement to \"None\".\n if (attributeValueLowercase.includes('none')) {\n enforcement = 'None'\n }\n\n // 3. If cookie-av's attribute-value is a case-insensitive match for\n // \"Strict\", set enforcement to \"Strict\".\n if (attributeValueLowercase.includes('strict')) {\n enforcement = 'Strict'\n }\n\n // 4. If cookie-av's attribute-value is a case-insensitive match for\n // \"Lax\", set enforcement to \"Lax\".\n if (attributeValueLowercase.includes('lax')) {\n enforcement = 'Lax'\n }\n\n // 5. Append an attribute to the cookie-attribute-list with an\n // attribute-name of \"SameSite\" and an attribute-value of\n // enforcement.\n cookieAttributeList.sameSite = enforcement\n } else {\n cookieAttributeList.unparsed ??= []\n\n cookieAttributeList.unparsed.push(`${attributeName}=${attributeValue}`)\n }\n\n // 8. Return to Step 1 of this algorithm.\n return parseUnparsedAttributes(unparsedAttributes, cookieAttributeList)\n}\n\nmodule.exports = {\n parseSetCookie,\n parseUnparsedAttributes\n}\n","'use strict'\n\nconst assert = require('assert')\nconst { kHeadersList } = require('../core/symbols')\n\nfunction isCTLExcludingHtab (value) {\n if (value.length === 0) {\n return false\n }\n\n for (const char of value) {\n const code = char.charCodeAt(0)\n\n if (\n (code >= 0x00 || code <= 0x08) ||\n (code >= 0x0A || code <= 0x1F) ||\n code === 0x7F\n ) {\n return false\n }\n }\n}\n\n/**\n CHAR = \n token = 1*\n separators = \"(\" | \")\" | \"<\" | \">\" | \"@\"\n | \",\" | \";\" | \":\" | \"\\\" | <\">\n | \"/\" | \"[\" | \"]\" | \"?\" | \"=\"\n | \"{\" | \"}\" | SP | HT\n * @param {string} name\n */\nfunction validateCookieName (name) {\n for (const char of name) {\n const code = char.charCodeAt(0)\n\n if (\n (code <= 0x20 || code > 0x7F) ||\n char === '(' ||\n char === ')' ||\n char === '>' ||\n char === '<' ||\n char === '@' ||\n char === ',' ||\n char === ';' ||\n char === ':' ||\n char === '\\\\' ||\n char === '\"' ||\n char === '/' ||\n char === '[' ||\n char === ']' ||\n char === '?' ||\n char === '=' ||\n char === '{' ||\n char === '}'\n ) {\n throw new Error('Invalid cookie name')\n }\n }\n}\n\n/**\n cookie-value = *cookie-octet / ( DQUOTE *cookie-octet DQUOTE )\n cookie-octet = %x21 / %x23-2B / %x2D-3A / %x3C-5B / %x5D-7E\n ; US-ASCII characters excluding CTLs,\n ; whitespace DQUOTE, comma, semicolon,\n ; and backslash\n * @param {string} value\n */\nfunction validateCookieValue (value) {\n for (const char of value) {\n const code = char.charCodeAt(0)\n\n if (\n code < 0x21 || // exclude CTLs (0-31)\n code === 0x22 ||\n code === 0x2C ||\n code === 0x3B ||\n code === 0x5C ||\n code > 0x7E // non-ascii\n ) {\n throw new Error('Invalid header value')\n }\n }\n}\n\n/**\n * path-value = \n * @param {string} path\n */\nfunction validateCookiePath (path) {\n for (const char of path) {\n const code = char.charCodeAt(0)\n\n if (code < 0x21 || char === ';') {\n throw new Error('Invalid cookie path')\n }\n }\n}\n\n/**\n * I have no idea why these values aren't allowed to be honest,\n * but Deno tests these. - Khafra\n * @param {string} domain\n */\nfunction validateCookieDomain (domain) {\n if (\n domain.startsWith('-') ||\n domain.endsWith('.') ||\n domain.endsWith('-')\n ) {\n throw new Error('Invalid cookie domain')\n }\n}\n\n/**\n * @see https://www.rfc-editor.org/rfc/rfc7231#section-7.1.1.1\n * @param {number|Date} date\n IMF-fixdate = day-name \",\" SP date1 SP time-of-day SP GMT\n ; fixed length/zone/capitalization subset of the format\n ; see Section 3.3 of [RFC5322]\n\n day-name = %x4D.6F.6E ; \"Mon\", case-sensitive\n / %x54.75.65 ; \"Tue\", case-sensitive\n / %x57.65.64 ; \"Wed\", case-sensitive\n / %x54.68.75 ; \"Thu\", case-sensitive\n / %x46.72.69 ; \"Fri\", case-sensitive\n / %x53.61.74 ; \"Sat\", case-sensitive\n / %x53.75.6E ; \"Sun\", case-sensitive\n date1 = day SP month SP year\n ; e.g., 02 Jun 1982\n\n day = 2DIGIT\n month = %x4A.61.6E ; \"Jan\", case-sensitive\n / %x46.65.62 ; \"Feb\", case-sensitive\n / %x4D.61.72 ; \"Mar\", case-sensitive\n / %x41.70.72 ; \"Apr\", case-sensitive\n / %x4D.61.79 ; \"May\", case-sensitive\n / %x4A.75.6E ; \"Jun\", case-sensitive\n / %x4A.75.6C ; \"Jul\", case-sensitive\n / %x41.75.67 ; \"Aug\", case-sensitive\n / %x53.65.70 ; \"Sep\", case-sensitive\n / %x4F.63.74 ; \"Oct\", case-sensitive\n / %x4E.6F.76 ; \"Nov\", case-sensitive\n / %x44.65.63 ; \"Dec\", case-sensitive\n year = 4DIGIT\n\n GMT = %x47.4D.54 ; \"GMT\", case-sensitive\n\n time-of-day = hour \":\" minute \":\" second\n ; 00:00:00 - 23:59:60 (leap second)\n\n hour = 2DIGIT\n minute = 2DIGIT\n second = 2DIGIT\n */\nfunction toIMFDate (date) {\n if (typeof date === 'number') {\n date = new Date(date)\n }\n\n const days = [\n 'Sun', 'Mon', 'Tue', 'Wed',\n 'Thu', 'Fri', 'Sat'\n ]\n\n const months = [\n 'Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun',\n 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'\n ]\n\n const dayName = days[date.getUTCDay()]\n const day = date.getUTCDate().toString().padStart(2, '0')\n const month = months[date.getUTCMonth()]\n const year = date.getUTCFullYear()\n const hour = date.getUTCHours().toString().padStart(2, '0')\n const minute = date.getUTCMinutes().toString().padStart(2, '0')\n const second = date.getUTCSeconds().toString().padStart(2, '0')\n\n return `${dayName}, ${day} ${month} ${year} ${hour}:${minute}:${second} GMT`\n}\n\n/**\n max-age-av = \"Max-Age=\" non-zero-digit *DIGIT\n ; In practice, both expires-av and max-age-av\n ; are limited to dates representable by the\n ; user agent.\n * @param {number} maxAge\n */\nfunction validateCookieMaxAge (maxAge) {\n if (maxAge < 0) {\n throw new Error('Invalid cookie max-age')\n }\n}\n\n/**\n * @see https://www.rfc-editor.org/rfc/rfc6265#section-4.1.1\n * @param {import('./index').Cookie} cookie\n */\nfunction stringify (cookie) {\n if (cookie.name.length === 0) {\n return null\n }\n\n validateCookieName(cookie.name)\n validateCookieValue(cookie.value)\n\n const out = [`${cookie.name}=${cookie.value}`]\n\n // https://datatracker.ietf.org/doc/html/draft-ietf-httpbis-cookie-prefixes-00#section-3.1\n // https://datatracker.ietf.org/doc/html/draft-ietf-httpbis-cookie-prefixes-00#section-3.2\n if (cookie.name.startsWith('__Secure-')) {\n cookie.secure = true\n }\n\n if (cookie.name.startsWith('__Host-')) {\n cookie.secure = true\n cookie.domain = null\n cookie.path = '/'\n }\n\n if (cookie.secure) {\n out.push('Secure')\n }\n\n if (cookie.httpOnly) {\n out.push('HttpOnly')\n }\n\n if (typeof cookie.maxAge === 'number') {\n validateCookieMaxAge(cookie.maxAge)\n out.push(`Max-Age=${cookie.maxAge}`)\n }\n\n if (cookie.domain) {\n validateCookieDomain(cookie.domain)\n out.push(`Domain=${cookie.domain}`)\n }\n\n if (cookie.path) {\n validateCookiePath(cookie.path)\n out.push(`Path=${cookie.path}`)\n }\n\n if (cookie.expires && cookie.expires.toString() !== 'Invalid Date') {\n out.push(`Expires=${toIMFDate(cookie.expires)}`)\n }\n\n if (cookie.sameSite) {\n out.push(`SameSite=${cookie.sameSite}`)\n }\n\n for (const part of cookie.unparsed) {\n if (!part.includes('=')) {\n throw new Error('Invalid unparsed')\n }\n\n const [key, ...value] = part.split('=')\n\n out.push(`${key.trim()}=${value.join('=')}`)\n }\n\n return out.join('; ')\n}\n\nlet kHeadersListNode\n\nfunction getHeadersList (headers) {\n if (headers[kHeadersList]) {\n return headers[kHeadersList]\n }\n\n if (!kHeadersListNode) {\n kHeadersListNode = Object.getOwnPropertySymbols(headers).find(\n (symbol) => symbol.description === 'headers list'\n )\n\n assert(kHeadersListNode, 'Headers cannot be parsed')\n }\n\n const headersList = headers[kHeadersListNode]\n assert(headersList)\n\n return headersList\n}\n\nmodule.exports = {\n isCTLExcludingHtab,\n stringify,\n getHeadersList\n}\n","'use strict'\n\nconst net = require('net')\nconst assert = require('assert')\nconst util = require('./util')\nconst { InvalidArgumentError, ConnectTimeoutError } = require('./errors')\n\nlet tls // include tls conditionally since it is not always available\n\n// TODO: session re-use does not wait for the first\n// connection to resolve the session and might therefore\n// resolve the same servername multiple times even when\n// re-use is enabled.\n\nlet SessionCache\n// FIXME: remove workaround when the Node bug is fixed\n// https://github.com/nodejs/node/issues/49344#issuecomment-1741776308\nif (global.FinalizationRegistry && !process.env.NODE_V8_COVERAGE) {\n SessionCache = class WeakSessionCache {\n constructor (maxCachedSessions) {\n this._maxCachedSessions = maxCachedSessions\n this._sessionCache = new Map()\n this._sessionRegistry = new global.FinalizationRegistry((key) => {\n if (this._sessionCache.size < this._maxCachedSessions) {\n return\n }\n\n const ref = this._sessionCache.get(key)\n if (ref !== undefined && ref.deref() === undefined) {\n this._sessionCache.delete(key)\n }\n })\n }\n\n get (sessionKey) {\n const ref = this._sessionCache.get(sessionKey)\n return ref ? ref.deref() : null\n }\n\n set (sessionKey, session) {\n if (this._maxCachedSessions === 0) {\n return\n }\n\n this._sessionCache.set(sessionKey, new WeakRef(session))\n this._sessionRegistry.register(session, sessionKey)\n }\n }\n} else {\n SessionCache = class SimpleSessionCache {\n constructor (maxCachedSessions) {\n this._maxCachedSessions = maxCachedSessions\n this._sessionCache = new Map()\n }\n\n get (sessionKey) {\n return this._sessionCache.get(sessionKey)\n }\n\n set (sessionKey, session) {\n if (this._maxCachedSessions === 0) {\n return\n }\n\n if (this._sessionCache.size >= this._maxCachedSessions) {\n // remove the oldest session\n const { value: oldestKey } = this._sessionCache.keys().next()\n this._sessionCache.delete(oldestKey)\n }\n\n this._sessionCache.set(sessionKey, session)\n }\n }\n}\n\nfunction buildConnector ({ allowH2, maxCachedSessions, socketPath, timeout, ...opts }) {\n if (maxCachedSessions != null && (!Number.isInteger(maxCachedSessions) || maxCachedSessions < 0)) {\n throw new InvalidArgumentError('maxCachedSessions must be a positive integer or zero')\n }\n\n const options = { path: socketPath, ...opts }\n const sessionCache = new SessionCache(maxCachedSessions == null ? 100 : maxCachedSessions)\n timeout = timeout == null ? 10e3 : timeout\n allowH2 = allowH2 != null ? allowH2 : false\n return function connect ({ hostname, host, protocol, port, servername, localAddress, httpSocket }, callback) {\n let socket\n if (protocol === 'https:') {\n if (!tls) {\n tls = require('tls')\n }\n servername = servername || options.servername || util.getServerName(host) || null\n\n const sessionKey = servername || hostname\n const session = sessionCache.get(sessionKey) || null\n\n assert(sessionKey)\n\n socket = tls.connect({\n highWaterMark: 16384, // TLS in node can't have bigger HWM anyway...\n ...options,\n servername,\n session,\n localAddress,\n // TODO(HTTP/2): Add support for h2c\n ALPNProtocols: allowH2 ? ['http/1.1', 'h2'] : ['http/1.1'],\n socket: httpSocket, // upgrade socket connection\n port: port || 443,\n host: hostname\n })\n\n socket\n .on('session', function (session) {\n // TODO (fix): Can a session become invalid once established? Don't think so?\n sessionCache.set(sessionKey, session)\n })\n } else {\n assert(!httpSocket, 'httpSocket can only be sent on TLS update')\n socket = net.connect({\n highWaterMark: 64 * 1024, // Same as nodejs fs streams.\n ...options,\n localAddress,\n port: port || 80,\n host: hostname\n })\n }\n\n // Set TCP keep alive options on the socket here instead of in connect() for the case of assigning the socket\n if (options.keepAlive == null || options.keepAlive) {\n const keepAliveInitialDelay = options.keepAliveInitialDelay === undefined ? 60e3 : options.keepAliveInitialDelay\n socket.setKeepAlive(true, keepAliveInitialDelay)\n }\n\n const cancelTimeout = setupTimeout(() => onConnectTimeout(socket), timeout)\n\n socket\n .setNoDelay(true)\n .once(protocol === 'https:' ? 'secureConnect' : 'connect', function () {\n cancelTimeout()\n\n if (callback) {\n const cb = callback\n callback = null\n cb(null, this)\n }\n })\n .on('error', function (err) {\n cancelTimeout()\n\n if (callback) {\n const cb = callback\n callback = null\n cb(err)\n }\n })\n\n return socket\n }\n}\n\nfunction setupTimeout (onConnectTimeout, timeout) {\n if (!timeout) {\n return () => {}\n }\n\n let s1 = null\n let s2 = null\n const timeoutId = setTimeout(() => {\n // setImmediate is added to make sure that we priotorise socket error events over timeouts\n s1 = setImmediate(() => {\n if (process.platform === 'win32') {\n // Windows needs an extra setImmediate probably due to implementation differences in the socket logic\n s2 = setImmediate(() => onConnectTimeout())\n } else {\n onConnectTimeout()\n }\n })\n }, timeout)\n return () => {\n clearTimeout(timeoutId)\n clearImmediate(s1)\n clearImmediate(s2)\n }\n}\n\nfunction onConnectTimeout (socket) {\n util.destroy(socket, new ConnectTimeoutError())\n}\n\nmodule.exports = buildConnector\n","'use strict'\n\n/** @type {Record} */\nconst headerNameLowerCasedRecord = {}\n\n// https://developer.mozilla.org/docs/Web/HTTP/Headers\nconst wellknownHeaderNames = [\n 'Accept',\n 'Accept-Encoding',\n 'Accept-Language',\n 'Accept-Ranges',\n 'Access-Control-Allow-Credentials',\n 'Access-Control-Allow-Headers',\n 'Access-Control-Allow-Methods',\n 'Access-Control-Allow-Origin',\n 'Access-Control-Expose-Headers',\n 'Access-Control-Max-Age',\n 'Access-Control-Request-Headers',\n 'Access-Control-Request-Method',\n 'Age',\n 'Allow',\n 'Alt-Svc',\n 'Alt-Used',\n 'Authorization',\n 'Cache-Control',\n 'Clear-Site-Data',\n 'Connection',\n 'Content-Disposition',\n 'Content-Encoding',\n 'Content-Language',\n 'Content-Length',\n 'Content-Location',\n 'Content-Range',\n 'Content-Security-Policy',\n 'Content-Security-Policy-Report-Only',\n 'Content-Type',\n 'Cookie',\n 'Cross-Origin-Embedder-Policy',\n 'Cross-Origin-Opener-Policy',\n 'Cross-Origin-Resource-Policy',\n 'Date',\n 'Device-Memory',\n 'Downlink',\n 'ECT',\n 'ETag',\n 'Expect',\n 'Expect-CT',\n 'Expires',\n 'Forwarded',\n 'From',\n 'Host',\n 'If-Match',\n 'If-Modified-Since',\n 'If-None-Match',\n 'If-Range',\n 'If-Unmodified-Since',\n 'Keep-Alive',\n 'Last-Modified',\n 'Link',\n 'Location',\n 'Max-Forwards',\n 'Origin',\n 'Permissions-Policy',\n 'Pragma',\n 'Proxy-Authenticate',\n 'Proxy-Authorization',\n 'RTT',\n 'Range',\n 'Referer',\n 'Referrer-Policy',\n 'Refresh',\n 'Retry-After',\n 'Sec-WebSocket-Accept',\n 'Sec-WebSocket-Extensions',\n 'Sec-WebSocket-Key',\n 'Sec-WebSocket-Protocol',\n 'Sec-WebSocket-Version',\n 'Server',\n 'Server-Timing',\n 'Service-Worker-Allowed',\n 'Service-Worker-Navigation-Preload',\n 'Set-Cookie',\n 'SourceMap',\n 'Strict-Transport-Security',\n 'Supports-Loading-Mode',\n 'TE',\n 'Timing-Allow-Origin',\n 'Trailer',\n 'Transfer-Encoding',\n 'Upgrade',\n 'Upgrade-Insecure-Requests',\n 'User-Agent',\n 'Vary',\n 'Via',\n 'WWW-Authenticate',\n 'X-Content-Type-Options',\n 'X-DNS-Prefetch-Control',\n 'X-Frame-Options',\n 'X-Permitted-Cross-Domain-Policies',\n 'X-Powered-By',\n 'X-Requested-With',\n 'X-XSS-Protection'\n]\n\nfor (let i = 0; i < wellknownHeaderNames.length; ++i) {\n const key = wellknownHeaderNames[i]\n const lowerCasedKey = key.toLowerCase()\n headerNameLowerCasedRecord[key] = headerNameLowerCasedRecord[lowerCasedKey] =\n lowerCasedKey\n}\n\n// Note: object prototypes should not be able to be referenced. e.g. `Object#hasOwnProperty`.\nObject.setPrototypeOf(headerNameLowerCasedRecord, null)\n\nmodule.exports = {\n wellknownHeaderNames,\n headerNameLowerCasedRecord\n}\n","'use strict'\n\nclass UndiciError extends Error {\n constructor (message) {\n super(message)\n this.name = 'UndiciError'\n this.code = 'UND_ERR'\n }\n}\n\nclass ConnectTimeoutError extends UndiciError {\n constructor (message) {\n super(message)\n Error.captureStackTrace(this, ConnectTimeoutError)\n this.name = 'ConnectTimeoutError'\n this.message = message || 'Connect Timeout Error'\n this.code = 'UND_ERR_CONNECT_TIMEOUT'\n }\n}\n\nclass HeadersTimeoutError extends UndiciError {\n constructor (message) {\n super(message)\n Error.captureStackTrace(this, HeadersTimeoutError)\n this.name = 'HeadersTimeoutError'\n this.message = message || 'Headers Timeout Error'\n this.code = 'UND_ERR_HEADERS_TIMEOUT'\n }\n}\n\nclass HeadersOverflowError extends UndiciError {\n constructor (message) {\n super(message)\n Error.captureStackTrace(this, HeadersOverflowError)\n this.name = 'HeadersOverflowError'\n this.message = message || 'Headers Overflow Error'\n this.code = 'UND_ERR_HEADERS_OVERFLOW'\n }\n}\n\nclass BodyTimeoutError extends UndiciError {\n constructor (message) {\n super(message)\n Error.captureStackTrace(this, BodyTimeoutError)\n this.name = 'BodyTimeoutError'\n this.message = message || 'Body Timeout Error'\n this.code = 'UND_ERR_BODY_TIMEOUT'\n }\n}\n\nclass ResponseStatusCodeError extends UndiciError {\n constructor (message, statusCode, headers, body) {\n super(message)\n Error.captureStackTrace(this, ResponseStatusCodeError)\n this.name = 'ResponseStatusCodeError'\n this.message = message || 'Response Status Code Error'\n this.code = 'UND_ERR_RESPONSE_STATUS_CODE'\n this.body = body\n this.status = statusCode\n this.statusCode = statusCode\n this.headers = headers\n }\n}\n\nclass InvalidArgumentError extends UndiciError {\n constructor (message) {\n super(message)\n Error.captureStackTrace(this, InvalidArgumentError)\n this.name = 'InvalidArgumentError'\n this.message = message || 'Invalid Argument Error'\n this.code = 'UND_ERR_INVALID_ARG'\n }\n}\n\nclass InvalidReturnValueError extends UndiciError {\n constructor (message) {\n super(message)\n Error.captureStackTrace(this, InvalidReturnValueError)\n this.name = 'InvalidReturnValueError'\n this.message = message || 'Invalid Return Value Error'\n this.code = 'UND_ERR_INVALID_RETURN_VALUE'\n }\n}\n\nclass RequestAbortedError extends UndiciError {\n constructor (message) {\n super(message)\n Error.captureStackTrace(this, RequestAbortedError)\n this.name = 'AbortError'\n this.message = message || 'Request aborted'\n this.code = 'UND_ERR_ABORTED'\n }\n}\n\nclass InformationalError extends UndiciError {\n constructor (message) {\n super(message)\n Error.captureStackTrace(this, InformationalError)\n this.name = 'InformationalError'\n this.message = message || 'Request information'\n this.code = 'UND_ERR_INFO'\n }\n}\n\nclass RequestContentLengthMismatchError extends UndiciError {\n constructor (message) {\n super(message)\n Error.captureStackTrace(this, RequestContentLengthMismatchError)\n this.name = 'RequestContentLengthMismatchError'\n this.message = message || 'Request body length does not match content-length header'\n this.code = 'UND_ERR_REQ_CONTENT_LENGTH_MISMATCH'\n }\n}\n\nclass ResponseContentLengthMismatchError extends UndiciError {\n constructor (message) {\n super(message)\n Error.captureStackTrace(this, ResponseContentLengthMismatchError)\n this.name = 'ResponseContentLengthMismatchError'\n this.message = message || 'Response body length does not match content-length header'\n this.code = 'UND_ERR_RES_CONTENT_LENGTH_MISMATCH'\n }\n}\n\nclass ClientDestroyedError extends UndiciError {\n constructor (message) {\n super(message)\n Error.captureStackTrace(this, ClientDestroyedError)\n this.name = 'ClientDestroyedError'\n this.message = message || 'The client is destroyed'\n this.code = 'UND_ERR_DESTROYED'\n }\n}\n\nclass ClientClosedError extends UndiciError {\n constructor (message) {\n super(message)\n Error.captureStackTrace(this, ClientClosedError)\n this.name = 'ClientClosedError'\n this.message = message || 'The client is closed'\n this.code = 'UND_ERR_CLOSED'\n }\n}\n\nclass SocketError extends UndiciError {\n constructor (message, socket) {\n super(message)\n Error.captureStackTrace(this, SocketError)\n this.name = 'SocketError'\n this.message = message || 'Socket error'\n this.code = 'UND_ERR_SOCKET'\n this.socket = socket\n }\n}\n\nclass NotSupportedError extends UndiciError {\n constructor (message) {\n super(message)\n Error.captureStackTrace(this, NotSupportedError)\n this.name = 'NotSupportedError'\n this.message = message || 'Not supported error'\n this.code = 'UND_ERR_NOT_SUPPORTED'\n }\n}\n\nclass BalancedPoolMissingUpstreamError extends UndiciError {\n constructor (message) {\n super(message)\n Error.captureStackTrace(this, NotSupportedError)\n this.name = 'MissingUpstreamError'\n this.message = message || 'No upstream has been added to the BalancedPool'\n this.code = 'UND_ERR_BPL_MISSING_UPSTREAM'\n }\n}\n\nclass HTTPParserError extends Error {\n constructor (message, code, data) {\n super(message)\n Error.captureStackTrace(this, HTTPParserError)\n this.name = 'HTTPParserError'\n this.code = code ? `HPE_${code}` : undefined\n this.data = data ? data.toString() : undefined\n }\n}\n\nclass ResponseExceededMaxSizeError extends UndiciError {\n constructor (message) {\n super(message)\n Error.captureStackTrace(this, ResponseExceededMaxSizeError)\n this.name = 'ResponseExceededMaxSizeError'\n this.message = message || 'Response content exceeded max size'\n this.code = 'UND_ERR_RES_EXCEEDED_MAX_SIZE'\n }\n}\n\nclass RequestRetryError extends UndiciError {\n constructor (message, code, { headers, data }) {\n super(message)\n Error.captureStackTrace(this, RequestRetryError)\n this.name = 'RequestRetryError'\n this.message = message || 'Request retry error'\n this.code = 'UND_ERR_REQ_RETRY'\n this.statusCode = code\n this.data = data\n this.headers = headers\n }\n}\n\nmodule.exports = {\n HTTPParserError,\n UndiciError,\n HeadersTimeoutError,\n HeadersOverflowError,\n BodyTimeoutError,\n RequestContentLengthMismatchError,\n ConnectTimeoutError,\n ResponseStatusCodeError,\n InvalidArgumentError,\n InvalidReturnValueError,\n RequestAbortedError,\n ClientDestroyedError,\n ClientClosedError,\n InformationalError,\n SocketError,\n NotSupportedError,\n ResponseContentLengthMismatchError,\n BalancedPoolMissingUpstreamError,\n ResponseExceededMaxSizeError,\n RequestRetryError\n}\n","'use strict'\n\nconst {\n InvalidArgumentError,\n NotSupportedError\n} = require('./errors')\nconst assert = require('assert')\nconst { kHTTP2BuildRequest, kHTTP2CopyHeaders, kHTTP1BuildRequest } = require('./symbols')\nconst util = require('./util')\n\n// tokenRegExp and headerCharRegex have been lifted from\n// https://github.com/nodejs/node/blob/main/lib/_http_common.js\n\n/**\n * Verifies that the given val is a valid HTTP token\n * per the rules defined in RFC 7230\n * See https://tools.ietf.org/html/rfc7230#section-3.2.6\n */\nconst tokenRegExp = /^[\\^_`a-zA-Z\\-0-9!#$%&'*+.|~]+$/\n\n/**\n * Matches if val contains an invalid field-vchar\n * field-value = *( field-content / obs-fold )\n * field-content = field-vchar [ 1*( SP / HTAB ) field-vchar ]\n * field-vchar = VCHAR / obs-text\n */\nconst headerCharRegex = /[^\\t\\x20-\\x7e\\x80-\\xff]/\n\n// Verifies that a given path is valid does not contain control chars \\x00 to \\x20\nconst invalidPathRegex = /[^\\u0021-\\u00ff]/\n\nconst kHandler = Symbol('handler')\n\nconst channels = {}\n\nlet extractBody\n\ntry {\n const diagnosticsChannel = require('diagnostics_channel')\n channels.create = diagnosticsChannel.channel('undici:request:create')\n channels.bodySent = diagnosticsChannel.channel('undici:request:bodySent')\n channels.headers = diagnosticsChannel.channel('undici:request:headers')\n channels.trailers = diagnosticsChannel.channel('undici:request:trailers')\n channels.error = diagnosticsChannel.channel('undici:request:error')\n} catch {\n channels.create = { hasSubscribers: false }\n channels.bodySent = { hasSubscribers: false }\n channels.headers = { hasSubscribers: false }\n channels.trailers = { hasSubscribers: false }\n channels.error = { hasSubscribers: false }\n}\n\nclass Request {\n constructor (origin, {\n path,\n method,\n body,\n headers,\n query,\n idempotent,\n blocking,\n upgrade,\n headersTimeout,\n bodyTimeout,\n reset,\n throwOnError,\n expectContinue\n }, handler) {\n if (typeof path !== 'string') {\n throw new InvalidArgumentError('path must be a string')\n } else if (\n path[0] !== '/' &&\n !(path.startsWith('http://') || path.startsWith('https://')) &&\n method !== 'CONNECT'\n ) {\n throw new InvalidArgumentError('path must be an absolute URL or start with a slash')\n } else if (invalidPathRegex.exec(path) !== null) {\n throw new InvalidArgumentError('invalid request path')\n }\n\n if (typeof method !== 'string') {\n throw new InvalidArgumentError('method must be a string')\n } else if (tokenRegExp.exec(method) === null) {\n throw new InvalidArgumentError('invalid request method')\n }\n\n if (upgrade && typeof upgrade !== 'string') {\n throw new InvalidArgumentError('upgrade must be a string')\n }\n\n if (headersTimeout != null && (!Number.isFinite(headersTimeout) || headersTimeout < 0)) {\n throw new InvalidArgumentError('invalid headersTimeout')\n }\n\n if (bodyTimeout != null && (!Number.isFinite(bodyTimeout) || bodyTimeout < 0)) {\n throw new InvalidArgumentError('invalid bodyTimeout')\n }\n\n if (reset != null && typeof reset !== 'boolean') {\n throw new InvalidArgumentError('invalid reset')\n }\n\n if (expectContinue != null && typeof expectContinue !== 'boolean') {\n throw new InvalidArgumentError('invalid expectContinue')\n }\n\n this.headersTimeout = headersTimeout\n\n this.bodyTimeout = bodyTimeout\n\n this.throwOnError = throwOnError === true\n\n this.method = method\n\n this.abort = null\n\n if (body == null) {\n this.body = null\n } else if (util.isStream(body)) {\n this.body = body\n\n const rState = this.body._readableState\n if (!rState || !rState.autoDestroy) {\n this.endHandler = function autoDestroy () {\n util.destroy(this)\n }\n this.body.on('end', this.endHandler)\n }\n\n this.errorHandler = err => {\n if (this.abort) {\n this.abort(err)\n } else {\n this.error = err\n }\n }\n this.body.on('error', this.errorHandler)\n } else if (util.isBuffer(body)) {\n this.body = body.byteLength ? body : null\n } else if (ArrayBuffer.isView(body)) {\n this.body = body.buffer.byteLength ? Buffer.from(body.buffer, body.byteOffset, body.byteLength) : null\n } else if (body instanceof ArrayBuffer) {\n this.body = body.byteLength ? Buffer.from(body) : null\n } else if (typeof body === 'string') {\n this.body = body.length ? Buffer.from(body) : null\n } else if (util.isFormDataLike(body) || util.isIterable(body) || util.isBlobLike(body)) {\n this.body = body\n } else {\n throw new InvalidArgumentError('body must be a string, a Buffer, a Readable stream, an iterable, or an async iterable')\n }\n\n this.completed = false\n\n this.aborted = false\n\n this.upgrade = upgrade || null\n\n this.path = query ? util.buildURL(path, query) : path\n\n this.origin = origin\n\n this.idempotent = idempotent == null\n ? method === 'HEAD' || method === 'GET'\n : idempotent\n\n this.blocking = blocking == null ? false : blocking\n\n this.reset = reset == null ? null : reset\n\n this.host = null\n\n this.contentLength = null\n\n this.contentType = null\n\n this.headers = ''\n\n // Only for H2\n this.expectContinue = expectContinue != null ? expectContinue : false\n\n if (Array.isArray(headers)) {\n if (headers.length % 2 !== 0) {\n throw new InvalidArgumentError('headers array must be even')\n }\n for (let i = 0; i < headers.length; i += 2) {\n processHeader(this, headers[i], headers[i + 1])\n }\n } else if (headers && typeof headers === 'object') {\n const keys = Object.keys(headers)\n for (let i = 0; i < keys.length; i++) {\n const key = keys[i]\n processHeader(this, key, headers[key])\n }\n } else if (headers != null) {\n throw new InvalidArgumentError('headers must be an object or an array')\n }\n\n if (util.isFormDataLike(this.body)) {\n if (util.nodeMajor < 16 || (util.nodeMajor === 16 && util.nodeMinor < 8)) {\n throw new InvalidArgumentError('Form-Data bodies are only supported in node v16.8 and newer.')\n }\n\n if (!extractBody) {\n extractBody = require('../fetch/body.js').extractBody\n }\n\n const [bodyStream, contentType] = extractBody(body)\n if (this.contentType == null) {\n this.contentType = contentType\n this.headers += `content-type: ${contentType}\\r\\n`\n }\n this.body = bodyStream.stream\n this.contentLength = bodyStream.length\n } else if (util.isBlobLike(body) && this.contentType == null && body.type) {\n this.contentType = body.type\n this.headers += `content-type: ${body.type}\\r\\n`\n }\n\n util.validateHandler(handler, method, upgrade)\n\n this.servername = util.getServerName(this.host)\n\n this[kHandler] = handler\n\n if (channels.create.hasSubscribers) {\n channels.create.publish({ request: this })\n }\n }\n\n onBodySent (chunk) {\n if (this[kHandler].onBodySent) {\n try {\n return this[kHandler].onBodySent(chunk)\n } catch (err) {\n this.abort(err)\n }\n }\n }\n\n onRequestSent () {\n if (channels.bodySent.hasSubscribers) {\n channels.bodySent.publish({ request: this })\n }\n\n if (this[kHandler].onRequestSent) {\n try {\n return this[kHandler].onRequestSent()\n } catch (err) {\n this.abort(err)\n }\n }\n }\n\n onConnect (abort) {\n assert(!this.aborted)\n assert(!this.completed)\n\n if (this.error) {\n abort(this.error)\n } else {\n this.abort = abort\n return this[kHandler].onConnect(abort)\n }\n }\n\n onHeaders (statusCode, headers, resume, statusText) {\n assert(!this.aborted)\n assert(!this.completed)\n\n if (channels.headers.hasSubscribers) {\n channels.headers.publish({ request: this, response: { statusCode, headers, statusText } })\n }\n\n try {\n return this[kHandler].onHeaders(statusCode, headers, resume, statusText)\n } catch (err) {\n this.abort(err)\n }\n }\n\n onData (chunk) {\n assert(!this.aborted)\n assert(!this.completed)\n\n try {\n return this[kHandler].onData(chunk)\n } catch (err) {\n this.abort(err)\n return false\n }\n }\n\n onUpgrade (statusCode, headers, socket) {\n assert(!this.aborted)\n assert(!this.completed)\n\n return this[kHandler].onUpgrade(statusCode, headers, socket)\n }\n\n onComplete (trailers) {\n this.onFinally()\n\n assert(!this.aborted)\n\n this.completed = true\n if (channels.trailers.hasSubscribers) {\n channels.trailers.publish({ request: this, trailers })\n }\n\n try {\n return this[kHandler].onComplete(trailers)\n } catch (err) {\n // TODO (fix): This might be a bad idea?\n this.onError(err)\n }\n }\n\n onError (error) {\n this.onFinally()\n\n if (channels.error.hasSubscribers) {\n channels.error.publish({ request: this, error })\n }\n\n if (this.aborted) {\n return\n }\n this.aborted = true\n\n return this[kHandler].onError(error)\n }\n\n onFinally () {\n if (this.errorHandler) {\n this.body.off('error', this.errorHandler)\n this.errorHandler = null\n }\n\n if (this.endHandler) {\n this.body.off('end', this.endHandler)\n this.endHandler = null\n }\n }\n\n // TODO: adjust to support H2\n addHeader (key, value) {\n processHeader(this, key, value)\n return this\n }\n\n static [kHTTP1BuildRequest] (origin, opts, handler) {\n // TODO: Migrate header parsing here, to make Requests\n // HTTP agnostic\n return new Request(origin, opts, handler)\n }\n\n static [kHTTP2BuildRequest] (origin, opts, handler) {\n const headers = opts.headers\n opts = { ...opts, headers: null }\n\n const request = new Request(origin, opts, handler)\n\n request.headers = {}\n\n if (Array.isArray(headers)) {\n if (headers.length % 2 !== 0) {\n throw new InvalidArgumentError('headers array must be even')\n }\n for (let i = 0; i < headers.length; i += 2) {\n processHeader(request, headers[i], headers[i + 1], true)\n }\n } else if (headers && typeof headers === 'object') {\n const keys = Object.keys(headers)\n for (let i = 0; i < keys.length; i++) {\n const key = keys[i]\n processHeader(request, key, headers[key], true)\n }\n } else if (headers != null) {\n throw new InvalidArgumentError('headers must be an object or an array')\n }\n\n return request\n }\n\n static [kHTTP2CopyHeaders] (raw) {\n const rawHeaders = raw.split('\\r\\n')\n const headers = {}\n\n for (const header of rawHeaders) {\n const [key, value] = header.split(': ')\n\n if (value == null || value.length === 0) continue\n\n if (headers[key]) headers[key] += `,${value}`\n else headers[key] = value\n }\n\n return headers\n }\n}\n\nfunction processHeaderValue (key, val, skipAppend) {\n if (val && typeof val === 'object') {\n throw new InvalidArgumentError(`invalid ${key} header`)\n }\n\n val = val != null ? `${val}` : ''\n\n if (headerCharRegex.exec(val) !== null) {\n throw new InvalidArgumentError(`invalid ${key} header`)\n }\n\n return skipAppend ? val : `${key}: ${val}\\r\\n`\n}\n\nfunction processHeader (request, key, val, skipAppend = false) {\n if (val && (typeof val === 'object' && !Array.isArray(val))) {\n throw new InvalidArgumentError(`invalid ${key} header`)\n } else if (val === undefined) {\n return\n }\n\n if (\n request.host === null &&\n key.length === 4 &&\n key.toLowerCase() === 'host'\n ) {\n if (headerCharRegex.exec(val) !== null) {\n throw new InvalidArgumentError(`invalid ${key} header`)\n }\n // Consumed by Client\n request.host = val\n } else if (\n request.contentLength === null &&\n key.length === 14 &&\n key.toLowerCase() === 'content-length'\n ) {\n request.contentLength = parseInt(val, 10)\n if (!Number.isFinite(request.contentLength)) {\n throw new InvalidArgumentError('invalid content-length header')\n }\n } else if (\n request.contentType === null &&\n key.length === 12 &&\n key.toLowerCase() === 'content-type'\n ) {\n request.contentType = val\n if (skipAppend) request.headers[key] = processHeaderValue(key, val, skipAppend)\n else request.headers += processHeaderValue(key, val)\n } else if (\n key.length === 17 &&\n key.toLowerCase() === 'transfer-encoding'\n ) {\n throw new InvalidArgumentError('invalid transfer-encoding header')\n } else if (\n key.length === 10 &&\n key.toLowerCase() === 'connection'\n ) {\n const value = typeof val === 'string' ? val.toLowerCase() : null\n if (value !== 'close' && value !== 'keep-alive') {\n throw new InvalidArgumentError('invalid connection header')\n } else if (value === 'close') {\n request.reset = true\n }\n } else if (\n key.length === 10 &&\n key.toLowerCase() === 'keep-alive'\n ) {\n throw new InvalidArgumentError('invalid keep-alive header')\n } else if (\n key.length === 7 &&\n key.toLowerCase() === 'upgrade'\n ) {\n throw new InvalidArgumentError('invalid upgrade header')\n } else if (\n key.length === 6 &&\n key.toLowerCase() === 'expect'\n ) {\n throw new NotSupportedError('expect header not supported')\n } else if (tokenRegExp.exec(key) === null) {\n throw new InvalidArgumentError('invalid header key')\n } else {\n if (Array.isArray(val)) {\n for (let i = 0; i < val.length; i++) {\n if (skipAppend) {\n if (request.headers[key]) request.headers[key] += `,${processHeaderValue(key, val[i], skipAppend)}`\n else request.headers[key] = processHeaderValue(key, val[i], skipAppend)\n } else {\n request.headers += processHeaderValue(key, val[i])\n }\n }\n } else {\n if (skipAppend) request.headers[key] = processHeaderValue(key, val, skipAppend)\n else request.headers += processHeaderValue(key, val)\n }\n }\n}\n\nmodule.exports = Request\n","module.exports = {\n kClose: Symbol('close'),\n kDestroy: Symbol('destroy'),\n kDispatch: Symbol('dispatch'),\n kUrl: Symbol('url'),\n kWriting: Symbol('writing'),\n kResuming: Symbol('resuming'),\n kQueue: Symbol('queue'),\n kConnect: Symbol('connect'),\n kConnecting: Symbol('connecting'),\n kHeadersList: Symbol('headers list'),\n kKeepAliveDefaultTimeout: Symbol('default keep alive timeout'),\n kKeepAliveMaxTimeout: Symbol('max keep alive timeout'),\n kKeepAliveTimeoutThreshold: Symbol('keep alive timeout threshold'),\n kKeepAliveTimeoutValue: Symbol('keep alive timeout'),\n kKeepAlive: Symbol('keep alive'),\n kHeadersTimeout: Symbol('headers timeout'),\n kBodyTimeout: Symbol('body timeout'),\n kServerName: Symbol('server name'),\n kLocalAddress: Symbol('local address'),\n kHost: Symbol('host'),\n kNoRef: Symbol('no ref'),\n kBodyUsed: Symbol('used'),\n kRunning: Symbol('running'),\n kBlocking: Symbol('blocking'),\n kPending: Symbol('pending'),\n kSize: Symbol('size'),\n kBusy: Symbol('busy'),\n kQueued: Symbol('queued'),\n kFree: Symbol('free'),\n kConnected: Symbol('connected'),\n kClosed: Symbol('closed'),\n kNeedDrain: Symbol('need drain'),\n kReset: Symbol('reset'),\n kDestroyed: Symbol.for('nodejs.stream.destroyed'),\n kMaxHeadersSize: Symbol('max headers size'),\n kRunningIdx: Symbol('running index'),\n kPendingIdx: Symbol('pending index'),\n kError: Symbol('error'),\n kClients: Symbol('clients'),\n kClient: Symbol('client'),\n kParser: Symbol('parser'),\n kOnDestroyed: Symbol('destroy callbacks'),\n kPipelining: Symbol('pipelining'),\n kSocket: Symbol('socket'),\n kHostHeader: Symbol('host header'),\n kConnector: Symbol('connector'),\n kStrictContentLength: Symbol('strict content length'),\n kMaxRedirections: Symbol('maxRedirections'),\n kMaxRequests: Symbol('maxRequestsPerClient'),\n kProxy: Symbol('proxy agent options'),\n kCounter: Symbol('socket request counter'),\n kInterceptors: Symbol('dispatch interceptors'),\n kMaxResponseSize: Symbol('max response size'),\n kHTTP2Session: Symbol('http2Session'),\n kHTTP2SessionState: Symbol('http2Session state'),\n kHTTP2BuildRequest: Symbol('http2 build request'),\n kHTTP1BuildRequest: Symbol('http1 build request'),\n kHTTP2CopyHeaders: Symbol('http2 copy headers'),\n kHTTPConnVersion: Symbol('http connection version'),\n kRetryHandlerDefaultRetry: Symbol('retry agent default retry'),\n kConstruct: Symbol('constructable')\n}\n","'use strict'\n\nconst assert = require('assert')\nconst { kDestroyed, kBodyUsed } = require('./symbols')\nconst { IncomingMessage } = require('http')\nconst stream = require('stream')\nconst net = require('net')\nconst { InvalidArgumentError } = require('./errors')\nconst { Blob } = require('buffer')\nconst nodeUtil = require('util')\nconst { stringify } = require('querystring')\nconst { headerNameLowerCasedRecord } = require('./constants')\n\nconst [nodeMajor, nodeMinor] = process.versions.node.split('.').map(v => Number(v))\n\nfunction nop () {}\n\nfunction isStream (obj) {\n return obj && typeof obj === 'object' && typeof obj.pipe === 'function' && typeof obj.on === 'function'\n}\n\n// based on https://github.com/node-fetch/fetch-blob/blob/8ab587d34080de94140b54f07168451e7d0b655e/index.js#L229-L241 (MIT License)\nfunction isBlobLike (object) {\n return (Blob && object instanceof Blob) || (\n object &&\n typeof object === 'object' &&\n (typeof object.stream === 'function' ||\n typeof object.arrayBuffer === 'function') &&\n /^(Blob|File)$/.test(object[Symbol.toStringTag])\n )\n}\n\nfunction buildURL (url, queryParams) {\n if (url.includes('?') || url.includes('#')) {\n throw new Error('Query params cannot be passed when url already contains \"?\" or \"#\".')\n }\n\n const stringified = stringify(queryParams)\n\n if (stringified) {\n url += '?' + stringified\n }\n\n return url\n}\n\nfunction parseURL (url) {\n if (typeof url === 'string') {\n url = new URL(url)\n\n if (!/^https?:/.test(url.origin || url.protocol)) {\n throw new InvalidArgumentError('Invalid URL protocol: the URL must start with `http:` or `https:`.')\n }\n\n return url\n }\n\n if (!url || typeof url !== 'object') {\n throw new InvalidArgumentError('Invalid URL: The URL argument must be a non-null object.')\n }\n\n if (!/^https?:/.test(url.origin || url.protocol)) {\n throw new InvalidArgumentError('Invalid URL protocol: the URL must start with `http:` or `https:`.')\n }\n\n if (!(url instanceof URL)) {\n if (url.port != null && url.port !== '' && !Number.isFinite(parseInt(url.port))) {\n throw new InvalidArgumentError('Invalid URL: port must be a valid integer or a string representation of an integer.')\n }\n\n if (url.path != null && typeof url.path !== 'string') {\n throw new InvalidArgumentError('Invalid URL path: the path must be a string or null/undefined.')\n }\n\n if (url.pathname != null && typeof url.pathname !== 'string') {\n throw new InvalidArgumentError('Invalid URL pathname: the pathname must be a string or null/undefined.')\n }\n\n if (url.hostname != null && typeof url.hostname !== 'string') {\n throw new InvalidArgumentError('Invalid URL hostname: the hostname must be a string or null/undefined.')\n }\n\n if (url.origin != null && typeof url.origin !== 'string') {\n throw new InvalidArgumentError('Invalid URL origin: the origin must be a string or null/undefined.')\n }\n\n const port = url.port != null\n ? url.port\n : (url.protocol === 'https:' ? 443 : 80)\n let origin = url.origin != null\n ? url.origin\n : `${url.protocol}//${url.hostname}:${port}`\n let path = url.path != null\n ? url.path\n : `${url.pathname || ''}${url.search || ''}`\n\n if (origin.endsWith('/')) {\n origin = origin.substring(0, origin.length - 1)\n }\n\n if (path && !path.startsWith('/')) {\n path = `/${path}`\n }\n // new URL(path, origin) is unsafe when `path` contains an absolute URL\n // From https://developer.mozilla.org/en-US/docs/Web/API/URL/URL:\n // If first parameter is a relative URL, second param is required, and will be used as the base URL.\n // If first parameter is an absolute URL, a given second param will be ignored.\n url = new URL(origin + path)\n }\n\n return url\n}\n\nfunction parseOrigin (url) {\n url = parseURL(url)\n\n if (url.pathname !== '/' || url.search || url.hash) {\n throw new InvalidArgumentError('invalid url')\n }\n\n return url\n}\n\nfunction getHostname (host) {\n if (host[0] === '[') {\n const idx = host.indexOf(']')\n\n assert(idx !== -1)\n return host.substring(1, idx)\n }\n\n const idx = host.indexOf(':')\n if (idx === -1) return host\n\n return host.substring(0, idx)\n}\n\n// IP addresses are not valid server names per RFC6066\n// > Currently, the only server names supported are DNS hostnames\nfunction getServerName (host) {\n if (!host) {\n return null\n }\n\n assert.strictEqual(typeof host, 'string')\n\n const servername = getHostname(host)\n if (net.isIP(servername)) {\n return ''\n }\n\n return servername\n}\n\nfunction deepClone (obj) {\n return JSON.parse(JSON.stringify(obj))\n}\n\nfunction isAsyncIterable (obj) {\n return !!(obj != null && typeof obj[Symbol.asyncIterator] === 'function')\n}\n\nfunction isIterable (obj) {\n return !!(obj != null && (typeof obj[Symbol.iterator] === 'function' || typeof obj[Symbol.asyncIterator] === 'function'))\n}\n\nfunction bodyLength (body) {\n if (body == null) {\n return 0\n } else if (isStream(body)) {\n const state = body._readableState\n return state && state.objectMode === false && state.ended === true && Number.isFinite(state.length)\n ? state.length\n : null\n } else if (isBlobLike(body)) {\n return body.size != null ? body.size : null\n } else if (isBuffer(body)) {\n return body.byteLength\n }\n\n return null\n}\n\nfunction isDestroyed (stream) {\n return !stream || !!(stream.destroyed || stream[kDestroyed])\n}\n\nfunction isReadableAborted (stream) {\n const state = stream && stream._readableState\n return isDestroyed(stream) && state && !state.endEmitted\n}\n\nfunction destroy (stream, err) {\n if (stream == null || !isStream(stream) || isDestroyed(stream)) {\n return\n }\n\n if (typeof stream.destroy === 'function') {\n if (Object.getPrototypeOf(stream).constructor === IncomingMessage) {\n // See: https://github.com/nodejs/node/pull/38505/files\n stream.socket = null\n }\n\n stream.destroy(err)\n } else if (err) {\n process.nextTick((stream, err) => {\n stream.emit('error', err)\n }, stream, err)\n }\n\n if (stream.destroyed !== true) {\n stream[kDestroyed] = true\n }\n}\n\nconst KEEPALIVE_TIMEOUT_EXPR = /timeout=(\\d+)/\nfunction parseKeepAliveTimeout (val) {\n const m = val.toString().match(KEEPALIVE_TIMEOUT_EXPR)\n return m ? parseInt(m[1], 10) * 1000 : null\n}\n\n/**\n * Retrieves a header name and returns its lowercase value.\n * @param {string | Buffer} value Header name\n * @returns {string}\n */\nfunction headerNameToString (value) {\n return headerNameLowerCasedRecord[value] || value.toLowerCase()\n}\n\nfunction parseHeaders (headers, obj = {}) {\n // For H2 support\n if (!Array.isArray(headers)) return headers\n\n for (let i = 0; i < headers.length; i += 2) {\n const key = headers[i].toString().toLowerCase()\n let val = obj[key]\n\n if (!val) {\n if (Array.isArray(headers[i + 1])) {\n obj[key] = headers[i + 1].map(x => x.toString('utf8'))\n } else {\n obj[key] = headers[i + 1].toString('utf8')\n }\n } else {\n if (!Array.isArray(val)) {\n val = [val]\n obj[key] = val\n }\n val.push(headers[i + 1].toString('utf8'))\n }\n }\n\n // See https://github.com/nodejs/node/pull/46528\n if ('content-length' in obj && 'content-disposition' in obj) {\n obj['content-disposition'] = Buffer.from(obj['content-disposition']).toString('latin1')\n }\n\n return obj\n}\n\nfunction parseRawHeaders (headers) {\n const ret = []\n let hasContentLength = false\n let contentDispositionIdx = -1\n\n for (let n = 0; n < headers.length; n += 2) {\n const key = headers[n + 0].toString()\n const val = headers[n + 1].toString('utf8')\n\n if (key.length === 14 && (key === 'content-length' || key.toLowerCase() === 'content-length')) {\n ret.push(key, val)\n hasContentLength = true\n } else if (key.length === 19 && (key === 'content-disposition' || key.toLowerCase() === 'content-disposition')) {\n contentDispositionIdx = ret.push(key, val) - 1\n } else {\n ret.push(key, val)\n }\n }\n\n // See https://github.com/nodejs/node/pull/46528\n if (hasContentLength && contentDispositionIdx !== -1) {\n ret[contentDispositionIdx] = Buffer.from(ret[contentDispositionIdx]).toString('latin1')\n }\n\n return ret\n}\n\nfunction isBuffer (buffer) {\n // See, https://github.com/mcollina/undici/pull/319\n return buffer instanceof Uint8Array || Buffer.isBuffer(buffer)\n}\n\nfunction validateHandler (handler, method, upgrade) {\n if (!handler || typeof handler !== 'object') {\n throw new InvalidArgumentError('handler must be an object')\n }\n\n if (typeof handler.onConnect !== 'function') {\n throw new InvalidArgumentError('invalid onConnect method')\n }\n\n if (typeof handler.onError !== 'function') {\n throw new InvalidArgumentError('invalid onError method')\n }\n\n if (typeof handler.onBodySent !== 'function' && handler.onBodySent !== undefined) {\n throw new InvalidArgumentError('invalid onBodySent method')\n }\n\n if (upgrade || method === 'CONNECT') {\n if (typeof handler.onUpgrade !== 'function') {\n throw new InvalidArgumentError('invalid onUpgrade method')\n }\n } else {\n if (typeof handler.onHeaders !== 'function') {\n throw new InvalidArgumentError('invalid onHeaders method')\n }\n\n if (typeof handler.onData !== 'function') {\n throw new InvalidArgumentError('invalid onData method')\n }\n\n if (typeof handler.onComplete !== 'function') {\n throw new InvalidArgumentError('invalid onComplete method')\n }\n }\n}\n\n// A body is disturbed if it has been read from and it cannot\n// be re-used without losing state or data.\nfunction isDisturbed (body) {\n return !!(body && (\n stream.isDisturbed\n ? stream.isDisturbed(body) || body[kBodyUsed] // TODO (fix): Why is body[kBodyUsed] needed?\n : body[kBodyUsed] ||\n body.readableDidRead ||\n (body._readableState && body._readableState.dataEmitted) ||\n isReadableAborted(body)\n ))\n}\n\nfunction isErrored (body) {\n return !!(body && (\n stream.isErrored\n ? stream.isErrored(body)\n : /state: 'errored'/.test(nodeUtil.inspect(body)\n )))\n}\n\nfunction isReadable (body) {\n return !!(body && (\n stream.isReadable\n ? stream.isReadable(body)\n : /state: 'readable'/.test(nodeUtil.inspect(body)\n )))\n}\n\nfunction getSocketInfo (socket) {\n return {\n localAddress: socket.localAddress,\n localPort: socket.localPort,\n remoteAddress: socket.remoteAddress,\n remotePort: socket.remotePort,\n remoteFamily: socket.remoteFamily,\n timeout: socket.timeout,\n bytesWritten: socket.bytesWritten,\n bytesRead: socket.bytesRead\n }\n}\n\nasync function * convertIterableToBuffer (iterable) {\n for await (const chunk of iterable) {\n yield Buffer.isBuffer(chunk) ? chunk : Buffer.from(chunk)\n }\n}\n\nlet ReadableStream\nfunction ReadableStreamFrom (iterable) {\n if (!ReadableStream) {\n ReadableStream = require('stream/web').ReadableStream\n }\n\n if (ReadableStream.from) {\n return ReadableStream.from(convertIterableToBuffer(iterable))\n }\n\n let iterator\n return new ReadableStream(\n {\n async start () {\n iterator = iterable[Symbol.asyncIterator]()\n },\n async pull (controller) {\n const { done, value } = await iterator.next()\n if (done) {\n queueMicrotask(() => {\n controller.close()\n })\n } else {\n const buf = Buffer.isBuffer(value) ? value : Buffer.from(value)\n controller.enqueue(new Uint8Array(buf))\n }\n return controller.desiredSize > 0\n },\n async cancel (reason) {\n await iterator.return()\n }\n },\n 0\n )\n}\n\n// The chunk should be a FormData instance and contains\n// all the required methods.\nfunction isFormDataLike (object) {\n return (\n object &&\n typeof object === 'object' &&\n typeof object.append === 'function' &&\n typeof object.delete === 'function' &&\n typeof object.get === 'function' &&\n typeof object.getAll === 'function' &&\n typeof object.has === 'function' &&\n typeof object.set === 'function' &&\n object[Symbol.toStringTag] === 'FormData'\n )\n}\n\nfunction throwIfAborted (signal) {\n if (!signal) { return }\n if (typeof signal.throwIfAborted === 'function') {\n signal.throwIfAborted()\n } else {\n if (signal.aborted) {\n // DOMException not available < v17.0.0\n const err = new Error('The operation was aborted')\n err.name = 'AbortError'\n throw err\n }\n }\n}\n\nfunction addAbortListener (signal, listener) {\n if ('addEventListener' in signal) {\n signal.addEventListener('abort', listener, { once: true })\n return () => signal.removeEventListener('abort', listener)\n }\n signal.addListener('abort', listener)\n return () => signal.removeListener('abort', listener)\n}\n\nconst hasToWellFormed = !!String.prototype.toWellFormed\n\n/**\n * @param {string} val\n */\nfunction toUSVString (val) {\n if (hasToWellFormed) {\n return `${val}`.toWellFormed()\n } else if (nodeUtil.toUSVString) {\n return nodeUtil.toUSVString(val)\n }\n\n return `${val}`\n}\n\n// Parsed accordingly to RFC 9110\n// https://www.rfc-editor.org/rfc/rfc9110#field.content-range\nfunction parseRangeHeader (range) {\n if (range == null || range === '') return { start: 0, end: null, size: null }\n\n const m = range ? range.match(/^bytes (\\d+)-(\\d+)\\/(\\d+)?$/) : null\n return m\n ? {\n start: parseInt(m[1]),\n end: m[2] ? parseInt(m[2]) : null,\n size: m[3] ? parseInt(m[3]) : null\n }\n : null\n}\n\nconst kEnumerableProperty = Object.create(null)\nkEnumerableProperty.enumerable = true\n\nmodule.exports = {\n kEnumerableProperty,\n nop,\n isDisturbed,\n isErrored,\n isReadable,\n toUSVString,\n isReadableAborted,\n isBlobLike,\n parseOrigin,\n parseURL,\n getServerName,\n isStream,\n isIterable,\n isAsyncIterable,\n isDestroyed,\n headerNameToString,\n parseRawHeaders,\n parseHeaders,\n parseKeepAliveTimeout,\n destroy,\n bodyLength,\n deepClone,\n ReadableStreamFrom,\n isBuffer,\n validateHandler,\n getSocketInfo,\n isFormDataLike,\n buildURL,\n throwIfAborted,\n addAbortListener,\n parseRangeHeader,\n nodeMajor,\n nodeMinor,\n nodeHasAutoSelectFamily: nodeMajor > 18 || (nodeMajor === 18 && nodeMinor >= 13),\n safeHTTPMethods: ['GET', 'HEAD', 'OPTIONS', 'TRACE']\n}\n","'use strict'\n\nconst Dispatcher = require('./dispatcher')\nconst {\n ClientDestroyedError,\n ClientClosedError,\n InvalidArgumentError\n} = require('./core/errors')\nconst { kDestroy, kClose, kDispatch, kInterceptors } = require('./core/symbols')\n\nconst kDestroyed = Symbol('destroyed')\nconst kClosed = Symbol('closed')\nconst kOnDestroyed = Symbol('onDestroyed')\nconst kOnClosed = Symbol('onClosed')\nconst kInterceptedDispatch = Symbol('Intercepted Dispatch')\n\nclass DispatcherBase extends Dispatcher {\n constructor () {\n super()\n\n this[kDestroyed] = false\n this[kOnDestroyed] = null\n this[kClosed] = false\n this[kOnClosed] = []\n }\n\n get destroyed () {\n return this[kDestroyed]\n }\n\n get closed () {\n return this[kClosed]\n }\n\n get interceptors () {\n return this[kInterceptors]\n }\n\n set interceptors (newInterceptors) {\n if (newInterceptors) {\n for (let i = newInterceptors.length - 1; i >= 0; i--) {\n const interceptor = this[kInterceptors][i]\n if (typeof interceptor !== 'function') {\n throw new InvalidArgumentError('interceptor must be an function')\n }\n }\n }\n\n this[kInterceptors] = newInterceptors\n }\n\n close (callback) {\n if (callback === undefined) {\n return new Promise((resolve, reject) => {\n this.close((err, data) => {\n return err ? reject(err) : resolve(data)\n })\n })\n }\n\n if (typeof callback !== 'function') {\n throw new InvalidArgumentError('invalid callback')\n }\n\n if (this[kDestroyed]) {\n queueMicrotask(() => callback(new ClientDestroyedError(), null))\n return\n }\n\n if (this[kClosed]) {\n if (this[kOnClosed]) {\n this[kOnClosed].push(callback)\n } else {\n queueMicrotask(() => callback(null, null))\n }\n return\n }\n\n this[kClosed] = true\n this[kOnClosed].push(callback)\n\n const onClosed = () => {\n const callbacks = this[kOnClosed]\n this[kOnClosed] = null\n for (let i = 0; i < callbacks.length; i++) {\n callbacks[i](null, null)\n }\n }\n\n // Should not error.\n this[kClose]()\n .then(() => this.destroy())\n .then(() => {\n queueMicrotask(onClosed)\n })\n }\n\n destroy (err, callback) {\n if (typeof err === 'function') {\n callback = err\n err = null\n }\n\n if (callback === undefined) {\n return new Promise((resolve, reject) => {\n this.destroy(err, (err, data) => {\n return err ? /* istanbul ignore next: should never error */ reject(err) : resolve(data)\n })\n })\n }\n\n if (typeof callback !== 'function') {\n throw new InvalidArgumentError('invalid callback')\n }\n\n if (this[kDestroyed]) {\n if (this[kOnDestroyed]) {\n this[kOnDestroyed].push(callback)\n } else {\n queueMicrotask(() => callback(null, null))\n }\n return\n }\n\n if (!err) {\n err = new ClientDestroyedError()\n }\n\n this[kDestroyed] = true\n this[kOnDestroyed] = this[kOnDestroyed] || []\n this[kOnDestroyed].push(callback)\n\n const onDestroyed = () => {\n const callbacks = this[kOnDestroyed]\n this[kOnDestroyed] = null\n for (let i = 0; i < callbacks.length; i++) {\n callbacks[i](null, null)\n }\n }\n\n // Should not error.\n this[kDestroy](err).then(() => {\n queueMicrotask(onDestroyed)\n })\n }\n\n [kInterceptedDispatch] (opts, handler) {\n if (!this[kInterceptors] || this[kInterceptors].length === 0) {\n this[kInterceptedDispatch] = this[kDispatch]\n return this[kDispatch](opts, handler)\n }\n\n let dispatch = this[kDispatch].bind(this)\n for (let i = this[kInterceptors].length - 1; i >= 0; i--) {\n dispatch = this[kInterceptors][i](dispatch)\n }\n this[kInterceptedDispatch] = dispatch\n return dispatch(opts, handler)\n }\n\n dispatch (opts, handler) {\n if (!handler || typeof handler !== 'object') {\n throw new InvalidArgumentError('handler must be an object')\n }\n\n try {\n if (!opts || typeof opts !== 'object') {\n throw new InvalidArgumentError('opts must be an object.')\n }\n\n if (this[kDestroyed] || this[kOnDestroyed]) {\n throw new ClientDestroyedError()\n }\n\n if (this[kClosed]) {\n throw new ClientClosedError()\n }\n\n return this[kInterceptedDispatch](opts, handler)\n } catch (err) {\n if (typeof handler.onError !== 'function') {\n throw new InvalidArgumentError('invalid onError method')\n }\n\n handler.onError(err)\n\n return false\n }\n }\n}\n\nmodule.exports = DispatcherBase\n","'use strict'\n\nconst EventEmitter = require('events')\n\nclass Dispatcher extends EventEmitter {\n dispatch () {\n throw new Error('not implemented')\n }\n\n close () {\n throw new Error('not implemented')\n }\n\n destroy () {\n throw new Error('not implemented')\n }\n}\n\nmodule.exports = Dispatcher\n","'use strict'\n\nconst Busboy = require('@fastify/busboy')\nconst util = require('../core/util')\nconst {\n ReadableStreamFrom,\n isBlobLike,\n isReadableStreamLike,\n readableStreamClose,\n createDeferredPromise,\n fullyReadBody\n} = require('./util')\nconst { FormData } = require('./formdata')\nconst { kState } = require('./symbols')\nconst { webidl } = require('./webidl')\nconst { DOMException, structuredClone } = require('./constants')\nconst { Blob, File: NativeFile } = require('buffer')\nconst { kBodyUsed } = require('../core/symbols')\nconst assert = require('assert')\nconst { isErrored } = require('../core/util')\nconst { isUint8Array, isArrayBuffer } = require('util/types')\nconst { File: UndiciFile } = require('./file')\nconst { parseMIMEType, serializeAMimeType } = require('./dataURL')\n\nlet ReadableStream = globalThis.ReadableStream\n\n/** @type {globalThis['File']} */\nconst File = NativeFile ?? UndiciFile\nconst textEncoder = new TextEncoder()\nconst textDecoder = new TextDecoder()\n\n// https://fetch.spec.whatwg.org/#concept-bodyinit-extract\nfunction extractBody (object, keepalive = false) {\n if (!ReadableStream) {\n ReadableStream = require('stream/web').ReadableStream\n }\n\n // 1. Let stream be null.\n let stream = null\n\n // 2. If object is a ReadableStream object, then set stream to object.\n if (object instanceof ReadableStream) {\n stream = object\n } else if (isBlobLike(object)) {\n // 3. Otherwise, if object is a Blob object, set stream to the\n // result of running object’s get stream.\n stream = object.stream()\n } else {\n // 4. Otherwise, set stream to a new ReadableStream object, and set\n // up stream.\n stream = new ReadableStream({\n async pull (controller) {\n controller.enqueue(\n typeof source === 'string' ? textEncoder.encode(source) : source\n )\n queueMicrotask(() => readableStreamClose(controller))\n },\n start () {},\n type: undefined\n })\n }\n\n // 5. Assert: stream is a ReadableStream object.\n assert(isReadableStreamLike(stream))\n\n // 6. Let action be null.\n let action = null\n\n // 7. Let source be null.\n let source = null\n\n // 8. Let length be null.\n let length = null\n\n // 9. Let type be null.\n let type = null\n\n // 10. Switch on object:\n if (typeof object === 'string') {\n // Set source to the UTF-8 encoding of object.\n // Note: setting source to a Uint8Array here breaks some mocking assumptions.\n source = object\n\n // Set type to `text/plain;charset=UTF-8`.\n type = 'text/plain;charset=UTF-8'\n } else if (object instanceof URLSearchParams) {\n // URLSearchParams\n\n // spec says to run application/x-www-form-urlencoded on body.list\n // this is implemented in Node.js as apart of an URLSearchParams instance toString method\n // See: https://github.com/nodejs/node/blob/e46c680bf2b211bbd52cf959ca17ee98c7f657f5/lib/internal/url.js#L490\n // and https://github.com/nodejs/node/blob/e46c680bf2b211bbd52cf959ca17ee98c7f657f5/lib/internal/url.js#L1100\n\n // Set source to the result of running the application/x-www-form-urlencoded serializer with object’s list.\n source = object.toString()\n\n // Set type to `application/x-www-form-urlencoded;charset=UTF-8`.\n type = 'application/x-www-form-urlencoded;charset=UTF-8'\n } else if (isArrayBuffer(object)) {\n // BufferSource/ArrayBuffer\n\n // Set source to a copy of the bytes held by object.\n source = new Uint8Array(object.slice())\n } else if (ArrayBuffer.isView(object)) {\n // BufferSource/ArrayBufferView\n\n // Set source to a copy of the bytes held by object.\n source = new Uint8Array(object.buffer.slice(object.byteOffset, object.byteOffset + object.byteLength))\n } else if (util.isFormDataLike(object)) {\n const boundary = `----formdata-undici-0${`${Math.floor(Math.random() * 1e11)}`.padStart(11, '0')}`\n const prefix = `--${boundary}\\r\\nContent-Disposition: form-data`\n\n /*! formdata-polyfill. MIT License. Jimmy Wärting */\n const escape = (str) =>\n str.replace(/\\n/g, '%0A').replace(/\\r/g, '%0D').replace(/\"/g, '%22')\n const normalizeLinefeeds = (value) => value.replace(/\\r?\\n|\\r/g, '\\r\\n')\n\n // Set action to this step: run the multipart/form-data\n // encoding algorithm, with object’s entry list and UTF-8.\n // - This ensures that the body is immutable and can't be changed afterwords\n // - That the content-length is calculated in advance.\n // - And that all parts are pre-encoded and ready to be sent.\n\n const blobParts = []\n const rn = new Uint8Array([13, 10]) // '\\r\\n'\n length = 0\n let hasUnknownSizeValue = false\n\n for (const [name, value] of object) {\n if (typeof value === 'string') {\n const chunk = textEncoder.encode(prefix +\n `; name=\"${escape(normalizeLinefeeds(name))}\"` +\n `\\r\\n\\r\\n${normalizeLinefeeds(value)}\\r\\n`)\n blobParts.push(chunk)\n length += chunk.byteLength\n } else {\n const chunk = textEncoder.encode(`${prefix}; name=\"${escape(normalizeLinefeeds(name))}\"` +\n (value.name ? `; filename=\"${escape(value.name)}\"` : '') + '\\r\\n' +\n `Content-Type: ${\n value.type || 'application/octet-stream'\n }\\r\\n\\r\\n`)\n blobParts.push(chunk, value, rn)\n if (typeof value.size === 'number') {\n length += chunk.byteLength + value.size + rn.byteLength\n } else {\n hasUnknownSizeValue = true\n }\n }\n }\n\n const chunk = textEncoder.encode(`--${boundary}--`)\n blobParts.push(chunk)\n length += chunk.byteLength\n if (hasUnknownSizeValue) {\n length = null\n }\n\n // Set source to object.\n source = object\n\n action = async function * () {\n for (const part of blobParts) {\n if (part.stream) {\n yield * part.stream()\n } else {\n yield part\n }\n }\n }\n\n // Set type to `multipart/form-data; boundary=`,\n // followed by the multipart/form-data boundary string generated\n // by the multipart/form-data encoding algorithm.\n type = 'multipart/form-data; boundary=' + boundary\n } else if (isBlobLike(object)) {\n // Blob\n\n // Set source to object.\n source = object\n\n // Set length to object’s size.\n length = object.size\n\n // If object’s type attribute is not the empty byte sequence, set\n // type to its value.\n if (object.type) {\n type = object.type\n }\n } else if (typeof object[Symbol.asyncIterator] === 'function') {\n // If keepalive is true, then throw a TypeError.\n if (keepalive) {\n throw new TypeError('keepalive')\n }\n\n // If object is disturbed or locked, then throw a TypeError.\n if (util.isDisturbed(object) || object.locked) {\n throw new TypeError(\n 'Response body object should not be disturbed or locked'\n )\n }\n\n stream =\n object instanceof ReadableStream ? object : ReadableStreamFrom(object)\n }\n\n // 11. If source is a byte sequence, then set action to a\n // step that returns source and length to source’s length.\n if (typeof source === 'string' || util.isBuffer(source)) {\n length = Buffer.byteLength(source)\n }\n\n // 12. If action is non-null, then run these steps in in parallel:\n if (action != null) {\n // Run action.\n let iterator\n stream = new ReadableStream({\n async start () {\n iterator = action(object)[Symbol.asyncIterator]()\n },\n async pull (controller) {\n const { value, done } = await iterator.next()\n if (done) {\n // When running action is done, close stream.\n queueMicrotask(() => {\n controller.close()\n })\n } else {\n // Whenever one or more bytes are available and stream is not errored,\n // enqueue a Uint8Array wrapping an ArrayBuffer containing the available\n // bytes into stream.\n if (!isErrored(stream)) {\n controller.enqueue(new Uint8Array(value))\n }\n }\n return controller.desiredSize > 0\n },\n async cancel (reason) {\n await iterator.return()\n },\n type: undefined\n })\n }\n\n // 13. Let body be a body whose stream is stream, source is source,\n // and length is length.\n const body = { stream, source, length }\n\n // 14. Return (body, type).\n return [body, type]\n}\n\n// https://fetch.spec.whatwg.org/#bodyinit-safely-extract\nfunction safelyExtractBody (object, keepalive = false) {\n if (!ReadableStream) {\n // istanbul ignore next\n ReadableStream = require('stream/web').ReadableStream\n }\n\n // To safely extract a body and a `Content-Type` value from\n // a byte sequence or BodyInit object object, run these steps:\n\n // 1. If object is a ReadableStream object, then:\n if (object instanceof ReadableStream) {\n // Assert: object is neither disturbed nor locked.\n // istanbul ignore next\n assert(!util.isDisturbed(object), 'The body has already been consumed.')\n // istanbul ignore next\n assert(!object.locked, 'The stream is locked.')\n }\n\n // 2. Return the results of extracting object.\n return extractBody(object, keepalive)\n}\n\nfunction cloneBody (body) {\n // To clone a body body, run these steps:\n\n // https://fetch.spec.whatwg.org/#concept-body-clone\n\n // 1. Let « out1, out2 » be the result of teeing body’s stream.\n const [out1, out2] = body.stream.tee()\n const out2Clone = structuredClone(out2, { transfer: [out2] })\n // This, for whatever reasons, unrefs out2Clone which allows\n // the process to exit by itself.\n const [, finalClone] = out2Clone.tee()\n\n // 2. Set body’s stream to out1.\n body.stream = out1\n\n // 3. Return a body whose stream is out2 and other members are copied from body.\n return {\n stream: finalClone,\n length: body.length,\n source: body.source\n }\n}\n\nasync function * consumeBody (body) {\n if (body) {\n if (isUint8Array(body)) {\n yield body\n } else {\n const stream = body.stream\n\n if (util.isDisturbed(stream)) {\n throw new TypeError('The body has already been consumed.')\n }\n\n if (stream.locked) {\n throw new TypeError('The stream is locked.')\n }\n\n // Compat.\n stream[kBodyUsed] = true\n\n yield * stream\n }\n }\n}\n\nfunction throwIfAborted (state) {\n if (state.aborted) {\n throw new DOMException('The operation was aborted.', 'AbortError')\n }\n}\n\nfunction bodyMixinMethods (instance) {\n const methods = {\n blob () {\n // The blob() method steps are to return the result of\n // running consume body with this and the following step\n // given a byte sequence bytes: return a Blob whose\n // contents are bytes and whose type attribute is this’s\n // MIME type.\n return specConsumeBody(this, (bytes) => {\n let mimeType = bodyMimeType(this)\n\n if (mimeType === 'failure') {\n mimeType = ''\n } else if (mimeType) {\n mimeType = serializeAMimeType(mimeType)\n }\n\n // Return a Blob whose contents are bytes and type attribute\n // is mimeType.\n return new Blob([bytes], { type: mimeType })\n }, instance)\n },\n\n arrayBuffer () {\n // The arrayBuffer() method steps are to return the result\n // of running consume body with this and the following step\n // given a byte sequence bytes: return a new ArrayBuffer\n // whose contents are bytes.\n return specConsumeBody(this, (bytes) => {\n return new Uint8Array(bytes).buffer\n }, instance)\n },\n\n text () {\n // The text() method steps are to return the result of running\n // consume body with this and UTF-8 decode.\n return specConsumeBody(this, utf8DecodeBytes, instance)\n },\n\n json () {\n // The json() method steps are to return the result of running\n // consume body with this and parse JSON from bytes.\n return specConsumeBody(this, parseJSONFromBytes, instance)\n },\n\n async formData () {\n webidl.brandCheck(this, instance)\n\n throwIfAborted(this[kState])\n\n const contentType = this.headers.get('Content-Type')\n\n // If mimeType’s essence is \"multipart/form-data\", then:\n if (/multipart\\/form-data/.test(contentType)) {\n const headers = {}\n for (const [key, value] of this.headers) headers[key.toLowerCase()] = value\n\n const responseFormData = new FormData()\n\n let busboy\n\n try {\n busboy = new Busboy({\n headers,\n preservePath: true\n })\n } catch (err) {\n throw new DOMException(`${err}`, 'AbortError')\n }\n\n busboy.on('field', (name, value) => {\n responseFormData.append(name, value)\n })\n busboy.on('file', (name, value, filename, encoding, mimeType) => {\n const chunks = []\n\n if (encoding === 'base64' || encoding.toLowerCase() === 'base64') {\n let base64chunk = ''\n\n value.on('data', (chunk) => {\n base64chunk += chunk.toString().replace(/[\\r\\n]/gm, '')\n\n const end = base64chunk.length - base64chunk.length % 4\n chunks.push(Buffer.from(base64chunk.slice(0, end), 'base64'))\n\n base64chunk = base64chunk.slice(end)\n })\n value.on('end', () => {\n chunks.push(Buffer.from(base64chunk, 'base64'))\n responseFormData.append(name, new File(chunks, filename, { type: mimeType }))\n })\n } else {\n value.on('data', (chunk) => {\n chunks.push(chunk)\n })\n value.on('end', () => {\n responseFormData.append(name, new File(chunks, filename, { type: mimeType }))\n })\n }\n })\n\n const busboyResolve = new Promise((resolve, reject) => {\n busboy.on('finish', resolve)\n busboy.on('error', (err) => reject(new TypeError(err)))\n })\n\n if (this.body !== null) for await (const chunk of consumeBody(this[kState].body)) busboy.write(chunk)\n busboy.end()\n await busboyResolve\n\n return responseFormData\n } else if (/application\\/x-www-form-urlencoded/.test(contentType)) {\n // Otherwise, if mimeType’s essence is \"application/x-www-form-urlencoded\", then:\n\n // 1. Let entries be the result of parsing bytes.\n let entries\n try {\n let text = ''\n // application/x-www-form-urlencoded parser will keep the BOM.\n // https://url.spec.whatwg.org/#concept-urlencoded-parser\n // Note that streaming decoder is stateful and cannot be reused\n const streamingDecoder = new TextDecoder('utf-8', { ignoreBOM: true })\n\n for await (const chunk of consumeBody(this[kState].body)) {\n if (!isUint8Array(chunk)) {\n throw new TypeError('Expected Uint8Array chunk')\n }\n text += streamingDecoder.decode(chunk, { stream: true })\n }\n text += streamingDecoder.decode()\n entries = new URLSearchParams(text)\n } catch (err) {\n // istanbul ignore next: Unclear when new URLSearchParams can fail on a string.\n // 2. If entries is failure, then throw a TypeError.\n throw Object.assign(new TypeError(), { cause: err })\n }\n\n // 3. Return a new FormData object whose entries are entries.\n const formData = new FormData()\n for (const [name, value] of entries) {\n formData.append(name, value)\n }\n return formData\n } else {\n // Wait a tick before checking if the request has been aborted.\n // Otherwise, a TypeError can be thrown when an AbortError should.\n await Promise.resolve()\n\n throwIfAborted(this[kState])\n\n // Otherwise, throw a TypeError.\n throw webidl.errors.exception({\n header: `${instance.name}.formData`,\n message: 'Could not parse content as FormData.'\n })\n }\n }\n }\n\n return methods\n}\n\nfunction mixinBody (prototype) {\n Object.assign(prototype.prototype, bodyMixinMethods(prototype))\n}\n\n/**\n * @see https://fetch.spec.whatwg.org/#concept-body-consume-body\n * @param {Response|Request} object\n * @param {(value: unknown) => unknown} convertBytesToJSValue\n * @param {Response|Request} instance\n */\nasync function specConsumeBody (object, convertBytesToJSValue, instance) {\n webidl.brandCheck(object, instance)\n\n throwIfAborted(object[kState])\n\n // 1. If object is unusable, then return a promise rejected\n // with a TypeError.\n if (bodyUnusable(object[kState].body)) {\n throw new TypeError('Body is unusable')\n }\n\n // 2. Let promise be a new promise.\n const promise = createDeferredPromise()\n\n // 3. Let errorSteps given error be to reject promise with error.\n const errorSteps = (error) => promise.reject(error)\n\n // 4. Let successSteps given a byte sequence data be to resolve\n // promise with the result of running convertBytesToJSValue\n // with data. If that threw an exception, then run errorSteps\n // with that exception.\n const successSteps = (data) => {\n try {\n promise.resolve(convertBytesToJSValue(data))\n } catch (e) {\n errorSteps(e)\n }\n }\n\n // 5. If object’s body is null, then run successSteps with an\n // empty byte sequence.\n if (object[kState].body == null) {\n successSteps(new Uint8Array())\n return promise.promise\n }\n\n // 6. Otherwise, fully read object’s body given successSteps,\n // errorSteps, and object’s relevant global object.\n await fullyReadBody(object[kState].body, successSteps, errorSteps)\n\n // 7. Return promise.\n return promise.promise\n}\n\n// https://fetch.spec.whatwg.org/#body-unusable\nfunction bodyUnusable (body) {\n // An object including the Body interface mixin is\n // said to be unusable if its body is non-null and\n // its body’s stream is disturbed or locked.\n return body != null && (body.stream.locked || util.isDisturbed(body.stream))\n}\n\n/**\n * @see https://encoding.spec.whatwg.org/#utf-8-decode\n * @param {Buffer} buffer\n */\nfunction utf8DecodeBytes (buffer) {\n if (buffer.length === 0) {\n return ''\n }\n\n // 1. Let buffer be the result of peeking three bytes from\n // ioQueue, converted to a byte sequence.\n\n // 2. If buffer is 0xEF 0xBB 0xBF, then read three\n // bytes from ioQueue. (Do nothing with those bytes.)\n if (buffer[0] === 0xEF && buffer[1] === 0xBB && buffer[2] === 0xBF) {\n buffer = buffer.subarray(3)\n }\n\n // 3. Process a queue with an instance of UTF-8’s\n // decoder, ioQueue, output, and \"replacement\".\n const output = textDecoder.decode(buffer)\n\n // 4. Return output.\n return output\n}\n\n/**\n * @see https://infra.spec.whatwg.org/#parse-json-bytes-to-a-javascript-value\n * @param {Uint8Array} bytes\n */\nfunction parseJSONFromBytes (bytes) {\n return JSON.parse(utf8DecodeBytes(bytes))\n}\n\n/**\n * @see https://fetch.spec.whatwg.org/#concept-body-mime-type\n * @param {import('./response').Response|import('./request').Request} object\n */\nfunction bodyMimeType (object) {\n const { headersList } = object[kState]\n const contentType = headersList.get('content-type')\n\n if (contentType === null) {\n return 'failure'\n }\n\n return parseMIMEType(contentType)\n}\n\nmodule.exports = {\n extractBody,\n safelyExtractBody,\n cloneBody,\n mixinBody\n}\n","'use strict'\n\nconst { MessageChannel, receiveMessageOnPort } = require('worker_threads')\n\nconst corsSafeListedMethods = ['GET', 'HEAD', 'POST']\nconst corsSafeListedMethodsSet = new Set(corsSafeListedMethods)\n\nconst nullBodyStatus = [101, 204, 205, 304]\n\nconst redirectStatus = [301, 302, 303, 307, 308]\nconst redirectStatusSet = new Set(redirectStatus)\n\n// https://fetch.spec.whatwg.org/#block-bad-port\nconst badPorts = [\n '1', '7', '9', '11', '13', '15', '17', '19', '20', '21', '22', '23', '25', '37', '42', '43', '53', '69', '77', '79',\n '87', '95', '101', '102', '103', '104', '109', '110', '111', '113', '115', '117', '119', '123', '135', '137',\n '139', '143', '161', '179', '389', '427', '465', '512', '513', '514', '515', '526', '530', '531', '532',\n '540', '548', '554', '556', '563', '587', '601', '636', '989', '990', '993', '995', '1719', '1720', '1723',\n '2049', '3659', '4045', '5060', '5061', '6000', '6566', '6665', '6666', '6667', '6668', '6669', '6697',\n '10080'\n]\n\nconst badPortsSet = new Set(badPorts)\n\n// https://w3c.github.io/webappsec-referrer-policy/#referrer-policies\nconst referrerPolicy = [\n '',\n 'no-referrer',\n 'no-referrer-when-downgrade',\n 'same-origin',\n 'origin',\n 'strict-origin',\n 'origin-when-cross-origin',\n 'strict-origin-when-cross-origin',\n 'unsafe-url'\n]\nconst referrerPolicySet = new Set(referrerPolicy)\n\nconst requestRedirect = ['follow', 'manual', 'error']\n\nconst safeMethods = ['GET', 'HEAD', 'OPTIONS', 'TRACE']\nconst safeMethodsSet = new Set(safeMethods)\n\nconst requestMode = ['navigate', 'same-origin', 'no-cors', 'cors']\n\nconst requestCredentials = ['omit', 'same-origin', 'include']\n\nconst requestCache = [\n 'default',\n 'no-store',\n 'reload',\n 'no-cache',\n 'force-cache',\n 'only-if-cached'\n]\n\n// https://fetch.spec.whatwg.org/#request-body-header-name\nconst requestBodyHeader = [\n 'content-encoding',\n 'content-language',\n 'content-location',\n 'content-type',\n // See https://github.com/nodejs/undici/issues/2021\n // 'Content-Length' is a forbidden header name, which is typically\n // removed in the Headers implementation. However, undici doesn't\n // filter out headers, so we add it here.\n 'content-length'\n]\n\n// https://fetch.spec.whatwg.org/#enumdef-requestduplex\nconst requestDuplex = [\n 'half'\n]\n\n// http://fetch.spec.whatwg.org/#forbidden-method\nconst forbiddenMethods = ['CONNECT', 'TRACE', 'TRACK']\nconst forbiddenMethodsSet = new Set(forbiddenMethods)\n\nconst subresource = [\n 'audio',\n 'audioworklet',\n 'font',\n 'image',\n 'manifest',\n 'paintworklet',\n 'script',\n 'style',\n 'track',\n 'video',\n 'xslt',\n ''\n]\nconst subresourceSet = new Set(subresource)\n\n/** @type {globalThis['DOMException']} */\nconst DOMException = globalThis.DOMException ?? (() => {\n // DOMException was only made a global in Node v17.0.0,\n // but fetch supports >= v16.8.\n try {\n atob('~')\n } catch (err) {\n return Object.getPrototypeOf(err).constructor\n }\n})()\n\nlet channel\n\n/** @type {globalThis['structuredClone']} */\nconst structuredClone =\n globalThis.structuredClone ??\n // https://github.com/nodejs/node/blob/b27ae24dcc4251bad726d9d84baf678d1f707fed/lib/internal/structured_clone.js\n // structuredClone was added in v17.0.0, but fetch supports v16.8\n function structuredClone (value, options = undefined) {\n if (arguments.length === 0) {\n throw new TypeError('missing argument')\n }\n\n if (!channel) {\n channel = new MessageChannel()\n }\n channel.port1.unref()\n channel.port2.unref()\n channel.port1.postMessage(value, options?.transfer)\n return receiveMessageOnPort(channel.port2).message\n }\n\nmodule.exports = {\n DOMException,\n structuredClone,\n subresource,\n forbiddenMethods,\n requestBodyHeader,\n referrerPolicy,\n requestRedirect,\n requestMode,\n requestCredentials,\n requestCache,\n redirectStatus,\n corsSafeListedMethods,\n nullBodyStatus,\n safeMethods,\n badPorts,\n requestDuplex,\n subresourceSet,\n badPortsSet,\n redirectStatusSet,\n corsSafeListedMethodsSet,\n safeMethodsSet,\n forbiddenMethodsSet,\n referrerPolicySet\n}\n","const assert = require('assert')\nconst { atob } = require('buffer')\nconst { isomorphicDecode } = require('./util')\n\nconst encoder = new TextEncoder()\n\n/**\n * @see https://mimesniff.spec.whatwg.org/#http-token-code-point\n */\nconst HTTP_TOKEN_CODEPOINTS = /^[!#$%&'*+-.^_|~A-Za-z0-9]+$/\nconst HTTP_WHITESPACE_REGEX = /(\\u000A|\\u000D|\\u0009|\\u0020)/ // eslint-disable-line\n/**\n * @see https://mimesniff.spec.whatwg.org/#http-quoted-string-token-code-point\n */\nconst HTTP_QUOTED_STRING_TOKENS = /[\\u0009|\\u0020-\\u007E|\\u0080-\\u00FF]/ // eslint-disable-line\n\n// https://fetch.spec.whatwg.org/#data-url-processor\n/** @param {URL} dataURL */\nfunction dataURLProcessor (dataURL) {\n // 1. Assert: dataURL’s scheme is \"data\".\n assert(dataURL.protocol === 'data:')\n\n // 2. Let input be the result of running the URL\n // serializer on dataURL with exclude fragment\n // set to true.\n let input = URLSerializer(dataURL, true)\n\n // 3. Remove the leading \"data:\" string from input.\n input = input.slice(5)\n\n // 4. Let position point at the start of input.\n const position = { position: 0 }\n\n // 5. Let mimeType be the result of collecting a\n // sequence of code points that are not equal\n // to U+002C (,), given position.\n let mimeType = collectASequenceOfCodePointsFast(\n ',',\n input,\n position\n )\n\n // 6. Strip leading and trailing ASCII whitespace\n // from mimeType.\n // Undici implementation note: we need to store the\n // length because if the mimetype has spaces removed,\n // the wrong amount will be sliced from the input in\n // step #9\n const mimeTypeLength = mimeType.length\n mimeType = removeASCIIWhitespace(mimeType, true, true)\n\n // 7. If position is past the end of input, then\n // return failure\n if (position.position >= input.length) {\n return 'failure'\n }\n\n // 8. Advance position by 1.\n position.position++\n\n // 9. Let encodedBody be the remainder of input.\n const encodedBody = input.slice(mimeTypeLength + 1)\n\n // 10. Let body be the percent-decoding of encodedBody.\n let body = stringPercentDecode(encodedBody)\n\n // 11. If mimeType ends with U+003B (;), followed by\n // zero or more U+0020 SPACE, followed by an ASCII\n // case-insensitive match for \"base64\", then:\n if (/;(\\u0020){0,}base64$/i.test(mimeType)) {\n // 1. Let stringBody be the isomorphic decode of body.\n const stringBody = isomorphicDecode(body)\n\n // 2. Set body to the forgiving-base64 decode of\n // stringBody.\n body = forgivingBase64(stringBody)\n\n // 3. If body is failure, then return failure.\n if (body === 'failure') {\n return 'failure'\n }\n\n // 4. Remove the last 6 code points from mimeType.\n mimeType = mimeType.slice(0, -6)\n\n // 5. Remove trailing U+0020 SPACE code points from mimeType,\n // if any.\n mimeType = mimeType.replace(/(\\u0020)+$/, '')\n\n // 6. Remove the last U+003B (;) code point from mimeType.\n mimeType = mimeType.slice(0, -1)\n }\n\n // 12. If mimeType starts with U+003B (;), then prepend\n // \"text/plain\" to mimeType.\n if (mimeType.startsWith(';')) {\n mimeType = 'text/plain' + mimeType\n }\n\n // 13. Let mimeTypeRecord be the result of parsing\n // mimeType.\n let mimeTypeRecord = parseMIMEType(mimeType)\n\n // 14. If mimeTypeRecord is failure, then set\n // mimeTypeRecord to text/plain;charset=US-ASCII.\n if (mimeTypeRecord === 'failure') {\n mimeTypeRecord = parseMIMEType('text/plain;charset=US-ASCII')\n }\n\n // 15. Return a new data: URL struct whose MIME\n // type is mimeTypeRecord and body is body.\n // https://fetch.spec.whatwg.org/#data-url-struct\n return { mimeType: mimeTypeRecord, body }\n}\n\n// https://url.spec.whatwg.org/#concept-url-serializer\n/**\n * @param {URL} url\n * @param {boolean} excludeFragment\n */\nfunction URLSerializer (url, excludeFragment = false) {\n if (!excludeFragment) {\n return url.href\n }\n\n const href = url.href\n const hashLength = url.hash.length\n\n return hashLength === 0 ? href : href.substring(0, href.length - hashLength)\n}\n\n// https://infra.spec.whatwg.org/#collect-a-sequence-of-code-points\n/**\n * @param {(char: string) => boolean} condition\n * @param {string} input\n * @param {{ position: number }} position\n */\nfunction collectASequenceOfCodePoints (condition, input, position) {\n // 1. Let result be the empty string.\n let result = ''\n\n // 2. While position doesn’t point past the end of input and the\n // code point at position within input meets the condition condition:\n while (position.position < input.length && condition(input[position.position])) {\n // 1. Append that code point to the end of result.\n result += input[position.position]\n\n // 2. Advance position by 1.\n position.position++\n }\n\n // 3. Return result.\n return result\n}\n\n/**\n * A faster collectASequenceOfCodePoints that only works when comparing a single character.\n * @param {string} char\n * @param {string} input\n * @param {{ position: number }} position\n */\nfunction collectASequenceOfCodePointsFast (char, input, position) {\n const idx = input.indexOf(char, position.position)\n const start = position.position\n\n if (idx === -1) {\n position.position = input.length\n return input.slice(start)\n }\n\n position.position = idx\n return input.slice(start, position.position)\n}\n\n// https://url.spec.whatwg.org/#string-percent-decode\n/** @param {string} input */\nfunction stringPercentDecode (input) {\n // 1. Let bytes be the UTF-8 encoding of input.\n const bytes = encoder.encode(input)\n\n // 2. Return the percent-decoding of bytes.\n return percentDecode(bytes)\n}\n\n// https://url.spec.whatwg.org/#percent-decode\n/** @param {Uint8Array} input */\nfunction percentDecode (input) {\n // 1. Let output be an empty byte sequence.\n /** @type {number[]} */\n const output = []\n\n // 2. For each byte byte in input:\n for (let i = 0; i < input.length; i++) {\n const byte = input[i]\n\n // 1. If byte is not 0x25 (%), then append byte to output.\n if (byte !== 0x25) {\n output.push(byte)\n\n // 2. Otherwise, if byte is 0x25 (%) and the next two bytes\n // after byte in input are not in the ranges\n // 0x30 (0) to 0x39 (9), 0x41 (A) to 0x46 (F),\n // and 0x61 (a) to 0x66 (f), all inclusive, append byte\n // to output.\n } else if (\n byte === 0x25 &&\n !/^[0-9A-Fa-f]{2}$/i.test(String.fromCharCode(input[i + 1], input[i + 2]))\n ) {\n output.push(0x25)\n\n // 3. Otherwise:\n } else {\n // 1. Let bytePoint be the two bytes after byte in input,\n // decoded, and then interpreted as hexadecimal number.\n const nextTwoBytes = String.fromCharCode(input[i + 1], input[i + 2])\n const bytePoint = Number.parseInt(nextTwoBytes, 16)\n\n // 2. Append a byte whose value is bytePoint to output.\n output.push(bytePoint)\n\n // 3. Skip the next two bytes in input.\n i += 2\n }\n }\n\n // 3. Return output.\n return Uint8Array.from(output)\n}\n\n// https://mimesniff.spec.whatwg.org/#parse-a-mime-type\n/** @param {string} input */\nfunction parseMIMEType (input) {\n // 1. Remove any leading and trailing HTTP whitespace\n // from input.\n input = removeHTTPWhitespace(input, true, true)\n\n // 2. Let position be a position variable for input,\n // initially pointing at the start of input.\n const position = { position: 0 }\n\n // 3. Let type be the result of collecting a sequence\n // of code points that are not U+002F (/) from\n // input, given position.\n const type = collectASequenceOfCodePointsFast(\n '/',\n input,\n position\n )\n\n // 4. If type is the empty string or does not solely\n // contain HTTP token code points, then return failure.\n // https://mimesniff.spec.whatwg.org/#http-token-code-point\n if (type.length === 0 || !HTTP_TOKEN_CODEPOINTS.test(type)) {\n return 'failure'\n }\n\n // 5. If position is past the end of input, then return\n // failure\n if (position.position > input.length) {\n return 'failure'\n }\n\n // 6. Advance position by 1. (This skips past U+002F (/).)\n position.position++\n\n // 7. Let subtype be the result of collecting a sequence of\n // code points that are not U+003B (;) from input, given\n // position.\n let subtype = collectASequenceOfCodePointsFast(\n ';',\n input,\n position\n )\n\n // 8. Remove any trailing HTTP whitespace from subtype.\n subtype = removeHTTPWhitespace(subtype, false, true)\n\n // 9. If subtype is the empty string or does not solely\n // contain HTTP token code points, then return failure.\n if (subtype.length === 0 || !HTTP_TOKEN_CODEPOINTS.test(subtype)) {\n return 'failure'\n }\n\n const typeLowercase = type.toLowerCase()\n const subtypeLowercase = subtype.toLowerCase()\n\n // 10. Let mimeType be a new MIME type record whose type\n // is type, in ASCII lowercase, and subtype is subtype,\n // in ASCII lowercase.\n // https://mimesniff.spec.whatwg.org/#mime-type\n const mimeType = {\n type: typeLowercase,\n subtype: subtypeLowercase,\n /** @type {Map} */\n parameters: new Map(),\n // https://mimesniff.spec.whatwg.org/#mime-type-essence\n essence: `${typeLowercase}/${subtypeLowercase}`\n }\n\n // 11. While position is not past the end of input:\n while (position.position < input.length) {\n // 1. Advance position by 1. (This skips past U+003B (;).)\n position.position++\n\n // 2. Collect a sequence of code points that are HTTP\n // whitespace from input given position.\n collectASequenceOfCodePoints(\n // https://fetch.spec.whatwg.org/#http-whitespace\n char => HTTP_WHITESPACE_REGEX.test(char),\n input,\n position\n )\n\n // 3. Let parameterName be the result of collecting a\n // sequence of code points that are not U+003B (;)\n // or U+003D (=) from input, given position.\n let parameterName = collectASequenceOfCodePoints(\n (char) => char !== ';' && char !== '=',\n input,\n position\n )\n\n // 4. Set parameterName to parameterName, in ASCII\n // lowercase.\n parameterName = parameterName.toLowerCase()\n\n // 5. If position is not past the end of input, then:\n if (position.position < input.length) {\n // 1. If the code point at position within input is\n // U+003B (;), then continue.\n if (input[position.position] === ';') {\n continue\n }\n\n // 2. Advance position by 1. (This skips past U+003D (=).)\n position.position++\n }\n\n // 6. If position is past the end of input, then break.\n if (position.position > input.length) {\n break\n }\n\n // 7. Let parameterValue be null.\n let parameterValue = null\n\n // 8. If the code point at position within input is\n // U+0022 (\"), then:\n if (input[position.position] === '\"') {\n // 1. Set parameterValue to the result of collecting\n // an HTTP quoted string from input, given position\n // and the extract-value flag.\n parameterValue = collectAnHTTPQuotedString(input, position, true)\n\n // 2. Collect a sequence of code points that are not\n // U+003B (;) from input, given position.\n collectASequenceOfCodePointsFast(\n ';',\n input,\n position\n )\n\n // 9. Otherwise:\n } else {\n // 1. Set parameterValue to the result of collecting\n // a sequence of code points that are not U+003B (;)\n // from input, given position.\n parameterValue = collectASequenceOfCodePointsFast(\n ';',\n input,\n position\n )\n\n // 2. Remove any trailing HTTP whitespace from parameterValue.\n parameterValue = removeHTTPWhitespace(parameterValue, false, true)\n\n // 3. If parameterValue is the empty string, then continue.\n if (parameterValue.length === 0) {\n continue\n }\n }\n\n // 10. If all of the following are true\n // - parameterName is not the empty string\n // - parameterName solely contains HTTP token code points\n // - parameterValue solely contains HTTP quoted-string token code points\n // - mimeType’s parameters[parameterName] does not exist\n // then set mimeType’s parameters[parameterName] to parameterValue.\n if (\n parameterName.length !== 0 &&\n HTTP_TOKEN_CODEPOINTS.test(parameterName) &&\n (parameterValue.length === 0 || HTTP_QUOTED_STRING_TOKENS.test(parameterValue)) &&\n !mimeType.parameters.has(parameterName)\n ) {\n mimeType.parameters.set(parameterName, parameterValue)\n }\n }\n\n // 12. Return mimeType.\n return mimeType\n}\n\n// https://infra.spec.whatwg.org/#forgiving-base64-decode\n/** @param {string} data */\nfunction forgivingBase64 (data) {\n // 1. Remove all ASCII whitespace from data.\n data = data.replace(/[\\u0009\\u000A\\u000C\\u000D\\u0020]/g, '') // eslint-disable-line\n\n // 2. If data’s code point length divides by 4 leaving\n // no remainder, then:\n if (data.length % 4 === 0) {\n // 1. If data ends with one or two U+003D (=) code points,\n // then remove them from data.\n data = data.replace(/=?=$/, '')\n }\n\n // 3. If data’s code point length divides by 4 leaving\n // a remainder of 1, then return failure.\n if (data.length % 4 === 1) {\n return 'failure'\n }\n\n // 4. If data contains a code point that is not one of\n // U+002B (+)\n // U+002F (/)\n // ASCII alphanumeric\n // then return failure.\n if (/[^+/0-9A-Za-z]/.test(data)) {\n return 'failure'\n }\n\n const binary = atob(data)\n const bytes = new Uint8Array(binary.length)\n\n for (let byte = 0; byte < binary.length; byte++) {\n bytes[byte] = binary.charCodeAt(byte)\n }\n\n return bytes\n}\n\n// https://fetch.spec.whatwg.org/#collect-an-http-quoted-string\n// tests: https://fetch.spec.whatwg.org/#example-http-quoted-string\n/**\n * @param {string} input\n * @param {{ position: number }} position\n * @param {boolean?} extractValue\n */\nfunction collectAnHTTPQuotedString (input, position, extractValue) {\n // 1. Let positionStart be position.\n const positionStart = position.position\n\n // 2. Let value be the empty string.\n let value = ''\n\n // 3. Assert: the code point at position within input\n // is U+0022 (\").\n assert(input[position.position] === '\"')\n\n // 4. Advance position by 1.\n position.position++\n\n // 5. While true:\n while (true) {\n // 1. Append the result of collecting a sequence of code points\n // that are not U+0022 (\") or U+005C (\\) from input, given\n // position, to value.\n value += collectASequenceOfCodePoints(\n (char) => char !== '\"' && char !== '\\\\',\n input,\n position\n )\n\n // 2. If position is past the end of input, then break.\n if (position.position >= input.length) {\n break\n }\n\n // 3. Let quoteOrBackslash be the code point at position within\n // input.\n const quoteOrBackslash = input[position.position]\n\n // 4. Advance position by 1.\n position.position++\n\n // 5. If quoteOrBackslash is U+005C (\\), then:\n if (quoteOrBackslash === '\\\\') {\n // 1. If position is past the end of input, then append\n // U+005C (\\) to value and break.\n if (position.position >= input.length) {\n value += '\\\\'\n break\n }\n\n // 2. Append the code point at position within input to value.\n value += input[position.position]\n\n // 3. Advance position by 1.\n position.position++\n\n // 6. Otherwise:\n } else {\n // 1. Assert: quoteOrBackslash is U+0022 (\").\n assert(quoteOrBackslash === '\"')\n\n // 2. Break.\n break\n }\n }\n\n // 6. If the extract-value flag is set, then return value.\n if (extractValue) {\n return value\n }\n\n // 7. Return the code points from positionStart to position,\n // inclusive, within input.\n return input.slice(positionStart, position.position)\n}\n\n/**\n * @see https://mimesniff.spec.whatwg.org/#serialize-a-mime-type\n */\nfunction serializeAMimeType (mimeType) {\n assert(mimeType !== 'failure')\n const { parameters, essence } = mimeType\n\n // 1. Let serialization be the concatenation of mimeType’s\n // type, U+002F (/), and mimeType’s subtype.\n let serialization = essence\n\n // 2. For each name → value of mimeType’s parameters:\n for (let [name, value] of parameters.entries()) {\n // 1. Append U+003B (;) to serialization.\n serialization += ';'\n\n // 2. Append name to serialization.\n serialization += name\n\n // 3. Append U+003D (=) to serialization.\n serialization += '='\n\n // 4. If value does not solely contain HTTP token code\n // points or value is the empty string, then:\n if (!HTTP_TOKEN_CODEPOINTS.test(value)) {\n // 1. Precede each occurence of U+0022 (\") or\n // U+005C (\\) in value with U+005C (\\).\n value = value.replace(/(\\\\|\")/g, '\\\\$1')\n\n // 2. Prepend U+0022 (\") to value.\n value = '\"' + value\n\n // 3. Append U+0022 (\") to value.\n value += '\"'\n }\n\n // 5. Append value to serialization.\n serialization += value\n }\n\n // 3. Return serialization.\n return serialization\n}\n\n/**\n * @see https://fetch.spec.whatwg.org/#http-whitespace\n * @param {string} char\n */\nfunction isHTTPWhiteSpace (char) {\n return char === '\\r' || char === '\\n' || char === '\\t' || char === ' '\n}\n\n/**\n * @see https://fetch.spec.whatwg.org/#http-whitespace\n * @param {string} str\n */\nfunction removeHTTPWhitespace (str, leading = true, trailing = true) {\n let lead = 0\n let trail = str.length - 1\n\n if (leading) {\n for (; lead < str.length && isHTTPWhiteSpace(str[lead]); lead++);\n }\n\n if (trailing) {\n for (; trail > 0 && isHTTPWhiteSpace(str[trail]); trail--);\n }\n\n return str.slice(lead, trail + 1)\n}\n\n/**\n * @see https://infra.spec.whatwg.org/#ascii-whitespace\n * @param {string} char\n */\nfunction isASCIIWhitespace (char) {\n return char === '\\r' || char === '\\n' || char === '\\t' || char === '\\f' || char === ' '\n}\n\n/**\n * @see https://infra.spec.whatwg.org/#strip-leading-and-trailing-ascii-whitespace\n */\nfunction removeASCIIWhitespace (str, leading = true, trailing = true) {\n let lead = 0\n let trail = str.length - 1\n\n if (leading) {\n for (; lead < str.length && isASCIIWhitespace(str[lead]); lead++);\n }\n\n if (trailing) {\n for (; trail > 0 && isASCIIWhitespace(str[trail]); trail--);\n }\n\n return str.slice(lead, trail + 1)\n}\n\nmodule.exports = {\n dataURLProcessor,\n URLSerializer,\n collectASequenceOfCodePoints,\n collectASequenceOfCodePointsFast,\n stringPercentDecode,\n parseMIMEType,\n collectAnHTTPQuotedString,\n serializeAMimeType\n}\n","'use strict'\n\nconst { Blob, File: NativeFile } = require('buffer')\nconst { types } = require('util')\nconst { kState } = require('./symbols')\nconst { isBlobLike } = require('./util')\nconst { webidl } = require('./webidl')\nconst { parseMIMEType, serializeAMimeType } = require('./dataURL')\nconst { kEnumerableProperty } = require('../core/util')\nconst encoder = new TextEncoder()\n\nclass File extends Blob {\n constructor (fileBits, fileName, options = {}) {\n // The File constructor is invoked with two or three parameters, depending\n // on whether the optional dictionary parameter is used. When the File()\n // constructor is invoked, user agents must run the following steps:\n webidl.argumentLengthCheck(arguments, 2, { header: 'File constructor' })\n\n fileBits = webidl.converters['sequence'](fileBits)\n fileName = webidl.converters.USVString(fileName)\n options = webidl.converters.FilePropertyBag(options)\n\n // 1. Let bytes be the result of processing blob parts given fileBits and\n // options.\n // Note: Blob handles this for us\n\n // 2. Let n be the fileName argument to the constructor.\n const n = fileName\n\n // 3. Process FilePropertyBag dictionary argument by running the following\n // substeps:\n\n // 1. If the type member is provided and is not the empty string, let t\n // be set to the type dictionary member. If t contains any characters\n // outside the range U+0020 to U+007E, then set t to the empty string\n // and return from these substeps.\n // 2. Convert every character in t to ASCII lowercase.\n let t = options.type\n let d\n\n // eslint-disable-next-line no-labels\n substep: {\n if (t) {\n t = parseMIMEType(t)\n\n if (t === 'failure') {\n t = ''\n // eslint-disable-next-line no-labels\n break substep\n }\n\n t = serializeAMimeType(t).toLowerCase()\n }\n\n // 3. If the lastModified member is provided, let d be set to the\n // lastModified dictionary member. If it is not provided, set d to the\n // current date and time represented as the number of milliseconds since\n // the Unix Epoch (which is the equivalent of Date.now() [ECMA-262]).\n d = options.lastModified\n }\n\n // 4. Return a new File object F such that:\n // F refers to the bytes byte sequence.\n // F.size is set to the number of total bytes in bytes.\n // F.name is set to n.\n // F.type is set to t.\n // F.lastModified is set to d.\n\n super(processBlobParts(fileBits, options), { type: t })\n this[kState] = {\n name: n,\n lastModified: d,\n type: t\n }\n }\n\n get name () {\n webidl.brandCheck(this, File)\n\n return this[kState].name\n }\n\n get lastModified () {\n webidl.brandCheck(this, File)\n\n return this[kState].lastModified\n }\n\n get type () {\n webidl.brandCheck(this, File)\n\n return this[kState].type\n }\n}\n\nclass FileLike {\n constructor (blobLike, fileName, options = {}) {\n // TODO: argument idl type check\n\n // The File constructor is invoked with two or three parameters, depending\n // on whether the optional dictionary parameter is used. When the File()\n // constructor is invoked, user agents must run the following steps:\n\n // 1. Let bytes be the result of processing blob parts given fileBits and\n // options.\n\n // 2. Let n be the fileName argument to the constructor.\n const n = fileName\n\n // 3. Process FilePropertyBag dictionary argument by running the following\n // substeps:\n\n // 1. If the type member is provided and is not the empty string, let t\n // be set to the type dictionary member. If t contains any characters\n // outside the range U+0020 to U+007E, then set t to the empty string\n // and return from these substeps.\n // TODO\n const t = options.type\n\n // 2. Convert every character in t to ASCII lowercase.\n // TODO\n\n // 3. If the lastModified member is provided, let d be set to the\n // lastModified dictionary member. If it is not provided, set d to the\n // current date and time represented as the number of milliseconds since\n // the Unix Epoch (which is the equivalent of Date.now() [ECMA-262]).\n const d = options.lastModified ?? Date.now()\n\n // 4. Return a new File object F such that:\n // F refers to the bytes byte sequence.\n // F.size is set to the number of total bytes in bytes.\n // F.name is set to n.\n // F.type is set to t.\n // F.lastModified is set to d.\n\n this[kState] = {\n blobLike,\n name: n,\n type: t,\n lastModified: d\n }\n }\n\n stream (...args) {\n webidl.brandCheck(this, FileLike)\n\n return this[kState].blobLike.stream(...args)\n }\n\n arrayBuffer (...args) {\n webidl.brandCheck(this, FileLike)\n\n return this[kState].blobLike.arrayBuffer(...args)\n }\n\n slice (...args) {\n webidl.brandCheck(this, FileLike)\n\n return this[kState].blobLike.slice(...args)\n }\n\n text (...args) {\n webidl.brandCheck(this, FileLike)\n\n return this[kState].blobLike.text(...args)\n }\n\n get size () {\n webidl.brandCheck(this, FileLike)\n\n return this[kState].blobLike.size\n }\n\n get type () {\n webidl.brandCheck(this, FileLike)\n\n return this[kState].blobLike.type\n }\n\n get name () {\n webidl.brandCheck(this, FileLike)\n\n return this[kState].name\n }\n\n get lastModified () {\n webidl.brandCheck(this, FileLike)\n\n return this[kState].lastModified\n }\n\n get [Symbol.toStringTag] () {\n return 'File'\n }\n}\n\nObject.defineProperties(File.prototype, {\n [Symbol.toStringTag]: {\n value: 'File',\n configurable: true\n },\n name: kEnumerableProperty,\n lastModified: kEnumerableProperty\n})\n\nwebidl.converters.Blob = webidl.interfaceConverter(Blob)\n\nwebidl.converters.BlobPart = function (V, opts) {\n if (webidl.util.Type(V) === 'Object') {\n if (isBlobLike(V)) {\n return webidl.converters.Blob(V, { strict: false })\n }\n\n if (\n ArrayBuffer.isView(V) ||\n types.isAnyArrayBuffer(V)\n ) {\n return webidl.converters.BufferSource(V, opts)\n }\n }\n\n return webidl.converters.USVString(V, opts)\n}\n\nwebidl.converters['sequence'] = webidl.sequenceConverter(\n webidl.converters.BlobPart\n)\n\n// https://www.w3.org/TR/FileAPI/#dfn-FilePropertyBag\nwebidl.converters.FilePropertyBag = webidl.dictionaryConverter([\n {\n key: 'lastModified',\n converter: webidl.converters['long long'],\n get defaultValue () {\n return Date.now()\n }\n },\n {\n key: 'type',\n converter: webidl.converters.DOMString,\n defaultValue: ''\n },\n {\n key: 'endings',\n converter: (value) => {\n value = webidl.converters.DOMString(value)\n value = value.toLowerCase()\n\n if (value !== 'native') {\n value = 'transparent'\n }\n\n return value\n },\n defaultValue: 'transparent'\n }\n])\n\n/**\n * @see https://www.w3.org/TR/FileAPI/#process-blob-parts\n * @param {(NodeJS.TypedArray|Blob|string)[]} parts\n * @param {{ type: string, endings: string }} options\n */\nfunction processBlobParts (parts, options) {\n // 1. Let bytes be an empty sequence of bytes.\n /** @type {NodeJS.TypedArray[]} */\n const bytes = []\n\n // 2. For each element in parts:\n for (const element of parts) {\n // 1. If element is a USVString, run the following substeps:\n if (typeof element === 'string') {\n // 1. Let s be element.\n let s = element\n\n // 2. If the endings member of options is \"native\", set s\n // to the result of converting line endings to native\n // of element.\n if (options.endings === 'native') {\n s = convertLineEndingsNative(s)\n }\n\n // 3. Append the result of UTF-8 encoding s to bytes.\n bytes.push(encoder.encode(s))\n } else if (\n types.isAnyArrayBuffer(element) ||\n types.isTypedArray(element)\n ) {\n // 2. If element is a BufferSource, get a copy of the\n // bytes held by the buffer source, and append those\n // bytes to bytes.\n if (!element.buffer) { // ArrayBuffer\n bytes.push(new Uint8Array(element))\n } else {\n bytes.push(\n new Uint8Array(element.buffer, element.byteOffset, element.byteLength)\n )\n }\n } else if (isBlobLike(element)) {\n // 3. If element is a Blob, append the bytes it represents\n // to bytes.\n bytes.push(element)\n }\n }\n\n // 3. Return bytes.\n return bytes\n}\n\n/**\n * @see https://www.w3.org/TR/FileAPI/#convert-line-endings-to-native\n * @param {string} s\n */\nfunction convertLineEndingsNative (s) {\n // 1. Let native line ending be be the code point U+000A LF.\n let nativeLineEnding = '\\n'\n\n // 2. If the underlying platform’s conventions are to\n // represent newlines as a carriage return and line feed\n // sequence, set native line ending to the code point\n // U+000D CR followed by the code point U+000A LF.\n if (process.platform === 'win32') {\n nativeLineEnding = '\\r\\n'\n }\n\n return s.replace(/\\r?\\n/g, nativeLineEnding)\n}\n\n// If this function is moved to ./util.js, some tools (such as\n// rollup) will warn about circular dependencies. See:\n// https://github.com/nodejs/undici/issues/1629\nfunction isFileLike (object) {\n return (\n (NativeFile && object instanceof NativeFile) ||\n object instanceof File || (\n object &&\n (typeof object.stream === 'function' ||\n typeof object.arrayBuffer === 'function') &&\n object[Symbol.toStringTag] === 'File'\n )\n )\n}\n\nmodule.exports = { File, FileLike, isFileLike }\n","'use strict'\n\nconst { isBlobLike, toUSVString, makeIterator } = require('./util')\nconst { kState } = require('./symbols')\nconst { File: UndiciFile, FileLike, isFileLike } = require('./file')\nconst { webidl } = require('./webidl')\nconst { Blob, File: NativeFile } = require('buffer')\n\n/** @type {globalThis['File']} */\nconst File = NativeFile ?? UndiciFile\n\n// https://xhr.spec.whatwg.org/#formdata\nclass FormData {\n constructor (form) {\n if (form !== undefined) {\n throw webidl.errors.conversionFailed({\n prefix: 'FormData constructor',\n argument: 'Argument 1',\n types: ['undefined']\n })\n }\n\n this[kState] = []\n }\n\n append (name, value, filename = undefined) {\n webidl.brandCheck(this, FormData)\n\n webidl.argumentLengthCheck(arguments, 2, { header: 'FormData.append' })\n\n if (arguments.length === 3 && !isBlobLike(value)) {\n throw new TypeError(\n \"Failed to execute 'append' on 'FormData': parameter 2 is not of type 'Blob'\"\n )\n }\n\n // 1. Let value be value if given; otherwise blobValue.\n\n name = webidl.converters.USVString(name)\n value = isBlobLike(value)\n ? webidl.converters.Blob(value, { strict: false })\n : webidl.converters.USVString(value)\n filename = arguments.length === 3\n ? webidl.converters.USVString(filename)\n : undefined\n\n // 2. Let entry be the result of creating an entry with\n // name, value, and filename if given.\n const entry = makeEntry(name, value, filename)\n\n // 3. Append entry to this’s entry list.\n this[kState].push(entry)\n }\n\n delete (name) {\n webidl.brandCheck(this, FormData)\n\n webidl.argumentLengthCheck(arguments, 1, { header: 'FormData.delete' })\n\n name = webidl.converters.USVString(name)\n\n // The delete(name) method steps are to remove all entries whose name\n // is name from this’s entry list.\n this[kState] = this[kState].filter(entry => entry.name !== name)\n }\n\n get (name) {\n webidl.brandCheck(this, FormData)\n\n webidl.argumentLengthCheck(arguments, 1, { header: 'FormData.get' })\n\n name = webidl.converters.USVString(name)\n\n // 1. If there is no entry whose name is name in this’s entry list,\n // then return null.\n const idx = this[kState].findIndex((entry) => entry.name === name)\n if (idx === -1) {\n return null\n }\n\n // 2. Return the value of the first entry whose name is name from\n // this’s entry list.\n return this[kState][idx].value\n }\n\n getAll (name) {\n webidl.brandCheck(this, FormData)\n\n webidl.argumentLengthCheck(arguments, 1, { header: 'FormData.getAll' })\n\n name = webidl.converters.USVString(name)\n\n // 1. If there is no entry whose name is name in this’s entry list,\n // then return the empty list.\n // 2. Return the values of all entries whose name is name, in order,\n // from this’s entry list.\n return this[kState]\n .filter((entry) => entry.name === name)\n .map((entry) => entry.value)\n }\n\n has (name) {\n webidl.brandCheck(this, FormData)\n\n webidl.argumentLengthCheck(arguments, 1, { header: 'FormData.has' })\n\n name = webidl.converters.USVString(name)\n\n // The has(name) method steps are to return true if there is an entry\n // whose name is name in this’s entry list; otherwise false.\n return this[kState].findIndex((entry) => entry.name === name) !== -1\n }\n\n set (name, value, filename = undefined) {\n webidl.brandCheck(this, FormData)\n\n webidl.argumentLengthCheck(arguments, 2, { header: 'FormData.set' })\n\n if (arguments.length === 3 && !isBlobLike(value)) {\n throw new TypeError(\n \"Failed to execute 'set' on 'FormData': parameter 2 is not of type 'Blob'\"\n )\n }\n\n // The set(name, value) and set(name, blobValue, filename) method steps\n // are:\n\n // 1. Let value be value if given; otherwise blobValue.\n\n name = webidl.converters.USVString(name)\n value = isBlobLike(value)\n ? webidl.converters.Blob(value, { strict: false })\n : webidl.converters.USVString(value)\n filename = arguments.length === 3\n ? toUSVString(filename)\n : undefined\n\n // 2. Let entry be the result of creating an entry with name, value, and\n // filename if given.\n const entry = makeEntry(name, value, filename)\n\n // 3. If there are entries in this’s entry list whose name is name, then\n // replace the first such entry with entry and remove the others.\n const idx = this[kState].findIndex((entry) => entry.name === name)\n if (idx !== -1) {\n this[kState] = [\n ...this[kState].slice(0, idx),\n entry,\n ...this[kState].slice(idx + 1).filter((entry) => entry.name !== name)\n ]\n } else {\n // 4. Otherwise, append entry to this’s entry list.\n this[kState].push(entry)\n }\n }\n\n entries () {\n webidl.brandCheck(this, FormData)\n\n return makeIterator(\n () => this[kState].map(pair => [pair.name, pair.value]),\n 'FormData',\n 'key+value'\n )\n }\n\n keys () {\n webidl.brandCheck(this, FormData)\n\n return makeIterator(\n () => this[kState].map(pair => [pair.name, pair.value]),\n 'FormData',\n 'key'\n )\n }\n\n values () {\n webidl.brandCheck(this, FormData)\n\n return makeIterator(\n () => this[kState].map(pair => [pair.name, pair.value]),\n 'FormData',\n 'value'\n )\n }\n\n /**\n * @param {(value: string, key: string, self: FormData) => void} callbackFn\n * @param {unknown} thisArg\n */\n forEach (callbackFn, thisArg = globalThis) {\n webidl.brandCheck(this, FormData)\n\n webidl.argumentLengthCheck(arguments, 1, { header: 'FormData.forEach' })\n\n if (typeof callbackFn !== 'function') {\n throw new TypeError(\n \"Failed to execute 'forEach' on 'FormData': parameter 1 is not of type 'Function'.\"\n )\n }\n\n for (const [key, value] of this) {\n callbackFn.apply(thisArg, [value, key, this])\n }\n }\n}\n\nFormData.prototype[Symbol.iterator] = FormData.prototype.entries\n\nObject.defineProperties(FormData.prototype, {\n [Symbol.toStringTag]: {\n value: 'FormData',\n configurable: true\n }\n})\n\n/**\n * @see https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#create-an-entry\n * @param {string} name\n * @param {string|Blob} value\n * @param {?string} filename\n * @returns\n */\nfunction makeEntry (name, value, filename) {\n // 1. Set name to the result of converting name into a scalar value string.\n // \"To convert a string into a scalar value string, replace any surrogates\n // with U+FFFD.\"\n // see: https://nodejs.org/dist/latest-v18.x/docs/api/buffer.html#buftostringencoding-start-end\n name = Buffer.from(name).toString('utf8')\n\n // 2. If value is a string, then set value to the result of converting\n // value into a scalar value string.\n if (typeof value === 'string') {\n value = Buffer.from(value).toString('utf8')\n } else {\n // 3. Otherwise:\n\n // 1. If value is not a File object, then set value to a new File object,\n // representing the same bytes, whose name attribute value is \"blob\"\n if (!isFileLike(value)) {\n value = value instanceof Blob\n ? new File([value], 'blob', { type: value.type })\n : new FileLike(value, 'blob', { type: value.type })\n }\n\n // 2. If filename is given, then set value to a new File object,\n // representing the same bytes, whose name attribute is filename.\n if (filename !== undefined) {\n /** @type {FilePropertyBag} */\n const options = {\n type: value.type,\n lastModified: value.lastModified\n }\n\n value = (NativeFile && value instanceof NativeFile) || value instanceof UndiciFile\n ? new File([value], filename, options)\n : new FileLike(value, filename, options)\n }\n }\n\n // 4. Return an entry whose name is name and whose value is value.\n return { name, value }\n}\n\nmodule.exports = { FormData }\n","'use strict'\n\n// In case of breaking changes, increase the version\n// number to avoid conflicts.\nconst globalOrigin = Symbol.for('undici.globalOrigin.1')\n\nfunction getGlobalOrigin () {\n return globalThis[globalOrigin]\n}\n\nfunction setGlobalOrigin (newOrigin) {\n if (newOrigin === undefined) {\n Object.defineProperty(globalThis, globalOrigin, {\n value: undefined,\n writable: true,\n enumerable: false,\n configurable: false\n })\n\n return\n }\n\n const parsedURL = new URL(newOrigin)\n\n if (parsedURL.protocol !== 'http:' && parsedURL.protocol !== 'https:') {\n throw new TypeError(`Only http & https urls are allowed, received ${parsedURL.protocol}`)\n }\n\n Object.defineProperty(globalThis, globalOrigin, {\n value: parsedURL,\n writable: true,\n enumerable: false,\n configurable: false\n })\n}\n\nmodule.exports = {\n getGlobalOrigin,\n setGlobalOrigin\n}\n","// https://github.com/Ethan-Arrowood/undici-fetch\n\n'use strict'\n\nconst { kHeadersList, kConstruct } = require('../core/symbols')\nconst { kGuard } = require('./symbols')\nconst { kEnumerableProperty } = require('../core/util')\nconst {\n makeIterator,\n isValidHeaderName,\n isValidHeaderValue\n} = require('./util')\nconst { webidl } = require('./webidl')\nconst assert = require('assert')\n\nconst kHeadersMap = Symbol('headers map')\nconst kHeadersSortedMap = Symbol('headers map sorted')\n\n/**\n * @param {number} code\n */\nfunction isHTTPWhiteSpaceCharCode (code) {\n return code === 0x00a || code === 0x00d || code === 0x009 || code === 0x020\n}\n\n/**\n * @see https://fetch.spec.whatwg.org/#concept-header-value-normalize\n * @param {string} potentialValue\n */\nfunction headerValueNormalize (potentialValue) {\n // To normalize a byte sequence potentialValue, remove\n // any leading and trailing HTTP whitespace bytes from\n // potentialValue.\n let i = 0; let j = potentialValue.length\n\n while (j > i && isHTTPWhiteSpaceCharCode(potentialValue.charCodeAt(j - 1))) --j\n while (j > i && isHTTPWhiteSpaceCharCode(potentialValue.charCodeAt(i))) ++i\n\n return i === 0 && j === potentialValue.length ? potentialValue : potentialValue.substring(i, j)\n}\n\nfunction fill (headers, object) {\n // To fill a Headers object headers with a given object object, run these steps:\n\n // 1. If object is a sequence, then for each header in object:\n // Note: webidl conversion to array has already been done.\n if (Array.isArray(object)) {\n for (let i = 0; i < object.length; ++i) {\n const header = object[i]\n // 1. If header does not contain exactly two items, then throw a TypeError.\n if (header.length !== 2) {\n throw webidl.errors.exception({\n header: 'Headers constructor',\n message: `expected name/value pair to be length 2, found ${header.length}.`\n })\n }\n\n // 2. Append (header’s first item, header’s second item) to headers.\n appendHeader(headers, header[0], header[1])\n }\n } else if (typeof object === 'object' && object !== null) {\n // Note: null should throw\n\n // 2. Otherwise, object is a record, then for each key → value in object,\n // append (key, value) to headers\n const keys = Object.keys(object)\n for (let i = 0; i < keys.length; ++i) {\n appendHeader(headers, keys[i], object[keys[i]])\n }\n } else {\n throw webidl.errors.conversionFailed({\n prefix: 'Headers constructor',\n argument: 'Argument 1',\n types: ['sequence>', 'record']\n })\n }\n}\n\n/**\n * @see https://fetch.spec.whatwg.org/#concept-headers-append\n */\nfunction appendHeader (headers, name, value) {\n // 1. Normalize value.\n value = headerValueNormalize(value)\n\n // 2. If name is not a header name or value is not a\n // header value, then throw a TypeError.\n if (!isValidHeaderName(name)) {\n throw webidl.errors.invalidArgument({\n prefix: 'Headers.append',\n value: name,\n type: 'header name'\n })\n } else if (!isValidHeaderValue(value)) {\n throw webidl.errors.invalidArgument({\n prefix: 'Headers.append',\n value,\n type: 'header value'\n })\n }\n\n // 3. If headers’s guard is \"immutable\", then throw a TypeError.\n // 4. Otherwise, if headers’s guard is \"request\" and name is a\n // forbidden header name, return.\n // Note: undici does not implement forbidden header names\n if (headers[kGuard] === 'immutable') {\n throw new TypeError('immutable')\n } else if (headers[kGuard] === 'request-no-cors') {\n // 5. Otherwise, if headers’s guard is \"request-no-cors\":\n // TODO\n }\n\n // 6. Otherwise, if headers’s guard is \"response\" and name is a\n // forbidden response-header name, return.\n\n // 7. Append (name, value) to headers’s header list.\n return headers[kHeadersList].append(name, value)\n\n // 8. If headers’s guard is \"request-no-cors\", then remove\n // privileged no-CORS request headers from headers\n}\n\nclass HeadersList {\n /** @type {[string, string][]|null} */\n cookies = null\n\n constructor (init) {\n if (init instanceof HeadersList) {\n this[kHeadersMap] = new Map(init[kHeadersMap])\n this[kHeadersSortedMap] = init[kHeadersSortedMap]\n this.cookies = init.cookies === null ? null : [...init.cookies]\n } else {\n this[kHeadersMap] = new Map(init)\n this[kHeadersSortedMap] = null\n }\n }\n\n // https://fetch.spec.whatwg.org/#header-list-contains\n contains (name) {\n // A header list list contains a header name name if list\n // contains a header whose name is a byte-case-insensitive\n // match for name.\n name = name.toLowerCase()\n\n return this[kHeadersMap].has(name)\n }\n\n clear () {\n this[kHeadersMap].clear()\n this[kHeadersSortedMap] = null\n this.cookies = null\n }\n\n // https://fetch.spec.whatwg.org/#concept-header-list-append\n append (name, value) {\n this[kHeadersSortedMap] = null\n\n // 1. If list contains name, then set name to the first such\n // header’s name.\n const lowercaseName = name.toLowerCase()\n const exists = this[kHeadersMap].get(lowercaseName)\n\n // 2. Append (name, value) to list.\n if (exists) {\n const delimiter = lowercaseName === 'cookie' ? '; ' : ', '\n this[kHeadersMap].set(lowercaseName, {\n name: exists.name,\n value: `${exists.value}${delimiter}${value}`\n })\n } else {\n this[kHeadersMap].set(lowercaseName, { name, value })\n }\n\n if (lowercaseName === 'set-cookie') {\n this.cookies ??= []\n this.cookies.push(value)\n }\n }\n\n // https://fetch.spec.whatwg.org/#concept-header-list-set\n set (name, value) {\n this[kHeadersSortedMap] = null\n const lowercaseName = name.toLowerCase()\n\n if (lowercaseName === 'set-cookie') {\n this.cookies = [value]\n }\n\n // 1. If list contains name, then set the value of\n // the first such header to value and remove the\n // others.\n // 2. Otherwise, append header (name, value) to list.\n this[kHeadersMap].set(lowercaseName, { name, value })\n }\n\n // https://fetch.spec.whatwg.org/#concept-header-list-delete\n delete (name) {\n this[kHeadersSortedMap] = null\n\n name = name.toLowerCase()\n\n if (name === 'set-cookie') {\n this.cookies = null\n }\n\n this[kHeadersMap].delete(name)\n }\n\n // https://fetch.spec.whatwg.org/#concept-header-list-get\n get (name) {\n const value = this[kHeadersMap].get(name.toLowerCase())\n\n // 1. If list does not contain name, then return null.\n // 2. Return the values of all headers in list whose name\n // is a byte-case-insensitive match for name,\n // separated from each other by 0x2C 0x20, in order.\n return value === undefined ? null : value.value\n }\n\n * [Symbol.iterator] () {\n // use the lowercased name\n for (const [name, { value }] of this[kHeadersMap]) {\n yield [name, value]\n }\n }\n\n get entries () {\n const headers = {}\n\n if (this[kHeadersMap].size) {\n for (const { name, value } of this[kHeadersMap].values()) {\n headers[name] = value\n }\n }\n\n return headers\n }\n}\n\n// https://fetch.spec.whatwg.org/#headers-class\nclass Headers {\n constructor (init = undefined) {\n if (init === kConstruct) {\n return\n }\n this[kHeadersList] = new HeadersList()\n\n // The new Headers(init) constructor steps are:\n\n // 1. Set this’s guard to \"none\".\n this[kGuard] = 'none'\n\n // 2. If init is given, then fill this with init.\n if (init !== undefined) {\n init = webidl.converters.HeadersInit(init)\n fill(this, init)\n }\n }\n\n // https://fetch.spec.whatwg.org/#dom-headers-append\n append (name, value) {\n webidl.brandCheck(this, Headers)\n\n webidl.argumentLengthCheck(arguments, 2, { header: 'Headers.append' })\n\n name = webidl.converters.ByteString(name)\n value = webidl.converters.ByteString(value)\n\n return appendHeader(this, name, value)\n }\n\n // https://fetch.spec.whatwg.org/#dom-headers-delete\n delete (name) {\n webidl.brandCheck(this, Headers)\n\n webidl.argumentLengthCheck(arguments, 1, { header: 'Headers.delete' })\n\n name = webidl.converters.ByteString(name)\n\n // 1. If name is not a header name, then throw a TypeError.\n if (!isValidHeaderName(name)) {\n throw webidl.errors.invalidArgument({\n prefix: 'Headers.delete',\n value: name,\n type: 'header name'\n })\n }\n\n // 2. If this’s guard is \"immutable\", then throw a TypeError.\n // 3. Otherwise, if this’s guard is \"request\" and name is a\n // forbidden header name, return.\n // 4. Otherwise, if this’s guard is \"request-no-cors\", name\n // is not a no-CORS-safelisted request-header name, and\n // name is not a privileged no-CORS request-header name,\n // return.\n // 5. Otherwise, if this’s guard is \"response\" and name is\n // a forbidden response-header name, return.\n // Note: undici does not implement forbidden header names\n if (this[kGuard] === 'immutable') {\n throw new TypeError('immutable')\n } else if (this[kGuard] === 'request-no-cors') {\n // TODO\n }\n\n // 6. If this’s header list does not contain name, then\n // return.\n if (!this[kHeadersList].contains(name)) {\n return\n }\n\n // 7. Delete name from this’s header list.\n // 8. If this’s guard is \"request-no-cors\", then remove\n // privileged no-CORS request headers from this.\n this[kHeadersList].delete(name)\n }\n\n // https://fetch.spec.whatwg.org/#dom-headers-get\n get (name) {\n webidl.brandCheck(this, Headers)\n\n webidl.argumentLengthCheck(arguments, 1, { header: 'Headers.get' })\n\n name = webidl.converters.ByteString(name)\n\n // 1. If name is not a header name, then throw a TypeError.\n if (!isValidHeaderName(name)) {\n throw webidl.errors.invalidArgument({\n prefix: 'Headers.get',\n value: name,\n type: 'header name'\n })\n }\n\n // 2. Return the result of getting name from this’s header\n // list.\n return this[kHeadersList].get(name)\n }\n\n // https://fetch.spec.whatwg.org/#dom-headers-has\n has (name) {\n webidl.brandCheck(this, Headers)\n\n webidl.argumentLengthCheck(arguments, 1, { header: 'Headers.has' })\n\n name = webidl.converters.ByteString(name)\n\n // 1. If name is not a header name, then throw a TypeError.\n if (!isValidHeaderName(name)) {\n throw webidl.errors.invalidArgument({\n prefix: 'Headers.has',\n value: name,\n type: 'header name'\n })\n }\n\n // 2. Return true if this’s header list contains name;\n // otherwise false.\n return this[kHeadersList].contains(name)\n }\n\n // https://fetch.spec.whatwg.org/#dom-headers-set\n set (name, value) {\n webidl.brandCheck(this, Headers)\n\n webidl.argumentLengthCheck(arguments, 2, { header: 'Headers.set' })\n\n name = webidl.converters.ByteString(name)\n value = webidl.converters.ByteString(value)\n\n // 1. Normalize value.\n value = headerValueNormalize(value)\n\n // 2. If name is not a header name or value is not a\n // header value, then throw a TypeError.\n if (!isValidHeaderName(name)) {\n throw webidl.errors.invalidArgument({\n prefix: 'Headers.set',\n value: name,\n type: 'header name'\n })\n } else if (!isValidHeaderValue(value)) {\n throw webidl.errors.invalidArgument({\n prefix: 'Headers.set',\n value,\n type: 'header value'\n })\n }\n\n // 3. If this’s guard is \"immutable\", then throw a TypeError.\n // 4. Otherwise, if this’s guard is \"request\" and name is a\n // forbidden header name, return.\n // 5. Otherwise, if this’s guard is \"request-no-cors\" and\n // name/value is not a no-CORS-safelisted request-header,\n // return.\n // 6. Otherwise, if this’s guard is \"response\" and name is a\n // forbidden response-header name, return.\n // Note: undici does not implement forbidden header names\n if (this[kGuard] === 'immutable') {\n throw new TypeError('immutable')\n } else if (this[kGuard] === 'request-no-cors') {\n // TODO\n }\n\n // 7. Set (name, value) in this’s header list.\n // 8. If this’s guard is \"request-no-cors\", then remove\n // privileged no-CORS request headers from this\n this[kHeadersList].set(name, value)\n }\n\n // https://fetch.spec.whatwg.org/#dom-headers-getsetcookie\n getSetCookie () {\n webidl.brandCheck(this, Headers)\n\n // 1. If this’s header list does not contain `Set-Cookie`, then return « ».\n // 2. Return the values of all headers in this’s header list whose name is\n // a byte-case-insensitive match for `Set-Cookie`, in order.\n\n const list = this[kHeadersList].cookies\n\n if (list) {\n return [...list]\n }\n\n return []\n }\n\n // https://fetch.spec.whatwg.org/#concept-header-list-sort-and-combine\n get [kHeadersSortedMap] () {\n if (this[kHeadersList][kHeadersSortedMap]) {\n return this[kHeadersList][kHeadersSortedMap]\n }\n\n // 1. Let headers be an empty list of headers with the key being the name\n // and value the value.\n const headers = []\n\n // 2. Let names be the result of convert header names to a sorted-lowercase\n // set with all the names of the headers in list.\n const names = [...this[kHeadersList]].sort((a, b) => a[0] < b[0] ? -1 : 1)\n const cookies = this[kHeadersList].cookies\n\n // 3. For each name of names:\n for (let i = 0; i < names.length; ++i) {\n const [name, value] = names[i]\n // 1. If name is `set-cookie`, then:\n if (name === 'set-cookie') {\n // 1. Let values be a list of all values of headers in list whose name\n // is a byte-case-insensitive match for name, in order.\n\n // 2. For each value of values:\n // 1. Append (name, value) to headers.\n for (let j = 0; j < cookies.length; ++j) {\n headers.push([name, cookies[j]])\n }\n } else {\n // 2. Otherwise:\n\n // 1. Let value be the result of getting name from list.\n\n // 2. Assert: value is non-null.\n assert(value !== null)\n\n // 3. Append (name, value) to headers.\n headers.push([name, value])\n }\n }\n\n this[kHeadersList][kHeadersSortedMap] = headers\n\n // 4. Return headers.\n return headers\n }\n\n keys () {\n webidl.brandCheck(this, Headers)\n\n if (this[kGuard] === 'immutable') {\n const value = this[kHeadersSortedMap]\n return makeIterator(() => value, 'Headers',\n 'key')\n }\n\n return makeIterator(\n () => [...this[kHeadersSortedMap].values()],\n 'Headers',\n 'key'\n )\n }\n\n values () {\n webidl.brandCheck(this, Headers)\n\n if (this[kGuard] === 'immutable') {\n const value = this[kHeadersSortedMap]\n return makeIterator(() => value, 'Headers',\n 'value')\n }\n\n return makeIterator(\n () => [...this[kHeadersSortedMap].values()],\n 'Headers',\n 'value'\n )\n }\n\n entries () {\n webidl.brandCheck(this, Headers)\n\n if (this[kGuard] === 'immutable') {\n const value = this[kHeadersSortedMap]\n return makeIterator(() => value, 'Headers',\n 'key+value')\n }\n\n return makeIterator(\n () => [...this[kHeadersSortedMap].values()],\n 'Headers',\n 'key+value'\n )\n }\n\n /**\n * @param {(value: string, key: string, self: Headers) => void} callbackFn\n * @param {unknown} thisArg\n */\n forEach (callbackFn, thisArg = globalThis) {\n webidl.brandCheck(this, Headers)\n\n webidl.argumentLengthCheck(arguments, 1, { header: 'Headers.forEach' })\n\n if (typeof callbackFn !== 'function') {\n throw new TypeError(\n \"Failed to execute 'forEach' on 'Headers': parameter 1 is not of type 'Function'.\"\n )\n }\n\n for (const [key, value] of this) {\n callbackFn.apply(thisArg, [value, key, this])\n }\n }\n\n [Symbol.for('nodejs.util.inspect.custom')] () {\n webidl.brandCheck(this, Headers)\n\n return this[kHeadersList]\n }\n}\n\nHeaders.prototype[Symbol.iterator] = Headers.prototype.entries\n\nObject.defineProperties(Headers.prototype, {\n append: kEnumerableProperty,\n delete: kEnumerableProperty,\n get: kEnumerableProperty,\n has: kEnumerableProperty,\n set: kEnumerableProperty,\n getSetCookie: kEnumerableProperty,\n keys: kEnumerableProperty,\n values: kEnumerableProperty,\n entries: kEnumerableProperty,\n forEach: kEnumerableProperty,\n [Symbol.iterator]: { enumerable: false },\n [Symbol.toStringTag]: {\n value: 'Headers',\n configurable: true\n }\n})\n\nwebidl.converters.HeadersInit = function (V) {\n if (webidl.util.Type(V) === 'Object') {\n if (V[Symbol.iterator]) {\n return webidl.converters['sequence>'](V)\n }\n\n return webidl.converters['record'](V)\n }\n\n throw webidl.errors.conversionFailed({\n prefix: 'Headers constructor',\n argument: 'Argument 1',\n types: ['sequence>', 'record']\n })\n}\n\nmodule.exports = {\n fill,\n Headers,\n HeadersList\n}\n","// https://github.com/Ethan-Arrowood/undici-fetch\n\n'use strict'\n\nconst {\n Response,\n makeNetworkError,\n makeAppropriateNetworkError,\n filterResponse,\n makeResponse\n} = require('./response')\nconst { Headers } = require('./headers')\nconst { Request, makeRequest } = require('./request')\nconst zlib = require('zlib')\nconst {\n bytesMatch,\n makePolicyContainer,\n clonePolicyContainer,\n requestBadPort,\n TAOCheck,\n appendRequestOriginHeader,\n responseLocationURL,\n requestCurrentURL,\n setRequestReferrerPolicyOnRedirect,\n tryUpgradeRequestToAPotentiallyTrustworthyURL,\n createOpaqueTimingInfo,\n appendFetchMetadata,\n corsCheck,\n crossOriginResourcePolicyCheck,\n determineRequestsReferrer,\n coarsenedSharedCurrentTime,\n createDeferredPromise,\n isBlobLike,\n sameOrigin,\n isCancelled,\n isAborted,\n isErrorLike,\n fullyReadBody,\n readableStreamClose,\n isomorphicEncode,\n urlIsLocal,\n urlIsHttpHttpsScheme,\n urlHasHttpsScheme\n} = require('./util')\nconst { kState, kHeaders, kGuard, kRealm } = require('./symbols')\nconst assert = require('assert')\nconst { safelyExtractBody } = require('./body')\nconst {\n redirectStatusSet,\n nullBodyStatus,\n safeMethodsSet,\n requestBodyHeader,\n subresourceSet,\n DOMException\n} = require('./constants')\nconst { kHeadersList } = require('../core/symbols')\nconst EE = require('events')\nconst { Readable, pipeline } = require('stream')\nconst { addAbortListener, isErrored, isReadable, nodeMajor, nodeMinor } = require('../core/util')\nconst { dataURLProcessor, serializeAMimeType } = require('./dataURL')\nconst { TransformStream } = require('stream/web')\nconst { getGlobalDispatcher } = require('../global')\nconst { webidl } = require('./webidl')\nconst { STATUS_CODES } = require('http')\nconst GET_OR_HEAD = ['GET', 'HEAD']\n\n/** @type {import('buffer').resolveObjectURL} */\nlet resolveObjectURL\nlet ReadableStream = globalThis.ReadableStream\n\nclass Fetch extends EE {\n constructor (dispatcher) {\n super()\n\n this.dispatcher = dispatcher\n this.connection = null\n this.dump = false\n this.state = 'ongoing'\n // 2 terminated listeners get added per request,\n // but only 1 gets removed. If there are 20 redirects,\n // 21 listeners will be added.\n // See https://github.com/nodejs/undici/issues/1711\n // TODO (fix): Find and fix root cause for leaked listener.\n this.setMaxListeners(21)\n }\n\n terminate (reason) {\n if (this.state !== 'ongoing') {\n return\n }\n\n this.state = 'terminated'\n this.connection?.destroy(reason)\n this.emit('terminated', reason)\n }\n\n // https://fetch.spec.whatwg.org/#fetch-controller-abort\n abort (error) {\n if (this.state !== 'ongoing') {\n return\n }\n\n // 1. Set controller’s state to \"aborted\".\n this.state = 'aborted'\n\n // 2. Let fallbackError be an \"AbortError\" DOMException.\n // 3. Set error to fallbackError if it is not given.\n if (!error) {\n error = new DOMException('The operation was aborted.', 'AbortError')\n }\n\n // 4. Let serializedError be StructuredSerialize(error).\n // If that threw an exception, catch it, and let\n // serializedError be StructuredSerialize(fallbackError).\n\n // 5. Set controller’s serialized abort reason to serializedError.\n this.serializedAbortReason = error\n\n this.connection?.destroy(error)\n this.emit('terminated', error)\n }\n}\n\n// https://fetch.spec.whatwg.org/#fetch-method\nfunction fetch (input, init = {}) {\n webidl.argumentLengthCheck(arguments, 1, { header: 'globalThis.fetch' })\n\n // 1. Let p be a new promise.\n const p = createDeferredPromise()\n\n // 2. Let requestObject be the result of invoking the initial value of\n // Request as constructor with input and init as arguments. If this throws\n // an exception, reject p with it and return p.\n let requestObject\n\n try {\n requestObject = new Request(input, init)\n } catch (e) {\n p.reject(e)\n return p.promise\n }\n\n // 3. Let request be requestObject’s request.\n const request = requestObject[kState]\n\n // 4. If requestObject’s signal’s aborted flag is set, then:\n if (requestObject.signal.aborted) {\n // 1. Abort the fetch() call with p, request, null, and\n // requestObject’s signal’s abort reason.\n abortFetch(p, request, null, requestObject.signal.reason)\n\n // 2. Return p.\n return p.promise\n }\n\n // 5. Let globalObject be request’s client’s global object.\n const globalObject = request.client.globalObject\n\n // 6. If globalObject is a ServiceWorkerGlobalScope object, then set\n // request’s service-workers mode to \"none\".\n if (globalObject?.constructor?.name === 'ServiceWorkerGlobalScope') {\n request.serviceWorkers = 'none'\n }\n\n // 7. Let responseObject be null.\n let responseObject = null\n\n // 8. Let relevantRealm be this’s relevant Realm.\n const relevantRealm = null\n\n // 9. Let locallyAborted be false.\n let locallyAborted = false\n\n // 10. Let controller be null.\n let controller = null\n\n // 11. Add the following abort steps to requestObject’s signal:\n addAbortListener(\n requestObject.signal,\n () => {\n // 1. Set locallyAborted to true.\n locallyAborted = true\n\n // 2. Assert: controller is non-null.\n assert(controller != null)\n\n // 3. Abort controller with requestObject’s signal’s abort reason.\n controller.abort(requestObject.signal.reason)\n\n // 4. Abort the fetch() call with p, request, responseObject,\n // and requestObject’s signal’s abort reason.\n abortFetch(p, request, responseObject, requestObject.signal.reason)\n }\n )\n\n // 12. Let handleFetchDone given response response be to finalize and\n // report timing with response, globalObject, and \"fetch\".\n const handleFetchDone = (response) =>\n finalizeAndReportTiming(response, 'fetch')\n\n // 13. Set controller to the result of calling fetch given request,\n // with processResponseEndOfBody set to handleFetchDone, and processResponse\n // given response being these substeps:\n\n const processResponse = (response) => {\n // 1. If locallyAborted is true, terminate these substeps.\n if (locallyAborted) {\n return Promise.resolve()\n }\n\n // 2. If response’s aborted flag is set, then:\n if (response.aborted) {\n // 1. Let deserializedError be the result of deserialize a serialized\n // abort reason given controller’s serialized abort reason and\n // relevantRealm.\n\n // 2. Abort the fetch() call with p, request, responseObject, and\n // deserializedError.\n\n abortFetch(p, request, responseObject, controller.serializedAbortReason)\n return Promise.resolve()\n }\n\n // 3. If response is a network error, then reject p with a TypeError\n // and terminate these substeps.\n if (response.type === 'error') {\n p.reject(\n Object.assign(new TypeError('fetch failed'), { cause: response.error })\n )\n return Promise.resolve()\n }\n\n // 4. Set responseObject to the result of creating a Response object,\n // given response, \"immutable\", and relevantRealm.\n responseObject = new Response()\n responseObject[kState] = response\n responseObject[kRealm] = relevantRealm\n responseObject[kHeaders][kHeadersList] = response.headersList\n responseObject[kHeaders][kGuard] = 'immutable'\n responseObject[kHeaders][kRealm] = relevantRealm\n\n // 5. Resolve p with responseObject.\n p.resolve(responseObject)\n }\n\n controller = fetching({\n request,\n processResponseEndOfBody: handleFetchDone,\n processResponse,\n dispatcher: init.dispatcher ?? getGlobalDispatcher() // undici\n })\n\n // 14. Return p.\n return p.promise\n}\n\n// https://fetch.spec.whatwg.org/#finalize-and-report-timing\nfunction finalizeAndReportTiming (response, initiatorType = 'other') {\n // 1. If response is an aborted network error, then return.\n if (response.type === 'error' && response.aborted) {\n return\n }\n\n // 2. If response’s URL list is null or empty, then return.\n if (!response.urlList?.length) {\n return\n }\n\n // 3. Let originalURL be response’s URL list[0].\n const originalURL = response.urlList[0]\n\n // 4. Let timingInfo be response’s timing info.\n let timingInfo = response.timingInfo\n\n // 5. Let cacheState be response’s cache state.\n let cacheState = response.cacheState\n\n // 6. If originalURL’s scheme is not an HTTP(S) scheme, then return.\n if (!urlIsHttpHttpsScheme(originalURL)) {\n return\n }\n\n // 7. If timingInfo is null, then return.\n if (timingInfo === null) {\n return\n }\n\n // 8. If response’s timing allow passed flag is not set, then:\n if (!response.timingAllowPassed) {\n // 1. Set timingInfo to a the result of creating an opaque timing info for timingInfo.\n timingInfo = createOpaqueTimingInfo({\n startTime: timingInfo.startTime\n })\n\n // 2. Set cacheState to the empty string.\n cacheState = ''\n }\n\n // 9. Set timingInfo’s end time to the coarsened shared current time\n // given global’s relevant settings object’s cross-origin isolated\n // capability.\n // TODO: given global’s relevant settings object’s cross-origin isolated\n // capability?\n timingInfo.endTime = coarsenedSharedCurrentTime()\n\n // 10. Set response’s timing info to timingInfo.\n response.timingInfo = timingInfo\n\n // 11. Mark resource timing for timingInfo, originalURL, initiatorType,\n // global, and cacheState.\n markResourceTiming(\n timingInfo,\n originalURL,\n initiatorType,\n globalThis,\n cacheState\n )\n}\n\n// https://w3c.github.io/resource-timing/#dfn-mark-resource-timing\nfunction markResourceTiming (timingInfo, originalURL, initiatorType, globalThis, cacheState) {\n if (nodeMajor > 18 || (nodeMajor === 18 && nodeMinor >= 2)) {\n performance.markResourceTiming(timingInfo, originalURL.href, initiatorType, globalThis, cacheState)\n }\n}\n\n// https://fetch.spec.whatwg.org/#abort-fetch\nfunction abortFetch (p, request, responseObject, error) {\n // Note: AbortSignal.reason was added in node v17.2.0\n // which would give us an undefined error to reject with.\n // Remove this once node v16 is no longer supported.\n if (!error) {\n error = new DOMException('The operation was aborted.', 'AbortError')\n }\n\n // 1. Reject promise with error.\n p.reject(error)\n\n // 2. If request’s body is not null and is readable, then cancel request’s\n // body with error.\n if (request.body != null && isReadable(request.body?.stream)) {\n request.body.stream.cancel(error).catch((err) => {\n if (err.code === 'ERR_INVALID_STATE') {\n // Node bug?\n return\n }\n throw err\n })\n }\n\n // 3. If responseObject is null, then return.\n if (responseObject == null) {\n return\n }\n\n // 4. Let response be responseObject’s response.\n const response = responseObject[kState]\n\n // 5. If response’s body is not null and is readable, then error response’s\n // body with error.\n if (response.body != null && isReadable(response.body?.stream)) {\n response.body.stream.cancel(error).catch((err) => {\n if (err.code === 'ERR_INVALID_STATE') {\n // Node bug?\n return\n }\n throw err\n })\n }\n}\n\n// https://fetch.spec.whatwg.org/#fetching\nfunction fetching ({\n request,\n processRequestBodyChunkLength,\n processRequestEndOfBody,\n processResponse,\n processResponseEndOfBody,\n processResponseConsumeBody,\n useParallelQueue = false,\n dispatcher // undici\n}) {\n // 1. Let taskDestination be null.\n let taskDestination = null\n\n // 2. Let crossOriginIsolatedCapability be false.\n let crossOriginIsolatedCapability = false\n\n // 3. If request’s client is non-null, then:\n if (request.client != null) {\n // 1. Set taskDestination to request’s client’s global object.\n taskDestination = request.client.globalObject\n\n // 2. Set crossOriginIsolatedCapability to request’s client’s cross-origin\n // isolated capability.\n crossOriginIsolatedCapability =\n request.client.crossOriginIsolatedCapability\n }\n\n // 4. If useParallelQueue is true, then set taskDestination to the result of\n // starting a new parallel queue.\n // TODO\n\n // 5. Let timingInfo be a new fetch timing info whose start time and\n // post-redirect start time are the coarsened shared current time given\n // crossOriginIsolatedCapability.\n const currenTime = coarsenedSharedCurrentTime(crossOriginIsolatedCapability)\n const timingInfo = createOpaqueTimingInfo({\n startTime: currenTime\n })\n\n // 6. Let fetchParams be a new fetch params whose\n // request is request,\n // timing info is timingInfo,\n // process request body chunk length is processRequestBodyChunkLength,\n // process request end-of-body is processRequestEndOfBody,\n // process response is processResponse,\n // process response consume body is processResponseConsumeBody,\n // process response end-of-body is processResponseEndOfBody,\n // task destination is taskDestination,\n // and cross-origin isolated capability is crossOriginIsolatedCapability.\n const fetchParams = {\n controller: new Fetch(dispatcher),\n request,\n timingInfo,\n processRequestBodyChunkLength,\n processRequestEndOfBody,\n processResponse,\n processResponseConsumeBody,\n processResponseEndOfBody,\n taskDestination,\n crossOriginIsolatedCapability\n }\n\n // 7. If request’s body is a byte sequence, then set request’s body to\n // request’s body as a body.\n // NOTE: Since fetching is only called from fetch, body should already be\n // extracted.\n assert(!request.body || request.body.stream)\n\n // 8. If request’s window is \"client\", then set request’s window to request’s\n // client, if request’s client’s global object is a Window object; otherwise\n // \"no-window\".\n if (request.window === 'client') {\n // TODO: What if request.client is null?\n request.window =\n request.client?.globalObject?.constructor?.name === 'Window'\n ? request.client\n : 'no-window'\n }\n\n // 9. If request’s origin is \"client\", then set request’s origin to request’s\n // client’s origin.\n if (request.origin === 'client') {\n // TODO: What if request.client is null?\n request.origin = request.client?.origin\n }\n\n // 10. If all of the following conditions are true:\n // TODO\n\n // 11. If request’s policy container is \"client\", then:\n if (request.policyContainer === 'client') {\n // 1. If request’s client is non-null, then set request’s policy\n // container to a clone of request’s client’s policy container. [HTML]\n if (request.client != null) {\n request.policyContainer = clonePolicyContainer(\n request.client.policyContainer\n )\n } else {\n // 2. Otherwise, set request’s policy container to a new policy\n // container.\n request.policyContainer = makePolicyContainer()\n }\n }\n\n // 12. If request’s header list does not contain `Accept`, then:\n if (!request.headersList.contains('accept')) {\n // 1. Let value be `*/*`.\n const value = '*/*'\n\n // 2. A user agent should set value to the first matching statement, if\n // any, switching on request’s destination:\n // \"document\"\n // \"frame\"\n // \"iframe\"\n // `text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8`\n // \"image\"\n // `image/png,image/svg+xml,image/*;q=0.8,*/*;q=0.5`\n // \"style\"\n // `text/css,*/*;q=0.1`\n // TODO\n\n // 3. Append `Accept`/value to request’s header list.\n request.headersList.append('accept', value)\n }\n\n // 13. If request’s header list does not contain `Accept-Language`, then\n // user agents should append `Accept-Language`/an appropriate value to\n // request’s header list.\n if (!request.headersList.contains('accept-language')) {\n request.headersList.append('accept-language', '*')\n }\n\n // 14. If request’s priority is null, then use request’s initiator and\n // destination appropriately in setting request’s priority to a\n // user-agent-defined object.\n if (request.priority === null) {\n // TODO\n }\n\n // 15. If request is a subresource request, then:\n if (subresourceSet.has(request.destination)) {\n // TODO\n }\n\n // 16. Run main fetch given fetchParams.\n mainFetch(fetchParams)\n .catch(err => {\n fetchParams.controller.terminate(err)\n })\n\n // 17. Return fetchParam's controller\n return fetchParams.controller\n}\n\n// https://fetch.spec.whatwg.org/#concept-main-fetch\nasync function mainFetch (fetchParams, recursive = false) {\n // 1. Let request be fetchParams’s request.\n const request = fetchParams.request\n\n // 2. Let response be null.\n let response = null\n\n // 3. If request’s local-URLs-only flag is set and request’s current URL is\n // not local, then set response to a network error.\n if (request.localURLsOnly && !urlIsLocal(requestCurrentURL(request))) {\n response = makeNetworkError('local URLs only')\n }\n\n // 4. Run report Content Security Policy violations for request.\n // TODO\n\n // 5. Upgrade request to a potentially trustworthy URL, if appropriate.\n tryUpgradeRequestToAPotentiallyTrustworthyURL(request)\n\n // 6. If should request be blocked due to a bad port, should fetching request\n // be blocked as mixed content, or should request be blocked by Content\n // Security Policy returns blocked, then set response to a network error.\n if (requestBadPort(request) === 'blocked') {\n response = makeNetworkError('bad port')\n }\n // TODO: should fetching request be blocked as mixed content?\n // TODO: should request be blocked by Content Security Policy?\n\n // 7. If request’s referrer policy is the empty string, then set request’s\n // referrer policy to request’s policy container’s referrer policy.\n if (request.referrerPolicy === '') {\n request.referrerPolicy = request.policyContainer.referrerPolicy\n }\n\n // 8. If request’s referrer is not \"no-referrer\", then set request’s\n // referrer to the result of invoking determine request’s referrer.\n if (request.referrer !== 'no-referrer') {\n request.referrer = determineRequestsReferrer(request)\n }\n\n // 9. Set request’s current URL’s scheme to \"https\" if all of the following\n // conditions are true:\n // - request’s current URL’s scheme is \"http\"\n // - request’s current URL’s host is a domain\n // - Matching request’s current URL’s host per Known HSTS Host Domain Name\n // Matching results in either a superdomain match with an asserted\n // includeSubDomains directive or a congruent match (with or without an\n // asserted includeSubDomains directive). [HSTS]\n // TODO\n\n // 10. If recursive is false, then run the remaining steps in parallel.\n // TODO\n\n // 11. If response is null, then set response to the result of running\n // the steps corresponding to the first matching statement:\n if (response === null) {\n response = await (async () => {\n const currentURL = requestCurrentURL(request)\n\n if (\n // - request’s current URL’s origin is same origin with request’s origin,\n // and request’s response tainting is \"basic\"\n (sameOrigin(currentURL, request.url) && request.responseTainting === 'basic') ||\n // request’s current URL’s scheme is \"data\"\n (currentURL.protocol === 'data:') ||\n // - request’s mode is \"navigate\" or \"websocket\"\n (request.mode === 'navigate' || request.mode === 'websocket')\n ) {\n // 1. Set request’s response tainting to \"basic\".\n request.responseTainting = 'basic'\n\n // 2. Return the result of running scheme fetch given fetchParams.\n return await schemeFetch(fetchParams)\n }\n\n // request’s mode is \"same-origin\"\n if (request.mode === 'same-origin') {\n // 1. Return a network error.\n return makeNetworkError('request mode cannot be \"same-origin\"')\n }\n\n // request’s mode is \"no-cors\"\n if (request.mode === 'no-cors') {\n // 1. If request’s redirect mode is not \"follow\", then return a network\n // error.\n if (request.redirect !== 'follow') {\n return makeNetworkError(\n 'redirect mode cannot be \"follow\" for \"no-cors\" request'\n )\n }\n\n // 2. Set request’s response tainting to \"opaque\".\n request.responseTainting = 'opaque'\n\n // 3. Return the result of running scheme fetch given fetchParams.\n return await schemeFetch(fetchParams)\n }\n\n // request’s current URL’s scheme is not an HTTP(S) scheme\n if (!urlIsHttpHttpsScheme(requestCurrentURL(request))) {\n // Return a network error.\n return makeNetworkError('URL scheme must be a HTTP(S) scheme')\n }\n\n // - request’s use-CORS-preflight flag is set\n // - request’s unsafe-request flag is set and either request’s method is\n // not a CORS-safelisted method or CORS-unsafe request-header names with\n // request’s header list is not empty\n // 1. Set request’s response tainting to \"cors\".\n // 2. Let corsWithPreflightResponse be the result of running HTTP fetch\n // given fetchParams and true.\n // 3. If corsWithPreflightResponse is a network error, then clear cache\n // entries using request.\n // 4. Return corsWithPreflightResponse.\n // TODO\n\n // Otherwise\n // 1. Set request’s response tainting to \"cors\".\n request.responseTainting = 'cors'\n\n // 2. Return the result of running HTTP fetch given fetchParams.\n return await httpFetch(fetchParams)\n })()\n }\n\n // 12. If recursive is true, then return response.\n if (recursive) {\n return response\n }\n\n // 13. If response is not a network error and response is not a filtered\n // response, then:\n if (response.status !== 0 && !response.internalResponse) {\n // If request’s response tainting is \"cors\", then:\n if (request.responseTainting === 'cors') {\n // 1. Let headerNames be the result of extracting header list values\n // given `Access-Control-Expose-Headers` and response’s header list.\n // TODO\n // 2. If request’s credentials mode is not \"include\" and headerNames\n // contains `*`, then set response’s CORS-exposed header-name list to\n // all unique header names in response’s header list.\n // TODO\n // 3. Otherwise, if headerNames is not null or failure, then set\n // response’s CORS-exposed header-name list to headerNames.\n // TODO\n }\n\n // Set response to the following filtered response with response as its\n // internal response, depending on request’s response tainting:\n if (request.responseTainting === 'basic') {\n response = filterResponse(response, 'basic')\n } else if (request.responseTainting === 'cors') {\n response = filterResponse(response, 'cors')\n } else if (request.responseTainting === 'opaque') {\n response = filterResponse(response, 'opaque')\n } else {\n assert(false)\n }\n }\n\n // 14. Let internalResponse be response, if response is a network error,\n // and response’s internal response otherwise.\n let internalResponse =\n response.status === 0 ? response : response.internalResponse\n\n // 15. If internalResponse’s URL list is empty, then set it to a clone of\n // request’s URL list.\n if (internalResponse.urlList.length === 0) {\n internalResponse.urlList.push(...request.urlList)\n }\n\n // 16. If request’s timing allow failed flag is unset, then set\n // internalResponse’s timing allow passed flag.\n if (!request.timingAllowFailed) {\n response.timingAllowPassed = true\n }\n\n // 17. If response is not a network error and any of the following returns\n // blocked\n // - should internalResponse to request be blocked as mixed content\n // - should internalResponse to request be blocked by Content Security Policy\n // - should internalResponse to request be blocked due to its MIME type\n // - should internalResponse to request be blocked due to nosniff\n // TODO\n\n // 18. If response’s type is \"opaque\", internalResponse’s status is 206,\n // internalResponse’s range-requested flag is set, and request’s header\n // list does not contain `Range`, then set response and internalResponse\n // to a network error.\n if (\n response.type === 'opaque' &&\n internalResponse.status === 206 &&\n internalResponse.rangeRequested &&\n !request.headers.contains('range')\n ) {\n response = internalResponse = makeNetworkError()\n }\n\n // 19. If response is not a network error and either request’s method is\n // `HEAD` or `CONNECT`, or internalResponse’s status is a null body status,\n // set internalResponse’s body to null and disregard any enqueuing toward\n // it (if any).\n if (\n response.status !== 0 &&\n (request.method === 'HEAD' ||\n request.method === 'CONNECT' ||\n nullBodyStatus.includes(internalResponse.status))\n ) {\n internalResponse.body = null\n fetchParams.controller.dump = true\n }\n\n // 20. If request’s integrity metadata is not the empty string, then:\n if (request.integrity) {\n // 1. Let processBodyError be this step: run fetch finale given fetchParams\n // and a network error.\n const processBodyError = (reason) =>\n fetchFinale(fetchParams, makeNetworkError(reason))\n\n // 2. If request’s response tainting is \"opaque\", or response’s body is null,\n // then run processBodyError and abort these steps.\n if (request.responseTainting === 'opaque' || response.body == null) {\n processBodyError(response.error)\n return\n }\n\n // 3. Let processBody given bytes be these steps:\n const processBody = (bytes) => {\n // 1. If bytes do not match request’s integrity metadata,\n // then run processBodyError and abort these steps. [SRI]\n if (!bytesMatch(bytes, request.integrity)) {\n processBodyError('integrity mismatch')\n return\n }\n\n // 2. Set response’s body to bytes as a body.\n response.body = safelyExtractBody(bytes)[0]\n\n // 3. Run fetch finale given fetchParams and response.\n fetchFinale(fetchParams, response)\n }\n\n // 4. Fully read response’s body given processBody and processBodyError.\n await fullyReadBody(response.body, processBody, processBodyError)\n } else {\n // 21. Otherwise, run fetch finale given fetchParams and response.\n fetchFinale(fetchParams, response)\n }\n}\n\n// https://fetch.spec.whatwg.org/#concept-scheme-fetch\n// given a fetch params fetchParams\nfunction schemeFetch (fetchParams) {\n // Note: since the connection is destroyed on redirect, which sets fetchParams to a\n // cancelled state, we do not want this condition to trigger *unless* there have been\n // no redirects. See https://github.com/nodejs/undici/issues/1776\n // 1. If fetchParams is canceled, then return the appropriate network error for fetchParams.\n if (isCancelled(fetchParams) && fetchParams.request.redirectCount === 0) {\n return Promise.resolve(makeAppropriateNetworkError(fetchParams))\n }\n\n // 2. Let request be fetchParams’s request.\n const { request } = fetchParams\n\n const { protocol: scheme } = requestCurrentURL(request)\n\n // 3. Switch on request’s current URL’s scheme and run the associated steps:\n switch (scheme) {\n case 'about:': {\n // If request’s current URL’s path is the string \"blank\", then return a new response\n // whose status message is `OK`, header list is « (`Content-Type`, `text/html;charset=utf-8`) »,\n // and body is the empty byte sequence as a body.\n\n // Otherwise, return a network error.\n return Promise.resolve(makeNetworkError('about scheme is not supported'))\n }\n case 'blob:': {\n if (!resolveObjectURL) {\n resolveObjectURL = require('buffer').resolveObjectURL\n }\n\n // 1. Let blobURLEntry be request’s current URL’s blob URL entry.\n const blobURLEntry = requestCurrentURL(request)\n\n // https://github.com/web-platform-tests/wpt/blob/7b0ebaccc62b566a1965396e5be7bb2bc06f841f/FileAPI/url/resources/fetch-tests.js#L52-L56\n // Buffer.resolveObjectURL does not ignore URL queries.\n if (blobURLEntry.search.length !== 0) {\n return Promise.resolve(makeNetworkError('NetworkError when attempting to fetch resource.'))\n }\n\n const blobURLEntryObject = resolveObjectURL(blobURLEntry.toString())\n\n // 2. If request’s method is not `GET`, blobURLEntry is null, or blobURLEntry’s\n // object is not a Blob object, then return a network error.\n if (request.method !== 'GET' || !isBlobLike(blobURLEntryObject)) {\n return Promise.resolve(makeNetworkError('invalid method'))\n }\n\n // 3. Let bodyWithType be the result of safely extracting blobURLEntry’s object.\n const bodyWithType = safelyExtractBody(blobURLEntryObject)\n\n // 4. Let body be bodyWithType’s body.\n const body = bodyWithType[0]\n\n // 5. Let length be body’s length, serialized and isomorphic encoded.\n const length = isomorphicEncode(`${body.length}`)\n\n // 6. Let type be bodyWithType’s type if it is non-null; otherwise the empty byte sequence.\n const type = bodyWithType[1] ?? ''\n\n // 7. Return a new response whose status message is `OK`, header list is\n // « (`Content-Length`, length), (`Content-Type`, type) », and body is body.\n const response = makeResponse({\n statusText: 'OK',\n headersList: [\n ['content-length', { name: 'Content-Length', value: length }],\n ['content-type', { name: 'Content-Type', value: type }]\n ]\n })\n\n response.body = body\n\n return Promise.resolve(response)\n }\n case 'data:': {\n // 1. Let dataURLStruct be the result of running the\n // data: URL processor on request’s current URL.\n const currentURL = requestCurrentURL(request)\n const dataURLStruct = dataURLProcessor(currentURL)\n\n // 2. If dataURLStruct is failure, then return a\n // network error.\n if (dataURLStruct === 'failure') {\n return Promise.resolve(makeNetworkError('failed to fetch the data URL'))\n }\n\n // 3. Let mimeType be dataURLStruct’s MIME type, serialized.\n const mimeType = serializeAMimeType(dataURLStruct.mimeType)\n\n // 4. Return a response whose status message is `OK`,\n // header list is « (`Content-Type`, mimeType) »,\n // and body is dataURLStruct’s body as a body.\n return Promise.resolve(makeResponse({\n statusText: 'OK',\n headersList: [\n ['content-type', { name: 'Content-Type', value: mimeType }]\n ],\n body: safelyExtractBody(dataURLStruct.body)[0]\n }))\n }\n case 'file:': {\n // For now, unfortunate as it is, file URLs are left as an exercise for the reader.\n // When in doubt, return a network error.\n return Promise.resolve(makeNetworkError('not implemented... yet...'))\n }\n case 'http:':\n case 'https:': {\n // Return the result of running HTTP fetch given fetchParams.\n\n return httpFetch(fetchParams)\n .catch((err) => makeNetworkError(err))\n }\n default: {\n return Promise.resolve(makeNetworkError('unknown scheme'))\n }\n }\n}\n\n// https://fetch.spec.whatwg.org/#finalize-response\nfunction finalizeResponse (fetchParams, response) {\n // 1. Set fetchParams’s request’s done flag.\n fetchParams.request.done = true\n\n // 2, If fetchParams’s process response done is not null, then queue a fetch\n // task to run fetchParams’s process response done given response, with\n // fetchParams’s task destination.\n if (fetchParams.processResponseDone != null) {\n queueMicrotask(() => fetchParams.processResponseDone(response))\n }\n}\n\n// https://fetch.spec.whatwg.org/#fetch-finale\nfunction fetchFinale (fetchParams, response) {\n // 1. If response is a network error, then:\n if (response.type === 'error') {\n // 1. Set response’s URL list to « fetchParams’s request’s URL list[0] ».\n response.urlList = [fetchParams.request.urlList[0]]\n\n // 2. Set response’s timing info to the result of creating an opaque timing\n // info for fetchParams’s timing info.\n response.timingInfo = createOpaqueTimingInfo({\n startTime: fetchParams.timingInfo.startTime\n })\n }\n\n // 2. Let processResponseEndOfBody be the following steps:\n const processResponseEndOfBody = () => {\n // 1. Set fetchParams’s request’s done flag.\n fetchParams.request.done = true\n\n // If fetchParams’s process response end-of-body is not null,\n // then queue a fetch task to run fetchParams’s process response\n // end-of-body given response with fetchParams’s task destination.\n if (fetchParams.processResponseEndOfBody != null) {\n queueMicrotask(() => fetchParams.processResponseEndOfBody(response))\n }\n }\n\n // 3. If fetchParams’s process response is non-null, then queue a fetch task\n // to run fetchParams’s process response given response, with fetchParams’s\n // task destination.\n if (fetchParams.processResponse != null) {\n queueMicrotask(() => fetchParams.processResponse(response))\n }\n\n // 4. If response’s body is null, then run processResponseEndOfBody.\n if (response.body == null) {\n processResponseEndOfBody()\n } else {\n // 5. Otherwise:\n\n // 1. Let transformStream be a new a TransformStream.\n\n // 2. Let identityTransformAlgorithm be an algorithm which, given chunk,\n // enqueues chunk in transformStream.\n const identityTransformAlgorithm = (chunk, controller) => {\n controller.enqueue(chunk)\n }\n\n // 3. Set up transformStream with transformAlgorithm set to identityTransformAlgorithm\n // and flushAlgorithm set to processResponseEndOfBody.\n const transformStream = new TransformStream({\n start () {},\n transform: identityTransformAlgorithm,\n flush: processResponseEndOfBody\n }, {\n size () {\n return 1\n }\n }, {\n size () {\n return 1\n }\n })\n\n // 4. Set response’s body to the result of piping response’s body through transformStream.\n response.body = { stream: response.body.stream.pipeThrough(transformStream) }\n }\n\n // 6. If fetchParams’s process response consume body is non-null, then:\n if (fetchParams.processResponseConsumeBody != null) {\n // 1. Let processBody given nullOrBytes be this step: run fetchParams’s\n // process response consume body given response and nullOrBytes.\n const processBody = (nullOrBytes) => fetchParams.processResponseConsumeBody(response, nullOrBytes)\n\n // 2. Let processBodyError be this step: run fetchParams’s process\n // response consume body given response and failure.\n const processBodyError = (failure) => fetchParams.processResponseConsumeBody(response, failure)\n\n // 3. If response’s body is null, then queue a fetch task to run processBody\n // given null, with fetchParams’s task destination.\n if (response.body == null) {\n queueMicrotask(() => processBody(null))\n } else {\n // 4. Otherwise, fully read response’s body given processBody, processBodyError,\n // and fetchParams’s task destination.\n return fullyReadBody(response.body, processBody, processBodyError)\n }\n return Promise.resolve()\n }\n}\n\n// https://fetch.spec.whatwg.org/#http-fetch\nasync function httpFetch (fetchParams) {\n // 1. Let request be fetchParams’s request.\n const request = fetchParams.request\n\n // 2. Let response be null.\n let response = null\n\n // 3. Let actualResponse be null.\n let actualResponse = null\n\n // 4. Let timingInfo be fetchParams’s timing info.\n const timingInfo = fetchParams.timingInfo\n\n // 5. If request’s service-workers mode is \"all\", then:\n if (request.serviceWorkers === 'all') {\n // TODO\n }\n\n // 6. If response is null, then:\n if (response === null) {\n // 1. If makeCORSPreflight is true and one of these conditions is true:\n // TODO\n\n // 2. If request’s redirect mode is \"follow\", then set request’s\n // service-workers mode to \"none\".\n if (request.redirect === 'follow') {\n request.serviceWorkers = 'none'\n }\n\n // 3. Set response and actualResponse to the result of running\n // HTTP-network-or-cache fetch given fetchParams.\n actualResponse = response = await httpNetworkOrCacheFetch(fetchParams)\n\n // 4. If request’s response tainting is \"cors\" and a CORS check\n // for request and response returns failure, then return a network error.\n if (\n request.responseTainting === 'cors' &&\n corsCheck(request, response) === 'failure'\n ) {\n return makeNetworkError('cors failure')\n }\n\n // 5. If the TAO check for request and response returns failure, then set\n // request’s timing allow failed flag.\n if (TAOCheck(request, response) === 'failure') {\n request.timingAllowFailed = true\n }\n }\n\n // 7. If either request’s response tainting or response’s type\n // is \"opaque\", and the cross-origin resource policy check with\n // request’s origin, request’s client, request’s destination,\n // and actualResponse returns blocked, then return a network error.\n if (\n (request.responseTainting === 'opaque' || response.type === 'opaque') &&\n crossOriginResourcePolicyCheck(\n request.origin,\n request.client,\n request.destination,\n actualResponse\n ) === 'blocked'\n ) {\n return makeNetworkError('blocked')\n }\n\n // 8. If actualResponse’s status is a redirect status, then:\n if (redirectStatusSet.has(actualResponse.status)) {\n // 1. If actualResponse’s status is not 303, request’s body is not null,\n // and the connection uses HTTP/2, then user agents may, and are even\n // encouraged to, transmit an RST_STREAM frame.\n // See, https://github.com/whatwg/fetch/issues/1288\n if (request.redirect !== 'manual') {\n fetchParams.controller.connection.destroy()\n }\n\n // 2. Switch on request’s redirect mode:\n if (request.redirect === 'error') {\n // Set response to a network error.\n response = makeNetworkError('unexpected redirect')\n } else if (request.redirect === 'manual') {\n // Set response to an opaque-redirect filtered response whose internal\n // response is actualResponse.\n // NOTE(spec): On the web this would return an `opaqueredirect` response,\n // but that doesn't make sense server side.\n // See https://github.com/nodejs/undici/issues/1193.\n response = actualResponse\n } else if (request.redirect === 'follow') {\n // Set response to the result of running HTTP-redirect fetch given\n // fetchParams and response.\n response = await httpRedirectFetch(fetchParams, response)\n } else {\n assert(false)\n }\n }\n\n // 9. Set response’s timing info to timingInfo.\n response.timingInfo = timingInfo\n\n // 10. Return response.\n return response\n}\n\n// https://fetch.spec.whatwg.org/#http-redirect-fetch\nfunction httpRedirectFetch (fetchParams, response) {\n // 1. Let request be fetchParams’s request.\n const request = fetchParams.request\n\n // 2. Let actualResponse be response, if response is not a filtered response,\n // and response’s internal response otherwise.\n const actualResponse = response.internalResponse\n ? response.internalResponse\n : response\n\n // 3. Let locationURL be actualResponse’s location URL given request’s current\n // URL’s fragment.\n let locationURL\n\n try {\n locationURL = responseLocationURL(\n actualResponse,\n requestCurrentURL(request).hash\n )\n\n // 4. If locationURL is null, then return response.\n if (locationURL == null) {\n return response\n }\n } catch (err) {\n // 5. If locationURL is failure, then return a network error.\n return Promise.resolve(makeNetworkError(err))\n }\n\n // 6. If locationURL’s scheme is not an HTTP(S) scheme, then return a network\n // error.\n if (!urlIsHttpHttpsScheme(locationURL)) {\n return Promise.resolve(makeNetworkError('URL scheme must be a HTTP(S) scheme'))\n }\n\n // 7. If request’s redirect count is 20, then return a network error.\n if (request.redirectCount === 20) {\n return Promise.resolve(makeNetworkError('redirect count exceeded'))\n }\n\n // 8. Increase request’s redirect count by 1.\n request.redirectCount += 1\n\n // 9. If request’s mode is \"cors\", locationURL includes credentials, and\n // request’s origin is not same origin with locationURL’s origin, then return\n // a network error.\n if (\n request.mode === 'cors' &&\n (locationURL.username || locationURL.password) &&\n !sameOrigin(request, locationURL)\n ) {\n return Promise.resolve(makeNetworkError('cross origin not allowed for request mode \"cors\"'))\n }\n\n // 10. If request’s response tainting is \"cors\" and locationURL includes\n // credentials, then return a network error.\n if (\n request.responseTainting === 'cors' &&\n (locationURL.username || locationURL.password)\n ) {\n return Promise.resolve(makeNetworkError(\n 'URL cannot contain credentials for request mode \"cors\"'\n ))\n }\n\n // 11. If actualResponse’s status is not 303, request’s body is non-null,\n // and request’s body’s source is null, then return a network error.\n if (\n actualResponse.status !== 303 &&\n request.body != null &&\n request.body.source == null\n ) {\n return Promise.resolve(makeNetworkError())\n }\n\n // 12. If one of the following is true\n // - actualResponse’s status is 301 or 302 and request’s method is `POST`\n // - actualResponse’s status is 303 and request’s method is not `GET` or `HEAD`\n if (\n ([301, 302].includes(actualResponse.status) && request.method === 'POST') ||\n (actualResponse.status === 303 &&\n !GET_OR_HEAD.includes(request.method))\n ) {\n // then:\n // 1. Set request’s method to `GET` and request’s body to null.\n request.method = 'GET'\n request.body = null\n\n // 2. For each headerName of request-body-header name, delete headerName from\n // request’s header list.\n for (const headerName of requestBodyHeader) {\n request.headersList.delete(headerName)\n }\n }\n\n // 13. If request’s current URL’s origin is not same origin with locationURL’s\n // origin, then for each headerName of CORS non-wildcard request-header name,\n // delete headerName from request’s header list.\n if (!sameOrigin(requestCurrentURL(request), locationURL)) {\n // https://fetch.spec.whatwg.org/#cors-non-wildcard-request-header-name\n request.headersList.delete('authorization')\n\n // https://fetch.spec.whatwg.org/#authentication-entries\n request.headersList.delete('proxy-authorization', true)\n\n // \"Cookie\" and \"Host\" are forbidden request-headers, which undici doesn't implement.\n request.headersList.delete('cookie')\n request.headersList.delete('host')\n }\n\n // 14. If request’s body is non-null, then set request’s body to the first return\n // value of safely extracting request’s body’s source.\n if (request.body != null) {\n assert(request.body.source != null)\n request.body = safelyExtractBody(request.body.source)[0]\n }\n\n // 15. Let timingInfo be fetchParams’s timing info.\n const timingInfo = fetchParams.timingInfo\n\n // 16. Set timingInfo’s redirect end time and post-redirect start time to the\n // coarsened shared current time given fetchParams’s cross-origin isolated\n // capability.\n timingInfo.redirectEndTime = timingInfo.postRedirectStartTime =\n coarsenedSharedCurrentTime(fetchParams.crossOriginIsolatedCapability)\n\n // 17. If timingInfo’s redirect start time is 0, then set timingInfo’s\n // redirect start time to timingInfo’s start time.\n if (timingInfo.redirectStartTime === 0) {\n timingInfo.redirectStartTime = timingInfo.startTime\n }\n\n // 18. Append locationURL to request’s URL list.\n request.urlList.push(locationURL)\n\n // 19. Invoke set request’s referrer policy on redirect on request and\n // actualResponse.\n setRequestReferrerPolicyOnRedirect(request, actualResponse)\n\n // 20. Return the result of running main fetch given fetchParams and true.\n return mainFetch(fetchParams, true)\n}\n\n// https://fetch.spec.whatwg.org/#http-network-or-cache-fetch\nasync function httpNetworkOrCacheFetch (\n fetchParams,\n isAuthenticationFetch = false,\n isNewConnectionFetch = false\n) {\n // 1. Let request be fetchParams’s request.\n const request = fetchParams.request\n\n // 2. Let httpFetchParams be null.\n let httpFetchParams = null\n\n // 3. Let httpRequest be null.\n let httpRequest = null\n\n // 4. Let response be null.\n let response = null\n\n // 5. Let storedResponse be null.\n // TODO: cache\n\n // 6. Let httpCache be null.\n const httpCache = null\n\n // 7. Let the revalidatingFlag be unset.\n const revalidatingFlag = false\n\n // 8. Run these steps, but abort when the ongoing fetch is terminated:\n\n // 1. If request’s window is \"no-window\" and request’s redirect mode is\n // \"error\", then set httpFetchParams to fetchParams and httpRequest to\n // request.\n if (request.window === 'no-window' && request.redirect === 'error') {\n httpFetchParams = fetchParams\n httpRequest = request\n } else {\n // Otherwise:\n\n // 1. Set httpRequest to a clone of request.\n httpRequest = makeRequest(request)\n\n // 2. Set httpFetchParams to a copy of fetchParams.\n httpFetchParams = { ...fetchParams }\n\n // 3. Set httpFetchParams’s request to httpRequest.\n httpFetchParams.request = httpRequest\n }\n\n // 3. Let includeCredentials be true if one of\n const includeCredentials =\n request.credentials === 'include' ||\n (request.credentials === 'same-origin' &&\n request.responseTainting === 'basic')\n\n // 4. Let contentLength be httpRequest’s body’s length, if httpRequest’s\n // body is non-null; otherwise null.\n const contentLength = httpRequest.body ? httpRequest.body.length : null\n\n // 5. Let contentLengthHeaderValue be null.\n let contentLengthHeaderValue = null\n\n // 6. If httpRequest’s body is null and httpRequest’s method is `POST` or\n // `PUT`, then set contentLengthHeaderValue to `0`.\n if (\n httpRequest.body == null &&\n ['POST', 'PUT'].includes(httpRequest.method)\n ) {\n contentLengthHeaderValue = '0'\n }\n\n // 7. If contentLength is non-null, then set contentLengthHeaderValue to\n // contentLength, serialized and isomorphic encoded.\n if (contentLength != null) {\n contentLengthHeaderValue = isomorphicEncode(`${contentLength}`)\n }\n\n // 8. If contentLengthHeaderValue is non-null, then append\n // `Content-Length`/contentLengthHeaderValue to httpRequest’s header\n // list.\n if (contentLengthHeaderValue != null) {\n httpRequest.headersList.append('content-length', contentLengthHeaderValue)\n }\n\n // 9. If contentLengthHeaderValue is non-null, then append (`Content-Length`,\n // contentLengthHeaderValue) to httpRequest’s header list.\n\n // 10. If contentLength is non-null and httpRequest’s keepalive is true,\n // then:\n if (contentLength != null && httpRequest.keepalive) {\n // NOTE: keepalive is a noop outside of browser context.\n }\n\n // 11. If httpRequest’s referrer is a URL, then append\n // `Referer`/httpRequest’s referrer, serialized and isomorphic encoded,\n // to httpRequest’s header list.\n if (httpRequest.referrer instanceof URL) {\n httpRequest.headersList.append('referer', isomorphicEncode(httpRequest.referrer.href))\n }\n\n // 12. Append a request `Origin` header for httpRequest.\n appendRequestOriginHeader(httpRequest)\n\n // 13. Append the Fetch metadata headers for httpRequest. [FETCH-METADATA]\n appendFetchMetadata(httpRequest)\n\n // 14. If httpRequest’s header list does not contain `User-Agent`, then\n // user agents should append `User-Agent`/default `User-Agent` value to\n // httpRequest’s header list.\n if (!httpRequest.headersList.contains('user-agent')) {\n httpRequest.headersList.append('user-agent', typeof esbuildDetection === 'undefined' ? 'undici' : 'node')\n }\n\n // 15. If httpRequest’s cache mode is \"default\" and httpRequest’s header\n // list contains `If-Modified-Since`, `If-None-Match`,\n // `If-Unmodified-Since`, `If-Match`, or `If-Range`, then set\n // httpRequest’s cache mode to \"no-store\".\n if (\n httpRequest.cache === 'default' &&\n (httpRequest.headersList.contains('if-modified-since') ||\n httpRequest.headersList.contains('if-none-match') ||\n httpRequest.headersList.contains('if-unmodified-since') ||\n httpRequest.headersList.contains('if-match') ||\n httpRequest.headersList.contains('if-range'))\n ) {\n httpRequest.cache = 'no-store'\n }\n\n // 16. If httpRequest’s cache mode is \"no-cache\", httpRequest’s prevent\n // no-cache cache-control header modification flag is unset, and\n // httpRequest’s header list does not contain `Cache-Control`, then append\n // `Cache-Control`/`max-age=0` to httpRequest’s header list.\n if (\n httpRequest.cache === 'no-cache' &&\n !httpRequest.preventNoCacheCacheControlHeaderModification &&\n !httpRequest.headersList.contains('cache-control')\n ) {\n httpRequest.headersList.append('cache-control', 'max-age=0')\n }\n\n // 17. If httpRequest’s cache mode is \"no-store\" or \"reload\", then:\n if (httpRequest.cache === 'no-store' || httpRequest.cache === 'reload') {\n // 1. If httpRequest’s header list does not contain `Pragma`, then append\n // `Pragma`/`no-cache` to httpRequest’s header list.\n if (!httpRequest.headersList.contains('pragma')) {\n httpRequest.headersList.append('pragma', 'no-cache')\n }\n\n // 2. If httpRequest’s header list does not contain `Cache-Control`,\n // then append `Cache-Control`/`no-cache` to httpRequest’s header list.\n if (!httpRequest.headersList.contains('cache-control')) {\n httpRequest.headersList.append('cache-control', 'no-cache')\n }\n }\n\n // 18. If httpRequest’s header list contains `Range`, then append\n // `Accept-Encoding`/`identity` to httpRequest’s header list.\n if (httpRequest.headersList.contains('range')) {\n httpRequest.headersList.append('accept-encoding', 'identity')\n }\n\n // 19. Modify httpRequest’s header list per HTTP. Do not append a given\n // header if httpRequest’s header list contains that header’s name.\n // TODO: https://github.com/whatwg/fetch/issues/1285#issuecomment-896560129\n if (!httpRequest.headersList.contains('accept-encoding')) {\n if (urlHasHttpsScheme(requestCurrentURL(httpRequest))) {\n httpRequest.headersList.append('accept-encoding', 'br, gzip, deflate')\n } else {\n httpRequest.headersList.append('accept-encoding', 'gzip, deflate')\n }\n }\n\n httpRequest.headersList.delete('host')\n\n // 20. If includeCredentials is true, then:\n if (includeCredentials) {\n // 1. If the user agent is not configured to block cookies for httpRequest\n // (see section 7 of [COOKIES]), then:\n // TODO: credentials\n // 2. If httpRequest’s header list does not contain `Authorization`, then:\n // TODO: credentials\n }\n\n // 21. If there’s a proxy-authentication entry, use it as appropriate.\n // TODO: proxy-authentication\n\n // 22. Set httpCache to the result of determining the HTTP cache\n // partition, given httpRequest.\n // TODO: cache\n\n // 23. If httpCache is null, then set httpRequest’s cache mode to\n // \"no-store\".\n if (httpCache == null) {\n httpRequest.cache = 'no-store'\n }\n\n // 24. If httpRequest’s cache mode is neither \"no-store\" nor \"reload\",\n // then:\n if (httpRequest.mode !== 'no-store' && httpRequest.mode !== 'reload') {\n // TODO: cache\n }\n\n // 9. If aborted, then return the appropriate network error for fetchParams.\n // TODO\n\n // 10. If response is null, then:\n if (response == null) {\n // 1. If httpRequest’s cache mode is \"only-if-cached\", then return a\n // network error.\n if (httpRequest.mode === 'only-if-cached') {\n return makeNetworkError('only if cached')\n }\n\n // 2. Let forwardResponse be the result of running HTTP-network fetch\n // given httpFetchParams, includeCredentials, and isNewConnectionFetch.\n const forwardResponse = await httpNetworkFetch(\n httpFetchParams,\n includeCredentials,\n isNewConnectionFetch\n )\n\n // 3. If httpRequest’s method is unsafe and forwardResponse’s status is\n // in the range 200 to 399, inclusive, invalidate appropriate stored\n // responses in httpCache, as per the \"Invalidation\" chapter of HTTP\n // Caching, and set storedResponse to null. [HTTP-CACHING]\n if (\n !safeMethodsSet.has(httpRequest.method) &&\n forwardResponse.status >= 200 &&\n forwardResponse.status <= 399\n ) {\n // TODO: cache\n }\n\n // 4. If the revalidatingFlag is set and forwardResponse’s status is 304,\n // then:\n if (revalidatingFlag && forwardResponse.status === 304) {\n // TODO: cache\n }\n\n // 5. If response is null, then:\n if (response == null) {\n // 1. Set response to forwardResponse.\n response = forwardResponse\n\n // 2. Store httpRequest and forwardResponse in httpCache, as per the\n // \"Storing Responses in Caches\" chapter of HTTP Caching. [HTTP-CACHING]\n // TODO: cache\n }\n }\n\n // 11. Set response’s URL list to a clone of httpRequest’s URL list.\n response.urlList = [...httpRequest.urlList]\n\n // 12. If httpRequest’s header list contains `Range`, then set response’s\n // range-requested flag.\n if (httpRequest.headersList.contains('range')) {\n response.rangeRequested = true\n }\n\n // 13. Set response’s request-includes-credentials to includeCredentials.\n response.requestIncludesCredentials = includeCredentials\n\n // 14. If response’s status is 401, httpRequest’s response tainting is not\n // \"cors\", includeCredentials is true, and request’s window is an environment\n // settings object, then:\n // TODO\n\n // 15. If response’s status is 407, then:\n if (response.status === 407) {\n // 1. If request’s window is \"no-window\", then return a network error.\n if (request.window === 'no-window') {\n return makeNetworkError()\n }\n\n // 2. ???\n\n // 3. If fetchParams is canceled, then return the appropriate network error for fetchParams.\n if (isCancelled(fetchParams)) {\n return makeAppropriateNetworkError(fetchParams)\n }\n\n // 4. Prompt the end user as appropriate in request’s window and store\n // the result as a proxy-authentication entry. [HTTP-AUTH]\n // TODO: Invoke some kind of callback?\n\n // 5. Set response to the result of running HTTP-network-or-cache fetch given\n // fetchParams.\n // TODO\n return makeNetworkError('proxy authentication required')\n }\n\n // 16. If all of the following are true\n if (\n // response’s status is 421\n response.status === 421 &&\n // isNewConnectionFetch is false\n !isNewConnectionFetch &&\n // request’s body is null, or request’s body is non-null and request’s body’s source is non-null\n (request.body == null || request.body.source != null)\n ) {\n // then:\n\n // 1. If fetchParams is canceled, then return the appropriate network error for fetchParams.\n if (isCancelled(fetchParams)) {\n return makeAppropriateNetworkError(fetchParams)\n }\n\n // 2. Set response to the result of running HTTP-network-or-cache\n // fetch given fetchParams, isAuthenticationFetch, and true.\n\n // TODO (spec): The spec doesn't specify this but we need to cancel\n // the active response before we can start a new one.\n // https://github.com/whatwg/fetch/issues/1293\n fetchParams.controller.connection.destroy()\n\n response = await httpNetworkOrCacheFetch(\n fetchParams,\n isAuthenticationFetch,\n true\n )\n }\n\n // 17. If isAuthenticationFetch is true, then create an authentication entry\n if (isAuthenticationFetch) {\n // TODO\n }\n\n // 18. Return response.\n return response\n}\n\n// https://fetch.spec.whatwg.org/#http-network-fetch\nasync function httpNetworkFetch (\n fetchParams,\n includeCredentials = false,\n forceNewConnection = false\n) {\n assert(!fetchParams.controller.connection || fetchParams.controller.connection.destroyed)\n\n fetchParams.controller.connection = {\n abort: null,\n destroyed: false,\n destroy (err) {\n if (!this.destroyed) {\n this.destroyed = true\n this.abort?.(err ?? new DOMException('The operation was aborted.', 'AbortError'))\n }\n }\n }\n\n // 1. Let request be fetchParams’s request.\n const request = fetchParams.request\n\n // 2. Let response be null.\n let response = null\n\n // 3. Let timingInfo be fetchParams’s timing info.\n const timingInfo = fetchParams.timingInfo\n\n // 4. Let httpCache be the result of determining the HTTP cache partition,\n // given request.\n // TODO: cache\n const httpCache = null\n\n // 5. If httpCache is null, then set request’s cache mode to \"no-store\".\n if (httpCache == null) {\n request.cache = 'no-store'\n }\n\n // 6. Let networkPartitionKey be the result of determining the network\n // partition key given request.\n // TODO\n\n // 7. Let newConnection be \"yes\" if forceNewConnection is true; otherwise\n // \"no\".\n const newConnection = forceNewConnection ? 'yes' : 'no' // eslint-disable-line no-unused-vars\n\n // 8. Switch on request’s mode:\n if (request.mode === 'websocket') {\n // Let connection be the result of obtaining a WebSocket connection,\n // given request’s current URL.\n // TODO\n } else {\n // Let connection be the result of obtaining a connection, given\n // networkPartitionKey, request’s current URL’s origin,\n // includeCredentials, and forceNewConnection.\n // TODO\n }\n\n // 9. Run these steps, but abort when the ongoing fetch is terminated:\n\n // 1. If connection is failure, then return a network error.\n\n // 2. Set timingInfo’s final connection timing info to the result of\n // calling clamp and coarsen connection timing info with connection’s\n // timing info, timingInfo’s post-redirect start time, and fetchParams’s\n // cross-origin isolated capability.\n\n // 3. If connection is not an HTTP/2 connection, request’s body is non-null,\n // and request’s body’s source is null, then append (`Transfer-Encoding`,\n // `chunked`) to request’s header list.\n\n // 4. Set timingInfo’s final network-request start time to the coarsened\n // shared current time given fetchParams’s cross-origin isolated\n // capability.\n\n // 5. Set response to the result of making an HTTP request over connection\n // using request with the following caveats:\n\n // - Follow the relevant requirements from HTTP. [HTTP] [HTTP-SEMANTICS]\n // [HTTP-COND] [HTTP-CACHING] [HTTP-AUTH]\n\n // - If request’s body is non-null, and request’s body’s source is null,\n // then the user agent may have a buffer of up to 64 kibibytes and store\n // a part of request’s body in that buffer. If the user agent reads from\n // request’s body beyond that buffer’s size and the user agent needs to\n // resend request, then instead return a network error.\n\n // - Set timingInfo’s final network-response start time to the coarsened\n // shared current time given fetchParams’s cross-origin isolated capability,\n // immediately after the user agent’s HTTP parser receives the first byte\n // of the response (e.g., frame header bytes for HTTP/2 or response status\n // line for HTTP/1.x).\n\n // - Wait until all the headers are transmitted.\n\n // - Any responses whose status is in the range 100 to 199, inclusive,\n // and is not 101, are to be ignored, except for the purposes of setting\n // timingInfo’s final network-response start time above.\n\n // - If request’s header list contains `Transfer-Encoding`/`chunked` and\n // response is transferred via HTTP/1.0 or older, then return a network\n // error.\n\n // - If the HTTP request results in a TLS client certificate dialog, then:\n\n // 1. If request’s window is an environment settings object, make the\n // dialog available in request’s window.\n\n // 2. Otherwise, return a network error.\n\n // To transmit request’s body body, run these steps:\n let requestBody = null\n // 1. If body is null and fetchParams’s process request end-of-body is\n // non-null, then queue a fetch task given fetchParams’s process request\n // end-of-body and fetchParams’s task destination.\n if (request.body == null && fetchParams.processRequestEndOfBody) {\n queueMicrotask(() => fetchParams.processRequestEndOfBody())\n } else if (request.body != null) {\n // 2. Otherwise, if body is non-null:\n\n // 1. Let processBodyChunk given bytes be these steps:\n const processBodyChunk = async function * (bytes) {\n // 1. If the ongoing fetch is terminated, then abort these steps.\n if (isCancelled(fetchParams)) {\n return\n }\n\n // 2. Run this step in parallel: transmit bytes.\n yield bytes\n\n // 3. If fetchParams’s process request body is non-null, then run\n // fetchParams’s process request body given bytes’s length.\n fetchParams.processRequestBodyChunkLength?.(bytes.byteLength)\n }\n\n // 2. Let processEndOfBody be these steps:\n const processEndOfBody = () => {\n // 1. If fetchParams is canceled, then abort these steps.\n if (isCancelled(fetchParams)) {\n return\n }\n\n // 2. If fetchParams’s process request end-of-body is non-null,\n // then run fetchParams’s process request end-of-body.\n if (fetchParams.processRequestEndOfBody) {\n fetchParams.processRequestEndOfBody()\n }\n }\n\n // 3. Let processBodyError given e be these steps:\n const processBodyError = (e) => {\n // 1. If fetchParams is canceled, then abort these steps.\n if (isCancelled(fetchParams)) {\n return\n }\n\n // 2. If e is an \"AbortError\" DOMException, then abort fetchParams’s controller.\n if (e.name === 'AbortError') {\n fetchParams.controller.abort()\n } else {\n fetchParams.controller.terminate(e)\n }\n }\n\n // 4. Incrementally read request’s body given processBodyChunk, processEndOfBody,\n // processBodyError, and fetchParams’s task destination.\n requestBody = (async function * () {\n try {\n for await (const bytes of request.body.stream) {\n yield * processBodyChunk(bytes)\n }\n processEndOfBody()\n } catch (err) {\n processBodyError(err)\n }\n })()\n }\n\n try {\n // socket is only provided for websockets\n const { body, status, statusText, headersList, socket } = await dispatch({ body: requestBody })\n\n if (socket) {\n response = makeResponse({ status, statusText, headersList, socket })\n } else {\n const iterator = body[Symbol.asyncIterator]()\n fetchParams.controller.next = () => iterator.next()\n\n response = makeResponse({ status, statusText, headersList })\n }\n } catch (err) {\n // 10. If aborted, then:\n if (err.name === 'AbortError') {\n // 1. If connection uses HTTP/2, then transmit an RST_STREAM frame.\n fetchParams.controller.connection.destroy()\n\n // 2. Return the appropriate network error for fetchParams.\n return makeAppropriateNetworkError(fetchParams, err)\n }\n\n return makeNetworkError(err)\n }\n\n // 11. Let pullAlgorithm be an action that resumes the ongoing fetch\n // if it is suspended.\n const pullAlgorithm = () => {\n fetchParams.controller.resume()\n }\n\n // 12. Let cancelAlgorithm be an algorithm that aborts fetchParams’s\n // controller with reason, given reason.\n const cancelAlgorithm = (reason) => {\n fetchParams.controller.abort(reason)\n }\n\n // 13. Let highWaterMark be a non-negative, non-NaN number, chosen by\n // the user agent.\n // TODO\n\n // 14. Let sizeAlgorithm be an algorithm that accepts a chunk object\n // and returns a non-negative, non-NaN, non-infinite number, chosen by the user agent.\n // TODO\n\n // 15. Let stream be a new ReadableStream.\n // 16. Set up stream with pullAlgorithm set to pullAlgorithm,\n // cancelAlgorithm set to cancelAlgorithm, highWaterMark set to\n // highWaterMark, and sizeAlgorithm set to sizeAlgorithm.\n if (!ReadableStream) {\n ReadableStream = require('stream/web').ReadableStream\n }\n\n const stream = new ReadableStream(\n {\n async start (controller) {\n fetchParams.controller.controller = controller\n },\n async pull (controller) {\n await pullAlgorithm(controller)\n },\n async cancel (reason) {\n await cancelAlgorithm(reason)\n }\n },\n {\n highWaterMark: 0,\n size () {\n return 1\n }\n }\n )\n\n // 17. Run these steps, but abort when the ongoing fetch is terminated:\n\n // 1. Set response’s body to a new body whose stream is stream.\n response.body = { stream }\n\n // 2. If response is not a network error and request’s cache mode is\n // not \"no-store\", then update response in httpCache for request.\n // TODO\n\n // 3. If includeCredentials is true and the user agent is not configured\n // to block cookies for request (see section 7 of [COOKIES]), then run the\n // \"set-cookie-string\" parsing algorithm (see section 5.2 of [COOKIES]) on\n // the value of each header whose name is a byte-case-insensitive match for\n // `Set-Cookie` in response’s header list, if any, and request’s current URL.\n // TODO\n\n // 18. If aborted, then:\n // TODO\n\n // 19. Run these steps in parallel:\n\n // 1. Run these steps, but abort when fetchParams is canceled:\n fetchParams.controller.on('terminated', onAborted)\n fetchParams.controller.resume = async () => {\n // 1. While true\n while (true) {\n // 1-3. See onData...\n\n // 4. Set bytes to the result of handling content codings given\n // codings and bytes.\n let bytes\n let isFailure\n try {\n const { done, value } = await fetchParams.controller.next()\n\n if (isAborted(fetchParams)) {\n break\n }\n\n bytes = done ? undefined : value\n } catch (err) {\n if (fetchParams.controller.ended && !timingInfo.encodedBodySize) {\n // zlib doesn't like empty streams.\n bytes = undefined\n } else {\n bytes = err\n\n // err may be propagated from the result of calling readablestream.cancel,\n // which might not be an error. https://github.com/nodejs/undici/issues/2009\n isFailure = true\n }\n }\n\n if (bytes === undefined) {\n // 2. Otherwise, if the bytes transmission for response’s message\n // body is done normally and stream is readable, then close\n // stream, finalize response for fetchParams and response, and\n // abort these in-parallel steps.\n readableStreamClose(fetchParams.controller.controller)\n\n finalizeResponse(fetchParams, response)\n\n return\n }\n\n // 5. Increase timingInfo’s decoded body size by bytes’s length.\n timingInfo.decodedBodySize += bytes?.byteLength ?? 0\n\n // 6. If bytes is failure, then terminate fetchParams’s controller.\n if (isFailure) {\n fetchParams.controller.terminate(bytes)\n return\n }\n\n // 7. Enqueue a Uint8Array wrapping an ArrayBuffer containing bytes\n // into stream.\n fetchParams.controller.controller.enqueue(new Uint8Array(bytes))\n\n // 8. If stream is errored, then terminate the ongoing fetch.\n if (isErrored(stream)) {\n fetchParams.controller.terminate()\n return\n }\n\n // 9. If stream doesn’t need more data ask the user agent to suspend\n // the ongoing fetch.\n if (!fetchParams.controller.controller.desiredSize) {\n return\n }\n }\n }\n\n // 2. If aborted, then:\n function onAborted (reason) {\n // 2. If fetchParams is aborted, then:\n if (isAborted(fetchParams)) {\n // 1. Set response’s aborted flag.\n response.aborted = true\n\n // 2. If stream is readable, then error stream with the result of\n // deserialize a serialized abort reason given fetchParams’s\n // controller’s serialized abort reason and an\n // implementation-defined realm.\n if (isReadable(stream)) {\n fetchParams.controller.controller.error(\n fetchParams.controller.serializedAbortReason\n )\n }\n } else {\n // 3. Otherwise, if stream is readable, error stream with a TypeError.\n if (isReadable(stream)) {\n fetchParams.controller.controller.error(new TypeError('terminated', {\n cause: isErrorLike(reason) ? reason : undefined\n }))\n }\n }\n\n // 4. If connection uses HTTP/2, then transmit an RST_STREAM frame.\n // 5. Otherwise, the user agent should close connection unless it would be bad for performance to do so.\n fetchParams.controller.connection.destroy()\n }\n\n // 20. Return response.\n return response\n\n async function dispatch ({ body }) {\n const url = requestCurrentURL(request)\n /** @type {import('../..').Agent} */\n const agent = fetchParams.controller.dispatcher\n\n return new Promise((resolve, reject) => agent.dispatch(\n {\n path: url.pathname + url.search,\n origin: url.origin,\n method: request.method,\n body: fetchParams.controller.dispatcher.isMockActive ? request.body && (request.body.source || request.body.stream) : body,\n headers: request.headersList.entries,\n maxRedirections: 0,\n upgrade: request.mode === 'websocket' ? 'websocket' : undefined\n },\n {\n body: null,\n abort: null,\n\n onConnect (abort) {\n // TODO (fix): Do we need connection here?\n const { connection } = fetchParams.controller\n\n if (connection.destroyed) {\n abort(new DOMException('The operation was aborted.', 'AbortError'))\n } else {\n fetchParams.controller.on('terminated', abort)\n this.abort = connection.abort = abort\n }\n },\n\n onHeaders (status, headersList, resume, statusText) {\n if (status < 200) {\n return\n }\n\n let codings = []\n let location = ''\n\n const headers = new Headers()\n\n // For H2, the headers are a plain JS object\n // We distinguish between them and iterate accordingly\n if (Array.isArray(headersList)) {\n for (let n = 0; n < headersList.length; n += 2) {\n const key = headersList[n + 0].toString('latin1')\n const val = headersList[n + 1].toString('latin1')\n if (key.toLowerCase() === 'content-encoding') {\n // https://www.rfc-editor.org/rfc/rfc7231#section-3.1.2.1\n // \"All content-coding values are case-insensitive...\"\n codings = val.toLowerCase().split(',').map((x) => x.trim())\n } else if (key.toLowerCase() === 'location') {\n location = val\n }\n\n headers[kHeadersList].append(key, val)\n }\n } else {\n const keys = Object.keys(headersList)\n for (const key of keys) {\n const val = headersList[key]\n if (key.toLowerCase() === 'content-encoding') {\n // https://www.rfc-editor.org/rfc/rfc7231#section-3.1.2.1\n // \"All content-coding values are case-insensitive...\"\n codings = val.toLowerCase().split(',').map((x) => x.trim()).reverse()\n } else if (key.toLowerCase() === 'location') {\n location = val\n }\n\n headers[kHeadersList].append(key, val)\n }\n }\n\n this.body = new Readable({ read: resume })\n\n const decoders = []\n\n const willFollow = request.redirect === 'follow' &&\n location &&\n redirectStatusSet.has(status)\n\n // https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Encoding\n if (request.method !== 'HEAD' && request.method !== 'CONNECT' && !nullBodyStatus.includes(status) && !willFollow) {\n for (const coding of codings) {\n // https://www.rfc-editor.org/rfc/rfc9112.html#section-7.2\n if (coding === 'x-gzip' || coding === 'gzip') {\n decoders.push(zlib.createGunzip({\n // Be less strict when decoding compressed responses, since sometimes\n // servers send slightly invalid responses that are still accepted\n // by common browsers.\n // Always using Z_SYNC_FLUSH is what cURL does.\n flush: zlib.constants.Z_SYNC_FLUSH,\n finishFlush: zlib.constants.Z_SYNC_FLUSH\n }))\n } else if (coding === 'deflate') {\n decoders.push(zlib.createInflate())\n } else if (coding === 'br') {\n decoders.push(zlib.createBrotliDecompress())\n } else {\n decoders.length = 0\n break\n }\n }\n }\n\n resolve({\n status,\n statusText,\n headersList: headers[kHeadersList],\n body: decoders.length\n ? pipeline(this.body, ...decoders, () => { })\n : this.body.on('error', () => {})\n })\n\n return true\n },\n\n onData (chunk) {\n if (fetchParams.controller.dump) {\n return\n }\n\n // 1. If one or more bytes have been transmitted from response’s\n // message body, then:\n\n // 1. Let bytes be the transmitted bytes.\n const bytes = chunk\n\n // 2. Let codings be the result of extracting header list values\n // given `Content-Encoding` and response’s header list.\n // See pullAlgorithm.\n\n // 3. Increase timingInfo’s encoded body size by bytes’s length.\n timingInfo.encodedBodySize += bytes.byteLength\n\n // 4. See pullAlgorithm...\n\n return this.body.push(bytes)\n },\n\n onComplete () {\n if (this.abort) {\n fetchParams.controller.off('terminated', this.abort)\n }\n\n fetchParams.controller.ended = true\n\n this.body.push(null)\n },\n\n onError (error) {\n if (this.abort) {\n fetchParams.controller.off('terminated', this.abort)\n }\n\n this.body?.destroy(error)\n\n fetchParams.controller.terminate(error)\n\n reject(error)\n },\n\n onUpgrade (status, headersList, socket) {\n if (status !== 101) {\n return\n }\n\n const headers = new Headers()\n\n for (let n = 0; n < headersList.length; n += 2) {\n const key = headersList[n + 0].toString('latin1')\n const val = headersList[n + 1].toString('latin1')\n\n headers[kHeadersList].append(key, val)\n }\n\n resolve({\n status,\n statusText: STATUS_CODES[status],\n headersList: headers[kHeadersList],\n socket\n })\n\n return true\n }\n }\n ))\n }\n}\n\nmodule.exports = {\n fetch,\n Fetch,\n fetching,\n finalizeAndReportTiming\n}\n","/* globals AbortController */\n\n'use strict'\n\nconst { extractBody, mixinBody, cloneBody } = require('./body')\nconst { Headers, fill: fillHeaders, HeadersList } = require('./headers')\nconst { FinalizationRegistry } = require('../compat/dispatcher-weakref')()\nconst util = require('../core/util')\nconst {\n isValidHTTPToken,\n sameOrigin,\n normalizeMethod,\n makePolicyContainer,\n normalizeMethodRecord\n} = require('./util')\nconst {\n forbiddenMethodsSet,\n corsSafeListedMethodsSet,\n referrerPolicy,\n requestRedirect,\n requestMode,\n requestCredentials,\n requestCache,\n requestDuplex\n} = require('./constants')\nconst { kEnumerableProperty } = util\nconst { kHeaders, kSignal, kState, kGuard, kRealm } = require('./symbols')\nconst { webidl } = require('./webidl')\nconst { getGlobalOrigin } = require('./global')\nconst { URLSerializer } = require('./dataURL')\nconst { kHeadersList, kConstruct } = require('../core/symbols')\nconst assert = require('assert')\nconst { getMaxListeners, setMaxListeners, getEventListeners, defaultMaxListeners } = require('events')\n\nlet TransformStream = globalThis.TransformStream\n\nconst kAbortController = Symbol('abortController')\n\nconst requestFinalizer = new FinalizationRegistry(({ signal, abort }) => {\n signal.removeEventListener('abort', abort)\n})\n\n// https://fetch.spec.whatwg.org/#request-class\nclass Request {\n // https://fetch.spec.whatwg.org/#dom-request\n constructor (input, init = {}) {\n if (input === kConstruct) {\n return\n }\n\n webidl.argumentLengthCheck(arguments, 1, { header: 'Request constructor' })\n\n input = webidl.converters.RequestInfo(input)\n init = webidl.converters.RequestInit(init)\n\n // https://html.spec.whatwg.org/multipage/webappapis.html#environment-settings-object\n this[kRealm] = {\n settingsObject: {\n baseUrl: getGlobalOrigin(),\n get origin () {\n return this.baseUrl?.origin\n },\n policyContainer: makePolicyContainer()\n }\n }\n\n // 1. Let request be null.\n let request = null\n\n // 2. Let fallbackMode be null.\n let fallbackMode = null\n\n // 3. Let baseURL be this’s relevant settings object’s API base URL.\n const baseUrl = this[kRealm].settingsObject.baseUrl\n\n // 4. Let signal be null.\n let signal = null\n\n // 5. If input is a string, then:\n if (typeof input === 'string') {\n // 1. Let parsedURL be the result of parsing input with baseURL.\n // 2. If parsedURL is failure, then throw a TypeError.\n let parsedURL\n try {\n parsedURL = new URL(input, baseUrl)\n } catch (err) {\n throw new TypeError('Failed to parse URL from ' + input, { cause: err })\n }\n\n // 3. If parsedURL includes credentials, then throw a TypeError.\n if (parsedURL.username || parsedURL.password) {\n throw new TypeError(\n 'Request cannot be constructed from a URL that includes credentials: ' +\n input\n )\n }\n\n // 4. Set request to a new request whose URL is parsedURL.\n request = makeRequest({ urlList: [parsedURL] })\n\n // 5. Set fallbackMode to \"cors\".\n fallbackMode = 'cors'\n } else {\n // 6. Otherwise:\n\n // 7. Assert: input is a Request object.\n assert(input instanceof Request)\n\n // 8. Set request to input’s request.\n request = input[kState]\n\n // 9. Set signal to input’s signal.\n signal = input[kSignal]\n }\n\n // 7. Let origin be this’s relevant settings object’s origin.\n const origin = this[kRealm].settingsObject.origin\n\n // 8. Let window be \"client\".\n let window = 'client'\n\n // 9. If request’s window is an environment settings object and its origin\n // is same origin with origin, then set window to request’s window.\n if (\n request.window?.constructor?.name === 'EnvironmentSettingsObject' &&\n sameOrigin(request.window, origin)\n ) {\n window = request.window\n }\n\n // 10. If init[\"window\"] exists and is non-null, then throw a TypeError.\n if (init.window != null) {\n throw new TypeError(`'window' option '${window}' must be null`)\n }\n\n // 11. If init[\"window\"] exists, then set window to \"no-window\".\n if ('window' in init) {\n window = 'no-window'\n }\n\n // 12. Set request to a new request with the following properties:\n request = makeRequest({\n // URL request’s URL.\n // undici implementation note: this is set as the first item in request's urlList in makeRequest\n // method request’s method.\n method: request.method,\n // header list A copy of request’s header list.\n // undici implementation note: headersList is cloned in makeRequest\n headersList: request.headersList,\n // unsafe-request flag Set.\n unsafeRequest: request.unsafeRequest,\n // client This’s relevant settings object.\n client: this[kRealm].settingsObject,\n // window window.\n window,\n // priority request’s priority.\n priority: request.priority,\n // origin request’s origin. The propagation of the origin is only significant for navigation requests\n // being handled by a service worker. In this scenario a request can have an origin that is different\n // from the current client.\n origin: request.origin,\n // referrer request’s referrer.\n referrer: request.referrer,\n // referrer policy request’s referrer policy.\n referrerPolicy: request.referrerPolicy,\n // mode request’s mode.\n mode: request.mode,\n // credentials mode request’s credentials mode.\n credentials: request.credentials,\n // cache mode request’s cache mode.\n cache: request.cache,\n // redirect mode request’s redirect mode.\n redirect: request.redirect,\n // integrity metadata request’s integrity metadata.\n integrity: request.integrity,\n // keepalive request’s keepalive.\n keepalive: request.keepalive,\n // reload-navigation flag request’s reload-navigation flag.\n reloadNavigation: request.reloadNavigation,\n // history-navigation flag request’s history-navigation flag.\n historyNavigation: request.historyNavigation,\n // URL list A clone of request’s URL list.\n urlList: [...request.urlList]\n })\n\n const initHasKey = Object.keys(init).length !== 0\n\n // 13. If init is not empty, then:\n if (initHasKey) {\n // 1. If request’s mode is \"navigate\", then set it to \"same-origin\".\n if (request.mode === 'navigate') {\n request.mode = 'same-origin'\n }\n\n // 2. Unset request’s reload-navigation flag.\n request.reloadNavigation = false\n\n // 3. Unset request’s history-navigation flag.\n request.historyNavigation = false\n\n // 4. Set request’s origin to \"client\".\n request.origin = 'client'\n\n // 5. Set request’s referrer to \"client\"\n request.referrer = 'client'\n\n // 6. Set request’s referrer policy to the empty string.\n request.referrerPolicy = ''\n\n // 7. Set request’s URL to request’s current URL.\n request.url = request.urlList[request.urlList.length - 1]\n\n // 8. Set request’s URL list to « request’s URL ».\n request.urlList = [request.url]\n }\n\n // 14. If init[\"referrer\"] exists, then:\n if (init.referrer !== undefined) {\n // 1. Let referrer be init[\"referrer\"].\n const referrer = init.referrer\n\n // 2. If referrer is the empty string, then set request’s referrer to \"no-referrer\".\n if (referrer === '') {\n request.referrer = 'no-referrer'\n } else {\n // 1. Let parsedReferrer be the result of parsing referrer with\n // baseURL.\n // 2. If parsedReferrer is failure, then throw a TypeError.\n let parsedReferrer\n try {\n parsedReferrer = new URL(referrer, baseUrl)\n } catch (err) {\n throw new TypeError(`Referrer \"${referrer}\" is not a valid URL.`, { cause: err })\n }\n\n // 3. If one of the following is true\n // - parsedReferrer’s scheme is \"about\" and path is the string \"client\"\n // - parsedReferrer’s origin is not same origin with origin\n // then set request’s referrer to \"client\".\n if (\n (parsedReferrer.protocol === 'about:' && parsedReferrer.hostname === 'client') ||\n (origin && !sameOrigin(parsedReferrer, this[kRealm].settingsObject.baseUrl))\n ) {\n request.referrer = 'client'\n } else {\n // 4. Otherwise, set request’s referrer to parsedReferrer.\n request.referrer = parsedReferrer\n }\n }\n }\n\n // 15. If init[\"referrerPolicy\"] exists, then set request’s referrer policy\n // to it.\n if (init.referrerPolicy !== undefined) {\n request.referrerPolicy = init.referrerPolicy\n }\n\n // 16. Let mode be init[\"mode\"] if it exists, and fallbackMode otherwise.\n let mode\n if (init.mode !== undefined) {\n mode = init.mode\n } else {\n mode = fallbackMode\n }\n\n // 17. If mode is \"navigate\", then throw a TypeError.\n if (mode === 'navigate') {\n throw webidl.errors.exception({\n header: 'Request constructor',\n message: 'invalid request mode navigate.'\n })\n }\n\n // 18. If mode is non-null, set request’s mode to mode.\n if (mode != null) {\n request.mode = mode\n }\n\n // 19. If init[\"credentials\"] exists, then set request’s credentials mode\n // to it.\n if (init.credentials !== undefined) {\n request.credentials = init.credentials\n }\n\n // 18. If init[\"cache\"] exists, then set request’s cache mode to it.\n if (init.cache !== undefined) {\n request.cache = init.cache\n }\n\n // 21. If request’s cache mode is \"only-if-cached\" and request’s mode is\n // not \"same-origin\", then throw a TypeError.\n if (request.cache === 'only-if-cached' && request.mode !== 'same-origin') {\n throw new TypeError(\n \"'only-if-cached' can be set only with 'same-origin' mode\"\n )\n }\n\n // 22. If init[\"redirect\"] exists, then set request’s redirect mode to it.\n if (init.redirect !== undefined) {\n request.redirect = init.redirect\n }\n\n // 23. If init[\"integrity\"] exists, then set request’s integrity metadata to it.\n if (init.integrity != null) {\n request.integrity = String(init.integrity)\n }\n\n // 24. If init[\"keepalive\"] exists, then set request’s keepalive to it.\n if (init.keepalive !== undefined) {\n request.keepalive = Boolean(init.keepalive)\n }\n\n // 25. If init[\"method\"] exists, then:\n if (init.method !== undefined) {\n // 1. Let method be init[\"method\"].\n let method = init.method\n\n // 2. If method is not a method or method is a forbidden method, then\n // throw a TypeError.\n if (!isValidHTTPToken(method)) {\n throw new TypeError(`'${method}' is not a valid HTTP method.`)\n }\n\n if (forbiddenMethodsSet.has(method.toUpperCase())) {\n throw new TypeError(`'${method}' HTTP method is unsupported.`)\n }\n\n // 3. Normalize method.\n method = normalizeMethodRecord[method] ?? normalizeMethod(method)\n\n // 4. Set request’s method to method.\n request.method = method\n }\n\n // 26. If init[\"signal\"] exists, then set signal to it.\n if (init.signal !== undefined) {\n signal = init.signal\n }\n\n // 27. Set this’s request to request.\n this[kState] = request\n\n // 28. Set this’s signal to a new AbortSignal object with this’s relevant\n // Realm.\n // TODO: could this be simplified with AbortSignal.any\n // (https://dom.spec.whatwg.org/#dom-abortsignal-any)\n const ac = new AbortController()\n this[kSignal] = ac.signal\n this[kSignal][kRealm] = this[kRealm]\n\n // 29. If signal is not null, then make this’s signal follow signal.\n if (signal != null) {\n if (\n !signal ||\n typeof signal.aborted !== 'boolean' ||\n typeof signal.addEventListener !== 'function'\n ) {\n throw new TypeError(\n \"Failed to construct 'Request': member signal is not of type AbortSignal.\"\n )\n }\n\n if (signal.aborted) {\n ac.abort(signal.reason)\n } else {\n // Keep a strong ref to ac while request object\n // is alive. This is needed to prevent AbortController\n // from being prematurely garbage collected.\n // See, https://github.com/nodejs/undici/issues/1926.\n this[kAbortController] = ac\n\n const acRef = new WeakRef(ac)\n const abort = function () {\n const ac = acRef.deref()\n if (ac !== undefined) {\n ac.abort(this.reason)\n }\n }\n\n // Third-party AbortControllers may not work with these.\n // See, https://github.com/nodejs/undici/pull/1910#issuecomment-1464495619.\n try {\n // If the max amount of listeners is equal to the default, increase it\n // This is only available in node >= v19.9.0\n if (typeof getMaxListeners === 'function' && getMaxListeners(signal) === defaultMaxListeners) {\n setMaxListeners(100, signal)\n } else if (getEventListeners(signal, 'abort').length >= defaultMaxListeners) {\n setMaxListeners(100, signal)\n }\n } catch {}\n\n util.addAbortListener(signal, abort)\n requestFinalizer.register(ac, { signal, abort })\n }\n }\n\n // 30. Set this’s headers to a new Headers object with this’s relevant\n // Realm, whose header list is request’s header list and guard is\n // \"request\".\n this[kHeaders] = new Headers(kConstruct)\n this[kHeaders][kHeadersList] = request.headersList\n this[kHeaders][kGuard] = 'request'\n this[kHeaders][kRealm] = this[kRealm]\n\n // 31. If this’s request’s mode is \"no-cors\", then:\n if (mode === 'no-cors') {\n // 1. If this’s request’s method is not a CORS-safelisted method,\n // then throw a TypeError.\n if (!corsSafeListedMethodsSet.has(request.method)) {\n throw new TypeError(\n `'${request.method} is unsupported in no-cors mode.`\n )\n }\n\n // 2. Set this’s headers’s guard to \"request-no-cors\".\n this[kHeaders][kGuard] = 'request-no-cors'\n }\n\n // 32. If init is not empty, then:\n if (initHasKey) {\n /** @type {HeadersList} */\n const headersList = this[kHeaders][kHeadersList]\n // 1. Let headers be a copy of this’s headers and its associated header\n // list.\n // 2. If init[\"headers\"] exists, then set headers to init[\"headers\"].\n const headers = init.headers !== undefined ? init.headers : new HeadersList(headersList)\n\n // 3. Empty this’s headers’s header list.\n headersList.clear()\n\n // 4. If headers is a Headers object, then for each header in its header\n // list, append header’s name/header’s value to this’s headers.\n if (headers instanceof HeadersList) {\n for (const [key, val] of headers) {\n headersList.append(key, val)\n }\n // Note: Copy the `set-cookie` meta-data.\n headersList.cookies = headers.cookies\n } else {\n // 5. Otherwise, fill this’s headers with headers.\n fillHeaders(this[kHeaders], headers)\n }\n }\n\n // 33. Let inputBody be input’s request’s body if input is a Request\n // object; otherwise null.\n const inputBody = input instanceof Request ? input[kState].body : null\n\n // 34. If either init[\"body\"] exists and is non-null or inputBody is\n // non-null, and request’s method is `GET` or `HEAD`, then throw a\n // TypeError.\n if (\n (init.body != null || inputBody != null) &&\n (request.method === 'GET' || request.method === 'HEAD')\n ) {\n throw new TypeError('Request with GET/HEAD method cannot have body.')\n }\n\n // 35. Let initBody be null.\n let initBody = null\n\n // 36. If init[\"body\"] exists and is non-null, then:\n if (init.body != null) {\n // 1. Let Content-Type be null.\n // 2. Set initBody and Content-Type to the result of extracting\n // init[\"body\"], with keepalive set to request’s keepalive.\n const [extractedBody, contentType] = extractBody(\n init.body,\n request.keepalive\n )\n initBody = extractedBody\n\n // 3, If Content-Type is non-null and this’s headers’s header list does\n // not contain `Content-Type`, then append `Content-Type`/Content-Type to\n // this’s headers.\n if (contentType && !this[kHeaders][kHeadersList].contains('content-type')) {\n this[kHeaders].append('content-type', contentType)\n }\n }\n\n // 37. Let inputOrInitBody be initBody if it is non-null; otherwise\n // inputBody.\n const inputOrInitBody = initBody ?? inputBody\n\n // 38. If inputOrInitBody is non-null and inputOrInitBody’s source is\n // null, then:\n if (inputOrInitBody != null && inputOrInitBody.source == null) {\n // 1. If initBody is non-null and init[\"duplex\"] does not exist,\n // then throw a TypeError.\n if (initBody != null && init.duplex == null) {\n throw new TypeError('RequestInit: duplex option is required when sending a body.')\n }\n\n // 2. If this’s request’s mode is neither \"same-origin\" nor \"cors\",\n // then throw a TypeError.\n if (request.mode !== 'same-origin' && request.mode !== 'cors') {\n throw new TypeError(\n 'If request is made from ReadableStream, mode should be \"same-origin\" or \"cors\"'\n )\n }\n\n // 3. Set this’s request’s use-CORS-preflight flag.\n request.useCORSPreflightFlag = true\n }\n\n // 39. Let finalBody be inputOrInitBody.\n let finalBody = inputOrInitBody\n\n // 40. If initBody is null and inputBody is non-null, then:\n if (initBody == null && inputBody != null) {\n // 1. If input is unusable, then throw a TypeError.\n if (util.isDisturbed(inputBody.stream) || inputBody.stream.locked) {\n throw new TypeError(\n 'Cannot construct a Request with a Request object that has already been used.'\n )\n }\n\n // 2. Set finalBody to the result of creating a proxy for inputBody.\n if (!TransformStream) {\n TransformStream = require('stream/web').TransformStream\n }\n\n // https://streams.spec.whatwg.org/#readablestream-create-a-proxy\n const identityTransform = new TransformStream()\n inputBody.stream.pipeThrough(identityTransform)\n finalBody = {\n source: inputBody.source,\n length: inputBody.length,\n stream: identityTransform.readable\n }\n }\n\n // 41. Set this’s request’s body to finalBody.\n this[kState].body = finalBody\n }\n\n // Returns request’s HTTP method, which is \"GET\" by default.\n get method () {\n webidl.brandCheck(this, Request)\n\n // The method getter steps are to return this’s request’s method.\n return this[kState].method\n }\n\n // Returns the URL of request as a string.\n get url () {\n webidl.brandCheck(this, Request)\n\n // The url getter steps are to return this’s request’s URL, serialized.\n return URLSerializer(this[kState].url)\n }\n\n // Returns a Headers object consisting of the headers associated with request.\n // Note that headers added in the network layer by the user agent will not\n // be accounted for in this object, e.g., the \"Host\" header.\n get headers () {\n webidl.brandCheck(this, Request)\n\n // The headers getter steps are to return this’s headers.\n return this[kHeaders]\n }\n\n // Returns the kind of resource requested by request, e.g., \"document\"\n // or \"script\".\n get destination () {\n webidl.brandCheck(this, Request)\n\n // The destination getter are to return this’s request’s destination.\n return this[kState].destination\n }\n\n // Returns the referrer of request. Its value can be a same-origin URL if\n // explicitly set in init, the empty string to indicate no referrer, and\n // \"about:client\" when defaulting to the global’s default. This is used\n // during fetching to determine the value of the `Referer` header of the\n // request being made.\n get referrer () {\n webidl.brandCheck(this, Request)\n\n // 1. If this’s request’s referrer is \"no-referrer\", then return the\n // empty string.\n if (this[kState].referrer === 'no-referrer') {\n return ''\n }\n\n // 2. If this’s request’s referrer is \"client\", then return\n // \"about:client\".\n if (this[kState].referrer === 'client') {\n return 'about:client'\n }\n\n // Return this’s request’s referrer, serialized.\n return this[kState].referrer.toString()\n }\n\n // Returns the referrer policy associated with request.\n // This is used during fetching to compute the value of the request’s\n // referrer.\n get referrerPolicy () {\n webidl.brandCheck(this, Request)\n\n // The referrerPolicy getter steps are to return this’s request’s referrer policy.\n return this[kState].referrerPolicy\n }\n\n // Returns the mode associated with request, which is a string indicating\n // whether the request will use CORS, or will be restricted to same-origin\n // URLs.\n get mode () {\n webidl.brandCheck(this, Request)\n\n // The mode getter steps are to return this’s request’s mode.\n return this[kState].mode\n }\n\n // Returns the credentials mode associated with request,\n // which is a string indicating whether credentials will be sent with the\n // request always, never, or only when sent to a same-origin URL.\n get credentials () {\n // The credentials getter steps are to return this’s request’s credentials mode.\n return this[kState].credentials\n }\n\n // Returns the cache mode associated with request,\n // which is a string indicating how the request will\n // interact with the browser’s cache when fetching.\n get cache () {\n webidl.brandCheck(this, Request)\n\n // The cache getter steps are to return this’s request’s cache mode.\n return this[kState].cache\n }\n\n // Returns the redirect mode associated with request,\n // which is a string indicating how redirects for the\n // request will be handled during fetching. A request\n // will follow redirects by default.\n get redirect () {\n webidl.brandCheck(this, Request)\n\n // The redirect getter steps are to return this’s request’s redirect mode.\n return this[kState].redirect\n }\n\n // Returns request’s subresource integrity metadata, which is a\n // cryptographic hash of the resource being fetched. Its value\n // consists of multiple hashes separated by whitespace. [SRI]\n get integrity () {\n webidl.brandCheck(this, Request)\n\n // The integrity getter steps are to return this’s request’s integrity\n // metadata.\n return this[kState].integrity\n }\n\n // Returns a boolean indicating whether or not request can outlive the\n // global in which it was created.\n get keepalive () {\n webidl.brandCheck(this, Request)\n\n // The keepalive getter steps are to return this’s request’s keepalive.\n return this[kState].keepalive\n }\n\n // Returns a boolean indicating whether or not request is for a reload\n // navigation.\n get isReloadNavigation () {\n webidl.brandCheck(this, Request)\n\n // The isReloadNavigation getter steps are to return true if this’s\n // request’s reload-navigation flag is set; otherwise false.\n return this[kState].reloadNavigation\n }\n\n // Returns a boolean indicating whether or not request is for a history\n // navigation (a.k.a. back-foward navigation).\n get isHistoryNavigation () {\n webidl.brandCheck(this, Request)\n\n // The isHistoryNavigation getter steps are to return true if this’s request’s\n // history-navigation flag is set; otherwise false.\n return this[kState].historyNavigation\n }\n\n // Returns the signal associated with request, which is an AbortSignal\n // object indicating whether or not request has been aborted, and its\n // abort event handler.\n get signal () {\n webidl.brandCheck(this, Request)\n\n // The signal getter steps are to return this’s signal.\n return this[kSignal]\n }\n\n get body () {\n webidl.brandCheck(this, Request)\n\n return this[kState].body ? this[kState].body.stream : null\n }\n\n get bodyUsed () {\n webidl.brandCheck(this, Request)\n\n return !!this[kState].body && util.isDisturbed(this[kState].body.stream)\n }\n\n get duplex () {\n webidl.brandCheck(this, Request)\n\n return 'half'\n }\n\n // Returns a clone of request.\n clone () {\n webidl.brandCheck(this, Request)\n\n // 1. If this is unusable, then throw a TypeError.\n if (this.bodyUsed || this.body?.locked) {\n throw new TypeError('unusable')\n }\n\n // 2. Let clonedRequest be the result of cloning this’s request.\n const clonedRequest = cloneRequest(this[kState])\n\n // 3. Let clonedRequestObject be the result of creating a Request object,\n // given clonedRequest, this’s headers’s guard, and this’s relevant Realm.\n const clonedRequestObject = new Request(kConstruct)\n clonedRequestObject[kState] = clonedRequest\n clonedRequestObject[kRealm] = this[kRealm]\n clonedRequestObject[kHeaders] = new Headers(kConstruct)\n clonedRequestObject[kHeaders][kHeadersList] = clonedRequest.headersList\n clonedRequestObject[kHeaders][kGuard] = this[kHeaders][kGuard]\n clonedRequestObject[kHeaders][kRealm] = this[kHeaders][kRealm]\n\n // 4. Make clonedRequestObject’s signal follow this’s signal.\n const ac = new AbortController()\n if (this.signal.aborted) {\n ac.abort(this.signal.reason)\n } else {\n util.addAbortListener(\n this.signal,\n () => {\n ac.abort(this.signal.reason)\n }\n )\n }\n clonedRequestObject[kSignal] = ac.signal\n\n // 4. Return clonedRequestObject.\n return clonedRequestObject\n }\n}\n\nmixinBody(Request)\n\nfunction makeRequest (init) {\n // https://fetch.spec.whatwg.org/#requests\n const request = {\n method: 'GET',\n localURLsOnly: false,\n unsafeRequest: false,\n body: null,\n client: null,\n reservedClient: null,\n replacesClientId: '',\n window: 'client',\n keepalive: false,\n serviceWorkers: 'all',\n initiator: '',\n destination: '',\n priority: null,\n origin: 'client',\n policyContainer: 'client',\n referrer: 'client',\n referrerPolicy: '',\n mode: 'no-cors',\n useCORSPreflightFlag: false,\n credentials: 'same-origin',\n useCredentials: false,\n cache: 'default',\n redirect: 'follow',\n integrity: '',\n cryptoGraphicsNonceMetadata: '',\n parserMetadata: '',\n reloadNavigation: false,\n historyNavigation: false,\n userActivation: false,\n taintedOrigin: false,\n redirectCount: 0,\n responseTainting: 'basic',\n preventNoCacheCacheControlHeaderModification: false,\n done: false,\n timingAllowFailed: false,\n ...init,\n headersList: init.headersList\n ? new HeadersList(init.headersList)\n : new HeadersList()\n }\n request.url = request.urlList[0]\n return request\n}\n\n// https://fetch.spec.whatwg.org/#concept-request-clone\nfunction cloneRequest (request) {\n // To clone a request request, run these steps:\n\n // 1. Let newRequest be a copy of request, except for its body.\n const newRequest = makeRequest({ ...request, body: null })\n\n // 2. If request’s body is non-null, set newRequest’s body to the\n // result of cloning request’s body.\n if (request.body != null) {\n newRequest.body = cloneBody(request.body)\n }\n\n // 3. Return newRequest.\n return newRequest\n}\n\nObject.defineProperties(Request.prototype, {\n method: kEnumerableProperty,\n url: kEnumerableProperty,\n headers: kEnumerableProperty,\n redirect: kEnumerableProperty,\n clone: kEnumerableProperty,\n signal: kEnumerableProperty,\n duplex: kEnumerableProperty,\n destination: kEnumerableProperty,\n body: kEnumerableProperty,\n bodyUsed: kEnumerableProperty,\n isHistoryNavigation: kEnumerableProperty,\n isReloadNavigation: kEnumerableProperty,\n keepalive: kEnumerableProperty,\n integrity: kEnumerableProperty,\n cache: kEnumerableProperty,\n credentials: kEnumerableProperty,\n attribute: kEnumerableProperty,\n referrerPolicy: kEnumerableProperty,\n referrer: kEnumerableProperty,\n mode: kEnumerableProperty,\n [Symbol.toStringTag]: {\n value: 'Request',\n configurable: true\n }\n})\n\nwebidl.converters.Request = webidl.interfaceConverter(\n Request\n)\n\n// https://fetch.spec.whatwg.org/#requestinfo\nwebidl.converters.RequestInfo = function (V) {\n if (typeof V === 'string') {\n return webidl.converters.USVString(V)\n }\n\n if (V instanceof Request) {\n return webidl.converters.Request(V)\n }\n\n return webidl.converters.USVString(V)\n}\n\nwebidl.converters.AbortSignal = webidl.interfaceConverter(\n AbortSignal\n)\n\n// https://fetch.spec.whatwg.org/#requestinit\nwebidl.converters.RequestInit = webidl.dictionaryConverter([\n {\n key: 'method',\n converter: webidl.converters.ByteString\n },\n {\n key: 'headers',\n converter: webidl.converters.HeadersInit\n },\n {\n key: 'body',\n converter: webidl.nullableConverter(\n webidl.converters.BodyInit\n )\n },\n {\n key: 'referrer',\n converter: webidl.converters.USVString\n },\n {\n key: 'referrerPolicy',\n converter: webidl.converters.DOMString,\n // https://w3c.github.io/webappsec-referrer-policy/#referrer-policy\n allowedValues: referrerPolicy\n },\n {\n key: 'mode',\n converter: webidl.converters.DOMString,\n // https://fetch.spec.whatwg.org/#concept-request-mode\n allowedValues: requestMode\n },\n {\n key: 'credentials',\n converter: webidl.converters.DOMString,\n // https://fetch.spec.whatwg.org/#requestcredentials\n allowedValues: requestCredentials\n },\n {\n key: 'cache',\n converter: webidl.converters.DOMString,\n // https://fetch.spec.whatwg.org/#requestcache\n allowedValues: requestCache\n },\n {\n key: 'redirect',\n converter: webidl.converters.DOMString,\n // https://fetch.spec.whatwg.org/#requestredirect\n allowedValues: requestRedirect\n },\n {\n key: 'integrity',\n converter: webidl.converters.DOMString\n },\n {\n key: 'keepalive',\n converter: webidl.converters.boolean\n },\n {\n key: 'signal',\n converter: webidl.nullableConverter(\n (signal) => webidl.converters.AbortSignal(\n signal,\n { strict: false }\n )\n )\n },\n {\n key: 'window',\n converter: webidl.converters.any\n },\n {\n key: 'duplex',\n converter: webidl.converters.DOMString,\n allowedValues: requestDuplex\n }\n])\n\nmodule.exports = { Request, makeRequest }\n","'use strict'\n\nconst { Headers, HeadersList, fill } = require('./headers')\nconst { extractBody, cloneBody, mixinBody } = require('./body')\nconst util = require('../core/util')\nconst { kEnumerableProperty } = util\nconst {\n isValidReasonPhrase,\n isCancelled,\n isAborted,\n isBlobLike,\n serializeJavascriptValueToJSONString,\n isErrorLike,\n isomorphicEncode\n} = require('./util')\nconst {\n redirectStatusSet,\n nullBodyStatus,\n DOMException\n} = require('./constants')\nconst { kState, kHeaders, kGuard, kRealm } = require('./symbols')\nconst { webidl } = require('./webidl')\nconst { FormData } = require('./formdata')\nconst { getGlobalOrigin } = require('./global')\nconst { URLSerializer } = require('./dataURL')\nconst { kHeadersList, kConstruct } = require('../core/symbols')\nconst assert = require('assert')\nconst { types } = require('util')\n\nconst ReadableStream = globalThis.ReadableStream || require('stream/web').ReadableStream\nconst textEncoder = new TextEncoder('utf-8')\n\n// https://fetch.spec.whatwg.org/#response-class\nclass Response {\n // Creates network error Response.\n static error () {\n // TODO\n const relevantRealm = { settingsObject: {} }\n\n // The static error() method steps are to return the result of creating a\n // Response object, given a new network error, \"immutable\", and this’s\n // relevant Realm.\n const responseObject = new Response()\n responseObject[kState] = makeNetworkError()\n responseObject[kRealm] = relevantRealm\n responseObject[kHeaders][kHeadersList] = responseObject[kState].headersList\n responseObject[kHeaders][kGuard] = 'immutable'\n responseObject[kHeaders][kRealm] = relevantRealm\n return responseObject\n }\n\n // https://fetch.spec.whatwg.org/#dom-response-json\n static json (data, init = {}) {\n webidl.argumentLengthCheck(arguments, 1, { header: 'Response.json' })\n\n if (init !== null) {\n init = webidl.converters.ResponseInit(init)\n }\n\n // 1. Let bytes the result of running serialize a JavaScript value to JSON bytes on data.\n const bytes = textEncoder.encode(\n serializeJavascriptValueToJSONString(data)\n )\n\n // 2. Let body be the result of extracting bytes.\n const body = extractBody(bytes)\n\n // 3. Let responseObject be the result of creating a Response object, given a new response,\n // \"response\", and this’s relevant Realm.\n const relevantRealm = { settingsObject: {} }\n const responseObject = new Response()\n responseObject[kRealm] = relevantRealm\n responseObject[kHeaders][kGuard] = 'response'\n responseObject[kHeaders][kRealm] = relevantRealm\n\n // 4. Perform initialize a response given responseObject, init, and (body, \"application/json\").\n initializeResponse(responseObject, init, { body: body[0], type: 'application/json' })\n\n // 5. Return responseObject.\n return responseObject\n }\n\n // Creates a redirect Response that redirects to url with status status.\n static redirect (url, status = 302) {\n const relevantRealm = { settingsObject: {} }\n\n webidl.argumentLengthCheck(arguments, 1, { header: 'Response.redirect' })\n\n url = webidl.converters.USVString(url)\n status = webidl.converters['unsigned short'](status)\n\n // 1. Let parsedURL be the result of parsing url with current settings\n // object’s API base URL.\n // 2. If parsedURL is failure, then throw a TypeError.\n // TODO: base-URL?\n let parsedURL\n try {\n parsedURL = new URL(url, getGlobalOrigin())\n } catch (err) {\n throw Object.assign(new TypeError('Failed to parse URL from ' + url), {\n cause: err\n })\n }\n\n // 3. If status is not a redirect status, then throw a RangeError.\n if (!redirectStatusSet.has(status)) {\n throw new RangeError('Invalid status code ' + status)\n }\n\n // 4. Let responseObject be the result of creating a Response object,\n // given a new response, \"immutable\", and this’s relevant Realm.\n const responseObject = new Response()\n responseObject[kRealm] = relevantRealm\n responseObject[kHeaders][kGuard] = 'immutable'\n responseObject[kHeaders][kRealm] = relevantRealm\n\n // 5. Set responseObject’s response’s status to status.\n responseObject[kState].status = status\n\n // 6. Let value be parsedURL, serialized and isomorphic encoded.\n const value = isomorphicEncode(URLSerializer(parsedURL))\n\n // 7. Append `Location`/value to responseObject’s response’s header list.\n responseObject[kState].headersList.append('location', value)\n\n // 8. Return responseObject.\n return responseObject\n }\n\n // https://fetch.spec.whatwg.org/#dom-response\n constructor (body = null, init = {}) {\n if (body !== null) {\n body = webidl.converters.BodyInit(body)\n }\n\n init = webidl.converters.ResponseInit(init)\n\n // TODO\n this[kRealm] = { settingsObject: {} }\n\n // 1. Set this’s response to a new response.\n this[kState] = makeResponse({})\n\n // 2. Set this’s headers to a new Headers object with this’s relevant\n // Realm, whose header list is this’s response’s header list and guard\n // is \"response\".\n this[kHeaders] = new Headers(kConstruct)\n this[kHeaders][kGuard] = 'response'\n this[kHeaders][kHeadersList] = this[kState].headersList\n this[kHeaders][kRealm] = this[kRealm]\n\n // 3. Let bodyWithType be null.\n let bodyWithType = null\n\n // 4. If body is non-null, then set bodyWithType to the result of extracting body.\n if (body != null) {\n const [extractedBody, type] = extractBody(body)\n bodyWithType = { body: extractedBody, type }\n }\n\n // 5. Perform initialize a response given this, init, and bodyWithType.\n initializeResponse(this, init, bodyWithType)\n }\n\n // Returns response’s type, e.g., \"cors\".\n get type () {\n webidl.brandCheck(this, Response)\n\n // The type getter steps are to return this’s response’s type.\n return this[kState].type\n }\n\n // Returns response’s URL, if it has one; otherwise the empty string.\n get url () {\n webidl.brandCheck(this, Response)\n\n const urlList = this[kState].urlList\n\n // The url getter steps are to return the empty string if this’s\n // response’s URL is null; otherwise this’s response’s URL,\n // serialized with exclude fragment set to true.\n const url = urlList[urlList.length - 1] ?? null\n\n if (url === null) {\n return ''\n }\n\n return URLSerializer(url, true)\n }\n\n // Returns whether response was obtained through a redirect.\n get redirected () {\n webidl.brandCheck(this, Response)\n\n // The redirected getter steps are to return true if this’s response’s URL\n // list has more than one item; otherwise false.\n return this[kState].urlList.length > 1\n }\n\n // Returns response’s status.\n get status () {\n webidl.brandCheck(this, Response)\n\n // The status getter steps are to return this’s response’s status.\n return this[kState].status\n }\n\n // Returns whether response’s status is an ok status.\n get ok () {\n webidl.brandCheck(this, Response)\n\n // The ok getter steps are to return true if this’s response’s status is an\n // ok status; otherwise false.\n return this[kState].status >= 200 && this[kState].status <= 299\n }\n\n // Returns response’s status message.\n get statusText () {\n webidl.brandCheck(this, Response)\n\n // The statusText getter steps are to return this’s response’s status\n // message.\n return this[kState].statusText\n }\n\n // Returns response’s headers as Headers.\n get headers () {\n webidl.brandCheck(this, Response)\n\n // The headers getter steps are to return this’s headers.\n return this[kHeaders]\n }\n\n get body () {\n webidl.brandCheck(this, Response)\n\n return this[kState].body ? this[kState].body.stream : null\n }\n\n get bodyUsed () {\n webidl.brandCheck(this, Response)\n\n return !!this[kState].body && util.isDisturbed(this[kState].body.stream)\n }\n\n // Returns a clone of response.\n clone () {\n webidl.brandCheck(this, Response)\n\n // 1. If this is unusable, then throw a TypeError.\n if (this.bodyUsed || (this.body && this.body.locked)) {\n throw webidl.errors.exception({\n header: 'Response.clone',\n message: 'Body has already been consumed.'\n })\n }\n\n // 2. Let clonedResponse be the result of cloning this’s response.\n const clonedResponse = cloneResponse(this[kState])\n\n // 3. Return the result of creating a Response object, given\n // clonedResponse, this’s headers’s guard, and this’s relevant Realm.\n const clonedResponseObject = new Response()\n clonedResponseObject[kState] = clonedResponse\n clonedResponseObject[kRealm] = this[kRealm]\n clonedResponseObject[kHeaders][kHeadersList] = clonedResponse.headersList\n clonedResponseObject[kHeaders][kGuard] = this[kHeaders][kGuard]\n clonedResponseObject[kHeaders][kRealm] = this[kHeaders][kRealm]\n\n return clonedResponseObject\n }\n}\n\nmixinBody(Response)\n\nObject.defineProperties(Response.prototype, {\n type: kEnumerableProperty,\n url: kEnumerableProperty,\n status: kEnumerableProperty,\n ok: kEnumerableProperty,\n redirected: kEnumerableProperty,\n statusText: kEnumerableProperty,\n headers: kEnumerableProperty,\n clone: kEnumerableProperty,\n body: kEnumerableProperty,\n bodyUsed: kEnumerableProperty,\n [Symbol.toStringTag]: {\n value: 'Response',\n configurable: true\n }\n})\n\nObject.defineProperties(Response, {\n json: kEnumerableProperty,\n redirect: kEnumerableProperty,\n error: kEnumerableProperty\n})\n\n// https://fetch.spec.whatwg.org/#concept-response-clone\nfunction cloneResponse (response) {\n // To clone a response response, run these steps:\n\n // 1. If response is a filtered response, then return a new identical\n // filtered response whose internal response is a clone of response’s\n // internal response.\n if (response.internalResponse) {\n return filterResponse(\n cloneResponse(response.internalResponse),\n response.type\n )\n }\n\n // 2. Let newResponse be a copy of response, except for its body.\n const newResponse = makeResponse({ ...response, body: null })\n\n // 3. If response’s body is non-null, then set newResponse’s body to the\n // result of cloning response’s body.\n if (response.body != null) {\n newResponse.body = cloneBody(response.body)\n }\n\n // 4. Return newResponse.\n return newResponse\n}\n\nfunction makeResponse (init) {\n return {\n aborted: false,\n rangeRequested: false,\n timingAllowPassed: false,\n requestIncludesCredentials: false,\n type: 'default',\n status: 200,\n timingInfo: null,\n cacheState: '',\n statusText: '',\n ...init,\n headersList: init.headersList\n ? new HeadersList(init.headersList)\n : new HeadersList(),\n urlList: init.urlList ? [...init.urlList] : []\n }\n}\n\nfunction makeNetworkError (reason) {\n const isError = isErrorLike(reason)\n return makeResponse({\n type: 'error',\n status: 0,\n error: isError\n ? reason\n : new Error(reason ? String(reason) : reason),\n aborted: reason && reason.name === 'AbortError'\n })\n}\n\nfunction makeFilteredResponse (response, state) {\n state = {\n internalResponse: response,\n ...state\n }\n\n return new Proxy(response, {\n get (target, p) {\n return p in state ? state[p] : target[p]\n },\n set (target, p, value) {\n assert(!(p in state))\n target[p] = value\n return true\n }\n })\n}\n\n// https://fetch.spec.whatwg.org/#concept-filtered-response\nfunction filterResponse (response, type) {\n // Set response to the following filtered response with response as its\n // internal response, depending on request’s response tainting:\n if (type === 'basic') {\n // A basic filtered response is a filtered response whose type is \"basic\"\n // and header list excludes any headers in internal response’s header list\n // whose name is a forbidden response-header name.\n\n // Note: undici does not implement forbidden response-header names\n return makeFilteredResponse(response, {\n type: 'basic',\n headersList: response.headersList\n })\n } else if (type === 'cors') {\n // A CORS filtered response is a filtered response whose type is \"cors\"\n // and header list excludes any headers in internal response’s header\n // list whose name is not a CORS-safelisted response-header name, given\n // internal response’s CORS-exposed header-name list.\n\n // Note: undici does not implement CORS-safelisted response-header names\n return makeFilteredResponse(response, {\n type: 'cors',\n headersList: response.headersList\n })\n } else if (type === 'opaque') {\n // An opaque filtered response is a filtered response whose type is\n // \"opaque\", URL list is the empty list, status is 0, status message\n // is the empty byte sequence, header list is empty, and body is null.\n\n return makeFilteredResponse(response, {\n type: 'opaque',\n urlList: Object.freeze([]),\n status: 0,\n statusText: '',\n body: null\n })\n } else if (type === 'opaqueredirect') {\n // An opaque-redirect filtered response is a filtered response whose type\n // is \"opaqueredirect\", status is 0, status message is the empty byte\n // sequence, header list is empty, and body is null.\n\n return makeFilteredResponse(response, {\n type: 'opaqueredirect',\n status: 0,\n statusText: '',\n headersList: [],\n body: null\n })\n } else {\n assert(false)\n }\n}\n\n// https://fetch.spec.whatwg.org/#appropriate-network-error\nfunction makeAppropriateNetworkError (fetchParams, err = null) {\n // 1. Assert: fetchParams is canceled.\n assert(isCancelled(fetchParams))\n\n // 2. Return an aborted network error if fetchParams is aborted;\n // otherwise return a network error.\n return isAborted(fetchParams)\n ? makeNetworkError(Object.assign(new DOMException('The operation was aborted.', 'AbortError'), { cause: err }))\n : makeNetworkError(Object.assign(new DOMException('Request was cancelled.'), { cause: err }))\n}\n\n// https://whatpr.org/fetch/1392.html#initialize-a-response\nfunction initializeResponse (response, init, body) {\n // 1. If init[\"status\"] is not in the range 200 to 599, inclusive, then\n // throw a RangeError.\n if (init.status !== null && (init.status < 200 || init.status > 599)) {\n throw new RangeError('init[\"status\"] must be in the range of 200 to 599, inclusive.')\n }\n\n // 2. If init[\"statusText\"] does not match the reason-phrase token production,\n // then throw a TypeError.\n if ('statusText' in init && init.statusText != null) {\n // See, https://datatracker.ietf.org/doc/html/rfc7230#section-3.1.2:\n // reason-phrase = *( HTAB / SP / VCHAR / obs-text )\n if (!isValidReasonPhrase(String(init.statusText))) {\n throw new TypeError('Invalid statusText')\n }\n }\n\n // 3. Set response’s response’s status to init[\"status\"].\n if ('status' in init && init.status != null) {\n response[kState].status = init.status\n }\n\n // 4. Set response’s response’s status message to init[\"statusText\"].\n if ('statusText' in init && init.statusText != null) {\n response[kState].statusText = init.statusText\n }\n\n // 5. If init[\"headers\"] exists, then fill response’s headers with init[\"headers\"].\n if ('headers' in init && init.headers != null) {\n fill(response[kHeaders], init.headers)\n }\n\n // 6. If body was given, then:\n if (body) {\n // 1. If response's status is a null body status, then throw a TypeError.\n if (nullBodyStatus.includes(response.status)) {\n throw webidl.errors.exception({\n header: 'Response constructor',\n message: 'Invalid response status code ' + response.status\n })\n }\n\n // 2. Set response's body to body's body.\n response[kState].body = body.body\n\n // 3. If body's type is non-null and response's header list does not contain\n // `Content-Type`, then append (`Content-Type`, body's type) to response's header list.\n if (body.type != null && !response[kState].headersList.contains('Content-Type')) {\n response[kState].headersList.append('content-type', body.type)\n }\n }\n}\n\nwebidl.converters.ReadableStream = webidl.interfaceConverter(\n ReadableStream\n)\n\nwebidl.converters.FormData = webidl.interfaceConverter(\n FormData\n)\n\nwebidl.converters.URLSearchParams = webidl.interfaceConverter(\n URLSearchParams\n)\n\n// https://fetch.spec.whatwg.org/#typedefdef-xmlhttprequestbodyinit\nwebidl.converters.XMLHttpRequestBodyInit = function (V) {\n if (typeof V === 'string') {\n return webidl.converters.USVString(V)\n }\n\n if (isBlobLike(V)) {\n return webidl.converters.Blob(V, { strict: false })\n }\n\n if (types.isArrayBuffer(V) || types.isTypedArray(V) || types.isDataView(V)) {\n return webidl.converters.BufferSource(V)\n }\n\n if (util.isFormDataLike(V)) {\n return webidl.converters.FormData(V, { strict: false })\n }\n\n if (V instanceof URLSearchParams) {\n return webidl.converters.URLSearchParams(V)\n }\n\n return webidl.converters.DOMString(V)\n}\n\n// https://fetch.spec.whatwg.org/#bodyinit\nwebidl.converters.BodyInit = function (V) {\n if (V instanceof ReadableStream) {\n return webidl.converters.ReadableStream(V)\n }\n\n // Note: the spec doesn't include async iterables,\n // this is an undici extension.\n if (V?.[Symbol.asyncIterator]) {\n return V\n }\n\n return webidl.converters.XMLHttpRequestBodyInit(V)\n}\n\nwebidl.converters.ResponseInit = webidl.dictionaryConverter([\n {\n key: 'status',\n converter: webidl.converters['unsigned short'],\n defaultValue: 200\n },\n {\n key: 'statusText',\n converter: webidl.converters.ByteString,\n defaultValue: ''\n },\n {\n key: 'headers',\n converter: webidl.converters.HeadersInit\n }\n])\n\nmodule.exports = {\n makeNetworkError,\n makeResponse,\n makeAppropriateNetworkError,\n filterResponse,\n Response,\n cloneResponse\n}\n","'use strict'\n\nmodule.exports = {\n kUrl: Symbol('url'),\n kHeaders: Symbol('headers'),\n kSignal: Symbol('signal'),\n kState: Symbol('state'),\n kGuard: Symbol('guard'),\n kRealm: Symbol('realm')\n}\n","'use strict'\n\nconst { redirectStatusSet, referrerPolicySet: referrerPolicyTokens, badPortsSet } = require('./constants')\nconst { getGlobalOrigin } = require('./global')\nconst { performance } = require('perf_hooks')\nconst { isBlobLike, toUSVString, ReadableStreamFrom } = require('../core/util')\nconst assert = require('assert')\nconst { isUint8Array } = require('util/types')\n\nlet supportedHashes = []\n\n// https://nodejs.org/api/crypto.html#determining-if-crypto-support-is-unavailable\n/** @type {import('crypto')|undefined} */\nlet crypto\n\ntry {\n crypto = require('crypto')\n const possibleRelevantHashes = ['sha256', 'sha384', 'sha512']\n supportedHashes = crypto.getHashes().filter((hash) => possibleRelevantHashes.includes(hash))\n/* c8 ignore next 3 */\n} catch {\n}\n\nfunction responseURL (response) {\n // https://fetch.spec.whatwg.org/#responses\n // A response has an associated URL. It is a pointer to the last URL\n // in response’s URL list and null if response’s URL list is empty.\n const urlList = response.urlList\n const length = urlList.length\n return length === 0 ? null : urlList[length - 1].toString()\n}\n\n// https://fetch.spec.whatwg.org/#concept-response-location-url\nfunction responseLocationURL (response, requestFragment) {\n // 1. If response’s status is not a redirect status, then return null.\n if (!redirectStatusSet.has(response.status)) {\n return null\n }\n\n // 2. Let location be the result of extracting header list values given\n // `Location` and response’s header list.\n let location = response.headersList.get('location')\n\n // 3. If location is a header value, then set location to the result of\n // parsing location with response’s URL.\n if (location !== null && isValidHeaderValue(location)) {\n location = new URL(location, responseURL(response))\n }\n\n // 4. If location is a URL whose fragment is null, then set location’s\n // fragment to requestFragment.\n if (location && !location.hash) {\n location.hash = requestFragment\n }\n\n // 5. Return location.\n return location\n}\n\n/** @returns {URL} */\nfunction requestCurrentURL (request) {\n return request.urlList[request.urlList.length - 1]\n}\n\nfunction requestBadPort (request) {\n // 1. Let url be request’s current URL.\n const url = requestCurrentURL(request)\n\n // 2. If url’s scheme is an HTTP(S) scheme and url’s port is a bad port,\n // then return blocked.\n if (urlIsHttpHttpsScheme(url) && badPortsSet.has(url.port)) {\n return 'blocked'\n }\n\n // 3. Return allowed.\n return 'allowed'\n}\n\nfunction isErrorLike (object) {\n return object instanceof Error || (\n object?.constructor?.name === 'Error' ||\n object?.constructor?.name === 'DOMException'\n )\n}\n\n// Check whether |statusText| is a ByteString and\n// matches the Reason-Phrase token production.\n// RFC 2616: https://tools.ietf.org/html/rfc2616\n// RFC 7230: https://tools.ietf.org/html/rfc7230\n// \"reason-phrase = *( HTAB / SP / VCHAR / obs-text )\"\n// https://github.com/chromium/chromium/blob/94.0.4604.1/third_party/blink/renderer/core/fetch/response.cc#L116\nfunction isValidReasonPhrase (statusText) {\n for (let i = 0; i < statusText.length; ++i) {\n const c = statusText.charCodeAt(i)\n if (\n !(\n (\n c === 0x09 || // HTAB\n (c >= 0x20 && c <= 0x7e) || // SP / VCHAR\n (c >= 0x80 && c <= 0xff)\n ) // obs-text\n )\n ) {\n return false\n }\n }\n return true\n}\n\n/**\n * @see https://tools.ietf.org/html/rfc7230#section-3.2.6\n * @param {number} c\n */\nfunction isTokenCharCode (c) {\n switch (c) {\n case 0x22:\n case 0x28:\n case 0x29:\n case 0x2c:\n case 0x2f:\n case 0x3a:\n case 0x3b:\n case 0x3c:\n case 0x3d:\n case 0x3e:\n case 0x3f:\n case 0x40:\n case 0x5b:\n case 0x5c:\n case 0x5d:\n case 0x7b:\n case 0x7d:\n // DQUOTE and \"(),/:;<=>?@[\\]{}\"\n return false\n default:\n // VCHAR %x21-7E\n return c >= 0x21 && c <= 0x7e\n }\n}\n\n/**\n * @param {string} characters\n */\nfunction isValidHTTPToken (characters) {\n if (characters.length === 0) {\n return false\n }\n for (let i = 0; i < characters.length; ++i) {\n if (!isTokenCharCode(characters.charCodeAt(i))) {\n return false\n }\n }\n return true\n}\n\n/**\n * @see https://fetch.spec.whatwg.org/#header-name\n * @param {string} potentialValue\n */\nfunction isValidHeaderName (potentialValue) {\n return isValidHTTPToken(potentialValue)\n}\n\n/**\n * @see https://fetch.spec.whatwg.org/#header-value\n * @param {string} potentialValue\n */\nfunction isValidHeaderValue (potentialValue) {\n // - Has no leading or trailing HTTP tab or space bytes.\n // - Contains no 0x00 (NUL) or HTTP newline bytes.\n if (\n potentialValue.startsWith('\\t') ||\n potentialValue.startsWith(' ') ||\n potentialValue.endsWith('\\t') ||\n potentialValue.endsWith(' ')\n ) {\n return false\n }\n\n if (\n potentialValue.includes('\\0') ||\n potentialValue.includes('\\r') ||\n potentialValue.includes('\\n')\n ) {\n return false\n }\n\n return true\n}\n\n// https://w3c.github.io/webappsec-referrer-policy/#set-requests-referrer-policy-on-redirect\nfunction setRequestReferrerPolicyOnRedirect (request, actualResponse) {\n // Given a request request and a response actualResponse, this algorithm\n // updates request’s referrer policy according to the Referrer-Policy\n // header (if any) in actualResponse.\n\n // 1. Let policy be the result of executing § 8.1 Parse a referrer policy\n // from a Referrer-Policy header on actualResponse.\n\n // 8.1 Parse a referrer policy from a Referrer-Policy header\n // 1. Let policy-tokens be the result of extracting header list values given `Referrer-Policy` and response’s header list.\n const { headersList } = actualResponse\n // 2. Let policy be the empty string.\n // 3. For each token in policy-tokens, if token is a referrer policy and token is not the empty string, then set policy to token.\n // 4. Return policy.\n const policyHeader = (headersList.get('referrer-policy') ?? '').split(',')\n\n // Note: As the referrer-policy can contain multiple policies\n // separated by comma, we need to loop through all of them\n // and pick the first valid one.\n // Ref: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Referrer-Policy#specify_a_fallback_policy\n let policy = ''\n if (policyHeader.length > 0) {\n // The right-most policy takes precedence.\n // The left-most policy is the fallback.\n for (let i = policyHeader.length; i !== 0; i--) {\n const token = policyHeader[i - 1].trim()\n if (referrerPolicyTokens.has(token)) {\n policy = token\n break\n }\n }\n }\n\n // 2. If policy is not the empty string, then set request’s referrer policy to policy.\n if (policy !== '') {\n request.referrerPolicy = policy\n }\n}\n\n// https://fetch.spec.whatwg.org/#cross-origin-resource-policy-check\nfunction crossOriginResourcePolicyCheck () {\n // TODO\n return 'allowed'\n}\n\n// https://fetch.spec.whatwg.org/#concept-cors-check\nfunction corsCheck () {\n // TODO\n return 'success'\n}\n\n// https://fetch.spec.whatwg.org/#concept-tao-check\nfunction TAOCheck () {\n // TODO\n return 'success'\n}\n\nfunction appendFetchMetadata (httpRequest) {\n // https://w3c.github.io/webappsec-fetch-metadata/#sec-fetch-dest-header\n // TODO\n\n // https://w3c.github.io/webappsec-fetch-metadata/#sec-fetch-mode-header\n\n // 1. Assert: r’s url is a potentially trustworthy URL.\n // TODO\n\n // 2. Let header be a Structured Header whose value is a token.\n let header = null\n\n // 3. Set header’s value to r’s mode.\n header = httpRequest.mode\n\n // 4. Set a structured field value `Sec-Fetch-Mode`/header in r’s header list.\n httpRequest.headersList.set('sec-fetch-mode', header)\n\n // https://w3c.github.io/webappsec-fetch-metadata/#sec-fetch-site-header\n // TODO\n\n // https://w3c.github.io/webappsec-fetch-metadata/#sec-fetch-user-header\n // TODO\n}\n\n// https://fetch.spec.whatwg.org/#append-a-request-origin-header\nfunction appendRequestOriginHeader (request) {\n // 1. Let serializedOrigin be the result of byte-serializing a request origin with request.\n let serializedOrigin = request.origin\n\n // 2. If request’s response tainting is \"cors\" or request’s mode is \"websocket\", then append (`Origin`, serializedOrigin) to request’s header list.\n if (request.responseTainting === 'cors' || request.mode === 'websocket') {\n if (serializedOrigin) {\n request.headersList.append('origin', serializedOrigin)\n }\n\n // 3. Otherwise, if request’s method is neither `GET` nor `HEAD`, then:\n } else if (request.method !== 'GET' && request.method !== 'HEAD') {\n // 1. Switch on request’s referrer policy:\n switch (request.referrerPolicy) {\n case 'no-referrer':\n // Set serializedOrigin to `null`.\n serializedOrigin = null\n break\n case 'no-referrer-when-downgrade':\n case 'strict-origin':\n case 'strict-origin-when-cross-origin':\n // If request’s origin is a tuple origin, its scheme is \"https\", and request’s current URL’s scheme is not \"https\", then set serializedOrigin to `null`.\n if (request.origin && urlHasHttpsScheme(request.origin) && !urlHasHttpsScheme(requestCurrentURL(request))) {\n serializedOrigin = null\n }\n break\n case 'same-origin':\n // If request’s origin is not same origin with request’s current URL’s origin, then set serializedOrigin to `null`.\n if (!sameOrigin(request, requestCurrentURL(request))) {\n serializedOrigin = null\n }\n break\n default:\n // Do nothing.\n }\n\n if (serializedOrigin) {\n // 2. Append (`Origin`, serializedOrigin) to request’s header list.\n request.headersList.append('origin', serializedOrigin)\n }\n }\n}\n\nfunction coarsenedSharedCurrentTime (crossOriginIsolatedCapability) {\n // TODO\n return performance.now()\n}\n\n// https://fetch.spec.whatwg.org/#create-an-opaque-timing-info\nfunction createOpaqueTimingInfo (timingInfo) {\n return {\n startTime: timingInfo.startTime ?? 0,\n redirectStartTime: 0,\n redirectEndTime: 0,\n postRedirectStartTime: timingInfo.startTime ?? 0,\n finalServiceWorkerStartTime: 0,\n finalNetworkResponseStartTime: 0,\n finalNetworkRequestStartTime: 0,\n endTime: 0,\n encodedBodySize: 0,\n decodedBodySize: 0,\n finalConnectionTimingInfo: null\n }\n}\n\n// https://html.spec.whatwg.org/multipage/origin.html#policy-container\nfunction makePolicyContainer () {\n // Note: the fetch spec doesn't make use of embedder policy or CSP list\n return {\n referrerPolicy: 'strict-origin-when-cross-origin'\n }\n}\n\n// https://html.spec.whatwg.org/multipage/origin.html#clone-a-policy-container\nfunction clonePolicyContainer (policyContainer) {\n return {\n referrerPolicy: policyContainer.referrerPolicy\n }\n}\n\n// https://w3c.github.io/webappsec-referrer-policy/#determine-requests-referrer\nfunction determineRequestsReferrer (request) {\n // 1. Let policy be request's referrer policy.\n const policy = request.referrerPolicy\n\n // Note: policy cannot (shouldn't) be null or an empty string.\n assert(policy)\n\n // 2. Let environment be request’s client.\n\n let referrerSource = null\n\n // 3. Switch on request’s referrer:\n if (request.referrer === 'client') {\n // Note: node isn't a browser and doesn't implement document/iframes,\n // so we bypass this step and replace it with our own.\n\n const globalOrigin = getGlobalOrigin()\n\n if (!globalOrigin || globalOrigin.origin === 'null') {\n return 'no-referrer'\n }\n\n // note: we need to clone it as it's mutated\n referrerSource = new URL(globalOrigin)\n } else if (request.referrer instanceof URL) {\n // Let referrerSource be request’s referrer.\n referrerSource = request.referrer\n }\n\n // 4. Let request’s referrerURL be the result of stripping referrerSource for\n // use as a referrer.\n let referrerURL = stripURLForReferrer(referrerSource)\n\n // 5. Let referrerOrigin be the result of stripping referrerSource for use as\n // a referrer, with the origin-only flag set to true.\n const referrerOrigin = stripURLForReferrer(referrerSource, true)\n\n // 6. If the result of serializing referrerURL is a string whose length is\n // greater than 4096, set referrerURL to referrerOrigin.\n if (referrerURL.toString().length > 4096) {\n referrerURL = referrerOrigin\n }\n\n const areSameOrigin = sameOrigin(request, referrerURL)\n const isNonPotentiallyTrustWorthy = isURLPotentiallyTrustworthy(referrerURL) &&\n !isURLPotentiallyTrustworthy(request.url)\n\n // 8. Execute the switch statements corresponding to the value of policy:\n switch (policy) {\n case 'origin': return referrerOrigin != null ? referrerOrigin : stripURLForReferrer(referrerSource, true)\n case 'unsafe-url': return referrerURL\n case 'same-origin':\n return areSameOrigin ? referrerOrigin : 'no-referrer'\n case 'origin-when-cross-origin':\n return areSameOrigin ? referrerURL : referrerOrigin\n case 'strict-origin-when-cross-origin': {\n const currentURL = requestCurrentURL(request)\n\n // 1. If the origin of referrerURL and the origin of request’s current\n // URL are the same, then return referrerURL.\n if (sameOrigin(referrerURL, currentURL)) {\n return referrerURL\n }\n\n // 2. If referrerURL is a potentially trustworthy URL and request’s\n // current URL is not a potentially trustworthy URL, then return no\n // referrer.\n if (isURLPotentiallyTrustworthy(referrerURL) && !isURLPotentiallyTrustworthy(currentURL)) {\n return 'no-referrer'\n }\n\n // 3. Return referrerOrigin.\n return referrerOrigin\n }\n case 'strict-origin': // eslint-disable-line\n /**\n * 1. If referrerURL is a potentially trustworthy URL and\n * request’s current URL is not a potentially trustworthy URL,\n * then return no referrer.\n * 2. Return referrerOrigin\n */\n case 'no-referrer-when-downgrade': // eslint-disable-line\n /**\n * 1. If referrerURL is a potentially trustworthy URL and\n * request’s current URL is not a potentially trustworthy URL,\n * then return no referrer.\n * 2. Return referrerOrigin\n */\n\n default: // eslint-disable-line\n return isNonPotentiallyTrustWorthy ? 'no-referrer' : referrerOrigin\n }\n}\n\n/**\n * @see https://w3c.github.io/webappsec-referrer-policy/#strip-url\n * @param {URL} url\n * @param {boolean|undefined} originOnly\n */\nfunction stripURLForReferrer (url, originOnly) {\n // 1. Assert: url is a URL.\n assert(url instanceof URL)\n\n // 2. If url’s scheme is a local scheme, then return no referrer.\n if (url.protocol === 'file:' || url.protocol === 'about:' || url.protocol === 'blank:') {\n return 'no-referrer'\n }\n\n // 3. Set url’s username to the empty string.\n url.username = ''\n\n // 4. Set url’s password to the empty string.\n url.password = ''\n\n // 5. Set url’s fragment to null.\n url.hash = ''\n\n // 6. If the origin-only flag is true, then:\n if (originOnly) {\n // 1. Set url’s path to « the empty string ».\n url.pathname = ''\n\n // 2. Set url’s query to null.\n url.search = ''\n }\n\n // 7. Return url.\n return url\n}\n\nfunction isURLPotentiallyTrustworthy (url) {\n if (!(url instanceof URL)) {\n return false\n }\n\n // If child of about, return true\n if (url.href === 'about:blank' || url.href === 'about:srcdoc') {\n return true\n }\n\n // If scheme is data, return true\n if (url.protocol === 'data:') return true\n\n // If file, return true\n if (url.protocol === 'file:') return true\n\n return isOriginPotentiallyTrustworthy(url.origin)\n\n function isOriginPotentiallyTrustworthy (origin) {\n // If origin is explicitly null, return false\n if (origin == null || origin === 'null') return false\n\n const originAsURL = new URL(origin)\n\n // If secure, return true\n if (originAsURL.protocol === 'https:' || originAsURL.protocol === 'wss:') {\n return true\n }\n\n // If localhost or variants, return true\n if (/^127(?:\\.[0-9]+){0,2}\\.[0-9]+$|^\\[(?:0*:)*?:?0*1\\]$/.test(originAsURL.hostname) ||\n (originAsURL.hostname === 'localhost' || originAsURL.hostname.includes('localhost.')) ||\n (originAsURL.hostname.endsWith('.localhost'))) {\n return true\n }\n\n // If any other, return false\n return false\n }\n}\n\n/**\n * @see https://w3c.github.io/webappsec-subresource-integrity/#does-response-match-metadatalist\n * @param {Uint8Array} bytes\n * @param {string} metadataList\n */\nfunction bytesMatch (bytes, metadataList) {\n // If node is not built with OpenSSL support, we cannot check\n // a request's integrity, so allow it by default (the spec will\n // allow requests if an invalid hash is given, as precedence).\n /* istanbul ignore if: only if node is built with --without-ssl */\n if (crypto === undefined) {\n return true\n }\n\n // 1. Let parsedMetadata be the result of parsing metadataList.\n const parsedMetadata = parseMetadata(metadataList)\n\n // 2. If parsedMetadata is no metadata, return true.\n if (parsedMetadata === 'no metadata') {\n return true\n }\n\n // 3. If response is not eligible for integrity validation, return false.\n // TODO\n\n // 4. If parsedMetadata is the empty set, return true.\n if (parsedMetadata.length === 0) {\n return true\n }\n\n // 5. Let metadata be the result of getting the strongest\n // metadata from parsedMetadata.\n const strongest = getStrongestMetadata(parsedMetadata)\n const metadata = filterMetadataListByAlgorithm(parsedMetadata, strongest)\n\n // 6. For each item in metadata:\n for (const item of metadata) {\n // 1. Let algorithm be the alg component of item.\n const algorithm = item.algo\n\n // 2. Let expectedValue be the val component of item.\n const expectedValue = item.hash\n\n // See https://github.com/web-platform-tests/wpt/commit/e4c5cc7a5e48093220528dfdd1c4012dc3837a0e\n // \"be liberal with padding\". This is annoying, and it's not even in the spec.\n\n // 3. Let actualValue be the result of applying algorithm to bytes.\n let actualValue = crypto.createHash(algorithm).update(bytes).digest('base64')\n\n if (actualValue[actualValue.length - 1] === '=') {\n if (actualValue[actualValue.length - 2] === '=') {\n actualValue = actualValue.slice(0, -2)\n } else {\n actualValue = actualValue.slice(0, -1)\n }\n }\n\n // 4. If actualValue is a case-sensitive match for expectedValue,\n // return true.\n if (compareBase64Mixed(actualValue, expectedValue)) {\n return true\n }\n }\n\n // 7. Return false.\n return false\n}\n\n// https://w3c.github.io/webappsec-subresource-integrity/#grammardef-hash-with-options\n// https://www.w3.org/TR/CSP2/#source-list-syntax\n// https://www.rfc-editor.org/rfc/rfc5234#appendix-B.1\nconst parseHashWithOptions = /(?sha256|sha384|sha512)-((?[A-Za-z0-9+/]+|[A-Za-z0-9_-]+)={0,2}(?:\\s|$)( +[!-~]*)?)?/i\n\n/**\n * @see https://w3c.github.io/webappsec-subresource-integrity/#parse-metadata\n * @param {string} metadata\n */\nfunction parseMetadata (metadata) {\n // 1. Let result be the empty set.\n /** @type {{ algo: string, hash: string }[]} */\n const result = []\n\n // 2. Let empty be equal to true.\n let empty = true\n\n // 3. For each token returned by splitting metadata on spaces:\n for (const token of metadata.split(' ')) {\n // 1. Set empty to false.\n empty = false\n\n // 2. Parse token as a hash-with-options.\n const parsedToken = parseHashWithOptions.exec(token)\n\n // 3. If token does not parse, continue to the next token.\n if (\n parsedToken === null ||\n parsedToken.groups === undefined ||\n parsedToken.groups.algo === undefined\n ) {\n // Note: Chromium blocks the request at this point, but Firefox\n // gives a warning that an invalid integrity was given. The\n // correct behavior is to ignore these, and subsequently not\n // check the integrity of the resource.\n continue\n }\n\n // 4. Let algorithm be the hash-algo component of token.\n const algorithm = parsedToken.groups.algo.toLowerCase()\n\n // 5. If algorithm is a hash function recognized by the user\n // agent, add the parsed token to result.\n if (supportedHashes.includes(algorithm)) {\n result.push(parsedToken.groups)\n }\n }\n\n // 4. Return no metadata if empty is true, otherwise return result.\n if (empty === true) {\n return 'no metadata'\n }\n\n return result\n}\n\n/**\n * @param {{ algo: 'sha256' | 'sha384' | 'sha512' }[]} metadataList\n */\nfunction getStrongestMetadata (metadataList) {\n // Let algorithm be the algo component of the first item in metadataList.\n // Can be sha256\n let algorithm = metadataList[0].algo\n // If the algorithm is sha512, then it is the strongest\n // and we can return immediately\n if (algorithm[3] === '5') {\n return algorithm\n }\n\n for (let i = 1; i < metadataList.length; ++i) {\n const metadata = metadataList[i]\n // If the algorithm is sha512, then it is the strongest\n // and we can break the loop immediately\n if (metadata.algo[3] === '5') {\n algorithm = 'sha512'\n break\n // If the algorithm is sha384, then a potential sha256 or sha384 is ignored\n } else if (algorithm[3] === '3') {\n continue\n // algorithm is sha256, check if algorithm is sha384 and if so, set it as\n // the strongest\n } else if (metadata.algo[3] === '3') {\n algorithm = 'sha384'\n }\n }\n return algorithm\n}\n\nfunction filterMetadataListByAlgorithm (metadataList, algorithm) {\n if (metadataList.length === 1) {\n return metadataList\n }\n\n let pos = 0\n for (let i = 0; i < metadataList.length; ++i) {\n if (metadataList[i].algo === algorithm) {\n metadataList[pos++] = metadataList[i]\n }\n }\n\n metadataList.length = pos\n\n return metadataList\n}\n\n/**\n * Compares two base64 strings, allowing for base64url\n * in the second string.\n *\n* @param {string} actualValue always base64\n * @param {string} expectedValue base64 or base64url\n * @returns {boolean}\n */\nfunction compareBase64Mixed (actualValue, expectedValue) {\n if (actualValue.length !== expectedValue.length) {\n return false\n }\n for (let i = 0; i < actualValue.length; ++i) {\n if (actualValue[i] !== expectedValue[i]) {\n if (\n (actualValue[i] === '+' && expectedValue[i] === '-') ||\n (actualValue[i] === '/' && expectedValue[i] === '_')\n ) {\n continue\n }\n return false\n }\n }\n\n return true\n}\n\n// https://w3c.github.io/webappsec-upgrade-insecure-requests/#upgrade-request\nfunction tryUpgradeRequestToAPotentiallyTrustworthyURL (request) {\n // TODO\n}\n\n/**\n * @link {https://html.spec.whatwg.org/multipage/origin.html#same-origin}\n * @param {URL} A\n * @param {URL} B\n */\nfunction sameOrigin (A, B) {\n // 1. If A and B are the same opaque origin, then return true.\n if (A.origin === B.origin && A.origin === 'null') {\n return true\n }\n\n // 2. If A and B are both tuple origins and their schemes,\n // hosts, and port are identical, then return true.\n if (A.protocol === B.protocol && A.hostname === B.hostname && A.port === B.port) {\n return true\n }\n\n // 3. Return false.\n return false\n}\n\nfunction createDeferredPromise () {\n let res\n let rej\n const promise = new Promise((resolve, reject) => {\n res = resolve\n rej = reject\n })\n\n return { promise, resolve: res, reject: rej }\n}\n\nfunction isAborted (fetchParams) {\n return fetchParams.controller.state === 'aborted'\n}\n\nfunction isCancelled (fetchParams) {\n return fetchParams.controller.state === 'aborted' ||\n fetchParams.controller.state === 'terminated'\n}\n\nconst normalizeMethodRecord = {\n delete: 'DELETE',\n DELETE: 'DELETE',\n get: 'GET',\n GET: 'GET',\n head: 'HEAD',\n HEAD: 'HEAD',\n options: 'OPTIONS',\n OPTIONS: 'OPTIONS',\n post: 'POST',\n POST: 'POST',\n put: 'PUT',\n PUT: 'PUT'\n}\n\n// Note: object prototypes should not be able to be referenced. e.g. `Object#hasOwnProperty`.\nObject.setPrototypeOf(normalizeMethodRecord, null)\n\n/**\n * @see https://fetch.spec.whatwg.org/#concept-method-normalize\n * @param {string} method\n */\nfunction normalizeMethod (method) {\n return normalizeMethodRecord[method.toLowerCase()] ?? method\n}\n\n// https://infra.spec.whatwg.org/#serialize-a-javascript-value-to-a-json-string\nfunction serializeJavascriptValueToJSONString (value) {\n // 1. Let result be ? Call(%JSON.stringify%, undefined, « value »).\n const result = JSON.stringify(value)\n\n // 2. If result is undefined, then throw a TypeError.\n if (result === undefined) {\n throw new TypeError('Value is not JSON serializable')\n }\n\n // 3. Assert: result is a string.\n assert(typeof result === 'string')\n\n // 4. Return result.\n return result\n}\n\n// https://tc39.es/ecma262/#sec-%25iteratorprototype%25-object\nconst esIteratorPrototype = Object.getPrototypeOf(Object.getPrototypeOf([][Symbol.iterator]()))\n\n/**\n * @see https://webidl.spec.whatwg.org/#dfn-iterator-prototype-object\n * @param {() => unknown[]} iterator\n * @param {string} name name of the instance\n * @param {'key'|'value'|'key+value'} kind\n */\nfunction makeIterator (iterator, name, kind) {\n const object = {\n index: 0,\n kind,\n target: iterator\n }\n\n const i = {\n next () {\n // 1. Let interface be the interface for which the iterator prototype object exists.\n\n // 2. Let thisValue be the this value.\n\n // 3. Let object be ? ToObject(thisValue).\n\n // 4. If object is a platform object, then perform a security\n // check, passing:\n\n // 5. If object is not a default iterator object for interface,\n // then throw a TypeError.\n if (Object.getPrototypeOf(this) !== i) {\n throw new TypeError(\n `'next' called on an object that does not implement interface ${name} Iterator.`\n )\n }\n\n // 6. Let index be object’s index.\n // 7. Let kind be object’s kind.\n // 8. Let values be object’s target's value pairs to iterate over.\n const { index, kind, target } = object\n const values = target()\n\n // 9. Let len be the length of values.\n const len = values.length\n\n // 10. If index is greater than or equal to len, then return\n // CreateIterResultObject(undefined, true).\n if (index >= len) {\n return { value: undefined, done: true }\n }\n\n // 11. Let pair be the entry in values at index index.\n const pair = values[index]\n\n // 12. Set object’s index to index + 1.\n object.index = index + 1\n\n // 13. Return the iterator result for pair and kind.\n return iteratorResult(pair, kind)\n },\n // The class string of an iterator prototype object for a given interface is the\n // result of concatenating the identifier of the interface and the string \" Iterator\".\n [Symbol.toStringTag]: `${name} Iterator`\n }\n\n // The [[Prototype]] internal slot of an iterator prototype object must be %IteratorPrototype%.\n Object.setPrototypeOf(i, esIteratorPrototype)\n // esIteratorPrototype needs to be the prototype of i\n // which is the prototype of an empty object. Yes, it's confusing.\n return Object.setPrototypeOf({}, i)\n}\n\n// https://webidl.spec.whatwg.org/#iterator-result\nfunction iteratorResult (pair, kind) {\n let result\n\n // 1. Let result be a value determined by the value of kind:\n switch (kind) {\n case 'key': {\n // 1. Let idlKey be pair’s key.\n // 2. Let key be the result of converting idlKey to an\n // ECMAScript value.\n // 3. result is key.\n result = pair[0]\n break\n }\n case 'value': {\n // 1. Let idlValue be pair’s value.\n // 2. Let value be the result of converting idlValue to\n // an ECMAScript value.\n // 3. result is value.\n result = pair[1]\n break\n }\n case 'key+value': {\n // 1. Let idlKey be pair’s key.\n // 2. Let idlValue be pair’s value.\n // 3. Let key be the result of converting idlKey to an\n // ECMAScript value.\n // 4. Let value be the result of converting idlValue to\n // an ECMAScript value.\n // 5. Let array be ! ArrayCreate(2).\n // 6. Call ! CreateDataProperty(array, \"0\", key).\n // 7. Call ! CreateDataProperty(array, \"1\", value).\n // 8. result is array.\n result = pair\n break\n }\n }\n\n // 2. Return CreateIterResultObject(result, false).\n return { value: result, done: false }\n}\n\n/**\n * @see https://fetch.spec.whatwg.org/#body-fully-read\n */\nasync function fullyReadBody (body, processBody, processBodyError) {\n // 1. If taskDestination is null, then set taskDestination to\n // the result of starting a new parallel queue.\n\n // 2. Let successSteps given a byte sequence bytes be to queue a\n // fetch task to run processBody given bytes, with taskDestination.\n const successSteps = processBody\n\n // 3. Let errorSteps be to queue a fetch task to run processBodyError,\n // with taskDestination.\n const errorSteps = processBodyError\n\n // 4. Let reader be the result of getting a reader for body’s stream.\n // If that threw an exception, then run errorSteps with that\n // exception and return.\n let reader\n\n try {\n reader = body.stream.getReader()\n } catch (e) {\n errorSteps(e)\n return\n }\n\n // 5. Read all bytes from reader, given successSteps and errorSteps.\n try {\n const result = await readAllBytes(reader)\n successSteps(result)\n } catch (e) {\n errorSteps(e)\n }\n}\n\n/** @type {ReadableStream} */\nlet ReadableStream = globalThis.ReadableStream\n\nfunction isReadableStreamLike (stream) {\n if (!ReadableStream) {\n ReadableStream = require('stream/web').ReadableStream\n }\n\n return stream instanceof ReadableStream || (\n stream[Symbol.toStringTag] === 'ReadableStream' &&\n typeof stream.tee === 'function'\n )\n}\n\nconst MAXIMUM_ARGUMENT_LENGTH = 65535\n\n/**\n * @see https://infra.spec.whatwg.org/#isomorphic-decode\n * @param {number[]|Uint8Array} input\n */\nfunction isomorphicDecode (input) {\n // 1. To isomorphic decode a byte sequence input, return a string whose code point\n // length is equal to input’s length and whose code points have the same values\n // as the values of input’s bytes, in the same order.\n\n if (input.length < MAXIMUM_ARGUMENT_LENGTH) {\n return String.fromCharCode(...input)\n }\n\n return input.reduce((previous, current) => previous + String.fromCharCode(current), '')\n}\n\n/**\n * @param {ReadableStreamController} controller\n */\nfunction readableStreamClose (controller) {\n try {\n controller.close()\n } catch (err) {\n // TODO: add comment explaining why this error occurs.\n if (!err.message.includes('Controller is already closed')) {\n throw err\n }\n }\n}\n\n/**\n * @see https://infra.spec.whatwg.org/#isomorphic-encode\n * @param {string} input\n */\nfunction isomorphicEncode (input) {\n // 1. Assert: input contains no code points greater than U+00FF.\n for (let i = 0; i < input.length; i++) {\n assert(input.charCodeAt(i) <= 0xFF)\n }\n\n // 2. Return a byte sequence whose length is equal to input’s code\n // point length and whose bytes have the same values as the\n // values of input’s code points, in the same order\n return input\n}\n\n/**\n * @see https://streams.spec.whatwg.org/#readablestreamdefaultreader-read-all-bytes\n * @see https://streams.spec.whatwg.org/#read-loop\n * @param {ReadableStreamDefaultReader} reader\n */\nasync function readAllBytes (reader) {\n const bytes = []\n let byteLength = 0\n\n while (true) {\n const { done, value: chunk } = await reader.read()\n\n if (done) {\n // 1. Call successSteps with bytes.\n return Buffer.concat(bytes, byteLength)\n }\n\n // 1. If chunk is not a Uint8Array object, call failureSteps\n // with a TypeError and abort these steps.\n if (!isUint8Array(chunk)) {\n throw new TypeError('Received non-Uint8Array chunk')\n }\n\n // 2. Append the bytes represented by chunk to bytes.\n bytes.push(chunk)\n byteLength += chunk.length\n\n // 3. Read-loop given reader, bytes, successSteps, and failureSteps.\n }\n}\n\n/**\n * @see https://fetch.spec.whatwg.org/#is-local\n * @param {URL} url\n */\nfunction urlIsLocal (url) {\n assert('protocol' in url) // ensure it's a url object\n\n const protocol = url.protocol\n\n return protocol === 'about:' || protocol === 'blob:' || protocol === 'data:'\n}\n\n/**\n * @param {string|URL} url\n */\nfunction urlHasHttpsScheme (url) {\n if (typeof url === 'string') {\n return url.startsWith('https:')\n }\n\n return url.protocol === 'https:'\n}\n\n/**\n * @see https://fetch.spec.whatwg.org/#http-scheme\n * @param {URL} url\n */\nfunction urlIsHttpHttpsScheme (url) {\n assert('protocol' in url) // ensure it's a url object\n\n const protocol = url.protocol\n\n return protocol === 'http:' || protocol === 'https:'\n}\n\n/**\n * Fetch supports node >= 16.8.0, but Object.hasOwn was added in v16.9.0.\n */\nconst hasOwn = Object.hasOwn || ((dict, key) => Object.prototype.hasOwnProperty.call(dict, key))\n\nmodule.exports = {\n isAborted,\n isCancelled,\n createDeferredPromise,\n ReadableStreamFrom,\n toUSVString,\n tryUpgradeRequestToAPotentiallyTrustworthyURL,\n coarsenedSharedCurrentTime,\n determineRequestsReferrer,\n makePolicyContainer,\n clonePolicyContainer,\n appendFetchMetadata,\n appendRequestOriginHeader,\n TAOCheck,\n corsCheck,\n crossOriginResourcePolicyCheck,\n createOpaqueTimingInfo,\n setRequestReferrerPolicyOnRedirect,\n isValidHTTPToken,\n requestBadPort,\n requestCurrentURL,\n responseURL,\n responseLocationURL,\n isBlobLike,\n isURLPotentiallyTrustworthy,\n isValidReasonPhrase,\n sameOrigin,\n normalizeMethod,\n serializeJavascriptValueToJSONString,\n makeIterator,\n isValidHeaderName,\n isValidHeaderValue,\n hasOwn,\n isErrorLike,\n fullyReadBody,\n bytesMatch,\n isReadableStreamLike,\n readableStreamClose,\n isomorphicEncode,\n isomorphicDecode,\n urlIsLocal,\n urlHasHttpsScheme,\n urlIsHttpHttpsScheme,\n readAllBytes,\n normalizeMethodRecord,\n parseMetadata\n}\n","'use strict'\n\nconst { types } = require('util')\nconst { hasOwn, toUSVString } = require('./util')\n\n/** @type {import('../../types/webidl').Webidl} */\nconst webidl = {}\nwebidl.converters = {}\nwebidl.util = {}\nwebidl.errors = {}\n\nwebidl.errors.exception = function (message) {\n return new TypeError(`${message.header}: ${message.message}`)\n}\n\nwebidl.errors.conversionFailed = function (context) {\n const plural = context.types.length === 1 ? '' : ' one of'\n const message =\n `${context.argument} could not be converted to` +\n `${plural}: ${context.types.join(', ')}.`\n\n return webidl.errors.exception({\n header: context.prefix,\n message\n })\n}\n\nwebidl.errors.invalidArgument = function (context) {\n return webidl.errors.exception({\n header: context.prefix,\n message: `\"${context.value}\" is an invalid ${context.type}.`\n })\n}\n\n// https://webidl.spec.whatwg.org/#implements\nwebidl.brandCheck = function (V, I, opts = undefined) {\n if (opts?.strict !== false && !(V instanceof I)) {\n throw new TypeError('Illegal invocation')\n } else {\n return V?.[Symbol.toStringTag] === I.prototype[Symbol.toStringTag]\n }\n}\n\nwebidl.argumentLengthCheck = function ({ length }, min, ctx) {\n if (length < min) {\n throw webidl.errors.exception({\n message: `${min} argument${min !== 1 ? 's' : ''} required, ` +\n `but${length ? ' only' : ''} ${length} found.`,\n ...ctx\n })\n }\n}\n\nwebidl.illegalConstructor = function () {\n throw webidl.errors.exception({\n header: 'TypeError',\n message: 'Illegal constructor'\n })\n}\n\n// https://tc39.es/ecma262/#sec-ecmascript-data-types-and-values\nwebidl.util.Type = function (V) {\n switch (typeof V) {\n case 'undefined': return 'Undefined'\n case 'boolean': return 'Boolean'\n case 'string': return 'String'\n case 'symbol': return 'Symbol'\n case 'number': return 'Number'\n case 'bigint': return 'BigInt'\n case 'function':\n case 'object': {\n if (V === null) {\n return 'Null'\n }\n\n return 'Object'\n }\n }\n}\n\n// https://webidl.spec.whatwg.org/#abstract-opdef-converttoint\nwebidl.util.ConvertToInt = function (V, bitLength, signedness, opts = {}) {\n let upperBound\n let lowerBound\n\n // 1. If bitLength is 64, then:\n if (bitLength === 64) {\n // 1. Let upperBound be 2^53 − 1.\n upperBound = Math.pow(2, 53) - 1\n\n // 2. If signedness is \"unsigned\", then let lowerBound be 0.\n if (signedness === 'unsigned') {\n lowerBound = 0\n } else {\n // 3. Otherwise let lowerBound be −2^53 + 1.\n lowerBound = Math.pow(-2, 53) + 1\n }\n } else if (signedness === 'unsigned') {\n // 2. Otherwise, if signedness is \"unsigned\", then:\n\n // 1. Let lowerBound be 0.\n lowerBound = 0\n\n // 2. Let upperBound be 2^bitLength − 1.\n upperBound = Math.pow(2, bitLength) - 1\n } else {\n // 3. Otherwise:\n\n // 1. Let lowerBound be -2^bitLength − 1.\n lowerBound = Math.pow(-2, bitLength) - 1\n\n // 2. Let upperBound be 2^bitLength − 1 − 1.\n upperBound = Math.pow(2, bitLength - 1) - 1\n }\n\n // 4. Let x be ? ToNumber(V).\n let x = Number(V)\n\n // 5. If x is −0, then set x to +0.\n if (x === 0) {\n x = 0\n }\n\n // 6. If the conversion is to an IDL type associated\n // with the [EnforceRange] extended attribute, then:\n if (opts.enforceRange === true) {\n // 1. If x is NaN, +∞, or −∞, then throw a TypeError.\n if (\n Number.isNaN(x) ||\n x === Number.POSITIVE_INFINITY ||\n x === Number.NEGATIVE_INFINITY\n ) {\n throw webidl.errors.exception({\n header: 'Integer conversion',\n message: `Could not convert ${V} to an integer.`\n })\n }\n\n // 2. Set x to IntegerPart(x).\n x = webidl.util.IntegerPart(x)\n\n // 3. If x < lowerBound or x > upperBound, then\n // throw a TypeError.\n if (x < lowerBound || x > upperBound) {\n throw webidl.errors.exception({\n header: 'Integer conversion',\n message: `Value must be between ${lowerBound}-${upperBound}, got ${x}.`\n })\n }\n\n // 4. Return x.\n return x\n }\n\n // 7. If x is not NaN and the conversion is to an IDL\n // type associated with the [Clamp] extended\n // attribute, then:\n if (!Number.isNaN(x) && opts.clamp === true) {\n // 1. Set x to min(max(x, lowerBound), upperBound).\n x = Math.min(Math.max(x, lowerBound), upperBound)\n\n // 2. Round x to the nearest integer, choosing the\n // even integer if it lies halfway between two,\n // and choosing +0 rather than −0.\n if (Math.floor(x) % 2 === 0) {\n x = Math.floor(x)\n } else {\n x = Math.ceil(x)\n }\n\n // 3. Return x.\n return x\n }\n\n // 8. If x is NaN, +0, +∞, or −∞, then return +0.\n if (\n Number.isNaN(x) ||\n (x === 0 && Object.is(0, x)) ||\n x === Number.POSITIVE_INFINITY ||\n x === Number.NEGATIVE_INFINITY\n ) {\n return 0\n }\n\n // 9. Set x to IntegerPart(x).\n x = webidl.util.IntegerPart(x)\n\n // 10. Set x to x modulo 2^bitLength.\n x = x % Math.pow(2, bitLength)\n\n // 11. If signedness is \"signed\" and x ≥ 2^bitLength − 1,\n // then return x − 2^bitLength.\n if (signedness === 'signed' && x >= Math.pow(2, bitLength) - 1) {\n return x - Math.pow(2, bitLength)\n }\n\n // 12. Otherwise, return x.\n return x\n}\n\n// https://webidl.spec.whatwg.org/#abstract-opdef-integerpart\nwebidl.util.IntegerPart = function (n) {\n // 1. Let r be floor(abs(n)).\n const r = Math.floor(Math.abs(n))\n\n // 2. If n < 0, then return -1 × r.\n if (n < 0) {\n return -1 * r\n }\n\n // 3. Otherwise, return r.\n return r\n}\n\n// https://webidl.spec.whatwg.org/#es-sequence\nwebidl.sequenceConverter = function (converter) {\n return (V) => {\n // 1. If Type(V) is not Object, throw a TypeError.\n if (webidl.util.Type(V) !== 'Object') {\n throw webidl.errors.exception({\n header: 'Sequence',\n message: `Value of type ${webidl.util.Type(V)} is not an Object.`\n })\n }\n\n // 2. Let method be ? GetMethod(V, @@iterator).\n /** @type {Generator} */\n const method = V?.[Symbol.iterator]?.()\n const seq = []\n\n // 3. If method is undefined, throw a TypeError.\n if (\n method === undefined ||\n typeof method.next !== 'function'\n ) {\n throw webidl.errors.exception({\n header: 'Sequence',\n message: 'Object is not an iterator.'\n })\n }\n\n // https://webidl.spec.whatwg.org/#create-sequence-from-iterable\n while (true) {\n const { done, value } = method.next()\n\n if (done) {\n break\n }\n\n seq.push(converter(value))\n }\n\n return seq\n }\n}\n\n// https://webidl.spec.whatwg.org/#es-to-record\nwebidl.recordConverter = function (keyConverter, valueConverter) {\n return (O) => {\n // 1. If Type(O) is not Object, throw a TypeError.\n if (webidl.util.Type(O) !== 'Object') {\n throw webidl.errors.exception({\n header: 'Record',\n message: `Value of type ${webidl.util.Type(O)} is not an Object.`\n })\n }\n\n // 2. Let result be a new empty instance of record.\n const result = {}\n\n if (!types.isProxy(O)) {\n // Object.keys only returns enumerable properties\n const keys = Object.keys(O)\n\n for (const key of keys) {\n // 1. Let typedKey be key converted to an IDL value of type K.\n const typedKey = keyConverter(key)\n\n // 2. Let value be ? Get(O, key).\n // 3. Let typedValue be value converted to an IDL value of type V.\n const typedValue = valueConverter(O[key])\n\n // 4. Set result[typedKey] to typedValue.\n result[typedKey] = typedValue\n }\n\n // 5. Return result.\n return result\n }\n\n // 3. Let keys be ? O.[[OwnPropertyKeys]]().\n const keys = Reflect.ownKeys(O)\n\n // 4. For each key of keys.\n for (const key of keys) {\n // 1. Let desc be ? O.[[GetOwnProperty]](key).\n const desc = Reflect.getOwnPropertyDescriptor(O, key)\n\n // 2. If desc is not undefined and desc.[[Enumerable]] is true:\n if (desc?.enumerable) {\n // 1. Let typedKey be key converted to an IDL value of type K.\n const typedKey = keyConverter(key)\n\n // 2. Let value be ? Get(O, key).\n // 3. Let typedValue be value converted to an IDL value of type V.\n const typedValue = valueConverter(O[key])\n\n // 4. Set result[typedKey] to typedValue.\n result[typedKey] = typedValue\n }\n }\n\n // 5. Return result.\n return result\n }\n}\n\nwebidl.interfaceConverter = function (i) {\n return (V, opts = {}) => {\n if (opts.strict !== false && !(V instanceof i)) {\n throw webidl.errors.exception({\n header: i.name,\n message: `Expected ${V} to be an instance of ${i.name}.`\n })\n }\n\n return V\n }\n}\n\nwebidl.dictionaryConverter = function (converters) {\n return (dictionary) => {\n const type = webidl.util.Type(dictionary)\n const dict = {}\n\n if (type === 'Null' || type === 'Undefined') {\n return dict\n } else if (type !== 'Object') {\n throw webidl.errors.exception({\n header: 'Dictionary',\n message: `Expected ${dictionary} to be one of: Null, Undefined, Object.`\n })\n }\n\n for (const options of converters) {\n const { key, defaultValue, required, converter } = options\n\n if (required === true) {\n if (!hasOwn(dictionary, key)) {\n throw webidl.errors.exception({\n header: 'Dictionary',\n message: `Missing required key \"${key}\".`\n })\n }\n }\n\n let value = dictionary[key]\n const hasDefault = hasOwn(options, 'defaultValue')\n\n // Only use defaultValue if value is undefined and\n // a defaultValue options was provided.\n if (hasDefault && value !== null) {\n value = value ?? defaultValue\n }\n\n // A key can be optional and have no default value.\n // When this happens, do not perform a conversion,\n // and do not assign the key a value.\n if (required || hasDefault || value !== undefined) {\n value = converter(value)\n\n if (\n options.allowedValues &&\n !options.allowedValues.includes(value)\n ) {\n throw webidl.errors.exception({\n header: 'Dictionary',\n message: `${value} is not an accepted type. Expected one of ${options.allowedValues.join(', ')}.`\n })\n }\n\n dict[key] = value\n }\n }\n\n return dict\n }\n}\n\nwebidl.nullableConverter = function (converter) {\n return (V) => {\n if (V === null) {\n return V\n }\n\n return converter(V)\n }\n}\n\n// https://webidl.spec.whatwg.org/#es-DOMString\nwebidl.converters.DOMString = function (V, opts = {}) {\n // 1. If V is null and the conversion is to an IDL type\n // associated with the [LegacyNullToEmptyString]\n // extended attribute, then return the DOMString value\n // that represents the empty string.\n if (V === null && opts.legacyNullToEmptyString) {\n return ''\n }\n\n // 2. Let x be ? ToString(V).\n if (typeof V === 'symbol') {\n throw new TypeError('Could not convert argument of type symbol to string.')\n }\n\n // 3. Return the IDL DOMString value that represents the\n // same sequence of code units as the one the\n // ECMAScript String value x represents.\n return String(V)\n}\n\n// https://webidl.spec.whatwg.org/#es-ByteString\nwebidl.converters.ByteString = function (V) {\n // 1. Let x be ? ToString(V).\n // Note: DOMString converter perform ? ToString(V)\n const x = webidl.converters.DOMString(V)\n\n // 2. If the value of any element of x is greater than\n // 255, then throw a TypeError.\n for (let index = 0; index < x.length; index++) {\n if (x.charCodeAt(index) > 255) {\n throw new TypeError(\n 'Cannot convert argument to a ByteString because the character at ' +\n `index ${index} has a value of ${x.charCodeAt(index)} which is greater than 255.`\n )\n }\n }\n\n // 3. Return an IDL ByteString value whose length is the\n // length of x, and where the value of each element is\n // the value of the corresponding element of x.\n return x\n}\n\n// https://webidl.spec.whatwg.org/#es-USVString\nwebidl.converters.USVString = toUSVString\n\n// https://webidl.spec.whatwg.org/#es-boolean\nwebidl.converters.boolean = function (V) {\n // 1. Let x be the result of computing ToBoolean(V).\n const x = Boolean(V)\n\n // 2. Return the IDL boolean value that is the one that represents\n // the same truth value as the ECMAScript Boolean value x.\n return x\n}\n\n// https://webidl.spec.whatwg.org/#es-any\nwebidl.converters.any = function (V) {\n return V\n}\n\n// https://webidl.spec.whatwg.org/#es-long-long\nwebidl.converters['long long'] = function (V) {\n // 1. Let x be ? ConvertToInt(V, 64, \"signed\").\n const x = webidl.util.ConvertToInt(V, 64, 'signed')\n\n // 2. Return the IDL long long value that represents\n // the same numeric value as x.\n return x\n}\n\n// https://webidl.spec.whatwg.org/#es-unsigned-long-long\nwebidl.converters['unsigned long long'] = function (V) {\n // 1. Let x be ? ConvertToInt(V, 64, \"unsigned\").\n const x = webidl.util.ConvertToInt(V, 64, 'unsigned')\n\n // 2. Return the IDL unsigned long long value that\n // represents the same numeric value as x.\n return x\n}\n\n// https://webidl.spec.whatwg.org/#es-unsigned-long\nwebidl.converters['unsigned long'] = function (V) {\n // 1. Let x be ? ConvertToInt(V, 32, \"unsigned\").\n const x = webidl.util.ConvertToInt(V, 32, 'unsigned')\n\n // 2. Return the IDL unsigned long value that\n // represents the same numeric value as x.\n return x\n}\n\n// https://webidl.spec.whatwg.org/#es-unsigned-short\nwebidl.converters['unsigned short'] = function (V, opts) {\n // 1. Let x be ? ConvertToInt(V, 16, \"unsigned\").\n const x = webidl.util.ConvertToInt(V, 16, 'unsigned', opts)\n\n // 2. Return the IDL unsigned short value that represents\n // the same numeric value as x.\n return x\n}\n\n// https://webidl.spec.whatwg.org/#idl-ArrayBuffer\nwebidl.converters.ArrayBuffer = function (V, opts = {}) {\n // 1. If Type(V) is not Object, or V does not have an\n // [[ArrayBufferData]] internal slot, then throw a\n // TypeError.\n // see: https://tc39.es/ecma262/#sec-properties-of-the-arraybuffer-instances\n // see: https://tc39.es/ecma262/#sec-properties-of-the-sharedarraybuffer-instances\n if (\n webidl.util.Type(V) !== 'Object' ||\n !types.isAnyArrayBuffer(V)\n ) {\n throw webidl.errors.conversionFailed({\n prefix: `${V}`,\n argument: `${V}`,\n types: ['ArrayBuffer']\n })\n }\n\n // 2. If the conversion is not to an IDL type associated\n // with the [AllowShared] extended attribute, and\n // IsSharedArrayBuffer(V) is true, then throw a\n // TypeError.\n if (opts.allowShared === false && types.isSharedArrayBuffer(V)) {\n throw webidl.errors.exception({\n header: 'ArrayBuffer',\n message: 'SharedArrayBuffer is not allowed.'\n })\n }\n\n // 3. If the conversion is not to an IDL type associated\n // with the [AllowResizable] extended attribute, and\n // IsResizableArrayBuffer(V) is true, then throw a\n // TypeError.\n // Note: resizable ArrayBuffers are currently a proposal.\n\n // 4. Return the IDL ArrayBuffer value that is a\n // reference to the same object as V.\n return V\n}\n\nwebidl.converters.TypedArray = function (V, T, opts = {}) {\n // 1. Let T be the IDL type V is being converted to.\n\n // 2. If Type(V) is not Object, or V does not have a\n // [[TypedArrayName]] internal slot with a value\n // equal to T’s name, then throw a TypeError.\n if (\n webidl.util.Type(V) !== 'Object' ||\n !types.isTypedArray(V) ||\n V.constructor.name !== T.name\n ) {\n throw webidl.errors.conversionFailed({\n prefix: `${T.name}`,\n argument: `${V}`,\n types: [T.name]\n })\n }\n\n // 3. If the conversion is not to an IDL type associated\n // with the [AllowShared] extended attribute, and\n // IsSharedArrayBuffer(V.[[ViewedArrayBuffer]]) is\n // true, then throw a TypeError.\n if (opts.allowShared === false && types.isSharedArrayBuffer(V.buffer)) {\n throw webidl.errors.exception({\n header: 'ArrayBuffer',\n message: 'SharedArrayBuffer is not allowed.'\n })\n }\n\n // 4. If the conversion is not to an IDL type associated\n // with the [AllowResizable] extended attribute, and\n // IsResizableArrayBuffer(V.[[ViewedArrayBuffer]]) is\n // true, then throw a TypeError.\n // Note: resizable array buffers are currently a proposal\n\n // 5. Return the IDL value of type T that is a reference\n // to the same object as V.\n return V\n}\n\nwebidl.converters.DataView = function (V, opts = {}) {\n // 1. If Type(V) is not Object, or V does not have a\n // [[DataView]] internal slot, then throw a TypeError.\n if (webidl.util.Type(V) !== 'Object' || !types.isDataView(V)) {\n throw webidl.errors.exception({\n header: 'DataView',\n message: 'Object is not a DataView.'\n })\n }\n\n // 2. If the conversion is not to an IDL type associated\n // with the [AllowShared] extended attribute, and\n // IsSharedArrayBuffer(V.[[ViewedArrayBuffer]]) is true,\n // then throw a TypeError.\n if (opts.allowShared === false && types.isSharedArrayBuffer(V.buffer)) {\n throw webidl.errors.exception({\n header: 'ArrayBuffer',\n message: 'SharedArrayBuffer is not allowed.'\n })\n }\n\n // 3. If the conversion is not to an IDL type associated\n // with the [AllowResizable] extended attribute, and\n // IsResizableArrayBuffer(V.[[ViewedArrayBuffer]]) is\n // true, then throw a TypeError.\n // Note: resizable ArrayBuffers are currently a proposal\n\n // 4. Return the IDL DataView value that is a reference\n // to the same object as V.\n return V\n}\n\n// https://webidl.spec.whatwg.org/#BufferSource\nwebidl.converters.BufferSource = function (V, opts = {}) {\n if (types.isAnyArrayBuffer(V)) {\n return webidl.converters.ArrayBuffer(V, opts)\n }\n\n if (types.isTypedArray(V)) {\n return webidl.converters.TypedArray(V, V.constructor)\n }\n\n if (types.isDataView(V)) {\n return webidl.converters.DataView(V, opts)\n }\n\n throw new TypeError(`Could not convert ${V} to a BufferSource.`)\n}\n\nwebidl.converters['sequence'] = webidl.sequenceConverter(\n webidl.converters.ByteString\n)\n\nwebidl.converters['sequence>'] = webidl.sequenceConverter(\n webidl.converters['sequence']\n)\n\nwebidl.converters['record'] = webidl.recordConverter(\n webidl.converters.ByteString,\n webidl.converters.ByteString\n)\n\nmodule.exports = {\n webidl\n}\n","'use strict'\n\n/**\n * @see https://encoding.spec.whatwg.org/#concept-encoding-get\n * @param {string|undefined} label\n */\nfunction getEncoding (label) {\n if (!label) {\n return 'failure'\n }\n\n // 1. Remove any leading and trailing ASCII whitespace from label.\n // 2. If label is an ASCII case-insensitive match for any of the\n // labels listed in the table below, then return the\n // corresponding encoding; otherwise return failure.\n switch (label.trim().toLowerCase()) {\n case 'unicode-1-1-utf-8':\n case 'unicode11utf8':\n case 'unicode20utf8':\n case 'utf-8':\n case 'utf8':\n case 'x-unicode20utf8':\n return 'UTF-8'\n case '866':\n case 'cp866':\n case 'csibm866':\n case 'ibm866':\n return 'IBM866'\n case 'csisolatin2':\n case 'iso-8859-2':\n case 'iso-ir-101':\n case 'iso8859-2':\n case 'iso88592':\n case 'iso_8859-2':\n case 'iso_8859-2:1987':\n case 'l2':\n case 'latin2':\n return 'ISO-8859-2'\n case 'csisolatin3':\n case 'iso-8859-3':\n case 'iso-ir-109':\n case 'iso8859-3':\n case 'iso88593':\n case 'iso_8859-3':\n case 'iso_8859-3:1988':\n case 'l3':\n case 'latin3':\n return 'ISO-8859-3'\n case 'csisolatin4':\n case 'iso-8859-4':\n case 'iso-ir-110':\n case 'iso8859-4':\n case 'iso88594':\n case 'iso_8859-4':\n case 'iso_8859-4:1988':\n case 'l4':\n case 'latin4':\n return 'ISO-8859-4'\n case 'csisolatincyrillic':\n case 'cyrillic':\n case 'iso-8859-5':\n case 'iso-ir-144':\n case 'iso8859-5':\n case 'iso88595':\n case 'iso_8859-5':\n case 'iso_8859-5:1988':\n return 'ISO-8859-5'\n case 'arabic':\n case 'asmo-708':\n case 'csiso88596e':\n case 'csiso88596i':\n case 'csisolatinarabic':\n case 'ecma-114':\n case 'iso-8859-6':\n case 'iso-8859-6-e':\n case 'iso-8859-6-i':\n case 'iso-ir-127':\n case 'iso8859-6':\n case 'iso88596':\n case 'iso_8859-6':\n case 'iso_8859-6:1987':\n return 'ISO-8859-6'\n case 'csisolatingreek':\n case 'ecma-118':\n case 'elot_928':\n case 'greek':\n case 'greek8':\n case 'iso-8859-7':\n case 'iso-ir-126':\n case 'iso8859-7':\n case 'iso88597':\n case 'iso_8859-7':\n case 'iso_8859-7:1987':\n case 'sun_eu_greek':\n return 'ISO-8859-7'\n case 'csiso88598e':\n case 'csisolatinhebrew':\n case 'hebrew':\n case 'iso-8859-8':\n case 'iso-8859-8-e':\n case 'iso-ir-138':\n case 'iso8859-8':\n case 'iso88598':\n case 'iso_8859-8':\n case 'iso_8859-8:1988':\n case 'visual':\n return 'ISO-8859-8'\n case 'csiso88598i':\n case 'iso-8859-8-i':\n case 'logical':\n return 'ISO-8859-8-I'\n case 'csisolatin6':\n case 'iso-8859-10':\n case 'iso-ir-157':\n case 'iso8859-10':\n case 'iso885910':\n case 'l6':\n case 'latin6':\n return 'ISO-8859-10'\n case 'iso-8859-13':\n case 'iso8859-13':\n case 'iso885913':\n return 'ISO-8859-13'\n case 'iso-8859-14':\n case 'iso8859-14':\n case 'iso885914':\n return 'ISO-8859-14'\n case 'csisolatin9':\n case 'iso-8859-15':\n case 'iso8859-15':\n case 'iso885915':\n case 'iso_8859-15':\n case 'l9':\n return 'ISO-8859-15'\n case 'iso-8859-16':\n return 'ISO-8859-16'\n case 'cskoi8r':\n case 'koi':\n case 'koi8':\n case 'koi8-r':\n case 'koi8_r':\n return 'KOI8-R'\n case 'koi8-ru':\n case 'koi8-u':\n return 'KOI8-U'\n case 'csmacintosh':\n case 'mac':\n case 'macintosh':\n case 'x-mac-roman':\n return 'macintosh'\n case 'iso-8859-11':\n case 'iso8859-11':\n case 'iso885911':\n case 'tis-620':\n case 'windows-874':\n return 'windows-874'\n case 'cp1250':\n case 'windows-1250':\n case 'x-cp1250':\n return 'windows-1250'\n case 'cp1251':\n case 'windows-1251':\n case 'x-cp1251':\n return 'windows-1251'\n case 'ansi_x3.4-1968':\n case 'ascii':\n case 'cp1252':\n case 'cp819':\n case 'csisolatin1':\n case 'ibm819':\n case 'iso-8859-1':\n case 'iso-ir-100':\n case 'iso8859-1':\n case 'iso88591':\n case 'iso_8859-1':\n case 'iso_8859-1:1987':\n case 'l1':\n case 'latin1':\n case 'us-ascii':\n case 'windows-1252':\n case 'x-cp1252':\n return 'windows-1252'\n case 'cp1253':\n case 'windows-1253':\n case 'x-cp1253':\n return 'windows-1253'\n case 'cp1254':\n case 'csisolatin5':\n case 'iso-8859-9':\n case 'iso-ir-148':\n case 'iso8859-9':\n case 'iso88599':\n case 'iso_8859-9':\n case 'iso_8859-9:1989':\n case 'l5':\n case 'latin5':\n case 'windows-1254':\n case 'x-cp1254':\n return 'windows-1254'\n case 'cp1255':\n case 'windows-1255':\n case 'x-cp1255':\n return 'windows-1255'\n case 'cp1256':\n case 'windows-1256':\n case 'x-cp1256':\n return 'windows-1256'\n case 'cp1257':\n case 'windows-1257':\n case 'x-cp1257':\n return 'windows-1257'\n case 'cp1258':\n case 'windows-1258':\n case 'x-cp1258':\n return 'windows-1258'\n case 'x-mac-cyrillic':\n case 'x-mac-ukrainian':\n return 'x-mac-cyrillic'\n case 'chinese':\n case 'csgb2312':\n case 'csiso58gb231280':\n case 'gb2312':\n case 'gb_2312':\n case 'gb_2312-80':\n case 'gbk':\n case 'iso-ir-58':\n case 'x-gbk':\n return 'GBK'\n case 'gb18030':\n return 'gb18030'\n case 'big5':\n case 'big5-hkscs':\n case 'cn-big5':\n case 'csbig5':\n case 'x-x-big5':\n return 'Big5'\n case 'cseucpkdfmtjapanese':\n case 'euc-jp':\n case 'x-euc-jp':\n return 'EUC-JP'\n case 'csiso2022jp':\n case 'iso-2022-jp':\n return 'ISO-2022-JP'\n case 'csshiftjis':\n case 'ms932':\n case 'ms_kanji':\n case 'shift-jis':\n case 'shift_jis':\n case 'sjis':\n case 'windows-31j':\n case 'x-sjis':\n return 'Shift_JIS'\n case 'cseuckr':\n case 'csksc56011987':\n case 'euc-kr':\n case 'iso-ir-149':\n case 'korean':\n case 'ks_c_5601-1987':\n case 'ks_c_5601-1989':\n case 'ksc5601':\n case 'ksc_5601':\n case 'windows-949':\n return 'EUC-KR'\n case 'csiso2022kr':\n case 'hz-gb-2312':\n case 'iso-2022-cn':\n case 'iso-2022-cn-ext':\n case 'iso-2022-kr':\n case 'replacement':\n return 'replacement'\n case 'unicodefffe':\n case 'utf-16be':\n return 'UTF-16BE'\n case 'csunicode':\n case 'iso-10646-ucs-2':\n case 'ucs-2':\n case 'unicode':\n case 'unicodefeff':\n case 'utf-16':\n case 'utf-16le':\n return 'UTF-16LE'\n case 'x-user-defined':\n return 'x-user-defined'\n default: return 'failure'\n }\n}\n\nmodule.exports = {\n getEncoding\n}\n","'use strict'\n\nconst {\n staticPropertyDescriptors,\n readOperation,\n fireAProgressEvent\n} = require('./util')\nconst {\n kState,\n kError,\n kResult,\n kEvents,\n kAborted\n} = require('./symbols')\nconst { webidl } = require('../fetch/webidl')\nconst { kEnumerableProperty } = require('../core/util')\n\nclass FileReader extends EventTarget {\n constructor () {\n super()\n\n this[kState] = 'empty'\n this[kResult] = null\n this[kError] = null\n this[kEvents] = {\n loadend: null,\n error: null,\n abort: null,\n load: null,\n progress: null,\n loadstart: null\n }\n }\n\n /**\n * @see https://w3c.github.io/FileAPI/#dfn-readAsArrayBuffer\n * @param {import('buffer').Blob} blob\n */\n readAsArrayBuffer (blob) {\n webidl.brandCheck(this, FileReader)\n\n webidl.argumentLengthCheck(arguments, 1, { header: 'FileReader.readAsArrayBuffer' })\n\n blob = webidl.converters.Blob(blob, { strict: false })\n\n // The readAsArrayBuffer(blob) method, when invoked,\n // must initiate a read operation for blob with ArrayBuffer.\n readOperation(this, blob, 'ArrayBuffer')\n }\n\n /**\n * @see https://w3c.github.io/FileAPI/#readAsBinaryString\n * @param {import('buffer').Blob} blob\n */\n readAsBinaryString (blob) {\n webidl.brandCheck(this, FileReader)\n\n webidl.argumentLengthCheck(arguments, 1, { header: 'FileReader.readAsBinaryString' })\n\n blob = webidl.converters.Blob(blob, { strict: false })\n\n // The readAsBinaryString(blob) method, when invoked,\n // must initiate a read operation for blob with BinaryString.\n readOperation(this, blob, 'BinaryString')\n }\n\n /**\n * @see https://w3c.github.io/FileAPI/#readAsDataText\n * @param {import('buffer').Blob} blob\n * @param {string?} encoding\n */\n readAsText (blob, encoding = undefined) {\n webidl.brandCheck(this, FileReader)\n\n webidl.argumentLengthCheck(arguments, 1, { header: 'FileReader.readAsText' })\n\n blob = webidl.converters.Blob(blob, { strict: false })\n\n if (encoding !== undefined) {\n encoding = webidl.converters.DOMString(encoding)\n }\n\n // The readAsText(blob, encoding) method, when invoked,\n // must initiate a read operation for blob with Text and encoding.\n readOperation(this, blob, 'Text', encoding)\n }\n\n /**\n * @see https://w3c.github.io/FileAPI/#dfn-readAsDataURL\n * @param {import('buffer').Blob} blob\n */\n readAsDataURL (blob) {\n webidl.brandCheck(this, FileReader)\n\n webidl.argumentLengthCheck(arguments, 1, { header: 'FileReader.readAsDataURL' })\n\n blob = webidl.converters.Blob(blob, { strict: false })\n\n // The readAsDataURL(blob) method, when invoked, must\n // initiate a read operation for blob with DataURL.\n readOperation(this, blob, 'DataURL')\n }\n\n /**\n * @see https://w3c.github.io/FileAPI/#dfn-abort\n */\n abort () {\n // 1. If this's state is \"empty\" or if this's state is\n // \"done\" set this's result to null and terminate\n // this algorithm.\n if (this[kState] === 'empty' || this[kState] === 'done') {\n this[kResult] = null\n return\n }\n\n // 2. If this's state is \"loading\" set this's state to\n // \"done\" and set this's result to null.\n if (this[kState] === 'loading') {\n this[kState] = 'done'\n this[kResult] = null\n }\n\n // 3. If there are any tasks from this on the file reading\n // task source in an affiliated task queue, then remove\n // those tasks from that task queue.\n this[kAborted] = true\n\n // 4. Terminate the algorithm for the read method being processed.\n // TODO\n\n // 5. Fire a progress event called abort at this.\n fireAProgressEvent('abort', this)\n\n // 6. If this's state is not \"loading\", fire a progress\n // event called loadend at this.\n if (this[kState] !== 'loading') {\n fireAProgressEvent('loadend', this)\n }\n }\n\n /**\n * @see https://w3c.github.io/FileAPI/#dom-filereader-readystate\n */\n get readyState () {\n webidl.brandCheck(this, FileReader)\n\n switch (this[kState]) {\n case 'empty': return this.EMPTY\n case 'loading': return this.LOADING\n case 'done': return this.DONE\n }\n }\n\n /**\n * @see https://w3c.github.io/FileAPI/#dom-filereader-result\n */\n get result () {\n webidl.brandCheck(this, FileReader)\n\n // The result attribute’s getter, when invoked, must return\n // this's result.\n return this[kResult]\n }\n\n /**\n * @see https://w3c.github.io/FileAPI/#dom-filereader-error\n */\n get error () {\n webidl.brandCheck(this, FileReader)\n\n // The error attribute’s getter, when invoked, must return\n // this's error.\n return this[kError]\n }\n\n get onloadend () {\n webidl.brandCheck(this, FileReader)\n\n return this[kEvents].loadend\n }\n\n set onloadend (fn) {\n webidl.brandCheck(this, FileReader)\n\n if (this[kEvents].loadend) {\n this.removeEventListener('loadend', this[kEvents].loadend)\n }\n\n if (typeof fn === 'function') {\n this[kEvents].loadend = fn\n this.addEventListener('loadend', fn)\n } else {\n this[kEvents].loadend = null\n }\n }\n\n get onerror () {\n webidl.brandCheck(this, FileReader)\n\n return this[kEvents].error\n }\n\n set onerror (fn) {\n webidl.brandCheck(this, FileReader)\n\n if (this[kEvents].error) {\n this.removeEventListener('error', this[kEvents].error)\n }\n\n if (typeof fn === 'function') {\n this[kEvents].error = fn\n this.addEventListener('error', fn)\n } else {\n this[kEvents].error = null\n }\n }\n\n get onloadstart () {\n webidl.brandCheck(this, FileReader)\n\n return this[kEvents].loadstart\n }\n\n set onloadstart (fn) {\n webidl.brandCheck(this, FileReader)\n\n if (this[kEvents].loadstart) {\n this.removeEventListener('loadstart', this[kEvents].loadstart)\n }\n\n if (typeof fn === 'function') {\n this[kEvents].loadstart = fn\n this.addEventListener('loadstart', fn)\n } else {\n this[kEvents].loadstart = null\n }\n }\n\n get onprogress () {\n webidl.brandCheck(this, FileReader)\n\n return this[kEvents].progress\n }\n\n set onprogress (fn) {\n webidl.brandCheck(this, FileReader)\n\n if (this[kEvents].progress) {\n this.removeEventListener('progress', this[kEvents].progress)\n }\n\n if (typeof fn === 'function') {\n this[kEvents].progress = fn\n this.addEventListener('progress', fn)\n } else {\n this[kEvents].progress = null\n }\n }\n\n get onload () {\n webidl.brandCheck(this, FileReader)\n\n return this[kEvents].load\n }\n\n set onload (fn) {\n webidl.brandCheck(this, FileReader)\n\n if (this[kEvents].load) {\n this.removeEventListener('load', this[kEvents].load)\n }\n\n if (typeof fn === 'function') {\n this[kEvents].load = fn\n this.addEventListener('load', fn)\n } else {\n this[kEvents].load = null\n }\n }\n\n get onabort () {\n webidl.brandCheck(this, FileReader)\n\n return this[kEvents].abort\n }\n\n set onabort (fn) {\n webidl.brandCheck(this, FileReader)\n\n if (this[kEvents].abort) {\n this.removeEventListener('abort', this[kEvents].abort)\n }\n\n if (typeof fn === 'function') {\n this[kEvents].abort = fn\n this.addEventListener('abort', fn)\n } else {\n this[kEvents].abort = null\n }\n }\n}\n\n// https://w3c.github.io/FileAPI/#dom-filereader-empty\nFileReader.EMPTY = FileReader.prototype.EMPTY = 0\n// https://w3c.github.io/FileAPI/#dom-filereader-loading\nFileReader.LOADING = FileReader.prototype.LOADING = 1\n// https://w3c.github.io/FileAPI/#dom-filereader-done\nFileReader.DONE = FileReader.prototype.DONE = 2\n\nObject.defineProperties(FileReader.prototype, {\n EMPTY: staticPropertyDescriptors,\n LOADING: staticPropertyDescriptors,\n DONE: staticPropertyDescriptors,\n readAsArrayBuffer: kEnumerableProperty,\n readAsBinaryString: kEnumerableProperty,\n readAsText: kEnumerableProperty,\n readAsDataURL: kEnumerableProperty,\n abort: kEnumerableProperty,\n readyState: kEnumerableProperty,\n result: kEnumerableProperty,\n error: kEnumerableProperty,\n onloadstart: kEnumerableProperty,\n onprogress: kEnumerableProperty,\n onload: kEnumerableProperty,\n onabort: kEnumerableProperty,\n onerror: kEnumerableProperty,\n onloadend: kEnumerableProperty,\n [Symbol.toStringTag]: {\n value: 'FileReader',\n writable: false,\n enumerable: false,\n configurable: true\n }\n})\n\nObject.defineProperties(FileReader, {\n EMPTY: staticPropertyDescriptors,\n LOADING: staticPropertyDescriptors,\n DONE: staticPropertyDescriptors\n})\n\nmodule.exports = {\n FileReader\n}\n","'use strict'\n\nconst { webidl } = require('../fetch/webidl')\n\nconst kState = Symbol('ProgressEvent state')\n\n/**\n * @see https://xhr.spec.whatwg.org/#progressevent\n */\nclass ProgressEvent extends Event {\n constructor (type, eventInitDict = {}) {\n type = webidl.converters.DOMString(type)\n eventInitDict = webidl.converters.ProgressEventInit(eventInitDict ?? {})\n\n super(type, eventInitDict)\n\n this[kState] = {\n lengthComputable: eventInitDict.lengthComputable,\n loaded: eventInitDict.loaded,\n total: eventInitDict.total\n }\n }\n\n get lengthComputable () {\n webidl.brandCheck(this, ProgressEvent)\n\n return this[kState].lengthComputable\n }\n\n get loaded () {\n webidl.brandCheck(this, ProgressEvent)\n\n return this[kState].loaded\n }\n\n get total () {\n webidl.brandCheck(this, ProgressEvent)\n\n return this[kState].total\n }\n}\n\nwebidl.converters.ProgressEventInit = webidl.dictionaryConverter([\n {\n key: 'lengthComputable',\n converter: webidl.converters.boolean,\n defaultValue: false\n },\n {\n key: 'loaded',\n converter: webidl.converters['unsigned long long'],\n defaultValue: 0\n },\n {\n key: 'total',\n converter: webidl.converters['unsigned long long'],\n defaultValue: 0\n },\n {\n key: 'bubbles',\n converter: webidl.converters.boolean,\n defaultValue: false\n },\n {\n key: 'cancelable',\n converter: webidl.converters.boolean,\n defaultValue: false\n },\n {\n key: 'composed',\n converter: webidl.converters.boolean,\n defaultValue: false\n }\n])\n\nmodule.exports = {\n ProgressEvent\n}\n","'use strict'\n\nmodule.exports = {\n kState: Symbol('FileReader state'),\n kResult: Symbol('FileReader result'),\n kError: Symbol('FileReader error'),\n kLastProgressEventFired: Symbol('FileReader last progress event fired timestamp'),\n kEvents: Symbol('FileReader events'),\n kAborted: Symbol('FileReader aborted')\n}\n","'use strict'\n\nconst {\n kState,\n kError,\n kResult,\n kAborted,\n kLastProgressEventFired\n} = require('./symbols')\nconst { ProgressEvent } = require('./progressevent')\nconst { getEncoding } = require('./encoding')\nconst { DOMException } = require('../fetch/constants')\nconst { serializeAMimeType, parseMIMEType } = require('../fetch/dataURL')\nconst { types } = require('util')\nconst { StringDecoder } = require('string_decoder')\nconst { btoa } = require('buffer')\n\n/** @type {PropertyDescriptor} */\nconst staticPropertyDescriptors = {\n enumerable: true,\n writable: false,\n configurable: false\n}\n\n/**\n * @see https://w3c.github.io/FileAPI/#readOperation\n * @param {import('./filereader').FileReader} fr\n * @param {import('buffer').Blob} blob\n * @param {string} type\n * @param {string?} encodingName\n */\nfunction readOperation (fr, blob, type, encodingName) {\n // 1. If fr’s state is \"loading\", throw an InvalidStateError\n // DOMException.\n if (fr[kState] === 'loading') {\n throw new DOMException('Invalid state', 'InvalidStateError')\n }\n\n // 2. Set fr’s state to \"loading\".\n fr[kState] = 'loading'\n\n // 3. Set fr’s result to null.\n fr[kResult] = null\n\n // 4. Set fr’s error to null.\n fr[kError] = null\n\n // 5. Let stream be the result of calling get stream on blob.\n /** @type {import('stream/web').ReadableStream} */\n const stream = blob.stream()\n\n // 6. Let reader be the result of getting a reader from stream.\n const reader = stream.getReader()\n\n // 7. Let bytes be an empty byte sequence.\n /** @type {Uint8Array[]} */\n const bytes = []\n\n // 8. Let chunkPromise be the result of reading a chunk from\n // stream with reader.\n let chunkPromise = reader.read()\n\n // 9. Let isFirstChunk be true.\n let isFirstChunk = true\n\n // 10. In parallel, while true:\n // Note: \"In parallel\" just means non-blocking\n // Note 2: readOperation itself cannot be async as double\n // reading the body would then reject the promise, instead\n // of throwing an error.\n ;(async () => {\n while (!fr[kAborted]) {\n // 1. Wait for chunkPromise to be fulfilled or rejected.\n try {\n const { done, value } = await chunkPromise\n\n // 2. If chunkPromise is fulfilled, and isFirstChunk is\n // true, queue a task to fire a progress event called\n // loadstart at fr.\n if (isFirstChunk && !fr[kAborted]) {\n queueMicrotask(() => {\n fireAProgressEvent('loadstart', fr)\n })\n }\n\n // 3. Set isFirstChunk to false.\n isFirstChunk = false\n\n // 4. If chunkPromise is fulfilled with an object whose\n // done property is false and whose value property is\n // a Uint8Array object, run these steps:\n if (!done && types.isUint8Array(value)) {\n // 1. Let bs be the byte sequence represented by the\n // Uint8Array object.\n\n // 2. Append bs to bytes.\n bytes.push(value)\n\n // 3. If roughly 50ms have passed since these steps\n // were last invoked, queue a task to fire a\n // progress event called progress at fr.\n if (\n (\n fr[kLastProgressEventFired] === undefined ||\n Date.now() - fr[kLastProgressEventFired] >= 50\n ) &&\n !fr[kAborted]\n ) {\n fr[kLastProgressEventFired] = Date.now()\n queueMicrotask(() => {\n fireAProgressEvent('progress', fr)\n })\n }\n\n // 4. Set chunkPromise to the result of reading a\n // chunk from stream with reader.\n chunkPromise = reader.read()\n } else if (done) {\n // 5. Otherwise, if chunkPromise is fulfilled with an\n // object whose done property is true, queue a task\n // to run the following steps and abort this algorithm:\n queueMicrotask(() => {\n // 1. Set fr’s state to \"done\".\n fr[kState] = 'done'\n\n // 2. Let result be the result of package data given\n // bytes, type, blob’s type, and encodingName.\n try {\n const result = packageData(bytes, type, blob.type, encodingName)\n\n // 4. Else:\n\n if (fr[kAborted]) {\n return\n }\n\n // 1. Set fr’s result to result.\n fr[kResult] = result\n\n // 2. Fire a progress event called load at the fr.\n fireAProgressEvent('load', fr)\n } catch (error) {\n // 3. If package data threw an exception error:\n\n // 1. Set fr’s error to error.\n fr[kError] = error\n\n // 2. Fire a progress event called error at fr.\n fireAProgressEvent('error', fr)\n }\n\n // 5. If fr’s state is not \"loading\", fire a progress\n // event called loadend at the fr.\n if (fr[kState] !== 'loading') {\n fireAProgressEvent('loadend', fr)\n }\n })\n\n break\n }\n } catch (error) {\n if (fr[kAborted]) {\n return\n }\n\n // 6. Otherwise, if chunkPromise is rejected with an\n // error error, queue a task to run the following\n // steps and abort this algorithm:\n queueMicrotask(() => {\n // 1. Set fr’s state to \"done\".\n fr[kState] = 'done'\n\n // 2. Set fr’s error to error.\n fr[kError] = error\n\n // 3. Fire a progress event called error at fr.\n fireAProgressEvent('error', fr)\n\n // 4. If fr’s state is not \"loading\", fire a progress\n // event called loadend at fr.\n if (fr[kState] !== 'loading') {\n fireAProgressEvent('loadend', fr)\n }\n })\n\n break\n }\n }\n })()\n}\n\n/**\n * @see https://w3c.github.io/FileAPI/#fire-a-progress-event\n * @see https://dom.spec.whatwg.org/#concept-event-fire\n * @param {string} e The name of the event\n * @param {import('./filereader').FileReader} reader\n */\nfunction fireAProgressEvent (e, reader) {\n // The progress event e does not bubble. e.bubbles must be false\n // The progress event e is NOT cancelable. e.cancelable must be false\n const event = new ProgressEvent(e, {\n bubbles: false,\n cancelable: false\n })\n\n reader.dispatchEvent(event)\n}\n\n/**\n * @see https://w3c.github.io/FileAPI/#blob-package-data\n * @param {Uint8Array[]} bytes\n * @param {string} type\n * @param {string?} mimeType\n * @param {string?} encodingName\n */\nfunction packageData (bytes, type, mimeType, encodingName) {\n // 1. A Blob has an associated package data algorithm, given\n // bytes, a type, a optional mimeType, and a optional\n // encodingName, which switches on type and runs the\n // associated steps:\n\n switch (type) {\n case 'DataURL': {\n // 1. Return bytes as a DataURL [RFC2397] subject to\n // the considerations below:\n // * Use mimeType as part of the Data URL if it is\n // available in keeping with the Data URL\n // specification [RFC2397].\n // * If mimeType is not available return a Data URL\n // without a media-type. [RFC2397].\n\n // https://datatracker.ietf.org/doc/html/rfc2397#section-3\n // dataurl := \"data:\" [ mediatype ] [ \";base64\" ] \",\" data\n // mediatype := [ type \"/\" subtype ] *( \";\" parameter )\n // data := *urlchar\n // parameter := attribute \"=\" value\n let dataURL = 'data:'\n\n const parsed = parseMIMEType(mimeType || 'application/octet-stream')\n\n if (parsed !== 'failure') {\n dataURL += serializeAMimeType(parsed)\n }\n\n dataURL += ';base64,'\n\n const decoder = new StringDecoder('latin1')\n\n for (const chunk of bytes) {\n dataURL += btoa(decoder.write(chunk))\n }\n\n dataURL += btoa(decoder.end())\n\n return dataURL\n }\n case 'Text': {\n // 1. Let encoding be failure\n let encoding = 'failure'\n\n // 2. If the encodingName is present, set encoding to the\n // result of getting an encoding from encodingName.\n if (encodingName) {\n encoding = getEncoding(encodingName)\n }\n\n // 3. If encoding is failure, and mimeType is present:\n if (encoding === 'failure' && mimeType) {\n // 1. Let type be the result of parse a MIME type\n // given mimeType.\n const type = parseMIMEType(mimeType)\n\n // 2. If type is not failure, set encoding to the result\n // of getting an encoding from type’s parameters[\"charset\"].\n if (type !== 'failure') {\n encoding = getEncoding(type.parameters.get('charset'))\n }\n }\n\n // 4. If encoding is failure, then set encoding to UTF-8.\n if (encoding === 'failure') {\n encoding = 'UTF-8'\n }\n\n // 5. Decode bytes using fallback encoding encoding, and\n // return the result.\n return decode(bytes, encoding)\n }\n case 'ArrayBuffer': {\n // Return a new ArrayBuffer whose contents are bytes.\n const sequence = combineByteSequences(bytes)\n\n return sequence.buffer\n }\n case 'BinaryString': {\n // Return bytes as a binary string, in which every byte\n // is represented by a code unit of equal value [0..255].\n let binaryString = ''\n\n const decoder = new StringDecoder('latin1')\n\n for (const chunk of bytes) {\n binaryString += decoder.write(chunk)\n }\n\n binaryString += decoder.end()\n\n return binaryString\n }\n }\n}\n\n/**\n * @see https://encoding.spec.whatwg.org/#decode\n * @param {Uint8Array[]} ioQueue\n * @param {string} encoding\n */\nfunction decode (ioQueue, encoding) {\n const bytes = combineByteSequences(ioQueue)\n\n // 1. Let BOMEncoding be the result of BOM sniffing ioQueue.\n const BOMEncoding = BOMSniffing(bytes)\n\n let slice = 0\n\n // 2. If BOMEncoding is non-null:\n if (BOMEncoding !== null) {\n // 1. Set encoding to BOMEncoding.\n encoding = BOMEncoding\n\n // 2. Read three bytes from ioQueue, if BOMEncoding is\n // UTF-8; otherwise read two bytes.\n // (Do nothing with those bytes.)\n slice = BOMEncoding === 'UTF-8' ? 3 : 2\n }\n\n // 3. Process a queue with an instance of encoding’s\n // decoder, ioQueue, output, and \"replacement\".\n\n // 4. Return output.\n\n const sliced = bytes.slice(slice)\n return new TextDecoder(encoding).decode(sliced)\n}\n\n/**\n * @see https://encoding.spec.whatwg.org/#bom-sniff\n * @param {Uint8Array} ioQueue\n */\nfunction BOMSniffing (ioQueue) {\n // 1. Let BOM be the result of peeking 3 bytes from ioQueue,\n // converted to a byte sequence.\n const [a, b, c] = ioQueue\n\n // 2. For each of the rows in the table below, starting with\n // the first one and going down, if BOM starts with the\n // bytes given in the first column, then return the\n // encoding given in the cell in the second column of that\n // row. Otherwise, return null.\n if (a === 0xEF && b === 0xBB && c === 0xBF) {\n return 'UTF-8'\n } else if (a === 0xFE && b === 0xFF) {\n return 'UTF-16BE'\n } else if (a === 0xFF && b === 0xFE) {\n return 'UTF-16LE'\n }\n\n return null\n}\n\n/**\n * @param {Uint8Array[]} sequences\n */\nfunction combineByteSequences (sequences) {\n const size = sequences.reduce((a, b) => {\n return a + b.byteLength\n }, 0)\n\n let offset = 0\n\n return sequences.reduce((a, b) => {\n a.set(b, offset)\n offset += b.byteLength\n return a\n }, new Uint8Array(size))\n}\n\nmodule.exports = {\n staticPropertyDescriptors,\n readOperation,\n fireAProgressEvent\n}\n","'use strict'\n\n// We include a version number for the Dispatcher API. In case of breaking changes,\n// this version number must be increased to avoid conflicts.\nconst globalDispatcher = Symbol.for('undici.globalDispatcher.1')\nconst { InvalidArgumentError } = require('./core/errors')\nconst Agent = require('./agent')\n\nif (getGlobalDispatcher() === undefined) {\n setGlobalDispatcher(new Agent())\n}\n\nfunction setGlobalDispatcher (agent) {\n if (!agent || typeof agent.dispatch !== 'function') {\n throw new InvalidArgumentError('Argument agent must implement Agent')\n }\n Object.defineProperty(globalThis, globalDispatcher, {\n value: agent,\n writable: true,\n enumerable: false,\n configurable: false\n })\n}\n\nfunction getGlobalDispatcher () {\n return globalThis[globalDispatcher]\n}\n\nmodule.exports = {\n setGlobalDispatcher,\n getGlobalDispatcher\n}\n","'use strict'\n\nmodule.exports = class DecoratorHandler {\n constructor (handler) {\n this.handler = handler\n }\n\n onConnect (...args) {\n return this.handler.onConnect(...args)\n }\n\n onError (...args) {\n return this.handler.onError(...args)\n }\n\n onUpgrade (...args) {\n return this.handler.onUpgrade(...args)\n }\n\n onHeaders (...args) {\n return this.handler.onHeaders(...args)\n }\n\n onData (...args) {\n return this.handler.onData(...args)\n }\n\n onComplete (...args) {\n return this.handler.onComplete(...args)\n }\n\n onBodySent (...args) {\n return this.handler.onBodySent(...args)\n }\n}\n","'use strict'\n\nconst util = require('../core/util')\nconst { kBodyUsed } = require('../core/symbols')\nconst assert = require('assert')\nconst { InvalidArgumentError } = require('../core/errors')\nconst EE = require('events')\n\nconst redirectableStatusCodes = [300, 301, 302, 303, 307, 308]\n\nconst kBody = Symbol('body')\n\nclass BodyAsyncIterable {\n constructor (body) {\n this[kBody] = body\n this[kBodyUsed] = false\n }\n\n async * [Symbol.asyncIterator] () {\n assert(!this[kBodyUsed], 'disturbed')\n this[kBodyUsed] = true\n yield * this[kBody]\n }\n}\n\nclass RedirectHandler {\n constructor (dispatch, maxRedirections, opts, handler) {\n if (maxRedirections != null && (!Number.isInteger(maxRedirections) || maxRedirections < 0)) {\n throw new InvalidArgumentError('maxRedirections must be a positive number')\n }\n\n util.validateHandler(handler, opts.method, opts.upgrade)\n\n this.dispatch = dispatch\n this.location = null\n this.abort = null\n this.opts = { ...opts, maxRedirections: 0 } // opts must be a copy\n this.maxRedirections = maxRedirections\n this.handler = handler\n this.history = []\n\n if (util.isStream(this.opts.body)) {\n // TODO (fix): Provide some way for the user to cache the file to e.g. /tmp\n // so that it can be dispatched again?\n // TODO (fix): Do we need 100-expect support to provide a way to do this properly?\n if (util.bodyLength(this.opts.body) === 0) {\n this.opts.body\n .on('data', function () {\n assert(false)\n })\n }\n\n if (typeof this.opts.body.readableDidRead !== 'boolean') {\n this.opts.body[kBodyUsed] = false\n EE.prototype.on.call(this.opts.body, 'data', function () {\n this[kBodyUsed] = true\n })\n }\n } else if (this.opts.body && typeof this.opts.body.pipeTo === 'function') {\n // TODO (fix): We can't access ReadableStream internal state\n // to determine whether or not it has been disturbed. This is just\n // a workaround.\n this.opts.body = new BodyAsyncIterable(this.opts.body)\n } else if (\n this.opts.body &&\n typeof this.opts.body !== 'string' &&\n !ArrayBuffer.isView(this.opts.body) &&\n util.isIterable(this.opts.body)\n ) {\n // TODO: Should we allow re-using iterable if !this.opts.idempotent\n // or through some other flag?\n this.opts.body = new BodyAsyncIterable(this.opts.body)\n }\n }\n\n onConnect (abort) {\n this.abort = abort\n this.handler.onConnect(abort, { history: this.history })\n }\n\n onUpgrade (statusCode, headers, socket) {\n this.handler.onUpgrade(statusCode, headers, socket)\n }\n\n onError (error) {\n this.handler.onError(error)\n }\n\n onHeaders (statusCode, headers, resume, statusText) {\n this.location = this.history.length >= this.maxRedirections || util.isDisturbed(this.opts.body)\n ? null\n : parseLocation(statusCode, headers)\n\n if (this.opts.origin) {\n this.history.push(new URL(this.opts.path, this.opts.origin))\n }\n\n if (!this.location) {\n return this.handler.onHeaders(statusCode, headers, resume, statusText)\n }\n\n const { origin, pathname, search } = util.parseURL(new URL(this.location, this.opts.origin && new URL(this.opts.path, this.opts.origin)))\n const path = search ? `${pathname}${search}` : pathname\n\n // Remove headers referring to the original URL.\n // By default it is Host only, unless it's a 303 (see below), which removes also all Content-* headers.\n // https://tools.ietf.org/html/rfc7231#section-6.4\n this.opts.headers = cleanRequestHeaders(this.opts.headers, statusCode === 303, this.opts.origin !== origin)\n this.opts.path = path\n this.opts.origin = origin\n this.opts.maxRedirections = 0\n this.opts.query = null\n\n // https://tools.ietf.org/html/rfc7231#section-6.4.4\n // In case of HTTP 303, always replace method to be either HEAD or GET\n if (statusCode === 303 && this.opts.method !== 'HEAD') {\n this.opts.method = 'GET'\n this.opts.body = null\n }\n }\n\n onData (chunk) {\n if (this.location) {\n /*\n https://tools.ietf.org/html/rfc7231#section-6.4\n\n TLDR: undici always ignores 3xx response bodies.\n\n Redirection is used to serve the requested resource from another URL, so it is assumes that\n no body is generated (and thus can be ignored). Even though generating a body is not prohibited.\n\n For status 301, 302, 303, 307 and 308 (the latter from RFC 7238), the specs mention that the body usually\n (which means it's optional and not mandated) contain just an hyperlink to the value of\n the Location response header, so the body can be ignored safely.\n\n For status 300, which is \"Multiple Choices\", the spec mentions both generating a Location\n response header AND a response body with the other possible location to follow.\n Since the spec explicitily chooses not to specify a format for such body and leave it to\n servers and browsers implementors, we ignore the body as there is no specified way to eventually parse it.\n */\n } else {\n return this.handler.onData(chunk)\n }\n }\n\n onComplete (trailers) {\n if (this.location) {\n /*\n https://tools.ietf.org/html/rfc7231#section-6.4\n\n TLDR: undici always ignores 3xx response trailers as they are not expected in case of redirections\n and neither are useful if present.\n\n See comment on onData method above for more detailed informations.\n */\n\n this.location = null\n this.abort = null\n\n this.dispatch(this.opts, this)\n } else {\n this.handler.onComplete(trailers)\n }\n }\n\n onBodySent (chunk) {\n if (this.handler.onBodySent) {\n this.handler.onBodySent(chunk)\n }\n }\n}\n\nfunction parseLocation (statusCode, headers) {\n if (redirectableStatusCodes.indexOf(statusCode) === -1) {\n return null\n }\n\n for (let i = 0; i < headers.length; i += 2) {\n if (headers[i].toString().toLowerCase() === 'location') {\n return headers[i + 1]\n }\n }\n}\n\n// https://tools.ietf.org/html/rfc7231#section-6.4.4\nfunction shouldRemoveHeader (header, removeContent, unknownOrigin) {\n if (header.length === 4) {\n return util.headerNameToString(header) === 'host'\n }\n if (removeContent && util.headerNameToString(header).startsWith('content-')) {\n return true\n }\n if (unknownOrigin && (header.length === 13 || header.length === 6 || header.length === 19)) {\n const name = util.headerNameToString(header)\n return name === 'authorization' || name === 'cookie' || name === 'proxy-authorization'\n }\n return false\n}\n\n// https://tools.ietf.org/html/rfc7231#section-6.4\nfunction cleanRequestHeaders (headers, removeContent, unknownOrigin) {\n const ret = []\n if (Array.isArray(headers)) {\n for (let i = 0; i < headers.length; i += 2) {\n if (!shouldRemoveHeader(headers[i], removeContent, unknownOrigin)) {\n ret.push(headers[i], headers[i + 1])\n }\n }\n } else if (headers && typeof headers === 'object') {\n for (const key of Object.keys(headers)) {\n if (!shouldRemoveHeader(key, removeContent, unknownOrigin)) {\n ret.push(key, headers[key])\n }\n }\n } else {\n assert(headers == null, 'headers must be an object or an array')\n }\n return ret\n}\n\nmodule.exports = RedirectHandler\n","const assert = require('assert')\n\nconst { kRetryHandlerDefaultRetry } = require('../core/symbols')\nconst { RequestRetryError } = require('../core/errors')\nconst { isDisturbed, parseHeaders, parseRangeHeader } = require('../core/util')\n\nfunction calculateRetryAfterHeader (retryAfter) {\n const current = Date.now()\n const diff = new Date(retryAfter).getTime() - current\n\n return diff\n}\n\nclass RetryHandler {\n constructor (opts, handlers) {\n const { retryOptions, ...dispatchOpts } = opts\n const {\n // Retry scoped\n retry: retryFn,\n maxRetries,\n maxTimeout,\n minTimeout,\n timeoutFactor,\n // Response scoped\n methods,\n errorCodes,\n retryAfter,\n statusCodes\n } = retryOptions ?? {}\n\n this.dispatch = handlers.dispatch\n this.handler = handlers.handler\n this.opts = dispatchOpts\n this.abort = null\n this.aborted = false\n this.retryOpts = {\n retry: retryFn ?? RetryHandler[kRetryHandlerDefaultRetry],\n retryAfter: retryAfter ?? true,\n maxTimeout: maxTimeout ?? 30 * 1000, // 30s,\n timeout: minTimeout ?? 500, // .5s\n timeoutFactor: timeoutFactor ?? 2,\n maxRetries: maxRetries ?? 5,\n // What errors we should retry\n methods: methods ?? ['GET', 'HEAD', 'OPTIONS', 'PUT', 'DELETE', 'TRACE'],\n // Indicates which errors to retry\n statusCodes: statusCodes ?? [500, 502, 503, 504, 429],\n // List of errors to retry\n errorCodes: errorCodes ?? [\n 'ECONNRESET',\n 'ECONNREFUSED',\n 'ENOTFOUND',\n 'ENETDOWN',\n 'ENETUNREACH',\n 'EHOSTDOWN',\n 'EHOSTUNREACH',\n 'EPIPE'\n ]\n }\n\n this.retryCount = 0\n this.start = 0\n this.end = null\n this.etag = null\n this.resume = null\n\n // Handle possible onConnect duplication\n this.handler.onConnect(reason => {\n this.aborted = true\n if (this.abort) {\n this.abort(reason)\n } else {\n this.reason = reason\n }\n })\n }\n\n onRequestSent () {\n if (this.handler.onRequestSent) {\n this.handler.onRequestSent()\n }\n }\n\n onUpgrade (statusCode, headers, socket) {\n if (this.handler.onUpgrade) {\n this.handler.onUpgrade(statusCode, headers, socket)\n }\n }\n\n onConnect (abort) {\n if (this.aborted) {\n abort(this.reason)\n } else {\n this.abort = abort\n }\n }\n\n onBodySent (chunk) {\n if (this.handler.onBodySent) return this.handler.onBodySent(chunk)\n }\n\n static [kRetryHandlerDefaultRetry] (err, { state, opts }, cb) {\n const { statusCode, code, headers } = err\n const { method, retryOptions } = opts\n const {\n maxRetries,\n timeout,\n maxTimeout,\n timeoutFactor,\n statusCodes,\n errorCodes,\n methods\n } = retryOptions\n let { counter, currentTimeout } = state\n\n currentTimeout =\n currentTimeout != null && currentTimeout > 0 ? currentTimeout : timeout\n\n // Any code that is not a Undici's originated and allowed to retry\n if (\n code &&\n code !== 'UND_ERR_REQ_RETRY' &&\n code !== 'UND_ERR_SOCKET' &&\n !errorCodes.includes(code)\n ) {\n cb(err)\n return\n }\n\n // If a set of method are provided and the current method is not in the list\n if (Array.isArray(methods) && !methods.includes(method)) {\n cb(err)\n return\n }\n\n // If a set of status code are provided and the current status code is not in the list\n if (\n statusCode != null &&\n Array.isArray(statusCodes) &&\n !statusCodes.includes(statusCode)\n ) {\n cb(err)\n return\n }\n\n // If we reached the max number of retries\n if (counter > maxRetries) {\n cb(err)\n return\n }\n\n let retryAfterHeader = headers != null && headers['retry-after']\n if (retryAfterHeader) {\n retryAfterHeader = Number(retryAfterHeader)\n retryAfterHeader = isNaN(retryAfterHeader)\n ? calculateRetryAfterHeader(retryAfterHeader)\n : retryAfterHeader * 1e3 // Retry-After is in seconds\n }\n\n const retryTimeout =\n retryAfterHeader > 0\n ? Math.min(retryAfterHeader, maxTimeout)\n : Math.min(currentTimeout * timeoutFactor ** counter, maxTimeout)\n\n state.currentTimeout = retryTimeout\n\n setTimeout(() => cb(null), retryTimeout)\n }\n\n onHeaders (statusCode, rawHeaders, resume, statusMessage) {\n const headers = parseHeaders(rawHeaders)\n\n this.retryCount += 1\n\n if (statusCode >= 300) {\n this.abort(\n new RequestRetryError('Request failed', statusCode, {\n headers,\n count: this.retryCount\n })\n )\n return false\n }\n\n // Checkpoint for resume from where we left it\n if (this.resume != null) {\n this.resume = null\n\n if (statusCode !== 206) {\n return true\n }\n\n const contentRange = parseRangeHeader(headers['content-range'])\n // If no content range\n if (!contentRange) {\n this.abort(\n new RequestRetryError('Content-Range mismatch', statusCode, {\n headers,\n count: this.retryCount\n })\n )\n return false\n }\n\n // Let's start with a weak etag check\n if (this.etag != null && this.etag !== headers.etag) {\n this.abort(\n new RequestRetryError('ETag mismatch', statusCode, {\n headers,\n count: this.retryCount\n })\n )\n return false\n }\n\n const { start, size, end = size } = contentRange\n\n assert(this.start === start, 'content-range mismatch')\n assert(this.end == null || this.end === end, 'content-range mismatch')\n\n this.resume = resume\n return true\n }\n\n if (this.end == null) {\n if (statusCode === 206) {\n // First time we receive 206\n const range = parseRangeHeader(headers['content-range'])\n\n if (range == null) {\n return this.handler.onHeaders(\n statusCode,\n rawHeaders,\n resume,\n statusMessage\n )\n }\n\n const { start, size, end = size } = range\n\n assert(\n start != null && Number.isFinite(start) && this.start !== start,\n 'content-range mismatch'\n )\n assert(Number.isFinite(start))\n assert(\n end != null && Number.isFinite(end) && this.end !== end,\n 'invalid content-length'\n )\n\n this.start = start\n this.end = end\n }\n\n // We make our best to checkpoint the body for further range headers\n if (this.end == null) {\n const contentLength = headers['content-length']\n this.end = contentLength != null ? Number(contentLength) : null\n }\n\n assert(Number.isFinite(this.start))\n assert(\n this.end == null || Number.isFinite(this.end),\n 'invalid content-length'\n )\n\n this.resume = resume\n this.etag = headers.etag != null ? headers.etag : null\n\n return this.handler.onHeaders(\n statusCode,\n rawHeaders,\n resume,\n statusMessage\n )\n }\n\n const err = new RequestRetryError('Request failed', statusCode, {\n headers,\n count: this.retryCount\n })\n\n this.abort(err)\n\n return false\n }\n\n onData (chunk) {\n this.start += chunk.length\n\n return this.handler.onData(chunk)\n }\n\n onComplete (rawTrailers) {\n this.retryCount = 0\n return this.handler.onComplete(rawTrailers)\n }\n\n onError (err) {\n if (this.aborted || isDisturbed(this.opts.body)) {\n return this.handler.onError(err)\n }\n\n this.retryOpts.retry(\n err,\n {\n state: { counter: this.retryCount++, currentTimeout: this.retryAfter },\n opts: { retryOptions: this.retryOpts, ...this.opts }\n },\n onRetry.bind(this)\n )\n\n function onRetry (err) {\n if (err != null || this.aborted || isDisturbed(this.opts.body)) {\n return this.handler.onError(err)\n }\n\n if (this.start !== 0) {\n this.opts = {\n ...this.opts,\n headers: {\n ...this.opts.headers,\n range: `bytes=${this.start}-${this.end ?? ''}`\n }\n }\n }\n\n try {\n this.dispatch(this.opts, this)\n } catch (err) {\n this.handler.onError(err)\n }\n }\n }\n}\n\nmodule.exports = RetryHandler\n","'use strict'\n\nconst RedirectHandler = require('../handler/RedirectHandler')\n\nfunction createRedirectInterceptor ({ maxRedirections: defaultMaxRedirections }) {\n return (dispatch) => {\n return function Intercept (opts, handler) {\n const { maxRedirections = defaultMaxRedirections } = opts\n\n if (!maxRedirections) {\n return dispatch(opts, handler)\n }\n\n const redirectHandler = new RedirectHandler(dispatch, maxRedirections, opts, handler)\n opts = { ...opts, maxRedirections: 0 } // Stop sub dispatcher from also redirecting.\n return dispatch(opts, redirectHandler)\n }\n }\n}\n\nmodule.exports = createRedirectInterceptor\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.SPECIAL_HEADERS = exports.HEADER_STATE = exports.MINOR = exports.MAJOR = exports.CONNECTION_TOKEN_CHARS = exports.HEADER_CHARS = exports.TOKEN = exports.STRICT_TOKEN = exports.HEX = exports.URL_CHAR = exports.STRICT_URL_CHAR = exports.USERINFO_CHARS = exports.MARK = exports.ALPHANUM = exports.NUM = exports.HEX_MAP = exports.NUM_MAP = exports.ALPHA = exports.FINISH = exports.H_METHOD_MAP = exports.METHOD_MAP = exports.METHODS_RTSP = exports.METHODS_ICE = exports.METHODS_HTTP = exports.METHODS = exports.LENIENT_FLAGS = exports.FLAGS = exports.TYPE = exports.ERROR = void 0;\nconst utils_1 = require(\"./utils\");\n// C headers\nvar ERROR;\n(function (ERROR) {\n ERROR[ERROR[\"OK\"] = 0] = \"OK\";\n ERROR[ERROR[\"INTERNAL\"] = 1] = \"INTERNAL\";\n ERROR[ERROR[\"STRICT\"] = 2] = \"STRICT\";\n ERROR[ERROR[\"LF_EXPECTED\"] = 3] = \"LF_EXPECTED\";\n ERROR[ERROR[\"UNEXPECTED_CONTENT_LENGTH\"] = 4] = \"UNEXPECTED_CONTENT_LENGTH\";\n ERROR[ERROR[\"CLOSED_CONNECTION\"] = 5] = \"CLOSED_CONNECTION\";\n ERROR[ERROR[\"INVALID_METHOD\"] = 6] = \"INVALID_METHOD\";\n ERROR[ERROR[\"INVALID_URL\"] = 7] = \"INVALID_URL\";\n ERROR[ERROR[\"INVALID_CONSTANT\"] = 8] = \"INVALID_CONSTANT\";\n ERROR[ERROR[\"INVALID_VERSION\"] = 9] = \"INVALID_VERSION\";\n ERROR[ERROR[\"INVALID_HEADER_TOKEN\"] = 10] = \"INVALID_HEADER_TOKEN\";\n ERROR[ERROR[\"INVALID_CONTENT_LENGTH\"] = 11] = \"INVALID_CONTENT_LENGTH\";\n ERROR[ERROR[\"INVALID_CHUNK_SIZE\"] = 12] = \"INVALID_CHUNK_SIZE\";\n ERROR[ERROR[\"INVALID_STATUS\"] = 13] = \"INVALID_STATUS\";\n ERROR[ERROR[\"INVALID_EOF_STATE\"] = 14] = \"INVALID_EOF_STATE\";\n ERROR[ERROR[\"INVALID_TRANSFER_ENCODING\"] = 15] = \"INVALID_TRANSFER_ENCODING\";\n ERROR[ERROR[\"CB_MESSAGE_BEGIN\"] = 16] = \"CB_MESSAGE_BEGIN\";\n ERROR[ERROR[\"CB_HEADERS_COMPLETE\"] = 17] = \"CB_HEADERS_COMPLETE\";\n ERROR[ERROR[\"CB_MESSAGE_COMPLETE\"] = 18] = \"CB_MESSAGE_COMPLETE\";\n ERROR[ERROR[\"CB_CHUNK_HEADER\"] = 19] = \"CB_CHUNK_HEADER\";\n ERROR[ERROR[\"CB_CHUNK_COMPLETE\"] = 20] = \"CB_CHUNK_COMPLETE\";\n ERROR[ERROR[\"PAUSED\"] = 21] = \"PAUSED\";\n ERROR[ERROR[\"PAUSED_UPGRADE\"] = 22] = \"PAUSED_UPGRADE\";\n ERROR[ERROR[\"PAUSED_H2_UPGRADE\"] = 23] = \"PAUSED_H2_UPGRADE\";\n ERROR[ERROR[\"USER\"] = 24] = \"USER\";\n})(ERROR = exports.ERROR || (exports.ERROR = {}));\nvar TYPE;\n(function (TYPE) {\n TYPE[TYPE[\"BOTH\"] = 0] = \"BOTH\";\n TYPE[TYPE[\"REQUEST\"] = 1] = \"REQUEST\";\n TYPE[TYPE[\"RESPONSE\"] = 2] = \"RESPONSE\";\n})(TYPE = exports.TYPE || (exports.TYPE = {}));\nvar FLAGS;\n(function (FLAGS) {\n FLAGS[FLAGS[\"CONNECTION_KEEP_ALIVE\"] = 1] = \"CONNECTION_KEEP_ALIVE\";\n FLAGS[FLAGS[\"CONNECTION_CLOSE\"] = 2] = \"CONNECTION_CLOSE\";\n FLAGS[FLAGS[\"CONNECTION_UPGRADE\"] = 4] = \"CONNECTION_UPGRADE\";\n FLAGS[FLAGS[\"CHUNKED\"] = 8] = \"CHUNKED\";\n FLAGS[FLAGS[\"UPGRADE\"] = 16] = \"UPGRADE\";\n FLAGS[FLAGS[\"CONTENT_LENGTH\"] = 32] = \"CONTENT_LENGTH\";\n FLAGS[FLAGS[\"SKIPBODY\"] = 64] = \"SKIPBODY\";\n FLAGS[FLAGS[\"TRAILING\"] = 128] = \"TRAILING\";\n // 1 << 8 is unused\n FLAGS[FLAGS[\"TRANSFER_ENCODING\"] = 512] = \"TRANSFER_ENCODING\";\n})(FLAGS = exports.FLAGS || (exports.FLAGS = {}));\nvar LENIENT_FLAGS;\n(function (LENIENT_FLAGS) {\n LENIENT_FLAGS[LENIENT_FLAGS[\"HEADERS\"] = 1] = \"HEADERS\";\n LENIENT_FLAGS[LENIENT_FLAGS[\"CHUNKED_LENGTH\"] = 2] = \"CHUNKED_LENGTH\";\n LENIENT_FLAGS[LENIENT_FLAGS[\"KEEP_ALIVE\"] = 4] = \"KEEP_ALIVE\";\n})(LENIENT_FLAGS = exports.LENIENT_FLAGS || (exports.LENIENT_FLAGS = {}));\nvar METHODS;\n(function (METHODS) {\n METHODS[METHODS[\"DELETE\"] = 0] = \"DELETE\";\n METHODS[METHODS[\"GET\"] = 1] = \"GET\";\n METHODS[METHODS[\"HEAD\"] = 2] = \"HEAD\";\n METHODS[METHODS[\"POST\"] = 3] = \"POST\";\n METHODS[METHODS[\"PUT\"] = 4] = \"PUT\";\n /* pathological */\n METHODS[METHODS[\"CONNECT\"] = 5] = \"CONNECT\";\n METHODS[METHODS[\"OPTIONS\"] = 6] = \"OPTIONS\";\n METHODS[METHODS[\"TRACE\"] = 7] = \"TRACE\";\n /* WebDAV */\n METHODS[METHODS[\"COPY\"] = 8] = \"COPY\";\n METHODS[METHODS[\"LOCK\"] = 9] = \"LOCK\";\n METHODS[METHODS[\"MKCOL\"] = 10] = \"MKCOL\";\n METHODS[METHODS[\"MOVE\"] = 11] = \"MOVE\";\n METHODS[METHODS[\"PROPFIND\"] = 12] = \"PROPFIND\";\n METHODS[METHODS[\"PROPPATCH\"] = 13] = \"PROPPATCH\";\n METHODS[METHODS[\"SEARCH\"] = 14] = \"SEARCH\";\n METHODS[METHODS[\"UNLOCK\"] = 15] = \"UNLOCK\";\n METHODS[METHODS[\"BIND\"] = 16] = \"BIND\";\n METHODS[METHODS[\"REBIND\"] = 17] = \"REBIND\";\n METHODS[METHODS[\"UNBIND\"] = 18] = \"UNBIND\";\n METHODS[METHODS[\"ACL\"] = 19] = \"ACL\";\n /* subversion */\n METHODS[METHODS[\"REPORT\"] = 20] = \"REPORT\";\n METHODS[METHODS[\"MKACTIVITY\"] = 21] = \"MKACTIVITY\";\n METHODS[METHODS[\"CHECKOUT\"] = 22] = \"CHECKOUT\";\n METHODS[METHODS[\"MERGE\"] = 23] = \"MERGE\";\n /* upnp */\n METHODS[METHODS[\"M-SEARCH\"] = 24] = \"M-SEARCH\";\n METHODS[METHODS[\"NOTIFY\"] = 25] = \"NOTIFY\";\n METHODS[METHODS[\"SUBSCRIBE\"] = 26] = \"SUBSCRIBE\";\n METHODS[METHODS[\"UNSUBSCRIBE\"] = 27] = \"UNSUBSCRIBE\";\n /* RFC-5789 */\n METHODS[METHODS[\"PATCH\"] = 28] = \"PATCH\";\n METHODS[METHODS[\"PURGE\"] = 29] = \"PURGE\";\n /* CalDAV */\n METHODS[METHODS[\"MKCALENDAR\"] = 30] = \"MKCALENDAR\";\n /* RFC-2068, section 19.6.1.2 */\n METHODS[METHODS[\"LINK\"] = 31] = \"LINK\";\n METHODS[METHODS[\"UNLINK\"] = 32] = \"UNLINK\";\n /* icecast */\n METHODS[METHODS[\"SOURCE\"] = 33] = \"SOURCE\";\n /* RFC-7540, section 11.6 */\n METHODS[METHODS[\"PRI\"] = 34] = \"PRI\";\n /* RFC-2326 RTSP */\n METHODS[METHODS[\"DESCRIBE\"] = 35] = \"DESCRIBE\";\n METHODS[METHODS[\"ANNOUNCE\"] = 36] = \"ANNOUNCE\";\n METHODS[METHODS[\"SETUP\"] = 37] = \"SETUP\";\n METHODS[METHODS[\"PLAY\"] = 38] = \"PLAY\";\n METHODS[METHODS[\"PAUSE\"] = 39] = \"PAUSE\";\n METHODS[METHODS[\"TEARDOWN\"] = 40] = \"TEARDOWN\";\n METHODS[METHODS[\"GET_PARAMETER\"] = 41] = \"GET_PARAMETER\";\n METHODS[METHODS[\"SET_PARAMETER\"] = 42] = \"SET_PARAMETER\";\n METHODS[METHODS[\"REDIRECT\"] = 43] = \"REDIRECT\";\n METHODS[METHODS[\"RECORD\"] = 44] = \"RECORD\";\n /* RAOP */\n METHODS[METHODS[\"FLUSH\"] = 45] = \"FLUSH\";\n})(METHODS = exports.METHODS || (exports.METHODS = {}));\nexports.METHODS_HTTP = [\n METHODS.DELETE,\n METHODS.GET,\n METHODS.HEAD,\n METHODS.POST,\n METHODS.PUT,\n METHODS.CONNECT,\n METHODS.OPTIONS,\n METHODS.TRACE,\n METHODS.COPY,\n METHODS.LOCK,\n METHODS.MKCOL,\n METHODS.MOVE,\n METHODS.PROPFIND,\n METHODS.PROPPATCH,\n METHODS.SEARCH,\n METHODS.UNLOCK,\n METHODS.BIND,\n METHODS.REBIND,\n METHODS.UNBIND,\n METHODS.ACL,\n METHODS.REPORT,\n METHODS.MKACTIVITY,\n METHODS.CHECKOUT,\n METHODS.MERGE,\n METHODS['M-SEARCH'],\n METHODS.NOTIFY,\n METHODS.SUBSCRIBE,\n METHODS.UNSUBSCRIBE,\n METHODS.PATCH,\n METHODS.PURGE,\n METHODS.MKCALENDAR,\n METHODS.LINK,\n METHODS.UNLINK,\n METHODS.PRI,\n // TODO(indutny): should we allow it with HTTP?\n METHODS.SOURCE,\n];\nexports.METHODS_ICE = [\n METHODS.SOURCE,\n];\nexports.METHODS_RTSP = [\n METHODS.OPTIONS,\n METHODS.DESCRIBE,\n METHODS.ANNOUNCE,\n METHODS.SETUP,\n METHODS.PLAY,\n METHODS.PAUSE,\n METHODS.TEARDOWN,\n METHODS.GET_PARAMETER,\n METHODS.SET_PARAMETER,\n METHODS.REDIRECT,\n METHODS.RECORD,\n METHODS.FLUSH,\n // For AirPlay\n METHODS.GET,\n METHODS.POST,\n];\nexports.METHOD_MAP = utils_1.enumToMap(METHODS);\nexports.H_METHOD_MAP = {};\nObject.keys(exports.METHOD_MAP).forEach((key) => {\n if (/^H/.test(key)) {\n exports.H_METHOD_MAP[key] = exports.METHOD_MAP[key];\n }\n});\nvar FINISH;\n(function (FINISH) {\n FINISH[FINISH[\"SAFE\"] = 0] = \"SAFE\";\n FINISH[FINISH[\"SAFE_WITH_CB\"] = 1] = \"SAFE_WITH_CB\";\n FINISH[FINISH[\"UNSAFE\"] = 2] = \"UNSAFE\";\n})(FINISH = exports.FINISH || (exports.FINISH = {}));\nexports.ALPHA = [];\nfor (let i = 'A'.charCodeAt(0); i <= 'Z'.charCodeAt(0); i++) {\n // Upper case\n exports.ALPHA.push(String.fromCharCode(i));\n // Lower case\n exports.ALPHA.push(String.fromCharCode(i + 0x20));\n}\nexports.NUM_MAP = {\n 0: 0, 1: 1, 2: 2, 3: 3, 4: 4,\n 5: 5, 6: 6, 7: 7, 8: 8, 9: 9,\n};\nexports.HEX_MAP = {\n 0: 0, 1: 1, 2: 2, 3: 3, 4: 4,\n 5: 5, 6: 6, 7: 7, 8: 8, 9: 9,\n A: 0XA, B: 0XB, C: 0XC, D: 0XD, E: 0XE, F: 0XF,\n a: 0xa, b: 0xb, c: 0xc, d: 0xd, e: 0xe, f: 0xf,\n};\nexports.NUM = [\n '0', '1', '2', '3', '4', '5', '6', '7', '8', '9',\n];\nexports.ALPHANUM = exports.ALPHA.concat(exports.NUM);\nexports.MARK = ['-', '_', '.', '!', '~', '*', '\\'', '(', ')'];\nexports.USERINFO_CHARS = exports.ALPHANUM\n .concat(exports.MARK)\n .concat(['%', ';', ':', '&', '=', '+', '$', ',']);\n// TODO(indutny): use RFC\nexports.STRICT_URL_CHAR = [\n '!', '\"', '$', '%', '&', '\\'',\n '(', ')', '*', '+', ',', '-', '.', '/',\n ':', ';', '<', '=', '>',\n '@', '[', '\\\\', ']', '^', '_',\n '`',\n '{', '|', '}', '~',\n].concat(exports.ALPHANUM);\nexports.URL_CHAR = exports.STRICT_URL_CHAR\n .concat(['\\t', '\\f']);\n// All characters with 0x80 bit set to 1\nfor (let i = 0x80; i <= 0xff; i++) {\n exports.URL_CHAR.push(i);\n}\nexports.HEX = exports.NUM.concat(['a', 'b', 'c', 'd', 'e', 'f', 'A', 'B', 'C', 'D', 'E', 'F']);\n/* Tokens as defined by rfc 2616. Also lowercases them.\n * token = 1*\n * separators = \"(\" | \")\" | \"<\" | \">\" | \"@\"\n * | \",\" | \";\" | \":\" | \"\\\" | <\">\n * | \"/\" | \"[\" | \"]\" | \"?\" | \"=\"\n * | \"{\" | \"}\" | SP | HT\n */\nexports.STRICT_TOKEN = [\n '!', '#', '$', '%', '&', '\\'',\n '*', '+', '-', '.',\n '^', '_', '`',\n '|', '~',\n].concat(exports.ALPHANUM);\nexports.TOKEN = exports.STRICT_TOKEN.concat([' ']);\n/*\n * Verify that a char is a valid visible (printable) US-ASCII\n * character or %x80-FF\n */\nexports.HEADER_CHARS = ['\\t'];\nfor (let i = 32; i <= 255; i++) {\n if (i !== 127) {\n exports.HEADER_CHARS.push(i);\n }\n}\n// ',' = \\x44\nexports.CONNECTION_TOKEN_CHARS = exports.HEADER_CHARS.filter((c) => c !== 44);\nexports.MAJOR = exports.NUM_MAP;\nexports.MINOR = exports.MAJOR;\nvar HEADER_STATE;\n(function (HEADER_STATE) {\n HEADER_STATE[HEADER_STATE[\"GENERAL\"] = 0] = \"GENERAL\";\n HEADER_STATE[HEADER_STATE[\"CONNECTION\"] = 1] = \"CONNECTION\";\n HEADER_STATE[HEADER_STATE[\"CONTENT_LENGTH\"] = 2] = \"CONTENT_LENGTH\";\n HEADER_STATE[HEADER_STATE[\"TRANSFER_ENCODING\"] = 3] = \"TRANSFER_ENCODING\";\n HEADER_STATE[HEADER_STATE[\"UPGRADE\"] = 4] = \"UPGRADE\";\n HEADER_STATE[HEADER_STATE[\"CONNECTION_KEEP_ALIVE\"] = 5] = \"CONNECTION_KEEP_ALIVE\";\n HEADER_STATE[HEADER_STATE[\"CONNECTION_CLOSE\"] = 6] = \"CONNECTION_CLOSE\";\n HEADER_STATE[HEADER_STATE[\"CONNECTION_UPGRADE\"] = 7] = \"CONNECTION_UPGRADE\";\n HEADER_STATE[HEADER_STATE[\"TRANSFER_ENCODING_CHUNKED\"] = 8] = \"TRANSFER_ENCODING_CHUNKED\";\n})(HEADER_STATE = exports.HEADER_STATE || (exports.HEADER_STATE = {}));\nexports.SPECIAL_HEADERS = {\n 'connection': HEADER_STATE.CONNECTION,\n 'content-length': HEADER_STATE.CONTENT_LENGTH,\n 'proxy-connection': HEADER_STATE.CONNECTION,\n 'transfer-encoding': HEADER_STATE.TRANSFER_ENCODING,\n 'upgrade': HEADER_STATE.UPGRADE,\n};\n//# sourceMappingURL=constants.js.map","module.exports = 'AGFzbQEAAAABMAhgAX8Bf2ADf39/AX9gBH9/f38Bf2AAAGADf39/AGABfwBgAn9/AGAGf39/f39/AALLAQgDZW52GHdhc21fb25faGVhZGVyc19jb21wbGV0ZQACA2VudhV3YXNtX29uX21lc3NhZ2VfYmVnaW4AAANlbnYLd2FzbV9vbl91cmwAAQNlbnYOd2FzbV9vbl9zdGF0dXMAAQNlbnYUd2FzbV9vbl9oZWFkZXJfZmllbGQAAQNlbnYUd2FzbV9vbl9oZWFkZXJfdmFsdWUAAQNlbnYMd2FzbV9vbl9ib2R5AAEDZW52GHdhc21fb25fbWVzc2FnZV9jb21wbGV0ZQAAA0ZFAwMEAAAFAAAAAAAABQEFAAUFBQAABgAAAAAGBgYGAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAAABAQcAAAUFAwABBAUBcAESEgUDAQACBggBfwFBgNQECwfRBSIGbWVtb3J5AgALX2luaXRpYWxpemUACRlfX2luZGlyZWN0X2Z1bmN0aW9uX3RhYmxlAQALbGxodHRwX2luaXQAChhsbGh0dHBfc2hvdWxkX2tlZXBfYWxpdmUAQQxsbGh0dHBfYWxsb2MADAZtYWxsb2MARgtsbGh0dHBfZnJlZQANBGZyZWUASA9sbGh0dHBfZ2V0X3R5cGUADhVsbGh0dHBfZ2V0X2h0dHBfbWFqb3IADxVsbGh0dHBfZ2V0X2h0dHBfbWlub3IAEBFsbGh0dHBfZ2V0X21ldGhvZAARFmxsaHR0cF9nZXRfc3RhdHVzX2NvZGUAEhJsbGh0dHBfZ2V0X3VwZ3JhZGUAEwxsbGh0dHBfcmVzZXQAFA5sbGh0dHBfZXhlY3V0ZQAVFGxsaHR0cF9zZXR0aW5nc19pbml0ABYNbGxodHRwX2ZpbmlzaAAXDGxsaHR0cF9wYXVzZQAYDWxsaHR0cF9yZXN1bWUAGRtsbGh0dHBfcmVzdW1lX2FmdGVyX3VwZ3JhZGUAGhBsbGh0dHBfZ2V0X2Vycm5vABsXbGxodHRwX2dldF9lcnJvcl9yZWFzb24AHBdsbGh0dHBfc2V0X2Vycm9yX3JlYXNvbgAdFGxsaHR0cF9nZXRfZXJyb3JfcG9zAB4RbGxodHRwX2Vycm5vX25hbWUAHxJsbGh0dHBfbWV0aG9kX25hbWUAIBJs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ADcDACAAQShqQgA3AwAgAEEgakIANwMAIABBEGpCADcDACAAQQhqQgA3AwAgAEHdATYCHEEAC3sBAX8CQCAAKAIMIgMNAAJAIAAoAgRFDQAgACABNgIECwJAIAAgASACEMSAgIAAIgMNACAAKAIMDwsgACADNgIcQQAhAyAAKAIEIgFFDQAgACABIAIgACgCCBGBgICAAAAiAUUNACAAIAI2AhQgACABNgIMIAEhAwsgAwvk8wEDDn8DfgR/I4CAgIAAQRBrIgMkgICAgAAgASEEIAEhBSABIQYgASEHIAEhCCABIQkgASEKIAEhCyABIQwgASENIAEhDiABIQ8CQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgACgCHCIQQX9qDt0B2gEB2QECAwQFBgcICQoLDA0O2AEPENcBERLWARMUFRYXGBkaG+AB3wEcHR7VAR8gISIjJCXUASYnKCkqKyzTAdIBLS7RAdABLzAxMjM0NTY3ODk6Ozw9Pj9AQUJDREVG2wFHSElKzwHOAUvNAUzMAU1OT1BRUlNUVVZXWFlaW1xdXl9gYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXp7fH1+f4ABgQGCAYMBhAGFAYYBhwGIAYkB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QAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAC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FCAAIBA2AgxBACEQDLIBCyAAKAIEIRAgAEEANgIEAkAgACAQIAEQp4CAgAAiEA0AIAEhAQxNCyAAQdMANgIcIAAgATYCFCAAIBA2AgxBACEQDLEBCyAAKAIEIRAgAEEANgIEAkAgACAQIAEQp4CAgAAiEA0AIAEhAQxRCyAAQeUANgIcIAAgATYCFCAAIBA2AgxBACEQDLABCyAAQQA2AhwgACABNgIUIABBxoqAgAA2AhAgAEEHNgIMQQAhEAyvAQsgACgCBCEQIABBADYCBAJAIAAgECABEKeAgIAAIhANACABIQEMSQsgAEHSADYCHCAAIAE2AhQgACAQNgIMQQAhEAyuAQsgACgCBCEQIABBADYCBAJAIAAgECABEKeAgIAAIhANACABIQEMSQsgAEHTADYCHCAAIAE2AhQgACAQNgIMQQAhEAytAQsgACgCBCEQIABBADYCBAJAIAAgECABEKeAgIAAIhANACABIQEMTQsgAEHlADYCHCAAIAE2AhQgACAQNgIMQQAhEAysAQsgAEEANgIcIAAgATYCFCAAQdyIgIAANgIQIABBBzYCDEEAIRAMqwELIBBBP0cNASABQQFqIQELQQUhEAyQAQtBACEQIABBADYCHCAAIAE2AhQgAEH9koCAADYCECAAQQc2AgwMqAELIAAoAgQhECAAQQA2AgQCQCAAIBAgARCngICAACIQDQAgASEBDEILIABB0gA2AhwgACABNgIUIAAgEDYCDEEAIRAMpwELIAAoAgQhECAAQQA2AgQCQCAAIBAgARCngICAACIQDQAgASEBDEILIABB0wA2AhwgACABNgIUIAAgEDYCDEEAIRAMpgELIAAoAgQhECAAQQA2AgQCQCAAIBAgARCngICAACIQDQAgASEBDEYLIABB5QA2AhwgACABNgIUIAAgEDYCDEEAIRAMpQELIAAoAgQhASAAQQA2AgQCQCAAIAEgFBCngICAACIBDQAgFCEBDD8LIABB0gA2AhwgACAUNgIUIAAgATYCDEEAIRAMpAELIAAoAgQhASAAQQA2AgQCQCAAIAEgFBCngICAACIBDQAgFCEBDD8LIABB0wA2AhwgACAUNgIUIAAgATYCDEEAIRAMowELIAAoAgQhASAAQQA2AgQCQCAAIAEgFBCngICAACIBDQAgFCEBDEMLIABB5QA2AhwgACAU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YWdlX2JlZ2luYCBjYWxsYmFjayBlcnJvcgBgb25fY2h1bmtfZXh0ZW5zaW9uX3ZhbHVlYCBjYWxsYmFjayBlcnJvcgBgb25fc3RhdHVzX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fdmVyc2lvbl9jb21wbGV0ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX3VybF9jb21wbGV0ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX2NodW5rX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25faGVhZGVyX3ZhbHVlX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fbWVzc2FnZV9jb21wbGV0ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX21ldGhvZF9jb21wbGV0ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX2hlYWRlcl9maWVsZF9jb21wbGV0ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX2NodW5rX2V4dGVuc2lvbl9uYW1lYCBjYWxsYmFjayBlcnJvcgBVbmV4cGVjdGVkIGNoYXIgaW4gdXJsIHNlcnZlcgBJbnZhbGlkIGhlYWRlciB2YWx1ZSBjaGFyAEludmFsaWQgaGVhZGVyIGZpZWxkIGNoYXIAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl92ZXJzaW9uAEludmFsaWQgbWlub3IgdmVyc2lvbgBJbnZhbGlkIG1ham9yIHZlcnNpb24ARXhwZWN0ZWQgc3BhY2UgYWZ0ZXIgdmVyc2lvbgBFeHBlY3RlZCBDUkxGIGFmdGVyIHZlcnNpb24ASW52YWxpZCBIVFRQIHZlcnNpb24ASW52YWxpZCBoZWFkZXIgdG9rZW4AU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl91cmwASW52YWxpZCBjaGFyYWN0ZXJzIGluIHVybABVbmV4cGVjdGVkIHN0YXJ0IGNoYXIgaW4gdXJsAERvdWJsZSBAIGluIHVybABFbXB0eSBDb250ZW50LUxlbmd0aABJbnZhbGlkIGNoYXJhY3RlciBpbiBDb250ZW50LUxlbmd0aABEdXBsaWNhdGUgQ29udGVudC1MZW5ndGgASW52YWxpZCBjaGFyIGluIHVybCBwYXRoAENvbnRlbnQtTGVuZ3RoIGNhbid0IGJlIHByZXNlbnQgd2l0aCBUcmFuc2Zlci1FbmNvZGluZwBJbnZhbGlkIGNoYXJhY3RlciBpbiBjaHVuayBzaXplAFNwYW4gY2FsbGJhY2sgZXJyb3IgaW4gb25faGVhZGVyX3ZhbHVlAFNwYW4gY2FsbGJhY2sgZXJyb3IgaW4gb25fY2h1bmtfZXh0ZW5zaW9uX3ZhbHVlAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIGV4dGVuc2lvbnMgdmFsdWUATWlzc2luZyBleHBlY3RlZCBMRiBhZnRlciBoZWFkZXIgdmFsdWUASW52YWxpZCBgVHJhbnNmZXItRW5jb2RpbmdgIGhlYWRlciB2YWx1ZQBJbnZhbGlkIGNoYXJhY3RlciBpbiBjaHVuayBleHRlbnNpb25zIHF1b3RlIHZhbHVlAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIGV4dGVuc2lvbnMgcXVvdGVkIHZhbHVlAFBhdXNlZCBieSBvbl9oZWFkZXJzX2NvbXBsZXRlAEludmFsaWQgRU9GIHN0YXRlAG9uX3Jlc2V0IHBhdXNlAG9uX2NodW5rX2hlYWRlciBwYXVzZQBvbl9tZXNzYWdlX2JlZ2luIHBhdXNlAG9uX2NodW5rX2V4dGVuc2lvbl92YWx1ZSBwYXVzZQBvbl9zdGF0dXNfY29tcGxldGUgcGF1c2UAb25fdmVyc2lvbl9jb21wbGV0ZSBwYXVzZQBvbl91cmxfY29tcGxldGUgcGF1c2UAb25fY2h1bmtfY29tcGxldGUgcGF1c2UAb25faGVhZGVyX3ZhbHVlX2NvbXBsZXRlIHBhdXNlAG9uX21lc3NhZ2VfY29tcGxldGUgcGF1c2UAb25fbWV0aG9kX2NvbXBsZXRlIHBhdXNlAG9uX2hlYWRlcl9maWVsZF9jb21wbGV0ZSBwYXVzZQBvbl9jaHVua19leHRlbnNpb25fbmFtZSBwYXVzZQBVbmV4cGVjdGVkIHNwYWNlIGFmdGVyIHN0YXJ0IGxpbmUAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9jaHVua19leHRlbnNpb25fbmFtZQBJbnZhbGlkIGNoYXJhY3RlciBpbiBjaHVuayBleHRlbnNpb25zIG5hbWUAUGF1c2Ugb24gQ09OTkVDVC9VcGdyYWRlAFBhdXNlIG9uIFBSSS9VcGdyYWRlAEV4cGVjdGVkIEhUVFAvMiBDb25uZWN0aW9uIFByZWZhY2UAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9tZXRob2QARXhwZWN0ZWQgc3BhY2UgYWZ0ZXIgbWV0aG9kAFNwYW4gY2FsbGJhY2sgZXJyb3IgaW4gb25faGVhZGVyX2ZpZWxkAFBhdXNlZABJbnZhbGlkIHdvcmQgZW5jb3VudGVyZWQASW52YWxpZCBtZXRob2QgZW5jb3VudGVyZWQAVW5leHBlY3RlZCBjaGFyIGluIHVybCBzY2hlbWEAUmVxdWVzdCBoYXMgaW52YWxpZCBgVHJhbnNmZXItRW5jb2RpbmdgAFNXSVRDSF9QUk9YWQBVU0VfUFJPWFkATUtBQ1RJVklUWQBVTlBST0NFU1NBQkxFX0VOVElUWQBDT1BZAE1PVkVEX1BFUk1BTkVOVExZAFRPT19FQVJMWQBOT1RJRlkARkFJTEVEX0RFUEVOREVOQ1kAQkFEX0dBVEVXQVkAUExBWQBQVVQAQ0hFQ0tPVVQAR0FURVdBWV9USU1FT1VUAFJFUVVFU1RfVElNRU9VVABORVRXT1JLX0NPTk5FQ1RfVElNRU9VVABDT05ORUNUSU9OX1RJTUVPVVQATE9HSU5fVElNRU9VVABORVRXT1JLX1JFQURfVElNRU9VVABQT1NUAE1JU0RJUkVDVEVEX1JFUVVFU1QAQ0xJRU5UX0NMT1NFRF9SRVFVRVNUAENMSUVOVF9DTE9TRURfTE9BRF9CQUxBTkNFRF9SRVFVRVNUAEJBRF9SRVFVRVNUAEhUVFBfUkVRVUVTVF9TRU5UX1RPX0hUVFBTX1BPUlQAUkVQT1JUAElNX0FfVEVBUE9UAFJFU0VUX0NPTlRFTlQATk9fQ09OVEVOVABQQVJUSUFMX0NPTlRFTlQASFBFX0lOVkFMSURfQ09OU1RBTlQASFBFX0NCX1JFU0VUAEdFVABIUEVfU1RSSUNUAENPTkZMSUNUAFRFTVBPUkFSWV9SRURJUkVDVABQRVJNQU5FTlRfUkVESVJFQ1QAQ09OTkVDVABNVUxUSV9TVEFUVVMASFBFX0lOVkFMSURfU1RBVFVTAFRPT19NQU5ZX1JFUVVFU1RTAEVBUkxZX0hJTlRTAFVOQVZBSUxBQkxFX0ZPUl9MRUdBTF9SRUFTT05TAE9QVElPTlMAU1dJVENISU5HX1BST1RPQ09MUwBWQVJJQU5UX0FMU09fTkVHT1RJQVRFUwBNVUxUSVBMRV9DSE9JQ0VTAElOVEVSTkFMX1NFUlZFUl9FUlJPUgBXRUJfU0VSVkVSX1VOS05PV05fRVJST1IAUkFJTEdVTl9FUlJPUgBJREVOVElUWV9QUk9WSURFUl9BVVRIRU5USUNBVElPTl9FUlJPUgBTU0xfQ0VSVElGSUNBVEVfRVJST1IASU5WQUxJRF9YX0ZPUldBUkRFRF9GT1IAU0VUX1BBUkFNRVRFUgBHRVRfUEFSQU1FVEVSAEhQRV9VU0VSAFNFRV9PVEhFUgBIUEVfQ0JfQ0hVTktfSEVBREVSAE1LQ0FMRU5EQVIAU0VUVVAAV0VCX1NFUlZFUl9JU19ET1dOAFRFQVJET1dOAEhQRV9DTE9TRURfQ09OTkVDVElPTgBIRVVSSVNUSUNfRVhQSVJBVElPTgBESVNDT05ORUNURURfT1BFUkFUSU9OAE5PTl9BVVRIT1JJVEFUSVZFX0lORk9STUFUSU9OAEhQRV9JTlZBTElEX1ZFUlNJT04ASFBFX0NCX01FU1NBR0VfQkVHSU4AU0lURV9JU19GUk9aRU4ASFBFX0lOVkFMSURfSEVBREVSX1RPS0VOAElOVkFMSURfVE9LRU4ARk9SQklEREVOAEVOSEFOQ0VfWU9VUl9DQUxNAEhQRV9JTlZBTElEX1VSTABCTE9DS0VEX0JZX1BBUkVOVEFMX0NPTlRST0wATUtDT0wAQUNMAEhQRV9JTlRFUk5BTABSRVFVRVNUX0hFQURFUl9GSUVMRFNfVE9PX0xBUkdFX1VOT0ZGSUNJQUwASFBFX09LAFVOTElOSwBVTkxPQ0sAUFJJAFJFVFJZX1dJVEgASFBFX0lOVkFMSURfQ09OVEVOVF9MRU5HVEgASFBFX1VORVhQRUNURURfQ09OVEVOVF9MRU5HVEgARkxVU0gAUFJPUFBBVENIAE0tU0VBUkNIAFVSSV9UT09fTE9ORwBQUk9DRVNTSU5HAE1JU0NFTExBTkVPVVNfUEVSU0lTVEVOVF9XQVJOSU5HAE1JU0NFTExBTkVPVVNfV0FSTklORwBIUEVfSU5WQUxJRF9UUkFOU0ZFUl9FTkNPRElORwBFeHBlY3RlZCBDUkxGAEhQRV9JTlZBTElEX0NIVU5LX1NJWkUATU9WRQBDT05USU5VRQBIUEVfQ0JfU1RBVFVTX0NPTVBMRVRFAEhQRV9DQl9IRUFERVJTX0NPTVBMRVRFAEhQRV9DQl9WRVJTSU9OX0NPTVBMRVRFAEhQRV9DQl9VUkxfQ09NUExFVEUASFBFX0NCX0NIVU5LX0NPTVBMRVRFAEhQRV9DQl9IRUFERVJfVkFMVUVfQ09NUExFVEUASFBFX0NCX0NIVU5LX0VYVEVOU0lPTl9WQUxVRV9DT01QTEVURQBIUEVfQ0JfQ0hVTktfRVhURU5TSU9OX05BTUVfQ09NUExFVEUASFBFX0NCX01FU1NBR0VfQ09NUExFVEUASFBFX0NCX01FVEhPRF9DT01QTEVURQBIUEVfQ0JfSEVBREVSX0ZJRUxEX0NPTVBMRVRFAERFTEVURQBIUEVfSU5WQUxJRF9FT0ZfU1RBVEUASU5WQUxJRF9TU0xfQ0VSVElGSUNBVEUAUEFVU0UATk9fUkVTUE9OU0UAVU5TVVBQT1JURURfTUVESUFfVFlQRQBHT05FAE5PVF9BQ0NFUFRBQkxFAFNFUlZJQ0VfVU5BVkFJTEFCTEUAUkFOR0VfTk9UX1NBVElTRklBQkxFAE9SSUdJTl9JU19VTlJFQUNIQUJMRQBSRVNQT05TRV9JU19TVEFMRQBQVVJHRQBNRVJHRQBSRVFVRVNUX0hFQURFUl9GSUVMRFNfVE9PX0xBUkdFAFJFUVVFU1RfSEVBREVSX1RPT19MQVJHRQBQQVlMT0FEX1RPT19MQVJHRQBJTlNVRkZJQ0lFTlRfU1RPUkFHRQBIUEVfUEFVU0VEX1VQR1JBREUASFBFX1BBVVNFRF9IMl9VUEdSQURFAFNPVVJDRQBBTk5PVU5DRQBUUkFDRQBIUEVfVU5FWFBFQ1RFRF9TUEFDRQBERVNDUklCRQBVTlNVQlNDUklCRQBSRUNPUkQASFBFX0lOVkFMSURfTUVUSE9EAE5PVF9GT1VORABQUk9QRklORABVTkJJTkQAUkVCSU5EAFVOQVVUSE9SSVpFRABNRVRIT0RfTk9UX0FMTE9XRUQASFRUUF9WRVJTSU9OX05PVF9TVVBQT1JURUQAQUxSRUFEWV9SRVBPUlRFRABBQ0NFUFRFRABOT1RfSU1QTEVNRU5URUQATE9PUF9ERVRFQ1RFRABIUEVfQ1JfRVhQRUNURUQASFBFX0xGX0VYUEVDVEVEAENSRUFURUQASU1fVVNFRABIUEVfUEFVU0VEAFRJTUVPVVRfT0NDVVJFRABQQVlNRU5UX1JFUVVJUkVEAFBSRUNPTkRJVElPTl9SRVFVSVJFRABQUk9YWV9BVVRIRU5USUNBVElPTl9SRVFVSVJFRABORVRXT1JLX0FVVEhFTlRJQ0FUSU9OX1JFUVVJUkVEAExFTkdUSF9SRVFVSVJFRABTU0xfQ0VSVElGSUNBVEVfUkVRVUlSRUQAVVBHUkFERV9SRVFVSVJFRABQQUdFX0VYUElSRUQAUFJFQ09ORElUSU9OX0ZBSUxFRABFWFBFQ1RBVElPTl9GQUlMRUQAUkVWQUxJREFUSU9OX0ZBSUxFRABTU0xfSEFORFNIQUtFX0ZBSUxFRABMT0NLRUQAVFJBTlNGT1JNQVRJT05fQVBQTElFRABOT1RfTU9ESUZJRUQATk9UX0VYVEVOREVEAEJBTkRXSURUSF9MSU1JVF9FWENFRURFRABTSVRFX0lTX09WRVJMT0FERUQASEVBRABFeHBlY3RlZCBIVFRQLwAAXhMAACYTAAAwEAAA8BcAAJ0TAAAVEgAAORcAAPASAAAKEAAAdRIAAK0SAACCEwAATxQAAH8QAACgFQAAIxQAAIkSAACLFAAATRUAANQRAADPFAAAEBgAAMkWAADcFgAAwREAAOAXAAC7FAAAdBQAAHwVAADlFAAACBcAAB8QAABlFQAAoxQAACgVAAACFQAAmRUAACwQAACLGQAATw8AANQOAABqEAAAzhAAAAIXAACJDgAAbhMAABwTAABmFAAAVhcAAMETAADNEwAAbBMAAGgXAABmFwAAXxcAACITAADODwAAaQ4AANgOAABjFgAAyxMAAKoOAAAoFwAAJhcAAMUTAABdFgAA6BEAAGcTAABlEwAA8hYAAHMTAAAdFwAA+RYAAPMRAADPDgAAzhUAAAwSAACzEQAApREAAGEQAAAyFwAAuxMAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAIDAgICAgIAAAICAAICAAICAgICAgICAgIABAAAAAAAAgICAgICAgICAgICAgICAgICAgICAgICAgIAAAACAgICAgICAgICAgICAgICAgICAgICAgICAgICAgACAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAACAAICAgICAAACAgACAgACAgICAgICAgICAAMABAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAAgACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbG9zZWVlcC1hbGl2ZQAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBY2h1bmtlZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEAAQEBAQEAAAEBAAEBAAEBAQEBAQEBAQEAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABlY3Rpb25lbnQtbGVuZ3Rob25yb3h5LWNvbm5lY3Rpb24AAAAAAAAAAAAAAAAAAAByYW5zZmVyLWVuY29kaW5ncGdyYWRlDQoNCg0KU00NCg0KVFRQL0NFL1RTUC8AAAAAAAAAAAAAAAABAgABAwAAAAAAAAAAAAAAAAAAAAAAAAQBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAQIAAQMAAAAAAAAAAAAAAAAAAAAAAAAEAQEFAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAEAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAQAAAgAAAAAAAAAAAAAAAAAAAAAAAAMEAAAEBAQEBAQEBAQEBAUEBAQEBAQEBAQEBAQABAAGBwQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEAAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAEAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAADAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwAAAAAAAAMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAABAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAIAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAAAAAAAADAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABOT1VOQ0VFQ0tPVVRORUNURVRFQ1JJQkVMVVNIRVRFQURTRUFSQ0hSR0VDVElWSVRZTEVOREFSVkVPVElGWVBUSU9OU0NIU0VBWVNUQVRDSEdFT1JESVJFQ1RPUlRSQ0hQQVJBTUVURVJVUkNFQlNDUklCRUFSRE9XTkFDRUlORE5LQ0tVQlNDUklCRUhUVFAvQURUUC8='\n","module.exports = 'AGFzbQEAAAABMAhgAX8Bf2ADf39/AX9gBH9/f38Bf2AAAGADf39/AGABfwBgAn9/AGAGf39/f39/AALLAQgDZW52GHdhc21fb25faGVhZGVyc19jb21wbGV0ZQACA2VudhV3YXNtX29uX21lc3NhZ2VfYmVnaW4AAANlbnYLd2FzbV9vbl91cmwAAQNlbnYOd2FzbV9vbl9zdGF0dXMAAQNlbnYUd2FzbV9vbl9oZWFkZXJfZmllbGQAAQNlbnYUd2FzbV9vbl9oZWFkZXJfdmFsdWUAAQNlbnYMd2FzbV9vbl9ib2R5AAEDZW52GHdhc21fb25fbWVzc2FnZV9jb21wbGV0ZQAAA0ZFAwMEAAAFAAAAAAAABQEFAAUFBQAABgAAAAAGBgYGAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAAABAQcAAAUFAwABBAUBcAESEgUDAQACBggBfwFBgNQECwfRBSIGbWVtb3J5AgALX2luaXRpYWxpemUACRlfX2luZGlyZWN0X2Z1bmN0aW9uX3RhYmxlAQALbGxodHRwX2luaXQAChhsbGh0dHBfc2hvdWxkX2tlZXBfYWxpdmUAQQxsbGh0dHBfYWxsb2MADAZtYWxsb2MARgtsbGh0dHBfZnJlZQANBGZyZWUASA9sbGh0dHBfZ2V0X3R5cGUADhVsbGh0dHBfZ2V0X2h0dHBfbWFqb3IADxVsbGh0dHBfZ2V0X2h0dHBfbWlub3IAEBFsbGh0dHBfZ2V0X21ldGhvZAARFmxsaHR0cF9nZXRfc3RhdHVzX2NvZGUAEhJsbGh0dHBfZ2V0X3VwZ3JhZGUAEwxsbGh0dHBfcmVzZXQAFA5sbGh0dHBfZXhlY3V0ZQAVFGxsaHR0cF9zZXR0aW5nc19pbml0ABYNbGxodHRwX2ZpbmlzaAAXDGxsaHR0cF9wYXVzZQAYDWxsaHR0cF9yZXN1bWUAGRtsbGh0dHBfcmVzdW1lX2FmdGVyX3VwZ3JhZGUAGhBsbGh0dHBfZ2V0X2Vycm5vABsXbGxodHRwX2dldF9lcnJvcl9yZWFzb24AHBdsbGh0dHBfc2V0X2Vycm9yX3JlYXNvbgAdFGxsaHR0cF9nZXRfZXJyb3JfcG9zAB4RbGxodHRwX2Vycm5vX25hbWUAHxJsbGh0dHBfbWV0aG9kX25hbWUAIBJs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IAH9CwMAIABBMGogAf0LAwAgAEEgaiAB/QsDACAAQd0BNgIcQQALewEBfwJAIAAoAgwiAw0AAkAgACgCBEUNACAAIAE2AgQLAkAgACABIAIQxICAgAAiAw0AIAAoAgwPCyAAIAM2AhxBACEDIAAoAgQiAUUNACAAIAEgAiAAKAIIEYGAgIAAACIBRQ0AIAAgAjYCFCAAIAE2AgwgASEDCyADC+TzAQMOfwN+BH8jgICAgABBEGsiAySAgICAACABIQQgASEFIAEhBiABIQcgASEIIAEhCSABIQogASELIAEhDCABIQ0gASEOIAEhDwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCAAKAIcIhBBf2oO3QHaAQHZAQIDBAUGBwgJCgsMDQ7YAQ8Q1wEREtYBExQVFhcYGRob4AHfARwdHtUBHyAhIiMkJdQBJicoKSorLNMB0gEtLtEB0AEvMDEyMzQ1Njc4OTo7PD0+P0BBQkNERUbbAUdISUrPAc4BS80BTMwBTU5PUFFSU1RVVldYWVpbXF1eX2BhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ent8fX5/gAGBAYIBgwGEAYUBhgGHAYgBiQGKAYsBjAGNAY4BjwGQAZEB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QAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIBAOxwEAAQID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YWNrIGVycm9yAGBvbl9jaHVua19leHRlbnNpb25fdmFsdWVgIGNhbGxiYWNrIGVycm9yAGBvbl9zdGF0dXNfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl92ZXJzaW9uX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fdXJsX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fY2h1bmtfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl9oZWFkZXJfdmFsdWVfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl9tZXNzYWdlX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fbWV0aG9kX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25faGVhZGVyX2ZpZWxkX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fY2h1bmtfZXh0ZW5zaW9uX25hbWVgIGNhbGxiYWNrIGVycm9yAFVuZXhwZWN0ZWQgY2hhciBpbiB1cmwgc2VydmVyAEludmFsaWQgaGVhZGVyIHZhbHVlIGNoYXIASW52YWxpZCBoZWFkZXIgZmllbGQgY2hhcgBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX3ZlcnNpb24ASW52YWxpZCBtaW5vciB2ZXJzaW9uAEludmFsaWQgbWFqb3IgdmVyc2lvbgBFeHBlY3RlZCBzcGFjZSBhZnRlciB2ZXJzaW9uAEV4cGVjdGVkIENSTEYgYWZ0ZXIgdmVyc2lvbgBJbnZhbGlkIEhUVFAgdmVyc2lvbgBJbnZhbGlkIGhlYWRlciB0b2tlbgBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX3VybABJbnZhbGlkIGNoYXJhY3RlcnMgaW4gdXJsAFVuZXhwZWN0ZWQgc3RhcnQgY2hhciBpbiB1cmwARG91YmxlIEAgaW4gdXJsAEVtcHR5IENvbnRlbnQtTGVuZ3RoAEludmFsaWQgY2hhcmFjdGVyIGluIENvbnRlbnQtTGVuZ3RoAER1cGxpY2F0ZSBDb250ZW50LUxlbmd0aABJbnZhbGlkIGNoYXIgaW4gdXJsIHBhdGgAQ29udGVudC1MZW5ndGggY2FuJ3QgYmUgcHJlc2VudCB3aXRoIFRyYW5zZmVyLUVuY29kaW5nAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIHNpemUAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9oZWFkZXJfdmFsdWUAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9jaHVua19leHRlbnNpb25fdmFsdWUASW52YWxpZCBjaGFyYWN0ZXIgaW4gY2h1bmsgZXh0ZW5zaW9ucyB2YWx1ZQBNaXNzaW5nIGV4cGVjdGVkIExGIGFmdGVyIGhlYWRlciB2YWx1ZQBJbnZhbGlkIGBUcmFuc2Zlci1FbmNvZGluZ2AgaGVhZGVyIHZhbHVlAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIGV4dGVuc2lvbnMgcXVvdGUgdmFsdWUASW52YWxpZCBjaGFyYWN0ZXIgaW4gY2h1bmsgZXh0ZW5zaW9ucyBxdW90ZWQgdmFsdWUAUGF1c2VkIGJ5IG9uX2hlYWRlcnNfY29tcGxldGUASW52YWxpZCBFT0Ygc3RhdGUAb25fcmVzZXQgcGF1c2UAb25fY2h1bmtfaGVhZGVyIHBhdXNlAG9uX21lc3NhZ2VfYmVnaW4gcGF1c2UAb25fY2h1bmtfZXh0ZW5zaW9uX3ZhbHVlIHBhdXNlAG9uX3N0YXR1c19jb21wbGV0ZSBwYXVzZQBvbl92ZXJzaW9uX2NvbXBsZXRlIHBhdXNlAG9uX3VybF9jb21wbGV0ZSBwYXVzZQBvbl9jaHVua19jb21wbGV0ZSBwYXVzZQBvbl9oZWFkZXJfdmFsdWVfY29tcGxldGUgcGF1c2UAb25fbWVzc2FnZV9jb21wbGV0ZSBwYXVzZQBvbl9tZXRob2RfY29tcGxldGUgcGF1c2UAb25faGVhZGVyX2ZpZWxkX2NvbXBsZXRlIHBhdXNlAG9uX2NodW5rX2V4dGVuc2lvbl9uYW1lIHBhdXNlAFVuZXhwZWN0ZWQgc3BhY2UgYWZ0ZXIgc3RhcnQgbGluZQBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX2NodW5rX2V4dGVuc2lvbl9uYW1lAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIGV4dGVuc2lvbnMgbmFtZQBQYXVzZSBvbiBDT05ORUNUL1VwZ3JhZGUAUGF1c2Ugb24gUFJJL1VwZ3JhZGUARXhwZWN0ZWQgSFRUUC8yIENvbm5lY3Rpb24gUHJlZmFjZQBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX21ldGhvZABFeHBlY3RlZCBzcGFjZSBhZnRlciBtZXRob2QAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9oZWFkZXJfZmllbGQAUGF1c2VkAEludmFsaWQgd29yZCBlbmNvdW50ZXJlZABJbnZhbGlkIG1ldGhvZCBlbmNvdW50ZXJlZABVbmV4cGVjdGVkIGNoYXIgaW4gdXJsIHNjaGVtYQBSZXF1ZXN0IGhhcyBpbnZhbGlkIGBUcmFuc2Zlci1FbmNvZGluZ2AAU1dJVENIX1BST1hZAFVTRV9QUk9YWQBNS0FDVElWSVRZAFVOUFJPQ0VTU0FCTEVfRU5USVRZAENPUFkATU9WRURfUEVSTUFORU5UTFkAVE9PX0VBUkxZAE5PVElGWQBGQUlMRURfREVQRU5ERU5DWQBCQURfR0FURVdBWQBQTEFZAFBVVABDSEVDS09VVABHQVRFV0FZX1RJTUVPVVQAUkVRVUVTVF9USU1FT1VUAE5FVFdPUktfQ09OTkVDVF9USU1FT1VUAENPTk5FQ1RJT05fVElNRU9VVABMT0dJTl9USU1FT1VUAE5FVFdPUktfUkVBRF9USU1FT1VUAFBPU1QATUlTRElSRUNURURfUkVRVUVTVABDTElFTlRfQ0xPU0VEX1JFUVVFU1QAQ0xJRU5UX0NMT1NFRF9MT0FEX0JBTEFOQ0VEX1JFUVVFU1QAQkFEX1JFUVVFU1QASFRUUF9SRVFVRVNUX1NFTlRfVE9fSFRUUFNfUE9SVABSRVBPUlQASU1fQV9URUFQT1QAUkVTRVRfQ09OVEVOVABOT19DT05URU5UAFBBUlRJQUxfQ09OVEVOVABIUEVfSU5WQUxJRF9DT05TVEFOVABIUEVfQ0JfUkVTRVQAR0VUAEhQRV9TVFJJQ1QAQ09ORkxJQ1QAVEVNUE9SQVJZX1JFRElSRUNUAFBFUk1BTkVOVF9SRURJUkVDVABDT05ORUNUAE1VTFRJX1NUQVRVUwBIUEVfSU5WQUxJRF9TVEFUVVMAVE9PX01BTllfUkVRVUVTVFMARUFSTFlfSElOVFMAVU5BVkFJTEFCTEVfRk9SX0xFR0FMX1JFQVNPTlMAT1BUSU9OUwBTV0lUQ0hJTkdfUFJPVE9DT0xTAFZBUklBTlRfQUxTT19ORUdPVElBVEVTAE1VTFRJUExFX0NIT0lDRVMASU5URVJOQUxfU0VSVkVSX0VSUk9SAFdFQl9TRVJWRVJfVU5LTk9XTl9FUlJPUgBSQUlMR1VOX0VSUk9SAElERU5USVRZX1BST1ZJREVSX0FVVEhFTlRJQ0FUSU9OX0VSUk9SAFNTTF9DRVJUSUZJQ0FURV9FUlJPUgBJTlZBTElEX1hfRk9SV0FSREVEX0ZPUgBTRVRfUEFSQU1FVEVSAEdFVF9QQVJBTUVURVIASFBFX1VTRVIAU0VFX09USEVSAEhQRV9DQl9DSFVOS19IRUFERVIATUtDQUxFTkRBUgBTRVRVUABXRUJfU0VSVkVSX0lTX0RPV04AVEVBUkRPV04ASFBFX0NMT1NFRF9DT05ORUNUSU9OAEhFVVJJU1RJQ19FWFBJUkFUSU9OAERJU0NPTk5FQ1RFRF9PUEVSQVRJT04ATk9OX0FVVEhPUklUQVRJVkVfSU5GT1JNQVRJT04ASFBFX0lOVkFMSURfVkVSU0lPTgBIUEVfQ0JfTUVTU0FHRV9CRUdJTgBTSVRFX0lTX0ZST1pFTgBIUEVfSU5WQUxJRF9IRUFERVJfVE9LRU4ASU5WQUxJRF9UT0tFTgBGT1JCSURERU4ARU5IQU5DRV9ZT1VSX0NBTE0ASFBFX0lOVkFMSURfVVJMAEJMT0NLRURfQllfUEFSRU5UQUxfQ09OVFJPTABNS0NPTABBQ0wASFBFX0lOVEVSTkFMAFJFUVVFU1RfSEVBREVSX0ZJRUxEU19UT09fTEFSR0VfVU5PRkZJQ0lBTABIUEVfT0sAVU5MSU5LAFVOTE9DSwBQUkkAUkVUUllfV0lUSABIUEVfSU5WQUxJRF9DT05URU5UX0xFTkdUSABIUEVfVU5FWFBFQ1RFRF9DT05URU5UX0xFTkdUSABGTFVTSABQUk9QUEFUQ0gATS1TRUFSQ0gAVVJJX1RPT19MT05HAFBST0NFU1NJTkcATUlTQ0VMTEFORU9VU19QRVJTSVNURU5UX1dBUk5JTkcATUlTQ0VMTEFORU9VU19XQVJOSU5HAEhQRV9JTlZBTElEX1RSQU5TRkVSX0VOQ09ESU5HAEV4cGVjdGVkIENSTEYASFBFX0lOVkFMSURfQ0hVTktfU0laRQBNT1ZFAENPTlRJTlVFAEhQRV9DQl9TVEFUVVNfQ09NUExFVEUASFBFX0NCX0hFQURFUlNfQ09NUExFVEUASFBFX0NCX1ZFUlNJT05fQ09NUExFVEUASFBFX0NCX1VSTF9DT01QTEVURQBIUEVfQ0JfQ0hVTktfQ09NUExFVEUASFBFX0NCX0hFQURFUl9WQUxVRV9DT01QTEVURQBIUEVfQ0JfQ0hVTktfRVhURU5TSU9OX1ZBTFVFX0NPTVBMRVRFAEhQRV9DQl9DSFVOS19FWFRFTlNJT05fTkFNRV9DT01QTEVURQBIUEVfQ0JfTUVTU0FHRV9DT01QTEVURQBIUEVfQ0JfTUVUSE9EX0NPTVBMRVRFAEhQRV9DQl9IRUFERVJfRklFTERfQ09NUExFVEUAREVMRVRFAEhQRV9JTlZBTElEX0VPRl9TVEFURQBJTlZBTElEX1NTTF9DRVJUSUZJQ0FURQBQQVVTRQBOT19SRVNQT05TRQBVTlNVUFBPUlRFRF9NRURJQV9UWVBFAEdPTkUATk9UX0FDQ0VQVEFCTEUAU0VSVklDRV9VTkFWQUlMQUJMRQBSQU5HRV9OT1RfU0FUSVNGSUFCTEUAT1JJR0lOX0lTX1VOUkVBQ0hBQkxFAFJFU1BPTlNFX0lTX1NUQUxFAFBVUkdFAE1FUkdFAFJFUVVFU1RfSEVBREVSX0ZJRUxEU19UT09fTEFSR0UAUkVRVUVTVF9IRUFERVJfVE9PX0xBUkdFAFBBWUxPQURfVE9PX0xBUkdFAElOU1VGRklDSUVOVF9TVE9SQUdFAEhQRV9QQVVTRURfVVBHUkFERQBIUEVfUEFVU0VEX0gyX1VQR1JBREUAU09VUkNFAEFOTk9VTkNFAFRSQUNFAEhQRV9VTkVYUEVDVEVEX1NQQUNFAERFU0NSSUJFAFVOU1VCU0NSSUJFAFJFQ09SRABIUEVfSU5WQUxJRF9NRVRIT0QATk9UX0ZPVU5EAFBST1BGSU5EAFVOQklORABSRUJJTkQAVU5BVVRIT1JJWkVEAE1FVEhPRF9OT1RfQUxMT1dFRABIVFRQX1ZFUlNJT05fTk9UX1NVUFBPUlRFRABBTFJFQURZX1JFUE9SVEVEAEFDQ0VQVEVEAE5PVF9JTVBMRU1FTlRFRABMT09QX0RFVEVDVEVEAEhQRV9DUl9FWFBFQ1RFRABIUEVfTEZfRVhQRUNURUQAQ1JFQVRFRABJTV9VU0VEAEhQRV9QQVVTRUQAVElNRU9VVF9PQ0NVUkVEAFBBWU1FTlRfUkVRVUlSRUQAUFJFQ09ORElUSU9OX1JFUVVJUkVEAFBST1hZX0FVVEhFTlRJQ0FUSU9OX1JFUVVJUkVEAE5FVFdPUktfQVVUSEVOVElDQVRJT05fUkVRVUlSRUQATEVOR1RIX1JFUVVJUkVEAFNTTF9DRVJUSUZJQ0FURV9SRVFVSVJFRABVUEdSQURFX1JFUVVJUkVEAFBBR0VfRVhQSVJFRABQUkVDT05ESVRJT05fRkFJTEVEAEVYUEVDVEFUSU9OX0ZBSUxFRABSRVZBTElEQVRJT05fRkFJTEVEAFNTTF9IQU5EU0hBS0VfRkFJTEVEAExPQ0tFRABUUkFOU0ZPUk1BVElPTl9BUFBMSUVEAE5PVF9NT0RJRklFRABOT1RfRVhURU5ERUQAQkFORFdJRFRIX0xJTUlUX0VYQ0VFREVEAFNJVEVfSVNfT1ZFUkxPQURFRABIRUFEAEV4cGVjdGVkIEhUVFAvAABeEwAAJhMAADAQAADwFwAAnRMAABUSAAA5FwAA8BIAAAoQAAB1EgAArRIAAIITAABPFAAAfxAAAKAVAAAjFAAAiRIAAIsUAABNFQAA1BEAAM8UAAAQGAAAyRYAANwWAADBEQAA4BcAALsUAAB0FAAAfBUAAOUUAAAIFwAAHxAAAGUVAACjFAAAKBUAAAIVAACZFQAALBAAAIsZAABPDwAA1A4AAGoQAADOEAAAAhcAAIkOAABuEwAAHBMAAGYUAABWFwAAwRMAAM0TAABsEwAAaBcAAGYXAABfFwAAIhMAAM4PAABpDgAA2A4AAGMWAADLEwAAqg4AACgXAAAmFwAAxRMAAF0WAADoEQAAZxMAAGUTAADyFgAAcxMAAB0XAAD5FgAA8xEAAM8OAADOFQAADBIAALMRAAClEQAAYRAAADIXAAC7EwAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAgMCAgICAgAAAgIAAgIAAgICAgICAgICAgAEAAAAAAACAgICAgICAgICAgICAgICAgICAgICAgICAgAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAIAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAIAAgICAgIAAAICAAICAAICAgICAgICAgIAAwAEAAAAAgICAgICAgICAgICAgICAgICAgICAgICAgIAAAACAgICAgICAgICAgICAgICAgICAgICAgICAgICAgACAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABsb3NlZWVwLWFsaXZlAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQFjaHVua2VkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQABAQEBAQAAAQEAAQEAAQEBAQEBAQEBAQAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGVjdGlvbmVudC1sZW5ndGhvbnJveHktY29ubmVjdGlvbgAAAAAAAAAAAAAAAAAAAHJhbnNmZXItZW5jb2RpbmdwZ3JhZGUNCg0KDQpTTQ0KDQpUVFAvQ0UvVFNQLwAAAAAAAAAAAAAAAAECAAEDAAAAAAAAAAAAAAAAAAAAAAAABAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAABAgABAwAAAAAAAAAAAAAAAAAAAAAAAAQBAQUBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAQAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAABAAACAAAAAAAAAAAAAAAAAAAAAAAAAwQAAAQEBAQEBAQEBAQEBQQEBAQEBAQEBAQEBAAEAAYHBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQABAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAQAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAAAAAAAAAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAEAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAgAAAAACAAAAAAAAAAAAAAAAAAAAAAADAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwAAAAAAAAMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAE5PVU5DRUVDS09VVE5FQ1RFVEVDUklCRUxVU0hFVEVBRFNFQVJDSFJHRUNUSVZJVFlMRU5EQVJWRU9USUZZUFRJT05TQ0hTRUFZU1RBVENIR0VPUkRJUkVDVE9SVFJDSFBBUkFNRVRFUlVSQ0VCU0NSSUJFQVJET1dOQUNFSU5ETktDS1VCU0NSSUJFSFRUUC9BRFRQLw=='\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.enumToMap = void 0;\nfunction enumToMap(obj) {\n const res = {};\n Object.keys(obj).forEach((key) => {\n const value = obj[key];\n if (typeof value === 'number') {\n res[key] = value;\n }\n });\n return res;\n}\nexports.enumToMap = enumToMap;\n//# sourceMappingURL=utils.js.map","'use strict'\n\nconst { kClients } = require('../core/symbols')\nconst Agent = require('../agent')\nconst {\n kAgent,\n kMockAgentSet,\n kMockAgentGet,\n kDispatches,\n kIsMockActive,\n kNetConnect,\n kGetNetConnect,\n kOptions,\n kFactory\n} = require('./mock-symbols')\nconst MockClient = require('./mock-client')\nconst MockPool = require('./mock-pool')\nconst { matchValue, buildMockOptions } = require('./mock-utils')\nconst { InvalidArgumentError, UndiciError } = require('../core/errors')\nconst Dispatcher = require('../dispatcher')\nconst Pluralizer = require('./pluralizer')\nconst PendingInterceptorsFormatter = require('./pending-interceptors-formatter')\n\nclass FakeWeakRef {\n constructor (value) {\n this.value = value\n }\n\n deref () {\n return this.value\n }\n}\n\nclass MockAgent extends Dispatcher {\n constructor (opts) {\n super(opts)\n\n this[kNetConnect] = true\n this[kIsMockActive] = true\n\n // Instantiate Agent and encapsulate\n if ((opts && opts.agent && typeof opts.agent.dispatch !== 'function')) {\n throw new InvalidArgumentError('Argument opts.agent must implement Agent')\n }\n const agent = opts && opts.agent ? opts.agent : new Agent(opts)\n this[kAgent] = agent\n\n this[kClients] = agent[kClients]\n this[kOptions] = buildMockOptions(opts)\n }\n\n get (origin) {\n let dispatcher = this[kMockAgentGet](origin)\n\n if (!dispatcher) {\n dispatcher = this[kFactory](origin)\n this[kMockAgentSet](origin, dispatcher)\n }\n return dispatcher\n }\n\n dispatch (opts, handler) {\n // Call MockAgent.get to perform additional setup before dispatching as normal\n this.get(opts.origin)\n return this[kAgent].dispatch(opts, handler)\n }\n\n async close () {\n await this[kAgent].close()\n this[kClients].clear()\n }\n\n deactivate () {\n this[kIsMockActive] = false\n }\n\n activate () {\n this[kIsMockActive] = true\n }\n\n enableNetConnect (matcher) {\n if (typeof matcher === 'string' || typeof matcher === 'function' || matcher instanceof RegExp) {\n if (Array.isArray(this[kNetConnect])) {\n this[kNetConnect].push(matcher)\n } else {\n this[kNetConnect] = [matcher]\n }\n } else if (typeof matcher === 'undefined') {\n this[kNetConnect] = true\n } else {\n throw new InvalidArgumentError('Unsupported matcher. Must be one of String|Function|RegExp.')\n }\n }\n\n disableNetConnect () {\n this[kNetConnect] = false\n }\n\n // This is required to bypass issues caused by using global symbols - see:\n // https://github.com/nodejs/undici/issues/1447\n get isMockActive () {\n return this[kIsMockActive]\n }\n\n [kMockAgentSet] (origin, dispatcher) {\n this[kClients].set(origin, new FakeWeakRef(dispatcher))\n }\n\n [kFactory] (origin) {\n const mockOptions = Object.assign({ agent: this }, this[kOptions])\n return this[kOptions] && this[kOptions].connections === 1\n ? new MockClient(origin, mockOptions)\n : new MockPool(origin, mockOptions)\n }\n\n [kMockAgentGet] (origin) {\n // First check if we can immediately find it\n const ref = this[kClients].get(origin)\n if (ref) {\n return ref.deref()\n }\n\n // If the origin is not a string create a dummy parent pool and return to user\n if (typeof origin !== 'string') {\n const dispatcher = this[kFactory]('http://localhost:9999')\n this[kMockAgentSet](origin, dispatcher)\n return dispatcher\n }\n\n // If we match, create a pool and assign the same dispatches\n for (const [keyMatcher, nonExplicitRef] of Array.from(this[kClients])) {\n const nonExplicitDispatcher = nonExplicitRef.deref()\n if (nonExplicitDispatcher && typeof keyMatcher !== 'string' && matchValue(keyMatcher, origin)) {\n const dispatcher = this[kFactory](origin)\n this[kMockAgentSet](origin, dispatcher)\n dispatcher[kDispatches] = nonExplicitDispatcher[kDispatches]\n return dispatcher\n }\n }\n }\n\n [kGetNetConnect] () {\n return this[kNetConnect]\n }\n\n pendingInterceptors () {\n const mockAgentClients = this[kClients]\n\n return Array.from(mockAgentClients.entries())\n .flatMap(([origin, scope]) => scope.deref()[kDispatches].map(dispatch => ({ ...dispatch, origin })))\n .filter(({ pending }) => pending)\n }\n\n assertNoPendingInterceptors ({ pendingInterceptorsFormatter = new PendingInterceptorsFormatter() } = {}) {\n const pending = this.pendingInterceptors()\n\n if (pending.length === 0) {\n return\n }\n\n const pluralizer = new Pluralizer('interceptor', 'interceptors').pluralize(pending.length)\n\n throw new UndiciError(`\n${pluralizer.count} ${pluralizer.noun} ${pluralizer.is} pending:\n\n${pendingInterceptorsFormatter.format(pending)}\n`.trim())\n }\n}\n\nmodule.exports = MockAgent\n","'use strict'\n\nconst { promisify } = require('util')\nconst Client = require('../client')\nconst { buildMockDispatch } = require('./mock-utils')\nconst {\n kDispatches,\n kMockAgent,\n kClose,\n kOriginalClose,\n kOrigin,\n kOriginalDispatch,\n kConnected\n} = require('./mock-symbols')\nconst { MockInterceptor } = require('./mock-interceptor')\nconst Symbols = require('../core/symbols')\nconst { InvalidArgumentError } = require('../core/errors')\n\n/**\n * MockClient provides an API that extends the Client to influence the mockDispatches.\n */\nclass MockClient extends Client {\n constructor (origin, opts) {\n super(origin, opts)\n\n if (!opts || !opts.agent || typeof opts.agent.dispatch !== 'function') {\n throw new InvalidArgumentError('Argument opts.agent must implement Agent')\n }\n\n this[kMockAgent] = opts.agent\n this[kOrigin] = origin\n this[kDispatches] = []\n this[kConnected] = 1\n this[kOriginalDispatch] = this.dispatch\n this[kOriginalClose] = this.close.bind(this)\n\n this.dispatch = buildMockDispatch.call(this)\n this.close = this[kClose]\n }\n\n get [Symbols.kConnected] () {\n return this[kConnected]\n }\n\n /**\n * Sets up the base interceptor for mocking replies from undici.\n */\n intercept (opts) {\n return new MockInterceptor(opts, this[kDispatches])\n }\n\n async [kClose] () {\n await promisify(this[kOriginalClose])()\n this[kConnected] = 0\n this[kMockAgent][Symbols.kClients].delete(this[kOrigin])\n }\n}\n\nmodule.exports = MockClient\n","'use strict'\n\nconst { UndiciError } = require('../core/errors')\n\nclass MockNotMatchedError extends UndiciError {\n constructor (message) {\n super(message)\n Error.captureStackTrace(this, MockNotMatchedError)\n this.name = 'MockNotMatchedError'\n this.message = message || 'The request does not match any registered mock dispatches'\n this.code = 'UND_MOCK_ERR_MOCK_NOT_MATCHED'\n }\n}\n\nmodule.exports = {\n MockNotMatchedError\n}\n","'use strict'\n\nconst { getResponseData, buildKey, addMockDispatch } = require('./mock-utils')\nconst {\n kDispatches,\n kDispatchKey,\n kDefaultHeaders,\n kDefaultTrailers,\n kContentLength,\n kMockDispatch\n} = require('./mock-symbols')\nconst { InvalidArgumentError } = require('../core/errors')\nconst { buildURL } = require('../core/util')\n\n/**\n * Defines the scope API for an interceptor reply\n */\nclass MockScope {\n constructor (mockDispatch) {\n this[kMockDispatch] = mockDispatch\n }\n\n /**\n * Delay a reply by a set amount in ms.\n */\n delay (waitInMs) {\n if (typeof waitInMs !== 'number' || !Number.isInteger(waitInMs) || waitInMs <= 0) {\n throw new InvalidArgumentError('waitInMs must be a valid integer > 0')\n }\n\n this[kMockDispatch].delay = waitInMs\n return this\n }\n\n /**\n * For a defined reply, never mark as consumed.\n */\n persist () {\n this[kMockDispatch].persist = true\n return this\n }\n\n /**\n * Allow one to define a reply for a set amount of matching requests.\n */\n times (repeatTimes) {\n if (typeof repeatTimes !== 'number' || !Number.isInteger(repeatTimes) || repeatTimes <= 0) {\n throw new InvalidArgumentError('repeatTimes must be a valid integer > 0')\n }\n\n this[kMockDispatch].times = repeatTimes\n return this\n }\n}\n\n/**\n * Defines an interceptor for a Mock\n */\nclass MockInterceptor {\n constructor (opts, mockDispatches) {\n if (typeof opts !== 'object') {\n throw new InvalidArgumentError('opts must be an object')\n }\n if (typeof opts.path === 'undefined') {\n throw new InvalidArgumentError('opts.path must be defined')\n }\n if (typeof opts.method === 'undefined') {\n opts.method = 'GET'\n }\n // See https://github.com/nodejs/undici/issues/1245\n // As per RFC 3986, clients are not supposed to send URI\n // fragments to servers when they retrieve a document,\n if (typeof opts.path === 'string') {\n if (opts.query) {\n opts.path = buildURL(opts.path, opts.query)\n } else {\n // Matches https://github.com/nodejs/undici/blob/main/lib/fetch/index.js#L1811\n const parsedURL = new URL(opts.path, 'data://')\n opts.path = parsedURL.pathname + parsedURL.search\n }\n }\n if (typeof opts.method === 'string') {\n opts.method = opts.method.toUpperCase()\n }\n\n this[kDispatchKey] = buildKey(opts)\n this[kDispatches] = mockDispatches\n this[kDefaultHeaders] = {}\n this[kDefaultTrailers] = {}\n this[kContentLength] = false\n }\n\n createMockScopeDispatchData (statusCode, data, responseOptions = {}) {\n const responseData = getResponseData(data)\n const contentLength = this[kContentLength] ? { 'content-length': responseData.length } : {}\n const headers = { ...this[kDefaultHeaders], ...contentLength, ...responseOptions.headers }\n const trailers = { ...this[kDefaultTrailers], ...responseOptions.trailers }\n\n return { statusCode, data, headers, trailers }\n }\n\n validateReplyParameters (statusCode, data, responseOptions) {\n if (typeof statusCode === 'undefined') {\n throw new InvalidArgumentError('statusCode must be defined')\n }\n if (typeof data === 'undefined') {\n throw new InvalidArgumentError('data must be defined')\n }\n if (typeof responseOptions !== 'object') {\n throw new InvalidArgumentError('responseOptions must be an object')\n }\n }\n\n /**\n * Mock an undici request with a defined reply.\n */\n reply (replyData) {\n // Values of reply aren't available right now as they\n // can only be available when the reply callback is invoked.\n if (typeof replyData === 'function') {\n // We'll first wrap the provided callback in another function,\n // this function will properly resolve the data from the callback\n // when invoked.\n const wrappedDefaultsCallback = (opts) => {\n // Our reply options callback contains the parameter for statusCode, data and options.\n const resolvedData = replyData(opts)\n\n // Check if it is in the right format\n if (typeof resolvedData !== 'object') {\n throw new InvalidArgumentError('reply options callback must return an object')\n }\n\n const { statusCode, data = '', responseOptions = {} } = resolvedData\n this.validateReplyParameters(statusCode, data, responseOptions)\n // Since the values can be obtained immediately we return them\n // from this higher order function that will be resolved later.\n return {\n ...this.createMockScopeDispatchData(statusCode, data, responseOptions)\n }\n }\n\n // Add usual dispatch data, but this time set the data parameter to function that will eventually provide data.\n const newMockDispatch = addMockDispatch(this[kDispatches], this[kDispatchKey], wrappedDefaultsCallback)\n return new MockScope(newMockDispatch)\n }\n\n // We can have either one or three parameters, if we get here,\n // we should have 1-3 parameters. So we spread the arguments of\n // this function to obtain the parameters, since replyData will always\n // just be the statusCode.\n const [statusCode, data = '', responseOptions = {}] = [...arguments]\n this.validateReplyParameters(statusCode, data, responseOptions)\n\n // Send in-already provided data like usual\n const dispatchData = this.createMockScopeDispatchData(statusCode, data, responseOptions)\n const newMockDispatch = addMockDispatch(this[kDispatches], this[kDispatchKey], dispatchData)\n return new MockScope(newMockDispatch)\n }\n\n /**\n * Mock an undici request with a defined error.\n */\n replyWithError (error) {\n if (typeof error === 'undefined') {\n throw new InvalidArgumentError('error must be defined')\n }\n\n const newMockDispatch = addMockDispatch(this[kDispatches], this[kDispatchKey], { error })\n return new MockScope(newMockDispatch)\n }\n\n /**\n * Set default reply headers on the interceptor for subsequent replies\n */\n defaultReplyHeaders (headers) {\n if (typeof headers === 'undefined') {\n throw new InvalidArgumentError('headers must be defined')\n }\n\n this[kDefaultHeaders] = headers\n return this\n }\n\n /**\n * Set default reply trailers on the interceptor for subsequent replies\n */\n defaultReplyTrailers (trailers) {\n if (typeof trailers === 'undefined') {\n throw new InvalidArgumentError('trailers must be defined')\n }\n\n this[kDefaultTrailers] = trailers\n return this\n }\n\n /**\n * Set reply content length header for replies on the interceptor\n */\n replyContentLength () {\n this[kContentLength] = true\n return this\n }\n}\n\nmodule.exports.MockInterceptor = MockInterceptor\nmodule.exports.MockScope = MockScope\n","'use strict'\n\nconst { promisify } = require('util')\nconst Pool = require('../pool')\nconst { buildMockDispatch } = require('./mock-utils')\nconst {\n kDispatches,\n kMockAgent,\n kClose,\n kOriginalClose,\n kOrigin,\n kOriginalDispatch,\n kConnected\n} = require('./mock-symbols')\nconst { MockInterceptor } = require('./mock-interceptor')\nconst Symbols = require('../core/symbols')\nconst { InvalidArgumentError } = require('../core/errors')\n\n/**\n * MockPool provides an API that extends the Pool to influence the mockDispatches.\n */\nclass MockPool extends Pool {\n constructor (origin, opts) {\n super(origin, opts)\n\n if (!opts || !opts.agent || typeof opts.agent.dispatch !== 'function') {\n throw new InvalidArgumentError('Argument opts.agent must implement Agent')\n }\n\n this[kMockAgent] = opts.agent\n this[kOrigin] = origin\n this[kDispatches] = []\n this[kConnected] = 1\n this[kOriginalDispatch] = this.dispatch\n this[kOriginalClose] = this.close.bind(this)\n\n this.dispatch = buildMockDispatch.call(this)\n this.close = this[kClose]\n }\n\n get [Symbols.kConnected] () {\n return this[kConnected]\n }\n\n /**\n * Sets up the base interceptor for mocking replies from undici.\n */\n intercept (opts) {\n return new MockInterceptor(opts, this[kDispatches])\n }\n\n async [kClose] () {\n await promisify(this[kOriginalClose])()\n this[kConnected] = 0\n this[kMockAgent][Symbols.kClients].delete(this[kOrigin])\n }\n}\n\nmodule.exports = MockPool\n","'use strict'\n\nmodule.exports = {\n kAgent: Symbol('agent'),\n kOptions: Symbol('options'),\n kFactory: Symbol('factory'),\n kDispatches: Symbol('dispatches'),\n kDispatchKey: Symbol('dispatch key'),\n kDefaultHeaders: Symbol('default headers'),\n kDefaultTrailers: Symbol('default trailers'),\n kContentLength: Symbol('content length'),\n kMockAgent: Symbol('mock agent'),\n kMockAgentSet: Symbol('mock agent set'),\n kMockAgentGet: Symbol('mock agent get'),\n kMockDispatch: Symbol('mock dispatch'),\n kClose: Symbol('close'),\n kOriginalClose: Symbol('original agent close'),\n kOrigin: Symbol('origin'),\n kIsMockActive: Symbol('is mock active'),\n kNetConnect: Symbol('net connect'),\n kGetNetConnect: Symbol('get net connect'),\n kConnected: Symbol('connected')\n}\n","'use strict'\n\nconst { MockNotMatchedError } = require('./mock-errors')\nconst {\n kDispatches,\n kMockAgent,\n kOriginalDispatch,\n kOrigin,\n kGetNetConnect\n} = require('./mock-symbols')\nconst { buildURL, nop } = require('../core/util')\nconst { STATUS_CODES } = require('http')\nconst {\n types: {\n isPromise\n }\n} = require('util')\n\nfunction matchValue (match, value) {\n if (typeof match === 'string') {\n return match === value\n }\n if (match instanceof RegExp) {\n return match.test(value)\n }\n if (typeof match === 'function') {\n return match(value) === true\n }\n return false\n}\n\nfunction lowerCaseEntries (headers) {\n return Object.fromEntries(\n Object.entries(headers).map(([headerName, headerValue]) => {\n return [headerName.toLocaleLowerCase(), headerValue]\n })\n )\n}\n\n/**\n * @param {import('../../index').Headers|string[]|Record} headers\n * @param {string} key\n */\nfunction getHeaderByName (headers, key) {\n if (Array.isArray(headers)) {\n for (let i = 0; i < headers.length; i += 2) {\n if (headers[i].toLocaleLowerCase() === key.toLocaleLowerCase()) {\n return headers[i + 1]\n }\n }\n\n return undefined\n } else if (typeof headers.get === 'function') {\n return headers.get(key)\n } else {\n return lowerCaseEntries(headers)[key.toLocaleLowerCase()]\n }\n}\n\n/** @param {string[]} headers */\nfunction buildHeadersFromArray (headers) { // fetch HeadersList\n const clone = headers.slice()\n const entries = []\n for (let index = 0; index < clone.length; index += 2) {\n entries.push([clone[index], clone[index + 1]])\n }\n return Object.fromEntries(entries)\n}\n\nfunction matchHeaders (mockDispatch, headers) {\n if (typeof mockDispatch.headers === 'function') {\n if (Array.isArray(headers)) { // fetch HeadersList\n headers = buildHeadersFromArray(headers)\n }\n return mockDispatch.headers(headers ? lowerCaseEntries(headers) : {})\n }\n if (typeof mockDispatch.headers === 'undefined') {\n return true\n }\n if (typeof headers !== 'object' || typeof mockDispatch.headers !== 'object') {\n return false\n }\n\n for (const [matchHeaderName, matchHeaderValue] of Object.entries(mockDispatch.headers)) {\n const headerValue = getHeaderByName(headers, matchHeaderName)\n\n if (!matchValue(matchHeaderValue, headerValue)) {\n return false\n }\n }\n return true\n}\n\nfunction safeUrl (path) {\n if (typeof path !== 'string') {\n return path\n }\n\n const pathSegments = path.split('?')\n\n if (pathSegments.length !== 2) {\n return path\n }\n\n const qp = new URLSearchParams(pathSegments.pop())\n qp.sort()\n return [...pathSegments, qp.toString()].join('?')\n}\n\nfunction matchKey (mockDispatch, { path, method, body, headers }) {\n const pathMatch = matchValue(mockDispatch.path, path)\n const methodMatch = matchValue(mockDispatch.method, method)\n const bodyMatch = typeof mockDispatch.body !== 'undefined' ? matchValue(mockDispatch.body, body) : true\n const headersMatch = matchHeaders(mockDispatch, headers)\n return pathMatch && methodMatch && bodyMatch && headersMatch\n}\n\nfunction getResponseData (data) {\n if (Buffer.isBuffer(data)) {\n return data\n } else if (typeof data === 'object') {\n return JSON.stringify(data)\n } else {\n return data.toString()\n }\n}\n\nfunction getMockDispatch (mockDispatches, key) {\n const basePath = key.query ? buildURL(key.path, key.query) : key.path\n const resolvedPath = typeof basePath === 'string' ? safeUrl(basePath) : basePath\n\n // Match path\n let matchedMockDispatches = mockDispatches.filter(({ consumed }) => !consumed).filter(({ path }) => matchValue(safeUrl(path), resolvedPath))\n if (matchedMockDispatches.length === 0) {\n throw new MockNotMatchedError(`Mock dispatch not matched for path '${resolvedPath}'`)\n }\n\n // Match method\n matchedMockDispatches = matchedMockDispatches.filter(({ method }) => matchValue(method, key.method))\n if (matchedMockDispatches.length === 0) {\n throw new MockNotMatchedError(`Mock dispatch not matched for method '${key.method}'`)\n }\n\n // Match body\n matchedMockDispatches = matchedMockDispatches.filter(({ body }) => typeof body !== 'undefined' ? matchValue(body, key.body) : true)\n if (matchedMockDispatches.length === 0) {\n throw new MockNotMatchedError(`Mock dispatch not matched for body '${key.body}'`)\n }\n\n // Match headers\n matchedMockDispatches = matchedMockDispatches.filter((mockDispatch) => matchHeaders(mockDispatch, key.headers))\n if (matchedMockDispatches.length === 0) {\n throw new MockNotMatchedError(`Mock dispatch not matched for headers '${typeof key.headers === 'object' ? JSON.stringify(key.headers) : key.headers}'`)\n }\n\n return matchedMockDispatches[0]\n}\n\nfunction addMockDispatch (mockDispatches, key, data) {\n const baseData = { timesInvoked: 0, times: 1, persist: false, consumed: false }\n const replyData = typeof data === 'function' ? { callback: data } : { ...data }\n const newMockDispatch = { ...baseData, ...key, pending: true, data: { error: null, ...replyData } }\n mockDispatches.push(newMockDispatch)\n return newMockDispatch\n}\n\nfunction deleteMockDispatch (mockDispatches, key) {\n const index = mockDispatches.findIndex(dispatch => {\n if (!dispatch.consumed) {\n return false\n }\n return matchKey(dispatch, key)\n })\n if (index !== -1) {\n mockDispatches.splice(index, 1)\n }\n}\n\nfunction buildKey (opts) {\n const { path, method, body, headers, query } = opts\n return {\n path,\n method,\n body,\n headers,\n query\n }\n}\n\nfunction generateKeyValues (data) {\n return Object.entries(data).reduce((keyValuePairs, [key, value]) => [\n ...keyValuePairs,\n Buffer.from(`${key}`),\n Array.isArray(value) ? value.map(x => Buffer.from(`${x}`)) : Buffer.from(`${value}`)\n ], [])\n}\n\n/**\n * @see https://developer.mozilla.org/en-US/docs/Web/HTTP/Status\n * @param {number} statusCode\n */\nfunction getStatusText (statusCode) {\n return STATUS_CODES[statusCode] || 'unknown'\n}\n\nasync function getResponse (body) {\n const buffers = []\n for await (const data of body) {\n buffers.push(data)\n }\n return Buffer.concat(buffers).toString('utf8')\n}\n\n/**\n * Mock dispatch function used to simulate undici dispatches\n */\nfunction mockDispatch (opts, handler) {\n // Get mock dispatch from built key\n const key = buildKey(opts)\n const mockDispatch = getMockDispatch(this[kDispatches], key)\n\n mockDispatch.timesInvoked++\n\n // Here's where we resolve a callback if a callback is present for the dispatch data.\n if (mockDispatch.data.callback) {\n mockDispatch.data = { ...mockDispatch.data, ...mockDispatch.data.callback(opts) }\n }\n\n // Parse mockDispatch data\n const { data: { statusCode, data, headers, trailers, error }, delay, persist } = mockDispatch\n const { timesInvoked, times } = mockDispatch\n\n // If it's used up and not persistent, mark as consumed\n mockDispatch.consumed = !persist && timesInvoked >= times\n mockDispatch.pending = timesInvoked < times\n\n // If specified, trigger dispatch error\n if (error !== null) {\n deleteMockDispatch(this[kDispatches], key)\n handler.onError(error)\n return true\n }\n\n // Handle the request with a delay if necessary\n if (typeof delay === 'number' && delay > 0) {\n setTimeout(() => {\n handleReply(this[kDispatches])\n }, delay)\n } else {\n handleReply(this[kDispatches])\n }\n\n function handleReply (mockDispatches, _data = data) {\n // fetch's HeadersList is a 1D string array\n const optsHeaders = Array.isArray(opts.headers)\n ? buildHeadersFromArray(opts.headers)\n : opts.headers\n const body = typeof _data === 'function'\n ? _data({ ...opts, headers: optsHeaders })\n : _data\n\n // util.types.isPromise is likely needed for jest.\n if (isPromise(body)) {\n // If handleReply is asynchronous, throwing an error\n // in the callback will reject the promise, rather than\n // synchronously throw the error, which breaks some tests.\n // Rather, we wait for the callback to resolve if it is a\n // promise, and then re-run handleReply with the new body.\n body.then((newData) => handleReply(mockDispatches, newData))\n return\n }\n\n const responseData = getResponseData(body)\n const responseHeaders = generateKeyValues(headers)\n const responseTrailers = generateKeyValues(trailers)\n\n handler.abort = nop\n handler.onHeaders(statusCode, responseHeaders, resume, getStatusText(statusCode))\n handler.onData(Buffer.from(responseData))\n handler.onComplete(responseTrailers)\n deleteMockDispatch(mockDispatches, key)\n }\n\n function resume () {}\n\n return true\n}\n\nfunction buildMockDispatch () {\n const agent = this[kMockAgent]\n const origin = this[kOrigin]\n const originalDispatch = this[kOriginalDispatch]\n\n return function dispatch (opts, handler) {\n if (agent.isMockActive) {\n try {\n mockDispatch.call(this, opts, handler)\n } catch (error) {\n if (error instanceof MockNotMatchedError) {\n const netConnect = agent[kGetNetConnect]()\n if (netConnect === false) {\n throw new MockNotMatchedError(`${error.message}: subsequent request to origin ${origin} was not allowed (net.connect disabled)`)\n }\n if (checkNetConnect(netConnect, origin)) {\n originalDispatch.call(this, opts, handler)\n } else {\n throw new MockNotMatchedError(`${error.message}: subsequent request to origin ${origin} was not allowed (net.connect is not enabled for this origin)`)\n }\n } else {\n throw error\n }\n }\n } else {\n originalDispatch.call(this, opts, handler)\n }\n }\n}\n\nfunction checkNetConnect (netConnect, origin) {\n const url = new URL(origin)\n if (netConnect === true) {\n return true\n } else if (Array.isArray(netConnect) && netConnect.some((matcher) => matchValue(matcher, url.host))) {\n return true\n }\n return false\n}\n\nfunction buildMockOptions (opts) {\n if (opts) {\n const { agent, ...mockOptions } = opts\n return mockOptions\n }\n}\n\nmodule.exports = {\n getResponseData,\n getMockDispatch,\n addMockDispatch,\n deleteMockDispatch,\n buildKey,\n generateKeyValues,\n matchValue,\n getResponse,\n getStatusText,\n mockDispatch,\n buildMockDispatch,\n checkNetConnect,\n buildMockOptions,\n getHeaderByName\n}\n","'use strict'\n\nconst { Transform } = require('stream')\nconst { Console } = require('console')\n\n/**\n * Gets the output of `console.table(…)` as a string.\n */\nmodule.exports = class PendingInterceptorsFormatter {\n constructor ({ disableColors } = {}) {\n this.transform = new Transform({\n transform (chunk, _enc, cb) {\n cb(null, chunk)\n }\n })\n\n this.logger = new Console({\n stdout: this.transform,\n inspectOptions: {\n colors: !disableColors && !process.env.CI\n }\n })\n }\n\n format (pendingInterceptors) {\n const withPrettyHeaders = pendingInterceptors.map(\n ({ method, path, data: { statusCode }, persist, times, timesInvoked, origin }) => ({\n Method: method,\n Origin: origin,\n Path: path,\n 'Status code': statusCode,\n Persistent: persist ? '✅' : '❌',\n Invocations: timesInvoked,\n Remaining: persist ? Infinity : times - timesInvoked\n }))\n\n this.logger.table(withPrettyHeaders)\n return this.transform.read().toString()\n }\n}\n","'use strict'\n\nconst singulars = {\n pronoun: 'it',\n is: 'is',\n was: 'was',\n this: 'this'\n}\n\nconst plurals = {\n pronoun: 'they',\n is: 'are',\n was: 'were',\n this: 'these'\n}\n\nmodule.exports = class Pluralizer {\n constructor (singular, plural) {\n this.singular = singular\n this.plural = plural\n }\n\n pluralize (count) {\n const one = count === 1\n const keys = one ? singulars : plurals\n const noun = one ? this.singular : this.plural\n return { ...keys, count, noun }\n }\n}\n","/* eslint-disable */\n\n'use strict'\n\n// Extracted from node/lib/internal/fixed_queue.js\n\n// Currently optimal queue size, tested on V8 6.0 - 6.6. Must be power of two.\nconst kSize = 2048;\nconst kMask = kSize - 1;\n\n// The FixedQueue is implemented as a singly-linked list of fixed-size\n// circular buffers. It looks something like this:\n//\n// head tail\n// | |\n// v v\n// +-----------+ <-----\\ +-----------+ <------\\ +-----------+\n// | [null] | \\----- | next | \\------- | next |\n// +-----------+ +-----------+ +-----------+\n// | item | <-- bottom | item | <-- bottom | [empty] |\n// | item | | item | | [empty] |\n// | item | | item | | [empty] |\n// | item | | item | | [empty] |\n// | item | | item | bottom --> | item |\n// | item | | item | | item |\n// | ... | | ... | | ... |\n// | item | | item | | item |\n// | item | | item | | item |\n// | [empty] | <-- top | item | | item |\n// | [empty] | | item | | item |\n// | [empty] | | [empty] | <-- top top --> | [empty] |\n// +-----------+ +-----------+ +-----------+\n//\n// Or, if there is only one circular buffer, it looks something\n// like either of these:\n//\n// head tail head tail\n// | | | |\n// v v v v\n// +-----------+ +-----------+\n// | [null] | | [null] |\n// +-----------+ +-----------+\n// | [empty] | | item |\n// | [empty] | | item |\n// | item | <-- bottom top --> | [empty] |\n// | item | | [empty] |\n// | [empty] | <-- top bottom --> | item |\n// | [empty] | | item |\n// +-----------+ +-----------+\n//\n// Adding a value means moving `top` forward by one, removing means\n// moving `bottom` forward by one. After reaching the end, the queue\n// wraps around.\n//\n// When `top === bottom` the current queue is empty and when\n// `top + 1 === bottom` it's full. This wastes a single space of storage\n// but allows much quicker checks.\n\nclass FixedCircularBuffer {\n constructor() {\n this.bottom = 0;\n this.top = 0;\n this.list = new Array(kSize);\n this.next = null;\n }\n\n isEmpty() {\n return this.top === this.bottom;\n }\n\n isFull() {\n return ((this.top + 1) & kMask) === this.bottom;\n }\n\n push(data) {\n this.list[this.top] = data;\n this.top = (this.top + 1) & kMask;\n }\n\n shift() {\n const nextItem = this.list[this.bottom];\n if (nextItem === undefined)\n return null;\n this.list[this.bottom] = undefined;\n this.bottom = (this.bottom + 1) & kMask;\n return nextItem;\n }\n}\n\nmodule.exports = class FixedQueue {\n constructor() {\n this.head = this.tail = new FixedCircularBuffer();\n }\n\n isEmpty() {\n return this.head.isEmpty();\n }\n\n push(data) {\n if (this.head.isFull()) {\n // Head is full: Creates a new queue, sets the old queue's `.next` to it,\n // and sets it as the new main queue.\n this.head = this.head.next = new FixedCircularBuffer();\n }\n this.head.push(data);\n }\n\n shift() {\n const tail = this.tail;\n const next = tail.shift();\n if (tail.isEmpty() && tail.next !== null) {\n // If there is another queue, it forms the new tail.\n this.tail = tail.next;\n }\n return next;\n }\n};\n","'use strict'\n\nconst DispatcherBase = require('./dispatcher-base')\nconst FixedQueue = require('./node/fixed-queue')\nconst { kConnected, kSize, kRunning, kPending, kQueued, kBusy, kFree, kUrl, kClose, kDestroy, kDispatch } = require('./core/symbols')\nconst PoolStats = require('./pool-stats')\n\nconst kClients = Symbol('clients')\nconst kNeedDrain = Symbol('needDrain')\nconst kQueue = Symbol('queue')\nconst kClosedResolve = Symbol('closed resolve')\nconst kOnDrain = Symbol('onDrain')\nconst kOnConnect = Symbol('onConnect')\nconst kOnDisconnect = Symbol('onDisconnect')\nconst kOnConnectionError = Symbol('onConnectionError')\nconst kGetDispatcher = Symbol('get dispatcher')\nconst kAddClient = Symbol('add client')\nconst kRemoveClient = Symbol('remove client')\nconst kStats = Symbol('stats')\n\nclass PoolBase extends DispatcherBase {\n constructor () {\n super()\n\n this[kQueue] = new FixedQueue()\n this[kClients] = []\n this[kQueued] = 0\n\n const pool = this\n\n this[kOnDrain] = function onDrain (origin, targets) {\n const queue = pool[kQueue]\n\n let needDrain = false\n\n while (!needDrain) {\n const item = queue.shift()\n if (!item) {\n break\n }\n pool[kQueued]--\n needDrain = !this.dispatch(item.opts, item.handler)\n }\n\n this[kNeedDrain] = needDrain\n\n if (!this[kNeedDrain] && pool[kNeedDrain]) {\n pool[kNeedDrain] = false\n pool.emit('drain', origin, [pool, ...targets])\n }\n\n if (pool[kClosedResolve] && queue.isEmpty()) {\n Promise\n .all(pool[kClients].map(c => c.close()))\n .then(pool[kClosedResolve])\n }\n }\n\n this[kOnConnect] = (origin, targets) => {\n pool.emit('connect', origin, [pool, ...targets])\n }\n\n this[kOnDisconnect] = (origin, targets, err) => {\n pool.emit('disconnect', origin, [pool, ...targets], err)\n }\n\n this[kOnConnectionError] = (origin, targets, err) => {\n pool.emit('connectionError', origin, [pool, ...targets], err)\n }\n\n this[kStats] = new PoolStats(this)\n }\n\n get [kBusy] () {\n return this[kNeedDrain]\n }\n\n get [kConnected] () {\n return this[kClients].filter(client => client[kConnected]).length\n }\n\n get [kFree] () {\n return this[kClients].filter(client => client[kConnected] && !client[kNeedDrain]).length\n }\n\n get [kPending] () {\n let ret = this[kQueued]\n for (const { [kPending]: pending } of this[kClients]) {\n ret += pending\n }\n return ret\n }\n\n get [kRunning] () {\n let ret = 0\n for (const { [kRunning]: running } of this[kClients]) {\n ret += running\n }\n return ret\n }\n\n get [kSize] () {\n let ret = this[kQueued]\n for (const { [kSize]: size } of this[kClients]) {\n ret += size\n }\n return ret\n }\n\n get stats () {\n return this[kStats]\n }\n\n async [kClose] () {\n if (this[kQueue].isEmpty()) {\n return Promise.all(this[kClients].map(c => c.close()))\n } else {\n return new Promise((resolve) => {\n this[kClosedResolve] = resolve\n })\n }\n }\n\n async [kDestroy] (err) {\n while (true) {\n const item = this[kQueue].shift()\n if (!item) {\n break\n }\n item.handler.onError(err)\n }\n\n return Promise.all(this[kClients].map(c => c.destroy(err)))\n }\n\n [kDispatch] (opts, handler) {\n const dispatcher = this[kGetDispatcher]()\n\n if (!dispatcher) {\n this[kNeedDrain] = true\n this[kQueue].push({ opts, handler })\n this[kQueued]++\n } else if (!dispatcher.dispatch(opts, handler)) {\n dispatcher[kNeedDrain] = true\n this[kNeedDrain] = !this[kGetDispatcher]()\n }\n\n return !this[kNeedDrain]\n }\n\n [kAddClient] (client) {\n client\n .on('drain', this[kOnDrain])\n .on('connect', this[kOnConnect])\n .on('disconnect', this[kOnDisconnect])\n .on('connectionError', this[kOnConnectionError])\n\n this[kClients].push(client)\n\n if (this[kNeedDrain]) {\n process.nextTick(() => {\n if (this[kNeedDrain]) {\n this[kOnDrain](client[kUrl], [this, client])\n }\n })\n }\n\n return this\n }\n\n [kRemoveClient] (client) {\n client.close(() => {\n const idx = this[kClients].indexOf(client)\n if (idx !== -1) {\n this[kClients].splice(idx, 1)\n }\n })\n\n this[kNeedDrain] = this[kClients].some(dispatcher => (\n !dispatcher[kNeedDrain] &&\n dispatcher.closed !== true &&\n dispatcher.destroyed !== true\n ))\n }\n}\n\nmodule.exports = {\n PoolBase,\n kClients,\n kNeedDrain,\n kAddClient,\n kRemoveClient,\n kGetDispatcher\n}\n","const { kFree, kConnected, kPending, kQueued, kRunning, kSize } = require('./core/symbols')\nconst kPool = Symbol('pool')\n\nclass PoolStats {\n constructor (pool) {\n this[kPool] = pool\n }\n\n get connected () {\n return this[kPool][kConnected]\n }\n\n get free () {\n return this[kPool][kFree]\n }\n\n get pending () {\n return this[kPool][kPending]\n }\n\n get queued () {\n return this[kPool][kQueued]\n }\n\n get running () {\n return this[kPool][kRunning]\n }\n\n get size () {\n return this[kPool][kSize]\n }\n}\n\nmodule.exports = PoolStats\n","'use strict'\n\nconst {\n PoolBase,\n kClients,\n kNeedDrain,\n kAddClient,\n kGetDispatcher\n} = require('./pool-base')\nconst Client = require('./client')\nconst {\n InvalidArgumentError\n} = require('./core/errors')\nconst util = require('./core/util')\nconst { kUrl, kInterceptors } = require('./core/symbols')\nconst buildConnector = require('./core/connect')\n\nconst kOptions = Symbol('options')\nconst kConnections = Symbol('connections')\nconst kFactory = Symbol('factory')\n\nfunction defaultFactory (origin, opts) {\n return new Client(origin, opts)\n}\n\nclass Pool extends PoolBase {\n constructor (origin, {\n connections,\n factory = defaultFactory,\n connect,\n connectTimeout,\n tls,\n maxCachedSessions,\n socketPath,\n autoSelectFamily,\n autoSelectFamilyAttemptTimeout,\n allowH2,\n ...options\n } = {}) {\n super()\n\n if (connections != null && (!Number.isFinite(connections) || connections < 0)) {\n throw new InvalidArgumentError('invalid connections')\n }\n\n if (typeof factory !== 'function') {\n throw new InvalidArgumentError('factory must be a function.')\n }\n\n if (connect != null && typeof connect !== 'function' && typeof connect !== 'object') {\n throw new InvalidArgumentError('connect must be a function or an object')\n }\n\n if (typeof connect !== 'function') {\n connect = buildConnector({\n ...tls,\n maxCachedSessions,\n allowH2,\n socketPath,\n timeout: connectTimeout,\n ...(util.nodeHasAutoSelectFamily && autoSelectFamily ? { autoSelectFamily, autoSelectFamilyAttemptTimeout } : undefined),\n ...connect\n })\n }\n\n this[kInterceptors] = options.interceptors && options.interceptors.Pool && Array.isArray(options.interceptors.Pool)\n ? options.interceptors.Pool\n : []\n this[kConnections] = connections || null\n this[kUrl] = util.parseOrigin(origin)\n this[kOptions] = { ...util.deepClone(options), connect, allowH2 }\n this[kOptions].interceptors = options.interceptors\n ? { ...options.interceptors }\n : undefined\n this[kFactory] = factory\n }\n\n [kGetDispatcher] () {\n let dispatcher = this[kClients].find(dispatcher => !dispatcher[kNeedDrain])\n\n if (dispatcher) {\n return dispatcher\n }\n\n if (!this[kConnections] || this[kClients].length < this[kConnections]) {\n dispatcher = this[kFactory](this[kUrl], this[kOptions])\n this[kAddClient](dispatcher)\n }\n\n return dispatcher\n }\n}\n\nmodule.exports = Pool\n","'use strict'\n\nconst { kProxy, kClose, kDestroy, kInterceptors } = require('./core/symbols')\nconst { URL } = require('url')\nconst Agent = require('./agent')\nconst Pool = require('./pool')\nconst DispatcherBase = require('./dispatcher-base')\nconst { InvalidArgumentError, RequestAbortedError } = require('./core/errors')\nconst buildConnector = require('./core/connect')\n\nconst kAgent = Symbol('proxy agent')\nconst kClient = Symbol('proxy client')\nconst kProxyHeaders = Symbol('proxy headers')\nconst kRequestTls = Symbol('request tls settings')\nconst kProxyTls = Symbol('proxy tls settings')\nconst kConnectEndpoint = Symbol('connect endpoint function')\n\nfunction defaultProtocolPort (protocol) {\n return protocol === 'https:' ? 443 : 80\n}\n\nfunction buildProxyOptions (opts) {\n if (typeof opts === 'string') {\n opts = { uri: opts }\n }\n\n if (!opts || !opts.uri) {\n throw new InvalidArgumentError('Proxy opts.uri is mandatory')\n }\n\n return {\n uri: opts.uri,\n protocol: opts.protocol || 'https'\n }\n}\n\nfunction defaultFactory (origin, opts) {\n return new Pool(origin, opts)\n}\n\nclass ProxyAgent extends DispatcherBase {\n constructor (opts) {\n super(opts)\n this[kProxy] = buildProxyOptions(opts)\n this[kAgent] = new Agent(opts)\n this[kInterceptors] = opts.interceptors && opts.interceptors.ProxyAgent && Array.isArray(opts.interceptors.ProxyAgent)\n ? opts.interceptors.ProxyAgent\n : []\n\n if (typeof opts === 'string') {\n opts = { uri: opts }\n }\n\n if (!opts || !opts.uri) {\n throw new InvalidArgumentError('Proxy opts.uri is mandatory')\n }\n\n const { clientFactory = defaultFactory } = opts\n\n if (typeof clientFactory !== 'function') {\n throw new InvalidArgumentError('Proxy opts.clientFactory must be a function.')\n }\n\n this[kRequestTls] = opts.requestTls\n this[kProxyTls] = opts.proxyTls\n this[kProxyHeaders] = opts.headers || {}\n\n const resolvedUrl = new URL(opts.uri)\n const { origin, port, host, username, password } = resolvedUrl\n\n if (opts.auth && opts.token) {\n throw new InvalidArgumentError('opts.auth cannot be used in combination with opts.token')\n } else if (opts.auth) {\n /* @deprecated in favour of opts.token */\n this[kProxyHeaders]['proxy-authorization'] = `Basic ${opts.auth}`\n } else if (opts.token) {\n this[kProxyHeaders]['proxy-authorization'] = opts.token\n } else if (username && password) {\n this[kProxyHeaders]['proxy-authorization'] = `Basic ${Buffer.from(`${decodeURIComponent(username)}:${decodeURIComponent(password)}`).toString('base64')}`\n }\n\n const connect = buildConnector({ ...opts.proxyTls })\n this[kConnectEndpoint] = buildConnector({ ...opts.requestTls })\n this[kClient] = clientFactory(resolvedUrl, { connect })\n this[kAgent] = new Agent({\n ...opts,\n connect: async (opts, callback) => {\n let requestedHost = opts.host\n if (!opts.port) {\n requestedHost += `:${defaultProtocolPort(opts.protocol)}`\n }\n try {\n const { socket, statusCode } = await this[kClient].connect({\n origin,\n port,\n path: requestedHost,\n signal: opts.signal,\n headers: {\n ...this[kProxyHeaders],\n host\n }\n })\n if (statusCode !== 200) {\n socket.on('error', () => {}).destroy()\n callback(new RequestAbortedError(`Proxy response (${statusCode}) !== 200 when HTTP Tunneling`))\n }\n if (opts.protocol !== 'https:') {\n callback(null, socket)\n return\n }\n let servername\n if (this[kRequestTls]) {\n servername = this[kRequestTls].servername\n } else {\n servername = opts.servername\n }\n this[kConnectEndpoint]({ ...opts, servername, httpSocket: socket }, callback)\n } catch (err) {\n callback(err)\n }\n }\n })\n }\n\n dispatch (opts, handler) {\n const { host } = new URL(opts.origin)\n const headers = buildHeaders(opts.headers)\n throwIfProxyAuthIsSent(headers)\n return this[kAgent].dispatch(\n {\n ...opts,\n headers: {\n ...headers,\n host\n }\n },\n handler\n )\n }\n\n async [kClose] () {\n await this[kAgent].close()\n await this[kClient].close()\n }\n\n async [kDestroy] () {\n await this[kAgent].destroy()\n await this[kClient].destroy()\n }\n}\n\n/**\n * @param {string[] | Record} headers\n * @returns {Record}\n */\nfunction buildHeaders (headers) {\n // When using undici.fetch, the headers list is stored\n // as an array.\n if (Array.isArray(headers)) {\n /** @type {Record} */\n const headersPair = {}\n\n for (let i = 0; i < headers.length; i += 2) {\n headersPair[headers[i]] = headers[i + 1]\n }\n\n return headersPair\n }\n\n return headers\n}\n\n/**\n * @param {Record} headers\n *\n * Previous versions of ProxyAgent suggests the Proxy-Authorization in request headers\n * Nevertheless, it was changed and to avoid a security vulnerability by end users\n * this check was created.\n * It should be removed in the next major version for performance reasons\n */\nfunction throwIfProxyAuthIsSent (headers) {\n const existProxyAuth = headers && Object.keys(headers)\n .find((key) => key.toLowerCase() === 'proxy-authorization')\n if (existProxyAuth) {\n throw new InvalidArgumentError('Proxy-Authorization should be sent in ProxyAgent constructor')\n }\n}\n\nmodule.exports = ProxyAgent\n","'use strict'\n\nlet fastNow = Date.now()\nlet fastNowTimeout\n\nconst fastTimers = []\n\nfunction onTimeout () {\n fastNow = Date.now()\n\n let len = fastTimers.length\n let idx = 0\n while (idx < len) {\n const timer = fastTimers[idx]\n\n if (timer.state === 0) {\n timer.state = fastNow + timer.delay\n } else if (timer.state > 0 && fastNow >= timer.state) {\n timer.state = -1\n timer.callback(timer.opaque)\n }\n\n if (timer.state === -1) {\n timer.state = -2\n if (idx !== len - 1) {\n fastTimers[idx] = fastTimers.pop()\n } else {\n fastTimers.pop()\n }\n len -= 1\n } else {\n idx += 1\n }\n }\n\n if (fastTimers.length > 0) {\n refreshTimeout()\n }\n}\n\nfunction refreshTimeout () {\n if (fastNowTimeout && fastNowTimeout.refresh) {\n fastNowTimeout.refresh()\n } else {\n clearTimeout(fastNowTimeout)\n fastNowTimeout = setTimeout(onTimeout, 1e3)\n if (fastNowTimeout.unref) {\n fastNowTimeout.unref()\n }\n }\n}\n\nclass Timeout {\n constructor (callback, delay, opaque) {\n this.callback = callback\n this.delay = delay\n this.opaque = opaque\n\n // -2 not in timer list\n // -1 in timer list but inactive\n // 0 in timer list waiting for time\n // > 0 in timer list waiting for time to expire\n this.state = -2\n\n this.refresh()\n }\n\n refresh () {\n if (this.state === -2) {\n fastTimers.push(this)\n if (!fastNowTimeout || fastTimers.length === 1) {\n refreshTimeout()\n }\n }\n\n this.state = 0\n }\n\n clear () {\n this.state = -1\n }\n}\n\nmodule.exports = {\n setTimeout (callback, delay, opaque) {\n return delay < 1e3\n ? setTimeout(callback, delay, opaque)\n : new Timeout(callback, delay, opaque)\n },\n clearTimeout (timeout) {\n if (timeout instanceof Timeout) {\n timeout.clear()\n } else {\n clearTimeout(timeout)\n }\n }\n}\n","'use strict'\n\nconst diagnosticsChannel = require('diagnostics_channel')\nconst { uid, states } = require('./constants')\nconst {\n kReadyState,\n kSentClose,\n kByteParser,\n kReceivedClose\n} = require('./symbols')\nconst { fireEvent, failWebsocketConnection } = require('./util')\nconst { CloseEvent } = require('./events')\nconst { makeRequest } = require('../fetch/request')\nconst { fetching } = require('../fetch/index')\nconst { Headers } = require('../fetch/headers')\nconst { getGlobalDispatcher } = require('../global')\nconst { kHeadersList } = require('../core/symbols')\n\nconst channels = {}\nchannels.open = diagnosticsChannel.channel('undici:websocket:open')\nchannels.close = diagnosticsChannel.channel('undici:websocket:close')\nchannels.socketError = diagnosticsChannel.channel('undici:websocket:socket_error')\n\n/** @type {import('crypto')} */\nlet crypto\ntry {\n crypto = require('crypto')\n} catch {\n\n}\n\n/**\n * @see https://websockets.spec.whatwg.org/#concept-websocket-establish\n * @param {URL} url\n * @param {string|string[]} protocols\n * @param {import('./websocket').WebSocket} ws\n * @param {(response: any) => void} onEstablish\n * @param {Partial} options\n */\nfunction establishWebSocketConnection (url, protocols, ws, onEstablish, options) {\n // 1. Let requestURL be a copy of url, with its scheme set to \"http\", if url’s\n // scheme is \"ws\", and to \"https\" otherwise.\n const requestURL = url\n\n requestURL.protocol = url.protocol === 'ws:' ? 'http:' : 'https:'\n\n // 2. Let request be a new request, whose URL is requestURL, client is client,\n // service-workers mode is \"none\", referrer is \"no-referrer\", mode is\n // \"websocket\", credentials mode is \"include\", cache mode is \"no-store\" ,\n // and redirect mode is \"error\".\n const request = makeRequest({\n urlList: [requestURL],\n serviceWorkers: 'none',\n referrer: 'no-referrer',\n mode: 'websocket',\n credentials: 'include',\n cache: 'no-store',\n redirect: 'error'\n })\n\n // Note: undici extension, allow setting custom headers.\n if (options.headers) {\n const headersList = new Headers(options.headers)[kHeadersList]\n\n request.headersList = headersList\n }\n\n // 3. Append (`Upgrade`, `websocket`) to request’s header list.\n // 4. Append (`Connection`, `Upgrade`) to request’s header list.\n // Note: both of these are handled by undici currently.\n // https://github.com/nodejs/undici/blob/68c269c4144c446f3f1220951338daef4a6b5ec4/lib/client.js#L1397\n\n // 5. Let keyValue be a nonce consisting of a randomly selected\n // 16-byte value that has been forgiving-base64-encoded and\n // isomorphic encoded.\n const keyValue = crypto.randomBytes(16).toString('base64')\n\n // 6. Append (`Sec-WebSocket-Key`, keyValue) to request’s\n // header list.\n request.headersList.append('sec-websocket-key', keyValue)\n\n // 7. Append (`Sec-WebSocket-Version`, `13`) to request’s\n // header list.\n request.headersList.append('sec-websocket-version', '13')\n\n // 8. For each protocol in protocols, combine\n // (`Sec-WebSocket-Protocol`, protocol) in request’s header\n // list.\n for (const protocol of protocols) {\n request.headersList.append('sec-websocket-protocol', protocol)\n }\n\n // 9. Let permessageDeflate be a user-agent defined\n // \"permessage-deflate\" extension header value.\n // https://github.com/mozilla/gecko-dev/blob/ce78234f5e653a5d3916813ff990f053510227bc/netwerk/protocol/websocket/WebSocketChannel.cpp#L2673\n // TODO: enable once permessage-deflate is supported\n const permessageDeflate = '' // 'permessage-deflate; 15'\n\n // 10. Append (`Sec-WebSocket-Extensions`, permessageDeflate) to\n // request’s header list.\n // request.headersList.append('sec-websocket-extensions', permessageDeflate)\n\n // 11. Fetch request with useParallelQueue set to true, and\n // processResponse given response being these steps:\n const controller = fetching({\n request,\n useParallelQueue: true,\n dispatcher: options.dispatcher ?? getGlobalDispatcher(),\n processResponse (response) {\n // 1. If response is a network error or its status is not 101,\n // fail the WebSocket connection.\n if (response.type === 'error' || response.status !== 101) {\n failWebsocketConnection(ws, 'Received network error or non-101 status code.')\n return\n }\n\n // 2. If protocols is not the empty list and extracting header\n // list values given `Sec-WebSocket-Protocol` and response’s\n // header list results in null, failure, or the empty byte\n // sequence, then fail the WebSocket connection.\n if (protocols.length !== 0 && !response.headersList.get('Sec-WebSocket-Protocol')) {\n failWebsocketConnection(ws, 'Server did not respond with sent protocols.')\n return\n }\n\n // 3. Follow the requirements stated step 2 to step 6, inclusive,\n // of the last set of steps in section 4.1 of The WebSocket\n // Protocol to validate response. This either results in fail\n // the WebSocket connection or the WebSocket connection is\n // established.\n\n // 2. If the response lacks an |Upgrade| header field or the |Upgrade|\n // header field contains a value that is not an ASCII case-\n // insensitive match for the value \"websocket\", the client MUST\n // _Fail the WebSocket Connection_.\n if (response.headersList.get('Upgrade')?.toLowerCase() !== 'websocket') {\n failWebsocketConnection(ws, 'Server did not set Upgrade header to \"websocket\".')\n return\n }\n\n // 3. If the response lacks a |Connection| header field or the\n // |Connection| header field doesn't contain a token that is an\n // ASCII case-insensitive match for the value \"Upgrade\", the client\n // MUST _Fail the WebSocket Connection_.\n if (response.headersList.get('Connection')?.toLowerCase() !== 'upgrade') {\n failWebsocketConnection(ws, 'Server did not set Connection header to \"upgrade\".')\n return\n }\n\n // 4. If the response lacks a |Sec-WebSocket-Accept| header field or\n // the |Sec-WebSocket-Accept| contains a value other than the\n // base64-encoded SHA-1 of the concatenation of the |Sec-WebSocket-\n // Key| (as a string, not base64-decoded) with the string \"258EAFA5-\n // E914-47DA-95CA-C5AB0DC85B11\" but ignoring any leading and\n // trailing whitespace, the client MUST _Fail the WebSocket\n // Connection_.\n const secWSAccept = response.headersList.get('Sec-WebSocket-Accept')\n const digest = crypto.createHash('sha1').update(keyValue + uid).digest('base64')\n if (secWSAccept !== digest) {\n failWebsocketConnection(ws, 'Incorrect hash received in Sec-WebSocket-Accept header.')\n return\n }\n\n // 5. If the response includes a |Sec-WebSocket-Extensions| header\n // field and this header field indicates the use of an extension\n // that was not present in the client's handshake (the server has\n // indicated an extension not requested by the client), the client\n // MUST _Fail the WebSocket Connection_. (The parsing of this\n // header field to determine which extensions are requested is\n // discussed in Section 9.1.)\n const secExtension = response.headersList.get('Sec-WebSocket-Extensions')\n\n if (secExtension !== null && secExtension !== permessageDeflate) {\n failWebsocketConnection(ws, 'Received different permessage-deflate than the one set.')\n return\n }\n\n // 6. If the response includes a |Sec-WebSocket-Protocol| header field\n // and this header field indicates the use of a subprotocol that was\n // not present in the client's handshake (the server has indicated a\n // subprotocol not requested by the client), the client MUST _Fail\n // the WebSocket Connection_.\n const secProtocol = response.headersList.get('Sec-WebSocket-Protocol')\n\n if (secProtocol !== null && secProtocol !== request.headersList.get('Sec-WebSocket-Protocol')) {\n failWebsocketConnection(ws, 'Protocol was not set in the opening handshake.')\n return\n }\n\n response.socket.on('data', onSocketData)\n response.socket.on('close', onSocketClose)\n response.socket.on('error', onSocketError)\n\n if (channels.open.hasSubscribers) {\n channels.open.publish({\n address: response.socket.address(),\n protocol: secProtocol,\n extensions: secExtension\n })\n }\n\n onEstablish(response)\n }\n })\n\n return controller\n}\n\n/**\n * @param {Buffer} chunk\n */\nfunction onSocketData (chunk) {\n if (!this.ws[kByteParser].write(chunk)) {\n this.pause()\n }\n}\n\n/**\n * @see https://websockets.spec.whatwg.org/#feedback-from-the-protocol\n * @see https://datatracker.ietf.org/doc/html/rfc6455#section-7.1.4\n */\nfunction onSocketClose () {\n const { ws } = this\n\n // If the TCP connection was closed after the\n // WebSocket closing handshake was completed, the WebSocket connection\n // is said to have been closed _cleanly_.\n const wasClean = ws[kSentClose] && ws[kReceivedClose]\n\n let code = 1005\n let reason = ''\n\n const result = ws[kByteParser].closingInfo\n\n if (result) {\n code = result.code ?? 1005\n reason = result.reason\n } else if (!ws[kSentClose]) {\n // If _The WebSocket\n // Connection is Closed_ and no Close control frame was received by the\n // endpoint (such as could occur if the underlying transport connection\n // is lost), _The WebSocket Connection Close Code_ is considered to be\n // 1006.\n code = 1006\n }\n\n // 1. Change the ready state to CLOSED (3).\n ws[kReadyState] = states.CLOSED\n\n // 2. If the user agent was required to fail the WebSocket\n // connection, or if the WebSocket connection was closed\n // after being flagged as full, fire an event named error\n // at the WebSocket object.\n // TODO\n\n // 3. Fire an event named close at the WebSocket object,\n // using CloseEvent, with the wasClean attribute\n // initialized to true if the connection closed cleanly\n // and false otherwise, the code attribute initialized to\n // the WebSocket connection close code, and the reason\n // attribute initialized to the result of applying UTF-8\n // decode without BOM to the WebSocket connection close\n // reason.\n fireEvent('close', ws, CloseEvent, {\n wasClean, code, reason\n })\n\n if (channels.close.hasSubscribers) {\n channels.close.publish({\n websocket: ws,\n code,\n reason\n })\n }\n}\n\nfunction onSocketError (error) {\n const { ws } = this\n\n ws[kReadyState] = states.CLOSING\n\n if (channels.socketError.hasSubscribers) {\n channels.socketError.publish(error)\n }\n\n this.destroy()\n}\n\nmodule.exports = {\n establishWebSocketConnection\n}\n","'use strict'\n\n// This is a Globally Unique Identifier unique used\n// to validate that the endpoint accepts websocket\n// connections.\n// See https://www.rfc-editor.org/rfc/rfc6455.html#section-1.3\nconst uid = '258EAFA5-E914-47DA-95CA-C5AB0DC85B11'\n\n/** @type {PropertyDescriptor} */\nconst staticPropertyDescriptors = {\n enumerable: true,\n writable: false,\n configurable: false\n}\n\nconst states = {\n CONNECTING: 0,\n OPEN: 1,\n CLOSING: 2,\n CLOSED: 3\n}\n\nconst opcodes = {\n CONTINUATION: 0x0,\n TEXT: 0x1,\n BINARY: 0x2,\n CLOSE: 0x8,\n PING: 0x9,\n PONG: 0xA\n}\n\nconst maxUnsigned16Bit = 2 ** 16 - 1 // 65535\n\nconst parserStates = {\n INFO: 0,\n PAYLOADLENGTH_16: 2,\n PAYLOADLENGTH_64: 3,\n READ_DATA: 4\n}\n\nconst emptyBuffer = Buffer.allocUnsafe(0)\n\nmodule.exports = {\n uid,\n staticPropertyDescriptors,\n states,\n opcodes,\n maxUnsigned16Bit,\n parserStates,\n emptyBuffer\n}\n","'use strict'\n\nconst { webidl } = require('../fetch/webidl')\nconst { kEnumerableProperty } = require('../core/util')\nconst { MessagePort } = require('worker_threads')\n\n/**\n * @see https://html.spec.whatwg.org/multipage/comms.html#messageevent\n */\nclass MessageEvent extends Event {\n #eventInit\n\n constructor (type, eventInitDict = {}) {\n webidl.argumentLengthCheck(arguments, 1, { header: 'MessageEvent constructor' })\n\n type = webidl.converters.DOMString(type)\n eventInitDict = webidl.converters.MessageEventInit(eventInitDict)\n\n super(type, eventInitDict)\n\n this.#eventInit = eventInitDict\n }\n\n get data () {\n webidl.brandCheck(this, MessageEvent)\n\n return this.#eventInit.data\n }\n\n get origin () {\n webidl.brandCheck(this, MessageEvent)\n\n return this.#eventInit.origin\n }\n\n get lastEventId () {\n webidl.brandCheck(this, MessageEvent)\n\n return this.#eventInit.lastEventId\n }\n\n get source () {\n webidl.brandCheck(this, MessageEvent)\n\n return this.#eventInit.source\n }\n\n get ports () {\n webidl.brandCheck(this, MessageEvent)\n\n if (!Object.isFrozen(this.#eventInit.ports)) {\n Object.freeze(this.#eventInit.ports)\n }\n\n return this.#eventInit.ports\n }\n\n initMessageEvent (\n type,\n bubbles = false,\n cancelable = false,\n data = null,\n origin = '',\n lastEventId = '',\n source = null,\n ports = []\n ) {\n webidl.brandCheck(this, MessageEvent)\n\n webidl.argumentLengthCheck(arguments, 1, { header: 'MessageEvent.initMessageEvent' })\n\n return new MessageEvent(type, {\n bubbles, cancelable, data, origin, lastEventId, source, ports\n })\n }\n}\n\n/**\n * @see https://websockets.spec.whatwg.org/#the-closeevent-interface\n */\nclass CloseEvent extends Event {\n #eventInit\n\n constructor (type, eventInitDict = {}) {\n webidl.argumentLengthCheck(arguments, 1, { header: 'CloseEvent constructor' })\n\n type = webidl.converters.DOMString(type)\n eventInitDict = webidl.converters.CloseEventInit(eventInitDict)\n\n super(type, eventInitDict)\n\n this.#eventInit = eventInitDict\n }\n\n get wasClean () {\n webidl.brandCheck(this, CloseEvent)\n\n return this.#eventInit.wasClean\n }\n\n get code () {\n webidl.brandCheck(this, CloseEvent)\n\n return this.#eventInit.code\n }\n\n get reason () {\n webidl.brandCheck(this, CloseEvent)\n\n return this.#eventInit.reason\n }\n}\n\n// https://html.spec.whatwg.org/multipage/webappapis.html#the-errorevent-interface\nclass ErrorEvent extends Event {\n #eventInit\n\n constructor (type, eventInitDict) {\n webidl.argumentLengthCheck(arguments, 1, { header: 'ErrorEvent constructor' })\n\n super(type, eventInitDict)\n\n type = webidl.converters.DOMString(type)\n eventInitDict = webidl.converters.ErrorEventInit(eventInitDict ?? {})\n\n this.#eventInit = eventInitDict\n }\n\n get message () {\n webidl.brandCheck(this, ErrorEvent)\n\n return this.#eventInit.message\n }\n\n get filename () {\n webidl.brandCheck(this, ErrorEvent)\n\n return this.#eventInit.filename\n }\n\n get lineno () {\n webidl.brandCheck(this, ErrorEvent)\n\n return this.#eventInit.lineno\n }\n\n get colno () {\n webidl.brandCheck(this, ErrorEvent)\n\n return this.#eventInit.colno\n }\n\n get error () {\n webidl.brandCheck(this, ErrorEvent)\n\n return this.#eventInit.error\n }\n}\n\nObject.defineProperties(MessageEvent.prototype, {\n [Symbol.toStringTag]: {\n value: 'MessageEvent',\n configurable: true\n },\n data: kEnumerableProperty,\n origin: kEnumerableProperty,\n lastEventId: kEnumerableProperty,\n source: kEnumerableProperty,\n ports: kEnumerableProperty,\n initMessageEvent: kEnumerableProperty\n})\n\nObject.defineProperties(CloseEvent.prototype, {\n [Symbol.toStringTag]: {\n value: 'CloseEvent',\n configurable: true\n },\n reason: kEnumerableProperty,\n code: kEnumerableProperty,\n wasClean: kEnumerableProperty\n})\n\nObject.defineProperties(ErrorEvent.prototype, {\n [Symbol.toStringTag]: {\n value: 'ErrorEvent',\n configurable: true\n },\n message: kEnumerableProperty,\n filename: kEnumerableProperty,\n lineno: kEnumerableProperty,\n colno: kEnumerableProperty,\n error: kEnumerableProperty\n})\n\nwebidl.converters.MessagePort = webidl.interfaceConverter(MessagePort)\n\nwebidl.converters['sequence'] = webidl.sequenceConverter(\n webidl.converters.MessagePort\n)\n\nconst eventInit = [\n {\n key: 'bubbles',\n converter: webidl.converters.boolean,\n defaultValue: false\n },\n {\n key: 'cancelable',\n converter: webidl.converters.boolean,\n defaultValue: false\n },\n {\n key: 'composed',\n converter: webidl.converters.boolean,\n defaultValue: false\n }\n]\n\nwebidl.converters.MessageEventInit = webidl.dictionaryConverter([\n ...eventInit,\n {\n key: 'data',\n converter: webidl.converters.any,\n defaultValue: null\n },\n {\n key: 'origin',\n converter: webidl.converters.USVString,\n defaultValue: ''\n },\n {\n key: 'lastEventId',\n converter: webidl.converters.DOMString,\n defaultValue: ''\n },\n {\n key: 'source',\n // Node doesn't implement WindowProxy or ServiceWorker, so the only\n // valid value for source is a MessagePort.\n converter: webidl.nullableConverter(webidl.converters.MessagePort),\n defaultValue: null\n },\n {\n key: 'ports',\n converter: webidl.converters['sequence'],\n get defaultValue () {\n return []\n }\n }\n])\n\nwebidl.converters.CloseEventInit = webidl.dictionaryConverter([\n ...eventInit,\n {\n key: 'wasClean',\n converter: webidl.converters.boolean,\n defaultValue: false\n },\n {\n key: 'code',\n converter: webidl.converters['unsigned short'],\n defaultValue: 0\n },\n {\n key: 'reason',\n converter: webidl.converters.USVString,\n defaultValue: ''\n }\n])\n\nwebidl.converters.ErrorEventInit = webidl.dictionaryConverter([\n ...eventInit,\n {\n key: 'message',\n converter: webidl.converters.DOMString,\n defaultValue: ''\n },\n {\n key: 'filename',\n converter: webidl.converters.USVString,\n defaultValue: ''\n },\n {\n key: 'lineno',\n converter: webidl.converters['unsigned long'],\n defaultValue: 0\n },\n {\n key: 'colno',\n converter: webidl.converters['unsigned long'],\n defaultValue: 0\n },\n {\n key: 'error',\n converter: webidl.converters.any\n }\n])\n\nmodule.exports = {\n MessageEvent,\n CloseEvent,\n ErrorEvent\n}\n","'use strict'\n\nconst { maxUnsigned16Bit } = require('./constants')\n\n/** @type {import('crypto')} */\nlet crypto\ntry {\n crypto = require('crypto')\n} catch {\n\n}\n\nclass WebsocketFrameSend {\n /**\n * @param {Buffer|undefined} data\n */\n constructor (data) {\n this.frameData = data\n this.maskKey = crypto.randomBytes(4)\n }\n\n createFrame (opcode) {\n const bodyLength = this.frameData?.byteLength ?? 0\n\n /** @type {number} */\n let payloadLength = bodyLength // 0-125\n let offset = 6\n\n if (bodyLength > maxUnsigned16Bit) {\n offset += 8 // payload length is next 8 bytes\n payloadLength = 127\n } else if (bodyLength > 125) {\n offset += 2 // payload length is next 2 bytes\n payloadLength = 126\n }\n\n const buffer = Buffer.allocUnsafe(bodyLength + offset)\n\n // Clear first 2 bytes, everything else is overwritten\n buffer[0] = buffer[1] = 0\n buffer[0] |= 0x80 // FIN\n buffer[0] = (buffer[0] & 0xF0) + opcode // opcode\n\n /*! ws. MIT License. Einar Otto Stangvik */\n buffer[offset - 4] = this.maskKey[0]\n buffer[offset - 3] = this.maskKey[1]\n buffer[offset - 2] = this.maskKey[2]\n buffer[offset - 1] = this.maskKey[3]\n\n buffer[1] = payloadLength\n\n if (payloadLength === 126) {\n buffer.writeUInt16BE(bodyLength, 2)\n } else if (payloadLength === 127) {\n // Clear extended payload length\n buffer[2] = buffer[3] = 0\n buffer.writeUIntBE(bodyLength, 4, 6)\n }\n\n buffer[1] |= 0x80 // MASK\n\n // mask body\n for (let i = 0; i < bodyLength; i++) {\n buffer[offset + i] = this.frameData[i] ^ this.maskKey[i % 4]\n }\n\n return buffer\n }\n}\n\nmodule.exports = {\n WebsocketFrameSend\n}\n","'use strict'\n\nconst { Writable } = require('stream')\nconst diagnosticsChannel = require('diagnostics_channel')\nconst { parserStates, opcodes, states, emptyBuffer } = require('./constants')\nconst { kReadyState, kSentClose, kResponse, kReceivedClose } = require('./symbols')\nconst { isValidStatusCode, failWebsocketConnection, websocketMessageReceived } = require('./util')\nconst { WebsocketFrameSend } = require('./frame')\n\n// This code was influenced by ws released under the MIT license.\n// Copyright (c) 2011 Einar Otto Stangvik \n// Copyright (c) 2013 Arnout Kazemier and contributors\n// Copyright (c) 2016 Luigi Pinca and contributors\n\nconst channels = {}\nchannels.ping = diagnosticsChannel.channel('undici:websocket:ping')\nchannels.pong = diagnosticsChannel.channel('undici:websocket:pong')\n\nclass ByteParser extends Writable {\n #buffers = []\n #byteOffset = 0\n\n #state = parserStates.INFO\n\n #info = {}\n #fragments = []\n\n constructor (ws) {\n super()\n\n this.ws = ws\n }\n\n /**\n * @param {Buffer} chunk\n * @param {() => void} callback\n */\n _write (chunk, _, callback) {\n this.#buffers.push(chunk)\n this.#byteOffset += chunk.length\n\n this.run(callback)\n }\n\n /**\n * Runs whenever a new chunk is received.\n * Callback is called whenever there are no more chunks buffering,\n * or not enough bytes are buffered to parse.\n */\n run (callback) {\n while (true) {\n if (this.#state === parserStates.INFO) {\n // If there aren't enough bytes to parse the payload length, etc.\n if (this.#byteOffset < 2) {\n return callback()\n }\n\n const buffer = this.consume(2)\n\n this.#info.fin = (buffer[0] & 0x80) !== 0\n this.#info.opcode = buffer[0] & 0x0F\n\n // If we receive a fragmented message, we use the type of the first\n // frame to parse the full message as binary/text, when it's terminated\n this.#info.originalOpcode ??= this.#info.opcode\n\n this.#info.fragmented = !this.#info.fin && this.#info.opcode !== opcodes.CONTINUATION\n\n if (this.#info.fragmented && this.#info.opcode !== opcodes.BINARY && this.#info.opcode !== opcodes.TEXT) {\n // Only text and binary frames can be fragmented\n failWebsocketConnection(this.ws, 'Invalid frame type was fragmented.')\n return\n }\n\n const payloadLength = buffer[1] & 0x7F\n\n if (payloadLength <= 125) {\n this.#info.payloadLength = payloadLength\n this.#state = parserStates.READ_DATA\n } else if (payloadLength === 126) {\n this.#state = parserStates.PAYLOADLENGTH_16\n } else if (payloadLength === 127) {\n this.#state = parserStates.PAYLOADLENGTH_64\n }\n\n if (this.#info.fragmented && payloadLength > 125) {\n // A fragmented frame can't be fragmented itself\n failWebsocketConnection(this.ws, 'Fragmented frame exceeded 125 bytes.')\n return\n } else if (\n (this.#info.opcode === opcodes.PING ||\n this.#info.opcode === opcodes.PONG ||\n this.#info.opcode === opcodes.CLOSE) &&\n payloadLength > 125\n ) {\n // Control frames can have a payload length of 125 bytes MAX\n failWebsocketConnection(this.ws, 'Payload length for control frame exceeded 125 bytes.')\n return\n } else if (this.#info.opcode === opcodes.CLOSE) {\n if (payloadLength === 1) {\n failWebsocketConnection(this.ws, 'Received close frame with a 1-byte body.')\n return\n }\n\n const body = this.consume(payloadLength)\n\n this.#info.closeInfo = this.parseCloseBody(false, body)\n\n if (!this.ws[kSentClose]) {\n // If an endpoint receives a Close frame and did not previously send a\n // Close frame, the endpoint MUST send a Close frame in response. (When\n // sending a Close frame in response, the endpoint typically echos the\n // status code it received.)\n const body = Buffer.allocUnsafe(2)\n body.writeUInt16BE(this.#info.closeInfo.code, 0)\n const closeFrame = new WebsocketFrameSend(body)\n\n this.ws[kResponse].socket.write(\n closeFrame.createFrame(opcodes.CLOSE),\n (err) => {\n if (!err) {\n this.ws[kSentClose] = true\n }\n }\n )\n }\n\n // Upon either sending or receiving a Close control frame, it is said\n // that _The WebSocket Closing Handshake is Started_ and that the\n // WebSocket connection is in the CLOSING state.\n this.ws[kReadyState] = states.CLOSING\n this.ws[kReceivedClose] = true\n\n this.end()\n\n return\n } else if (this.#info.opcode === opcodes.PING) {\n // Upon receipt of a Ping frame, an endpoint MUST send a Pong frame in\n // response, unless it already received a Close frame.\n // A Pong frame sent in response to a Ping frame must have identical\n // \"Application data\"\n\n const body = this.consume(payloadLength)\n\n if (!this.ws[kReceivedClose]) {\n const frame = new WebsocketFrameSend(body)\n\n this.ws[kResponse].socket.write(frame.createFrame(opcodes.PONG))\n\n if (channels.ping.hasSubscribers) {\n channels.ping.publish({\n payload: body\n })\n }\n }\n\n this.#state = parserStates.INFO\n\n if (this.#byteOffset > 0) {\n continue\n } else {\n callback()\n return\n }\n } else if (this.#info.opcode === opcodes.PONG) {\n // A Pong frame MAY be sent unsolicited. This serves as a\n // unidirectional heartbeat. A response to an unsolicited Pong frame is\n // not expected.\n\n const body = this.consume(payloadLength)\n\n if (channels.pong.hasSubscribers) {\n channels.pong.publish({\n payload: body\n })\n }\n\n if (this.#byteOffset > 0) {\n continue\n } else {\n callback()\n return\n }\n }\n } else if (this.#state === parserStates.PAYLOADLENGTH_16) {\n if (this.#byteOffset < 2) {\n return callback()\n }\n\n const buffer = this.consume(2)\n\n this.#info.payloadLength = buffer.readUInt16BE(0)\n this.#state = parserStates.READ_DATA\n } else if (this.#state === parserStates.PAYLOADLENGTH_64) {\n if (this.#byteOffset < 8) {\n return callback()\n }\n\n const buffer = this.consume(8)\n const upper = buffer.readUInt32BE(0)\n\n // 2^31 is the maxinimum bytes an arraybuffer can contain\n // on 32-bit systems. Although, on 64-bit systems, this is\n // 2^53-1 bytes.\n // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Errors/Invalid_array_length\n // https://source.chromium.org/chromium/chromium/src/+/main:v8/src/common/globals.h;drc=1946212ac0100668f14eb9e2843bdd846e510a1e;bpv=1;bpt=1;l=1275\n // https://source.chromium.org/chromium/chromium/src/+/main:v8/src/objects/js-array-buffer.h;l=34;drc=1946212ac0100668f14eb9e2843bdd846e510a1e\n if (upper > 2 ** 31 - 1) {\n failWebsocketConnection(this.ws, 'Received payload length > 2^31 bytes.')\n return\n }\n\n const lower = buffer.readUInt32BE(4)\n\n this.#info.payloadLength = (upper << 8) + lower\n this.#state = parserStates.READ_DATA\n } else if (this.#state === parserStates.READ_DATA) {\n if (this.#byteOffset < this.#info.payloadLength) {\n // If there is still more data in this chunk that needs to be read\n return callback()\n } else if (this.#byteOffset >= this.#info.payloadLength) {\n // If the server sent multiple frames in a single chunk\n\n const body = this.consume(this.#info.payloadLength)\n\n this.#fragments.push(body)\n\n // If the frame is unfragmented, or a fragmented frame was terminated,\n // a message was received\n if (!this.#info.fragmented || (this.#info.fin && this.#info.opcode === opcodes.CONTINUATION)) {\n const fullMessage = Buffer.concat(this.#fragments)\n\n websocketMessageReceived(this.ws, this.#info.originalOpcode, fullMessage)\n\n this.#info = {}\n this.#fragments.length = 0\n }\n\n this.#state = parserStates.INFO\n }\n }\n\n if (this.#byteOffset > 0) {\n continue\n } else {\n callback()\n break\n }\n }\n }\n\n /**\n * Take n bytes from the buffered Buffers\n * @param {number} n\n * @returns {Buffer|null}\n */\n consume (n) {\n if (n > this.#byteOffset) {\n return null\n } else if (n === 0) {\n return emptyBuffer\n }\n\n if (this.#buffers[0].length === n) {\n this.#byteOffset -= this.#buffers[0].length\n return this.#buffers.shift()\n }\n\n const buffer = Buffer.allocUnsafe(n)\n let offset = 0\n\n while (offset !== n) {\n const next = this.#buffers[0]\n const { length } = next\n\n if (length + offset === n) {\n buffer.set(this.#buffers.shift(), offset)\n break\n } else if (length + offset > n) {\n buffer.set(next.subarray(0, n - offset), offset)\n this.#buffers[0] = next.subarray(n - offset)\n break\n } else {\n buffer.set(this.#buffers.shift(), offset)\n offset += next.length\n }\n }\n\n this.#byteOffset -= n\n\n return buffer\n }\n\n parseCloseBody (onlyCode, data) {\n // https://datatracker.ietf.org/doc/html/rfc6455#section-7.1.5\n /** @type {number|undefined} */\n let code\n\n if (data.length >= 2) {\n // _The WebSocket Connection Close Code_ is\n // defined as the status code (Section 7.4) contained in the first Close\n // control frame received by the application\n code = data.readUInt16BE(0)\n }\n\n if (onlyCode) {\n if (!isValidStatusCode(code)) {\n return null\n }\n\n return { code }\n }\n\n // https://datatracker.ietf.org/doc/html/rfc6455#section-7.1.6\n /** @type {Buffer} */\n let reason = data.subarray(2)\n\n // Remove BOM\n if (reason[0] === 0xEF && reason[1] === 0xBB && reason[2] === 0xBF) {\n reason = reason.subarray(3)\n }\n\n if (code !== undefined && !isValidStatusCode(code)) {\n return null\n }\n\n try {\n // TODO: optimize this\n reason = new TextDecoder('utf-8', { fatal: true }).decode(reason)\n } catch {\n return null\n }\n\n return { code, reason }\n }\n\n get closingInfo () {\n return this.#info.closeInfo\n }\n}\n\nmodule.exports = {\n ByteParser\n}\n","'use strict'\n\nmodule.exports = {\n kWebSocketURL: Symbol('url'),\n kReadyState: Symbol('ready state'),\n kController: Symbol('controller'),\n kResponse: Symbol('response'),\n kBinaryType: Symbol('binary type'),\n kSentClose: Symbol('sent close'),\n kReceivedClose: Symbol('received close'),\n kByteParser: Symbol('byte parser')\n}\n","'use strict'\n\nconst { kReadyState, kController, kResponse, kBinaryType, kWebSocketURL } = require('./symbols')\nconst { states, opcodes } = require('./constants')\nconst { MessageEvent, ErrorEvent } = require('./events')\n\n/* globals Blob */\n\n/**\n * @param {import('./websocket').WebSocket} ws\n */\nfunction isEstablished (ws) {\n // If the server's response is validated as provided for above, it is\n // said that _The WebSocket Connection is Established_ and that the\n // WebSocket Connection is in the OPEN state.\n return ws[kReadyState] === states.OPEN\n}\n\n/**\n * @param {import('./websocket').WebSocket} ws\n */\nfunction isClosing (ws) {\n // Upon either sending or receiving a Close control frame, it is said\n // that _The WebSocket Closing Handshake is Started_ and that the\n // WebSocket connection is in the CLOSING state.\n return ws[kReadyState] === states.CLOSING\n}\n\n/**\n * @param {import('./websocket').WebSocket} ws\n */\nfunction isClosed (ws) {\n return ws[kReadyState] === states.CLOSED\n}\n\n/**\n * @see https://dom.spec.whatwg.org/#concept-event-fire\n * @param {string} e\n * @param {EventTarget} target\n * @param {EventInit | undefined} eventInitDict\n */\nfunction fireEvent (e, target, eventConstructor = Event, eventInitDict) {\n // 1. If eventConstructor is not given, then let eventConstructor be Event.\n\n // 2. Let event be the result of creating an event given eventConstructor,\n // in the relevant realm of target.\n // 3. Initialize event’s type attribute to e.\n const event = new eventConstructor(e, eventInitDict) // eslint-disable-line new-cap\n\n // 4. Initialize any other IDL attributes of event as described in the\n // invocation of this algorithm.\n\n // 5. Return the result of dispatching event at target, with legacy target\n // override flag set if set.\n target.dispatchEvent(event)\n}\n\n/**\n * @see https://websockets.spec.whatwg.org/#feedback-from-the-protocol\n * @param {import('./websocket').WebSocket} ws\n * @param {number} type Opcode\n * @param {Buffer} data application data\n */\nfunction websocketMessageReceived (ws, type, data) {\n // 1. If ready state is not OPEN (1), then return.\n if (ws[kReadyState] !== states.OPEN) {\n return\n }\n\n // 2. Let dataForEvent be determined by switching on type and binary type:\n let dataForEvent\n\n if (type === opcodes.TEXT) {\n // -> type indicates that the data is Text\n // a new DOMString containing data\n try {\n dataForEvent = new TextDecoder('utf-8', { fatal: true }).decode(data)\n } catch {\n failWebsocketConnection(ws, 'Received invalid UTF-8 in text frame.')\n return\n }\n } else if (type === opcodes.BINARY) {\n if (ws[kBinaryType] === 'blob') {\n // -> type indicates that the data is Binary and binary type is \"blob\"\n // a new Blob object, created in the relevant Realm of the WebSocket\n // object, that represents data as its raw data\n dataForEvent = new Blob([data])\n } else {\n // -> type indicates that the data is Binary and binary type is \"arraybuffer\"\n // a new ArrayBuffer object, created in the relevant Realm of the\n // WebSocket object, whose contents are data\n dataForEvent = new Uint8Array(data).buffer\n }\n }\n\n // 3. Fire an event named message at the WebSocket object, using MessageEvent,\n // with the origin attribute initialized to the serialization of the WebSocket\n // object’s url's origin, and the data attribute initialized to dataForEvent.\n fireEvent('message', ws, MessageEvent, {\n origin: ws[kWebSocketURL].origin,\n data: dataForEvent\n })\n}\n\n/**\n * @see https://datatracker.ietf.org/doc/html/rfc6455\n * @see https://datatracker.ietf.org/doc/html/rfc2616\n * @see https://bugs.chromium.org/p/chromium/issues/detail?id=398407\n * @param {string} protocol\n */\nfunction isValidSubprotocol (protocol) {\n // If present, this value indicates one\n // or more comma-separated subprotocol the client wishes to speak,\n // ordered by preference. The elements that comprise this value\n // MUST be non-empty strings with characters in the range U+0021 to\n // U+007E not including separator characters as defined in\n // [RFC2616] and MUST all be unique strings.\n if (protocol.length === 0) {\n return false\n }\n\n for (const char of protocol) {\n const code = char.charCodeAt(0)\n\n if (\n code < 0x21 ||\n code > 0x7E ||\n char === '(' ||\n char === ')' ||\n char === '<' ||\n char === '>' ||\n char === '@' ||\n char === ',' ||\n char === ';' ||\n char === ':' ||\n char === '\\\\' ||\n char === '\"' ||\n char === '/' ||\n char === '[' ||\n char === ']' ||\n char === '?' ||\n char === '=' ||\n char === '{' ||\n char === '}' ||\n code === 32 || // SP\n code === 9 // HT\n ) {\n return false\n }\n }\n\n return true\n}\n\n/**\n * @see https://datatracker.ietf.org/doc/html/rfc6455#section-7-4\n * @param {number} code\n */\nfunction isValidStatusCode (code) {\n if (code >= 1000 && code < 1015) {\n return (\n code !== 1004 && // reserved\n code !== 1005 && // \"MUST NOT be set as a status code\"\n code !== 1006 // \"MUST NOT be set as a status code\"\n )\n }\n\n return code >= 3000 && code <= 4999\n}\n\n/**\n * @param {import('./websocket').WebSocket} ws\n * @param {string|undefined} reason\n */\nfunction failWebsocketConnection (ws, reason) {\n const { [kController]: controller, [kResponse]: response } = ws\n\n controller.abort()\n\n if (response?.socket && !response.socket.destroyed) {\n response.socket.destroy()\n }\n\n if (reason) {\n fireEvent('error', ws, ErrorEvent, {\n error: new Error(reason)\n })\n }\n}\n\nmodule.exports = {\n isEstablished,\n isClosing,\n isClosed,\n fireEvent,\n isValidSubprotocol,\n isValidStatusCode,\n failWebsocketConnection,\n websocketMessageReceived\n}\n","'use strict'\n\nconst { webidl } = require('../fetch/webidl')\nconst { DOMException } = require('../fetch/constants')\nconst { URLSerializer } = require('../fetch/dataURL')\nconst { getGlobalOrigin } = require('../fetch/global')\nconst { staticPropertyDescriptors, states, opcodes, emptyBuffer } = require('./constants')\nconst {\n kWebSocketURL,\n kReadyState,\n kController,\n kBinaryType,\n kResponse,\n kSentClose,\n kByteParser\n} = require('./symbols')\nconst { isEstablished, isClosing, isValidSubprotocol, failWebsocketConnection, fireEvent } = require('./util')\nconst { establishWebSocketConnection } = require('./connection')\nconst { WebsocketFrameSend } = require('./frame')\nconst { ByteParser } = require('./receiver')\nconst { kEnumerableProperty, isBlobLike } = require('../core/util')\nconst { getGlobalDispatcher } = require('../global')\nconst { types } = require('util')\n\nlet experimentalWarned = false\n\n// https://websockets.spec.whatwg.org/#interface-definition\nclass WebSocket extends EventTarget {\n #events = {\n open: null,\n error: null,\n close: null,\n message: null\n }\n\n #bufferedAmount = 0\n #protocol = ''\n #extensions = ''\n\n /**\n * @param {string} url\n * @param {string|string[]} protocols\n */\n constructor (url, protocols = []) {\n super()\n\n webidl.argumentLengthCheck(arguments, 1, { header: 'WebSocket constructor' })\n\n if (!experimentalWarned) {\n experimentalWarned = true\n process.emitWarning('WebSockets are experimental, expect them to change at any time.', {\n code: 'UNDICI-WS'\n })\n }\n\n const options = webidl.converters['DOMString or sequence or WebSocketInit'](protocols)\n\n url = webidl.converters.USVString(url)\n protocols = options.protocols\n\n // 1. Let baseURL be this's relevant settings object's API base URL.\n const baseURL = getGlobalOrigin()\n\n // 1. Let urlRecord be the result of applying the URL parser to url with baseURL.\n let urlRecord\n\n try {\n urlRecord = new URL(url, baseURL)\n } catch (e) {\n // 3. If urlRecord is failure, then throw a \"SyntaxError\" DOMException.\n throw new DOMException(e, 'SyntaxError')\n }\n\n // 4. If urlRecord’s scheme is \"http\", then set urlRecord’s scheme to \"ws\".\n if (urlRecord.protocol === 'http:') {\n urlRecord.protocol = 'ws:'\n } else if (urlRecord.protocol === 'https:') {\n // 5. Otherwise, if urlRecord’s scheme is \"https\", set urlRecord’s scheme to \"wss\".\n urlRecord.protocol = 'wss:'\n }\n\n // 6. If urlRecord’s scheme is not \"ws\" or \"wss\", then throw a \"SyntaxError\" DOMException.\n if (urlRecord.protocol !== 'ws:' && urlRecord.protocol !== 'wss:') {\n throw new DOMException(\n `Expected a ws: or wss: protocol, got ${urlRecord.protocol}`,\n 'SyntaxError'\n )\n }\n\n // 7. If urlRecord’s fragment is non-null, then throw a \"SyntaxError\"\n // DOMException.\n if (urlRecord.hash || urlRecord.href.endsWith('#')) {\n throw new DOMException('Got fragment', 'SyntaxError')\n }\n\n // 8. If protocols is a string, set protocols to a sequence consisting\n // of just that string.\n if (typeof protocols === 'string') {\n protocols = [protocols]\n }\n\n // 9. If any of the values in protocols occur more than once or otherwise\n // fail to match the requirements for elements that comprise the value\n // of `Sec-WebSocket-Protocol` fields as defined by The WebSocket\n // protocol, then throw a \"SyntaxError\" DOMException.\n if (protocols.length !== new Set(protocols.map(p => p.toLowerCase())).size) {\n throw new DOMException('Invalid Sec-WebSocket-Protocol value', 'SyntaxError')\n }\n\n if (protocols.length > 0 && !protocols.every(p => isValidSubprotocol(p))) {\n throw new DOMException('Invalid Sec-WebSocket-Protocol value', 'SyntaxError')\n }\n\n // 10. Set this's url to urlRecord.\n this[kWebSocketURL] = new URL(urlRecord.href)\n\n // 11. Let client be this's relevant settings object.\n\n // 12. Run this step in parallel:\n\n // 1. Establish a WebSocket connection given urlRecord, protocols,\n // and client.\n this[kController] = establishWebSocketConnection(\n urlRecord,\n protocols,\n this,\n (response) => this.#onConnectionEstablished(response),\n options\n )\n\n // Each WebSocket object has an associated ready state, which is a\n // number representing the state of the connection. Initially it must\n // be CONNECTING (0).\n this[kReadyState] = WebSocket.CONNECTING\n\n // The extensions attribute must initially return the empty string.\n\n // The protocol attribute must initially return the empty string.\n\n // Each WebSocket object has an associated binary type, which is a\n // BinaryType. Initially it must be \"blob\".\n this[kBinaryType] = 'blob'\n }\n\n /**\n * @see https://websockets.spec.whatwg.org/#dom-websocket-close\n * @param {number|undefined} code\n * @param {string|undefined} reason\n */\n close (code = undefined, reason = undefined) {\n webidl.brandCheck(this, WebSocket)\n\n if (code !== undefined) {\n code = webidl.converters['unsigned short'](code, { clamp: true })\n }\n\n if (reason !== undefined) {\n reason = webidl.converters.USVString(reason)\n }\n\n // 1. If code is present, but is neither an integer equal to 1000 nor an\n // integer in the range 3000 to 4999, inclusive, throw an\n // \"InvalidAccessError\" DOMException.\n if (code !== undefined) {\n if (code !== 1000 && (code < 3000 || code > 4999)) {\n throw new DOMException('invalid code', 'InvalidAccessError')\n }\n }\n\n let reasonByteLength = 0\n\n // 2. If reason is present, then run these substeps:\n if (reason !== undefined) {\n // 1. Let reasonBytes be the result of encoding reason.\n // 2. If reasonBytes is longer than 123 bytes, then throw a\n // \"SyntaxError\" DOMException.\n reasonByteLength = Buffer.byteLength(reason)\n\n if (reasonByteLength > 123) {\n throw new DOMException(\n `Reason must be less than 123 bytes; received ${reasonByteLength}`,\n 'SyntaxError'\n )\n }\n }\n\n // 3. Run the first matching steps from the following list:\n if (this[kReadyState] === WebSocket.CLOSING || this[kReadyState] === WebSocket.CLOSED) {\n // If this's ready state is CLOSING (2) or CLOSED (3)\n // Do nothing.\n } else if (!isEstablished(this)) {\n // If the WebSocket connection is not yet established\n // Fail the WebSocket connection and set this's ready state\n // to CLOSING (2).\n failWebsocketConnection(this, 'Connection was closed before it was established.')\n this[kReadyState] = WebSocket.CLOSING\n } else if (!isClosing(this)) {\n // If the WebSocket closing handshake has not yet been started\n // Start the WebSocket closing handshake and set this's ready\n // state to CLOSING (2).\n // - If neither code nor reason is present, the WebSocket Close\n // message must not have a body.\n // - If code is present, then the status code to use in the\n // WebSocket Close message must be the integer given by code.\n // - If reason is also present, then reasonBytes must be\n // provided in the Close message after the status code.\n\n const frame = new WebsocketFrameSend()\n\n // If neither code nor reason is present, the WebSocket Close\n // message must not have a body.\n\n // If code is present, then the status code to use in the\n // WebSocket Close message must be the integer given by code.\n if (code !== undefined && reason === undefined) {\n frame.frameData = Buffer.allocUnsafe(2)\n frame.frameData.writeUInt16BE(code, 0)\n } else if (code !== undefined && reason !== undefined) {\n // If reason is also present, then reasonBytes must be\n // provided in the Close message after the status code.\n frame.frameData = Buffer.allocUnsafe(2 + reasonByteLength)\n frame.frameData.writeUInt16BE(code, 0)\n // the body MAY contain UTF-8-encoded data with value /reason/\n frame.frameData.write(reason, 2, 'utf-8')\n } else {\n frame.frameData = emptyBuffer\n }\n\n /** @type {import('stream').Duplex} */\n const socket = this[kResponse].socket\n\n socket.write(frame.createFrame(opcodes.CLOSE), (err) => {\n if (!err) {\n this[kSentClose] = true\n }\n })\n\n // Upon either sending or receiving a Close control frame, it is said\n // that _The WebSocket Closing Handshake is Started_ and that the\n // WebSocket connection is in the CLOSING state.\n this[kReadyState] = states.CLOSING\n } else {\n // Otherwise\n // Set this's ready state to CLOSING (2).\n this[kReadyState] = WebSocket.CLOSING\n }\n }\n\n /**\n * @see https://websockets.spec.whatwg.org/#dom-websocket-send\n * @param {NodeJS.TypedArray|ArrayBuffer|Blob|string} data\n */\n send (data) {\n webidl.brandCheck(this, WebSocket)\n\n webidl.argumentLengthCheck(arguments, 1, { header: 'WebSocket.send' })\n\n data = webidl.converters.WebSocketSendData(data)\n\n // 1. If this's ready state is CONNECTING, then throw an\n // \"InvalidStateError\" DOMException.\n if (this[kReadyState] === WebSocket.CONNECTING) {\n throw new DOMException('Sent before connected.', 'InvalidStateError')\n }\n\n // 2. Run the appropriate set of steps from the following list:\n // https://datatracker.ietf.org/doc/html/rfc6455#section-6.1\n // https://datatracker.ietf.org/doc/html/rfc6455#section-5.2\n\n if (!isEstablished(this) || isClosing(this)) {\n return\n }\n\n /** @type {import('stream').Duplex} */\n const socket = this[kResponse].socket\n\n // If data is a string\n if (typeof data === 'string') {\n // If the WebSocket connection is established and the WebSocket\n // closing handshake has not yet started, then the user agent\n // must send a WebSocket Message comprised of the data argument\n // using a text frame opcode; if the data cannot be sent, e.g.\n // because it would need to be buffered but the buffer is full,\n // the user agent must flag the WebSocket as full and then close\n // the WebSocket connection. Any invocation of this method with a\n // string argument that does not throw an exception must increase\n // the bufferedAmount attribute by the number of bytes needed to\n // express the argument as UTF-8.\n\n const value = Buffer.from(data)\n const frame = new WebsocketFrameSend(value)\n const buffer = frame.createFrame(opcodes.TEXT)\n\n this.#bufferedAmount += value.byteLength\n socket.write(buffer, () => {\n this.#bufferedAmount -= value.byteLength\n })\n } else if (types.isArrayBuffer(data)) {\n // If the WebSocket connection is established, and the WebSocket\n // closing handshake has not yet started, then the user agent must\n // send a WebSocket Message comprised of data using a binary frame\n // opcode; if the data cannot be sent, e.g. because it would need\n // to be buffered but the buffer is full, the user agent must flag\n // the WebSocket as full and then close the WebSocket connection.\n // The data to be sent is the data stored in the buffer described\n // by the ArrayBuffer object. Any invocation of this method with an\n // ArrayBuffer argument that does not throw an exception must\n // increase the bufferedAmount attribute by the length of the\n // ArrayBuffer in bytes.\n\n const value = Buffer.from(data)\n const frame = new WebsocketFrameSend(value)\n const buffer = frame.createFrame(opcodes.BINARY)\n\n this.#bufferedAmount += value.byteLength\n socket.write(buffer, () => {\n this.#bufferedAmount -= value.byteLength\n })\n } else if (ArrayBuffer.isView(data)) {\n // If the WebSocket connection is established, and the WebSocket\n // closing handshake has not yet started, then the user agent must\n // send a WebSocket Message comprised of data using a binary frame\n // opcode; if the data cannot be sent, e.g. because it would need to\n // be buffered but the buffer is full, the user agent must flag the\n // WebSocket as full and then close the WebSocket connection. The\n // data to be sent is the data stored in the section of the buffer\n // described by the ArrayBuffer object that data references. Any\n // invocation of this method with this kind of argument that does\n // not throw an exception must increase the bufferedAmount attribute\n // by the length of data’s buffer in bytes.\n\n const ab = Buffer.from(data, data.byteOffset, data.byteLength)\n\n const frame = new WebsocketFrameSend(ab)\n const buffer = frame.createFrame(opcodes.BINARY)\n\n this.#bufferedAmount += ab.byteLength\n socket.write(buffer, () => {\n this.#bufferedAmount -= ab.byteLength\n })\n } else if (isBlobLike(data)) {\n // If the WebSocket connection is established, and the WebSocket\n // closing handshake has not yet started, then the user agent must\n // send a WebSocket Message comprised of data using a binary frame\n // opcode; if the data cannot be sent, e.g. because it would need to\n // be buffered but the buffer is full, the user agent must flag the\n // WebSocket as full and then close the WebSocket connection. The data\n // to be sent is the raw data represented by the Blob object. Any\n // invocation of this method with a Blob argument that does not throw\n // an exception must increase the bufferedAmount attribute by the size\n // of the Blob object’s raw data, in bytes.\n\n const frame = new WebsocketFrameSend()\n\n data.arrayBuffer().then((ab) => {\n const value = Buffer.from(ab)\n frame.frameData = value\n const buffer = frame.createFrame(opcodes.BINARY)\n\n this.#bufferedAmount += value.byteLength\n socket.write(buffer, () => {\n this.#bufferedAmount -= value.byteLength\n })\n })\n }\n }\n\n get readyState () {\n webidl.brandCheck(this, WebSocket)\n\n // The readyState getter steps are to return this's ready state.\n return this[kReadyState]\n }\n\n get bufferedAmount () {\n webidl.brandCheck(this, WebSocket)\n\n return this.#bufferedAmount\n }\n\n get url () {\n webidl.brandCheck(this, WebSocket)\n\n // The url getter steps are to return this's url, serialized.\n return URLSerializer(this[kWebSocketURL])\n }\n\n get extensions () {\n webidl.brandCheck(this, WebSocket)\n\n return this.#extensions\n }\n\n get protocol () {\n webidl.brandCheck(this, WebSocket)\n\n return this.#protocol\n }\n\n get onopen () {\n webidl.brandCheck(this, WebSocket)\n\n return this.#events.open\n }\n\n set onopen (fn) {\n webidl.brandCheck(this, WebSocket)\n\n if (this.#events.open) {\n this.removeEventListener('open', this.#events.open)\n }\n\n if (typeof fn === 'function') {\n this.#events.open = fn\n this.addEventListener('open', fn)\n } else {\n this.#events.open = null\n }\n }\n\n get onerror () {\n webidl.brandCheck(this, WebSocket)\n\n return this.#events.error\n }\n\n set onerror (fn) {\n webidl.brandCheck(this, WebSocket)\n\n if (this.#events.error) {\n this.removeEventListener('error', this.#events.error)\n }\n\n if (typeof fn === 'function') {\n this.#events.error = fn\n this.addEventListener('error', fn)\n } else {\n this.#events.error = null\n }\n }\n\n get onclose () {\n webidl.brandCheck(this, WebSocket)\n\n return this.#events.close\n }\n\n set onclose (fn) {\n webidl.brandCheck(this, WebSocket)\n\n if (this.#events.close) {\n this.removeEventListener('close', this.#events.close)\n }\n\n if (typeof fn === 'function') {\n this.#events.close = fn\n this.addEventListener('close', fn)\n } else {\n this.#events.close = null\n }\n }\n\n get onmessage () {\n webidl.brandCheck(this, WebSocket)\n\n return this.#events.message\n }\n\n set onmessage (fn) {\n webidl.brandCheck(this, WebSocket)\n\n if (this.#events.message) {\n this.removeEventListener('message', this.#events.message)\n }\n\n if (typeof fn === 'function') {\n this.#events.message = fn\n this.addEventListener('message', fn)\n } else {\n this.#events.message = null\n }\n }\n\n get binaryType () {\n webidl.brandCheck(this, WebSocket)\n\n return this[kBinaryType]\n }\n\n set binaryType (type) {\n webidl.brandCheck(this, WebSocket)\n\n if (type !== 'blob' && type !== 'arraybuffer') {\n this[kBinaryType] = 'blob'\n } else {\n this[kBinaryType] = type\n }\n }\n\n /**\n * @see https://websockets.spec.whatwg.org/#feedback-from-the-protocol\n */\n #onConnectionEstablished (response) {\n // processResponse is called when the \"response’s header list has been received and initialized.\"\n // once this happens, the connection is open\n this[kResponse] = response\n\n const parser = new ByteParser(this)\n parser.on('drain', function onParserDrain () {\n this.ws[kResponse].socket.resume()\n })\n\n response.socket.ws = this\n this[kByteParser] = parser\n\n // 1. Change the ready state to OPEN (1).\n this[kReadyState] = states.OPEN\n\n // 2. Change the extensions attribute’s value to the extensions in use, if\n // it is not the null value.\n // https://datatracker.ietf.org/doc/html/rfc6455#section-9.1\n const extensions = response.headersList.get('sec-websocket-extensions')\n\n if (extensions !== null) {\n this.#extensions = extensions\n }\n\n // 3. Change the protocol attribute’s value to the subprotocol in use, if\n // it is not the null value.\n // https://datatracker.ietf.org/doc/html/rfc6455#section-1.9\n const protocol = response.headersList.get('sec-websocket-protocol')\n\n if (protocol !== null) {\n this.#protocol = protocol\n }\n\n // 4. Fire an event named open at the WebSocket object.\n fireEvent('open', this)\n }\n}\n\n// https://websockets.spec.whatwg.org/#dom-websocket-connecting\nWebSocket.CONNECTING = WebSocket.prototype.CONNECTING = states.CONNECTING\n// https://websockets.spec.whatwg.org/#dom-websocket-open\nWebSocket.OPEN = WebSocket.prototype.OPEN = states.OPEN\n// https://websockets.spec.whatwg.org/#dom-websocket-closing\nWebSocket.CLOSING = WebSocket.prototype.CLOSING = states.CLOSING\n// https://websockets.spec.whatwg.org/#dom-websocket-closed\nWebSocket.CLOSED = WebSocket.prototype.CLOSED = states.CLOSED\n\nObject.defineProperties(WebSocket.prototype, {\n CONNECTING: staticPropertyDescriptors,\n OPEN: staticPropertyDescriptors,\n CLOSING: staticPropertyDescriptors,\n CLOSED: staticPropertyDescriptors,\n url: kEnumerableProperty,\n readyState: kEnumerableProperty,\n bufferedAmount: kEnumerableProperty,\n onopen: kEnumerableProperty,\n onerror: kEnumerableProperty,\n onclose: kEnumerableProperty,\n close: kEnumerableProperty,\n onmessage: kEnumerableProperty,\n binaryType: kEnumerableProperty,\n send: kEnumerableProperty,\n extensions: kEnumerableProperty,\n protocol: kEnumerableProperty,\n [Symbol.toStringTag]: {\n value: 'WebSocket',\n writable: false,\n enumerable: false,\n configurable: true\n }\n})\n\nObject.defineProperties(WebSocket, {\n CONNECTING: staticPropertyDescriptors,\n OPEN: staticPropertyDescriptors,\n CLOSING: staticPropertyDescriptors,\n CLOSED: staticPropertyDescriptors\n})\n\nwebidl.converters['sequence'] = webidl.sequenceConverter(\n webidl.converters.DOMString\n)\n\nwebidl.converters['DOMString or sequence'] = function (V) {\n if (webidl.util.Type(V) === 'Object' && Symbol.iterator in V) {\n return webidl.converters['sequence'](V)\n }\n\n return webidl.converters.DOMString(V)\n}\n\n// This implements the propsal made in https://github.com/whatwg/websockets/issues/42\nwebidl.converters.WebSocketInit = webidl.dictionaryConverter([\n {\n key: 'protocols',\n converter: webidl.converters['DOMString or sequence'],\n get defaultValue () {\n return []\n }\n },\n {\n key: 'dispatcher',\n converter: (V) => V,\n get defaultValue () {\n return getGlobalDispatcher()\n }\n },\n {\n key: 'headers',\n converter: webidl.nullableConverter(webidl.converters.HeadersInit)\n }\n])\n\nwebidl.converters['DOMString or sequence or WebSocketInit'] = function (V) {\n if (webidl.util.Type(V) === 'Object' && !(Symbol.iterator in V)) {\n return webidl.converters.WebSocketInit(V)\n }\n\n return { protocols: webidl.converters['DOMString or sequence'](V) }\n}\n\nwebidl.converters.WebSocketSendData = function (V) {\n if (webidl.util.Type(V) === 'Object') {\n if (isBlobLike(V)) {\n return webidl.converters.Blob(V, { strict: false })\n }\n\n if (ArrayBuffer.isView(V) || types.isAnyArrayBuffer(V)) {\n return webidl.converters.BufferSource(V)\n }\n }\n\n return webidl.converters.USVString(V)\n}\n\nmodule.exports = {\n WebSocket\n}\n","'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\nfunction getUserAgent() {\n if (typeof navigator === \"object\" && \"userAgent\" in navigator) {\n return navigator.userAgent;\n }\n\n if (typeof process === \"object\" && process.version !== undefined) {\n return `Node.js/${process.version.substr(1)} (${process.platform}; ${process.arch})`;\n }\n\n return \"\";\n}\n\nexports.getUserAgent = getUserAgent;\n//# sourceMappingURL=index.js.map\n","'use strict'\n\nexports.fromCallback = function (fn) {\n return Object.defineProperty(function (...args) {\n if (typeof args[args.length - 1] === 'function') fn.apply(this, args)\n else {\n return new Promise((resolve, reject) => {\n args.push((err, res) => (err != null) ? reject(err) : resolve(res))\n fn.apply(this, args)\n })\n }\n }, 'name', { value: fn.name })\n}\n\nexports.fromPromise = function (fn) {\n return Object.defineProperty(function (...args) {\n const cb = args[args.length - 1]\n if (typeof cb !== 'function') return fn.apply(this, args)\n else {\n args.pop()\n fn.apply(this, args).then(r => cb(null, r), cb)\n }\n }, 'name', { value: fn.name })\n}\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"v1\", {\n enumerable: true,\n get: function () {\n return _v.default;\n }\n});\nObject.defineProperty(exports, \"v3\", {\n enumerable: true,\n get: function () {\n return _v2.default;\n }\n});\nObject.defineProperty(exports, \"v4\", {\n enumerable: true,\n get: function () {\n return _v3.default;\n }\n});\nObject.defineProperty(exports, \"v5\", {\n enumerable: true,\n get: function () {\n return _v4.default;\n }\n});\nObject.defineProperty(exports, \"NIL\", {\n enumerable: true,\n get: function () {\n return _nil.default;\n }\n});\nObject.defineProperty(exports, \"version\", {\n enumerable: true,\n get: function () {\n return _version.default;\n }\n});\nObject.defineProperty(exports, \"validate\", {\n enumerable: true,\n get: function () {\n return _validate.default;\n }\n});\nObject.defineProperty(exports, \"stringify\", {\n enumerable: true,\n get: function () {\n return _stringify.default;\n }\n});\nObject.defineProperty(exports, \"parse\", {\n enumerable: true,\n get: function () {\n return _parse.default;\n }\n});\n\nvar _v = _interopRequireDefault(require(\"./v1.js\"));\n\nvar _v2 = _interopRequireDefault(require(\"./v3.js\"));\n\nvar _v3 = _interopRequireDefault(require(\"./v4.js\"));\n\nvar _v4 = _interopRequireDefault(require(\"./v5.js\"));\n\nvar _nil = _interopRequireDefault(require(\"./nil.js\"));\n\nvar _version = _interopRequireDefault(require(\"./version.js\"));\n\nvar _validate = _interopRequireDefault(require(\"./validate.js\"));\n\nvar _stringify = _interopRequireDefault(require(\"./stringify.js\"));\n\nvar _parse = _interopRequireDefault(require(\"./parse.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _crypto = _interopRequireDefault(require(\"crypto\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction md5(bytes) {\n if (Array.isArray(bytes)) {\n bytes = Buffer.from(bytes);\n } else if (typeof bytes === 'string') {\n bytes = Buffer.from(bytes, 'utf8');\n }\n\n return _crypto.default.createHash('md5').update(bytes).digest();\n}\n\nvar _default = md5;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _default = '00000000-0000-0000-0000-000000000000';\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _validate = _interopRequireDefault(require(\"./validate.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction parse(uuid) {\n if (!(0, _validate.default)(uuid)) {\n throw TypeError('Invalid UUID');\n }\n\n let v;\n const arr = new Uint8Array(16); // Parse ########-....-....-....-............\n\n arr[0] = (v = parseInt(uuid.slice(0, 8), 16)) >>> 24;\n arr[1] = v >>> 16 & 0xff;\n arr[2] = v >>> 8 & 0xff;\n arr[3] = v & 0xff; // Parse ........-####-....-....-............\n\n arr[4] = (v = parseInt(uuid.slice(9, 13), 16)) >>> 8;\n arr[5] = v & 0xff; // Parse ........-....-####-....-............\n\n arr[6] = (v = parseInt(uuid.slice(14, 18), 16)) >>> 8;\n arr[7] = v & 0xff; // Parse ........-....-....-####-............\n\n arr[8] = (v = parseInt(uuid.slice(19, 23), 16)) >>> 8;\n arr[9] = v & 0xff; // Parse ........-....-....-....-############\n // (Use \"/\" to avoid 32-bit truncation when bit-shifting high-order bytes)\n\n arr[10] = (v = parseInt(uuid.slice(24, 36), 16)) / 0x10000000000 & 0xff;\n arr[11] = v / 0x100000000 & 0xff;\n arr[12] = v >>> 24 & 0xff;\n arr[13] = v >>> 16 & 0xff;\n arr[14] = v >>> 8 & 0xff;\n arr[15] = v & 0xff;\n return arr;\n}\n\nvar _default = parse;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _default = /^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = rng;\n\nvar _crypto = _interopRequireDefault(require(\"crypto\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nconst rnds8Pool = new Uint8Array(256); // # of random values to pre-allocate\n\nlet poolPtr = rnds8Pool.length;\n\nfunction rng() {\n if (poolPtr > rnds8Pool.length - 16) {\n _crypto.default.randomFillSync(rnds8Pool);\n\n poolPtr = 0;\n }\n\n return rnds8Pool.slice(poolPtr, poolPtr += 16);\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _crypto = _interopRequireDefault(require(\"crypto\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction sha1(bytes) {\n if (Array.isArray(bytes)) {\n bytes = Buffer.from(bytes);\n } else if (typeof bytes === 'string') {\n bytes = Buffer.from(bytes, 'utf8');\n }\n\n return _crypto.default.createHash('sha1').update(bytes).digest();\n}\n\nvar _default = sha1;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _validate = _interopRequireDefault(require(\"./validate.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * Convert array of 16 byte values to UUID string format of the form:\n * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX\n */\nconst byteToHex = [];\n\nfor (let i = 0; i < 256; ++i) {\n byteToHex.push((i + 0x100).toString(16).substr(1));\n}\n\nfunction stringify(arr, offset = 0) {\n // Note: Be careful editing this code! It's been tuned for performance\n // and works in ways you may not expect. See https://github.com/uuidjs/uuid/pull/434\n const uuid = (byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + '-' + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + '-' + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + '-' + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + '-' + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]]).toLowerCase(); // Consistency check for valid UUID. If this throws, it's likely due to one\n // of the following:\n // - One or more input array values don't map to a hex octet (leading to\n // \"undefined\" in the uuid)\n // - Invalid input values for the RFC `version` or `variant` fields\n\n if (!(0, _validate.default)(uuid)) {\n throw TypeError('Stringified UUID is invalid');\n }\n\n return uuid;\n}\n\nvar _default = stringify;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _rng = _interopRequireDefault(require(\"./rng.js\"));\n\nvar _stringify = _interopRequireDefault(require(\"./stringify.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// **`v1()` - Generate time-based UUID**\n//\n// Inspired by https://github.com/LiosK/UUID.js\n// and http://docs.python.org/library/uuid.html\nlet _nodeId;\n\nlet _clockseq; // Previous uuid creation time\n\n\nlet _lastMSecs = 0;\nlet _lastNSecs = 0; // See https://github.com/uuidjs/uuid for API details\n\nfunction v1(options, buf, offset) {\n let i = buf && offset || 0;\n const b = buf || new Array(16);\n options = options || {};\n let node = options.node || _nodeId;\n let clockseq = options.clockseq !== undefined ? options.clockseq : _clockseq; // node and clockseq need to be initialized to random values if they're not\n // specified. We do this lazily to minimize issues related to insufficient\n // system entropy. See #189\n\n if (node == null || clockseq == null) {\n const seedBytes = options.random || (options.rng || _rng.default)();\n\n if (node == null) {\n // Per 4.5, create and 48-bit node id, (47 random bits + multicast bit = 1)\n node = _nodeId = [seedBytes[0] | 0x01, seedBytes[1], seedBytes[2], seedBytes[3], seedBytes[4], seedBytes[5]];\n }\n\n if (clockseq == null) {\n // Per 4.2.2, randomize (14 bit) clockseq\n clockseq = _clockseq = (seedBytes[6] << 8 | seedBytes[7]) & 0x3fff;\n }\n } // UUID timestamps are 100 nano-second units since the Gregorian epoch,\n // (1582-10-15 00:00). JSNumbers aren't precise enough for this, so\n // time is handled internally as 'msecs' (integer milliseconds) and 'nsecs'\n // (100-nanoseconds offset from msecs) since unix epoch, 1970-01-01 00:00.\n\n\n let msecs = options.msecs !== undefined ? options.msecs : Date.now(); // Per 4.2.1.2, use count of uuid's generated during the current clock\n // cycle to simulate higher resolution clock\n\n let nsecs = options.nsecs !== undefined ? options.nsecs : _lastNSecs + 1; // Time since last uuid creation (in msecs)\n\n const dt = msecs - _lastMSecs + (nsecs - _lastNSecs) / 10000; // Per 4.2.1.2, Bump clockseq on clock regression\n\n if (dt < 0 && options.clockseq === undefined) {\n clockseq = clockseq + 1 & 0x3fff;\n } // Reset nsecs if clock regresses (new clockseq) or we've moved onto a new\n // time interval\n\n\n if ((dt < 0 || msecs > _lastMSecs) && options.nsecs === undefined) {\n nsecs = 0;\n } // Per 4.2.1.2 Throw error if too many uuids are requested\n\n\n if (nsecs >= 10000) {\n throw new Error(\"uuid.v1(): Can't create more than 10M uuids/sec\");\n }\n\n _lastMSecs = msecs;\n _lastNSecs = nsecs;\n _clockseq = clockseq; // Per 4.1.4 - Convert from unix epoch to Gregorian epoch\n\n msecs += 12219292800000; // `time_low`\n\n const tl = ((msecs & 0xfffffff) * 10000 + nsecs) % 0x100000000;\n b[i++] = tl >>> 24 & 0xff;\n b[i++] = tl >>> 16 & 0xff;\n b[i++] = tl >>> 8 & 0xff;\n b[i++] = tl & 0xff; // `time_mid`\n\n const tmh = msecs / 0x100000000 * 10000 & 0xfffffff;\n b[i++] = tmh >>> 8 & 0xff;\n b[i++] = tmh & 0xff; // `time_high_and_version`\n\n b[i++] = tmh >>> 24 & 0xf | 0x10; // include version\n\n b[i++] = tmh >>> 16 & 0xff; // `clock_seq_hi_and_reserved` (Per 4.2.2 - include variant)\n\n b[i++] = clockseq >>> 8 | 0x80; // `clock_seq_low`\n\n b[i++] = clockseq & 0xff; // `node`\n\n for (let n = 0; n < 6; ++n) {\n b[i + n] = node[n];\n }\n\n return buf || (0, _stringify.default)(b);\n}\n\nvar _default = v1;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _v = _interopRequireDefault(require(\"./v35.js\"));\n\nvar _md = _interopRequireDefault(require(\"./md5.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nconst v3 = (0, _v.default)('v3', 0x30, _md.default);\nvar _default = v3;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = _default;\nexports.URL = exports.DNS = void 0;\n\nvar _stringify = _interopRequireDefault(require(\"./stringify.js\"));\n\nvar _parse = _interopRequireDefault(require(\"./parse.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction stringToBytes(str) {\n str = unescape(encodeURIComponent(str)); // UTF8 escape\n\n const bytes = [];\n\n for (let i = 0; i < str.length; ++i) {\n bytes.push(str.charCodeAt(i));\n }\n\n return bytes;\n}\n\nconst DNS = '6ba7b810-9dad-11d1-80b4-00c04fd430c8';\nexports.DNS = DNS;\nconst URL = '6ba7b811-9dad-11d1-80b4-00c04fd430c8';\nexports.URL = URL;\n\nfunction _default(name, version, hashfunc) {\n function generateUUID(value, namespace, buf, offset) {\n if (typeof value === 'string') {\n value = stringToBytes(value);\n }\n\n if (typeof namespace === 'string') {\n namespace = (0, _parse.default)(namespace);\n }\n\n if (namespace.length !== 16) {\n throw TypeError('Namespace must be array-like (16 iterable integer values, 0-255)');\n } // Compute hash of namespace and value, Per 4.3\n // Future: Use spread syntax when supported on all platforms, e.g. `bytes =\n // hashfunc([...namespace, ... value])`\n\n\n let bytes = new Uint8Array(16 + value.length);\n bytes.set(namespace);\n bytes.set(value, namespace.length);\n bytes = hashfunc(bytes);\n bytes[6] = bytes[6] & 0x0f | version;\n bytes[8] = bytes[8] & 0x3f | 0x80;\n\n if (buf) {\n offset = offset || 0;\n\n for (let i = 0; i < 16; ++i) {\n buf[offset + i] = bytes[i];\n }\n\n return buf;\n }\n\n return (0, _stringify.default)(bytes);\n } // Function#name is not settable on some platforms (#270)\n\n\n try {\n generateUUID.name = name; // eslint-disable-next-line no-empty\n } catch (err) {} // For CommonJS default export support\n\n\n generateUUID.DNS = DNS;\n generateUUID.URL = URL;\n return generateUUID;\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _rng = _interopRequireDefault(require(\"./rng.js\"));\n\nvar _stringify = _interopRequireDefault(require(\"./stringify.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction v4(options, buf, offset) {\n options = options || {};\n\n const rnds = options.random || (options.rng || _rng.default)(); // Per 4.4, set bits for version and `clock_seq_hi_and_reserved`\n\n\n rnds[6] = rnds[6] & 0x0f | 0x40;\n rnds[8] = rnds[8] & 0x3f | 0x80; // Copy bytes to buffer, if provided\n\n if (buf) {\n offset = offset || 0;\n\n for (let i = 0; i < 16; ++i) {\n buf[offset + i] = rnds[i];\n }\n\n return buf;\n }\n\n return (0, _stringify.default)(rnds);\n}\n\nvar _default = v4;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _v = _interopRequireDefault(require(\"./v35.js\"));\n\nvar _sha = _interopRequireDefault(require(\"./sha1.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nconst v5 = (0, _v.default)('v5', 0x50, _sha.default);\nvar _default = v5;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _regex = _interopRequireDefault(require(\"./regex.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction validate(uuid) {\n return typeof uuid === 'string' && _regex.default.test(uuid);\n}\n\nvar _default = validate;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _validate = _interopRequireDefault(require(\"./validate.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction version(uuid) {\n if (!(0, _validate.default)(uuid)) {\n throw TypeError('Invalid UUID');\n }\n\n return parseInt(uuid.substr(14, 1), 16);\n}\n\nvar _default = version;\nexports.default = _default;","// Returns a wrapper function that returns a wrapped callback\n// The wrapper function should do some stuff, and return a\n// presumably different callback function.\n// This makes sure that own properties are retained, so that\n// decorations and such are not lost along the way.\nmodule.exports = wrappy\nfunction wrappy (fn, cb) {\n if (fn && cb) return wrappy(fn)(cb)\n\n if (typeof fn !== 'function')\n throw new TypeError('need wrapper function')\n\n Object.keys(fn).forEach(function (k) {\n wrapper[k] = fn[k]\n })\n\n return wrapper\n\n function wrapper() {\n var args = new Array(arguments.length)\n for (var i = 0; i < args.length; i++) {\n args[i] = arguments[i]\n }\n var ret = fn.apply(this, args)\n var cb = args[args.length-1]\n if (typeof ret === 'function' && ret !== cb) {\n Object.keys(cb).forEach(function (k) {\n ret[k] = cb[k]\n })\n }\n return ret\n }\n}\n","module.exports = require(\"assert\");","module.exports = require(\"async_hooks\");","module.exports = require(\"buffer\");","module.exports = require(\"child_process\");","module.exports = require(\"console\");","module.exports = require(\"constants\");","module.exports = require(\"crypto\");","module.exports = require(\"diagnostics_channel\");","module.exports = require(\"events\");","module.exports = require(\"fs\");","module.exports = require(\"fs/promises\");","module.exports = require(\"http\");","module.exports = require(\"http2\");","module.exports = require(\"https\");","module.exports = require(\"net\");","module.exports = require(\"node:events\");","module.exports = require(\"node:fs\");","module.exports = require(\"node:path\");","module.exports = require(\"node:stream\");","module.exports = require(\"node:util\");","module.exports = require(\"node:zlib\");","module.exports = require(\"os\");","module.exports = require(\"path\");","module.exports = require(\"perf_hooks\");","module.exports = require(\"process\");","module.exports = require(\"querystring\");","module.exports = require(\"stream\");","module.exports = require(\"stream/web\");","module.exports = require(\"string_decoder\");","module.exports = require(\"tls\");","module.exports = require(\"tty\");","module.exports = require(\"url\");","module.exports = require(\"util\");","module.exports = require(\"util/types\");","module.exports = require(\"worker_threads\");","module.exports = require(\"zlib\");","'use strict'\n\nconst WritableStream = require('node:stream').Writable\nconst inherits = require('node:util').inherits\n\nconst StreamSearch = require('../../streamsearch/sbmh')\n\nconst PartStream = require('./PartStream')\nconst HeaderParser = require('./HeaderParser')\n\nconst DASH = 45\nconst B_ONEDASH = Buffer.from('-')\nconst B_CRLF = Buffer.from('\\r\\n')\nconst EMPTY_FN = function () {}\n\nfunction Dicer (cfg) {\n if (!(this instanceof Dicer)) { return new Dicer(cfg) }\n WritableStream.call(this, cfg)\n\n if (!cfg || (!cfg.headerFirst && typeof cfg.boundary !== 'string')) { throw new TypeError('Boundary required') }\n\n if (typeof cfg.boundary === 'string') { this.setBoundary(cfg.boundary) } else { this._bparser = undefined }\n\n this._headerFirst = cfg.headerFirst\n\n this._dashes = 0\n this._parts = 0\n this._finished = false\n this._realFinish = false\n this._isPreamble = true\n this._justMatched = false\n this._firstWrite = true\n this._inHeader = true\n this._part = undefined\n this._cb = undefined\n this._ignoreData = false\n this._partOpts = { highWaterMark: cfg.partHwm }\n this._pause = false\n\n const self = this\n this._hparser = new HeaderParser(cfg)\n this._hparser.on('header', function (header) {\n self._inHeader = false\n self._part.emit('header', header)\n })\n}\ninherits(Dicer, WritableStream)\n\nDicer.prototype.emit = function (ev) {\n if (ev === 'finish' && !this._realFinish) {\n if (!this._finished) {\n const self = this\n process.nextTick(function () {\n self.emit('error', new Error('Unexpected end of multipart data'))\n if (self._part && !self._ignoreData) {\n const type = (self._isPreamble ? 'Preamble' : 'Part')\n self._part.emit('error', new Error(type + ' terminated early due to unexpected end of multipart data'))\n self._part.push(null)\n process.nextTick(function () {\n self._realFinish = true\n self.emit('finish')\n self._realFinish = false\n })\n return\n }\n self._realFinish = true\n self.emit('finish')\n self._realFinish = false\n })\n }\n } else { WritableStream.prototype.emit.apply(this, arguments) }\n}\n\nDicer.prototype._write = function (data, encoding, cb) {\n // ignore unexpected data (e.g. extra trailer data after finished)\n if (!this._hparser && !this._bparser) { return cb() }\n\n if (this._headerFirst && this._isPreamble) {\n if (!this._part) {\n this._part = new PartStream(this._partOpts)\n if (this.listenerCount('preamble') !== 0) { this.emit('preamble', this._part) } else { this._ignore() }\n }\n const r = this._hparser.push(data)\n if (!this._inHeader && r !== undefined && r < data.length) { data = data.slice(r) } else { return cb() }\n }\n\n // allows for \"easier\" testing\n if (this._firstWrite) {\n this._bparser.push(B_CRLF)\n this._firstWrite = false\n }\n\n this._bparser.push(data)\n\n if (this._pause) { this._cb = cb } else { cb() }\n}\n\nDicer.prototype.reset = function () {\n this._part = undefined\n this._bparser = undefined\n this._hparser = undefined\n}\n\nDicer.prototype.setBoundary = function (boundary) {\n const self = this\n this._bparser = new StreamSearch('\\r\\n--' + boundary)\n this._bparser.on('info', function (isMatch, data, start, end) {\n self._oninfo(isMatch, data, start, end)\n })\n}\n\nDicer.prototype._ignore = function () {\n if (this._part && !this._ignoreData) {\n this._ignoreData = true\n this._part.on('error', EMPTY_FN)\n // we must perform some kind of read on the stream even though we are\n // ignoring the data, otherwise node's Readable stream will not emit 'end'\n // after pushing null to the stream\n this._part.resume()\n }\n}\n\nDicer.prototype._oninfo = function (isMatch, data, start, end) {\n let buf; const self = this; let i = 0; let r; let shouldWriteMore = true\n\n if (!this._part && this._justMatched && data) {\n while (this._dashes < 2 && (start + i) < end) {\n if (data[start + i] === DASH) {\n ++i\n ++this._dashes\n } else {\n if (this._dashes) { buf = B_ONEDASH }\n this._dashes = 0\n break\n }\n }\n if (this._dashes === 2) {\n if ((start + i) < end && this.listenerCount('trailer') !== 0) { this.emit('trailer', data.slice(start + i, end)) }\n this.reset()\n this._finished = true\n // no more parts will be added\n if (self._parts === 0) {\n self._realFinish = true\n self.emit('finish')\n self._realFinish = false\n }\n }\n if (this._dashes) { return }\n }\n if (this._justMatched) { this._justMatched = false }\n if (!this._part) {\n this._part = new PartStream(this._partOpts)\n this._part._read = function (n) {\n self._unpause()\n }\n if (this._isPreamble && this.listenerCount('preamble') !== 0) {\n this.emit('preamble', this._part)\n } else if (this._isPreamble !== true && this.listenerCount('part') !== 0) {\n this.emit('part', this._part)\n } else {\n this._ignore()\n }\n if (!this._isPreamble) { this._inHeader = true }\n }\n if (data && start < end && !this._ignoreData) {\n if (this._isPreamble || !this._inHeader) {\n if (buf) { shouldWriteMore = this._part.push(buf) }\n shouldWriteMore = this._part.push(data.slice(start, end))\n if (!shouldWriteMore) { this._pause = true }\n } else if (!this._isPreamble && this._inHeader) {\n if (buf) { this._hparser.push(buf) }\n r = this._hparser.push(data.slice(start, end))\n if (!this._inHeader && r !== undefined && r < end) { this._oninfo(false, data, start + r, end) }\n }\n }\n if (isMatch) {\n this._hparser.reset()\n if (this._isPreamble) { this._isPreamble = false } else {\n if (start !== end) {\n ++this._parts\n this._part.on('end', function () {\n if (--self._parts === 0) {\n if (self._finished) {\n self._realFinish = true\n self.emit('finish')\n self._realFinish = false\n } else {\n self._unpause()\n }\n }\n })\n }\n }\n this._part.push(null)\n this._part = undefined\n this._ignoreData = false\n this._justMatched = true\n this._dashes = 0\n }\n}\n\nDicer.prototype._unpause = function () {\n if (!this._pause) { return }\n\n this._pause = false\n if (this._cb) {\n const cb = this._cb\n this._cb = undefined\n cb()\n }\n}\n\nmodule.exports = Dicer\n","'use strict'\n\nconst EventEmitter = require('node:events').EventEmitter\nconst inherits = require('node:util').inherits\nconst getLimit = require('../../../lib/utils/getLimit')\n\nconst StreamSearch = require('../../streamsearch/sbmh')\n\nconst B_DCRLF = Buffer.from('\\r\\n\\r\\n')\nconst RE_CRLF = /\\r\\n/g\nconst RE_HDR = /^([^:]+):[ \\t]?([\\x00-\\xFF]+)?$/ // eslint-disable-line no-control-regex\n\nfunction HeaderParser (cfg) {\n EventEmitter.call(this)\n\n cfg = cfg || {}\n const self = this\n this.nread = 0\n this.maxed = false\n this.npairs = 0\n this.maxHeaderPairs = getLimit(cfg, 'maxHeaderPairs', 2000)\n this.maxHeaderSize = getLimit(cfg, 'maxHeaderSize', 80 * 1024)\n this.buffer = ''\n this.header = {}\n this.finished = false\n this.ss = new StreamSearch(B_DCRLF)\n this.ss.on('info', function (isMatch, data, start, end) {\n if (data && !self.maxed) {\n if (self.nread + end - start >= self.maxHeaderSize) {\n end = self.maxHeaderSize - self.nread + start\n self.nread = self.maxHeaderSize\n self.maxed = true\n } else { self.nread += (end - start) }\n\n self.buffer += data.toString('binary', start, end)\n }\n if (isMatch) { self._finish() }\n })\n}\ninherits(HeaderParser, EventEmitter)\n\nHeaderParser.prototype.push = function (data) {\n const r = this.ss.push(data)\n if (this.finished) { return r }\n}\n\nHeaderParser.prototype.reset = function () {\n this.finished = false\n this.buffer = ''\n this.header = {}\n this.ss.reset()\n}\n\nHeaderParser.prototype._finish = function () {\n if (this.buffer) { this._parseHeader() }\n this.ss.matches = this.ss.maxMatches\n const header = this.header\n this.header = {}\n this.buffer = ''\n this.finished = true\n this.nread = this.npairs = 0\n this.maxed = false\n this.emit('header', header)\n}\n\nHeaderParser.prototype._parseHeader = function () {\n if (this.npairs === this.maxHeaderPairs) { return }\n\n const lines = this.buffer.split(RE_CRLF)\n const len = lines.length\n let m, h\n\n for (var i = 0; i < len; ++i) { // eslint-disable-line no-var\n if (lines[i].length === 0) { continue }\n if (lines[i][0] === '\\t' || lines[i][0] === ' ') {\n // folded header content\n // RFC2822 says to just remove the CRLF and not the whitespace following\n // it, so we follow the RFC and include the leading whitespace ...\n if (h) {\n this.header[h][this.header[h].length - 1] += lines[i]\n continue\n }\n }\n\n const posColon = lines[i].indexOf(':')\n if (\n posColon === -1 ||\n posColon === 0\n ) {\n return\n }\n m = RE_HDR.exec(lines[i])\n h = m[1].toLowerCase()\n this.header[h] = this.header[h] || []\n this.header[h].push((m[2] || ''))\n if (++this.npairs === this.maxHeaderPairs) { break }\n }\n}\n\nmodule.exports = HeaderParser\n","'use strict'\n\nconst inherits = require('node:util').inherits\nconst ReadableStream = require('node:stream').Readable\n\nfunction PartStream (opts) {\n ReadableStream.call(this, opts)\n}\ninherits(PartStream, ReadableStream)\n\nPartStream.prototype._read = function (n) {}\n\nmodule.exports = PartStream\n","'use strict'\n\n/**\n * Copyright Brian White. All rights reserved.\n *\n * @see https://github.com/mscdex/streamsearch\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n *\n * Based heavily on the Streaming Boyer-Moore-Horspool C++ implementation\n * by Hongli Lai at: https://github.com/FooBarWidget/boyer-moore-horspool\n */\nconst EventEmitter = require('node:events').EventEmitter\nconst inherits = require('node:util').inherits\n\nfunction SBMH (needle) {\n if (typeof needle === 'string') {\n needle = Buffer.from(needle)\n }\n\n if (!Buffer.isBuffer(needle)) {\n throw new TypeError('The needle has to be a String or a Buffer.')\n }\n\n const needleLength = needle.length\n\n if (needleLength === 0) {\n throw new Error('The needle cannot be an empty String/Buffer.')\n }\n\n if (needleLength > 256) {\n throw new Error('The needle cannot have a length bigger than 256.')\n }\n\n this.maxMatches = Infinity\n this.matches = 0\n\n this._occ = new Array(256)\n .fill(needleLength) // Initialize occurrence table.\n this._lookbehind_size = 0\n this._needle = needle\n this._bufpos = 0\n\n this._lookbehind = Buffer.alloc(needleLength)\n\n // Populate occurrence table with analysis of the needle,\n // ignoring last letter.\n for (var i = 0; i < needleLength - 1; ++i) { // eslint-disable-line no-var\n this._occ[needle[i]] = needleLength - 1 - i\n }\n}\ninherits(SBMH, EventEmitter)\n\nSBMH.prototype.reset = function () {\n this._lookbehind_size = 0\n this.matches = 0\n this._bufpos = 0\n}\n\nSBMH.prototype.push = function (chunk, pos) {\n if (!Buffer.isBuffer(chunk)) {\n chunk = Buffer.from(chunk, 'binary')\n }\n const chlen = chunk.length\n this._bufpos = pos || 0\n let r\n while (r !== chlen && this.matches < this.maxMatches) { r = this._sbmh_feed(chunk) }\n return r\n}\n\nSBMH.prototype._sbmh_feed = function (data) {\n const len = data.length\n const needle = this._needle\n const needleLength = needle.length\n const lastNeedleChar = needle[needleLength - 1]\n\n // Positive: points to a position in `data`\n // pos == 3 points to data[3]\n // Negative: points to a position in the lookbehind buffer\n // pos == -2 points to lookbehind[lookbehind_size - 2]\n let pos = -this._lookbehind_size\n let ch\n\n if (pos < 0) {\n // Lookbehind buffer is not empty. Perform Boyer-Moore-Horspool\n // search with character lookup code that considers both the\n // lookbehind buffer and the current round's haystack data.\n //\n // Loop until\n // there is a match.\n // or until\n // we've moved past the position that requires the\n // lookbehind buffer. In this case we switch to the\n // optimized loop.\n // or until\n // the character to look at lies outside the haystack.\n while (pos < 0 && pos <= len - needleLength) {\n ch = this._sbmh_lookup_char(data, pos + needleLength - 1)\n\n if (\n ch === lastNeedleChar &&\n this._sbmh_memcmp(data, pos, needleLength - 1)\n ) {\n this._lookbehind_size = 0\n ++this.matches\n this.emit('info', true)\n\n return (this._bufpos = pos + needleLength)\n }\n pos += this._occ[ch]\n }\n\n // No match.\n\n if (pos < 0) {\n // There's too few data for Boyer-Moore-Horspool to run,\n // so let's use a different algorithm to skip as much as\n // we can.\n // Forward pos until\n // the trailing part of lookbehind + data\n // looks like the beginning of the needle\n // or until\n // pos == 0\n while (pos < 0 && !this._sbmh_memcmp(data, pos, len - pos)) { ++pos }\n }\n\n if (pos >= 0) {\n // Discard lookbehind buffer.\n this.emit('info', false, this._lookbehind, 0, this._lookbehind_size)\n this._lookbehind_size = 0\n } else {\n // Cut off part of the lookbehind buffer that has\n // been processed and append the entire haystack\n // into it.\n const bytesToCutOff = this._lookbehind_size + pos\n if (bytesToCutOff > 0) {\n // The cut off data is guaranteed not to contain the needle.\n this.emit('info', false, this._lookbehind, 0, bytesToCutOff)\n }\n\n this._lookbehind.copy(this._lookbehind, 0, bytesToCutOff,\n this._lookbehind_size - bytesToCutOff)\n this._lookbehind_size -= bytesToCutOff\n\n data.copy(this._lookbehind, this._lookbehind_size)\n this._lookbehind_size += len\n\n this._bufpos = len\n return len\n }\n }\n\n pos += (pos >= 0) * this._bufpos\n\n // Lookbehind buffer is now empty. We only need to check if the\n // needle is in the haystack.\n if (data.indexOf(needle, pos) !== -1) {\n pos = data.indexOf(needle, pos)\n ++this.matches\n if (pos > 0) { this.emit('info', true, data, this._bufpos, pos) } else { this.emit('info', true) }\n\n return (this._bufpos = pos + needleLength)\n } else {\n pos = len - needleLength\n }\n\n // There was no match. If there's trailing haystack data that we cannot\n // match yet using the Boyer-Moore-Horspool algorithm (because the trailing\n // data is less than the needle size) then match using a modified\n // algorithm that starts matching from the beginning instead of the end.\n // Whatever trailing data is left after running this algorithm is added to\n // the lookbehind buffer.\n while (\n pos < len &&\n (\n data[pos] !== needle[0] ||\n (\n (Buffer.compare(\n data.subarray(pos, pos + len - pos),\n needle.subarray(0, len - pos)\n ) !== 0)\n )\n )\n ) {\n ++pos\n }\n if (pos < len) {\n data.copy(this._lookbehind, 0, pos, pos + (len - pos))\n this._lookbehind_size = len - pos\n }\n\n // Everything until pos is guaranteed not to contain needle data.\n if (pos > 0) { this.emit('info', false, data, this._bufpos, pos < len ? pos : len) }\n\n this._bufpos = len\n return len\n}\n\nSBMH.prototype._sbmh_lookup_char = function (data, pos) {\n return (pos < 0)\n ? this._lookbehind[this._lookbehind_size + pos]\n : data[pos]\n}\n\nSBMH.prototype._sbmh_memcmp = function (data, pos, len) {\n for (var i = 0; i < len; ++i) { // eslint-disable-line no-var\n if (this._sbmh_lookup_char(data, pos + i) !== this._needle[i]) { return false }\n }\n return true\n}\n\nmodule.exports = SBMH\n","'use strict'\n\nconst WritableStream = require('node:stream').Writable\nconst { inherits } = require('node:util')\nconst Dicer = require('../deps/dicer/lib/Dicer')\n\nconst MultipartParser = require('./types/multipart')\nconst UrlencodedParser = require('./types/urlencoded')\nconst parseParams = require('./utils/parseParams')\n\nfunction Busboy (opts) {\n if (!(this instanceof Busboy)) { return new Busboy(opts) }\n\n if (typeof opts !== 'object') {\n throw new TypeError('Busboy expected an options-Object.')\n }\n if (typeof opts.headers !== 'object') {\n throw new TypeError('Busboy expected an options-Object with headers-attribute.')\n }\n if (typeof opts.headers['content-type'] !== 'string') {\n throw new TypeError('Missing Content-Type-header.')\n }\n\n const {\n headers,\n ...streamOptions\n } = opts\n\n this.opts = {\n autoDestroy: false,\n ...streamOptions\n }\n WritableStream.call(this, this.opts)\n\n this._done = false\n this._parser = this.getParserByHeaders(headers)\n this._finished = false\n}\ninherits(Busboy, WritableStream)\n\nBusboy.prototype.emit = function (ev) {\n if (ev === 'finish') {\n if (!this._done) {\n this._parser?.end()\n return\n } else if (this._finished) {\n return\n }\n this._finished = true\n }\n WritableStream.prototype.emit.apply(this, arguments)\n}\n\nBusboy.prototype.getParserByHeaders = function (headers) {\n const parsed = parseParams(headers['content-type'])\n\n const cfg = {\n defCharset: this.opts.defCharset,\n fileHwm: this.opts.fileHwm,\n headers,\n highWaterMark: this.opts.highWaterMark,\n isPartAFile: this.opts.isPartAFile,\n limits: this.opts.limits,\n parsedConType: parsed,\n preservePath: this.opts.preservePath\n }\n\n if (MultipartParser.detect.test(parsed[0])) {\n return new MultipartParser(this, cfg)\n }\n if (UrlencodedParser.detect.test(parsed[0])) {\n return new UrlencodedParser(this, cfg)\n }\n throw new Error('Unsupported Content-Type.')\n}\n\nBusboy.prototype._write = function (chunk, encoding, cb) {\n this._parser.write(chunk, cb)\n}\n\nmodule.exports = Busboy\nmodule.exports.default = Busboy\nmodule.exports.Busboy = Busboy\n\nmodule.exports.Dicer = Dicer\n","'use strict'\n\n// TODO:\n// * support 1 nested multipart level\n// (see second multipart example here:\n// http://www.w3.org/TR/html401/interact/forms.html#didx-multipartform-data)\n// * support limits.fieldNameSize\n// -- this will require modifications to utils.parseParams\n\nconst { Readable } = require('node:stream')\nconst { inherits } = require('node:util')\n\nconst Dicer = require('../../deps/dicer/lib/Dicer')\n\nconst parseParams = require('../utils/parseParams')\nconst decodeText = require('../utils/decodeText')\nconst basename = require('../utils/basename')\nconst getLimit = require('../utils/getLimit')\n\nconst RE_BOUNDARY = /^boundary$/i\nconst RE_FIELD = /^form-data$/i\nconst RE_CHARSET = /^charset$/i\nconst RE_FILENAME = /^filename$/i\nconst RE_NAME = /^name$/i\n\nMultipart.detect = /^multipart\\/form-data/i\nfunction Multipart (boy, cfg) {\n let i\n let len\n const self = this\n let boundary\n const limits = cfg.limits\n const isPartAFile = cfg.isPartAFile || ((fieldName, contentType, fileName) => (contentType === 'application/octet-stream' || fileName !== undefined))\n const parsedConType = cfg.parsedConType || []\n const defCharset = cfg.defCharset || 'utf8'\n const preservePath = cfg.preservePath\n const fileOpts = { highWaterMark: cfg.fileHwm }\n\n for (i = 0, len = parsedConType.length; i < len; ++i) {\n if (Array.isArray(parsedConType[i]) &&\n RE_BOUNDARY.test(parsedConType[i][0])) {\n boundary = parsedConType[i][1]\n break\n }\n }\n\n function checkFinished () {\n if (nends === 0 && finished && !boy._done) {\n finished = false\n self.end()\n }\n }\n\n if (typeof boundary !== 'string') { throw new Error('Multipart: Boundary not found') }\n\n const fieldSizeLimit = getLimit(limits, 'fieldSize', 1 * 1024 * 1024)\n const fileSizeLimit = getLimit(limits, 'fileSize', Infinity)\n const filesLimit = getLimit(limits, 'files', Infinity)\n const fieldsLimit = getLimit(limits, 'fields', Infinity)\n const partsLimit = getLimit(limits, 'parts', Infinity)\n const headerPairsLimit = getLimit(limits, 'headerPairs', 2000)\n const headerSizeLimit = getLimit(limits, 'headerSize', 80 * 1024)\n\n let nfiles = 0\n let nfields = 0\n let nends = 0\n let curFile\n let curField\n let finished = false\n\n this._needDrain = false\n this._pause = false\n this._cb = undefined\n this._nparts = 0\n this._boy = boy\n\n const parserCfg = {\n boundary,\n maxHeaderPairs: headerPairsLimit,\n maxHeaderSize: headerSizeLimit,\n partHwm: fileOpts.highWaterMark,\n highWaterMark: cfg.highWaterMark\n }\n\n this.parser = new Dicer(parserCfg)\n this.parser.on('drain', function () {\n self._needDrain = false\n if (self._cb && !self._pause) {\n const cb = self._cb\n self._cb = undefined\n cb()\n }\n }).on('part', function onPart (part) {\n if (++self._nparts > partsLimit) {\n self.parser.removeListener('part', onPart)\n self.parser.on('part', skipPart)\n boy.hitPartsLimit = true\n boy.emit('partsLimit')\n return skipPart(part)\n }\n\n // hack because streams2 _always_ doesn't emit 'end' until nextTick, so let\n // us emit 'end' early since we know the part has ended if we are already\n // seeing the next part\n if (curField) {\n const field = curField\n field.emit('end')\n field.removeAllListeners('end')\n }\n\n part.on('header', function (header) {\n let contype\n let fieldname\n let parsed\n let charset\n let encoding\n let filename\n let nsize = 0\n\n if (header['content-type']) {\n parsed = parseParams(header['content-type'][0])\n if (parsed[0]) {\n contype = parsed[0].toLowerCase()\n for (i = 0, len = parsed.length; i < len; ++i) {\n if (RE_CHARSET.test(parsed[i][0])) {\n charset = parsed[i][1].toLowerCase()\n break\n }\n }\n }\n }\n\n if (contype === undefined) { contype = 'text/plain' }\n if (charset === undefined) { charset = defCharset }\n\n if (header['content-disposition']) {\n parsed = parseParams(header['content-disposition'][0])\n if (!RE_FIELD.test(parsed[0])) { return skipPart(part) }\n for (i = 0, len = parsed.length; i < len; ++i) {\n if (RE_NAME.test(parsed[i][0])) {\n fieldname = parsed[i][1]\n } else if (RE_FILENAME.test(parsed[i][0])) {\n filename = parsed[i][1]\n if (!preservePath) { filename = basename(filename) }\n }\n }\n } else { return skipPart(part) }\n\n if (header['content-transfer-encoding']) { encoding = header['content-transfer-encoding'][0].toLowerCase() } else { encoding = '7bit' }\n\n let onData,\n onEnd\n\n if (isPartAFile(fieldname, contype, filename)) {\n // file/binary field\n if (nfiles === filesLimit) {\n if (!boy.hitFilesLimit) {\n boy.hitFilesLimit = true\n boy.emit('filesLimit')\n }\n return skipPart(part)\n }\n\n ++nfiles\n\n if (boy.listenerCount('file') === 0) {\n self.parser._ignore()\n return\n }\n\n ++nends\n const file = new FileStream(fileOpts)\n curFile = file\n file.on('end', function () {\n --nends\n self._pause = false\n checkFinished()\n if (self._cb && !self._needDrain) {\n const cb = self._cb\n self._cb = undefined\n cb()\n }\n })\n file._read = function (n) {\n if (!self._pause) { return }\n self._pause = false\n if (self._cb && !self._needDrain) {\n const cb = self._cb\n self._cb = undefined\n cb()\n }\n }\n boy.emit('file', fieldname, file, filename, encoding, contype)\n\n onData = function (data) {\n if ((nsize += data.length) > fileSizeLimit) {\n const extralen = fileSizeLimit - nsize + data.length\n if (extralen > 0) { file.push(data.slice(0, extralen)) }\n file.truncated = true\n file.bytesRead = fileSizeLimit\n part.removeAllListeners('data')\n file.emit('limit')\n return\n } else if (!file.push(data)) { self._pause = true }\n\n file.bytesRead = nsize\n }\n\n onEnd = function () {\n curFile = undefined\n file.push(null)\n }\n } else {\n // non-file field\n if (nfields === fieldsLimit) {\n if (!boy.hitFieldsLimit) {\n boy.hitFieldsLimit = true\n boy.emit('fieldsLimit')\n }\n return skipPart(part)\n }\n\n ++nfields\n ++nends\n let buffer = ''\n let truncated = false\n curField = part\n\n onData = function (data) {\n if ((nsize += data.length) > fieldSizeLimit) {\n const extralen = (fieldSizeLimit - (nsize - data.length))\n buffer += data.toString('binary', 0, extralen)\n truncated = true\n part.removeAllListeners('data')\n } else { buffer += data.toString('binary') }\n }\n\n onEnd = function () {\n curField = undefined\n if (buffer.length) { buffer = decodeText(buffer, 'binary', charset) }\n boy.emit('field', fieldname, buffer, false, truncated, encoding, contype)\n --nends\n checkFinished()\n }\n }\n\n /* As of node@2efe4ab761666 (v0.10.29+/v0.11.14+), busboy had become\n broken. Streams2/streams3 is a huge black box of confusion, but\n somehow overriding the sync state seems to fix things again (and still\n seems to work for previous node versions).\n */\n part._readableState.sync = false\n\n part.on('data', onData)\n part.on('end', onEnd)\n }).on('error', function (err) {\n if (curFile) { curFile.emit('error', err) }\n })\n }).on('error', function (err) {\n boy.emit('error', err)\n }).on('finish', function () {\n finished = true\n checkFinished()\n })\n}\n\nMultipart.prototype.write = function (chunk, cb) {\n const r = this.parser.write(chunk)\n if (r && !this._pause) {\n cb()\n } else {\n this._needDrain = !r\n this._cb = cb\n }\n}\n\nMultipart.prototype.end = function () {\n const self = this\n\n if (self.parser.writable) {\n self.parser.end()\n } else if (!self._boy._done) {\n process.nextTick(function () {\n self._boy._done = true\n self._boy.emit('finish')\n })\n }\n}\n\nfunction skipPart (part) {\n part.resume()\n}\n\nfunction FileStream (opts) {\n Readable.call(this, opts)\n\n this.bytesRead = 0\n\n this.truncated = false\n}\n\ninherits(FileStream, Readable)\n\nFileStream.prototype._read = function (n) {}\n\nmodule.exports = Multipart\n","'use strict'\n\nconst Decoder = require('../utils/Decoder')\nconst decodeText = require('../utils/decodeText')\nconst getLimit = require('../utils/getLimit')\n\nconst RE_CHARSET = /^charset$/i\n\nUrlEncoded.detect = /^application\\/x-www-form-urlencoded/i\nfunction UrlEncoded (boy, cfg) {\n const limits = cfg.limits\n const parsedConType = cfg.parsedConType\n this.boy = boy\n\n this.fieldSizeLimit = getLimit(limits, 'fieldSize', 1 * 1024 * 1024)\n this.fieldNameSizeLimit = getLimit(limits, 'fieldNameSize', 100)\n this.fieldsLimit = getLimit(limits, 'fields', Infinity)\n\n let charset\n for (var i = 0, len = parsedConType.length; i < len; ++i) { // eslint-disable-line no-var\n if (Array.isArray(parsedConType[i]) &&\n RE_CHARSET.test(parsedConType[i][0])) {\n charset = parsedConType[i][1].toLowerCase()\n break\n }\n }\n\n if (charset === undefined) { charset = cfg.defCharset || 'utf8' }\n\n this.decoder = new Decoder()\n this.charset = charset\n this._fields = 0\n this._state = 'key'\n this._checkingBytes = true\n this._bytesKey = 0\n this._bytesVal = 0\n this._key = ''\n this._val = ''\n this._keyTrunc = false\n this._valTrunc = false\n this._hitLimit = false\n}\n\nUrlEncoded.prototype.write = function (data, cb) {\n if (this._fields === this.fieldsLimit) {\n if (!this.boy.hitFieldsLimit) {\n this.boy.hitFieldsLimit = true\n this.boy.emit('fieldsLimit')\n }\n return cb()\n }\n\n let idxeq; let idxamp; let i; let p = 0; const len = data.length\n\n while (p < len) {\n if (this._state === 'key') {\n idxeq = idxamp = undefined\n for (i = p; i < len; ++i) {\n if (!this._checkingBytes) { ++p }\n if (data[i] === 0x3D/* = */) {\n idxeq = i\n break\n } else if (data[i] === 0x26/* & */) {\n idxamp = i\n break\n }\n if (this._checkingBytes && this._bytesKey === this.fieldNameSizeLimit) {\n this._hitLimit = true\n break\n } else if (this._checkingBytes) { ++this._bytesKey }\n }\n\n if (idxeq !== undefined) {\n // key with assignment\n if (idxeq > p) { this._key += this.decoder.write(data.toString('binary', p, idxeq)) }\n this._state = 'val'\n\n this._hitLimit = false\n this._checkingBytes = true\n this._val = ''\n this._bytesVal = 0\n this._valTrunc = false\n this.decoder.reset()\n\n p = idxeq + 1\n } else if (idxamp !== undefined) {\n // key with no assignment\n ++this._fields\n let key; const keyTrunc = this._keyTrunc\n if (idxamp > p) { key = (this._key += this.decoder.write(data.toString('binary', p, idxamp))) } else { key = this._key }\n\n this._hitLimit = false\n this._checkingBytes = true\n this._key = ''\n this._bytesKey = 0\n this._keyTrunc = false\n this.decoder.reset()\n\n if (key.length) {\n this.boy.emit('field', decodeText(key, 'binary', this.charset),\n '',\n keyTrunc,\n false)\n }\n\n p = idxamp + 1\n if (this._fields === this.fieldsLimit) { return cb() }\n } else if (this._hitLimit) {\n // we may not have hit the actual limit if there are encoded bytes...\n if (i > p) { this._key += this.decoder.write(data.toString('binary', p, i)) }\n p = i\n if ((this._bytesKey = this._key.length) === this.fieldNameSizeLimit) {\n // yep, we actually did hit the limit\n this._checkingBytes = false\n this._keyTrunc = true\n }\n } else {\n if (p < len) { this._key += this.decoder.write(data.toString('binary', p)) }\n p = len\n }\n } else {\n idxamp = undefined\n for (i = p; i < len; ++i) {\n if (!this._checkingBytes) { ++p }\n if (data[i] === 0x26/* & */) {\n idxamp = i\n break\n }\n if (this._checkingBytes && this._bytesVal === this.fieldSizeLimit) {\n this._hitLimit = true\n break\n } else if (this._checkingBytes) { ++this._bytesVal }\n }\n\n if (idxamp !== undefined) {\n ++this._fields\n if (idxamp > p) { this._val += this.decoder.write(data.toString('binary', p, idxamp)) }\n this.boy.emit('field', decodeText(this._key, 'binary', this.charset),\n decodeText(this._val, 'binary', this.charset),\n this._keyTrunc,\n this._valTrunc)\n this._state = 'key'\n\n this._hitLimit = false\n this._checkingBytes = true\n this._key = ''\n this._bytesKey = 0\n this._keyTrunc = false\n this.decoder.reset()\n\n p = idxamp + 1\n if (this._fields === this.fieldsLimit) { return cb() }\n } else if (this._hitLimit) {\n // we may not have hit the actual limit if there are encoded bytes...\n if (i > p) { this._val += this.decoder.write(data.toString('binary', p, i)) }\n p = i\n if ((this._val === '' && this.fieldSizeLimit === 0) ||\n (this._bytesVal = this._val.length) === this.fieldSizeLimit) {\n // yep, we actually did hit the limit\n this._checkingBytes = false\n this._valTrunc = true\n }\n } else {\n if (p < len) { this._val += this.decoder.write(data.toString('binary', p)) }\n p = len\n }\n }\n }\n cb()\n}\n\nUrlEncoded.prototype.end = function () {\n if (this.boy._done) { return }\n\n if (this._state === 'key' && this._key.length > 0) {\n this.boy.emit('field', decodeText(this._key, 'binary', this.charset),\n '',\n this._keyTrunc,\n false)\n } else if (this._state === 'val') {\n this.boy.emit('field', decodeText(this._key, 'binary', this.charset),\n decodeText(this._val, 'binary', this.charset),\n this._keyTrunc,\n this._valTrunc)\n }\n this.boy._done = true\n this.boy.emit('finish')\n}\n\nmodule.exports = UrlEncoded\n","'use strict'\n\nconst RE_PLUS = /\\+/g\n\nconst HEX = [\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0,\n 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0\n]\n\nfunction Decoder () {\n this.buffer = undefined\n}\nDecoder.prototype.write = function (str) {\n // Replace '+' with ' ' before decoding\n str = str.replace(RE_PLUS, ' ')\n let res = ''\n let i = 0; let p = 0; const len = str.length\n for (; i < len; ++i) {\n if (this.buffer !== undefined) {\n if (!HEX[str.charCodeAt(i)]) {\n res += '%' + this.buffer\n this.buffer = undefined\n --i // retry character\n } else {\n this.buffer += str[i]\n ++p\n if (this.buffer.length === 2) {\n res += String.fromCharCode(parseInt(this.buffer, 16))\n this.buffer = undefined\n }\n }\n } else if (str[i] === '%') {\n if (i > p) {\n res += str.substring(p, i)\n p = i\n }\n this.buffer = ''\n ++p\n }\n }\n if (p < len && this.buffer === undefined) { res += str.substring(p) }\n return res\n}\nDecoder.prototype.reset = function () {\n this.buffer = undefined\n}\n\nmodule.exports = Decoder\n","'use strict'\n\nmodule.exports = function basename (path) {\n if (typeof path !== 'string') { return '' }\n for (var i = path.length - 1; i >= 0; --i) { // eslint-disable-line no-var\n switch (path.charCodeAt(i)) {\n case 0x2F: // '/'\n case 0x5C: // '\\'\n path = path.slice(i + 1)\n return (path === '..' || path === '.' ? '' : path)\n }\n }\n return (path === '..' || path === '.' ? '' : path)\n}\n","'use strict'\n\n// Node has always utf-8\nconst utf8Decoder = new TextDecoder('utf-8')\nconst textDecoders = new Map([\n ['utf-8', utf8Decoder],\n ['utf8', utf8Decoder]\n])\n\nfunction getDecoder (charset) {\n let lc\n while (true) {\n switch (charset) {\n case 'utf-8':\n case 'utf8':\n return decoders.utf8\n case 'latin1':\n case 'ascii': // TODO: Make these a separate, strict decoder?\n case 'us-ascii':\n case 'iso-8859-1':\n case 'iso8859-1':\n case 'iso88591':\n case 'iso_8859-1':\n case 'windows-1252':\n case 'iso_8859-1:1987':\n case 'cp1252':\n case 'x-cp1252':\n return decoders.latin1\n case 'utf16le':\n case 'utf-16le':\n case 'ucs2':\n case 'ucs-2':\n return decoders.utf16le\n case 'base64':\n return decoders.base64\n default:\n if (lc === undefined) {\n lc = true\n charset = charset.toLowerCase()\n continue\n }\n return decoders.other.bind(charset)\n }\n }\n}\n\nconst decoders = {\n utf8: (data, sourceEncoding) => {\n if (data.length === 0) {\n return ''\n }\n if (typeof data === 'string') {\n data = Buffer.from(data, sourceEncoding)\n }\n return data.utf8Slice(0, data.length)\n },\n\n latin1: (data, sourceEncoding) => {\n if (data.length === 0) {\n return ''\n }\n if (typeof data === 'string') {\n return data\n }\n return data.latin1Slice(0, data.length)\n },\n\n utf16le: (data, sourceEncoding) => {\n if (data.length === 0) {\n return ''\n }\n if (typeof data === 'string') {\n data = Buffer.from(data, sourceEncoding)\n }\n return data.ucs2Slice(0, data.length)\n },\n\n base64: (data, sourceEncoding) => {\n if (data.length === 0) {\n return ''\n }\n if (typeof data === 'string') {\n data = Buffer.from(data, sourceEncoding)\n }\n return data.base64Slice(0, data.length)\n },\n\n other: (data, sourceEncoding) => {\n if (data.length === 0) {\n return ''\n }\n if (typeof data === 'string') {\n data = Buffer.from(data, sourceEncoding)\n }\n\n if (textDecoders.has(this.toString())) {\n try {\n return textDecoders.get(this).decode(data)\n } catch {}\n }\n return typeof data === 'string'\n ? data\n : data.toString()\n }\n}\n\nfunction decodeText (text, sourceEncoding, destEncoding) {\n if (text) {\n return getDecoder(destEncoding)(text, sourceEncoding)\n }\n return text\n}\n\nmodule.exports = decodeText\n","'use strict'\n\nmodule.exports = function getLimit (limits, name, defaultLimit) {\n if (\n !limits ||\n limits[name] === undefined ||\n limits[name] === null\n ) { return defaultLimit }\n\n if (\n typeof limits[name] !== 'number' ||\n isNaN(limits[name])\n ) { throw new TypeError('Limit ' + name + ' is not a valid number') }\n\n return limits[name]\n}\n","/* eslint-disable object-property-newline */\n'use strict'\n\nconst decodeText = require('./decodeText')\n\nconst RE_ENCODED = /%[a-fA-F0-9][a-fA-F0-9]/g\n\nconst EncodedLookup = {\n '%00': '\\x00', '%01': '\\x01', '%02': '\\x02', '%03': '\\x03', '%04': '\\x04',\n '%05': '\\x05', '%06': '\\x06', '%07': '\\x07', '%08': '\\x08', '%09': '\\x09',\n '%0a': '\\x0a', '%0A': '\\x0a', '%0b': '\\x0b', '%0B': '\\x0b', '%0c': '\\x0c',\n '%0C': '\\x0c', '%0d': '\\x0d', '%0D': '\\x0d', '%0e': '\\x0e', '%0E': '\\x0e',\n '%0f': '\\x0f', '%0F': '\\x0f', '%10': '\\x10', '%11': '\\x11', '%12': '\\x12',\n '%13': '\\x13', '%14': '\\x14', '%15': '\\x15', '%16': '\\x16', '%17': '\\x17',\n '%18': '\\x18', '%19': '\\x19', '%1a': '\\x1a', '%1A': '\\x1a', '%1b': '\\x1b',\n '%1B': '\\x1b', '%1c': '\\x1c', '%1C': '\\x1c', '%1d': '\\x1d', '%1D': '\\x1d',\n '%1e': '\\x1e', '%1E': '\\x1e', '%1f': '\\x1f', '%1F': '\\x1f', '%20': '\\x20',\n '%21': '\\x21', '%22': '\\x22', '%23': '\\x23', '%24': '\\x24', '%25': '\\x25',\n '%26': '\\x26', '%27': '\\x27', '%28': '\\x28', '%29': '\\x29', '%2a': '\\x2a',\n '%2A': '\\x2a', '%2b': '\\x2b', '%2B': '\\x2b', '%2c': '\\x2c', '%2C': '\\x2c',\n '%2d': '\\x2d', '%2D': '\\x2d', '%2e': '\\x2e', '%2E': '\\x2e', '%2f': '\\x2f',\n '%2F': '\\x2f', '%30': '\\x30', '%31': '\\x31', '%32': '\\x32', '%33': '\\x33',\n '%34': '\\x34', '%35': '\\x35', '%36': '\\x36', '%37': '\\x37', '%38': '\\x38',\n '%39': '\\x39', '%3a': '\\x3a', '%3A': '\\x3a', '%3b': '\\x3b', '%3B': '\\x3b',\n '%3c': '\\x3c', '%3C': '\\x3c', '%3d': '\\x3d', '%3D': '\\x3d', '%3e': '\\x3e',\n '%3E': '\\x3e', '%3f': '\\x3f', '%3F': '\\x3f', '%40': '\\x40', '%41': '\\x41',\n '%42': '\\x42', '%43': '\\x43', '%44': '\\x44', '%45': '\\x45', '%46': '\\x46',\n '%47': '\\x47', '%48': '\\x48', '%49': '\\x49', '%4a': '\\x4a', '%4A': '\\x4a',\n '%4b': '\\x4b', '%4B': '\\x4b', '%4c': '\\x4c', '%4C': '\\x4c', '%4d': '\\x4d',\n '%4D': '\\x4d', '%4e': '\\x4e', '%4E': '\\x4e', '%4f': '\\x4f', '%4F': '\\x4f',\n '%50': '\\x50', '%51': '\\x51', '%52': '\\x52', '%53': '\\x53', '%54': '\\x54',\n '%55': '\\x55', '%56': '\\x56', '%57': '\\x57', '%58': '\\x58', '%59': '\\x59',\n '%5a': '\\x5a', '%5A': '\\x5a', '%5b': '\\x5b', '%5B': '\\x5b', '%5c': '\\x5c',\n '%5C': '\\x5c', '%5d': '\\x5d', '%5D': '\\x5d', '%5e': '\\x5e', '%5E': '\\x5e',\n '%5f': '\\x5f', '%5F': '\\x5f', '%60': '\\x60', '%61': '\\x61', '%62': '\\x62',\n '%63': '\\x63', '%64': '\\x64', '%65': '\\x65', '%66': '\\x66', '%67': '\\x67',\n '%68': '\\x68', '%69': '\\x69', '%6a': '\\x6a', '%6A': '\\x6a', '%6b': '\\x6b',\n '%6B': '\\x6b', '%6c': '\\x6c', '%6C': '\\x6c', '%6d': '\\x6d', '%6D': '\\x6d',\n '%6e': '\\x6e', '%6E': '\\x6e', '%6f': '\\x6f', '%6F': '\\x6f', '%70': '\\x70',\n '%71': '\\x71', '%72': '\\x72', '%73': '\\x73', '%74': '\\x74', '%75': '\\x75',\n '%76': '\\x76', '%77': '\\x77', '%78': '\\x78', '%79': '\\x79', '%7a': '\\x7a',\n '%7A': '\\x7a', '%7b': '\\x7b', '%7B': '\\x7b', '%7c': '\\x7c', '%7C': '\\x7c',\n '%7d': '\\x7d', '%7D': '\\x7d', '%7e': '\\x7e', '%7E': '\\x7e', '%7f': '\\x7f',\n '%7F': '\\x7f', '%80': '\\x80', '%81': '\\x81', '%82': '\\x82', '%83': '\\x83',\n '%84': '\\x84', '%85': '\\x85', '%86': '\\x86', '%87': '\\x87', '%88': '\\x88',\n '%89': '\\x89', '%8a': '\\x8a', '%8A': '\\x8a', '%8b': '\\x8b', '%8B': '\\x8b',\n '%8c': '\\x8c', '%8C': '\\x8c', '%8d': '\\x8d', '%8D': '\\x8d', '%8e': '\\x8e',\n '%8E': '\\x8e', '%8f': '\\x8f', '%8F': '\\x8f', '%90': '\\x90', '%91': '\\x91',\n '%92': '\\x92', '%93': '\\x93', '%94': '\\x94', '%95': '\\x95', '%96': '\\x96',\n '%97': '\\x97', '%98': '\\x98', '%99': '\\x99', '%9a': '\\x9a', '%9A': '\\x9a',\n '%9b': '\\x9b', '%9B': '\\x9b', '%9c': '\\x9c', '%9C': '\\x9c', '%9d': '\\x9d',\n '%9D': '\\x9d', '%9e': '\\x9e', '%9E': '\\x9e', '%9f': '\\x9f', '%9F': '\\x9f',\n '%a0': '\\xa0', '%A0': '\\xa0', '%a1': '\\xa1', '%A1': '\\xa1', '%a2': '\\xa2',\n '%A2': '\\xa2', '%a3': '\\xa3', '%A3': '\\xa3', '%a4': '\\xa4', '%A4': '\\xa4',\n '%a5': '\\xa5', '%A5': '\\xa5', '%a6': '\\xa6', '%A6': '\\xa6', '%a7': '\\xa7',\n '%A7': '\\xa7', '%a8': '\\xa8', '%A8': '\\xa8', '%a9': '\\xa9', '%A9': '\\xa9',\n '%aa': '\\xaa', '%Aa': '\\xaa', '%aA': '\\xaa', '%AA': '\\xaa', '%ab': '\\xab',\n '%Ab': '\\xab', '%aB': '\\xab', '%AB': '\\xab', '%ac': '\\xac', '%Ac': '\\xac',\n '%aC': '\\xac', '%AC': '\\xac', '%ad': '\\xad', '%Ad': '\\xad', '%aD': '\\xad',\n '%AD': '\\xad', '%ae': '\\xae', '%Ae': '\\xae', '%aE': '\\xae', '%AE': '\\xae',\n '%af': '\\xaf', '%Af': '\\xaf', '%aF': '\\xaf', '%AF': '\\xaf', '%b0': '\\xb0',\n '%B0': '\\xb0', '%b1': '\\xb1', '%B1': '\\xb1', '%b2': '\\xb2', '%B2': '\\xb2',\n '%b3': '\\xb3', '%B3': '\\xb3', '%b4': '\\xb4', '%B4': '\\xb4', '%b5': '\\xb5',\n '%B5': '\\xb5', '%b6': '\\xb6', '%B6': '\\xb6', '%b7': '\\xb7', '%B7': '\\xb7',\n '%b8': '\\xb8', '%B8': '\\xb8', '%b9': '\\xb9', '%B9': '\\xb9', '%ba': '\\xba',\n '%Ba': '\\xba', '%bA': '\\xba', '%BA': '\\xba', '%bb': '\\xbb', '%Bb': '\\xbb',\n '%bB': '\\xbb', '%BB': '\\xbb', '%bc': '\\xbc', '%Bc': '\\xbc', '%bC': '\\xbc',\n '%BC': '\\xbc', '%bd': '\\xbd', '%Bd': '\\xbd', '%bD': '\\xbd', '%BD': '\\xbd',\n '%be': '\\xbe', '%Be': '\\xbe', '%bE': '\\xbe', '%BE': '\\xbe', '%bf': '\\xbf',\n '%Bf': '\\xbf', '%bF': '\\xbf', '%BF': '\\xbf', '%c0': '\\xc0', '%C0': '\\xc0',\n '%c1': '\\xc1', '%C1': '\\xc1', '%c2': '\\xc2', '%C2': '\\xc2', '%c3': '\\xc3',\n '%C3': '\\xc3', '%c4': '\\xc4', '%C4': '\\xc4', '%c5': '\\xc5', '%C5': '\\xc5',\n '%c6': '\\xc6', '%C6': '\\xc6', '%c7': '\\xc7', '%C7': '\\xc7', '%c8': '\\xc8',\n '%C8': '\\xc8', '%c9': '\\xc9', '%C9': '\\xc9', '%ca': '\\xca', '%Ca': '\\xca',\n '%cA': '\\xca', '%CA': '\\xca', '%cb': '\\xcb', '%Cb': '\\xcb', '%cB': '\\xcb',\n '%CB': '\\xcb', '%cc': '\\xcc', '%Cc': '\\xcc', '%cC': '\\xcc', '%CC': '\\xcc',\n '%cd': '\\xcd', '%Cd': '\\xcd', '%cD': '\\xcd', '%CD': '\\xcd', '%ce': '\\xce',\n '%Ce': '\\xce', '%cE': '\\xce', '%CE': '\\xce', '%cf': '\\xcf', '%Cf': '\\xcf',\n '%cF': '\\xcf', '%CF': '\\xcf', '%d0': '\\xd0', '%D0': '\\xd0', '%d1': '\\xd1',\n '%D1': '\\xd1', '%d2': '\\xd2', '%D2': '\\xd2', '%d3': '\\xd3', '%D3': '\\xd3',\n '%d4': '\\xd4', '%D4': '\\xd4', '%d5': '\\xd5', '%D5': '\\xd5', '%d6': '\\xd6',\n '%D6': '\\xd6', '%d7': '\\xd7', '%D7': '\\xd7', '%d8': '\\xd8', '%D8': '\\xd8',\n '%d9': '\\xd9', '%D9': '\\xd9', '%da': '\\xda', '%Da': '\\xda', '%dA': '\\xda',\n '%DA': '\\xda', '%db': '\\xdb', '%Db': '\\xdb', '%dB': '\\xdb', '%DB': '\\xdb',\n '%dc': '\\xdc', '%Dc': '\\xdc', '%dC': '\\xdc', '%DC': '\\xdc', '%dd': '\\xdd',\n '%Dd': '\\xdd', '%dD': '\\xdd', '%DD': '\\xdd', '%de': '\\xde', '%De': '\\xde',\n '%dE': '\\xde', '%DE': '\\xde', '%df': '\\xdf', '%Df': '\\xdf', '%dF': '\\xdf',\n '%DF': '\\xdf', '%e0': '\\xe0', '%E0': '\\xe0', '%e1': '\\xe1', '%E1': '\\xe1',\n '%e2': '\\xe2', '%E2': '\\xe2', '%e3': '\\xe3', '%E3': '\\xe3', '%e4': '\\xe4',\n '%E4': '\\xe4', '%e5': '\\xe5', '%E5': '\\xe5', '%e6': '\\xe6', '%E6': '\\xe6',\n '%e7': '\\xe7', '%E7': '\\xe7', '%e8': '\\xe8', '%E8': '\\xe8', '%e9': '\\xe9',\n '%E9': '\\xe9', '%ea': '\\xea', '%Ea': '\\xea', '%eA': '\\xea', '%EA': '\\xea',\n '%eb': '\\xeb', '%Eb': '\\xeb', '%eB': '\\xeb', '%EB': '\\xeb', '%ec': '\\xec',\n '%Ec': '\\xec', '%eC': '\\xec', '%EC': '\\xec', '%ed': '\\xed', '%Ed': '\\xed',\n '%eD': '\\xed', '%ED': '\\xed', '%ee': '\\xee', '%Ee': '\\xee', '%eE': '\\xee',\n '%EE': '\\xee', '%ef': '\\xef', '%Ef': '\\xef', '%eF': '\\xef', '%EF': '\\xef',\n '%f0': '\\xf0', '%F0': '\\xf0', '%f1': '\\xf1', '%F1': '\\xf1', '%f2': '\\xf2',\n '%F2': '\\xf2', '%f3': '\\xf3', '%F3': '\\xf3', '%f4': '\\xf4', '%F4': '\\xf4',\n '%f5': '\\xf5', '%F5': '\\xf5', '%f6': '\\xf6', '%F6': '\\xf6', '%f7': '\\xf7',\n '%F7': '\\xf7', '%f8': '\\xf8', '%F8': '\\xf8', '%f9': '\\xf9', '%F9': '\\xf9',\n '%fa': '\\xfa', '%Fa': '\\xfa', '%fA': '\\xfa', '%FA': '\\xfa', '%fb': '\\xfb',\n '%Fb': '\\xfb', '%fB': '\\xfb', '%FB': '\\xfb', '%fc': '\\xfc', '%Fc': '\\xfc',\n '%fC': '\\xfc', '%FC': '\\xfc', '%fd': '\\xfd', '%Fd': '\\xfd', '%fD': '\\xfd',\n '%FD': '\\xfd', '%fe': '\\xfe', '%Fe': '\\xfe', '%fE': '\\xfe', '%FE': '\\xfe',\n '%ff': '\\xff', '%Ff': '\\xff', '%fF': '\\xff', '%FF': '\\xff'\n}\n\nfunction encodedReplacer (match) {\n return EncodedLookup[match]\n}\n\nconst STATE_KEY = 0\nconst STATE_VALUE = 1\nconst STATE_CHARSET = 2\nconst STATE_LANG = 3\n\nfunction parseParams (str) {\n const res = []\n let state = STATE_KEY\n let charset = ''\n let inquote = false\n let escaping = false\n let p = 0\n let tmp = ''\n const len = str.length\n\n for (var i = 0; i < len; ++i) { // eslint-disable-line no-var\n const char = str[i]\n if (char === '\\\\' && inquote) {\n if (escaping) { escaping = false } else {\n escaping = true\n continue\n }\n } else if (char === '\"') {\n if (!escaping) {\n if (inquote) {\n inquote = false\n state = STATE_KEY\n } else { inquote = true }\n continue\n } else { escaping = false }\n } else {\n if (escaping && inquote) { tmp += '\\\\' }\n escaping = false\n if ((state === STATE_CHARSET || state === STATE_LANG) && char === \"'\") {\n if (state === STATE_CHARSET) {\n state = STATE_LANG\n charset = tmp.substring(1)\n } else { state = STATE_VALUE }\n tmp = ''\n continue\n } else if (state === STATE_KEY &&\n (char === '*' || char === '=') &&\n res.length) {\n state = char === '*'\n ? STATE_CHARSET\n : STATE_VALUE\n res[p] = [tmp, undefined]\n tmp = ''\n continue\n } else if (!inquote && char === ';') {\n state = STATE_KEY\n if (charset) {\n if (tmp.length) {\n tmp = decodeText(tmp.replace(RE_ENCODED, encodedReplacer),\n 'binary',\n charset)\n }\n charset = ''\n } else if (tmp.length) {\n tmp = decodeText(tmp, 'binary', 'utf8')\n }\n if (res[p] === undefined) { res[p] = tmp } else { res[p][1] = tmp }\n tmp = ''\n ++p\n continue\n } else if (!inquote && (char === ' ' || char === '\\t')) { continue }\n }\n tmp += char\n }\n if (charset && tmp.length) {\n tmp = decodeText(tmp.replace(RE_ENCODED, encodedReplacer),\n 'binary',\n charset)\n } else if (tmp) {\n tmp = decodeText(tmp, 'binary', 'utf8')\n }\n\n if (res[p] === undefined) {\n if (tmp) { res[p] = tmp }\n } else { res[p][1] = tmp }\n\n return res\n}\n\nmodule.exports = parseParams\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\tvar threw = true;\n\ttry {\n\t\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\t\tthrew = false;\n\t} finally {\n\t\tif(threw) delete __webpack_module_cache__[moduleId];\n\t}\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","__webpack_require__.nmd = (module) => {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","\nif (typeof __webpack_require__ !== 'undefined') __webpack_require__.ab = __dirname + \"/\";","","// startup\n// Load entry module and return exports\n// This entry module is referenced by other modules so it can't be inlined\nvar __webpack_exports__ = __webpack_require__(51188);\n",""],"names":[],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"index.js","mappings":";;;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC9EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AChIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACvEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACpLA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC9BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC7PA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC/FA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACvVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC7DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC5EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC7DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC7FA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC1RA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACvCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACtGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACzmBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACtDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACxCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACrEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC1DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AChFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC3oBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC9FA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACtLA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC1SA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AClDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACrBA;AACA;AACA;;;;;;;;ACFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AClFA;AACA;AACA;;;;;;;;ACFA;AACA;AACA;;;;;;;;ACFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACnTA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC5BA;AACA;AACA;;;;;;;;ACFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACjGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACpBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACjCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC7BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACnQA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACj9BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACrYA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACdA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC1EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC/UA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC5IA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACziBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC7SA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACLA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACnDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC3DA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACNA;AACA;AACA;;;;;;;;ACFA;AACA;AACA;AACA;AACA;;;;;;;;ACJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AChEA;AACA;AACA;;;;;;;;ACFA;AACA;AACA;;;;;;;;ACFA;AACA;AACA;;;;;;;;ACFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AClBA;AACA;AACA;;;;;;;;ACFA;AACA;AACA;;;;;;;;ACFA;AACA;AACA;;;;;;;;ACFA;AACA;AACA;;;;;;;;ACFA;AACA;AACA;;;;;;;;ACFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACfA;AACA;AACA;;;;;;;;ACFA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACLA;AACA;AACA;;;;;;;;ACFA;AACA;AACA;;;;;;;;ACFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACTA;AACA;AACA;;;;;;;;ACFA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACLA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACxFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AClCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACtBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACvCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACdA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACxNA;AACA;AACA;AACA;;;;;;;;ACHA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACNA;AACA;AACA;AACA;;;;;;;;ACHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACxBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACvBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC5DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC/EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC9CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACtPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACpNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC3FA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACdA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACzHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACjfA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACxMA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC9CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC5GA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACnbA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AChaA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC7CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AChCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC7QA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACvBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AClGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC/FA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC9EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC9DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACrBA;AACA;AACA;;;;;;;;ACFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AClFA;AACA;AACA;;;;;;;;ACFA;AACA;AACA;;;;;;;;ACFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACnTA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC5BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC9CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACjBA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA2NA;;;;;;;;;ACr6WA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACjDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACjCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACnEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACjBA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAuDA;;;;;;;;;ACtgDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACjDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACvCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC/DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACjBA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA+BA;;;;;;;;;AC3hCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACjDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACvCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACnEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACjBA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAuBA;;;;;;;;;AClmBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC/CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACvCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACjDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC1CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AClEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACnBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACjBA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAkCA;;;;;;;;;ACz6CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC/DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACvCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACxBA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACLA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC1DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AChSA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACxNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAIA;;;;;;;;;AC/RA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AASA;;;;;;;;;ACzEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC7CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AClEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACrDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AChBA;AACA;AACA;AACA;AACA;;;;;;;;;ACJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAGA;;;;;;;;;ACtPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAKA;;;;;;;;;ACzJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAGA;;;;;;;;;AC1GA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAKA;;;;;;;;;ACzOA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC1BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AChDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAIA;;;;;;;;;AC3BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACxBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACRA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACLA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACPA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACLA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AChEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AClBA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACLA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAMA;;;;;;;;;ACtEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAKA;;;;;;;;;AC/EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAKA;;;;;;;;;ACnEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAOA;;;;;;;;;AClLA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AASA;;;;;;;;;ACnHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAKA;;;;;;;;;AChNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAUA;;;;;;;;;AChaA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAQA;;;;;;;;;ACrGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACrKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACpHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACpBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AChEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC9GA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC1DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC5EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AChKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACvXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACrJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACxYA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACjnEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACzFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC7NA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAkBA;;;;;;;;AC1OA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAwBA;;;;;;;;AC9eA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAYA;;;;;;;;ACpJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAaA;;;;;;;;AC7bA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAKA;;;;;;;;AC9PA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAGA;;;;;;;;ACjEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAGA;;;;;;;;AC/BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAKA;;;;;;;;;ACtEA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AClCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AASA;;;;;;;;AClRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAoBA;;;;;;;;;ACxaA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAOA;;;;;;;;ACrGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAGA;;;;;;;;AChUA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAGA;;;;;;;;ACxGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAMA;;;;;;;;ACpxBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAQA;;;;;;;;ACvKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AASA;;;;;;;;AClQA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAYA;;;;;;;;ACpJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAGA;;;;;;;;ACnDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAGA;;;;;;;;ACpDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAQA;;;;;;;;;ACjGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACzBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAYA;;;;;;;;;AC7MA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAYA;;;;;;;;ACpJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAWA;;;;;;;;AC/jBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAgEA;;;;;;;;ACzzCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAYA;;;;;;;;ACpJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAGA;;;;;;;;;AChDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACfA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAIA;;;;;;;;;AC1BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AClBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAGA;;;;;;;;ACpDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAIA;;;;;;;;AC9CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAKA;;;;;;;;AC/DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAGA;;;;;;;;ACtHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAQA;;;;;;;;ACjiBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAYA;;;;;;;;ACpJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAIA;;;;;;;;AClEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAIA;;;;;;;;AC5CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAYA;;;;;;;;ACpJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAkBA;;;;;;;;;AC3VA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC7BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACnCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC7CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAQA;;;;;;;;;AC9FA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACpEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACvDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AChBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAIA;;;;;;;;AC1CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAKA;;;;;;;;AChEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAMA;;;;;;;;;AC/JA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;ACTA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AClKA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACLA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC5DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC7CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC1BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AClBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACpOA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACrIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACtCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACt0BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AChFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AChGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACvJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACnBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC/BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACzCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC5CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACrWA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACpCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACxCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AClKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC7FA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACxCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC3GA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACzOA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC7OA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACnRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACpmBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACtKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC9DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC/BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACxDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACvBA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACLA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC7CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACvEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACxaA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACxRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACtIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACvJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC/CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACxlBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACzDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AChHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACxBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AChKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AChLA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACtCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACjEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACtBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC/DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACpGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACjCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AClEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC3IA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACfA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACfA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACbA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC1BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACpBA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACtDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC1DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC9BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AChBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC7JA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACnCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACtBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC/bA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACrHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AClWA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACjDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACvFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACbA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACvnBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACzCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACtGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC9CA;AACA;AACA;AACA;;;;;;;;ACHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC3HA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACtIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC/CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC3DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACnBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACnCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACTA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACzCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACzBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACzEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACzMA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AClDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACxBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC9BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACroFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACxGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACpBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC5BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACjBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC1CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC7DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACnDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACtBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC9FA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC/BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACvBA;AACA;AACA;;;;;;;;ACFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACrIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC1BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC7CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC/BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AChCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC1BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACzCA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC5aA;;;;;;;;;ACAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACvQA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACtKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACnJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACrDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACvGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACxPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACnLA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC3NA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACxGA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACjUA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC7CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC7LA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACr0BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC/IA;AACA;AACA;AACA;AACA;;;;;;;;;ACJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AChDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC1uEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC/CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACvLA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC5TA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AClSA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC5LA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACrHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACrOA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AClfA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC9DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACzgBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC/LA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AClBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC5lBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACtJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AClnBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACvVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACxQA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACvCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC5kBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACnmEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACj7BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC1jBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACTA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACvnCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACroBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACjSA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACvVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC7EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACTA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACvYA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC/BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AClCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC5NA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC/UA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACpBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACrRA;;;;;;;;ACAA;;;;;;;;;ACAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACdA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC1KA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC1DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AChBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC7MA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC1DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACtBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC9VA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACvCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC5BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACpHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACjMA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACjCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC7FA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC5LA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AChGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AClSA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AClDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC9SA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACxEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACvVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACvMA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AChoBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACjBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACvBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC9EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACtBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACdA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC5CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACvBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACtBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC3CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC1GA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACfA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC/EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC1CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACfA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AChBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACpBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AChCA;;;;;;;;ACAA;;;;;;;;ACAA;;;;;;;;ACAA;;;;;;;;ACAA;;;;;;;;ACAA;;;;;;;;ACAA;;;;;;;;ACAA;;;;;;;;ACAA;;;;;;;;ACAA;;;;;;;;ACAA;;;;;;;;ACAA;;;;;;;;ACAA;;;;;;;;ACAA;;;;;;;;ACAA;;;;;;;;ACAA;;;;;;;;ACAA;;;;;;;;ACAA;;;;;;;;ACAA;;;;;;;;ACAA;;;;;;;;ACAA;;;;;;;;ACAA;;;;;;;;ACAA;;;;;;;;ACAA;;;;;;;;ACAA;;;;;;;;ACAA;;;;;;;;ACAA;;;;;;;;ACAA;;;;;;;;ACAA;;;;;;;;ACAA;;;;;;;;ACAA;;;;;;;;ACAA;;;;;;;;ACAA;;;;;;;;ACAA;;;;;;;;ACAA;;;;;;;;ACAA;;;;;;;;ACAA;;;;;;;;ACAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACpNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACnGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACnOA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACpFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACjTA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC7LA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACrDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACbA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACjHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACfA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACnMA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;AChCA;AACA;AACA;AACA;AACA;;;;ACJA;AACA;;;;AEDA;AACA;AACA;AACA","sources":[".././lib/action.js",".././lib/assembly.js",".././lib/comment.js",".././lib/diff.js",".././lib/index.js",".././lib/stage-processor.js",".././node_modules/@actions/core/lib/command.js",".././node_modules/@actions/core/lib/core.js",".././node_modules/@actions/core/lib/file-command.js",".././node_modules/@actions/core/lib/oidc-utils.js",".././node_modules/@actions/core/lib/path-utils.js",".././node_modules/@actions/core/lib/platform.js",".././node_modules/@actions/core/lib/summary.js",".././node_modules/@actions/core/lib/utils.js",".././node_modules/@actions/exec/lib/exec.js",".././node_modules/@actions/exec/lib/toolrunner.js",".././node_modules/@actions/github/lib/context.js",".././node_modules/@actions/github/lib/github.js",".././node_modules/@actions/github/lib/internal/utils.js",".././node_modules/@actions/github/lib/utils.js",".././node_modules/@actions/http-client/lib/auth.js",".././node_modules/@actions/http-client/lib/index.js",".././node_modules/@actions/http-client/lib/proxy.js",".././node_modules/@actions/io/lib/io-util.js",".././node_modules/@actions/io/lib/io.js",".././node_modules/@aws-cdk/aws-service-spec/lib/index.js",".././node_modules/@aws-cdk/aws-service-spec/node_modules/@aws-cdk/service-spec-types/lib/index.js",".././node_modules/@aws-cdk/aws-service-spec/node_modules/@aws-cdk/service-spec-types/lib/types/augmentations.js",".././node_modules/@aws-cdk/aws-service-spec/node_modules/@aws-cdk/service-spec-types/lib/types/database.js",".././node_modules/@aws-cdk/aws-service-spec/node_modules/@aws-cdk/service-spec-types/lib/types/diff.js",".././node_modules/@aws-cdk/aws-service-spec/node_modules/@aws-cdk/service-spec-types/lib/types/metrics.js",".././node_modules/@aws-cdk/aws-service-spec/node_modules/@aws-cdk/service-spec-types/lib/types/resource.js",".././node_modules/@aws-cdk/aws-service-spec/node_modules/@aws-cdk/service-spec-types/lib/util/sorting.js",".././node_modules/@aws-cdk/cloud-assembly-schema/lib/cloud-assembly/artifact-schema.js",".././node_modules/@aws-cdk/cloud-assembly-schema/lib/cloud-assembly/context-queries.js",".././node_modules/@aws-cdk/cloud-assembly-schema/lib/cloud-assembly/index.js",".././node_modules/@aws-cdk/cloud-assembly-schema/lib/cloud-assembly/metadata-schema.js",".././node_modules/@aws-cdk/cloud-assembly-schema/lib/cloud-assembly/schema.js",".././node_modules/@aws-cdk/cloud-assembly-schema/lib/manifest.js",".././node_modules/@aws-cdk/cloud-assembly-schema/node_modules/jsonschema/lib/attribute.js",".././node_modules/@aws-cdk/cloud-assembly-schema/node_modules/jsonschema/lib/helpers.js",".././node_modules/@aws-cdk/cloud-assembly-schema/node_modules/jsonschema/lib/index.js",".././node_modules/@aws-cdk/cloud-assembly-schema/node_modules/jsonschema/lib/scan.js",".././node_modules/@aws-cdk/cloud-assembly-schema/node_modules/jsonschema/lib/validator.js",".././node_modules/@aws-cdk/cloud-assembly-schema/node_modules/semver/classes/comparator.js",".././node_modules/@aws-cdk/cloud-assembly-schema/node_modules/semver/classes/range.js",".././node_modules/@aws-cdk/cloud-assembly-schema/node_modules/semver/classes/semver.js",".././node_modules/@aws-cdk/cloud-assembly-schema/node_modules/semver/functions/clean.js",".././node_modules/@aws-cdk/cloud-assembly-schema/node_modules/semver/functions/cmp.js",".././node_modules/@aws-cdk/cloud-assembly-schema/node_modules/semver/functions/coerce.js",".././node_modules/@aws-cdk/cloud-assembly-schema/node_modules/semver/functions/compare-build.js",".././node_modules/@aws-cdk/cloud-assembly-schema/node_modules/semver/functions/compare-loose.js",".././node_modules/@aws-cdk/cloud-assembly-schema/node_modules/semver/functions/compare.js",".././node_modules/@aws-cdk/cloud-assembly-schema/node_modules/semver/functions/diff.js",".././node_modules/@aws-cdk/cloud-assembly-schema/node_modules/semver/functions/eq.js",".././node_modules/@aws-cdk/cloud-assembly-schema/node_modules/semver/functions/gt.js",".././node_modules/@aws-cdk/cloud-assembly-schema/node_modules/semver/functions/gte.js",".././node_modules/@aws-cdk/cloud-assembly-schema/node_modules/semver/functions/inc.js",".././node_modules/@aws-cdk/cloud-assembly-schema/node_modules/semver/functions/lt.js",".././node_modules/@aws-cdk/cloud-assembly-schema/node_modules/semver/functions/lte.js",".././node_modules/@aws-cdk/cloud-assembly-schema/node_modules/semver/functions/major.js",".././node_modules/@aws-cdk/cloud-assembly-schema/node_modules/semver/functions/minor.js",".././node_modules/@aws-cdk/cloud-assembly-schema/node_modules/semver/functions/neq.js",".././node_modules/@aws-cdk/cloud-assembly-schema/node_modules/semver/functions/parse.js",".././node_modules/@aws-cdk/cloud-assembly-schema/node_modules/semver/functions/patch.js",".././node_modules/@aws-cdk/cloud-assembly-schema/node_modules/semver/functions/prerelease.js",".././node_modules/@aws-cdk/cloud-assembly-schema/node_modules/semver/functions/rcompare.js",".././node_modules/@aws-cdk/cloud-assembly-schema/node_modules/semver/functions/rsort.js",".././node_modules/@aws-cdk/cloud-assembly-schema/node_modules/semver/functions/satisfies.js",".././node_modules/@aws-cdk/cloud-assembly-schema/node_modules/semver/functions/sort.js",".././node_modules/@aws-cdk/cloud-assembly-schema/node_modules/semver/functions/valid.js",".././node_modules/@aws-cdk/cloud-assembly-schema/node_modules/semver/index.js",".././node_modules/@aws-cdk/cloud-assembly-schema/node_modules/semver/internal/constants.js",".././node_modules/@aws-cdk/cloud-assembly-schema/node_modules/semver/internal/debug.js",".././node_modules/@aws-cdk/cloud-assembly-schema/node_modules/semver/internal/identifiers.js",".././node_modules/@aws-cdk/cloud-assembly-schema/node_modules/semver/internal/lrucache.js",".././node_modules/@aws-cdk/cloud-assembly-schema/node_modules/semver/internal/parse-options.js",".././node_modules/@aws-cdk/cloud-assembly-schema/node_modules/semver/internal/re.js",".././node_modules/@aws-cdk/cloud-assembly-schema/node_modules/semver/ranges/gtr.js",".././node_modules/@aws-cdk/cloud-assembly-schema/node_modules/semver/ranges/intersects.js",".././node_modules/@aws-cdk/cloud-assembly-schema/node_modules/semver/ranges/ltr.js",".././node_modules/@aws-cdk/cloud-assembly-schema/node_modules/semver/ranges/max-satisfying.js",".././node_modules/@aws-cdk/cloud-assembly-schema/node_modules/semver/ranges/min-satisfying.js",".././node_modules/@aws-cdk/cloud-assembly-schema/node_modules/semver/ranges/min-version.js",".././node_modules/@aws-cdk/cloud-assembly-schema/node_modules/semver/ranges/outside.js",".././node_modules/@aws-cdk/cloud-assembly-schema/node_modules/semver/ranges/simplify.js",".././node_modules/@aws-cdk/cloud-assembly-schema/node_modules/semver/ranges/subset.js",".././node_modules/@aws-cdk/cloud-assembly-schema/node_modules/semver/ranges/to-comparators.js",".././node_modules/@aws-cdk/cloud-assembly-schema/node_modules/semver/ranges/valid.js",".././node_modules/@aws-cdk/cloudformation-diff/lib/diff-template.js",".././node_modules/@aws-cdk/cloudformation-diff/lib/diff/index.js",".././node_modules/@aws-cdk/cloudformation-diff/lib/diff/maybe-parsed.js",".././node_modules/@aws-cdk/cloudformation-diff/lib/diff/template-and-changeset-diff-merger.js",".././node_modules/@aws-cdk/cloudformation-diff/lib/diff/types.js",".././node_modules/@aws-cdk/cloudformation-diff/lib/diff/util.js",".././node_modules/@aws-cdk/cloudformation-diff/lib/diffable.js",".././node_modules/@aws-cdk/cloudformation-diff/lib/format-table.js",".././node_modules/@aws-cdk/cloudformation-diff/lib/format.js",".././node_modules/@aws-cdk/cloudformation-diff/lib/iam/iam-changes.js",".././node_modules/@aws-cdk/cloudformation-diff/lib/iam/iam-identity-center.js",".././node_modules/@aws-cdk/cloudformation-diff/lib/iam/managed-policy.js",".././node_modules/@aws-cdk/cloudformation-diff/lib/iam/statement.js",".././node_modules/@aws-cdk/cloudformation-diff/lib/index.js",".././node_modules/@aws-cdk/cloudformation-diff/lib/network/security-group-changes.js",".././node_modules/@aws-cdk/cloudformation-diff/lib/network/security-group-rule.js",".././node_modules/@aws-cdk/cloudformation-diff/lib/render-intrinsics.js",".././node_modules/@aws-cdk/cloudformation-diff/lib/util.js",".././node_modules/@aws-cdk/service-spec-types/lib/index.js",".././node_modules/@aws-cdk/service-spec-types/lib/types/augmentations.js",".././node_modules/@aws-cdk/service-spec-types/lib/types/database.js",".././node_modules/@aws-cdk/service-spec-types/lib/types/diff.js",".././node_modules/@aws-cdk/service-spec-types/lib/types/metrics.js",".././node_modules/@aws-cdk/service-spec-types/lib/types/resource.js",".././node_modules/@aws-cdk/service-spec-types/lib/util/sorting.js",".././node_modules/@aws-sdk/client-cloudformation/dist-cjs/auth/httpAuthSchemeProvider.js",".././node_modules/@aws-sdk/client-cloudformation/dist-cjs/endpoint/endpointResolver.js",".././node_modules/@aws-sdk/client-cloudformation/dist-cjs/endpoint/ruleset.js",".././node_modules/@aws-sdk/client-cloudformation/dist-cjs/index.js",".././node_modules/@aws-sdk/client-cloudformation/dist-cjs/runtimeConfig.js",".././node_modules/@aws-sdk/client-cloudformation/dist-cjs/runtimeConfig.shared.js",".././node_modules/@aws-sdk/client-cognito-identity/dist-cjs/auth/httpAuthSchemeProvider.js",".././node_modules/@aws-sdk/client-cognito-identity/dist-cjs/endpoint/endpointResolver.js",".././node_modules/@aws-sdk/client-cognito-identity/dist-cjs/endpoint/ruleset.js",".././node_modules/@aws-sdk/client-cognito-identity/dist-cjs/index.js",".././node_modules/@aws-sdk/client-cognito-identity/dist-cjs/runtimeConfig.js",".././node_modules/@aws-sdk/client-cognito-identity/dist-cjs/runtimeConfig.shared.js",".././node_modules/@aws-sdk/client-sso-oidc/dist-cjs/auth/httpAuthSchemeProvider.js",".././node_modules/@aws-sdk/client-sso-oidc/dist-cjs/endpoint/endpointResolver.js",".././node_modules/@aws-sdk/client-sso-oidc/dist-cjs/endpoint/ruleset.js",".././node_modules/@aws-sdk/client-sso-oidc/dist-cjs/index.js",".././node_modules/@aws-sdk/client-sso-oidc/dist-cjs/runtimeConfig.js",".././node_modules/@aws-sdk/client-sso-oidc/dist-cjs/runtimeConfig.shared.js",".././node_modules/@aws-sdk/client-sso/dist-cjs/auth/httpAuthSchemeProvider.js",".././node_modules/@aws-sdk/client-sso/dist-cjs/endpoint/endpointResolver.js",".././node_modules/@aws-sdk/client-sso/dist-cjs/endpoint/ruleset.js",".././node_modules/@aws-sdk/client-sso/dist-cjs/index.js",".././node_modules/@aws-sdk/client-sso/dist-cjs/runtimeConfig.js",".././node_modules/@aws-sdk/client-sso/dist-cjs/runtimeConfig.shared.js",".././node_modules/@aws-sdk/client-sts/dist-cjs/STSClient.js",".././node_modules/@aws-sdk/client-sts/dist-cjs/auth/httpAuthExtensionConfiguration.js",".././node_modules/@aws-sdk/client-sts/dist-cjs/auth/httpAuthSchemeProvider.js",".././node_modules/@aws-sdk/client-sts/dist-cjs/endpoint/EndpointParameters.js",".././node_modules/@aws-sdk/client-sts/dist-cjs/endpoint/endpointResolver.js",".././node_modules/@aws-sdk/client-sts/dist-cjs/endpoint/ruleset.js",".././node_modules/@aws-sdk/client-sts/dist-cjs/index.js",".././node_modules/@aws-sdk/client-sts/dist-cjs/runtimeConfig.js",".././node_modules/@aws-sdk/client-sts/dist-cjs/runtimeConfig.shared.js",".././node_modules/@aws-sdk/client-sts/dist-cjs/runtimeExtensions.js",".././node_modules/@aws-sdk/core/dist-cjs/index.js",".././node_modules/@aws-sdk/core/dist-cjs/submodules/client/index.js",".././node_modules/@aws-sdk/core/dist-cjs/submodules/httpAuthSchemes/index.js",".././node_modules/@aws-sdk/core/dist-cjs/submodules/protocols/index.js",".././node_modules/@aws-sdk/credential-provider-cognito-identity/dist-cjs/index.js",".././node_modules/@aws-sdk/credential-provider-env/dist-cjs/index.js",".././node_modules/@aws-sdk/credential-provider-http/dist-cjs/fromHttp/checkUrl.js",".././node_modules/@aws-sdk/credential-provider-http/dist-cjs/fromHttp/fromHttp.js",".././node_modules/@aws-sdk/credential-provider-http/dist-cjs/fromHttp/requestHelpers.js",".././node_modules/@aws-sdk/credential-provider-http/dist-cjs/fromHttp/retry-wrapper.js",".././node_modules/@aws-sdk/credential-provider-http/dist-cjs/index.js",".././node_modules/@aws-sdk/credential-provider-ini/dist-cjs/index.js",".././node_modules/@aws-sdk/credential-provider-node/dist-cjs/index.js",".././node_modules/@aws-sdk/credential-provider-process/dist-cjs/index.js",".././node_modules/@aws-sdk/credential-provider-sso/dist-cjs/index.js",".././node_modules/@aws-sdk/credential-provider-web-identity/dist-cjs/fromTokenFile.js",".././node_modules/@aws-sdk/credential-provider-web-identity/dist-cjs/fromWebToken.js",".././node_modules/@aws-sdk/credential-provider-web-identity/dist-cjs/index.js",".././node_modules/@aws-sdk/credential-providers/dist-cjs/createCredentialChain.js",".././node_modules/@aws-sdk/credential-providers/dist-cjs/fromCognitoIdentity.js",".././node_modules/@aws-sdk/credential-providers/dist-cjs/fromCognitoIdentityPool.js",".././node_modules/@aws-sdk/credential-providers/dist-cjs/fromContainerMetadata.js",".././node_modules/@aws-sdk/credential-providers/dist-cjs/fromEnv.js",".././node_modules/@aws-sdk/credential-providers/dist-cjs/fromIni.js",".././node_modules/@aws-sdk/credential-providers/dist-cjs/fromInstanceMetadata.js",".././node_modules/@aws-sdk/credential-providers/dist-cjs/fromNodeProviderChain.js",".././node_modules/@aws-sdk/credential-providers/dist-cjs/fromProcess.js",".././node_modules/@aws-sdk/credential-providers/dist-cjs/fromSSO.js",".././node_modules/@aws-sdk/credential-providers/dist-cjs/fromTemporaryCredentials.js",".././node_modules/@aws-sdk/credential-providers/dist-cjs/fromTokenFile.js",".././node_modules/@aws-sdk/credential-providers/dist-cjs/fromWebToken.js",".././node_modules/@aws-sdk/credential-providers/dist-cjs/index.js",".././node_modules/@aws-sdk/credential-providers/dist-cjs/loadSts.js",".././node_modules/@aws-sdk/middleware-host-header/dist-cjs/index.js",".././node_modules/@aws-sdk/middleware-logger/dist-cjs/index.js",".././node_modules/@aws-sdk/middleware-recursion-detection/dist-cjs/index.js",".././node_modules/@aws-sdk/middleware-user-agent/dist-cjs/index.js",".././node_modules/@aws-sdk/region-config-resolver/dist-cjs/index.js",".././node_modules/@aws-sdk/token-providers/dist-cjs/index.js",".././node_modules/@aws-sdk/util-endpoints/dist-cjs/index.js",".././node_modules/@aws-sdk/util-user-agent-node/dist-cjs/index.js",".././node_modules/@cdklabs/tskb/lib/database.js",".././node_modules/@cdklabs/tskb/lib/entity.js",".././node_modules/@cdklabs/tskb/lib/index.js",".././node_modules/@cdklabs/tskb/lib/invariant.js",".././node_modules/@cdklabs/tskb/lib/relationship.js",".././node_modules/@cdklabs/tskb/lib/result.js",".././node_modules/@cdklabs/tskb/lib/sorted-map.js",".././node_modules/@octokit/auth-token/dist-node/index.js",".././node_modules/@octokit/core/dist-node/index.js",".././node_modules/@octokit/endpoint/dist-node/index.js",".././node_modules/@octokit/graphql/dist-node/index.js",".././node_modules/@octokit/plugin-paginate-rest/dist-node/index.js",".././node_modules/@octokit/plugin-rest-endpoint-methods/dist-node/index.js",".././node_modules/@octokit/request-error/dist-node/index.js",".././node_modules/@octokit/request/dist-node/index.js",".././node_modules/@smithy/config-resolver/dist-cjs/index.js",".././node_modules/@smithy/core/dist-cjs/index.js",".././node_modules/@smithy/core/node_modules/@smithy/types/dist-cjs/index.js",".././node_modules/@smithy/credential-provider-imds/dist-cjs/index.js",".././node_modules/@smithy/fetch-http-handler/dist-cjs/index.js",".././node_modules/@smithy/hash-node/dist-cjs/index.js",".././node_modules/@smithy/is-array-buffer/dist-cjs/index.js",".././node_modules/@smithy/middleware-content-length/dist-cjs/index.js",".././node_modules/@smithy/middleware-endpoint/dist-cjs/adaptors/getEndpointFromConfig.js",".././node_modules/@smithy/middleware-endpoint/dist-cjs/adaptors/getEndpointUrlConfig.js",".././node_modules/@smithy/middleware-endpoint/dist-cjs/index.js",".././node_modules/@smithy/middleware-retry/dist-cjs/index.js",".././node_modules/@smithy/middleware-retry/dist-cjs/isStreamingPayload/isStreamingPayload.js",".././node_modules/@smithy/middleware-serde/dist-cjs/index.js",".././node_modules/@smithy/middleware-stack/dist-cjs/index.js",".././node_modules/@smithy/node-config-provider/dist-cjs/index.js",".././node_modules/@smithy/node-http-handler/dist-cjs/index.js",".././node_modules/@smithy/property-provider/dist-cjs/index.js",".././node_modules/@smithy/protocol-http/dist-cjs/index.js",".././node_modules/@smithy/protocol-http/node_modules/@smithy/types/dist-cjs/index.js",".././node_modules/@smithy/querystring-builder/dist-cjs/index.js",".././node_modules/@smithy/querystring-parser/dist-cjs/index.js",".././node_modules/@smithy/service-error-classification/dist-cjs/index.js",".././node_modules/@smithy/shared-ini-file-loader/dist-cjs/getHomeDir.js",".././node_modules/@smithy/shared-ini-file-loader/dist-cjs/getSSOTokenFilepath.js",".././node_modules/@smithy/shared-ini-file-loader/dist-cjs/getSSOTokenFromFile.js",".././node_modules/@smithy/shared-ini-file-loader/dist-cjs/index.js",".././node_modules/@smithy/shared-ini-file-loader/dist-cjs/slurpFile.js",".././node_modules/@smithy/shared-ini-file-loader/node_modules/@smithy/types/dist-cjs/index.js",".././node_modules/@smithy/signature-v4/dist-cjs/index.js",".././node_modules/@smithy/smithy-client/dist-cjs/index.js",".././node_modules/@smithy/smithy-client/node_modules/@smithy/types/dist-cjs/index.js",".././node_modules/@smithy/url-parser/dist-cjs/index.js",".././node_modules/@smithy/util-base64/dist-cjs/fromBase64.js",".././node_modules/@smithy/util-base64/dist-cjs/index.js",".././node_modules/@smithy/util-base64/dist-cjs/toBase64.js",".././node_modules/@smithy/util-body-length-node/dist-cjs/index.js",".././node_modules/@smithy/util-buffer-from/dist-cjs/index.js",".././node_modules/@smithy/util-config-provider/dist-cjs/index.js",".././node_modules/@smithy/util-defaults-mode-node/dist-cjs/index.js",".././node_modules/@smithy/util-endpoints/dist-cjs/index.js",".././node_modules/@smithy/util-endpoints/node_modules/@smithy/types/dist-cjs/index.js",".././node_modules/@smithy/util-hex-encoding/dist-cjs/index.js",".././node_modules/@smithy/util-middleware/dist-cjs/index.js",".././node_modules/@smithy/util-middleware/node_modules/@smithy/types/dist-cjs/index.js",".././node_modules/@smithy/util-retry/dist-cjs/index.js",".././node_modules/@smithy/util-stream/dist-cjs/getAwsChunkedEncodingStream.js",".././node_modules/@smithy/util-stream/dist-cjs/headStream.browser.js",".././node_modules/@smithy/util-stream/dist-cjs/headStream.js",".././node_modules/@smithy/util-stream/dist-cjs/index.js",".././node_modules/@smithy/util-stream/dist-cjs/sdk-stream-mixin.browser.js",".././node_modules/@smithy/util-stream/dist-cjs/sdk-stream-mixin.js",".././node_modules/@smithy/util-stream/dist-cjs/splitStream.browser.js",".././node_modules/@smithy/util-stream/dist-cjs/splitStream.js",".././node_modules/@smithy/util-stream/dist-cjs/stream-type-check.js",".././node_modules/@smithy/util-uri-escape/dist-cjs/index.js",".././node_modules/@smithy/util-utf8/dist-cjs/index.js",".././node_modules/@smithy/util-waiter/dist-cjs/index.js",".././node_modules/ansi-regex/index.js",".././node_modules/ansi-styles/index.js",".././node_modules/astral-regex/index.js",".././node_modules/before-after-hook/index.js",".././node_modules/before-after-hook/lib/add.js",".././node_modules/before-after-hook/lib/register.js",".././node_modules/before-after-hook/lib/remove.js",".././node_modules/chalk/source/index.js",".././node_modules/chalk/source/templates.js",".././node_modules/chalk/source/util.js",".././node_modules/color-convert/conversions.js",".././node_modules/color-convert/index.js",".././node_modules/color-convert/route.js",".././node_modules/color-name/index.js",".././node_modules/deprecation/dist-node/index.js",".././node_modules/diff/lib/convert/dmp.js",".././node_modules/diff/lib/convert/xml.js",".././node_modules/diff/lib/diff/array.js",".././node_modules/diff/lib/diff/base.js",".././node_modules/diff/lib/diff/character.js",".././node_modules/diff/lib/diff/css.js",".././node_modules/diff/lib/diff/json.js",".././node_modules/diff/lib/diff/line.js",".././node_modules/diff/lib/diff/sentence.js",".././node_modules/diff/lib/diff/word.js",".././node_modules/diff/lib/index.js",".././node_modules/diff/lib/patch/apply.js",".././node_modules/diff/lib/patch/create.js",".././node_modules/diff/lib/patch/merge.js",".././node_modules/diff/lib/patch/parse.js",".././node_modules/diff/lib/patch/reverse.js",".././node_modules/diff/lib/util/array.js",".././node_modules/diff/lib/util/distance-iterator.js",".././node_modules/diff/lib/util/params.js",".././node_modules/emoji-regex/index.js",".././node_modules/fast-deep-equal/index.js",".././node_modules/fast-xml-parser/src/fxp.js",".././node_modules/fast-xml-parser/src/util.js",".././node_modules/fast-xml-parser/src/validator.js",".././node_modules/fast-xml-parser/src/xmlbuilder/json2xml.js",".././node_modules/fast-xml-parser/src/xmlbuilder/orderedJs2Xml.js",".././node_modules/fast-xml-parser/src/xmlparser/DocTypeReader.js",".././node_modules/fast-xml-parser/src/xmlparser/OptionsBuilder.js",".././node_modules/fast-xml-parser/src/xmlparser/OrderedObjParser.js",".././node_modules/fast-xml-parser/src/xmlparser/XMLParser.js",".././node_modules/fast-xml-parser/src/xmlparser/node2json.js",".././node_modules/fast-xml-parser/src/xmlparser/xmlNode.js",".././node_modules/fs-extra/lib/copy/copy-sync.js",".././node_modules/fs-extra/lib/copy/copy.js",".././node_modules/fs-extra/lib/copy/index.js",".././node_modules/fs-extra/lib/empty/index.js",".././node_modules/fs-extra/lib/ensure/file.js",".././node_modules/fs-extra/lib/ensure/index.js",".././node_modules/fs-extra/lib/ensure/link.js",".././node_modules/fs-extra/lib/ensure/symlink-paths.js",".././node_modules/fs-extra/lib/ensure/symlink-type.js",".././node_modules/fs-extra/lib/ensure/symlink.js",".././node_modules/fs-extra/lib/fs/index.js",".././node_modules/fs-extra/lib/index.js",".././node_modules/fs-extra/lib/json/index.js",".././node_modules/fs-extra/lib/json/jsonfile.js",".././node_modules/fs-extra/lib/json/output-json-sync.js",".././node_modules/fs-extra/lib/json/output-json.js",".././node_modules/fs-extra/lib/mkdirs/index.js",".././node_modules/fs-extra/lib/mkdirs/make-dir.js",".././node_modules/fs-extra/lib/mkdirs/utils.js",".././node_modules/fs-extra/lib/move/index.js",".././node_modules/fs-extra/lib/move/move-sync.js",".././node_modules/fs-extra/lib/move/move.js",".././node_modules/fs-extra/lib/output-file/index.js",".././node_modules/fs-extra/lib/path-exists/index.js",".././node_modules/fs-extra/lib/remove/index.js",".././node_modules/fs-extra/lib/util/stat.js",".././node_modules/fs-extra/lib/util/utimes.js",".././node_modules/graceful-fs/clone.js",".././node_modules/graceful-fs/graceful-fs.js",".././node_modules/graceful-fs/legacy-streams.js",".././node_modules/graceful-fs/polyfills.js",".././node_modules/has-flag/index.js",".././node_modules/is-fullwidth-code-point/index.js",".././node_modules/jsonfile/index.js",".././node_modules/jsonfile/utils.js",".././node_modules/lodash.truncate/index.js",".././node_modules/once/once.js",".././node_modules/slice-ansi/index.js",".././node_modules/string-width/index.js",".././node_modules/strip-ansi/index.js",".././node_modules/strnum/strnum.js",".././node_modules/supports-color/index.js",".././node_modules/table/dist/src/alignSpanningCell.js",".././node_modules/table/dist/src/alignString.js",".././node_modules/table/dist/src/alignTableData.js",".././node_modules/table/dist/src/calculateCellHeight.js",".././node_modules/table/dist/src/calculateMaximumColumnWidths.js",".././node_modules/table/dist/src/calculateOutputColumnWidths.js",".././node_modules/table/dist/src/calculateRowHeights.js",".././node_modules/table/dist/src/calculateSpanningCellWidth.js",".././node_modules/table/dist/src/createStream.js",".././node_modules/table/dist/src/drawBorder.js",".././node_modules/table/dist/src/drawContent.js",".././node_modules/table/dist/src/drawRow.js",".././node_modules/table/dist/src/drawTable.js",".././node_modules/table/dist/src/generated/validators.js",".././node_modules/table/dist/src/getBorderCharacters.js",".././node_modules/table/dist/src/index.js",".././node_modules/table/dist/src/injectHeaderConfig.js",".././node_modules/table/dist/src/makeRangeConfig.js",".././node_modules/table/dist/src/makeStreamConfig.js",".././node_modules/table/dist/src/makeTableConfig.js",".././node_modules/table/dist/src/mapDataUsingRowHeights.js",".././node_modules/table/dist/src/padTableData.js",".././node_modules/table/dist/src/spanningCellManager.js",".././node_modules/table/dist/src/stringifyTableData.js",".././node_modules/table/dist/src/table.js",".././node_modules/table/dist/src/truncateTableData.js",".././node_modules/table/dist/src/types/api.js",".././node_modules/table/dist/src/utils.js",".././node_modules/table/dist/src/validateConfig.js",".././node_modules/table/dist/src/validateSpanningCellConfig.js",".././node_modules/table/dist/src/validateTableData.js",".././node_modules/table/dist/src/wrapCell.js",".././node_modules/table/dist/src/wrapString.js",".././node_modules/table/dist/src/wrapWord.js",".././node_modules/table/node_modules/ajv/dist/runtime/equal.js",".././node_modules/tslib/tslib.js",".././node_modules/tunnel/index.js",".././node_modules/tunnel/lib/tunnel.js",".././node_modules/undici/index.js",".././node_modules/undici/lib/agent.js",".././node_modules/undici/lib/api/abort-signal.js",".././node_modules/undici/lib/api/api-connect.js",".././node_modules/undici/lib/api/api-pipeline.js",".././node_modules/undici/lib/api/api-request.js",".././node_modules/undici/lib/api/api-stream.js",".././node_modules/undici/lib/api/api-upgrade.js",".././node_modules/undici/lib/api/index.js",".././node_modules/undici/lib/api/readable.js",".././node_modules/undici/lib/api/util.js",".././node_modules/undici/lib/balanced-pool.js",".././node_modules/undici/lib/cache/cache.js",".././node_modules/undici/lib/cache/cachestorage.js",".././node_modules/undici/lib/cache/symbols.js",".././node_modules/undici/lib/cache/util.js",".././node_modules/undici/lib/client.js",".././node_modules/undici/lib/compat/dispatcher-weakref.js",".././node_modules/undici/lib/cookies/constants.js",".././node_modules/undici/lib/cookies/index.js",".././node_modules/undici/lib/cookies/parse.js",".././node_modules/undici/lib/cookies/util.js",".././node_modules/undici/lib/core/connect.js",".././node_modules/undici/lib/core/constants.js",".././node_modules/undici/lib/core/errors.js",".././node_modules/undici/lib/core/request.js",".././node_modules/undici/lib/core/symbols.js",".././node_modules/undici/lib/core/util.js",".././node_modules/undici/lib/dispatcher-base.js",".././node_modules/undici/lib/dispatcher.js",".././node_modules/undici/lib/fetch/body.js",".././node_modules/undici/lib/fetch/constants.js",".././node_modules/undici/lib/fetch/dataURL.js",".././node_modules/undici/lib/fetch/file.js",".././node_modules/undici/lib/fetch/formdata.js",".././node_modules/undici/lib/fetch/global.js",".././node_modules/undici/lib/fetch/headers.js",".././node_modules/undici/lib/fetch/index.js",".././node_modules/undici/lib/fetch/request.js",".././node_modules/undici/lib/fetch/response.js",".././node_modules/undici/lib/fetch/symbols.js",".././node_modules/undici/lib/fetch/util.js",".././node_modules/undici/lib/fetch/webidl.js",".././node_modules/undici/lib/fileapi/encoding.js",".././node_modules/undici/lib/fileapi/filereader.js",".././node_modules/undici/lib/fileapi/progressevent.js",".././node_modules/undici/lib/fileapi/symbols.js",".././node_modules/undici/lib/fileapi/util.js",".././node_modules/undici/lib/global.js",".././node_modules/undici/lib/handler/DecoratorHandler.js",".././node_modules/undici/lib/handler/RedirectHandler.js",".././node_modules/undici/lib/handler/RetryHandler.js",".././node_modules/undici/lib/interceptor/redirectInterceptor.js",".././node_modules/undici/lib/llhttp/constants.js",".././node_modules/undici/lib/llhttp/llhttp-wasm.js",".././node_modules/undici/lib/llhttp/llhttp_simd-wasm.js",".././node_modules/undici/lib/llhttp/utils.js",".././node_modules/undici/lib/mock/mock-agent.js",".././node_modules/undici/lib/mock/mock-client.js",".././node_modules/undici/lib/mock/mock-errors.js",".././node_modules/undici/lib/mock/mock-interceptor.js",".././node_modules/undici/lib/mock/mock-pool.js",".././node_modules/undici/lib/mock/mock-symbols.js",".././node_modules/undici/lib/mock/mock-utils.js",".././node_modules/undici/lib/mock/pending-interceptors-formatter.js",".././node_modules/undici/lib/mock/pluralizer.js",".././node_modules/undici/lib/node/fixed-queue.js",".././node_modules/undici/lib/pool-base.js",".././node_modules/undici/lib/pool-stats.js",".././node_modules/undici/lib/pool.js",".././node_modules/undici/lib/proxy-agent.js",".././node_modules/undici/lib/timers.js",".././node_modules/undici/lib/websocket/connection.js",".././node_modules/undici/lib/websocket/constants.js",".././node_modules/undici/lib/websocket/events.js",".././node_modules/undici/lib/websocket/frame.js",".././node_modules/undici/lib/websocket/receiver.js",".././node_modules/undici/lib/websocket/symbols.js",".././node_modules/undici/lib/websocket/util.js",".././node_modules/undici/lib/websocket/websocket.js",".././node_modules/universal-user-agent/dist-node/index.js",".././node_modules/universalify/index.js",".././node_modules/uuid/dist/index.js",".././node_modules/uuid/dist/md5.js",".././node_modules/uuid/dist/native.js",".././node_modules/uuid/dist/nil.js",".././node_modules/uuid/dist/parse.js",".././node_modules/uuid/dist/regex.js",".././node_modules/uuid/dist/rng.js",".././node_modules/uuid/dist/sha1.js",".././node_modules/uuid/dist/stringify.js",".././node_modules/uuid/dist/v1.js",".././node_modules/uuid/dist/v3.js",".././node_modules/uuid/dist/v35.js",".././node_modules/uuid/dist/v4.js",".././node_modules/uuid/dist/v5.js",".././node_modules/uuid/dist/validate.js",".././node_modules/uuid/dist/version.js",".././node_modules/wrappy/wrappy.js","../external node-commonjs \"assert\"","../external node-commonjs \"async_hooks\"","../external node-commonjs \"buffer\"","../external node-commonjs \"child_process\"","../external node-commonjs \"console\"","../external node-commonjs \"constants\"","../external node-commonjs \"crypto\"","../external node-commonjs \"diagnostics_channel\"","../external node-commonjs \"events\"","../external node-commonjs \"fs\"","../external node-commonjs \"fs/promises\"","../external node-commonjs \"http\"","../external node-commonjs \"http2\"","../external node-commonjs \"https\"","../external node-commonjs \"net\"","../external node-commonjs \"node:events\"","../external node-commonjs \"node:fs\"","../external node-commonjs \"node:path\"","../external node-commonjs \"node:stream\"","../external node-commonjs \"node:util\"","../external node-commonjs \"node:zlib\"","../external node-commonjs \"os\"","../external node-commonjs \"path\"","../external node-commonjs \"perf_hooks\"","../external node-commonjs \"process\"","../external node-commonjs \"querystring\"","../external node-commonjs \"stream\"","../external node-commonjs \"stream/web\"","../external node-commonjs \"string_decoder\"","../external node-commonjs \"timers\"","../external node-commonjs \"tls\"","../external node-commonjs \"tty\"","../external node-commonjs \"url\"","../external node-commonjs \"util\"","../external node-commonjs \"util/types\"","../external node-commonjs \"worker_threads\"","../external node-commonjs \"zlib\"",".././node_modules/@fastify/busboy/deps/dicer/lib/Dicer.js",".././node_modules/@fastify/busboy/deps/dicer/lib/HeaderParser.js",".././node_modules/@fastify/busboy/deps/dicer/lib/PartStream.js",".././node_modules/@fastify/busboy/deps/streamsearch/sbmh.js",".././node_modules/@fastify/busboy/lib/main.js",".././node_modules/@fastify/busboy/lib/types/multipart.js",".././node_modules/@fastify/busboy/lib/types/urlencoded.js",".././node_modules/@fastify/busboy/lib/utils/Decoder.js",".././node_modules/@fastify/busboy/lib/utils/basename.js",".././node_modules/@fastify/busboy/lib/utils/decodeText.js",".././node_modules/@fastify/busboy/lib/utils/getLimit.js",".././node_modules/@fastify/busboy/lib/utils/parseParams.js","../webpack/bootstrap","../webpack/runtime/node module decorator","../webpack/runtime/compat","../webpack/before-startup","../webpack/startup","../webpack/after-startup"],"sourcesContent":["\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.run = run;\nconst core_1 = require(\"@actions/core\");\nconst github = __importStar(require(\"@actions/github\"));\nconst assembly_1 = require(\"./assembly\");\nconst comment_1 = require(\"./comment\");\nconst stage_processor_1 = require(\"./stage-processor\");\nasync function run() {\n var _a;\n const inputs = {\n allowedDestroyTypes: (0, core_1.getInput)('allowedDestroyTypes').split(','),\n failOnDestructiveChanges: (0, core_1.getBooleanInput)('failOnDestructiveChanges'),\n githubToken: (0, core_1.getInput)('githubToken'),\n noDiffForStages: (0, core_1.getInput)('noDiffForStages').split(','),\n noFailOnDestructiveChanges: (0, core_1.getInput)('noFailOnDestructiveChanges').split(','),\n cdkOutDir: (_a = (0, core_1.getInput)('cdkOutDir')) !== null && _a !== void 0 ? _a : 'cdk.out',\n };\n const octokit = github.getOctokit(inputs.githubToken);\n const context = github.context;\n try {\n const assembly = assembly_1.AssemblyManifestReader.fromPath(inputs.cdkOutDir);\n const stages = assembly.stages;\n if (assembly.stacks.length) {\n stages.push({\n name: 'DefaultStage',\n stacks: assembly.stacks,\n });\n }\n const comments = new comment_1.Comments(octokit, context);\n const processor = new stage_processor_1.StageProcessor(stages, inputs.allowedDestroyTypes);\n try {\n await processor.processStages(inputs.noFailOnDestructiveChanges);\n }\n catch (e) {\n console.error('Error running process stages: ', e);\n throw e;\n }\n try {\n await processor.commentStages(comments);\n }\n catch (e) {\n console.error('Error commenting stages: ', e);\n throw e;\n }\n if (processor.hasDestructiveChanges && inputs.failOnDestructiveChanges) {\n throw new Error('There are destructive changes! See PR comment for details.');\n }\n }\n catch (e) {\n console.error('Error performing diff: ', e);\n throw e;\n }\n return;\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2FjdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBT0Esa0JBNkNDO0FBcERELHdDQUEwRDtBQUMxRCx3REFBMEM7QUFDMUMseUNBQW9EO0FBQ3BELHVDQUFxQztBQUVyQyx1REFBbUQ7QUFFNUMsS0FBSyxVQUFVLEdBQUc7O0lBQ3ZCLE1BQU0sTUFBTSxHQUFXO1FBQ3JCLG1CQUFtQixFQUFFLElBQUEsZUFBUSxFQUFDLHFCQUFxQixDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQztRQUMvRCx3QkFBd0IsRUFBRSxJQUFBLHNCQUFlLEVBQUMsMEJBQTBCLENBQUM7UUFDckUsV0FBVyxFQUFFLElBQUEsZUFBUSxFQUFDLGFBQWEsQ0FBQztRQUNwQyxlQUFlLEVBQUUsSUFBQSxlQUFRLEVBQUMsaUJBQWlCLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDO1FBQ3ZELDBCQUEwQixFQUFFLElBQUEsZUFBUSxFQUFDLDRCQUE0QixDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQztRQUM3RSxTQUFTLEVBQUUsTUFBQSxJQUFBLGVBQVEsRUFBQyxXQUFXLENBQUMsbUNBQUksU0FBUztLQUM5QyxDQUFDO0lBQ0YsTUFBTSxPQUFPLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDdEQsTUFBTSxPQUFPLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQztJQUMvQixJQUFJLENBQUM7UUFDSCxNQUFNLFFBQVEsR0FBRyxpQ0FBc0IsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ25FLE1BQU0sTUFBTSxHQUFHLFFBQVEsQ0FBQyxNQUFNLENBQUM7UUFDL0IsSUFBSSxRQUFRLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQzNCLE1BQU0sQ0FBQyxJQUFJLENBQUM7Z0JBQ1YsSUFBSSxFQUFFLGNBQWM7Z0JBQ3BCLE1BQU0sRUFBRSxRQUFRLENBQUMsTUFBTTthQUN4QixDQUFDLENBQUM7UUFDTCxDQUFDO1FBQ0QsTUFBTSxRQUFRLEdBQUcsSUFBSSxrQkFBUSxDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQztRQUNoRCxNQUFNLFNBQVMsR0FBRyxJQUFJLGdDQUFjLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO1FBQ3pFLElBQUksQ0FBQztZQUNILE1BQU0sU0FBUyxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsMEJBQTBCLENBQUMsQ0FBQztRQUNuRSxDQUFDO1FBQUMsT0FBTyxDQUFNLEVBQUUsQ0FBQztZQUNoQixPQUFPLENBQUMsS0FBSyxDQUFDLGdDQUFnQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQ25ELE1BQU0sQ0FBQyxDQUFDO1FBQ1YsQ0FBQztRQUVELElBQUksQ0FBQztZQUNILE1BQU0sU0FBUyxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUUxQyxDQUFDO1FBQUMsT0FBTyxDQUFNLEVBQUUsQ0FBQztZQUNoQixPQUFPLENBQUMsS0FBSyxDQUFDLDJCQUEyQixFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQzlDLE1BQU0sQ0FBQyxDQUFDO1FBQ1YsQ0FBQztRQUVELElBQUksU0FBUyxDQUFDLHFCQUFxQixJQUFJLE1BQU0sQ0FBQyx3QkFBd0IsRUFBRSxDQUFDO1lBQ3ZFLE1BQU0sSUFBSSxLQUFLLENBQUMsNERBQTRELENBQUMsQ0FBQztRQUNoRixDQUFDO0lBQ0gsQ0FBQztJQUFDLE9BQU8sQ0FBTSxFQUFFLENBQUM7UUFDaEIsT0FBTyxDQUFDLEtBQUssQ0FBQyx5QkFBeUIsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUM1QyxNQUFNLENBQUMsQ0FBQztJQUNWLENBQUM7SUFDRCxPQUFPO0FBQ1QsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGdldElucHV0LCBnZXRCb29sZWFuSW5wdXQgfSBmcm9tICdAYWN0aW9ucy9jb3JlJztcbmltcG9ydCAqIGFzIGdpdGh1YiBmcm9tICdAYWN0aW9ucy9naXRodWInO1xuaW1wb3J0IHsgQXNzZW1ibHlNYW5pZmVzdFJlYWRlciB9IGZyb20gJy4vYXNzZW1ibHknO1xuaW1wb3J0IHsgQ29tbWVudHMgfSBmcm9tICcuL2NvbW1lbnQnO1xuaW1wb3J0IHsgSW5wdXRzIH0gZnJvbSAnLi9pbnB1dHMnO1xuaW1wb3J0IHsgU3RhZ2VQcm9jZXNzb3IgfSBmcm9tICcuL3N0YWdlLXByb2Nlc3Nvcic7XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBydW4oKSB7XG4gIGNvbnN0IGlucHV0czogSW5wdXRzID0ge1xuICAgIGFsbG93ZWREZXN0cm95VHlwZXM6IGdldElucHV0KCdhbGxvd2VkRGVzdHJveVR5cGVzJykuc3BsaXQoJywnKSxcbiAgICBmYWlsT25EZXN0cnVjdGl2ZUNoYW5nZXM6IGdldEJvb2xlYW5JbnB1dCgnZmFpbE9uRGVzdHJ1Y3RpdmVDaGFuZ2VzJyksXG4gICAgZ2l0aHViVG9rZW46IGdldElucHV0KCdnaXRodWJUb2tlbicpLFxuICAgIG5vRGlmZkZvclN0YWdlczogZ2V0SW5wdXQoJ25vRGlmZkZvclN0YWdlcycpLnNwbGl0KCcsJyksXG4gICAgbm9GYWlsT25EZXN0cnVjdGl2ZUNoYW5nZXM6IGdldElucHV0KCdub0ZhaWxPbkRlc3RydWN0aXZlQ2hhbmdlcycpLnNwbGl0KCcsJyksXG4gICAgY2RrT3V0RGlyOiBnZXRJbnB1dCgnY2RrT3V0RGlyJykgPz8gJ2Nkay5vdXQnLFxuICB9O1xuICBjb25zdCBvY3Rva2l0ID0gZ2l0aHViLmdldE9jdG9raXQoaW5wdXRzLmdpdGh1YlRva2VuKTtcbiAgY29uc3QgY29udGV4dCA9IGdpdGh1Yi5jb250ZXh0O1xuICB0cnkge1xuICAgIGNvbnN0IGFzc2VtYmx5ID0gQXNzZW1ibHlNYW5pZmVzdFJlYWRlci5mcm9tUGF0aChpbnB1dHMuY2RrT3V0RGlyKTtcbiAgICBjb25zdCBzdGFnZXMgPSBhc3NlbWJseS5zdGFnZXM7XG4gICAgaWYgKGFzc2VtYmx5LnN0YWNrcy5sZW5ndGgpIHtcbiAgICAgIHN0YWdlcy5wdXNoKHtcbiAgICAgICAgbmFtZTogJ0RlZmF1bHRTdGFnZScsXG4gICAgICAgIHN0YWNrczogYXNzZW1ibHkuc3RhY2tzLFxuICAgICAgfSk7XG4gICAgfVxuICAgIGNvbnN0IGNvbW1lbnRzID0gbmV3IENvbW1lbnRzKG9jdG9raXQsIGNvbnRleHQpO1xuICAgIGNvbnN0IHByb2Nlc3NvciA9IG5ldyBTdGFnZVByb2Nlc3NvcihzdGFnZXMsIGlucHV0cy5hbGxvd2VkRGVzdHJveVR5cGVzKTtcbiAgICB0cnkge1xuICAgICAgYXdhaXQgcHJvY2Vzc29yLnByb2Nlc3NTdGFnZXMoaW5wdXRzLm5vRmFpbE9uRGVzdHJ1Y3RpdmVDaGFuZ2VzKTtcbiAgICB9IGNhdGNoIChlOiBhbnkpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIHJ1bm5pbmcgcHJvY2VzcyBzdGFnZXM6ICcsIGUpO1xuICAgICAgdGhyb3cgZTtcbiAgICB9XG5cbiAgICB0cnkge1xuICAgICAgYXdhaXQgcHJvY2Vzc29yLmNvbW1lbnRTdGFnZXMoY29tbWVudHMpO1xuXG4gICAgfSBjYXRjaCAoZTogYW55KSB7XG4gICAgICBjb25zb2xlLmVycm9yKCdFcnJvciBjb21tZW50aW5nIHN0YWdlczogJywgZSk7XG4gICAgICB0aHJvdyBlO1xuICAgIH1cblxuICAgIGlmIChwcm9jZXNzb3IuaGFzRGVzdHJ1Y3RpdmVDaGFuZ2VzICYmIGlucHV0cy5mYWlsT25EZXN0cnVjdGl2ZUNoYW5nZXMpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignVGhlcmUgYXJlIGRlc3RydWN0aXZlIGNoYW5nZXMhIFNlZSBQUiBjb21tZW50IGZvciBkZXRhaWxzLicpO1xuICAgIH1cbiAgfSBjYXRjaCAoZTogYW55KSB7XG4gICAgY29uc29sZS5lcnJvcignRXJyb3IgcGVyZm9ybWluZyBkaWZmOiAnLCBlKTtcbiAgICB0aHJvdyBlO1xuICB9XG4gIHJldHVybjtcbn1cblxuIl19","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.AssemblyManifestReader = void 0;\nconst path = __importStar(require(\"path\"));\nconst cloud_assembly_1 = require(\"@aws-cdk/cloud-assembly-schema/lib/cloud-assembly\");\nconst manifest_1 = require(\"@aws-cdk/cloud-assembly-schema/lib/manifest\");\nconst fs = __importStar(require(\"fs-extra\"));\n/**\n * Reads a Cloud Assembly manifest\n */\nclass AssemblyManifestReader {\n /**\n * Reads a Cloud Assembly manifest from a file\n */\n static fromFile(fileName) {\n try {\n // skipVersionCheck since we should always be able to load newer versions\n const obj = manifest_1.Manifest.loadAssemblyManifest(fileName, { skipVersionCheck: true });\n return new AssemblyManifestReader(path.dirname(fileName), obj);\n }\n catch (e) {\n throw new Error(`Cannot read integ manifest '${fileName}': ${e.message}`);\n }\n }\n /**\n * Reads a Cloud Assembly manifest from a file or a directory\n * If the given filePath is a directory then it will look for\n * a file within the directory with the DEFAULT_FILENAME\n */\n static fromPath(filePath) {\n let st;\n try {\n st = fs.statSync(filePath);\n }\n catch (e) {\n throw new Error(`Cannot read integ manifest at '${filePath}': ${e.message}`);\n }\n if (st.isDirectory()) {\n return AssemblyManifestReader.fromFile(path.join(filePath, AssemblyManifestReader.DEFAULT_FILENAME));\n }\n return AssemblyManifestReader.fromFile(filePath);\n }\n constructor(directory, manifest) {\n this.manifest = manifest;\n this.directory = directory;\n }\n /**\n * Get the stacks from the manifest\n * returns a map of artifactId to CloudFormation template\n */\n get stacks() {\n var _a, _b, _c;\n const stacks = [];\n for (const [artifactId, artifact] of Object.entries((_a = this.manifest.artifacts) !== null && _a !== void 0 ? _a : {})) {\n if (artifact.type !== cloud_assembly_1.ArtifactType.AWS_CLOUDFORMATION_STACK) {\n continue;\n }\n const props = artifact.properties;\n const template = fs.readJSONSync(path.resolve(this.directory, props.templateFile));\n const env = (_b = artifact.environment) === null || _b === void 0 ? void 0 : _b.split(/\\/\\/?/);\n const validEnv = env && env.length === 3;\n let region;\n let account;\n if (validEnv) {\n region = env[2];\n account = env[1];\n }\n if (region === 'unknown-region') {\n region = undefined;\n }\n if (account === 'unknown-account') {\n account = undefined;\n }\n stacks.push({\n content: template,\n region,\n account,\n lookupRole: props.lookupRole,\n name: (_c = props.stackName) !== null && _c !== void 0 ? _c : artifactId,\n });\n }\n return stacks;\n }\n /**\n * Get the stages in the assembly\n */\n get stages() {\n var _a, _b;\n const stages = [];\n for (const [artifactId, artifact] of Object.entries((_a = this.manifest.artifacts) !== null && _a !== void 0 ? _a : {})) {\n if (artifact.type !== cloud_assembly_1.ArtifactType.NESTED_CLOUD_ASSEMBLY) {\n continue;\n }\n const props = artifact.properties;\n const nestedAssembly = AssemblyManifestReader.fromPath(path.join(this.directory, props.directoryName));\n stages.push({\n name: (_b = props.displayName) !== null && _b !== void 0 ? _b : artifactId,\n stacks: nestedAssembly.stacks,\n });\n }\n return stages;\n }\n}\nexports.AssemblyManifestReader = AssemblyManifestReader;\nAssemblyManifestReader.DEFAULT_FILENAME = 'manifest.json';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNzZW1ibHkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvYXNzZW1ibHkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSwyQ0FBNkI7QUFDN0Isc0ZBQW1MO0FBQ25MLDBFQUF1RTtBQUN2RSw2Q0FBK0I7QUFxRC9COztHQUVHO0FBQ0gsTUFBYSxzQkFBc0I7SUFHakM7O09BRUc7SUFDSSxNQUFNLENBQUMsUUFBUSxDQUFDLFFBQWdCO1FBQ3JDLElBQUksQ0FBQztZQUNILHlFQUF5RTtZQUN6RSxNQUFNLEdBQUcsR0FBRyxtQkFBUSxDQUFDLG9CQUFvQixDQUFDLFFBQVEsRUFBRSxFQUFFLGdCQUFnQixFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7WUFDaEYsT0FBTyxJQUFJLHNCQUFzQixDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFFakUsQ0FBQztRQUFDLE9BQU8sQ0FBTSxFQUFFLENBQUM7WUFDaEIsTUFBTSxJQUFJLEtBQUssQ0FBQywrQkFBK0IsUUFBUSxNQUFNLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO1FBQzVFLENBQUM7SUFDSCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNJLE1BQU0sQ0FBQyxRQUFRLENBQUMsUUFBZ0I7UUFDckMsSUFBSSxFQUFFLENBQUM7UUFDUCxJQUFJLENBQUM7WUFDSCxFQUFFLEdBQUcsRUFBRSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUM3QixDQUFDO1FBQUMsT0FBTyxDQUFNLEVBQUUsQ0FBQztZQUNoQixNQUFNLElBQUksS0FBSyxDQUFDLGtDQUFrQyxRQUFRLE1BQU0sQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7UUFDL0UsQ0FBQztRQUNELElBQUksRUFBRSxDQUFDLFdBQVcsRUFBRSxFQUFFLENBQUM7WUFDckIsT0FBTyxzQkFBc0IsQ0FBQyxRQUFR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QyxNQUFNLEVBQUUsY0FBYyxDQUFDLE1BQU07YUFDOUIsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztRQUNELE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7O0FBOUZILHdEQStGQztBQTlGd0IsdUNBQWdCLEdBQUcsZUFBZSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCB7IEFzc2VtYmx5TWFuaWZlc3QsIEFydGlmYWN0VHlwZSwgQXdzQ2xvdWRGb3JtYXRpb25TdGFja1Byb3BlcnRpZXMsIE5lc3RlZENsb3VkQXNzZW1ibHlQcm9wZXJ0aWVzLCBCb290c3RyYXBSb2xlIH0gZnJvbSAnQGF3cy1jZGsvY2xvdWQtYXNzZW1ibHktc2NoZW1hL2xpYi9jbG91ZC1hc3NlbWJseSc7XG5pbXBvcnQgeyBNYW5pZmVzdCB9IGZyb20gJ0Bhd3MtY2RrL2Nsb3VkLWFzc2VtYmx5LXNjaGVtYS9saWIvbWFuaWZlc3QnO1xuaW1wb3J0ICogYXMgZnMgZnJvbSAnZnMtZXh0cmEnO1xuXG4vKipcbiAqIEluZm9ybWF0aW9uIG9uIHRoZSBDREsgU3RhZ2VcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTdGFnZUluZm8ge1xuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIHN0YWdlXG4gICAqL1xuICBuYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBzdGFja3Mgd2l0aGluIHRoZSBzdGFnZVxuICAgKi9cbiAgc3RhY2tzOiBTdGFja0luZm9bXTtcbn1cblxuLyoqXG4gKiBJbmZvcm1hdGlvbiBvbiBhIHN0YWNrXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU3RhY2tJbmZvIHtcbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSBzdGFja1xuICAgKi9cbiAgbmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgcmVnaW9uIHRoZSBzdGFjayBpcyBkZXBsb3llZCB0b1xuICAgKlxuICAgKiBAZGVmYXVsdCAtIHVua25vd24tcmVnaW9uXG4gICAqL1xuICByZWdpb24/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBhY2NvdW50IHRoZSBzdGFjayBpcyBkZXBsb3llZCB0b1xuICAgKlxuICAgKiBAZGVmYXVsdCAtIHVua25vd24tYWNjb3VudFxuICAgKi9cbiAgYWNjb3VudD86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIGxvb2t1cCByb2xlIHRvIHVzZVxuICAgKlxuICAgKiBAZGVmYXVsdCAtIG5vIGxvb2t1cCByb2xlXG4gICAqL1xuICBsb29rdXBSb2xlPzogQm9vdHN0cmFwUm9sZTtcblxuICAvKipcbiAgICogVGhlIEpTT04gY29udGVudCBvZiB0aGUgc3RhY2tcbiAgICovXG4gIGNvbnRlbnQ6IHsgW2tleTogc3RyaW5nXTogYW55IH07XG59XG5cbi8qKlxuICogUmVhZHMgYSBDbG91ZCBBc3NlbWJseSBtYW5pZmVzdFxuICovXG5leHBvcnQgY2xhc3MgQXNzZW1ibHlNYW5pZmVzdFJlYWRlciB7XG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgREVGQVVMVF9GSUxFTkFNRSA9ICdtYW5pZmVzdC5qc29uJztcblxuICAvKipcbiAgICogUmVhZHMgYSBDbG91ZCBBc3NlbWJseSBtYW5pZmVzdCBmcm9tIGEgZmlsZVxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBmcm9tRmlsZShmaWxlTmFtZTogc3RyaW5nKTogQXNzZW1ibHlNYW5pZmVzdFJlYWRlciB7XG4gICAgdHJ5IHtcbiAgICAgIC8vIHNraXBWZXJzaW9uQ2hlY2sgc2luY2Ugd2Ugc2hvdWxkIGFsd2F5cyBiZSBhYmxlIHRvIGxvYWQgbmV3ZXIgdmVyc2lvbnNcbiAgICAgIGNvbnN0IG9iaiA9IE1hbmlmZXN0LmxvYWRBc3NlbWJseU1hbmlmZXN0KGZpbGVOYW1lLCB7IHNraXBWZXJzaW9uQ2hlY2s6IHRydWUgfSk7XG4gICAgICByZXR1cm4gbmV3IEFzc2VtYmx5TWFuaWZlc3RSZWFkZXIocGF0aC5kaXJuYW1lKGZpbGVOYW1lKSwgb2JqKTtcblxuICAgIH0gY2F0Y2ggKGU6IGFueSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBDYW5ub3QgcmVhZCBpbnRlZyBtYW5pZmVzdCAnJHtmaWxlTmFtZX0nOiAke2UubWVzc2FnZX1gKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUmVhZHMgYSBDbG91ZCBBc3NlbWJseSBtYW5pZmVzdCBmcm9tIGEgZmlsZSBvciBhIGRpcmVjdG9yeVxuICAgKiBJZiB0aGUgZ2l2ZW4gZmlsZVBhdGggaXMgYSBkaXJlY3RvcnkgdGhlbiBpdCB3aWxsIGxvb2sgZm9yXG4gICAqIGEgZmlsZSB3aXRoaW4gdGhlIGRpcmVjdG9yeSB3aXRoIHRoZSBERUZBVUxUX0ZJTEVOQU1FXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGZyb21QYXRoKGZpbGVQYXRoOiBzdHJpbmcpOiBBc3NlbWJseU1hbmlmZXN0UmVhZGVyIHtcbiAgICBsZXQgc3Q7XG4gICAgdHJ5IHtcbiAgICAgIHN0ID0gZnMuc3RhdFN5bmMoZmlsZVBhdGgpO1xuICAgIH0gY2F0Y2ggKGU6IGFueSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBDYW5ub3QgcmVhZCBpbnRlZyBtYW5pZmVzdCBhdCAnJHtmaWxlUGF0aH0nOiAke2UubWVzc2FnZX1gKTtcbiAgICB9XG4gICAgaWYgKHN0LmlzRGlyZWN0b3J5KCkpIHtcbiAgICAgIHJldHVybiBBc3NlbWJseU1hbmlmZXN0UmVhZGVyLmZyb21GaWxlKHBhdGguam9pbihmaWxlUGF0aCwgQXNzZW1ibHlNYW5pZmVzdFJlYWRlci5ERUZBVUxUX0ZJTEVOQU1FKSk7XG4gICAgfVxuICAgIHJldHVybiBBc3NlbWJseU1hbmlmZXN0UmVhZGVyLmZyb21GaWxlKGZpbGVQYXRoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgZGlyZWN0b3J5IHdoZXJlIHRoZSBtYW5pZmVzdCB3YXMgZm91bmRcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBkaXJlY3Rvcnk6IHN0cmluZztcblxuICBjb25zdHJ1Y3RvcihkaXJlY3Rvcnk6IHN0cmluZywgcHJpdmF0ZSByZWFkb25seSBtYW5pZmVzdDogQXNzZW1ibHlNYW5pZmVzdCkge1xuICAgIHRoaXMuZGlyZWN0b3J5ID0gZGlyZWN0b3J5O1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgc3RhY2tzIGZyb20gdGhlIG1hbmlmZXN0XG4gICAqIHJldHVybnMgYSBtYXAgb2YgYXJ0aWZhY3RJZCB0byBDbG91ZEZvcm1hdGlvbiB0ZW1wbGF0ZVxuICAgKi9cbiAgcHVibGljIGdldCBzdGFja3MoKTogU3RhY2tJbmZvW10ge1xuICAgIGNvbnN0IHN0YWNrczogU3RhY2tJbmZvW10gPSBbXTtcbiAgICBmb3IgKGNvbnN0IFthcnRpZmFjdElkLCBhcnRpZmFjdF0gb2YgT2JqZWN0LmVudHJpZXModGhpcy5tYW5pZmVzdC5hcnRpZmFjdHMgPz8ge30pKSB7XG4gICAgICBpZiAoYXJ0aWZhY3QudHlwZSAhPT0gQXJ0aWZhY3RUeXBlLkFXU19DTE9VREZPUk1BVElPTl9TVEFDSykgeyBjb250aW51ZTsgfVxuICAgICAgY29uc3QgcHJvcHMgPSBhcnRpZmFjdC5wcm9wZXJ0aWVzIGFzIEF3c0Nsb3VkRm9ybWF0aW9uU3RhY2tQcm9wZXJ0aWVzO1xuICAgICAgY29uc3QgdGVtcGxhdGUgPSBmcy5yZWFkSlNPTlN5bmMocGF0aC5yZXNvbHZlKHRoaXMuZGlyZWN0b3J5LCBwcm9wcy50ZW1wbGF0ZUZpbGUpKTtcbiAgICAgIGNvbnN0IGVudiA9IGFydGlmYWN0LmVudmlyb25tZW50Py5zcGxpdCgvXFwvXFwvPy8pO1xuICAgICAgY29uc3QgdmFsaWRFbnYgPSBlbnYgJiYgZW52Lmxlbmd0aCA9PT0gMztcbiAgICAgIGxldCByZWdpb246IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICAgIGxldCBhY2NvdW50OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgICBpZiAodmFsaWRFbnYpIHtcbiAgICAgICAgcmVnaW9uID0gZW52WzJdO1xuICAgICAgICBhY2NvdW50ID0gZW52WzFdO1xuICAgICAgfVxuICAgICAgaWYgKHJlZ2lvbiA9PT0gJ3Vua25vd24tcmVnaW9uJykge1xuICAgICAgICByZWdpb24gPSB1bmRlZmluZWQ7XG4gICAgICB9XG4gICAgICBpZiAoYWNjb3VudCA9PT0gJ3Vua25vd24tYWNjb3VudCcpIHtcbiAgICAgICAgYWNjb3VudCA9IHVuZGVmaW5lZDtcbiAgICAgIH1cbiAgICAgIHN0YWNrcy5wdXNoKHtcbiAgICAgICAgY29udGVudDogdGVtcGxhdGUsXG4gICAgICAgIHJlZ2lvbixcbiAgICAgICAgYWNjb3VudCxcbiAgICAgICAgbG9va3VwUm9sZTogcHJvcHMubG9va3VwUm9sZSxcbiAgICAgICAgbmFtZTogcHJvcHMuc3RhY2tOYW1lID8/IGFydGlmYWN0SWQsXG4gICAgICB9KTtcbiAgICB9XG4gICAgcmV0dXJuIHN0YWNrcztcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIHN0YWdlcyBpbiB0aGUgYXNzZW1ibHlcbiAgICovXG4gIHB1YmxpYyBnZXQgc3RhZ2VzKCk6IFN0YWdlSW5mb1tdIHtcbiAgICBjb25zdCBzdGFnZXM6IFN0YWdlSW5mb1tdID0gW107XG4gICAgZm9yIChjb25zdCBbYXJ0aWZhY3RJZCwgYXJ0aWZhY3RdIG9mIE9iamVjdC5lbnRyaWVzKHRoaXMubWFuaWZlc3QuYXJ0aWZhY3RzID8/IHt9KSkge1xuICAgICAgaWYgKGFydGlmYWN0LnR5cGUgIT09IEFydGlmYWN0VHlwZS5ORVNURURfQ0xPVURfQVNTRU1CTFkpIHsgY29udGludWU7IH1cbiAgICAgIGNvbnN0IHByb3BzID0gYXJ0aWZhY3QucHJvcGVydGllcyBhcyBOZXN0ZWRDbG91ZEFzc2VtYmx5UHJvcGVydGllcztcbiAgICAgIGNvbnN0IG5lc3RlZEFzc2VtYmx5ID0gQXNzZW1ibHlNYW5pZmVzdFJlYWRlci5mcm9tUGF0aChwYXRoLmpvaW4odGhpcy5kaXJlY3RvcnksIHByb3BzLmRpcmVjdG9yeU5hbWUpKTtcbiAgICAgIHN0YWdlcy5wdXNoKHtcbiAgICAgICAgbmFtZTogcHJvcHMuZGlzcGxheU5hbWUgPz8gYXJ0aWZhY3RJZCxcbiAgICAgICAgc3RhY2tzOiBuZXN0ZWRBc3NlbWJseS5zdGFja3MsXG4gICAgICB9KTtcbiAgICB9XG4gICAgcmV0dXJuIHN0YWdlcztcbiAgfVxufVxuIl19","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Comments = void 0;\n/**\n * Comments controls interacting with GitHub to make comments\n */\nclass Comments {\n constructor(octokit, context) {\n var _a;\n this.octokit = octokit;\n this.context = context;\n const payload = context.payload;\n this.commitSha = payload.pull_request.head.sha;\n if (!payload.pull_request.number) {\n throw new Error('Cannot find PR number, is this from a pull request?');\n }\n this.issueNumber = (_a = this.context.payload.pull_request) === null || _a === void 0 ? void 0 : _a.number;\n }\n /**\n * Find the previous comment with the given hash\n *\n * @param hash the unique hash identifying the stage comment to look for\n * @returns the PR comment id or undefined if there is no previous comment\n */\n async findPrevious(hash) {\n var _a;\n const comments = await this.octokit.rest.issues.listComments({\n ...this.context.repo,\n issue_number: this.issueNumber,\n });\n return (_a = comments.data.find(comment => { var _a; return (_a = comment.body) === null || _a === void 0 ? void 0 : _a.includes(hash); })) === null || _a === void 0 ? void 0 : _a.id;\n }\n /**\n * Update an existing comment\n *\n * @param hash the unique hash identifying the stage comment to look for\n * @param content the content of the comment\n * @param commentId the id of the comment to update\n */\n async updateComment(commentId, hash, content) {\n await this.octokit.rest.issues.updateComment({\n ...this.context.repo,\n body: [\n ``,\n ...content,\n '',\n `_Generated for commit ${this.commitSha}_`,\n ].join('\\n'),\n comment_id: commentId,\n });\n }\n /**\n * Create a new comment\n *\n * @param hash the unique hash identifying the stage comment to look for\n * @param content the content of the comment\n */\n async createComment(hash, content) {\n await this.octokit.rest.issues.createComment({\n ...this.context.repo,\n body: [\n ``,\n ...content,\n '',\n `_Generated for commit ${this.commitSha}_`,\n ].join('\\n'),\n issue_number: this.issueNumber,\n });\n }\n}\nexports.Comments = Comments;\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbWVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9jb21tZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUlBOztHQUVHO0FBQ0gsTUFBYSxRQUFRO0lBR25CLFlBQ21CLE9BQW9DLEVBQ3BDLE9BQWdCOztRQURoQixZQUFPLEdBQVAsT0FBTyxDQUE2QjtRQUNwQyxZQUFPLEdBQVAsT0FBTyxDQUFTO1FBRWpDLE1BQU0sT0FBTyxHQUFHLE9BQU8sQ0FBQyxPQUEyQixDQUFDO1FBQ3BELElBQUksQ0FBQyxTQUFTLEdBQUcsT0FBTyxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDO1FBQy9DLElBQUksQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ2pDLE1BQU0sSUFBSSxLQUFLLENBQUMscURBQXFELENBQUMsQ0FBQztRQUN6RSxDQUFDO1FBQ0QsSUFBSSxDQUFDLFdBQVcsR0FBRyxNQUFBLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLFlBQVksMENBQUUsTUFBTyxDQUFDO0lBQ2hFLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNJLEtBQUssQ0FBQyxZQUFZLENBQUMsSUFBWTs7UUFDcEMsTUFBTSxRQUFRLEdBQUcsTUFBTSxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDO1lBQzNELEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJO1lBQ3BCLFlBQVksRUFBRSxJQUFJLENBQUMsV0FBVztTQUMvQixDQUFDLENBQUM7UUFDSCxPQUFPLE1BQUEsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEVBQUUsV0FBQyxPQUFBLE1BQUEsT0FBTyxDQUFDLElBQUksMENBQUUsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFBLEVBQUEsQ0FBQywwQ0FBRSxFQUFFLENBQUM7SUFDekUsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNJLEtBQUssQ0FBQyxhQUFhLENBQUMsU0FBaUIsRUFBRSxJQUFZLEVBQUUsT0FBaUI7UUFDM0UsTUFBTSxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDO1lBQzNDLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJO1lBQ3BCLElBQUksRUFBRTtnQkFDSixrQ0FBa0MsSUFBSSxNQUFNO2dCQUM1QyxHQUFHLE9BQU87Z0JBQ1YsRUFBRTtnQkFDRix5QkFBeUIsSUFBSSxDQUFDLFNBQVMsR0FBRzthQUMzQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7WUFDWixVQUFVLEVBQUUsU0FBUztTQUN0QixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSSxLQUFLLENBQUMsYUFBYSxDQUFDLElBQVksRUFBRSxPQUFpQjtRQUN4RCxNQUFNLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUM7WUFDM0MsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUk7WUFDcEIsSUFBSSxFQUFFO2dCQUNKLGtDQUFrQyxJQUFJLE1BQU07Z0JBQzVDLEdBQUcsT0FBTztnQkFDVixFQUFFO2dCQUNGLHlCQUF5QixJQUFJLENBQUMsU0FBUyxHQUFHO2FBQzNDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQztZQUNaLFlBQVksRUFBRSxJQUFJLENBQUMsV0FBVztTQUMvQixDQUFDLENBQUM7SUFDTCxDQUFDO0NBQ0Y7QUFuRUQsNEJBbUVDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29udGV4dCB9IGZyb20gJ0BhY3Rpb25zL2dpdGh1Yi9saWIvY29udGV4dCc7XG5pbXBvcnQgeyBHaXRIdWIgfSBmcm9tICdAYWN0aW9ucy9naXRodWIvbGliL3V0aWxzJztcbmltcG9ydCB7IFB1bGxSZXF1ZXN0RXZlbnQgfSBmcm9tICdAb2N0b2tpdC93ZWJob29rcy1kZWZpbml0aW9ucy9zY2hlbWEnO1xuXG4vKipcbiAqIENvbW1lbnRzIGNvbnRyb2xzIGludGVyYWN0aW5nIHdpdGggR2l0SHViIHRvIG1ha2UgY29tbWVudHNcbiAqL1xuZXhwb3J0IGNsYXNzIENvbW1lbnRzIHtcbiAgcHJpdmF0ZSByZWFkb25seSBpc3N1ZU51bWJlcjogbnVtYmVyO1xuICBwcml2YXRlIHJlYWRvbmx5IGNvbW1pdFNoYTogc3RyaW5nO1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IG9jdG9raXQ6IEluc3RhbmNlVHlwZTx0eXBlb2YgR2l0SHViPixcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNvbnRleHQ6IENvbnRleHQsXG4gICkge1xuICAgIGNvbnN0IHBheWxvYWQgPSBjb250ZXh0LnBheWxvYWQgYXMgUHVsbFJlcXVlc3RFdmVudDtcbiAgICB0aGlzLmNvbW1pdFNoYSA9IHBheWxvYWQucHVsbF9yZXF1ZXN0LmhlYWQuc2hhO1xuICAgIGlmICghcGF5bG9hZC5wdWxsX3JlcXVlc3QubnVtYmVyKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0Nhbm5vdCBmaW5kIFBSIG51bWJlciwgaXMgdGhpcyBmcm9tIGEgcHVsbCByZXF1ZXN0PycpO1xuICAgIH1cbiAgICB0aGlzLmlzc3VlTnVtYmVyID0gdGhpcy5jb250ZXh0LnBheWxvYWQucHVsbF9yZXF1ZXN0Py5udW1iZXIhO1xuICB9XG5cbiAgLyoqXG4gICAqIEZpbmQgdGhlIHByZXZpb3VzIGNvbW1lbnQgd2l0aCB0aGUgZ2l2ZW4gaGFzaFxuICAgKlxuICAgKiBAcGFyYW0gaGFzaCB0aGUgdW5pcXVlIGhhc2ggaWRlbnRpZnlpbmcgdGhlIHN0YWdlIGNvbW1lbnQgdG8gbG9vayBmb3JcbiAgICogQHJldHVybnMgdGhlIFBSIGNvbW1lbnQgaWQgb3IgdW5kZWZpbmVkIGlmIHRoZXJlIGlzIG5vIHByZXZpb3VzIGNvbW1lbnRcbiAgICovXG4gIHB1YmxpYyBhc3luYyBmaW5kUHJldmlvdXMoaGFzaDogc3RyaW5nKTogUHJvbWlzZTxudW1iZXIgfCB1bmRlZmluZWQ+IHtcbiAgICBjb25zdCBjb21tZW50cyA9IGF3YWl0IHRoaXMub2N0b2tpdC5yZXN0Lmlzc3Vlcy5saXN0Q29tbWVudHMoe1xuICAgICAgLi4udGhpcy5jb250ZXh0LnJlcG8sXG4gICAgICBpc3N1ZV9udW1iZXI6IHRoaXMuaXNzdWVOdW1iZXIsXG4gICAgfSk7XG4gICAgcmV0dXJuIGNvbW1lbnRzLmRhdGEuZmluZChjb21tZW50ID0+IGNvbW1lbnQuYm9keT8uaW5jbHVkZXMoaGFzaCkpPy5pZDtcbiAgfVxuXG4gIC8qKlxuICAgKiBVcGRhdGUgYW4gZXhpc3RpbmcgY29tbWVudFxuICAgKlxuICAgKiBAcGFyYW0gaGFzaCB0aGUgdW5pcXVlIGhhc2ggaWRlbnRpZnlpbmcgdGhlIHN0YWdlIGNvbW1lbnQgdG8gbG9vayBmb3JcbiAgICogQHBhcmFtIGNvbnRlbnQgdGhlIGNvbnRlbnQgb2YgdGhlIGNvbW1lbnRcbiAgICogQHBhcmFtIGNvbW1lbnRJZCB0aGUgaWQgb2YgdGhlIGNvbW1lbnQgdG8gdXBkYXRlXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgdXBkYXRlQ29tbWVudChjb21tZW50SWQ6IG51bWJlciwgaGFzaDogc3RyaW5nLCBjb250ZW50OiBzdHJpbmdbXSkge1xuICAgIGF3YWl0IHRoaXMub2N0b2tpdC5yZXN0Lmlzc3Vlcy51cGRhdGVDb21tZW50KHtcbiAgICAgIC4uLnRoaXMuY29udGV4dC5yZXBvLFxuICAgICAgYm9keTogW1xuICAgICAgICBgPCEtLSBjZGsgZGlmZiBhY3Rpb24gd2l0aCBoYXNoICR7aGFzaH0gLS0+YCxcbiAgICAgICAgLi4uY29udGVudCxcbiAgICAgICAgJycsXG4gICAgICAgIGBfR2VuZXJhdGVkIGZvciBjb21taXQgJHt0aGlzLmNvbW1pdFNoYX1fYCxcbiAgICAgIF0uam9pbignXFxuJyksXG4gICAgICBjb21tZW50X2lkOiBjb21tZW50SWQsXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIGEgbmV3IGNvbW1lbnRcbiAgICpcbiAgICogQHBhcmFtIGhhc2ggdGhlIHVuaXF1ZSBoYXNoIGlkZW50aWZ5aW5nIHRoZSBzdGFnZSBjb21tZW50IHRvIGxvb2sgZm9yXG4gICAqIEBwYXJhbSBjb250ZW50IHRoZSBjb250ZW50IG9mIHRoZSBjb21tZW50XG4gICAqL1xuICBwdWJsaWMgYXN5bmMgY3JlYXRlQ29tbWVudChoYXNoOiBzdHJpbmcsIGNvbnRlbnQ6IHN0cmluZ1tdKSB7XG4gICAgYXdhaXQgdGhpcy5vY3Rva2l0LnJlc3QuaXNzdWVzLmNyZWF0ZUNvbW1lbnQoe1xuICAgICAgLi4udGhpcy5jb250ZXh0LnJlcG8sXG4gICAgICBib2R5OiBbXG4gICAgICAgIGA8IS0tIGNkayBkaWZmIGFjdGlvbiB3aXRoIGhhc2ggJHtoYXNofSAtLT5gLFxuICAgICAgICAuLi5jb250ZW50LFxuICAgICAgICAnJyxcbiAgICAgICAgYF9HZW5lcmF0ZWQgZm9yIGNvbW1pdCAke3RoaXMuY29tbWl0U2hhfV9gLFxuICAgICAgXS5qb2luKCdcXG4nKSxcbiAgICAgIGlzc3VlX251bWJlcjogdGhpcy5pc3N1ZU51bWJlcixcbiAgICB9KTtcbiAgfVxufVxuIl19","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.StackDiff = void 0;\nconst cloudformation_diff_1 = require(\"@aws-cdk/cloudformation-diff\");\nconst client_cloudformation_1 = require(\"@aws-sdk/client-cloudformation\");\nconst client_sts_1 = require(\"@aws-sdk/client-sts\");\nconst credential_providers_1 = require(\"@aws-sdk/credential-providers\");\n/**\n * StackDiff performs the diff on a stack\n */\nclass StackDiff {\n constructor(stack, allowedDestroyTypes) {\n this.stack = stack;\n this.allowedDestroyTypes = allowedDestroyTypes;\n let credentials;\n // if there is a lookup role then assume that, otherwise\n // just use the default credentials\n credentials = stack.lookupRole ? (0, credential_providers_1.fromTemporaryCredentials)({\n params: {\n RoleArn: stack.lookupRole.arn.replace('${AWS::Partition}', this.getPartition()),\n RoleSessionName: 'cdk-diff-action',\n ExternalId: stack.lookupRole.assumeRoleExternalId,\n DurationSeconds: 900,\n },\n }) : undefined;\n this.credentials = credentials;\n this.client = new client_cloudformation_1.CloudFormationClient({\n credentials,\n region: this.stack.region,\n });\n }\n getPartition() {\n var _a, _b;\n if ((_a = this.stack.region) === null || _a === void 0 ? void 0 : _a.startsWith('us-gov-')) {\n return 'aws-us-gov';\n }\n else if ((_b = this.stack.region) === null || _b === void 0 ? void 0 : _b.startsWith('cn-')) {\n return 'aws-cn';\n }\n else {\n return 'aws';\n }\n }\n /**\n * Validates the environment of the stack and whether it matches\n * the credentials being used by the GitHub action\n *\n * There are two cases that we care about:\n * 1. The stack has an account and region defined _and_ the credentials\n * being used by the GitHub action are for a different account and region.\n * In this case we throw an error because the stack diff would not be correct\n * 2. The stack has an account and region that are _not_ defined. In this case\n * We will return true to indicate that the environment is unknown. This will be used\n * later to print a warning in the stack diff.\n *\n * @returns whether or not the environment is unknown\n */\n async validateEnvironment() {\n let unknownAccount = false;\n let unknownRegion = false;\n const stsClient = new client_sts_1.STSClient({\n credentials: this.credentials,\n });\n const callerIdentity = new client_sts_1.GetCallerIdentityCommand({});\n const identity = await stsClient.send(callerIdentity);\n const configRegion = await this.client.config.region();\n if (!this.stack.region) {\n unknownRegion = true;\n }\n if (!this.stack.account) {\n unknownAccount = true;\n }\n if (this.stack.account && identity.Account !== this.stack.account) {\n throw new Error(`Credentials are for account ${identity.Account} but stack is in account ${this.stack.account}`);\n }\n if (this.stack.region && configRegion !== this.stack.region) {\n throw new Error(`Credentials are for region ${configRegion} but stack is in region ${this.stack.region}`);\n }\n if (unknownAccount || unknownRegion) {\n return `aws://${identity.Account}/${configRegion}`;\n }\n return;\n }\n /** Performs the diff on the CloudFormation stack\n * This reads the existing stack from CFN and then uses the cloudformation-diff\n * package to perform the diff and collect additional information on the type of changes\n */\n async diffStack() {\n const unknownEnv = await this.validateEnvironment();\n const cmd = new client_cloudformation_1.GetTemplateCommand({\n StackName: this.stack.name,\n });\n let existingTemplate = {};\n try {\n const res = await this.client.send(cmd);\n existingTemplate = res.TemplateBody ? JSON.parse(res.TemplateBody) : {};\n }\n catch (e) {\n if (e instanceof client_cloudformation_1.StackNotFoundException) {\n existingTemplate = {};\n }\n }\n try {\n const diff = (0, cloudformation_diff_1.fullDiff)(existingTemplate, this.stack.content);\n const changes = this.evaluateDiff(this.stack.name, diff);\n changes.unknownEnvironment = unknownEnv;\n return {\n diff,\n changes,\n };\n }\n catch (e) {\n console.error('Error getting remote template: ', e);\n throw e;\n }\n }\n evaluateDiff(templateId, templateDiff) {\n const changes = {\n createdResources: 0,\n removedResources: 0,\n updatedResources: 0,\n destructiveChanges: [],\n };\n // go through all the resource differences and check for any\n // \"destructive\" changes\n templateDiff.resources.forEachDifference((logicalId, change) => {\n var _a, _b, _c;\n // if the change is a removal it will not show up as a 'changeImpact'\n // so need to check for it separately, unless it is a resourceType that\n // has been \"allowed\" to be destroyed\n const resourceType = (_b = (_a = change.oldValue) === null || _a === void 0 ? void 0 : _a.Type) !== null && _b !== void 0 ? _b : (_c = change.newValue) === null || _c === void 0 ? void 0 : _c.Type;\n switch (resourceType) {\n case 'AWS::CDK::Metadata':\n return;\n case 'AWS::Lambda::Function':\n const keys = Object.keys(change.propertyUpdates);\n if (keys.length <= 2 &&\n keys.includes('Code') ||\n keys.includes('Metadata')) {\n return;\n }\n }\n if (change.isUpdate) {\n changes.updatedResources += 1;\n }\n else if (change.isRemoval) {\n changes.removedResources += 1;\n }\n else if (change.isAddition) {\n changes.createdResources += 1;\n }\n if (resourceType && this.allowedDestroyTypes.includes(resourceType)) {\n return;\n }\n if (change.isRemoval) {\n changes.destructiveChanges.push({\n impact: cloudformation_diff_1.ResourceImpact.WILL_DESTROY,\n logicalId,\n stackName: templateId,\n });\n }\n else {\n switch (change.changeImpact) {\n case cloudformation_diff_1.ResourceImpact.MAY_REPLACE:\n case cloudformation_diff_1.ResourceImpact.WILL_ORPHAN:\n case cloudformation_diff_1.ResourceImpact.WILL_DESTROY:\n case cloudformation_diff_1.ResourceImpact.WILL_REPLACE:\n changes.destructiveChanges.push({\n impact: change.changeImpact,\n logicalId,\n stackName: templateId,\n });\n break;\n }\n }\n });\n return changes;\n }\n}\nexports.StackDiff = StackDiff;\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlmZi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9kaWZmLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLHNFQUEwRztBQUMxRywwRUFBa0g7QUFDbEgsb0RBQTBFO0FBQzFFLHdFQUF5RTtBQTBEekU7O0dBRUc7QUFDSCxNQUFhLFNBQVM7SUFHcEIsWUFDbUIsS0FBZ0IsRUFDaEIsbUJBQTZCO1FBRDdCLFVBQUssR0FBTCxLQUFLLENBQVc7UUFDaEIsd0JBQW1CLEdBQW5CLG1CQUFtQixDQUFVO1FBRTlDLElBQUksV0FBc0QsQ0FBQztRQUMzRCx3REFBd0Q7UUFDeEQsbUNBQW1DO1FBQ25DLFdBQVcsR0FBRyxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxJQUFBLCtDQUF3QixFQUFDO1lBQ3hELE1BQU0sRUFBRTtnQkFDTixPQUFPLEVBQUUsS0FBSyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLG1CQUFtQixFQUFFLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztnQkFDL0UsZUFBZSxFQUFFLGlCQUFpQjtnQkFDbEMsVUFBVSxFQUFFLEtBQUssQ0FBQyxVQUFVLENBQUMsb0JBQW9CO2dCQUNqRCxlQUFlLEVBQUUsR0FBRzthQUNyQjtTQUNGLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO1FBQ2YsSUFBSSxDQUFDLFdBQVcsR0FBRyxXQUFXLENBQUM7UUFDL0IsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLDRDQUFvQixDQUFDO1lBQ3JDLFdBQVc7WUFDWCxNQUFNLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNO1NBQzFCLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFTyxZQUFZOztRQUNsQixJQUFJLE1BQUEsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLDBDQUFFLFVBQVUsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDO1lBQzdDLE9BQU8sWUFBWSxDQUFDO1FBQ3RCLENBQUM7YUFBTSxJ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QVMsRUFBRSxVQUFVO3lCQUN0QixDQUFDLENBQUM7d0JBQ0gsTUFBTTtnQkFDVixDQUFDO1lBQ0gsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFDO1FBQ0gsT0FBTyxPQUFPLENBQUM7SUFDakIsQ0FBQztDQUNGO0FBOUtELDhCQThLQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFJlc291cmNlRGlmZmVyZW5jZSwgUmVzb3VyY2VJbXBhY3QsIFRlbXBsYXRlRGlmZiwgZnVsbERpZmYgfSBmcm9tICdAYXdzLWNkay9jbG91ZGZvcm1hdGlvbi1kaWZmJztcbmltcG9ydCB7IENsb3VkRm9ybWF0aW9uQ2xpZW50LCBHZXRUZW1wbGF0ZUNvbW1hbmQsIFN0YWNrTm90Rm91bmRFeGNlcHRpb24gfSBmcm9tICdAYXdzLXNkay9jbGllbnQtY2xvdWRmb3JtYXRpb24nO1xuaW1wb3J0IHsgU1RTQ2xpZW50LCBHZXRDYWxsZXJJZGVudGl0eUNvbW1hbmQgfSBmcm9tICdAYXdzLXNkay9jbGllbnQtc3RzJztcbmltcG9ydCB7IGZyb21UZW1wb3JhcnlDcmVkZW50aWFscyB9IGZyb20gJ0Bhd3Mtc2RrL2NyZWRlbnRpYWwtcHJvdmlkZXJzJztcbmltcG9ydCB7IEF3c0NyZWRlbnRpYWxJZGVudGl0eVByb3ZpZGVyIH0gZnJvbSAnQHNtaXRoeS90eXBlcyc7XG5pbXBvcnQgeyBTdGFja0luZm8gfSBmcm9tICcuL2Fzc2VtYmx5JztcblxuLyoqXG4gKiBEZXRhaWxzIG9uIHdoYXQgY2hhbmdlcyBhcmUgb2NjdXJyaW5nIGluIHRoaXMgc3RhY2tcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDaGFuZ2VEZXRhaWxzIHtcbiAgLyoqXG4gICAqIFRoZSBudW1iZXIgb2YgcmVzb3VyY2VzIHRoYXQgYXJlIGJlaW5nIHVwZGF0ZWRcbiAgICovXG4gIHVwZGF0ZWRSZXNvdXJjZXM6IG51bWJlcjtcblxuICAvKipcbiAgICogVGhlIG51bWJlciBvZiByZXNvdXJjZXMgdGhhdCBhcmUgYmVpbmcgcmVtb3ZlZFxuICAgKi9cbiAgcmVtb3ZlZFJlc291cmNlczogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBUaGUgbnVtYmVyIG9mIHJlc291cmNlcyB0aGF0IGFyZSBiZWluZyBjcmVhdGVkXG4gICAqL1xuICBjcmVhdGVkUmVzb3VyY2VzOiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIEluZm9ybWF0aW9uIG9uIGFueSBkZXN0cnVjdGl2ZSBjaGFuZ2VzXG4gICAqL1xuICBkZXN0cnVjdGl2ZUNoYW5nZXM6IERlc3RydWN0aXZlQ2hhbmdlW107XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhpcyBzdGFjayBoYXMgYW4gdW5rbm93biBlbnYuIElmIHRoYXQgaXMgdGhlIGNhc2VcbiAgICogdGhlbiB0aGlzIHJldHVybnMgdGhlIGVudmlyb25tZW50IGNyZWRlbnRpYWxzIHRoYXQgYXJlIGJlaW5nIHVzZWRcbiAgICogaW4gdGhlIGZvcm1hdCBhd3M6Ly88YWNjb3VudD4vPHJlZ2lvbj5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBhY2NvdW50IGlzIGtub3duXG4gICAqL1xuICB1bmtub3duRW52aXJvbm1lbnQ/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogSW5mb3JtYXRpb24gb24gYW55IGRlc3RydWN0aXZlIGNoYW5nZXNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBEZXN0cnVjdGl2ZUNoYW5nZSB7XG4gIC8qKlxuICAgKiBUaGUgbG9naWNhbElkIG9mIHRoZSByZXNvdXJjZSB3aXRoIGEgZGVzdHJ1Y3RpdmUgY2hhbmdlXG4gICAqL1xuICByZWFkb25seSBsb2dpY2FsSWQ6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIHN0YWNrIHRoYXQgY29udGFpbnMgdGhlIGRlc3RydWN0aXZlIGNoYW5nZVxuICAgKi9cbiAgcmVhZG9ubHkgc3RhY2tOYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBpbXBhY3Qgb2YgdGhlIGRlc3RydWN0aXZlIGNoYW5nZVxuICAgKi9cbiAgcmVhZG9ubHkgaW1wYWN0OiBSZXNvdXJjZUltcGFjdDtcbn1cblxuLyoqXG4gKiBTdGFja0RpZmYgcGVyZm9ybXMgdGhlIGRpZmYgb24gYSBzdGFja1xuICovXG5leHBvcnQgY2xhc3MgU3RhY2tEaWZmIHtcbiAgcHJpdmF0ZSByZWFkb25seSBjbGllbnQ6IENsb3VkRm9ybWF0aW9uQ2xpZW50O1xuICBwcml2YXRlIHJlYWRvbmx5IGNyZWRlbnRpYWxzOiBBd3NDcmVkZW50aWFsSWRlbnRpdHlQcm92aWRlciB8IHVuZGVmaW5lZDtcbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWFkb25seSBzdGFjazogU3RhY2tJbmZvLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgYWxsb3dlZERlc3Ryb3lUeXBlczogc3RyaW5nW10sXG4gICkge1xuICAgIGxldCBjcmVkZW50aWFsczogQXdzQ3JlZGVudGlhbElkZW50aXR5UHJvdmlkZXIgfCB1bmRlZmluZWQ7XG4gICAgLy8gaWYgdGhlcmUgaXMgYSBsb29rdXAgcm9sZSB0aGVuIGFzc3VtZSB0aGF0LCBvdGhlcndpc2VcbiAgICAvLyBqdXN0IHVzZSB0aGUgZGVmYXVsdCBjcmVkZW50aWFsc1xuICAgIGNyZWRlbnRpYWxzID0gc3RhY2subG9va3VwUm9sZSA/IGZyb21UZW1wb3JhcnlDcmVkZW50aWFscyh7XG4gICAgICBwYXJhbXM6IHtcbiAgICAgICAgUm9sZUFybjogc3RhY2subG9va3VwUm9sZS5hcm4ucmVwbGFjZSgnJHtBV1M6OlBhcnRpdGlvbn0nLCB0aGlzLmdldFBhcnRpdGlvbigpKSxcbiAgICAgICAgUm9sZVNlc3Npb25OYW1lOiAnY2RrLWRpZmYtYWN0aW9uJyxcbiAgICAgICAgRXh0ZXJuYWxJZDogc3RhY2subG9va3VwUm9sZS5hc3N1bWVSb2xlRXh0ZXJuYWxJZCxcbiAgICAgICAgRHVyYXRpb25TZWNvbmRzOiA5MDAsXG4gICAgICB9LFxuICAgIH0pIDogdW5kZWZpbmVkO1xuICAgIHRoaXMuY3JlZGVudGlhbHMgPSBjcmVkZW50aWFscztcbiAgICB0aGlzLmNsaWVudCA9IG5ldyBDbG91ZEZvcm1hdGlvbkNsaWVudCh7XG4gICAgICBjcmVkZW50aWFscyxcbiAgICAgIHJlZ2lvbjogdGhpcy5zdGFjay5yZWdpb24sXG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGdldFBhcnRpdGlvbigpOiBzdHJpbmcge1xuICAgIGlmICh0aGlzLnN0YWNrLnJlZ2lvbj8uc3RhcnRzV2l0aCgndXMtZ292LScpKSB7XG4gICAgICByZXR1cm4gJ2F3cy11cy1nb3YnO1xuICAgIH0gZWxzZSBpZiAodGhpcy5zdGFjay5yZWdpb24/LnN0YXJ0c1dpdGgoJ2NuLScpKSB7XG4gICAgICByZXR1cm4gJ2F3cy1jbic7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiAnYXdzJztcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogVmFsaWRhdGVzIHRoZSBlbnZpcm9ubWVudCBvZiB0aGUgc3RhY2sgYW5kIHdoZXRoZXIgaXQgbWF0Y2hlc1xuICAgKiB0aGUgY3JlZGVudGlhbHMgYmVpbmcgdXNlZCBieSB0aGUgR2l0SHViIGFjdGlvblxuICAgKlxuICAgKiBUaGVyZSBhcmUgdHdvIGNhc2VzIHRoYXQgd2UgY2FyZSBhYm91dDpcbiAgICogMS4gVGhlIHN0YWNrIGhhcyBhbiBhY2NvdW50IGFuZCByZWdpb24gZGVmaW5lZCBfYW5kXyB0aGUgY3JlZGVudGlhbHNcbiAgICogICBiZWluZyB1c2VkIGJ5IHRoZSBHaXRIdWIgYWN0aW9uIGFyZSBmb3IgYSBkaWZmZXJlbnQgYWNjb3VudCBhbmQgcmVnaW9uLlxuICAgKiAgIEluIHRoaXMgY2FzZSB3ZSB0aHJvdyBhbiBlcnJvciBiZWNhdXNlIHRoZSBzdGFjayBkaWZmIHdvdWxkIG5vdCBiZSBjb3JyZWN0XG4gICAqIDIuIFRoZSBzdGFjayBoYXMgYW4gYWNjb3VudCBhbmQgcmVnaW9uIHRoYXQgYXJlIF9ub3RfIGRlZmluZWQuIEluIHRoaXMgY2FzZVxuICAgKiAgICBXZSB3aWxsIHJldHVybiB0cnVlIHRvIGluZGljYXRlIHRoYXQgdGhlIGVudmlyb25tZW50IGlzIHVua25vd24uIFRoaXMgd2lsbCBiZSB1c2VkXG4gICAqICAgIGxhdGVyIHRvIHByaW50IGEgd2FybmluZyBpbiB0aGUgc3RhY2sgZGlmZi5cbiAgICpcbiAgICogQHJldHVybnMgd2hldGhlciBvciBub3QgdGhlIGVudmlyb25tZW50IGlzIHVua25vd25cbiAgICovXG4gIHByaXZhdGUgYXN5bmMgdmFsaWRhdGVFbnZpcm9ubWVudCgpOiBQcm9taXNlPHN0cmluZyB8IHVuZGVmaW5lZD4ge1xuICAgIGxldCB1bmtub3duQWNjb3VudCA9IGZhbHNlO1xuICAgIGxldCB1bmtub3duUmVnaW9uID0gZmFsc2U7XG4gICAgY29uc3Qgc3RzQ2xpZW50ID0gbmV3IFNUU0NsaWVudCh7XG4gICAgICBjcmVkZW50aWFsczogdGhpcy5jcmVkZW50aWFscyxcbiAgICB9KTtcbiAgICBjb25zdCBjYWxsZXJJZGVudGl0eSA9IG5ldyBHZXRDYWxsZXJJZGVudGl0eUNvbW1hbmQoeyB9KTtcbiAgICBjb25zdCBpZGVudGl0eSA9IGF3YWl0IHN0c0NsaWVudC5zZW5kKGNhbGxlcklkZW50aXR5KTtcbiAgICBjb25zdCBjb25maWdSZWdpb24gPSBhd2FpdCB0aGlzLmNsaWVudC5jb25maWcucmVnaW9uKCk7XG4gICAgaWYgKCF0aGlzLnN0YWNrLnJlZ2lvbikge1xuICAgICAgdW5rbm93blJlZ2lvbiA9IHRydWU7XG4gICAgfVxuICAgIGlmICghdGhpcy5zdGFjay5hY2NvdW50KSB7XG4gICAgICB1bmtub3duQWNjb3VudCA9IHRydWU7XG4gICAgfVxuICAgIGlmICh0aGlzLnN0YWNrLmFjY291bnQgJiYgaWRlbnRpdHkuQWNjb3VudCAhPT0gdGhpcy5zdGFjay5hY2NvdW50KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYENyZWRlbnRpYWxzIGFyZSBmb3IgYWNjb3VudCAke2lkZW50aXR5LkFjY291bnR9IGJ1dCBzdGFjayBpcyBpbiBhY2NvdW50ICR7dGhpcy5zdGFjay5hY2NvdW50fWApO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnN0YWNrLnJlZ2lvbiAmJiBjb25maWdSZWdpb24gIT09IHRoaXMuc3RhY2sucmVnaW9uKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYENyZWRlbnRpYWxzIGFyZSBmb3IgcmVnaW9uICR7Y29uZmlnUmVnaW9ufSBidXQgc3RhY2sgaXMgaW4gcmVnaW9uICR7dGhpcy5zdGFjay5yZWdpb259YCk7XG4gICAgfVxuXG4gICAgaWYgKHVua25vd25BY2NvdW50IHx8IHVua25vd25SZWdpb24pIHtcbiAgICAgIHJldHVybiBgYXdzOi8vJHtpZGVudGl0eS5BY2NvdW50fS8ke2NvbmZpZ1JlZ2lvbn1gO1xuICAgIH1cblxuICAgIHJldHVybjtcbiAgfVxuXG4gIC8qKiBQZXJmb3JtcyB0aGUgZGlmZiBvbiB0aGUgQ2xvdWRGb3JtYXRpb24gc3RhY2tcbiAgICogVGhpcyByZWFkcyB0aGUgZXhpc3Rpbmcgc3RhY2sgZnJvbSBDRk4gYW5kIHRoZW4gdXNlcyB0aGUgY2xvdWRmb3JtYXRpb24tZGlmZlxuICAgKiBwYWNrYWdlIHRvIHBlcmZvcm0gdGhlIGRpZmYgYW5kIGNvbGxlY3QgYWRkaXRpb25hbCBpbmZvcm1hdGlvbiBvbiB0aGUgdHlwZSBvZiBjaGFuZ2VzXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgZGlmZlN0YWNrKCk6IFByb21pc2U8eyBkaWZmOiBUZW1wbGF0ZURpZmY7IGNoYW5nZXM6IENoYW5nZURldGFpbHMgfT4ge1xuICAgIGNvbnN0IHVua25vd25FbnYgPSBhd2FpdCB0aGlzLnZhbGlkYXRlRW52aXJvbm1lbnQoKTtcblxuICAgIGNvbnN0IGNtZCA9IG5ldyBHZXRUZW1wbGF0ZUNvbW1hbmQoe1xuICAgICAgU3RhY2tOYW1lOiB0aGlzLnN0YWNrLm5hbWUsXG4gICAgfSk7XG4gICAgbGV0IGV4aXN0aW5nVGVtcGxhdGU6IHsgW2tleTogc3RyaW5nXTogYW55IH0gPSB7fTtcbiAgICB0cnkge1xuICAgICAgY29uc3QgcmVzID0gYXdhaXQgdGhpcy5jbGllbnQuc2VuZChjbWQpO1xuICAgICAgZXhpc3RpbmdUZW1wbGF0ZSA9IHJlcy5UZW1wbGF0ZUJvZHkgPyBKU09OLnBhcnNlKHJlcy5UZW1wbGF0ZUJvZHkpIDoge307XG4gICAgfSBjYXRjaCAoZTogYW55KSB7XG4gICAgICBpZiAoZSBpbnN0YW5jZW9mIFN0YWNrTm90Rm91bmRFeGNlcHRpb24pIHtcbiAgICAgICAgZXhpc3RpbmdUZW1wbGF0ZSA9IHt9O1xuICAgICAgfVxuICAgIH1cbiAgICB0cnkge1xuICAgICAgY29uc3QgZGlmZiA9IGZ1bGxEaWZmKGV4aXN0aW5nVGVtcGxhdGUsIHRoaXMuc3RhY2suY29udGVudCk7XG4gICAgICBjb25zdCBjaGFuZ2VzID0gdGhpcy5ldmFsdWF0ZURpZmYodGhpcy5zdGFjay5uYW1lLCBkaWZmKTtcbiAgICAgIGNoYW5nZXMudW5rbm93bkVudmlyb25tZW50ID0gdW5rbm93bkVudjtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGRpZmYsXG4gICAgICAgIGNoYW5nZXMsXG4gICAgICB9O1xuXG4gICAgfSBjYXRjaCAoZTogYW55KSB7XG4gICAgICBjb25zb2xlLmVycm9yKCdFcnJvciBnZXR0aW5nIHJlbW90ZSB0ZW1wbGF0ZTogJywgZSk7XG4gICAgICB0aHJvdyBlO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZXZhbHVhdGVEaWZmKHRlbXBsYXRlSWQ6IHN0cmluZywgdGVtcGxhdGVEaWZmOiBUZW1wbGF0ZURpZmYpOiBDaGFuZ2VEZXRhaWxzIHtcbiAgICBjb25zdCBjaGFuZ2VzOiBDaGFuZ2VEZXRhaWxzID0ge1xuICAgICAgY3JlYXRlZFJlc291cmNlczogMCxcbiAgICAgIHJlbW92ZWRSZXNvdXJjZXM6IDAsXG4gICAgICB1cGRhdGVkUmVzb3VyY2VzOiAwLFxuICAgICAgZGVzdHJ1Y3RpdmVDaGFuZ2VzOiBbXSxcbiAgICB9O1xuICAgIC8vIGdvIHRocm91Z2ggYWxsIHRoZSByZXNvdXJjZSBkaWZmZXJlbmNlcyBhbmQgY2hlY2sgZm9yIGFueVxuICAgIC8vIFwiZGVzdHJ1Y3RpdmVcIiBjaGFuZ2VzXG4gICAgdGVtcGxhdGVEaWZmLnJlc291cmNlcy5mb3JFYWNoRGlmZmVyZW5jZSgobG9naWNhbElkOiBzdHJpbmcsIGNoYW5nZTogUmVzb3VyY2VEaWZmZXJlbmNlKSA9PiB7XG4gICAgICAvLyBpZiB0aGUgY2hhbmdlIGlzIGEgcmVtb3ZhbCBpdCB3aWxsIG5vdCBzaG93IHVwIGFzIGEgJ2NoYW5nZUltcGFjdCdcbiAgICAgIC8vIHNvIG5lZWQgdG8gY2hlY2sgZm9yIGl0IHNlcGFyYXRlbHksIHVubGVzcyBpdCBpcyBhIHJlc291cmNlVHlwZSB0aGF0XG4gICAgICAvLyBoYXMgYmVlbiBcImFsbG93ZWRcIiB0byBiZSBkZXN0cm95ZWRcbiAgICAgIGNvbnN0IHJlc291cmNlVHlwZSA9IGNoYW5nZS5vbGRWYWx1ZT8uVHlwZSA/PyBjaGFuZ2UubmV3VmFsdWU/LlR5cGU7XG4gICAgICBzd2l0Y2ggKHJlc291cmNlVHlwZSkge1xuICAgICAgICBjYXNlICdBV1M6OkNESzo6TWV0YWRhdGEnOlxuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgY2FzZSAnQVdTOjpMYW1iZGE6OkZ1bmN0aW9uJzpcbiAgICAgICAgICBjb25zdCBrZXlzID0gT2JqZWN0LmtleXMoY2hhbmdlLnByb3BlcnR5VXBkYXRlcyk7XG4gICAgICAgICAgaWYgKFxuICAgICAgICAgICAga2V5cy5sZW5ndGggPD0gMiAmJlxuICAgICAgICAgICAga2V5cy5pbmNsdWRlcygnQ29kZScpIHx8XG4gICAgICAgICAgICBrZXlzLmluY2x1ZGVzKCdNZXRhZGF0YScpXG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKGNoYW5nZS5pc1VwZGF0ZSkge1xuICAgICAgICBjaGFuZ2VzLnVwZGF0ZWRSZXNvdXJjZXMgKz0gMTtcbiAgICAgIH0gZWxzZSBpZiAoY2hhbmdlLmlzUmVtb3ZhbCkge1xuICAgICAgICBjaGFuZ2VzLnJlbW92ZWRSZXNvdXJjZXMgKz0gMTtcbiAgICAgIH0gZWxzZSBpZiAoY2hhbmdlLmlzQWRkaXRpb24pIHtcbiAgICAgICAgY2hhbmdlcy5jcmVhdGVkUmVzb3VyY2VzICs9IDE7XG4gICAgICB9XG4gICAgICBpZiAocmVzb3VyY2VUeXBlICYmIHRoaXMuYWxsb3dlZERlc3Ryb3lUeXBlcy5pbmNsdWRlcyhyZXNvdXJjZVR5cGUpKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgaWYgKGNoYW5nZS5pc1JlbW92YWwpIHtcbiAgICAgICAgY2hhbmdlcy5kZXN0cnVjdGl2ZUNoYW5nZXMucHVzaCh7XG4gICAgICAgICAgaW1wYWN0OiBSZXNvdXJjZUltcGFjdC5XSUxMX0RFU1RST1ksXG4gICAgICAgICAgbG9naWNhbElkLFxuICAgICAgICAgIHN0YWNrTmFtZTogdGVtcGxhdGVJZCxcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzd2l0Y2ggKGNoYW5nZS5jaGFuZ2VJbXBhY3QpIHtcbiAgICAgICAgICBjYXNlIFJlc291cmNlSW1wYWN0Lk1BWV9SRVBMQUNFOlxuICAgICAgICAgIGNhc2UgUmVzb3VyY2VJbXBhY3QuV0lMTF9PUlBIQU46XG4gICAgICAgICAgY2FzZSBSZXNvdXJjZUltcGFjdC5XSUxMX0RFU1RST1k6XG4gICAgICAgICAgY2FzZSBSZXNvdXJjZUltcGFjdC5XSUxMX1JFUExBQ0U6XG4gICAgICAgICAgICBjaGFuZ2VzLmRlc3RydWN0aXZlQ2hhbmdlcy5wdXNoKHtcbiAgICAgICAgICAgICAgaW1wYWN0OiBjaGFuZ2UuY2hhbmdlSW1wYWN0LFxuICAgICAgICAgICAgICBsb2dpY2FsSWQsXG4gICAgICAgICAgICAgIHN0YWNrTmFtZTogdGVtcGxhdGVJZCxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gY2hhbmdlcztcbiAgfVxufVxuIl19","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst core = __importStar(require(\"@actions/core\"));\nconst action_1 = require(\"./action\");\n(0, action_1.run)().catch((error) => {\n core.setFailed(error.message);\n});\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLG9EQUFzQztBQUN0QyxxQ0FBK0I7QUFFL0IsSUFBQSxZQUFHLEdBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxLQUFVLEVBQUUsRUFBRTtJQUN6QixJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUNoQyxDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIGNvcmUgZnJvbSAnQGFjdGlvbnMvY29yZSc7XG5pbXBvcnQgeyBydW4gfSBmcm9tICcuL2FjdGlvbic7XG5cbnJ1bigpLmNhdGNoKChlcnJvcjogYW55KSA9PiB7XG4gIGNvcmUuc2V0RmFpbGVkKGVycm9yLm1lc3NhZ2UpO1xufSk7XG4iXX0=","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.StageProcessor = void 0;\nconst crypto = __importStar(require(\"crypto\"));\nconst stream_1 = require(\"stream\");\nconst string_decoder_1 = require(\"string_decoder\");\nconst cloudformation_diff_1 = require(\"@aws-cdk/cloudformation-diff\");\nconst diff_1 = require(\"./diff\");\n// the max comment length allowed by GitHub\nconst MAX_COMMENT_LENGTH = 65536;\n/**\n * StageProcessor processes a CDK stage and creates a comment on the GitHub PR\n * detailing the stack diffs\n */\nclass StageProcessor {\n constructor(stages, allowedDestroyTypes) {\n this.stages = stages;\n this.allowedDestroyTypes = allowedDestroyTypes;\n this.stageComments = {};\n this.stages.forEach(stage => {\n this.stageComments[stage.name] = {\n destructiveChanges: 0,\n stackComments: stage.stacks.reduce((prev, curr) => {\n prev[curr.name] = [];\n return prev;\n }, {}),\n hash: md5Hash(JSON.stringify({\n stageName: stage.name,\n ...stage.stacks.reduce((prev, curr) => {\n prev.stacks.push({\n name: curr.name,\n lookupRole: curr.lookupRole,\n account: curr.account,\n region: curr.region,\n });\n return prev;\n }, { stacks: [] }), // we don't want the content to be part of the hash\n })),\n };\n });\n }\n /**\n * Process all of the stages. Once this has been run\n * the comment can be created with `commentStages()`\n */\n async processStages(ignoreDestructiveChanges = []) {\n for (const stage of this.stages) {\n for (const stack of stage.stacks) {\n try {\n const { comment, changes } = await this.diffStack(stack);\n this.stageComments[stage.name].stackComments[stack.name].push(...comment);\n if (!ignoreDestructiveChanges.includes(stage.name)) {\n this.stageComments[stage.name].destructiveChanges += changes;\n }\n }\n catch (e) {\n console.error('Error processing stages: ', e);\n throw e;\n }\n }\n }\n }\n async commentStacks(comments) {\n for (const [stageName, stage] of Object.entries(this.stageComments)) {\n for (const [stackName, comment] of Object.entries(stage.stackComments)) {\n const hash = md5Hash(JSON.stringify({\n stageName,\n stackName,\n }));\n const stackComment = this.getCommentForStack(stageName, stackName, comment);\n if (stackComment.join('\\n').length > MAX_COMMENT_LENGTH) {\n throw new Error(`Comment for stack ${stackName} is too long, please report this as a bug https://github.com/corymhall/cdk-diff-action/issues/new`);\n }\n const previous = await comments.findPrevious(hash);\n if (previous) {\n await comments.updateComment(previous, hash, stackComment);\n }\n else {\n await comments.createComment(hash, stackComment);\n }\n }\n }\n }\n async commentStage(comments, hash, comment) {\n const previous = await comments.findPrevious(hash);\n if (previous) {\n await comments.updateComment(previous, hash, comment);\n }\n else {\n await comments.createComment(hash, comment);\n }\n }\n /**\n * Create the GitHub comment for the stage\n * This will try to create a single comment per stage, but if the comment\n * is too long it will create a comment per stack\n * @param comments the comments object to use to create the comment\n */\n async commentStages(comments) {\n for (const [stageName, info] of Object.entries(this.stageComments)) {\n const stageComment = this.getCommentForStage(stageName);\n if (stageComment.join('\\n').length > MAX_COMMENT_LENGTH) {\n await this.commentStacks(comments);\n }\n else {\n await this.commentStage(comments, info.hash, stageComment);\n }\n }\n }\n /**\n * Returns whether or not there are destructive changes in this stage\n */\n get hasDestructiveChanges() {\n for (const comments of Object.values(this.stageComments)) {\n if (comments.destructiveChanges) {\n return true;\n }\n }\n return false;\n }\n async diffStack(stack) {\n try {\n const stackDiff = new diff_1.StackDiff(stack, this.allowedDestroyTypes);\n const { diff, changes } = await stackDiff.diffStack();\n return {\n comment: this.formatStackComment(stack.name, diff, changes),\n changes: changes.destructiveChanges.length,\n };\n }\n catch (e) {\n console.error('Error performing stack diff: ', e);\n throw e;\n }\n }\n getEmoji(changes) {\n if (changes.destructiveChanges.length || changes.removedResources) {\n return ':x:';\n }\n else if (changes.updatedResources) {\n return ':yellow_circle:';\n }\n else if (changes.createdResources) {\n return ':sparkle:';\n }\n return ':white_check_mark:';\n }\n formatStackComment(stackName, diff, changes) {\n const output = [];\n const emoji = this.getEmoji(changes);\n if (diff.isEmpty) {\n output.push(`No Changes for stack: ${stackName} ${emoji}`);\n return output;\n }\n output.push(...[\n `#### Diff for stack: ${stackName} - ` +\n `***${changes.createdResources} to add, ${changes.updatedResources} to update, ${changes.removedResources} to destroy*** ` +\n emoji,\n '
Details',\n '',\n ]);\n if (changes.unknownEnvironment) {\n output.push('> [!INFO]\\n> ***Unknown Environment*** :information_source:');\n output.push('> This stack has an unknown environment which may mean the diff is performed against the wrong environment');\n output.push(`> Environmment used ${changes.unknownEnvironment}`);\n output.push('');\n }\n if (changes.destructiveChanges.length) {\n output.push('');\n output.push('> [!WARNING]\\n> ***Destructive Changes*** :bangbang:'),\n changes.destructiveChanges.forEach(change => {\n output.push(`> **Stack: ${change.stackName} - Resource: ${change.logicalId} - Impact:** ***${change.impact}***`);\n output.push('');\n });\n }\n const writable = new StringWritable({});\n (0, cloudformation_diff_1.formatDifferences)(writable, diff);\n output.push('');\n output.push('```shell');\n output.push(writable.data);\n output.push('```');\n output.push('
');\n output.push('');\n return output;\n }\n getCommentForStack(stageName, stackName, comment) {\n const output = [];\n if (!comment.length) {\n return output;\n }\n output.push(`### Diff for stack: ${stageName} / ${stackName}`);\n return output.concat(comment);\n }\n getCommentForStage(stageName) {\n const output = [];\n const stageComments = this.stageComments[stageName];\n const comments = Object.values(this.stageComments[stageName].stackComments).flatMap(x => x);\n if (!comments.length) {\n return output;\n }\n output.push(`### Diff for stage: ${stageName}`);\n if (stageComments.destructiveChanges) {\n output.push(`> [!WARNING]\\n> ${stageComments.destructiveChanges} Destructive Changes`);\n output.push('');\n }\n return output.concat(comments);\n }\n}\nexports.StageProcessor = StageProcessor;\nclass StringWritable extends stream_1.Writable {\n constructor(options) {\n super(options);\n this._decoder = new string_decoder_1.StringDecoder();\n this.data = '';\n }\n _write(chunk, encoding, callback) {\n if (encoding === 'buffer') {\n chunk = this._decoder.write(chunk);\n }\n this.data += chunk;\n callback();\n }\n _final(callback) {\n this.data += this._decoder.end();\n callback();\n }\n}\nfunction md5Hash(val) {\n return crypto.createHash('md5').update(val).digest('hex');\n}\n;\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhZ2UtcHJvY2Vzc29yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL3N0YWdlLXByb2Nlc3Nvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLCtDQUFpQztBQUNqQyxtQ0FBbUQ7QUFDbkQsbURBQStDO0FBQy9DLHNFQUErRTtBQUcvRSxpQ0FBa0Q7QUFFbEQsMkNBQTJDO0FBQzNDLE1BQU0sa0JBQWtCLEdBQUcsS0FBSyxDQUFDO0FBd0JqQzs7O0dBR0c7QUFDSCxNQUFhLGNBQWM7SUFFekIsWUFDbUIsTUFBbUIsRUFDbkIsbUJBQTZCO1FBRDdCLFdBQU0sR0FBTixNQUFNLENBQWE7UUFDbkIsd0JBQW1CLEdBQW5CLG1CQUFtQixDQUFVO1FBSC9CLGtCQUFhLEdBQTBDLEVBQUUsQ0FBQztRQUt6RSxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUMxQixJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRztnQkFDL0Isa0JBQWtCLEVBQUUsQ0FBQztnQkFDckIsYUFBYSxFQUFFLEtBQUssQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxFQUFFO29CQUNoRCxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztvQkFDckIsT0FBTyxJQUFJLENBQUM7Z0JBQ2QsQ0FBQyxFQUFFLEVBQXVDLENBQUM7Z0JBQzNDLElBQUksRUFBRSxPQUFPLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQztvQkFDM0IsU0FBUyxFQUFFLEtBQUssQ0FBQyxJQUFJO29CQUNyQixHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxFQUFFO3dCQUNwQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQzs0QkFDZixJ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LENBQUMsR0FBVztJQUMxQixPQUFPLE1BQU0sQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUM1RCxDQUFDO0FBQUEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIGNyeXB0byBmcm9tICdjcnlwdG8nO1xuaW1wb3J0IHsgV3JpdGFibGUsIFdyaXRhYmxlT3B0aW9ucyB9IGZyb20gJ3N0cmVhbSc7XG5pbXBvcnQgeyBTdHJpbmdEZWNvZGVyIH0gZnJvbSAnc3RyaW5nX2RlY29kZXInO1xuaW1wb3J0IHsgVGVtcGxhdGVEaWZmLCBmb3JtYXREaWZmZXJlbmNlcyB9IGZyb20gJ0Bhd3MtY2RrL2Nsb3VkZm9ybWF0aW9uLWRpZmYnO1xuaW1wb3J0IHsgU3RhY2tJbmZvLCBTdGFnZUluZm8gfSBmcm9tICcuL2Fzc2VtYmx5JztcbmltcG9ydCB7IENvbW1lbnRzIH0gZnJvbSAnLi9jb21tZW50JztcbmltcG9ydCB7IENoYW5nZURldGFpbHMsIFN0YWNrRGlmZiB9IGZyb20gJy4vZGlmZic7XG5cbi8vIHRoZSBtYXggY29tbWVudCBsZW5ndGggYWxsb3dlZCBieSBHaXRIdWJcbmNvbnN0IE1BWF9DT01NRU5UX0xFTkdUSCA9IDY1NTM2O1xuXG4vKipcbiAqIEluZm9ybWF0aW9uIG5lZWRlZCB0byBtYWtlIGEgY29tbWVudCBmb3IgYSBDREsgU3RhZ2VcbiAqL1xuaW50ZXJmYWNlIFN0YWdlQ29tbWVudCB7XG4gIC8qKlxuICAgKiBUaGUgZnVsbCBjb21tZW50IGZvciBlYWNoIHN0YWNrLiBUaGUgbGlzdCB3aWxsIGJlIGpvaW5lZCB3aXRoIFxcblxuICAgKi9cbiAgc3RhY2tDb21tZW50czogeyBbc3RhY2tOYW1lOiBzdHJpbmddOiBzdHJpbmdbXSB9O1xuXG4gIC8qKlxuICAgKiBUaGUgdW5pcXVlIGhhc2ggZm9yIHRoZSBzdGFnZSBjb21tZW50XG4gICAqIFRoaXMgd2lsbCBiZSB1c2VkIHRvIGxvb2t1cCB0aGUgc3RhZ2UgY29tbWVudCBvbiB0aGUgUFJcbiAgICogc28gdGhhdCBpdCBjYW4gYmUgb3ZlcndyaXR0ZW5cbiAgICovXG4gIGhhc2g6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIG51bWJlciBvZiBkZXN0cnVjdGl2ZSBjaGFuZ2VzIGluIHRoaXMgc3RhZ2VcbiAgICovXG4gIGRlc3RydWN0aXZlQ2hhbmdlczogbnVtYmVyO1xufVxuXG4vKipcbiAqIFN0YWdlUHJvY2Vzc29yIHByb2Nlc3NlcyBhIENESyBzdGFnZSBhbmQgY3JlYXRlcyBhIGNvbW1lbnQgb24gdGhlIEdpdEh1YiBQUlxuICogZGV0YWlsaW5nIHRoZSBzdGFjayBkaWZmc1xuICovXG5leHBvcnQgY2xhc3MgU3RhZ2VQcm9jZXNzb3Ige1xuICBwcml2YXRlIHJlYWRvbmx5IHN0YWdlQ29tbWVudHM6IHsgW3N0YWdlTmFtZTogc3RyaW5nXTogU3RhZ2VDb21tZW50IH0gPSB7fTtcbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWFkb25seSBzdGFnZXM6IFN0YWdlSW5mb1tdLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgYWxsb3dlZERlc3Ryb3lUeXBlczogc3RyaW5nW10sXG4gICkge1xuICAgIHRoaXMuc3RhZ2VzLmZvckVhY2goc3RhZ2UgPT4ge1xuICAgICAgdGhpcy5zdGFnZUNvbW1lbnRzW3N0YWdlLm5hbWVdID0ge1xuICAgICAgICBkZXN0cnVjdGl2ZUNoYW5nZXM6IDAsXG4gICAgICAgIHN0YWNrQ29tbWVudHM6IHN0YWdlLnN0YWNrcy5yZWR1Y2UoKHByZXYsIGN1cnIpID0+IHtcbiAgICAgICAgICBwcmV2W2N1cnIubmFtZV0gPSBbXTtcbiAgICAgICAgICByZXR1cm4gcHJldjtcbiAgICAgICAgfSwge30gYXMgeyBbc3RhY2tOYW1lOiBzdHJpbmddOiBzdHJpbmdbXSB9KSxcbiAgICAgICAgaGFzaDogbWQ1SGFzaChKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgICAgc3RhZ2VOYW1lOiBzdGFnZS5uYW1lLFxuICAgICAgICAgIC4uLnN0YWdlLnN0YWNrcy5yZWR1Y2UoKHByZXYsIGN1cnIpID0+IHtcbiAgICAgICAgICAgIHByZXYuc3RhY2tzLnB1c2goe1xuICAgICAgICAgICAgICBuYW1lOiBjdXJyLm5hbWUsXG4gICAgICAgICAgICAgIGxvb2t1cFJvbGU6IGN1cnIubG9va3VwUm9sZSxcbiAgICAgICAgICAgICAgYWNjb3VudDogY3Vyci5hY2NvdW50LFxuICAgICAgICAgICAgICByZWdpb246IGN1cnIucmVnaW9uLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICByZXR1cm4gcHJldjtcbiAgICAgICAgICB9LCB7IHN0YWNrczogW10gfSBhcyB7IHN0YWNrczogT21pdDxTdGFja0luZm8sICdjb250ZW50Jz5bXSB9KSwgLy8gd2UgZG9uJ3Qgd2FudCB0aGUgY29udGVudCB0byBiZSBwYXJ0IG9mIHRoZSBoYXNoXG4gICAgICAgIH0pKSxcbiAgICAgIH07XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogUHJvY2VzcyBhbGwgb2YgdGhlIHN0YWdlcy4gT25jZSB0aGlzIGhhcyBiZWVuIHJ1blxuICAgKiB0aGUgY29tbWVudCBjYW4gYmUgY3JlYXRlZCB3aXRoIGBjb21tZW50U3RhZ2VzKClgXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgcHJvY2Vzc1N0YWdlcyhpZ25vcmVEZXN0cnVjdGl2ZUNoYW5nZXM6IHN0cmluZ1tdID0gW10pIHtcbiAgICBmb3IgKGNvbnN0IHN0YWdlIG9mIHRoaXMuc3RhZ2VzKSB7XG4gICAgICBmb3IgKGNvbnN0IHN0YWNrIG9mIHN0YWdlLnN0YWNrcykge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGNvbnN0IHsgY29tbWVudCwgY2hhbmdlcyB9ID0gYXdhaXQgdGhpcy5kaWZmU3RhY2soc3RhY2spO1xuICAgICAgICAgIHRoaXMuc3RhZ2VDb21tZW50c1tzdGFnZS5uYW1lXS5zdGFja0NvbW1lbnRzW3N0YWNrLm5hbWVdLnB1c2goLi4uY29tbWVudCk7XG4gICAgICAgICAgaWYgKCFpZ25vcmVEZXN0cnVjdGl2ZUNoYW5nZXMuaW5jbHVkZXMoc3RhZ2UubmFtZSkpIHtcbiAgICAgICAgICAgIHRoaXMuc3RhZ2VDb21tZW50c1tzdGFnZS5uYW1lXS5kZXN0cnVjdGl2ZUNoYW5nZXMgKz0gY2hhbmdlcztcbiAgICAgICAgICB9XG4gICAgICAgIH0gY2F0Y2ggKGU6IGFueSkge1xuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIHByb2Nlc3Npbmcgc3RhZ2VzOiAnLCBlKTtcbiAgICAgICAgICB0aHJvdyBlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBjb21tZW50U3RhY2tzKGNvbW1lbnRzOiBDb21tZW50cykge1xuICAgIGZvciAoY29uc3QgW3N0YWdlTmFtZSwgc3RhZ2VdIG9mIE9iamVjdC5lbnRyaWVzKHRoaXMuc3RhZ2VDb21tZW50cykpIHtcbiAgICAgIGZvciAoY29uc3QgW3N0YWNrTmFtZSwgY29tbWVudF0gb2YgT2JqZWN0LmVudHJpZXMoc3RhZ2Uuc3RhY2tDb21tZW50cykpIHtcbiAgICAgICAgY29uc3QgaGFzaCA9IG1kNUhhc2goSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICAgIHN0YWdlTmFtZSxcbiAgICAgICAgICBzdGFja05hbWUsXG4gICAgICAgIH0pKTtcbiAgICAgICAgY29uc3Qgc3RhY2tDb21tZW50ID0gdGhpcy5nZXRDb21tZW50Rm9yU3RhY2soc3RhZ2VOYW1lLCBzdGFja05hbWUsIGNvbW1lbnQpO1xuICAgICAgICBpZiAoc3RhY2tDb21tZW50LmpvaW4oJ1xcbicpLmxlbmd0aCA+IE1BWF9DT01NRU5UX0xFTkdUSCkge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgQ29tbWVudCBmb3Igc3RhY2sgJHtzdGFja05hbWV9IGlzIHRvbyBsb25nLCBwbGVhc2UgcmVwb3J0IHRoaXMgYXMgYSBidWcgaHR0cHM6Ly9naXRodWIuY29tL2NvcnltaGFsbC9jZGstZGlmZi1hY3Rpb24vaXNzdWVzL25ld2ApO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHByZXZpb3VzID0gYXdhaXQgY29tbWVudHMuZmluZFByZXZpb3VzKGhhc2gpO1xuICAgICAgICBpZiAocHJldmlvdXMpIHtcbiAgICAgICAgICBhd2FpdCBjb21tZW50cy51cGRhdGVDb21tZW50KHByZXZpb3VzLCBoYXNoLCBzdGFja0NvbW1lbnQpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGF3YWl0IGNvbW1lbnRzLmNyZWF0ZUNvbW1lbnQoaGFzaCwgc3RhY2tDb21tZW50KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgY29tbWVudFN0YWdlKGNvbW1lbnRzOiBDb21tZW50cywgaGFzaDogc3RyaW5nLCBjb21tZW50OiBzdHJpbmdbXSkge1xuICAgIGNvbnN0IHByZXZpb3VzID0gYXdhaXQgY29tbWVudHMuZmluZFByZXZpb3VzKGhhc2gpO1xuICAgIGlmIChwcmV2aW91cykge1xuICAgICAgYXdhaXQgY29tbWVudHMudXBkYXRlQ29tbWVudChwcmV2aW91cywgaGFzaCwgY29tbWVudCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGF3YWl0IGNvbW1lbnRzLmNyZWF0ZUNvbW1lbnQoaGFzaCwgY29tbWVudCk7XG4gICAgfVxuXG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIHRoZSBHaXRIdWIgY29tbWVudCBmb3IgdGhlIHN0YWdlXG4gICAqIFRoaXMgd2lsbCB0cnkgdG8gY3JlYXRlIGEgc2luZ2xlIGNvbW1lbnQgcGVyIHN0YWdlLCBidXQgaWYgdGhlIGNvbW1lbnRcbiAgICogaXMgdG9vIGxvbmcgaXQgd2lsbCBjcmVhdGUgYSBjb21tZW50IHBlciBzdGFja1xuICAgKiBAcGFyYW0gY29tbWVudHMgdGhlIGNvbW1lbnRzIG9iamVjdCB0byB1c2UgdG8gY3JlYXRlIHRoZSBjb21tZW50XG4gICAqL1xuICBwdWJsaWMgYXN5bmMgY29tbWVudFN0YWdlcyhjb21tZW50czogQ29tbWVudHMpIHtcbiAgICBmb3IgKGNvbnN0IFtzdGFnZU5hbWUsIGluZm9dIG9mIE9iamVjdC5lbnRyaWVzKHRoaXMuc3RhZ2VDb21tZW50cykpIHtcbiAgICAgIGNvbnN0IHN0YWdlQ29tbWVudCA9IHRoaXMuZ2V0Q29tbWVudEZvclN0YWdlKHN0YWdlTmFtZSk7XG4gICAgICBpZiAoc3RhZ2VDb21tZW50LmpvaW4oJ1xcbicpLmxlbmd0aCA+IE1BWF9DT01NRU5UX0xFTkdUSCkge1xuICAgICAgICBhd2FpdCB0aGlzLmNvbW1lbnRTdGFja3MoY29tbWVudHMpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgYXdhaXQgdGhpcy5jb21tZW50U3RhZ2UoY29tbWVudHMsIGluZm8uaGFzaCwgc3RhZ2VDb21tZW50KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB3aGV0aGVyIG9yIG5vdCB0aGVyZSBhcmUgZGVzdHJ1Y3RpdmUgY2hhbmdlcyBpbiB0aGlzIHN0YWdlXG4gICAqL1xuICBwdWJsaWMgZ2V0IGhhc0Rlc3RydWN0aXZlQ2hhbmdlcygpOiBib29sZWFuIHtcbiAgICBmb3IgKGNvbnN0IGNvbW1lbnRzIG9mIE9iamVjdC52YWx1ZXModGhpcy5zdGFnZUNvbW1lbnRzKSkge1xuICAgICAgaWYgKGNvbW1lbnRzLmRlc3RydWN0aXZlQ2hhbmdlcykge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBkaWZmU3RhY2soc3RhY2s6IFN0YWNrSW5mbyk6IFByb21pc2U8e2NvbW1lbnQ6IHN0cmluZ1tdOyBjaGFuZ2VzOiBudW1iZXJ9PiB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHN0YWNrRGlmZiA9IG5ldyBTdGFja0RpZmYoc3RhY2ssIHRoaXMuYWxsb3dlZERlc3Ryb3lUeXBlcyk7XG4gICAgICBjb25zdCB7IGRpZmYsIGNoYW5nZXMgfSA9IGF3YWl0IHN0YWNrRGlmZi5kaWZmU3RhY2soKTtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGNvbW1lbnQ6IHRoaXMuZm9ybWF0U3RhY2tDb21tZW50KHN0YWNrLm5hbWUsIGRpZmYsIGNoYW5nZXMpLFxuICAgICAgICBjaGFuZ2VzOiBjaGFuZ2VzLmRlc3RydWN0aXZlQ2hhbmdlcy5sZW5ndGgsXG4gICAgICB9O1xuXG4gICAgfSBjYXRjaCAoZTogYW55KSB7XG4gICAgICBjb25zb2xlLmVycm9yKCdFcnJvciBwZXJmb3JtaW5nIHN0YWNrIGRpZmY6ICcsIGUpO1xuICAgICAgdGhyb3cgZTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGdldEVtb2ppKGNoYW5nZXM6IENoYW5nZURldGFpbHMpOiBzdHJpbmcge1xuICAgIGlmIChjaGFuZ2VzLmRlc3RydWN0aXZlQ2hhbmdlcy5sZW5ndGggfHwgY2hhbmdlcy5yZW1vdmVkUmVzb3VyY2VzKSB7XG4gICAgICByZXR1cm4gJzp4Oic7XG4gICAgfSBlbHNlIGlmIChjaGFuZ2VzLnVwZGF0ZWRSZXNvdXJjZXMpIHtcbiAgICAgIHJldHVybiAnOnllbGxvd19jaXJjbGU6JztcbiAgICB9IGVsc2UgaWYgKGNoYW5nZXMuY3JlYXRlZFJlc291cmNlcykge1xuICAgICAgcmV0dXJuICc6c3BhcmtsZTonO1xuICAgIH1cbiAgICByZXR1cm4gJzp3aGl0ZV9jaGVja19tYXJrOic7XG4gIH1cblxuICBwcml2YXRlIGZvcm1hdFN0YWNrQ29tbWVudChzdGFja05hbWU6IHN0cmluZywgZGlmZjogVGVtcGxhdGVEaWZmLCBjaGFuZ2VzOiBDaGFuZ2VEZXRhaWxzKTogc3RyaW5nW10ge1xuICAgIGNvbnN0IG91dHB1dDogc3RyaW5nW10gPSBbXTtcbiAgICBjb25zdCBlbW9qaSA9IHRoaXMuZ2V0RW1vamkoY2hhbmdlcyk7XG4gICAgaWYgKGRpZmYuaXNFbXB0eSkge1xuICAgICAgb3V0cHV0LnB1c2goYE5vIENoYW5nZXMgZm9yIHN0YWNrOiAke3N0YWNrTmFtZX0gJHtlbW9qaX1gKTtcbiAgICAgIHJldHVybiBvdXRwdXQ7XG4gICAgfVxuICAgIG91dHB1dC5wdXNoKC4uLltcbiAgICAgIGAjIyMjIERpZmYgZm9yIHN0YWNrOiAke3N0YWNrTmFtZX0gLSBgK1xuICAgICAgICBgKioqJHtjaGFuZ2VzLmNyZWF0ZWRSZXNvdXJjZXN9IHRvIGFkZCwgJHtjaGFuZ2VzLnVwZGF0ZWRSZXNvdXJjZXN9IHRvIHVwZGF0ZSwgJHtjaGFuZ2VzLnJlbW92ZWRSZXNvdXJjZXN9IHRvIGRlc3Ryb3kqKiogIGArXG4gICAgICAgIGVtb2ppLFxuICAgICAgJzxkZXRhaWxzPjxzdW1tYXJ5PkRldGFpbHM8L3N1bW1hcnk+JyxcbiAgICAgICcnLFxuICAgIF0pO1xuICAgIGlmIChjaGFuZ2VzLnVua25vd25FbnZpcm9ubWVudCkge1xuICAgICAgb3V0cHV0LnB1c2goJz4gWyFJTkZPXVxcbj4gKioqVW5rbm93biBFbnZpcm9ubWVudCoqKiA6aW5mb3JtYXRpb25fc291cmNlOicpO1xuICAgICAgb3V0cHV0LnB1c2goJz4gVGhpcyBzdGFjayBoYXMgYW4gdW5rbm93biBlbnZpcm9ubWVudCB3aGljaCBtYXkgbWVhbiB0aGUgZGlmZiBpcyBwZXJmb3JtZWQgYWdhaW5zdCB0aGUgd3JvbmcgZW52aXJvbm1lbnQnKTtcbiAgICAgIG91dHB1dC5wdXNoKGA+IEVudmlyb25tbWVudCB1c2VkICR7Y2hhbmdlcy51bmtub3duRW52aXJvbm1lbnR9YCk7XG4gICAgICBvdXRwdXQucHVzaCgnJyk7XG4gICAgfVxuICAgIGlmIChjaGFuZ2VzLmRlc3RydWN0aXZlQ2hhbmdlcy5sZW5ndGgpIHtcbiAgICAgIG91dHB1dC5wdXNoKCcnKTtcbiAgICAgIG91dHB1dC5wdXNoKCc+IFshV0FSTklOR11cXG4+ICoqKkRlc3RydWN0aXZlIENoYW5nZXMqKiogOmJhbmdiYW5nOicpLFxuICAgICAgY2hhbmdlcy5kZXN0cnVjdGl2ZUNoYW5nZXMuZm9yRWFjaChjaGFuZ2UgPT4ge1xuICAgICAgICBvdXRwdXQucHVzaChcbiAgICAgICAgICBgPiAqKlN0YWNrOiAke2NoYW5nZS5zdGFja05hbWV9IC0gUmVzb3VyY2U6ICR7Y2hhbmdlLmxvZ2ljYWxJZH0gLSBJbXBhY3Q6KiogKioqJHtjaGFuZ2UuaW1wYWN0fSoqKmAsXG4gICAgICAgICk7XG4gICAgICAgIG91dHB1dC5wdXNoKCcnKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgICBjb25zdCB3cml0YWJsZSA9IG5ldyBTdHJpbmdXcml0YWJsZSh7fSk7XG4gICAgZm9ybWF0RGlmZmVyZW5jZXMod3JpdGFibGUsIGRpZmYpO1xuXG4gICAgb3V0cHV0LnB1c2goJycpO1xuICAgIG91dHB1dC5wdXNoKCdgYGBzaGVsbCcpO1xuICAgIG91dHB1dC5wdXNoKHdyaXRhYmxlLmRhdGEpO1xuICAgIG91dHB1dC5wdXNoKCdgYGAnKTtcbiAgICBvdXRwdXQucHVzaCgnPC9kZXRhaWxzPicpO1xuICAgIG91dHB1dC5wdXNoKCcnKTtcbiAgICByZXR1cm4gb3V0cHV0O1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRDb21tZW50Rm9yU3RhY2soc3RhZ2VOYW1lOiBzdHJpbmcsIHN0YWNrTmFtZTogc3RyaW5nLCBjb21tZW50OiBzdHJpbmdbXSk6IHN0cmluZ1tdIHtcbiAgICBjb25zdCBvdXRwdXQ6IHN0cmluZ1tdID0gW107XG4gICAgaWYgKCFjb21tZW50Lmxlbmd0aCkge1xuICAgICAgcmV0dXJuIG91dHB1dDtcbiAgICB9XG4gICAgb3V0cHV0LnB1c2goYCMjIyBEaWZmIGZvciBzdGFjazogJHtzdGFnZU5hbWV9IC8gJHtzdGFja05hbWV9YCk7XG5cbiAgICByZXR1cm4gb3V0cHV0LmNvbmNhdChjb21tZW50KTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0Q29tbWVudEZvclN0YWdlKHN0YWdlTmFtZTogc3RyaW5nKTogc3RyaW5nW10ge1xuICAgIGNvbnN0IG91dHB1dDogc3RyaW5nW10gPSBbXTtcbiAgICBjb25zdCBzdGFnZUNvbW1lbnRzID0gdGhpcy5zdGFnZUNvbW1lbnRzW3N0YWdlTmFtZV07XG4gICAgY29uc3QgY29tbWVudHMgPSBPYmplY3QudmFsdWVzKHRoaXMuc3RhZ2VDb21tZW50c1tzdGFnZU5hbWVdLnN0YWNrQ29tbWVudHMpLmZsYXRNYXAoeCA9PiB4KTtcbiAgICBpZiAoIWNvbW1lbnRzLmxlbmd0aCkge1xuICAgICAgcmV0dXJuIG91dHB1dDtcbiAgICB9XG4gICAgb3V0cHV0LnB1c2goYCMjIyBEaWZmIGZvciBzdGFnZTogJHtzdGFnZU5hbWV9YCk7XG5cbiAgICBpZiAoc3RhZ2VDb21tZW50cy5kZXN0cnVjdGl2ZUNoYW5nZXMpIHtcbiAgICAgIG91dHB1dC5wdXNoKGA+IFshV0FSTklOR11cXG4+ICR7c3RhZ2VDb21tZW50cy5kZXN0cnVjdGl2ZUNoYW5nZXN9IERlc3RydWN0aXZlIENoYW5nZXNgKTtcbiAgICAgIG91dHB1dC5wdXNoKCcnKTtcbiAgICB9XG4gICAgcmV0dXJuIG91dHB1dC5jb25jYXQoY29tbWVudHMpO1xuICB9XG59XG5cbmNsYXNzIFN0cmluZ1dyaXRhYmxlIGV4dGVuZHMgV3JpdGFibGUge1xuICBwdWJsaWMgZGF0YTogc3RyaW5nO1xuICBwcml2YXRlIF9kZWNvZGVyOiBTdHJpbmdEZWNvZGVyO1xuICBjb25zdHJ1Y3RvcihvcHRpb25zOiBXcml0YWJsZU9wdGlvbnMpIHtcbiAgICBzdXBlcihvcHRpb25zKTtcbiAgICB0aGlzLl9kZWNvZGVyID0gbmV3IFN0cmluZ0RlY29kZXIoKTtcbiAgICB0aGlzLmRhdGEgPSAnJztcbiAgfVxuXG4gIF93cml0ZShjaHVuazogYW55LCBlbmNvZGluZzogc3RyaW5nLCBjYWxsYmFjazogKGVycm9yPzogRXJyb3IgfCBudWxsKSA9PiB2b2lkKTogdm9pZCB7XG4gICAgaWYgKGVuY29kaW5nID09PSAnYnVmZmVyJykge1xuICAgICAgY2h1bmsgPSB0aGlzLl9kZWNvZGVyLndyaXRlKGNodW5rKTtcbiAgICB9XG5cbiAgICB0aGlzLmRhdGEgKz0gY2h1bms7XG4gICAgY2FsbGJhY2soKTtcbiAgfVxuXG4gIF9maW5hbChjYWxsYmFjazogKGVycm9yPzogRXJyb3IgfCBudWxsKSA9PiB2b2lkKTogdm9pZCB7XG4gICAgdGhpcy5kYXRhICs9IHRoaXMuX2RlY29kZXIuZW5kKCk7XG4gICAgY2FsbGJhY2soKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBtZDVIYXNoKHZhbDogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIGNyeXB0by5jcmVhdGVIYXNoKCdtZDUnKS51cGRhdGUodmFsKS5kaWdlc3QoJ2hleCcpO1xufTtcbiJdfQ==","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.issue = exports.issueCommand = void 0;\nconst os = __importStar(require(\"os\"));\nconst utils_1 = require(\"./utils\");\n/**\n * Commands\n *\n * Command Format:\n * ::name key=value,key=value::message\n *\n * Examples:\n * ::warning::This is the message\n * ::set-env name=MY_VAR::some value\n */\nfunction issueCommand(command, properties, message) {\n const cmd = new Command(command, properties, message);\n process.stdout.write(cmd.toString() + os.EOL);\n}\nexports.issueCommand = issueCommand;\nfunction issue(name, message = '') {\n issueCommand(name, {}, message);\n}\nexports.issue = issue;\nconst CMD_STRING = '::';\nclass Command {\n constructor(command, properties, message) {\n if (!command) {\n command = 'missing.command';\n }\n this.command = command;\n this.properties = properties;\n this.message = message;\n }\n toString() {\n let cmdStr = CMD_STRING + this.command;\n if (this.properties && Object.keys(this.properties).length > 0) {\n cmdStr += ' ';\n let first = true;\n for (const key in this.properties) {\n if (this.properties.hasOwnProperty(key)) {\n const val = this.properties[key];\n if (val) {\n if (first) {\n first = false;\n }\n else {\n cmdStr += ',';\n }\n cmdStr += `${key}=${escapeProperty(val)}`;\n }\n }\n }\n }\n cmdStr += `${CMD_STRING}${escapeData(this.message)}`;\n return cmdStr;\n }\n}\nfunction escapeData(s) {\n return (0, utils_1.toCommandValue)(s)\n .replace(/%/g, '%25')\n .replace(/\\r/g, '%0D')\n .replace(/\\n/g, '%0A');\n}\nfunction escapeProperty(s) {\n return (0, utils_1.toCommandValue)(s)\n .replace(/%/g, '%25')\n .replace(/\\r/g, '%0D')\n .replace(/\\n/g, '%0A')\n .replace(/:/g, '%3A')\n .replace(/,/g, '%2C');\n}\n//# sourceMappingURL=command.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.platform = exports.toPlatformPath = exports.toWin32Path = exports.toPosixPath = exports.markdownSummary = exports.summary = exports.getIDToken = exports.getState = exports.saveState = exports.group = exports.endGroup = exports.startGroup = exports.info = exports.notice = exports.warning = exports.error = exports.debug = exports.isDebug = exports.setFailed = exports.setCommandEcho = exports.setOutput = exports.getBooleanInput = exports.getMultilineInput = exports.getInput = exports.addPath = exports.setSecret = exports.exportVariable = exports.ExitCode = void 0;\nconst command_1 = require(\"./command\");\nconst file_command_1 = require(\"./file-command\");\nconst utils_1 = require(\"./utils\");\nconst os = __importStar(require(\"os\"));\nconst path = __importStar(require(\"path\"));\nconst oidc_utils_1 = require(\"./oidc-utils\");\n/**\n * The code to exit an action\n */\nvar ExitCode;\n(function (ExitCode) {\n /**\n * A code indicating that the action was successful\n */\n ExitCode[ExitCode[\"Success\"] = 0] = \"Success\";\n /**\n * A code indicating that the action was a failure\n */\n ExitCode[ExitCode[\"Failure\"] = 1] = \"Failure\";\n})(ExitCode || (exports.ExitCode = ExitCode = {}));\n//-----------------------------------------------------------------------\n// Variables\n//-----------------------------------------------------------------------\n/**\n * Sets env variable for this action and future actions in the job\n * @param name the name of the variable to set\n * @param val the value of the variable. Non-string values will be converted to a string via JSON.stringify\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction exportVariable(name, val) {\n const convertedVal = (0, utils_1.toCommandValue)(val);\n process.env[name] = convertedVal;\n const filePath = process.env['GITHUB_ENV'] || '';\n if (filePath) {\n return (0, file_command_1.issueFileCommand)('ENV', (0, file_command_1.prepareKeyValueMessage)(name, val));\n }\n (0, command_1.issueCommand)('set-env', { name }, convertedVal);\n}\nexports.exportVariable = exportVariable;\n/**\n * Registers a secret which will get masked from logs\n * @param secret value of the secret\n */\nfunction setSecret(secret) {\n (0, command_1.issueCommand)('add-mask', {}, secret);\n}\nexports.setSecret = setSecret;\n/**\n * Prepends inputPath to the PATH (for this action and future actions)\n * @param inputPath\n */\nfunction addPath(inputPath) {\n const filePath = process.env['GITHUB_PATH'] || '';\n if (filePath) {\n (0, file_command_1.issueFileCommand)('PATH', inputPath);\n }\n else {\n (0, command_1.issueCommand)('add-path', {}, inputPath);\n }\n process.env['PATH'] = `${inputPath}${path.delimiter}${process.env['PATH']}`;\n}\nexports.addPath = addPath;\n/**\n * Gets the value of an input.\n * Unless trimWhitespace is set to false in InputOptions, the value is also trimmed.\n * Returns an empty string if the value is not defined.\n *\n * @param name name of the input to get\n * @param options optional. See InputOptions.\n * @returns string\n */\nfunction getInput(name, options) {\n const val = process.env[`INPUT_${name.replace(/ /g, '_').toUpperCase()}`] || '';\n if (options && options.required && !val) {\n throw new Error(`Input required and not supplied: ${name}`);\n }\n if (options && options.trimWhitespace === false) {\n return val;\n }\n return val.trim();\n}\nexports.getInput = getInput;\n/**\n * Gets the values of an multiline input. Each value is also trimmed.\n *\n * @param name name of the input to get\n * @param options optional. See InputOptions.\n * @returns string[]\n *\n */\nfunction getMultilineInput(name, options) {\n const inputs = getInput(name, options)\n .split('\\n')\n .filter(x => x !== '');\n if (options && options.trimWhitespace === false) {\n return inputs;\n }\n return inputs.map(input => input.trim());\n}\nexports.getMultilineInput = getMultilineInput;\n/**\n * Gets the input value of the boolean type in the YAML 1.2 \"core schema\" specification.\n * Support boolean input list: `true | True | TRUE | false | False | FALSE` .\n * The return value is also in boolean type.\n * ref: https://yaml.org/spec/1.2/spec.html#id2804923\n *\n * @param name name of the input to get\n * @param options optional. See InputOptions.\n * @returns boolean\n */\nfunction getBooleanInput(name, options) {\n const trueValue = ['true', 'True', 'TRUE'];\n const falseValue = ['false', 'False', 'FALSE'];\n const val = getInput(name, options);\n if (trueValue.includes(val))\n return true;\n if (falseValue.includes(val))\n return false;\n throw new TypeError(`Input does not meet YAML 1.2 \"Core Schema\" specification: ${name}\\n` +\n `Support boolean input list: \\`true | True | TRUE | false | False | FALSE\\``);\n}\nexports.getBooleanInput = getBooleanInput;\n/**\n * Sets the value of an output.\n *\n * @param name name of the output to set\n * @param value value to store. Non-string values will be converted to a string via JSON.stringify\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction setOutput(name, value) {\n const filePath = process.env['GITHUB_OUTPUT'] || '';\n if (filePath) {\n return (0, file_command_1.issueFileCommand)('OUTPUT', (0, file_command_1.prepareKeyValueMessage)(name, value));\n }\n process.stdout.write(os.EOL);\n (0, command_1.issueCommand)('set-output', { name }, (0, utils_1.toCommandValue)(value));\n}\nexports.setOutput = setOutput;\n/**\n * Enables or disables the echoing of commands into stdout for the rest of the step.\n * Echoing is disabled by default if ACTIONS_STEP_DEBUG is not set.\n *\n */\nfunction setCommandEcho(enabled) {\n (0, command_1.issue)('echo', enabled ? 'on' : 'off');\n}\nexports.setCommandEcho = setCommandEcho;\n//-----------------------------------------------------------------------\n// Results\n//-----------------------------------------------------------------------\n/**\n * Sets the action status to failed.\n * When the action exits it will be with an exit code of 1\n * @param message add error issue message\n */\nfunction setFailed(message) {\n process.exitCode = ExitCode.Failure;\n error(message);\n}\nexports.setFailed = setFailed;\n//-----------------------------------------------------------------------\n// Logging Commands\n//-----------------------------------------------------------------------\n/**\n * Gets whether Actions Step Debug is on or not\n */\nfunction isDebug() {\n return process.env['RUNNER_DEBUG'] === '1';\n}\nexports.isDebug = isDebug;\n/**\n * Writes debug message to user log\n * @param message debug message\n */\nfunction debug(message) {\n (0, command_1.issueCommand)('debug', {}, message);\n}\nexports.debug = debug;\n/**\n * Adds an error issue\n * @param message error issue message. Errors will be converted to string via toString()\n * @param properties optional properties to add to the annotation.\n */\nfunction error(message, properties = {}) {\n (0, command_1.issueCommand)('error', (0, utils_1.toCommandProperties)(properties), message instanceof Error ? message.toString() : message);\n}\nexports.error = error;\n/**\n * Adds a warning issue\n * @param message warning issue message. Errors will be converted to string via toString()\n * @param properties optional properties to add to the annotation.\n */\nfunction warning(message, properties = {}) {\n (0, command_1.issueCommand)('warning', (0, utils_1.toCommandProperties)(properties), message instanceof Error ? message.toString() : message);\n}\nexports.warning = warning;\n/**\n * Adds a notice issue\n * @param message notice issue message. Errors will be converted to string via toString()\n * @param properties optional properties to add to the annotation.\n */\nfunction notice(message, properties = {}) {\n (0, command_1.issueCommand)('notice', (0, utils_1.toCommandProperties)(properties), message instanceof Error ? message.toString() : message);\n}\nexports.notice = notice;\n/**\n * Writes info to log with console.log.\n * @param message info message\n */\nfunction info(message) {\n process.stdout.write(message + os.EOL);\n}\nexports.info = info;\n/**\n * Begin an output group.\n *\n * Output until the next `groupEnd` will be foldable in this group\n *\n * @param name The name of the output group\n */\nfunction startGroup(name) {\n (0, command_1.issue)('group', name);\n}\nexports.startGroup = startGroup;\n/**\n * End an output group.\n */\nfunction endGroup() {\n (0, command_1.issue)('endgroup');\n}\nexports.endGroup = endGroup;\n/**\n * Wrap an asynchronous function call in a group.\n *\n * Returns the same type as the function itself.\n *\n * @param name The name of the group\n * @param fn The function to wrap in the group\n */\nfunction group(name, fn) {\n return __awaiter(this, void 0, void 0, function* () {\n startGroup(name);\n let result;\n try {\n result = yield fn();\n }\n finally {\n endGroup();\n }\n return result;\n });\n}\nexports.group = group;\n//-----------------------------------------------------------------------\n// Wrapper action state\n//-----------------------------------------------------------------------\n/**\n * Saves state for current action, the state can only be retrieved by this action's post job execution.\n *\n * @param name name of the state to store\n * @param value value to store. Non-string values will be converted to a string via JSON.stringify\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction saveState(name, value) {\n const filePath = process.env['GITHUB_STATE'] || '';\n if (filePath) {\n return (0, file_command_1.issueFileCommand)('STATE', (0, file_command_1.prepareKeyValueMessage)(name, value));\n }\n (0, command_1.issueCommand)('save-state', { name }, (0, utils_1.toCommandValue)(value));\n}\nexports.saveState = saveState;\n/**\n * Gets the value of an state set by this action's main execution.\n *\n * @param name name of the state to get\n * @returns string\n */\nfunction getState(name) {\n return process.env[`STATE_${name}`] || '';\n}\nexports.getState = getState;\nfunction getIDToken(aud) {\n return __awaiter(this, void 0, void 0, function* () {\n return yield oidc_utils_1.OidcClient.getIDToken(aud);\n });\n}\nexports.getIDToken = getIDToken;\n/**\n * Summary exports\n */\nvar summary_1 = require(\"./summary\");\nObject.defineProperty(exports, \"summary\", { enumerable: true, get: function () { return summary_1.summary; } });\n/**\n * @deprecated use core.summary\n */\nvar summary_2 = require(\"./summary\");\nObject.defineProperty(exports, \"markdownSummary\", { enumerable: true, get: function () { return summary_2.markdownSummary; } });\n/**\n * Path exports\n */\nvar path_utils_1 = require(\"./path-utils\");\nObject.defineProperty(exports, \"toPosixPath\", { enumerable: true, get: function () { return path_utils_1.toPosixPath; } });\nObject.defineProperty(exports, \"toWin32Path\", { enumerable: true, get: function () { return path_utils_1.toWin32Path; } });\nObject.defineProperty(exports, \"toPlatformPath\", { enumerable: true, get: function () { return path_utils_1.toPlatformPath; } });\n/**\n * Platform utilities exports\n */\nexports.platform = __importStar(require(\"./platform\"));\n//# sourceMappingURL=core.js.map","\"use strict\";\n// For internal use, subject to change.\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.prepareKeyValueMessage = exports.issueFileCommand = void 0;\n// We use any as a valid input type\n/* eslint-disable @typescript-eslint/no-explicit-any */\nconst crypto = __importStar(require(\"crypto\"));\nconst fs = __importStar(require(\"fs\"));\nconst os = __importStar(require(\"os\"));\nconst utils_1 = require(\"./utils\");\nfunction issueFileCommand(command, message) {\n const filePath = process.env[`GITHUB_${command}`];\n if (!filePath) {\n throw new Error(`Unable to find environment variable for file command ${command}`);\n }\n if (!fs.existsSync(filePath)) {\n throw new Error(`Missing file at path: ${filePath}`);\n }\n fs.appendFileSync(filePath, `${(0, utils_1.toCommandValue)(message)}${os.EOL}`, {\n encoding: 'utf8'\n });\n}\nexports.issueFileCommand = issueFileCommand;\nfunction prepareKeyValueMessage(key, value) {\n const delimiter = `ghadelimiter_${crypto.randomUUID()}`;\n const convertedValue = (0, utils_1.toCommandValue)(value);\n // These should realistically never happen, but just in case someone finds a\n // way to exploit uuid generation let's not allow keys or values that contain\n // the delimiter.\n if (key.includes(delimiter)) {\n throw new Error(`Unexpected input: name should not contain the delimiter \"${delimiter}\"`);\n }\n if (convertedValue.includes(delimiter)) {\n throw new Error(`Unexpected input: value should not contain the delimiter \"${delimiter}\"`);\n }\n return `${key}<<${delimiter}${os.EOL}${convertedValue}${os.EOL}${delimiter}`;\n}\nexports.prepareKeyValueMessage = prepareKeyValueMessage;\n//# sourceMappingURL=file-command.js.map","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.OidcClient = void 0;\nconst http_client_1 = require(\"@actions/http-client\");\nconst auth_1 = require(\"@actions/http-client/lib/auth\");\nconst core_1 = require(\"./core\");\nclass OidcClient {\n static createHttpClient(allowRetry = true, maxRetry = 10) {\n const requestOptions = {\n allowRetries: allowRetry,\n maxRetries: maxRetry\n };\n return new http_client_1.HttpClient('actions/oidc-client', [new auth_1.BearerCredentialHandler(OidcClient.getRequestToken())], requestOptions);\n }\n static getRequestToken() {\n const token = process.env['ACTIONS_ID_TOKEN_REQUEST_TOKEN'];\n if (!token) {\n throw new Error('Unable to get ACTIONS_ID_TOKEN_REQUEST_TOKEN env variable');\n }\n return token;\n }\n static getIDTokenUrl() {\n const runtimeUrl = process.env['ACTIONS_ID_TOKEN_REQUEST_URL'];\n if (!runtimeUrl) {\n throw new Error('Unable to get ACTIONS_ID_TOKEN_REQUEST_URL env variable');\n }\n return runtimeUrl;\n }\n static getCall(id_token_url) {\n var _a;\n return __awaiter(this, void 0, void 0, function* () {\n const httpclient = OidcClient.createHttpClient();\n const res = yield httpclient\n .getJson(id_token_url)\n .catch(error => {\n throw new Error(`Failed to get ID Token. \\n \n Error Code : ${error.statusCode}\\n \n Error Message: ${error.message}`);\n });\n const id_token = (_a = res.result) === null || _a === void 0 ? void 0 : _a.value;\n if (!id_token) {\n throw new Error('Response json body do not have ID Token field');\n }\n return id_token;\n });\n }\n static getIDToken(audience) {\n return __awaiter(this, void 0, void 0, function* () {\n try {\n // New ID Token is requested from action service\n let id_token_url = OidcClient.getIDTokenUrl();\n if (audience) {\n const encodedAudience = encodeURIComponent(audience);\n id_token_url = `${id_token_url}&audience=${encodedAudience}`;\n }\n (0, core_1.debug)(`ID token url is ${id_token_url}`);\n const id_token = yield OidcClient.getCall(id_token_url);\n (0, core_1.setSecret)(id_token);\n return id_token;\n }\n catch (error) {\n throw new Error(`Error message: ${error.message}`);\n }\n });\n }\n}\nexports.OidcClient = OidcClient;\n//# sourceMappingURL=oidc-utils.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.toPlatformPath = exports.toWin32Path = exports.toPosixPath = void 0;\nconst path = __importStar(require(\"path\"));\n/**\n * toPosixPath converts the given path to the posix form. On Windows, \\\\ will be\n * replaced with /.\n *\n * @param pth. Path to transform.\n * @return string Posix path.\n */\nfunction toPosixPath(pth) {\n return pth.replace(/[\\\\]/g, '/');\n}\nexports.toPosixPath = toPosixPath;\n/**\n * toWin32Path converts the given path to the win32 form. On Linux, / will be\n * replaced with \\\\.\n *\n * @param pth. Path to transform.\n * @return string Win32 path.\n */\nfunction toWin32Path(pth) {\n return pth.replace(/[/]/g, '\\\\');\n}\nexports.toWin32Path = toWin32Path;\n/**\n * toPlatformPath converts the given path to a platform-specific path. It does\n * this by replacing instances of / and \\ with the platform-specific path\n * separator.\n *\n * @param pth The path to platformize.\n * @return string The platform-specific path.\n */\nfunction toPlatformPath(pth) {\n return pth.replace(/[/\\\\]/g, path.sep);\n}\nexports.toPlatformPath = toPlatformPath;\n//# sourceMappingURL=path-utils.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getDetails = exports.isLinux = exports.isMacOS = exports.isWindows = exports.arch = exports.platform = void 0;\nconst os_1 = __importDefault(require(\"os\"));\nconst exec = __importStar(require(\"@actions/exec\"));\nconst getWindowsInfo = () => __awaiter(void 0, void 0, void 0, function* () {\n const { stdout: version } = yield exec.getExecOutput('powershell -command \"(Get-CimInstance -ClassName Win32_OperatingSystem).Version\"', undefined, {\n silent: true\n });\n const { stdout: name } = yield exec.getExecOutput('powershell -command \"(Get-CimInstance -ClassName Win32_OperatingSystem).Caption\"', undefined, {\n silent: true\n });\n return {\n name: name.trim(),\n version: version.trim()\n };\n});\nconst getMacOsInfo = () => __awaiter(void 0, void 0, void 0, function* () {\n var _a, _b, _c, _d;\n const { stdout } = yield exec.getExecOutput('sw_vers', undefined, {\n silent: true\n });\n const version = (_b = (_a = stdout.match(/ProductVersion:\\s*(.+)/)) === null || _a === void 0 ? void 0 : _a[1]) !== null && _b !== void 0 ? _b : '';\n const name = (_d = (_c = stdout.match(/ProductName:\\s*(.+)/)) === null || _c === void 0 ? void 0 : _c[1]) !== null && _d !== void 0 ? _d : '';\n return {\n name,\n version\n };\n});\nconst getLinuxInfo = () => __awaiter(void 0, void 0, void 0, function* () {\n const { stdout } = yield exec.getExecOutput('lsb_release', ['-i', '-r', '-s'], {\n silent: true\n });\n const [name, version] = stdout.trim().split('\\n');\n return {\n name,\n version\n };\n});\nexports.platform = os_1.default.platform();\nexports.arch = os_1.default.arch();\nexports.isWindows = exports.platform === 'win32';\nexports.isMacOS = exports.platform === 'darwin';\nexports.isLinux = exports.platform === 'linux';\nfunction getDetails() {\n return __awaiter(this, void 0, void 0, function* () {\n return Object.assign(Object.assign({}, (yield (exports.isWindows\n ? getWindowsInfo()\n : exports.isMacOS\n ? getMacOsInfo()\n : getLinuxInfo()))), { platform: exports.platform,\n arch: exports.arch,\n isWindows: exports.isWindows,\n isMacOS: exports.isMacOS,\n isLinux: exports.isLinux });\n });\n}\nexports.getDetails = getDetails;\n//# sourceMappingURL=platform.js.map","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.summary = exports.markdownSummary = exports.SUMMARY_DOCS_URL = exports.SUMMARY_ENV_VAR = void 0;\nconst os_1 = require(\"os\");\nconst fs_1 = require(\"fs\");\nconst { access, appendFile, writeFile } = fs_1.promises;\nexports.SUMMARY_ENV_VAR = 'GITHUB_STEP_SUMMARY';\nexports.SUMMARY_DOCS_URL = 'https://docs.github.com/actions/using-workflows/workflow-commands-for-github-actions#adding-a-job-summary';\nclass Summary {\n constructor() {\n this._buffer = '';\n }\n /**\n * Finds the summary file path from the environment, rejects if env var is not found or file does not exist\n * Also checks r/w permissions.\n *\n * @returns step summary file path\n */\n filePath() {\n return __awaiter(this, void 0, void 0, function* () {\n if (this._filePath) {\n return this._filePath;\n }\n const pathFromEnv = process.env[exports.SUMMARY_ENV_VAR];\n if (!pathFromEnv) {\n throw new Error(`Unable to find environment variable for $${exports.SUMMARY_ENV_VAR}. Check if your runtime environment supports job summaries.`);\n }\n try {\n yield access(pathFromEnv, fs_1.constants.R_OK | fs_1.constants.W_OK);\n }\n catch (_a) {\n throw new Error(`Unable to access summary file: '${pathFromEnv}'. Check if the file has correct read/write permissions.`);\n }\n this._filePath = pathFromEnv;\n return this._filePath;\n });\n }\n /**\n * Wraps content in an HTML tag, adding any HTML attributes\n *\n * @param {string} tag HTML tag to wrap\n * @param {string | null} content content within the tag\n * @param {[attribute: string]: string} attrs key-value list of HTML attributes to add\n *\n * @returns {string} content wrapped in HTML element\n */\n wrap(tag, content, attrs = {}) {\n const htmlAttrs = Object.entries(attrs)\n .map(([key, value]) => ` ${key}=\"${value}\"`)\n .join('');\n if (!content) {\n return `<${tag}${htmlAttrs}>`;\n }\n return `<${tag}${htmlAttrs}>${content}`;\n }\n /**\n * Writes text in the buffer to the summary buffer file and empties buffer. Will append by default.\n *\n * @param {SummaryWriteOptions} [options] (optional) options for write operation\n *\n * @returns {Promise} summary instance\n */\n write(options) {\n return __awaiter(this, void 0, void 0, function* () {\n const overwrite = !!(options === null || options === void 0 ? void 0 : options.overwrite);\n const filePath = yield this.filePath();\n const writeFunc = overwrite ? writeFile : appendFile;\n yield writeFunc(filePath, this._buffer, { encoding: 'utf8' });\n return this.emptyBuffer();\n });\n }\n /**\n * Clears the summary buffer and wipes the summary file\n *\n * @returns {Summary} summary instance\n */\n clear() {\n return __awaiter(this, void 0, void 0, function* () {\n return this.emptyBuffer().write({ overwrite: true });\n });\n }\n /**\n * Returns the current summary buffer as a string\n *\n * @returns {string} string of summary buffer\n */\n stringify() {\n return this._buffer;\n }\n /**\n * If the summary buffer is empty\n *\n * @returns {boolen} true if the buffer is empty\n */\n isEmptyBuffer() {\n return this._buffer.length === 0;\n }\n /**\n * Resets the summary buffer without writing to summary file\n *\n * @returns {Summary} summary instance\n */\n emptyBuffer() {\n this._buffer = '';\n return this;\n }\n /**\n * Adds raw text to the summary buffer\n *\n * @param {string} text content to add\n * @param {boolean} [addEOL=false] (optional) append an EOL to the raw text (default: false)\n *\n * @returns {Summary} summary instance\n */\n addRaw(text, addEOL = false) {\n this._buffer += text;\n return addEOL ? this.addEOL() : this;\n }\n /**\n * Adds the operating system-specific end-of-line marker to the buffer\n *\n * @returns {Summary} summary instance\n */\n addEOL() {\n return this.addRaw(os_1.EOL);\n }\n /**\n * Adds an HTML codeblock to the summary buffer\n *\n * @param {string} code content to render within fenced code block\n * @param {string} lang (optional) language to syntax highlight code\n *\n * @returns {Summary} summary instance\n */\n addCodeBlock(code, lang) {\n const attrs = Object.assign({}, (lang && { lang }));\n const element = this.wrap('pre', this.wrap('code', code), attrs);\n return this.addRaw(element).addEOL();\n }\n /**\n * Adds an HTML list to the summary buffer\n *\n * @param {string[]} items list of items to render\n * @param {boolean} [ordered=false] (optional) if the rendered list should be ordered or not (default: false)\n *\n * @returns {Summary} summary instance\n */\n addList(items, ordered = false) {\n const tag = ordered ? 'ol' : 'ul';\n const listItems = items.map(item => this.wrap('li', item)).join('');\n const element = this.wrap(tag, listItems);\n return this.addRaw(element).addEOL();\n }\n /**\n * Adds an HTML table to the summary buffer\n *\n * @param {SummaryTableCell[]} rows table rows\n *\n * @returns {Summary} summary instance\n */\n addTable(rows) {\n const tableBody = rows\n .map(row => {\n const cells = row\n .map(cell => {\n if (typeof cell === 'string') {\n return this.wrap('td', cell);\n }\n const { header, data, colspan, rowspan } = cell;\n const tag = header ? 'th' : 'td';\n const attrs = Object.assign(Object.assign({}, (colspan && { colspan })), (rowspan && { rowspan }));\n return this.wrap(tag, data, attrs);\n })\n .join('');\n return this.wrap('tr', cells);\n })\n .join('');\n const element = this.wrap('table', tableBody);\n return this.addRaw(element).addEOL();\n }\n /**\n * Adds a collapsable HTML details element to the summary buffer\n *\n * @param {string} label text for the closed state\n * @param {string} content collapsable content\n *\n * @returns {Summary} summary instance\n */\n addDetails(label, content) {\n const element = this.wrap('details', this.wrap('summary', label) + content);\n return this.addRaw(element).addEOL();\n }\n /**\n * Adds an HTML image tag to the summary buffer\n *\n * @param {string} src path to the image you to embed\n * @param {string} alt text description of the image\n * @param {SummaryImageOptions} options (optional) addition image attributes\n *\n * @returns {Summary} summary instance\n */\n addImage(src, alt, options) {\n const { width, height } = options || {};\n const attrs = Object.assign(Object.assign({}, (width && { width })), (height && { height }));\n const element = this.wrap('img', null, Object.assign({ src, alt }, attrs));\n return this.addRaw(element).addEOL();\n }\n /**\n * Adds an HTML section heading element\n *\n * @param {string} text heading text\n * @param {number | string} [level=1] (optional) the heading level, default: 1\n *\n * @returns {Summary} summary instance\n */\n addHeading(text, level) {\n const tag = `h${level}`;\n const allowedTag = ['h1', 'h2', 'h3', 'h4', 'h5', 'h6'].includes(tag)\n ? tag\n : 'h1';\n const element = this.wrap(allowedTag, text);\n return this.addRaw(element).addEOL();\n }\n /**\n * Adds an HTML thematic break (
) to the summary buffer\n *\n * @returns {Summary} summary instance\n */\n addSeparator() {\n const element = this.wrap('hr', null);\n return this.addRaw(element).addEOL();\n }\n /**\n * Adds an HTML line break (
) to the summary buffer\n *\n * @returns {Summary} summary instance\n */\n addBreak() {\n const element = this.wrap('br', null);\n return this.addRaw(element).addEOL();\n }\n /**\n * Adds an HTML blockquote to the summary buffer\n *\n * @param {string} text quote text\n * @param {string} cite (optional) citation url\n *\n * @returns {Summary} summary instance\n */\n addQuote(text, cite) {\n const attrs = Object.assign({}, (cite && { cite }));\n const element = this.wrap('blockquote', text, attrs);\n return this.addRaw(element).addEOL();\n }\n /**\n * Adds an HTML anchor tag to the summary buffer\n *\n * @param {string} text link text/content\n * @param {string} href hyperlink\n *\n * @returns {Summary} summary instance\n */\n addLink(text, href) {\n const element = this.wrap('a', text, { href });\n return this.addRaw(element).addEOL();\n }\n}\nconst _summary = new Summary();\n/**\n * @deprecated use `core.summary`\n */\nexports.markdownSummary = _summary;\nexports.summary = _summary;\n//# sourceMappingURL=summary.js.map","\"use strict\";\n// We use any as a valid input type\n/* eslint-disable @typescript-eslint/no-explicit-any */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.toCommandProperties = exports.toCommandValue = void 0;\n/**\n * Sanitizes an input into a string so it can be passed into issueCommand safely\n * @param input input to sanitize into a string\n */\nfunction toCommandValue(input) {\n if (input === null || input === undefined) {\n return '';\n }\n else if (typeof input === 'string' || input instanceof String) {\n return input;\n }\n return JSON.stringify(input);\n}\nexports.toCommandValue = toCommandValue;\n/**\n *\n * @param annotationProperties\n * @returns The command properties to send with the actual annotation command\n * See IssueCommandProperties: https://github.com/actions/runner/blob/main/src/Runner.Worker/ActionCommandManager.cs#L646\n */\nfunction toCommandProperties(annotationProperties) {\n if (!Object.keys(annotationProperties).length) {\n return {};\n }\n return {\n title: annotationProperties.title,\n file: annotationProperties.file,\n line: annotationProperties.startLine,\n endLine: annotationProperties.endLine,\n col: annotationProperties.startColumn,\n endColumn: annotationProperties.endColumn\n };\n}\nexports.toCommandProperties = toCommandProperties;\n//# sourceMappingURL=utils.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getExecOutput = exports.exec = void 0;\nconst string_decoder_1 = require(\"string_decoder\");\nconst tr = __importStar(require(\"./toolrunner\"));\n/**\n * Exec a command.\n * Output will be streamed to the live console.\n * Returns promise with return code\n *\n * @param commandLine command to execute (can include additional args). Must be correctly escaped.\n * @param args optional arguments for tool. Escaping is handled by the lib.\n * @param options optional exec options. See ExecOptions\n * @returns Promise exit code\n */\nfunction exec(commandLine, args, options) {\n return __awaiter(this, void 0, void 0, function* () {\n const commandArgs = tr.argStringToArray(commandLine);\n if (commandArgs.length === 0) {\n throw new Error(`Parameter 'commandLine' cannot be null or empty.`);\n }\n // Path to tool to execute should be first arg\n const toolPath = commandArgs[0];\n args = commandArgs.slice(1).concat(args || []);\n const runner = new tr.ToolRunner(toolPath, args, options);\n return runner.exec();\n });\n}\nexports.exec = exec;\n/**\n * Exec a command and get the output.\n * Output will be streamed to the live console.\n * Returns promise with the exit code and collected stdout and stderr\n *\n * @param commandLine command to execute (can include additional args). Must be correctly escaped.\n * @param args optional arguments for tool. Escaping is handled by the lib.\n * @param options optional exec options. See ExecOptions\n * @returns Promise exit code, stdout, and stderr\n */\nfunction getExecOutput(commandLine, args, options) {\n var _a, _b;\n return __awaiter(this, void 0, void 0, function* () {\n let stdout = '';\n let stderr = '';\n //Using string decoder covers the case where a mult-byte character is split\n const stdoutDecoder = new string_decoder_1.StringDecoder('utf8');\n const stderrDecoder = new string_decoder_1.StringDecoder('utf8');\n const originalStdoutListener = (_a = options === null || options === void 0 ? void 0 : options.listeners) === null || _a === void 0 ? void 0 : _a.stdout;\n const originalStdErrListener = (_b = options === null || options === void 0 ? void 0 : options.listeners) === null || _b === void 0 ? void 0 : _b.stderr;\n const stdErrListener = (data) => {\n stderr += stderrDecoder.write(data);\n if (originalStdErrListener) {\n originalStdErrListener(data);\n }\n };\n const stdOutListener = (data) => {\n stdout += stdoutDecoder.write(data);\n if (originalStdoutListener) {\n originalStdoutListener(data);\n }\n };\n const listeners = Object.assign(Object.assign({}, options === null || options === void 0 ? void 0 : options.listeners), { stdout: stdOutListener, stderr: stdErrListener });\n const exitCode = yield exec(commandLine, args, Object.assign(Object.assign({}, options), { listeners }));\n //flush any remaining characters\n stdout += stdoutDecoder.end();\n stderr += stderrDecoder.end();\n return {\n exitCode,\n stdout,\n stderr\n };\n });\n}\nexports.getExecOutput = getExecOutput;\n//# sourceMappingURL=exec.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.argStringToArray = exports.ToolRunner = void 0;\nconst os = __importStar(require(\"os\"));\nconst events = __importStar(require(\"events\"));\nconst child = __importStar(require(\"child_process\"));\nconst path = __importStar(require(\"path\"));\nconst io = __importStar(require(\"@actions/io\"));\nconst ioUtil = __importStar(require(\"@actions/io/lib/io-util\"));\nconst timers_1 = require(\"timers\");\n/* eslint-disable @typescript-eslint/unbound-method */\nconst IS_WINDOWS = process.platform === 'win32';\n/*\n * Class for running command line tools. Handles quoting and arg parsing in a platform agnostic way.\n */\nclass ToolRunner extends events.EventEmitter {\n constructor(toolPath, args, options) {\n super();\n if (!toolPath) {\n throw new Error(\"Parameter 'toolPath' cannot be null or empty.\");\n }\n this.toolPath = toolPath;\n this.args = args || [];\n this.options = options || {};\n }\n _debug(message) {\n if (this.options.listeners && this.options.listeners.debug) {\n this.options.listeners.debug(message);\n }\n }\n _getCommandString(options, noPrefix) {\n const toolPath = this._getSpawnFileName();\n const args = this._getSpawnArgs(options);\n let cmd = noPrefix ? '' : '[command]'; // omit prefix when piped to a second tool\n if (IS_WINDOWS) {\n // Windows + cmd file\n if (this._isCmdFile()) {\n cmd += toolPath;\n for (const a of args) {\n cmd += ` ${a}`;\n }\n }\n // Windows + verbatim\n else if (options.windowsVerbatimArguments) {\n cmd += `\"${toolPath}\"`;\n for (const a of args) {\n cmd += ` ${a}`;\n }\n }\n // Windows (regular)\n else {\n cmd += this._windowsQuoteCmdArg(toolPath);\n for (const a of args) {\n cmd += ` ${this._windowsQuoteCmdArg(a)}`;\n }\n }\n }\n else {\n // OSX/Linux - this can likely be improved with some form of quoting.\n // creating processes on Unix is fundamentally different than Windows.\n // on Unix, execvp() takes an arg array.\n cmd += toolPath;\n for (const a of args) {\n cmd += ` ${a}`;\n }\n }\n return cmd;\n }\n _processLineBuffer(data, strBuffer, onLine) {\n try {\n let s = strBuffer + data.toString();\n let n = s.indexOf(os.EOL);\n while (n > -1) {\n const line = s.substring(0, n);\n onLine(line);\n // the rest of the string ...\n s = s.substring(n + os.EOL.length);\n n = s.indexOf(os.EOL);\n }\n return s;\n }\n catch (err) {\n // streaming lines to console is best effort. Don't fail a build.\n this._debug(`error processing line. Failed with error ${err}`);\n return '';\n }\n }\n _getSpawnFileName() {\n if (IS_WINDOWS) {\n if (this._isCmdFile()) {\n return process.env['COMSPEC'] || 'cmd.exe';\n }\n }\n return this.toolPath;\n }\n _getSpawnArgs(options) {\n if (IS_WINDOWS) {\n if (this._isCmdFile()) {\n let argline = `/D /S /C \"${this._windowsQuoteCmdArg(this.toolPath)}`;\n for (const a of this.args) {\n argline += ' ';\n argline += options.windowsVerbatimArguments\n ? a\n : this._windowsQuoteCmdArg(a);\n }\n argline += '\"';\n return [argline];\n }\n }\n return this.args;\n }\n _endsWith(str, end) {\n return str.endsWith(end);\n }\n _isCmdFile() {\n const upperToolPath = this.toolPath.toUpperCase();\n return (this._endsWith(upperToolPath, '.CMD') ||\n this._endsWith(upperToolPath, '.BAT'));\n }\n _windowsQuoteCmdArg(arg) {\n // for .exe, apply the normal quoting rules that libuv applies\n if (!this._isCmdFile()) {\n return this._uvQuoteCmdArg(arg);\n }\n // otherwise apply quoting rules specific to the cmd.exe command line parser.\n // the libuv rules are generic and are not designed specifically for cmd.exe\n // command line parser.\n //\n // for a detailed description of the cmd.exe command line parser, refer to\n // http://stackoverflow.com/questions/4094699/how-does-the-windows-command-interpreter-cmd-exe-parse-scripts/7970912#7970912\n // need quotes for empty arg\n if (!arg) {\n return '\"\"';\n }\n // determine whether the arg needs to be quoted\n const cmdSpecialChars = [\n ' ',\n '\\t',\n '&',\n '(',\n ')',\n '[',\n ']',\n '{',\n '}',\n '^',\n '=',\n ';',\n '!',\n \"'\",\n '+',\n ',',\n '`',\n '~',\n '|',\n '<',\n '>',\n '\"'\n ];\n let needsQuotes = false;\n for (const char of arg) {\n if (cmdSpecialChars.some(x => x === char)) {\n needsQuotes = true;\n break;\n }\n }\n // short-circuit if quotes not needed\n if (!needsQuotes) {\n return arg;\n }\n // the following quoting rules are very similar to the rules that by libuv applies.\n //\n // 1) wrap the string in quotes\n //\n // 2) double-up quotes - i.e. \" => \"\"\n //\n // this is different from the libuv quoting rules. libuv replaces \" with \\\", which unfortunately\n // doesn't work well with a cmd.exe command line.\n //\n // note, replacing \" with \"\" also works well if the arg is passed to a downstream .NET console app.\n // for example, the command line:\n // foo.exe \"myarg:\"\"my val\"\"\"\n // is parsed by a .NET console app into an arg array:\n // [ \"myarg:\\\"my val\\\"\" ]\n // which is the same end result when applying libuv quoting rules. although the actual\n // command line from libuv quoting rules would look like:\n // foo.exe \"myarg:\\\"my val\\\"\"\n //\n // 3) double-up slashes that precede a quote,\n // e.g. hello \\world => \"hello \\world\"\n // hello\\\"world => \"hello\\\\\"\"world\"\n // hello\\\\\"world => \"hello\\\\\\\\\"\"world\"\n // hello world\\ => \"hello world\\\\\"\n //\n // technically this is not required for a cmd.exe command line, or the batch argument parser.\n // the reasons for including this as a .cmd quoting rule are:\n //\n // a) this is optimized for the scenario where the argument is passed from the .cmd file to an\n // external program. many programs (e.g. .NET console apps) rely on the slash-doubling rule.\n //\n // b) it's what we've been doing previously (by deferring to node default behavior) and we\n // haven't heard any complaints about that aspect.\n //\n // note, a weakness of the quoting rules chosen here, is that % is not escaped. in fact, % cannot be\n // escaped when used on the command line directly - even though within a .cmd file % can be escaped\n // by using %%.\n //\n // the saving grace is, on the command line, %var% is left as-is if var is not defined. this contrasts\n // the line parsing rules within a .cmd file, where if var is not defined it is replaced with nothing.\n //\n // one option that was explored was replacing % with ^% - i.e. %var% => ^%var^%. this hack would\n // often work, since it is unlikely that var^ would exist, and the ^ character is removed when the\n // variable is used. the problem, however, is that ^ is not removed when %* is used to pass the args\n // to an external program.\n //\n // an unexplored potential solution for the % escaping problem, is to create a wrapper .cmd file.\n // % can be escaped within a .cmd file.\n let reverse = '\"';\n let quoteHit = true;\n for (let i = arg.length; i > 0; i--) {\n // walk the string in reverse\n reverse += arg[i - 1];\n if (quoteHit && arg[i - 1] === '\\\\') {\n reverse += '\\\\'; // double the slash\n }\n else if (arg[i - 1] === '\"') {\n quoteHit = true;\n reverse += '\"'; // double the quote\n }\n else {\n quoteHit = false;\n }\n }\n reverse += '\"';\n return reverse\n .split('')\n .reverse()\n .join('');\n }\n _uvQuoteCmdArg(arg) {\n // Tool runner wraps child_process.spawn() and needs to apply the same quoting as\n // Node in certain cases where the undocumented spawn option windowsVerbatimArguments\n // is used.\n //\n // Since this function is a port of quote_cmd_arg from Node 4.x (technically, lib UV,\n // see https://github.com/nodejs/node/blob/v4.x/deps/uv/src/win/process.c for details),\n // pasting copyright notice from Node within this function:\n //\n // Copyright Joyent, Inc. and other Node contributors. All rights reserved.\n //\n // Permission is hereby granted, free of charge, to any person obtaining a copy\n // of this software and associated documentation files (the \"Software\"), to\n // deal in the Software without restriction, including without limitation the\n // rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n // sell copies of the Software, and to permit persons to whom the Software is\n // furnished to do so, subject to the following conditions:\n //\n // The above copyright notice and this permission notice shall be included in\n // all copies or substantial portions of the Software.\n //\n // THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n // IN THE SOFTWARE.\n if (!arg) {\n // Need double quotation for empty argument\n return '\"\"';\n }\n if (!arg.includes(' ') && !arg.includes('\\t') && !arg.includes('\"')) {\n // No quotation needed\n return arg;\n }\n if (!arg.includes('\"') && !arg.includes('\\\\')) {\n // No embedded double quotes or backslashes, so I can just wrap\n // quote marks around the whole thing.\n return `\"${arg}\"`;\n }\n // Expected input/output:\n // input : hello\"world\n // output: \"hello\\\"world\"\n // input : hello\"\"world\n // output: \"hello\\\"\\\"world\"\n // input : hello\\world\n // output: hello\\world\n // input : hello\\\\world\n // output: hello\\\\world\n // input : hello\\\"world\n // output: \"hello\\\\\\\"world\"\n // input : hello\\\\\"world\n // output: \"hello\\\\\\\\\\\"world\"\n // input : hello world\\\n // output: \"hello world\\\\\" - note the comment in libuv actually reads \"hello world\\\"\n // but it appears the comment is wrong, it should be \"hello world\\\\\"\n let reverse = '\"';\n let quoteHit = true;\n for (let i = arg.length; i > 0; i--) {\n // walk the string in reverse\n reverse += arg[i - 1];\n if (quoteHit && arg[i - 1] === '\\\\') {\n reverse += '\\\\';\n }\n else if (arg[i - 1] === '\"') {\n quoteHit = true;\n reverse += '\\\\';\n }\n else {\n quoteHit = false;\n }\n }\n reverse += '\"';\n return reverse\n .split('')\n .reverse()\n .join('');\n }\n _cloneExecOptions(options) {\n options = options || {};\n const result = {\n cwd: options.cwd || process.cwd(),\n env: options.env || process.env,\n silent: options.silent || false,\n windowsVerbatimArguments: options.windowsVerbatimArguments || false,\n failOnStdErr: options.failOnStdErr || false,\n ignoreReturnCode: options.ignoreReturnCode || false,\n delay: options.delay || 10000\n };\n result.outStream = options.outStream || process.stdout;\n result.errStream = options.errStream || process.stderr;\n return result;\n }\n _getSpawnOptions(options, toolPath) {\n options = options || {};\n const result = {};\n result.cwd = options.cwd;\n result.env = options.env;\n result['windowsVerbatimArguments'] =\n options.windowsVerbatimArguments || this._isCmdFile();\n if (options.windowsVerbatimArguments) {\n result.argv0 = `\"${toolPath}\"`;\n }\n return result;\n }\n /**\n * Exec a tool.\n * Output will be streamed to the live console.\n * Returns promise with return code\n *\n * @param tool path to tool to exec\n * @param options optional exec options. See ExecOptions\n * @returns number\n */\n exec() {\n return __awaiter(this, void 0, void 0, function* () {\n // root the tool path if it is unrooted and contains relative pathing\n if (!ioUtil.isRooted(this.toolPath) &&\n (this.toolPath.includes('/') ||\n (IS_WINDOWS && this.toolPath.includes('\\\\')))) {\n // prefer options.cwd if it is specified, however options.cwd may also need to be rooted\n this.toolPath = path.resolve(process.cwd(), this.options.cwd || process.cwd(), this.toolPath);\n }\n // if the tool is only a file name, then resolve it from the PATH\n // otherwise verify it exists (add extension on Windows if necessary)\n this.toolPath = yield io.which(this.toolPath, true);\n return new Promise((resolve, reject) => __awaiter(this, void 0, void 0, function* () {\n this._debug(`exec tool: ${this.toolPath}`);\n this._debug('arguments:');\n for (const arg of this.args) {\n this._debug(` ${arg}`);\n }\n const optionsNonNull = this._cloneExecOptions(this.options);\n if (!optionsNonNull.silent && optionsNonNull.outStream) {\n optionsNonNull.outStream.write(this._getCommandString(optionsNonNull) + os.EOL);\n }\n const state = new ExecState(optionsNonNull, this.toolPath);\n state.on('debug', (message) => {\n this._debug(message);\n });\n if (this.options.cwd && !(yield ioUtil.exists(this.options.cwd))) {\n return reject(new Error(`The cwd: ${this.options.cwd} does not exist!`));\n }\n const fileName = this._getSpawnFileName();\n const cp = child.spawn(fileName, this._getSpawnArgs(optionsNonNull), this._getSpawnOptions(this.options, fileName));\n let stdbuffer = '';\n if (cp.stdout) {\n cp.stdout.on('data', (data) => {\n if (this.options.listeners && this.options.listeners.stdout) {\n this.options.listeners.stdout(data);\n }\n if (!optionsNonNull.silent && optionsNonNull.outStream) {\n optionsNonNull.outStream.write(data);\n }\n stdbuffer = this._processLineBuffer(data, stdbuffer, (line) => {\n if (this.options.listeners && this.options.listeners.stdline) {\n this.options.listeners.stdline(line);\n }\n });\n });\n }\n let errbuffer = '';\n if (cp.stderr) {\n cp.stderr.on('data', (data) => {\n state.processStderr = true;\n if (this.options.listeners && this.options.listeners.stderr) {\n this.options.listeners.stderr(data);\n }\n if (!optionsNonNull.silent &&\n optionsNonNull.errStream &&\n optionsNonNull.outStream) {\n const s = optionsNonNull.failOnStdErr\n ? optionsNonNull.errStream\n : optionsNonNull.outStream;\n s.write(data);\n }\n errbuffer = this._processLineBuffer(data, errbuffer, (line) => {\n if (this.options.listeners && this.options.listeners.errline) {\n this.options.listeners.errline(line);\n }\n });\n });\n }\n cp.on('error', (err) => {\n state.processError = err.message;\n state.processExited = true;\n state.processClosed = true;\n state.CheckComplete();\n });\n cp.on('exit', (code) => {\n state.processExitCode = code;\n state.processExited = true;\n this._debug(`Exit code ${code} received from tool '${this.toolPath}'`);\n state.CheckComplete();\n });\n cp.on('close', (code) => {\n state.processExitCode = code;\n state.processExited = true;\n state.processClosed = true;\n this._debug(`STDIO streams have closed for tool '${this.toolPath}'`);\n state.CheckComplete();\n });\n state.on('done', (error, exitCode) => {\n if (stdbuffer.length > 0) {\n this.emit('stdline', stdbuffer);\n }\n if (errbuffer.length > 0) {\n this.emit('errline', errbuffer);\n }\n cp.removeAllListeners();\n if (error) {\n reject(error);\n }\n else {\n resolve(exitCode);\n }\n });\n if (this.options.input) {\n if (!cp.stdin) {\n throw new Error('child process missing stdin');\n }\n cp.stdin.end(this.options.input);\n }\n }));\n });\n }\n}\nexports.ToolRunner = ToolRunner;\n/**\n * Convert an arg string to an array of args. Handles escaping\n *\n * @param argString string of arguments\n * @returns string[] array of arguments\n */\nfunction argStringToArray(argString) {\n const args = [];\n let inQuotes = false;\n let escaped = false;\n let arg = '';\n function append(c) {\n // we only escape double quotes.\n if (escaped && c !== '\"') {\n arg += '\\\\';\n }\n arg += c;\n escaped = false;\n }\n for (let i = 0; i < argString.length; i++) {\n const c = argString.charAt(i);\n if (c === '\"') {\n if (!escaped) {\n inQuotes = !inQuotes;\n }\n else {\n append(c);\n }\n continue;\n }\n if (c === '\\\\' && escaped) {\n append(c);\n continue;\n }\n if (c === '\\\\' && inQuotes) {\n escaped = true;\n continue;\n }\n if (c === ' ' && !inQuotes) {\n if (arg.length > 0) {\n args.push(arg);\n arg = '';\n }\n continue;\n }\n append(c);\n }\n if (arg.length > 0) {\n args.push(arg.trim());\n }\n return args;\n}\nexports.argStringToArray = argStringToArray;\nclass ExecState extends events.EventEmitter {\n constructor(options, toolPath) {\n super();\n this.processClosed = false; // tracks whether the process has exited and stdio is closed\n this.processError = '';\n this.processExitCode = 0;\n this.processExited = false; // tracks whether the process has exited\n this.processStderr = false; // tracks whether stderr was written to\n this.delay = 10000; // 10 seconds\n this.done = false;\n this.timeout = null;\n if (!toolPath) {\n throw new Error('toolPath must not be empty');\n }\n this.options = options;\n this.toolPath = toolPath;\n if (options.delay) {\n this.delay = options.delay;\n }\n }\n CheckComplete() {\n if (this.done) {\n return;\n }\n if (this.processClosed) {\n this._setResult();\n }\n else if (this.processExited) {\n this.timeout = timers_1.setTimeout(ExecState.HandleTimeout, this.delay, this);\n }\n }\n _debug(message) {\n this.emit('debug', message);\n }\n _setResult() {\n // determine whether there is an error\n let error;\n if (this.processExited) {\n if (this.processError) {\n error = new Error(`There was an error when attempting to execute the process '${this.toolPath}'. This may indicate the process failed to start. Error: ${this.processError}`);\n }\n else if (this.processExitCode !== 0 && !this.options.ignoreReturnCode) {\n error = new Error(`The process '${this.toolPath}' failed with exit code ${this.processExitCode}`);\n }\n else if (this.processStderr && this.options.failOnStdErr) {\n error = new Error(`The process '${this.toolPath}' failed because one or more lines were written to the STDERR stream`);\n }\n }\n // clear the timeout\n if (this.timeout) {\n clearTimeout(this.timeout);\n this.timeout = null;\n }\n this.done = true;\n this.emit('done', error, this.processExitCode);\n }\n static HandleTimeout(state) {\n if (state.done) {\n return;\n }\n if (!state.processClosed && state.processExited) {\n const message = `The STDIO streams did not close within ${state.delay /\n 1000} seconds of the exit event from process '${state.toolPath}'. This may indicate a child process inherited the STDIO streams and has not yet exited.`;\n state._debug(message);\n }\n state._setResult();\n }\n}\n//# sourceMappingURL=toolrunner.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Context = void 0;\nconst fs_1 = require(\"fs\");\nconst os_1 = require(\"os\");\nclass Context {\n /**\n * Hydrate the context from the environment\n */\n constructor() {\n var _a, _b, _c;\n this.payload = {};\n if (process.env.GITHUB_EVENT_PATH) {\n if ((0, fs_1.existsSync)(process.env.GITHUB_EVENT_PATH)) {\n this.payload = JSON.parse((0, fs_1.readFileSync)(process.env.GITHUB_EVENT_PATH, { encoding: 'utf8' }));\n }\n else {\n const path = process.env.GITHUB_EVENT_PATH;\n process.stdout.write(`GITHUB_EVENT_PATH ${path} does not exist${os_1.EOL}`);\n }\n }\n this.eventName = process.env.GITHUB_EVENT_NAME;\n this.sha = process.env.GITHUB_SHA;\n this.ref = process.env.GITHUB_REF;\n this.workflow = process.env.GITHUB_WORKFLOW;\n this.action = process.env.GITHUB_ACTION;\n this.actor = process.env.GITHUB_ACTOR;\n this.job = process.env.GITHUB_JOB;\n this.runNumber = parseInt(process.env.GITHUB_RUN_NUMBER, 10);\n this.runId = parseInt(process.env.GITHUB_RUN_ID, 10);\n this.apiUrl = (_a = process.env.GITHUB_API_URL) !== null && _a !== void 0 ? _a : `https://api.github.com`;\n this.serverUrl = (_b = process.env.GITHUB_SERVER_URL) !== null && _b !== void 0 ? _b : `https://github.com`;\n this.graphqlUrl =\n (_c = process.env.GITHUB_GRAPHQL_URL) !== null && _c !== void 0 ? _c : `https://api.github.com/graphql`;\n }\n get issue() {\n const payload = this.payload;\n return Object.assign(Object.assign({}, this.repo), { number: (payload.issue || payload.pull_request || payload).number });\n }\n get repo() {\n if (process.env.GITHUB_REPOSITORY) {\n const [owner, repo] = process.env.GITHUB_REPOSITORY.split('/');\n return { owner, repo };\n }\n if (this.payload.repository) {\n return {\n owner: this.payload.repository.owner.login,\n repo: this.payload.repository.name\n };\n }\n throw new Error(\"context.repo requires a GITHUB_REPOSITORY environment variable like 'owner/repo'\");\n }\n}\nexports.Context = Context;\n//# sourceMappingURL=context.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getOctokit = exports.context = void 0;\nconst Context = __importStar(require(\"./context\"));\nconst utils_1 = require(\"./utils\");\nexports.context = new Context.Context();\n/**\n * Returns a hydrated octokit ready to use for GitHub Actions\n *\n * @param token the repo PAT or GITHUB_TOKEN\n * @param options other options to set\n */\nfunction getOctokit(token, options, ...additionalPlugins) {\n const GitHubWithPlugins = utils_1.GitHub.plugin(...additionalPlugins);\n return new GitHubWithPlugins((0, utils_1.getOctokitOptions)(token, options));\n}\nexports.getOctokit = getOctokit;\n//# sourceMappingURL=github.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getApiBaseUrl = exports.getProxyFetch = exports.getProxyAgentDispatcher = exports.getProxyAgent = exports.getAuthString = void 0;\nconst httpClient = __importStar(require(\"@actions/http-client\"));\nconst undici_1 = require(\"undici\");\nfunction getAuthString(token, options) {\n if (!token && !options.auth) {\n throw new Error('Parameter token or opts.auth is required');\n }\n else if (token && options.auth) {\n throw new Error('Parameters token and opts.auth may not both be specified');\n }\n return typeof options.auth === 'string' ? options.auth : `token ${token}`;\n}\nexports.getAuthString = getAuthString;\nfunction getProxyAgent(destinationUrl) {\n const hc = new httpClient.HttpClient();\n return hc.getAgent(destinationUrl);\n}\nexports.getProxyAgent = getProxyAgent;\nfunction getProxyAgentDispatcher(destinationUrl) {\n const hc = new httpClient.HttpClient();\n return hc.getAgentDispatcher(destinationUrl);\n}\nexports.getProxyAgentDispatcher = getProxyAgentDispatcher;\nfunction getProxyFetch(destinationUrl) {\n const httpDispatcher = getProxyAgentDispatcher(destinationUrl);\n const proxyFetch = (url, opts) => __awaiter(this, void 0, void 0, function* () {\n return (0, undici_1.fetch)(url, Object.assign(Object.assign({}, opts), { dispatcher: httpDispatcher }));\n });\n return proxyFetch;\n}\nexports.getProxyFetch = getProxyFetch;\nfunction getApiBaseUrl() {\n return process.env['GITHUB_API_URL'] || 'https://api.github.com';\n}\nexports.getApiBaseUrl = getApiBaseUrl;\n//# sourceMappingURL=utils.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getOctokitOptions = exports.GitHub = exports.defaults = exports.context = void 0;\nconst Context = __importStar(require(\"./context\"));\nconst Utils = __importStar(require(\"./internal/utils\"));\n// octokit + plugins\nconst core_1 = require(\"@octokit/core\");\nconst plugin_rest_endpoint_methods_1 = require(\"@octokit/plugin-rest-endpoint-methods\");\nconst plugin_paginate_rest_1 = require(\"@octokit/plugin-paginate-rest\");\nexports.context = new Context.Context();\nconst baseUrl = Utils.getApiBaseUrl();\nexports.defaults = {\n baseUrl,\n request: {\n agent: Utils.getProxyAgent(baseUrl),\n fetch: Utils.getProxyFetch(baseUrl)\n }\n};\nexports.GitHub = core_1.Octokit.plugin(plugin_rest_endpoint_methods_1.restEndpointMethods, plugin_paginate_rest_1.paginateRest).defaults(exports.defaults);\n/**\n * Convience function to correctly format Octokit Options to pass into the constructor.\n *\n * @param token the repo PAT or GITHUB_TOKEN\n * @param options other options to set\n */\nfunction getOctokitOptions(token, options) {\n const opts = Object.assign({}, options || {}); // Shallow clone - don't mutate the object provided by the caller\n // Auth\n const auth = Utils.getAuthString(token, opts);\n if (auth) {\n opts.auth = auth;\n }\n return opts;\n}\nexports.getOctokitOptions = getOctokitOptions;\n//# sourceMappingURL=utils.js.map","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.PersonalAccessTokenCredentialHandler = exports.BearerCredentialHandler = exports.BasicCredentialHandler = void 0;\nclass BasicCredentialHandler {\n constructor(username, password) {\n this.username = username;\n this.password = password;\n }\n prepareRequest(options) {\n if (!options.headers) {\n throw Error('The request has no headers');\n }\n options.headers['Authorization'] = `Basic ${Buffer.from(`${this.username}:${this.password}`).toString('base64')}`;\n }\n // This handler cannot handle 401\n canHandleAuthentication() {\n return false;\n }\n handleAuthentication() {\n return __awaiter(this, void 0, void 0, function* () {\n throw new Error('not implemented');\n });\n }\n}\nexports.BasicCredentialHandler = BasicCredentialHandler;\nclass BearerCredentialHandler {\n constructor(token) {\n this.token = token;\n }\n // currently implements pre-authorization\n // TODO: support preAuth = false where it hooks on 401\n prepareRequest(options) {\n if (!options.headers) {\n throw Error('The request has no headers');\n }\n options.headers['Authorization'] = `Bearer ${this.token}`;\n }\n // This handler cannot handle 401\n canHandleAuthentication() {\n return false;\n }\n handleAuthentication() {\n return __awaiter(this, void 0, void 0, function* () {\n throw new Error('not implemented');\n });\n }\n}\nexports.BearerCredentialHandler = BearerCredentialHandler;\nclass PersonalAccessTokenCredentialHandler {\n constructor(token) {\n this.token = token;\n }\n // currently implements pre-authorization\n // TODO: support preAuth = false where it hooks on 401\n prepareRequest(options) {\n if (!options.headers) {\n throw Error('The request has no headers');\n }\n options.headers['Authorization'] = `Basic ${Buffer.from(`PAT:${this.token}`).toString('base64')}`;\n }\n // This handler cannot handle 401\n canHandleAuthentication() {\n return false;\n }\n handleAuthentication() {\n return __awaiter(this, void 0, void 0, function* () {\n throw new Error('not implemented');\n });\n }\n}\nexports.PersonalAccessTokenCredentialHandler = PersonalAccessTokenCredentialHandler;\n//# sourceMappingURL=auth.js.map","\"use strict\";\n/* eslint-disable @typescript-eslint/no-explicit-any */\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.HttpClient = exports.isHttps = exports.HttpClientResponse = exports.HttpClientError = exports.getProxyUrl = exports.MediaTypes = exports.Headers = exports.HttpCodes = void 0;\nconst http = __importStar(require(\"http\"));\nconst https = __importStar(require(\"https\"));\nconst pm = __importStar(require(\"./proxy\"));\nconst tunnel = __importStar(require(\"tunnel\"));\nconst undici_1 = require(\"undici\");\nvar HttpCodes;\n(function (HttpCodes) {\n HttpCodes[HttpCodes[\"OK\"] = 200] = \"OK\";\n HttpCodes[HttpCodes[\"MultipleChoices\"] = 300] = \"MultipleChoices\";\n HttpCodes[HttpCodes[\"MovedPermanently\"] = 301] = \"MovedPermanently\";\n HttpCodes[HttpCodes[\"ResourceMoved\"] = 302] = \"ResourceMoved\";\n HttpCodes[HttpCodes[\"SeeOther\"] = 303] = \"SeeOther\";\n HttpCodes[HttpCodes[\"NotModified\"] = 304] = \"NotModified\";\n HttpCodes[HttpCodes[\"UseProxy\"] = 305] = \"UseProxy\";\n HttpCodes[HttpCodes[\"SwitchProxy\"] = 306] = \"SwitchProxy\";\n HttpCodes[HttpCodes[\"TemporaryRedirect\"] = 307] = \"TemporaryRedirect\";\n HttpCodes[HttpCodes[\"PermanentRedirect\"] = 308] = \"PermanentRedirect\";\n HttpCodes[HttpCodes[\"BadRequest\"] = 400] = \"BadRequest\";\n HttpCodes[HttpCodes[\"Unauthorized\"] = 401] = \"Unauthorized\";\n HttpCodes[HttpCodes[\"PaymentRequired\"] = 402] = \"PaymentRequired\";\n HttpCodes[HttpCodes[\"Forbidden\"] = 403] = \"Forbidden\";\n HttpCodes[HttpCodes[\"NotFound\"] = 404] = \"NotFound\";\n HttpCodes[HttpCodes[\"MethodNotAllowed\"] = 405] = \"MethodNotAllowed\";\n HttpCodes[HttpCodes[\"NotAcceptable\"] = 406] = \"NotAcceptable\";\n HttpCodes[HttpCodes[\"ProxyAuthenticationRequired\"] = 407] = \"ProxyAuthenticationRequired\";\n HttpCodes[HttpCodes[\"RequestTimeout\"] = 408] = \"RequestTimeout\";\n HttpCodes[HttpCodes[\"Conflict\"] = 409] = \"Conflict\";\n HttpCodes[HttpCodes[\"Gone\"] = 410] = \"Gone\";\n HttpCodes[HttpCodes[\"TooManyRequests\"] = 429] = \"TooManyRequests\";\n HttpCodes[HttpCodes[\"InternalServerError\"] = 500] = \"InternalServerError\";\n HttpCodes[HttpCodes[\"NotImplemented\"] = 501] = \"NotImplemented\";\n HttpCodes[HttpCodes[\"BadGateway\"] = 502] = \"BadGateway\";\n HttpCodes[HttpCodes[\"ServiceUnavailable\"] = 503] = \"ServiceUnavailable\";\n HttpCodes[HttpCodes[\"GatewayTimeout\"] = 504] = \"GatewayTimeout\";\n})(HttpCodes || (exports.HttpCodes = HttpCodes = {}));\nvar Headers;\n(function (Headers) {\n Headers[\"Accept\"] = \"accept\";\n Headers[\"ContentType\"] = \"content-type\";\n})(Headers || (exports.Headers = Headers = {}));\nvar MediaTypes;\n(function (MediaTypes) {\n MediaTypes[\"ApplicationJson\"] = \"application/json\";\n})(MediaTypes || (exports.MediaTypes = MediaTypes = {}));\n/**\n * Returns the proxy URL, depending upon the supplied url and proxy environment variables.\n * @param serverUrl The server URL where the request will be sent. For example, https://api.github.com\n */\nfunction getProxyUrl(serverUrl) {\n const proxyUrl = pm.getProxyUrl(new URL(serverUrl));\n return proxyUrl ? proxyUrl.href : '';\n}\nexports.getProxyUrl = getProxyUrl;\nconst HttpRedirectCodes = [\n HttpCodes.MovedPermanently,\n HttpCodes.ResourceMoved,\n HttpCodes.SeeOther,\n HttpCodes.TemporaryRedirect,\n HttpCodes.PermanentRedirect\n];\nconst HttpResponseRetryCodes = [\n HttpCodes.BadGateway,\n HttpCodes.ServiceUnavailable,\n HttpCodes.GatewayTimeout\n];\nconst RetryableHttpVerbs = ['OPTIONS', 'GET', 'DELETE', 'HEAD'];\nconst ExponentialBackoffCeiling = 10;\nconst ExponentialBackoffTimeSlice = 5;\nclass HttpClientError extends Error {\n constructor(message, statusCode) {\n super(message);\n this.name = 'HttpClientError';\n this.statusCode = statusCode;\n Object.setPrototypeOf(this, HttpClientError.prototype);\n }\n}\nexports.HttpClientError = HttpClientError;\nclass HttpClientResponse {\n constructor(message) {\n this.message = message;\n }\n readBody() {\n return __awaiter(this, void 0, void 0, function* () {\n return new Promise((resolve) => __awaiter(this, void 0, void 0, function* () {\n let output = Buffer.alloc(0);\n this.message.on('data', (chunk) => {\n output = Buffer.concat([output, chunk]);\n });\n this.message.on('end', () => {\n resolve(output.toString());\n });\n }));\n });\n }\n readBodyBuffer() {\n return __awaiter(this, void 0, void 0, function* () {\n return new Promise((resolve) => __awaiter(this, void 0, void 0, function* () {\n const chunks = [];\n this.message.on('data', (chunk) => {\n chunks.push(chunk);\n });\n this.message.on('end', () => {\n resolve(Buffer.concat(chunks));\n });\n }));\n });\n }\n}\nexports.HttpClientResponse = HttpClientResponse;\nfunction isHttps(requestUrl) {\n const parsedUrl = new URL(requestUrl);\n return parsedUrl.protocol === 'https:';\n}\nexports.isHttps = isHttps;\nclass HttpClient {\n constructor(userAgent, handlers, requestOptions) {\n this._ignoreSslError = false;\n this._allowRedirects = true;\n this._allowRedirectDowngrade = false;\n this._maxRedirects = 50;\n this._allowRetries = false;\n this._maxRetries = 1;\n this._keepAlive = false;\n this._disposed = false;\n this.userAgent = userAgent;\n this.handlers = handlers || [];\n this.requestOptions = requestOptions;\n if (requestOptions) {\n if (requestOptions.ignoreSslError != null) {\n this._ignoreSslError = requestOptions.ignoreSslError;\n }\n this._socketTimeout = requestOptions.socketTimeout;\n if (requestOptions.allowRedirects != null) {\n this._allowRedirects = requestOptions.allowRedirects;\n }\n if (requestOptions.allowRedirectDowngrade != null) {\n this._allowRedirectDowngrade = requestOptions.allowRedirectDowngrade;\n }\n if (requestOptions.maxRedirects != null) {\n this._maxRedirects = Math.max(requestOptions.maxRedirects, 0);\n }\n if (requestOptions.keepAlive != null) {\n this._keepAlive = requestOptions.keepAlive;\n }\n if (requestOptions.allowRetries != null) {\n this._allowRetries = requestOptions.allowRetries;\n }\n if (requestOptions.maxRetries != null) {\n this._maxRetries = requestOptions.maxRetries;\n }\n }\n }\n options(requestUrl, additionalHeaders) {\n return __awaiter(this, void 0, void 0, function* () {\n return this.request('OPTIONS', requestUrl, null, additionalHeaders || {});\n });\n }\n get(requestUrl, additionalHeaders) {\n return __awaiter(this, void 0, void 0, function* () {\n return this.request('GET', requestUrl, null, additionalHeaders || {});\n });\n }\n del(requestUrl, additionalHeaders) {\n return __awaiter(this, void 0, void 0, function* () {\n return this.request('DELETE', requestUrl, null, additionalHeaders || {});\n });\n }\n post(requestUrl, data, additionalHeaders) {\n return __awaiter(this, void 0, void 0, function* () {\n return this.request('POST', requestUrl, data, additionalHeaders || {});\n });\n }\n patch(requestUrl, data, additionalHeaders) {\n return __awaiter(this, void 0, void 0, function* () {\n return this.request('PATCH', requestUrl, data, additionalHeaders || {});\n });\n }\n put(requestUrl, data, additionalHeaders) {\n return __awaiter(this, void 0, void 0, function* () {\n return this.request('PUT', requestUrl, data, additionalHeaders || {});\n });\n }\n head(requestUrl, additionalHeaders) {\n return __awaiter(this, void 0, void 0, function* () {\n return this.request('HEAD', requestUrl, null, additionalHeaders || {});\n });\n }\n sendStream(verb, requestUrl, stream, additionalHeaders) {\n return __awaiter(this, void 0, void 0, function* () {\n return this.request(verb, requestUrl, stream, additionalHeaders);\n });\n }\n /**\n * Gets a typed object from an endpoint\n * Be aware that not found returns a null. Other errors (4xx, 5xx) reject the promise\n */\n getJson(requestUrl, additionalHeaders = {}) {\n return __awaiter(this, void 0, void 0, function* () {\n additionalHeaders[Headers.Accept] = this._getExistingOrDefaultHeader(additionalHeaders, Headers.Accept, MediaTypes.ApplicationJson);\n const res = yield this.get(requestUrl, additionalHeaders);\n return this._processResponse(res, this.requestOptions);\n });\n }\n postJson(requestUrl, obj, additionalHeaders = {}) {\n return __awaiter(this, void 0, void 0, function* () {\n const data = JSON.stringify(obj, null, 2);\n additionalHeaders[Headers.Accept] = this._getExistingOrDefaultHeader(additionalHeaders, Headers.Accept, MediaTypes.ApplicationJson);\n additionalHeaders[Headers.ContentType] = this._getExistingOrDefaultHeader(additionalHeaders, Headers.ContentType, MediaTypes.ApplicationJson);\n const res = yield this.post(requestUrl, data, additionalHeaders);\n return this._processResponse(res, this.requestOptions);\n });\n }\n putJson(requestUrl, obj, additionalHeaders = {}) {\n return __awaiter(this, void 0, void 0, function* () {\n const data = JSON.stringify(obj, null, 2);\n additionalHeaders[Headers.Accept] = this._getExistingOrDefaultHeader(additionalHeaders, Headers.Accept, MediaTypes.ApplicationJson);\n additionalHeaders[Headers.ContentType] = this._getExistingOrDefaultHeader(additionalHeaders, Headers.ContentType, MediaTypes.ApplicationJson);\n const res = yield this.put(requestUrl, data, additionalHeaders);\n return this._processResponse(res, this.requestOptions);\n });\n }\n patchJson(requestUrl, obj, additionalHeaders = {}) {\n return __awaiter(this, void 0, void 0, function* () {\n const data = JSON.stringify(obj, null, 2);\n additionalHeaders[Headers.Accept] = this._getExistingOrDefaultHeader(additionalHeaders, Headers.Accept, MediaTypes.ApplicationJson);\n additionalHeaders[Headers.ContentType] = this._getExistingOrDefaultHeader(additionalHeaders, Headers.ContentType, MediaTypes.ApplicationJson);\n const res = yield this.patch(requestUrl, data, additionalHeaders);\n return this._processResponse(res, this.requestOptions);\n });\n }\n /**\n * Makes a raw http request.\n * All other methods such as get, post, patch, and request ultimately call this.\n * Prefer get, del, post and patch\n */\n request(verb, requestUrl, data, headers) {\n return __awaiter(this, void 0, void 0, function* () {\n if (this._disposed) {\n throw new Error('Client has already been disposed.');\n }\n const parsedUrl = new URL(requestUrl);\n let info = this._prepareRequest(verb, parsedUrl, headers);\n // Only perform retries on reads since writes may not be idempotent.\n const maxTries = this._allowRetries && RetryableHttpVerbs.includes(verb)\n ? this._maxRetries + 1\n : 1;\n let numTries = 0;\n let response;\n do {\n response = yield this.requestRaw(info, data);\n // Check if it's an authentication challenge\n if (response &&\n response.message &&\n response.message.statusCode === HttpCodes.Unauthorized) {\n let authenticationHandler;\n for (const handler of this.handlers) {\n if (handler.canHandleAuthentication(response)) {\n authenticationHandler = handler;\n break;\n }\n }\n if (authenticationHandler) {\n return authenticationHandler.handleAuthentication(this, info, data);\n }\n else {\n // We have received an unauthorized response but have no handlers to handle it.\n // Let the response return to the caller.\n return response;\n }\n }\n let redirectsRemaining = this._maxRedirects;\n while (response.message.statusCode &&\n HttpRedirectCodes.includes(response.message.statusCode) &&\n this._allowRedirects &&\n redirectsRemaining > 0) {\n const redirectUrl = response.message.headers['location'];\n if (!redirectUrl) {\n // if there's no location to redirect to, we won't\n break;\n }\n const parsedRedirectUrl = new URL(redirectUrl);\n if (parsedUrl.protocol === 'https:' &&\n parsedUrl.protocol !== parsedRedirectUrl.protocol &&\n !this._allowRedirectDowngrade) {\n throw new Error('Redirect from HTTPS to HTTP protocol. This downgrade is not allowed for security reasons. If you want to allow this behavior, set the allowRedirectDowngrade option to true.');\n }\n // we need to finish reading the response before reassigning response\n // which will leak the open socket.\n yield response.readBody();\n // strip authorization header if redirected to a different hostname\n if (parsedRedirectUrl.hostname !== parsedUrl.hostname) {\n for (const header in headers) {\n // header names are case insensitive\n if (header.toLowerCase() === 'authorization') {\n delete headers[header];\n }\n }\n }\n // let's make the request with the new redirectUrl\n info = this._prepareRequest(verb, parsedRedirectUrl, headers);\n response = yield this.requestRaw(info, data);\n redirectsRemaining--;\n }\n if (!response.message.statusCode ||\n !HttpResponseRetryCodes.includes(response.message.statusCode)) {\n // If not a retry code, return immediately instead of retrying\n return response;\n }\n numTries += 1;\n if (numTries < maxTries) {\n yield response.readBody();\n yield this._performExponentialBackoff(numTries);\n }\n } while (numTries < maxTries);\n return response;\n });\n }\n /**\n * Needs to be called if keepAlive is set to true in request options.\n */\n dispose() {\n if (this._agent) {\n this._agent.destroy();\n }\n this._disposed = true;\n }\n /**\n * Raw request.\n * @param info\n * @param data\n */\n requestRaw(info, data) {\n return __awaiter(this, void 0, void 0, function* () {\n return new Promise((resolve, reject) => {\n function callbackForResult(err, res) {\n if (err) {\n reject(err);\n }\n else if (!res) {\n // If `err` is not passed, then `res` must be passed.\n reject(new Error('Unknown error'));\n }\n else {\n resolve(res);\n }\n }\n this.requestRawWithCallback(info, data, callbackForResult);\n });\n });\n }\n /**\n * Raw request with callback.\n * @param info\n * @param data\n * @param onResult\n */\n requestRawWithCallback(info, data, onResult) {\n if (typeof data === 'string') {\n if (!info.options.headers) {\n info.options.headers = {};\n }\n info.options.headers['Content-Length'] = Buffer.byteLength(data, 'utf8');\n }\n let callbackCalled = false;\n function handleResult(err, res) {\n if (!callbackCalled) {\n callbackCalled = true;\n onResult(err, res);\n }\n }\n const req = info.httpModule.request(info.options, (msg) => {\n const res = new HttpClientResponse(msg);\n handleResult(undefined, res);\n });\n let socket;\n req.on('socket', sock => {\n socket = sock;\n });\n // If we ever get disconnected, we want the socket to timeout eventually\n req.setTimeout(this._socketTimeout || 3 * 60000, () => {\n if (socket) {\n socket.end();\n }\n handleResult(new Error(`Request timeout: ${info.options.path}`));\n });\n req.on('error', function (err) {\n // err has statusCode property\n // res should have headers\n handleResult(err);\n });\n if (data && typeof data === 'string') {\n req.write(data, 'utf8');\n }\n if (data && typeof data !== 'string') {\n data.on('close', function () {\n req.end();\n });\n data.pipe(req);\n }\n else {\n req.end();\n }\n }\n /**\n * Gets an http agent. This function is useful when you need an http agent that handles\n * routing through a proxy server - depending upon the url and proxy environment variables.\n * @param serverUrl The server URL where the request will be sent. For example, https://api.github.com\n */\n getAgent(serverUrl) {\n const parsedUrl = new URL(serverUrl);\n return this._getAgent(parsedUrl);\n }\n getAgentDispatcher(serverUrl) {\n const parsedUrl = new URL(serverUrl);\n const proxyUrl = pm.getProxyUrl(parsedUrl);\n const useProxy = proxyUrl && proxyUrl.hostname;\n if (!useProxy) {\n return;\n }\n return this._getProxyAgentDispatcher(parsedUrl, proxyUrl);\n }\n _prepareRequest(method, requestUrl, headers) {\n const info = {};\n info.parsedUrl = requestUrl;\n const usingSsl = info.parsedUrl.protocol === 'https:';\n info.httpModule = usingSsl ? https : http;\n const defaultPort = usingSsl ? 443 : 80;\n info.options = {};\n info.options.host = info.parsedUrl.hostname;\n info.options.port = info.parsedUrl.port\n ? parseInt(info.parsedUrl.port)\n : defaultPort;\n info.options.path =\n (info.parsedUrl.pathname || '') + (info.parsedUrl.search || '');\n info.options.method = method;\n info.options.headers = this._mergeHeaders(headers);\n if (this.userAgent != null) {\n info.options.headers['user-agent'] = this.userAgent;\n }\n info.options.agent = this._getAgent(info.parsedUrl);\n // gives handlers an opportunity to participate\n if (this.handlers) {\n for (const handler of this.handlers) {\n handler.prepareRequest(info.options);\n }\n }\n return info;\n }\n _mergeHeaders(headers) {\n if (this.requestOptions && this.requestOptions.headers) {\n return Object.assign({}, lowercaseKeys(this.requestOptions.headers), lowercaseKeys(headers || {}));\n }\n return lowercaseKeys(headers || {});\n }\n _getExistingOrDefaultHeader(additionalHeaders, header, _default) {\n let clientHeader;\n if (this.requestOptions && this.requestOptions.headers) {\n clientHeader = lowercaseKeys(this.requestOptions.headers)[header];\n }\n return additionalHeaders[header] || clientHeader || _default;\n }\n _getAgent(parsedUrl) {\n let agent;\n const proxyUrl = pm.getProxyUrl(parsedUrl);\n const useProxy = proxyUrl && proxyUrl.hostname;\n if (this._keepAlive && useProxy) {\n agent = this._proxyAgent;\n }\n if (!useProxy) {\n agent = this._agent;\n }\n // if agent is already assigned use that agent.\n if (agent) {\n return agent;\n }\n const usingSsl = parsedUrl.protocol === 'https:';\n let maxSockets = 100;\n if (this.requestOptions) {\n maxSockets = this.requestOptions.maxSockets || http.globalAgent.maxSockets;\n }\n // This is `useProxy` again, but we need to check `proxyURl` directly for TypeScripts's flow analysis.\n if (proxyUrl && proxyUrl.hostname) {\n const agentOptions = {\n maxSockets,\n keepAlive: this._keepAlive,\n proxy: Object.assign(Object.assign({}, ((proxyUrl.username || proxyUrl.password) && {\n proxyAuth: `${proxyUrl.username}:${proxyUrl.password}`\n })), { host: proxyUrl.hostname, port: proxyUrl.port })\n };\n let tunnelAgent;\n const overHttps = proxyUrl.protocol === 'https:';\n if (usingSsl) {\n tunnelAgent = overHttps ? tunnel.httpsOverHttps : tunnel.httpsOverHttp;\n }\n else {\n tunnelAgent = overHttps ? tunnel.httpOverHttps : tunnel.httpOverHttp;\n }\n agent = tunnelAgent(agentOptions);\n this._proxyAgent = agent;\n }\n // if tunneling agent isn't assigned create a new agent\n if (!agent) {\n const options = { keepAlive: this._keepAlive, maxSockets };\n agent = usingSsl ? new https.Agent(options) : new http.Agent(options);\n this._agent = agent;\n }\n if (usingSsl && this._ignoreSslError) {\n // we don't want to set NODE_TLS_REJECT_UNAUTHORIZED=0 since that will affect request for entire process\n // http.RequestOptions doesn't expose a way to modify RequestOptions.agent.options\n // we have to cast it to any and change it directly\n agent.options = Object.assign(agent.options || {}, {\n rejectUnauthorized: false\n });\n }\n return agent;\n }\n _getProxyAgentDispatcher(parsedUrl, proxyUrl) {\n let proxyAgent;\n if (this._keepAlive) {\n proxyAgent = this._proxyAgentDispatcher;\n }\n // if agent is already assigned use that agent.\n if (proxyAgent) {\n return proxyAgent;\n }\n const usingSsl = parsedUrl.protocol === 'https:';\n proxyAgent = new undici_1.ProxyAgent(Object.assign({ uri: proxyUrl.href, pipelining: !this._keepAlive ? 0 : 1 }, ((proxyUrl.username || proxyUrl.password) && {\n token: `Basic ${Buffer.from(`${proxyUrl.username}:${proxyUrl.password}`).toString('base64')}`\n })));\n this._proxyAgentDispatcher = proxyAgent;\n if (usingSsl && this._ignoreSslError) {\n // we don't want to set NODE_TLS_REJECT_UNAUTHORIZED=0 since that will affect request for entire process\n // http.RequestOptions doesn't expose a way to modify RequestOptions.agent.options\n // we have to cast it to any and change it directly\n proxyAgent.options = Object.assign(proxyAgent.options.requestTls || {}, {\n rejectUnauthorized: false\n });\n }\n return proxyAgent;\n }\n _performExponentialBackoff(retryNumber) {\n return __awaiter(this, void 0, void 0, function* () {\n retryNumber = Math.min(ExponentialBackoffCeiling, retryNumber);\n const ms = ExponentialBackoffTimeSlice * Math.pow(2, retryNumber);\n return new Promise(resolve => setTimeout(() => resolve(), ms));\n });\n }\n _processResponse(res, options) {\n return __awaiter(this, void 0, void 0, function* () {\n return new Promise((resolve, reject) => __awaiter(this, void 0, void 0, function* () {\n const statusCode = res.message.statusCode || 0;\n const response = {\n statusCode,\n result: null,\n headers: {}\n };\n // not found leads to null obj returned\n if (statusCode === HttpCodes.NotFound) {\n resolve(response);\n }\n // get the result from the body\n function dateTimeDeserializer(key, value) {\n if (typeof value === 'string') {\n const a = new Date(value);\n if (!isNaN(a.valueOf())) {\n return a;\n }\n }\n return value;\n }\n let obj;\n let contents;\n try {\n contents = yield res.readBody();\n if (contents && contents.length > 0) {\n if (options && options.deserializeDates) {\n obj = JSON.parse(contents, dateTimeDeserializer);\n }\n else {\n obj = JSON.parse(contents);\n }\n response.result = obj;\n }\n response.headers = res.message.headers;\n }\n catch (err) {\n // Invalid resource (contents not json); leaving result obj null\n }\n // note that 3xx redirects are handled by the http layer.\n if (statusCode > 299) {\n let msg;\n // if exception/error in body, attempt to get better error\n if (obj && obj.message) {\n msg = obj.message;\n }\n else if (contents && contents.length > 0) {\n // it may be the case that the exception is in the body message as string\n msg = contents;\n }\n else {\n msg = `Failed request: (${statusCode})`;\n }\n const err = new HttpClientError(msg, statusCode);\n err.result = response.result;\n reject(err);\n }\n else {\n resolve(response);\n }\n }));\n });\n }\n}\nexports.HttpClient = HttpClient;\nconst lowercaseKeys = (obj) => Object.keys(obj).reduce((c, k) => ((c[k.toLowerCase()] = obj[k]), c), {});\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.checkBypass = exports.getProxyUrl = void 0;\nfunction getProxyUrl(reqUrl) {\n const usingSsl = reqUrl.protocol === 'https:';\n if (checkBypass(reqUrl)) {\n return undefined;\n }\n const proxyVar = (() => {\n if (usingSsl) {\n return process.env['https_proxy'] || process.env['HTTPS_PROXY'];\n }\n else {\n return process.env['http_proxy'] || process.env['HTTP_PROXY'];\n }\n })();\n if (proxyVar) {\n try {\n return new DecodedURL(proxyVar);\n }\n catch (_a) {\n if (!proxyVar.startsWith('http://') && !proxyVar.startsWith('https://'))\n return new DecodedURL(`http://${proxyVar}`);\n }\n }\n else {\n return undefined;\n }\n}\nexports.getProxyUrl = getProxyUrl;\nfunction checkBypass(reqUrl) {\n if (!reqUrl.hostname) {\n return false;\n }\n const reqHost = reqUrl.hostname;\n if (isLoopbackAddress(reqHost)) {\n return true;\n }\n const noProxy = process.env['no_proxy'] || process.env['NO_PROXY'] || '';\n if (!noProxy) {\n return false;\n }\n // Determine the request port\n let reqPort;\n if (reqUrl.port) {\n reqPort = Number(reqUrl.port);\n }\n else if (reqUrl.protocol === 'http:') {\n reqPort = 80;\n }\n else if (reqUrl.protocol === 'https:') {\n reqPort = 443;\n }\n // Format the request hostname and hostname with port\n const upperReqHosts = [reqUrl.hostname.toUpperCase()];\n if (typeof reqPort === 'number') {\n upperReqHosts.push(`${upperReqHosts[0]}:${reqPort}`);\n }\n // Compare request host against noproxy\n for (const upperNoProxyItem of noProxy\n .split(',')\n .map(x => x.trim().toUpperCase())\n .filter(x => x)) {\n if (upperNoProxyItem === '*' ||\n upperReqHosts.some(x => x === upperNoProxyItem ||\n x.endsWith(`.${upperNoProxyItem}`) ||\n (upperNoProxyItem.startsWith('.') &&\n x.endsWith(`${upperNoProxyItem}`)))) {\n return true;\n }\n }\n return false;\n}\nexports.checkBypass = checkBypass;\nfunction isLoopbackAddress(host) {\n const hostLower = host.toLowerCase();\n return (hostLower === 'localhost' ||\n hostLower.startsWith('127.') ||\n hostLower.startsWith('[::1]') ||\n hostLower.startsWith('[0:0:0:0:0:0:0:1]'));\n}\nclass DecodedURL extends URL {\n constructor(url, base) {\n super(url, base);\n this._decodedUsername = decodeURIComponent(super.username);\n this._decodedPassword = decodeURIComponent(super.password);\n }\n get username() {\n return this._decodedUsername;\n }\n get password() {\n return this._decodedPassword;\n }\n}\n//# sourceMappingURL=proxy.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar _a;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getCmdPath = exports.tryGetExecutablePath = exports.isRooted = exports.isDirectory = exports.exists = exports.READONLY = exports.UV_FS_O_EXLOCK = exports.IS_WINDOWS = exports.unlink = exports.symlink = exports.stat = exports.rmdir = exports.rm = exports.rename = exports.readlink = exports.readdir = exports.open = exports.mkdir = exports.lstat = exports.copyFile = exports.chmod = void 0;\nconst fs = __importStar(require(\"fs\"));\nconst path = __importStar(require(\"path\"));\n_a = fs.promises\n// export const {open} = 'fs'\n, exports.chmod = _a.chmod, exports.copyFile = _a.copyFile, exports.lstat = _a.lstat, exports.mkdir = _a.mkdir, exports.open = _a.open, exports.readdir = _a.readdir, exports.readlink = _a.readlink, exports.rename = _a.rename, exports.rm = _a.rm, exports.rmdir = _a.rmdir, exports.stat = _a.stat, exports.symlink = _a.symlink, exports.unlink = _a.unlink;\n// export const {open} = 'fs'\nexports.IS_WINDOWS = process.platform === 'win32';\n// See https://github.com/nodejs/node/blob/d0153aee367422d0858105abec186da4dff0a0c5/deps/uv/include/uv/win.h#L691\nexports.UV_FS_O_EXLOCK = 0x10000000;\nexports.READONLY = fs.constants.O_RDONLY;\nfunction exists(fsPath) {\n return __awaiter(this, void 0, void 0, function* () {\n try {\n yield exports.stat(fsPath);\n }\n catch (err) {\n if (err.code === 'ENOENT') {\n return false;\n }\n throw err;\n }\n return true;\n });\n}\nexports.exists = exists;\nfunction isDirectory(fsPath, useStat = false) {\n return __awaiter(this, void 0, void 0, function* () {\n const stats = useStat ? yield exports.stat(fsPath) : yield exports.lstat(fsPath);\n return stats.isDirectory();\n });\n}\nexports.isDirectory = isDirectory;\n/**\n * On OSX/Linux, true if path starts with '/'. On Windows, true for paths like:\n * \\, \\hello, \\\\hello\\share, C:, and C:\\hello (and corresponding alternate separator cases).\n */\nfunction isRooted(p) {\n p = normalizeSeparators(p);\n if (!p) {\n throw new Error('isRooted() parameter \"p\" cannot be empty');\n }\n if (exports.IS_WINDOWS) {\n return (p.startsWith('\\\\') || /^[A-Z]:/i.test(p) // e.g. \\ or \\hello or \\\\hello\n ); // e.g. C: or C:\\hello\n }\n return p.startsWith('/');\n}\nexports.isRooted = isRooted;\n/**\n * Best effort attempt to determine whether a file exists and is executable.\n * @param filePath file path to check\n * @param extensions additional file extensions to try\n * @return if file exists and is executable, returns the file path. otherwise empty string.\n */\nfunction tryGetExecutablePath(filePath, extensions) {\n return __awaiter(this, void 0, void 0, function* () {\n let stats = undefined;\n try {\n // test file exists\n stats = yield exports.stat(filePath);\n }\n catch (err) {\n if (err.code !== 'ENOENT') {\n // eslint-disable-next-line no-console\n console.log(`Unexpected error attempting to determine if executable file exists '${filePath}': ${err}`);\n }\n }\n if (stats && stats.isFile()) {\n if (exports.IS_WINDOWS) {\n // on Windows, test for valid extension\n const upperExt = path.extname(filePath).toUpperCase();\n if (extensions.some(validExt => validExt.toUpperCase() === upperExt)) {\n return filePath;\n }\n }\n else {\n if (isUnixExecutable(stats)) {\n return filePath;\n }\n }\n }\n // try each extension\n const originalFilePath = filePath;\n for (const extension of extensions) {\n filePath = originalFilePath + extension;\n stats = undefined;\n try {\n stats = yield exports.stat(filePath);\n }\n catch (err) {\n if (err.code !== 'ENOENT') {\n // eslint-disable-next-line no-console\n console.log(`Unexpected error attempting to determine if executable file exists '${filePath}': ${err}`);\n }\n }\n if (stats && stats.isFile()) {\n if (exports.IS_WINDOWS) {\n // preserve the case of the actual file (since an extension was appended)\n try {\n const directory = path.dirname(filePath);\n const upperName = path.basename(filePath).toUpperCase();\n for (const actualName of yield exports.readdir(directory)) {\n if (upperName === actualName.toUpperCase()) {\n filePath = path.join(directory, actualName);\n break;\n }\n }\n }\n catch (err) {\n // eslint-disable-next-line no-console\n console.log(`Unexpected error attempting to determine the actual case of the file '${filePath}': ${err}`);\n }\n return filePath;\n }\n else {\n if (isUnixExecutable(stats)) {\n return filePath;\n }\n }\n }\n }\n return '';\n });\n}\nexports.tryGetExecutablePath = tryGetExecutablePath;\nfunction normalizeSeparators(p) {\n p = p || '';\n if (exports.IS_WINDOWS) {\n // convert slashes on Windows\n p = p.replace(/\\//g, '\\\\');\n // remove redundant slashes\n return p.replace(/\\\\\\\\+/g, '\\\\');\n }\n // remove redundant slashes\n return p.replace(/\\/\\/+/g, '/');\n}\n// on Mac/Linux, test the execute bit\n// R W X R W X R W X\n// 256 128 64 32 16 8 4 2 1\nfunction isUnixExecutable(stats) {\n return ((stats.mode & 1) > 0 ||\n ((stats.mode & 8) > 0 && stats.gid === process.getgid()) ||\n ((stats.mode & 64) > 0 && stats.uid === process.getuid()));\n}\n// Get the path of cmd.exe in windows\nfunction getCmdPath() {\n var _a;\n return (_a = process.env['COMSPEC']) !== null && _a !== void 0 ? _a : `cmd.exe`;\n}\nexports.getCmdPath = getCmdPath;\n//# sourceMappingURL=io-util.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.findInPath = exports.which = exports.mkdirP = exports.rmRF = exports.mv = exports.cp = void 0;\nconst assert_1 = require(\"assert\");\nconst path = __importStar(require(\"path\"));\nconst ioUtil = __importStar(require(\"./io-util\"));\n/**\n * Copies a file or folder.\n * Based off of shelljs - https://github.com/shelljs/shelljs/blob/9237f66c52e5daa40458f94f9565e18e8132f5a6/src/cp.js\n *\n * @param source source path\n * @param dest destination path\n * @param options optional. See CopyOptions.\n */\nfunction cp(source, dest, options = {}) {\n return __awaiter(this, void 0, void 0, function* () {\n const { force, recursive, copySourceDirectory } = readCopyOptions(options);\n const destStat = (yield ioUtil.exists(dest)) ? yield ioUtil.stat(dest) : null;\n // Dest is an existing file, but not forcing\n if (destStat && destStat.isFile() && !force) {\n return;\n }\n // If dest is an existing directory, should copy inside.\n const newDest = destStat && destStat.isDirectory() && copySourceDirectory\n ? path.join(dest, path.basename(source))\n : dest;\n if (!(yield ioUtil.exists(source))) {\n throw new Error(`no such file or directory: ${source}`);\n }\n const sourceStat = yield ioUtil.stat(source);\n if (sourceStat.isDirectory()) {\n if (!recursive) {\n throw new Error(`Failed to copy. ${source} is a directory, but tried to copy without recursive flag.`);\n }\n else {\n yield cpDirRecursive(source, newDest, 0, force);\n }\n }\n else {\n if (path.relative(source, newDest) === '') {\n // a file cannot be copied to itself\n throw new Error(`'${newDest}' and '${source}' are the same file`);\n }\n yield copyFile(source, newDest, force);\n }\n });\n}\nexports.cp = cp;\n/**\n * Moves a path.\n *\n * @param source source path\n * @param dest destination path\n * @param options optional. See MoveOptions.\n */\nfunction mv(source, dest, options = {}) {\n return __awaiter(this, void 0, void 0, function* () {\n if (yield ioUtil.exists(dest)) {\n let destExists = true;\n if (yield ioUtil.isDirectory(dest)) {\n // If dest is directory copy src into dest\n dest = path.join(dest, path.basename(source));\n destExists = yield ioUtil.exists(dest);\n }\n if (destExists) {\n if (options.force == null || options.force) {\n yield rmRF(dest);\n }\n else {\n throw new Error('Destination already exists');\n }\n }\n }\n yield mkdirP(path.dirname(dest));\n yield ioUtil.rename(source, dest);\n });\n}\nexports.mv = mv;\n/**\n * Remove a path recursively with force\n *\n * @param inputPath path to remove\n */\nfunction rmRF(inputPath) {\n return __awaiter(this, void 0, void 0, function* () {\n if (ioUtil.IS_WINDOWS) {\n // Check for invalid characters\n // https://docs.microsoft.com/en-us/windows/win32/fileio/naming-a-file\n if (/[*\"<>|]/.test(inputPath)) {\n throw new Error('File path must not contain `*`, `\"`, `<`, `>` or `|` on Windows');\n }\n }\n try {\n // note if path does not exist, error is silent\n yield ioUtil.rm(inputPath, {\n force: true,\n maxRetries: 3,\n recursive: true,\n retryDelay: 300\n });\n }\n catch (err) {\n throw new Error(`File was unable to be removed ${err}`);\n }\n });\n}\nexports.rmRF = rmRF;\n/**\n * Make a directory. Creates the full path with folders in between\n * Will throw if it fails\n *\n * @param fsPath path to create\n * @returns Promise\n */\nfunction mkdirP(fsPath) {\n return __awaiter(this, void 0, void 0, function* () {\n assert_1.ok(fsPath, 'a path argument must be provided');\n yield ioUtil.mkdir(fsPath, { recursive: true });\n });\n}\nexports.mkdirP = mkdirP;\n/**\n * Returns path of a tool had the tool actually been invoked. Resolves via paths.\n * If you check and the tool does not exist, it will throw.\n *\n * @param tool name of the tool\n * @param check whether to check if tool exists\n * @returns Promise path to tool\n */\nfunction which(tool, check) {\n return __awaiter(this, void 0, void 0, function* () {\n if (!tool) {\n throw new Error(\"parameter 'tool' is required\");\n }\n // recursive when check=true\n if (check) {\n const result = yield which(tool, false);\n if (!result) {\n if (ioUtil.IS_WINDOWS) {\n throw new Error(`Unable to locate executable file: ${tool}. Please verify either the file path exists or the file can be found within a directory specified by the PATH environment variable. Also verify the file has a valid extension for an executable file.`);\n }\n else {\n throw new Error(`Unable to locate executable file: ${tool}. Please verify either the file path exists or the file can be found within a directory specified by the PATH environment variable. Also check the file mode to verify the file is executable.`);\n }\n }\n return result;\n }\n const matches = yield findInPath(tool);\n if (matches && matches.length > 0) {\n return matches[0];\n }\n return '';\n });\n}\nexports.which = which;\n/**\n * Returns a list of all occurrences of the given tool on the system path.\n *\n * @returns Promise the paths of the tool\n */\nfunction findInPath(tool) {\n return __awaiter(this, void 0, void 0, function* () {\n if (!tool) {\n throw new Error(\"parameter 'tool' is required\");\n }\n // build the list of extensions to try\n const extensions = [];\n if (ioUtil.IS_WINDOWS && process.env['PATHEXT']) {\n for (const extension of process.env['PATHEXT'].split(path.delimiter)) {\n if (extension) {\n extensions.push(extension);\n }\n }\n }\n // if it's rooted, return it if exists. otherwise return empty.\n if (ioUtil.isRooted(tool)) {\n const filePath = yield ioUtil.tryGetExecutablePath(tool, extensions);\n if (filePath) {\n return [filePath];\n }\n return [];\n }\n // if any path separators, return empty\n if (tool.includes(path.sep)) {\n return [];\n }\n // build the list of directories\n //\n // Note, technically \"where\" checks the current directory on Windows. From a toolkit perspective,\n // it feels like we should not do this. Checking the current directory seems like more of a use\n // case of a shell, and the which() function exposed by the toolkit should strive for consistency\n // across platforms.\n const directories = [];\n if (process.env.PATH) {\n for (const p of process.env.PATH.split(path.delimiter)) {\n if (p) {\n directories.push(p);\n }\n }\n }\n // find all matches\n const matches = [];\n for (const directory of directories) {\n const filePath = yield ioUtil.tryGetExecutablePath(path.join(directory, tool), extensions);\n if (filePath) {\n matches.push(filePath);\n }\n }\n return matches;\n });\n}\nexports.findInPath = findInPath;\nfunction readCopyOptions(options) {\n const force = options.force == null ? true : options.force;\n const recursive = Boolean(options.recursive);\n const copySourceDirectory = options.copySourceDirectory == null\n ? true\n : Boolean(options.copySourceDirectory);\n return { force, recursive, copySourceDirectory };\n}\nfunction cpDirRecursive(sourceDir, destDir, currentDepth, force) {\n return __awaiter(this, void 0, void 0, function* () {\n // Ensure there is not a run away recursive copy\n if (currentDepth >= 255)\n return;\n currentDepth++;\n yield mkdirP(destDir);\n const files = yield ioUtil.readdir(sourceDir);\n for (const fileName of files) {\n const srcFile = `${sourceDir}/${fileName}`;\n const destFile = `${destDir}/${fileName}`;\n const srcFileStat = yield ioUtil.lstat(srcFile);\n if (srcFileStat.isDirectory()) {\n // Recurse\n yield cpDirRecursive(srcFile, destFile, currentDepth, force);\n }\n else {\n yield copyFile(srcFile, destFile, force);\n }\n }\n // Change the mode for the newly created directory\n yield ioUtil.chmod(destDir, (yield ioUtil.stat(sourceDir)).mode);\n });\n}\n// Buffered file copy\nfunction copyFile(srcFile, destFile, force) {\n return __awaiter(this, void 0, void 0, function* () {\n if ((yield ioUtil.lstat(srcFile)).isSymbolicLink()) {\n // unlink/re-link it\n try {\n yield ioUtil.lstat(destFile);\n yield ioUtil.unlink(destFile);\n }\n catch (e) {\n // Try to override file permission\n if (e.code === 'EPERM') {\n yield ioUtil.chmod(destFile, '0666');\n yield ioUtil.unlink(destFile);\n }\n // other errors = it doesn't exist, no work to do\n }\n // Copy over symlink\n const symlinkFull = yield ioUtil.readlink(srcFile);\n yield ioUtil.symlink(symlinkFull, destFile, ioUtil.IS_WINDOWS ? 'junction' : null);\n }\n else if (!(yield ioUtil.exists(destFile)) || force) {\n yield ioUtil.copyFile(srcFile, destFile);\n }\n });\n}\n//# sourceMappingURL=io.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.loadAwsServiceSpec = loadAwsServiceSpec;\nexports.loadAwsServiceSpecSync = loadAwsServiceSpecSync;\nconst node_fs_1 = require(\"node:fs\");\nconst path = __importStar(require(\"node:path\"));\nconst node_zlib_1 = require(\"node:zlib\");\nconst service_spec_types_1 = require(\"@aws-cdk/service-spec-types\");\nconst DB_COMPRESSED = 'db.json.gz';\nconst DB_PATH = path.join(__dirname, '..', DB_COMPRESSED);\n/**\n * Load the provided built-in database\n */\nasync function loadAwsServiceSpec() {\n return loadBufferIntoDatabase(await node_fs_1.promises.readFile(DB_PATH));\n}\n/**\n * Synchronously load the provided built-in database\n */\nfunction loadAwsServiceSpecSync() {\n return loadBufferIntoDatabase((0, node_fs_1.readFileSync)(DB_PATH));\n}\nfunction loadBufferIntoDatabase(spec) {\n const db = (0, service_spec_types_1.emptyDatabase)();\n db.load(JSON.parse((0, node_zlib_1.gunzipSync)(spec).toString('utf-8')));\n return db;\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQVdBLGdEQUVDO0FBS0Qsd0RBRUM7QUFwQkQscUNBQXVEO0FBQ3ZELGdEQUFrQztBQUNsQyx5Q0FBdUM7QUFDdkMsb0VBQTBFO0FBRTFFLE1BQU0sYUFBYSxHQUFHLFlBQVksQ0FBQztBQUNuQyxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxJQUFJLEVBQUUsYUFBYSxDQUFDLENBQUM7QUFFMUQ7O0dBRUc7QUFDSSxLQUFLLFVBQVUsa0JBQWtCO0lBQ3RDLE9BQU8sc0JBQXNCLENBQUMsTUFBTSxrQkFBRSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO0FBQzVELENBQUM7QUFFRDs7R0FFRztBQUNILFNBQWdCLHNCQUFzQjtJQUNwQyxPQUFPLHNCQUFzQixDQUFDLElBQUEsc0JBQVksRUFBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO0FBQ3ZELENBQUM7QUFFRCxTQUFTLHNCQUFzQixDQUFDLElBQVk7SUFDMUMsTUFBTSxFQUFFLEdBQUcsSUFBQSxrQ0FBYSxHQUFFLENBQUM7SUFDM0IsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUEsc0JBQVUsRUFBQyxJQUFJLENBQUMsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3hELE9BQU8sRUFBRSxDQUFDO0FBQ1osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHByb21pc2VzIGFzIGZzLCByZWFkRmlsZVN5bmMgfSBmcm9tICdub2RlOmZzJztcbmltcG9ydCAqIGFzIHBhdGggZnJvbSAnbm9kZTpwYXRoJztcbmltcG9ydCB7IGd1bnppcFN5bmMgfSBmcm9tICdub2RlOnpsaWInO1xuaW1wb3J0IHsgZW1wdHlEYXRhYmFzZSwgU3BlY0RhdGFiYXNlIH0gZnJvbSAnQGF3cy1jZGsvc2VydmljZS1zcGVjLXR5cGVzJztcblxuY29uc3QgREJfQ09NUFJFU1NFRCA9ICdkYi5qc29uLmd6JztcbmNvbnN0IERCX1BBVEggPSBwYXRoLmpvaW4oX19kaXJuYW1lLCAnLi4nLCBEQl9DT01QUkVTU0VEKTtcblxuLyoqXG4gKiBMb2FkIHRoZSBwcm92aWRlZCBidWlsdC1pbiBkYXRhYmFzZVxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gbG9hZEF3c1NlcnZpY2VTcGVjKCk6IFByb21pc2U8U3BlY0RhdGFiYXNlPiB7XG4gIHJldHVybiBsb2FkQnVmZmVySW50b0RhdGFiYXNlKGF3YWl0IGZzLnJlYWRGaWxlKERCX1BBVEgpKTtcbn1cblxuLyoqXG4gKiBTeW5jaHJvbm91c2x5IGxvYWQgdGhlIHByb3ZpZGVkIGJ1aWx0LWluIGRhdGFiYXNlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBsb2FkQXdzU2VydmljZVNwZWNTeW5jKCk6IFNwZWNEYXRhYmFzZSB7XG4gIHJldHVybiBsb2FkQnVmZmVySW50b0RhdGFiYXNlKHJlYWRGaWxlU3luYyhEQl9QQVRIKSk7XG59XG5cbmZ1bmN0aW9uIGxvYWRCdWZmZXJJbnRvRGF0YWJhc2Uoc3BlYzogQnVmZmVyKTogU3BlY0RhdGFiYXNlIHtcbiAgY29uc3QgZGIgPSBlbXB0eURhdGFiYXNlKCk7XG4gIGRiLmxvYWQoSlNPTi5wYXJzZShndW56aXBTeW5jKHNwZWMpLnRvU3RyaW5nKCd1dGYtOCcpKSk7XG4gIHJldHVybiBkYjtcbn1cbiJdfQ==","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./types/database\"), exports);\n__exportStar(require(\"./types/resource\"), exports);\n__exportStar(require(\"./types/augmentations\"), exports);\n__exportStar(require(\"./types/metrics\"), exports);\n__exportStar(require(\"./types/diff\"), exports);\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLG1EQUFpQztBQUNqQyxtREFBaUM7QUFDakMsd0RBQXNDO0FBQ3RDLGtEQUFnQztBQUNoQywrQ0FBNkIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL3R5cGVzL2RhdGFiYXNlJztcbmV4cG9ydCAqIGZyb20gJy4vdHlwZXMvcmVzb3VyY2UnO1xuZXhwb3J0ICogZnJvbSAnLi90eXBlcy9hdWdtZW50YXRpb25zJztcbmV4cG9ydCAqIGZyb20gJy4vdHlwZXMvbWV0cmljcyc7XG5leHBvcnQgKiBmcm9tICcuL3R5cGVzL2RpZmYnO1xuIl19","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXVnbWVudGF0aW9ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90eXBlcy9hdWdtZW50YXRpb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFbnRpdHksIFJlbGF0aW9uc2hpcCB9IGZyb20gJ0BjZGtsYWJzL3Rza2InO1xuaW1wb3J0IHsgUmVzb3VyY2UgfSBmcm9tICcuL3Jlc291cmNlJztcblxuLyoqXG4gKiBBdWdtZW50YXRpb25zIGZvciBhIENsb3VkRm9ybWF0aW9uIHJlc291cmNlIHR5cGVcbiAqXG4gKiBBdWdtZW50YXRpb25zIGFyZSBhIGRlcHJlY2F0ZWQgbWVjaGFuaXNtIGZvciBhdXRvbWF0aWNhbGx5IGdlbmVyYXRpbmcgbWV0cmljc1xuICogZnVuY3Rpb25zIGZvciBjZXJ0YWluIHJlc291cmNlcywgdXRpbGl6aW5nIFR5cGVTY3JpcHQgbWl4aW5zLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJlc291cmNlQXVnbWVudGF0aW9uIGV4dGVuZHMgRW50aXR5IHtcbiAgLyoqXG4gICAqIE1ldHJpYyBhdWdtZW50YXRpb25zIGZvciB0aGlzIHJlc291cmNlIHR5cGVcbiAgICovXG4gIG1ldHJpY3M/OiBSZXNvdXJjZU1ldHJpY0F1Z21lbnRhdGlvbnM7XG5cbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSBmaWxlIGNvbnRhaW5pbmcgdGhlIGNsYXNzIHRvIGJlIFwiYXVnbWVudGVkXCIuXG4gICAqXG4gICAqIEBkZWZhdWx0IGtlYmFiIGNhc2VkIENsb3VkRm9ybWF0aW9uIHJlc291cmNlIG5hbWUgKyAnLWJhc2UnXG4gICAqL1xuICBiYXNlQ2xhc3NGaWxlPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgY2xhc3MgdG8gYmUgXCJhdWdtZW50ZWRcIi5cbiAgICpcbiAgICogQGRlZmF1bHQgQ2xvdWRGb3JtYXRpb24gcmVzb3VyY2UgbmFtZSArICdCYXNlJ1xuICAgKi9cbiAgYmFzZUNsYXNzPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgZmlsZSBjb250YWluaW5nIHRoZSBpbnRlcmZhY2UgdG8gYmUgXCJhdWdtZW50ZWRcIi5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBzYW1lIGFzIGBgY2xhc3NGaWxlYGAuXG4gICAqL1xuICBpbnRlcmZhY2VGaWxlPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgaW50ZXJmYWNlIHRvIGJlIFwiYXVnbWVudGVkXCIuXG4gICAqXG4gICAqIEBkZWZhdWx0ICdJJyArIENsb3VkRm9ybWF0aW9uIHJlc291cmNlIG5hbWVcbiAgICovXG4gIGludGVyZmFjZT86IHN0cmluZztcbn1cblxuZXhwb3J0IHR5cGUgSXNBdWdtZW50ZWRSZXNvdXJjZSA9IFJlbGF0aW9uc2hpcDxSZXNvdXJjZSwgUmVzb3VyY2VBdWdtZW50YXRpb24+O1xuXG5leHBvcnQgaW50ZXJmYWNlIFJlc291cmNlTWV0cmljQXVnbWVudGF0aW9ucyB7XG4gIC8qKlxuICAgKiBUaGUgbmFtZXNwYWNlIG9mIG1ldHJpY3MgZm9yIHRoaXMgc2VydmljZVxuICAgKi9cbiAgbmFtZXNwYWNlOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBwcm9wZXJ0aWVzIG9mIHRoZSByZXNvdXJjZSBjbGFzcyB0aGF0IHByb3ZpZGUgdmFsdWVzIGZvciB0aGUgZGltZW5zaW9uc1xuICAgKlxuICAgKiBGb3IgZXhhbXBsZSwgYHsgUXVldWVOYW1lOiAncXVldWVOYW1lJyB9YCBzYXlzIHRoYXQgdGhlIG1ldHJpYyBoYXMgYSBgUXVldWVOYW1lYFxuICAgKiBkaW1lbnNpb24sIGZvciB3aGljaCB0aGUgdmFsdWUgY2FuIGJlIG9idGFpbmVkIGJ5IHJlYWRpbmcgYHRoaXMucXVldWVOYW1lYC5cbiAgICovXG4gIGRpbWVuc2lvbnM6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH07XG5cbiAgLyoqXG4gICAqIFRoZSBtZXRyaWNzIGZvciB0aGlzIHJlc291cmNlXG4gICAqL1xuICBtZXRyaWNzOiBSZXNvdXJjZU1ldHJpY1tdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFJlc291cmNlTWV0cmljIHtcbiAgLyoqXG4gICAqIFVwcGVyY2FzZS1maXJzdCBtZXRyaWMgbmFtZVxuICAgKi9cbiAgbmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBEb2N1bWVudGF0aW9uIGxpbmVcbiAgICovXG4gIGRvY3VtZW50YXRpb246IHN0cmluZztcblxuICAvKipcbiAgICogV2hldGhlciB0aGlzIGlzIGFuIGV2ZW4gY291bnQgKDEgZ2V0cyBlbWl0dGVkIGV2ZXJ5IHRpbWUgc29tZXRoaW5nIG9jY3VycylcbiAgICpcbiAgICogQGRlZmF1bHQgTWV0cmljVHlwZS5BdHRyaWJcbiAgICovXG4gIHR5cGU/OiBNZXRyaWNUeXBlO1xufVxuXG5leHBvcnQgdHlwZSBNZXRyaWNUeXBlID1cbiAgLyoqXG4gICAqIFRoaXMgbWV0cmljIGlzIGVtaXR0ZWQgZm9yIGV2ZW50cywgbWVhc3VyaW5nIGEgYXR0cmlidXRlIG9mIHRoZSBldmVudC5cbiAgICpcbiAgICogVHlwaWNhbCBleGFtcGxlcyBvZiB0aGlzIHdvdWxkIGJlIGR1cmF0aW9uLCBvciByZXF1ZXN0IHNpemUsIG9yIHNpbWlsYXIuXG4gICAqXG4gICAqIFRoZSBkZWZhdWx0IGFnZ3JlZ2F0ZSBmb3IgdGhpcyB0eXBlIG9mIGV2ZW50IGlzIFwiQXZnXCIuXG4gICAqL1xuICB8ICdhdHRyaWInXG5cbiAgLyoqXG4gICAqIFRoaXMgbWV0cmljIGlzIGVtaXR0ZWQgZm9yIGV2ZW50cywgYW5kIHRoZSB2YWx1ZSBpcyBhbHdheXMgYDFgLlxuICAgKlxuICAgKiBPbmx5IFwiU3VtXCIgaXMgYSBtZWFuaW5nZnVsIGFnZ3JlZ2F0ZSBvZiB0aGlzIHR5cGUgb2YgbWV0cmljOyBhbGwgb3RoZXJcbiAgICogYWdncmVnYXRpb25zIHdpbGwgb25seSBldmVyIHByb2R1Y2UgdGhlIHZhbHVlIGAxYC5cbiAgICovXG4gIHwgJ2NvdW50J1xuXG4gIC8qKlxuICAgKiBUaGlzIG1ldHJpYyBpcyBlbWl0dGVkIHBlcmlvZGljYWxseSwgcmVwcmVzZW50aW5nIGEgc3lzdGVtIHByb3BlcnR5LlxuICAgKlxuICAgKiBUaGUgbWV0cmljIG1lYXN1cmVzIHNvbWUgZ2xvYmFsIGV2ZXItY2hhbmdpbmcgcHJvcGVydHksIGFuZCBkb2VzIG5vdFxuICAgKiBtZWFzdXJlIGV2ZW50cy4gVGhlIG1vc3QgdXNlZnVsIGFnZ3JlZ2F0ZSBvZiB0aGlzIHR5cGUgb2YgbWV0cmljIGlzIFwiTWF4XCIuXG4gICAqL1xuICB8ICdnYXVnZSc7XG4iXX0=","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.RichSpecDatabase = exports.loadDatabase = exports.emptyDatabase = void 0;\nconst fs_1 = require(\"fs\");\nconst zlib_1 = require(\"zlib\");\nconst tskb_1 = require(\"@cdklabs/tskb\");\nfunction emptyDatabase() {\n return new tskb_1.Database({\n resource: (0, tskb_1.entityCollection)().index({\n cloudFormationType: (0, tskb_1.fieldIndex)('cloudFormationType', tskb_1.stringCmp),\n }),\n region: (0, tskb_1.entityCollection)().index({\n name: (0, tskb_1.fieldIndex)('name', tskb_1.stringCmp),\n }),\n service: (0, tskb_1.entityCollection)().index({\n name: (0, tskb_1.fieldIndex)('name', tskb_1.stringCmp),\n cloudFormationNamespace: (0, tskb_1.fieldIndex)('cloudFormationNamespace', tskb_1.stringCmp),\n }),\n typeDefinition: (0, tskb_1.entityCollection)(),\n augmentations: (0, tskb_1.entityCollection)(),\n metric: (0, tskb_1.entityCollection)().index({\n name: (0, tskb_1.fieldIndex)('name', tskb_1.stringCmp),\n namespace: (0, tskb_1.fieldIndex)('namespace', tskb_1.stringCmp),\n dedupKey: (0, tskb_1.fieldIndex)('dedupKey', tskb_1.stringCmp),\n }),\n dimensionSet: (0, tskb_1.entityCollection)().index({\n dedupKey: (0, tskb_1.fieldIndex)('dedupKey', tskb_1.stringCmp),\n }),\n }, (r) => ({\n hasResource: r.relationship('service', 'resource'),\n regionHasResource: r.relationship('region', 'resource'),\n regionHasService: r.relationship('region', 'service'),\n usesType: r.relationship('resource', 'typeDefinition'),\n isAugmented: r.relationship('resource', 'augmentations'),\n usesDimensionSet: r.relationship('metric', 'dimensionSet'),\n resourceHasMetric: r.relationship('resource', 'metric'),\n serviceHasMetric: r.relationship('service', 'metric'),\n resourceHasDimensionSet: r.relationship('resource', 'dimensionSet'),\n serviceHasDimensionSet: r.relationship('service', 'dimensionSet'),\n }));\n}\nexports.emptyDatabase = emptyDatabase;\nasync function loadDatabase(pathToDb) {\n const db = emptyDatabase();\n const contents = await fs_1.promises.readFile(pathToDb);\n const json = pathToDb.endsWith('.gz') ? (0, zlib_1.gunzipSync)(contents).toString('utf-8') : contents.toString('utf-8');\n db.load(JSON.parse(json));\n return db;\n}\nexports.loadDatabase = loadDatabase;\n/**\n * Helpers for working with a SpecDatabase\n */\nclass RichSpecDatabase {\n constructor(db) {\n this.db = db;\n }\n /**\n * Find all resources of a given type\n */\n resourceByType(cfnType, operation = 'resourceByType') {\n const res = this.db.lookup('resource', 'cloudFormationType', 'equals', cfnType);\n if (res.length === 0) {\n throw new Error(`${operation}: no such resource: ${cfnType}`);\n }\n return res[0];\n }\n /**\n * All type definitions used by a certain resource\n */\n resourceTypeDefs(cfnType) {\n const resource = this.db.lookup('resource', 'cloudFormationType', 'equals', cfnType).only();\n return this.db.follow('usesType', resource).map((x) => x.entity);\n }\n /**\n * Find a type definition from a given property type\n */\n tryFindDef(type) {\n return type.type === 'ref' ? this.db.get('typeDefinition', type.reference.$ref) : undefined;\n }\n}\nexports.RichSpecDatabase = RichSpecDatabase;\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YWJhc2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdHlwZXMvZGF0YWJhc2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsMkJBQW9DO0FBQ3BDLCtCQUFrQztBQUNsQyx3Q0FBa0Y7QUF1QmxGLFNBQWdCLGFBQWE7SUFDM0IsT0FBTyxJQUFJLGVBQVEsQ0FDakI7UUFDRSxRQUFRLEVBQUUsSUFBQSx1QkFBZ0IsR0FBWSxDQUFDLEtBQUssQ0FBQztZQUMzQyxrQkFBa0IsRUFBRSxJQUFBLGlCQUFVLEVBQUMsb0JBQW9CLEVBQUUsZ0JBQVMsQ0FBQztTQUNoRSxDQUFDO1FBQ0YsTUFBTSxFQUFFLElBQUEsdUJBQWdCLEdBQVUsQ0FBQyxLQUFLLENBQUM7WUFDdkMsSUFBSSxFQUFFLElBQUEsaUJBQVUsRUFBQyxNQUFNLEVBQUUsZ0JBQVMsQ0FBQztTQUNwQyxDQUFDO1FBQ0YsT0FBTyxFQUFFLElBQUEsdUJBQWdCLEdBQVcsQ0FBQyxLQUFLLENBQUM7WUFDekMsSUFBSSxFQUFFLElBQUEsaUJBQVUsRUFBQyxNQUFNLEVBQUUsZ0JBQVMsQ0FBQztZQUNuQyx1QkFBdUIsRUFBRSxJQUFBLGlCQUFVLEVBQUMseUJBQXlCLEVBQUUsZ0JBQVMsQ0FBQztTQUMxRSxDQUFDO1FBQ0YsY0FBYyxFQUFFLElBQUEsdUJBQWdCLEdBQWtCO1FBQ2xELGFBQWEsRUFBRSxJQUFBLHVCQUFnQixHQUF3QjtRQUN2RCxNQUFNLEVBQUUsSUFBQSx1QkFBZ0IsR0FBVSxDQUFDLEtBQUssQ0FBQztZQUN2QyxJQUFJLEVBQUUsSUFBQSxpQkFBVSxFQUFDLE1BQU0sRUFBRSxnQkFBUyxDQUFDO1lBQ25DLFNBQVMsRUFBRSxJQUFBLGlCQUFVLEVBQUMsV0FBVyxFQUFFLGdCQUFTLENBQUM7WUFDN0MsUUFBUSxFQUFFLElBQUEsaUJBQVUsRUFBQyxVQUFVLEVBQUUsZ0JBQVMsQ0FBQztTQUM1QyxDQUFDO1FBQ0YsWUFBWSxFQUFFLElBQUEs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QUFDLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDbkUsQ0FBQztJQUVEOztPQUVHO0lBQ0ksVUFBVSxDQUFDLElBQWtCO1FBQ2xDLE9BQU8sSUFBSSxDQUFDLElBQUksS0FBSyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLGdCQUFnQixFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztJQUM5RixDQUFDO0NBQ0Y7QUE1QkQsNENBNEJDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgcHJvbWlzZXMgYXMgZnMgfSBmcm9tICdmcyc7XG5pbXBvcnQgeyBndW56aXBTeW5jIH0gZnJvbSAnemxpYic7XG5pbXBvcnQgeyBEYXRhYmFzZSwgZW50aXR5Q29sbGVjdGlvbiwgZmllbGRJbmRleCwgc3RyaW5nQ21wIH0gZnJvbSAnQGNka2xhYnMvdHNrYic7XG5pbXBvcnQgeyBJc0F1Z21lbnRlZFJlc291cmNlLCBSZXNvdXJjZUF1Z21lbnRhdGlvbiB9IGZyb20gJy4vYXVnbWVudGF0aW9ucyc7XG5pbXBvcnQge1xuICBEaW1lbnNpb25TZXQsXG4gIE1ldHJpYyxcbiAgUmVzb3VyY2VIYXNEaW1lbnNpb25TZXQsXG4gIFNlcnZpY2VIYXNEaW1lbnNpb25TZXQsXG4gIFVzZXNEaW1lbnNpb25TZXQsXG4gIFJlc291cmNlSGFzTWV0cmljLFxuICBTZXJ2aWNlSGFzTWV0cmljLFxufSBmcm9tICcuL21ldHJpY3MnO1xuaW1wb3J0IHtcbiAgUmVzb3VyY2UsXG4gIFNlcnZpY2UsXG4gIFR5cGVEZWZpbml0aW9uLFxuICBQcm9wZXJ0eVR5cGUsXG4gIFJlZ2lvbixcbiAgSGFzUmVzb3VyY2UsXG4gIFJlZ2lvbkhhc1Jlc291cmNlLFxuICBSZWdpb25IYXNTZXJ2aWNlLFxuICBVc2VzVHlwZSxcbn0gZnJvbSAnLi9yZXNvdXJjZSc7XG5cbmV4cG9ydCBmdW5jdGlvbiBlbXB0eURhdGFiYXNlKCkge1xuICByZXR1cm4gbmV3IERhdGFiYXNlKFxuICAgIHtcbiAgICAgIHJlc291cmNlOiBlbnRpdHlDb2xsZWN0aW9uPFJlc291cmNlPigpLmluZGV4KHtcbiAgICAgICAgY2xvdWRGb3JtYXRpb25UeXBlOiBmaWVsZEluZGV4KCdjbG91ZEZvcm1hdGlvblR5cGUnLCBzdHJpbmdDbXApLFxuICAgICAgfSksXG4gICAgICByZWdpb246IGVudGl0eUNvbGxlY3Rpb248UmVnaW9uPigpLmluZGV4KHtcbiAgICAgICAgbmFtZTogZmllbGRJbmRleCgnbmFtZScsIHN0cmluZ0NtcCksXG4gICAgICB9KSxcbiAgICAgIHNlcnZpY2U6IGVudGl0eUNvbGxlY3Rpb248U2VydmljZT4oKS5pbmRleCh7XG4gICAgICAgIG5hbWU6IGZpZWxkSW5kZXgoJ25hbWUnLCBzdHJpbmdDbXApLFxuICAgICAgICBjbG91ZEZvcm1hdGlvbk5hbWVzcGFjZTogZmllbGRJbmRleCgnY2xvdWRGb3JtYXRpb25OYW1lc3BhY2UnLCBzdHJpbmdDbXApLFxuICAgICAgfSksXG4gICAgICB0eXBlRGVmaW5pdGlvbjogZW50aXR5Q29sbGVjdGlvbjxUeXBlRGVmaW5pdGlvbj4oKSxcbiAgICAgIGF1Z21lbnRhdGlvbnM6IGVudGl0eUNvbGxlY3Rpb248UmVzb3VyY2VBdWdtZW50YXRpb24+KCksXG4gICAgICBtZXRyaWM6IGVudGl0eUNvbGxlY3Rpb248TWV0cmljPigpLmluZGV4KHtcbiAgICAgICAgbmFtZTogZmllbGRJbmRleCgnbmFtZScsIHN0cmluZ0NtcCksXG4gICAgICAgIG5hbWVzcGFjZTogZmllbGRJbmRleCgnbmFtZXNwYWNlJywgc3RyaW5nQ21wKSxcbiAgICAgICAgZGVkdXBLZXk6IGZpZWxkSW5kZXgoJ2RlZHVwS2V5Jywgc3RyaW5nQ21wKSxcbiAgICAgIH0pLFxuICAgICAgZGltZW5zaW9uU2V0OiBlbnRpdHlDb2xsZWN0aW9uPERpbWVuc2lvblNldD4oKS5pbmRleCh7XG4gICAgICAgIGRlZHVwS2V5OiBmaWVsZEluZGV4KCdkZWR1cEtleScsIHN0cmluZ0NtcCksXG4gICAgICB9KSxcbiAgICB9LFxuICAgIChyKSA9PiAoe1xuICAgICAgaGFzUmVzb3VyY2U6IHIucmVsYXRpb25zaGlwPEhhc1Jlc291cmNlPignc2VydmljZScsICdyZXNvdXJjZScpLFxuICAgICAgcmVnaW9uSGFzUmVzb3VyY2U6IHIucmVsYXRpb25zaGlwPFJlZ2lvbkhhc1Jlc291cmNlPigncmVnaW9uJywgJ3Jlc291cmNlJyksXG4gICAgICByZWdpb25IYXNTZXJ2aWNlOiByLnJlbGF0aW9uc2hpcDxSZWdpb25IYXNTZXJ2aWNlPigncmVnaW9uJywgJ3NlcnZpY2UnKSxcbiAgICAgIHVzZXNUeXBlOiByLnJlbGF0aW9uc2hpcDxVc2VzVHlwZT4oJ3Jlc291cmNlJywgJ3R5cGVEZWZpbml0aW9uJyksXG4gICAgICBpc0F1Z21lbnRlZDogci5yZWxhdGlvbnNoaXA8SXNBdWdtZW50ZWRSZXNvdXJjZT4oJ3Jlc291cmNlJywgJ2F1Z21lbnRhdGlvbnMnKSxcbiAgICAgIHVzZXNEaW1lbnNpb25TZXQ6IHIucmVsYXRpb25zaGlwPFVzZXNEaW1lbnNpb25TZXQ+KCdtZXRyaWMnLCAnZGltZW5zaW9uU2V0JyksXG4gICAgICByZXNvdXJjZUhhc01ldHJpYzogci5yZWxhdGlvbnNoaXA8UmVzb3VyY2VIYXNNZXRyaWM+KCdyZXNvdXJjZScsICdtZXRyaWMnKSxcbiAgICAgIHNlcnZpY2VIYXNNZXRyaWM6IHIucmVsYXRpb25zaGlwPFNlcnZpY2VIYXNNZXRyaWM+KCdzZXJ2aWNlJywgJ21ldHJpYycpLFxuICAgICAgcmVzb3VyY2VIYXNEaW1lbnNpb25TZXQ6IHIucmVsYXRpb25zaGlwPFJlc291cmNlSGFzRGltZW5zaW9uU2V0PigncmVzb3VyY2UnLCAnZGltZW5zaW9uU2V0JyksXG4gICAgICBzZXJ2aWNlSGFzRGltZW5zaW9uU2V0OiByLnJlbGF0aW9uc2hpcDxTZXJ2aWNlSGFzRGltZW5zaW9uU2V0Pignc2VydmljZScsICdkaW1lbnNpb25TZXQnKSxcbiAgICB9KSxcbiAgKTtcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGxvYWREYXRhYmFzZShwYXRoVG9EYjogc3RyaW5nKSB7XG4gIGNvbnN0IGRiID0gZW1wdHlEYXRhYmFzZSgpO1xuICBjb25zdCBjb250ZW50cyA9IGF3YWl0IGZzLnJlYWRGaWxlKHBhdGhUb0RiKTtcbiAgY29uc3QganNvbiA9IHBhdGhUb0RiLmVuZHNXaXRoKCcuZ3onKSA/IGd1bnppcFN5bmMoY29udGVudHMpLnRvU3RyaW5nKCd1dGYtOCcpIDogY29udGVudHMudG9TdHJpbmcoJ3V0Zi04Jyk7XG4gIGRiLmxvYWQoSlNPTi5wYXJzZShqc29uKSk7XG4gIHJldHVybiBkYjtcbn1cblxuZXhwb3J0IHR5cGUgU3BlY0RhdGFiYXNlID0gUmV0dXJuVHlwZTx0eXBlb2YgZW1wdHlEYXRhYmFzZT47XG5cbi8qKlxuICogSGVscGVycyBmb3Igd29ya2luZyB3aXRoIGEgU3BlY0RhdGFiYXNlXG4gKi9cbmV4cG9ydCBjbGFzcyBSaWNoU3BlY0RhdGFiYXNlIHtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBkYjogU3BlY0RhdGFiYXNlKSB7fVxuXG4gIC8qKlxuICAgKiBGaW5kIGFsbCByZXNvdXJjZXMgb2YgYSBnaXZlbiB0eXBlXG4gICAqL1xuICBwdWJsaWMgcmVzb3VyY2VCeVR5cGUoY2ZuVHlwZTogc3RyaW5nLCBvcGVyYXRpb24gPSAncmVzb3VyY2VCeVR5cGUnKTogUmVzb3VyY2Uge1xuICAgIGNvbnN0IHJlcyA9IHRoaXMuZGIubG9va3VwKCdyZXNvdXJjZScsICdjbG91ZEZvcm1hdGlvblR5cGUnLCAnZXF1YWxzJywgY2ZuVHlwZSk7XG4gICAgaWYgKHJlcy5sZW5ndGggPT09IDApIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgJHtvcGVyYXRpb259OiBubyBzdWNoIHJlc291cmNlOiAke2NmblR5cGV9YCk7XG4gICAgfVxuICAgIHJldHVybiByZXNbMF07XG4gIH1cblxuICAvKipcbiAgICogQWxsIHR5cGUgZGVmaW5pdGlvbnMgdXNlZCBieSBhIGNlcnRhaW4gcmVzb3VyY2VcbiAgICovXG4gIHB1YmxpYyByZXNvdXJjZVR5cGVEZWZzKGNmblR5cGU6IHN0cmluZyk6IHJlYWRvbmx5IFR5cGVEZWZpbml0aW9uW10ge1xuICAgIGNvbnN0IHJlc291cmNlID0gdGhpcy5kYi5sb29rdXAoJ3Jlc291cmNlJywgJ2Nsb3VkRm9ybWF0aW9uVHlwZScsICdlcXVhbHMnLCBjZm5UeXBlKS5vbmx5KCk7XG4gICAgcmV0dXJuIHRoaXMuZGIuZm9sbG93KCd1c2VzVHlwZScsIHJlc291cmNlKS5tYXAoKHgpID0+IHguZW50aXR5KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBGaW5kIGEgdHlwZSBkZWZpbml0aW9uIGZyb20gYSBnaXZlbiBwcm9wZXJ0eSB0eXBlXG4gICAqL1xuICBwdWJsaWMgdHJ5RmluZERlZih0eXBlOiBQcm9wZXJ0eVR5cGUpOiBUeXBlRGVmaW5pdGlvbiB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHR5cGUudHlwZSA9PT0gJ3JlZicgPyB0aGlzLmRiLmdldCgndHlwZURlZmluaXRpb24nLCB0eXBlLnJlZmVyZW5jZS4kcmVmKSA6IHVuZGVmaW5lZDtcbiAgfVxufVxuIl19","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlmZi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90eXBlcy9kaWZmLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBdHRyaWJ1dGUsIFByb3BlcnR5LCBSZXNvdXJjZSwgU2VydmljZSwgVHlwZURlZmluaXRpb24gfSBmcm9tICcuL3Jlc291cmNlJztcblxuZXhwb3J0IGludGVyZmFjZSBTcGVjRGF0YWJhc2VEaWZmIHtcbiAgc2VydmljZXM6IE1hcERpZmY8U2VydmljZSwgVXBkYXRlZFNlcnZpY2U+O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIExpc3REaWZmPEUsIEVEPiB7XG4gIHJlYWRvbmx5IGFkZGVkPzogRVtdO1xuICByZWFkb25seSByZW1vdmVkPzogRVtdO1xuICByZWFkb25seSB1cGRhdGVkPzogRURbXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBNYXBEaWZmPEUsIEVEPiB7XG4gIHJlYWRvbmx5IGFkZGVkPzogUmVjb3JkPHN0cmluZywgRT47XG4gIHJlYWRvbmx5IHJlbW92ZWQ/OiBSZWNvcmQ8c3RyaW5nLCBFPjtcbiAgcmVhZG9ubHkgdXBkYXRlZD86IFJlY29yZDxzdHJpbmcsIEVEPjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBVcGRhdGVkU2VydmljZSB7XG4gIHJlYWRvbmx5IG5hbWU/OiBTY2FsYXJEaWZmPFNlcnZpY2VbJ25hbWUnXT47XG4gIHJlYWRvbmx5IHNob3J0TmFtZT86IFNjYWxhckRpZmY8U2VydmljZVsnc2hvcnROYW1lJ10+O1xuICByZWFkb25seSBjYXBpdGFsaXplZD86IFNjYWxhckRpZmY8U2VydmljZVsnY2FwaXRhbGl6ZWQnXT47XG4gIHJlYWRvbmx5IGNsb3VkRm9ybWF0aW9uTmFtZXNwYWNlPzogU2NhbGFyRGlmZjxTZXJ2aWNlWydjbG91ZEZvcm1hdGlvbk5hbWVzcGFjZSddPjtcbiAgcmVhZG9ubHkgcmVzb3VyY2VEaWZmPzogTWFwRGlmZjxSZXNvdXJjZSwgVXBkYXRlZFJlc291cmNlPjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBVcGRhdGVkUmVzb3VyY2Uge1xuICByZWFkb25seSBuYW1lPzogU2NhbGFyRGlmZjxzdHJpbmc+O1xuICByZWFkb25seSBjbG91ZEZvcm1hdGlvblR5cGU/OiBTY2FsYXJEaWZmPHN0cmluZz47XG4gIHJlYWRvbmx5IGNsb3VkRm9ybWF0aW9uVHJhbnNmb3JtPzogU2NhbGFyRGlmZjxzdHJpbmc+O1xuICByZWFkb25seSBkb2N1bWVudGF0aW9uPzogU2NhbGFyRGlmZjxzdHJpbmc+O1xuICByZWFkb25seSBwcm9wZXJ0aWVzPzogTWFwRGlmZjxQcm9wZXJ0eSwgVXBkYXRlZFByb3BlcnR5PjtcbiAgcmVhZG9ubHkgYXR0cmlidXRlcz86IE1hcERpZmY8QXR0cmlidXRlLCBVcGRhdGVkQXR0cmlidXRlPjtcbiAgcmVhZG9ubHkgaWRlbnRpZmllcj86IFNjYWxhckRpZmY8UmVzb3VyY2VbJ2lkZW50aWZpZXInXT47XG4gIHJlYWRvbmx5IGlzU3RhdGVmdWw/OiBTY2FsYXJEaWZmPGJvb2xlYW4+O1xuICByZWFkb25seSB0YWdJbmZvcm1hdGlvbj86IFNjYWxhckRpZmY8UmVzb3VyY2VbJ3RhZ0luZm9ybWF0aW9uJ10+O1xuICByZWFkb25seSBzY3J1dGluaXphYmxlPzogU2NhbGFyRGlmZjxSZXNvdXJjZVsnc2NydXRpbml6YWJsZSddPjtcbiAgcmVhZG9ubHkgdHlwZURlZmluaXRpb25EaWZmPzogTWFwRGlmZjxUeXBlRGVmaW5pdGlvbiwgVXBkYXRlZFR5cGVEZWZpbml0aW9uPjtcbiAgcmVhZG9ubHkgcHJpbWFyeUlkZW50aWZpZXI/OiBMaXN0RGlmZjxzdHJpbmcsIHZvaWQ+O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFVwZGF0ZWRQcm9wZXJ0eSB7XG4gIHJlYWRvbmx5IG9sZDogUHJvcGVydHk7XG4gIHJlYWRvbmx5IG5ldzogUHJvcGVydHk7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVXBkYXRlZEF0dHJpYnV0ZSB7XG4gIHJlYWRvbmx5IG9sZDogQXR0cmlidXRlO1xuICByZWFkb25seSBuZXc6IEF0dHJpYnV0ZTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBVcGRhdGVkVHlwZURlZmluaXRpb24ge1xuICByZWFkb25seSBuYW1lPzogU2NhbGFyRGlmZjxzdHJpbmc+O1xuICByZWFkb25seSBkb2N1bWVudGF0aW9uPzogU2NhbGFyRGlmZjxzdHJpbmc+O1xuICByZWFkb25seSBwcm9wZXJ0aWVzPzogTWFwRGlmZjxQcm9wZXJ0eSwgVXBkYXRlZFByb3BlcnR5PjtcbiAgcmVhZG9ubHkgbXVzdFJlbmRlckZvckJ3Q29tcGF0PzogU2NhbGFyRGlmZjxib29sZWFuPjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTY2FsYXJEaWZmPEE+IHtcbiAgcmVhZG9ubHkgb2xkPzogQTtcbiAgcmVhZG9ubHkgbmV3PzogQTtcbn1cbiJdfQ==","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWV0cmljcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90eXBlcy9tZXRyaWNzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFbnRpdHksIFJlbGF0aW9uc2hpcCB9IGZyb20gJ0BjZGtsYWJzL3Rza2InO1xuaW1wb3J0IHsgUmVzb3VyY2UsIFNlcnZpY2UgfSBmcm9tICcuL3Jlc291cmNlJztcblxuLyoqXG4gKiBBIE1ldHJpYyBEaW1lbnNpb24gKG5vdCBhbiBlbnRpdHkpXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRGltZW5zaW9uIHtcbiAgLyoqXG4gICAqIE5hbWUgb2YgdGhlIGRpbWVuc2lvblxuICAgKi9cbiAgcmVhZG9ubHkgbmFtZTogc3RyaW5nO1xuICAvKipcbiAgICogQSBwb3RlbnRpYWwgdmFsdWUgZm9yIHRoaXMgZGltZW5zaW9uXG4gICAqL1xuICByZWFkb25seSB2YWx1ZT86IHN0cmluZztcbn1cblxuLyoqXG4gKiBBIHNldCBvZiBNZXRyaWMgRGltZW5zaW9uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRGltZW5zaW9uU2V0IGV4dGVuZHMgRW50aXR5IHtcbiAgLyoqXG4gICAqIEEgdW5pcXVlIHZhbHVlIHVzZWQgdG8gZGVkdXBsaWNhdGUgdGhlIGVudGl0eVxuICAgKi9cbiAgZGVkdXBLZXk6IHN0cmluZztcbiAgLyoqXG4gICAqIFRoZSBkaW1lbnNpb25zIGluIHRoaXMgc2V0XG4gICAqL1xuICBkaW1lbnNpb25zOiBEaW1lbnNpb25bXTtcbn1cbmV4cG9ydCB0eXBlIFJlc291cmNlSGFzRGltZW5zaW9uU2V0ID0gUmVsYXRpb25zaGlwPFJlc291cmNlLCBEaW1lbnNpb25TZXQ+O1xuZXhwb3J0IHR5cGUgU2VydmljZUhhc0RpbWVuc2lvblNldCA9IFJlbGF0aW9uc2hpcDxTZXJ2aWNlLCBEaW1lbnNpb25TZXQ+O1xuXG4vKipcbiAqIEEgQ2xvdWRXYXRjaCBNZXRyaWNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBNZXRyaWMgZXh0ZW5kcyBFbnRpdHkge1xuICAvKipcbiAgICogTWV0cmljIG5hbWVzcGFjZVxuICAgKi9cbiAgcmVhZG9ubHkgbmFtZXNwYWNlOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBOYW1lIG9mIHRoZSBtZXRyaWNcbiAgICovXG4gIHJlYWRvbmx5IG5hbWU6IHN0cmluZztcbiAgLyoqXG4gICAqIERlZmF1bHQgKHN1Z2dlc3RlZCkgc3RhdGlzdGljIGZvciB0aGlzIG1ldHJpY1xuICAgKi9cbiAgcmVhZG9ubHkgc3RhdGlzdGljOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBBIHVuaXF1ZSB2YWx1ZSB1c2VkIHRvIGRlZHVwbGljYXRlIHRoZSBlbnRpdHlcbiAgICovXG4gIHJlYWRvbmx5IGRlZHVwS2V5OiBzdHJpbmc7XG59XG5leHBvcnQgdHlwZSBVc2VzRGltZW5zaW9uU2V0ID0gUmVsYXRpb25zaGlwPE1ldHJpYywgRGltZW5zaW9uU2V0PjtcbmV4cG9ydCB0eXBlIFJlc291cmNlSGFzTWV0cmljID0gUmVsYXRpb25zaGlwPFJlc291cmNlLCBNZXRyaWM+O1xuZXhwb3J0IHR5cGUgU2VydmljZUhhc01ldHJpYyA9IFJlbGF0aW9uc2hpcDxTZXJ2aWNlLCBNZXRyaWM+O1xuIl19","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.RichPropertyType = exports.PropertyScrutinyType = exports.ResourceScrutinyType = exports.isCollectionType = exports.Deprecation = exports.RichAttribute = exports.RichProperty = exports.RichTypedField = void 0;\nconst sorting_1 = require(\"../util/sorting\");\nclass RichTypedField {\n constructor(field) {\n this.field = field;\n if (field === undefined) {\n throw new Error('Field is undefined');\n }\n }\n types() {\n var _a;\n return [...((_a = this.field.previousTypes) !== null && _a !== void 0 ? _a : []), this.field.type];\n }\n /**\n * Update the type of this property with a new type\n *\n * Only if it's not in the set of types already.\n */\n updateType(type) {\n const richType = new RichPropertyType(type);\n // Only add this type if we don't already have it. We are only doing comparisons where 'integer' and 'number'\n // are treated the same, for all other types we need strict equality. We used to use 'assignableTo' as a\n // condition, but these types will be rendered in both co- and contravariant positions, and so we really can't\n // do much better than full equality.\n if (this.types().some((t) => richType.equals(t))) {\n // Nothing to do, type is already in there.\n return false;\n }\n // Special case: if the new type is `string` and the old type is `date-time`, we assume this is\n // the same type but we dropped some formatting information. No need to make this a separate type.\n if (type.type === 'string' && this.types().some((t) => t.type === 'date-time')) {\n return false;\n }\n if (!this.field.previousTypes) {\n this.field.previousTypes = [];\n }\n this.field.previousTypes.push(this.field.type);\n this.field.type = type;\n return true;\n }\n}\nexports.RichTypedField = RichTypedField;\nclass RichProperty extends RichTypedField {\n constructor(property) {\n super(property);\n }\n}\nexports.RichProperty = RichProperty;\nclass RichAttribute extends RichTypedField {\n constructor(attr) {\n super(attr);\n }\n}\nexports.RichAttribute = RichAttribute;\nvar Deprecation;\n(function (Deprecation) {\n /**\n * Not deprecated\n */\n Deprecation[\"NONE\"] = \"NONE\";\n /**\n * Warn about use\n */\n Deprecation[\"WARN\"] = \"WARN\";\n /**\n * Do not emit the value at all\n *\n * (Handle properties that were incorrectly added to the spec)\n */\n Deprecation[\"IGNORE\"] = \"IGNORE\";\n})(Deprecation = exports.Deprecation || (exports.Deprecation = {}));\nfunction isCollectionType(x) {\n return x.type === 'array' || x.type === 'map';\n}\nexports.isCollectionType = isCollectionType;\n/**\n * Mark a resource as a resource that needs additional scrutiy when added, removed or changed\n *\n * Used to mark resources that represent security policies.\n */\nvar ResourceScrutinyType;\n(function (ResourceScrutinyType) {\n /**\n * No additional scrutiny\n */\n ResourceScrutinyType[\"None\"] = \"None\";\n /**\n * An externally attached policy document to a resource\n *\n * (Common for SQS, SNS, S3, ...)\n */\n ResourceScrutinyType[\"ResourcePolicyResource\"] = \"ResourcePolicyResource\";\n /**\n * This is an IAM policy on an identity resource\n *\n * (Basically saying: this is AWS::IAM::Policy)\n */\n ResourceScrutinyType[\"IdentityPolicyResource\"] = \"IdentityPolicyResource\";\n /**\n * This is a Lambda Permission policy\n */\n ResourceScrutinyType[\"LambdaPermission\"] = \"LambdaPermission\";\n /**\n * An ingress rule object\n */\n ResourceScrutinyType[\"IngressRuleResource\"] = \"IngressRuleResource\";\n /**\n * A set of egress rules\n */\n ResourceScrutinyType[\"EgressRuleResource\"] = \"EgressRuleResource\";\n /**\n * AWS::SSO::Assignment\n *\n * IAM Identity Center (formerly known as SSO)\n */\n ResourceScrutinyType[\"SsoAssignmentResource\"] = \"SsoAssignmentResource\";\n /**\n * AWS::SSO::InstanceAccessControlAttributeConfiguration\n *\n * IAM Identity Center (formerly known as SSO)\n */\n ResourceScrutinyType[\"SsoInstanceACAConfigResource\"] = \"SsoInstanceACAConfigResource\";\n /**\n * AWS::SSO::PermissionSet\n *\n * IAM Identity Center (formerly known as SSO)\n */\n ResourceScrutinyType[\"SsoPermissionSet\"] = \"SsoPermissionSet\";\n})(ResourceScrutinyType = exports.ResourceScrutinyType || (exports.ResourceScrutinyType = {}));\n/**\n * Mark a property as a property that needs additional scrutiny when it changes\n *\n * Used to mark sensitive properties that have security-related implications.\n */\nvar PropertyScrutinyType;\n(function (PropertyScrutinyType) {\n /**\n * No additional scrutiny\n */\n PropertyScrutinyType[\"None\"] = \"None\";\n /**\n * This is an IAM policy directly on a resource\n */\n PropertyScrutinyType[\"InlineResourcePolicy\"] = \"InlineResourcePolicy\";\n /**\n * Either an AssumeRolePolicyDocument or a dictionary of policy documents\n */\n PropertyScrutinyType[\"InlineIdentityPolicies\"] = \"InlineIdentityPolicies\";\n /**\n * A list of managed policies (on an identity resource)\n */\n PropertyScrutinyType[\"ManagedPolicies\"] = \"ManagedPolicies\";\n /**\n * A set of ingress rules (on a security group)\n */\n PropertyScrutinyType[\"IngressRules\"] = \"IngressRules\";\n /**\n * A set of egress rules (on a security group)\n */\n PropertyScrutinyType[\"EgressRules\"] = \"EgressRules\";\n})(PropertyScrutinyType = exports.PropertyScrutinyType || (exports.PropertyScrutinyType = {}));\nclass RichPropertyType {\n constructor(type) {\n this.type = type;\n }\n equals(rhs) {\n switch (this.type.type) {\n case 'integer':\n case 'boolean':\n case 'date-time':\n case 'json':\n case 'null':\n case 'number':\n case 'string':\n case 'tag':\n return rhs.type === this.type.type;\n case 'array':\n case 'map':\n return rhs.type === this.type.type && new RichPropertyType(this.type.element).equals(rhs.element);\n case 'ref':\n return rhs.type === 'ref' && this.type.reference.$ref === rhs.reference.$ref;\n case 'union':\n const lhsKey = this.sortKey();\n const rhsKey = new RichPropertyType(rhs).sortKey();\n return lhsKey.length === rhsKey.length && lhsKey.every((l, i) => l === rhsKey[i]);\n }\n }\n /**\n * Whether the current type is JavaScript-equal to the RHS type\n *\n * Same as normal equality, but consider `integer` and `number` the same types.\n */\n javascriptEquals(rhs) {\n switch (this.type.type) {\n case 'number':\n case 'integer':\n // Widening\n return rhs.type === 'integer' || rhs.type === 'number';\n case 'array':\n case 'map':\n return rhs.type === this.type.type && new RichPropertyType(this.type.element).javascriptEquals(rhs.element);\n case 'union':\n if (rhs.type !== 'union') {\n return false;\n }\n // Every type in this union needs to be equal one type in RHS\n return this.type.types.every((t1) => rhs.types.some((t2) => new RichPropertyType(t1).javascriptEquals(t2)));\n default:\n // For anything else, need strict equality\n return this.equals(rhs);\n }\n }\n /**\n * Whether the current type is assignable to the RHS type.\n *\n * This is means every type member of the LHS must be present in the RHS type\n */\n assignableTo(rhs) {\n const extractMembers = (type) => (type.type == 'union' ? type.types : [type]);\n const asRichType = (type) => new RichPropertyType(type);\n const rhsMembers = extractMembers(rhs);\n for (const lhsMember of extractMembers(this.type).map(asRichType)) {\n if (!rhsMembers.some((type) => lhsMember.equals(type))) {\n return false;\n }\n }\n return true;\n }\n /**\n * Return a version of this type, but with all type unions in a regularized order\n */\n normalize(db) {\n switch (this.type.type) {\n case 'array':\n case 'map':\n return new RichPropertyType({\n type: this.type.type,\n element: new RichPropertyType(this.type.element).normalize(db).type,\n });\n case 'union':\n const types = this.type.types\n .map((t) => new RichPropertyType(t).normalize(db))\n .map((t) => [t, t.sortKey(db)]);\n types.sort((0, sorting_1.sortKeyComparator)(([_, sortKey]) => sortKey));\n return new RichPropertyType({\n type: 'union',\n types: types.map(([t, _]) => t.type),\n });\n default:\n return this;\n }\n }\n stringify(db, withId = true) {\n switch (this.type.type) {\n case 'integer':\n case 'boolean':\n case 'date-time':\n case 'json':\n case 'null':\n case 'number':\n case 'string':\n case 'tag':\n return this.type.type;\n case 'array':\n return `Array<${new RichPropertyType(this.type.element).stringify(db, withId)}>`;\n case 'map':\n return `Map`;\n case 'ref':\n const type = db.get('typeDefinition', this.type.reference);\n return withId ? `${type.name}(${this.type.reference.$ref})` : type.name;\n case 'union':\n return this.type.types.map((t) => new RichPropertyType(t).stringify(db, withId)).join(' | ');\n }\n }\n /**\n * Return a sortable key based on this type\n *\n * If a database is given, type definitions will be sorted based on type name,\n * otherwise on identifier\n */\n sortKey(db) {\n var _a, _b;\n switch (this.type.type) {\n case 'integer':\n case 'boolean':\n case 'date-time':\n case 'json':\n case 'null':\n case 'number':\n case 'string':\n case 'tag':\n return ['0', this.type.type];\n case 'array':\n case 'map':\n return ['1', this.type.type, ...new RichPropertyType(this.type.element).sortKey(db)];\n case 'ref':\n return ['2', this.type.type, (_b = (_a = db === null || db === void 0 ? void 0 : db.get('typeDefinition', this.type.reference)) === null || _a === void 0 ? void 0 : _a.name) !== null && _b !== void 0 ? _b : this.type.reference.$ref];\n case 'union':\n const typeKeys = this.type.types.map((t) => new RichPropertyType(t).sortKey(db));\n typeKeys.sort((0, sorting_1.sortKeyComparator)((x) => x));\n return ['3', this.type.type, ...typeKeys.flatMap((x) => x)];\n }\n }\n}\nexports.RichPropertyType = RichPropertyType;\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzb3VyY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdHlwZXMvcmVzb3VyY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBRUEsNkNBQW9EO0FBdUtwRCxNQUFhLGNBQWM7SUFDekIsWUFBNkIsS0FBK0M7UUFBL0MsVUFBSyxHQUFMLEtBQUssQ0FBMEM7UUFDMUUsSUFBSSxLQUFLLEtBQUssU0FBUyxFQUFFO1lBQ3ZCLE1BQU0sSUFBSSxLQUFLLENBQUMsb0JBQW9CLENBQUMsQ0FBQztTQUN2QztJQUNILENBQUM7SUFFTSxLQUFLOztRQUNWLE9BQU8sQ0FBQyxHQUFHLENBQUMsTUFBQSxJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsbUNBQUksRUFBRSxDQUFDLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNoRSxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNJLFVBQVUsQ0FBQyxJQUFrQjtRQUNsQyxNQUFNLFFBQVEsR0FBRyxJQUFJLGdCQUFnQixDQUFDLElBQUksQ0FBQyxDQUFDO1FBRTVDLDZHQUE2RztRQUM3Ryx3R0FBd0c7UUFDeEcsOEdBQThHO1FBQzlHLHFDQUFxQztRQUNyQyxJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRTtZQUNoRCwyQ0FBMkM7WUFDM0MsT0FBTyxLQUFLLENBQUM7U0FDZDtRQUVELCtGQUErRjtRQUMvRixrR0FBa0c7UUFDbEcsSUFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLFFBQVEsSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLFdBQVcsQ0FBQyxFQUFFO1lBQzlFLE9BQU8sS0FBSyxDQUFDO1NBQ2Q7UUFFRCxJQUFJ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QyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsSUFBSSxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztnQkFDakYsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFBLDJCQUFpQixFQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUMzQyxPQUFPLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLEdBQUcsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUMvRDtJQUNILENBQUM7Q0FDRjtBQXRKRCw0Q0FzSkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFbnRpdHksIFJlZmVyZW5jZSwgUmVsYXRpb25zaGlwIH0gZnJvbSAnQGNka2xhYnMvdHNrYic7XG5pbXBvcnQgeyBTcGVjRGF0YWJhc2UgfSBmcm9tICcuL2RhdGFiYXNlJztcbmltcG9ydCB7IHNvcnRLZXlDb21wYXJhdG9yIH0gZnJvbSAnLi4vdXRpbC9zb3J0aW5nJztcblxuZXhwb3J0IGludGVyZmFjZSBQYXJ0aXRpb24gZXh0ZW5kcyBFbnRpdHkge1xuICByZWFkb25seSBwYXJ0aXRpb246IHN0cmluZztcbn1cblxuZXhwb3J0IHR5cGUgSGFzUmVnaW9uID0gUmVsYXRpb25zaGlwPFBhcnRpdGlvbiwgUmVnaW9uLCB7IGlzUHJpbWFyeT86IGJvb2xlYW4gfT47XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2VydmljZSBleHRlbmRzIEVudGl0eSB7XG4gIC8qKlxuICAgKiBUaGUgZnVsbCBuYW1lIG9mIHRoZSBzZXJ2aWNlIGluY2x1ZGluZyB0aGUgZ3JvdXAgcHJlZml4LCBsb3dlcmNhc2VkIGFuZCBoeXBoZW5hdGVkLlxuICAgKlxuICAgKiBFLmcuIGBBV1M6OkR5bmFtb0RCYCAtPiBgYXdzLWR5bmFtb2RiYFxuICAgKlxuICAgKiBAZXhhbXBsZSBhd3MtZHluYW1vZGJcbiAgICovXG4gIHJlYWRvbmx5IG5hbWU6IHN0cmluZztcbiAgLyoqXG4gICAqIE9ubHkgdGhlIHNlcnZpY2UgcGFydCBvZiB0aGUgbmFtZSwgbG93ZXJjYXNlZC5cbiAgICpcbiAgICogRS5nLiBgQVdTOjpEeW5hbW9EQmAgLT4gYGR5bmFtb2RiYFxuICAgKlxuICAgKiBAZXhhbXBsZSBkeW5hbW9kYlxuICAgKi9cbiAgcmVhZG9ubHkgc2hvcnROYW1lOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBUaGUgc2hvcnRuYW1lIG9mIHRoZSBzZXJ2aWNlIGluIGNhcGl0YWxpemVkIGZvcm1cbiAgICpcbiAgICogRS5nLiBgQVdTOjpEeW5hbW9EQmAgLT4gYER5bmFtb0RCYFxuICAgKlxuICAgKiBAZXhhbXBsZSBkeW5hbW9kYlxuICAgKi9cbiAgcmVhZG9ubHkgY2FwaXRhbGl6ZWQ6IHN0cmluZztcbiAgLyoqXG4gICAqIFRoZSBjb21wbGV0ZSBjbG91ZGZvcm1hdGlvbiBzdHlsZSBuYW1lc3BhY2Ugb2YgdGhlIHNlcnZpY2VcbiAgICpcbiAgICogRS5nLiBgQVdTOjpEeW5hbW9EQmBcbiAgICpcbiAgICogQGV4YW1wbGUgZHluYW1vZGJcbiAgICovXG4gIHJlYWRvbmx5IGNsb3VkRm9ybWF0aW9uTmFtZXNwYWNlOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVnaW9uIGV4dGVuZHMgRW50aXR5IHtcbiAgcmVhZG9ubHkgbmFtZTogc3RyaW5nO1xuICByZWFkb25seSBkZXNjcmlwdGlvbj86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBEb2N1bWVudGF0aW9uIGV4dGVuZHMgRW50aXR5IHtcbiAgcmVhZG9ubHkgbWFya2Rvd246IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBSZXNvdXJjZSBleHRlbmRzIEVudGl0eSB7XG4gIHJlYWRvbmx5IG5hbWU6IHN0cmluZztcbiAgcmVhZG9ubHkgY2xvdWRGb3JtYXRpb25UeXBlOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBJZiBzZXQsIHRoaXMgQ2xvdWRGb3JtYXRpb24gVHJhbnNmb3JtIGlzIHJlcXVpcmVkIGJ5IHRoZSByZXNvdXJjZVxuICAgKi9cbiAgY2xvdWRGb3JtYXRpb25UcmFuc2Zvcm0/OiBzdHJpbmc7XG4gIGRvY3VtZW50YXRpb24/OiBzdHJpbmc7XG4gIHByaW1hcnlJZGVudGlmaWVyPzogc3RyaW5nW107XG4gIHJlYWRvbmx5IHByb3BlcnRpZXM6IFJlc291cmNlUHJvcGVydGllcztcbiAgcmVhZG9ubHkgYXR0cmlidXRlczogUmVjb3JkPHN0cmluZywgQXR0cmlidXRlPjtcbiAgcmVhZG9ubHkgdmFsaWRhdGlvbnM/OiB1bmtub3duO1xuICBpZGVudGlmaWVyPzogUmVzb3VyY2VJZGVudGlmaWVyO1xuICBpc1N0YXRlZnVsPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogSW5mb3JtYXRpb24gYWJvdXQgdGhlIHRhZ2dhYmlsaXR5IG9mIHRoaXMgcmVzb3VyY2VcbiAgICpcbiAgICogVW5kZWZpbmVkIGlmIHRoZSByZXNvdXJjZSBpcyBub3QgdGFnZ2FibGUuXG4gICAqL1xuICB0YWdJbmZvcm1hdGlvbj86IFRhZ0luZm9ybWF0aW9uO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIGNoYW5nZXMgdG8gdGhpcyByZXNvdXJjZSBuZWVkIHRvIGJlIHNjcnV0aW5pemVkXG4gICAqXG4gICAqIEBkZWZhdWx0IFJlc291cmNlU2NydXRpbnlUeXBlLk5PTkVcbiAgICovXG4gIHNjcnV0aW5pemFibGU/OiBSZXNvdXJjZVNjcnV0aW55VHlwZTtcblxuICAvKipcbiAgICogQWRkaXRpb25hbCBwYXRocyB0byBwcm9wZXJ0aWVzIHRoYXQgYWxzbyBjYXVzZSByZXBsYWNlbWVudC5cbiAgICpcbiAgICogVGhpcyBpcyB0byBpbmRpY2F0ZSB0aGF0IGNlcnRhaW4gcHJvcGVydHkgcGF0aHMgaW50byB0aGlzIHJlc291cmNlXG4gICAqIHdpbGwgY2F1c2UgcmVwbGFjZW1lbnQ7IG9ubHkgcmVwbGFjZW1lbnRzIHRoYXQgY2Fubm90IGJlIHJlcHJlc2VudGVkXG4gICAqIGJ5IHRhZ2dpbmcgdGhlIHByb3BlcnR5IGluIGEgdHlwZSBkZWZpbml0aW9uIHdpbGwgYmUgaW5jbHVkZWQgaGVyZVxuICAgKiAoZm9yIGV4YW1wbGUsIGJlY2F1c2UgdGhlIHRhZ2dlZCBwcm9wZXJ0eSB3b3VsZCBiZSBpbiBhIHByZWRlZmluZWRcbiAgICogdHlwZSBsaWtlIGB0YWdgKS5cbiAgICpcbiAgICogQWxsIHByb3BlcnRpZXMgaW4gdGhpcyBsaXN0IHNob3VsZCBiZSB0cmVhdGVkIGFzIGBjYXVzZXNSZXBsYWNlbWVudDogJ3llcydgLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtXG4gICAqL1xuICBhZGRpdGlvbmFsUmVwbGFjZW1lbnRQcm9wZXJ0aWVzPzogc3RyaW5nW11bXTtcbn1cblxuZXhwb3J0IHR5cGUgUmVzb3VyY2VQcm9wZXJ0aWVzID0gUmVjb3JkPHN0cmluZywgUHJvcGVydHk+O1xuXG5leHBvcnQgaW50ZXJmYWNlIFR5cGVEZWZpbml0aW9uIGV4dGVuZHMgRW50aXR5IHtcbiAgcmVhZG9ubHkgbmFtZTogc3RyaW5nO1xuICBkb2N1bWVudGF0aW9uPzogc3RyaW5nO1xuICByZWFkb25seSBwcm9wZXJ0aWVzOiBSZXNvdXJjZVByb3BlcnRpZXM7XG5cbiAgLyoqXG4gICAqIElmIHRydWUsIHJlbmRlciB0aGlzIHR5cGUgZXZlbiBpZiBpdCBpcyB1bnVzZWQuXG4gICAqL1xuICBtdXN0UmVuZGVyRm9yQndDb21wYXQ/OiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFByb3BlcnR5IHtcbiAgLyoqXG4gICAqIERlc2NyaXB0aW9uIG9mIHRoZSBwcm9wZXJ0eVxuICAgKi9cbiAgZG9jdW1lbnRhdGlvbj86IHN0cmluZztcblxuICAvKipcbiAgICogSXMgdGhpcyBwcm9wZXJ0eSByZXF1aXJlZFxuICAgKlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVxdWlyZWQ/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBUaGUgY3VycmVudCB0eXBlIG9mIHRoaXMgcHJvcGVydHlcbiAgICovXG4gIHR5cGU6IFByb3BlcnR5VHlwZTtcblxuICAvKipcbiAgICogQW4gb3JkZXJlZCBsaXN0IG9mIHByZXZpb3VzIHR5cGVzIG9mIHRoaXMgcHJvcGVydHkgaW4gYXNjZW5kaW5nIG9yZGVyXG4gICAqXG4gICAqIERvZXMgbm90IGluY2x1ZGUgdGhlIGN1cnJlbnQgdHlwZSwgdXNlIGB0eXBlYCBmb3IgdGhpcy5cbiAgICovXG4gIHByZXZpb3VzVHlwZXM/OiBQcm9wZXJ0eVR5cGVbXTtcblxuICAvKipcbiAgICogQSBzdHJpbmcgcmVwcmVzZW50YXRpb24gdGhlIGRlZmF1bHQgdmFsdWUgb2YgdGhpcyBwcm9wZXJ0eVxuICAgKlxuICAgKiBUaGlzIHZhbHVlIGlzIG5vdCBkaXJlY3RseSBmdW5jdGlvbmFsOyBpdCBkZXNjcmliZXMgaG93IHRoZSB1bmRlcmx5aW5nIHJlc291cmNlXG4gICAqIHdpbGwgYmVoYXZlIGlmIHRoZSB2YWx1ZSBpcyBub3Qgc3BlY2lmaWVkLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIERlZmF1bHQgdW5rbm93blxuICAgKi9cbiAgZGVmYXVsdFZhbHVlPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoaXMgcHJvcGVydHkgaXMgZGVwcmVjYXRlZFxuICAgKlxuICAgKiBAZGVmYXVsdCAtIE5vdCBkZXByZWNhdGVkXG4gICAqL1xuICBkZXByZWNhdGVkPzogRGVwcmVjYXRpb247XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgY2hhbmdlcyB0byB0aGlzIHByb3BlcnR5IG5lZWRzIHRvIGJlIHNjcnV0aW5pemVkIHNwZWNpYWxseVxuICAgKlxuICAgKiBAZGVmYXVsdCBQcm9wZXJ0eVNjcnV0aW55VHlwZS5OT05FXG4gICAqL1xuICBzY3J1dGluaXphYmxlPzogUHJvcGVydHlTY3J1dGlueVR5cGU7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhlIGNvbnRhaW5pbmcgcmVzb3VyY2Ugd2lsbCBiZSByZXBsYWNlZCBpZiB0aGlzIHByb3BlcnR5IGlzIGNoYW5nZWRcbiAgICpcbiAgICogQGRlZmF1bHQgJ25vJ1xuICAgKi9cbiAgY2F1c2VzUmVwbGFjZW1lbnQ/OiAneWVzJyB8ICdubycgfCAnbWF5YmUnO1xufVxuXG5leHBvcnQgY2xhc3MgUmljaFR5cGVkRmllbGQge1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IGZpZWxkOiBQaWNrPFByb3BlcnR5LCAndHlwZScgfCAncHJldmlvdXNUeXBlcyc+KSB7XG4gICAgaWYgKGZpZWxkID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignRmllbGQgaXMgdW5kZWZpbmVkJyk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHR5cGVzKCk6IFByb3BlcnR5VHlwZVtdIHtcbiAgICByZXR1cm4gWy4uLih0aGlzLmZpZWxkLnByZXZpb3VzVHlwZXMgPz8gW10pLCB0aGlzLmZpZWxkLnR5cGVdO1xuICB9XG5cbiAgLyoqXG4gICAqIFVwZGF0ZSB0aGUgdHlwZSBvZiB0aGlzIHByb3BlcnR5IHdpdGggYSBuZXcgdHlwZVxuICAgKlxuICAgKiBPbmx5IGlmIGl0J3Mgbm90IGluIHRoZSBzZXQgb2YgdHlwZXMgYWxyZWFkeS5cbiAgICovXG4gIHB1YmxpYyB1cGRhdGVUeXBlKHR5cGU6IFByb3BlcnR5VHlwZSk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IHJpY2hUeXBlID0gbmV3IFJpY2hQcm9wZXJ0eVR5cGUodHlwZSk7XG5cbiAgICAvLyBPbmx5IGFkZCB0aGlzIHR5cGUgaWYgd2UgZG9uJ3QgYWxyZWFkeSBoYXZlIGl0LiBXZSBhcmUgb25seSBkb2luZyBjb21wYXJpc29ucyB3aGVyZSAnaW50ZWdlcicgYW5kICdudW1iZXInXG4gICAgLy8gYXJlIHRyZWF0ZWQgdGhlIHNhbWUsIGZvciBhbGwgb3RoZXIgdHlwZXMgd2UgbmVlZCBzdHJpY3QgZXF1YWxpdHkuIFdlIHVzZWQgdG8gdXNlICdhc3NpZ25hYmxlVG8nIGFzIGFcbiAgICAvLyBjb25kaXRpb24sIGJ1dCB0aGVzZSB0eXBlcyB3aWxsIGJlIHJlbmRlcmVkIGluIGJvdGggY28tIGFuZCBjb250cmF2YXJpYW50IHBvc2l0aW9ucywgYW5kIHNvIHdlIHJlYWxseSBjYW4ndFxuICAgIC8vIGRvIG11Y2ggYmV0dGVyIHRoYW4gZnVsbCBlcXVhbGl0eS5cbiAgICBpZiAodGhpcy50eXBlcygpLnNvbWUoKHQpID0+IHJpY2hUeXBlLmVxdWFscyh0KSkpIHtcbiAgICAgIC8vIE5vdGhpbmcgdG8gZG8sIHR5cGUgaXMgYWxyZWFkeSBpbiB0aGVyZS5cbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICAvLyBTcGVjaWFsIGNhc2U6IGlmIHRoZSBuZXcgdHlwZSBpcyBgc3RyaW5nYCBhbmQgdGhlIG9sZCB0eXBlIGlzIGBkYXRlLXRpbWVgLCB3ZSBhc3N1bWUgdGhpcyBpc1xuICAgIC8vIHRoZSBzYW1lIHR5cGUgYnV0IHdlIGRyb3BwZWQgc29tZSBmb3JtYXR0aW5nIGluZm9ybWF0aW9uLiBObyBuZWVkIHRvIG1ha2UgdGhpcyBhIHNlcGFyYXRlIHR5cGUuXG4gICAgaWYgKHR5cGUudHlwZSA9PT0gJ3N0cmluZycgJiYgdGhpcy50eXBlcygpLnNvbWUoKHQpID0+IHQudHlwZSA9PT0gJ2RhdGUtdGltZScpKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLmZpZWxkLnByZXZpb3VzVHlwZXMpIHtcbiAgICAgIHRoaXMuZmllbGQucHJldmlvdXNUeXBlcyA9IFtdO1xuICAgIH1cbiAgICB0aGlzLmZpZWxkLnByZXZpb3VzVHlwZXMucHVzaCh0aGlzLmZpZWxkLnR5cGUpO1xuICAgIHRoaXMuZmllbGQudHlwZSA9IHR5cGU7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIFJpY2hQcm9wZXJ0eSBleHRlbmRzIFJpY2hUeXBlZEZpZWxkIHtcbiAgY29uc3RydWN0b3IocHJvcGVydHk6IFByb3BlcnR5KSB7XG4gICAgc3VwZXIocHJvcGVydHkpO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBSaWNoQXR0cmlidXRlIGV4dGVuZHMgUmljaFR5cGVkRmllbGQge1xuICBjb25zdHJ1Y3RvcihhdHRyOiBBdHRyaWJ1dGUpIHtcbiAgICBzdXBlcihhdHRyKTtcbiAgfVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIEF0dHJpYnV0ZSB7XG4gIGRvY3VtZW50YXRpb24/OiBzdHJpbmc7XG4gIHR5cGU6IFByb3BlcnR5VHlwZTtcbiAgLyoqXG4gICAqIEFuIG9yZGVyZWQgbGlzdCBvZiBwcmV2aW91cyB0eXBlcyBvZiB0aGlzIHByb3BlcnR5IGluIGFzY2VuZGluZyBvcmRlclxuICAgKlxuICAgKiBEb2VzIG5vdCBpbmNsdWRlIHRoZSBjdXJyZW50IHR5cGUsIHVzZSBgdHlwZWAgZm9yIHRoaXMuXG4gICAqL1xuICBwcmV2aW91c1R5cGVzPzogUHJvcGVydHlUeXBlW107XG59XG5cbmV4cG9ydCBlbnVtIERlcHJlY2F0aW9uIHtcbiAgLyoqXG4gICAqIE5vdCBkZXByZWNhdGVkXG4gICAqL1xuICBOT05FID0gJ05PTkUnLFxuXG4gIC8qKlxuICAgKiBXYXJuIGFib3V0IHVzZVxuICAgKi9cbiAgV0FSTiA9ICdXQVJOJyxcblxuICAvKipcbiAgICogRG8gbm90IGVtaXQgdGhlIHZhbHVlIGF0IGFsbFxuICAgKlxuICAgKiAoSGFuZGxlIHByb3BlcnRpZXMgdGhhdCB3ZXJlIGluY29ycmVjdGx5IGFkZGVkIHRvIHRoZSBzcGVjKVxuICAgKi9cbiAgSUdOT1JFID0gJ0lHTk9SRScsXG59XG5cbmV4cG9ydCB0eXBlIFByb3BlcnR5VHlwZSA9XG4gIHwgUHJpbWl0aXZlVHlwZVxuICB8IERlZmluaXRpb25SZWZlcmVuY2VcbiAgfCBCdWlsdGluVGFnVHlwZVxuICB8IEFycmF5VHlwZTxQcm9wZXJ0eVR5cGU+XG4gIHwgTWFwVHlwZTxQcm9wZXJ0eVR5cGU+XG4gIHwgVHlwZVVuaW9uPFByb3BlcnR5VHlwZT47XG5cbmV4cG9ydCB0eXBlIFByaW1pdGl2ZVR5cGUgPVxuICB8IFN0cmluZ1R5cGVcbiAgfCBOdW1iZXJUeXBlXG4gIHwgSW50ZWdlclR5cGVcbiAgfCBCb29sZWFuVHlwZVxuICB8IEpzb25UeXBlXG4gIHwgRGF0ZVRpbWVUeXBlXG4gIHwgTnVsbFR5cGVcbiAgfCBCdWlsdGluVGFnVHlwZTtcblxuZXhwb3J0IGZ1bmN0aW9uIGlzQ29sbGVjdGlvblR5cGUoeDogUHJvcGVydHlUeXBlKTogeCBpcyBBcnJheVR5cGU8YW55PiB8IE1hcFR5cGU8YW55PiB7XG4gIHJldHVybiB4LnR5cGUgPT09ICdhcnJheScgfHwgeC50eXBlID09PSAnbWFwJztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBUYWdJbmZvcm1hdGlvbiB7XG4gIC8qKlxuICAgKiBOYW1lIG9mIHRoZSBwcm9wZXJ0eSB0aGF0IGhvbGRzIHRoZSB0YWdzXG4gICAqL1xuICByZWFkb25seSB0YWdQcm9wZXJ0eU5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogVXNlZCB0byBpbnN0cnVjdCBjZGsuVGFnTWFuYWdlciBob3cgdG8gaGFuZGxlIHRhZ3NcbiAgICovXG4gIHJlYWRvbmx5IHZhcmlhbnQ6IFRhZ1ZhcmlhbnQ7XG59XG5cbmV4cG9ydCB0eXBlIFRhZ1ZhcmlhbnQgPSAnc3RhbmRhcmQnIHwgJ2FzZycgfCAnbWFwJztcblxuZXhwb3J0IGludGVyZmFjZSBTdHJpbmdUeXBlIHtcbiAgcmVhZG9ubHkgdHlwZTogJ3N0cmluZyc7XG59XG5leHBvcnQgaW50ZXJmYWNlIEJ1aWx0aW5UYWdUeXBlIHtcbiAgcmVhZG9ubHkgdHlwZTogJ3RhZyc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTnVtYmVyVHlwZSB7XG4gIHJlYWRvbmx5IHR5cGU6ICdudW1iZXInO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEludGVnZXJUeXBlIHtcbiAgcmVhZG9ubHkgdHlwZTogJ2ludGVnZXInO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEJvb2xlYW5UeXBlIHtcbiAgcmVhZG9ubHkgdHlwZTogJ2Jvb2xlYW4nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEpzb25UeXBlIHtcbiAgcmVhZG9ubHkgdHlwZTogJ2pzb24nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE51bGxUeXBlIHtcbiAgcmVhZG9ubHkgdHlwZTogJ251bGwnO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIERhdGVUaW1lVHlwZSB7XG4gIHJlYWRvbmx5IHR5cGU6ICdkYXRlLXRpbWUnO1xufVxuXG4vKipcbiAqIFRoZSBcImxlZ2FjeVwiIHRhZyB0eXBlICh1c2VkIGluIHRoZSBvbGQgcmVzb3VyY2Ugc3BlYylcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBCdWlsdGluVGFnVHlwZSB7XG4gIHJlYWRvbmx5IHR5cGU6ICd0YWcnO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIERlZmluaXRpb25SZWZlcmVuY2Uge1xuICByZWFkb25seSB0eXBlOiAncmVmJztcbiAgcmVhZG9ubHkgcmVmZXJlbmNlOiBSZWZlcmVuY2U8VHlwZURlZmluaXRpb24+O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFycmF5VHlwZTxFPiB7XG4gIHJlYWRvbmx5IHR5cGU6ICdhcnJheSc7XG4gIHJlYWRvbmx5IGVsZW1lbnQ6IEU7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTWFwVHlwZTxFPiB7XG4gIHJlYWRvbmx5IHR5cGU6ICdtYXAnO1xuICByZWFkb25seSBlbGVtZW50OiBFO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFR5cGVVbmlvbjxFPiB7XG4gIHJlYWRvbmx5IHR5cGU6ICd1bmlvbic7XG4gIHJlYWRvbmx5IHR5cGVzOiBFW107XG59XG5cbmV4cG9ydCB0eXBlIEhhc1Jlc291cmNlID0gUmVsYXRpb25zaGlwPFNlcnZpY2UsIFJlc291cmNlPjtcbmV4cG9ydCB0eXBlIFJlZ2lvbkhhc1Jlc291cmNlID0gUmVsYXRpb25zaGlwPFJlZ2lvbiwgUmVzb3VyY2U+O1xuZXhwb3J0IHR5cGUgUmVnaW9uSGFzU2VydmljZSA9IFJlbGF0aW9uc2hpcDxSZWdpb24sIFNlcnZpY2U+O1xuZXhwb3J0IHR5cGUgUmVzb3VyY2VEb2MgPSBSZWxhdGlvbnNoaXA8UmVzb3VyY2UsIERvY3VtZW50YXRpb24+O1xuXG5leHBvcnQgdHlwZSBTZXJ2aWNlSW5SZWdpb24gPSBSZWxhdGlvbnNoaXA8UmVnaW9uLCBTZXJ2aWNlPjtcbmV4cG9ydCB0eXBlIFJlc291cmNlSW5SZWdpb24gPSBSZWxhdGlvbnNoaXA8UmVnaW9uLCBSZXNvdXJjZT47XG5cbmV4cG9ydCB0eXBlIFVzZXNUeXBlID0gUmVsYXRpb25zaGlwPFJlc291cmNlLCBUeXBlRGVmaW5pdGlvbj47XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVzb3VyY2VJZGVudGlmaWVyIGV4dGVuZHMgRW50aXR5IHtcbiAgcmVhZG9ubHkgYXJuVGVtcGxhdGU/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IHByaW1hcnlJZGVudGlmaWVyPzogc3RyaW5nW107XG59XG5cbi8qKlxuICogTWFyayBhIHJlc291cmNlIGFzIGEgcmVzb3VyY2UgdGhhdCBuZWVkcyBhZGRpdGlvbmFsIHNjcnV0aXkgd2hlbiBhZGRlZCwgcmVtb3ZlZCBvciBjaGFuZ2VkXG4gKlxuICogVXNlZCB0byBtYXJrIHJlc291cmNlcyB0aGF0IHJlcHJlc2VudCBzZWN1cml0eSBwb2xpY2llcy5cbiAqL1xuZXhwb3J0IGVudW0gUmVzb3VyY2VTY3J1dGlueVR5cGUge1xuICAvKipcbiAgICogTm8gYWRkaXRpb25hbCBzY3J1dGlueVxuICAgKi9cbiAgTm9uZSA9ICdOb25lJyxcblxuICAvKipcbiAgICogQW4gZXh0ZXJuYWxseSBhdHRhY2hlZCBwb2xpY3kgZG9jdW1lbnQgdG8gYSByZXNvdXJjZVxuICAgKlxuICAgKiAoQ29tbW9uIGZvciBTUVMsIFNOUywgUzMsIC4uLilcbiAgICovXG4gIFJlc291cmNlUG9saWN5UmVzb3VyY2UgPSAnUmVzb3VyY2VQb2xpY3lSZXNvdXJjZScsXG5cbiAgLyoqXG4gICAqIFRoaXMgaXMgYW4gSUFNIHBvbGljeSBvbiBhbiBpZGVudGl0eSByZXNvdXJjZVxuICAgKlxuICAgKiAoQmFzaWNhbGx5IHNheWluZzogdGhpcyBpcyBBV1M6OklBTTo6UG9saWN5KVxuICAgKi9cbiAgSWRlbnRpdHlQb2xpY3lSZXNvdXJjZSA9ICdJZGVudGl0eVBvbGljeVJlc291cmNlJyxcblxuICAvKipcbiAgICogVGhpcyBpcyBhIExhbWJkYSBQZXJtaXNzaW9uIHBvbGljeVxuICAgKi9cbiAgTGFtYmRhUGVybWlzc2lvbiA9ICdMYW1iZGFQZXJtaXNzaW9uJyxcblxuICAvKipcbiAgICogQW4gaW5ncmVzcyBydWxlIG9iamVjdFxuICAgKi9cbiAgSW5ncmVzc1J1bGVSZXNvdXJjZSA9ICdJbmdyZXNzUnVsZVJlc291cmNlJyxcblxuICAvKipcbiAgICogQSBzZXQgb2YgZWdyZXNzIHJ1bGVzXG4gICAqL1xuICBFZ3Jlc3NSdWxlUmVzb3VyY2UgPSAnRWdyZXNzUnVsZVJlc291cmNlJyxcblxuICAvKipcbiAgICogQVdTOjpTU086OkFzc2lnbm1lbnRcbiAgICpcbiAgICogSUFNIElkZW50aXR5IENlbnRlciAoZm9ybWVybHkga25vd24gYXMgU1NPKVxuICAgKi9cbiAgU3NvQXNzaWdubWVudFJlc291cmNlID0gJ1Nzb0Fzc2lnbm1lbnRSZXNvdXJjZScsXG5cbiAgLyoqXG4gICAqIEFXUzo6U1NPOjpJbnN0YW5jZUFjY2Vzc0NvbnRyb2xBdHRyaWJ1dGVDb25maWd1cmF0aW9uXG4gICAqXG4gICAqIElBTSBJZGVudGl0eSBDZW50ZXIgKGZvcm1lcmx5IGtub3duIGFzIFNTTylcbiAgICovXG4gIFNzb0luc3RhbmNlQUNBQ29uZmlnUmVzb3VyY2UgPSAnU3NvSW5zdGFuY2VBQ0FDb25maWdSZXNvdXJjZScsXG5cbiAgLyoqXG4gICAqIEFXUzo6U1NPOjpQZXJtaXNzaW9uU2V0XG4gICAqXG4gICAqIElBTSBJZGVudGl0eSBDZW50ZXIgKGZvcm1lcmx5IGtub3duIGFzIFNTTylcbiAgICovXG4gIFNzb1Blcm1pc3Npb25TZXQgPSAnU3NvUGVybWlzc2lvblNldCcsXG59XG5cbi8qKlxuICogTWFyayBhIHByb3BlcnR5IGFzIGEgcHJvcGVydHkgdGhhdCBuZWVkcyBhZGRpdGlvbmFsIHNjcnV0aW55IHdoZW4gaXQgY2hhbmdlc1xuICpcbiAqIFVzZWQgdG8gbWFyayBzZW5zaXRpdmUgcHJvcGVydGllcyB0aGF0IGhhdmUgc2VjdXJpdHktcmVsYXRlZCBpbXBsaWNhdGlvbnMuXG4gKi9cbmV4cG9ydCBlbnVtIFByb3BlcnR5U2NydXRpbnlUeXBlIHtcbiAgLyoqXG4gICAqIE5vIGFkZGl0aW9uYWwgc2NydXRpbnlcbiAgICovXG4gIE5vbmUgPSAnTm9uZScsXG5cbiAgLyoqXG4gICAqIFRoaXMgaXMgYW4gSUFNIHBvbGljeSBkaXJlY3RseSBvbiBhIHJlc291cmNlXG4gICAqL1xuICBJbmxpbmVSZXNvdXJjZVBvbGljeSA9ICdJbmxpbmVSZXNvdXJjZVBvbGljeScsXG5cbiAgLyoqXG4gICAqIEVpdGhlciBhbiBBc3N1bWVSb2xlUG9saWN5RG9jdW1lbnQgb3IgYSBkaWN0aW9uYXJ5IG9mIHBvbGljeSBkb2N1bWVudHNcbiAgICovXG4gIElubGluZUlkZW50aXR5UG9saWNpZXMgPSAnSW5saW5lSWRlbnRpdHlQb2xpY2llcycsXG5cbiAgLyoqXG4gICAqIEEgbGlzdCBvZiBtYW5hZ2VkIHBvbGljaWVzIChvbiBhbiBpZGVudGl0eSByZXNvdXJjZSlcbiAgICovXG4gIE1hbmFnZWRQb2xpY2llcyA9ICdNYW5hZ2VkUG9saWNpZXMnLFxuXG4gIC8qKlxuICAgKiBBIHNldCBvZiBpbmdyZXNzIHJ1bGVzIChvbiBhIHNlY3VyaXR5IGdyb3VwKVxuICAgKi9cbiAgSW5ncmVzc1J1bGVzID0gJ0luZ3Jlc3NSdWxlcycsXG5cbiAgLyoqXG4gICAqIEEgc2V0IG9mIGVncmVzcyBydWxlcyAob24gYSBzZWN1cml0eSBncm91cClcbiAgICovXG4gIEVncmVzc1J1bGVzID0gJ0VncmVzc1J1bGVzJyxcbn1cblxuZXhwb3J0IGNsYXNzIFJpY2hQcm9wZXJ0eVR5cGUge1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IHR5cGU6IFByb3BlcnR5VHlwZSkge31cblxuICBwdWJsaWMgZXF1YWxzKHJoczogUHJvcGVydHlUeXBlKTogYm9vbGVhbiB7XG4gICAgc3dpdGNoICh0aGlzLnR5cGUudHlwZSkge1xuICAgICAgY2FzZSAnaW50ZWdlcic6XG4gICAgICBjYXNlICdib29sZWFuJzpcbiAgICAgIGNhc2UgJ2RhdGUtdGltZSc6XG4gICAgICBjYXNlICdqc29uJzpcbiAgICAgIGNhc2UgJ251bGwnOlxuICAgICAgY2FzZSAnbnVtYmVyJzpcbiAgICAgIGNhc2UgJ3N0cmluZyc6XG4gICAgICBjYXNlICd0YWcnOlxuICAgICAgICByZXR1cm4gcmhzLnR5cGUgPT09IHRoaXMudHlwZS50eXBlO1xuICAgICAgY2FzZSAnYXJyYXknOlxuICAgICAgY2FzZSAnbWFwJzpcbiAgICAgICAgcmV0dXJuIHJocy50eXBlID09PSB0aGlzLnR5cGUudHlwZSAmJiBuZXcgUmljaFByb3BlcnR5VHlwZSh0aGlzLnR5cGUuZWxlbWVudCkuZXF1YWxzKHJocy5lbGVtZW50KTtcbiAgICAgIGNhc2UgJ3JlZic6XG4gICAgICAgIHJldHVybiByaHMudHlwZSA9PT0gJ3JlZicgJiYgdGhpcy50eXBlLnJlZmVyZW5jZS4kcmVmID09PSByaHMucmVmZXJlbmNlLiRyZWY7XG4gICAgICBjYXNlICd1bmlvbic6XG4gICAgICAgIGNvbnN0IGxoc0tleSA9IHRoaXMuc29ydEtleSgpO1xuICAgICAgICBjb25zdCByaHNLZXkgPSBuZXcgUmljaFByb3BlcnR5VHlwZShyaHMpLnNvcnRLZXkoKTtcbiAgICAgICAgcmV0dXJuIGxoc0tleS5sZW5ndGggPT09IHJoc0tleS5sZW5ndGggJiYgbGhzS2V5LmV2ZXJ5KChsLCBpKSA9PiBsID09PSByaHNLZXlbaV0pO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoZSBjdXJyZW50IHR5cGUgaXMgSmF2YVNjcmlwdC1lcXVhbCB0byB0aGUgUkhTIHR5cGVcbiAgICpcbiAgICogU2FtZSBhcyBub3JtYWwgZXF1YWxpdHksIGJ1dCBjb25zaWRlciBgaW50ZWdlcmAgYW5kIGBudW1iZXJgIHRoZSBzYW1lIHR5cGVzLlxuICAgKi9cbiAgcHVibGljIGphdmFzY3JpcHRFcXVhbHMocmhzOiBQcm9wZXJ0eVR5cGUpOiBib29sZWFuIHtcbiAgICBzd2l0Y2ggKHRoaXMudHlwZS50eXBlKSB7XG4gICAgICBjYXNlICdudW1iZXInOlxuICAgICAgY2FzZSAnaW50ZWdlcic6XG4gICAgICAgIC8vIFdpZGVuaW5nXG4gICAgICAgIHJldHVybiByaHMudHlwZSA9PT0gJ2ludGVnZXInIHx8IHJocy50eXBlID09PSAnbnVtYmVyJztcblxuICAgICAgY2FzZSAnYXJyYXknOlxuICAgICAgY2FzZSAnbWFwJzpcbiAgICAgICAgcmV0dXJuIHJocy50eXBlID09PSB0aGlzLnR5cGUudHlwZSAmJiBuZXcgUmljaFByb3BlcnR5VHlwZSh0aGlzLnR5cGUuZWxlbWVudCkuamF2YXNjcmlwdEVxdWFscyhyaHMuZWxlbWVudCk7XG5cbiAgICAgIGNhc2UgJ3VuaW9uJzpcbiAgICAgICAgaWYgKHJocy50eXBlICE9PSAndW5pb24nKSB7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIC8vIEV2ZXJ5IHR5cGUgaW4gdGhpcyB1bmlvbiBuZWVkcyB0byBiZSBlcXVhbCBvbmUgdHlwZSBpbiBSSFNcbiAgICAgICAgcmV0dXJuIHRoaXMudHlwZS50eXBlcy5ldmVyeSgodDEpID0+IHJocy50eXBlcy5zb21lKCh0MikgPT4gbmV3IFJpY2hQcm9wZXJ0eVR5cGUodDEpLmphdmFzY3JpcHRFcXVhbHModDIpKSk7XG5cbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIC8vIEZvciBhbnl0aGluZyBlbHNlLCBuZWVkIHN0cmljdCBlcXVhbGl0eVxuICAgICAgICByZXR1cm4gdGhpcy5lcXVhbHMocmhzKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogV2hldGhlciB0aGUgY3VycmVudCB0eXBlIGlzIGFzc2lnbmFibGUgdG8gdGhlIFJIUyB0eXBlLlxuICAgKlxuICAgKiBUaGlzIGlzIG1lYW5zIGV2ZXJ5IHR5cGUgbWVtYmVyIG9mIHRoZSBMSFMgbXVzdCBiZSBwcmVzZW50IGluIHRoZSBSSFMgdHlwZVxuICAgKi9cbiAgcHVibGljIGFzc2lnbmFibGVUbyhyaHM6IFByb3BlcnR5VHlwZSk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGV4dHJhY3RNZW1iZXJzID0gKHR5cGU6IFByb3BlcnR5VHlwZSk6IFByb3BlcnR5VHlwZVtdID0+ICh0eXBlLnR5cGUgPT0gJ3VuaW9uJyA/IHR5cGUudHlwZXMgOiBbdHlwZV0pO1xuICAgIGNvbnN0IGFzUmljaFR5cGUgPSAodHlwZTogUHJvcGVydHlUeXBlKTogUmljaFByb3BlcnR5VHlwZSA9PiBuZXcgUmljaFByb3BlcnR5VHlwZSh0eXBlKTtcblxuICAgIGNvbnN0IHJoc01lbWJlcnMgPSBleHRyYWN0TWVtYmVycyhyaHMpO1xuICAgIGZvciAoY29uc3QgbGhzTWVtYmVyIG9mIGV4dHJhY3RNZW1iZXJzKHRoaXMudHlwZSkubWFwKGFzUmljaFR5cGUpKSB7XG4gICAgICBpZiAoIXJoc01lbWJlcnMuc29tZSgodHlwZSkgPT4gbGhzTWVtYmVyLmVxdWFscyh0eXBlKSkpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybiBhIHZlcnNpb24gb2YgdGhpcyB0eXBlLCBidXQgd2l0aCBhbGwgdHlwZSB1bmlvbnMgaW4gYSByZWd1bGFyaXplZCBvcmRlclxuICAgKi9cbiAgcHVibGljIG5vcm1hbGl6ZShkYjogU3BlY0RhdGFiYXNlKTogUmljaFByb3BlcnR5VHlwZSB7XG4gICAgc3dpdGNoICh0aGlzLnR5cGUudHlwZSkge1xuICAgICAgY2FzZSAnYXJyYXknOlxuICAgICAgY2FzZSAnbWFwJzpcbiAgICAgICAgcmV0dXJuIG5ldyBSaWNoUHJvcGVydHlUeXBlKHtcbiAgICAgICAgICB0eXBlOiB0aGlzLnR5cGUudHlwZSxcbiAgICAgICAgICBlbGVtZW50OiBuZXcgUmljaFByb3BlcnR5VHlwZSh0aGlzLnR5cGUuZWxlbWVudCkubm9ybWFsaXplKGRiKS50eXBlLFxuICAgICAgICB9KTtcbiAgICAgIGNhc2UgJ3VuaW9uJzpcbiAgICAgICAgY29uc3QgdHlwZXMgPSB0aGlzLnR5cGUudHlwZXNcbiAgICAgICAgICAubWFwKCh0KSA9PiBuZXcgUmljaFByb3BlcnR5VHlwZSh0KS5ub3JtYWxpemUoZGIpKVxuICAgICAgICAgIC5tYXAoKHQpID0+IFt0LCB0LnNvcnRLZXkoZGIpXSBhcyBjb25zdCk7XG4gICAgICAgIHR5cGVzLnNvcnQoc29ydEtleUNvbXBhcmF0b3IoKFtfLCBzb3J0S2V5XSkgPT4gc29ydEtleSkpO1xuICAgICAgICByZXR1cm4gbmV3IFJpY2hQcm9wZXJ0eVR5cGUoe1xuICAgICAgICAgIHR5cGU6ICd1bmlvbicsXG4gICAgICAgICAgdHlwZXM6IHR5cGVzLm1hcCgoW3QsIF9dKSA9PiB0LnR5cGUpLFxuICAgICAgICB9KTtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBzdHJpbmdpZnkoZGI6IFNwZWNEYXRhYmFzZSwgd2l0aElkID0gdHJ1ZSk6IHN0cmluZyB7XG4gICAgc3dpdGNoICh0aGlzLnR5cGUudHlwZSkge1xuICAgICAgY2FzZSAnaW50ZWdlcic6XG4gICAgICBjYXNlICdib29sZWFuJzpcbiAgICAgIGNhc2UgJ2RhdGUtdGltZSc6XG4gICAgICBjYXNlICdqc29uJzpcbiAgICAgIGNhc2UgJ251bGwnOlxuICAgICAgY2FzZSAnbnVtYmVyJzpcbiAgICAgIGNhc2UgJ3N0cmluZyc6XG4gICAgICBjYXNlICd0YWcnOlxuICAgICAgICByZXR1cm4gdGhpcy50eXBlLnR5cGU7XG4gICAgICBjYXNlICdhcnJheSc6XG4gICAgICAgIHJldHVybiBgQXJyYXk8JHtuZXcgUmljaFByb3BlcnR5VHlwZSh0aGlzLnR5cGUuZWxlbWVudCkuc3RyaW5naWZ5KGRiLCB3aXRoSWQpfT5gO1xuICAgICAgY2FzZSAnbWFwJzpcbiAgICAgICAgcmV0dXJuIGBNYXA8c3RyaW5nLCAke25ldyBSaWNoUHJvcGVydHlUeXBlKHRoaXMudHlwZS5lbGVtZW50KS5zdHJpbmdpZnkoZGIsIHdpdGhJZCl9PmA7XG4gICAgICBjYXNlICdyZWYnOlxuICAgICAgICBjb25zdCB0eXBlID0gZGIuZ2V0KCd0eXBlRGVmaW5pdGlvbicsIHRoaXMudHlwZS5yZWZlcmVuY2UpO1xuICAgICAgICByZXR1cm4gd2l0aElkID8gYCR7dHlwZS5uYW1lfSgke3RoaXMudHlwZS5yZWZlcmVuY2UuJHJlZn0pYCA6IHR5cGUubmFtZTtcbiAgICAgIGNhc2UgJ3VuaW9uJzpcbiAgICAgICAgcmV0dXJuIHRoaXMudHlwZS50eXBlcy5tYXAoKHQpID0+IG5ldyBSaWNoUHJvcGVydHlUeXBlKHQpLnN0cmluZ2lmeShkYiwgd2l0aElkKSkuam9pbignIHwgJyk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybiBhIHNvcnRhYmxlIGtleSBiYXNlZCBvbiB0aGlzIHR5cGVcbiAgICpcbiAgICogSWYgYSBkYXRhYmFzZSBpcyBnaXZlbiwgdHlwZSBkZWZpbml0aW9ucyB3aWxsIGJlIHNvcnRlZCBiYXNlZCBvbiB0eXBlIG5hbWUsXG4gICAqIG90aGVyd2lzZSBvbiBpZGVudGlmaWVyXG4gICAqL1xuICBwdWJsaWMgc29ydEtleShkYj86IFNwZWNEYXRhYmFzZSk6IHN0cmluZ1tdIHtcbiAgICBzd2l0Y2ggKHRoaXMudHlwZS50eXBlKSB7XG4gICAgICBjYXNlICdpbnRlZ2VyJzpcbiAgICAgIGNhc2UgJ2Jvb2xlYW4nOlxuICAgICAgY2FzZSAnZGF0ZS10aW1lJzpcbiAgICAgIGNhc2UgJ2pzb24nOlxuICAgICAgY2FzZSAnbnVsbCc6XG4gICAgICBjYXNlICdudW1iZXInOlxuICAgICAgY2FzZSAnc3RyaW5nJzpcbiAgICAgIGNhc2UgJ3RhZyc6XG4gICAgICAgIHJldHVybiBbJzAnLCB0aGlzLnR5cGUudHlwZV07XG4gICAgICBjYXNlICdhcnJheSc6XG4gICAgICBjYXNlICdtYXAnOlxuICAgICAgICByZXR1cm4gWycxJywgdGhpcy50eXBlLnR5cGUsIC4uLm5ldyBSaWNoUHJvcGVydHlUeXBlKHRoaXMudHlwZS5lbGVtZW50KS5zb3J0S2V5KGRiKV07XG4gICAgICBjYXNlICdyZWYnOlxuICAgICAgICByZXR1cm4gWycyJywgdGhpcy50eXBlLnR5cGUsIGRiPy5nZXQoJ3R5cGVEZWZpbml0aW9uJywgdGhpcy50eXBlLnJlZmVyZW5jZSk/Lm5hbWUgPz8gdGhpcy50eXBlLnJlZmVyZW5jZS4kcmVmXTtcbiAgICAgIGNhc2UgJ3VuaW9uJzpcbiAgICAgICAgY29uc3QgdHlwZUtleXMgPSB0aGlzLnR5cGUudHlwZXMubWFwKCh0KSA9PiBuZXcgUmljaFByb3BlcnR5VHlwZSh0KS5zb3J0S2V5KGRiKSk7XG4gICAgICAgIHR5cGVLZXlzLnNvcnQoc29ydEtleUNvbXBhcmF0b3IoKHgpID0+IHgpKTtcbiAgICAgICAgcmV0dXJuIFsnMycsIHRoaXMudHlwZS50eXBlLCAuLi50eXBlS2V5cy5mbGF0TWFwKCh4KSA9PiB4KV07XG4gICAgfVxuICB9XG59XG4iXX0=","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.sortKeyComparator = void 0;\n/**\n * Make a sorting comparator that will sort by a given sort key\n */\nfunction sortKeyComparator(keyFn) {\n return (a, b) => {\n const ak = keyFn(a);\n const bk = keyFn(b);\n for (let i = 0; i < ak.length && i < bk.length; i++) {\n const av = ak[i];\n const bv = bk[i];\n let diff = 0;\n if (typeof av === 'number' && typeof bv === 'number') {\n diff = av - bv;\n }\n else if (typeof av === 'string' && typeof bv === 'string') {\n diff = av.localeCompare(bv);\n }\n if (diff !== 0) {\n return diff;\n }\n }\n return bk.length - ak.length;\n };\n}\nexports.sortKeyComparator = sortKeyComparator;\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic29ydGluZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsL3NvcnRpbmcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUE7O0dBRUc7QUFDSCxTQUFnQixpQkFBaUIsQ0FBSSxLQUF1QztJQUMxRSxPQUFPLENBQUMsQ0FBSSxFQUFFLENBQUksRUFBVSxFQUFFO1FBQzVCLE1BQU0sRUFBRSxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNwQixNQUFNLEVBQUUsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFFcEIsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxNQUFNLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7WUFDbkQsTUFBTSxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ2pCLE1BQU0sRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUVqQixJQUFJLElBQUksR0FBRyxDQUFDLENBQUM7WUFDYixJQUFJLE9BQU8sRUFBRSxLQUFLLFFBQVEsSUFBSSxPQUFPLEVBQUUsS0FBSyxRQUFRLEVBQUU7Z0JBQ3BELElBQUksR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDO2FBQ2hCO2lCQUFNLElBQUksT0FBTyxFQUFFLEtBQUssUUFBUSxJQUFJLE9BQU8sRUFBRSxLQUFLLFFBQVEsRUFBRTtnQkFDM0QsSUFBSSxHQUFHLEVBQUUsQ0FBQyxhQUFhLENBQUMsRUFBRSxDQUFDLENBQUM7YUFDN0I7WUFFRCxJQUFJLElBQUksS0FBSyxDQUFDLEVBQUU7Z0JBQ2QsT0FBTyxJQUFJLENBQUM7YUFDYjtTQUNGO1FBRUQsT0FBTyxFQUFFLENBQUMsTUFBTSxHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUM7SUFDL0IsQ0FBQyxDQUFDO0FBQ0osQ0FBQztBQXZCRCw4Q0F1QkMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIE1ha2UgYSBzb3J0aW5nIGNvbXBhcmF0b3IgdGhhdCB3aWxsIHNvcnQgYnkgYSBnaXZlbiBzb3J0IGtleVxuICovXG5leHBvcnQgZnVuY3Rpb24gc29ydEtleUNvbXBhcmF0b3I8QT4oa2V5Rm46ICh4OiBBKSA9PiBBcnJheTxzdHJpbmcgfCBudW1iZXI+KSB7XG4gIHJldHVybiAoYTogQSwgYjogQSk6IG51bWJlciA9PiB7XG4gICAgY29uc3QgYWsgPSBrZXlGbihhKTtcbiAgICBjb25zdCBiayA9IGtleUZuKGIpO1xuXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhay5sZW5ndGggJiYgaSA8IGJrLmxlbmd0aDsgaSsrKSB7XG4gICAgICBjb25zdCBhdiA9IGFrW2ldO1xuICAgICAgY29uc3QgYnYgPSBia1tpXTtcblxuICAgICAgbGV0IGRpZmYgPSAwO1xuICAgICAgaWYgKHR5cGVvZiBhdiA9PT0gJ251bWJlcicgJiYgdHlwZW9mIGJ2ID09PSAnbnVtYmVyJykge1xuICAgICAgICBkaWZmID0gYXYgLSBidjtcbiAgICAgIH0gZWxzZSBpZiAodHlwZW9mIGF2ID09PSAnc3RyaW5nJyAmJiB0eXBlb2YgYnYgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIGRpZmYgPSBhdi5sb2NhbGVDb21wYXJlKGJ2KTtcbiAgICAgIH1cblxuICAgICAgaWYgKGRpZmYgIT09IDApIHtcbiAgICAgICAgcmV0dXJuIGRpZmY7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGJrLmxlbmd0aCAtIGFrLmxlbmd0aDtcbiAgfTtcbn1cbiJdfQ==","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXJ0aWZhY3Qtc2NoZW1hLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiYXJ0aWZhY3Qtc2NoZW1hLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEluZm9ybWF0aW9uIG5lZWRlZCB0byBhY2Nlc3MgYW4gSUFNIHJvbGUgY3JlYXRlZFxuICogYXMgcGFydCBvZiB0aGUgYm9vdHN0cmFwIHByb2Nlc3NcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBCb290c3RyYXBSb2xlIHtcbiAgLyoqXG4gICAqIFRoZSBBUk4gb2YgdGhlIElBTSByb2xlIGNyZWF0ZWQgYXMgcGFydCBvZiBib290cmFwcGluZ1xuICAgKiBlLmcuIGxvb2t1cFJvbGVBcm5cbiAgICovXG4gIHJlYWRvbmx5IGFybjogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBFeHRlcm5hbCBJRCB0byB1c2Ugd2hlbiBhc3N1bWluZyB0aGUgYm9vdHN0cmFwIHJvbGVcbiAgICpcbiAgICogQGRlZmF1bHQgLSBObyBleHRlcm5hbCBJRFxuICAgKi9cbiAgcmVhZG9ubHkgYXNzdW1lUm9sZUV4dGVybmFsSWQ/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEFkZGl0aW9uYWwgb3B0aW9ucyB0byBwYXNzIHRvIFNUUyB3aGVuIGFzc3VtaW5nIHRoZSByb2xlLlxuICAgKlxuICAgKiAtIGBSb2xlQXJuYCBzaG91bGQgbm90IGJlIHVzZWQuIFVzZSB0aGUgZGVkaWNhdGVkIGBhcm5gIHByb3BlcnR5IGluc3RlYWQuXG4gICAqIC0gYEV4dGVybmFsSWRgIHNob3VsZCBub3QgYmUgdXNlZC4gVXNlIHRoZSBkZWRpY2F0ZWQgYGFzc3VtZVJvbGVFeHRlcm5hbElkYCBpbnN0ZWFkLlxuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NKYXZhU2NyaXB0U0RLL2xhdGVzdC9BV1MvU1RTLmh0bWwjYXNzdW1lUm9sZS1wcm9wZXJ0eVxuICAgKiBAZGVmYXVsdCAtIE5vIGFkZGl0aW9uYWwgb3B0aW9ucy5cbiAgICovXG4gIHJlYWRvbmx5IGFzc3VtZVJvbGVBZGRpdGlvbmFsT3B0aW9ucz86IHsgW2tleTogc3RyaW5nXTogYW55IH07XG5cbiAgLyoqXG4gICAqIFZlcnNpb24gb2YgYm9vdHN0cmFwIHN0YWNrIHJlcXVpcmVkIHRvIHVzZSB0aGlzIHJvbGVcbiAgICpcbiAgICogQGRlZmF1bHQgLSBObyBib290c3RyYXAgc3RhY2sgcmVxdWlyZWRcbiAgICovXG4gIHJlYWRvbmx5IHJlcXVpcmVzQm9vdHN0cmFwU3RhY2tWZXJzaW9uPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBOYW1lIG9mIFNTTSBwYXJhbWV0ZXIgd2l0aCBib290c3RyYXAgc3RhY2sgdmVyc2lvblxuICAgKlxuICAgKiBAZGVmYXVsdCAtIERpc2NvdmVyIFNTTSBwYXJhbWV0ZXIgYnkgcmVhZGluZyBzdGFja1xuICAgKi9cbiAgcmVhZG9ubHkgYm9vdHN0cmFwU3RhY2tWZXJzaW9uU3NtUGFyYW1ldGVyPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIEFydGlmYWN0IHByb3BlcnRpZXMgZm9yIENsb3VkRm9ybWF0aW9uIHN0YWNrcy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBd3NDbG91ZEZvcm1hdGlvblN0YWNrUHJvcGVydGllcyB7XG4gIC8qKlxuICAgKiBBIGZpbGUgcmVsYXRpdmUgdG8gdGhlIGFzc2VtYmx5IHJvb3Qgd2hpY2ggY29udGFpbnMgdGhlIENsb3VkRm9ybWF0aW9uIHRlbXBsYXRlIGZvciB0aGlzIHN0YWNrLlxuICAgKi9cbiAgcmVhZG9ubHkgdGVtcGxhdGVGaWxlOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFZhbHVlcyBmb3IgQ2xvdWRGb3JtYXRpb24gc3RhY2sgcGFyYW1ldGVycyB0aGF0IHNob3VsZCBiZSBwYXNzZWQgd2hlbiB0aGUgc3RhY2sgaXMgZGVwbG95ZWQuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gTm8gcGFyYW1ldGVyc1xuICAgKi9cbiAgcmVhZG9ubHkgcGFyYW1ldGVycz86IHsgW2lkOiBzdHJpbmddOiBzdHJpbmcgfTtcblxuICAvKipcbiAgICogVmFsdWVzIGZvciBDbG91ZEZvcm1hdGlvbiBzdGFjayB0YWdzIHRoYXQgc2hvdWxkIGJlIHBhc3NlZCB3aGVuIHRoZSBzdGFjayBpcyBkZXBsb3llZC5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBObyB0YWdzXG4gICAqL1xuICByZWFkb25seSB0YWdzPzogeyBbaWQ6IHN0cmluZ106IHN0cmluZyB9O1xuXG4gIC8qKlxuICAgKiBTTlMgTm90aWZpY2F0aW9uIEFSTnMgdGhhdCBzaG91bGQgcmVjZWl2ZSBDbG91ZEZvcm1hdGlvbiBTdGFjayBFdmVudHMuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gTm8gbm90aWZpY2F0aW9uIGFybnNcbiAgICovXG4gIHJlYWRvbmx5IG5vdGlmaWNhdGlvbkFybnM/OiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogVGhlIG5hbWUgdG8gdXNlIGZvciB0aGUgQ2xvdWRGb3JtYXRpb24gc3RhY2suXG4gICAqIEBkZWZhdWx0IC0gbmFtZSBkZXJpdmVkIGZyb20gYXJ0aWZhY3QgSURcbiAgICovXG4gIHJlYWRvbmx5IHN0YWNrTmFtZT86IHN0cmluZztcblxuICAvKipcbiAgICogV2hldGhlciB0byBlbmFibGUgdGVybWluYXRpb24gcHJvdGVjdGlvbiBmb3IgdGhpcyBzdGFjay5cbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IHRlcm1pbmF0aW9uUHJvdGVjdGlvbj86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFRoZSByb2xlIHRoYXQgbmVlZHMgdG8gYmUgYXNzdW1lZCB0byBkZXBsb3kgdGhlIHN0YWNrXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gTm8gcm9sZSBpcyBhc3N1bWVkIChjdXJyZW50IGNyZWRlbnRpYWxzIGFyZSB1c2VkKVxuICAgKi9cbiAgcmVhZG9ubHkgYXNzdW1lUm9sZUFybj86IHN0cmluZztcblxuICAvKipcbiAgICogRXh0ZXJuYWwgSUQgdG8gdXNlIHdoZW4gYXNzdW1pbmcgcm9sZSBmb3IgY2xvdWRmb3JtYXRpb24gZGVwbG95bWVudHNcbiAgICpcbiAgICogQGRlZmF1bHQgLSBObyBleHRlcm5hbCBJRFxuICAgKi9cbiAgcmVhZG9ubHkgYXNzdW1lUm9sZUV4dGVybmFsSWQ/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEFkZGl0aW9uYWwgb3B0aW9ucyB0byBwYXNzIHRvIFNUUyB3aGVuIGFzc3VtaW5nIHRoZSByb2xlLlxuICAgKlxuICAgKiAtIGBSb2xlQXJuYCBzaG91bGQgbm90IGJlIHVzZWQuIFVzZSB0aGUgZGVkaWNhdGVkIGBhc3N1bWVSb2xlQXJuYCBwcm9wZXJ0eSBpbnN0ZWFkLlxuICAgKiAtIGBFeHRlcm5hbElkYCBzaG91bGQgbm90IGJlIHVzZWQuIFVzZSB0aGUgZGVkaWNhdGVkIGBhc3N1bWVSb2xlRXh0ZXJuYWxJZGAgaW5zdGVhZC5cbiAgICpcbiAgICogQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTSmF2YVNjcmlwdFNESy9sYXRlc3QvQVdTL1NUUy5odG1sI2Fzc3VtZVJvbGUtcHJvcGVydHlcbiAgICogQGRlZmF1bHQgLSBObyBhZGRpdGlvbmFsIG9wdGlvbnMuXG4gICAqL1xuICByZWFkb25seSBhc3N1bWVSb2xlQWRkaXRpb25hbE9wdGlvbnM/OiB7IFtrZXk6IHN0cmluZ106IGFueSB9O1xuXG4gIC8qKlxuICAgKiBUaGUgcm9sZSB0aGF0IGlzIHBhc3NlZCB0byBDbG91ZEZvcm1hdGlvbiB0byBleGVjdXRlIHRoZSBjaGFuZ2Ugc2V0XG4gICAqXG4gICAqIEBkZWZhdWx0IC0gTm8gcm9sZSBpcyBwYXNzZWQgKGN1cnJlbnRseSBhc3N1bWVkIHJvbGUvY3JlZGVudGlhbHMgYXJlIHVzZWQpXG4gICAqL1xuICByZWFkb25seSBjbG91ZEZvcm1hdGlvbkV4ZWN1dGlvblJvbGVBcm4/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSByb2xlIHRvIHVzZSB0byBsb29rIHVwIHZhbHVlcyBmcm9tIHRoZSB0YXJnZXQgQVdTIGFjY291bnRcbiAgICpcbiAgICogQGRlZmF1bHQgLSBObyByb2xlIGlzIGFzc3VtZWQgKGN1cnJlbnQgY3JlZGVudGlhbHMgYXJlIHVzZWQpXG4gICAqL1xuICByZWFkb25seSBsb29rdXBSb2xlPzogQm9vdHN0cmFwUm9sZTtcblxuICAvKipcbiAgICogSWYgdGhlIHN0YWNrIHRlbXBsYXRlIGhhcyBhbHJlYWR5IGJlZW4gaW5jbHVkZWQgaW4gdGhlIGFzc2V0IG1hbmlmZXN0LCBpdHMgYXNzZXQgVVJMXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gTm90IHVwbG9hZGVkIHlldCwgdXBsb2FkIGp1c3QgYmVmb3JlIGRlcGxveWluZ1xuICAgKi9cbiAgcmVhZG9ubHkgc3RhY2tUZW1wbGF0ZUFzc2V0T2JqZWN0VXJsPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBWZXJzaW9uIG9mIGJvb3RzdHJhcCBzdGFjayByZXF1aXJlZCB0byBkZXBsb3kgdGhpcyBzdGFja1xuICAgKlxuICAgKiBAZGVmYXVsdCAtIE5vIGJvb3RzdHJhcCBzdGFjayByZXF1aXJlZFxuICAgKi9cbiAgcmVhZG9ubHkgcmVxdWlyZXNCb290c3RyYXBTdGFja1ZlcnNpb24/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIFNTTSBwYXJhbWV0ZXIgd2hlcmUgdGhlIGJvb3RzdHJhcCBzdGFjayB2ZXJzaW9uIG51bWJlciBjYW4gYmUgZm91bmRcbiAgICpcbiAgICogT25seSB1c2VkIGlmIGByZXF1aXJlc0Jvb3RzdHJhcFN0YWNrVmVyc2lvbmAgaXMgc2V0LlxuICAgKlxuICAgKiAtIElmIHRoaXMgdmFsdWUgaXMgbm90IHNldCwgdGhlIGJvb3RzdHJhcCBzdGFjayBuYW1lIG11c3QgYmUga25vd24gYXRcbiAgICogICBkZXBsb3ltZW50IHRpbWUgc28gdGhlIHN0YWNrIHZlcnNpb24gY2FuIGJlIGxvb2tlZCB1cCBmcm9tIHRoZSBzdGFja1xuICAgKiAgIG91dHB1dHMuXG4gICAqIC0gSWYgdGhpcyB2YWx1ZSBpcyBzZXQsIHRoZSBib290c3RyYXAgc3RhY2sgY2FuIGhhdmUgYW55IG5hbWUgYmVjYXVzZVxuICAgKiAgIHdlIHdvbid0IG5lZWQgdG8gbG9vayBpdCB1cC5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBCb290c3RyYXAgc3RhY2sgdmVyc2lvbiBudW1iZXIgbG9va2VkIHVwXG4gICAqL1xuICByZWFkb25seSBib290c3RyYXBTdGFja1ZlcnNpb25Tc21QYXJhbWV0ZXI/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhpcyBzdGFjayBzaG91bGQgYmUgdmFsaWRhdGVkIGJ5IHRoZSBDTEkgYWZ0ZXIgc3ludGhlc2lzXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IHZhbGlkYXRlT25TeW50aD86IGJvb2xlYW47XG59XG5cbi8qKlxuICogQ29uZmlndXJhdGlvbiBvcHRpb25zIGZvciB0aGUgQXNzZXQgTWFuaWZlc3RcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBc3NldE1hbmlmZXN0T3B0aW9ucyB7XG4gIC8qKlxuICAgKiBWZXJzaW9uIG9mIGJvb3RzdHJhcCBzdGFjayByZXF1aXJlZCB0byBkZXBsb3kgdGhpcyBzdGFja1xuICAgKlxuICAgKiBAZGVmYXVsdCAtIFZlcnNpb24gMSAoYmFzaWMgbW9kZXJuIGJvb3RzdHJhcCBzdGFjaylcbiAgICovXG4gIHJlYWRvbmx5IHJlcXVpcmVzQm9vdHN0cmFwU3RhY2tWZXJzaW9uPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBTU00gcGFyYW1ldGVyIHdoZXJlIHRoZSBib290c3RyYXAgc3RhY2sgdmVyc2lvbiBudW1iZXIgY2FuIGJlIGZvdW5kXG4gICAqXG4gICAqIC0gSWYgdGhpcyB2YWx1ZSBpcyBub3Qgc2V0LCB0aGUgYm9vdHN0cmFwIHN0YWNrIG5hbWUgbXVzdCBiZSBrbm93biBhdFxuICAgKiAgIGRlcGxveW1lbnQgdGltZSBzbyB0aGUgc3RhY2sgdmVyc2lvbiBjYW4gYmUgbG9va2VkIHVwIGZyb20gdGhlIHN0YWNrXG4gICAqICAgb3V0cHV0cy5cbiAgICogLSBJZiB0aGlzIHZhbHVlIGlzIHNldCwgdGhlIGJvb3RzdHJhcCBzdGFjayBjYW4gaGF2ZSBhbnkgbmFtZSBiZWNhdXNlXG4gICAqICAgd2Ugd29uJ3QgbmVlZCB0byBsb29rIGl0IHVwLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIEJvb3RzdHJhcCBzdGFjayB2ZXJzaW9uIG51bWJlciBsb29rZWQgdXBcbiAgICovXG4gIHJlYWRvbmx5IGJvb3RzdHJhcFN0YWNrVmVyc2lvblNzbVBhcmFtZXRlcj86IHN0cmluZztcbn1cblxuLyoqXG4gKiBBcnRpZmFjdCBwcm9wZXJ0aWVzIGZvciB0aGUgQXNzZXQgTWFuaWZlc3RcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBc3NldE1hbmlmZXN0UHJvcGVydGllcyBleHRlbmRzIEFzc2V0TWFuaWZlc3RPcHRpb25zIHtcbiAgLyoqXG4gICAqIEZpbGVuYW1lIG9mIHRoZSBhc3NldCBtYW5pZmVzdFxuICAgKi9cbiAgcmVhZG9ubHkgZmlsZTogc3RyaW5nO1xufVxuXG4vKipcbiAqIEFydGlmYWN0IHByb3BlcnRpZXMgZm9yIHRoZSBDb25zdHJ1Y3QgVHJlZSBBcnRpZmFjdFxuICovXG5leHBvcnQgaW50ZXJmYWNlIFRyZWVBcnRpZmFjdFByb3BlcnRpZXMge1xuICAvKipcbiAgICogRmlsZW5hbWUgb2YgdGhlIHRyZWUgYXJ0aWZhY3RcbiAgICovXG4gIHJlYWRvbmx5IGZpbGU6IHN0cmluZztcbn1cblxuLyoqXG4gKiBBcnRpZmFjdCBwcm9wZXJ0aWVzIGZvciBuZXN0ZWQgY2xvdWQgYXNzZW1ibGllc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIE5lc3RlZENsb3VkQXNzZW1ibHlQcm9wZXJ0aWVzIHtcbiAgLyoqXG4gICAqIFJlbGF0aXZlIHBhdGggdG8gdGhlIG5lc3RlZCBjbG91ZCBhc3NlbWJseVxuICAgKi9cbiAgcmVhZG9ubHkgZGlyZWN0b3J5TmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBEaXNwbGF5IG5hbWUgZm9yIHRoZSBjbG91ZCBhc3NlbWJseVxuICAgKlxuICAgKiBAZGVmYXVsdCAtIFRoZSBhcnRpZmFjdCBJRFxuICAgKi9cbiAgcmVhZG9ubHkgZGlzcGxheU5hbWU/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogUHJvcGVydGllcyBmb3IgbWFuaWZlc3QgYXJ0aWZhY3RzXG4gKi9cbmV4cG9ydCB0eXBlIEFydGlmYWN0UHJvcGVydGllcyA9XG4gIHwgQXdzQ2xvdWRGb3JtYXRpb25TdGFja1Byb3BlcnRpZXNcbiAgfCBBc3NldE1hbmlmZXN0UHJvcGVydGllc1xuICB8IFRyZWVBcnRpZmFjdFByb3BlcnRpZXNcbiAgfCBOZXN0ZWRDbG91ZEFzc2VtYmx5UHJvcGVydGllcztcbiJdfQ==","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.LoadBalancerListenerProtocol = exports.LoadBalancerType = exports.ContextProvider = void 0;\n/**\n * Identifier for the context provider\n */\nvar ContextProvider;\n(function (ContextProvider) {\n /**\n * AMI provider\n */\n ContextProvider[\"AMI_PROVIDER\"] = \"ami\";\n /**\n * AZ provider\n */\n ContextProvider[\"AVAILABILITY_ZONE_PROVIDER\"] = \"availability-zones\";\n /**\n * Route53 Hosted Zone provider\n */\n ContextProvider[\"HOSTED_ZONE_PROVIDER\"] = \"hosted-zone\";\n /**\n * SSM Parameter Provider\n */\n ContextProvider[\"SSM_PARAMETER_PROVIDER\"] = \"ssm\";\n /**\n * VPC Provider\n */\n ContextProvider[\"VPC_PROVIDER\"] = \"vpc-provider\";\n /**\n * VPC Endpoint Service AZ Provider\n */\n ContextProvider[\"ENDPOINT_SERVICE_AVAILABILITY_ZONE_PROVIDER\"] = \"endpoint-service-availability-zones\";\n /**\n * Load balancer provider\n */\n ContextProvider[\"LOAD_BALANCER_PROVIDER\"] = \"load-balancer\";\n /**\n * Load balancer listener provider\n */\n ContextProvider[\"LOAD_BALANCER_LISTENER_PROVIDER\"] = \"load-balancer-listener\";\n /**\n * Security group provider\n */\n ContextProvider[\"SECURITY_GROUP_PROVIDER\"] = \"security-group\";\n /**\n * KMS Key Provider\n */\n ContextProvider[\"KEY_PROVIDER\"] = \"key-provider\";\n /**\n * A plugin provider (the actual plugin name will be in the properties)\n */\n ContextProvider[\"PLUGIN\"] = \"plugin\";\n})(ContextProvider || (exports.ContextProvider = ContextProvider = {}));\n/**\n * Type of load balancer\n */\nvar LoadBalancerType;\n(function (LoadBalancerType) {\n /**\n * Network load balancer\n */\n LoadBalancerType[\"NETWORK\"] = \"network\";\n /**\n * Application load balancer\n */\n LoadBalancerType[\"APPLICATION\"] = \"application\";\n})(LoadBalancerType || (exports.LoadBalancerType = LoadBalancerType = {}));\n/**\n * The protocol for connections from clients to the load balancer\n */\nvar LoadBalancerListenerProtocol;\n(function (LoadBalancerListenerProtocol) {\n /**\n * HTTP protocol\n */\n LoadBalancerListenerProtocol[\"HTTP\"] = \"HTTP\";\n /**\n * HTTPS protocol\n */\n LoadBalancerListenerProtocol[\"HTTPS\"] = \"HTTPS\";\n /**\n * TCP protocol\n */\n LoadBalancerListenerProtocol[\"TCP\"] = \"TCP\";\n /**\n * TLS protocol\n */\n LoadBalancerListenerProtocol[\"TLS\"] = \"TLS\";\n /**\n * UDP protocol\n * */\n LoadBalancerListenerProtocol[\"UDP\"] = \"UDP\";\n /**\n * TCP and UDP protocol\n * */\n LoadBalancerListenerProtocol[\"TCP_UDP\"] = \"TCP_UDP\";\n})(LoadBalancerListenerProtocol || (exports.LoadBalancerListenerProtocol = LoadBalancerListenerProtocol = {}));\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGV4dC1xdWVyaWVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiY29udGV4dC1xdWVyaWVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUVBOztHQUVHO0FBQ0gsSUFBWSxlQXVEWDtBQXZERCxXQUFZLGVBQWU7SUFDekI7O09BRUc7SUFDSCx1Q0FBb0IsQ0FBQTtJQUVwQjs7T0FFRztJQUNILG9FQUFpRCxDQUFBO0lBRWpEOztPQUVHO0lBQ0gsdURBQW9DLENBQUE7SUFFcEM7O09BRUc7SUFDSCxpREFBOEIsQ0FBQTtJQUU5Qjs7T0FFRztJQUNILGdEQUE2QixDQUFBO0lBRTdCOztPQUVHO0lBQ0gsc0dBQW1GLENBQUE7SUFFbkY7O09BRUc7SUFDSCwyREFBd0MsQ0FBQTtJQUV4Qzs7T0FFRztJQUNILDZFQUEwRCxDQUFBO0lBRTFEOztPQUVHO0lBQ0gsNkRBQTBDLENBQUE7SUFFMUM7O09BRUc7SUFDSCxnREFBNkIsQ0FBQTtJQUU3Qjs7T0FFRztJQUNILG9DQUFpQixDQUFBO0FBQ25CLENBQUMsRUF2RFcsZUFBZSwrQkFBZixlQUFlLFFBdUQxQjtBQXlKRDs7R0FFRztBQUNILElBQVksZ0JBVVg7QUFWRCxXQUFZLGdCQUFnQjtJQUMxQjs7T0FFRztJQUNILHVDQUFtQixDQUFBO0lBRW5COztPQUVHO0lBQ0gsK0NBQTJCLENBQUE7QUFDN0IsQ0FBQyxFQVZXLGdCQUFnQixnQ0FBaEIsZ0JBQWdCLFFBVTNCO0FBNkJEOztHQUVHO0FBQ0gsSUFBWSw0QkE4Qlg7QUE5QkQsV0FBWSw0QkFBNEI7SUFDdEM7O09BRUc7SUFDSCw2Q0FBYSxDQUFBO0lBRWI7O09BRUc7SUFDSCwrQ0FBZSxDQUFBO0lBRWY7O09BRUc7SUFDSCwyQ0FBVyxDQUFBO0lBRVg7O09BRUc7SUFDSCwyQ0FBVyxDQUFBO0lBRVg7O1NBRUs7SUFDTCwyQ0FBVyxDQUFBO0lBRVg7O1NBRUs7SUFDTCxtREFBbUIsQ0FBQTtBQUNyQixDQUFDLEVBOUJXLDRCQUE0Qiw0Q0FBNUIsNEJBQTRCLFFBOEJ2QyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFRhZyB9IGZyb20gJy4vbWV0YWRhdGEtc2NoZW1hJztcblxuLyoqXG4gKiBJZGVudGlmaWVyIGZvciB0aGUgY29udGV4dCBwcm92aWRlclxuICovXG5leHBvcnQgZW51bSBDb250ZXh0UHJvdmlkZXIge1xuICAvKipcbiAgICogQU1JIHByb3ZpZGVyXG4gICAqL1xuICBBTUlfUFJPVklERVIgPSAnYW1pJyxcblxuICAvKipcbiAgICogQVogcHJvdmlkZXJcbiAgICovXG4gIEFWQUlMQUJJTElUWV9aT05FX1BST1ZJREVSID0gJ2F2YWlsYWJpbGl0eS16b25lcycsXG5cbiAgLyoqXG4gICAqIFJvdXRlNTMgSG9zdGVkIFpvbmUgcHJvdmlkZXJcbiAgICovXG4gIEhPU1RFRF9aT05FX1BST1ZJREVSID0gJ2hvc3RlZC16b25lJyxcblxuICAvKipcbiAgICogU1NNIFBhcmFtZXRlciBQcm92aWRlclxuICAgKi9cbiAgU1NNX1BBUkFNRVRFUl9QUk9WSURFUiA9ICdzc20nLFxuXG4gIC8qKlxuICAgKiBWUEMgUHJvdmlkZXJcbiAgICovXG4gIFZQQ19QUk9WSURFUiA9ICd2cGMtcHJvdmlkZXInLFxuXG4gIC8qKlxuICAgKiBWUEMgRW5kcG9pbnQgU2VydmljZSBBWiBQcm92aWRlclxuICAgKi9cbiAgRU5EUE9JTlRfU0VSVklDRV9BVkFJTEFCSUxJVFlfWk9ORV9QUk9WSURFUiA9ICdlbmRwb2ludC1zZXJ2aWNlLWF2YWlsYWJpbGl0eS16b25lcycsXG5cbiAgLyoqXG4gICAqIExvYWQgYmFsYW5jZXIgcHJvdmlkZXJcbiAgICovXG4gIExPQURfQkFMQU5DRVJfUFJPVklERVIgPSAnbG9hZC1iYWxhbmNlcicsXG5cbiAgLyoqXG4gICAqIExvYWQgYmFsYW5jZXIgbGlzdGVuZXIgcHJvdmlkZXJcbiAgICovXG4gIExPQURfQkFMQU5DRVJfTElTVEVORVJfUFJPVklERVIgPSAnbG9hZC1iYWxhbmNlci1saXN0ZW5lcicsXG5cbiAgLyoqXG4gICAqIFNlY3VyaXR5IGdyb3VwIHByb3ZpZGVyXG4gICAqL1xuICBTRUNVUklUWV9HUk9VUF9QUk9WSURFUiA9ICdzZWN1cml0eS1ncm91cCcsXG5cbiAgLyoqXG4gICAqIEtNUyBLZXkgUHJvdmlkZXJcbiAgICovXG4gIEtFWV9QUk9WSURFUiA9ICdrZXktcHJvdmlkZXInLFxuXG4gIC8qKlxuICAgKiBBIHBsdWdpbiBwcm92aWRlciAodGhlIGFjdHVhbCBwbHVnaW4gbmFtZSB3aWxsIGJlIGluIHRoZSBwcm9wZXJ0aWVzKVxuICAgKi9cbiAgUExVR0lOID0gJ3BsdWdpbicsXG59XG5cbi8qKlxuICogT3B0aW9ucyBmb3IgY29udGV4dCBsb29rdXAgcm9sZXMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ29udGV4dExvb2t1cFJvbGVPcHRpb25zIHtcbiAgLyoqXG4gICAqIFF1ZXJ5IGFjY291bnRcbiAgICovXG4gIHJlYWRvbmx5IGFjY291bnQ6IHN0cmluZztcblxuICAvKipcbiAgICogUXVlcnkgcmVnaW9uXG4gICAqL1xuICByZWFkb25seSByZWdpb246IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIEFSTiBvZiB0aGUgcm9sZSB0aGF0IHNob3VsZCBiZSB1c2VkIHRvIGxvb2sgdXAgdGhlIG1pc3NpbmcgdmFsdWVzXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gTm9uZVxuICAgKi9cbiAgcmVhZG9ubHkgbG9va3VwUm9sZUFybj86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIEV4dGVybmFsSWQgdGhhdCBuZWVkcyB0byBiZSBzdXBwbGllZCB3aGlsZSBhc3N1bWluZyB0aGlzIHJvbGVcbiAgICpcbiAgICogQGRlZmF1bHQgLSBObyBFeHRlcm5hbElkIHdpbGwgYmUgc3VwcGxpZWRcbiAgICovXG4gIHJlYWRvbmx5IGxvb2t1cFJvbGVFeHRlcm5hbElkPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBBZGRpdGlvbmFsIG9wdGlvbnMgdG8gcGFzcyB0byBTVFMgd2hlbiBhc3N1bWluZyB0aGUgbG9va3VwIHJvbGUuXG4gICAqXG4gICAqIC0gYFJvbGVBcm5gIHNob3VsZCBub3QgYmUgdXNlZC4gVXNlIHRoZSBkZWRpY2F0ZWQgYGxvb2t1cFJvbGVBcm5gIHByb3BlcnR5IGluc3RlYWQuXG4gICAqIC0gYEV4dGVybmFsSWRgIHNob3VsZCBub3QgYmUgdXNlZC4gVXNlIHRoZSBkZWRpY2F0ZWQgYGxvb2t1cFJvbGVFeHRlcm5hbElkYCBpbnN0ZWFkLlxuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NKYXZhU2NyaXB0U0RLL2xhdGVzdC9BV1MvU1RTLmh0bWwjYXNzdW1lUm9sZS1wcm9wZXJ0eVxuICAgKiBAZGVmYXVsdCAtIE5vIGFkZGl0aW9uYWwgb3B0aW9ucy5cbiAgICovXG4gIHJlYWRvbmx5IGFzc3VtZVJvbGVBZGRpdGlvbmFsT3B0aW9ucz86IHsgW2tleTogc3RyaW5nXTogYW55IH07XG59XG5cbi8qKlxuICogUXVlcnkgdG8gQU1JIGNvbnRleHQgcHJvdmlkZXJcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBbWlDb250ZXh0UXVlcnkgZXh0ZW5kcyBDb250ZXh0TG9va3VwUm9sZU9wdGlvbnMge1xuICAvKipcbiAgICogT3duZXJzIHRvIERlc2NyaWJlSW1hZ2VzIGNhbGxcbiAgICpcbiAgICogQGRlZmF1bHQgLSBBbGwgb3duZXJzXG4gICAqL1xuICByZWFkb25seSBvd25lcnM/OiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogRmlsdGVycyB0byBEZXNjcmliZUltYWdlcyBjYWxsXG4gICAqL1xuICByZWFkb25seSBmaWx0ZXJzOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZ1tdIH07XG59XG5cbi8qKlxuICogUXVlcnkgdG8gYXZhaWxhYmlsaXR5IHpvbmUgY29udGV4dCBwcm92aWRlclxuICovXG5leHBvcnQgaW50ZXJmYWNlIEF2YWlsYWJpbGl0eVpvbmVzQ29udGV4dFF1ZXJ5IGV4dGVuZHMgQ29udGV4dExvb2t1cFJvbGVPcHRpb25zIHt9XG5cbi8qKlxuICogUXVlcnkgdG8gaG9zdGVkIHpvbmUgY29udGV4dCBwcm92aWRlclxuICovXG5leHBvcnQgaW50ZXJmYWNlIEhvc3RlZFpvbmVDb250ZXh0UXVlcnkgZXh0ZW5kcyBDb250ZXh0TG9va3VwUm9sZU9wdGlvbnMge1xuICAvKipcbiAgICogVGhlIGRvbWFpbiBuYW1lIGUuZy4gZXhhbXBsZS5jb20gdG8gbG9va3VwXG4gICAqL1xuICByZWFkb25seSBkb21haW5OYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRydWUgaWYgdGhlIHpvbmUgeW91IHdhbnQgdG8gZmluZCBpcyBhIHByaXZhdGUgaG9zdGVkIHpvbmVcbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IHByaXZhdGVab25lPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogVGhlIFZQQyBJRCB0byB0aGF0IHRoZSBwcml2YXRlIHpvbmUgbXVzdCBiZSBhc3NvY2lhdGVkIHdpdGhcbiAgICpcbiAgICogSWYgeW91IHByb3ZpZGUgVlBDIElEIGFuZCBwcml2YXRlWm9uZSBpcyBmYWxzZSwgdGhpcyB3aWxsIHJldHVybiBubyByZXN1bHRzXG4gICAqIGFuZCByYWlzZSBhbiBlcnJvci5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBSZXF1aXJlZCBpZiBwcml2YXRlWm9uZT10cnVlXG4gICAqL1xuICByZWFkb25seSB2cGNJZD86IHN0cmluZztcbn1cblxuLyoqXG4gKiBRdWVyeSB0byBTU00gUGFyYW1ldGVyIENvbnRleHQgUHJvdmlkZXJcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTU01QYXJhbWV0ZXJDb250ZXh0UXVlcnkgZXh0ZW5kcyBDb250ZXh0TG9va3VwUm9sZU9wdGlvbnMge1xuICAvKipcbiAgICogUGFyYW1ldGVyIG5hbWUgdG8gcXVlcnlcbiAgICovXG4gIHJlYWRvbmx5IHBhcmFtZXRlck5hbWU6IHN0cmluZztcbn1cblxuLyoqXG4gKiBRdWVyeSBpbnB1dCBmb3IgbG9va2luZyB1cCBhIFZQQ1xuICovXG5leHBvcnQgaW50ZXJmYWNlIFZwY0NvbnRleHRRdWVyeSBleHRlbmRzIENvbnRleHRMb29rdXBSb2xlT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBGaWx0ZXJzIHRvIGFwcGx5IHRvIHRoZSBWUENcbiAgICpcbiAgICogRmlsdGVyIHBhcmFtZXRlcnMgYXJlIHRoZSBzYW1lIGFzIHBhc3NlZCB0byBEZXNjcmliZVZwY3MuXG4gICAqXG4gICAqIEBzZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FXU0VDMi9sYXRlc3QvQVBJUmVmZXJlbmNlL0FQSV9EZXNjcmliZVZwY3MuaHRtbFxuICAgKi9cbiAgcmVhZG9ubHkgZmlsdGVyOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9O1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIHBvcHVsYXRlIHRoZSBzdWJuZXRHcm91cHMgZmllbGQgb2YgdGhlIGBWcGNDb250ZXh0UmVzcG9uc2VgLFxuICAgKiB3aGljaCBjb250YWlucyBwb3RlbnRpYWxseSBhc3ltbWV0cmljIHN1Ym5ldCBncm91cHMuXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByZWFkb25seSByZXR1cm5Bc3ltbWV0cmljU3VibmV0cz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIE9wdGlvbmFsIHRhZyBmb3Igc3VibmV0IGdyb3VwIG5hbWUuXG4gICAqIElmIG5vdCBwcm92aWRlZCwgd2UnbGwgbG9vayBhdCB0aGUgYXdzLWNkazpzdWJuZXQtbmFtZSB0YWcuXG4gICAqIElmIHRoZSBzdWJuZXQgZG9lcyBub3QgaGF2ZSB0aGUgc3BlY2lmaWVkIHRhZyxcbiAgICogd2UnbGwgdXNlIGl0cyB0eXBlIGFzIHRoZSBuYW1lLlxuICAgKlxuICAgKiBAZGVmYXVsdCAnYXdzLWNkazpzdWJuZXQtbmFtZSdcbiAgICovXG4gIHJlYWRvbmx5IHN1Ym5ldEdyb3VwTmFtZVRhZz86IHN0cmluZztcblxuICAvKipcbiAgICogV2hldGhlciB0byBwb3B1bGF0ZSB0aGUgYHZwbkdhdGV3YXlJZGAgZmllbGQgb2YgdGhlIGBWcGNDb250ZXh0UmVzcG9uc2VgLFxuICAgKiB3aGljaCBjb250YWlucyB0aGUgVlBOIEdhdGV3YXkgSUQsIGlmIG9uZSBleGlzdHMuIFlvdSBjYW4gZXhwbGljaXRseVxuICAgKiBkaXNhYmxlIHRoaXMgaW4gb3JkZXIgdG8gYXZvaWQgdGhlIGxvb2t1cCBpZiB5b3Uga25vdyB0aGUgVlBDIGRvZXMgbm90IGhhdmVcbiAgICogYSBWUE4gR2F0d2F5IGF0dGFjaGVkLlxuICAgKlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICByZWFkb25seSByZXR1cm5WcG5HYXRld2F5cz86IGJvb2xlYW47XG59XG5cbi8qKlxuICogUXVlcnkgdG8gZW5kcG9pbnQgc2VydmljZSBjb250ZXh0IHByb3ZpZGVyXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRW5kcG9pbnRTZXJ2aWNlQXZhaWxhYmlsaXR5Wm9uZXNDb250ZXh0UXVlcnkgZXh0ZW5kcyBDb250ZXh0TG9va3VwUm9sZU9wdGlvbnMge1xuICAvKipcbiAgICogUXVlcnkgc2VydmljZSBuYW1lXG4gICAqL1xuICByZWFkb25seSBzZXJ2aWNlTmFtZTogc3RyaW5nO1xufVxuXG4vKipcbiAqIFR5cGUgb2YgbG9hZCBiYWxhbmNlclxuICovXG5leHBvcnQgZW51bSBMb2FkQmFsYW5jZXJUeXBlIHtcbiAgLyoqXG4gICAqIE5ldHdvcmsgbG9hZCBiYWxhbmNlclxuICAgKi9cbiAgTkVUV09SSyA9ICduZXR3b3JrJyxcblxuICAvKipcbiAgICogQXBwbGljYXRpb24gbG9hZCBiYWxhbmNlclxuICAgKi9cbiAgQVBQTElDQVRJT04gPSAnYXBwbGljYXRpb24nLFxufVxuXG4vKipcbiAqIEZpbHRlcnMgZm9yIHNlbGVjdGluZyBsb2FkIGJhbGFuY2Vyc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIExvYWRCYWxhbmNlckZpbHRlciBleHRlbmRzIENvbnRleHRMb29rdXBSb2xlT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBGaWx0ZXIgbG9hZCBiYWxhbmNlcnMgYnkgdGhlaXIgdHlwZVxuICAgKi9cbiAgcmVhZG9ubHkgbG9hZEJhbGFuY2VyVHlwZTogTG9hZEJhbGFuY2VyVHlwZTtcblxuICAvKipcbiAgICogRmluZCBieSBsb2FkIGJhbGFuY2VyJ3MgQVJOXG4gICAqIEBkZWZhdWx0IC0gZG9lcyBub3Qgc2VhcmNoIGJ5IGxvYWQgYmFsYW5jZXIgYXJuXG4gICAqL1xuICByZWFkb25seSBsb2FkQmFsYW5jZXJBcm4/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIE1hdGNoIGxvYWQgYmFsYW5jZXIgdGFnc1xuICAgKiBAZGVmYXVsdCAtIGRvZXMgbm90IG1hdGNoIGxvYWQgYmFsYW5jZXJzIGJ5IHRhZ3NcbiAgICovXG4gIHJlYWRvbmx5IGxvYWRCYWxhbmNlclRhZ3M/OiBUYWdbXTtcbn1cblxuLyoqXG4gKiBRdWVyeSBpbnB1dCBmb3IgbG9va2luZyB1cCBhIGxvYWQgYmFsYW5jZXJcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBMb2FkQmFsYW5jZXJDb250ZXh0UXVlcnkgZXh0ZW5kcyBMb2FkQmFsYW5jZXJGaWx0ZXIge31cblxuLyoqXG4gKiBUaGUgcHJvdG9jb2wgZm9yIGNvbm5lY3Rpb25zIGZyb20gY2xpZW50cyB0byB0aGUgbG9hZCBiYWxhbmNlclxuICovXG5leHBvcnQgZW51bSBMb2FkQmFsYW5jZXJMaXN0ZW5lclByb3RvY29sIHtcbiAgLyoqXG4gICAqIEhUVFAgcHJvdG9jb2xcbiAgICovXG4gIEhUVFAgPSAnSFRUUCcsXG5cbiAgLyoqXG4gICAqIEhUVFBTIHByb3RvY29sXG4gICAqL1xuICBIVFRQUyA9ICdIVFRQUycsXG5cbiAgLyoqXG4gICAqIFRDUCBwcm90b2NvbFxuICAgKi9cbiAgVENQID0gJ1RDUCcsXG5cbiAgLyoqXG4gICAqIFRMUyBwcm90b2NvbFxuICAgKi9cbiAgVExTID0gJ1RMUycsXG5cbiAgLyoqXG4gICAqIFVEUCBwcm90b2NvbFxuICAgKiAqL1xuICBVRFAgPSAnVURQJyxcblxuICAvKipcbiAgICogVENQIGFuZCBVRFAgcHJvdG9jb2xcbiAgICogKi9cbiAgVENQX1VEUCA9ICdUQ1BfVURQJyxcbn1cblxuLyoqXG4gKiBRdWVyeSBpbnB1dCBmb3IgbG9va2luZyB1cCBhIGxvYWQgYmFsYW5jZXIgbGlzdGVuZXJcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBMb2FkQmFsYW5jZXJMaXN0ZW5lckNvbnRleHRRdWVyeSBleHRlbmRzIExvYWRCYWxhbmNlckZpbHRlciB7XG4gIC8qKlxuICAgKiBGaW5kIGJ5IGxpc3RlbmVyJ3MgYXJuXG4gICAqIEBkZWZhdWx0IC0gZG9lcyBub3QgZmluZCBieSBsaXN0ZW5lciBhcm5cbiAgICovXG4gIHJlYWRvbmx5IGxpc3RlbmVyQXJuPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBGaWx0ZXIgYnkgbGlzdGVuZXIgcHJvdG9jb2xcbiAgICogQGRlZmF1bHQgLSBkb2VzIG5vdCBmaWx0ZXIgYnkgbGlzdGVuZXIgcHJvdG9jb2xcbiAgICovXG4gIHJlYWRvbmx5IGxpc3RlbmVyUHJvdG9jb2w/OiBMb2FkQmFsYW5jZXJMaXN0ZW5lclByb3RvY29sO1xuXG4gIC8qKlxuICAgKiBGaWx0ZXIgbGlzdGVuZXJzIGJ5IGxpc3RlbmVyIHBvcnRcbiAgICogQGRlZmF1bHQgLSBkb2VzIG5vdCBmaWx0ZXIgYnkgYSBsaXN0ZW5lciBwb3J0XG4gICAqL1xuICByZWFkb25seSBsaXN0ZW5lclBvcnQ/OiBudW1iZXI7XG59XG5cbi8qKlxuICogUXVlcnkgaW5wdXQgZm9yIGxvb2tpbmcgdXAgYSBzZWN1cml0eSBncm91cFxuICovXG5leHBvcnQgaW50ZXJmYWNlIFNlY3VyaXR5R3JvdXBDb250ZXh0UXVlcnkgZXh0ZW5kcyBDb250ZXh0TG9va3VwUm9sZU9wdGlvbnMge1xuICAvKipcbiAgICogU2VjdXJpdHkgZ3JvdXAgaWRcbiAgICpcbiAgICogQGRlZmF1bHQgLSBOb25lXG4gICAqL1xuICByZWFkb25seSBzZWN1cml0eUdyb3VwSWQ/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFNlY3VyaXR5IGdyb3VwIG5hbWVcbiAgICpcbiAgICogQGRlZmF1bHQgLSBOb25lXG4gICAqL1xuICByZWFkb25seSBzZWN1cml0eUdyb3VwTmFtZT86IHN0cmluZztcblxuICAvKipcbiAgICogVlBDIElEXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gTm9uZVxuICAgKi9cbiAgcmVhZG9ubHkgdnBjSWQ/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogUXVlcnkgaW5wdXQgZm9yIGxvb2tpbmcgdXAgYSBLTVMgS2V5XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgS2V5Q29udGV4dFF1ZXJ5IGV4dGVuZHMgQ29udGV4dExvb2t1cFJvbGVPcHRpb25zIHtcbiAgLyoqXG4gICAqIEFsaWFzIG5hbWUgdXNlZCB0byBzZWFyY2ggdGhlIEtleVxuICAgKi9cbiAgcmVhZG9ubHkgYWxpYXNOYW1lOiBzdHJpbmc7XG59XG5cbi8qKlxuICogUXVlcnkgaW5wdXQgZm9yIHBsdWdpbnNcbiAqXG4gKiBUaGlzIGFsdGVybmF0ZSBicmFuY2ggaXMgbmVjZXNzYXJ5IGJlY2F1c2UgaXQgbmVlZHMgdG8gYmUgYWJsZSB0byBlc2NhcGUgYWxsIHR5cGUgY2hlY2tpbmdcbiAqIHdlIGRvIG9uIG9uIHRoZSBjbG91ZCBhc3NlbWJseSAtLSB3ZSBjYW5ub3Qga25vdyB0aGUgcHJvcGVydGllcyB0aGF0IHdpbGwgYmUgdXNlZCBhIHByaW9yaS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBQbHVnaW5Db250ZXh0UXVlcnkge1xuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIHBsdWdpblxuICAgKi9cbiAgcmVhZG9ubHkgcGx1Z2luTmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBBcmJpdHJhcnkgb3RoZXIgYXJndW1lbnRzIGZvciB0aGUgcGx1Z2luLlxuICAgKlxuICAgKiBUaGlzIGluZGV4IHNpZ25hdHVyZSBpcyBub3QgdXNhYmxlIGluIG5vbi1UeXBlU2NyaXB0L0phdmFTY3JpcHQgbGFuZ3VhZ2VzLlxuICAgKlxuICAgKiBAanNpaSBpZ25vcmVcbiAgICovXG4gIFtrZXk6IHN0cmluZ106IGFueTtcbn1cblxuZXhwb3J0IHR5cGUgQ29udGV4dFF1ZXJ5UHJvcGVydGllcyA9XG4gIHwgQW1pQ29udGV4dFF1ZXJ5XG4gIHwgQXZhaWxhYmlsaXR5Wm9uZXNDb250ZXh0UXVlcnlcbiAgfCBIb3N0ZWRab25lQ29udGV4dFF1ZXJ5XG4gIHwgU1NNUGFyYW1ldGVyQ29udGV4dFF1ZXJ5XG4gIHwgVnBjQ29udGV4dFF1ZXJ5XG4gIHwgRW5kcG9pbnRTZXJ2aWNlQXZhaWxhYmlsaXR5Wm9uZXNDb250ZXh0UXVlcnlcbiAgfCBMb2FkQmFsYW5jZXJDb250ZXh0UXVlcnlcbiAgfCBMb2FkQmFsYW5jZXJMaXN0ZW5lckNvbnRleHRRdWVyeVxuICB8IFNlY3VyaXR5R3JvdXBDb250ZXh0UXVlcnlcbiAgfCBLZXlDb250ZXh0UXVlcnlcbiAgfCBQbHVnaW5Db250ZXh0UXVlcnk7XG4iXX0=","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./schema\"), exports);\n__exportStar(require(\"./metadata-schema\"), exports);\n__exportStar(require(\"./artifact-schema\"), exports);\n__exportStar(require(\"./context-queries\"), exports);\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsMkNBQXlCO0FBQ3pCLG9EQUFrQztBQUNsQyxvREFBa0M7QUFDbEMsb0RBQWtDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9zY2hlbWEnO1xuZXhwb3J0ICogZnJvbSAnLi9tZXRhZGF0YS1zY2hlbWEnO1xuZXhwb3J0ICogZnJvbSAnLi9hcnRpZmFjdC1zY2hlbWEnO1xuZXhwb3J0ICogZnJvbSAnLi9jb250ZXh0LXF1ZXJpZXMnO1xuIl19","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ArtifactMetadataEntryType = void 0;\n/**\n * Type of artifact metadata entry.\n */\nvar ArtifactMetadataEntryType;\n(function (ArtifactMetadataEntryType) {\n /**\n * Asset in metadata.\n */\n ArtifactMetadataEntryType[\"ASSET\"] = \"aws:cdk:asset\";\n /**\n * Metadata key used to print INFO-level messages by the toolkit when an app is syntheized.\n */\n ArtifactMetadataEntryType[\"INFO\"] = \"aws:cdk:info\";\n /**\n * Metadata key used to print WARNING-level messages by the toolkit when an app is syntheized.\n */\n ArtifactMetadataEntryType[\"WARN\"] = \"aws:cdk:warning\";\n /**\n * Metadata key used to print ERROR-level messages by the toolkit when an app is syntheized.\n */\n ArtifactMetadataEntryType[\"ERROR\"] = \"aws:cdk:error\";\n /**\n * Represents the CloudFormation logical ID of a resource at a certain path.\n */\n ArtifactMetadataEntryType[\"LOGICAL_ID\"] = \"aws:cdk:logicalId\";\n /**\n * Represents tags of a stack.\n */\n ArtifactMetadataEntryType[\"STACK_TAGS\"] = \"aws:cdk:stack-tags\";\n})(ArtifactMetadataEntryType || (exports.ArtifactMetadataEntryType = ArtifactMetadataEntryType = {}));\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWV0YWRhdGEtc2NoZW1hLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsibWV0YWRhdGEtc2NoZW1hLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQStRQTs7R0FFRztBQUNILElBQVkseUJBOEJYO0FBOUJELFdBQVkseUJBQXlCO0lBQ25DOztPQUVHO0lBQ0gsb0RBQXVCLENBQUE7SUFFdkI7O09BRUc7SUFDSCxrREFBcUIsQ0FBQTtJQUVyQjs7T0FFRztJQUNILHFEQUF3QixDQUFBO0lBRXhCOztPQUVHO0lBQ0gsb0RBQXVCLENBQUE7SUFFdkI7O09BRUc7SUFDSCw2REFBZ0MsQ0FBQTtJQUVoQzs7T0FFRztJQUNILDhEQUFpQyxDQUFBO0FBQ25DLENBQUMsRUE5QlcseUJBQXlCLHlDQUF6Qix5QkFBeUIsUUE4QnBDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDb21tb24gcHJvcGVydGllcyBmb3IgYXNzZXQgbWV0YWRhdGEuXG4gKi9cbmludGVyZmFjZSBCYXNlQXNzZXRNZXRhZGF0YUVudHJ5IHtcbiAgLyoqXG4gICAqIFJlcXVlc3RlZCBwYWNrYWdpbmcgc3R5bGVcbiAgICovXG4gIHJlYWRvbmx5IHBhY2thZ2luZzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBMb2dpY2FsIGlkZW50aWZpZXIgZm9yIHRoZSBhc3NldFxuICAgKi9cbiAgcmVhZG9ubHkgaWQ6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIGhhc2ggb2YgdGhlIGFzc2V0IHNvdXJjZS5cbiAgICovXG4gIHJlYWRvbmx5IHNvdXJjZUhhc2g6IHN0cmluZztcblxuICAvKipcbiAgICogUGF0aCBvbiBkaXNrIHRvIHRoZSBhc3NldFxuICAgKi9cbiAgcmVhZG9ubHkgcGF0aDogc3RyaW5nO1xufVxuXG4vKipcbiAqIE1ldGFkYXRhIEVudHJ5IHNwZWMgZm9yIGZpbGVzLlxuICpcbiAqIEBleGFtcGxlXG4gKiBjb25zdCBlbnRyeSA9IHtcbiAqICAgcGFja2FnaW5nOiAnZmlsZScsXG4gKiAgIHMzQnVja2V0UGFyYW1ldGVyOiAnYnVja2V0LXBhcmFtZXRlcicsXG4gKiAgIHMzS2V5UGFyYW1lbnRlcjogJ2tleS1wYXJhbWV0ZXInLFxuICogICBhcnRpZmFjdEhhc2hQYXJhbWV0ZXI6ICdoYXNoLXBhcmFtZXRlcicsXG4gKiB9XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRmlsZUFzc2V0TWV0YWRhdGFFbnRyeSBleHRlbmRzIEJhc2VBc3NldE1ldGFkYXRhRW50cnkge1xuICAvKipcbiAgICogUmVxdWVzdGVkIHBhY2thZ2luZyBzdHlsZVxuICAgKi9cbiAgcmVhZG9ubHkgcGFja2FnaW5nOiAnemlwJyB8ICdmaWxlJztcblxuICAvKipcbiAgICogTmFtZSBvZiBwYXJhbWV0ZXIgd2hlcmUgUzMgYnVja2V0IHNob3VsZCBiZSBwYXNzZWQgaW5cbiAgICovXG4gIHJlYWRvbmx5IHMzQnVja2V0UGFyYW1ldGVyOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIE5hbWUgb2YgcGFyYW1ldGVyIHdoZXJlIFMzIGtleSBzaG91bGQgYmUgcGFzc2VkIGluXG4gICAqL1xuICByZWFkb25seSBzM0tleVBhcmFtZXRlcjogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgcGFyYW1ldGVyIHdoZXJlIHRoZSBoYXNoIG9mIHRoZSBidW5kbGVkIGFzc2V0IHNob3VsZCBiZSBwYXNzZWQgaW4uXG4gICAqL1xuICByZWFkb25seSBhcnRpZmFjdEhhc2hQYXJhbWV0ZXI6IHN0cmluZztcbn1cblxuLyoqXG4gKiBNZXRhZGF0YSBFbnRyeSBzcGVjIGZvciBzdGFjayB0YWcuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVGFnIHtcbiAgLyoqXG4gICAqIFRhZyBrZXkuXG4gICAqXG4gICAqIChJbiB0aGUgYWN0dWFsIGZpbGUgb24gZGlzayB0aGlzIHdpbGwgYmUgY2FzZWQgYXMgXCJLZXlcIiwgYW5kIHRoZSBzdHJ1Y3R1cmUgaXNcbiAgICogcGF0Y2hlZCB0byBtYXRjaCB0aGlzIHN0cnVjdHVyZSB1cG9uIGxvYWRpbmc6XG4gICAqIGh0dHBzOi8vZ2l0aHViLmNvbS9hd3MvYXdzLWNkay9ibG9iLzRhYWRhYTc3OWI0OGYzNTgzOGNjY2Q0ZTI1MTA3YjIzMzhmMDU1NDcvcGFja2FnZXMvJTQwYXdzLWNkay9jbG91ZC1hc3NlbWJseS1zY2hlbWEvbGliL21hbmlmZXN0LnRzI0wxMzcpXG4gICAqL1xuICByZWFkb25seSBrZXk6IHN0cmluZztcblxuICAvKipcbiAgICogVGFnIHZhbHVlLlxuICAgKlxuICAgKiAoSW4gdGhlIGFjdHVhbCBmaWxlIG9uIGRpc2sgdGhpcyB3aWxsIGJlIGNhc2VkIGFzIFwiVmFsdWVcIiwgYW5kIHRoZSBzdHJ1Y3R1cmUgaXNcbiAgICogcGF0Y2hlZCB0byBtYXRjaCB0aGlzIHN0cnVjdHVyZSB1cG9uIGxvYWRpbmc6XG4gICAqIGh0dHBzOi8vZ2l0aHViLmNvbS9hd3MvYXdzLWNkay9ibG9iLzRhYWRhYTc3OWI0OGYzNTgzOGNjY2Q0ZTI1MTA3YjIzMzhmMDU1NDcvcGFja2FnZXMvJTQwYXdzLWNkay9jbG91ZC1hc3NlbWJseS1zY2hlbWEvbGliL21hbmlmZXN0LnRzI0wxMzcpXG4gICAqL1xuICByZWFkb25seSB2YWx1ZTogc3RyaW5nO1xufVxuXG4vKipcbiAqIE9wdGlvbnMgZm9yIGNvbmZpZ3VyaW5nIHRoZSBEb2NrZXIgY2FjaGUgYmFja2VuZFxuICovXG5leHBvcnQgaW50ZXJmYWNlIENvbnRhaW5lckltYWdlQXNzZXRDYWNoZU9wdGlvbiB7XG4gIC8qKlxuICAgKiBUaGUgdHlwZSBvZiBjYWNoZSB0byB1c2UuXG4gICAqIFJlZmVyIHRvIGh0dHBzOi8vZG9jcy5kb2NrZXIuY29tL2J1aWxkL2NhY2hlL2JhY2tlbmRzLyBmb3IgZnVsbCBsaXN0IG9mIGJhY2tlbmRzLlxuICAgKiBAZGVmYXVsdCAtIHVuc3BlY2lmaWVkXG4gICAqXG4gICAqIEBleGFtcGxlICdyZWdpc3RyeSdcbiAgICovXG4gIHJlYWRvbmx5IHR5cGU6IHN0cmluZztcbiAgLyoqXG4gICAqIEFueSBwYXJhbWV0ZXJzIHRvIHBhc3MgaW50byB0aGUgZG9ja2VyIGNhY2hlIGJhY2tlbmQgY29uZmlndXJhdGlvbi5cbiAgICogUmVmZXIgdG8gaHR0cHM6Ly9kb2NzLmRvY2tlci5jb20vYnVpbGQvY2FjaGUvYmFja2VuZHMvIGZvciBjYWNoZSBiYWNrZW5kIGNvbmZpZ3VyYXRpb24uXG4gICAqIEBkZWZhdWx0IHt9IE5vIG9wdGlvbnMgcHJvdmlkZWRcbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogZGVjbGFyZSBjb25zdCBicmFuY2g6IHN0cmluZztcbiAgICpcbiAgICogY29uc3QgcGFyYW1zID0ge1xuICAgKiAgIHJlZjogYDEyMzQ1Njc4LmRrci5lY3IudXMtd2VzdC0yLmFtYXpvbmF3cy5jb20vY2FjaGU6JHticmFuY2h9YCxcbiAgICogICBtb2RlOiBcIm1heFwiLFxuICAgKiB9O1xuICAgKi9cbiAgcmVhZG9ubHkgcGFyYW1zPzogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfTtcbn1cblxuLyoqXG4gKiBNZXRhZGF0YSBFbnRyeSBzcGVjIGZvciBjb250YWluZXIgaW1hZ2VzLlxuICpcbiAqIEBleGFtcGxlXG4gKiBjb25zdCBlbnRyeSA9IHtcbiAqICAgcGFja2FnaW5nOiAnY29udGFpbmVyLWltYWdlJyxcbiAqICAgcmVwb3NpdG9yeU5hbWU6ICdyZXBvc2l0b3J5LW5hbWUnLFxuICogICBpbWFnZVRhZzogJ3RhZycsXG4gKiB9XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ29udGFpbmVySW1hZ2VBc3NldE1ldGFkYXRhRW50cnkgZXh0ZW5kcyBCYXNlQXNzZXRNZXRhZGF0YUVudHJ5IHtcbiAgLyoqXG4gICAqIFR5cGUgb2YgYXNzZXRcbiAgICovXG4gIHJlYWRvbmx5IHBhY2thZ2luZzogJ2NvbnRhaW5lci1pbWFnZSc7XG5cbiAgLyoqXG4gICAqIEVDUiBSZXBvc2l0b3J5IG5hbWUgYW5kIHJlcG8gZGlnZXN0IChzZXBhcmF0ZWQgYnkgXCJAc2hhMjU2OlwiKSB3aGVyZSB0aGlzXG4gICAqIGltYWdlIGlzIHN0b3JlZC5cbiAgICpcbiAgICogQGRlZmF1bHQgdW5kZWZpbmVkIElmIG5vdCBzcGVjaWZpZWQsIGByZXBvc2l0b3J5TmFtZWAgYW5kIGBpbWFnZVRhZ2AgYXJlXG4gICAqIHJlcXVpcmVkIGJlY2F1c2Ugb3RoZXJ3aXNlIGhvdyB3aWxsIHRoZSBzdGFjayBrbm93IHdoZXJlIHRvIGZpbmQgdGhlIGFzc2V0LFxuICAgKiBoYT9cbiAgICogQGRlcHJlY2F0ZWQgc3BlY2lmeSBgcmVwb3NpdG9yeU5hbWVgIGFuZCBgaW1hZ2VUYWdgIGluc3RlYWQsIGFuZCB0aGVuIHlvdVxuICAgKiBrbm93IHdoZXJlIHRoZSBpbWFnZSB3aWxsIGdvLlxuICAgKi9cbiAgcmVhZG9ubHkgaW1hZ2VOYW1lUGFyYW1ldGVyPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBFQ1IgcmVwb3NpdG9yeSBuYW1lLCBpZiBvbWl0dGVkIGEgZGVmYXVsdCBuYW1lIGJhc2VkIG9uIHRoZSBhc3NldCdzIElEIGlzXG4gICAqIHVzZWQgaW5zdGVhZC4gU3BlY2lmeSB0aGlzIHByb3BlcnR5IGlmIHlvdSBuZWVkIHRvIHN0YXRpY2FsbHkgYWRkcmVzcyB0aGVcbiAgICogaW1hZ2UsIGUuZy4gZnJvbSBhIEt1YmVybmV0ZXMgUG9kLiBOb3RlLCB0aGlzIGlzIG9ubHkgdGhlIHJlcG9zaXRvcnkgbmFtZSxcbiAgICogd2l0aG91dCB0aGUgcmVnaXN0cnkgYW5kIHRoZSB0YWcgcGFydHMuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gdGhpcyBwYXJhbWV0ZXIgaXMgUkVRVUlSRUQgYWZ0ZXIgMS4yMS4wXG4gICAqL1xuICByZWFkb25seSByZXBvc2l0b3J5TmFtZT86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIGRvY2tlciBpbWFnZSB0YWcgdG8gdXNlIGZvciB0YWdnaW5nIHB1c2hlZCBpbWFnZXMuIFRoaXMgZmllbGQgaXNcbiAgICogcmVxdWlyZWQgaWYgYGltYWdlUGFyYW1ldGVyTmFtZWAgaXMgb21taXRlZCAob3RoZXJ3aXNlLCB0aGUgYXBwIHdvbid0IGJlXG4gICAqIGFibGUgdG8gZmluZCB0aGUgaW1hZ2UpLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIHRoaXMgcGFyYW1ldGVyIGlzIFJFUVVJUkVEIGFmdGVyIDEuMjEuMFxuICAgKi9cbiAgcmVhZG9ubHkgaW1hZ2VUYWc/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEJ1aWxkIGFyZ3MgdG8gcGFzcyB0byB0aGUgYGRvY2tlciBidWlsZGAgY29tbWFuZFxuICAgKlxuICAgKiBAZGVmYXVsdCBubyBidWlsZCBhcmdzIGFyZSBwYXNzZWRcbiAgICovXG4gIHJlYWRvbmx5IGJ1aWxkQXJncz86IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH07XG5cbiAgLyoqXG4gICAqIFNTSCBhZ2VudCBzb2NrZXQgb3Iga2V5cyB0byBwYXNzIHRvIHRoZSBgZG9ja2VyIGJ1aWxkYCBjb21tYW5kXG4gICAqXG4gICAqIEBkZWZhdWx0IG5vIHNzaCBhcmcgaXMgcGFzc2VkXG4gICAqL1xuICByZWFkb25seSBidWlsZFNzaD86IHN0cmluZztcblxuICAvKipcbiAgICogQnVpbGQgc2VjcmV0cyB0byBwYXNzIHRvIHRoZSBgZG9ja2VyIGJ1aWxkYCBjb21tYW5kXG4gICAqXG4gICAqIEBkZWZhdWx0IG5vIGJ1aWxkIHNlY3JldHMgYXJlIHBhc3NlZFxuICAgKi9cbiAgcmVhZG9ubHkgYnVpbGRTZWNyZXRzPzogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfTtcblxuICAvKipcbiAgICogRG9ja2VyIHRhcmdldCB0byBidWlsZCB0b1xuICAgKlxuICAgKiBAZGVmYXVsdCBubyBidWlsZCB0YXJnZXRcbiAgICovXG4gIHJlYWRvbmx5IHRhcmdldD86IHN0cmluZztcblxuICAvKipcbiAgICogUGF0aCB0byB0aGUgRG9ja2VyZmlsZSAocmVsYXRpdmUgdG8gdGhlIGRpcmVjdG9yeSkuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gbm8gZmlsZSBpcyBwYXNzZWRcbiAgICovXG4gIHJlYWRvbmx5IGZpbGU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIE5ldHdvcmtpbmcgbW9kZSBmb3IgdGhlIFJVTiBjb21tYW5kcyBkdXJpbmcgYnVpbGQuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gbm8gbmV0d29ya2luZyBtb2RlIHNwZWNpZmllZFxuICAgKi9cbiAgcmVhZG9ubHkgbmV0d29ya01vZGU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFBsYXRmb3JtIHRvIGJ1aWxkIGZvci4gX1JlcXVpcmVzIERvY2tlciBCdWlsZHhfLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIGN1cnJlbnQgbWFjaGluZSBwbGF0Zm9ybVxuICAgKi9cbiAgcmVhZG9ubHkgcGxhdGZvcm0/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIE91dHB1dHMgdG8gcGFzcyB0byB0aGUgYGRvY2tlciBidWlsZGAgY29tbWFuZC5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBubyBvdXRwdXRzIGFyZSBwYXNzZWQgdG8gdGhlIGJ1aWxkIGNvbW1hbmQgKGRlZmF1bHQgb3V0cHV0cyBhcmUgdXNlZClcbiAgICogQHNlZSBodHRwczovL2RvY3MuZG9ja2VyLmNvbS9lbmdpbmUvcmVmZXJlbmNlL2NvbW1hbmRsaW5lL2J1aWxkLyNjdXN0b20tYnVpbGQtb3V0cHV0c1xuICAgKi9cbiAgcmVhZG9ubHkgb3V0cHV0cz86IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBDYWNoZSBmcm9tIG9wdGlvbnMgdG8gcGFzcyB0byB0aGUgYGRvY2tlciBidWlsZGAgY29tbWFuZC5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBubyBjYWNoZSBmcm9tIG9wdGlvbnMgYXJlIHBhc3NlZCB0byB0aGUgYnVpbGQgY29tbWFuZFxuICAgKiBAc2VlIGh0dHBzOi8vZG9jcy5kb2NrZXIuY29tL2J1aWxkL2NhY2hlL2JhY2tlbmRzL1xuICAgKi9cbiAgcmVhZG9ubHkgY2FjaGVGcm9tPzogQ29udGFpbmVySW1hZ2VBc3NldENhY2hlT3B0aW9uW107XG5cbiAgLyoqXG4gICAqIENhY2hlIHRvIG9wdGlvbnMgdG8gcGFzcyB0byB0aGUgYGRvY2tlciBidWlsZGAgY29tbWFuZC5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBubyBjYWNoZSB0byBvcHRpb25zIGFyZSBwYXNzZWQgdG8gdGhlIGJ1aWxkIGNvbW1hbmRcbiAgICogQHNlZSBodHRwczovL2RvY3MuZG9ja2VyLmNvbS9idWlsZC9jYWNoZS9iYWNrZW5kcy9cbiAgICovXG4gIHJlYWRvbmx5IGNhY2hlVG8/OiBDb250YWluZXJJbWFnZUFzc2V0Q2FjaGVPcHRpb247XG5cbiAgLyoqXG4gICAqIERpc2FibGUgdGhlIGNhY2hlIGFuZCBwYXNzIGAtLW5vLWNhY2hlYCB0byB0aGUgYGRvY2tlciBidWlsZGAgY29tbWFuZC5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBjYWNoZSBpcyB1c2VkXG4gICAqL1xuICByZWFkb25seSBjYWNoZURpc2FibGVkPzogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBAc2VlIEFydGlmYWN0TWV0YWRhdGFFbnRyeVR5cGUuQVNTRVRcbiAqL1xuZXhwb3J0IHR5cGUgQXNzZXRNZXRhZGF0YUVudHJ5ID0gRmlsZUFzc2V0TWV0YWRhdGFFbnRyeSB8IENvbnRhaW5lckltYWdlQXNzZXRNZXRhZGF0YUVudHJ5O1xuXG4vLyBUeXBlIGFsaWFzZXMgZm9yIG1ldGFkYXRhIGVudHJpZXMuXG4vLyBVc2VkIHNpbXBseSB0byBhc3NpZ24gbmFtZXMgdG8gZGF0YSB0eXBlcyBmb3IgbW9yZSBjbGFyaXR5LlxuXG4vKipcbiAqIEBzZWUgQXJ0aWZhY3RNZXRhZGF0YUVudHJ5VHlwZS5JTkZPXG4gKiBAc2VlIEFydGlmYWN0TWV0YWRhdGFFbnRyeVR5cGUuV0FSTlxuICogQHNlZSBBcnRpZmFjdE1ldGFkYXRhRW50cnlUeXBlLkVSUk9SXG4gKi9cbmV4cG9ydCB0eXBlIExvZ01lc3NhZ2VNZXRhZGF0YUVudHJ5ID0gc3RyaW5nO1xuXG4vKipcbiAqIEBzZWUgQXJ0aWZhY3RNZXRhZGF0YUVudHJ5VHlwZS5MT0dJQ0FMX0lEXG4gKi9cbmV4cG9ydCB0eXBlIExvZ2ljYWxJZE1ldGFkYXRhRW50cnkgPSBzdHJpbmc7XG5cbi8qKlxuICogQHNlZSBBcnRpZmFjdE1ldGFkYXRhRW50cnlUeXBlLlNUQUNLX1RBR1NcbiAqL1xuZXhwb3J0IHR5cGUgU3RhY2tUYWdzTWV0YWRhdGFFbnRyeSA9IFRhZ1tdO1xuXG4vKipcbiAqIFVuaW9uIHR5cGUgZm9yIGFsbCBtZXRhZGF0YSBlbnRyaWVzIHRoYXQgbWlnaHQgZXhpc3QgaW4gdGhlIG1hbmlmZXN0LlxuICovXG5leHBvcnQgdHlwZSBNZXRhZGF0YUVudHJ5RGF0YSA9XG4gIHwgQXNzZXRNZXRhZGF0YUVudHJ5XG4gIHwgTG9nTWVzc2FnZU1ldGFkYXRhRW50cnlcbiAgfCBMb2dpY2FsSWRNZXRhZGF0YUVudHJ5XG4gIHwgU3RhY2tUYWdzTWV0YWRhdGFFbnRyeTtcblxuLyoqXG4gKiBUeXBlIG9mIGFydGlmYWN0IG1ldGFkYXRhIGVudHJ5LlxuICovXG5leHBvcnQgZW51bSBBcnRpZmFjdE1ldGFkYXRhRW50cnlUeXBlIHtcbiAgLyoqXG4gICAqIEFzc2V0IGluIG1ldGFkYXRhLlxuICAgKi9cbiAgQVNTRVQgPSAnYXdzOmNkazphc3NldCcsXG5cbiAgLyoqXG4gICAqIE1ldGFkYXRhIGtleSB1c2VkIHRvIHByaW50IElORk8tbGV2ZWwgbWVzc2FnZXMgYnkgdGhlIHRvb2xraXQgd2hlbiBhbiBhcHAgaXMgc3ludGhlaXplZC5cbiAgICovXG4gIElORk8gPSAnYXdzOmNkazppbmZvJyxcblxuICAvKipcbiAgICogTWV0YWRhdGEga2V5IHVzZWQgdG8gcHJpbnQgV0FSTklORy1sZXZlbCBtZXNzYWdlcyBieSB0aGUgdG9vbGtpdCB3aGVuIGFuIGFwcCBpcyBzeW50aGVpemVkLlxuICAgKi9cbiAgV0FSTiA9ICdhd3M6Y2RrOndhcm5pbmcnLFxuXG4gIC8qKlxuICAgKiBNZXRhZGF0YSBrZXkgdXNlZCB0byBwcmludCBFUlJPUi1sZXZlbCBtZXNzYWdlcyBieSB0aGUgdG9vbGtpdCB3aGVuIGFuIGFwcCBpcyBzeW50aGVpemVkLlxuICAgKi9cbiAgRVJST1IgPSAnYXdzOmNkazplcnJvcicsXG5cbiAgLyoqXG4gICAqIFJlcHJlc2VudHMgdGhlIENsb3VkRm9ybWF0aW9uIGxvZ2ljYWwgSUQgb2YgYSByZXNvdXJjZSBhdCBhIGNlcnRhaW4gcGF0aC5cbiAgICovXG4gIExPR0lDQUxfSUQgPSAnYXdzOmNkazpsb2dpY2FsSWQnLFxuXG4gIC8qKlxuICAgKiBSZXByZXNlbnRzIHRhZ3Mgb2YgYSBzdGFjay5cbiAgICovXG4gIFNUQUNLX1RBR1MgPSAnYXdzOmNkazpzdGFjay10YWdzJyxcbn1cblxuLyoqXG4gKiBBIG1ldGFkYXRhIGVudHJ5IGluIGEgY2xvdWQgYXNzZW1ibHkgYXJ0aWZhY3QuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTWV0YWRhdGFFbnRyeSB7XG4gIC8qKlxuICAgKiBUaGUgdHlwZSBvZiB0aGUgbWV0YWRhdGEgZW50cnkuXG4gICAqL1xuICByZWFkb25seSB0eXBlOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBkYXRhLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIG5vIGRhdGEuXG4gICAqL1xuICByZWFkb25seSBkYXRhPzogTWV0YWRhdGFFbnRyeURhdGE7XG5cbiAgLyoqXG4gICAqIEEgc3RhY2sgdHJhY2UgZm9yIHdoZW4gdGhlIGVudHJ5IHdhcyBjcmVhdGVkLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIG5vIHRyYWNlLlxuICAgKi9cbiAgcmVhZG9ubHkgdHJhY2U/OiBzdHJpbmdbXTtcbn1cbiJdfQ==","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ArtifactType = void 0;\n/**\n * Type of cloud artifact.\n */\nvar ArtifactType;\n(function (ArtifactType) {\n /**\n * Stub required because of JSII.\n */\n ArtifactType[\"NONE\"] = \"none\";\n /**\n * The artifact is an AWS CloudFormation stack.\n */\n ArtifactType[\"AWS_CLOUDFORMATION_STACK\"] = \"aws:cloudformation:stack\";\n /**\n * The artifact contains the CDK application's construct tree.\n */\n ArtifactType[\"CDK_TREE\"] = \"cdk:tree\";\n /**\n * Manifest for all assets in the Cloud Assembly\n */\n ArtifactType[\"ASSET_MANIFEST\"] = \"cdk:asset-manifest\";\n /**\n * Nested Cloud Assembly\n */\n ArtifactType[\"NESTED_CLOUD_ASSEMBLY\"] = \"cdk:cloud-assembly\";\n})(ArtifactType || (exports.ArtifactType = ArtifactType = {}));\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NoZW1hLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsic2NoZW1hLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUlBOztHQUVHO0FBQ0gsSUFBWSxZQXlCWDtBQXpCRCxXQUFZLFlBQVk7SUFDdEI7O09BRUc7SUFDSCw2QkFBYSxDQUFBO0lBRWI7O09BRUc7SUFDSCxxRUFBcUQsQ0FBQTtJQUVyRDs7T0FFRztJQUNILHFDQUFxQixDQUFBO0lBRXJCOztPQUVHO0lBQ0gscURBQXFDLENBQUE7SUFFckM7O09BRUc7SUFDSCw0REFBNEMsQ0FBQTtBQUM5QyxDQUFDLEVBekJXLFlBQVksNEJBQVosWUFBWSxRQXlCdkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBcnRpZmFjdFByb3BlcnRpZXMgfSBmcm9tICcuL2FydGlmYWN0LXNjaGVtYSc7XG5pbXBvcnQgeyBDb250ZXh0UHJvdmlkZXIsIENvbnRleHRRdWVyeVByb3BlcnRpZXMgfSBmcm9tICcuL2NvbnRleHQtcXVlcmllcyc7XG5pbXBvcnQgeyBNZXRhZGF0YUVudHJ5IH0gZnJvbSAnLi9tZXRhZGF0YS1zY2hlbWEnO1xuXG4vKipcbiAqIFR5cGUgb2YgY2xvdWQgYXJ0aWZhY3QuXG4gKi9cbmV4cG9ydCBlbnVtIEFydGlmYWN0VHlwZSB7XG4gIC8qKlxuICAgKiBTdHViIHJlcXVpcmVkIGJlY2F1c2Ugb2YgSlNJSS5cbiAgICovXG4gIE5PTkUgPSAnbm9uZScsIC8vIHJlcXVpcmVkIGR1ZSB0byBhIGpzaWkgYnVnXG5cbiAgLyoqXG4gICAqIFRoZSBhcnRpZmFjdCBpcyBhbiBBV1MgQ2xvdWRGb3JtYXRpb24gc3RhY2suXG4gICAqL1xuICBBV1NfQ0xPVURGT1JNQVRJT05fU1RBQ0sgPSAnYXdzOmNsb3VkZm9ybWF0aW9uOnN0YWNrJyxcblxuICAvKipcbiAgICogVGhlIGFydGlmYWN0IGNvbnRhaW5zIHRoZSBDREsgYXBwbGljYXRpb24ncyBjb25zdHJ1Y3QgdHJlZS5cbiAgICovXG4gIENES19UUkVFID0gJ2Nkazp0cmVlJyxcblxuICAvKipcbiAgICogTWFuaWZlc3QgZm9yIGFsbCBhc3NldHMgaW4gdGhlIENsb3VkIEFzc2VtYmx5XG4gICAqL1xuICBBU1NFVF9NQU5JRkVTVCA9ICdjZGs6YXNzZXQtbWFuaWZlc3QnLFxuXG4gIC8qKlxuICAgKiBOZXN0ZWQgQ2xvdWQgQXNzZW1ibHlcbiAgICovXG4gIE5FU1RFRF9DTE9VRF9BU1NFTUJMWSA9ICdjZGs6Y2xvdWQtYXNzZW1ibHknLFxufVxuXG4vKipcbiAqIEluZm9ybWF0aW9uIGFib3V0IHRoZSBhcHBsaWNhdGlvbidzIHJ1bnRpbWUgY29tcG9uZW50cy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSdW50aW1lSW5mbyB7XG4gIC8qKlxuICAgKiBUaGUgbGlzdCBvZiBsaWJyYXJpZXMgbG9hZGVkIGluIHRoZSBhcHBsaWNhdGlvbiwgYXNzb2NpYXRlZCB3aXRoIHRoZWlyIHZlcnNpb25zLlxuICAgKi9cbiAgcmVhZG9ubHkgbGlicmFyaWVzOiB7IFtuYW1lOiBzdHJpbmddOiBzdHJpbmcgfTtcbn1cblxuLyoqXG4gKiBSZXByZXNlbnRzIGEgbWlzc2luZyBwaWVjZSBvZiBjb250ZXh0LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIE1pc3NpbmdDb250ZXh0IHtcbiAgLyoqXG4gICAqIFRoZSBtaXNzaW5nIGNvbnRleHQga2V5LlxuICAgKi9cbiAgcmVhZG9ubHkga2V5OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBwcm92aWRlciBmcm9tIHdoaWNoIHdlIGV4cGVjdCB0aGlzIGNvbnRleHQga2V5IHRvIGJlIG9idGFpbmVkLlxuICAgKi9cbiAgcmVhZG9ubHkgcHJvdmlkZXI6IENvbnRleHRQcm92aWRlcjtcblxuICAvKipcbiAgICogQSBzZXQgb2YgcHJvdmlkZXItc3BlY2lmaWMgb3B0aW9ucy5cbiAgICovXG4gIHJlYWRvbmx5IHByb3BzOiBDb250ZXh0UXVlcnlQcm9wZXJ0aWVzO1xufVxuXG4vKipcbiAqIEEgbWFuaWZlc3QgZm9yIGEgc2luZ2xlIGFydGlmYWN0IHdpdGhpbiB0aGUgY2xvdWQgYXNzZW1ibHkuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQXJ0aWZhY3RNYW5pZmVzdCB7XG4gIC8qKlxuICAgKiBUaGUgdHlwZSBvZiBhcnRpZmFjdC5cbiAgICovXG4gIHJlYWRvbmx5IHR5cGU6IEFydGlmYWN0VHlwZTtcblxuICAvKipcbiAgICogVGhlIGVudmlyb25tZW50IGludG8gd2hpY2ggdGhpcyBhcnRpZmFjdCBpcyBkZXBsb3llZC5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBubyBlbnZyaW9ubWVudC5cbiAgICovXG4gIHJlYWRvbmx5IGVudmlyb25tZW50Pzogc3RyaW5nOyAvLyBmb3JtYXQ6IGF3czovL2FjY291bnQvcmVnaW9uXG5cbiAgLyoqXG4gICAqIEFzc29jaWF0ZWQgbWV0YWRhdGEuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gbm8gbWV0YWRhdGEuXG4gICAqL1xuICByZWFkb25seSBtZXRhZGF0YT86IHsgW3BhdGg6IHN0cmluZ106IE1ldGFkYXRhRW50cnlbXSB9O1xuXG4gIC8qKlxuICAgKiBJRHMgb2YgYXJ0aWZhY3RzIHRoYXQgbXVzdCBiZSBkZXBsb3llZCBiZWZvcmUgdGhpcyBhcnRpZmFjdC5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBubyBkZXBlbmRlbmNpZXMuXG4gICAqL1xuICByZWFkb25seSBkZXBlbmRlbmNpZXM/OiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogVGhlIHNldCBvZiBwcm9wZXJ0aWVzIGZvciB0aGlzIGFydGlmYWN0IChkZXBlbmRzIG9uIHR5cGUpXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gbm8gcHJvcGVydGllcy5cbiAgICovXG4gIHJlYWRvbmx5IHByb3BlcnRpZXM/OiBBcnRpZmFjdFByb3BlcnRpZXM7XG5cbiAgLyoqXG4gICAqIEEgc3RyaW5nIHRoYXQgcmVwcmVzZW50cyB0aGlzIGFydGlmYWN0LiBTaG91bGQgb25seSBiZSB1c2VkIGluIHVzZXIgaW50ZXJmYWNlcy5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBubyBkaXNwbGF5IG5hbWVcbiAgICovXG4gIHJlYWRvbmx5IGRpc3BsYXlOYW1lPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIEEgbWFuaWZlc3Qgd2hpY2ggZGVzY3JpYmVzIHRoZSBjbG91ZCBhc3NlbWJseS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBc3NlbWJseU1hbmlmZXN0IHtcbiAgLyoqXG4gICAqIFByb3RvY29sIHZlcnNpb25cbiAgICovXG4gIHJlYWRvbmx5IHZlcnNpb246IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHNldCBvZiBhcnRpZmFjdHMgaW4gdGhpcyBhc3NlbWJseS5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBubyBhcnRpZmFjdHMuXG4gICAqL1xuICByZWFkb25seSBhcnRpZmFjdHM/OiB7IFtpZDogc3RyaW5nXTogQXJ0aWZhY3RNYW5pZmVzdCB9O1xuXG4gIC8qKlxuICAgKiBNaXNzaW5nIGNvbnRleHQgaW5mb3JtYXRpb24uIElmIHRoaXMgZmllbGQgaGFzIHZhbHVlcywgaXQgbWVhbnMgdGhhdCB0aGVcbiAgICogY2xvdWQgYXNzZW1ibHkgaXMgbm90IGNvbXBsZXRlIGFuZCBzaG91bGQgbm90IGJlIGRlcGxveWVkLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIG5vIG1pc3NpbmcgY29udGV4dC5cbiAgICovXG4gIHJlYWRvbmx5IG1pc3Npbmc/OiBNaXNzaW5nQ29udGV4dFtdO1xuXG4gIC8qKlxuICAgKiBSdW50aW1lIGluZm9ybWF0aW9uLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIG5vIGluZm8uXG4gICAqL1xuICByZWFkb25seSBydW50aW1lPzogUnVudGltZUluZm87XG59XG4iXX0=","\"use strict\";\nvar _a;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Manifest = exports.VERSION_MISMATCH = void 0;\nconst JSII_RTTI_SYMBOL_1 = Symbol.for(\"jsii.rtti\");\nconst fs = require(\"fs\");\nconst jsonschema = require(\"jsonschema\");\nconst semver = require(\"semver\");\nconst assembly = require(\"./cloud-assembly\");\n/* eslint-disable @typescript-eslint/no-var-requires */\n/* eslint-disable @typescript-eslint/no-require-imports */\n// this prefix is used by the CLI to identify this specific error.\n// in which case we want to instruct the user to upgrade his CLI.\n// see exec.ts#createAssembly\nexports.VERSION_MISMATCH = 'Cloud assembly schema version mismatch';\nconst ASSETS_SCHEMA = require(\"../schema/assets.schema.json\");\nconst ASSEMBLY_SCHEMA = require(\"../schema/cloud-assembly.schema.json\");\nconst INTEG_SCHEMA = require(\"../schema/integ.schema.json\");\n/**\n * Version is shared for both manifests\n */\nconst SCHEMA_VERSION = require('../package.json').version;\n/**\n * Protocol utility class.\n */\nclass Manifest {\n /**\n * Validates and saves the cloud assembly manifest to file.\n *\n * @param manifest - manifest.\n * @param filePath - output file path.\n */\n static saveAssemblyManifest(manifest, filePath) {\n Manifest.saveManifest(manifest, filePath, ASSEMBLY_SCHEMA, Manifest.patchStackTagsOnWrite);\n }\n /**\n * Load and validates the cloud assembly manifest from file.\n *\n * @param filePath - path to the manifest file.\n */\n static loadAssemblyManifest(filePath, options) {\n return Manifest.loadManifest(filePath, ASSEMBLY_SCHEMA, Manifest.patchStackTagsOnRead, options);\n }\n /**\n * Validates and saves the asset manifest to file.\n *\n * @param manifest - manifest.\n * @param filePath - output file path.\n */\n static saveAssetManifest(manifest, filePath) {\n Manifest.saveManifest(manifest, filePath, ASSETS_SCHEMA, Manifest.patchStackTagsOnRead);\n }\n /**\n * Load and validates the asset manifest from file.\n *\n * @param filePath - path to the manifest file.\n */\n static loadAssetManifest(filePath) {\n return this.loadManifest(filePath, ASSETS_SCHEMA);\n }\n /**\n * Validates and saves the integ manifest to file.\n *\n * @param manifest - manifest.\n * @param filePath - output file path.\n */\n static saveIntegManifest(manifest, filePath) {\n Manifest.saveManifest(manifest, filePath, INTEG_SCHEMA);\n }\n /**\n * Load and validates the integ manifest from file.\n *\n * @param filePath - path to the manifest file.\n */\n static loadIntegManifest(filePath) {\n return this.loadManifest(filePath, INTEG_SCHEMA);\n }\n /**\n * Fetch the current schema version number.\n */\n static version() {\n return SCHEMA_VERSION;\n }\n /**\n * Deprecated\n * @deprecated use `saveAssemblyManifest()`\n */\n static save(manifest, filePath) {\n return this.saveAssemblyManifest(manifest, filePath);\n }\n /**\n * Deprecated\n * @deprecated use `loadAssemblyManifest()`\n */\n static load(filePath) {\n return this.loadAssemblyManifest(filePath);\n }\n static validate(manifest, schema, options) {\n function parseVersion(version) {\n const ver = semver.valid(version);\n if (!ver) {\n throw new Error(`Invalid semver string: \"${version}\"`);\n }\n return ver;\n }\n const maxSupported = semver.major(parseVersion(Manifest.version()));\n const actual = parseVersion(manifest.version);\n // first validate the version should be accepted. all versions within the same minor version are fine\n if (maxSupported < semver.major(actual) && !options?.skipVersionCheck) {\n // we use a well known error prefix so that the CLI can identify this specific error\n // and print some more context to the user.\n throw new Error(`${exports.VERSION_MISMATCH}: Maximum schema version supported is ${maxSupported}.x.x, but found ${actual}`);\n }\n // now validate the format is good.\n const validator = new jsonschema.Validator();\n const result = validator.validate(manifest, schema, {\n // does exist but is not in the TypeScript definitions\n nestedErrors: true,\n allowUnknownAttributes: false,\n preValidateProperty: Manifest.validateAssumeRoleAdditionalOptions,\n });\n let errors = result.errors;\n if (options?.skipEnumCheck) {\n // Enum validations aren't useful when\n errors = stripEnumErrors(errors);\n }\n if (errors.length > 0) {\n throw new Error(`Invalid assembly manifest:\\n${errors.map((e) => e.stack).join('\\n')}`);\n }\n }\n static saveManifest(manifest, filePath, schema, preprocess) {\n let withVersion = { ...manifest, version: Manifest.version() };\n Manifest.validate(withVersion, schema);\n if (preprocess) {\n withVersion = preprocess(withVersion);\n }\n fs.writeFileSync(filePath, JSON.stringify(withVersion, undefined, 2));\n }\n static loadManifest(filePath, schema, preprocess, options) {\n const contents = fs.readFileSync(filePath, { encoding: 'utf-8' });\n let obj;\n try {\n obj = JSON.parse(contents);\n }\n catch (e) {\n throw new Error(`${e.message}, while parsing ${JSON.stringify(contents)}`);\n }\n if (preprocess) {\n obj = preprocess(obj);\n }\n Manifest.validate(obj, schema, options);\n return obj;\n }\n /**\n * This requires some explaining...\n *\n * We previously used `{ Key, Value }` for the object that represents a stack tag. (Notice the casing)\n * @link https://github.com/aws/aws-cdk/blob/v1.27.0/packages/aws-cdk/lib/api/cxapp/stacks.ts#L427.\n *\n * When that object moved to this package, it had to be JSII compliant, which meant the property\n * names must be `camelCased`, and not `PascalCased`. This meant it no longer matches the structure in the `manifest.json` file.\n * In order to support current manifest files, we have to translate the `PascalCased` representation to the new `camelCased` one.\n *\n * Note that the serialization itself still writes `PascalCased` because it relates to how CloudFormation expects it.\n *\n * Ideally, we would start writing the `camelCased` and translate to how CloudFormation expects it when needed. But this requires nasty\n * backwards-compatibility code and it just doesn't seem to be worth the effort.\n */\n static patchStackTagsOnRead(manifest) {\n return Manifest.replaceStackTags(manifest, (tags) => tags.map((diskTag) => ({\n key: diskTag.Key,\n value: diskTag.Value,\n })));\n }\n /**\n * Validates that `assumeRoleAdditionalOptions` doesn't contain nor `ExternalId` neither `RoleArn`, as they\n * should have dedicated properties preceding this (e.g `assumeRoleArn` and `assumeRoleExternalId`).\n */\n static validateAssumeRoleAdditionalOptions(instance, key, _schema, _options, _ctx) {\n if (key !== 'assumeRoleAdditionalOptions') {\n // note that this means that if we happen to have a property named like this, but that\n // does want to allow 'RoleArn' or 'ExternalId', this code will have to change to consider the full schema path.\n // I decided to make this less granular for now on purpose because it fits our needs and avoids having messy\n // validation logic due to various schema paths.\n return;\n }\n const assumeRoleOptions = instance[key];\n if (assumeRoleOptions?.RoleArn) {\n throw new Error(`RoleArn is not allowed inside '${key}'`);\n }\n if (assumeRoleOptions?.ExternalId) {\n throw new Error(`ExternalId is not allowed inside '${key}'`);\n }\n }\n /**\n * See explanation on `patchStackTagsOnRead`\n *\n * Translate stack tags metadata if it has the \"right\" casing.\n */\n static patchStackTagsOnWrite(manifest) {\n return Manifest.replaceStackTags(manifest, (tags) => tags.map((memTag) => \n // Might already be uppercased (because stack synthesis generates it in final form yet)\n ('Key' in memTag ? memTag : { Key: memTag.key, Value: memTag.value })));\n }\n /**\n * Recursively replace stack tags in the stack metadata\n */\n static replaceStackTags(manifest, fn) {\n // Need to add in the `noUndefined`s because otherwise jest snapshot tests are going to freak out\n // about the keys with values that are `undefined` (even though they would never be JSON.stringified)\n return noUndefined({\n ...manifest,\n artifacts: mapValues(manifest.artifacts, (artifact) => {\n if (artifact.type !== assembly.ArtifactType.AWS_CLOUDFORMATION_STACK) {\n return artifact;\n }\n return noUndefined({\n ...artifact,\n metadata: mapValues(artifact.metadata, (metadataEntries) => metadataEntries.map((metadataEntry) => {\n if (metadataEntry.type !== assembly.ArtifactMetadataEntryType.STACK_TAGS ||\n !metadataEntry.data) {\n return metadataEntry;\n }\n return {\n ...metadataEntry,\n data: fn(metadataEntry.data),\n };\n })),\n });\n }),\n });\n }\n constructor() { }\n}\nexports.Manifest = Manifest;\n_a = JSII_RTTI_SYMBOL_1;\nManifest[_a] = { fqn: \"@aws-cdk/cloud-assembly-schema.Manifest\", version: \"38.0.1\" };\nfunction mapValues(xs, fn) {\n if (!xs) {\n return undefined;\n }\n const ret = {};\n for (const [k, v] of Object.entries(xs)) {\n ret[k] = fn(v);\n }\n return ret;\n}\nfunction noUndefined(xs) {\n const ret = {};\n for (const [k, v] of Object.entries(xs)) {\n if (v !== undefined) {\n ret[k] = v;\n }\n }\n return ret;\n}\nfunction stripEnumErrors(errors) {\n return errors.filter((e) => typeof e.schema === 'string' || !('enum' in e.schema));\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFuaWZlc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJtYW5pZmVzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLHlCQUF5QjtBQUN6Qix5Q0FBeUM7QUFDekMsaUNBQWlDO0FBRWpDLDZDQUE2QztBQUc3Qyx1REFBdUQ7QUFDdkQsMERBQTBEO0FBRTFELGtFQUFrRTtBQUNsRSxpRUFBaUU7QUFDakUsNkJBQTZCO0FBQ2hCLFFBQUEsZ0JBQWdCLEdBQVcsd0NBQXdDLENBQUM7QUFFakYsOERBQStEO0FBRS9ELHdFQUF5RTtBQUV6RSw0REFBNkQ7QUFFN0Q7O0dBRUc7QUFDSCxNQUFNLGNBQWMsR0FBRyxPQUFPLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxPQUFPLENBQUM7QUFzQzFEOztHQUVHO0FBQ0gsTUFBYSxRQUFRO0lBQ25COzs7OztPQUtHO0lBQ0ksTUFBTSxDQUFDLG9CQUFvQixDQUFDLFFBQW1DLEVBQUUsUUFBZ0I7UUFDdEYsUUFBUSxDQUFDLFlBQVksQ0FBQyxRQUFRLEVBQUUsUUFBUSxFQUFFLGVBQWUsRUFBRSxRQUFRLENBQUMscUJBQXFCLENBQUMsQ0FBQztJQUM3RixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNJLE1BQU0sQ0FBQyxvQkFBb0IsQ0FDaEMsUUFBZ0IsRUFDaEIsT0FBNkI7UUFFN0IsT0FBTyxRQUFRLENBQUMsWUFBWSxDQUFDLFFBQVEsRUFBRSxlQUFlLEVBQUUsUUFBUSxDQUFDLG9CQUFvQixFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ2xHLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNJLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxRQUE4QixFQUFFLFFBQWdCO1FBQzlFLFFBQVEsQ0FBQyxZQUFZLENBQUMsUUFBUSxFQUFFLFFBQVEsRUFBRSxhQUFhLEVBQUUsUUFBUSxDQUFDLG9CQUFvQixDQUFDLENBQUM7SUFDMUYsQ0FBQztJQUVEOzs7O09BSUc7SUFDSSxNQUFNLENBQUMsaUJBQWlCLENBQUMsUUFBZ0I7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Q0FBQztJQUNMLENBQUM7SUFFRCxnQkFBdUIsQ0FBQzs7QUF2UTFCLDRCQXdRQzs7O0FBSUQsU0FBUyxTQUFTLENBQ2hCLEVBQWlDLEVBQ2pDLEVBQWU7SUFFZixJQUFJLENBQUMsRUFBRSxFQUFFLENBQUM7UUFDUixPQUFPLFNBQVMsQ0FBQztJQUNuQixDQUFDO0lBQ0QsTUFBTSxHQUFHLEdBQWtDLEVBQUUsQ0FBQztJQUM5QyxLQUFLLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDO1FBQ3hDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDakIsQ0FBQztJQUNELE9BQU8sR0FBRyxDQUFDO0FBQ2IsQ0FBQztBQUVELFNBQVMsV0FBVyxDQUFtQixFQUFLO0lBQzFDLE1BQU0sR0FBRyxHQUFRLEVBQUUsQ0FBQztJQUNwQixLQUFLLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDO1FBQ3hDLElBQUksQ0FBQyxLQUFLLFNBQVMsRUFBRSxDQUFDO1lBQ3BCLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDYixDQUFDO0lBQ0gsQ0FBQztJQUNELE9BQU8sR0FBRyxDQUFDO0FBQ2IsQ0FBQztBQUVELFNBQVMsZUFBZSxDQUFDLE1BQW9DO0lBQzNELE9BQU8sTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxLQUFLLFFBQVEsSUFBSSxDQUFDLENBQUMsTUFBTSxJQUFJLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0FBQ3JGLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBmcyBmcm9tICdmcyc7XG5pbXBvcnQgKiBhcyBqc29uc2NoZW1hIGZyb20gJ2pzb25zY2hlbWEnO1xuaW1wb3J0ICogYXMgc2VtdmVyIGZyb20gJ3NlbXZlcic7XG5pbXBvcnQgKiBhcyBhc3NldHMgZnJvbSAnLi9hc3NldHMnO1xuaW1wb3J0ICogYXMgYXNzZW1ibHkgZnJvbSAnLi9jbG91ZC1hc3NlbWJseSc7XG5pbXBvcnQgKiBhcyBpbnRlZyBmcm9tICcuL2ludGVnLXRlc3RzJztcblxuLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXZhci1yZXF1aXJlcyAqL1xuLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXJlcXVpcmUtaW1wb3J0cyAqL1xuXG4vLyB0aGlzIHByZWZpeCBpcyB1c2VkIGJ5IHRoZSBDTEkgdG8gaWRlbnRpZnkgdGhpcyBzcGVjaWZpYyBlcnJvci5cbi8vIGluIHdoaWNoIGNhc2Ugd2Ugd2FudCB0byBpbnN0cnVjdCB0aGUgdXNlciB0byB1cGdyYWRlIGhpcyBDTEkuXG4vLyBzZWUgZXhlYy50cyNjcmVhdGVBc3NlbWJseVxuZXhwb3J0IGNvbnN0IFZFUlNJT05fTUlTTUFUQ0g6IHN0cmluZyA9ICdDbG91ZCBhc3NlbWJseSBzY2hlbWEgdmVyc2lvbiBtaXNtYXRjaCc7XG5cbmltcG9ydCBBU1NFVFNfU0NIRU1BID0gcmVxdWlyZSgnLi4vc2NoZW1hL2Fzc2V0cy5zY2hlbWEuanNvbicpO1xuXG5pbXBvcnQgQVNTRU1CTFlfU0NIRU1BID0gcmVxdWlyZSgnLi4vc2NoZW1hL2Nsb3VkLWFzc2VtYmx5LnNjaGVtYS5qc29uJyk7XG5cbmltcG9ydCBJTlRFR19TQ0hFTUEgPSByZXF1aXJlKCcuLi9zY2hlbWEvaW50ZWcuc2NoZW1hLmpzb24nKTtcblxuLyoqXG4gKiBWZXJzaW9uIGlzIHNoYXJlZCBmb3IgYm90aCBtYW5pZmVzdHNcbiAqL1xuY29uc3QgU0NIRU1BX1ZFUlNJT04gPSByZXF1aXJlKCcuLi9wYWNrYWdlLmpzb24nKS52ZXJzaW9uO1xuXG4vKipcbiAqIE9wdGlvbnMgZm9yIHRoZSBsb2FkTWFuaWZlc3Qgb3BlcmF0aW9uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTG9hZE1hbmlmZXN0T3B0aW9ucyB7XG4gIC8qKlxuICAgKiBTa2lwIHRoZSB2ZXJzaW9uIGNoZWNrXG4gICAqXG4gICAqIFRoaXMgbWVhbnMgeW91IG1heSByZWFkIGEgbmV3ZXIgY2xvdWQgYXNzZW1ibHkgdGhhbiB0aGUgQ1ggQVBJIGlzIGRlc2lnbmVkXG4gICAqIHRvIHN1cHBvcnQsIGFuZCB5b3VyIGFwcGxpY2F0aW9uIG1heSBub3QgYmUgYXdhcmUgb2YgYWxsIGZlYXR1cmVzIHRoYXQgaW4gdXNlXG4gICAqIGluIHRoZSBDbG91ZCBBc3NlbWJseS5cbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IHNraXBWZXJzaW9uQ2hlY2s/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBTa2lwIGVudW0gY2hlY2tzXG4gICAqXG4gICAqIFRoaXMgbWVhbnMgeW91IG1heSByZWFkIGVudW0gdmFsdWVzIHlvdSBkb24ndCBrbm93IGFib3V0IHlldC4gTWFrZSBzdXJlIHRvIGFsd2F5c1xuICAgKiBjaGVjayB0aGUgdmFsdWVzIG9mIGVudW1zIHlvdSBlbmNvdW50ZXIgaW4gdGhlIG1hbmlmZXN0LlxuICAgKlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgc2tpcEVudW1DaGVjaz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFRvcG9sb2dpY2FsbHkgc29ydCBhbGwgYXJ0aWZhY3RzXG4gICAqXG4gICAqIFRoaXMgcGFyYW1ldGVyIGlzIG9ubHkgcmVzcGVjdGVkIGJ5IHRoZSBjb25zdHJ1Y3RvciBvZiBgQ2xvdWRBc3NlbWJseWAuIFRoZVxuICAgKiBwcm9wZXJ0eSBsaXZlcyBoZXJlIGZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eSByZWFzb25zLlxuICAgKlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICByZWFkb25seSB0b3BvU29ydD86IGJvb2xlYW47XG59XG5cbi8qKlxuICogUHJvdG9jb2wgdXRpbGl0eSBjbGFzcy5cbiAqL1xuZXhwb3J0IGNsYXNzIE1hbmlmZXN0IHtcbiAgLyoqXG4gICAqIFZhbGlkYXRlcyBhbmQgc2F2ZXMgdGhlIGNsb3VkIGFzc2VtYmx5IG1hbmlmZXN0IHRvIGZpbGUuXG4gICAqXG4gICAqIEBwYXJhbSBtYW5pZmVzdCAtIG1hbmlmZXN0LlxuICAgKiBAcGFyYW0gZmlsZVBhdGggLSBvdXRwdXQgZmlsZSBwYXRoLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBzYXZlQXNzZW1ibHlNYW5pZmVzdChtYW5pZmVzdDogYXNzZW1ibHkuQXNzZW1ibHlNYW5pZmVzdCwgZmlsZVBhdGg6IHN0cmluZykge1xuICAgIE1hbmlmZXN0LnNhdmVNYW5pZmVzdChtYW5pZmVzdCwgZmlsZVBhdGgsIEFTU0VNQkxZX1NDSEVNQSwgTWFuaWZlc3QucGF0Y2hTdGFja1RhZ3NPbldyaXRlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBMb2FkIGFuZCB2YWxpZGF0ZXMgdGhlIGNsb3VkIGFzc2VtYmx5IG1hbmlmZXN0IGZyb20gZmlsZS5cbiAgICpcbiAgICogQHBhcmFtIGZpbGVQYXRoIC0gcGF0aCB0byB0aGUgbWFuaWZlc3QgZmlsZS5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgbG9hZEFzc2VtYmx5TWFuaWZlc3QoXG4gICAgZmlsZVBhdGg6IHN0cmluZyxcbiAgICBvcHRpb25zPzogTG9hZE1hbmlmZXN0T3B0aW9uc1xuICApOiBhc3NlbWJseS5Bc3NlbWJseU1hbmlmZXN0IHtcbiAgICByZXR1cm4gTWFuaWZlc3QubG9hZE1hbmlmZXN0KGZpbGVQYXRoLCBBU1NFTUJMWV9TQ0hFTUEsIE1hbmlmZXN0LnBhdGNoU3RhY2tUYWdzT25SZWFkLCBvcHRpb25zKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBWYWxpZGF0ZXMgYW5kIHNhdmVzIHRoZSBhc3NldCBtYW5pZmVzdCB0byBmaWxlLlxuICAgKlxuICAgKiBAcGFyYW0gbWFuaWZlc3QgLSBtYW5pZmVzdC5cbiAgICogQHBhcmFtIGZpbGVQYXRoIC0gb3V0cHV0IGZpbGUgcGF0aC5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgc2F2ZUFzc2V0TWFuaWZlc3QobWFuaWZlc3Q6IGFzc2V0cy5Bc3NldE1hbmlmZXN0LCBmaWxlUGF0aDogc3RyaW5nKSB7XG4gICAgTWFuaWZlc3Quc2F2ZU1hbmlmZXN0KG1hbmlmZXN0LCBmaWxlUGF0aCwgQVNTRVRTX1NDSEVNQSwgTWFuaWZlc3QucGF0Y2hTdGFja1RhZ3NPblJlYWQpO1xuICB9XG5cbiAgLyoqXG4gICAqIExvYWQgYW5kIHZhbGlkYXRlcyB0aGUgYXNzZXQgbWFuaWZlc3QgZnJvbSBmaWxlLlxuICAgKlxuICAgKiBAcGFyYW0gZmlsZVBhdGggLSBwYXRoIHRvIHRoZSBtYW5pZmVzdCBmaWxlLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBsb2FkQXNzZXRNYW5pZmVzdChmaWxlUGF0aDogc3RyaW5nKTogYXNzZXRzLkFzc2V0TWFuaWZlc3Qge1xuICAgIHJldHVybiB0aGlzLmxvYWRNYW5pZmVzdChmaWxlUGF0aCwgQVNTRVRTX1NDSEVNQSk7XG4gIH1cblxuICAvKipcbiAgICogVmFsaWRhdGVzIGFuZCBzYXZlcyB0aGUgaW50ZWcgbWFuaWZlc3QgdG8gZmlsZS5cbiAgICpcbiAgICogQHBhcmFtIG1hbmlmZXN0IC0gbWFuaWZlc3QuXG4gICAqIEBwYXJhbSBmaWxlUGF0aCAtIG91dHB1dCBmaWxlIHBhdGguXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHNhdmVJbnRlZ01hbmlmZXN0KG1hbmlmZXN0OiBpbnRlZy5JbnRlZ01hbmlmZXN0LCBmaWxlUGF0aDogc3RyaW5nKSB7XG4gICAgTWFuaWZlc3Quc2F2ZU1hbmlmZXN0KG1hbmlmZXN0LCBmaWxlUGF0aCwgSU5URUdfU0NIRU1BKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBMb2FkIGFuZCB2YWxpZGF0ZXMgdGhlIGludGVnIG1hbmlmZXN0IGZyb20gZmlsZS5cbiAgICpcbiAgICogQHBhcmFtIGZpbGVQYXRoIC0gcGF0aCB0byB0aGUgbWFuaWZlc3QgZmlsZS5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgbG9hZEludGVnTWFuaWZlc3QoZmlsZVBhdGg6IHN0cmluZyk6IGludGVnLkludGVnTWFuaWZlc3Qge1xuICAgIHJldHVybiB0aGlzLmxvYWRNYW5pZmVzdChmaWxlUGF0aCwgSU5URUdfU0NIRU1BKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBGZXRjaCB0aGUgY3VycmVudCBzY2hlbWEgdmVyc2lvbiBudW1iZXIuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHZlcnNpb24oKTogc3RyaW5nIHtcbiAgICByZXR1cm4gU0NIRU1BX1ZFUlNJT047XG4gIH1cblxuICAvKipcbiAgICogRGVwcmVjYXRlZFxuICAgKiBAZGVwcmVjYXRlZCB1c2UgYHNhdmVBc3NlbWJseU1hbmlmZXN0KClgXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHNhdmUobWFuaWZlc3Q6IGFzc2VtYmx5LkFzc2VtYmx5TWFuaWZlc3QsIGZpbGVQYXRoOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy5zYXZlQXNzZW1ibHlNYW5pZmVzdChtYW5pZmVzdCwgZmlsZVBhdGgpO1xuICB9XG5cbiAgLyoqXG4gICAqIERlcHJlY2F0ZWRcbiAgICogQGRlcHJlY2F0ZWQgdXNlIGBsb2FkQXNzZW1ibHlNYW5pZmVzdCgpYFxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBsb2FkKGZpbGVQYXRoOiBzdHJpbmcpOiBhc3NlbWJseS5Bc3NlbWJseU1hbmlmZXN0IHtcbiAgICByZXR1cm4gdGhpcy5sb2FkQXNzZW1ibHlNYW5pZmVzdChmaWxlUGF0aCk7XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyB2YWxpZGF0ZShtYW5pZmVzdDogYW55LCBzY2hlbWE6IGpzb25zY2hlbWEuU2NoZW1hLCBvcHRpb25zPzogTG9hZE1hbmlmZXN0T3B0aW9ucykge1xuICAgIGZ1bmN0aW9uIHBhcnNlVmVyc2lvbih2ZXJzaW9uOiBzdHJpbmcpIHtcbiAgICAgIGNvbnN0IHZlciA9IHNlbXZlci52YWxpZCh2ZXJzaW9uKTtcbiAgICAgIGlmICghdmVyKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCBzZW12ZXIgc3RyaW5nOiBcIiR7dmVyc2lvbn1cImApO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHZlcjtcbiAgICB9XG5cbiAgICBjb25zdCBtYXhTdXBwb3J0ZWQgPSBzZW12ZXIubWFqb3IocGFyc2VWZXJzaW9uKE1hbmlmZXN0LnZlcnNpb24oKSkpO1xuICAgIGNvbnN0IGFjdHVhbCA9IHBhcnNlVmVyc2lvbihtYW5pZmVzdC52ZXJzaW9uKTtcblxuICAgIC8vIGZpcnN0IHZhbGlkYXRlIHRoZSB2ZXJzaW9uIHNob3VsZCBiZSBhY2NlcHRlZC4gYWxsIHZlcnNpb25zIHdpdGhpbiB0aGUgc2FtZSBtaW5vciB2ZXJzaW9uIGFyZSBmaW5lXG4gICAgaWYgKG1heFN1cHBvcnRlZCA8IHNlbXZlci5tYWpvcihhY3R1YWwpICYmICFvcHRpb25zPy5za2lwVmVyc2lvbkNoZWNrKSB7XG4gICAgICAvLyB3ZSB1c2UgYSB3ZWxsIGtub3duIGVycm9yIHByZWZpeCBzbyB0aGF0IHRoZSBDTEkgY2FuIGlkZW50aWZ5IHRoaXMgc3BlY2lmaWMgZXJyb3JcbiAgICAgIC8vIGFuZCBwcmludCBzb21lIG1vcmUgY29udGV4dCB0byB0aGUgdXNlci5cbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgYCR7VkVSU0lPTl9NSVNNQVRDSH06IE1heGltdW0gc2NoZW1hIHZlcnNpb24gc3VwcG9ydGVkIGlzICR7bWF4U3VwcG9ydGVkfS54LngsIGJ1dCBmb3VuZCAke2FjdHVhbH1gXG4gICAgICApO1xuICAgIH1cblxuICAgIC8vIG5vdyB2YWxpZGF0ZSB0aGUgZm9ybWF0IGlzIGdvb2QuXG4gICAgY29uc3QgdmFsaWRhdG9yID0gbmV3IGpzb25zY2hlbWEuVmFsaWRhdG9yKCk7XG4gICAgY29uc3QgcmVzdWx0ID0gdmFsaWRhdG9yLnZhbGlkYXRlKG1hbmlmZXN0LCBzY2hlbWEsIHtcbiAgICAgIC8vIGRvZXMgZXhpc3QgYnV0IGlzIG5vdCBpbiB0aGUgVHlwZVNjcmlwdCBkZWZpbml0aW9uc1xuICAgICAgbmVzdGVkRXJyb3JzOiB0cnVlLFxuXG4gICAgICBhbGxvd1Vua25vd25BdHRyaWJ1dGVzOiBmYWxzZSxcbiAgICAgIHByZVZhbGlkYXRlUHJvcGVydHk6IE1hbmlmZXN0LnZhbGlkYXRlQXNzdW1lUm9sZUFkZGl0aW9uYWxPcHRpb25zLFxuICAgIH0pO1xuXG4gICAgbGV0IGVycm9ycyA9IHJlc3VsdC5lcnJvcnM7XG4gICAgaWYgKG9wdGlvbnM/LnNraXBFbnVtQ2hlY2spIHtcbiAgICAgIC8vIEVudW0gdmFsaWRhdGlvbnMgYXJlbid0IHVzZWZ1bCB3aGVuXG4gICAgICBlcnJvcnMgPSBzdHJpcEVudW1FcnJvcnMoZXJyb3JzKTtcbiAgICB9XG5cbiAgICBpZiAoZXJyb3JzLmxlbmd0aCA+IDApIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCBhc3NlbWJseSBtYW5pZmVzdDpcXG4ke2Vycm9ycy5tYXAoKGUpID0+IGUuc3RhY2spLmpvaW4oJ1xcbicpfWApO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIHNhdmVNYW5pZmVzdChcbiAgICBtYW5pZmVzdDogYW55LFxuICAgIGZpbGVQYXRoOiBzdHJpbmcsXG4gICAgc2NoZW1hOiBqc29uc2NoZW1hLlNjaGVtYSxcbiAgICBwcmVwcm9jZXNzPzogKG9iajogYW55KSA9PiBhbnlcbiAgKSB7XG4gICAgbGV0IHdpdGhWZXJzaW9uID0geyAuLi5tYW5pZmVzdCwgdmVyc2lvbjogTWFuaWZlc3QudmVyc2lvbigpIH07XG4gICAgTWFuaWZlc3QudmFsaWRhdGUod2l0aFZlcnNpb24sIHNjaGVtYSk7XG4gICAgaWYgKHByZXByb2Nlc3MpIHtcbiAgICAgIHdpdGhWZXJzaW9uID0gcHJlcHJvY2Vzcyh3aXRoVmVyc2lvbik7XG4gICAgfVxuICAgIGZzLndyaXRlRmlsZVN5bmMoZmlsZVBhdGgsIEpTT04uc3RyaW5naWZ5KHdpdGhWZXJzaW9uLCB1bmRlZmluZWQsIDIpKTtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIGxvYWRNYW5pZmVzdChcbiAgICBmaWxlUGF0aDogc3RyaW5nLFxuICAgIHNjaGVtYToganNvbnNjaGVtYS5TY2hlbWEsXG4gICAgcHJlcHJvY2Vzcz86IChvYmo6IGFueSkgPT4gYW55LFxuICAgIG9wdGlvbnM/OiBMb2FkTWFuaWZlc3RPcHRpb25zXG4gICkge1xuICAgIGNvbnN0IGNvbnRlbnRzID0gZnMucmVhZEZpbGVTeW5jKGZpbGVQYXRoLCB7IGVuY29kaW5nOiAndXRmLTgnIH0pO1xuICAgIGxldCBvYmo7XG4gICAgdHJ5IHtcbiAgICAgIG9iaiA9IEpTT04ucGFyc2UoY29udGVudHMpO1xuICAgIH0gY2F0Y2ggKGU6IGFueSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGAke2UubWVzc2FnZX0sIHdoaWxlIHBhcnNpbmcgJHtKU09OLnN0cmluZ2lmeShjb250ZW50cyl9YCk7XG4gICAgfVxuICAgIGlmIChwcmVwcm9jZXNzKSB7XG4gICAgICBvYmogPSBwcmVwcm9jZXNzKG9iaik7XG4gICAgfVxuICAgIE1hbmlmZXN0LnZhbGlkYXRlKG9iaiwgc2NoZW1hLCBvcHRpb25zKTtcbiAgICByZXR1cm4gb2JqO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoaXMgcmVxdWlyZXMgc29tZSBleHBsYWluaW5nLi4uXG4gICAqXG4gICAqIFdlIHByZXZpb3VzbHkgdXNlZCBgeyBLZXksIFZhbHVlIH1gIGZvciB0aGUgb2JqZWN0IHRoYXQgcmVwcmVzZW50cyBhIHN0YWNrIHRhZy4gKE5vdGljZSB0aGUgY2FzaW5nKVxuICAgKiBAbGluayBodHRwczovL2dpdGh1Yi5jb20vYXdzL2F3cy1jZGsvYmxvYi92MS4yNy4wL3BhY2thZ2VzL2F3cy1jZGsvbGliL2FwaS9jeGFwcC9zdGFja3MudHMjTDQyNy5cbiAgICpcbiAgICogV2hlbiB0aGF0IG9iamVjdCBtb3ZlZCB0byB0aGlzIHBhY2thZ2UsIGl0IGhhZCB0byBiZSBKU0lJIGNvbXBsaWFudCwgd2hpY2ggbWVhbnQgdGhlIHByb3BlcnR5XG4gICAqIG5hbWVzIG11c3QgYmUgYGNhbWVsQ2FzZWRgLCBhbmQgbm90IGBQYXNjYWxDYXNlZGAuIFRoaXMgbWVhbnQgaXQgbm8gbG9uZ2VyIG1hdGNoZXMgdGhlIHN0cnVjdHVyZSBpbiB0aGUgYG1hbmlmZXN0Lmpzb25gIGZpbGUuXG4gICAqIEluIG9yZGVyIHRvIHN1cHBvcnQgY3VycmVudCBtYW5pZmVzdCBmaWxlcywgd2UgaGF2ZSB0byB0cmFuc2xhdGUgdGhlIGBQYXNjYWxDYXNlZGAgcmVwcmVzZW50YXRpb24gdG8gdGhlIG5ldyBgY2FtZWxDYXNlZGAgb25lLlxuICAgKlxuICAgKiBOb3RlIHRoYXQgdGhlIHNlcmlhbGl6YXRpb24gaXRzZWxmIHN0aWxsIHdyaXRlcyBgUGFzY2FsQ2FzZWRgIGJlY2F1c2UgaXQgcmVsYXRlcyB0byBob3cgQ2xvdWRGb3JtYXRpb24gZXhwZWN0cyBpdC5cbiAgICpcbiAgICogSWRlYWxseSwgd2Ugd291bGQgc3RhcnQgd3JpdGluZyB0aGUgYGNhbWVsQ2FzZWRgIGFuZCB0cmFuc2xhdGUgdG8gaG93IENsb3VkRm9ybWF0aW9uIGV4cGVjdHMgaXQgd2hlbiBuZWVkZWQuIEJ1dCB0aGlzIHJlcXVpcmVzIG5hc3R5XG4gICAqIGJhY2t3YXJkcy1jb21wYXRpYmlsaXR5IGNvZGUgYW5kIGl0IGp1c3QgZG9lc24ndCBzZWVtIHRvIGJlIHdvcnRoIHRoZSBlZmZvcnQuXG4gICAqL1xuICBwcml2YXRlIHN0YXRpYyBwYXRjaFN0YWNrVGFnc09uUmVhZChtYW5pZmVzdDogYXNzZW1ibHkuQXNzZW1ibHlNYW5pZmVzdCkge1xuICAgIHJldHVybiBNYW5pZmVzdC5yZXBsYWNlU3RhY2tUYWdzKG1hbmlmZXN0LCAodGFncykgPT5cbiAgICAgIHRhZ3MubWFwKChkaXNrVGFnOiBhbnkpID0+ICh7XG4gICAgICAgIGtleTogZGlza1RhZy5LZXksXG4gICAgICAgIHZhbHVlOiBkaXNrVGFnLlZhbHVlLFxuICAgICAgfSkpXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBWYWxpZGF0ZXMgdGhhdCBgYXNzdW1lUm9sZUFkZGl0aW9uYWxPcHRpb25zYCBkb2Vzbid0IGNvbnRhaW4gbm9yIGBFeHRlcm5hbElkYCBuZWl0aGVyIGBSb2xlQXJuYCwgYXMgdGhleVxuICAgKiBzaG91bGQgaGF2ZSBkZWRpY2F0ZWQgcHJvcGVydGllcyBwcmVjZWRpbmcgdGhpcyAoZS5nIGBhc3N1bWVSb2xlQXJuYCBhbmQgYGFzc3VtZVJvbGVFeHRlcm5hbElkYCkuXG4gICAqL1xuICBwcml2YXRlIHN0YXRpYyB2YWxpZGF0ZUFzc3VtZVJvbGVBZGRpdGlvbmFsT3B0aW9ucyhcbiAgICBpbnN0YW5jZTogYW55LFxuICAgIGtleTogc3RyaW5nLFxuICAgIF9zY2hlbWE6IGpzb25zY2hlbWEuU2NoZW1hLFxuICAgIF9vcHRpb25zOiBqc29uc2NoZW1hLk9wdGlvbnMsXG4gICAgX2N0eDoganNvbnNjaGVtYS5TY2hlbWFDb250ZXh0XG4gICkge1xuICAgIGlmIChrZXkgIT09ICdhc3N1bWVSb2xlQWRkaXRpb25hbE9wdGlvbnMnKSB7XG4gICAgICAvLyBub3RlIHRoYXQgdGhpcyBtZWFucyB0aGF0IGlmIHdlIGhhcHBlbiB0byBoYXZlIGEgcHJvcGVydHkgbmFtZWQgbGlrZSB0aGlzLCBidXQgdGhhdFxuICAgICAgLy8gZG9lcyB3YW50IHRvIGFsbG93ICdSb2xlQXJuJyBvciAnRXh0ZXJuYWxJZCcsIHRoaXMgY29kZSB3aWxsIGhhdmUgdG8gY2hhbmdlIHRvIGNvbnNpZGVyIHRoZSBmdWxsIHNjaGVtYSBwYXRoLlxuICAgICAgLy8gSSBkZWNpZGVkIHRvIG1ha2UgdGhpcyBsZXNzIGdyYW51bGFyIGZvciBub3cgb24gcHVycG9zZSBiZWNhdXNlIGl0IGZpdHMgb3VyIG5lZWRzIGFuZCBhdm9pZHMgaGF2aW5nIG1lc3N5XG4gICAgICAvLyB2YWxpZGF0aW9uIGxvZ2ljIGR1ZSB0byB2YXJpb3VzIHNjaGVtYSBwYXRocy5cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBhc3N1bWVSb2xlT3B0aW9ucyA9IGluc3RhbmNlW2tleV07XG4gICAgaWYgKGFzc3VtZVJvbGVPcHRpb25zPy5Sb2xlQXJuKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFJvbGVBcm4gaXMgbm90IGFsbG93ZWQgaW5zaWRlICcke2tleX0nYCk7XG4gICAgfVxuICAgIGlmIChhc3N1bWVSb2xlT3B0aW9ucz8uRXh0ZXJuYWxJZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBFeHRlcm5hbElkIGlzIG5vdCBhbGxvd2VkIGluc2lkZSAnJHtrZXl9J2ApO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBTZWUgZXhwbGFuYXRpb24gb24gYHBhdGNoU3RhY2tUYWdzT25SZWFkYFxuICAgKlxuICAgKiBUcmFuc2xhdGUgc3RhY2sgdGFncyBtZXRhZGF0YSBpZiBpdCBoYXMgdGhlIFwicmlnaHRcIiBjYXNpbmcuXG4gICAqL1xuICBwcml2YXRlIHN0YXRpYyBwYXRjaFN0YWNrVGFnc09uV3JpdGUobWFuaWZlc3Q6IGFzc2VtYmx5LkFzc2VtYmx5TWFuaWZlc3QpIHtcbiAgICByZXR1cm4gTWFuaWZlc3QucmVwbGFjZVN0YWNrVGFncyhtYW5pZmVzdCwgKHRhZ3MpID0+XG4gICAgICB0YWdzLm1hcChcbiAgICAgICAgKG1lbVRhZykgPT5cbiAgICAgICAgICAvLyBNaWdodCBhbHJlYWR5IGJlIHVwcGVyY2FzZWQgKGJlY2F1c2Ugc3RhY2sgc3ludGhlc2lzIGdlbmVyYXRlcyBpdCBpbiBmaW5hbCBmb3JtIHlldClcbiAgICAgICAgICAoJ0tleScgaW4gbWVtVGFnID8gbWVtVGFnIDogeyBLZXk6IG1lbVRhZy5rZXksIFZhbHVlOiBtZW1UYWcudmFsdWUgfSkgYXMgYW55XG4gICAgICApXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZWN1cnNpdmVseSByZXBsYWNlIHN0YWNrIHRhZ3MgaW4gdGhlIHN0YWNrIG1ldGFkYXRhXG4gICAqL1xuICBwcml2YXRlIHN0YXRpYyByZXBsYWNlU3RhY2tUYWdzKFxuICAgIG1hbmlmZXN0OiBhc3NlbWJseS5Bc3NlbWJseU1hbmlmZXN0LFxuICAgIGZuOiBFbmRvZnVuY3Rvcjxhc3NlbWJseS5TdGFja1RhZ3NNZXRhZGF0YUVudHJ5PlxuICApOiBhc3NlbWJseS5Bc3NlbWJseU1hbmlmZXN0IHtcbiAgICAvLyBOZWVkIHRvIGFkZCBpbiB0aGUgYG5vVW5kZWZpbmVkYHMgYmVjYXVzZSBvdGhlcndpc2UgamVzdCBzbmFwc2hvdCB0ZXN0cyBhcmUgZ29pbmcgdG8gZnJlYWsgb3V0XG4gICAgLy8gYWJvdXQgdGhlIGtleXMgd2l0aCB2YWx1ZXMgdGhhdCBhcmUgYHVuZGVmaW5lZGAgKGV2ZW4gdGhvdWdoIHRoZXkgd291bGQgbmV2ZXIgYmUgSlNPTi5zdHJpbmdpZmllZClcbiAgICByZXR1cm4gbm9VbmRlZmluZWQoe1xuICAgICAgLi4ubWFuaWZlc3QsXG4gICAgICBhcnRpZmFjdHM6IG1hcFZhbHVlcyhtYW5pZmVzdC5hcnRpZmFjdHMsIChhcnRpZmFjdCkgPT4ge1xuICAgICAgICBpZiAoYXJ0aWZhY3QudHlwZSAhPT0gYXNzZW1ibHkuQXJ0aWZhY3RUeXBlLkFXU19DTE9VREZPUk1BVElPTl9TVEFDSykge1xuICAgICAgICAgIHJldHVybiBhcnRpZmFjdDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbm9VbmRlZmluZWQoe1xuICAgICAgICAgIC4uLmFydGlmYWN0LFxuICAgICAgICAgIG1ldGFkYXRhOiBtYXBWYWx1ZXMoYXJ0aWZhY3QubWV0YWRhdGEsIChtZXRhZGF0YUVudHJpZXMpID0+XG4gICAgICAgICAgICBtZXRhZGF0YUVudHJpZXMubWFwKChtZXRhZGF0YUVudHJ5KSA9PiB7XG4gICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICBtZXRhZGF0YUVudHJ5LnR5cGUgIT09IGFzc2VtYmx5LkFydGlmYWN0TWV0YWRhdGFFbnRyeVR5cGUuU1RBQ0tfVEFHUyB8fFxuICAgICAgICAgICAgICAgICFtZXRhZGF0YUVudHJ5LmRhdGFcbiAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG1ldGFkYXRhRW50cnk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAuLi5tZXRhZGF0YUVudHJ5LFxuICAgICAgICAgICAgICAgIGRhdGE6IGZuKG1ldGFkYXRhRW50cnkuZGF0YSBhcyBhc3NlbWJseS5TdGFja1RhZ3NNZXRhZGF0YUVudHJ5KSxcbiAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgKSxcbiAgICAgICAgfSBhcyBhc3NlbWJseS5BcnRpZmFjdE1hbmlmZXN0KTtcbiAgICAgIH0pLFxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBjb25zdHJ1Y3RvcigpIHt9XG59XG5cbnR5cGUgRW5kb2Z1bmN0b3I8QT4gPSAoeDogQSkgPT4gQTtcblxuZnVuY3Rpb24gbWFwVmFsdWVzPEEsIEI+KFxuICB4czogUmVjb3JkPHN0cmluZywgQT4gfCB1bmRlZmluZWQsXG4gIGZuOiAoeDogQSkgPT4gQlxuKTogUmVjb3JkPHN0cmluZywgQj4gfCB1bmRlZmluZWQge1xuICBpZiAoIXhzKSB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuICBjb25zdCByZXQ6IFJlY29yZDxzdHJpbmcsIEI+IHwgdW5kZWZpbmVkID0ge307XG4gIGZvciAoY29uc3QgW2ssIHZdIG9mIE9iamVjdC5lbnRyaWVzKHhzKSkge1xuICAgIHJldFtrXSA9IGZuKHYpO1xuICB9XG4gIHJldHVybiByZXQ7XG59XG5cbmZ1bmN0aW9uIG5vVW5kZWZpbmVkPEEgZXh0ZW5kcyBvYmplY3Q+KHhzOiBBKTogQSB7XG4gIGNvbnN0IHJldDogYW55ID0ge307XG4gIGZvciAoY29uc3QgW2ssIHZdIG9mIE9iamVjdC5lbnRyaWVzKHhzKSkge1xuICAgIGlmICh2ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldFtrXSA9IHY7XG4gICAgfVxuICB9XG4gIHJldHVybiByZXQ7XG59XG5cbmZ1bmN0aW9uIHN0cmlwRW51bUVycm9ycyhlcnJvcnM6IGpzb25zY2hlbWEuVmFsaWRhdGlvbkVycm9yW10pIHtcbiAgcmV0dXJuIGVycm9ycy5maWx0ZXIoKGUpID0+IHR5cGVvZiBlLnNjaGVtYSA9PT0gJ3N0cmluZycgfHwgISgnZW51bScgaW4gZS5zY2hlbWEpKTtcbn1cbiJdfQ==","'use strict';\n\nvar helpers = require('./helpers');\n\n/** @type ValidatorResult */\nvar ValidatorResult = helpers.ValidatorResult;\n/** @type SchemaError */\nvar SchemaError = helpers.SchemaError;\n\nvar attribute = {};\n\nattribute.ignoreProperties = {\n // informative properties\n 'id': true,\n 'default': true,\n 'description': true,\n 'title': true,\n // arguments to other properties\n 'additionalItems': true,\n 'then': true,\n 'else': true,\n // special-handled properties\n '$schema': true,\n '$ref': true,\n 'extends': true,\n};\n\n/**\n * @name validators\n */\nvar validators = attribute.validators = {};\n\n/**\n * Validates whether the instance if of a certain type\n * @param instance\n * @param schema\n * @param options\n * @param ctx\n * @return {ValidatorResult|null}\n */\nvalidators.type = function validateType (instance, schema, options, ctx) {\n // Ignore undefined instances\n if (instance === undefined) {\n return null;\n }\n var result = new ValidatorResult(instance, schema, options, ctx);\n var types = Array.isArray(schema.type) ? schema.type : [schema.type];\n if (!types.some(this.testType.bind(this, instance, schema, options, ctx))) {\n var list = types.map(function (v) {\n if(!v) return;\n var id = v.$id || v.id;\n return id ? ('<' + id + '>') : (v+'');\n });\n result.addError({\n name: 'type',\n argument: list,\n message: \"is not of a type(s) \" + list,\n });\n }\n return result;\n};\n\nfunction testSchemaNoThrow(instance, options, ctx, callback, schema){\n var throwError = options.throwError;\n var throwAll = options.throwAll;\n options.throwError = false;\n options.throwAll = false;\n var res = this.validateSchema(instance, schema, options, ctx);\n options.throwError = throwError;\n options.throwAll = throwAll;\n\n if (!res.valid && callback instanceof Function) {\n callback(res);\n }\n return res.valid;\n}\n\n/**\n * Validates whether the instance matches some of the given schemas\n * @param instance\n * @param schema\n * @param options\n * @param ctx\n * @return {ValidatorResult|null}\n */\nvalidators.anyOf = function validateAnyOf (instance, schema, options, ctx) {\n // Ignore undefined instances\n if (instance === undefined) {\n return null;\n }\n var result = new ValidatorResult(instance, schema, options, ctx);\n var inner = new ValidatorResult(instance, schema, options, ctx);\n if (!Array.isArray(schema.anyOf)){\n throw new SchemaError(\"anyOf must be an array\");\n }\n if (!schema.anyOf.some(\n testSchemaNoThrow.bind(\n this, instance, options, ctx, function(res){inner.importErrors(res);}\n ))) {\n var list = schema.anyOf.map(function (v, i) {\n var id = v.$id || v.id;\n if(id) return '<' + id + '>';\n return(v.title && JSON.stringify(v.title)) || (v['$ref'] && ('<' + v['$ref'] + '>')) || '[subschema '+i+']';\n });\n if (options.nestedErrors) {\n result.importErrors(inner);\n }\n result.addError({\n name: 'anyOf',\n argument: list,\n message: \"is not any of \" + list.join(','),\n });\n }\n return result;\n};\n\n/**\n * Validates whether the instance matches every given schema\n * @param instance\n * @param schema\n * @param options\n * @param ctx\n * @return {String|null}\n */\nvalidators.allOf = function validateAllOf (instance, schema, options, ctx) {\n // Ignore undefined instances\n if (instance === undefined) {\n return null;\n }\n if (!Array.isArray(schema.allOf)){\n throw new SchemaError(\"allOf must be an array\");\n }\n var result = new ValidatorResult(instance, schema, options, ctx);\n var self = this;\n schema.allOf.forEach(function(v, i){\n var valid = self.validateSchema(instance, v, options, ctx);\n if(!valid.valid){\n var id = v.$id || v.id;\n var msg = id || (v.title && JSON.stringify(v.title)) || (v['$ref'] && ('<' + v['$ref'] + '>')) || '[subschema '+i+']';\n result.addError({\n name: 'allOf',\n argument: { id: msg, length: valid.errors.length, valid: valid },\n message: 'does not match allOf schema ' + msg + ' with ' + valid.errors.length + ' error[s]:',\n });\n result.importErrors(valid);\n }\n });\n return result;\n};\n\n/**\n * Validates whether the instance matches exactly one of the given schemas\n * @param instance\n * @param schema\n * @param options\n * @param ctx\n * @return {String|null}\n */\nvalidators.oneOf = function validateOneOf (instance, schema, options, ctx) {\n // Ignore undefined instances\n if (instance === undefined) {\n return null;\n }\n if (!Array.isArray(schema.oneOf)){\n throw new SchemaError(\"oneOf must be an array\");\n }\n var result = new ValidatorResult(instance, schema, options, ctx);\n var inner = new ValidatorResult(instance, schema, options, ctx);\n var count = schema.oneOf.filter(\n testSchemaNoThrow.bind(\n this, instance, options, ctx, function(res) {inner.importErrors(res);}\n ) ).length;\n var list = schema.oneOf.map(function (v, i) {\n var id = v.$id || v.id;\n return id || (v.title && JSON.stringify(v.title)) || (v['$ref'] && ('<' + v['$ref'] + '>')) || '[subschema '+i+']';\n });\n if (count!==1) {\n if (options.nestedErrors) {\n result.importErrors(inner);\n }\n result.addError({\n name: 'oneOf',\n argument: list,\n message: \"is not exactly one from \" + list.join(','),\n });\n }\n return result;\n};\n\n/**\n * Validates \"then\" or \"else\" depending on the result of validating \"if\"\n * @param instance\n * @param schema\n * @param options\n * @param ctx\n * @return {String|null}\n */\nvalidators.if = function validateIf (instance, schema, options, ctx) {\n // Ignore undefined instances\n if (instance === undefined) return null;\n if (!helpers.isSchema(schema.if)) throw new Error('Expected \"if\" keyword to be a schema');\n var ifValid = testSchemaNoThrow.call(this, instance, options, ctx, null, schema.if);\n var result = new ValidatorResult(instance, schema, options, ctx);\n var res;\n if(ifValid){\n if (schema.then === undefined) return;\n if (!helpers.isSchema(schema.then)) throw new Error('Expected \"then\" keyword to be a schema');\n res = this.validateSchema(instance, schema.then, options, ctx.makeChild(schema.then));\n result.importErrors(res);\n }else{\n if (schema.else === undefined) return;\n if (!helpers.isSchema(schema.else)) throw new Error('Expected \"else\" keyword to be a schema');\n res = this.validateSchema(instance, schema.else, options, ctx.makeChild(schema.else));\n result.importErrors(res);\n }\n return result;\n};\n\nfunction getEnumerableProperty(object, key){\n // Determine if `key` shows up in `for(var key in object)`\n // First test Object.hasOwnProperty.call as an optimization: that guarantees it does\n if(Object.hasOwnProperty.call(object, key)) return object[key];\n // Test `key in object` as an optimization; false means it won't\n if(!(key in object)) return;\n while( (object = Object.getPrototypeOf(object)) ){\n if(Object.propertyIsEnumerable.call(object, key)) return object[key];\n }\n}\n\n/**\n * Validates propertyNames\n * @param instance\n * @param schema\n * @param options\n * @param ctx\n * @return {String|null|ValidatorResult}\n */\nvalidators.propertyNames = function validatePropertyNames (instance, schema, options, ctx) {\n if(!this.types.object(instance)) return;\n var result = new ValidatorResult(instance, schema, options, ctx);\n var subschema = schema.propertyNames!==undefined ? schema.propertyNames : {};\n if(!helpers.isSchema(subschema)) throw new SchemaError('Expected \"propertyNames\" to be a schema (object or boolean)');\n\n for (var property in instance) {\n if(getEnumerableProperty(instance, property) !== undefined){\n var res = this.validateSchema(property, subschema, options, ctx.makeChild(subschema));\n result.importErrors(res);\n }\n }\n\n return result;\n};\n\n/**\n * Validates properties\n * @param instance\n * @param schema\n * @param options\n * @param ctx\n * @return {String|null|ValidatorResult}\n */\nvalidators.properties = function validateProperties (instance, schema, options, ctx) {\n if(!this.types.object(instance)) return;\n var result = new ValidatorResult(instance, schema, options, ctx);\n var properties = schema.properties || {};\n for (var property in properties) {\n var subschema = properties[property];\n if(subschema===undefined){\n continue;\n }else if(subschema===null){\n throw new SchemaError('Unexpected null, expected schema in \"properties\"');\n }\n if (typeof options.preValidateProperty == 'function') {\n options.preValidateProperty(instance, property, subschema, options, ctx);\n }\n var prop = getEnumerableProperty(instance, property);\n var res = this.validateSchema(prop, subschema, options, ctx.makeChild(subschema, property));\n if(res.instance !== result.instance[property]) result.instance[property] = res.instance;\n result.importErrors(res);\n }\n return result;\n};\n\n/**\n * Test a specific property within in instance against the additionalProperties schema attribute\n * This ignores properties with definitions in the properties schema attribute, but no other attributes.\n * If too many more types of property-existence tests pop up they may need their own class of tests (like `type` has)\n * @private\n * @return {boolean}\n */\nfunction testAdditionalProperty (instance, schema, options, ctx, property, result) {\n if(!this.types.object(instance)) return;\n if (schema.properties && schema.properties[property] !== undefined) {\n return;\n }\n if (schema.additionalProperties === false) {\n result.addError({\n name: 'additionalProperties',\n argument: property,\n message: \"is not allowed to have the additional property \" + JSON.stringify(property),\n });\n } else {\n var additionalProperties = schema.additionalProperties || {};\n\n if (typeof options.preValidateProperty == 'function') {\n options.preValidateProperty(instance, property, additionalProperties, options, ctx);\n }\n\n var res = this.validateSchema(instance[property], additionalProperties, options, ctx.makeChild(additionalProperties, property));\n if(res.instance !== result.instance[property]) result.instance[property] = res.instance;\n result.importErrors(res);\n }\n}\n\n/**\n * Validates patternProperties\n * @param instance\n * @param schema\n * @param options\n * @param ctx\n * @return {String|null|ValidatorResult}\n */\nvalidators.patternProperties = function validatePatternProperties (instance, schema, options, ctx) {\n if(!this.types.object(instance)) return;\n var result = new ValidatorResult(instance, schema, options, ctx);\n var patternProperties = schema.patternProperties || {};\n\n for (var property in instance) {\n var test = true;\n for (var pattern in patternProperties) {\n var subschema = patternProperties[pattern];\n if(subschema===undefined){\n continue;\n }else if(subschema===null){\n throw new SchemaError('Unexpected null, expected schema in \"patternProperties\"');\n }\n try {\n var regexp = new RegExp(pattern, 'u');\n } catch(_e) {\n // In the event the stricter handling causes an error, fall back on the forgiving handling\n // DEPRECATED\n regexp = new RegExp(pattern);\n }\n if (!regexp.test(property)) {\n continue;\n }\n test = false;\n\n if (typeof options.preValidateProperty == 'function') {\n options.preValidateProperty(instance, property, subschema, options, ctx);\n }\n\n var res = this.validateSchema(instance[property], subschema, options, ctx.makeChild(subschema, property));\n if(res.instance !== result.instance[property]) result.instance[property] = res.instance;\n result.importErrors(res);\n }\n if (test) {\n testAdditionalProperty.call(this, instance, schema, options, ctx, property, result);\n }\n }\n\n return result;\n};\n\n/**\n * Validates additionalProperties\n * @param instance\n * @param schema\n * @param options\n * @param ctx\n * @return {String|null|ValidatorResult}\n */\nvalidators.additionalProperties = function validateAdditionalProperties (instance, schema, options, ctx) {\n if(!this.types.object(instance)) return;\n // if patternProperties is defined then we'll test when that one is called instead\n if (schema.patternProperties) {\n return null;\n }\n var result = new ValidatorResult(instance, schema, options, ctx);\n for (var property in instance) {\n testAdditionalProperty.call(this, instance, schema, options, ctx, property, result);\n }\n return result;\n};\n\n/**\n * Validates whether the instance value is at least of a certain length, when the instance value is a string.\n * @param instance\n * @param schema\n * @return {String|null}\n */\nvalidators.minProperties = function validateMinProperties (instance, schema, options, ctx) {\n if (!this.types.object(instance)) return;\n var result = new ValidatorResult(instance, schema, options, ctx);\n var keys = Object.keys(instance);\n if (!(keys.length >= schema.minProperties)) {\n result.addError({\n name: 'minProperties',\n argument: schema.minProperties,\n message: \"does not meet minimum property length of \" + schema.minProperties,\n });\n }\n return result;\n};\n\n/**\n * Validates whether the instance value is at most of a certain length, when the instance value is a string.\n * @param instance\n * @param schema\n * @return {String|null}\n */\nvalidators.maxProperties = function validateMaxProperties (instance, schema, options, ctx) {\n if (!this.types.object(instance)) return;\n var result = new ValidatorResult(instance, schema, options, ctx);\n var keys = Object.keys(instance);\n if (!(keys.length <= schema.maxProperties)) {\n result.addError({\n name: 'maxProperties',\n argument: schema.maxProperties,\n message: \"does not meet maximum property length of \" + schema.maxProperties,\n });\n }\n return result;\n};\n\n/**\n * Validates items when instance is an array\n * @param instance\n * @param schema\n * @param options\n * @param ctx\n * @return {String|null|ValidatorResult}\n */\nvalidators.items = function validateItems (instance, schema, options, ctx) {\n var self = this;\n if (!this.types.array(instance)) return;\n if (schema.items===undefined) return;\n var result = new ValidatorResult(instance, schema, options, ctx);\n instance.every(function (value, i) {\n if(Array.isArray(schema.items)){\n var items = schema.items[i]===undefined ? schema.additionalItems : schema.items[i];\n }else{\n var items = schema.items;\n }\n if (items === undefined) {\n return true;\n }\n if (items === false) {\n result.addError({\n name: 'items',\n message: \"additionalItems not permitted\",\n });\n return false;\n }\n var res = self.validateSchema(value, items, options, ctx.makeChild(items, i));\n if(res.instance !== result.instance[i]) result.instance[i] = res.instance;\n result.importErrors(res);\n return true;\n });\n return result;\n};\n\n/**\n * Validates the \"contains\" keyword\n * @param instance\n * @param schema\n * @param options\n * @param ctx\n * @return {String|null|ValidatorResult}\n */\nvalidators.contains = function validateContains (instance, schema, options, ctx) {\n var self = this;\n if (!this.types.array(instance)) return;\n if (schema.contains===undefined) return;\n if (!helpers.isSchema(schema.contains)) throw new Error('Expected \"contains\" keyword to be a schema');\n var result = new ValidatorResult(instance, schema, options, ctx);\n var count = instance.some(function (value, i) {\n var res = self.validateSchema(value, schema.contains, options, ctx.makeChild(schema.contains, i));\n return res.errors.length===0;\n });\n if(count===false){\n result.addError({\n name: 'contains',\n argument: schema.contains,\n message: \"must contain an item matching given schema\",\n });\n }\n return result;\n};\n\n/**\n * Validates minimum and exclusiveMinimum when the type of the instance value is a number.\n * @param instance\n * @param schema\n * @return {String|null}\n */\nvalidators.minimum = function validateMinimum (instance, schema, options, ctx) {\n if (!this.types.number(instance)) return;\n var result = new ValidatorResult(instance, schema, options, ctx);\n if (schema.exclusiveMinimum && schema.exclusiveMinimum === true) {\n if(!(instance > schema.minimum)){\n result.addError({\n name: 'minimum',\n argument: schema.minimum,\n message: \"must be greater than \" + schema.minimum,\n });\n }\n } else {\n if(!(instance >= schema.minimum)){\n result.addError({\n name: 'minimum',\n argument: schema.minimum,\n message: \"must be greater than or equal to \" + schema.minimum,\n });\n }\n }\n return result;\n};\n\n/**\n * Validates maximum and exclusiveMaximum when the type of the instance value is a number.\n * @param instance\n * @param schema\n * @return {String|null}\n */\nvalidators.maximum = function validateMaximum (instance, schema, options, ctx) {\n if (!this.types.number(instance)) return;\n var result = new ValidatorResult(instance, schema, options, ctx);\n if (schema.exclusiveMaximum && schema.exclusiveMaximum === true) {\n if(!(instance < schema.maximum)){\n result.addError({\n name: 'maximum',\n argument: schema.maximum,\n message: \"must be less than \" + schema.maximum,\n });\n }\n } else {\n if(!(instance <= schema.maximum)){\n result.addError({\n name: 'maximum',\n argument: schema.maximum,\n message: \"must be less than or equal to \" + schema.maximum,\n });\n }\n }\n return result;\n};\n\n/**\n * Validates the number form of exclusiveMinimum when the type of the instance value is a number.\n * @param instance\n * @param schema\n * @return {String|null}\n */\nvalidators.exclusiveMinimum = function validateExclusiveMinimum (instance, schema, options, ctx) {\n // Support the boolean form of exclusiveMinimum, which is handled by the \"minimum\" keyword.\n if(typeof schema.exclusiveMinimum === 'boolean') return;\n if (!this.types.number(instance)) return;\n var result = new ValidatorResult(instance, schema, options, ctx);\n var valid = instance > schema.exclusiveMinimum;\n if (!valid) {\n result.addError({\n name: 'exclusiveMinimum',\n argument: schema.exclusiveMinimum,\n message: \"must be strictly greater than \" + schema.exclusiveMinimum,\n });\n }\n return result;\n};\n\n/**\n * Validates the number form of exclusiveMaximum when the type of the instance value is a number.\n * @param instance\n * @param schema\n * @return {String|null}\n */\nvalidators.exclusiveMaximum = function validateExclusiveMaximum (instance, schema, options, ctx) {\n // Support the boolean form of exclusiveMaximum, which is handled by the \"maximum\" keyword.\n if(typeof schema.exclusiveMaximum === 'boolean') return;\n if (!this.types.number(instance)) return;\n var result = new ValidatorResult(instance, schema, options, ctx);\n var valid = instance < schema.exclusiveMaximum;\n if (!valid) {\n result.addError({\n name: 'exclusiveMaximum',\n argument: schema.exclusiveMaximum,\n message: \"must be strictly less than \" + schema.exclusiveMaximum,\n });\n }\n return result;\n};\n\n/**\n * Perform validation for multipleOf and divisibleBy, which are essentially the same.\n * @param instance\n * @param schema\n * @param validationType\n * @param errorMessage\n * @returns {String|null}\n */\nvar validateMultipleOfOrDivisbleBy = function validateMultipleOfOrDivisbleBy (instance, schema, options, ctx, validationType, errorMessage) {\n if (!this.types.number(instance)) return;\n\n var validationArgument = schema[validationType];\n if (validationArgument == 0) {\n throw new SchemaError(validationType + \" cannot be zero\");\n }\n\n var result = new ValidatorResult(instance, schema, options, ctx);\n\n var instanceDecimals = helpers.getDecimalPlaces(instance);\n var divisorDecimals = helpers.getDecimalPlaces(validationArgument);\n\n var maxDecimals = Math.max(instanceDecimals , divisorDecimals);\n var multiplier = Math.pow(10, maxDecimals);\n\n if (Math.round(instance * multiplier) % Math.round(validationArgument * multiplier) !== 0) {\n result.addError({\n name: validationType,\n argument: validationArgument,\n message: errorMessage + JSON.stringify(validationArgument),\n });\n }\n\n return result;\n};\n\n/**\n * Validates divisibleBy when the type of the instance value is a number.\n * @param instance\n * @param schema\n * @return {String|null}\n */\nvalidators.multipleOf = function validateMultipleOf (instance, schema, options, ctx) {\n return validateMultipleOfOrDivisbleBy.call(this, instance, schema, options, ctx, \"multipleOf\", \"is not a multiple of (divisible by) \");\n};\n\n/**\n * Validates multipleOf when the type of the instance value is a number.\n * @param instance\n * @param schema\n * @return {String|null}\n */\nvalidators.divisibleBy = function validateDivisibleBy (instance, schema, options, ctx) {\n return validateMultipleOfOrDivisbleBy.call(this, instance, schema, options, ctx, \"divisibleBy\", \"is not divisible by (multiple of) \");\n};\n\n/**\n * Validates whether the instance value is present.\n * @param instance\n * @param schema\n * @return {String|null}\n */\nvalidators.required = function validateRequired (instance, schema, options, ctx) {\n var result = new ValidatorResult(instance, schema, options, ctx);\n if (instance === undefined && schema.required === true) {\n // A boolean form is implemented for reverse-compatibility with schemas written against older drafts\n result.addError({\n name: 'required',\n message: \"is required\",\n });\n } else if (this.types.object(instance) && Array.isArray(schema.required)) {\n schema.required.forEach(function(n){\n if(getEnumerableProperty(instance, n)===undefined){\n result.addError({\n name: 'required',\n argument: n,\n message: \"requires property \" + JSON.stringify(n),\n });\n }\n });\n }\n return result;\n};\n\n/**\n * Validates whether the instance value matches the regular expression, when the instance value is a string.\n * @param instance\n * @param schema\n * @return {String|null}\n */\nvalidators.pattern = function validatePattern (instance, schema, options, ctx) {\n if (!this.types.string(instance)) return;\n var result = new ValidatorResult(instance, schema, options, ctx);\n var pattern = schema.pattern;\n try {\n var regexp = new RegExp(pattern, 'u');\n } catch(_e) {\n // In the event the stricter handling causes an error, fall back on the forgiving handling\n // DEPRECATED\n regexp = new RegExp(pattern);\n }\n if (!instance.match(regexp)) {\n result.addError({\n name: 'pattern',\n argument: schema.pattern,\n message: \"does not match pattern \" + JSON.stringify(schema.pattern.toString()),\n });\n }\n return result;\n};\n\n/**\n * Validates whether the instance value is of a certain defined format or a custom\n * format.\n * The following formats are supported for string types:\n * - date-time\n * - date\n * - time\n * - ip-address\n * - ipv6\n * - uri\n * - color\n * - host-name\n * - alpha\n * - alpha-numeric\n * - utc-millisec\n * @param instance\n * @param schema\n * @param [options]\n * @param [ctx]\n * @return {String|null}\n */\nvalidators.format = function validateFormat (instance, schema, options, ctx) {\n if (instance===undefined) return;\n var result = new ValidatorResult(instance, schema, options, ctx);\n if (!result.disableFormat && !helpers.isFormat(instance, schema.format, this)) {\n result.addError({\n name: 'format',\n argument: schema.format,\n message: \"does not conform to the \" + JSON.stringify(schema.format) + \" format\",\n });\n }\n return result;\n};\n\n/**\n * Validates whether the instance value is at least of a certain length, when the instance value is a string.\n * @param instance\n * @param schema\n * @return {String|null}\n */\nvalidators.minLength = function validateMinLength (instance, schema, options, ctx) {\n if (!this.types.string(instance)) return;\n var result = new ValidatorResult(instance, schema, options, ctx);\n var hsp = instance.match(/[\\uDC00-\\uDFFF]/g);\n var length = instance.length - (hsp ? hsp.length : 0);\n if (!(length >= schema.minLength)) {\n result.addError({\n name: 'minLength',\n argument: schema.minLength,\n message: \"does not meet minimum length of \" + schema.minLength,\n });\n }\n return result;\n};\n\n/**\n * Validates whether the instance value is at most of a certain length, when the instance value is a string.\n * @param instance\n * @param schema\n * @return {String|null}\n */\nvalidators.maxLength = function validateMaxLength (instance, schema, options, ctx) {\n if (!this.types.string(instance)) return;\n var result = new ValidatorResult(instance, schema, options, ctx);\n // TODO if this was already computed in \"minLength\", use that value instead of re-computing\n var hsp = instance.match(/[\\uDC00-\\uDFFF]/g);\n var length = instance.length - (hsp ? hsp.length : 0);\n if (!(length <= schema.maxLength)) {\n result.addError({\n name: 'maxLength',\n argument: schema.maxLength,\n message: \"does not meet maximum length of \" + schema.maxLength,\n });\n }\n return result;\n};\n\n/**\n * Validates whether instance contains at least a minimum number of items, when the instance is an Array.\n * @param instance\n * @param schema\n * @return {String|null}\n */\nvalidators.minItems = function validateMinItems (instance, schema, options, ctx) {\n if (!this.types.array(instance)) return;\n var result = new ValidatorResult(instance, schema, options, ctx);\n if (!(instance.length >= schema.minItems)) {\n result.addError({\n name: 'minItems',\n argument: schema.minItems,\n message: \"does not meet minimum length of \" + schema.minItems,\n });\n }\n return result;\n};\n\n/**\n * Validates whether instance contains no more than a maximum number of items, when the instance is an Array.\n * @param instance\n * @param schema\n * @return {String|null}\n */\nvalidators.maxItems = function validateMaxItems (instance, schema, options, ctx) {\n if (!this.types.array(instance)) return;\n var result = new ValidatorResult(instance, schema, options, ctx);\n if (!(instance.length <= schema.maxItems)) {\n result.addError({\n name: 'maxItems',\n argument: schema.maxItems,\n message: \"does not meet maximum length of \" + schema.maxItems,\n });\n }\n return result;\n};\n\n/**\n * Deep compares arrays for duplicates\n * @param v\n * @param i\n * @param a\n * @private\n * @return {boolean}\n */\nfunction testArrays (v, i, a) {\n var j, len = a.length;\n for (j = i + 1, len; j < len; j++) {\n if (helpers.deepCompareStrict(v, a[j])) {\n return false;\n }\n }\n return true;\n}\n\n/**\n * Validates whether there are no duplicates, when the instance is an Array.\n * @param instance\n * @return {String|null}\n */\nvalidators.uniqueItems = function validateUniqueItems (instance, schema, options, ctx) {\n if (schema.uniqueItems!==true) return;\n if (!this.types.array(instance)) return;\n var result = new ValidatorResult(instance, schema, options, ctx);\n if (!instance.every(testArrays)) {\n result.addError({\n name: 'uniqueItems',\n message: \"contains duplicate item\",\n });\n }\n return result;\n};\n\n/**\n * Validate for the presence of dependency properties, if the instance is an object.\n * @param instance\n * @param schema\n * @param options\n * @param ctx\n * @return {null|ValidatorResult}\n */\nvalidators.dependencies = function validateDependencies (instance, schema, options, ctx) {\n if (!this.types.object(instance)) return;\n var result = new ValidatorResult(instance, schema, options, ctx);\n for (var property in schema.dependencies) {\n if (instance[property] === undefined) {\n continue;\n }\n var dep = schema.dependencies[property];\n var childContext = ctx.makeChild(dep, property);\n if (typeof dep == 'string') {\n dep = [dep];\n }\n if (Array.isArray(dep)) {\n dep.forEach(function (prop) {\n if (instance[prop] === undefined) {\n result.addError({\n // FIXME there's two different \"dependencies\" errors here with slightly different outputs\n // Can we make these the same? Or should we create different error types?\n name: 'dependencies',\n argument: childContext.propertyPath,\n message: \"property \" + prop + \" not found, required by \" + childContext.propertyPath,\n });\n }\n });\n } else {\n var res = this.validateSchema(instance, dep, options, childContext);\n if(result.instance !== res.instance) result.instance = res.instance;\n if (res && res.errors.length) {\n result.addError({\n name: 'dependencies',\n argument: childContext.propertyPath,\n message: \"does not meet dependency required by \" + childContext.propertyPath,\n });\n result.importErrors(res);\n }\n }\n }\n return result;\n};\n\n/**\n * Validates whether the instance value is one of the enumerated values.\n *\n * @param instance\n * @param schema\n * @return {ValidatorResult|null}\n */\nvalidators['enum'] = function validateEnum (instance, schema, options, ctx) {\n if (instance === undefined) {\n return null;\n }\n if (!Array.isArray(schema['enum'])) {\n throw new SchemaError(\"enum expects an array\", schema);\n }\n var result = new ValidatorResult(instance, schema, options, ctx);\n if (!schema['enum'].some(helpers.deepCompareStrict.bind(null, instance))) {\n result.addError({\n name: 'enum',\n argument: schema['enum'],\n message: \"is not one of enum values: \" + schema['enum'].map(String).join(','),\n });\n }\n return result;\n};\n\n/**\n * Validates whether the instance exactly matches a given value\n *\n * @param instance\n * @param schema\n * @return {ValidatorResult|null}\n */\nvalidators['const'] = function validateEnum (instance, schema, options, ctx) {\n if (instance === undefined) {\n return null;\n }\n var result = new ValidatorResult(instance, schema, options, ctx);\n if (!helpers.deepCompareStrict(schema['const'], instance)) {\n result.addError({\n name: 'const',\n argument: schema['const'],\n message: \"does not exactly match expected constant: \" + schema['const'],\n });\n }\n return result;\n};\n\n/**\n * Validates whether the instance if of a prohibited type.\n * @param instance\n * @param schema\n * @param options\n * @param ctx\n * @return {null|ValidatorResult}\n */\nvalidators.not = validators.disallow = function validateNot (instance, schema, options, ctx) {\n var self = this;\n if(instance===undefined) return null;\n var result = new ValidatorResult(instance, schema, options, ctx);\n var notTypes = schema.not || schema.disallow;\n if(!notTypes) return null;\n if(!Array.isArray(notTypes)) notTypes=[notTypes];\n notTypes.forEach(function (type) {\n if (self.testType(instance, schema, options, ctx, type)) {\n var id = type && (type.$id || type.id);\n var schemaId = id || type;\n result.addError({\n name: 'not',\n argument: schemaId,\n message: \"is of prohibited type \" + schemaId,\n });\n }\n });\n return result;\n};\n\nmodule.exports = attribute;\n","'use strict';\n\nvar uri = require('url');\n\nvar ValidationError = exports.ValidationError = function ValidationError (message, instance, schema, path, name, argument) {\n if(Array.isArray(path)){\n this.path = path;\n this.property = path.reduce(function(sum, item){\n return sum + makeSuffix(item);\n }, 'instance');\n }else if(path !== undefined){\n this.property = path;\n }\n if (message) {\n this.message = message;\n }\n if (schema) {\n var id = schema.$id || schema.id;\n this.schema = id || schema;\n }\n if (instance !== undefined) {\n this.instance = instance;\n }\n this.name = name;\n this.argument = argument;\n this.stack = this.toString();\n};\n\nValidationError.prototype.toString = function toString() {\n return this.property + ' ' + this.message;\n};\n\nvar ValidatorResult = exports.ValidatorResult = function ValidatorResult(instance, schema, options, ctx) {\n this.instance = instance;\n this.schema = schema;\n this.options = options;\n this.path = ctx.path;\n this.propertyPath = ctx.propertyPath;\n this.errors = [];\n this.throwError = options && options.throwError;\n this.throwFirst = options && options.throwFirst;\n this.throwAll = options && options.throwAll;\n this.disableFormat = options && options.disableFormat === true;\n};\n\nValidatorResult.prototype.addError = function addError(detail) {\n var err;\n if (typeof detail == 'string') {\n err = new ValidationError(detail, this.instance, this.schema, this.path);\n } else {\n if (!detail) throw new Error('Missing error detail');\n if (!detail.message) throw new Error('Missing error message');\n if (!detail.name) throw new Error('Missing validator type');\n err = new ValidationError(detail.message, this.instance, this.schema, this.path, detail.name, detail.argument);\n }\n\n this.errors.push(err);\n if (this.throwFirst) {\n throw new ValidatorResultError(this);\n }else if(this.throwError){\n throw err;\n }\n return err;\n};\n\nValidatorResult.prototype.importErrors = function importErrors(res) {\n if (typeof res == 'string' || (res && res.validatorType)) {\n this.addError(res);\n } else if (res && res.errors) {\n this.errors = this.errors.concat(res.errors);\n }\n};\n\nfunction stringizer (v,i){\n return i+': '+v.toString()+'\\n';\n}\nValidatorResult.prototype.toString = function toString(res) {\n return this.errors.map(stringizer).join('');\n};\n\nObject.defineProperty(ValidatorResult.prototype, \"valid\", { get: function() {\n return !this.errors.length;\n} });\n\nmodule.exports.ValidatorResultError = ValidatorResultError;\nfunction ValidatorResultError(result) {\n if(Error.captureStackTrace){\n Error.captureStackTrace(this, ValidatorResultError);\n }\n this.instance = result.instance;\n this.schema = result.schema;\n this.options = result.options;\n this.errors = result.errors;\n}\nValidatorResultError.prototype = new Error();\nValidatorResultError.prototype.constructor = ValidatorResultError;\nValidatorResultError.prototype.name = \"Validation Error\";\n\n/**\n * Describes a problem with a Schema which prevents validation of an instance\n * @name SchemaError\n * @constructor\n */\nvar SchemaError = exports.SchemaError = function SchemaError (msg, schema) {\n this.message = msg;\n this.schema = schema;\n Error.call(this, msg);\n Error.captureStackTrace(this, SchemaError);\n};\nSchemaError.prototype = Object.create(Error.prototype,\n {\n constructor: {value: SchemaError, enumerable: false},\n name: {value: 'SchemaError', enumerable: false},\n });\n\nvar SchemaContext = exports.SchemaContext = function SchemaContext (schema, options, path, base, schemas) {\n this.schema = schema;\n this.options = options;\n if(Array.isArray(path)){\n this.path = path;\n this.propertyPath = path.reduce(function(sum, item){\n return sum + makeSuffix(item);\n }, 'instance');\n }else{\n this.propertyPath = path;\n }\n this.base = base;\n this.schemas = schemas;\n};\n\nSchemaContext.prototype.resolve = function resolve (target) {\n return uri.resolve(this.base, target);\n};\n\nSchemaContext.prototype.makeChild = function makeChild(schema, propertyName){\n var path = (propertyName===undefined) ? this.path : this.path.concat([propertyName]);\n var id = schema.$id || schema.id;\n var base = uri.resolve(this.base, id||'');\n var ctx = new SchemaContext(schema, this.options, path, base, Object.create(this.schemas));\n if(id && !ctx.schemas[base]){\n ctx.schemas[base] = schema;\n }\n return ctx;\n};\n\nvar FORMAT_REGEXPS = exports.FORMAT_REGEXPS = {\n // 7.3.1. Dates, Times, and Duration\n 'date-time': /^\\d{4}-(?:0[0-9]{1}|1[0-2]{1})-(3[01]|0[1-9]|[12][0-9])[tT ](2[0-4]|[01][0-9]):([0-5][0-9]):(60|[0-5][0-9])(\\.\\d+)?([zZ]|[+-]([0-5][0-9]):(60|[0-5][0-9]))$/,\n 'date': /^\\d{4}-(?:0[0-9]{1}|1[0-2]{1})-(3[01]|0[1-9]|[12][0-9])$/,\n 'time': /^(2[0-4]|[01][0-9]):([0-5][0-9]):(60|[0-5][0-9])$/,\n 'duration': /P(T\\d+(H(\\d+M(\\d+S)?)?|M(\\d+S)?|S)|\\d+(D|M(\\d+D)?|Y(\\d+M(\\d+D)?)?)(T\\d+(H(\\d+M(\\d+S)?)?|M(\\d+S)?|S))?|\\d+W)/i,\n\n // 7.3.2. Email Addresses\n // TODO: fix the email production\n 'email': /^(?:[\\w\\!\\#\\$\\%\\&\\'\\*\\+\\-\\/\\=\\?\\^\\`\\{\\|\\}\\~]+\\.)*[\\w\\!\\#\\$\\%\\&\\'\\*\\+\\-\\/\\=\\?\\^\\`\\{\\|\\}\\~]+@(?:(?:(?:[a-zA-Z0-9](?:[a-zA-Z0-9\\-](?!\\.)){0,61}[a-zA-Z0-9]?\\.)+[a-zA-Z0-9](?:[a-zA-Z0-9\\-](?!$)){0,61}[a-zA-Z0-9]?)|(?:\\[(?:(?:[01]?\\d{1,2}|2[0-4]\\d|25[0-5])\\.){3}(?:[01]?\\d{1,2}|2[0-4]\\d|25[0-5])\\]))$/,\n 'idn-email': /^(\"(?:[!#-\\[\\]-\\u{10FFFF}]|\\\\[\\t -\\u{10FFFF}])*\"|[!#-'*+\\-/-9=?A-Z\\^-\\u{10FFFF}](?:\\.?[!#-'*+\\-/-9=?A-Z\\^-\\u{10FFFF}])*)@([!#-'*+\\-/-9=?A-Z\\^-\\u{10FFFF}](?:\\.?[!#-'*+\\-/-9=?A-Z\\^-\\u{10FFFF}])*|\\[[!-Z\\^-\\u{10FFFF}]*\\])$/u,\n\n // 7.3.3. Hostnames\n\n // 7.3.4. IP Addresses\n 'ip-address': /^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/,\n // FIXME whitespace is invalid\n 'ipv6': /^\\s*((([0-9A-Fa-f]{1,4}:){7}([0-9A-Fa-f]{1,4}|:))|(([0-9A-Fa-f]{1,4}:){6}(:[0-9A-Fa-f]{1,4}|((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){5}(((:[0-9A-Fa-f]{1,4}){1,2})|:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){4}(((:[0-9A-Fa-f]{1,4}){1,3})|((:[0-9A-Fa-f]{1,4})?:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){3}(((:[0-9A-Fa-f]{1,4}){1,4})|((:[0-9A-Fa-f]{1,4}){0,2}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){2}(((:[0-9A-Fa-f]{1,4}){1,5})|((:[0-9A-Fa-f]{1,4}){0,3}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){1}(((:[0-9A-Fa-f]{1,4}){1,6})|((:[0-9A-Fa-f]{1,4}){0,4}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(:(((:[0-9A-Fa-f]{1,4}){1,7})|((:[0-9A-Fa-f]{1,4}){0,5}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:)))(%.+)?\\s*$/,\n\n // 7.3.5. Resource Identifiers\n // TODO: A more accurate regular expression for \"uri\" goes:\n // [A-Za-z][+\\-.0-9A-Za-z]*:((/(/((%[0-9A-Fa-f]{2}|[!$&-.0-9;=A-Z_a-z~])+|(\\[(([Vv][0-9A-Fa-f]+\\.[!$&-.0-;=A-Z_a-z~]+)?|[.0-:A-Fa-f]+)\\])?)(:\\d*)?)?)?#(%[0-9A-Fa-f]{2}|[!$&-;=?-Z_a-z~])*|(/(/((%[0-9A-Fa-f]{2}|[!$&-.0-9;=A-Z_a-z~])+|(\\[(([Vv][0-9A-Fa-f]+\\.[!$&-.0-;=A-Z_a-z~]+)?|[.0-:A-Fa-f]+)\\])?)(:\\d*)?[/?]|[!$&-.0-;=?-Z_a-z~])|/?%[0-9A-Fa-f]{2}|[!$&-.0-;=?-Z_a-z~])(%[0-9A-Fa-f]{2}|[!$&-;=?-Z_a-z~])*(#(%[0-9A-Fa-f]{2}|[!$&-;=?-Z_a-z~])*)?|/(/((%[0-9A-Fa-f]{2}|[!$&-.0-9;=A-Z_a-z~])+(:\\d*)?|(\\[(([Vv][0-9A-Fa-f]+\\.[!$&-.0-;=A-Z_a-z~]+)?|[.0-:A-Fa-f]+)\\])?:\\d*|\\[(([Vv][0-9A-Fa-f]+\\.[!$&-.0-;=A-Z_a-z~]+)?|[.0-:A-Fa-f]+)\\])?)?)?\n 'uri': /^[a-zA-Z][a-zA-Z0-9+.-]*:[^\\s]*$/,\n 'uri-reference': /^(((([A-Za-z][+\\-.0-9A-Za-z]*(:%[0-9A-Fa-f]{2}|:[!$&-.0-;=?-Z_a-z~]|[/?])|\\?)(%[0-9A-Fa-f]{2}|[!$&-;=?-Z_a-z~])*|([A-Za-z][+\\-.0-9A-Za-z]*:?)?)|([A-Za-z][+\\-.0-9A-Za-z]*:)?\\/((%[0-9A-Fa-f]{2}|\\/((%[0-9A-Fa-f]{2}|[!$&-.0-9;=A-Z_a-z~])+|(\\[(([Vv][0-9A-Fa-f]+\\.[!$&-.0-;=A-Z_a-z~]+)?|[.0-:A-Fa-f]+)\\])?)(:\\d*)?[/?]|[!$&-.0-;=?-Z_a-z~])(%[0-9A-Fa-f]{2}|[!$&-;=?-Z_a-z~])*|(\\/((%[0-9A-Fa-f]{2}|[!$&-.0-9;=A-Z_a-z~])+|(\\[(([Vv][0-9A-Fa-f]+\\.[!$&-.0-;=A-Z_a-z~]+)?|[.0-:A-Fa-f]+)\\])?)(:\\d*)?)?))#(%[0-9A-Fa-f]{2}|[!$&-;=?-Z_a-z~])*|(([A-Za-z][+\\-.0-9A-Za-z]*)?%[0-9A-Fa-f]{2}|[!$&-.0-9;=@_~]|[A-Za-z][+\\-.0-9A-Za-z]*[!$&-*,;=@_~])(%[0-9A-Fa-f]{2}|[!$&-.0-9;=@-Z_a-z~])*((([/?](%[0-9A-Fa-f]{2}|[!$&-;=?-Z_a-z~])*)?#|[/?])(%[0-9A-Fa-f]{2}|[!$&-;=?-Z_a-z~])*)?|([A-Za-z][+\\-.0-9A-Za-z]*(:%[0-9A-Fa-f]{2}|:[!$&-.0-;=?-Z_a-z~]|[/?])|\\?)(%[0-9A-Fa-f]{2}|[!$&-;=?-Z_a-z~])*|([A-Za-z][+\\-.0-9A-Za-z]*:)?\\/((%[0-9A-Fa-f]{2}|\\/((%[0-9A-Fa-f]{2}|[!$&-.0-9;=A-Z_a-z~])+|(\\[(([Vv][0-9A-Fa-f]+\\.[!$&-.0-;=A-Z_a-z~]+)?|[.0-:A-Fa-f]+)\\])?)(:\\d*)?[/?]|[!$&-.0-;=?-Z_a-z~])(%[0-9A-Fa-f]{2}|[!$&-;=?-Z_a-z~])*|\\/((%[0-9A-Fa-f]{2}|[!$&-.0-9;=A-Z_a-z~])+(:\\d*)?|(\\[(([Vv][0-9A-Fa-f]+\\.[!$&-.0-;=A-Z_a-z~]+)?|[.0-:A-Fa-f]+)\\])?:\\d*|\\[(([Vv][0-9A-Fa-f]+\\.[!$&-.0-;=A-Z_a-z~]+)?|[.0-:A-Fa-f]+)\\])?)?|[A-Za-z][+\\-.0-9A-Za-z]*:?)?$/,\n 'iri': /^[a-zA-Z][a-zA-Z0-9+.-]*:[^\\s]*$/,\n 'iri-reference': /^(((([A-Za-z][+\\-.0-9A-Za-z]*(:%[0-9A-Fa-f]{2}|:[!$&-.0-;=?-Z_a-z~-\\u{10FFFF}]|[/?])|\\?)(%[0-9A-Fa-f]{2}|[!$&-;=?-Z_a-z~-\\u{10FFFF}])*|([A-Za-z][+\\-.0-9A-Za-z]*:?)?)|([A-Za-z][+\\-.0-9A-Za-z]*:)?\\/((%[0-9A-Fa-f]{2}|\\/((%[0-9A-Fa-f]{2}|[!$&-.0-9;=A-Z_a-z~-\\u{10FFFF}])+|(\\[(([Vv][0-9A-Fa-f]+\\.[!$&-.0-;=A-Z_a-z~-\\u{10FFFF}]+)?|[.0-:A-Fa-f]+)\\])?)(:\\d*)?[/?]|[!$&-.0-;=?-Z_a-z~-\\u{10FFFF}])(%[0-9A-Fa-f]{2}|[!$&-;=?-Z_a-z~-\\u{10FFFF}])*|(\\/((%[0-9A-Fa-f]{2}|[!$&-.0-9;=A-Z_a-z~-\\u{10FFFF}])+|(\\[(([Vv][0-9A-Fa-f]+\\.[!$&-.0-;=A-Z_a-z~-\\u{10FFFF}]+)?|[.0-:A-Fa-f]+)\\])?)(:\\d*)?)?))#(%[0-9A-Fa-f]{2}|[!$&-;=?-Z_a-z~-\\u{10FFFF}])*|(([A-Za-z][+\\-.0-9A-Za-z]*)?%[0-9A-Fa-f]{2}|[!$&-.0-9;=@_~-\\u{10FFFF}]|[A-Za-z][+\\-.0-9A-Za-z]*[!$&-*,;=@_~-\\u{10FFFF}])(%[0-9A-Fa-f]{2}|[!$&-.0-9;=@-Z_a-z~-\\u{10FFFF}])*((([/?](%[0-9A-Fa-f]{2}|[!$&-;=?-Z_a-z~-\\u{10FFFF}])*)?#|[/?])(%[0-9A-Fa-f]{2}|[!$&-;=?-Z_a-z~-\\u{10FFFF}])*)?|([A-Za-z][+\\-.0-9A-Za-z]*(:%[0-9A-Fa-f]{2}|:[!$&-.0-;=?-Z_a-z~-\\u{10FFFF}]|[/?])|\\?)(%[0-9A-Fa-f]{2}|[!$&-;=?-Z_a-z~-\\u{10FFFF}])*|([A-Za-z][+\\-.0-9A-Za-z]*:)?\\/((%[0-9A-Fa-f]{2}|\\/((%[0-9A-Fa-f]{2}|[!$&-.0-9;=A-Z_a-z~-\\u{10FFFF}])+|(\\[(([Vv][0-9A-Fa-f]+\\.[!$&-.0-;=A-Z_a-z~-\\u{10FFFF}]+)?|[.0-:A-Fa-f]+)\\])?)(:\\d*)?[/?]|[!$&-.0-;=?-Z_a-z~-\\u{10FFFF}])(%[0-9A-Fa-f]{2}|[!$&-;=?-Z_a-z~-\\u{10FFFF}])*|\\/((%[0-9A-Fa-f]{2}|[!$&-.0-9;=A-Z_a-z~-\\u{10FFFF}])+(:\\d*)?|(\\[(([Vv][0-9A-Fa-f]+\\.[!$&-.0-;=A-Z_a-z~-\\u{10FFFF}]+)?|[.0-:A-Fa-f]+)\\])?:\\d*|\\[(([Vv][0-9A-Fa-f]+\\.[!$&-.0-;=A-Z_a-z~-\\u{10FFFF}]+)?|[.0-:A-Fa-f]+)\\])?)?|[A-Za-z][+\\-.0-9A-Za-z]*:?)?$/u,\n 'uuid': /^[0-9A-F]{8}-[0-9A-F]{4}-[0-9A-F]{4}-[0-9A-F]{4}-[0-9A-F]{12}$/i,\n\n // 7.3.6. uri-template\n 'uri-template': /(%[0-9a-f]{2}|[!#$&(-;=?@\\[\\]_a-z~]|\\{[!#&+,./;=?@|]?(%[0-9a-f]{2}|[0-9_a-z])(\\.?(%[0-9a-f]{2}|[0-9_a-z]))*(:[1-9]\\d{0,3}|\\*)?(,(%[0-9a-f]{2}|[0-9_a-z])(\\.?(%[0-9a-f]{2}|[0-9_a-z]))*(:[1-9]\\d{0,3}|\\*)?)*\\})*/iu,\n\n // 7.3.7. JSON Pointers\n 'json-pointer': /^(\\/([\\x00-\\x2e0-@\\[-}\\x7f]|~[01])*)*$/iu,\n 'relative-json-pointer': /^\\d+(#|(\\/([\\x00-\\x2e0-@\\[-}\\x7f]|~[01])*)*)$/iu,\n\n // hostname regex from: http://stackoverflow.com/a/1420225/5628\n 'hostname': /^(?=.{1,255}$)[0-9A-Za-z](?:(?:[0-9A-Za-z]|-){0,61}[0-9A-Za-z])?(?:\\.[0-9A-Za-z](?:(?:[0-9A-Za-z]|-){0,61}[0-9A-Za-z])?)*\\.?$/,\n 'host-name': /^(?=.{1,255}$)[0-9A-Za-z](?:(?:[0-9A-Za-z]|-){0,61}[0-9A-Za-z])?(?:\\.[0-9A-Za-z](?:(?:[0-9A-Za-z]|-){0,61}[0-9A-Za-z])?)*\\.?$/,\n\n 'utc-millisec': function (input) {\n return (typeof input === 'string') && parseFloat(input) === parseInt(input, 10) && !isNaN(input);\n },\n\n // 7.3.8. regex\n 'regex': function (input) {\n var result = true;\n try {\n new RegExp(input);\n } catch (e) {\n result = false;\n }\n return result;\n },\n\n // Other definitions\n // \"style\" was removed from JSON Schema in draft-4 and is deprecated\n 'style': /[\\r\\n\\t ]*[^\\r\\n\\t ][^:]*:[\\r\\n\\t ]*[^\\r\\n\\t ;]*[\\r\\n\\t ]*;?/,\n // \"color\" was removed from JSON Schema in draft-4 and is deprecated\n 'color': /^(#?([0-9A-Fa-f]{3}){1,2}\\b|aqua|black|blue|fuchsia|gray|green|lime|maroon|navy|olive|orange|purple|red|silver|teal|white|yellow|(rgb\\(\\s*\\b([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\b\\s*,\\s*\\b([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\b\\s*,\\s*\\b([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\b\\s*\\))|(rgb\\(\\s*(\\d?\\d%|100%)+\\s*,\\s*(\\d?\\d%|100%)+\\s*,\\s*(\\d?\\d%|100%)+\\s*\\)))$/,\n 'phone': /^\\+(?:[0-9] ?){6,14}[0-9]$/,\n 'alpha': /^[a-zA-Z]+$/,\n 'alphanumeric': /^[a-zA-Z0-9]+$/,\n};\n\nFORMAT_REGEXPS.regexp = FORMAT_REGEXPS.regex;\nFORMAT_REGEXPS.pattern = FORMAT_REGEXPS.regex;\nFORMAT_REGEXPS.ipv4 = FORMAT_REGEXPS['ip-address'];\n\nexports.isFormat = function isFormat (input, format, validator) {\n if (typeof input === 'string' && FORMAT_REGEXPS[format] !== undefined) {\n if (FORMAT_REGEXPS[format] instanceof RegExp) {\n return FORMAT_REGEXPS[format].test(input);\n }\n if (typeof FORMAT_REGEXPS[format] === 'function') {\n return FORMAT_REGEXPS[format](input);\n }\n } else if (validator && validator.customFormats &&\n typeof validator.customFormats[format] === 'function') {\n return validator.customFormats[format](input);\n }\n return true;\n};\n\nvar makeSuffix = exports.makeSuffix = function makeSuffix (key) {\n key = key.toString();\n // This function could be capable of outputting valid a ECMAScript string, but the\n // resulting code for testing which form to use would be tens of thousands of characters long\n // That means this will use the name form for some illegal forms\n if (!key.match(/[.\\s\\[\\]]/) && !key.match(/^[\\d]/)) {\n return '.' + key;\n }\n if (key.match(/^\\d+$/)) {\n return '[' + key + ']';\n }\n return '[' + JSON.stringify(key) + ']';\n};\n\nexports.deepCompareStrict = function deepCompareStrict (a, b) {\n if (typeof a !== typeof b) {\n return false;\n }\n if (Array.isArray(a)) {\n if (!Array.isArray(b)) {\n return false;\n }\n if (a.length !== b.length) {\n return false;\n }\n return a.every(function (v, i) {\n return deepCompareStrict(a[i], b[i]);\n });\n }\n if (typeof a === 'object') {\n if (!a || !b) {\n return a === b;\n }\n var aKeys = Object.keys(a);\n var bKeys = Object.keys(b);\n if (aKeys.length !== bKeys.length) {\n return false;\n }\n return aKeys.every(function (v) {\n return deepCompareStrict(a[v], b[v]);\n });\n }\n return a === b;\n};\n\nfunction deepMerger (target, dst, e, i) {\n if (typeof e === 'object') {\n dst[i] = deepMerge(target[i], e);\n } else {\n if (target.indexOf(e) === -1) {\n dst.push(e);\n }\n }\n}\n\nfunction copyist (src, dst, key) {\n dst[key] = src[key];\n}\n\nfunction copyistWithDeepMerge (target, src, dst, key) {\n if (typeof src[key] !== 'object' || !src[key]) {\n dst[key] = src[key];\n }\n else {\n if (!target[key]) {\n dst[key] = src[key];\n } else {\n dst[key] = deepMerge(target[key], src[key]);\n }\n }\n}\n\nfunction deepMerge (target, src) {\n var array = Array.isArray(src);\n var dst = array && [] || {};\n\n if (array) {\n target = target || [];\n dst = dst.concat(target);\n src.forEach(deepMerger.bind(null, target, dst));\n } else {\n if (target && typeof target === 'object') {\n Object.keys(target).forEach(copyist.bind(null, target, dst));\n }\n Object.keys(src).forEach(copyistWithDeepMerge.bind(null, target, src, dst));\n }\n\n return dst;\n}\n\nmodule.exports.deepMerge = deepMerge;\n\n/**\n * Validates instance against the provided schema\n * Implements URI+JSON Pointer encoding, e.g. \"%7e\"=\"~0\"=>\"~\", \"~1\"=\"%2f\"=>\"/\"\n * @param o\n * @param s The path to walk o along\n * @return any\n */\nexports.objectGetPath = function objectGetPath(o, s) {\n var parts = s.split('/').slice(1);\n var k;\n while (typeof (k=parts.shift()) == 'string') {\n var n = decodeURIComponent(k.replace(/~0/,'~').replace(/~1/g,'/'));\n if (!(n in o)) return;\n o = o[n];\n }\n return o;\n};\n\nfunction pathEncoder (v) {\n return '/'+encodeURIComponent(v).replace(/~/g,'%7E');\n}\n/**\n * Accept an Array of property names and return a JSON Pointer URI fragment\n * @param Array a\n * @return {String}\n */\nexports.encodePath = function encodePointer(a){\n // ~ must be encoded explicitly because hacks\n // the slash is encoded by encodeURIComponent\n return a.map(pathEncoder).join('');\n};\n\n\n/**\n * Calculate the number of decimal places a number uses\n * We need this to get correct results out of multipleOf and divisibleBy\n * when either figure is has decimal places, due to IEEE-754 float issues.\n * @param number\n * @returns {number}\n */\nexports.getDecimalPlaces = function getDecimalPlaces(number) {\n\n var decimalPlaces = 0;\n if (isNaN(number)) return decimalPlaces;\n\n if (typeof number !== 'number') {\n number = Number(number);\n }\n\n var parts = number.toString().split('e');\n if (parts.length === 2) {\n if (parts[1][0] !== '-') {\n return decimalPlaces;\n } else {\n decimalPlaces = Number(parts[1].slice(1));\n }\n }\n\n var decimalParts = parts[0].split('.');\n if (decimalParts.length === 2) {\n decimalPlaces += decimalParts[1].length;\n }\n\n return decimalPlaces;\n};\n\nexports.isSchema = function isSchema(val){\n return (typeof val === 'object' && val) || (typeof val === 'boolean');\n};\n\n","'use strict';\n\nvar Validator = module.exports.Validator = require('./validator');\n\nmodule.exports.ValidatorResult = require('./helpers').ValidatorResult;\nmodule.exports.ValidatorResultError = require('./helpers').ValidatorResultError;\nmodule.exports.ValidationError = require('./helpers').ValidationError;\nmodule.exports.SchemaError = require('./helpers').SchemaError;\nmodule.exports.SchemaScanResult = require('./scan').SchemaScanResult;\nmodule.exports.scan = require('./scan').scan;\n\nmodule.exports.validate = function (instance, schema, options) {\n var v = new Validator();\n return v.validate(instance, schema, options);\n};\n","\"use strict\";\n\nvar urilib = require('url');\nvar helpers = require('./helpers');\n\nmodule.exports.SchemaScanResult = SchemaScanResult;\nfunction SchemaScanResult(found, ref){\n this.id = found;\n this.ref = ref;\n}\n\n/**\n * Adds a schema with a certain urn to the Validator instance.\n * @param string uri\n * @param object schema\n * @return {Object}\n */\nmodule.exports.scan = function scan(base, schema){\n function scanSchema(baseuri, schema){\n if(!schema || typeof schema!='object') return;\n // Mark all referenced schemas so we can tell later which schemas are referred to, but never defined\n if(schema.$ref){\n var resolvedUri = urilib.resolve(baseuri, schema.$ref);\n ref[resolvedUri] = ref[resolvedUri] ? ref[resolvedUri]+1 : 0;\n return;\n }\n var id = schema.$id || schema.id;\n var ourBase = id ? urilib.resolve(baseuri, id) : baseuri;\n if (ourBase) {\n // If there's no fragment, append an empty one\n if(ourBase.indexOf('#')<0) ourBase += '#';\n if(found[ourBase]){\n if(!helpers.deepCompareStrict(found[ourBase], schema)){\n throw new Error('Schema <'+ourBase+'> already exists with different definition');\n }\n return found[ourBase];\n }\n found[ourBase] = schema;\n // strip trailing fragment\n if(ourBase[ourBase.length-1]=='#'){\n found[ourBase.substring(0, ourBase.length-1)] = schema;\n }\n }\n scanArray(ourBase+'/items', (Array.isArray(schema.items)?schema.items:[schema.items]));\n scanArray(ourBase+'/extends', (Array.isArray(schema.extends)?schema.extends:[schema.extends]));\n scanSchema(ourBase+'/additionalItems', schema.additionalItems);\n scanObject(ourBase+'/properties', schema.properties);\n scanSchema(ourBase+'/additionalProperties', schema.additionalProperties);\n scanObject(ourBase+'/definitions', schema.definitions);\n scanObject(ourBase+'/patternProperties', schema.patternProperties);\n scanObject(ourBase+'/dependencies', schema.dependencies);\n scanArray(ourBase+'/disallow', schema.disallow);\n scanArray(ourBase+'/allOf', schema.allOf);\n scanArray(ourBase+'/anyOf', schema.anyOf);\n scanArray(ourBase+'/oneOf', schema.oneOf);\n scanSchema(ourBase+'/not', schema.not);\n }\n function scanArray(baseuri, schemas){\n if(!Array.isArray(schemas)) return;\n for(var i=0; i\", schema);\n }\n var subschema = helpers.objectGetPath(ctx.schemas[document], fragment.substr(1));\n if(subschema===undefined){\n throw new SchemaError(\"no such schema \" + fragment + \" located in <\" + document + \">\", schema);\n }\n return {subschema: subschema, switchSchema: switchSchema};\n};\n\n/**\n * Tests whether the instance if of a certain type.\n * @private\n * @param instance\n * @param schema\n * @param options\n * @param ctx\n * @param type\n * @return {boolean}\n */\nValidator.prototype.testType = function validateType (instance, schema, options, ctx, type) {\n if(type===undefined){\n return;\n }else if(type===null){\n throw new SchemaError('Unexpected null in \"type\" keyword');\n }\n if (typeof this.types[type] == 'function') {\n return this.types[type].call(this, instance);\n }\n if (type && typeof type == 'object') {\n var res = this.validateSchema(instance, type, options, ctx);\n return res === undefined || !(res && res.errors.length);\n }\n // Undefined or properties not on the list are acceptable, same as not being defined\n return true;\n};\n\nvar types = Validator.prototype.types = {};\ntypes.string = function testString (instance) {\n return typeof instance == 'string';\n};\ntypes.number = function testNumber (instance) {\n // isFinite returns false for NaN, Infinity, and -Infinity\n return typeof instance == 'number' && isFinite(instance);\n};\ntypes.integer = function testInteger (instance) {\n return (typeof instance == 'number') && instance % 1 === 0;\n};\ntypes.boolean = function testBoolean (instance) {\n return typeof instance == 'boolean';\n};\ntypes.array = function testArray (instance) {\n return Array.isArray(instance);\n};\ntypes['null'] = function testNull (instance) {\n return instance === null;\n};\ntypes.date = function testDate (instance) {\n return instance instanceof Date;\n};\ntypes.any = function testAny (instance) {\n return true;\n};\ntypes.object = function testObject (instance) {\n // TODO: fix this - see #15\n return instance && (typeof instance === 'object') && !(Array.isArray(instance)) && !(instance instanceof Date);\n};\n\nmodule.exports = Validator;\n","const ANY = Symbol('SemVer ANY')\n// hoisted class for cyclic dependency\nclass Comparator {\n static get ANY () {\n return ANY\n }\n\n constructor (comp, options) {\n options = parseOptions(options)\n\n if (comp instanceof Comparator) {\n if (comp.loose === !!options.loose) {\n return comp\n } else {\n comp = comp.value\n }\n }\n\n comp = comp.trim().split(/\\s+/).join(' ')\n debug('comparator', comp, options)\n this.options = options\n this.loose = !!options.loose\n this.parse(comp)\n\n if (this.semver === ANY) {\n this.value = ''\n } else {\n this.value = this.operator + this.semver.version\n }\n\n debug('comp', this)\n }\n\n parse (comp) {\n const r = this.options.loose ? re[t.COMPARATORLOOSE] : re[t.COMPARATOR]\n const m = comp.match(r)\n\n if (!m) {\n throw new TypeError(`Invalid comparator: ${comp}`)\n }\n\n this.operator = m[1] !== undefined ? m[1] : ''\n if (this.operator === '=') {\n this.operator = ''\n }\n\n // if it literally is just '>' or '' then allow anything.\n if (!m[2]) {\n this.semver = ANY\n } else {\n this.semver = new SemVer(m[2], this.options.loose)\n }\n }\n\n toString () {\n return this.value\n }\n\n test (version) {\n debug('Comparator.test', version, this.options.loose)\n\n if (this.semver === ANY || version === ANY) {\n return true\n }\n\n if (typeof version === 'string') {\n try {\n version = new SemVer(version, this.options)\n } catch (er) {\n return false\n }\n }\n\n return cmp(version, this.operator, this.semver, this.options)\n }\n\n intersects (comp, options) {\n if (!(comp instanceof Comparator)) {\n throw new TypeError('a Comparator is required')\n }\n\n if (this.operator === '') {\n if (this.value === '') {\n return true\n }\n return new Range(comp.value, options).test(this.value)\n } else if (comp.operator === '') {\n if (comp.value === '') {\n return true\n }\n return new Range(this.value, options).test(comp.semver)\n }\n\n options = parseOptions(options)\n\n // Special cases where nothing can possibly be lower\n if (options.includePrerelease &&\n (this.value === '<0.0.0-0' || comp.value === '<0.0.0-0')) {\n return false\n }\n if (!options.includePrerelease &&\n (this.value.startsWith('<0.0.0') || comp.value.startsWith('<0.0.0'))) {\n return false\n }\n\n // Same direction increasing (> or >=)\n if (this.operator.startsWith('>') && comp.operator.startsWith('>')) {\n return true\n }\n // Same direction decreasing (< or <=)\n if (this.operator.startsWith('<') && comp.operator.startsWith('<')) {\n return true\n }\n // same SemVer and both sides are inclusive (<= or >=)\n if (\n (this.semver.version === comp.semver.version) &&\n this.operator.includes('=') && comp.operator.includes('=')) {\n return true\n }\n // opposite directions less than\n if (cmp(this.semver, '<', comp.semver, options) &&\n this.operator.startsWith('>') && comp.operator.startsWith('<')) {\n return true\n }\n // opposite directions greater than\n if (cmp(this.semver, '>', comp.semver, options) &&\n this.operator.startsWith('<') && comp.operator.startsWith('>')) {\n return true\n }\n return false\n }\n}\n\nmodule.exports = Comparator\n\nconst parseOptions = require('../internal/parse-options')\nconst { safeRe: re, t } = require('../internal/re')\nconst cmp = require('../functions/cmp')\nconst debug = require('../internal/debug')\nconst SemVer = require('./semver')\nconst Range = require('./range')\n","const SPACE_CHARACTERS = /\\s+/g\n\n// hoisted class for cyclic dependency\nclass Range {\n constructor (range, options) {\n options = parseOptions(options)\n\n if (range instanceof Range) {\n if (\n range.loose === !!options.loose &&\n range.includePrerelease === !!options.includePrerelease\n ) {\n return range\n } else {\n return new Range(range.raw, options)\n }\n }\n\n if (range instanceof Comparator) {\n // just put it in the set and return\n this.raw = range.value\n this.set = [[range]]\n this.formatted = undefined\n return this\n }\n\n this.options = options\n this.loose = !!options.loose\n this.includePrerelease = !!options.includePrerelease\n\n // First reduce all whitespace as much as possible so we do not have to rely\n // on potentially slow regexes like \\s*. This is then stored and used for\n // future error messages as well.\n this.raw = range.trim().replace(SPACE_CHARACTERS, ' ')\n\n // First, split on ||\n this.set = this.raw\n .split('||')\n // map the range to a 2d array of comparators\n .map(r => this.parseRange(r.trim()))\n // throw out any comparator lists that are empty\n // this generally means that it was not a valid range, which is allowed\n // in loose mode, but will still throw if the WHOLE range is invalid.\n .filter(c => c.length)\n\n if (!this.set.length) {\n throw new TypeError(`Invalid SemVer Range: ${this.raw}`)\n }\n\n // if we have any that are not the null set, throw out null sets.\n if (this.set.length > 1) {\n // keep the first one, in case they're all null sets\n const first = this.set[0]\n this.set = this.set.filter(c => !isNullSet(c[0]))\n if (this.set.length === 0) {\n this.set = [first]\n } else if (this.set.length > 1) {\n // if we have any that are *, then the range is just *\n for (const c of this.set) {\n if (c.length === 1 && isAny(c[0])) {\n this.set = [c]\n break\n }\n }\n }\n }\n\n this.formatted = undefined\n }\n\n get range () {\n if (this.formatted === undefined) {\n this.formatted = ''\n for (let i = 0; i < this.set.length; i++) {\n if (i > 0) {\n this.formatted += '||'\n }\n const comps = this.set[i]\n for (let k = 0; k < comps.length; k++) {\n if (k > 0) {\n this.formatted += ' '\n }\n this.formatted += comps[k].toString().trim()\n }\n }\n }\n return this.formatted\n }\n\n format () {\n return this.range\n }\n\n toString () {\n return this.range\n }\n\n parseRange (range) {\n // memoize range parsing for performance.\n // this is a very hot path, and fully deterministic.\n const memoOpts =\n (this.options.includePrerelease && FLAG_INCLUDE_PRERELEASE) |\n (this.options.loose && FLAG_LOOSE)\n const memoKey = memoOpts + ':' + range\n const cached = cache.get(memoKey)\n if (cached) {\n return cached\n }\n\n const loose = this.options.loose\n // `1.2.3 - 1.2.4` => `>=1.2.3 <=1.2.4`\n const hr = loose ? re[t.HYPHENRANGELOOSE] : re[t.HYPHENRANGE]\n range = range.replace(hr, hyphenReplace(this.options.includePrerelease))\n debug('hyphen replace', range)\n\n // `> 1.2.3 < 1.2.5` => `>1.2.3 <1.2.5`\n range = range.replace(re[t.COMPARATORTRIM], comparatorTrimReplace)\n debug('comparator trim', range)\n\n // `~ 1.2.3` => `~1.2.3`\n range = range.replace(re[t.TILDETRIM], tildeTrimReplace)\n debug('tilde trim', range)\n\n // `^ 1.2.3` => `^1.2.3`\n range = range.replace(re[t.CARETTRIM], caretTrimReplace)\n debug('caret trim', range)\n\n // At this point, the range is completely trimmed and\n // ready to be split into comparators.\n\n let rangeList = range\n .split(' ')\n .map(comp => parseComparator(comp, this.options))\n .join(' ')\n .split(/\\s+/)\n // >=0.0.0 is equivalent to *\n .map(comp => replaceGTE0(comp, this.options))\n\n if (loose) {\n // in loose mode, throw out any that are not valid comparators\n rangeList = rangeList.filter(comp => {\n debug('loose invalid filter', comp, this.options)\n return !!comp.match(re[t.COMPARATORLOOSE])\n })\n }\n debug('range list', rangeList)\n\n // if any comparators are the null set, then replace with JUST null set\n // if more than one comparator, remove any * comparators\n // also, don't include the same comparator more than once\n const rangeMap = new Map()\n const comparators = rangeList.map(comp => new Comparator(comp, this.options))\n for (const comp of comparators) {\n if (isNullSet(comp)) {\n return [comp]\n }\n rangeMap.set(comp.value, comp)\n }\n if (rangeMap.size > 1 && rangeMap.has('')) {\n rangeMap.delete('')\n }\n\n const result = [...rangeMap.values()]\n cache.set(memoKey, result)\n return result\n }\n\n intersects (range, options) {\n if (!(range instanceof Range)) {\n throw new TypeError('a Range is required')\n }\n\n return this.set.some((thisComparators) => {\n return (\n isSatisfiable(thisComparators, options) &&\n range.set.some((rangeComparators) => {\n return (\n isSatisfiable(rangeComparators, options) &&\n thisComparators.every((thisComparator) => {\n return rangeComparators.every((rangeComparator) => {\n return thisComparator.intersects(rangeComparator, options)\n })\n })\n )\n })\n )\n })\n }\n\n // if ANY of the sets match ALL of its comparators, then pass\n test (version) {\n if (!version) {\n return false\n }\n\n if (typeof version === 'string') {\n try {\n version = new SemVer(version, this.options)\n } catch (er) {\n return false\n }\n }\n\n for (let i = 0; i < this.set.length; i++) {\n if (testSet(this.set[i], version, this.options)) {\n return true\n }\n }\n return false\n }\n}\n\nmodule.exports = Range\n\nconst LRU = require('../internal/lrucache')\nconst cache = new LRU()\n\nconst parseOptions = require('../internal/parse-options')\nconst Comparator = require('./comparator')\nconst debug = require('../internal/debug')\nconst SemVer = require('./semver')\nconst {\n safeRe: re,\n t,\n comparatorTrimReplace,\n tildeTrimReplace,\n caretTrimReplace,\n} = require('../internal/re')\nconst { FLAG_INCLUDE_PRERELEASE, FLAG_LOOSE } = require('../internal/constants')\n\nconst isNullSet = c => c.value === '<0.0.0-0'\nconst isAny = c => c.value === ''\n\n// take a set of comparators and determine whether there\n// exists a version which can satisfy it\nconst isSatisfiable = (comparators, options) => {\n let result = true\n const remainingComparators = comparators.slice()\n let testComparator = remainingComparators.pop()\n\n while (result && remainingComparators.length) {\n result = remainingComparators.every((otherComparator) => {\n return testComparator.intersects(otherComparator, options)\n })\n\n testComparator = remainingComparators.pop()\n }\n\n return result\n}\n\n// comprised of xranges, tildes, stars, and gtlt's at this point.\n// already replaced the hyphen ranges\n// turn into a set of JUST comparators.\nconst parseComparator = (comp, options) => {\n debug('comp', comp, options)\n comp = replaceCarets(comp, options)\n debug('caret', comp)\n comp = replaceTildes(comp, options)\n debug('tildes', comp)\n comp = replaceXRanges(comp, options)\n debug('xrange', comp)\n comp = replaceStars(comp, options)\n debug('stars', comp)\n return comp\n}\n\nconst isX = id => !id || id.toLowerCase() === 'x' || id === '*'\n\n// ~, ~> --> * (any, kinda silly)\n// ~2, ~2.x, ~2.x.x, ~>2, ~>2.x ~>2.x.x --> >=2.0.0 <3.0.0-0\n// ~2.0, ~2.0.x, ~>2.0, ~>2.0.x --> >=2.0.0 <2.1.0-0\n// ~1.2, ~1.2.x, ~>1.2, ~>1.2.x --> >=1.2.0 <1.3.0-0\n// ~1.2.3, ~>1.2.3 --> >=1.2.3 <1.3.0-0\n// ~1.2.0, ~>1.2.0 --> >=1.2.0 <1.3.0-0\n// ~0.0.1 --> >=0.0.1 <0.1.0-0\nconst replaceTildes = (comp, options) => {\n return comp\n .trim()\n .split(/\\s+/)\n .map((c) => replaceTilde(c, options))\n .join(' ')\n}\n\nconst replaceTilde = (comp, options) => {\n const r = options.loose ? re[t.TILDELOOSE] : re[t.TILDE]\n return comp.replace(r, (_, M, m, p, pr) => {\n debug('tilde', comp, _, M, m, p, pr)\n let ret\n\n if (isX(M)) {\n ret = ''\n } else if (isX(m)) {\n ret = `>=${M}.0.0 <${+M + 1}.0.0-0`\n } else if (isX(p)) {\n // ~1.2 == >=1.2.0 <1.3.0-0\n ret = `>=${M}.${m}.0 <${M}.${+m + 1}.0-0`\n } else if (pr) {\n debug('replaceTilde pr', pr)\n ret = `>=${M}.${m}.${p}-${pr\n } <${M}.${+m + 1}.0-0`\n } else {\n // ~1.2.3 == >=1.2.3 <1.3.0-0\n ret = `>=${M}.${m}.${p\n } <${M}.${+m + 1}.0-0`\n }\n\n debug('tilde return', ret)\n return ret\n })\n}\n\n// ^ --> * (any, kinda silly)\n// ^2, ^2.x, ^2.x.x --> >=2.0.0 <3.0.0-0\n// ^2.0, ^2.0.x --> >=2.0.0 <3.0.0-0\n// ^1.2, ^1.2.x --> >=1.2.0 <2.0.0-0\n// ^1.2.3 --> >=1.2.3 <2.0.0-0\n// ^1.2.0 --> >=1.2.0 <2.0.0-0\n// ^0.0.1 --> >=0.0.1 <0.0.2-0\n// ^0.1.0 --> >=0.1.0 <0.2.0-0\nconst replaceCarets = (comp, options) => {\n return comp\n .trim()\n .split(/\\s+/)\n .map((c) => replaceCaret(c, options))\n .join(' ')\n}\n\nconst replaceCaret = (comp, options) => {\n debug('caret', comp, options)\n const r = options.loose ? re[t.CARETLOOSE] : re[t.CARET]\n const z = options.includePrerelease ? '-0' : ''\n return comp.replace(r, (_, M, m, p, pr) => {\n debug('caret', comp, _, M, m, p, pr)\n let ret\n\n if (isX(M)) {\n ret = ''\n } else if (isX(m)) {\n ret = `>=${M}.0.0${z} <${+M + 1}.0.0-0`\n } else if (isX(p)) {\n if (M === '0') {\n ret = `>=${M}.${m}.0${z} <${M}.${+m + 1}.0-0`\n } else {\n ret = `>=${M}.${m}.0${z} <${+M + 1}.0.0-0`\n }\n } else if (pr) {\n debug('replaceCaret pr', pr)\n if (M === '0') {\n if (m === '0') {\n ret = `>=${M}.${m}.${p}-${pr\n } <${M}.${m}.${+p + 1}-0`\n } else {\n ret = `>=${M}.${m}.${p}-${pr\n } <${M}.${+m + 1}.0-0`\n }\n } else {\n ret = `>=${M}.${m}.${p}-${pr\n } <${+M + 1}.0.0-0`\n }\n } else {\n debug('no pr')\n if (M === '0') {\n if (m === '0') {\n ret = `>=${M}.${m}.${p\n }${z} <${M}.${m}.${+p + 1}-0`\n } else {\n ret = `>=${M}.${m}.${p\n }${z} <${M}.${+m + 1}.0-0`\n }\n } else {\n ret = `>=${M}.${m}.${p\n } <${+M + 1}.0.0-0`\n }\n }\n\n debug('caret return', ret)\n return ret\n })\n}\n\nconst replaceXRanges = (comp, options) => {\n debug('replaceXRanges', comp, options)\n return comp\n .split(/\\s+/)\n .map((c) => replaceXRange(c, options))\n .join(' ')\n}\n\nconst replaceXRange = (comp, options) => {\n comp = comp.trim()\n const r = options.loose ? re[t.XRANGELOOSE] : re[t.XRANGE]\n return comp.replace(r, (ret, gtlt, M, m, p, pr) => {\n debug('xRange', comp, ret, gtlt, M, m, p, pr)\n const xM = isX(M)\n const xm = xM || isX(m)\n const xp = xm || isX(p)\n const anyX = xp\n\n if (gtlt === '=' && anyX) {\n gtlt = ''\n }\n\n // if we're including prereleases in the match, then we need\n // to fix this to -0, the lowest possible prerelease value\n pr = options.includePrerelease ? '-0' : ''\n\n if (xM) {\n if (gtlt === '>' || gtlt === '<') {\n // nothing is allowed\n ret = '<0.0.0-0'\n } else {\n // nothing is forbidden\n ret = '*'\n }\n } else if (gtlt && anyX) {\n // we know patch is an x, because we have any x at all.\n // replace X with 0\n if (xm) {\n m = 0\n }\n p = 0\n\n if (gtlt === '>') {\n // >1 => >=2.0.0\n // >1.2 => >=1.3.0\n gtlt = '>='\n if (xm) {\n M = +M + 1\n m = 0\n p = 0\n } else {\n m = +m + 1\n p = 0\n }\n } else if (gtlt === '<=') {\n // <=0.7.x is actually <0.8.0, since any 0.7.x should\n // pass. Similarly, <=7.x is actually <8.0.0, etc.\n gtlt = '<'\n if (xm) {\n M = +M + 1\n } else {\n m = +m + 1\n }\n }\n\n if (gtlt === '<') {\n pr = '-0'\n }\n\n ret = `${gtlt + M}.${m}.${p}${pr}`\n } else if (xm) {\n ret = `>=${M}.0.0${pr} <${+M + 1}.0.0-0`\n } else if (xp) {\n ret = `>=${M}.${m}.0${pr\n } <${M}.${+m + 1}.0-0`\n }\n\n debug('xRange return', ret)\n\n return ret\n })\n}\n\n// Because * is AND-ed with everything else in the comparator,\n// and '' means \"any version\", just remove the *s entirely.\nconst replaceStars = (comp, options) => {\n debug('replaceStars', comp, options)\n // Looseness is ignored here. star is always as loose as it gets!\n return comp\n .trim()\n .replace(re[t.STAR], '')\n}\n\nconst replaceGTE0 = (comp, options) => {\n debug('replaceGTE0', comp, options)\n return comp\n .trim()\n .replace(re[options.includePrerelease ? t.GTE0PRE : t.GTE0], '')\n}\n\n// This function is passed to string.replace(re[t.HYPHENRANGE])\n// M, m, patch, prerelease, build\n// 1.2 - 3.4.5 => >=1.2.0 <=3.4.5\n// 1.2.3 - 3.4 => >=1.2.0 <3.5.0-0 Any 3.4.x will do\n// 1.2 - 3.4 => >=1.2.0 <3.5.0-0\n// TODO build?\nconst hyphenReplace = incPr => ($0,\n from, fM, fm, fp, fpr, fb,\n to, tM, tm, tp, tpr) => {\n if (isX(fM)) {\n from = ''\n } else if (isX(fm)) {\n from = `>=${fM}.0.0${incPr ? '-0' : ''}`\n } else if (isX(fp)) {\n from = `>=${fM}.${fm}.0${incPr ? '-0' : ''}`\n } else if (fpr) {\n from = `>=${from}`\n } else {\n from = `>=${from}${incPr ? '-0' : ''}`\n }\n\n if (isX(tM)) {\n to = ''\n } else if (isX(tm)) {\n to = `<${+tM + 1}.0.0-0`\n } else if (isX(tp)) {\n to = `<${tM}.${+tm + 1}.0-0`\n } else if (tpr) {\n to = `<=${tM}.${tm}.${tp}-${tpr}`\n } else if (incPr) {\n to = `<${tM}.${tm}.${+tp + 1}-0`\n } else {\n to = `<=${to}`\n }\n\n return `${from} ${to}`.trim()\n}\n\nconst testSet = (set, version, options) => {\n for (let i = 0; i < set.length; i++) {\n if (!set[i].test(version)) {\n return false\n }\n }\n\n if (version.prerelease.length && !options.includePrerelease) {\n // Find the set of versions that are allowed to have prereleases\n // For example, ^1.2.3-pr.1 desugars to >=1.2.3-pr.1 <2.0.0\n // That should allow `1.2.3-pr.2` to pass.\n // However, `1.2.4-alpha.notready` should NOT be allowed,\n // even though it's within the range set by the comparators.\n for (let i = 0; i < set.length; i++) {\n debug(set[i].semver)\n if (set[i].semver === Comparator.ANY) {\n continue\n }\n\n if (set[i].semver.prerelease.length > 0) {\n const allowed = set[i].semver\n if (allowed.major === version.major &&\n allowed.minor === version.minor &&\n allowed.patch === version.patch) {\n return true\n }\n }\n }\n\n // Version has a -pre, but it's not one of the ones we like.\n return false\n }\n\n return true\n}\n","const debug = require('../internal/debug')\nconst { MAX_LENGTH, MAX_SAFE_INTEGER } = require('../internal/constants')\nconst { safeRe: re, t } = require('../internal/re')\n\nconst parseOptions = require('../internal/parse-options')\nconst { compareIdentifiers } = require('../internal/identifiers')\nclass SemVer {\n constructor (version, options) {\n options = parseOptions(options)\n\n if (version instanceof SemVer) {\n if (version.loose === !!options.loose &&\n version.includePrerelease === !!options.includePrerelease) {\n return version\n } else {\n version = version.version\n }\n } else if (typeof version !== 'string') {\n throw new TypeError(`Invalid version. Must be a string. Got type \"${typeof version}\".`)\n }\n\n if (version.length > MAX_LENGTH) {\n throw new TypeError(\n `version is longer than ${MAX_LENGTH} characters`\n )\n }\n\n debug('SemVer', version, options)\n this.options = options\n this.loose = !!options.loose\n // this isn't actually relevant for versions, but keep it so that we\n // don't run into trouble passing this.options around.\n this.includePrerelease = !!options.includePrerelease\n\n const m = version.trim().match(options.loose ? re[t.LOOSE] : re[t.FULL])\n\n if (!m) {\n throw new TypeError(`Invalid Version: ${version}`)\n }\n\n this.raw = version\n\n // these are actually numbers\n this.major = +m[1]\n this.minor = +m[2]\n this.patch = +m[3]\n\n if (this.major > MAX_SAFE_INTEGER || this.major < 0) {\n throw new TypeError('Invalid major version')\n }\n\n if (this.minor > MAX_SAFE_INTEGER || this.minor < 0) {\n throw new TypeError('Invalid minor version')\n }\n\n if (this.patch > MAX_SAFE_INTEGER || this.patch < 0) {\n throw new TypeError('Invalid patch version')\n }\n\n // numberify any prerelease numeric ids\n if (!m[4]) {\n this.prerelease = []\n } else {\n this.prerelease = m[4].split('.').map((id) => {\n if (/^[0-9]+$/.test(id)) {\n const num = +id\n if (num >= 0 && num < MAX_SAFE_INTEGER) {\n return num\n }\n }\n return id\n })\n }\n\n this.build = m[5] ? m[5].split('.') : []\n this.format()\n }\n\n format () {\n this.version = `${this.major}.${this.minor}.${this.patch}`\n if (this.prerelease.length) {\n this.version += `-${this.prerelease.join('.')}`\n }\n return this.version\n }\n\n toString () {\n return this.version\n }\n\n compare (other) {\n debug('SemVer.compare', this.version, this.options, other)\n if (!(other instanceof SemVer)) {\n if (typeof other === 'string' && other === this.version) {\n return 0\n }\n other = new SemVer(other, this.options)\n }\n\n if (other.version === this.version) {\n return 0\n }\n\n return this.compareMain(other) || this.comparePre(other)\n }\n\n compareMain (other) {\n if (!(other instanceof SemVer)) {\n other = new SemVer(other, this.options)\n }\n\n return (\n compareIdentifiers(this.major, other.major) ||\n compareIdentifiers(this.minor, other.minor) ||\n compareIdentifiers(this.patch, other.patch)\n )\n }\n\n comparePre (other) {\n if (!(other instanceof SemVer)) {\n other = new SemVer(other, this.options)\n }\n\n // NOT having a prerelease is > having one\n if (this.prerelease.length && !other.prerelease.length) {\n return -1\n } else if (!this.prerelease.length && other.prerelease.length) {\n return 1\n } else if (!this.prerelease.length && !other.prerelease.length) {\n return 0\n }\n\n let i = 0\n do {\n const a = this.prerelease[i]\n const b = other.prerelease[i]\n debug('prerelease compare', i, a, b)\n if (a === undefined && b === undefined) {\n return 0\n } else if (b === undefined) {\n return 1\n } else if (a === undefined) {\n return -1\n } else if (a === b) {\n continue\n } else {\n return compareIdentifiers(a, b)\n }\n } while (++i)\n }\n\n compareBuild (other) {\n if (!(other instanceof SemVer)) {\n other = new SemVer(other, this.options)\n }\n\n let i = 0\n do {\n const a = this.build[i]\n const b = other.build[i]\n debug('build compare', i, a, b)\n if (a === undefined && b === undefined) {\n return 0\n } else if (b === undefined) {\n return 1\n } else if (a === undefined) {\n return -1\n } else if (a === b) {\n continue\n } else {\n return compareIdentifiers(a, b)\n }\n } while (++i)\n }\n\n // preminor will bump the version up to the next minor release, and immediately\n // down to pre-release. premajor and prepatch work the same way.\n inc (release, identifier, identifierBase) {\n switch (release) {\n case 'premajor':\n this.prerelease.length = 0\n this.patch = 0\n this.minor = 0\n this.major++\n this.inc('pre', identifier, identifierBase)\n break\n case 'preminor':\n this.prerelease.length = 0\n this.patch = 0\n this.minor++\n this.inc('pre', identifier, identifierBase)\n break\n case 'prepatch':\n // If this is already a prerelease, it will bump to the next version\n // drop any prereleases that might already exist, since they are not\n // relevant at this point.\n this.prerelease.length = 0\n this.inc('patch', identifier, identifierBase)\n this.inc('pre', identifier, identifierBase)\n break\n // If the input is a non-prerelease version, this acts the same as\n // prepatch.\n case 'prerelease':\n if (this.prerelease.length === 0) {\n this.inc('patch', identifier, identifierBase)\n }\n this.inc('pre', identifier, identifierBase)\n break\n\n case 'major':\n // If this is a pre-major version, bump up to the same major version.\n // Otherwise increment major.\n // 1.0.0-5 bumps to 1.0.0\n // 1.1.0 bumps to 2.0.0\n if (\n this.minor !== 0 ||\n this.patch !== 0 ||\n this.prerelease.length === 0\n ) {\n this.major++\n }\n this.minor = 0\n this.patch = 0\n this.prerelease = []\n break\n case 'minor':\n // If this is a pre-minor version, bump up to the same minor version.\n // Otherwise increment minor.\n // 1.2.0-5 bumps to 1.2.0\n // 1.2.1 bumps to 1.3.0\n if (this.patch !== 0 || this.prerelease.length === 0) {\n this.minor++\n }\n this.patch = 0\n this.prerelease = []\n break\n case 'patch':\n // If this is not a pre-release version, it will increment the patch.\n // If it is a pre-release it will bump up to the same patch version.\n // 1.2.0-5 patches to 1.2.0\n // 1.2.0 patches to 1.2.1\n if (this.prerelease.length === 0) {\n this.patch++\n }\n this.prerelease = []\n break\n // This probably shouldn't be used publicly.\n // 1.0.0 'pre' would become 1.0.0-0 which is the wrong direction.\n case 'pre': {\n const base = Number(identifierBase) ? 1 : 0\n\n if (!identifier && identifierBase === false) {\n throw new Error('invalid increment argument: identifier is empty')\n }\n\n if (this.prerelease.length === 0) {\n this.prerelease = [base]\n } else {\n let i = this.prerelease.length\n while (--i >= 0) {\n if (typeof this.prerelease[i] === 'number') {\n this.prerelease[i]++\n i = -2\n }\n }\n if (i === -1) {\n // didn't increment anything\n if (identifier === this.prerelease.join('.') && identifierBase === false) {\n throw new Error('invalid increment argument: identifier already exists')\n }\n this.prerelease.push(base)\n }\n }\n if (identifier) {\n // 1.2.0-beta.1 bumps to 1.2.0-beta.2,\n // 1.2.0-beta.fooblz or 1.2.0-beta bumps to 1.2.0-beta.0\n let prerelease = [identifier, base]\n if (identifierBase === false) {\n prerelease = [identifier]\n }\n if (compareIdentifiers(this.prerelease[0], identifier) === 0) {\n if (isNaN(this.prerelease[1])) {\n this.prerelease = prerelease\n }\n } else {\n this.prerelease = prerelease\n }\n }\n break\n }\n default:\n throw new Error(`invalid increment argument: ${release}`)\n }\n this.raw = this.format()\n if (this.build.length) {\n this.raw += `+${this.build.join('.')}`\n }\n return this\n }\n}\n\nmodule.exports = SemVer\n","const parse = require('./parse')\nconst clean = (version, options) => {\n const s = parse(version.trim().replace(/^[=v]+/, ''), options)\n return s ? s.version : null\n}\nmodule.exports = clean\n","const eq = require('./eq')\nconst neq = require('./neq')\nconst gt = require('./gt')\nconst gte = require('./gte')\nconst lt = require('./lt')\nconst lte = require('./lte')\n\nconst cmp = (a, op, b, loose) => {\n switch (op) {\n case '===':\n if (typeof a === 'object') {\n a = a.version\n }\n if (typeof b === 'object') {\n b = b.version\n }\n return a === b\n\n case '!==':\n if (typeof a === 'object') {\n a = a.version\n }\n if (typeof b === 'object') {\n b = b.version\n }\n return a !== b\n\n case '':\n case '=':\n case '==':\n return eq(a, b, loose)\n\n case '!=':\n return neq(a, b, loose)\n\n case '>':\n return gt(a, b, loose)\n\n case '>=':\n return gte(a, b, loose)\n\n case '<':\n return lt(a, b, loose)\n\n case '<=':\n return lte(a, b, loose)\n\n default:\n throw new TypeError(`Invalid operator: ${op}`)\n }\n}\nmodule.exports = cmp\n","const SemVer = require('../classes/semver')\nconst parse = require('./parse')\nconst { safeRe: re, t } = require('../internal/re')\n\nconst coerce = (version, options) => {\n if (version instanceof SemVer) {\n return version\n }\n\n if (typeof version === 'number') {\n version = String(version)\n }\n\n if (typeof version !== 'string') {\n return null\n }\n\n options = options || {}\n\n let match = null\n if (!options.rtl) {\n match = version.match(options.includePrerelease ? re[t.COERCEFULL] : re[t.COERCE])\n } else {\n // Find the right-most coercible string that does not share\n // a terminus with a more left-ward coercible string.\n // Eg, '1.2.3.4' wants to coerce '2.3.4', not '3.4' or '4'\n // With includePrerelease option set, '1.2.3.4-rc' wants to coerce '2.3.4-rc', not '2.3.4'\n //\n // Walk through the string checking with a /g regexp\n // Manually set the index so as to pick up overlapping matches.\n // Stop when we get a match that ends at the string end, since no\n // coercible string can be more right-ward without the same terminus.\n const coerceRtlRegex = options.includePrerelease ? re[t.COERCERTLFULL] : re[t.COERCERTL]\n let next\n while ((next = coerceRtlRegex.exec(version)) &&\n (!match || match.index + match[0].length !== version.length)\n ) {\n if (!match ||\n next.index + next[0].length !== match.index + match[0].length) {\n match = next\n }\n coerceRtlRegex.lastIndex = next.index + next[1].length + next[2].length\n }\n // leave it in a clean state\n coerceRtlRegex.lastIndex = -1\n }\n\n if (match === null) {\n return null\n }\n\n const major = match[2]\n const minor = match[3] || '0'\n const patch = match[4] || '0'\n const prerelease = options.includePrerelease && match[5] ? `-${match[5]}` : ''\n const build = options.includePrerelease && match[6] ? `+${match[6]}` : ''\n\n return parse(`${major}.${minor}.${patch}${prerelease}${build}`, options)\n}\nmodule.exports = coerce\n","const SemVer = require('../classes/semver')\nconst compareBuild = (a, b, loose) => {\n const versionA = new SemVer(a, loose)\n const versionB = new SemVer(b, loose)\n return versionA.compare(versionB) || versionA.compareBuild(versionB)\n}\nmodule.exports = compareBuild\n","const compare = require('./compare')\nconst compareLoose = (a, b) => compare(a, b, true)\nmodule.exports = compareLoose\n","const SemVer = require('../classes/semver')\nconst compare = (a, b, loose) =>\n new SemVer(a, loose).compare(new SemVer(b, loose))\n\nmodule.exports = compare\n","const parse = require('./parse.js')\n\nconst diff = (version1, version2) => {\n const v1 = parse(version1, null, true)\n const v2 = parse(version2, null, true)\n const comparison = v1.compare(v2)\n\n if (comparison === 0) {\n return null\n }\n\n const v1Higher = comparison > 0\n const highVersion = v1Higher ? v1 : v2\n const lowVersion = v1Higher ? v2 : v1\n const highHasPre = !!highVersion.prerelease.length\n const lowHasPre = !!lowVersion.prerelease.length\n\n if (lowHasPre && !highHasPre) {\n // Going from prerelease -> no prerelease requires some special casing\n\n // If the low version has only a major, then it will always be a major\n // Some examples:\n // 1.0.0-1 -> 1.0.0\n // 1.0.0-1 -> 1.1.1\n // 1.0.0-1 -> 2.0.0\n if (!lowVersion.patch && !lowVersion.minor) {\n return 'major'\n }\n\n // Otherwise it can be determined by checking the high version\n\n if (highVersion.patch) {\n // anything higher than a patch bump would result in the wrong version\n return 'patch'\n }\n\n if (highVersion.minor) {\n // anything higher than a minor bump would result in the wrong version\n return 'minor'\n }\n\n // bumping major/minor/patch all have same result\n return 'major'\n }\n\n // add the `pre` prefix if we are going to a prerelease version\n const prefix = highHasPre ? 'pre' : ''\n\n if (v1.major !== v2.major) {\n return prefix + 'major'\n }\n\n if (v1.minor !== v2.minor) {\n return prefix + 'minor'\n }\n\n if (v1.patch !== v2.patch) {\n return prefix + 'patch'\n }\n\n // high and low are preleases\n return 'prerelease'\n}\n\nmodule.exports = diff\n","const compare = require('./compare')\nconst eq = (a, b, loose) => compare(a, b, loose) === 0\nmodule.exports = eq\n","const compare = require('./compare')\nconst gt = (a, b, loose) => compare(a, b, loose) > 0\nmodule.exports = gt\n","const compare = require('./compare')\nconst gte = (a, b, loose) => compare(a, b, loose) >= 0\nmodule.exports = gte\n","const SemVer = require('../classes/semver')\n\nconst inc = (version, release, options, identifier, identifierBase) => {\n if (typeof (options) === 'string') {\n identifierBase = identifier\n identifier = options\n options = undefined\n }\n\n try {\n return new SemVer(\n version instanceof SemVer ? version.version : version,\n options\n ).inc(release, identifier, identifierBase).version\n } catch (er) {\n return null\n }\n}\nmodule.exports = inc\n","const compare = require('./compare')\nconst lt = (a, b, loose) => compare(a, b, loose) < 0\nmodule.exports = lt\n","const compare = require('./compare')\nconst lte = (a, b, loose) => compare(a, b, loose) <= 0\nmodule.exports = lte\n","const SemVer = require('../classes/semver')\nconst major = (a, loose) => new SemVer(a, loose).major\nmodule.exports = major\n","const SemVer = require('../classes/semver')\nconst minor = (a, loose) => new SemVer(a, loose).minor\nmodule.exports = minor\n","const compare = require('./compare')\nconst neq = (a, b, loose) => compare(a, b, loose) !== 0\nmodule.exports = neq\n","const SemVer = require('../classes/semver')\nconst parse = (version, options, throwErrors = false) => {\n if (version instanceof SemVer) {\n return version\n }\n try {\n return new SemVer(version, options)\n } catch (er) {\n if (!throwErrors) {\n return null\n }\n throw er\n }\n}\n\nmodule.exports = parse\n","const SemVer = require('../classes/semver')\nconst patch = (a, loose) => new SemVer(a, loose).patch\nmodule.exports = patch\n","const parse = require('./parse')\nconst prerelease = (version, options) => {\n const parsed = parse(version, options)\n return (parsed && parsed.prerelease.length) ? parsed.prerelease : null\n}\nmodule.exports = prerelease\n","const compare = require('./compare')\nconst rcompare = (a, b, loose) => compare(b, a, loose)\nmodule.exports = rcompare\n","const compareBuild = require('./compare-build')\nconst rsort = (list, loose) => list.sort((a, b) => compareBuild(b, a, loose))\nmodule.exports = rsort\n","const Range = require('../classes/range')\nconst satisfies = (version, range, options) => {\n try {\n range = new Range(range, options)\n } catch (er) {\n return false\n }\n return range.test(version)\n}\nmodule.exports = satisfies\n","const compareBuild = require('./compare-build')\nconst sort = (list, loose) => list.sort((a, b) => compareBuild(a, b, loose))\nmodule.exports = sort\n","const parse = require('./parse')\nconst valid = (version, options) => {\n const v = parse(version, options)\n return v ? v.version : null\n}\nmodule.exports = valid\n","// just pre-load all the stuff that index.js lazily exports\nconst internalRe = require('./internal/re')\nconst constants = require('./internal/constants')\nconst SemVer = require('./classes/semver')\nconst identifiers = require('./internal/identifiers')\nconst parse = require('./functions/parse')\nconst valid = require('./functions/valid')\nconst clean = require('./functions/clean')\nconst inc = require('./functions/inc')\nconst diff = require('./functions/diff')\nconst major = require('./functions/major')\nconst minor = require('./functions/minor')\nconst patch = require('./functions/patch')\nconst prerelease = require('./functions/prerelease')\nconst compare = require('./functions/compare')\nconst rcompare = require('./functions/rcompare')\nconst compareLoose = require('./functions/compare-loose')\nconst compareBuild = require('./functions/compare-build')\nconst sort = require('./functions/sort')\nconst rsort = require('./functions/rsort')\nconst gt = require('./functions/gt')\nconst lt = require('./functions/lt')\nconst eq = require('./functions/eq')\nconst neq = require('./functions/neq')\nconst gte = require('./functions/gte')\nconst lte = require('./functions/lte')\nconst cmp = require('./functions/cmp')\nconst coerce = require('./functions/coerce')\nconst Comparator = require('./classes/comparator')\nconst Range = require('./classes/range')\nconst satisfies = require('./functions/satisfies')\nconst toComparators = require('./ranges/to-comparators')\nconst maxSatisfying = require('./ranges/max-satisfying')\nconst minSatisfying = require('./ranges/min-satisfying')\nconst minVersion = require('./ranges/min-version')\nconst validRange = require('./ranges/valid')\nconst outside = require('./ranges/outside')\nconst gtr = require('./ranges/gtr')\nconst ltr = require('./ranges/ltr')\nconst intersects = require('./ranges/intersects')\nconst simplifyRange = require('./ranges/simplify')\nconst subset = require('./ranges/subset')\nmodule.exports = {\n parse,\n valid,\n clean,\n inc,\n diff,\n major,\n minor,\n patch,\n prerelease,\n compare,\n rcompare,\n compareLoose,\n compareBuild,\n sort,\n rsort,\n gt,\n lt,\n eq,\n neq,\n gte,\n lte,\n cmp,\n coerce,\n Comparator,\n Range,\n satisfies,\n toComparators,\n maxSatisfying,\n minSatisfying,\n minVersion,\n validRange,\n outside,\n gtr,\n ltr,\n intersects,\n simplifyRange,\n subset,\n SemVer,\n re: internalRe.re,\n src: internalRe.src,\n tokens: internalRe.t,\n SEMVER_SPEC_VERSION: constants.SEMVER_SPEC_VERSION,\n RELEASE_TYPES: constants.RELEASE_TYPES,\n compareIdentifiers: identifiers.compareIdentifiers,\n rcompareIdentifiers: identifiers.rcompareIdentifiers,\n}\n","// Note: this is the semver.org version of the spec that it implements\n// Not necessarily the package version of this code.\nconst SEMVER_SPEC_VERSION = '2.0.0'\n\nconst MAX_LENGTH = 256\nconst MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER ||\n/* istanbul ignore next */ 9007199254740991\n\n// Max safe segment length for coercion.\nconst MAX_SAFE_COMPONENT_LENGTH = 16\n\n// Max safe length for a build identifier. The max length minus 6 characters for\n// the shortest version with a build 0.0.0+BUILD.\nconst MAX_SAFE_BUILD_LENGTH = MAX_LENGTH - 6\n\nconst RELEASE_TYPES = [\n 'major',\n 'premajor',\n 'minor',\n 'preminor',\n 'patch',\n 'prepatch',\n 'prerelease',\n]\n\nmodule.exports = {\n MAX_LENGTH,\n MAX_SAFE_COMPONENT_LENGTH,\n MAX_SAFE_BUILD_LENGTH,\n MAX_SAFE_INTEGER,\n RELEASE_TYPES,\n SEMVER_SPEC_VERSION,\n FLAG_INCLUDE_PRERELEASE: 0b001,\n FLAG_LOOSE: 0b010,\n}\n","const debug = (\n typeof process === 'object' &&\n process.env &&\n process.env.NODE_DEBUG &&\n /\\bsemver\\b/i.test(process.env.NODE_DEBUG)\n) ? (...args) => console.error('SEMVER', ...args)\n : () => {}\n\nmodule.exports = debug\n","const numeric = /^[0-9]+$/\nconst compareIdentifiers = (a, b) => {\n const anum = numeric.test(a)\n const bnum = numeric.test(b)\n\n if (anum && bnum) {\n a = +a\n b = +b\n }\n\n return a === b ? 0\n : (anum && !bnum) ? -1\n : (bnum && !anum) ? 1\n : a < b ? -1\n : 1\n}\n\nconst rcompareIdentifiers = (a, b) => compareIdentifiers(b, a)\n\nmodule.exports = {\n compareIdentifiers,\n rcompareIdentifiers,\n}\n","class LRUCache {\n constructor () {\n this.max = 1000\n this.map = new Map()\n }\n\n get (key) {\n const value = this.map.get(key)\n if (value === undefined) {\n return undefined\n } else {\n // Remove the key from the map and add it to the end\n this.map.delete(key)\n this.map.set(key, value)\n return value\n }\n }\n\n delete (key) {\n return this.map.delete(key)\n }\n\n set (key, value) {\n const deleted = this.delete(key)\n\n if (!deleted && value !== undefined) {\n // If cache is full, delete the least recently used item\n if (this.map.size >= this.max) {\n const firstKey = this.map.keys().next().value\n this.delete(firstKey)\n }\n\n this.map.set(key, value)\n }\n\n return this\n }\n}\n\nmodule.exports = LRUCache\n","// parse out just the options we care about\nconst looseOption = Object.freeze({ loose: true })\nconst emptyOpts = Object.freeze({ })\nconst parseOptions = options => {\n if (!options) {\n return emptyOpts\n }\n\n if (typeof options !== 'object') {\n return looseOption\n }\n\n return options\n}\nmodule.exports = parseOptions\n","const {\n MAX_SAFE_COMPONENT_LENGTH,\n MAX_SAFE_BUILD_LENGTH,\n MAX_LENGTH,\n} = require('./constants')\nconst debug = require('./debug')\nexports = module.exports = {}\n\n// The actual regexps go on exports.re\nconst re = exports.re = []\nconst safeRe = exports.safeRe = []\nconst src = exports.src = []\nconst t = exports.t = {}\nlet R = 0\n\nconst LETTERDASHNUMBER = '[a-zA-Z0-9-]'\n\n// Replace some greedy regex tokens to prevent regex dos issues. These regex are\n// used internally via the safeRe object since all inputs in this library get\n// normalized first to trim and collapse all extra whitespace. The original\n// regexes are exported for userland consumption and lower level usage. A\n// future breaking change could export the safer regex only with a note that\n// all input should have extra whitespace removed.\nconst safeRegexReplacements = [\n ['\\\\s', 1],\n ['\\\\d', MAX_LENGTH],\n [LETTERDASHNUMBER, MAX_SAFE_BUILD_LENGTH],\n]\n\nconst makeSafeRegex = (value) => {\n for (const [token, max] of safeRegexReplacements) {\n value = value\n .split(`${token}*`).join(`${token}{0,${max}}`)\n .split(`${token}+`).join(`${token}{1,${max}}`)\n }\n return value\n}\n\nconst createToken = (name, value, isGlobal) => {\n const safe = makeSafeRegex(value)\n const index = R++\n debug(name, index, value)\n t[name] = index\n src[index] = value\n re[index] = new RegExp(value, isGlobal ? 'g' : undefined)\n safeRe[index] = new RegExp(safe, isGlobal ? 'g' : undefined)\n}\n\n// The following Regular Expressions can be used for tokenizing,\n// validating, and parsing SemVer version strings.\n\n// ## Numeric Identifier\n// A single `0`, or a non-zero digit followed by zero or more digits.\n\ncreateToken('NUMERICIDENTIFIER', '0|[1-9]\\\\d*')\ncreateToken('NUMERICIDENTIFIERLOOSE', '\\\\d+')\n\n// ## Non-numeric Identifier\n// Zero or more digits, followed by a letter or hyphen, and then zero or\n// more letters, digits, or hyphens.\n\ncreateToken('NONNUMERICIDENTIFIER', `\\\\d*[a-zA-Z-]${LETTERDASHNUMBER}*`)\n\n// ## Main Version\n// Three dot-separated numeric identifiers.\n\ncreateToken('MAINVERSION', `(${src[t.NUMERICIDENTIFIER]})\\\\.` +\n `(${src[t.NUMERICIDENTIFIER]})\\\\.` +\n `(${src[t.NUMERICIDENTIFIER]})`)\n\ncreateToken('MAINVERSIONLOOSE', `(${src[t.NUMERICIDENTIFIERLOOSE]})\\\\.` +\n `(${src[t.NUMERICIDENTIFIERLOOSE]})\\\\.` +\n `(${src[t.NUMERICIDENTIFIERLOOSE]})`)\n\n// ## Pre-release Version Identifier\n// A numeric identifier, or a non-numeric identifier.\n\ncreateToken('PRERELEASEIDENTIFIER', `(?:${src[t.NUMERICIDENTIFIER]\n}|${src[t.NONNUMERICIDENTIFIER]})`)\n\ncreateToken('PRERELEASEIDENTIFIERLOOSE', `(?:${src[t.NUMERICIDENTIFIERLOOSE]\n}|${src[t.NONNUMERICIDENTIFIER]})`)\n\n// ## Pre-release Version\n// Hyphen, followed by one or more dot-separated pre-release version\n// identifiers.\n\ncreateToken('PRERELEASE', `(?:-(${src[t.PRERELEASEIDENTIFIER]\n}(?:\\\\.${src[t.PRERELEASEIDENTIFIER]})*))`)\n\ncreateToken('PRERELEASELOOSE', `(?:-?(${src[t.PRERELEASEIDENTIFIERLOOSE]\n}(?:\\\\.${src[t.PRERELEASEIDENTIFIERLOOSE]})*))`)\n\n// ## Build Metadata Identifier\n// Any combination of digits, letters, or hyphens.\n\ncreateToken('BUILDIDENTIFIER', `${LETTERDASHNUMBER}+`)\n\n// ## Build Metadata\n// Plus sign, followed by one or more period-separated build metadata\n// identifiers.\n\ncreateToken('BUILD', `(?:\\\\+(${src[t.BUILDIDENTIFIER]\n}(?:\\\\.${src[t.BUILDIDENTIFIER]})*))`)\n\n// ## Full Version String\n// A main version, followed optionally by a pre-release version and\n// build metadata.\n\n// Note that the only major, minor, patch, and pre-release sections of\n// the version string are capturing groups. The build metadata is not a\n// capturing group, because it should not ever be used in version\n// comparison.\n\ncreateToken('FULLPLAIN', `v?${src[t.MAINVERSION]\n}${src[t.PRERELEASE]}?${\n src[t.BUILD]}?`)\n\ncreateToken('FULL', `^${src[t.FULLPLAIN]}$`)\n\n// like full, but allows v1.2.3 and =1.2.3, which people do sometimes.\n// also, 1.0.0alpha1 (prerelease without the hyphen) which is pretty\n// common in the npm registry.\ncreateToken('LOOSEPLAIN', `[v=\\\\s]*${src[t.MAINVERSIONLOOSE]\n}${src[t.PRERELEASELOOSE]}?${\n src[t.BUILD]}?`)\n\ncreateToken('LOOSE', `^${src[t.LOOSEPLAIN]}$`)\n\ncreateToken('GTLT', '((?:<|>)?=?)')\n\n// Something like \"2.*\" or \"1.2.x\".\n// Note that \"x.x\" is a valid xRange identifer, meaning \"any version\"\n// Only the first item is strictly required.\ncreateToken('XRANGEIDENTIFIERLOOSE', `${src[t.NUMERICIDENTIFIERLOOSE]}|x|X|\\\\*`)\ncreateToken('XRANGEIDENTIFIER', `${src[t.NUMERICIDENTIFIER]}|x|X|\\\\*`)\n\ncreateToken('XRANGEPLAIN', `[v=\\\\s]*(${src[t.XRANGEIDENTIFIER]})` +\n `(?:\\\\.(${src[t.XRANGEIDENTIFIER]})` +\n `(?:\\\\.(${src[t.XRANGEIDENTIFIER]})` +\n `(?:${src[t.PRERELEASE]})?${\n src[t.BUILD]}?` +\n `)?)?`)\n\ncreateToken('XRANGEPLAINLOOSE', `[v=\\\\s]*(${src[t.XRANGEIDENTIFIERLOOSE]})` +\n `(?:\\\\.(${src[t.XRANGEIDENTIFIERLOOSE]})` +\n `(?:\\\\.(${src[t.XRANGEIDENTIFIERLOOSE]})` +\n `(?:${src[t.PRERELEASELOOSE]})?${\n src[t.BUILD]}?` +\n `)?)?`)\n\ncreateToken('XRANGE', `^${src[t.GTLT]}\\\\s*${src[t.XRANGEPLAIN]}$`)\ncreateToken('XRANGELOOSE', `^${src[t.GTLT]}\\\\s*${src[t.XRANGEPLAINLOOSE]}$`)\n\n// Coercion.\n// Extract anything that could conceivably be a part of a valid semver\ncreateToken('COERCEPLAIN', `${'(^|[^\\\\d])' +\n '(\\\\d{1,'}${MAX_SAFE_COMPONENT_LENGTH}})` +\n `(?:\\\\.(\\\\d{1,${MAX_SAFE_COMPONENT_LENGTH}}))?` +\n `(?:\\\\.(\\\\d{1,${MAX_SAFE_COMPONENT_LENGTH}}))?`)\ncreateToken('COERCE', `${src[t.COERCEPLAIN]}(?:$|[^\\\\d])`)\ncreateToken('COERCEFULL', src[t.COERCEPLAIN] +\n `(?:${src[t.PRERELEASE]})?` +\n `(?:${src[t.BUILD]})?` +\n `(?:$|[^\\\\d])`)\ncreateToken('COERCERTL', src[t.COERCE], true)\ncreateToken('COERCERTLFULL', src[t.COERCEFULL], true)\n\n// Tilde ranges.\n// Meaning is \"reasonably at or greater than\"\ncreateToken('LONETILDE', '(?:~>?)')\n\ncreateToken('TILDETRIM', `(\\\\s*)${src[t.LONETILDE]}\\\\s+`, true)\nexports.tildeTrimReplace = '$1~'\n\ncreateToken('TILDE', `^${src[t.LONETILDE]}${src[t.XRANGEPLAIN]}$`)\ncreateToken('TILDELOOSE', `^${src[t.LONETILDE]}${src[t.XRANGEPLAINLOOSE]}$`)\n\n// Caret ranges.\n// Meaning is \"at least and backwards compatible with\"\ncreateToken('LONECARET', '(?:\\\\^)')\n\ncreateToken('CARETTRIM', `(\\\\s*)${src[t.LONECARET]}\\\\s+`, true)\nexports.caretTrimReplace = '$1^'\n\ncreateToken('CARET', `^${src[t.LONECARET]}${src[t.XRANGEPLAIN]}$`)\ncreateToken('CARETLOOSE', `^${src[t.LONECARET]}${src[t.XRANGEPLAINLOOSE]}$`)\n\n// A simple gt/lt/eq thing, or just \"\" to indicate \"any version\"\ncreateToken('COMPARATORLOOSE', `^${src[t.GTLT]}\\\\s*(${src[t.LOOSEPLAIN]})$|^$`)\ncreateToken('COMPARATOR', `^${src[t.GTLT]}\\\\s*(${src[t.FULLPLAIN]})$|^$`)\n\n// An expression to strip any whitespace between the gtlt and the thing\n// it modifies, so that `> 1.2.3` ==> `>1.2.3`\ncreateToken('COMPARATORTRIM', `(\\\\s*)${src[t.GTLT]\n}\\\\s*(${src[t.LOOSEPLAIN]}|${src[t.XRANGEPLAIN]})`, true)\nexports.comparatorTrimReplace = '$1$2$3'\n\n// Something like `1.2.3 - 1.2.4`\n// Note that these all use the loose form, because they'll be\n// checked against either the strict or loose comparator form\n// later.\ncreateToken('HYPHENRANGE', `^\\\\s*(${src[t.XRANGEPLAIN]})` +\n `\\\\s+-\\\\s+` +\n `(${src[t.XRANGEPLAIN]})` +\n `\\\\s*$`)\n\ncreateToken('HYPHENRANGELOOSE', `^\\\\s*(${src[t.XRANGEPLAINLOOSE]})` +\n `\\\\s+-\\\\s+` +\n `(${src[t.XRANGEPLAINLOOSE]})` +\n `\\\\s*$`)\n\n// Star ranges basically just allow anything at all.\ncreateToken('STAR', '(<|>)?=?\\\\s*\\\\*')\n// >=0.0.0 is like a star\ncreateToken('GTE0', '^\\\\s*>=\\\\s*0\\\\.0\\\\.0\\\\s*$')\ncreateToken('GTE0PRE', '^\\\\s*>=\\\\s*0\\\\.0\\\\.0-0\\\\s*$')\n","// Determine if version is greater than all the versions possible in the range.\nconst outside = require('./outside')\nconst gtr = (version, range, options) => outside(version, range, '>', options)\nmodule.exports = gtr\n","const Range = require('../classes/range')\nconst intersects = (r1, r2, options) => {\n r1 = new Range(r1, options)\n r2 = new Range(r2, options)\n return r1.intersects(r2, options)\n}\nmodule.exports = intersects\n","const outside = require('./outside')\n// Determine if version is less than all the versions possible in the range\nconst ltr = (version, range, options) => outside(version, range, '<', options)\nmodule.exports = ltr\n","const SemVer = require('../classes/semver')\nconst Range = require('../classes/range')\n\nconst maxSatisfying = (versions, range, options) => {\n let max = null\n let maxSV = null\n let rangeObj = null\n try {\n rangeObj = new Range(range, options)\n } catch (er) {\n return null\n }\n versions.forEach((v) => {\n if (rangeObj.test(v)) {\n // satisfies(v, range, options)\n if (!max || maxSV.compare(v) === -1) {\n // compare(max, v, true)\n max = v\n maxSV = new SemVer(max, options)\n }\n }\n })\n return max\n}\nmodule.exports = maxSatisfying\n","const SemVer = require('../classes/semver')\nconst Range = require('../classes/range')\nconst minSatisfying = (versions, range, options) => {\n let min = null\n let minSV = null\n let rangeObj = null\n try {\n rangeObj = new Range(range, options)\n } catch (er) {\n return null\n }\n versions.forEach((v) => {\n if (rangeObj.test(v)) {\n // satisfies(v, range, options)\n if (!min || minSV.compare(v) === 1) {\n // compare(min, v, true)\n min = v\n minSV = new SemVer(min, options)\n }\n }\n })\n return min\n}\nmodule.exports = minSatisfying\n","const SemVer = require('../classes/semver')\nconst Range = require('../classes/range')\nconst gt = require('../functions/gt')\n\nconst minVersion = (range, loose) => {\n range = new Range(range, loose)\n\n let minver = new SemVer('0.0.0')\n if (range.test(minver)) {\n return minver\n }\n\n minver = new SemVer('0.0.0-0')\n if (range.test(minver)) {\n return minver\n }\n\n minver = null\n for (let i = 0; i < range.set.length; ++i) {\n const comparators = range.set[i]\n\n let setMin = null\n comparators.forEach((comparator) => {\n // Clone to avoid manipulating the comparator's semver object.\n const compver = new SemVer(comparator.semver.version)\n switch (comparator.operator) {\n case '>':\n if (compver.prerelease.length === 0) {\n compver.patch++\n } else {\n compver.prerelease.push(0)\n }\n compver.raw = compver.format()\n /* fallthrough */\n case '':\n case '>=':\n if (!setMin || gt(compver, setMin)) {\n setMin = compver\n }\n break\n case '<':\n case '<=':\n /* Ignore maximum versions */\n break\n /* istanbul ignore next */\n default:\n throw new Error(`Unexpected operation: ${comparator.operator}`)\n }\n })\n if (setMin && (!minver || gt(minver, setMin))) {\n minver = setMin\n }\n }\n\n if (minver && range.test(minver)) {\n return minver\n }\n\n return null\n}\nmodule.exports = minVersion\n","const SemVer = require('../classes/semver')\nconst Comparator = require('../classes/comparator')\nconst { ANY } = Comparator\nconst Range = require('../classes/range')\nconst satisfies = require('../functions/satisfies')\nconst gt = require('../functions/gt')\nconst lt = require('../functions/lt')\nconst lte = require('../functions/lte')\nconst gte = require('../functions/gte')\n\nconst outside = (version, range, hilo, options) => {\n version = new SemVer(version, options)\n range = new Range(range, options)\n\n let gtfn, ltefn, ltfn, comp, ecomp\n switch (hilo) {\n case '>':\n gtfn = gt\n ltefn = lte\n ltfn = lt\n comp = '>'\n ecomp = '>='\n break\n case '<':\n gtfn = lt\n ltefn = gte\n ltfn = gt\n comp = '<'\n ecomp = '<='\n break\n default:\n throw new TypeError('Must provide a hilo val of \"<\" or \">\"')\n }\n\n // If it satisfies the range it is not outside\n if (satisfies(version, range, options)) {\n return false\n }\n\n // From now on, variable terms are as if we're in \"gtr\" mode.\n // but note that everything is flipped for the \"ltr\" function.\n\n for (let i = 0; i < range.set.length; ++i) {\n const comparators = range.set[i]\n\n let high = null\n let low = null\n\n comparators.forEach((comparator) => {\n if (comparator.semver === ANY) {\n comparator = new Comparator('>=0.0.0')\n }\n high = high || comparator\n low = low || comparator\n if (gtfn(comparator.semver, high.semver, options)) {\n high = comparator\n } else if (ltfn(comparator.semver, low.semver, options)) {\n low = comparator\n }\n })\n\n // If the edge version comparator has a operator then our version\n // isn't outside it\n if (high.operator === comp || high.operator === ecomp) {\n return false\n }\n\n // If the lowest version comparator has an operator and our version\n // is less than it then it isn't higher than the range\n if ((!low.operator || low.operator === comp) &&\n ltefn(version, low.semver)) {\n return false\n } else if (low.operator === ecomp && ltfn(version, low.semver)) {\n return false\n }\n }\n return true\n}\n\nmodule.exports = outside\n","// given a set of versions and a range, create a \"simplified\" range\n// that includes the same versions that the original range does\n// If the original range is shorter than the simplified one, return that.\nconst satisfies = require('../functions/satisfies.js')\nconst compare = require('../functions/compare.js')\nmodule.exports = (versions, range, options) => {\n const set = []\n let first = null\n let prev = null\n const v = versions.sort((a, b) => compare(a, b, options))\n for (const version of v) {\n const included = satisfies(version, range, options)\n if (included) {\n prev = version\n if (!first) {\n first = version\n }\n } else {\n if (prev) {\n set.push([first, prev])\n }\n prev = null\n first = null\n }\n }\n if (first) {\n set.push([first, null])\n }\n\n const ranges = []\n for (const [min, max] of set) {\n if (min === max) {\n ranges.push(min)\n } else if (!max && min === v[0]) {\n ranges.push('*')\n } else if (!max) {\n ranges.push(`>=${min}`)\n } else if (min === v[0]) {\n ranges.push(`<=${max}`)\n } else {\n ranges.push(`${min} - ${max}`)\n }\n }\n const simplified = ranges.join(' || ')\n const original = typeof range.raw === 'string' ? range.raw : String(range)\n return simplified.length < original.length ? simplified : range\n}\n","const Range = require('../classes/range.js')\nconst Comparator = require('../classes/comparator.js')\nconst { ANY } = Comparator\nconst satisfies = require('../functions/satisfies.js')\nconst compare = require('../functions/compare.js')\n\n// Complex range `r1 || r2 || ...` is a subset of `R1 || R2 || ...` iff:\n// - Every simple range `r1, r2, ...` is a null set, OR\n// - Every simple range `r1, r2, ...` which is not a null set is a subset of\n// some `R1, R2, ...`\n//\n// Simple range `c1 c2 ...` is a subset of simple range `C1 C2 ...` iff:\n// - If c is only the ANY comparator\n// - If C is only the ANY comparator, return true\n// - Else if in prerelease mode, return false\n// - else replace c with `[>=0.0.0]`\n// - If C is only the ANY comparator\n// - if in prerelease mode, return true\n// - else replace C with `[>=0.0.0]`\n// - Let EQ be the set of = comparators in c\n// - If EQ is more than one, return true (null set)\n// - Let GT be the highest > or >= comparator in c\n// - Let LT be the lowest < or <= comparator in c\n// - If GT and LT, and GT.semver > LT.semver, return true (null set)\n// - If any C is a = range, and GT or LT are set, return false\n// - If EQ\n// - If GT, and EQ does not satisfy GT, return true (null set)\n// - If LT, and EQ does not satisfy LT, return true (null set)\n// - If EQ satisfies every C, return true\n// - Else return false\n// - If GT\n// - If GT.semver is lower than any > or >= comp in C, return false\n// - If GT is >=, and GT.semver does not satisfy every C, return false\n// - If GT.semver has a prerelease, and not in prerelease mode\n// - If no C has a prerelease and the GT.semver tuple, return false\n// - If LT\n// - If LT.semver is greater than any < or <= comp in C, return false\n// - If LT is <=, and LT.semver does not satisfy every C, return false\n// - If GT.semver has a prerelease, and not in prerelease mode\n// - If no C has a prerelease and the LT.semver tuple, return false\n// - Else return true\n\nconst subset = (sub, dom, options = {}) => {\n if (sub === dom) {\n return true\n }\n\n sub = new Range(sub, options)\n dom = new Range(dom, options)\n let sawNonNull = false\n\n OUTER: for (const simpleSub of sub.set) {\n for (const simpleDom of dom.set) {\n const isSub = simpleSubset(simpleSub, simpleDom, options)\n sawNonNull = sawNonNull || isSub !== null\n if (isSub) {\n continue OUTER\n }\n }\n // the null set is a subset of everything, but null simple ranges in\n // a complex range should be ignored. so if we saw a non-null range,\n // then we know this isn't a subset, but if EVERY simple range was null,\n // then it is a subset.\n if (sawNonNull) {\n return false\n }\n }\n return true\n}\n\nconst minimumVersionWithPreRelease = [new Comparator('>=0.0.0-0')]\nconst minimumVersion = [new Comparator('>=0.0.0')]\n\nconst simpleSubset = (sub, dom, options) => {\n if (sub === dom) {\n return true\n }\n\n if (sub.length === 1 && sub[0].semver === ANY) {\n if (dom.length === 1 && dom[0].semver === ANY) {\n return true\n } else if (options.includePrerelease) {\n sub = minimumVersionWithPreRelease\n } else {\n sub = minimumVersion\n }\n }\n\n if (dom.length === 1 && dom[0].semver === ANY) {\n if (options.includePrerelease) {\n return true\n } else {\n dom = minimumVersion\n }\n }\n\n const eqSet = new Set()\n let gt, lt\n for (const c of sub) {\n if (c.operator === '>' || c.operator === '>=') {\n gt = higherGT(gt, c, options)\n } else if (c.operator === '<' || c.operator === '<=') {\n lt = lowerLT(lt, c, options)\n } else {\n eqSet.add(c.semver)\n }\n }\n\n if (eqSet.size > 1) {\n return null\n }\n\n let gtltComp\n if (gt && lt) {\n gtltComp = compare(gt.semver, lt.semver, options)\n if (gtltComp > 0) {\n return null\n } else if (gtltComp === 0 && (gt.operator !== '>=' || lt.operator !== '<=')) {\n return null\n }\n }\n\n // will iterate one or zero times\n for (const eq of eqSet) {\n if (gt && !satisfies(eq, String(gt), options)) {\n return null\n }\n\n if (lt && !satisfies(eq, String(lt), options)) {\n return null\n }\n\n for (const c of dom) {\n if (!satisfies(eq, String(c), options)) {\n return false\n }\n }\n\n return true\n }\n\n let higher, lower\n let hasDomLT, hasDomGT\n // if the subset has a prerelease, we need a comparator in the superset\n // with the same tuple and a prerelease, or it's not a subset\n let needDomLTPre = lt &&\n !options.includePrerelease &&\n lt.semver.prerelease.length ? lt.semver : false\n let needDomGTPre = gt &&\n !options.includePrerelease &&\n gt.semver.prerelease.length ? gt.semver : false\n // exception: <1.2.3-0 is the same as <1.2.3\n if (needDomLTPre && needDomLTPre.prerelease.length === 1 &&\n lt.operator === '<' && needDomLTPre.prerelease[0] === 0) {\n needDomLTPre = false\n }\n\n for (const c of dom) {\n hasDomGT = hasDomGT || c.operator === '>' || c.operator === '>='\n hasDomLT = hasDomLT || c.operator === '<' || c.operator === '<='\n if (gt) {\n if (needDomGTPre) {\n if (c.semver.prerelease && c.semver.prerelease.length &&\n c.semver.major === needDomGTPre.major &&\n c.semver.minor === needDomGTPre.minor &&\n c.semver.patch === needDomGTPre.patch) {\n needDomGTPre = false\n }\n }\n if (c.operator === '>' || c.operator === '>=') {\n higher = higherGT(gt, c, options)\n if (higher === c && higher !== gt) {\n return false\n }\n } else if (gt.operator === '>=' && !satisfies(gt.semver, String(c), options)) {\n return false\n }\n }\n if (lt) {\n if (needDomLTPre) {\n if (c.semver.prerelease && c.semver.prerelease.length &&\n c.semver.major === needDomLTPre.major &&\n c.semver.minor === needDomLTPre.minor &&\n c.semver.patch === needDomLTPre.patch) {\n needDomLTPre = false\n }\n }\n if (c.operator === '<' || c.operator === '<=') {\n lower = lowerLT(lt, c, options)\n if (lower === c && lower !== lt) {\n return false\n }\n } else if (lt.operator === '<=' && !satisfies(lt.semver, String(c), options)) {\n return false\n }\n }\n if (!c.operator && (lt || gt) && gtltComp !== 0) {\n return false\n }\n }\n\n // if there was a < or >, and nothing in the dom, then must be false\n // UNLESS it was limited by another range in the other direction.\n // Eg, >1.0.0 <1.0.1 is still a subset of <2.0.0\n if (gt && hasDomLT && !lt && gtltComp !== 0) {\n return false\n }\n\n if (lt && hasDomGT && !gt && gtltComp !== 0) {\n return false\n }\n\n // we needed a prerelease range in a specific tuple, but didn't get one\n // then this isn't a subset. eg >=1.2.3-pre is not a subset of >=1.0.0,\n // because it includes prereleases in the 1.2.3 tuple\n if (needDomGTPre || needDomLTPre) {\n return false\n }\n\n return true\n}\n\n// >=1.2.3 is lower than >1.2.3\nconst higherGT = (a, b, options) => {\n if (!a) {\n return b\n }\n const comp = compare(a.semver, b.semver, options)\n return comp > 0 ? a\n : comp < 0 ? b\n : b.operator === '>' && a.operator === '>=' ? b\n : a\n}\n\n// <=1.2.3 is higher than <1.2.3\nconst lowerLT = (a, b, options) => {\n if (!a) {\n return b\n }\n const comp = compare(a.semver, b.semver, options)\n return comp < 0 ? a\n : comp > 0 ? b\n : b.operator === '<' && a.operator === '<=' ? b\n : a\n}\n\nmodule.exports = subset\n","const Range = require('../classes/range')\n\n// Mostly just for testing and legacy API reasons\nconst toComparators = (range, options) =>\n new Range(range, options).set\n .map(comp => comp.map(c => c.value).join(' ').trim().split(' '))\n\nmodule.exports = toComparators\n","const Range = require('../classes/range')\nconst validRange = (range, options) => {\n try {\n // Return '*' instead of '' so that truthiness works.\n // This will throw if it's invalid anyway\n return new Range(range, options).range || '*'\n } catch (er) {\n return null\n }\n}\nmodule.exports = validRange\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.diffTemplate = exports.fullDiff = void 0;\nconst impl = require(\"./diff\");\nconst template_and_changeset_diff_merger_1 = require(\"./diff/template-and-changeset-diff-merger\");\nconst types = require(\"./diff/types\");\nconst util_1 = require(\"./diff/util\");\n__exportStar(require(\"./diff/types\"), exports);\nconst DIFF_HANDLERS = {\n AWSTemplateFormatVersion: (diff, oldValue, newValue) => diff.awsTemplateFormatVersion = impl.diffAttribute(oldValue, newValue),\n Description: (diff, oldValue, newValue) => diff.description = impl.diffAttribute(oldValue, newValue),\n Metadata: (diff, oldValue, newValue) => diff.metadata = new types.DifferenceCollection((0, util_1.diffKeyedEntities)(oldValue, newValue, impl.diffMetadata)),\n Parameters: (diff, oldValue, newValue) => diff.parameters = new types.DifferenceCollection((0, util_1.diffKeyedEntities)(oldValue, newValue, impl.diffParameter)),\n Mappings: (diff, oldValue, newValue) => diff.mappings = new types.DifferenceCollection((0, util_1.diffKeyedEntities)(oldValue, newValue, impl.diffMapping)),\n Conditions: (diff, oldValue, newValue) => diff.conditions = new types.DifferenceCollection((0, util_1.diffKeyedEntities)(oldValue, newValue, impl.diffCondition)),\n Transform: (diff, oldValue, newValue) => diff.transform = impl.diffAttribute(oldValue, newValue),\n Resources: (diff, oldValue, newValue) => diff.resources = new types.DifferenceCollection((0, util_1.diffKeyedEntities)(oldValue, newValue, impl.diffResource)),\n Outputs: (diff, oldValue, newValue) => diff.outputs = new types.DifferenceCollection((0, util_1.diffKeyedEntities)(oldValue, newValue, impl.diffOutput)),\n};\n/**\n * Compare two CloudFormation templates and return semantic differences between them.\n *\n * @param currentTemplate the current state of the stack.\n * @param newTemplate the target state of the stack.\n * @param changeSet the change set for this stack.\n *\n * @returns a +types.TemplateDiff+ object that represents the changes that will happen if\n * a stack which current state is described by +currentTemplate+ is updated with\n * the template +newTemplate+.\n */\nfunction fullDiff(currentTemplate, newTemplate, changeSet, isImport) {\n normalize(currentTemplate);\n normalize(newTemplate);\n const theDiff = diffTemplate(currentTemplate, newTemplate);\n if (changeSet) {\n // These methods mutate the state of theDiff, using the changeSet.\n const changeSetDiff = new template_and_changeset_diff_merger_1.TemplateAndChangeSetDiffMerger({ changeSet });\n theDiff.resources.forEachDifference((logicalId, change) => changeSetDiff.overrideDiffResourceChangeImpactWithChangeSetChangeImpact(logicalId, change));\n changeSetDiff.addImportInformationFromChangeset(theDiff.resources);\n }\n else if (isImport) {\n makeAllResourceChangesImports(theDiff);\n }\n return theDiff;\n}\nexports.fullDiff = fullDiff;\nfunction diffTemplate(currentTemplate, newTemplate) {\n // Base diff\n const theDiff = calculateTemplateDiff(currentTemplate, newTemplate);\n // We're going to modify this in-place\n const newTemplateCopy = deepCopy(newTemplate);\n let didPropagateReferenceChanges;\n let diffWithReplacements;\n do {\n diffWithReplacements = calculateTemplateDiff(currentTemplate, newTemplateCopy);\n // Propagate replacements for replaced resources\n didPropagateReferenceChanges = false;\n if (diffWithReplacements.resources) {\n diffWithReplacements.resources.forEachDifference((logicalId, change) => {\n if (change.changeImpact === types.ResourceImpact.WILL_REPLACE) {\n if (propagateReplacedReferences(newTemplateCopy, logicalId)) {\n didPropagateReferenceChanges = true;\n }\n }\n });\n }\n } while (didPropagateReferenceChanges);\n // Copy \"replaced\" states from `diffWithReplacements` to `theDiff`.\n diffWithReplacements.resources\n .filter(r => isReplacement(r.changeImpact))\n .forEachDifference((logicalId, downstreamReplacement) => {\n const resource = theDiff.resources.get(logicalId);\n if (resource.changeImpact !== downstreamReplacement.changeImpact) {\n propagatePropertyReplacement(downstreamReplacement, resource);\n }\n });\n return theDiff;\n}\nexports.diffTemplate = diffTemplate;\nfunction isReplacement(impact) {\n return impact === types.ResourceImpact.MAY_REPLACE || impact === types.ResourceImpact.WILL_REPLACE;\n}\n/**\n * For all properties in 'source' that have a \"replacement\" impact, propagate that impact to \"dest\"\n */\nfunction propagatePropertyReplacement(source, dest) {\n for (const [propertyName, diff] of Object.entries(source.propertyUpdates)) {\n if (diff.changeImpact && isReplacement(diff.changeImpact)) {\n // Use the propertydiff of source in target. The result of this happens to be clear enough.\n dest.setPropertyChange(propertyName, diff);\n }\n }\n}\nfunction calculateTemplateDiff(currentTemplate, newTemplate) {\n const differences = {};\n const unknown = {};\n for (const key of (0, util_1.unionOf)(Object.keys(currentTemplate), Object.keys(newTemplate)).sort()) {\n const oldValue = currentTemplate[key];\n const newValue = newTemplate[key];\n if ((0, util_1.deepEqual)(oldValue, newValue)) {\n continue;\n }\n const handler = DIFF_HANDLERS[key]\n || ((_diff, oldV, newV) => unknown[key] = impl.diffUnknown(oldV, newV));\n handler(differences, oldValue, newValue);\n }\n if (Object.keys(unknown).length > 0) {\n differences.unknown = new types.DifferenceCollection(unknown);\n }\n return new types.TemplateDiff(differences);\n}\n/**\n * Replace all references to the given logicalID on the given template, in-place\n *\n * Returns true if any references were replaced.\n */\nfunction propagateReplacedReferences(template, logicalId) {\n let ret = false;\n function recurse(obj) {\n if (Array.isArray(obj)) {\n obj.forEach(recurse);\n }\n if (typeof obj === 'object' && obj !== null) {\n if (!replaceReference(obj)) {\n Object.values(obj).forEach(recurse);\n }\n }\n }\n function replaceReference(obj) {\n const keys = Object.keys(obj);\n if (keys.length !== 1) {\n return false;\n }\n const key = keys[0];\n if (key === 'Ref') {\n if (obj.Ref === logicalId) {\n obj.Ref = logicalId + ' (replaced)';\n ret = true;\n }\n return true;\n }\n if (key.startsWith('Fn::')) {\n if (Array.isArray(obj[key]) && obj[key].length > 0 && obj[key][0] === logicalId) {\n obj[key][0] = logicalId + '(replaced)';\n ret = true;\n }\n return true;\n }\n return false;\n }\n recurse(template);\n return ret;\n}\nfunction deepCopy(x) {\n if (Array.isArray(x)) {\n return x.map(deepCopy);\n }\n if (typeof x === 'object' && x !== null) {\n const ret = {};\n for (const key of Object.keys(x)) {\n ret[key] = deepCopy(x[key]);\n }\n return ret;\n }\n return x;\n}\nfunction makeAllResourceChangesImports(diff) {\n diff.resources.forEachDifference((_logicalId, change) => {\n change.isImport = true;\n });\n}\nfunction normalize(template) {\n if (typeof template === 'object') {\n for (const key of (Object.keys(template ?? {}))) {\n if (key === 'Fn::GetAtt' && typeof template[key] === 'string') {\n template[key] = template[key].split('.');\n continue;\n }\n else if (key === 'DependsOn') {\n if (typeof template[key] === 'string') {\n template[key] = [template[key]];\n }\n else if (Array.isArray(template[key])) {\n template[key] = template[key].sort();\n }\n continue;\n }\n if (Array.isArray(template[key])) {\n for (const element of (template[key])) {\n normalize(element);\n }\n }\n else {\n normalize(template[key]);\n }\n }\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlmZi10ZW1wbGF0ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImRpZmYtdGVtcGxhdGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFHQSwrQkFBK0I7QUFDL0Isa0dBQTJGO0FBQzNGLHNDQUFzQztBQUN0QyxzQ0FBb0U7QUFFcEUsK0NBQTZCO0FBTzdCLE1BQU0sYUFBYSxHQUFvQjtJQUNyQyx3QkFBd0IsRUFBRSxDQUFDLElBQUksRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLEVBQUUsQ0FDckQsSUFBSSxDQUFDLHdCQUF3QixHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxFQUFFLFFBQVEsQ0FBQztJQUN4RSxXQUFXLEVBQUUsQ0FBQyxJQUFJLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxFQUFFLENBQ3hDLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRLEVBQUUsUUFBUSxDQUFDO0lBQzNELFFBQVEsRUFBRSxDQUFDLElBQUksRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLEVBQUUsQ0FDckMsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLEtBQUssQ0FBQyxvQkFBb0IsQ0FBQyxJQUFBLHdCQUFpQixFQUFDLFFBQVEsRUFBRSxRQUFRLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQzFHLFVBQVUsRUFBRSxDQUFDLElBQUksRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLEVBQUUsQ0FDdkMsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLEtBQUssQ0FBQyxvQkFBb0IsQ0FBQyxJQUFBLHdCQUFpQixFQUFDLFFBQVEsRUFBRSxRQUFRLEVBQUUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQzdHLFFBQVEsRUFBRSxDQUFDLElBQUksRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLEVBQUUsQ0FDckMsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLEtBQUssQ0FBQyxv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QUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDO29CQUN0QyxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUM7Z0JBQ3JCLENBQUM7WUFDSCxDQUFDO2lCQUFNLENBQUM7Z0JBQ04sU0FBUyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1lBQzNCLENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQztBQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBUaGUgU0RLIGlzIG9ubHkgdXNlZCB0byByZWZlcmVuY2UgYERlc2NyaWJlQ2hhbmdlU2V0T3V0cHV0YCwgc28gdGhlIFNESyBpcyBhZGRlZCBhcyBhIGRldkRlcGVuZGVuY3kuXG4vLyBUaGUgU0RLIHNob3VsZCBub3QgbWFrZSBuZXR3b3JrIGNhbGxzIGhlcmVcbmltcG9ydCB0eXBlIHsgRGVzY3JpYmVDaGFuZ2VTZXRPdXRwdXQgYXMgRGVzY3JpYmVDaGFuZ2VTZXQgfSBmcm9tICdAYXdzLXNkay9jbGllbnQtY2xvdWRmb3JtYXRpb24nO1xuaW1wb3J0ICogYXMgaW1wbCBmcm9tICcuL2RpZmYnO1xuaW1wb3J0IHsgVGVtcGxhdGVBbmRDaGFuZ2VTZXREaWZmTWVyZ2VyIH0gZnJvbSAnLi9kaWZmL3RlbXBsYXRlLWFuZC1jaGFuZ2VzZXQtZGlmZi1tZXJnZXInO1xuaW1wb3J0ICogYXMgdHlwZXMgZnJvbSAnLi9kaWZmL3R5cGVzJztcbmltcG9ydCB7IGRlZXBFcXVhbCwgZGlmZktleWVkRW50aXRpZXMsIHVuaW9uT2YgfSBmcm9tICcuL2RpZmYvdXRpbCc7XG5cbmV4cG9ydCAqIGZyb20gJy4vZGlmZi90eXBlcyc7XG5cbmV4cG9ydCB0eXBlIERlc2NyaWJlQ2hhbmdlU2V0T3V0cHV0ID0gRGVzY3JpYmVDaGFuZ2VTZXQ7XG5cbnR5cGUgRGlmZkhhbmRsZXIgPSAoZGlmZjogdHlwZXMuSVRlbXBsYXRlRGlmZiwgb2xkVmFsdWU6IGFueSwgbmV3VmFsdWU6IGFueSkgPT4gdm9pZDtcbnR5cGUgSGFuZGxlclJlZ2lzdHJ5ID0geyBbc2VjdGlvbjogc3RyaW5nXTogRGlmZkhhbmRsZXIgfTtcblxuY29uc3QgRElGRl9IQU5ETEVSUzogSGFuZGxlclJlZ2lzdHJ5ID0ge1xuICBBV1NUZW1wbGF0ZUZvcm1hdFZlcnNpb246IChkaWZmLCBvbGRWYWx1ZSwgbmV3VmFsdWUpID0+XG4gICAgZGlmZi5hd3NUZW1wbGF0ZUZvcm1hdFZlcnNpb24gPSBpbXBsLmRpZmZBdHRyaWJ1dGUob2xkVmFsdWUsIG5ld1ZhbHVlKSxcbiAgRGVzY3JpcHRpb246IChkaWZmLCBvbGRWYWx1ZSwgbmV3VmFsdWUpID0+XG4gICAgZGlmZi5kZXNjcmlwdGlvbiA9IGltcGwuZGlmZkF0dHJpYnV0ZShvbGRWYWx1ZSwgbmV3VmFsdWUpLFxuICBNZXRhZGF0YTogKGRpZmYsIG9sZFZhbHVlLCBuZXdWYWx1ZSkgPT5cbiAgICBkaWZmLm1ldGFkYXRhID0gbmV3IHR5cGVzLkRpZmZlcmVuY2VDb2xsZWN0aW9uKGRpZmZLZXllZEVudGl0aWVzKG9sZFZhbHVlLCBuZXdWYWx1ZSwgaW1wbC5kaWZmTWV0YWRhdGEpKSxcbiAgUGFyYW1ldGVyczogKGRpZmYsIG9sZFZhbHVlLCBuZXdWYWx1ZSkgPT5cbiAgICBkaWZmLnBhcmFtZXRlcnMgPSBuZXcgdHlwZXMuRGlmZmVyZW5jZUNvbGxlY3Rpb24oZGlmZktleWVkRW50aXRpZXMob2xkVmFsdWUsIG5ld1ZhbHVlLCBpbXBsLmRpZmZQYXJhbWV0ZXIpKSxcbiAgTWFwcGluZ3M6IChkaWZmLCBvbGRWYWx1ZSwgbmV3VmFsdWUpID0+XG4gICAgZGlmZi5tYXBwaW5ncyA9IG5ldyB0eXBlcy5EaWZmZXJlbmNlQ29sbGVjdGlvbihkaWZmS2V5ZWRFbnRpdGllcyhvbGRWYWx1ZSwgbmV3VmFsdWUsIGltcGwuZGlmZk1hcHBpbmcpKSxcbiAgQ29uZGl0aW9uczogKGRpZmYsIG9sZFZhbHVlLCBuZXdWYWx1ZSkgPT5cbiAgICBkaWZmLmNvbmRpdGlvbnMgPSBuZXcgdHlwZXMuRGlmZmVyZW5jZUNvbGxlY3Rpb24oZGlmZktleWVkRW50aXRpZXMob2xkVmFsdWUsIG5ld1ZhbHVlLCBpbXBsLmRpZmZDb25kaXRpb24pKSxcbiAgVHJhbnNmb3JtOiAoZGlmZiwgb2xkVmFsdWUsIG5ld1ZhbHVlKSA9PlxuICAgIGRpZmYudHJhbnNmb3JtID0gaW1wbC5kaWZmQXR0cmlidXRlKG9sZFZhbHVlLCBuZXdWYWx1ZSksXG4gIFJlc291cmNlczogKGRpZmYsIG9sZFZhbHVlLCBuZXdWYWx1ZSkgPT5cbiAgICBkaWZmLnJlc291cmNlcyA9IG5ldyB0eXBlcy5EaWZmZXJlbmNlQ29sbGVjdGlvbihkaWZmS2V5ZWRFbnRpdGllcyhvbGRWYWx1ZSwgbmV3VmFsdWUsIGltcGwuZGlmZlJlc291cmNlKSksXG4gIE91dHB1dHM6IChkaWZmLCBvbGRWYWx1ZSwgbmV3VmFsdWUpID0+XG4gICAgZGlmZi5vdXRwdXRzID0gbmV3IHR5cGVzLkRpZmZlcmVuY2VDb2xsZWN0aW9uKGRpZmZLZXllZEVudGl0aWVzKG9sZFZhbHVlLCBuZXdWYWx1ZSwgaW1wbC5kaWZmT3V0cHV0KSksXG59O1xuXG4vKipcbiAqIENvbXBhcmUgdHdvIENsb3VkRm9ybWF0aW9uIHRlbXBsYXRlcyBhbmQgcmV0dXJuIHNlbWFudGljIGRpZmZlcmVuY2VzIGJldHdlZW4gdGhlbS5cbiAqXG4gKiBAcGFyYW0gY3VycmVudFRlbXBsYXRlIHRoZSBjdXJyZW50IHN0YXRlIG9mIHRoZSBzdGFjay5cbiAqIEBwYXJhbSBuZXdUZW1wbGF0ZSAgICAgdGhlIHRhcmdldCBzdGF0ZSBvZiB0aGUgc3RhY2suXG4gKiBAcGFyYW0gY2hhbmdlU2V0ICAgICAgIHRoZSBjaGFuZ2Ugc2V0IGZvciB0aGlzIHN0YWNrLlxuICpcbiAqIEByZXR1cm5zIGEgK3R5cGVzLlRlbXBsYXRlRGlmZisgb2JqZWN0IHRoYXQgcmVwcmVzZW50cyB0aGUgY2hhbmdlcyB0aGF0IHdpbGwgaGFwcGVuIGlmXG4gKiAgICAgIGEgc3RhY2sgd2hpY2ggY3VycmVudCBzdGF0ZSBpcyBkZXNjcmliZWQgYnkgK2N1cnJlbnRUZW1wbGF0ZSsgaXMgdXBkYXRlZCB3aXRoXG4gKiAgICAgIHRoZSB0ZW1wbGF0ZSArbmV3VGVtcGxhdGUrLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZnVsbERpZmYoXG4gIGN1cnJlbnRUZW1wbGF0ZTogeyBba2V5OiBzdHJpbmddOiBhbnkgfSxcbiAgbmV3VGVtcGxhdGU6IHsgW2tleTogc3RyaW5nXTogYW55IH0sXG4gIGNoYW5nZVNldD86IERlc2NyaWJlQ2hhbmdlU2V0T3V0cHV0LFxuICBpc0ltcG9ydD86IGJvb2xlYW4sXG4pOiB0eXBlcy5UZW1wbGF0ZURpZmYge1xuXG4gIG5vcm1hbGl6ZShjdXJyZW50VGVtcGxhdGUpO1xuICBub3JtYWxpemUobmV3VGVtcGxhdGUpO1xuICBjb25zdCB0aGVEaWZmID0gZGlmZlRlbXBsYXRlKGN1cnJlbnRUZW1wbGF0ZSwgbmV3VGVtcGxhdGUpO1xuICBpZiAoY2hhbmdlU2V0KSB7XG4gICAgLy8gVGhlc2UgbWV0aG9kcyBtdXRhdGUgdGhlIHN0YXRlIG9mIHRoZURpZmYsIHVzaW5nIHRoZSBjaGFuZ2VTZXQuXG4gICAgY29uc3QgY2hhbmdlU2V0RGlmZiA9IG5ldyBUZW1wbGF0ZUFuZENoYW5nZVNldERpZmZNZXJnZXIoeyBjaGFuZ2VTZXQgfSk7XG4gICAgdGhlRGlmZi5yZXNvdXJjZXMuZm9yRWFjaERpZmZlcmVuY2UoKGxvZ2ljYWxJZDogc3RyaW5nLCBjaGFuZ2U6IHR5cGVzLlJlc291cmNlRGlmZmVyZW5jZSkgPT5cbiAgICAgIGNoYW5nZVNldERpZmYub3ZlcnJpZGVEaWZmUmVzb3VyY2VDaGFuZ2VJbXBhY3RXaXRoQ2hhbmdlU2V0Q2hhbmdlSW1wYWN0KGxvZ2ljYWxJZCwgY2hhbmdlKSxcbiAgICApO1xuICAgIGNoYW5nZVNldERpZmYuYWRkSW1wb3J0SW5mb3JtYXRpb25Gcm9tQ2hhbmdlc2V0KHRoZURpZmYucmVzb3VyY2VzKTtcbiAgfSBlbHNlIGlmIChpc0ltcG9ydCkge1xuICAgIG1ha2VBbGxSZXNvdXJjZUNoYW5nZXNJbXBvcnRzKHRoZURpZmYpO1xuICB9XG5cbiAgcmV0dXJuIHRoZURpZmY7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkaWZmVGVtcGxhdGUoXG4gIGN1cnJlbnRUZW1wbGF0ZTogeyBba2V5OiBzdHJpbmddOiBhbnkgfSxcbiAgbmV3VGVtcGxhdGU6IHsgW2tleTogc3RyaW5nXTogYW55IH0sXG4pOiB0eXBlcy5UZW1wbGF0ZURpZmYge1xuXG4gIC8vIEJhc2UgZGlmZlxuICBjb25zdCB0aGVEaWZmID0gY2FsY3VsYXRlVGVtcGxhdGVEaWZmKGN1cnJlbnRUZW1wbGF0ZSwgbmV3VGVtcGxhdGUpO1xuXG4gIC8vIFdlJ3JlIGdvaW5nIHRvIG1vZGlmeSB0aGlzIGluLXBsYWNlXG4gIGNvbnN0IG5ld1RlbXBsYXRlQ29weSA9IGRlZXBDb3B5KG5ld1RlbXBsYXRlKTtcblxuICBsZXQgZGlkUHJvcGFnYXRlUmVmZXJlbmNlQ2hhbmdlcztcbiAgbGV0IGRpZmZXaXRoUmVwbGFjZW1lbnRzO1xuICBkbyB7XG4gICAgZGlmZldpdGhSZXBsYWNlbWVudHMgPSBjYWxjdWxhdGVUZW1wbGF0ZURpZmYoY3VycmVudFRlbXBsYXRlLCBuZXdUZW1wbGF0ZUNvcHkpO1xuXG4gICAgLy8gUHJvcGFnYXRlIHJlcGxhY2VtZW50cyBmb3IgcmVwbGFjZWQgcmVzb3VyY2VzXG4gICAgZGlkUHJvcGFnYXRlUmVmZXJlbmNlQ2hhbmdlcyA9IGZhbHNlO1xuICAgIGlmIChkaWZmV2l0aFJlcGxhY2VtZW50cy5yZXNvdXJjZXMpIHtcbiAgICAgIGRpZmZXaXRoUmVwbGFjZW1lbnRzLnJlc291cmNlcy5mb3JFYWNoRGlmZmVyZW5jZSgobG9naWNhbElkLCBjaGFuZ2UpID0+IHtcbiAgICAgICAgaWYgKGNoYW5nZS5jaGFuZ2VJbXBhY3QgPT09IHR5cGVzLlJlc291cmNlSW1wYWN0LldJTExfUkVQTEFDRSkge1xuICAgICAgICAgIGlmIChwcm9wYWdhdGVSZXBsYWNlZFJlZmVyZW5jZXMobmV3VGVtcGxhdGVDb3B5LCBsb2dpY2FsSWQpKSB7XG4gICAgICAgICAgICBkaWRQcm9wYWdhdGVSZWZlcmVuY2VDaGFuZ2VzID0gdHJ1ZTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgfSB3aGlsZSAoZGlkUHJvcGFnYXRlUmVmZXJlbmNlQ2hhbmdlcyk7XG5cbiAgLy8gQ29weSBcInJlcGxhY2VkXCIgc3RhdGVzIGZyb20gYGRpZmZXaXRoUmVwbGFjZW1lbnRzYCB0byBgdGhlRGlmZmAuXG4gIGRpZmZXaXRoUmVwbGFjZW1lbnRzLnJlc291cmNlc1xuICAgIC5maWx0ZXIociA9PiBpc1JlcGxhY2VtZW50KHIhLmNoYW5nZUltcGFjdCkpXG4gICAgLmZvckVhY2hEaWZmZXJlbmNlKChsb2dpY2FsSWQsIGRvd25zdHJlYW1SZXBsYWNlbWVudCkgPT4ge1xuICAgICAgY29uc3QgcmVzb3VyY2UgPSB0aGVEaWZmLnJlc291cmNlcy5nZXQobG9naWNhbElkKTtcblxuICAgICAgaWYgKHJlc291cmNlLmNoYW5nZUltcGFjdCAhPT0gZG93bnN0cmVhbVJlcGxhY2VtZW50LmNoYW5nZUltcGFjdCkge1xuICAgICAgICBwcm9wYWdhdGVQcm9wZXJ0eVJlcGxhY2VtZW50KGRvd25zdHJlYW1SZXBsYWNlbWVudCwgcmVzb3VyY2UpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gIHJldHVybiB0aGVEaWZmO1xufVxuXG5mdW5jdGlvbiBpc1JlcGxhY2VtZW50KGltcGFjdDogdHlwZXMuUmVzb3VyY2VJbXBhY3QpIHtcbiAgcmV0dXJuIGltcGFjdCA9PT0gdHlwZXMuUmVzb3VyY2VJbXBhY3QuTUFZX1JFUExBQ0UgfHwgaW1wYWN0ID09PSB0eXBlcy5SZXNvdXJjZUltcGFjdC5XSUxMX1JFUExBQ0U7XG59XG5cbi8qKlxuICogRm9yIGFsbCBwcm9wZXJ0aWVzIGluICdzb3VyY2UnIHRoYXQgaGF2ZSBhIFwicmVwbGFjZW1lbnRcIiBpbXBhY3QsIHByb3BhZ2F0ZSB0aGF0IGltcGFjdCB0byBcImRlc3RcIlxuICovXG5mdW5jdGlvbiBwcm9wYWdhdGVQcm9wZXJ0eVJlcGxhY2VtZW50KHNvdXJjZTogdHlwZXMuUmVzb3VyY2VEaWZmZXJlbmNlLCBkZXN0OiB0eXBlcy5SZXNvdXJjZURpZmZlcmVuY2UpIHtcbiAgZm9yIChjb25zdCBbcHJvcGVydHlOYW1lLCBkaWZmXSBvZiBPYmplY3QuZW50cmllcyhzb3VyY2UucHJvcGVydHlVcGRhdGVzKSkge1xuICAgIGlmIChkaWZmLmNoYW5nZUltcGFjdCAmJiBpc1JlcGxhY2VtZW50KGRpZmYuY2hhbmdlSW1wYWN0KSkge1xuICAgICAgLy8gVXNlIHRoZSBwcm9wZXJ0eWRpZmYgb2Ygc291cmNlIGluIHRhcmdldC4gVGhlIHJlc3VsdCBvZiB0aGlzIGhhcHBlbnMgdG8gYmUgY2xlYXIgZW5vdWdoLlxuICAgICAgZGVzdC5zZXRQcm9wZXJ0eUNoYW5nZShwcm9wZXJ0eU5hbWUsIGRpZmYpO1xuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBjYWxjdWxhdGVUZW1wbGF0ZURpZmYoY3VycmVudFRlbXBsYXRlOiB7IFtrZXk6IHN0cmluZ106IGFueSB9LCBuZXdUZW1wbGF0ZTogeyBba2V5OiBzdHJpbmddOiBhbnkgfSk6IHR5cGVzLlRlbXBsYXRlRGlmZiB7XG4gIGNvbnN0IGRpZmZlcmVuY2VzOiB0eXBlcy5JVGVtcGxhdGVEaWZmID0ge307XG4gIGNvbnN0IHVua25vd246IHsgW2tleTogc3RyaW5nXTogdHlwZXMuRGlmZmVyZW5jZTxhbnk+IH0gPSB7fTtcbiAgZm9yIChjb25zdCBrZXkgb2YgdW5pb25PZihPYmplY3Qua2V5cyhjdXJyZW50VGVtcGxhdGUpLCBPYmplY3Qua2V5cyhuZXdUZW1wbGF0ZSkpLnNvcnQoKSkge1xuICAgIGNvbnN0IG9sZFZhbHVlID0gY3VycmVudFRlbXBsYXRlW2tleV07XG4gICAgY29uc3QgbmV3VmFsdWUgPSBuZXdUZW1wbGF0ZVtrZXldO1xuICAgIGlmIChkZWVwRXF1YWwob2xkVmFsdWUsIG5ld1ZhbHVlKSkge1xuICAgICAgY29udGludWU7XG4gICAgfVxuICAgIGNvbnN0IGhhbmRsZXI6IERpZmZIYW5kbGVyID0gRElGRl9IQU5ETEVSU1trZXldXG4gICAgICAgICAgICAgICAgICB8fCAoKF9kaWZmLCBvbGRWLCBuZXdWKSA9PiB1bmtub3duW2tleV0gPSBpbXBsLmRpZmZVbmtub3duKG9sZFYsIG5ld1YpKTtcbiAgICBoYW5kbGVyKGRpZmZlcmVuY2VzLCBvbGRWYWx1ZSwgbmV3VmFsdWUpO1xuICB9XG4gIGlmIChPYmplY3Qua2V5cyh1bmtub3duKS5sZW5ndGggPiAwKSB7XG4gICAgZGlmZmVyZW5jZXMudW5rbm93biA9IG5ldyB0eXBlcy5EaWZmZXJlbmNlQ29sbGVjdGlvbih1bmtub3duKTtcbiAgfVxuXG4gIHJldHVybiBuZXcgdHlwZXMuVGVtcGxhdGVEaWZmKGRpZmZlcmVuY2VzKTtcbn1cblxuLyoqXG4gKiBSZXBsYWNlIGFsbCByZWZlcmVuY2VzIHRvIHRoZSBnaXZlbiBsb2dpY2FsSUQgb24gdGhlIGdpdmVuIHRlbXBsYXRlLCBpbi1wbGFjZVxuICpcbiAqIFJldHVybnMgdHJ1ZSBpZiBhbnkgcmVmZXJlbmNlcyB3ZXJlIHJlcGxhY2VkLlxuICovXG5mdW5jdGlvbiBwcm9wYWdhdGVSZXBsYWNlZFJlZmVyZW5jZXModGVtcGxhdGU6IG9iamVjdCwgbG9naWNhbElkOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgbGV0IHJldCA9IGZhbHNlO1xuXG4gIGZ1bmN0aW9uIHJlY3Vyc2Uob2JqOiBhbnkpIHtcbiAgICBpZiAoQXJyYXkuaXNBcnJheShvYmopKSB7XG4gICAgICBvYmouZm9yRWFjaChyZWN1cnNlKTtcbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIG9iaiA9PT0gJ29iamVjdCcgJiYgb2JqICE9PSBudWxsKSB7XG4gICAgICBpZiAoIXJlcGxhY2VSZWZlcmVuY2Uob2JqKSkge1xuICAgICAgICBPYmplY3QudmFsdWVzKG9iaikuZm9yRWFjaChyZWN1cnNlKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiByZXBsYWNlUmVmZXJlbmNlKG9iajogYW55KSB7XG4gICAgY29uc3Qga2V5cyA9IE9iamVjdC5rZXlzKG9iaik7XG4gICAgaWYgKGtleXMubGVuZ3RoICE9PSAxKSB7IHJldHVybiBmYWxzZTsgfVxuICAgIGNvbnN0IGtleSA9IGtleXNbMF07XG5cbiAgICBpZiAoa2V5ID09PSAnUmVmJykge1xuICAgICAgaWYgKG9iai5SZWYgPT09IGxvZ2ljYWxJZCkge1xuICAgICAgICBvYmouUmVmID0gbG9naWNhbElkICsgJyAocmVwbGFjZWQpJztcbiAgICAgICAgcmV0ID0gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIGlmIChrZXkuc3RhcnRzV2l0aCgnRm46OicpKSB7XG4gICAgICBpZiAoQXJyYXkuaXNBcnJheShvYmpba2V5XSkgJiYgb2JqW2tleV0ubGVuZ3RoID4gMCAmJiBvYmpba2V5XVswXSA9PT0gbG9naWNhbElkKSB7XG4gICAgICAgIG9ialtrZXldWzBdID0gbG9naWNhbElkICsgJyhyZXBsYWNlZCknO1xuICAgICAgICByZXQgPSB0cnVlO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcmVjdXJzZSh0ZW1wbGF0ZSk7XG4gIHJldHVybiByZXQ7XG59XG5cbmZ1bmN0aW9uIGRlZXBDb3B5KHg6IGFueSk6IGFueSB7XG4gIGlmIChBcnJheS5pc0FycmF5KHgpKSB7XG4gICAgcmV0dXJuIHgubWFwKGRlZXBDb3B5KTtcbiAgfVxuXG4gIGlmICh0eXBlb2YgeCA9PT0gJ29iamVjdCcgJiYgeCAhPT0gbnVsbCkge1xuICAgIGNvbnN0IHJldDogYW55ID0ge307XG4gICAgZm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXMoeCkpIHtcbiAgICAgIHJldFtrZXldID0gZGVlcENvcHkoeFtrZXldKTtcbiAgICB9XG4gICAgcmV0dXJuIHJldDtcbiAgfVxuXG4gIHJldHVybiB4O1xufVxuXG5mdW5jdGlvbiBtYWtlQWxsUmVzb3VyY2VDaGFuZ2VzSW1wb3J0cyhkaWZmOiB0eXBlcy5UZW1wbGF0ZURpZmYpIHtcbiAgZGlmZi5yZXNvdXJjZXMuZm9yRWFjaERpZmZlcmVuY2UoKF9sb2dpY2FsSWQ6IHN0cmluZywgY2hhbmdlOiB0eXBlcy5SZXNvdXJjZURpZmZlcmVuY2UpID0+IHtcbiAgICBjaGFuZ2UuaXNJbXBvcnQgPSB0cnVlO1xuICB9KTtcbn1cblxuZnVuY3Rpb24gbm9ybWFsaXplKHRlbXBsYXRlOiBhbnkpIHtcbiAgaWYgKHR5cGVvZiB0ZW1wbGF0ZSA9PT0gJ29iamVjdCcpIHtcbiAgICBmb3IgKGNvbnN0IGtleSBvZiAoT2JqZWN0LmtleXModGVtcGxhdGUgPz8ge30pKSkge1xuICAgICAgaWYgKGtleSA9PT0gJ0ZuOjpHZXRBdHQnICYmIHR5cGVvZiB0ZW1wbGF0ZVtrZXldID09PSAnc3RyaW5nJykge1xuICAgICAgICB0ZW1wbGF0ZVtrZXldID0gdGVtcGxhdGVba2V5XS5zcGxpdCgnLicpO1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH0gZWxzZSBpZiAoa2V5ID09PSAnRGVwZW5kc09uJykge1xuICAgICAgICBpZiAodHlwZW9mIHRlbXBsYXRlW2tleV0gPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgdGVtcGxhdGVba2V5XSA9IFt0ZW1wbGF0ZVtrZXldXTtcbiAgICAgICAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KHRlbXBsYXRlW2tleV0pKSB7XG4gICAgICAgICAgdGVtcGxhdGVba2V5XSA9IHRlbXBsYXRlW2tleV0uc29ydCgpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICBpZiAoQXJyYXkuaXNBcnJheSh0ZW1wbGF0ZVtrZXldKSkge1xuICAgICAgICBmb3IgKGNvbnN0IGVsZW1lbnQgb2YgKHRlbXBsYXRlW2tleV0pKSB7XG4gICAgICAgICAgbm9ybWFsaXplKGVsZW1lbnQpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBub3JtYWxpemUodGVtcGxhdGVba2V5XSk7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iXX0=","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.diffUnknown = exports.diffResource = exports.diffParameter = exports.diffOutput = exports.diffMetadata = exports.diffMapping = exports.diffCondition = exports.diffAttribute = void 0;\nconst types = require(\"./types\");\nconst util_1 = require(\"./util\");\nfunction diffAttribute(oldValue, newValue) {\n return new types.Difference(_asString(oldValue), _asString(newValue));\n}\nexports.diffAttribute = diffAttribute;\nfunction diffCondition(oldValue, newValue) {\n return new types.ConditionDifference(oldValue, newValue);\n}\nexports.diffCondition = diffCondition;\nfunction diffMapping(oldValue, newValue) {\n return new types.MappingDifference(oldValue, newValue);\n}\nexports.diffMapping = diffMapping;\nfunction diffMetadata(oldValue, newValue) {\n return new types.MetadataDifference(oldValue, newValue);\n}\nexports.diffMetadata = diffMetadata;\nfunction diffOutput(oldValue, newValue) {\n return new types.OutputDifference(oldValue, newValue);\n}\nexports.diffOutput = diffOutput;\nfunction diffParameter(oldValue, newValue) {\n return new types.ParameterDifference(oldValue, newValue);\n}\nexports.diffParameter = diffParameter;\nfunction diffResource(oldValue, newValue) {\n const resourceType = {\n oldType: oldValue && oldValue.Type,\n newType: newValue && newValue.Type,\n };\n let propertyDiffs = {};\n let otherDiffs = {};\n if (resourceType.oldType !== undefined && resourceType.oldType === resourceType.newType) {\n // Only makes sense to inspect deeper if the types stayed the same\n const impl = (0, util_1.loadResourceModel)(resourceType.oldType);\n propertyDiffs = (0, util_1.diffKeyedEntities)(oldValue.Properties, newValue.Properties, (oldVal, newVal, key) => _diffProperty(oldVal, newVal, key, impl));\n otherDiffs = (0, util_1.diffKeyedEntities)(oldValue, newValue, _diffOther);\n delete otherDiffs.Properties;\n }\n return new types.ResourceDifference(oldValue, newValue, {\n resourceType, propertyDiffs, otherDiffs,\n });\n function _diffProperty(oldV, newV, key, resourceSpec) {\n let changeImpact = types.ResourceImpact.NO_CHANGE;\n const spec = resourceSpec?.properties?.[key];\n if (spec && !(0, util_1.deepEqual)(oldV, newV)) {\n switch (spec.causesReplacement) {\n case 'yes':\n changeImpact = types.ResourceImpact.WILL_REPLACE;\n break;\n case 'maybe':\n changeImpact = types.ResourceImpact.MAY_REPLACE;\n break;\n default:\n // In those cases, whatever is the current value is what we should keep\n changeImpact = types.ResourceImpact.WILL_UPDATE;\n }\n }\n return new types.PropertyDifference(oldV, newV, { changeImpact });\n }\n function _diffOther(oldV, newV) {\n return new types.Difference(oldV, newV);\n }\n}\nexports.diffResource = diffResource;\nfunction diffUnknown(oldValue, newValue) {\n return new types.Difference(oldValue, newValue);\n}\nexports.diffUnknown = diffUnknown;\n/**\n * Coerces a given value to +string | undefined+.\n *\n * @param value the value to be coerced.\n *\n * @returns +undefined+ if +value+ is +null+ or +undefined+,\n * +value+ if it is a +string+,\n * a compact JSON representation of +value+ otherwise.\n */\nfunction _asString(value) {\n if (value == null) {\n return undefined;\n }\n if (typeof value === 'string') {\n return value;\n }\n return JSON.stringify(value);\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFDQSxpQ0FBaUM7QUFDakMsaUNBQXlFO0FBRXpFLFNBQWdCLGFBQWEsQ0FBQyxRQUFhLEVBQUUsUUFBYTtJQUN4RCxPQUFPLElBQUksS0FBSyxDQUFDLFVBQVUsQ0FBUyxTQUFTLENBQUMsUUFBUSxDQUFDLEVBQUUsU0FBUyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7QUFDaEYsQ0FBQztBQUZELHNDQUVDO0FBRUQsU0FBZ0IsYUFBYSxDQUFDLFFBQXlCLEVBQUUsUUFBeUI7SUFDaEYsT0FBTyxJQUFJLEtBQUssQ0FBQyxtQkFBbUIsQ0FBQyxRQUFRLEVBQUUsUUFBUSxDQUFDLENBQUM7QUFDM0QsQ0FBQztBQUZELHNDQUVDO0FBRUQsU0FBZ0IsV0FBVyxDQUFDLFFBQXVCLEVBQUUsUUFBdUI7SUFDMUUsT0FBTyxJQUFJLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxRQUFRLEVBQUUsUUFBUSxDQUFDLENBQUM7QUFDekQsQ0FBQztBQUZELGtDQUVDO0FBRUQsU0FBZ0IsWUFBWSxDQUFDLFFBQXdCLEVBQUUsUUFBd0I7SUFDN0UsT0FBTyxJQUFJLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQyxRQUFRLEVBQUUsUUFBUSxDQUFDLENBQUM7QUFDMUQsQ0FBQztBQUZELG9DQUVDO0FBRUQsU0FBZ0IsVUFBVSxDQUFDLFFBQXNCLEVBQUUsUUFBc0I7SUFDdkUsT0FBTyxJQUFJLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLEVBQUUsUUFBUSxDQUFDLENBQUM7QUFDeEQsQ0FBQztBQUZELGdDQUVDO0FBRUQsU0FBZ0IsYUFBYSxDQUFDLFFBQXlCLEVBQUUsUUFBeUI7SUFDaEYsT0FBTyxJQUFJLEtBQUssQ0FBQyxtQkFBbUIsQ0FBQyxRQUFRLEVBQUUsUUFBUSxDQUFDLENBQUM7QUFDM0QsQ0FBQztBQUZELHNDQUVDO0FBRUQsU0FBZ0IsWUFB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T0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQy9CLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBSZXNvdXJjZSB9IGZyb20gJ0Bhd3MtY2RrL3NlcnZpY2Utc3BlYy10eXBlcyc7XG5pbXBvcnQgKiBhcyB0eXBlcyBmcm9tICcuL3R5cGVzJztcbmltcG9ydCB7IGRlZXBFcXVhbCwgZGlmZktleWVkRW50aXRpZXMsIGxvYWRSZXNvdXJjZU1vZGVsIH0gZnJvbSAnLi91dGlsJztcblxuZXhwb3J0IGZ1bmN0aW9uIGRpZmZBdHRyaWJ1dGUob2xkVmFsdWU6IGFueSwgbmV3VmFsdWU6IGFueSk6IHR5cGVzLkRpZmZlcmVuY2U8c3RyaW5nPiB7XG4gIHJldHVybiBuZXcgdHlwZXMuRGlmZmVyZW5jZTxzdHJpbmc+KF9hc1N0cmluZyhvbGRWYWx1ZSksIF9hc1N0cmluZyhuZXdWYWx1ZSkpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZGlmZkNvbmRpdGlvbihvbGRWYWx1ZTogdHlwZXMuQ29uZGl0aW9uLCBuZXdWYWx1ZTogdHlwZXMuQ29uZGl0aW9uKTogdHlwZXMuQ29uZGl0aW9uRGlmZmVyZW5jZSB7XG4gIHJldHVybiBuZXcgdHlwZXMuQ29uZGl0aW9uRGlmZmVyZW5jZShvbGRWYWx1ZSwgbmV3VmFsdWUpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZGlmZk1hcHBpbmcob2xkVmFsdWU6IHR5cGVzLk1hcHBpbmcsIG5ld1ZhbHVlOiB0eXBlcy5NYXBwaW5nKTogdHlwZXMuTWFwcGluZ0RpZmZlcmVuY2Uge1xuICByZXR1cm4gbmV3IHR5cGVzLk1hcHBpbmdEaWZmZXJlbmNlKG9sZFZhbHVlLCBuZXdWYWx1ZSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkaWZmTWV0YWRhdGEob2xkVmFsdWU6IHR5cGVzLk1ldGFkYXRhLCBuZXdWYWx1ZTogdHlwZXMuTWV0YWRhdGEpOiB0eXBlcy5NZXRhZGF0YURpZmZlcmVuY2Uge1xuICByZXR1cm4gbmV3IHR5cGVzLk1ldGFkYXRhRGlmZmVyZW5jZShvbGRWYWx1ZSwgbmV3VmFsdWUpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZGlmZk91dHB1dChvbGRWYWx1ZTogdHlwZXMuT3V0cHV0LCBuZXdWYWx1ZTogdHlwZXMuT3V0cHV0KTogdHlwZXMuT3V0cHV0RGlmZmVyZW5jZSB7XG4gIHJldHVybiBuZXcgdHlwZXMuT3V0cHV0RGlmZmVyZW5jZShvbGRWYWx1ZSwgbmV3VmFsdWUpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZGlmZlBhcmFtZXRlcihvbGRWYWx1ZTogdHlwZXMuUGFyYW1ldGVyLCBuZXdWYWx1ZTogdHlwZXMuUGFyYW1ldGVyKTogdHlwZXMuUGFyYW1ldGVyRGlmZmVyZW5jZSB7XG4gIHJldHVybiBuZXcgdHlwZXMuUGFyYW1ldGVyRGlmZmVyZW5jZShvbGRWYWx1ZSwgbmV3VmFsdWUpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZGlmZlJlc291cmNlKG9sZFZhbHVlPzogdHlwZXMuUmVzb3VyY2UsIG5ld1ZhbHVlPzogdHlwZXMuUmVzb3VyY2UpOiB0eXBlcy5SZXNvdXJjZURpZmZlcmVuY2Uge1xuICBjb25zdCByZXNvdXJjZVR5cGUgPSB7XG4gICAgb2xkVHlwZTogb2xkVmFsdWUgJiYgb2xkVmFsdWUuVHlwZSxcbiAgICBuZXdUeXBlOiBuZXdWYWx1ZSAmJiBuZXdWYWx1ZS5UeXBlLFxuICB9O1xuICBsZXQgcHJvcGVydHlEaWZmczogeyBba2V5OiBzdHJpbmddOiB0eXBlcy5Qcm9wZXJ0eURpZmZlcmVuY2U8YW55PiB9ID0ge307XG4gIGxldCBvdGhlckRpZmZzOiB7IFtrZXk6IHN0cmluZ106IHR5cGVzLkRpZmZlcmVuY2U8YW55PiB9ID0ge307XG5cbiAgaWYgKHJlc291cmNlVHlwZS5vbGRUeXBlICE9PSB1bmRlZmluZWQgJiYgcmVzb3VyY2VUeXBlLm9sZFR5cGUgPT09IHJlc291cmNlVHlwZS5uZXdUeXBlKSB7XG4gICAgLy8gT25seSBtYWtlcyBzZW5zZSB0byBpbnNwZWN0IGRlZXBlciBpZiB0aGUgdHlwZXMgc3RheWVkIHRoZSBzYW1lXG4gICAgY29uc3QgaW1wbCA9IGxvYWRSZXNvdXJjZU1vZGVsKHJlc291cmNlVHlwZS5vbGRUeXBlKTtcbiAgICBwcm9wZXJ0eURpZmZzID0gZGlmZktleWVkRW50aXRpZXMob2xkVmFsdWUhLlByb3BlcnRpZXMsXG4gICAgICBuZXdWYWx1ZSEuUHJvcGVydGllcyxcbiAgICAgIChvbGRWYWwsIG5ld1ZhbCwga2V5KSA9PiBfZGlmZlByb3BlcnR5KG9sZFZhbCwgbmV3VmFsLCBrZXksIGltcGwpKTtcblxuICAgIG90aGVyRGlmZnMgPSBkaWZmS2V5ZWRFbnRpdGllcyhvbGRWYWx1ZSwgbmV3VmFsdWUsIF9kaWZmT3RoZXIpO1xuICAgIGRlbGV0ZSBvdGhlckRpZmZzLlByb3BlcnRpZXM7XG4gIH1cblxuICByZXR1cm4gbmV3IHR5cGVzLlJlc291cmNlRGlmZmVyZW5jZShvbGRWYWx1ZSwgbmV3VmFsdWUsIHtcbiAgICByZXNvdXJjZVR5cGUsIHByb3BlcnR5RGlmZnMsIG90aGVyRGlmZnMsXG4gIH0pO1xuXG4gIGZ1bmN0aW9uIF9kaWZmUHJvcGVydHkob2xkVjogYW55LCBuZXdWOiBhbnksIGtleTogc3RyaW5nLCByZXNvdXJjZVNwZWM/OiBSZXNvdXJjZSkge1xuICAgIGxldCBjaGFuZ2VJbXBhY3QgPSB0eXBlcy5SZXNvdXJjZUltcGFjdC5OT19DSEFOR0U7XG5cbiAgICBjb25zdCBzcGVjID0gcmVzb3VyY2VTcGVjPy5wcm9wZXJ0aWVzPy5ba2V5XTtcbiAgICBpZiAoc3BlYyAmJiAhZGVlcEVxdWFsKG9sZFYsIG5ld1YpKSB7XG4gICAgICBzd2l0Y2ggKHNwZWMuY2F1c2VzUmVwbGFjZW1lbnQpIHtcbiAgICAgICAgY2FzZSAneWVzJzpcbiAgICAgICAgICBjaGFuZ2VJbXBhY3QgPSB0eXBlcy5SZXNvdXJjZUltcGFjdC5XSUxMX1JFUExBQ0U7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ21heWJlJzpcbiAgICAgICAgICBjaGFuZ2VJbXBhY3QgPSB0eXBlcy5SZXNvdXJjZUltcGFjdC5NQVlfUkVQTEFDRTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAvLyBJbiB0aG9zZSBjYXNlcywgd2hhdGV2ZXIgaXMgdGhlIGN1cnJlbnQgdmFsdWUgaXMgd2hhdCB3ZSBzaG91bGQga2VlcFxuICAgICAgICAgIGNoYW5nZUltcGFjdCA9IHR5cGVzLlJlc291cmNlSW1wYWN0LldJTExfVVBEQVRFO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBuZXcgdHlwZXMuUHJvcGVydHlEaWZmZXJlbmNlKG9sZFYsIG5ld1YsIHsgY2hhbmdlSW1wYWN0IH0pO1xuICB9XG5cbiAgZnVuY3Rpb24gX2RpZmZPdGhlcihvbGRWOiBhbnksIG5ld1Y6IGFueSkge1xuICAgIHJldHVybiBuZXcgdHlwZXMuRGlmZmVyZW5jZShvbGRWLCBuZXdWKTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZGlmZlVua25vd24ob2xkVmFsdWU6IGFueSwgbmV3VmFsdWU6IGFueSk6IHR5cGVzLkRpZmZlcmVuY2U8YW55PiB7XG4gIHJldHVybiBuZXcgdHlwZXMuRGlmZmVyZW5jZShvbGRWYWx1ZSwgbmV3VmFsdWUpO1xufVxuXG4vKipcbiAqIENvZXJjZXMgYSBnaXZlbiB2YWx1ZSB0byArc3RyaW5nIHwgdW5kZWZpbmVkKy5cbiAqXG4gKiBAcGFyYW0gdmFsdWUgdGhlIHZhbHVlIHRvIGJlIGNvZXJjZWQuXG4gKlxuICogQHJldHVybnMgK3VuZGVmaW5lZCsgaWYgK3ZhbHVlKyBpcyArbnVsbCsgb3IgK3VuZGVmaW5lZCssXG4gKiAgICAgICt2YWx1ZSsgaWYgaXQgaXMgYSArc3RyaW5nKyxcbiAqICAgICAgYSBjb21wYWN0IEpTT04gcmVwcmVzZW50YXRpb24gb2YgK3ZhbHVlKyBvdGhlcndpc2UuXG4gKi9cbmZ1bmN0aW9uIF9hc1N0cmluZyh2YWx1ZTogYW55KTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgaWYgKHZhbHVlID09IG51bGwpIHtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG4gIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnKSB7XG4gICAgcmV0dXJuIHZhbHVlIGFzIHN0cmluZztcbiAgfVxuICByZXR1cm4gSlNPTi5zdHJpbmdpZnkodmFsdWUpO1xufVxuIl19","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.mkUnparseable = exports.mkParsed = void 0;\nfunction mkParsed(value) {\n return { type: 'parsed', value };\n}\nexports.mkParsed = mkParsed;\nfunction mkUnparseable(value) {\n return {\n type: 'unparseable',\n repr: typeof value === 'string' ? value : JSON.stringify(value),\n };\n}\nexports.mkUnparseable = mkUnparseable;\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWF5YmUtcGFyc2VkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsibWF5YmUtcGFyc2VkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQWVBLFNBQWdCLFFBQVEsQ0FBSSxLQUFRO0lBQ2xDLE9BQU8sRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxDQUFDO0FBQ25DLENBQUM7QUFGRCw0QkFFQztBQUVELFNBQWdCLGFBQWEsQ0FBQyxLQUFVO0lBQ3RDLE9BQU87UUFDTCxJQUFJLEVBQUUsYUFBYTtRQUNuQixJQUFJLEVBQUUsT0FBTyxLQUFLLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDO0tBQ2hFLENBQUM7QUFDSixDQUFDO0FBTEQsc0NBS0MiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEEgdmFsdWUgdGhhdCBtYXkgb3IgbWF5IG5vdCBiZSBwYXJzZWFibGVcbiAqL1xuZXhwb3J0IHR5cGUgTWF5YmVQYXJzZWQ8QT4gPSBQYXJzZWQ8QT4gfCBVbnBhcnNlYWJsZUNmbjtcblxuZXhwb3J0IGludGVyZmFjZSBQYXJzZWQ8QT4ge1xuICByZWFkb25seSB0eXBlOiAncGFyc2VkJztcbiAgcmVhZG9ubHkgdmFsdWU6IEE7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVW5wYXJzZWFibGVDZm4ge1xuICByZWFkb25seSB0eXBlOiAndW5wYXJzZWFibGUnO1xuICByZWFkb25seSByZXByOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBta1BhcnNlZDxBPih2YWx1ZTogQSk6IFBhcnNlZDxBPiB7XG4gIHJldHVybiB7IHR5cGU6ICdwYXJzZWQnLCB2YWx1ZSB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbWtVbnBhcnNlYWJsZSh2YWx1ZTogYW55KTogVW5wYXJzZWFibGVDZm4ge1xuICByZXR1cm4ge1xuICAgIHR5cGU6ICd1bnBhcnNlYWJsZScsXG4gICAgcmVwcjogdHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJyA/IHZhbHVlIDogSlNPTi5zdHJpbmdpZnkodmFsdWUpLFxuICB9O1xufVxuIl19","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.TemplateAndChangeSetDiffMerger = void 0;\nconst types = require(\"../diff/types\");\n/**\n * The purpose of this class is to include differences from the ChangeSet to differences in the TemplateDiff.\n */\nclass TemplateAndChangeSetDiffMerger {\n static determineChangeSetReplacementMode(propertyChange) {\n if (propertyChange.Target?.RequiresRecreation === undefined) {\n // We can't determine if the resource will be replaced or not. That's what conditionally means.\n return 'Conditionally';\n }\n if (propertyChange.Target.RequiresRecreation === 'Always') {\n switch (propertyChange.Evaluation) {\n case 'Static':\n return 'Always';\n case 'Dynamic':\n // If Evaluation is 'Dynamic', then this may cause replacement, or it may not.\n // see 'Replacement': https://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_ResourceChange.html\n return 'Conditionally';\n }\n }\n return propertyChange.Target.RequiresRecreation;\n }\n constructor(props) {\n this.changeSet = props.changeSet;\n this.changeSetResources = props.changeSetResources ?? this.convertDescribeChangeSetOutputToChangeSetResources(this.changeSet);\n }\n /**\n * Read resources from the changeSet, extracting information into ChangeSetResources.\n */\n convertDescribeChangeSetOutputToChangeSetResources(changeSet) {\n const changeSetResources = {};\n for (const resourceChange of changeSet.Changes ?? []) {\n if (resourceChange.ResourceChange?.LogicalResourceId === undefined) {\n continue; // Being defensive, here.\n }\n const propertyReplacementModes = {};\n for (const propertyChange of resourceChange.ResourceChange.Details ?? []) { // Details is only included if resourceChange.Action === 'Modify'\n if (propertyChange.Target?.Attribute === 'Properties' && propertyChange.Target.Name) {\n propertyReplacementModes[propertyChange.Target.Name] = {\n replacementMode: TemplateAndChangeSetDiffMerger.determineChangeSetReplacementMode(propertyChange),\n };\n }\n }\n changeSetResources[resourceChange.ResourceChange.LogicalResourceId] = {\n resourceWasReplaced: resourceChange.ResourceChange.Replacement === 'True',\n resourceType: resourceChange.ResourceChange.ResourceType ?? TemplateAndChangeSetDiffMerger.UNKNOWN_RESOURCE_TYPE, // DescribeChangeSet doesn't promise to have the ResourceType...\n propertyReplacementModes: propertyReplacementModes,\n };\n }\n return changeSetResources;\n }\n /**\n * This is writing over the \"ChangeImpact\" that was computed from the template difference, and instead using the ChangeImpact that is included from the ChangeSet.\n * Using the ChangeSet ChangeImpact is more accurate. The ChangeImpact tells us what the consequence is of changing the field. If changing the field causes resource\n * replacement (e.g., changing the name of an IAM role requires deleting and replacing the role), then ChangeImpact is \"Always\".\n */\n overrideDiffResourceChangeImpactWithChangeSetChangeImpact(logicalId, change) {\n // resourceType getter throws an error if resourceTypeChanged\n if ((change.resourceTypeChanged === true) || change.resourceType?.includes('AWS::Serverless')) {\n // CFN applies the SAM transform before creating the changeset, so the changeset contains no information about SAM resources\n return;\n }\n change.forEachDifference((type, name, value) => {\n if (type === 'Property') {\n if (!this.changeSetResources[logicalId]) {\n value.changeImpact = types.ResourceImpact.NO_CHANGE;\n value.isDifferent = false;\n return;\n }\n const changingPropertyCausesResourceReplacement = (this.changeSetResources[logicalId].propertyReplacementModes ?? {})[name]?.replacementMode;\n switch (changingPropertyCausesResourceReplacement) {\n case 'Always':\n value.changeImpact = types.ResourceImpact.WILL_REPLACE;\n break;\n case 'Never':\n value.changeImpact = types.ResourceImpact.WILL_UPDATE;\n break;\n case 'Conditionally':\n value.changeImpact = types.ResourceImpact.MAY_REPLACE;\n break;\n case undefined:\n value.changeImpact = types.ResourceImpact.NO_CHANGE;\n value.isDifferent = false;\n break;\n // otherwise, defer to the changeImpact from the template diff\n }\n }\n else if (type === 'Other') {\n switch (name) {\n case 'Metadata':\n // we want to ignore metadata changes in the diff, so compare newValue against newValue.\n change.setOtherChange('Metadata', new types.Difference(value.newValue, value.newValue));\n break;\n }\n }\n });\n }\n addImportInformationFromChangeset(resourceDiffs) {\n const imports = this.findResourceImports();\n resourceDiffs.forEachDifference((logicalId, change) => {\n if (imports.includes(logicalId)) {\n change.isImport = true;\n }\n });\n }\n findResourceImports() {\n const importedResourceLogicalIds = [];\n for (const resourceChange of this.changeSet?.Changes ?? []) {\n if (resourceChange.ResourceChange?.Action === 'Import') {\n importedResourceLogicalIds.push(resourceChange.ResourceChange.LogicalResourceId);\n }\n }\n return importedResourceLogicalIds;\n }\n}\nexports.TemplateAndChangeSetDiffMerger = TemplateAndChangeSetDiffMerger;\n// If we somehow cannot find the resourceType, then we'll mark it as UNKNOWN, so that can be seen in the diff.\nTemplateAndChangeSetDiffMerger.UNKNOWN_RESOURCE_TYPE = 'UNKNOWN_RESOURCE_TYPE';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVtcGxhdGUtYW5kLWNoYW5nZXNldC1kaWZmLW1lcmdlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInRlbXBsYXRlLWFuZC1jaGFuZ2VzZXQtZGlmZi1tZXJnZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBR0EsdUNBQXVDO0FBc0J2Qzs7R0FFRztBQUNILE1BQWEsOEJBQThCO0lBRWxDLE1BQU0sQ0FBQyxpQ0FBaUMsQ0FBQyxjQUE2QztRQUMzRixJQUFJLGNBQWMsQ0FBQyxNQUFNLEVBQUUsa0JBQWtCLEtBQUssU0FBUyxFQUFFLENBQUM7WUFDNUQsK0ZBQStGO1lBQy9GLE9BQU8sZUFBZSxDQUFDO1FBQ3pCLENBQUM7UUFFRCxJQUFJLGNBQWMsQ0FBQyxNQUFNLENBQUMsa0JBQWtCLEtBQUssUUFBUSxFQUFFLENBQUM7WUFDMUQsUUFBUSxjQUFjLENBQUMsVUFBVSxFQUFFLENBQUM7Z0JBQ2xDLEtBQUssUUFBUTtvQkFDWCxPQUFPLFFBQVEsQ0FBQztnQkFDbEIsS0FBSyxTQUFTO29CQUNaLDhFQUE4RTtvQkFDOUUsK0dBQStHO29CQUMvRyxPQUFPLGVBQWUsQ0FBQztZQUMzQixDQUFDO1FBQ0gsQ0FBQztRQUVELE9BQU8sY0FBYyxDQUFDLE1BQU0sQ0FBQyxrQkFBNEMsQ0FBQztJQUM1RSxDQUFDO0lBUUQsWUFBWSxLQUEwQztRQUNwRCxJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQyxTQUFTLENBQUM7UUFDakMsSUFBSSxDQUFDLGtCQUFrQixHQUFHLEtBQUssQ0FBQyxrQkFBa0IsSUFBSSxJQUFJLENBQUMsa0RBQWtELENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ2hJLENBQUM7SUFFRDs7T0FFRztJQUNLLGtEQUFrRCxDQUFDLFNBQWtDO1FBQzNGLE1BQU0sa0JBQWtCLEdBQTZCLEVBQUUsQ0FBQztRQUN4RCxLQUFLLE1BQU0sY0FBYyxJQUFJLFNBQVMsQ0FBQyxPQUFPLElBQUksRUFBRSxFQUFFLENB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QUFFLENBQUM7b0JBQ2IsS0FBSyxVQUFVO3dCQUNiLHdGQUF3Rjt3QkFDeEYsTUFBTSxDQUFDLGNBQWMsQ0FBQyxVQUFVLEVBQUUsSUFBSSxLQUFLLENBQUMsVUFBVSxDQUFTLEtBQUssQ0FBQyxRQUFRLEVBQUUsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7d0JBQ2hHLE1BQU07Z0JBQ1YsQ0FBQztZQUNILENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFTSxpQ0FBaUMsQ0FBQyxhQUFtRjtRQUMxSCxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztRQUMzQyxhQUFhLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxTQUFpQixFQUFFLE1BQWdDLEVBQUUsRUFBRTtZQUN0RixJQUFJLE9BQU8sQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQztnQkFDaEMsTUFBTSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUM7WUFDekIsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVNLG1CQUFtQjtRQUN4QixNQUFNLDBCQUEwQixHQUFHLEVBQUUsQ0FBQztRQUN0QyxLQUFLLE1BQU0sY0FBYyxJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUUsT0FBTyxJQUFJLEVBQUUsRUFBRSxDQUFDO1lBQzNELElBQUksY0FBYyxDQUFDLGNBQWMsRUFBRSxNQUFNLEtBQUssUUFBUSxFQUFFLENBQUM7Z0JBQ3ZELDBCQUEwQixDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsY0FBYyxDQUFDLGlCQUFpQixDQUFDLENBQUM7WUFDbkYsQ0FBQztRQUNILENBQUM7UUFFRCxPQUFPLDBCQUEwQixDQUFDO0lBQ3BDLENBQUM7O0FBL0hILHdFQWdJQztBQTFHQyw4R0FBOEc7QUFDL0Ysb0RBQXFCLEdBQUcsdUJBQXVCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBUaGUgU0RLIGlzIG9ubHkgdXNlZCB0byByZWZlcmVuY2UgYERlc2NyaWJlQ2hhbmdlU2V0T3V0cHV0YCwgc28gdGhlIFNESyBpcyBhZGRlZCBhcyBhIGRldkRlcGVuZGVuY3kuXG4vLyBUaGUgU0RLIHNob3VsZCBub3QgbWFrZSBuZXR3b3JrIGNhbGxzIGhlcmVcbmltcG9ydCB0eXBlIHsgRGVzY3JpYmVDaGFuZ2VTZXRPdXRwdXQgYXMgRGVzY3JpYmVDaGFuZ2VTZXQsIFJlc291cmNlQ2hhbmdlRGV0YWlsIGFzIFJDRCB9IGZyb20gJ0Bhd3Mtc2RrL2NsaWVudC1jbG91ZGZvcm1hdGlvbic7XG5pbXBvcnQgKiBhcyB0eXBlcyBmcm9tICcuLi9kaWZmL3R5cGVzJztcblxuZXhwb3J0IHR5cGUgRGVzY3JpYmVDaGFuZ2VTZXRPdXRwdXQgPSBEZXNjcmliZUNoYW5nZVNldDtcbnR5cGUgQ2hhbmdlU2V0UmVzb3VyY2VDaGFuZ2VEZXRhaWwgPSBSQ0Q7XG5cbmludGVyZmFjZSBUZW1wbGF0ZUFuZENoYW5nZVNldERpZmZNZXJnZXJPcHRpb25zIHtcbiAgLypcbiAgICogT25seSBzcGVjaWZpYWJsZSBmb3IgdGVzdGluZy4gT3RoZXJ3aXNlLCB0aGlzIGlzIHRoZSBkYXRhc3RydWN0dXJlIHRoYXQgdGhlIGNoYW5nZVNldCBpcyBjb252ZXJ0ZWQgaW50byBzb1xuICAgKiB0aGF0IHdlIG9ubHkgcGF5IGF0dGVudGlvbiB0byB0aGUgc3Vic2V0IG9mIGNoYW5nZVNldCBwcm9wZXJ0aWVzIHRoYXQgYXJlIHJlbGV2YW50IGZvciBjb21wdXRpbmcgdGhlIGRpZmYuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gdGhlIGNoYW5nZVNldCBpcyBjb252ZXJ0ZWQgaW50byB0aGlzIGRhdGFzdHJ1Y3R1cmUuXG4gICovXG4gIHJlYWRvbmx5IGNoYW5nZVNldFJlc291cmNlcz86IHR5cGVzLkNoYW5nZVNldFJlc291cmNlcztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBUZW1wbGF0ZUFuZENoYW5nZVNldERpZmZNZXJnZXJQcm9wcyBleHRlbmRzIFRlbXBsYXRlQW5kQ2hhbmdlU2V0RGlmZk1lcmdlck9wdGlvbnMge1xuICAvKlxuICAgKiBUaGUgY2hhbmdlc2V0IHRoYXQgd2lsbCBiZSByZWFkIGFuZCBtZXJnZWQgaW50byB0aGUgdGVtcGxhdGUgZGlmZi5cbiAgKi9cbiAgcmVhZG9ubHkgY2hhbmdlU2V0OiBEZXNjcmliZUNoYW5nZVNldE91dHB1dDtcbn1cblxuLyoqXG4gKiBUaGUgcHVycG9zZSBvZiB0aGlzIGNsYXNzIGlzIHRvIGluY2x1ZGUgZGlmZmVyZW5jZXMgZnJvbSB0aGUgQ2hhbmdlU2V0IHRvIGRpZmZlcmVuY2VzIGluIHRoZSBUZW1wbGF0ZURpZmYuXG4gKi9cbmV4cG9ydCBjbGFzcyBUZW1wbGF0ZUFuZENoYW5nZVNldERpZmZNZXJnZXIge1xuXG4gIHB1YmxpYyBzdGF0aWMgZGV0ZXJtaW5lQ2hhbmdlU2V0UmVwbGFjZW1lbnRNb2RlKHByb3BlcnR5Q2hhbmdlOiBDaGFuZ2VTZXRSZXNvdXJjZUNoYW5nZURldGFpbCk6IHR5cGVzLlJlcGxhY2VtZW50TW9kZXMge1xuICAgIGlmIChwcm9wZXJ0eUNoYW5nZS5UYXJnZXQ/LlJlcXVpcmVzUmVjcmVhdGlvbiA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAvLyBXZSBjYW4ndCBkZXRlcm1pbmUgaWYgdGhlIHJlc291cmNlIHdpbGwgYmUgcmVwbGFjZWQgb3Igbm90LiBUaGF0J3Mgd2hhdCBjb25kaXRpb25hbGx5IG1lYW5zLlxuICAgICAgcmV0dXJuICdDb25kaXRpb25hbGx5JztcbiAgICB9XG5cbiAgICBpZiAocHJvcGVydHlDaGFuZ2UuVGFyZ2V0LlJlcXVpcmVzUmVjcmVhdGlvbiA9PT0gJ0Fsd2F5cycpIHtcbiAgICAgIHN3aXRjaCAocHJvcGVydHlDaGFuZ2UuRXZhbHVhdGlvbikge1xuICAgICAgICBjYXNlICdTdGF0aWMnOlxuICAgICAgICAgIHJldHVybiAnQWx3YXlzJztcbiAgICAgICAgY2FzZSAnRHluYW1pYyc6XG4gICAgICAgICAgLy8gSWYgRXZhbHVhdGlvbiBpcyAnRHluYW1pYycsIHRoZW4gdGhpcyBtYXkgY2F1c2UgcmVwbGFjZW1lbnQsIG9yIGl0IG1heSBub3QuXG4gICAgICAgICAgLy8gc2VlICdSZXBsYWNlbWVudCc6IGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NDbG91ZEZvcm1hdGlvbi9sYXRlc3QvQVBJUmVmZXJlbmNlL0FQSV9SZXNvdXJjZUNoYW5nZS5odG1sXG4gICAgICAgICAgcmV0dXJuICdDb25kaXRpb25hbGx5JztcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gcHJvcGVydHlDaGFuZ2UuVGFyZ2V0LlJlcXVpcmVzUmVjcmVhdGlvbiBhcyB0eXBlcy5SZXBsYWNlbWVudE1vZGVzO1xuICB9XG5cbiAgLy8gSWYgd2Ugc29tZWhvdyBjYW5ub3QgZmluZCB0aGUgcmVzb3VyY2VUeXBlLCB0aGVuIHdlJ2xsIG1hcmsgaXQgYXMgVU5LTk9XTiwgc28gdGhhdCBjYW4gYmUgc2VlbiBpbiB0aGUgZGlmZi5cbiAgcHJpdmF0ZSBzdGF0aWMgVU5LTk9XTl9SRVNPVVJDRV9UWVBFID0gJ1VOS05PV05fUkVTT1VSQ0VfVFlQRSc7XG5cbiAgcHVibGljIGNoYW5nZVNldDogRGVzY3JpYmVDaGFuZ2VTZXRPdXRwdXQgfCB1bmRlZmluZWQ7XG4gIHB1YmxpYyBjaGFuZ2VTZXRSZXNvdXJjZXM6IHR5cGVzLkNoYW5nZVNldFJlc291cmNlcztcblxuICBjb25zdHJ1Y3Rvcihwcm9wczogVGVtcGxhdGVBbmRDaGFuZ2VTZXREaWZmTWVyZ2VyUHJvcHMpIHtcbiAgICB0aGlzLmNoYW5nZVNldCA9IHByb3BzLmNoYW5nZVNldDtcbiAgICB0aGlzLmNoYW5nZVNldFJlc291cmNlcyA9IHByb3BzLmNoYW5nZVNldFJlc291cmNlcyA/PyB0aGlzLmNvbnZlcnREZXNjcmliZUNoYW5nZVNldE91dHB1dFRvQ2hhbmdlU2V0UmVzb3VyY2VzKHRoaXMuY2hhbmdlU2V0KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZWFkIHJlc291cmNlcyBmcm9tIHRoZSBjaGFuZ2VTZXQsIGV4dHJhY3RpbmcgaW5mb3JtYXRpb24gaW50byBDaGFuZ2VTZXRSZXNvdXJjZXMuXG4gICAqL1xuICBwcml2YXRlIGNvbnZlcnREZXNjcmliZUNoYW5nZVNldE91dHB1dFRvQ2hhbmdlU2V0UmVzb3VyY2VzKGNoYW5nZVNldDogRGVzY3JpYmVDaGFuZ2VTZXRPdXRwdXQpOiB0eXBlcy5DaGFuZ2VTZXRSZXNvdXJjZXMge1xuICAgIGNvbnN0IGNoYW5nZVNldFJlc291cmNlczogdHlwZXMuQ2hhbmdlU2V0UmVzb3VyY2VzID0ge307XG4gICAgZm9yIChjb25zdCByZXNvdXJjZUNoYW5nZSBvZiBjaGFuZ2VTZXQuQ2hhbmdlcyA/PyBbXSkge1xuICAgICAgaWYgKHJlc291cmNlQ2hhbmdlLlJlc291cmNlQ2hhbmdlPy5Mb2dpY2FsUmVzb3VyY2VJZCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGNvbnRpbnVlOyAvLyBCZWluZyBkZWZlbnNpdmUsIGhlcmUuXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHByb3BlcnR5UmVwbGFjZW1lbnRNb2RlczogdHlwZXMuUHJvcGVydHlSZXBsYWNlbWVudE1vZGVNYXAgPSB7fTtcbiAgICAgIGZvciAoY29uc3QgcHJvcGVydHlDaGFuZ2Ugb2YgcmVzb3VyY2VDaGFuZ2UuUmVzb3VyY2VDaGFuZ2UuRGV0YWlscyA/PyBbXSkgeyAvLyBEZXRhaWxzIGlzIG9ubHkgaW5jbHVkZWQgaWYgcmVzb3VyY2VDaGFuZ2UuQWN0aW9uID09PSAnTW9kaWZ5J1xuICAgICAgICBpZiAocHJvcGVydHlDaGFuZ2UuVGFyZ2V0Py5BdHRyaWJ1dGUgPT09ICdQcm9wZXJ0aWVzJyAmJiBwcm9wZXJ0eUNoYW5nZS5UYXJnZXQuTmFtZSkge1xuICAgICAgICAgIHByb3BlcnR5UmVwbGFjZW1lbnRNb2Rlc1twcm9wZXJ0eUNoYW5nZS5UYXJnZXQuTmFtZV0gPSB7XG4gICAgICAgICAgICByZXBsYWNlbWVudE1vZGU6IFRlbXBsYXRlQW5kQ2hhbmdlU2V0RGlmZk1lcmdlci5kZXRlcm1pbmVDaGFuZ2VTZXRSZXBsYWNlbWVudE1vZGUocHJvcGVydHlDaGFuZ2UpLFxuICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgY2hhbmdlU2V0UmVzb3VyY2VzW3Jlc291cmNlQ2hhbmdlLlJlc291cmNlQ2hhbmdlLkxvZ2ljYWxSZXNvdXJjZUlkXSA9IHtcbiAgICAgICAgcmVzb3VyY2VXYXNSZXBsYWNlZDogcmVzb3VyY2VDaGFuZ2UuUmVzb3VyY2VDaGFuZ2UuUmVwbGFjZW1lbnQgPT09ICdUcnVlJyxcbiAgICAgICAgcmVzb3VyY2VUeXBlOiByZXNvdXJjZUNoYW5nZS5SZXNvdXJjZUNoYW5nZS5SZXNvdXJjZVR5cGUgPz8gVGVtcGxhdGVBbmRDaGFuZ2VTZXREaWZmTWVyZ2VyLlVOS05PV05fUkVTT1VSQ0VfVFlQRSwgLy8gRGVzY3JpYmVDaGFuZ2VTZXQgZG9lc24ndCBwcm9taXNlIHRvIGhhdmUgdGhlIFJlc291cmNlVHlwZS4uLlxuICAgICAgICBwcm9wZXJ0eVJlcGxhY2VtZW50TW9kZXM6IHByb3BlcnR5UmVwbGFjZW1lbnRNb2RlcyxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgcmV0dXJuIGNoYW5nZVNldFJlc291cmNlcztcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGlzIGlzIHdyaXRpbmcgb3ZlciB0aGUgXCJDaGFuZ2VJbXBhY3RcIiB0aGF0IHdhcyBjb21wdXRlZCBmcm9tIHRoZSB0ZW1wbGF0ZSBkaWZmZXJlbmNlLCBhbmQgaW5zdGVhZCB1c2luZyB0aGUgQ2hhbmdlSW1wYWN0IHRoYXQgaXMgaW5jbHVkZWQgZnJvbSB0aGUgQ2hhbmdlU2V0LlxuICAgKiBVc2luZyB0aGUgQ2hhbmdlU2V0IENoYW5nZUltcGFjdCBpcyBtb3JlIGFjY3VyYXRlLiBUaGUgQ2hhbmdlSW1wYWN0IHRlbGxzIHVzIHdoYXQgdGhlIGNvbnNlcXVlbmNlIGlzIG9mIGNoYW5naW5nIHRoZSBmaWVsZC4gSWYgY2hhbmdpbmcgdGhlIGZpZWxkIGNhdXNlcyByZXNvdXJjZVxuICAgKiByZXBsYWNlbWVudCAoZS5nLiwgY2hhbmdpbmcgdGhlIG5hbWUgb2YgYW4gSUFNIHJvbGUgcmVxdWlyZXMgZGVsZXRpbmcgYW5kIHJlcGxhY2luZyB0aGUgcm9sZSksIHRoZW4gQ2hhbmdlSW1wYWN0IGlzIFwiQWx3YXlzXCIuXG4gICAqL1xuICBwdWJsaWMgb3ZlcnJpZGVEaWZmUmVzb3VyY2VDaGFuZ2VJbXBhY3RXaXRoQ2hhbmdlU2V0Q2hhbmdlSW1wYWN0KGxvZ2ljYWxJZDogc3RyaW5nLCBjaGFuZ2U6IHR5cGVzLlJlc291cmNlRGlmZmVyZW5jZSkge1xuICAgIC8vIHJlc291cmNlVHlwZSBnZXR0ZXIgdGhyb3dzIGFuIGVycm9yIGlmIHJlc291cmNlVHlwZUNoYW5nZWRcbiAgICBpZiAoKGNoYW5nZS5yZXNvdXJjZVR5cGVDaGFuZ2VkID09PSB0cnVlKSB8fCBjaGFuZ2UucmVzb3VyY2VUeXBlPy5pbmNsdWRlcygnQVdTOjpTZXJ2ZXJsZXNzJykpIHtcbiAgICAgIC8vIENGTiBhcHBsaWVzIHRoZSBTQU0gdHJhbnNmb3JtIGJlZm9yZSBjcmVhdGluZyB0aGUgY2hhbmdlc2V0LCBzbyB0aGUgY2hhbmdlc2V0IGNvbnRhaW5zIG5vIGluZm9ybWF0aW9uIGFib3V0IFNBTSByZXNvdXJjZXNcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY2hhbmdlLmZvckVhY2hEaWZmZXJlbmNlKCh0eXBlOiAnUHJvcGVydHknIHwgJ090aGVyJywgbmFtZTogc3RyaW5nLCB2YWx1ZTogdHlwZXMuRGlmZmVyZW5jZTxhbnk+IHwgdHlwZXMuUHJvcGVydHlEaWZmZXJlbmNlPGFueT4pID0+IHtcbiAgICAgIGlmICh0eXBlID09PSAnUHJvcGVydHknKSB7XG4gICAgICAgIGlmICghdGhpcy5jaGFuZ2VTZXRSZXNvdXJjZXNbbG9naWNhbElkXSkge1xuICAgICAgICAgICh2YWx1ZSBhcyB0eXBlcy5Qcm9wZXJ0eURpZmZlcmVuY2U8YW55PikuY2hhbmdlSW1wYWN0ID0gdHlwZXMuUmVzb3VyY2VJbXBhY3QuTk9fQ0hBTkdFO1xuICAgICAgICAgICh2YWx1ZSBhcyB0eXBlcy5Qcm9wZXJ0eURpZmZlcmVuY2U8YW55PikuaXNEaWZmZXJlbnQgPSBmYWxzZTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBjaGFuZ2luZ1Byb3BlcnR5Q2F1c2VzUmVzb3VyY2VSZXBsYWNlbWVudCA9ICh0aGlzLmNoYW5nZVNldFJlc291cmNlc1tsb2dpY2FsSWRdLnByb3BlcnR5UmVwbGFjZW1lbnRNb2RlcyA/PyB7fSlbbmFtZV0/LnJlcGxhY2VtZW50TW9kZTtcbiAgICAgICAgc3dpdGNoIChjaGFuZ2luZ1Byb3BlcnR5Q2F1c2VzUmVzb3VyY2VSZXBsYWNlbWVudCkge1xuICAgICAgICAgIGNhc2UgJ0Fsd2F5cyc6XG4gICAgICAgICAgICAodmFsdWUgYXMgdHlwZXMuUHJvcGVydHlEaWZmZXJlbmNlPGFueT4pLmNoYW5nZUltcGFjdCA9IHR5cGVzLlJlc291cmNlSW1wYWN0LldJTExfUkVQTEFDRTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgJ05ldmVyJzpcbiAgICAgICAgICAgICh2YWx1ZSBhcyB0eXBlcy5Qcm9wZXJ0eURpZmZlcmVuY2U8YW55PikuY2hhbmdlSW1wYWN0ID0gdHlwZXMuUmVzb3VyY2VJbXBhY3QuV0lMTF9VUERBVEU7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlICdDb25kaXRpb25hbGx5JzpcbiAgICAgICAgICAgICh2YWx1ZSBhcyB0eXBlcy5Qcm9wZXJ0eURpZmZlcmVuY2U8YW55PikuY2hhbmdlSW1wYWN0ID0gdHlwZXMuUmVzb3VyY2VJbXBhY3QuTUFZX1JFUExBQ0U7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlIHVuZGVmaW5lZDpcbiAgICAgICAgICAgICh2YWx1ZSBhcyB0eXBlcy5Qcm9wZXJ0eURpZmZlcmVuY2U8YW55PikuY2hhbmdlSW1wYWN0ID0gdHlwZXMuUmVzb3VyY2VJbXBhY3QuTk9fQ0hBTkdFO1xuICAgICAgICAgICAgKHZhbHVlIGFzIHR5cGVzLlByb3BlcnR5RGlmZmVyZW5jZTxhbnk+KS5pc0RpZmZlcmVudCA9IGZhbHNlO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgLy8gb3RoZXJ3aXNlLCBkZWZlciB0byB0aGUgY2hhbmdlSW1wYWN0IGZyb20gdGhlIHRlbXBsYXRlIGRpZmZcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmICh0eXBlID09PSAnT3RoZXInKSB7XG4gICAgICAgIHN3aXRjaCAobmFtZSkge1xuICAgICAgICAgIGNhc2UgJ01ldGFkYXRhJzpcbiAgICAgICAgICAgIC8vIHdlIHdhbnQgdG8gaWdub3JlIG1ldGFkYXRhIGNoYW5nZXMgaW4gdGhlIGRpZmYsIHNvIGNvbXBhcmUgbmV3VmFsdWUgYWdhaW5zdCBuZXdWYWx1ZS5cbiAgICAgICAgICAgIGNoYW5nZS5zZXRPdGhlckNoYW5nZSgnTWV0YWRhdGEnLCBuZXcgdHlwZXMuRGlmZmVyZW5jZTxzdHJpbmc+KHZhbHVlLm5ld1ZhbHVlLCB2YWx1ZS5uZXdWYWx1ZSkpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBhZGRJbXBvcnRJbmZvcm1hdGlvbkZyb21DaGFuZ2VzZXQocmVzb3VyY2VEaWZmczogdHlwZXMuRGlmZmVyZW5jZUNvbGxlY3Rpb248dHlwZXMuUmVzb3VyY2UsIHR5cGVzLlJlc291cmNlRGlmZmVyZW5jZT4pIHtcbiAgICBjb25zdCBpbXBvcnRzID0gdGhpcy5maW5kUmVzb3VyY2VJbXBvcnRzKCk7XG4gICAgcmVzb3VyY2VEaWZmcy5mb3JFYWNoRGlmZmVyZW5jZSgobG9naWNhbElkOiBzdHJpbmcsIGNoYW5nZTogdHlwZXMuUmVzb3VyY2VEaWZmZXJlbmNlKSA9PiB7XG4gICAgICBpZiAoaW1wb3J0cy5pbmNsdWRlcyhsb2dpY2FsSWQpKSB7XG4gICAgICAgIGNoYW5nZS5pc0ltcG9ydCA9IHRydWU7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgZmluZFJlc291cmNlSW1wb3J0cygpOiAoc3RyaW5nIHwgdW5kZWZpbmVkKVtdIHtcbiAgICBjb25zdCBpbXBvcnRlZFJlc291cmNlTG9naWNhbElkcyA9IFtdO1xuICAgIGZvciAoY29uc3QgcmVzb3VyY2VDaGFuZ2Ugb2YgdGhpcy5jaGFuZ2VTZXQ/LkNoYW5nZXMgPz8gW10pIHtcbiAgICAgIGlmIChyZXNvdXJjZUNoYW5nZS5SZXNvdXJjZUNoYW5nZT8uQWN0aW9uID09PSAnSW1wb3J0Jykge1xuICAgICAgICBpbXBvcnRlZFJlc291cmNlTG9naWNhbElkcy5wdXNoKHJlc291cmNlQ2hhbmdlLlJlc291cmNlQ2hhbmdlLkxvZ2ljYWxSZXNvdXJjZUlkKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gaW1wb3J0ZWRSZXNvdXJjZUxvZ2ljYWxJZHM7XG4gIH1cbn1cbiJdfQ==","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isPropertyDifference = exports.ResourceDifference = exports.ResourceImpact = exports.ParameterDifference = exports.OutputDifference = exports.MetadataDifference = exports.MappingDifference = exports.ConditionDifference = exports.DifferenceCollection = exports.PropertyDifference = exports.Difference = exports.TemplateDiff = void 0;\nconst assert_1 = require(\"assert\");\nconst service_spec_types_1 = require(\"@aws-cdk/service-spec-types\");\nconst util_1 = require(\"./util\");\nconst iam_changes_1 = require(\"../iam/iam-changes\");\nconst security_group_changes_1 = require(\"../network/security-group-changes\");\n/** Semantic differences between two CloudFormation templates. */\nclass TemplateDiff {\n constructor(args) {\n if (args.awsTemplateFormatVersion !== undefined) {\n this.awsTemplateFormatVersion = args.awsTemplateFormatVersion;\n }\n if (args.description !== undefined) {\n this.description = args.description;\n }\n if (args.transform !== undefined) {\n this.transform = args.transform;\n }\n this.conditions = args.conditions || new DifferenceCollection({});\n this.mappings = args.mappings || new DifferenceCollection({});\n this.metadata = args.metadata || new DifferenceCollection({});\n this.outputs = args.outputs || new DifferenceCollection({});\n this.parameters = args.parameters || new DifferenceCollection({});\n this.resources = args.resources || new DifferenceCollection({});\n this.unknown = args.unknown || new DifferenceCollection({});\n this.iamChanges = new iam_changes_1.IamChanges({\n propertyChanges: this.scrutinizablePropertyChanges(iam_changes_1.IamChanges.IamPropertyScrutinies),\n resourceChanges: this.scrutinizableResourceChanges(iam_changes_1.IamChanges.IamResourceScrutinies),\n });\n this.securityGroupChanges = new security_group_changes_1.SecurityGroupChanges({\n egressRulePropertyChanges: this.scrutinizablePropertyChanges([service_spec_types_1.PropertyScrutinyType.EgressRules]),\n ingressRulePropertyChanges: this.scrutinizablePropertyChanges([service_spec_types_1.PropertyScrutinyType.IngressRules]),\n egressRuleResourceChanges: this.scrutinizableResourceChanges([service_spec_types_1.ResourceScrutinyType.EgressRuleResource]),\n ingressRuleResourceChanges: this.scrutinizableResourceChanges([service_spec_types_1.ResourceScrutinyType.IngressRuleResource]),\n });\n }\n get differenceCount() {\n let count = 0;\n if (this.awsTemplateFormatVersion !== undefined) {\n count += 1;\n }\n if (this.description !== undefined) {\n count += 1;\n }\n if (this.transform !== undefined) {\n count += 1;\n }\n count += this.conditions.differenceCount;\n count += this.mappings.differenceCount;\n count += this.metadata.differenceCount;\n count += this.outputs.differenceCount;\n count += this.parameters.differenceCount;\n count += this.resources.differenceCount;\n count += this.unknown.differenceCount;\n return count;\n }\n get isEmpty() {\n return this.differenceCount === 0;\n }\n /**\n * Return true if any of the permissions objects involve a broadening of permissions\n */\n get permissionsBroadened() {\n return this.iamChanges.permissionsBroadened || this.securityGroupChanges.rulesAdded;\n }\n /**\n * Return true if any of the permissions objects have changed\n */\n get permissionsAnyChanges() {\n return this.iamChanges.hasChanges || this.securityGroupChanges.hasChanges;\n }\n /**\n * Return all property changes of a given scrutiny type\n *\n * We don't just look at property updates; we also look at resource additions and deletions (in which\n * case there is no further detail on property values), and resource type changes.\n */\n scrutinizablePropertyChanges(scrutinyTypes) {\n const ret = new Array();\n for (const [resourceLogicalId, resourceChange] of Object.entries(this.resources.changes)) {\n if (resourceChange.resourceTypeChanged) {\n // we ignore resource type changes here, and handle them in scrutinizableResourceChanges()\n continue;\n }\n if (!resourceChange.resourceType) {\n // We use resourceChange.resourceType to loadResourceModel so that we can inspect the\n // properties of a resource even after the resource is removed from the template.\n continue;\n }\n const newTypeProps = (0, util_1.loadResourceModel)(resourceChange.resourceType)?.properties || {};\n for (const [propertyName, prop] of Object.entries(newTypeProps)) {\n const propScrutinyType = prop.scrutinizable || service_spec_types_1.PropertyScrutinyType.None;\n if (scrutinyTypes.includes(propScrutinyType)) {\n ret.push({\n resourceLogicalId,\n propertyName,\n resourceType: resourceChange.resourceType,\n scrutinyType: propScrutinyType,\n oldValue: resourceChange.oldProperties?.[propertyName],\n newValue: resourceChange.newProperties?.[propertyName],\n });\n }\n }\n }\n return ret;\n }\n /**\n * Return all resource changes of a given scrutiny type\n *\n * We don't just look at resource updates; we also look at resource additions and deletions (in which\n * case there is no further detail on property values), and resource type changes.\n */\n scrutinizableResourceChanges(scrutinyTypes) {\n const ret = new Array();\n for (const [resourceLogicalId, resourceChange] of Object.entries(this.resources.changes)) {\n if (!resourceChange) {\n continue;\n }\n const commonProps = {\n oldProperties: resourceChange.oldProperties,\n newProperties: resourceChange.newProperties,\n resourceLogicalId,\n };\n // changes to the Type of resources can happen when migrating from CFN templates that use Transforms\n if (resourceChange.resourceTypeChanged) {\n // Treat as DELETE+ADD\n if (resourceChange.oldResourceType) {\n const oldResourceModel = (0, util_1.loadResourceModel)(resourceChange.oldResourceType);\n if (oldResourceModel && this.resourceIsScrutinizable(oldResourceModel, scrutinyTypes)) {\n ret.push({\n ...commonProps,\n newProperties: undefined,\n resourceType: resourceChange.oldResourceType,\n scrutinyType: oldResourceModel.scrutinizable,\n });\n }\n }\n if (resourceChange.newResourceType) {\n const newResourceModel = (0, util_1.loadResourceModel)(resourceChange.newResourceType);\n if (newResourceModel && this.resourceIsScrutinizable(newResourceModel, scrutinyTypes)) {\n ret.push({\n ...commonProps,\n oldProperties: undefined,\n resourceType: resourceChange.newResourceType,\n scrutinyType: newResourceModel.scrutinizable,\n });\n }\n }\n }\n else {\n if (!resourceChange.resourceType) {\n continue;\n }\n const resourceModel = (0, util_1.loadResourceModel)(resourceChange.resourceType);\n if (resourceModel && this.resourceIsScrutinizable(resourceModel, scrutinyTypes)) {\n ret.push({\n ...commonProps,\n resourceType: resourceChange.resourceType,\n scrutinyType: resourceModel.scrutinizable,\n });\n }\n }\n }\n return ret;\n }\n resourceIsScrutinizable(res, scrutinyTypes) {\n return scrutinyTypes.includes(res.scrutinizable || service_spec_types_1.ResourceScrutinyType.None);\n }\n}\nexports.TemplateDiff = TemplateDiff;\n/**\n * Models an entity that changed between two versions of a CloudFormation template.\n */\nclass Difference {\n /**\n * @param oldValue the old value, cannot be equal (to the sense of +deepEqual+) to +newValue+.\n * @param newValue the new value, cannot be equal (to the sense of +deepEqual+) to +oldValue+.\n */\n constructor(oldValue, newValue) {\n this.oldValue = oldValue;\n this.newValue = newValue;\n if (oldValue === undefined && newValue === undefined) {\n throw new assert_1.AssertionError({ message: 'oldValue and newValue are both undefined!' });\n }\n this.isDifferent = !(0, util_1.deepEqual)(oldValue, newValue);\n }\n /** @returns +true+ if the element is new to the template. */\n get isAddition() {\n return this.oldValue === undefined;\n }\n /** @returns +true+ if the element was removed from the template. */\n get isRemoval() {\n return this.newValue === undefined;\n }\n /** @returns +true+ if the element was already in the template and is updated. */\n get isUpdate() {\n return this.oldValue !== undefined\n && this.newValue !== undefined;\n }\n}\nexports.Difference = Difference;\nclass PropertyDifference extends Difference {\n constructor(oldValue, newValue, args) {\n super(oldValue, newValue);\n this.changeImpact = args.changeImpact;\n }\n}\nexports.PropertyDifference = PropertyDifference;\nclass DifferenceCollection {\n constructor(diffs) {\n this.diffs = diffs;\n }\n get changes() {\n return onlyChanges(this.diffs);\n }\n get differenceCount() {\n return Object.values(this.changes).length;\n }\n get(logicalId) {\n const ret = this.diffs[logicalId];\n if (!ret) {\n throw new Error(`No object with logical ID '${logicalId}'`);\n }\n return ret;\n }\n remove(logicalId) {\n delete this.diffs[logicalId];\n }\n get logicalIds() {\n return Object.keys(this.changes);\n }\n /**\n * Returns a new TemplateDiff which only contains changes for which `predicate`\n * returns `true`.\n */\n filter(predicate) {\n const newChanges = {};\n for (const id of Object.keys(this.changes)) {\n const diff = this.changes[id];\n if (predicate(diff)) {\n newChanges[id] = diff;\n }\n }\n return new DifferenceCollection(newChanges);\n }\n /**\n * Invokes `cb` for all changes in this collection.\n *\n * Changes will be sorted as follows:\n * - Removed\n * - Added\n * - Updated\n * - Others\n *\n * @param cb\n */\n forEachDifference(cb) {\n const removed = new Array();\n const added = new Array();\n const updated = new Array();\n const others = new Array();\n for (const logicalId of this.logicalIds) {\n const change = this.changes[logicalId];\n if (change.isAddition) {\n added.push({ logicalId, change });\n }\n else if (change.isRemoval) {\n removed.push({ logicalId, change });\n }\n else if (change.isUpdate) {\n updated.push({ logicalId, change });\n }\n else if (change.isDifferent) {\n others.push({ logicalId, change });\n }\n }\n removed.forEach(v => cb(v.logicalId, v.change));\n added.forEach(v => cb(v.logicalId, v.change));\n updated.forEach(v => cb(v.logicalId, v.change));\n others.forEach(v => cb(v.logicalId, v.change));\n }\n}\nexports.DifferenceCollection = DifferenceCollection;\nclass ConditionDifference extends Difference {\n}\nexports.ConditionDifference = ConditionDifference;\nclass MappingDifference extends Difference {\n}\nexports.MappingDifference = MappingDifference;\nclass MetadataDifference extends Difference {\n}\nexports.MetadataDifference = MetadataDifference;\nclass OutputDifference extends Difference {\n}\nexports.OutputDifference = OutputDifference;\nclass ParameterDifference extends Difference {\n}\nexports.ParameterDifference = ParameterDifference;\nvar ResourceImpact;\n(function (ResourceImpact) {\n /** The existing physical resource will be updated */\n ResourceImpact[\"WILL_UPDATE\"] = \"WILL_UPDATE\";\n /** A new physical resource will be created */\n ResourceImpact[\"WILL_CREATE\"] = \"WILL_CREATE\";\n /** The existing physical resource will be replaced */\n ResourceImpact[\"WILL_REPLACE\"] = \"WILL_REPLACE\";\n /** The existing physical resource may be replaced */\n ResourceImpact[\"MAY_REPLACE\"] = \"MAY_REPLACE\";\n /** The existing physical resource will be destroyed */\n ResourceImpact[\"WILL_DESTROY\"] = \"WILL_DESTROY\";\n /** The existing physical resource will be removed from CloudFormation supervision */\n ResourceImpact[\"WILL_ORPHAN\"] = \"WILL_ORPHAN\";\n /** The existing physical resource will be added to CloudFormation supervision */\n ResourceImpact[\"WILL_IMPORT\"] = \"WILL_IMPORT\";\n /** There is no change in this resource */\n ResourceImpact[\"NO_CHANGE\"] = \"NO_CHANGE\";\n})(ResourceImpact || (exports.ResourceImpact = ResourceImpact = {}));\n/**\n * This function can be used as a reducer to obtain the resource-level impact of a list\n * of property-level impacts.\n * @param one the current worst impact so far.\n * @param two the new impact being considered (can be undefined, as we may not always be\n * able to determine some peroperty's impact).\n */\nfunction worstImpact(one, two) {\n if (!two) {\n return one;\n }\n const badness = {\n [ResourceImpact.NO_CHANGE]: 0,\n [ResourceImpact.WILL_IMPORT]: 0,\n [ResourceImpact.WILL_UPDATE]: 1,\n [ResourceImpact.WILL_CREATE]: 2,\n [ResourceImpact.WILL_ORPHAN]: 3,\n [ResourceImpact.MAY_REPLACE]: 4,\n [ResourceImpact.WILL_REPLACE]: 5,\n [ResourceImpact.WILL_DESTROY]: 6,\n };\n return badness[one] > badness[two] ? one : two;\n}\n/**\n * Change to a single resource between two CloudFormation templates\n *\n * This class can be mutated after construction.\n */\nclass ResourceDifference {\n constructor(oldValue, newValue, args) {\n this.oldValue = oldValue;\n this.newValue = newValue;\n this.resourceTypes = args.resourceType;\n this.propertyDiffs = args.propertyDiffs;\n this.otherDiffs = args.otherDiffs;\n this.isAddition = oldValue === undefined;\n this.isRemoval = newValue === undefined;\n this.isImport = undefined;\n }\n get oldProperties() {\n return this.oldValue && this.oldValue.Properties;\n }\n get newProperties() {\n return this.newValue && this.newValue.Properties;\n }\n /**\n * Whether this resource was modified at all\n */\n get isDifferent() {\n return this.differenceCount > 0 || this.oldResourceType !== this.newResourceType;\n }\n /**\n * Whether the resource was updated in-place\n */\n get isUpdate() {\n return this.isDifferent && !this.isAddition && !this.isRemoval;\n }\n get oldResourceType() {\n return this.resourceTypes.oldType;\n }\n get newResourceType() {\n return this.resourceTypes.newType;\n }\n /**\n * All actual property updates\n */\n get propertyUpdates() {\n return onlyChanges(this.propertyDiffs);\n }\n /**\n * All actual \"other\" updates\n */\n get otherChanges() {\n return onlyChanges(this.otherDiffs);\n }\n /**\n * Return whether the resource type was changed in this diff\n *\n * This is not a valid operation in CloudFormation but to be defensive we're going\n * to be aware of it anyway.\n */\n get resourceTypeChanged() {\n return (this.resourceTypes.oldType !== undefined\n && this.resourceTypes.newType !== undefined\n && this.resourceTypes.oldType !== this.resourceTypes.newType);\n }\n /**\n * Return the resource type if it was unchanged\n *\n * If the resource type was changed, it's an error to call this.\n */\n get resourceType() {\n if (this.resourceTypeChanged) {\n throw new Error('Cannot get .resourceType, because the type was changed');\n }\n return this.resourceTypes.oldType || this.resourceTypes.newType;\n }\n /**\n * Replace a PropertyChange in this object\n *\n * This affects the property diff as it is summarized to users, but it DOES\n * NOT affect either the \"oldValue\" or \"newValue\" values; those still contain\n * the actual template values as provided by the user (they might still be\n * used for downstream processing).\n */\n setPropertyChange(propertyName, change) {\n this.propertyDiffs[propertyName] = change;\n }\n /**\n * Replace a OtherChange in this object\n *\n * This affects the property diff as it is summarized to users, but it DOES\n * NOT affect either the \"oldValue\" or \"newValue\" values; those still contain\n * the actual template values as provided by the user (they might still be\n * used for downstream processing).\n */\n setOtherChange(otherName, change) {\n this.otherDiffs[otherName] = change;\n }\n get changeImpact() {\n if (this.isImport) {\n return ResourceImpact.WILL_IMPORT;\n }\n // Check the Type first\n if (this.resourceTypes.oldType !== this.resourceTypes.newType) {\n if (this.resourceTypes.oldType === undefined) {\n return ResourceImpact.WILL_CREATE;\n }\n if (this.resourceTypes.newType === undefined) {\n return this.oldValue.DeletionPolicy === 'Retain'\n ? ResourceImpact.WILL_ORPHAN\n : ResourceImpact.WILL_DESTROY;\n }\n return ResourceImpact.WILL_REPLACE;\n }\n // Base impact (before we mix in the worst of the property impacts);\n // WILL_UPDATE if we have \"other\" changes, NO_CHANGE if there are no \"other\" changes.\n const baseImpact = Object.keys(this.otherChanges).length > 0 ? ResourceImpact.WILL_UPDATE : ResourceImpact.NO_CHANGE;\n return Object.values(this.propertyDiffs)\n .map(elt => elt.changeImpact)\n .reduce(worstImpact, baseImpact);\n }\n /**\n * Count of actual differences (not of elements)\n */\n get differenceCount() {\n return Object.values(this.propertyUpdates).length\n + Object.values(this.otherChanges).length;\n }\n /**\n * Invoke a callback for each actual difference\n */\n forEachDifference(cb) {\n for (const key of Object.keys(this.propertyUpdates).sort()) {\n cb('Property', key, this.propertyUpdates[key]);\n }\n for (const key of Object.keys(this.otherChanges).sort()) {\n cb('Other', key, this.otherDiffs[key]);\n }\n }\n}\nexports.ResourceDifference = ResourceDifference;\nfunction isPropertyDifference(diff) {\n return diff.changeImpact !== undefined;\n}\nexports.isPropertyDifference = isPropertyDifference;\n/**\n * Filter a map of IDifferences down to only retain the actual changes\n */\nfunction onlyChanges(xs) {\n const ret = {};\n for (const [key, diff] of Object.entries(xs)) {\n if (diff.isDifferent) {\n ret[key] = diff;\n }\n }\n return ret;\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJ0eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxtQ0FBd0M7QUFDeEMsb0VBQW9IO0FBQ3BILGlDQUFzRDtBQUN0RCxvREFBZ0Q7QUFDaEQsOEVBQXlFO0FBZ0N6RSxpRUFBaUU7QUFDakUsTUFBYSxZQUFZO0lBdUJ2QixZQUFZLElBQW1CO1FBQzdCLElBQUksSUFBSSxDQUFDLHdCQUF3QixLQUFLLFNBQVMsRUFBRSxDQUFDO1lBQ2hELElBQUksQ0FBQyx3QkFBd0IsR0FBRyxJQUFJLENBQUMsd0JBQXdCLENBQUM7UUFDaEUsQ0FBQztRQUNELElBQUksSUFBSSxDQUFDLFdBQVcsS0FBSyxTQUFTLEVBQUUsQ0FBQztZQUNuQyxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUM7UUFDdEMsQ0FBQztRQUNELElBQUksSUFBSSxDQUFDLFNBQVMsS0FBSyxTQUFTLEVBQUUsQ0FBQztZQUNqQyxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUM7UUFDbEMsQ0FBQztRQUVELElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLFVBQVUsSUFBSSxJQUFJLG9CQUFvQixDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ2xFLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLFFBQVEsSUFBSSxJQUFJLG9CQUFvQixDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQzlELElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLFFBQVEsSUFBSSxJQUFJLG9CQUFvQixDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQzlELElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLE9BQU8sSUFBSSxJQUFJLG9CQUFvQixDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQzVELElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLFVBQVUsSUFBSSxJQUFJLG9CQUFvQixDQUFDLEVBQUUs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QyxPQUFPLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQztRQUM3QyxJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUNyQixHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDO1FBQ2xCLENBQUM7SUFDSCxDQUFDO0lBQ0QsT0FBTyxHQUFHLENBQUM7QUFDYixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQXNzZXJ0aW9uRXJyb3IgfSBmcm9tICdhc3NlcnQnO1xuaW1wb3J0IHsgUHJvcGVydHlTY3J1dGlueVR5cGUsIFJlc291cmNlU2NydXRpbnlUeXBlLCBSZXNvdXJjZSBhcyBSZXNvdXJjZU1vZGVsIH0gZnJvbSAnQGF3cy1jZGsvc2VydmljZS1zcGVjLXR5cGVzJztcbmltcG9ydCB7IGRlZXBFcXVhbCwgbG9hZFJlc291cmNlTW9kZWwgfSBmcm9tICcuL3V0aWwnO1xuaW1wb3J0IHsgSWFtQ2hhbmdlcyB9IGZyb20gJy4uL2lhbS9pYW0tY2hhbmdlcyc7XG5pbXBvcnQgeyBTZWN1cml0eUdyb3VwQ2hhbmdlcyB9IGZyb20gJy4uL25ldHdvcmsvc2VjdXJpdHktZ3JvdXAtY2hhbmdlcyc7XG5cbmV4cG9ydCB0eXBlIFByb3BlcnR5TWFwID0ge1trZXk6IHN0cmluZ106IGFueSB9O1xuXG5leHBvcnQgdHlwZSBDaGFuZ2VTZXRSZXNvdXJjZXMgPSB7IFtsb2dpY2FsSWQ6IHN0cmluZ106IENoYW5nZVNldFJlc291cmNlIH07XG5cbi8qKlxuICogQHBhcmFtIGJlZm9yZUNvbnRleHQgaXMgdGhlIEJlZm9yZUNvbnRleHQgZmllbGQgZnJvbSB0aGUgQ2hhbmdlU2V0LlJlc291cmNlQ2hhbmdlLkJlZm9yZUNvbnRleHQuIFRoaXMgaXMgdGhlIHBhcnQgb2YgdGhlIENsb3VkRm9ybWF0aW9uIHRlbXBsYXRlXG4gKiB0aGF0IGRlZmluZXMgd2hhdCB0aGUgcmVzb3VyY2UgaXMgYmVmb3JlIHRoZSBjaGFuZ2UgaXMgYXBwbGllZDsgdGhhdCBpcywgQmVmb3JlQ29udGV4dCBpcyBDbG91ZEZvcm1hdGlvblRlbXBsYXRlLlJlc291cmNlc1tMb2dpY2FsSWRdIGJlZm9yZSB0aGUgQ2hhbmdlU2V0IGlzIGV4ZWN1dGVkLlxuICpcbiAqIEBwYXJhbSBhZnRlckNvbnRleHQgc2FtZSBhcyBiZWZvcmVDb250ZXh0IGJ1dCBmb3IgYWZ0ZXIgdGhlIGNoYW5nZSBpcyBtYWRlOyB0aGF0IGlzLCBBZnRlckNvbnRleHQgaXMgQ2xvdWRGb3JtYXRpb25UZW1wbGF0ZS5SZXNvdXJjZXNbTG9naWNhbElkXSBhZnRlciB0aGUgQ2hhbmdlU2V0IGlzIGV4ZWN1dGVkLlxuICpcbiAqICAqIEhlcmUgaXMgYW4gZXhhbXBsZSBvZiB3aGF0IGEgYmVmb3JlQ29udGV4dC9hZnRlckNvbnRleHQgbG9va3MgbGlrZTpcbiAqICAne1wiUHJvcGVydGllc1wiOntcIlZhbHVlXCI6XCJzZGZsa2phXCIsXCJUeXBlXCI6XCJTdHJpbmdcIixcIk5hbWVcIjpcIm15U3NtUGFyYW1ldGVyRnJvbVN0YWNrXCJ9LFwiTWV0YWRhdGFcIjp7XCJhd3M6Y2RrOnBhdGhcIjpcImNkay9teVNzbVBhcmFtZXRlci9SZXNvdXJjZVwifX0nXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ2hhbmdlU2V0UmVzb3VyY2Uge1xuICByZXNvdXJjZVdhc1JlcGxhY2VkOiBib29sZWFuO1xuICByZXNvdXJjZVR5cGU6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgcHJvcGVydHlSZXBsYWNlbWVudE1vZGVzOiBQcm9wZXJ0eVJlcGxhY2VtZW50TW9kZU1hcCB8IHVuZGVmaW5lZDtcbn1cblxuZXhwb3J0IHR5cGUgUHJvcGVydHlSZXBsYWNlbWVudE1vZGVNYXAgPSB7XG4gIFtwcm9wZXJ0eU5hbWU6IHN0cmluZ106IHtcbiAgICByZXBsYWNlbWVudE1vZGU6IFJlcGxhY2VtZW50TW9kZXMgfCB1bmRlZmluZWQ7XG4gIH07XG59XG5cbi8qKlxuICogJ0Fsd2F5cycgbWVhbnMgdGhhdCBjaGFuZ2luZyB0aGUgY29ycmVzcG9uZGluZyBwcm9wZXJ0eSB3aWxsIGFsd2F5cyBjYXVzZSBhIHJlc291cmNlIHJlcGxhY2VtZW50LiBOZXZlciBtZWFucyBuZXZlci4gQ29uZGl0aW9uYWxseSBtZWFucyBtYXliZS5cbiAqL1xuZXhwb3J0IHR5cGUgUmVwbGFjZW1lbnRNb2RlcyA9ICdBbHdheXMnIHwgJ05ldmVyJyB8ICdDb25kaXRpb25hbGx5JztcblxuLyoqIFNlbWFudGljIGRpZmZlcmVuY2VzIGJldHdlZW4gdHdvIENsb3VkRm9ybWF0aW9uIHRlbXBsYXRlcy4gKi9cbmV4cG9ydCBjbGFzcyBUZW1wbGF0ZURpZmYgaW1wbGVtZW50cyBJVGVtcGxhdGVEaWZmIHtcbiAgcHVibGljIGF3c1RlbXBsYXRlRm9ybWF0VmVyc2lvbj86IERpZmZlcmVuY2U8c3RyaW5nPjtcbiAgcHVibGljIGRlc2NyaXB0aW9uPzogRGlmZmVyZW5jZTxzdHJpbmc+O1xuICBwdWJsaWMgdHJhbnNmb3JtPzogRGlmZmVyZW5jZTxzdHJpbmc+O1xuICBwdWJsaWMgY29uZGl0aW9uczogRGlmZmVyZW5jZUNvbGxlY3Rpb248Q29uZGl0aW9uLCBDb25kaXRpb25EaWZmZXJlbmNlPjtcbiAgcHVibGljIG1hcHBpbmdzOiBEaWZmZXJlbmNlQ29sbGVjdGlvbjxNYXBwaW5nLCBNYXBwaW5nRGlmZmVyZW5jZT47XG4gIHB1YmxpYyBtZXRhZGF0YTogRGlmZmVyZW5jZUNvbGxlY3Rpb248TWV0YWRhdGEsIE1ldGFkYXRhRGlmZmVyZW5jZT47XG4gIHB1YmxpYyBvdXRwdXRzOiBEaWZmZXJlbmNlQ29sbGVjdGlvbjxPdXRwdXQsIE91dHB1dERpZmZlcmVuY2U+O1xuICBwdWJsaWMgcGFyYW1ldGVyczogRGlmZmVyZW5jZUNvbGxlY3Rpb248UGFyYW1ldGVyLCBQYXJhbWV0ZXJEaWZmZXJlbmNlPjtcbiAgcHVibGljIHJlc291cmNlczogRGlmZmVyZW5jZUNvbGxlY3Rpb248UmVzb3VyY2UsIFJlc291cmNlRGlmZmVyZW5jZT47XG4gIC8qKiBUaGUgZGlmZmVyZW5jZXMgaW4gdW5rbm93bi91bmV4cGVjdGVkIHBhcnRzIG9mIHRoZSB0ZW1wbGF0ZSAqL1xuICBwdWJsaWMgdW5rbm93bjogRGlmZmVyZW5jZUNvbGxlY3Rpb248YW55LCBEaWZmZXJlbmNlPGFueT4+O1xuXG4gIC8qKlxuICAgKiBDaGFuZ2VzIHRvIElBTSBwb2xpY2llc1xuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGlhbUNoYW5nZXM6IElhbUNoYW5nZXM7XG5cbiAgLyoqXG4gICAqIENoYW5nZXMgdG8gU2VjdXJpdHkgR3JvdXAgaW5ncmVzcyBhbmQgZWdyZXNzIHJ1bGVzXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgc2VjdXJpdHlHcm91cENoYW5nZXM6IFNlY3VyaXR5R3JvdXBDaGFuZ2VzO1xuXG4gIGNvbnN0cnVjdG9yKGFyZ3M6IElUZW1wbGF0ZURpZmYpIHtcbiAgICBpZiAoYXJncy5hd3NUZW1wbGF0ZUZvcm1hdFZlcnNpb24gIT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy5hd3NUZW1wbGF0ZUZvcm1hdFZlcnNpb24gPSBhcmdzLmF3c1RlbXBsYXRlRm9ybWF0VmVyc2lvbjtcbiAgICB9XG4gICAgaWYgKGFyZ3MuZGVzY3JpcHRpb24gIT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy5kZXNjcmlwdGlvbiA9IGFyZ3MuZGVzY3JpcHRpb247XG4gICAgfVxuICAgIGlmIChhcmdzLnRyYW5zZm9ybSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLnRyYW5zZm9ybSA9IGFyZ3MudHJhbnNmb3JtO1xuICAgIH1cblxuICAgIHRoaXMuY29uZGl0aW9ucyA9IGFyZ3MuY29uZGl0aW9ucyB8fCBuZXcgRGlmZmVyZW5jZUNvbGxlY3Rpb24oe30pO1xuICAgIHRoaXMubWFwcGluZ3MgPSBhcmdzLm1hcHBpbmdzIHx8IG5ldyBEaWZmZXJlbmNlQ29sbGVjdGlvbih7fSk7XG4gICAgdGhpcy5tZXRhZGF0YSA9IGFyZ3MubWV0YWRhdGEgfHwgbmV3IERpZmZlcmVuY2VDb2xsZWN0aW9uKHt9KTtcbiAgICB0aGlzLm91dHB1dHMgPSBhcmdzLm91dHB1dHMgfHwgbmV3IERpZmZlcmVuY2VDb2xsZWN0aW9uKHt9KTtcbiAgICB0aGlzLnBhcmFtZXRlcnMgPSBhcmdzLnBhcmFtZXRlcnMgfHwgbmV3IERpZmZlcmVuY2VDb2xsZWN0aW9uKHt9KTtcbiAgICB0aGlzLnJlc291cmNlcyA9IGFyZ3MucmVzb3VyY2VzIHx8IG5ldyBEaWZmZXJlbmNlQ29sbGVjdGlvbih7fSk7XG4gICAgdGhpcy51bmtub3duID0gYXJncy51bmtub3duIHx8IG5ldyBEaWZmZXJlbmNlQ29sbGVjdGlvbih7fSk7XG5cbiAgICB0aGlzLmlhbUNoYW5nZXMgPSBuZXcgSWFtQ2hhbmdlcyh7XG4gICAgICBwcm9wZXJ0eUNoYW5nZXM6IHRoaXMuc2NydXRpbml6YWJsZVByb3BlcnR5Q2hhbmdlcyhJYW1DaGFuZ2VzLklhbVByb3BlcnR5U2NydXRpbmllcyksXG4gICAgICByZXNvdXJjZUNoYW5nZXM6IHRoaXMuc2NydXRpbml6YWJsZVJlc291cmNlQ2hhbmdlcyhJYW1DaGFuZ2VzLklhbVJlc291cmNlU2NydXRpbmllcyksXG4gICAgfSk7XG5cbiAgICB0aGlzLnNlY3VyaXR5R3JvdXBDaGFuZ2VzID0gbmV3IFNlY3VyaXR5R3JvdXBDaGFuZ2VzKHtcbiAgICAgIGVncmVzc1J1bGVQcm9wZXJ0eUNoYW5nZXM6IHRoaXMuc2NydXRpbml6YWJsZVByb3BlcnR5Q2hhbmdlcyhbUHJvcGVydHlTY3J1dGlueVR5cGUuRWdyZXNzUnVsZXNdKSxcbiAgICAgIGluZ3Jlc3NSdWxlUHJvcGVydHlDaGFuZ2VzOiB0aGlzLnNjcnV0aW5pemFibGVQcm9wZXJ0eUNoYW5nZXMoW1Byb3BlcnR5U2NydXRpbnlUeXBlLkluZ3Jlc3NSdWxlc10pLFxuICAgICAgZWdyZXNzUnVsZVJlc291cmNlQ2hhbmdlczogdGhpcy5zY3J1dGluaXphYmxlUmVzb3VyY2VDaGFuZ2VzKFtSZXNvdXJjZVNjcnV0aW55VHlwZS5FZ3Jlc3NSdWxlUmVzb3VyY2VdKSxcbiAgICAgIGluZ3Jlc3NSdWxlUmVzb3VyY2VDaGFuZ2VzOiB0aGlzLnNjcnV0aW5pemFibGVSZXNvdXJjZUNoYW5nZXMoW1Jlc291cmNlU2NydXRpbnlUeXBlLkluZ3Jlc3NSdWxlUmVzb3VyY2VdKSxcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgZGlmZmVyZW5jZUNvdW50KCkge1xuICAgIGxldCBjb3VudCA9IDA7XG5cbiAgICBpZiAodGhpcy5hd3NUZW1wbGF0ZUZvcm1hdFZlcnNpb24gIT09IHVuZGVmaW5lZCkge1xuICAgICAgY291bnQgKz0gMTtcbiAgICB9XG4gICAgaWYgKHRoaXMuZGVzY3JpcHRpb24gIT09IHVuZGVmaW5lZCkge1xuICAgICAgY291bnQgKz0gMTtcbiAgICB9XG4gICAgaWYgKHRoaXMudHJhbnNmb3JtICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGNvdW50ICs9IDE7XG4gICAgfVxuXG4gICAgY291bnQgKz0gdGhpcy5jb25kaXRpb25zLmRpZmZlcmVuY2VDb3VudDtcbiAgICBjb3VudCArPSB0aGlzLm1hcHBpbmdzLmRpZmZlcmVuY2VDb3VudDtcbiAgICBjb3VudCArPSB0aGlzLm1ldGFkYXRhLmRpZmZlcmVuY2VDb3VudDtcbiAgICBjb3VudCArPSB0aGlzLm91dHB1dHMuZGlmZmVyZW5jZUNvdW50O1xuICAgIGNvdW50ICs9IHRoaXMucGFyYW1ldGVycy5kaWZmZXJlbmNlQ291bnQ7XG4gICAgY291bnQgKz0gdGhpcy5yZXNvdXJjZXMuZGlmZmVyZW5jZUNvdW50O1xuICAgIGNvdW50ICs9IHRoaXMudW5rbm93bi5kaWZmZXJlbmNlQ291bnQ7XG5cbiAgICByZXR1cm4gY291bnQ7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGlzRW1wdHkoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuZGlmZmVyZW5jZUNvdW50ID09PSAwO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybiB0cnVlIGlmIGFueSBvZiB0aGUgcGVybWlzc2lvbnMgb2JqZWN0cyBpbnZvbHZlIGEgYnJvYWRlbmluZyBvZiBwZXJtaXNzaW9uc1xuICAgKi9cbiAgcHVibGljIGdldCBwZXJtaXNzaW9uc0Jyb2FkZW5lZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5pYW1DaGFuZ2VzLnBlcm1pc3Npb25zQnJvYWRlbmVkIHx8IHRoaXMuc2VjdXJpdHlHcm91cENoYW5nZXMucnVsZXNBZGRlZDtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm4gdHJ1ZSBpZiBhbnkgb2YgdGhlIHBlcm1pc3Npb25zIG9iamVjdHMgaGF2ZSBjaGFuZ2VkXG4gICAqL1xuICBwdWJsaWMgZ2V0IHBlcm1pc3Npb25zQW55Q2hhbmdlcygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5pYW1DaGFuZ2VzLmhhc0NoYW5nZXMgfHwgdGhpcy5zZWN1cml0eUdyb3VwQ2hhbmdlcy5oYXNDaGFuZ2VzO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybiBhbGwgcHJvcGVydHkgY2hhbmdlcyBvZiBhIGdpdmVuIHNjcnV0aW55IHR5cGVcbiAgICpcbiAgICogV2UgZG9uJ3QganVzdCBsb29rIGF0IHByb3BlcnR5IHVwZGF0ZXM7IHdlIGFsc28gbG9vayBhdCByZXNvdXJjZSBhZGRpdGlvbnMgYW5kIGRlbGV0aW9ucyAoaW4gd2hpY2hcbiAgICogY2FzZSB0aGVyZSBpcyBubyBmdXJ0aGVyIGRldGFpbCBvbiBwcm9wZXJ0eSB2YWx1ZXMpLCBhbmQgcmVzb3VyY2UgdHlwZSBjaGFuZ2VzLlxuICAgKi9cbiAgcHJpdmF0ZSBzY3J1dGluaXphYmxlUHJvcGVydHlDaGFuZ2VzKHNjcnV0aW55VHlwZXM6IFByb3BlcnR5U2NydXRpbnlUeXBlW10pOiBQcm9wZXJ0eUNoYW5nZVtdIHtcbiAgICBjb25zdCByZXQgPSBuZXcgQXJyYXk8UHJvcGVydHlDaGFuZ2U+KCk7XG5cbiAgICBmb3IgKGNvbnN0IFtyZXNvdXJjZUxvZ2ljYWxJZCwgcmVzb3VyY2VDaGFuZ2VdIG9mIE9iamVjdC5lbnRyaWVzKHRoaXMucmVzb3VyY2VzLmNoYW5nZXMpKSB7XG4gICAgICBpZiAocmVzb3VyY2VDaGFuZ2UucmVzb3VyY2VUeXBlQ2hhbmdlZCkge1xuICAgICAgICAvLyB3ZSBpZ25vcmUgcmVzb3VyY2UgdHlwZSBjaGFuZ2VzIGhlcmUsIGFuZCBoYW5kbGUgdGhlbSBpbiBzY3J1dGluaXphYmxlUmVzb3VyY2VDaGFuZ2VzKClcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIGlmICghcmVzb3VyY2VDaGFuZ2UucmVzb3VyY2VUeXBlKSB7XG4gICAgICAgIC8vIFdlIHVzZSByZXNvdXJjZUNoYW5nZS5yZXNvdXJjZVR5cGUgdG8gbG9hZFJlc291cmNlTW9kZWwgc28gdGhhdCB3ZSBjYW4gaW5zcGVjdCB0aGVcbiAgICAgICAgLy8gcHJvcGVydGllcyBvZiBhIHJlc291cmNlIGV2ZW4gYWZ0ZXIgdGhlIHJlc291cmNlIGlzIHJlbW92ZWQgZnJvbSB0aGUgdGVtcGxhdGUuXG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBuZXdUeXBlUHJvcHMgPSBsb2FkUmVzb3VyY2VNb2RlbChyZXNvdXJjZUNoYW5nZS5yZXNvdXJjZVR5cGUpPy5wcm9wZXJ0aWVzIHx8IHt9O1xuICAgICAgZm9yIChjb25zdCBbcHJvcGVydHlOYW1lLCBwcm9wXSBvZiBPYmplY3QuZW50cmllcyhuZXdUeXBlUHJvcHMpKSB7XG4gICAgICAgIGNvbnN0IHByb3BTY3J1dGlueVR5cGUgPSBwcm9wLnNjcnV0aW5pemFibGUgfHwgUHJvcGVydHlTY3J1dGlueVR5cGUuTm9uZTtcbiAgICAgICAgaWYgKHNjcnV0aW55VHlwZXMuaW5jbHVkZXMocHJvcFNjcnV0aW55VHlwZSkpIHtcbiAgICAgICAgICByZXQucHVzaCh7XG4gICAgICAgICAgICByZXNvdXJjZUxvZ2ljYWxJZCxcbiAgICAgICAgICAgIHByb3BlcnR5TmFtZSxcbiAgICAgICAgICAgIHJlc291cmNlVHlwZTogcmVzb3VyY2VDaGFuZ2UucmVzb3VyY2VUeXBlLFxuICAgICAgICAgICAgc2NydXRpbnlUeXBlOiBwcm9wU2NydXRpbnlUeXBlLFxuICAgICAgICAgICAgb2xkVmFsdWU6IHJlc291cmNlQ2hhbmdlLm9sZFByb3BlcnRpZXM/Lltwcm9wZXJ0eU5hbWVdLFxuICAgICAgICAgICAgbmV3VmFsdWU6IHJlc291cmNlQ2hhbmdlLm5ld1Byb3BlcnRpZXM/Lltwcm9wZXJ0eU5hbWVdLFxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHJldDtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm4gYWxsIHJlc291cmNlIGNoYW5nZXMgb2YgYSBnaXZlbiBzY3J1dGlueSB0eXBlXG4gICAqXG4gICAqIFdlIGRvbid0IGp1c3QgbG9vayBhdCByZXNvdXJjZSB1cGRhdGVzOyB3ZSBhbHNvIGxvb2sgYXQgcmVzb3VyY2UgYWRkaXRpb25zIGFuZCBkZWxldGlvbnMgKGluIHdoaWNoXG4gICAqIGNhc2UgdGhlcmUgaXMgbm8gZnVydGhlciBkZXRhaWwgb24gcHJvcGVydHkgdmFsdWVzKSwgYW5kIHJlc291cmNlIHR5cGUgY2hhbmdlcy5cbiAgICovXG4gIHByaXZhdGUgc2NydXRpbml6YWJsZVJlc291cmNlQ2hhbmdlcyhzY3J1dGlueVR5cGVzOiBSZXNvdXJjZVNjcnV0aW55VHlwZVtdKTogUmVzb3VyY2VDaGFuZ2VbXSB7XG4gICAgY29uc3QgcmV0ID0gbmV3IEFycmF5PFJlc291cmNlQ2hhbmdlPigpO1xuXG4gICAgZm9yIChjb25zdCBbcmVzb3VyY2VMb2dpY2FsSWQsIHJlc291cmNlQ2hhbmdlXSBvZiBPYmplY3QuZW50cmllcyh0aGlzLnJlc291cmNlcy5jaGFuZ2VzKSkge1xuICAgICAgaWYgKCFyZXNvdXJjZUNoYW5nZSkgeyBjb250aW51ZTsgfVxuXG4gICAgICBjb25zdCBjb21tb25Qcm9wcyA9IHtcbiAgICAgICAgb2xkUHJvcGVydGllczogcmVzb3VyY2VDaGFuZ2Uub2xkUHJvcGVydGllcyxcbiAgICAgICAgbmV3UHJvcGVydGllczogcmVzb3VyY2VDaGFuZ2UubmV3UHJvcGVydGllcyxcbiAgICAgICAgcmVzb3VyY2VMb2dpY2FsSWQsXG4gICAgICB9O1xuXG4gICAgICAvLyBjaGFuZ2VzIHRvIHRoZSBUeXBlIG9mIHJlc291cmNlcyBjYW4gaGFwcGVuIHdoZW4gbWlncmF0aW5nIGZyb20gQ0ZOIHRlbXBsYXRlcyB0aGF0IHVzZSBUcmFuc2Zvcm1zXG4gICAgICBpZiAocmVzb3VyY2VDaGFuZ2UucmVzb3VyY2VUeXBlQ2hhbmdlZCkge1xuICAgICAgICAvLyBUcmVhdCBhcyBERUxFVEUrQUREXG4gICAgICAgIGlmIChyZXNvdXJjZUNoYW5nZS5vbGRSZXNvdXJjZVR5cGUpIHtcbiAgICAgICAgICBjb25zdCBvbGRSZXNvdXJjZU1vZGVsID0gbG9hZFJlc291cmNlTW9kZWwocmVzb3VyY2VDaGFuZ2Uub2xkUmVzb3VyY2VUeXBlKTtcbiAgICAgICAgICBpZiAob2xkUmVzb3VyY2VNb2RlbCAmJiB0aGlzLnJlc291cmNlSXNTY3J1dGluaXphYmxlKG9sZFJlc291cmNlTW9kZWwsIHNjcnV0aW55VHlwZXMpKSB7XG4gICAgICAgICAgICByZXQucHVzaCh7XG4gICAgICAgICAgICAgIC4uLmNvbW1vblByb3BzLFxuICAgICAgICAgICAgICBuZXdQcm9wZXJ0aWVzOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgIHJlc291cmNlVHlwZTogcmVzb3VyY2VDaGFuZ2Uub2xkUmVzb3VyY2VUeXBlISxcbiAgICAgICAgICAgICAgc2NydXRpbnlUeXBlOiBvbGRSZXNvdXJjZU1vZGVsLnNjcnV0aW5pemFibGUhLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHJlc291cmNlQ2hhbmdlLm5ld1Jlc291cmNlVHlwZSkge1xuICAgICAgICAgIGNvbnN0IG5ld1Jlc291cmNlTW9kZWwgPSBsb2FkUmVzb3VyY2VNb2RlbChyZXNvdXJjZUNoYW5nZS5uZXdSZXNvdXJjZVR5cGUpO1xuICAgICAgICAgIGlmIChuZXdSZXNvdXJjZU1vZGVsICYmIHRoaXMucmVzb3VyY2VJc1NjcnV0aW5pemFibGUobmV3UmVzb3VyY2VNb2RlbCwgc2NydXRpbnlUeXBlcykpIHtcbiAgICAgICAgICAgIHJldC5wdXNoKHtcbiAgICAgICAgICAgICAgLi4uY29tbW9uUHJvcHMsXG4gICAgICAgICAgICAgIG9sZFByb3BlcnRpZXM6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgcmVzb3VyY2VUeXBlOiByZXNvdXJjZUNoYW5nZS5uZXdSZXNvdXJjZVR5cGUhLFxuICAgICAgICAgICAgICBzY3J1dGlueVR5cGU6IG5ld1Jlc291cmNlTW9kZWwuc2NydXRpbml6YWJsZSEsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmICghcmVzb3VyY2VDaGFuZ2UucmVzb3VyY2VUeXBlKSB7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCByZXNvdXJjZU1vZGVsID0gbG9hZFJlc291cmNlTW9kZWwocmVzb3VyY2VDaGFuZ2UucmVzb3VyY2VUeXBlKTtcbiAgICAgICAgaWYgKHJlc291cmNlTW9kZWwgJiYgdGhpcy5yZXNvdXJjZUlzU2NydXRpbml6YWJsZShyZXNvdXJjZU1vZGVsLCBzY3J1dGlueVR5cGVzKSkge1xuICAgICAgICAgIHJldC5wdXNoKHtcbiAgICAgICAgICAgIC4uLmNvbW1vblByb3BzLFxuICAgICAgICAgICAgcmVzb3VyY2VUeXBlOiByZXNvdXJjZUNoYW5nZS5yZXNvdXJjZVR5cGUsXG4gICAgICAgICAgICBzY3J1dGlueVR5cGU6IHJlc291cmNlTW9kZWwuc2NydXRpbml6YWJsZSEsXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gcmV0O1xuICB9XG5cbiAgcHJpdmF0ZSByZXNvdXJjZUlzU2NydXRpbml6YWJsZShyZXM6IFJlc291cmNlTW9kZWwsIHNjcnV0aW55VHlwZXM6IEFycmF5PFJlc291cmNlU2NydXRpbnlUeXBlPik6IGJvb2xlYW4ge1xuICAgIHJldHVybiBzY3J1dGlueVR5cGVzLmluY2x1ZGVzKHJlcy5zY3J1dGluaXphYmxlIHx8IFJlc291cmNlU2NydXRpbnlUeXBlLk5vbmUpO1xuICB9XG59XG5cbi8qKlxuICogQSBjaGFuZ2UgaW4gcHJvcGVydHkgdmFsdWVzXG4gKlxuICogTm90IG5lY2Vzc2FyaWx5IGFuIHVwZGF0ZSwgaXQgY291bGQgYmUgdGhhdCB0aGVyZSB1c2VkIHRvIGJlIG5vIHZhbHVlIHRoZXJlXG4gKiBiZWNhdXNlIHRoZXJlIHdhcyBubyByZXNvdXJjZSwgYW5kIG5vdyB0aGVyZSBpcyAob3IgdmljZSB2ZXJzYSkuXG4gKlxuICogVGhlcmVmb3JlLCB3ZSBqdXN0IGNvbnRhaW4gcGxhaW4gdmFsdWVzIGFuZCBub3QgYSBQcm9wZXJ0eURpZmZlcmVuY2U8YW55Pi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBQcm9wZXJ0eUNoYW5nZSB7XG4gIC8qKlxuICAgKiBMb2dpY2FsIElEIG9mIHRoZSByZXNvdXJjZSB3aGVyZSB0aGlzIHByb3BlcnR5IGNoYW5nZSB3YXMgZm91bmRcbiAgICovXG4gIHJlc291cmNlTG9naWNhbElkOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFR5cGUgb2YgdGhlIHJlc291cmNlXG4gICAqL1xuICByZXNvdXJjZVR5cGU6IHN0cmluZztcblxuICAvKipcbiAgICogU2NydXRpbnkgdHlwZSBmb3IgdGhpcyBwcm9wZXJ0eSBjaGFuZ2VcbiAgICovXG4gIHNjcnV0aW55VHlwZTogUHJvcGVydHlTY3J1dGlueVR5cGU7XG5cbiAgLyoqXG4gICAqIE5hbWUgb2YgdGhlIHByb3BlcnR5IHRoYXQgaXMgY2hhbmdpbmdcbiAgICovXG4gIHByb3BlcnR5TmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgb2xkIHByb3BlcnR5IHZhbHVlXG4gICAqL1xuICBvbGRWYWx1ZT86IGFueTtcblxuICAvKipcbiAgICogVGhlIG5ldyBwcm9wZXJ0eSB2YWx1ZVxuICAgKi9cbiAgbmV3VmFsdWU/OiBhbnk7XG59XG5cbi8qKlxuICogQSByZXNvdXJjZSBjaGFuZ2VcbiAqXG4gKiBFaXRoZXIgYSBjcmVhdGlvbiwgZGVsZXRpb24gb3IgdXBkYXRlLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJlc291cmNlQ2hhbmdlIHtcbiAgLyoqXG4gICAqIExvZ2ljYWwgSUQgb2YgdGhlIHJlc291cmNlIHdoZXJlIHRoaXMgcHJvcGVydHkgY2hhbmdlIHdhcyBmb3VuZFxuICAgKi9cbiAgcmVzb3VyY2VMb2dpY2FsSWQ6IHN0cmluZztcblxuICAvKipcbiAgICogU2NydXRpbnkgdHlwZSBmb3IgdGhpcyByZXNvdXJjZSBjaGFuZ2VcbiAgICovXG4gIHNjcnV0aW55VHlwZTogUmVzb3VyY2VTY3J1dGlueVR5cGU7XG5cbiAgLyoqXG4gICAqIFRoZSB0eXBlIG9mIHRoZSByZXNvdXJjZVxuICAgKi9cbiAgcmVzb3VyY2VUeXBlOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBvbGQgcHJvcGVydGllcyB2YWx1ZSAobWlnaHQgYmUgdW5kZWZpbmVkIGluIGNhc2Ugb2YgY3JlYXRpb24pXG4gICAqL1xuICBvbGRQcm9wZXJ0aWVzPzogUHJvcGVydHlNYXA7XG5cbiAgLyoqXG4gICAqIFRoZSBuZXcgcHJvcGVydGllcyB2YWx1ZSAobWlnaHQgYmUgdW5kZWZpbmVkIGluIGNhc2Ugb2YgZGVsZXRpb24pXG4gICAqL1xuICBuZXdQcm9wZXJ0aWVzPzogUHJvcGVydHlNYXA7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSURpZmZlcmVuY2U8VmFsdWVUeXBlPiB7XG4gIHJlYWRvbmx5IG9sZFZhbHVlOiBWYWx1ZVR5cGUgfCB1bmRlZmluZWQ7XG4gIHJlYWRvbmx5IG5ld1ZhbHVlOiBWYWx1ZVR5cGUgfCB1bmRlZmluZWQ7XG4gIHJlYWRvbmx5IGlzRGlmZmVyZW50OiBib29sZWFuO1xuICByZWFkb25seSBpc0FkZGl0aW9uOiBib29sZWFuO1xuICByZWFkb25seSBpc1JlbW92YWw6IGJvb2xlYW47XG4gIHJlYWRvbmx5IGlzVXBkYXRlOiBib29sZWFuO1xufVxuXG4vKipcbiAqIE1vZGVscyBhbiBlbnRpdHkgdGhhdCBjaGFuZ2VkIGJldHdlZW4gdHdvIHZlcnNpb25zIG9mIGEgQ2xvdWRGb3JtYXRpb24gdGVtcGxhdGUuXG4gKi9cbmV4cG9ydCBjbGFzcyBEaWZmZXJlbmNlPFZhbHVlVHlwZT4gaW1wbGVtZW50cyBJRGlmZmVyZW5jZTxWYWx1ZVR5cGU+IHtcbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhpcyBpcyBhbiBhY3R1YWwgZGlmZmVyZW50IG9yIHRoZSB2YWx1ZXMgYXJlIGFjdHVhbGx5IHRoZSBzYW1lXG4gICAqXG4gICAqIGlzRGlmZmVyZW50ID0+IChpc1VwZGF0ZSB8IGlzUmVtb3ZlZCB8IGlzVXBkYXRlKVxuICAgKi9cbiAgcHVibGljIGlzRGlmZmVyZW50OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBAcGFyYW0gb2xkVmFsdWUgdGhlIG9sZCB2YWx1ZSwgY2Fubm90IGJlIGVxdWFsICh0byB0aGUgc2Vuc2Ugb2YgK2RlZXBFcXVhbCspIHRvICtuZXdWYWx1ZSsuXG4gICAqIEBwYXJhbSBuZXdWYWx1ZSB0aGUgbmV3IHZhbHVlLCBjYW5ub3QgYmUgZXF1YWwgKHRvIHRoZSBzZW5zZSBvZiArZGVlcEVxdWFsKykgdG8gK29sZFZhbHVlKy5cbiAgICovXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyByZWFkb25seSBvbGRWYWx1ZTogVmFsdWVUeXBlIHwgdW5kZWZpbmVkLCBwdWJsaWMgcmVhZG9ubHkgbmV3VmFsdWU6IFZhbHVlVHlwZSB8IHVuZGVmaW5lZCkge1xuICAgIGlmIChvbGRWYWx1ZSA9PT0gdW5kZWZpbmVkICYmIG5ld1ZhbHVlID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHRocm93IG5ldyBBc3NlcnRpb25FcnJvcih7IG1lc3NhZ2U6ICdvbGRWYWx1ZSBhbmQgbmV3VmFsdWUgYXJlIGJvdGggdW5kZWZpbmVkIScgfSk7XG4gICAgfVxuICAgIHRoaXMuaXNEaWZmZXJlbnQgPSAhZGVlcEVxdWFsKG9sZFZhbHVlLCBuZXdWYWx1ZSk7XG4gIH1cblxuICAvKiogQHJldHVybnMgK3RydWUrIGlmIHRoZSBlbGVtZW50IGlzIG5ldyB0byB0aGUgdGVtcGxhdGUuICovXG4gIHB1YmxpYyBnZXQgaXNBZGRpdGlvbigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5vbGRWYWx1ZSA9PT0gdW5kZWZpbmVkO1xuICB9XG5cbiAgLyoqIEByZXR1cm5zICt0cnVlKyBpZiB0aGUgZWxlbWVudCB3YXMgcmVtb3ZlZCBmcm9tIHRoZSB0ZW1wbGF0ZS4gKi9cbiAgcHVibGljIGdldCBpc1JlbW92YWwoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMubmV3VmFsdWUgPT09IHVuZGVmaW5lZDtcbiAgfVxuXG4gIC8qKiBAcmV0dXJucyArdHJ1ZSsgaWYgdGhlIGVsZW1lbnQgd2FzIGFscmVhZHkgaW4gdGhlIHRlbXBsYXRlIGFuZCBpcyB1cGRhdGVkLiAqL1xuICBwdWJsaWMgZ2V0IGlzVXBkYXRlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLm9sZFZhbHVlICE9PSB1bmRlZmluZWRcbiAgICAgICYmIHRoaXMubmV3VmFsdWUgIT09IHVuZGVmaW5lZDtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgUHJvcGVydHlEaWZmZXJlbmNlPFZhbHVlVHlwZT4gZXh0ZW5kcyBEaWZmZXJlbmNlPFZhbHVlVHlwZT4ge1xuICBwdWJsaWMgY2hhbmdlSW1wYWN0PzogUmVzb3VyY2VJbXBhY3Q7XG5cbiAgY29uc3RydWN0b3Iob2xkVmFsdWU6IFZhbHVlVHlwZSB8IHVuZGVmaW5lZCwgbmV3VmFsdWU6IFZhbHVlVHlwZSB8IHVuZGVmaW5lZCwgYXJnczogeyBjaGFuZ2VJbXBhY3Q/OiBSZXNvdXJjZUltcGFjdCB9KSB7XG4gICAgc3VwZXIob2xkVmFsdWUsIG5ld1ZhbHVlKTtcbiAgICB0aGlzLmNoYW5nZUltcGFjdCA9IGFyZ3MuY2hhbmdlSW1wYWN0O1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBEaWZmZXJlbmNlQ29sbGVjdGlvbjxWLCBUIGV4dGVuZHMgSURpZmZlcmVuY2U8Vj4+IHtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBkaWZmczogeyBbbG9naWNhbElkOiBzdHJpbmddOiBUIH0pIHt9XG5cbiAgcHVibGljIGdldCBjaGFuZ2VzKCk6IHsgW2xvZ2ljYWxJZDogc3RyaW5nXTogVCB9IHtcbiAgICByZXR1cm4gb25seUNoYW5nZXModGhpcy5kaWZmcyk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGRpZmZlcmVuY2VDb3VudCgpOiBudW1iZXIge1xuICAgIHJldHVybiBPYmplY3QudmFsdWVzKHRoaXMuY2hhbmdlcykubGVuZ3RoO1xuICB9XG5cbiAgcHVibGljIGdldChsb2dpY2FsSWQ6IHN0cmluZyk6IFQge1xuICAgIGNvbnN0IHJldCA9IHRoaXMuZGlmZnNbbG9naWNhbElkXTtcbiAgICBpZiAoIXJldCkgeyB0aHJvdyBuZXcgRXJyb3IoYE5vIG9iamVjdCB3aXRoIGxvZ2ljYWwgSUQgJyR7bG9naWNhbElkfSdgKTsgfVxuICAgIHJldHVybiByZXQ7XG4gIH1cblxuICBwdWJsaWMgcmVtb3ZlKGxvZ2ljYWxJZDogc3RyaW5nKTogdm9pZCB7XG4gICAgZGVsZXRlIHRoaXMuZGlmZnNbbG9naWNhbElkXTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgbG9naWNhbElkcygpOiBzdHJpbmdbXSB7XG4gICAgcmV0dXJuIE9iamVjdC5rZXlzKHRoaXMuY2hhbmdlcyk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBhIG5ldyBUZW1wbGF0ZURpZmYgd2hpY2ggb25seSBjb250YWlucyBjaGFuZ2VzIGZvciB3aGljaCBgcHJlZGljYXRlYFxuICAgKiByZXR1cm5zIGB0cnVlYC5cbiAgICovXG4gIHB1YmxpYyBmaWx0ZXIocHJlZGljYXRlOiAoZGlmZjogVCB8IHVuZGVmaW5lZCkgPT4gYm9vbGVhbik6IERpZmZlcmVuY2VDb2xsZWN0aW9uPFYsIFQ+IHtcbiAgICBjb25zdCBuZXdDaGFuZ2VzOiB7IFtsb2dpY2FsSWQ6IHN0cmluZ106IFQgfSA9IHsgfTtcbiAgICBmb3IgKGNvbnN0IGlkIG9mIE9iamVjdC5rZXlzKHRoaXMuY2hhbmdlcykpIHtcbiAgICAgIGNvbnN0IGRpZmYgPSB0aGlzLmNoYW5nZXNbaWRdO1xuXG4gICAgICBpZiAocHJlZGljYXRlKGRpZmYpKSB7XG4gICAgICAgIG5ld0NoYW5nZXNbaWRdID0gZGlmZjtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gbmV3IERpZmZlcmVuY2VDb2xsZWN0aW9uPFYsIFQ+KG5ld0NoYW5nZXMpO1xuICB9XG5cbiAgLyoqXG4gICAqIEludm9rZXMgYGNiYCBmb3IgYWxsIGNoYW5nZXMgaW4gdGhpcyBjb2xsZWN0aW9uLlxuICAgKlxuICAgKiBDaGFuZ2VzIHdpbGwgYmUgc29ydGVkIGFzIGZvbGxvd3M6XG4gICAqICAtIFJlbW92ZWRcbiAgICogIC0gQWRkZWRcbiAgICogIC0gVXBkYXRlZFxuICAgKiAgLSBPdGhlcnNcbiAgICpcbiAgICogQHBhcmFtIGNiXG4gICAqL1xuICBwdWJsaWMgZm9yRWFjaERpZmZlcmVuY2UoY2I6IChsb2dpY2FsSWQ6IHN0cmluZywgY2hhbmdlOiBUKSA9PiBhbnkpOiB2b2lkIHtcbiAgICBjb25zdCByZW1vdmVkID0gbmV3IEFycmF5PHsgbG9naWNhbElkOiBzdHJpbmc7IGNoYW5nZTogVCB9PigpO1xuICAgIGNvbnN0IGFkZGVkID0gbmV3IEFycmF5PHsgbG9naWNhbElkOiBzdHJpbmc7IGNoYW5nZTogVCB9PigpO1xuICAgIGNvbnN0IHVwZGF0ZWQgPSBuZXcgQXJyYXk8eyBsb2dpY2FsSWQ6IHN0cmluZzsgY2hhbmdlOiBUIH0+KCk7XG4gICAgY29uc3Qgb3RoZXJzID0gbmV3IEFycmF5PHsgbG9naWNhbElkOiBzdHJpbmc7IGNoYW5nZTogVCB9PigpO1xuXG4gICAgZm9yIChjb25zdCBsb2dpY2FsSWQgb2YgdGhpcy5sb2dpY2FsSWRzKSB7XG4gICAgICBjb25zdCBjaGFuZ2U6IFQgPSB0aGlzLmNoYW5nZXNbbG9naWNhbElkXSE7XG4gICAgICBpZiAoY2hhbmdlLmlzQWRkaXRpb24pIHtcbiAgICAgICAgYWRkZWQucHVzaCh7IGxvZ2ljYWxJZCwgY2hhbmdlIH0pO1xuICAgICAgfSBlbHNlIGlmIChjaGFuZ2UuaXNSZW1vdmFsKSB7XG4gICAgICAgIHJlbW92ZWQucHVzaCh7IGxvZ2ljYWxJZCwgY2hhbmdlIH0pO1xuICAgICAgfSBlbHNlIGlmIChjaGFuZ2UuaXNVcGRhdGUpIHtcbiAgICAgICAgdXBkYXRlZC5wdXNoKHsgbG9naWNhbElkLCBjaGFuZ2UgfSk7XG4gICAgICB9IGVsc2UgaWYgKGNoYW5nZS5pc0RpZmZlcmVudCkge1xuICAgICAgICBvdGhlcnMucHVzaCh7IGxvZ2ljYWxJZCwgY2hhbmdlIH0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJlbW92ZWQuZm9yRWFjaCh2ID0+IGNiKHYubG9naWNhbElkLCB2LmNoYW5nZSkpO1xuICAgIGFkZGVkLmZvckVhY2godiA9PiBjYih2LmxvZ2ljYWxJZCwgdi5jaGFuZ2UpKTtcbiAgICB1cGRhdGVkLmZvckVhY2godiA9PiBjYih2LmxvZ2ljYWxJZCwgdi5jaGFuZ2UpKTtcbiAgICBvdGhlcnMuZm9yRWFjaCh2ID0+IGNiKHYubG9naWNhbElkLCB2LmNoYW5nZSkpO1xuICB9XG59XG5cbi8qKlxuICogQXJndW1lbnRzIGV4cGVjdGVkIGJ5IHRoZSBjb25zdHJ1Y3RvciBvZiArVGVtcGxhdGVEaWZmKywgZXh0cmFjdGVkIGFzIGFuIGludGVyZmFjZSBmb3IgdGhlIHNha2VcbiAqIG9mIChyZWxhdGl2ZSkgY29uY2lzZW5lc3Mgb2YgdGhlIGNvbnN0cnVjdG9yJ3Mgc2lnbmF0dXJlLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIElUZW1wbGF0ZURpZmYge1xuICBhd3NUZW1wbGF0ZUZvcm1hdFZlcnNpb24/OiBJRGlmZmVyZW5jZTxzdHJpbmc+O1xuICBkZXNjcmlwdGlvbj86IElEaWZmZXJlbmNlPHN0cmluZz47XG4gIHRyYW5zZm9ybT86IElEaWZmZXJlbmNlPHN0cmluZz47XG5cbiAgY29uZGl0aW9ucz86IERpZmZlcmVuY2VDb2xsZWN0aW9uPENvbmRpdGlvbiwgQ29uZGl0aW9uRGlmZmVyZW5jZT47XG4gIG1hcHBpbmdzPzogRGlmZmVyZW5jZUNvbGxlY3Rpb248TWFwcGluZywgTWFwcGluZ0RpZmZlcmVuY2U+O1xuICBtZXRhZGF0YT86IERpZmZlcmVuY2VDb2xsZWN0aW9uPE1ldGFkYXRhLCBNZXRhZGF0YURpZmZlcmVuY2U+O1xuICBvdXRwdXRzPzogRGlmZmVyZW5jZUNvbGxlY3Rpb248T3V0cHV0LCBPdXRwdXREaWZmZXJlbmNlPjtcbiAgcGFyYW1ldGVycz86IERpZmZlcmVuY2VDb2xsZWN0aW9uPFBhcmFtZXRlciwgUGFyYW1ldGVyRGlmZmVyZW5jZT47XG4gIHJlc291cmNlcz86IERpZmZlcmVuY2VDb2xsZWN0aW9uPFJlc291cmNlLCBSZXNvdXJjZURpZmZlcmVuY2U+O1xuXG4gIHVua25vd24/OiBEaWZmZXJlbmNlQ29sbGVjdGlvbjxhbnksIElEaWZmZXJlbmNlPGFueT4+O1xufVxuXG5leHBvcnQgdHlwZSBDb25kaXRpb24gPSBhbnk7XG5leHBvcnQgY2xhc3MgQ29uZGl0aW9uRGlmZmVyZW5jZSBleHRlbmRzIERpZmZlcmVuY2U8Q29uZGl0aW9uPiB7XG4gIC8vIFRPRE86IGRlZmluZSBzcGVjaWZpYyBkaWZmZXJlbmNlIGF0dHJpYnV0ZXNcbn1cblxuZXhwb3J0IHR5cGUgTWFwcGluZyA9IGFueTtcbmV4cG9ydCBjbGFzcyBNYXBwaW5nRGlmZmVyZW5jZSBleHRlbmRzIERpZmZlcmVuY2U8TWFwcGluZz4ge1xuICAvLyBUT0RPOiBkZWZpbmUgc3BlY2lmaWMgZGlmZmVyZW5jZSBhdHRyaWJ1dGVzXG59XG5cbmV4cG9ydCB0eXBlIE1ldGFkYXRhID0gYW55O1xuZXhwb3J0IGNsYXNzIE1ldGFkYXRhRGlmZmVyZW5jZSBleHRlbmRzIERpZmZlcmVuY2U8TWV0YWRhdGE+IHtcbiAgLy8gVE9ETzogZGVmaW5lIHNwZWNpZmljIGRpZmZlcmVuY2UgYXR0cmlidXRlc1xufVxuXG5leHBvcnQgdHlwZSBPdXRwdXQgPSBhbnk7XG5leHBvcnQgY2xhc3MgT3V0cHV0RGlmZmVyZW5jZSBleHRlbmRzIERpZmZlcmVuY2U8T3V0cHV0PiB7XG4gIC8vIFRPRE86IGRlZmluZSBzcGVjaWZpYyBkaWZmZXJlbmNlIGF0dHJpYnV0ZXNcbn1cblxuZXhwb3J0IHR5cGUgUGFyYW1ldGVyID0gYW55O1xuZXhwb3J0IGNsYXNzIFBhcmFtZXRlckRpZmZlcmVuY2UgZXh0ZW5kcyBEaWZmZXJlbmNlPFBhcmFtZXRlcj4ge1xuICAvLyBUT0RPOiBkZWZpbmUgc3BlY2lmaWMgZGlmZmVyZW5jZSBhdHRyaWJ1dGVzXG59XG5cbmV4cG9ydCBlbnVtIFJlc291cmNlSW1wYWN0IHtcbiAgLyoqIFRoZSBleGlzdGluZyBwaHlzaWNhbCByZXNvdXJjZSB3aWxsIGJlIHVwZGF0ZWQgKi9cbiAgV0lMTF9VUERBVEUgPSAnV0lMTF9VUERBVEUnLFxuICAvKiogQSBuZXcgcGh5c2ljYWwgcmVzb3VyY2Ugd2lsbCBiZSBjcmVhdGVkICovXG4gIFdJTExfQ1JFQVRFID0gJ1dJTExfQ1JFQVRFJyxcbiAgLyoqIFRoZSBleGlzdGluZyBwaHlzaWNhbCByZXNvdXJjZSB3aWxsIGJlIHJlcGxhY2VkICovXG4gIFdJTExfUkVQTEFDRSA9ICdXSUxMX1JFUExBQ0UnLFxuICAvKiogVGhlIGV4aXN0aW5nIHBoeXNpY2FsIHJlc291cmNlIG1heSBiZSByZXBsYWNlZCAqL1xuICBNQVlfUkVQTEFDRSA9ICdNQVlfUkVQTEFDRScsXG4gIC8qKiBUaGUgZXhpc3RpbmcgcGh5c2ljYWwgcmVzb3VyY2Ugd2lsbCBiZSBkZXN0cm95ZWQgKi9cbiAgV0lMTF9ERVNUUk9ZID0gJ1dJTExfREVTVFJPWScsXG4gIC8qKiBUaGUgZXhpc3RpbmcgcGh5c2ljYWwgcmVzb3VyY2Ugd2lsbCBiZSByZW1vdmVkIGZyb20gQ2xvdWRGb3JtYXRpb24gc3VwZXJ2aXNpb24gKi9cbiAgV0lMTF9PUlBIQU4gPSAnV0lMTF9PUlBIQU4nLFxuICAvKiogVGhlIGV4aXN0aW5nIHBoeXNpY2FsIHJlc291cmNlIHdpbGwgYmUgYWRkZWQgdG8gQ2xvdWRGb3JtYXRpb24gc3VwZXJ2aXNpb24gKi9cbiAgV0lMTF9JTVBPUlQgPSAnV0lMTF9JTVBPUlQnLFxuICAvKiogVGhlcmUgaXMgbm8gY2hhbmdlIGluIHRoaXMgcmVzb3VyY2UgKi9cbiAgTk9fQ0hBTkdFID0gJ05PX0NIQU5HRScsXG59XG5cbi8qKlxuICogVGhpcyBmdW5jdGlvbiBjYW4gYmUgdXNlZCBhcyBhIHJlZHVjZXIgdG8gb2J0YWluIHRoZSByZXNvdXJjZS1sZXZlbCBpbXBhY3Qgb2YgYSBsaXN0XG4gKiBvZiBwcm9wZXJ0eS1sZXZlbCBpbXBhY3RzLlxuICogQHBhcmFtIG9uZSB0aGUgY3VycmVudCB3b3JzdCBpbXBhY3Qgc28gZmFyLlxuICogQHBhcmFtIHR3byB0aGUgbmV3IGltcGFjdCBiZWluZyBjb25zaWRlcmVkIChjYW4gYmUgdW5kZWZpbmVkLCBhcyB3ZSBtYXkgbm90IGFsd2F5cyBiZVxuICogICAgICBhYmxlIHRvIGRldGVybWluZSBzb21lIHBlcm9wZXJ0eSdzIGltcGFjdCkuXG4gKi9cbmZ1bmN0aW9uIHdvcnN0SW1wYWN0KG9uZTogUmVzb3VyY2VJbXBhY3QsIHR3bz86IFJlc291cmNlSW1wYWN0KTogUmVzb3VyY2VJbXBhY3Qge1xuICBpZiAoIXR3bykgeyByZXR1cm4gb25lOyB9XG4gIGNvbnN0IGJhZG5lc3MgPSB7XG4gICAgW1Jlc291cmNlSW1wYWN0Lk5PX0NIQU5HRV06IDAsXG4gICAgW1Jlc291cmNlSW1wYWN0LldJTExfSU1QT1JUXTogMCxcbiAgICBbUmVzb3VyY2VJbXBhY3QuV0lMTF9VUERBVEVdOiAxLFxuICAgIFtSZXNvdXJjZUltcGFjdC5XSUxMX0NSRUFURV06IDIsXG4gICAgW1Jlc291cmNlSW1wYWN0LldJTExfT1JQSEFOXTogMyxcbiAgICBbUmVzb3VyY2VJbXBhY3QuTUFZX1JFUExBQ0VdOiA0LFxuICAgIFtSZXNvdXJjZUltcGFjdC5XSUxMX1JFUExBQ0VdOiA1LFxuICAgIFtSZXNvdXJjZUltcGFjdC5XSUxMX0RFU1RST1ldOiA2LFxuICB9O1xuICByZXR1cm4gYmFkbmVzc1tvbmVdID4gYmFkbmVzc1t0d29dID8gb25lIDogdHdvO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFJlc291cmNlIHtcbiAgVHlwZTogc3RyaW5nO1xuICBQcm9wZXJ0aWVzPzogeyBbbmFtZTogc3RyaW5nXTogYW55IH07XG5cbiAgW2tleTogc3RyaW5nXTogYW55O1xufVxuXG4vKipcbiAqIENoYW5nZSB0byBhIHNpbmdsZSByZXNvdXJjZSBiZXR3ZWVuIHR3byBDbG91ZEZvcm1hdGlvbiB0ZW1wbGF0ZXNcbiAqXG4gKiBUaGlzIGNsYXNzIGNhbiBiZSBtdXRhdGVkIGFmdGVyIGNvbnN0cnVjdGlvbi5cbiAqL1xuZXhwb3J0IGNsYXNzIFJlc291cmNlRGlmZmVyZW5jZSBpbXBsZW1lbnRzIElEaWZmZXJlbmNlPFJlc291cmNlPiB7XG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoaXMgcmVzb3VyY2Ugd2FzIGFkZGVkXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgaXNBZGRpdGlvbjogYm9vbGVhbjtcblxuICAvKipcbiAgICogV2hldGhlciB0aGlzIHJlc291cmNlIHdhcyByZW1vdmVkXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgaXNSZW1vdmFsOiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoaXMgcmVzb3VyY2Ugd2FzIGltcG9ydGVkXG4gICAqL1xuICBwdWJsaWMgaXNJbXBvcnQ/OiBib29sZWFuO1xuXG4gIC8qKiBQcm9wZXJ0eS1sZXZlbCBjaGFuZ2VzIG9uIHRoZSByZXNvdXJjZSAqL1xuICBwcml2YXRlIHJlYWRvbmx5IHByb3BlcnR5RGlmZnM6IHsgW2tleTogc3RyaW5nXTogUHJvcGVydHlEaWZmZXJlbmNlPGFueT4gfTtcblxuICAvKiogQ2hhbmdlcyB0byBub24tcHJvcGVydHkgbGV2ZWwgYXR0cmlidXRlcyBvZiB0aGUgcmVzb3VyY2UgKi9cbiAgcHJpdmF0ZSByZWFkb25seSBvdGhlckRpZmZzOiB7IFtrZXk6IHN0cmluZ106IERpZmZlcmVuY2U8YW55PiB9O1xuXG4gIC8qKiBUaGUgcmVzb3VyY2UgdHlwZSAob3Igb2xkIGFuZCBuZXcgdHlwZSBpZiBpdCBoYXMgY2hhbmdlZCkgKi9cbiAgcHJpdmF0ZSByZWFkb25seSByZXNvdXJjZVR5cGVzOiB7IHJlYWRvbmx5IG9sZFR5cGU/OiBzdHJpbmc7IHJlYWRvbmx5IG5ld1R5cGU/OiBzdHJpbmcgfTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgcmVhZG9ubHkgb2xkVmFsdWU6IFJlc291cmNlIHwgdW5kZWZpbmVkLFxuICAgIHB1YmxpYyByZWFkb25seSBuZXdWYWx1ZTogUmVzb3VyY2UgfCB1bmRlZmluZWQsXG4gICAgYXJnczoge1xuICAgICAgcmVzb3VyY2VUeXBlOiB7IG9sZFR5cGU/OiBzdHJpbmc7IG5ld1R5cGU/OiBzdHJpbmcgfTtcbiAgICAgIHByb3BlcnR5RGlmZnM6IHsgW2tleTogc3RyaW5nXTogUHJvcGVydHlEaWZmZXJlbmNlPGFueT4gfTtcbiAgICAgIG90aGVyRGlmZnM6IHsgW2tleTogc3RyaW5nXTogRGlmZmVyZW5jZTxhbnk+IH07XG4gICAgfSxcbiAgKSB7XG4gICAgdGhpcy5yZXNvdXJjZVR5cGVzID0gYXJncy5yZXNvdXJjZVR5cGU7XG4gICAgdGhpcy5wcm9wZXJ0eURpZmZzID0gYXJncy5wcm9wZXJ0eURpZmZzO1xuICAgIHRoaXMub3RoZXJEaWZmcyA9IGFyZ3Mub3RoZXJEaWZmcztcblxuICAgIHRoaXMuaXNBZGRpdGlvbiA9IG9sZFZhbHVlID09PSB1bmRlZmluZWQ7XG4gICAgdGhpcy5pc1JlbW92YWwgPSBuZXdWYWx1ZSA9PT0gdW5kZWZpbmVkO1xuICAgIHRoaXMuaXNJbXBvcnQgPSB1bmRlZmluZWQ7XG4gIH1cblxuICBwdWJsaWMgZ2V0IG9sZFByb3BlcnRpZXMoKTogUHJvcGVydHlNYXAgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLm9sZFZhbHVlICYmIHRoaXMub2xkVmFsdWUuUHJvcGVydGllcztcbiAgfVxuXG4gIHB1YmxpYyBnZXQgbmV3UHJvcGVydGllcygpOiBQcm9wZXJ0eU1hcCB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMubmV3VmFsdWUgJiYgdGhpcy5uZXdWYWx1ZS5Qcm9wZXJ0aWVzO1xuICB9XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhpcyByZXNvdXJjZSB3YXMgbW9kaWZpZWQgYXQgYWxsXG4gICAqL1xuICBwdWJsaWMgZ2V0IGlzRGlmZmVyZW50KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmRpZmZlcmVuY2VDb3VudCA+IDAgfHwgdGhpcy5vbGRSZXNvdXJjZVR5cGUgIT09IHRoaXMubmV3UmVzb3VyY2VUeXBlO1xuICB9XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhlIHJlc291cmNlIHdhcyB1cGRhdGVkIGluLXBsYWNlXG4gICAqL1xuICBwdWJsaWMgZ2V0IGlzVXBkYXRlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmlzRGlmZmVyZW50ICYmICF0aGlzLmlzQWRkaXRpb24gJiYgIXRoaXMuaXNSZW1vdmFsO1xuICB9XG5cbiAgcHVibGljIGdldCBvbGRSZXNvdXJjZVR5cGUoKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5yZXNvdXJjZVR5cGVzLm9sZFR5cGU7XG4gIH1cblxuICBwdWJsaWMgZ2V0IG5ld1Jlc291cmNlVHlwZSgpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLnJlc291cmNlVHlwZXMubmV3VHlwZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBbGwgYWN0dWFsIHByb3BlcnR5IHVwZGF0ZXNcbiAgICovXG4gIHB1YmxpYyBnZXQgcHJvcGVydHlVcGRhdGVzKCk6IHsgW2tleTogc3RyaW5nXTogUHJvcGVydHlEaWZmZXJlbmNlPGFueT4gfSB7XG4gICAgcmV0dXJuIG9ubHlDaGFuZ2VzKHRoaXMucHJvcGVydHlEaWZmcyk7XG4gIH1cblxuICAvKipcbiAgICogQWxsIGFjdHVhbCBcIm90aGVyXCIgdXBkYXRlc1xuICAgKi9cbiAgcHVibGljIGdldCBvdGhlckNoYW5nZXMoKTogeyBba2V5OiBzdHJpbmddOiBEaWZmZXJlbmNlPGFueT4gfSB7XG4gICAgcmV0dXJuIG9ubHlDaGFuZ2VzKHRoaXMub3RoZXJEaWZmcyk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJuIHdoZXRoZXIgdGhlIHJlc291cmNlIHR5cGUgd2FzIGNoYW5nZWQgaW4gdGhpcyBkaWZmXG4gICAqXG4gICAqIFRoaXMgaXMgbm90IGEgdmFsaWQgb3BlcmF0aW9uIGluIENsb3VkRm9ybWF0aW9uIGJ1dCB0byBiZSBkZWZlbnNpdmUgd2UncmUgZ29pbmdcbiAgICogdG8gYmUgYXdhcmUgb2YgaXQgYW55d2F5LlxuICAgKi9cbiAgcHVibGljIGdldCByZXNvdXJjZVR5cGVDaGFuZ2VkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAodGhpcy5yZXNvdXJjZVR5cGVzLm9sZFR5cGUgIT09IHVuZGVmaW5lZFxuICAgICAgICAmJiB0aGlzLnJlc291cmNlVHlwZXMubmV3VHlwZSAhPT0gdW5kZWZpbmVkXG4gICAgICAgICYmIHRoaXMucmVzb3VyY2VUeXBlcy5vbGRUeXBlICE9PSB0aGlzLnJlc291cmNlVHlwZXMubmV3VHlwZSk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJuIHRoZSByZXNvdXJjZSB0eXBlIGlmIGl0IHdhcyB1bmNoYW5nZWRcbiAgICpcbiAgICogSWYgdGhlIHJlc291cmNlIHR5cGUgd2FzIGNoYW5nZWQsIGl0J3MgYW4gZXJyb3IgdG8gY2FsbCB0aGlzLlxuICAgKi9cbiAgcHVibGljIGdldCByZXNvdXJjZVR5cGUoKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICBpZiAodGhpcy5yZXNvdXJjZVR5cGVDaGFuZ2VkKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0Nhbm5vdCBnZXQgLnJlc291cmNlVHlwZSwgYmVjYXVzZSB0aGUgdHlwZSB3YXMgY2hhbmdlZCcpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5yZXNvdXJjZVR5cGVzLm9sZFR5cGUgfHwgdGhpcy5yZXNvdXJjZVR5cGVzLm5ld1R5cGU7XG4gIH1cblxuICAvKipcbiAgICogUmVwbGFjZSBhIFByb3BlcnR5Q2hhbmdlIGluIHRoaXMgb2JqZWN0XG4gICAqXG4gICAqIFRoaXMgYWZmZWN0cyB0aGUgcHJvcGVydHkgZGlmZiBhcyBpdCBpcyBzdW1tYXJpemVkIHRvIHVzZXJzLCBidXQgaXQgRE9FU1xuICAgKiBOT1QgYWZmZWN0IGVpdGhlciB0aGUgXCJvbGRWYWx1ZVwiIG9yIFwibmV3VmFsdWVcIiB2YWx1ZXM7IHRob3NlIHN0aWxsIGNvbnRhaW5cbiAgICogdGhlIGFjdHVhbCB0ZW1wbGF0ZSB2YWx1ZXMgYXMgcHJvdmlkZWQgYnkgdGhlIHVzZXIgKHRoZXkgbWlnaHQgc3RpbGwgYmVcbiAgICogdXNlZCBmb3IgZG93bnN0cmVhbSBwcm9jZXNzaW5nKS5cbiAgICovXG4gIHB1YmxpYyBzZXRQcm9wZXJ0eUNoYW5nZShwcm9wZXJ0eU5hbWU6IHN0cmluZywgY2hhbmdlOiBQcm9wZXJ0eURpZmZlcmVuY2U8YW55Pikge1xuICAgIHRoaXMucHJvcGVydHlEaWZmc1twcm9wZXJ0eU5hbWVdID0gY2hhbmdlO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlcGxhY2UgYSBPdGhlckNoYW5nZSBpbiB0aGlzIG9iamVjdFxuICAgKlxuICAgKiBUaGlzIGFmZmVjdHMgdGhlIHByb3BlcnR5IGRpZmYgYXMgaXQgaXMgc3VtbWFyaXplZCB0byB1c2VycywgYnV0IGl0IERPRVNcbiAgICogTk9UIGFmZmVjdCBlaXRoZXIgdGhlIFwib2xkVmFsdWVcIiBvciBcIm5ld1ZhbHVlXCIgdmFsdWVzOyB0aG9zZSBzdGlsbCBjb250YWluXG4gICAqIHRoZSBhY3R1YWwgdGVtcGxhdGUgdmFsdWVzIGFzIHByb3ZpZGVkIGJ5IHRoZSB1c2VyICh0aGV5IG1pZ2h0IHN0aWxsIGJlXG4gICAqIHVzZWQgZm9yIGRvd25zdHJlYW0gcHJvY2Vzc2luZykuXG4gICAqL1xuICBwdWJsaWMgc2V0T3RoZXJDaGFuZ2Uob3RoZXJOYW1lOiBzdHJpbmcsIGNoYW5nZTogUHJvcGVydHlEaWZmZXJlbmNlPGFueT4pIHtcbiAgICB0aGlzLm90aGVyRGlmZnNbb3RoZXJOYW1lXSA9IGNoYW5nZTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgY2hhbmdlSW1wYWN0KCk6IFJlc291cmNlSW1wYWN0IHtcbiAgICBpZiAodGhpcy5pc0ltcG9ydCkge1xuICAgICAgcmV0dXJuIFJlc291cmNlSW1wYWN0LldJTExfSU1QT1JUO1xuICAgIH1cbiAgICAvLyBDaGVjayB0aGUgVHlwZSBmaXJzdFxuICAgIGlmICh0aGlzLnJlc291cmNlVHlwZXMub2xkVHlwZSAhPT0gdGhpcy5yZXNvdXJjZVR5cGVzLm5ld1R5cGUpIHtcbiAgICAgIGlmICh0aGlzLnJlc291cmNlVHlwZXMub2xkVHlwZSA9PT0gdW5kZWZpbmVkKSB7IHJldHVybiBSZXNvdXJjZUltcGFjdC5XSUxMX0NSRUFURTsgfVxuICAgICAgaWYgKHRoaXMucmVzb3VyY2VUeXBlcy5uZXdUeXBlID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMub2xkVmFsdWUhLkRlbGV0aW9uUG9saWN5ID09PSAnUmV0YWluJ1xuICAgICAgICAgID8gUmVzb3VyY2VJbXBhY3QuV0lMTF9PUlBIQU5cbiAgICAgICAgICA6IFJlc291cmNlSW1wYWN0LldJTExfREVTVFJPWTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBSZXNvdXJjZUltcGFjdC5XSUxMX1JFUExBQ0U7XG4gICAgfVxuXG4gICAgLy8gQmFzZSBpbXBhY3QgKGJlZm9yZSB3ZSBtaXggaW4gdGhlIHdvcnN0IG9mIHRoZSBwcm9wZXJ0eSBpbXBhY3RzKTtcbiAgICAvLyBXSUxMX1VQREFURSBpZiB3ZSBoYXZlIFwib3RoZXJcIiBjaGFuZ2VzLCBOT19DSEFOR0UgaWYgdGhlcmUgYXJlIG5vIFwib3RoZXJcIiBjaGFuZ2VzLlxuICAgIGNvbnN0IGJhc2VJbXBhY3QgPSBPYmplY3Qua2V5cyh0aGlzLm90aGVyQ2hhbmdlcykubGVuZ3RoID4gMCA/IFJlc291cmNlSW1wYWN0LldJTExfVVBEQVRFIDogUmVzb3VyY2VJbXBhY3QuTk9fQ0hBTkdFO1xuXG4gICAgcmV0dXJuIE9iamVjdC52YWx1ZXModGhpcy5wcm9wZXJ0eURpZmZzKVxuICAgICAgLm1hcChlbHQgPT4gZWx0LmNoYW5nZUltcGFjdClcbiAgICAgIC5yZWR1Y2Uod29yc3RJbXBhY3QsIGJhc2VJbXBhY3QpO1xuICB9XG5cbiAgLyoqXG4gICAqIENvdW50IG9mIGFjdHVhbCBkaWZmZXJlbmNlcyAobm90IG9mIGVsZW1lbnRzKVxuICAgKi9cbiAgcHVibGljIGdldCBkaWZmZXJlbmNlQ291bnQoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gT2JqZWN0LnZhbHVlcyh0aGlzLnByb3BlcnR5VXBkYXRlcykubGVuZ3RoXG4gICAgICArIE9iamVjdC52YWx1ZXModGhpcy5vdGhlckNoYW5nZXMpLmxlbmd0aDtcbiAgfVxuXG4gIC8qKlxuICAgKiBJbnZva2UgYSBjYWxsYmFjayBmb3IgZWFjaCBhY3R1YWwgZGlmZmVyZW5jZVxuICAgKi9cbiAgcHVibGljIGZvckVhY2hEaWZmZXJlbmNlKGNiOiAodHlwZTogJ1Byb3BlcnR5JyB8ICdPdGhlcicsIG5hbWU6IHN0cmluZywgdmFsdWU6IERpZmZlcmVuY2U8YW55PiB8IFByb3BlcnR5RGlmZmVyZW5jZTxhbnk+KSA9PiBhbnkpIHtcbiAgICBmb3IgKGNvbnN0IGtleSBvZiBPYmplY3Qua2V5cyh0aGlzLnByb3BlcnR5VXBkYXRlcykuc29ydCgpKSB7XG4gICAgICBjYignUHJvcGVydHknLCBrZXksIHRoaXMucHJvcGVydHlVcGRhdGVzW2tleV0pO1xuICAgIH1cbiAgICBmb3IgKGNvbnN0IGtleSBvZiBPYmplY3Qua2V5cyh0aGlzLm90aGVyQ2hhbmdlcykuc29ydCgpKSB7XG4gICAgICBjYignT3RoZXInLCBrZXksIHRoaXMub3RoZXJEaWZmc1trZXldKTtcbiAgICB9XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzUHJvcGVydHlEaWZmZXJlbmNlPFQ+KGRpZmY6IERpZmZlcmVuY2U8VD4pOiBkaWZmIGlzIFByb3BlcnR5RGlmZmVyZW5jZTxUPiB7XG4gIHJldHVybiAoZGlmZiBhcyBQcm9wZXJ0eURpZmZlcmVuY2U8VD4pLmNoYW5nZUltcGFjdCAhPT0gdW5kZWZpbmVkO1xufVxuXG4vKipcbiAqIEZpbHRlciBhIG1hcCBvZiBJRGlmZmVyZW5jZXMgZG93biB0byBvbmx5IHJldGFpbiB0aGUgYWN0dWFsIGNoYW5nZXNcbiAqL1xuZnVuY3Rpb24gb25seUNoYW5nZXM8ViwgVCBleHRlbmRzIElEaWZmZXJlbmNlPFY+Pih4czoge1trZXk6IHN0cmluZ106IFR9KToge1trZXk6IHN0cmluZ106IFR9IHtcbiAgY29uc3QgcmV0OiB7IFtrZXk6IHN0cmluZ106IFQgfSA9IHt9O1xuICBmb3IgKGNvbnN0IFtrZXksIGRpZmZdIG9mIE9iamVjdC5lbnRyaWVzKHhzKSkge1xuICAgIGlmIChkaWZmLmlzRGlmZmVyZW50KSB7XG4gICAgICByZXRba2V5XSA9IGRpZmY7XG4gICAgfVxuICB9XG4gIHJldHVybiByZXQ7XG59XG4iXX0=","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.loadResourceModel = exports.mangleLikeCloudFormation = exports.unionOf = exports.diffKeyedEntities = exports.deepEqual = void 0;\nconst aws_service_spec_1 = require(\"@aws-cdk/aws-service-spec\");\n/**\n * Compares two objects for equality, deeply. The function handles arguments that are\n * +null+, +undefined+, arrays and objects. For objects, the function will not take the\n * object prototype into account for the purpose of the comparison, only the values of\n * properties reported by +Object.keys+.\n *\n * If both operands can be parsed to equivalent numbers, will return true.\n * This makes diff consistent with CloudFormation, where a numeric 10 and a literal \"10\"\n * are considered equivalent.\n *\n * @param lvalue the left operand of the equality comparison.\n * @param rvalue the right operand of the equality comparison.\n *\n * @returns +true+ if both +lvalue+ and +rvalue+ are equivalent to each other.\n */\nfunction deepEqual(lvalue, rvalue) {\n if (lvalue === rvalue) {\n return true;\n }\n // CloudFormation allows passing strings into boolean-typed fields\n if (((typeof lvalue === 'string' && typeof rvalue === 'boolean') ||\n (typeof lvalue === 'boolean' && typeof rvalue === 'string')) &&\n lvalue.toString() === rvalue.toString()) {\n return true;\n }\n // allows a numeric 10 and a literal \"10\" to be equivalent;\n // this is consistent with CloudFormation.\n if ((typeof lvalue === 'string' || typeof rvalue === 'string') &&\n safeParseFloat(lvalue) === safeParseFloat(rvalue)) {\n return true;\n }\n if (typeof lvalue !== typeof rvalue) {\n return false;\n }\n if (Array.isArray(lvalue) !== Array.isArray(rvalue)) {\n return false;\n }\n if (Array.isArray(lvalue) /* && Array.isArray(rvalue) */) {\n if (lvalue.length !== rvalue.length) {\n return false;\n }\n for (let i = 0; i < lvalue.length; i++) {\n if (!deepEqual(lvalue[i], rvalue[i])) {\n return false;\n }\n }\n return true;\n }\n if (typeof lvalue === 'object' /* && typeof rvalue === 'object' */) {\n if (lvalue === null || rvalue === null) {\n // If both were null, they'd have been ===\n return false;\n }\n const keys = Object.keys(lvalue);\n if (keys.length !== Object.keys(rvalue).length) {\n return false;\n }\n for (const key of keys) {\n if (!rvalue.hasOwnProperty(key)) {\n return false;\n }\n if (key === 'DependsOn') {\n if (!dependsOnEqual(lvalue[key], rvalue[key])) {\n return false;\n }\n ;\n // check differences other than `DependsOn`\n continue;\n }\n if (!deepEqual(lvalue[key], rvalue[key])) {\n return false;\n }\n }\n return true;\n }\n // Neither object, nor array: I deduce this is primitive type\n // Primitive type and not ===, so I deduce not deepEqual\n return false;\n}\nexports.deepEqual = deepEqual;\n/**\n * Compares two arguments to DependsOn for equality.\n *\n * @param lvalue the left operand of the equality comparison.\n * @param rvalue the right operand of the equality comparison.\n *\n * @returns +true+ if both +lvalue+ and +rvalue+ are equivalent to each other.\n */\nfunction dependsOnEqual(lvalue, rvalue) {\n // allows ['Value'] and 'Value' to be equal\n if (Array.isArray(lvalue) !== Array.isArray(rvalue)) {\n const array = Array.isArray(lvalue) ? lvalue : rvalue;\n const nonArray = Array.isArray(lvalue) ? rvalue : lvalue;\n if (array.length === 1 && deepEqual(array[0], nonArray)) {\n return true;\n }\n return false;\n }\n // allows arrays passed to DependsOn to be equivalent irrespective of element order\n if (Array.isArray(lvalue) && Array.isArray(rvalue)) {\n if (lvalue.length !== rvalue.length) {\n return false;\n }\n for (let i = 0; i < lvalue.length; i++) {\n for (let j = 0; j < lvalue.length; j++) {\n if ((!deepEqual(lvalue[i], rvalue[j])) && (j === lvalue.length - 1)) {\n return false;\n }\n break;\n }\n }\n return true;\n }\n return false;\n}\n/**\n * Produce the differences between two maps, as a map, using a specified diff function.\n *\n * @param oldValue the old map.\n * @param newValue the new map.\n * @param elementDiff the diff function.\n *\n * @returns a map representing the differences between +oldValue+ and +newValue+.\n */\nfunction diffKeyedEntities(oldValue, newValue, elementDiff) {\n const result = {};\n for (const logicalId of unionOf(Object.keys(oldValue || {}), Object.keys(newValue || {}))) {\n const oldElement = oldValue && oldValue[logicalId];\n const newElement = newValue && newValue[logicalId];\n if (oldElement === undefined && newElement === undefined) {\n // Shouldn't happen in reality, but may happen in tests. Skip.\n continue;\n }\n result[logicalId] = elementDiff(oldElement, newElement, logicalId);\n }\n return result;\n}\nexports.diffKeyedEntities = diffKeyedEntities;\n/**\n * Computes the union of two sets of strings.\n *\n * @param lv the left set of strings.\n * @param rv the right set of strings.\n *\n * @returns a new array containing all elemebts from +lv+ and +rv+, with no duplicates.\n */\nfunction unionOf(lv, rv) {\n const result = new Set(lv);\n for (const v of rv) {\n result.add(v);\n }\n return new Array(...result);\n}\nexports.unionOf = unionOf;\n/**\n * GetStackTemplate flattens any codepoint greater than \"\\u7f\" to \"?\". This is\n * true even for codepoints in the supplemental planes which are represented\n * in JS as surrogate pairs, all the way up to \"\\u{10ffff}\".\n *\n * This function implements the same mangling in order to provide diagnostic\n * information in `cdk diff`.\n */\nfunction mangleLikeCloudFormation(payload) {\n return payload.replace(/[\\u{80}-\\u{10ffff}]/gu, '?');\n}\nexports.mangleLikeCloudFormation = mangleLikeCloudFormation;\n/**\n * A parseFloat implementation that does the right thing for\n * strings like '0.0.0'\n * (for which JavaScript's parseFloat() returns 0).\n * We return NaN for all of these strings that do not represent numbers,\n * and so comparing them fails,\n * and doesn't short-circuit the diff logic.\n */\nfunction safeParseFloat(str) {\n return Number(str);\n}\n/**\n * Lazily load the service spec database and cache the loaded db\n*/\nlet DATABASE;\nfunction database() {\n if (!DATABASE) {\n DATABASE = (0, aws_service_spec_1.loadAwsServiceSpecSync)();\n }\n return DATABASE;\n}\n/**\n * Load a Resource model from the Service Spec Database\n *\n * The database is loaded lazily and cached across multiple calls to `loadResourceModel`.\n */\nfunction loadResourceModel(type) {\n return database().lookup('resource', 'cloudFormationType', 'equals', type)[0];\n}\nexports.loadResourceModel = loadResourceModel;\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInV0aWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsZ0VBQW1FO0FBR25FOzs7Ozs7Ozs7Ozs7OztHQWNHO0FBQ0gsU0FBZ0IsU0FBUyxDQUFDLE1BQVcsRUFBRSxNQUFXO0lBQ2hELElBQUksTUFBTSxLQUFLLE1BQU0sRUFBRSxDQUFDO1FBQUMsT0FBTyxJQUFJLENBQUM7SUFBQyxDQUFDO0lBQ3ZDLGtFQUFrRTtJQUNsRSxJQUFJLENBQUMsQ0FBQyxPQUFPLE1BQU0sS0FBSyxRQUFRLElBQUksT0FBTyxNQUFNLEtBQUssU0FBUyxDQUFDO1FBQzVELENBQUMsT0FBTyxNQUFNLEtBQUssU0FBUyxJQUFJLE9BQU8sTUFBTSxLQUFLLFFBQVEsQ0FBQyxDQUFDO1FBQzVELE1BQU0sQ0FBQyxRQUFRLEVBQUUsS0FBSyxNQUFNLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQztRQUM1QyxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFDRCwyREFBMkQ7SUFDM0QsMENBQTBDO0lBQzFDLElBQUksQ0FBQyxPQUFPLE1BQU0sS0FBSyxRQUFRLElBQUksT0FBTyxNQUFNLEtBQUssUUFBUSxDQUFDO1FBQzFELGNBQWMsQ0FBQyxNQUFNLENBQUMsS0FBSyxjQUFjLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztRQUN0RCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFDRCxJQUFJLE9BQU8sTUFBTSxLQUFLLE9BQU8sTUFBTSxFQUFFLENBQUM7UUFBQyxPQUFPLEtBQUssQ0FBQztJQUFDLENBQUM7SUFDdEQsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxLQUFLLEtBQUssQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztRQUFDLE9BQU8sS0FBSyxDQUFDO0lBQUMsQ0FBQztJQUN0RSxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsOEJBQThC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QVEsRUFBRSxDQUFDLE1BQU0sQ0FBQyxVQUFVLEVBQUUsb0JBQW9CLEVBQUUsUUFBUSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ2hGLENBQUM7QUFGRCw4Q0FFQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGxvYWRBd3NTZXJ2aWNlU3BlY1N5bmMgfSBmcm9tICdAYXdzLWNkay9hd3Mtc2VydmljZS1zcGVjJztcbmltcG9ydCB7IFJlc291cmNlLCBTcGVjRGF0YWJhc2UgfSBmcm9tICdAYXdzLWNkay9zZXJ2aWNlLXNwZWMtdHlwZXMnO1xuXG4vKipcbiAqIENvbXBhcmVzIHR3byBvYmplY3RzIGZvciBlcXVhbGl0eSwgZGVlcGx5LiBUaGUgZnVuY3Rpb24gaGFuZGxlcyBhcmd1bWVudHMgdGhhdCBhcmVcbiAqICtudWxsKywgK3VuZGVmaW5lZCssIGFycmF5cyBhbmQgb2JqZWN0cy4gRm9yIG9iamVjdHMsIHRoZSBmdW5jdGlvbiB3aWxsIG5vdCB0YWtlIHRoZVxuICogb2JqZWN0IHByb3RvdHlwZSBpbnRvIGFjY291bnQgZm9yIHRoZSBwdXJwb3NlIG9mIHRoZSBjb21wYXJpc29uLCBvbmx5IHRoZSB2YWx1ZXMgb2ZcbiAqIHByb3BlcnRpZXMgcmVwb3J0ZWQgYnkgK09iamVjdC5rZXlzKy5cbiAqXG4gKiBJZiBib3RoIG9wZXJhbmRzIGNhbiBiZSBwYXJzZWQgdG8gZXF1aXZhbGVudCBudW1iZXJzLCB3aWxsIHJldHVybiB0cnVlLlxuICogVGhpcyBtYWtlcyBkaWZmIGNvbnNpc3RlbnQgd2l0aCBDbG91ZEZvcm1hdGlvbiwgd2hlcmUgYSBudW1lcmljIDEwIGFuZCBhIGxpdGVyYWwgXCIxMFwiXG4gKiBhcmUgY29uc2lkZXJlZCBlcXVpdmFsZW50LlxuICpcbiAqIEBwYXJhbSBsdmFsdWUgdGhlIGxlZnQgb3BlcmFuZCBvZiB0aGUgZXF1YWxpdHkgY29tcGFyaXNvbi5cbiAqIEBwYXJhbSBydmFsdWUgdGhlIHJpZ2h0IG9wZXJhbmQgb2YgdGhlIGVxdWFsaXR5IGNvbXBhcmlzb24uXG4gKlxuICogQHJldHVybnMgK3RydWUrIGlmIGJvdGggK2x2YWx1ZSsgYW5kICtydmFsdWUrIGFyZSBlcXVpdmFsZW50IHRvIGVhY2ggb3RoZXIuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkZWVwRXF1YWwobHZhbHVlOiBhbnksIHJ2YWx1ZTogYW55KTogYm9vbGVhbiB7XG4gIGlmIChsdmFsdWUgPT09IHJ2YWx1ZSkgeyByZXR1cm4gdHJ1ZTsgfVxuICAvLyBDbG91ZEZvcm1hdGlvbiBhbGxvd3MgcGFzc2luZyBzdHJpbmdzIGludG8gYm9vbGVhbi10eXBlZCBmaWVsZHNcbiAgaWYgKCgodHlwZW9mIGx2YWx1ZSA9PT0gJ3N0cmluZycgJiYgdHlwZW9mIHJ2YWx1ZSA9PT0gJ2Jvb2xlYW4nKSB8fFxuICAgICAgKHR5cGVvZiBsdmFsdWUgPT09ICdib29sZWFuJyAmJiB0eXBlb2YgcnZhbHVlID09PSAnc3RyaW5nJykpICYmXG4gICAgICBsdmFsdWUudG9TdHJpbmcoKSA9PT0gcnZhbHVlLnRvU3RyaW5nKCkpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuICAvLyBhbGxvd3MgYSBudW1lcmljIDEwIGFuZCBhIGxpdGVyYWwgXCIxMFwiIHRvIGJlIGVxdWl2YWxlbnQ7XG4gIC8vIHRoaXMgaXMgY29uc2lzdGVudCB3aXRoIENsb3VkRm9ybWF0aW9uLlxuICBpZiAoKHR5cGVvZiBsdmFsdWUgPT09ICdzdHJpbmcnIHx8IHR5cGVvZiBydmFsdWUgPT09ICdzdHJpbmcnKSAmJlxuICAgICAgc2FmZVBhcnNlRmxvYXQobHZhbHVlKSA9PT0gc2FmZVBhcnNlRmxvYXQocnZhbHVlKSkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG4gIGlmICh0eXBlb2YgbHZhbHVlICE9PSB0eXBlb2YgcnZhbHVlKSB7IHJldHVybiBmYWxzZTsgfVxuICBpZiAoQXJyYXkuaXNBcnJheShsdmFsdWUpICE9PSBBcnJheS5pc0FycmF5KHJ2YWx1ZSkpIHsgcmV0dXJuIGZhbHNlOyB9XG4gIGlmIChBcnJheS5pc0FycmF5KGx2YWx1ZSkgLyogJiYgQXJyYXkuaXNBcnJheShydmFsdWUpICovKSB7XG4gICAgaWYgKGx2YWx1ZS5sZW5ndGggIT09IHJ2YWx1ZS5sZW5ndGgpIHsgcmV0dXJuIGZhbHNlOyB9XG4gICAgZm9yIChsZXQgaSA9IDAgOyBpIDwgbHZhbHVlLmxlbmd0aCA7IGkrKykge1xuICAgICAgaWYgKCFkZWVwRXF1YWwobHZhbHVlW2ldLCBydmFsdWVbaV0pKSB7IHJldHVybiBmYWxzZTsgfVxuICAgIH1cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuICBpZiAodHlwZW9mIGx2YWx1ZSA9PT0gJ29iamVjdCcgLyogJiYgdHlwZW9mIHJ2YWx1ZSA9PT0gJ29iamVjdCcgKi8pIHtcbiAgICBpZiAobHZhbHVlID09PSBudWxsIHx8IHJ2YWx1ZSA9PT0gbnVsbCkge1xuICAgICAgLy8gSWYgYm90aCB3ZXJlIG51bGwsIHRoZXknZCBoYXZlIGJlZW4gPT09XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGNvbnN0IGtleXMgPSBPYmplY3Qua2V5cyhsdmFsdWUpO1xuICAgIGlmIChrZXlzLmxlbmd0aCAhPT0gT2JqZWN0LmtleXMocnZhbHVlKS5sZW5ndGgpIHsgcmV0dXJuIGZhbHNlOyB9XG4gICAgZm9yIChjb25zdCBrZXkgb2Yga2V5cykge1xuICAgICAgaWYgKCFydmFsdWUuaGFzT3duUHJvcGVydHkoa2V5KSkgeyByZXR1cm4gZmFsc2U7IH1cbiAgICAgIGlmIChrZXkgPT09ICdEZXBlbmRzT24nKSB7XG4gICAgICAgIGlmICghZGVwZW5kc09uRXF1YWwobHZhbHVlW2tleV0sIHJ2YWx1ZVtrZXldKSkgeyByZXR1cm4gZmFsc2U7IH07XG4gICAgICAgIC8vIGNoZWNrIGRpZmZlcmVuY2VzIG90aGVyIHRoYW4gYERlcGVuZHNPbmBcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG4gICAgICBpZiAoIWRlZXBFcXVhbChsdmFsdWVba2V5XSwgcnZhbHVlW2tleV0pKSB7IHJldHVybiBmYWxzZTsgfVxuICAgIH1cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuICAvLyBOZWl0aGVyIG9iamVjdCwgbm9yIGFycmF5OiBJIGRlZHVjZSB0aGlzIGlzIHByaW1pdGl2ZSB0eXBlXG4gIC8vIFByaW1pdGl2ZSB0eXBlIGFuZCBub3QgPT09LCBzbyBJIGRlZHVjZSBub3QgZGVlcEVxdWFsXG4gIHJldHVybiBmYWxzZTtcbn1cblxuLyoqXG4gKiBDb21wYXJlcyB0d28gYXJndW1lbnRzIHRvIERlcGVuZHNPbiBmb3IgZXF1YWxpdHkuXG4gKlxuICogQHBhcmFtIGx2YWx1ZSB0aGUgbGVmdCBvcGVyYW5kIG9mIHRoZSBlcXVhbGl0eSBjb21wYXJpc29uLlxuICogQHBhcmFtIHJ2YWx1ZSB0aGUgcmlnaHQgb3BlcmFuZCBvZiB0aGUgZXF1YWxpdHkgY29tcGFyaXNvbi5cbiAqXG4gKiBAcmV0dXJucyArdHJ1ZSsgaWYgYm90aCArbHZhbHVlKyBhbmQgK3J2YWx1ZSsgYXJlIGVxdWl2YWxlbnQgdG8gZWFjaCBvdGhlci5cbiAqL1xuZnVuY3Rpb24gZGVwZW5kc09uRXF1YWwobHZhbHVlOiBhbnksIHJ2YWx1ZTogYW55KTogYm9vbGVhbiB7XG4gIC8vIGFsbG93cyBbJ1ZhbHVlJ10gYW5kICdWYWx1ZScgdG8gYmUgZXF1YWxcbiAgaWYgKEFycmF5LmlzQXJyYXkobHZhbHVlKSAhPT0gQXJyYXkuaXNBcnJheShydmFsdWUpKSB7XG4gICAgY29uc3QgYXJyYXkgPSBBcnJheS5pc0FycmF5KGx2YWx1ZSkgPyBsdmFsdWUgOiBydmFsdWU7XG4gICAgY29uc3Qgbm9uQXJyYXkgPSBBcnJheS5pc0FycmF5KGx2YWx1ZSkgPyBydmFsdWUgOiBsdmFsdWU7XG5cbiAgICBpZiAoYXJyYXkubGVuZ3RoID09PSAxICYmIGRlZXBFcXVhbChhcnJheVswXSwgbm9uQXJyYXkpKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgLy8gYWxsb3dzIGFycmF5cyBwYXNzZWQgdG8gRGVwZW5kc09uIHRvIGJlIGVxdWl2YWxlbnQgaXJyZXNwZWN0aXZlIG9mIGVsZW1lbnQgb3JkZXJcbiAgaWYgKEFycmF5LmlzQXJyYXkobHZhbHVlKSAmJiBBcnJheS5pc0FycmF5KHJ2YWx1ZSkpIHtcbiAgICBpZiAobHZhbHVlLmxlbmd0aCAhPT0gcnZhbHVlLmxlbmd0aCkgeyByZXR1cm4gZmFsc2U7IH1cbiAgICBmb3IgKGxldCBpID0gMCA7IGkgPCBsdmFsdWUubGVuZ3RoIDsgaSsrKSB7XG4gICAgICBmb3IgKGxldCBqID0gMCA7IGogPCBsdmFsdWUubGVuZ3RoIDsgaisrKSB7XG4gICAgICAgIGlmICgoIWRlZXBFcXVhbChsdmFsdWVbaV0sIHJ2YWx1ZVtqXSkpICYmIChqID09PSBsdmFsdWUubGVuZ3RoIC0gMSkpIHtcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgcmV0dXJuIGZhbHNlO1xufVxuXG4vKipcbiAqIFByb2R1Y2UgdGhlIGRpZmZlcmVuY2VzIGJldHdlZW4gdHdvIG1hcHMsIGFzIGEgbWFwLCB1c2luZyBhIHNwZWNpZmllZCBkaWZmIGZ1bmN0aW9uLlxuICpcbiAqIEBwYXJhbSBvbGRWYWx1ZSAgdGhlIG9sZCBtYXAuXG4gKiBAcGFyYW0gbmV3VmFsdWUgIHRoZSBuZXcgbWFwLlxuICogQHBhcmFtIGVsZW1lbnREaWZmIHRoZSBkaWZmIGZ1bmN0aW9uLlxuICpcbiAqIEByZXR1cm5zIGEgbWFwIHJlcHJlc2VudGluZyB0aGUgZGlmZmVyZW5jZXMgYmV0d2VlbiArb2xkVmFsdWUrIGFuZCArbmV3VmFsdWUrLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZGlmZktleWVkRW50aXRpZXM8VD4oXG4gIG9sZFZhbHVlOiB7IFtrZXk6IHN0cmluZ106IGFueSB9IHwgdW5kZWZpbmVkLFxuICBuZXdWYWx1ZTogeyBba2V5OiBzdHJpbmddOiBhbnkgfSB8IHVuZGVmaW5lZCxcbiAgZWxlbWVudERpZmY6IChvbGRFbGVtZW50OiBhbnksIG5ld0VsZW1lbnQ6IGFueSwga2V5OiBzdHJpbmcpID0+IFQpOiB7IFtuYW1lOiBzdHJpbmddOiBUIH0ge1xuICBjb25zdCByZXN1bHQ6IHsgW25hbWU6IHN0cmluZ106IFQgfSA9IHt9O1xuICBmb3IgKGNvbnN0IGxvZ2ljYWxJZCBvZiB1bmlvbk9mKE9iamVjdC5rZXlzKG9sZFZhbHVlIHx8IHt9KSwgT2JqZWN0LmtleXMobmV3VmFsdWUgfHwge30pKSkge1xuICAgIGNvbnN0IG9sZEVsZW1lbnQgPSBvbGRWYWx1ZSAmJiBvbGRWYWx1ZVtsb2dpY2FsSWRdO1xuICAgIGNvbnN0IG5ld0VsZW1lbnQgPSBuZXdWYWx1ZSAmJiBuZXdWYWx1ZVtsb2dpY2FsSWRdO1xuXG4gICAgaWYgKG9sZEVsZW1lbnQgPT09IHVuZGVmaW5lZCAmJiBuZXdFbGVtZW50ID09PSB1bmRlZmluZWQpIHtcbiAgICAgIC8vIFNob3VsZG4ndCBoYXBwZW4gaW4gcmVhbGl0eSwgYnV0IG1heSBoYXBwZW4gaW4gdGVzdHMuIFNraXAuXG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICByZXN1bHRbbG9naWNhbElkXSA9IGVsZW1lbnREaWZmKG9sZEVsZW1lbnQsIG5ld0VsZW1lbnQsIGxvZ2ljYWxJZCk7XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuLyoqXG4gKiBDb21wdXRlcyB0aGUgdW5pb24gb2YgdHdvIHNldHMgb2Ygc3RyaW5ncy5cbiAqXG4gKiBAcGFyYW0gbHYgdGhlIGxlZnQgc2V0IG9mIHN0cmluZ3MuXG4gKiBAcGFyYW0gcnYgdGhlIHJpZ2h0IHNldCBvZiBzdHJpbmdzLlxuICpcbiAqIEByZXR1cm5zIGEgbmV3IGFycmF5IGNvbnRhaW5pbmcgYWxsIGVsZW1lYnRzIGZyb20gK2x2KyBhbmQgK3J2Kywgd2l0aCBubyBkdXBsaWNhdGVzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gdW5pb25PZihsdjogc3RyaW5nW10gfCBTZXQ8c3RyaW5nPiwgcnY6IHN0cmluZ1tdIHwgU2V0PHN0cmluZz4pOiBzdHJpbmdbXSB7XG4gIGNvbnN0IHJlc3VsdCA9IG5ldyBTZXQobHYpO1xuICBmb3IgKGNvbnN0IHYgb2YgcnYpIHtcbiAgICByZXN1bHQuYWRkKHYpO1xuICB9XG4gIHJldHVybiBuZXcgQXJyYXkoLi4ucmVzdWx0KTtcbn1cblxuLyoqXG4gKiBHZXRTdGFja1RlbXBsYXRlIGZsYXR0ZW5zIGFueSBjb2RlcG9pbnQgZ3JlYXRlciB0aGFuIFwiXFx1N2ZcIiB0byBcIj9cIi4gVGhpcyBpc1xuICogdHJ1ZSBldmVuIGZvciBjb2RlcG9pbnRzIGluIHRoZSBzdXBwbGVtZW50YWwgcGxhbmVzIHdoaWNoIGFyZSByZXByZXNlbnRlZFxuICogaW4gSlMgYXMgc3Vycm9nYXRlIHBhaXJzLCBhbGwgdGhlIHdheSB1cCB0byBcIlxcdXsxMGZmZmZ9XCIuXG4gKlxuICogVGhpcyBmdW5jdGlvbiBpbXBsZW1lbnRzIHRoZSBzYW1lIG1hbmdsaW5nIGluIG9yZGVyIHRvIHByb3ZpZGUgZGlhZ25vc3RpY1xuICogaW5mb3JtYXRpb24gaW4gYGNkayBkaWZmYC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG1hbmdsZUxpa2VDbG91ZEZvcm1hdGlvbihwYXlsb2FkOiBzdHJpbmcpIHtcbiAgcmV0dXJuIHBheWxvYWQucmVwbGFjZSgvW1xcdXs4MH0tXFx1ezEwZmZmZn1dL2d1LCAnPycpO1xufVxuXG4vKipcbiAqIEEgcGFyc2VGbG9hdCBpbXBsZW1lbnRhdGlvbiB0aGF0IGRvZXMgdGhlIHJpZ2h0IHRoaW5nIGZvclxuICogc3RyaW5ncyBsaWtlICcwLjAuMCdcbiAqIChmb3Igd2hpY2ggSmF2YVNjcmlwdCdzIHBhcnNlRmxvYXQoKSByZXR1cm5zIDApLlxuICogV2UgcmV0dXJuIE5hTiBmb3IgYWxsIG9mIHRoZXNlIHN0cmluZ3MgdGhhdCBkbyBub3QgcmVwcmVzZW50IG51bWJlcnMsXG4gKiBhbmQgc28gY29tcGFyaW5nIHRoZW0gZmFpbHMsXG4gKiBhbmQgZG9lc24ndCBzaG9ydC1jaXJjdWl0IHRoZSBkaWZmIGxvZ2ljLlxuICovXG5mdW5jdGlvbiBzYWZlUGFyc2VGbG9hdChzdHI6IHN0cmluZyk6IG51bWJlciB7XG4gIHJldHVybiBOdW1iZXIoc3RyKTtcbn1cblxuLyoqXG4gKiBMYXppbHkgbG9hZCB0aGUgc2VydmljZSBzcGVjIGRhdGFiYXNlIGFuZCBjYWNoZSB0aGUgbG9hZGVkIGRiXG4qL1xubGV0IERBVEFCQVNFOiBTcGVjRGF0YWJhc2UgfCB1bmRlZmluZWQ7XG5mdW5jdGlvbiBkYXRhYmFzZSgpOiBTcGVjRGF0YWJhc2Uge1xuICBpZiAoIURBVEFCQVNFKSB7XG4gICAgREFUQUJBU0UgPSBsb2FkQXdzU2VydmljZVNwZWNTeW5jKCk7XG4gIH1cbiAgcmV0dXJuIERBVEFCQVNFO1xufVxuXG4vKipcbiAqIExvYWQgYSBSZXNvdXJjZSBtb2RlbCBmcm9tIHRoZSBTZXJ2aWNlIFNwZWMgRGF0YWJhc2VcbiAqXG4gKiBUaGUgZGF0YWJhc2UgaXMgbG9hZGVkIGxhemlseSBhbmQgY2FjaGVkIGFjcm9zcyBtdWx0aXBsZSBjYWxscyB0byBgbG9hZFJlc291cmNlTW9kZWxgLlxuICovXG5leHBvcnQgZnVuY3Rpb24gbG9hZFJlc291cmNlTW9kZWwodHlwZTogc3RyaW5nKTogUmVzb3VyY2UgfCB1bmRlZmluZWQge1xuICByZXR1cm4gZGF0YWJhc2UoKS5sb29rdXAoJ3Jlc291cmNlJywgJ2Nsb3VkRm9ybWF0aW9uVHlwZScsICdlcXVhbHMnLCB0eXBlKVswXTtcbn1cbiJdfQ==","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.DiffableCollection = void 0;\n/**\n * Calculate differences of immutable elements\n */\nclass DiffableCollection {\n constructor() {\n this.additions = [];\n this.removals = [];\n this.oldElements = [];\n this.newElements = [];\n }\n addOld(...elements) {\n this.oldElements.push(...elements);\n }\n addNew(...elements) {\n this.newElements.push(...elements);\n }\n calculateDiff() {\n this.additions.push(...difference(this.newElements, this.oldElements));\n this.removals.push(...difference(this.oldElements, this.newElements));\n }\n get hasChanges() {\n return this.additions.length + this.removals.length > 0;\n }\n get hasAdditions() {\n return this.additions.length > 0;\n }\n get hasRemovals() {\n return this.removals.length > 0;\n }\n}\nexports.DiffableCollection = DiffableCollection;\n/**\n * Whether a collection contains some element (by value)\n */\nfunction contains(element, xs) {\n return xs.some(x => x.equal(element));\n}\n/**\n * Return collection except for elements\n */\nfunction difference(collection, elements) {\n return collection.filter(x => !contains(x, elements));\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlmZmFibGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJkaWZmYWJsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQTs7R0FFRztBQUNILE1BQWEsa0JBQWtCO0lBQS9CO1FBQ2tCLGNBQVMsR0FBUSxFQUFFLENBQUM7UUFDcEIsYUFBUSxHQUFRLEVBQUUsQ0FBQztRQUVsQixnQkFBVyxHQUFRLEVBQUUsQ0FBQztRQUN0QixnQkFBVyxHQUFRLEVBQUUsQ0FBQztJQTBCekMsQ0FBQztJQXhCUSxNQUFNLENBQUMsR0FBRyxRQUFhO1FBQzVCLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEdBQUcsUUFBUSxDQUFDLENBQUM7SUFDckMsQ0FBQztJQUVNLE1BQU0sQ0FBQyxHQUFHLFFBQWE7UUFDNUIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsR0FBRyxRQUFRLENBQUMsQ0FBQztJQUNyQyxDQUFDO0lBRU0sYUFBYTtRQUNsQixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxHQUFHLFVBQVUsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDO1FBQ3ZFLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEdBQUcsVUFBVSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUM7SUFDeEUsQ0FBQztJQUVELElBQVcsVUFBVTtRQUNuQixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztJQUMxRCxDQUFDO0lBRUQsSUFBVyxZQUFZO1FBQ3JCLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO0lBQ25DLENBQUM7SUFFRCxJQUFXLFdBQVc7UUFDcEIsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7SUFDbEMsQ0FBQztDQUNGO0FBL0JELGdEQStCQztBQVNEOztHQUVHO0FBQ0gsU0FBUyxRQUFRLENBQWtCLE9BQVUsRUFBRSxFQUFPO0lBQ3BELE9BQU8sRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztBQUN4QyxDQUFDO0FBRUQ7O0dBRUc7QUFDSCxTQUFTLFVBQVUsQ0FBa0IsVUFBZSxFQUFFLFFBQWE7SUFDakUsT0FBTyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxDQUFDLENBQUM7QUFDeEQsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ2FsY3VsYXRlIGRpZmZlcmVuY2VzIG9mIGltbXV0YWJsZSBlbGVtZW50c1xuICovXG5leHBvcnQgY2xhc3MgRGlmZmFibGVDb2xsZWN0aW9uPFQgZXh0ZW5kcyBFcTxUPj4ge1xuICBwdWJsaWMgcmVhZG9ubHkgYWRkaXRpb25zOiBUW10gPSBbXTtcbiAgcHVibGljIHJlYWRvbmx5IHJlbW92YWxzOiBUW10gPSBbXTtcblxuICBwcml2YXRlIHJlYWRvbmx5IG9sZEVsZW1lbnRzOiBUW10gPSBbXTtcbiAgcHJpdmF0ZSByZWFkb25seSBuZXdFbGVtZW50czogVFtdID0gW107XG5cbiAgcHVibGljIGFkZE9sZCguLi5lbGVtZW50czogVFtdKSB7XG4gICAgdGhpcy5vbGRFbGVtZW50cy5wdXNoKC4uLmVsZW1lbnRzKTtcbiAgfVxuXG4gIHB1YmxpYyBhZGROZXcoLi4uZWxlbWVudHM6IFRbXSkge1xuICAgIHRoaXMubmV3RWxlbWVudHMucHVzaCguLi5lbGVtZW50cyk7XG4gIH1cblxuICBwdWJsaWMgY2FsY3VsYXRlRGlmZigpIHtcbiAgICB0aGlzLmFkZGl0aW9ucy5wdXNoKC4uLmRpZmZlcmVuY2UodGhpcy5uZXdFbGVtZW50cywgdGhpcy5vbGRFbGVtZW50cykpO1xuICAgIHRoaXMucmVtb3ZhbHMucHVzaCguLi5kaWZmZXJlbmNlKHRoaXMub2xkRWxlbWVudHMsIHRoaXMubmV3RWxlbWVudHMpKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgaGFzQ2hhbmdlcygpIHtcbiAgICByZXR1cm4gdGhpcy5hZGRpdGlvbnMubGVuZ3RoICsgdGhpcy5yZW1vdmFscy5sZW5ndGggPiAwO1xuICB9XG5cbiAgcHVibGljIGdldCBoYXNBZGRpdGlvbnMoKSB7XG4gICAgcmV0dXJuIHRoaXMuYWRkaXRpb25zLmxlbmd0aCA+IDA7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGhhc1JlbW92YWxzKCkge1xuICAgIHJldHVybiB0aGlzLnJlbW92YWxzLmxlbmd0aCA+IDA7XG4gIH1cbn1cblxuLyoqXG4gKiBUaGluZ3MgdGhhdCBjYW4gYmUgY29tcGFyZWQgdG8gdGhlbXNlbHZlcyAoYnkgdmFsdWUpXG4gKi9cbmludGVyZmFjZSBFcTxUPiB7XG4gIGVxdWFsKG90aGVyOiBUKTogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBXaGV0aGVyIGEgY29sbGVjdGlvbiBjb250YWlucyBzb21lIGVsZW1lbnQgKGJ5IHZhbHVlKVxuICovXG5mdW5jdGlvbiBjb250YWluczxUIGV4dGVuZHMgRXE8VD4+KGVsZW1lbnQ6IFQsIHhzOiBUW10pOiBib29sZWFuIHtcbiAgcmV0dXJuIHhzLnNvbWUoeCA9PiB4LmVxdWFsKGVsZW1lbnQpKTtcbn1cblxuLyoqXG4gKiBSZXR1cm4gY29sbGVjdGlvbiBleGNlcHQgZm9yIGVsZW1lbnRzXG4gKi9cbmZ1bmN0aW9uIGRpZmZlcmVuY2U8VCBleHRlbmRzIEVxPFQ+Pihjb2xsZWN0aW9uOiBUW10sIGVsZW1lbnRzOiBUW10pOiBUW10ge1xuICByZXR1cm4gY29sbGVjdGlvbi5maWx0ZXIoeCA9PiAhY29udGFpbnMoeCwgZWxlbWVudHMpKTtcbn1cbiJdfQ==","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.formatTable = void 0;\nconst chalk = require(\"chalk\");\nconst string_width_1 = require(\"string-width\");\nconst table = require(\"table\");\n/**\n * Render a two-dimensional array to a visually attractive table\n *\n * First row is considered the table header.\n */\nfunction formatTable(cells, columns) {\n return table.table(cells, {\n border: TABLE_BORDER_CHARACTERS,\n columns: buildColumnConfig(columns !== undefined ? calculateColumnWidths(cells, columns) : undefined),\n drawHorizontalLine: (line) => {\n // Numbering like this: [line 0] [header = row[0]] [line 1] [row 1] [line 2] [content 2] [line 3]\n return (line < 2 || line === cells.length) || lineBetween(cells[line - 1], cells[line]);\n },\n }).trimRight();\n}\nexports.formatTable = formatTable;\n/**\n * Whether we should draw a line between two rows\n *\n * Draw horizontal line if 2nd column values are different.\n */\nfunction lineBetween(rowA, rowB) {\n return rowA[1] !== rowB[1];\n}\nfunction buildColumnConfig(widths) {\n if (widths === undefined) {\n return undefined;\n }\n const ret = {};\n widths.forEach((width, i) => {\n if (width === undefined) {\n return;\n }\n ret[i] = { width };\n });\n return ret;\n}\n/**\n * Calculate column widths given a terminal width\n *\n * We do this by calculating a fair share for every column. Extra width smaller\n * than the fair share is evenly distributed over all columns that exceed their\n * fair share.\n */\nfunction calculateColumnWidths(rows, terminalWidth) {\n // The terminal is sometimes reported to be 0. Also if the terminal is VERY narrow,\n // just assume a reasonable minimum size.\n terminalWidth = Math.max(terminalWidth, 40);\n // use 'string-width' to not count ANSI chars as actual character width\n const columns = rows[0].map((_, i) => Math.max(...rows.map(row => (0, string_width_1.default)(String(row[i])))));\n // If we have no terminal width, do nothing\n const contentWidth = terminalWidth - 2 - columns.length * 3;\n // If we don't exceed the terminal width, do nothing\n if (sum(columns) <= contentWidth) {\n return columns;\n }\n const fairShare = Math.min(contentWidth / columns.length);\n const smallColumns = columns.filter(w => w < fairShare);\n let distributableWidth = contentWidth - sum(smallColumns);\n const fairDistributable = Math.floor(distributableWidth / (columns.length - smallColumns.length));\n const ret = new Array();\n for (const requestedWidth of columns) {\n if (requestedWidth < fairShare) {\n // Small column gets what they want\n ret.push(requestedWidth);\n }\n else {\n // Last column gets all remaining, otherwise get fair redist share\n const width = distributableWidth < 2 * fairDistributable ? distributableWidth : fairDistributable;\n ret.push(width);\n distributableWidth -= width;\n }\n }\n return ret;\n}\nfunction sum(xs) {\n let total = 0;\n for (const x of xs) {\n total += x;\n }\n return total;\n}\n// What color the table is going to be\nconst tableColor = chalk.gray;\n// Unicode table characters with a color\nconst TABLE_BORDER_CHARACTERS = {\n topBody: tableColor('─'),\n topJoin: tableColor('┬'),\n topLeft: tableColor('┌'),\n topRight: tableColor('┐'),\n bottomBody: tableColor('─'),\n bottomJoin: tableColor('┴'),\n bottomLeft: tableColor('└'),\n bottomRight: tableColor('┘'),\n bodyLeft: tableColor('│'),\n bodyRight: tableColor('│'),\n bodyJoin: tableColor('│'),\n joinBody: tableColor('─'),\n joinLeft: tableColor('├'),\n joinRight: tableColor('┤'),\n joinJoin: tableColor('┼'),\n};\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybWF0LXRhYmxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiZm9ybWF0LXRhYmxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLCtCQUErQjtBQUMvQiwrQ0FBdUM7QUFDdkMsK0JBQStCO0FBRS9COzs7O0dBSUc7QUFDSCxTQUFnQixXQUFXLENBQUMsS0FBaUIsRUFBRSxPQUEyQjtJQUN4RSxPQUFPLEtBQUssQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFO1FBQ3hCLE1BQU0sRUFBRSx1QkFBdUI7UUFDL0IsT0FBTyxFQUFFLGlCQUFpQixDQUFDLE9BQU8sS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDLHFCQUFxQixDQUFDLEtBQUssRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO1FBQ3JHLGtCQUFrQixFQUFFLENBQUMsSUFBSSxFQUFFLEVBQUU7WUFDM0IsaUdBQWlHO1lBQ2pHLE9BQU8sQ0FBQyxJQUFJLEdBQUcsQ0FBQyxJQUFJLElBQUksS0FBSyxLQUFLLENBQUMsTUFBTSxDQUFDLElBQUksV0FBVyxDQUFDLEtBQUssQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7UUFDMUYsQ0FBQztLQUNGLENBQUMsQ0FBQyxTQUFTLEVBQUUsQ0FBQztBQUNqQixDQUFDO0FBVEQsa0NBU0M7QUFFRDs7OztHQUlHO0FBQ0gsU0FBUyxXQUFXLENBQUMsSUFBYyxFQUFFLElBQWM7SUFDakQsT0FBTyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzdCLENBQUM7QUFFRCxTQUFTLGlCQUFpQixDQUFDLE1BQTRCO0lBQ3JELElBQUksTUFBTSxLQUFLLFNBQVMsRUFBRSxDQUFDO1FBQUMsT0FBTyxTQUFTLENBQUM7SUFBQyxDQUFDO0lBRS9DLE1BQU0sR0FBRyxHQUFnRCxFQUFFLENBQUM7SUFDNUQsTUFBTSxDQUFD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QUFDO0lBQ3hCLE9BQU8sRUFBRSxVQUFVLENBQUMsR0FBRyxDQUFDO0lBQ3hCLE9BQU8sRUFBRSxVQUFVLENBQUMsR0FBRyxDQUFDO0lBQ3hCLFFBQVEsRUFBRSxVQUFVLENBQUMsR0FBRyxDQUFDO0lBQ3pCLFVBQVUsRUFBRSxVQUFVLENBQUMsR0FBRyxDQUFDO0lBQzNCLFVBQVUsRUFBRSxVQUFVLENBQUMsR0FBRyxDQUFDO0lBQzNCLFVBQVUsRUFBRSxVQUFVLENBQUMsR0FBRyxDQUFDO0lBQzNCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxDQUFDO0lBQzVCLFFBQVEsRUFBRSxVQUFVLENBQUMsR0FBRyxDQUFDO0lBQ3pCLFNBQVMsRUFBRSxVQUFVLENBQUMsR0FBRyxDQUFDO0lBQzFCLFFBQVEsRUFBRSxVQUFVLENBQUMsR0FBRyxDQUFDO0lBQ3pCLFFBQVEsRUFBRSxVQUFVLENBQUMsR0FBRyxDQUFDO0lBQ3pCLFFBQVEsRUFBRSxVQUFVLENBQUMsR0FBRyxDQUFDO0lBQ3pCLFNBQVMsRUFBRSxVQUFVLENBQUMsR0FBRyxDQUFDO0lBQzFCLFFBQVEsRUFBRSxVQUFVLENBQUMsR0FBRyxDQUFDO0NBQzFCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBjaGFsayBmcm9tICdjaGFsayc7XG5pbXBvcnQgc3RyaW5nV2lkdGggZnJvbSAnc3RyaW5nLXdpZHRoJztcbmltcG9ydCAqIGFzIHRhYmxlIGZyb20gJ3RhYmxlJztcblxuLyoqXG4gKiBSZW5kZXIgYSB0d28tZGltZW5zaW9uYWwgYXJyYXkgdG8gYSB2aXN1YWxseSBhdHRyYWN0aXZlIHRhYmxlXG4gKlxuICogRmlyc3Qgcm93IGlzIGNvbnNpZGVyZWQgdGhlIHRhYmxlIGhlYWRlci5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZvcm1hdFRhYmxlKGNlbGxzOiBzdHJpbmdbXVtdLCBjb2x1bW5zOiBudW1iZXIgfCB1bmRlZmluZWQpOiBzdHJpbmcge1xuICByZXR1cm4gdGFibGUudGFibGUoY2VsbHMsIHtcbiAgICBib3JkZXI6IFRBQkxFX0JPUkRFUl9DSEFSQUNURVJTLFxuICAgIGNvbHVtbnM6IGJ1aWxkQ29sdW1uQ29uZmlnKGNvbHVtbnMgIT09IHVuZGVmaW5lZCA/IGNhbGN1bGF0ZUNvbHVtbldpZHRocyhjZWxscywgY29sdW1ucykgOiB1bmRlZmluZWQpLFxuICAgIGRyYXdIb3Jpem9udGFsTGluZTogKGxpbmUpID0+IHtcbiAgICAgIC8vIE51bWJlcmluZyBsaWtlIHRoaXM6IFtsaW5lIDBdIFtoZWFkZXIgPSByb3dbMF1dIFtsaW5lIDFdIFtyb3cgMV0gW2xpbmUgMl0gW2NvbnRlbnQgMl0gW2xpbmUgM11cbiAgICAgIHJldHVybiAobGluZSA8IDIgfHwgbGluZSA9PT0gY2VsbHMubGVuZ3RoKSB8fCBsaW5lQmV0d2VlbihjZWxsc1tsaW5lIC0gMV0sIGNlbGxzW2xpbmVdKTtcbiAgICB9LFxuICB9KS50cmltUmlnaHQoKTtcbn1cblxuLyoqXG4gKiBXaGV0aGVyIHdlIHNob3VsZCBkcmF3IGEgbGluZSBiZXR3ZWVuIHR3byByb3dzXG4gKlxuICogRHJhdyBob3Jpem9udGFsIGxpbmUgaWYgMm5kIGNvbHVtbiB2YWx1ZXMgYXJlIGRpZmZlcmVudC5cbiAqL1xuZnVuY3Rpb24gbGluZUJldHdlZW4ocm93QTogc3RyaW5nW10sIHJvd0I6IHN0cmluZ1tdKSB7XG4gIHJldHVybiByb3dBWzFdICE9PSByb3dCWzFdO1xufVxuXG5mdW5jdGlvbiBidWlsZENvbHVtbkNvbmZpZyh3aWR0aHM6IG51bWJlcltdIHwgdW5kZWZpbmVkKTogeyBbaW5kZXg6IG51bWJlcl06IHRhYmxlLkNvbHVtblVzZXJDb25maWcgfSB8IHVuZGVmaW5lZCB7XG4gIGlmICh3aWR0aHMgPT09IHVuZGVmaW5lZCkgeyByZXR1cm4gdW5kZWZpbmVkOyB9XG5cbiAgY29uc3QgcmV0OiB7IFtpbmRleDogbnVtYmVyXTogdGFibGUuQ29sdW1uVXNlckNvbmZpZyB9ID0ge307XG4gIHdpZHRocy5mb3JFYWNoKCh3aWR0aCwgaSkgPT4ge1xuICAgIGlmICh3aWR0aCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHJldFtpXSA9IHsgd2lkdGggfTtcbiAgfSk7XG5cbiAgcmV0dXJuIHJldDtcbn1cblxuLyoqXG4gKiBDYWxjdWxhdGUgY29sdW1uIHdpZHRocyBnaXZlbiBhIHRlcm1pbmFsIHdpZHRoXG4gKlxuICogV2UgZG8gdGhpcyBieSBjYWxjdWxhdGluZyBhIGZhaXIgc2hhcmUgZm9yIGV2ZXJ5IGNvbHVtbi4gRXh0cmEgd2lkdGggc21hbGxlclxuICogdGhhbiB0aGUgZmFpciBzaGFyZSBpcyBldmVubHkgZGlzdHJpYnV0ZWQgb3ZlciBhbGwgY29sdW1ucyB0aGF0IGV4Y2VlZCB0aGVpclxuICogZmFpciBzaGFyZS5cbiAqL1xuZnVuY3Rpb24gY2FsY3VsYXRlQ29sdW1uV2lkdGhzKHJvd3M6IHN0cmluZ1tdW10sIHRlcm1pbmFsV2lkdGg6IG51bWJlcik6IG51bWJlcltdIHtcbiAgLy8gVGhlIHRlcm1pbmFsIGlzIHNvbWV0aW1lcyByZXBvcnRlZCB0byBiZSAwLiBBbHNvIGlmIHRoZSB0ZXJtaW5hbCBpcyBWRVJZIG5hcnJvdyxcbiAgLy8ganVzdCBhc3N1bWUgYSByZWFzb25hYmxlIG1pbmltdW0gc2l6ZS5cbiAgdGVybWluYWxXaWR0aCA9IE1hdGgubWF4KHRlcm1pbmFsV2lkdGgsIDQwKTtcblxuICAvLyB1c2UgJ3N0cmluZy13aWR0aCcgdG8gbm90IGNvdW50IEFOU0kgY2hhcnMgYXMgYWN0dWFsIGNoYXJhY3RlciB3aWR0aFxuICBjb25zdCBjb2x1bW5zID0gcm93c1swXS5tYXAoKF8sIGkpID0+IE1hdGgubWF4KC4uLnJvd3MubWFwKHJvdyA9PiBzdHJpbmdXaWR0aChTdHJpbmcocm93W2ldKSkpKSk7XG5cbiAgLy8gSWYgd2UgaGF2ZSBubyB0ZXJtaW5hbCB3aWR0aCwgZG8gbm90aGluZ1xuICBjb25zdCBjb250ZW50V2lkdGggPSB0ZXJtaW5hbFdpZHRoIC0gMiAtIGNvbHVtbnMubGVuZ3RoICogMztcblxuICAvLyBJZiB3ZSBkb24ndCBleGNlZWQgdGhlIHRlcm1pbmFsIHdpZHRoLCBkbyBub3RoaW5nXG4gIGlmIChzdW0oY29sdW1ucykgPD0gY29udGVudFdpZHRoKSB7IHJldHVybiBjb2x1bW5zOyB9XG5cbiAgY29uc3QgZmFpclNoYXJlID0gTWF0aC5taW4oY29udGVudFdpZHRoIC8gY29sdW1ucy5sZW5ndGgpO1xuICBjb25zdCBzbWFsbENvbHVtbnMgPSBjb2x1bW5zLmZpbHRlcih3ID0+IHcgPCBmYWlyU2hhcmUpO1xuXG4gIGxldCBkaXN0cmlidXRhYmxlV2lkdGggPSBjb250ZW50V2lkdGggLSBzdW0oc21hbGxDb2x1bW5zKTtcbiAgY29uc3QgZmFpckRpc3RyaWJ1dGFibGUgPSBNYXRoLmZsb29yKGRpc3RyaWJ1dGFibGVXaWR0aCAvIChjb2x1bW5zLmxlbmd0aCAtIHNtYWxsQ29sdW1ucy5sZW5ndGgpKTtcblxuICBjb25zdCByZXQgPSBuZXcgQXJyYXk8bnVtYmVyPigpO1xuICBmb3IgKGNvbnN0IHJlcXVlc3RlZFdpZHRoIG9mIGNvbHVtbnMpIHtcbiAgICBpZiAocmVxdWVzdGVkV2lkdGggPCBmYWlyU2hhcmUpIHtcbiAgICAgIC8vIFNtYWxsIGNvbHVtbiBnZXRzIHdoYXQgdGhleSB3YW50XG4gICAgICByZXQucHVzaChyZXF1ZXN0ZWRXaWR0aCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIExhc3QgY29sdW1uIGdldHMgYWxsIHJlbWFpbmluZywgb3RoZXJ3aXNlIGdldCBmYWlyIHJlZGlzdCBzaGFyZVxuICAgICAgY29uc3Qgd2lkdGggPSBkaXN0cmlidXRhYmxlV2lkdGggPCAyICogZmFpckRpc3RyaWJ1dGFibGUgPyBkaXN0cmlidXRhYmxlV2lkdGggOiBmYWlyRGlzdHJpYnV0YWJsZTtcbiAgICAgIHJldC5wdXNoKHdpZHRoKTtcbiAgICAgIGRpc3RyaWJ1dGFibGVXaWR0aCAtPSB3aWR0aDtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gcmV0O1xufVxuXG5mdW5jdGlvbiBzdW0oeHM6IG51bWJlcltdKTogbnVtYmVyIHtcbiAgbGV0IHRvdGFsID0gMDtcbiAgZm9yIChjb25zdCB4IG9mIHhzKSB7XG4gICAgdG90YWwgKz0geDtcbiAgfVxuICByZXR1cm4gdG90YWw7XG59XG5cbi8vIFdoYXQgY29sb3IgdGhlIHRhYmxlIGlzIGdvaW5nIHRvIGJlXG5jb25zdCB0YWJsZUNvbG9yID0gY2hhbGsuZ3JheTtcblxuLy8gVW5pY29kZSB0YWJsZSBjaGFyYWN0ZXJzIHdpdGggYSBjb2xvclxuY29uc3QgVEFCTEVfQk9SREVSX0NIQVJBQ1RFUlMgPSB7XG4gIHRvcEJvZHk6IHRhYmxlQ29sb3IoJ+KUgCcpLFxuICB0b3BKb2luOiB0YWJsZUNvbG9yKCfilKwnKSxcbiAgdG9wTGVmdDogdGFibGVDb2xvcign4pSMJyksXG4gIHRvcFJpZ2h0OiB0YWJsZUNvbG9yKCfilJAnKSxcbiAgYm90dG9tQm9keTogdGFibGVDb2xvcign4pSAJyksXG4gIGJvdHRvbUpvaW46IHRhYmxlQ29sb3IoJ+KUtCcpLFxuICBib3R0b21MZWZ0OiB0YWJsZUNvbG9yKCfilJQnKSxcbiAgYm90dG9tUmlnaHQ6IHRhYmxlQ29sb3IoJ+KUmCcpLFxuICBib2R5TGVmdDogdGFibGVDb2xvcign4pSCJyksXG4gIGJvZHlSaWdodDogdGFibGVDb2xvcign4pSCJyksXG4gIGJvZHlKb2luOiB0YWJsZUNvbG9yKCfilIInKSxcbiAgam9pbkJvZHk6IHRhYmxlQ29sb3IoJ+KUgCcpLFxuICBqb2luTGVmdDogdGFibGVDb2xvcign4pScJyksXG4gIGpvaW5SaWdodDogdGFibGVDb2xvcign4pSkJyksXG4gIGpvaW5Kb2luOiB0YWJsZUNvbG9yKCfilLwnKSxcbn07XG4iXX0=","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Formatter = exports.formatSecurityChanges = exports.formatDifferences = void 0;\nconst util_1 = require(\"util\");\nconst chalk = require(\"chalk\");\nconst util_2 = require(\"./diff/util\");\nconst diff_template_1 = require(\"./diff-template\");\nconst format_table_1 = require(\"./format-table\");\n// from cx-api\nconst PATH_METADATA_KEY = 'aws:cdk:path';\n/* eslint-disable @typescript-eslint/no-require-imports */\nconst { structuredPatch } = require('diff');\n/**\n * Renders template differences to the process' console.\n *\n * @param stream The IO stream where to output the rendered diff.\n * @param templateDiff TemplateDiff to be rendered to the console.\n * @param logicalToPathMap A map from logical ID to construct path. Useful in\n * case there is no aws:cdk:path metadata in the template.\n * @param context the number of context lines to use in arbitrary JSON diff (defaults to 3).\n */\nfunction formatDifferences(stream, templateDiff, logicalToPathMap = {}, context = 3) {\n const formatter = new Formatter(stream, logicalToPathMap, templateDiff, context);\n if (templateDiff.awsTemplateFormatVersion || templateDiff.transform || templateDiff.description) {\n formatter.printSectionHeader('Template');\n formatter.formatDifference('AWSTemplateFormatVersion', 'AWSTemplateFormatVersion', templateDiff.awsTemplateFormatVersion);\n formatter.formatDifference('Transform', 'Transform', templateDiff.transform);\n formatter.formatDifference('Description', 'Description', templateDiff.description);\n formatter.printSectionFooter();\n }\n formatSecurityChangesWithBanner(formatter, templateDiff);\n formatter.formatSection('Parameters', 'Parameter', templateDiff.parameters);\n formatter.formatSection('Metadata', 'Metadata', templateDiff.metadata);\n formatter.formatSection('Mappings', 'Mapping', templateDiff.mappings);\n formatter.formatSection('Conditions', 'Condition', templateDiff.conditions);\n formatter.formatSection('Resources', 'Resource', templateDiff.resources, formatter.formatResourceDifference.bind(formatter));\n formatter.formatSection('Outputs', 'Output', templateDiff.outputs);\n formatter.formatSection('Other Changes', 'Unknown', templateDiff.unknown);\n}\nexports.formatDifferences = formatDifferences;\n/**\n * Renders a diff of security changes to the given stream\n */\nfunction formatSecurityChanges(stream, templateDiff, logicalToPathMap = {}, context) {\n const formatter = new Formatter(stream, logicalToPathMap, templateDiff, context);\n formatSecurityChangesWithBanner(formatter, templateDiff);\n}\nexports.formatSecurityChanges = formatSecurityChanges;\nfunction formatSecurityChangesWithBanner(formatter, templateDiff) {\n if (!templateDiff.iamChanges.hasChanges && !templateDiff.securityGroupChanges.hasChanges) {\n return;\n }\n formatter.formatIamChanges(templateDiff.iamChanges);\n formatter.formatSecurityGroupChanges(templateDiff.securityGroupChanges);\n formatter.warning('(NOTE: There may be security-related changes not in this list. See https://github.com/aws/aws-cdk/issues/1299)');\n formatter.printSectionFooter();\n}\nconst ADDITION = chalk.green('[+]');\nconst CONTEXT = chalk.grey('[ ]');\nconst UPDATE = chalk.yellow('[~]');\nconst REMOVAL = chalk.red('[-]');\nconst IMPORT = chalk.blue('[←]');\nclass Formatter {\n constructor(stream, logicalToPathMap, diff, context = 3) {\n this.stream = stream;\n this.logicalToPathMap = logicalToPathMap;\n this.context = context;\n // Read additional construct paths from the diff if it is supplied\n if (diff) {\n this.readConstructPathsFrom(diff);\n }\n }\n print(fmt, ...args) {\n this.stream.write(chalk.white((0, util_1.format)(fmt, ...args)) + '\\n');\n }\n warning(fmt, ...args) {\n this.stream.write(chalk.yellow((0, util_1.format)(fmt, ...args)) + '\\n');\n }\n formatSection(title, entryType, collection, formatter = this.formatDifference.bind(this)) {\n if (collection.differenceCount === 0) {\n return;\n }\n this.printSectionHeader(title);\n collection.forEachDifference((id, diff) => formatter(entryType, id, diff));\n this.printSectionFooter();\n }\n printSectionHeader(title) {\n this.print(chalk.underline(chalk.bold(title)));\n }\n printSectionFooter() {\n this.print('');\n }\n /**\n * Print a simple difference for a given named entity.\n *\n * @param logicalId the name of the entity that is different.\n * @param diff the difference to be rendered.\n */\n formatDifference(type, logicalId, diff) {\n if (!diff || !diff.isDifferent) {\n return;\n }\n let value;\n const oldValue = this.formatValue(diff.oldValue, chalk.red);\n const newValue = this.formatValue(diff.newValue, chalk.green);\n if (diff.isAddition) {\n value = newValue;\n }\n else if (diff.isUpdate) {\n value = `${oldValue} to ${newValue}`;\n }\n else if (diff.isRemoval) {\n value = oldValue;\n }\n this.print(`${this.formatPrefix(diff)} ${chalk.cyan(type)} ${this.formatLogicalId(logicalId)}: ${value}`);\n }\n /**\n * Print a resource difference for a given logical ID.\n *\n * @param logicalId the logical ID of the resource that changed.\n * @param diff the change to be rendered.\n */\n formatResourceDifference(_type, logicalId, diff) {\n if (!diff.isDifferent) {\n return;\n }\n const resourceType = diff.isRemoval ? diff.oldResourceType : diff.newResourceType;\n // eslint-disable-next-line max-len\n this.print(`${this.formatResourcePrefix(diff)} ${this.formatValue(resourceType, chalk.cyan)} ${this.formatLogicalId(logicalId)} ${this.formatImpact(diff.changeImpact)}`);\n if (diff.isUpdate) {\n const differenceCount = diff.differenceCount;\n let processedCount = 0;\n diff.forEachDifference((_, name, values) => {\n processedCount += 1;\n this.formatTreeDiff(name, values, processedCount === differenceCount);\n });\n }\n }\n formatResourcePrefix(diff) {\n if (diff.isImport) {\n return IMPORT;\n }\n return this.formatPrefix(diff);\n }\n formatPrefix(diff) {\n if (diff.isAddition) {\n return ADDITION;\n }\n if (diff.isUpdate) {\n return UPDATE;\n }\n if (diff.isRemoval) {\n return REMOVAL;\n }\n return chalk.white('[?]');\n }\n /**\n * @param value the value to be formatted.\n * @param color the color to be used.\n *\n * @returns the formatted string, with color applied.\n */\n formatValue(value, color) {\n if (value == null) {\n return undefined;\n }\n if (typeof value === 'string') {\n return color(value);\n }\n return color(JSON.stringify(value));\n }\n /**\n * @param impact the impact to be formatted\n * @returns a user-friendly, colored string representing the impact.\n */\n formatImpact(impact) {\n switch (impact) {\n case diff_template_1.ResourceImpact.MAY_REPLACE:\n return chalk.italic(chalk.yellow('may be replaced'));\n case diff_template_1.ResourceImpact.WILL_REPLACE:\n return chalk.italic(chalk.bold(chalk.red('replace')));\n case diff_template_1.ResourceImpact.WILL_DESTROY:\n return chalk.italic(chalk.bold(chalk.red('destroy')));\n case diff_template_1.ResourceImpact.WILL_ORPHAN:\n return chalk.italic(chalk.yellow('orphan'));\n case diff_template_1.ResourceImpact.WILL_IMPORT:\n return chalk.italic(chalk.blue('import'));\n case diff_template_1.ResourceImpact.WILL_UPDATE:\n case diff_template_1.ResourceImpact.WILL_CREATE:\n case diff_template_1.ResourceImpact.NO_CHANGE:\n return ''; // no extra info is gained here\n }\n }\n /**\n * Renders a tree of differences under a particular name.\n * @param name the name of the root of the tree.\n * @param diff the difference on the tree.\n * @param last whether this is the last node of a parent tree.\n */\n formatTreeDiff(name, diff, last) {\n let additionalInfo = '';\n if ((0, diff_template_1.isPropertyDifference)(diff)) {\n if (diff.changeImpact === diff_template_1.ResourceImpact.MAY_REPLACE) {\n additionalInfo = ' (may cause replacement)';\n }\n else if (diff.changeImpact === diff_template_1.ResourceImpact.WILL_REPLACE) {\n additionalInfo = ' (requires replacement)';\n }\n }\n this.print(' %s─ %s %s%s', last ? '└' : '├', this.changeTag(diff.oldValue, diff.newValue), name, additionalInfo);\n return this.formatObjectDiff(diff.oldValue, diff.newValue, ` ${last ? ' ' : '│'}`);\n }\n /**\n * Renders the difference between two objects, looking for the differences as deep as possible,\n * and rendering a tree graph of the path until the difference is found.\n *\n * @param oldObject the old object.\n * @param newObject the new object.\n * @param linePrefix a prefix (indent-like) to be used on every line.\n */\n formatObjectDiff(oldObject, newObject, linePrefix) {\n if ((typeof oldObject !== typeof newObject) || Array.isArray(oldObject) || typeof oldObject === 'string' || typeof oldObject === 'number') {\n if (oldObject !== undefined && newObject !== undefined) {\n if (typeof oldObject === 'object' || typeof newObject === 'object') {\n const oldStr = JSON.stringify(oldObject, null, 2);\n const newStr = JSON.stringify(newObject, null, 2);\n const diff = _diffStrings(oldStr, newStr, this.context);\n for (let i = 0; i < diff.length; i++) {\n this.print('%s %s %s', linePrefix, i === 0 ? '└─' : ' ', diff[i]);\n }\n }\n else {\n this.print('%s ├─ %s %s', linePrefix, REMOVAL, this.formatValue(oldObject, chalk.red));\n this.print('%s └─ %s %s', linePrefix, ADDITION, this.formatValue(newObject, chalk.green));\n }\n }\n else if (oldObject !== undefined /* && newObject === undefined */) {\n this.print('%s └─ %s', linePrefix, this.formatValue(oldObject, chalk.red));\n }\n else /* if (oldObject === undefined && newObject !== undefined) */ {\n this.print('%s └─ %s', linePrefix, this.formatValue(newObject, chalk.green));\n }\n return;\n }\n const keySet = new Set(Object.keys(oldObject));\n Object.keys(newObject).forEach(k => keySet.add(k));\n const keys = new Array(...keySet).filter(k => !(0, util_2.deepEqual)(oldObject[k], newObject[k])).sort();\n const lastKey = keys[keys.length - 1];\n for (const key of keys) {\n const oldValue = oldObject[key];\n const newValue = newObject[key];\n const treePrefix = key === lastKey ? '└' : '├';\n if (oldValue !== undefined && newValue !== undefined) {\n this.print('%s %s─ %s %s:', linePrefix, treePrefix, this.changeTag(oldValue, newValue), chalk.blue(`.${key}`));\n this.formatObjectDiff(oldValue, newValue, `${linePrefix} ${key === lastKey ? ' ' : '│'}`);\n }\n else if (oldValue !== undefined /* && newValue === undefined */) {\n this.print('%s %s─ %s Removed: %s', linePrefix, treePrefix, REMOVAL, chalk.blue(`.${key}`));\n }\n else /* if (oldValue === undefined && newValue !== undefined */ {\n this.print('%s %s─ %s Added: %s', linePrefix, treePrefix, ADDITION, chalk.blue(`.${key}`));\n }\n }\n }\n /**\n * @param oldValue the old value of a difference.\n * @param newValue the new value of a difference.\n *\n * @returns a tag to be rendered in the diff, reflecting whether the difference\n * was an ADDITION, UPDATE or REMOVAL.\n */\n changeTag(oldValue, newValue) {\n if (oldValue !== undefined && newValue !== undefined) {\n return UPDATE;\n }\n else if (oldValue !== undefined /* && newValue === undefined*/) {\n return REMOVAL;\n }\n else /* if (oldValue === undefined && newValue !== undefined) */ {\n return ADDITION;\n }\n }\n /**\n * Find 'aws:cdk:path' metadata in the diff and add it to the logicalToPathMap\n *\n * There are multiple sources of logicalID -> path mappings: synth metadata\n * and resource metadata, and we combine all sources into a single map.\n */\n readConstructPathsFrom(templateDiff) {\n for (const [logicalId, resourceDiff] of Object.entries(templateDiff.resources)) {\n if (!resourceDiff) {\n continue;\n }\n const oldPathMetadata = resourceDiff.oldValue?.Metadata?.[PATH_METADATA_KEY];\n if (oldPathMetadata && !(logicalId in this.logicalToPathMap)) {\n this.logicalToPathMap[logicalId] = oldPathMetadata;\n }\n const newPathMetadata = resourceDiff.newValue?.Metadata?.[PATH_METADATA_KEY];\n if (newPathMetadata && !(logicalId in this.logicalToPathMap)) {\n this.logicalToPathMap[logicalId] = newPathMetadata;\n }\n }\n }\n formatLogicalId(logicalId) {\n // if we have a path in the map, return it\n const normalized = this.normalizedLogicalIdPath(logicalId);\n if (normalized) {\n return `${normalized} ${chalk.gray(logicalId)}`;\n }\n return logicalId;\n }\n normalizedLogicalIdPath(logicalId) {\n // if we have a path in the map, return it\n const path = this.logicalToPathMap[logicalId];\n return path ? normalizePath(path) : undefined;\n /**\n * Path is supposed to start with \"/stack-name\". If this is the case (i.e. path has more than\n * two components, we remove the first part. Otherwise, we just use the full path.\n * @param p\n */\n function normalizePath(p) {\n if (p.startsWith('/')) {\n p = p.slice(1);\n }\n let parts = p.split('/');\n if (parts.length > 1) {\n parts = parts.slice(1);\n // remove the last component if it's \"Resource\" or \"Default\" (if we have more than a single component)\n if (parts.length > 1) {\n const last = parts[parts.length - 1];\n if (last === 'Resource' || last === 'Default') {\n parts = parts.slice(0, parts.length - 1);\n }\n }\n p = parts.join('/');\n }\n return p;\n }\n }\n formatIamChanges(changes) {\n if (!changes.hasChanges) {\n return;\n }\n if (changes.statements.hasChanges) {\n this.printSectionHeader('IAM Statement Changes');\n this.print((0, format_table_1.formatTable)(this.deepSubstituteBracedLogicalIds(changes.summarizeStatements()), this.stream.columns));\n }\n if (changes.managedPolicies.hasChanges) {\n this.printSectionHeader('IAM Policy Changes');\n this.print((0, format_table_1.formatTable)(this.deepSubstituteBracedLogicalIds(changes.summarizeManagedPolicies()), this.stream.columns));\n }\n if (changes.ssoPermissionSets.hasChanges || changes.ssoInstanceACAConfigs.hasChanges || changes.ssoAssignments.hasChanges) {\n this.printSectionHeader('IAM Identity Center Changes');\n if (changes.ssoPermissionSets.hasChanges) {\n this.print((0, format_table_1.formatTable)(this.deepSubstituteBracedLogicalIds(changes.summarizeSsoPermissionSets()), this.stream.columns));\n }\n if (changes.ssoInstanceACAConfigs.hasChanges) {\n this.print((0, format_table_1.formatTable)(this.deepSubstituteBracedLogicalIds(changes.summarizeSsoInstanceACAConfigs()), this.stream.columns));\n }\n if (changes.ssoAssignments.hasChanges) {\n this.print((0, format_table_1.formatTable)(this.deepSubstituteBracedLogicalIds(changes.summarizeSsoAssignments()), this.stream.columns));\n }\n }\n }\n formatSecurityGroupChanges(changes) {\n if (!changes.hasChanges) {\n return;\n }\n this.printSectionHeader('Security Group Changes');\n this.print((0, format_table_1.formatTable)(this.deepSubstituteBracedLogicalIds(changes.summarize()), this.stream.columns));\n }\n deepSubstituteBracedLogicalIds(rows) {\n return rows.map(row => row.map(this.substituteBracedLogicalIds.bind(this)));\n }\n /**\n * Substitute all strings like ${LogId.xxx} with the path instead of the logical ID\n */\n substituteBracedLogicalIds(source) {\n return source.replace(/\\$\\{([^.}]+)(.[^}]+)?\\}/ig, (_match, logId, suffix) => {\n return '${' + (this.normalizedLogicalIdPath(logId) || logId) + (suffix || '') + '}';\n });\n }\n}\nexports.Formatter = Formatter;\n/**\n * Creates a unified diff of two strings.\n *\n * @param oldStr the \"old\" version of the string.\n * @param newStr the \"new\" version of the string.\n * @param context the number of context lines to use in arbitrary JSON diff.\n *\n * @returns an array of diff lines.\n */\nfunction _diffStrings(oldStr, newStr, context) {\n const patch = structuredPatch(null, null, oldStr, newStr, null, null, { context });\n const result = new Array();\n for (const hunk of patch.hunks) {\n result.push(chalk.magenta(`@@ -${hunk.oldStart},${hunk.oldLines} +${hunk.newStart},${hunk.newLines} @@`));\n const baseIndent = _findIndent(hunk.lines);\n for (const line of hunk.lines) {\n // Don't care about termination newline.\n if (line === '\\\\ No newline at end of file') {\n continue;\n }\n const marker = line.charAt(0);\n const text = line.slice(1 + baseIndent);\n switch (marker) {\n case ' ':\n result.push(`${CONTEXT} ${text}`);\n break;\n case '+':\n result.push(chalk.bold(`${ADDITION} ${chalk.green(text)}`));\n break;\n case '-':\n result.push(chalk.bold(`${REMOVAL} ${chalk.red(text)}`));\n break;\n default:\n throw new Error(`Unexpected diff marker: ${marker} (full line: ${line})`);\n }\n }\n }\n return result;\n function _findIndent(lines) {\n let indent = Number.MAX_SAFE_INTEGER;\n for (const line of lines) {\n for (let i = 1; i < line.length; i++) {\n if (line.charAt(i) !== ' ') {\n indent = indent > i - 1 ? i - 1 : indent;\n break;\n }\n }\n }\n return indent;\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybWF0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiZm9ybWF0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLCtCQUE4QjtBQUM5QiwrQkFBK0I7QUFFL0Isc0NBQXdDO0FBQ3hDLG1EQUF1RztBQUN2RyxpREFBNkM7QUFJN0MsY0FBYztBQUNkLE1BQU0saUJBQWlCLEdBQUcsY0FBYyxDQUFDO0FBRXpDLDBEQUEwRDtBQUMxRCxNQUFNLEVBQUUsZUFBZSxFQUFFLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBTzVDOzs7Ozs7OztHQVFHO0FBQ0gsU0FBZ0IsaUJBQWlCLENBQy9CLE1BQW9CLEVBQ3BCLFlBQTBCLEVBQzFCLG1CQUFvRCxFQUFFLEVBQ3RELFVBQWtCLENBQUM7SUFDbkIsTUFBTSxTQUFTLEdBQUcsSUFBSSxTQUFTLENBQUMsTUFBTSxFQUFFLGdCQUFnQixFQUFFLFlBQVksRUFBRSxPQUFPLENBQUMsQ0FBQztJQUVqRixJQUFJLFlBQVksQ0FBQyx3QkFBd0IsSUFBSSxZQUFZLENBQUMsU0FBUyxJQUFJLFlBQVksQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUNoRyxTQUFTLENBQUMsa0JBQWtCLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDekMsU0FBUyxDQUFDLGdCQUFnQixDQUFDLDBCQUEwQixFQUFFLDBCQUEwQixFQUFFLFlBQVksQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDO1FBQzFILFNBQVMsQ0FBQyxnQkFBZ0IsQ0FBQyxXQUFXLEVBQUUsV0FBVyxFQUFFLFlBQVksQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUM3RSxTQUFTLENBQUMsZ0JBQWdCLENBQUMsYUFBYSxFQUFFLGFBQWEsRUFBRSxZQUFZLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDbkYsU0FBUyxDQUFDLGtCQUFrQixFQUFFLENBQUM7SUFDakMsQ0FBQztJQUVELCtCQUErQixDQUFDLFNBQVMsRUFBRSxZQUFZLENBQUMsQ0FBQztJQUV6RCxTQUFTLENBQUMs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SyxHQUFHLEVBQUUsQ0FBQztvQkFDM0IsTUFBTSxHQUFHLE1BQU0sR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUM7b0JBQ3pDLE1BQU07Z0JBQ1IsQ0FBQztZQUNILENBQUM7UUFDSCxDQUFDO1FBQ0QsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQztBQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBmb3JtYXQgfSBmcm9tICd1dGlsJztcbmltcG9ydCAqIGFzIGNoYWxrIGZyb20gJ2NoYWxrJztcbmltcG9ydCB7IERpZmZlcmVuY2VDb2xsZWN0aW9uLCBUZW1wbGF0ZURpZmYgfSBmcm9tICcuL2RpZmYvdHlwZXMnO1xuaW1wb3J0IHsgZGVlcEVxdWFsIH0gZnJvbSAnLi9kaWZmL3V0aWwnO1xuaW1wb3J0IHsgRGlmZmVyZW5jZSwgaXNQcm9wZXJ0eURpZmZlcmVuY2UsIFJlc291cmNlRGlmZmVyZW5jZSwgUmVzb3VyY2VJbXBhY3QgfSBmcm9tICcuL2RpZmYtdGVtcGxhdGUnO1xuaW1wb3J0IHsgZm9ybWF0VGFibGUgfSBmcm9tICcuL2Zvcm1hdC10YWJsZSc7XG5pbXBvcnQgeyBJYW1DaGFuZ2VzIH0gZnJvbSAnLi9pYW0vaWFtLWNoYW5nZXMnO1xuaW1wb3J0IHsgU2VjdXJpdHlHcm91cENoYW5nZXMgfSBmcm9tICcuL25ldHdvcmsvc2VjdXJpdHktZ3JvdXAtY2hhbmdlcyc7XG5cbi8vIGZyb20gY3gtYXBpXG5jb25zdCBQQVRIX01FVEFEQVRBX0tFWSA9ICdhd3M6Y2RrOnBhdGgnO1xuXG4vKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tcmVxdWlyZS1pbXBvcnRzICovXG5jb25zdCB7IHN0cnVjdHVyZWRQYXRjaCB9ID0gcmVxdWlyZSgnZGlmZicpO1xuLyogZXNsaW50LWVuYWJsZSAqL1xuXG5leHBvcnQgaW50ZXJmYWNlIEZvcm1hdFN0cmVhbSBleHRlbmRzIE5vZGVKUy5Xcml0YWJsZVN0cmVhbSB7XG4gIGNvbHVtbnM/OiBudW1iZXI7XG59XG5cbi8qKlxuICogUmVuZGVycyB0ZW1wbGF0ZSBkaWZmZXJlbmNlcyB0byB0aGUgcHJvY2VzcycgY29uc29sZS5cbiAqXG4gKiBAcGFyYW0gc3RyZWFtICAgICAgICAgICBUaGUgSU8gc3RyZWFtIHdoZXJlIHRvIG91dHB1dCB0aGUgcmVuZGVyZWQgZGlmZi5cbiAqIEBwYXJhbSB0ZW1wbGF0ZURpZmYgICAgIFRlbXBsYXRlRGlmZiB0byBiZSByZW5kZXJlZCB0byB0aGUgY29uc29sZS5cbiAqIEBwYXJhbSBsb2dpY2FsVG9QYXRoTWFwIEEgbWFwIGZyb20gbG9naWNhbCBJRCB0byBjb25zdHJ1Y3QgcGF0aC4gVXNlZnVsIGluXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIHRoZXJlIGlzIG5vIGF3czpjZGs6cGF0aCBtZXRhZGF0YSBpbiB0aGUgdGVtcGxhdGUuXG4gKiBAcGFyYW0gY29udGV4dCAgICAgICAgICB0aGUgbnVtYmVyIG9mIGNvbnRleHQgbGluZXMgdG8gdXNlIGluIGFyYml0cmFyeSBKU09OIGRpZmYgKGRlZmF1bHRzIHRvIDMpLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZm9ybWF0RGlmZmVyZW5jZXMoXG4gIHN0cmVhbTogRm9ybWF0U3RyZWFtLFxuICB0ZW1wbGF0ZURpZmY6IFRlbXBsYXRlRGlmZixcbiAgbG9naWNhbFRvUGF0aE1hcDogeyBbbG9naWNhbElkOiBzdHJpbmddOiBzdHJpbmcgfSA9IHt9LFxuICBjb250ZXh0OiBudW1iZXIgPSAzKSB7XG4gIGNvbnN0IGZvcm1hdHRlciA9IG5ldyBGb3JtYXR0ZXIoc3RyZWFtLCBsb2dpY2FsVG9QYXRoTWFwLCB0ZW1wbGF0ZURpZmYsIGNvbnRleHQpO1xuXG4gIGlmICh0ZW1wbGF0ZURpZmYuYXdzVGVtcGxhdGVGb3JtYXRWZXJzaW9uIHx8IHRlbXBsYXRlRGlmZi50cmFuc2Zvcm0gfHwgdGVtcGxhdGVEaWZmLmRlc2NyaXB0aW9uKSB7XG4gICAgZm9ybWF0dGVyLnByaW50U2VjdGlvbkhlYWRlcignVGVtcGxhdGUnKTtcbiAgICBmb3JtYXR0ZXIuZm9ybWF0RGlmZmVyZW5jZSgnQVdTVGVtcGxhdGVGb3JtYXRWZXJzaW9uJywgJ0FXU1RlbXBsYXRlRm9ybWF0VmVyc2lvbicsIHRlbXBsYXRlRGlmZi5hd3NUZW1wbGF0ZUZvcm1hdFZlcnNpb24pO1xuICAgIGZvcm1hdHRlci5mb3JtYXREaWZmZXJlbmNlKCdUcmFuc2Zvcm0nLCAnVHJhbnNmb3JtJywgdGVtcGxhdGVEaWZmLnRyYW5zZm9ybSk7XG4gICAgZm9ybWF0dGVyLmZvcm1hdERpZmZlcmVuY2UoJ0Rlc2NyaXB0aW9uJywgJ0Rlc2NyaXB0aW9uJywgdGVtcGxhdGVEaWZmLmRlc2NyaXB0aW9uKTtcbiAgICBmb3JtYXR0ZXIucHJpbnRTZWN0aW9uRm9vdGVyKCk7XG4gIH1cblxuICBmb3JtYXRTZWN1cml0eUNoYW5nZXNXaXRoQmFubmVyKGZvcm1hdHRlciwgdGVtcGxhdGVEaWZmKTtcblxuICBmb3JtYXR0ZXIuZm9ybWF0U2VjdGlvbignUGFyYW1ldGVycycsICdQYXJhbWV0ZXInLCB0ZW1wbGF0ZURpZmYucGFyYW1ldGVycyk7XG4gIGZvcm1hdHRlci5mb3JtYXRTZWN0aW9uKCdNZXRhZGF0YScsICdNZXRhZGF0YScsIHRlbXBsYXRlRGlmZi5tZXRhZGF0YSk7XG4gIGZvcm1hdHRlci5mb3JtYXRTZWN0aW9uKCdNYXBwaW5ncycsICdNYXBwaW5nJywgdGVtcGxhdGVEaWZmLm1hcHBpbmdzKTtcbiAgZm9ybWF0dGVyLmZvcm1hdFNlY3Rpb24oJ0NvbmRpdGlvbnMnLCAnQ29uZGl0aW9uJywgdGVtcGxhdGVEaWZmLmNvbmRpdGlvbnMpO1xuICBmb3JtYXR0ZXIuZm9ybWF0U2VjdGlvbignUmVzb3VyY2VzJywgJ1Jlc291cmNlJywgdGVtcGxhdGVEaWZmLnJlc291cmNlcywgZm9ybWF0dGVyLmZvcm1hdFJlc291cmNlRGlmZmVyZW5jZS5iaW5kKGZvcm1hdHRlcikpO1xuICBmb3JtYXR0ZXIuZm9ybWF0U2VjdGlvbignT3V0cHV0cycsICdPdXRwdXQnLCB0ZW1wbGF0ZURpZmYub3V0cHV0cyk7XG4gIGZvcm1hdHRlci5mb3JtYXRTZWN0aW9uKCdPdGhlciBDaGFuZ2VzJywgJ1Vua25vd24nLCB0ZW1wbGF0ZURpZmYudW5rbm93bik7XG59XG5cbi8qKlxuICogUmVuZGVycyBhIGRpZmYgb2Ygc2VjdXJpdHkgY2hhbmdlcyB0byB0aGUgZ2l2ZW4gc3RyZWFtXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmb3JtYXRTZWN1cml0eUNoYW5nZXMoXG4gIHN0cmVhbTogTm9kZUpTLldyaXRhYmxlU3RyZWFtLFxuICB0ZW1wbGF0ZURpZmY6IFRlbXBsYXRlRGlmZixcbiAgbG9naWNhbFRvUGF0aE1hcDogeyBbbG9naWNhbElkOiBzdHJpbmddOiBzdHJpbmcgfSA9IHt9LFxuICBjb250ZXh0PzogbnVtYmVyKSB7XG4gIGNvbnN0IGZvcm1hdHRlciA9IG5ldyBGb3JtYXR0ZXIoc3RyZWFtLCBsb2dpY2FsVG9QYXRoTWFwLCB0ZW1wbGF0ZURpZmYsIGNvbnRleHQpO1xuXG4gIGZvcm1hdFNlY3VyaXR5Q2hhbmdlc1dpdGhCYW5uZXIoZm9ybWF0dGVyLCB0ZW1wbGF0ZURpZmYpO1xufVxuXG5mdW5jdGlvbiBmb3JtYXRTZWN1cml0eUNoYW5nZXNXaXRoQmFubmVyKGZvcm1hdHRlcjogRm9ybWF0dGVyLCB0ZW1wbGF0ZURpZmY6IFRlbXBsYXRlRGlmZikge1xuICBpZiAoIXRlbXBsYXRlRGlmZi5pYW1DaGFuZ2VzLmhhc0NoYW5nZXMgJiYgIXRlbXBsYXRlRGlmZi5zZWN1cml0eUdyb3VwQ2hhbmdlcy5oYXNDaGFuZ2VzKSB7IHJldHVybjsgfVxuICBmb3JtYXR0ZXIuZm9ybWF0SWFtQ2hhbmdlcyh0ZW1wbGF0ZURpZmYuaWFtQ2hhbmdlcyk7XG4gIGZvcm1hdHRlci5mb3JtYXRTZWN1cml0eUdyb3VwQ2hhbmdlcyh0ZW1wbGF0ZURpZmYuc2VjdXJpdHlHcm91cENoYW5nZXMpO1xuXG4gIGZvcm1hdHRlci53YXJuaW5nKCcoTk9URTogVGhlcmUgbWF5IGJlIHNlY3VyaXR5LXJlbGF0ZWQgY2hhbmdlcyBub3QgaW4gdGhpcyBsaXN0LiBTZWUgaHR0cHM6Ly9naXRodWIuY29tL2F3cy9hd3MtY2RrL2lzc3Vlcy8xMjk5KScpO1xuICBmb3JtYXR0ZXIucHJpbnRTZWN0aW9uRm9vdGVyKCk7XG59XG5cbmNvbnN0IEFERElUSU9OID0gY2hhbGsuZ3JlZW4oJ1srXScpO1xuY29uc3QgQ09OVEVYVCA9IGNoYWxrLmdyZXkoJ1sgXScpO1xuY29uc3QgVVBEQVRFID0gY2hhbGsueWVsbG93KCdbfl0nKTtcbmNvbnN0IFJFTU9WQUwgPSBjaGFsay5yZWQoJ1stXScpO1xuY29uc3QgSU1QT1JUID0gY2hhbGsuYmx1ZSgnW+KGkF0nKTtcblxuZXhwb3J0IGNsYXNzIEZvcm1hdHRlciB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVhZG9ubHkgc3RyZWFtOiBGb3JtYXRTdHJlYW0sXG4gICAgcHJpdmF0ZSByZWFkb25seSBsb2dpY2FsVG9QYXRoTWFwOiB7IFtsb2dpY2FsSWQ6IHN0cmluZ106IHN0cmluZyB9LFxuICAgIGRpZmY/OiBUZW1wbGF0ZURpZmYsXG4gICAgcHJpdmF0ZSByZWFkb25seSBjb250ZXh0OiBudW1iZXIgPSAzKSB7XG4gICAgLy8gUmVhZCBhZGRpdGlvbmFsIGNvbnN0cnVjdCBwYXRocyBmcm9tIHRoZSBkaWZmIGlmIGl0IGlzIHN1cHBsaWVkXG4gICAgaWYgKGRpZmYpIHtcbiAgICAgIHRoaXMucmVhZENvbnN0cnVjdFBhdGhzRnJvbShkaWZmKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgcHJpbnQoZm10OiBzdHJpbmcsIC4uLmFyZ3M6IGFueVtdKSB7XG4gICAgdGhpcy5zdHJlYW0ud3JpdGUoY2hhbGsud2hpdGUoZm9ybWF0KGZtdCwgLi4uYXJncykpICsgJ1xcbicpO1xuICB9XG5cbiAgcHVibGljIHdhcm5pbmcoZm10OiBzdHJpbmcsIC4uLmFyZ3M6IGFueVtdKSB7XG4gICAgdGhpcy5zdHJlYW0ud3JpdGUoY2hhbGsueWVsbG93KGZvcm1hdChmbXQsIC4uLmFyZ3MpKSArICdcXG4nKTtcbiAgfVxuXG4gIHB1YmxpYyBmb3JtYXRTZWN0aW9uPFYsIFQgZXh0ZW5kcyBEaWZmZXJlbmNlPFY+PihcbiAgICB0aXRsZTogc3RyaW5nLFxuICAgIGVudHJ5VHlwZTogc3RyaW5nLFxuICAgIGNvbGxlY3Rpb246IERpZmZlcmVuY2VDb2xsZWN0aW9uPFYsIFQ+LFxuICAgIGZvcm1hdHRlcjogKHR5cGU6IHN0cmluZywgaWQ6IHN0cmluZywgZGlmZjogVCkgPT4gdm9pZCA9IHRoaXMuZm9ybWF0RGlmZmVyZW5jZS5iaW5kKHRoaXMpKSB7XG5cbiAgICBpZiAoY29sbGVjdGlvbi5kaWZmZXJlbmNlQ291bnQgPT09IDApIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLnByaW50U2VjdGlvbkhlYWRlcih0aXRsZSk7XG4gICAgY29sbGVjdGlvbi5mb3JFYWNoRGlmZmVyZW5jZSgoaWQsIGRpZmYpID0+IGZvcm1hdHRlcihlbnRyeVR5cGUsIGlkLCBkaWZmKSk7XG4gICAgdGhpcy5wcmludFNlY3Rpb25Gb290ZXIoKTtcbiAgfVxuXG4gIHB1YmxpYyBwcmludFNlY3Rpb25IZWFkZXIodGl0bGU6IHN0cmluZykge1xuICAgIHRoaXMucHJpbnQoY2hhbGsudW5kZXJsaW5lKGNoYWxrLmJvbGQodGl0bGUpKSk7XG4gIH1cblxuICBwdWJsaWMgcHJpbnRTZWN0aW9uRm9vdGVyKCkge1xuICAgIHRoaXMucHJpbnQoJycpO1xuICB9XG5cbiAgLyoqXG4gICAqIFByaW50IGEgc2ltcGxlIGRpZmZlcmVuY2UgZm9yIGEgZ2l2ZW4gbmFtZWQgZW50aXR5LlxuICAgKlxuICAgKiBAcGFyYW0gbG9naWNhbElkIHRoZSBuYW1lIG9mIHRoZSBlbnRpdHkgdGhhdCBpcyBkaWZmZXJlbnQuXG4gICAqIEBwYXJhbSBkaWZmIHRoZSBkaWZmZXJlbmNlIHRvIGJlIHJlbmRlcmVkLlxuICAgKi9cbiAgcHVibGljIGZvcm1hdERpZmZlcmVuY2UodHlwZTogc3RyaW5nLCBsb2dpY2FsSWQ6IHN0cmluZywgZGlmZjogRGlmZmVyZW5jZTxhbnk+IHwgdW5kZWZpbmVkKSB7XG4gICAgaWYgKCFkaWZmIHx8ICFkaWZmLmlzRGlmZmVyZW50KSB7IHJldHVybjsgfVxuXG4gICAgbGV0IHZhbHVlO1xuXG4gICAgY29uc3Qgb2xkVmFsdWUgPSB0aGlzLmZvcm1hdFZhbHVlKGRpZmYub2xkVmFsdWUsIGNoYWxrLnJlZCk7XG4gICAgY29uc3QgbmV3VmFsdWUgPSB0aGlzLmZvcm1hdFZhbHVlKGRpZmYubmV3VmFsdWUsIGNoYWxrLmdyZWVuKTtcbiAgICBpZiAoZGlmZi5pc0FkZGl0aW9uKSB7XG4gICAgICB2YWx1ZSA9IG5ld1ZhbHVlO1xuICAgIH0gZWxzZSBpZiAoZGlmZi5pc1VwZGF0ZSkge1xuICAgICAgdmFsdWUgPSBgJHtvbGRWYWx1ZX0gdG8gJHtuZXdWYWx1ZX1gO1xuICAgIH0gZWxzZSBpZiAoZGlmZi5pc1JlbW92YWwpIHtcbiAgICAgIHZhbHVlID0gb2xkVmFsdWU7XG4gICAgfVxuXG4gICAgdGhpcy5wcmludChgJHt0aGlzLmZvcm1hdFByZWZpeChkaWZmKX0gJHtjaGFsay5jeWFuKHR5cGUpfSAke3RoaXMuZm9ybWF0TG9naWNhbElkKGxvZ2ljYWxJZCl9OiAke3ZhbHVlfWApO1xuICB9XG5cbiAgLyoqXG4gICAqIFByaW50IGEgcmVzb3VyY2UgZGlmZmVyZW5jZSBmb3IgYSBnaXZlbiBsb2dpY2FsIElELlxuICAgKlxuICAgKiBAcGFyYW0gbG9naWNhbElkIHRoZSBsb2dpY2FsIElEIG9mIHRoZSByZXNvdXJjZSB0aGF0IGNoYW5nZWQuXG4gICAqIEBwYXJhbSBkaWZmICAgICAgdGhlIGNoYW5nZSB0byBiZSByZW5kZXJlZC5cbiAgICovXG4gIHB1YmxpYyBmb3JtYXRSZXNvdXJjZURpZmZlcmVuY2UoX3R5cGU6IHN0cmluZywgbG9naWNhbElkOiBzdHJpbmcsIGRpZmY6IFJlc291cmNlRGlmZmVyZW5jZSkge1xuICAgIGlmICghZGlmZi5pc0RpZmZlcmVudCkgeyByZXR1cm47IH1cblxuICAgIGNvbnN0IHJlc291cmNlVHlwZSA9IGRpZmYuaXNSZW1vdmFsID8gZGlmZi5vbGRSZXNvdXJjZVR5cGUgOiBkaWZmLm5ld1Jlc291cmNlVHlwZTtcblxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBtYXgtbGVuXG4gICAgdGhpcy5wcmludChgJHt0aGlzLmZvcm1hdFJlc291cmNlUHJlZml4KGRpZmYpfSAke3RoaXMuZm9ybWF0VmFsdWUocmVzb3VyY2VUeXBlLCBjaGFsay5jeWFuKX0gJHt0aGlzLmZvcm1hdExvZ2ljYWxJZChsb2dpY2FsSWQpfSAke3RoaXMuZm9ybWF0SW1wYWN0KGRpZmYuY2hhbmdlSW1wYWN0KX1gKTtcblxuICAgIGlmIChkaWZmLmlzVXBkYXRlKSB7XG4gICAgICBjb25zdCBkaWZmZXJlbmNlQ291bnQgPSBkaWZmLmRpZmZlcmVuY2VDb3VudDtcbiAgICAgIGxldCBwcm9jZXNzZWRDb3VudCA9IDA7XG4gICAgICBkaWZmLmZvckVhY2hEaWZmZXJlbmNlKChfLCBuYW1lLCB2YWx1ZXMpID0+IHtcbiAgICAgICAgcHJvY2Vzc2VkQ291bnQgKz0gMTtcbiAgICAgICAgdGhpcy5mb3JtYXRUcmVlRGlmZihuYW1lLCB2YWx1ZXMsIHByb2Nlc3NlZENvdW50ID09PSBkaWZmZXJlbmNlQ291bnQpO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGZvcm1hdFJlc291cmNlUHJlZml4KGRpZmY6IFJlc291cmNlRGlmZmVyZW5jZSkge1xuICAgIGlmIChkaWZmLmlzSW1wb3J0KSB7IHJldHVybiBJTVBPUlQ7IH1cblxuICAgIHJldHVybiB0aGlzLmZvcm1hdFByZWZpeChkaWZmKTtcbiAgfVxuXG4gIHB1YmxpYyBmb3JtYXRQcmVmaXg8VD4oZGlmZjogRGlmZmVyZW5jZTxUPikge1xuICAgIGlmIChkaWZmLmlzQWRkaXRpb24pIHsgcmV0dXJuIEFERElUSU9OOyB9XG4gICAgaWYgKGRpZmYuaXNVcGRhdGUpIHsgcmV0dXJuIFVQREFURTsgfVxuICAgIGlmIChkaWZmLmlzUmVtb3ZhbCkgeyByZXR1cm4gUkVNT1ZBTDsgfVxuICAgIHJldHVybiBjaGFsay53aGl0ZSgnWz9dJyk7XG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHZhbHVlIHRoZSB2YWx1ZSB0byBiZSBmb3JtYXR0ZWQuXG4gICAqIEBwYXJhbSBjb2xvciB0aGUgY29sb3IgdG8gYmUgdXNlZC5cbiAgICpcbiAgICogQHJldHVybnMgdGhlIGZvcm1hdHRlZCBzdHJpbmcsIHdpdGggY29sb3IgYXBwbGllZC5cbiAgICovXG4gIHB1YmxpYyBmb3JtYXRWYWx1ZSh2YWx1ZTogYW55LCBjb2xvcjogKHN0cjogc3RyaW5nKSA9PiBzdHJpbmcpIHtcbiAgICBpZiAodmFsdWUgPT0gbnVsbCkgeyByZXR1cm4gdW5kZWZpbmVkOyB9XG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycpIHsgcmV0dXJuIGNvbG9yKHZhbHVlKTsgfVxuICAgIHJldHVybiBjb2xvcihKU09OLnN0cmluZ2lmeSh2YWx1ZSkpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSBpbXBhY3QgdGhlIGltcGFjdCB0byBiZSBmb3JtYXR0ZWRcbiAgICogQHJldHVybnMgYSB1c2VyLWZyaWVuZGx5LCBjb2xvcmVkIHN0cmluZyByZXByZXNlbnRpbmcgdGhlIGltcGFjdC5cbiAgICovXG4gIHB1YmxpYyBmb3JtYXRJbXBhY3QoaW1wYWN0OiBSZXNvdXJjZUltcGFjdCkge1xuICAgIHN3aXRjaCAoaW1wYWN0KSB7XG4gICAgICBjYXNlIFJlc291cmNlSW1wYWN0Lk1BWV9SRVBMQUNFOlxuICAgICAgICByZXR1cm4gY2hhbGsuaXRhbGljKGNoYWxrLnllbGxvdygnbWF5IGJlIHJlcGxhY2VkJykpO1xuICAgICAgY2FzZSBSZXNvdXJjZUltcGFjdC5XSUxMX1JFUExBQ0U6XG4gICAgICAgIHJldHVybiBjaGFsay5pdGFsaWMoY2hhbGsuYm9sZChjaGFsay5yZWQoJ3JlcGxhY2UnKSkpO1xuICAgICAgY2FzZSBSZXNvdXJjZUltcGFjdC5XSUxMX0RFU1RST1k6XG4gICAgICAgIHJldHVybiBjaGFsay5pdGFsaWMoY2hhbGsuYm9sZChjaGFsay5yZWQoJ2Rlc3Ryb3knKSkpO1xuICAgICAgY2FzZSBSZXNvdXJjZUltcGFjdC5XSUxMX09SUEhBTjpcbiAgICAgICAgcmV0dXJuIGNoYWxrLml0YWxpYyhjaGFsay55ZWxsb3coJ29ycGhhbicpKTtcbiAgICAgIGNhc2UgUmVzb3VyY2VJbXBhY3QuV0lMTF9JTVBPUlQ6XG4gICAgICAgIHJldHVybiBjaGFsay5pdGFsaWMoY2hhbGsuYmx1ZSgnaW1wb3J0JykpO1xuICAgICAgY2FzZSBSZXNvdXJjZUltcGFjdC5XSUxMX1VQREFURTpcbiAgICAgIGNhc2UgUmVzb3VyY2VJbXBhY3QuV0lMTF9DUkVBVEU6XG4gICAgICBjYXNlIFJlc291cmNlSW1wYWN0Lk5PX0NIQU5HRTpcbiAgICAgICAgcmV0dXJuICcnOyAvLyBubyBleHRyYSBpbmZvIGlzIGdhaW5lZCBoZXJlXG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFJlbmRlcnMgYSB0cmVlIG9mIGRpZmZlcmVuY2VzIHVuZGVyIGEgcGFydGljdWxhciBuYW1lLlxuICAgKiBAcGFyYW0gbmFtZSAgICB0aGUgbmFtZSBvZiB0aGUgcm9vdCBvZiB0aGUgdHJlZS5cbiAgICogQHBhcmFtIGRpZmYgICAgdGhlIGRpZmZlcmVuY2Ugb24gdGhlIHRyZWUuXG4gICAqIEBwYXJhbSBsYXN0ICAgIHdoZXRoZXIgdGhpcyBpcyB0aGUgbGFzdCBub2RlIG9mIGEgcGFyZW50IHRyZWUuXG4gICAqL1xuICBwdWJsaWMgZm9ybWF0VHJlZURpZmYobmFtZTogc3RyaW5nLCBkaWZmOiBEaWZmZXJlbmNlPGFueT4sIGxhc3Q6IGJvb2xlYW4pIHtcbiAgICBsZXQgYWRkaXRpb25hbEluZm8gPSAnJztcbiAgICBpZiAoaXNQcm9wZXJ0eURpZmZlcmVuY2UoZGlmZikpIHtcbiAgICAgIGlmIChkaWZmLmNoYW5nZUltcGFjdCA9PT0gUmVzb3VyY2VJbXBhY3QuTUFZX1JFUExBQ0UpIHtcbiAgICAgICAgYWRkaXRpb25hbEluZm8gPSAnIChtYXkgY2F1c2UgcmVwbGFjZW1lbnQpJztcbiAgICAgIH0gZWxzZSBpZiAoZGlmZi5jaGFuZ2VJbXBhY3QgPT09IFJlc291cmNlSW1wYWN0LldJTExfUkVQTEFDRSkge1xuICAgICAgICBhZGRpdGlvbmFsSW5mbyA9ICcgKHJlcXVpcmVzIHJlcGxhY2VtZW50KSc7XG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMucHJpbnQoJyAlc+KUgCAlcyAlcyVzJywgbGFzdCA/ICfilJQnIDogJ+KUnCcsIHRoaXMuY2hhbmdlVGFnKGRpZmYub2xkVmFsdWUsIGRpZmYubmV3VmFsdWUpLCBuYW1lLCBhZGRpdGlvbmFsSW5mbyk7XG4gICAgcmV0dXJuIHRoaXMuZm9ybWF0T2JqZWN0RGlmZihkaWZmLm9sZFZhbHVlLCBkaWZmLm5ld1ZhbHVlLCBgICR7bGFzdCA/ICcgJyA6ICfilIInfWApO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlbmRlcnMgdGhlIGRpZmZlcmVuY2UgYmV0d2VlbiB0d28gb2JqZWN0cywgbG9va2luZyBmb3IgdGhlIGRpZmZlcmVuY2VzIGFzIGRlZXAgYXMgcG9zc2libGUsXG4gICAqIGFuZCByZW5kZXJpbmcgYSB0cmVlIGdyYXBoIG9mIHRoZSBwYXRoIHVudGlsIHRoZSBkaWZmZXJlbmNlIGlzIGZvdW5kLlxuICAgKlxuICAgKiBAcGFyYW0gb2xkT2JqZWN0ICB0aGUgb2xkIG9iamVjdC5cbiAgICogQHBhcmFtIG5ld09iamVjdCAgdGhlIG5ldyBvYmplY3QuXG4gICAqIEBwYXJhbSBsaW5lUHJlZml4IGEgcHJlZml4IChpbmRlbnQtbGlrZSkgdG8gYmUgdXNlZCBvbiBldmVyeSBsaW5lLlxuICAgKi9cbiAgcHVibGljIGZvcm1hdE9iamVjdERpZmYob2xkT2JqZWN0OiBhbnksIG5ld09iamVjdDogYW55LCBsaW5lUHJlZml4OiBzdHJpbmcpIHtcbiAgICBpZiAoKHR5cGVvZiBvbGRPYmplY3QgIT09IHR5cGVvZiBuZXdPYmplY3QpIHx8IEFycmF5LmlzQXJyYXkob2xkT2JqZWN0KSB8fCB0eXBlb2Ygb2xkT2JqZWN0ID09PSAnc3RyaW5nJyB8fCB0eXBlb2Ygb2xkT2JqZWN0ID09PSAnbnVtYmVyJykge1xuICAgICAgaWYgKG9sZE9iamVjdCAhPT0gdW5kZWZpbmVkICYmIG5ld09iamVjdCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGlmICh0eXBlb2Ygb2xkT2JqZWN0ID09PSAnb2JqZWN0JyB8fCB0eXBlb2YgbmV3T2JqZWN0ID09PSAnb2JqZWN0Jykge1xuICAgICAgICAgIGNvbnN0IG9sZFN0ciA9IEpTT04uc3RyaW5naWZ5KG9sZE9iamVjdCwgbnVsbCwgMik7XG4gICAgICAgICAgY29uc3QgbmV3U3RyID0gSlNPTi5zdHJpbmdpZnkobmV3T2JqZWN0LCBudWxsLCAyKTtcbiAgICAgICAgICBjb25zdCBkaWZmID0gX2RpZmZTdHJpbmdzKG9sZFN0ciwgbmV3U3RyLCB0aGlzLmNvbnRleHQpO1xuICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZGlmZi5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgdGhpcy5wcmludCgnJXMgICAlcyAlcycsIGxpbmVQcmVmaXgsIGkgPT09IDAgPyAn4pSU4pSAJyA6ICcgICcsIGRpZmZbaV0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLnByaW50KCclcyAgIOKUnOKUgCAlcyAlcycsIGxpbmVQcmVmaXgsIFJFTU9WQUwsIHRoaXMuZm9ybWF0VmFsdWUob2xkT2JqZWN0LCBjaGFsay5yZWQpKTtcbiAgICAgICAgICB0aGlzLnByaW50KCclcyAgIOKUlOKUgCAlcyAlcycsIGxpbmVQcmVmaXgsIEFERElUSU9OLCB0aGlzLmZvcm1hdFZhbHVlKG5ld09iamVjdCwgY2hhbGsuZ3JlZW4pKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmIChvbGRPYmplY3QgIT09IHVuZGVmaW5lZCAvKiAmJiBuZXdPYmplY3QgPT09IHVuZGVmaW5lZCAqLykge1xuICAgICAgICB0aGlzLnByaW50KCclcyAgIOKUlOKUgCAlcycsIGxpbmVQcmVmaXgsIHRoaXMuZm9ybWF0VmFsdWUob2xkT2JqZWN0LCBjaGFsay5yZWQpKTtcbiAgICAgIH0gZWxzZSAvKiBpZiAob2xkT2JqZWN0ID09PSB1bmRlZmluZWQgJiYgbmV3T2JqZWN0ICE9PSB1bmRlZmluZWQpICovIHtcbiAgICAgICAgdGhpcy5wcmludCgnJXMgICDilJTilIAgJXMnLCBsaW5lUHJlZml4LCB0aGlzLmZvcm1hdFZhbHVlKG5ld09iamVjdCwgY2hhbGsuZ3JlZW4pKTtcbiAgICAgIH1cbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3Qga2V5U2V0ID0gbmV3IFNldChPYmplY3Qua2V5cyhvbGRPYmplY3QpKTtcbiAgICBPYmplY3Qua2V5cyhuZXdPYmplY3QpLmZvckVhY2goayA9PiBrZXlTZXQuYWRkKGspKTtcbiAgICBjb25zdCBrZXlzID0gbmV3IEFycmF5KC4uLmtleVNldCkuZmlsdGVyKGsgPT4gIWRlZXBFcXVhbChvbGRPYmplY3Rba10sIG5ld09iamVjdFtrXSkpLnNvcnQoKTtcbiAgICBjb25zdCBsYXN0S2V5ID0ga2V5c1trZXlzLmxlbmd0aCAtIDFdO1xuICAgIGZvciAoY29uc3Qga2V5IG9mIGtleXMpIHtcbiAgICAgIGNvbnN0IG9sZFZhbHVlID0gb2xkT2JqZWN0W2tleV07XG4gICAgICBjb25zdCBuZXdWYWx1ZSA9IG5ld09iamVjdFtrZXldO1xuICAgICAgY29uc3QgdHJlZVByZWZpeCA9IGtleSA9PT0gbGFzdEtleSA/ICfilJQnIDogJ+KUnCc7XG4gICAgICBpZiAob2xkVmFsdWUgIT09IHVuZGVmaW5lZCAmJiBuZXdWYWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHRoaXMucHJpbnQoJyVzICAgJXPilIAgJXMgJXM6JywgbGluZVByZWZpeCwgdHJlZVByZWZpeCwgdGhpcy5jaGFuZ2VUYWcob2xkVmFsdWUsIG5ld1ZhbHVlKSwgY2hhbGsuYmx1ZShgLiR7a2V5fWApKTtcbiAgICAgICAgdGhpcy5mb3JtYXRPYmplY3REaWZmKG9sZFZhbHVlLCBuZXdWYWx1ZSwgYCR7bGluZVByZWZpeH0gICAke2tleSA9PT0gbGFzdEtleSA/ICcgJyA6ICfilIInfWApO1xuICAgICAgfSBlbHNlIGlmIChvbGRWYWx1ZSAhPT0gdW5kZWZpbmVkIC8qICYmIG5ld1ZhbHVlID09PSB1bmRlZmluZWQgKi8pIHtcbiAgICAgICAgdGhpcy5wcmludCgnJXMgICAlc+KUgCAlcyBSZW1vdmVkOiAlcycsIGxpbmVQcmVmaXgsIHRyZWVQcmVmaXgsIFJFTU9WQUwsIGNoYWxrLmJsdWUoYC4ke2tleX1gKSk7XG4gICAgICB9IGVsc2UgLyogaWYgKG9sZFZhbHVlID09PSB1bmRlZmluZWQgJiYgbmV3VmFsdWUgIT09IHVuZGVmaW5lZCAqLyB7XG4gICAgICAgIHRoaXMucHJpbnQoJyVzICAgJXPilIAgJXMgQWRkZWQ6ICVzJywgbGluZVByZWZpeCwgdHJlZVByZWZpeCwgQURESVRJT04sIGNoYWxrLmJsdWUoYC4ke2tleX1gKSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSBvbGRWYWx1ZSB0aGUgb2xkIHZhbHVlIG9mIGEgZGlmZmVyZW5jZS5cbiAgICogQHBhcmFtIG5ld1ZhbHVlIHRoZSBuZXcgdmFsdWUgb2YgYSBkaWZmZXJlbmNlLlxuICAgKlxuICAgKiBAcmV0dXJucyBhIHRhZyB0byBiZSByZW5kZXJlZCBpbiB0aGUgZGlmZiwgcmVmbGVjdGluZyB3aGV0aGVyIHRoZSBkaWZmZXJlbmNlXG4gICAqICAgICAgd2FzIGFuIEFERElUSU9OLCBVUERBVEUgb3IgUkVNT1ZBTC5cbiAgICovXG4gIHB1YmxpYyBjaGFuZ2VUYWcob2xkVmFsdWU6IGFueSB8IHVuZGVmaW5lZCwgbmV3VmFsdWU6IGFueSB8IHVuZGVmaW5lZCk6IHN0cmluZyB7XG4gICAgaWYgKG9sZFZhbHVlICE9PSB1bmRlZmluZWQgJiYgbmV3VmFsdWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIFVQREFURTtcbiAgICB9IGVsc2UgaWYgKG9sZFZhbHVlICE9PSB1bmRlZmluZWQgLyogJiYgbmV3VmFsdWUgPT09IHVuZGVmaW5lZCovKSB7XG4gICAgICByZXR1cm4gUkVNT1ZBTDtcbiAgICB9IGVsc2UgLyogaWYgKG9sZFZhbHVlID09PSB1bmRlZmluZWQgJiYgbmV3VmFsdWUgIT09IHVuZGVmaW5lZCkgKi8ge1xuICAgICAgcmV0dXJuIEFERElUSU9OO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBGaW5kICdhd3M6Y2RrOnBhdGgnIG1ldGFkYXRhIGluIHRoZSBkaWZmIGFuZCBhZGQgaXQgdG8gdGhlIGxvZ2ljYWxUb1BhdGhNYXBcbiAgICpcbiAgICogVGhlcmUgYXJlIG11bHRpcGxlIHNvdXJjZXMgb2YgbG9naWNhbElEIC0+IHBhdGggbWFwcGluZ3M6IHN5bnRoIG1ldGFkYXRhXG4gICAqIGFuZCByZXNvdXJjZSBtZXRhZGF0YSwgYW5kIHdlIGNvbWJpbmUgYWxsIHNvdXJjZXMgaW50byBhIHNpbmdsZSBtYXAuXG4gICAqL1xuICBwdWJsaWMgcmVhZENvbnN0cnVjdFBhdGhzRnJvbSh0ZW1wbGF0ZURpZmY6IFRlbXBsYXRlRGlmZikge1xuICAgIGZvciAoY29uc3QgW2xvZ2ljYWxJZCwgcmVzb3VyY2VEaWZmXSBvZiBPYmplY3QuZW50cmllcyh0ZW1wbGF0ZURpZmYucmVzb3VyY2VzKSkge1xuICAgICAgaWYgKCFyZXNvdXJjZURpZmYpIHsgY29udGludWU7IH1cblxuICAgICAgY29uc3Qgb2xkUGF0aE1ldGFkYXRhID0gcmVzb3VyY2VEaWZmLm9sZFZhbHVlPy5NZXRhZGF0YT8uW1BBVEhfTUVUQURBVEFfS0VZXTtcbiAgICAgIGlmIChvbGRQYXRoTWV0YWRhdGEgJiYgIShsb2dpY2FsSWQgaW4gdGhpcy5sb2dpY2FsVG9QYXRoTWFwKSkge1xuICAgICAgICB0aGlzLmxvZ2ljYWxUb1BhdGhNYXBbbG9naWNhbElkXSA9IG9sZFBhdGhNZXRhZGF0YTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgbmV3UGF0aE1ldGFkYXRhID0gcmVzb3VyY2VEaWZmLm5ld1ZhbHVlPy5NZXRhZGF0YT8uW1BBVEhfTUVUQURBVEFfS0VZXTtcbiAgICAgIGlmIChuZXdQYXRoTWV0YWRhdGEgJiYgIShsb2dpY2FsSWQgaW4gdGhpcy5sb2dpY2FsVG9QYXRoTWFwKSkge1xuICAgICAgICB0aGlzLmxvZ2ljYWxUb1BhdGhNYXBbbG9naWNhbElkXSA9IG5ld1BhdGhNZXRhZGF0YTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZm9ybWF0TG9naWNhbElkKGxvZ2ljYWxJZDogc3RyaW5nKSB7XG4gICAgLy8gaWYgd2UgaGF2ZSBhIHBhdGggaW4gdGhlIG1hcCwgcmV0dXJuIGl0XG4gICAgY29uc3Qgbm9ybWFsaXplZCA9IHRoaXMubm9ybWFsaXplZExvZ2ljYWxJZFBhdGgobG9naWNhbElkKTtcblxuICAgIGlmIChub3JtYWxpemVkKSB7XG4gICAgICByZXR1cm4gYCR7bm9ybWFsaXplZH0gJHtjaGFsay5ncmF5KGxvZ2ljYWxJZCl9YDtcbiAgICB9XG5cbiAgICByZXR1cm4gbG9naWNhbElkO1xuICB9XG5cbiAgcHVibGljIG5vcm1hbGl6ZWRMb2dpY2FsSWRQYXRoKGxvZ2ljYWxJZDogc3RyaW5nKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICAvLyBpZiB3ZSBoYXZlIGEgcGF0aCBpbiB0aGUgbWFwLCByZXR1cm4gaXRcbiAgICBjb25zdCBwYXRoID0gdGhpcy5sb2dpY2FsVG9QYXRoTWFwW2xvZ2ljYWxJZF07XG4gICAgcmV0dXJuIHBhdGggPyBub3JtYWxpemVQYXRoKHBhdGgpIDogdW5kZWZpbmVkO1xuXG4gICAgLyoqXG4gICAgICogUGF0aCBpcyBzdXBwb3NlZCB0byBzdGFydCB3aXRoIFwiL3N0YWNrLW5hbWVcIi4gSWYgdGhpcyBpcyB0aGUgY2FzZSAoaS5lLiBwYXRoIGhhcyBtb3JlIHRoYW5cbiAgICAgKiB0d28gY29tcG9uZW50cywgd2UgcmVtb3ZlIHRoZSBmaXJzdCBwYXJ0LiBPdGhlcndpc2UsIHdlIGp1c3QgdXNlIHRoZSBmdWxsIHBhdGguXG4gICAgICogQHBhcmFtIHBcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBub3JtYWxpemVQYXRoKHA6IHN0cmluZykge1xuICAgICAgaWYgKHAuc3RhcnRzV2l0aCgnLycpKSB7XG4gICAgICAgIHAgPSBwLnNsaWNlKDEpO1xuICAgICAgfVxuXG4gICAgICBsZXQgcGFydHMgPSBwLnNwbGl0KCcvJyk7XG4gICAgICBpZiAocGFydHMubGVuZ3RoID4gMSkge1xuICAgICAgICBwYXJ0cyA9IHBhcnRzLnNsaWNlKDEpO1xuXG4gICAgICAgIC8vIHJlbW92ZSB0aGUgbGFzdCBjb21wb25lbnQgaWYgaXQncyBcIlJlc291cmNlXCIgb3IgXCJEZWZhdWx0XCIgKGlmIHdlIGhhdmUgbW9yZSB0aGFuIGEgc2luZ2xlIGNvbXBvbmVudClcbiAgICAgICAgaWYgKHBhcnRzLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgICBjb25zdCBsYXN0ID0gcGFydHNbcGFydHMubGVuZ3RoIC0gMV07XG4gICAgICAgICAgaWYgKGxhc3QgPT09ICdSZXNvdXJjZScgfHwgbGFzdCA9PT0gJ0RlZmF1bHQnKSB7XG4gICAgICAgICAgICBwYXJ0cyA9IHBhcnRzLnNsaWNlKDAsIHBhcnRzLmxlbmd0aCAtIDEpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHAgPSBwYXJ0cy5qb2luKCcvJyk7XG4gICAgICB9XG4gICAgICByZXR1cm4gcDtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZm9ybWF0SWFtQ2hhbmdlcyhjaGFuZ2VzOiBJYW1DaGFuZ2VzKSB7XG4gICAgaWYgKCFjaGFuZ2VzLmhhc0NoYW5nZXMpIHsgcmV0dXJuOyB9XG5cbiAgICBpZiAoY2hhbmdlcy5zdGF0ZW1lbnRzLmhhc0NoYW5nZXMpIHtcbiAgICAgIHRoaXMucHJpbnRTZWN0aW9uSGVhZGVyKCdJQU0gU3RhdGVtZW50IENoYW5nZXMnKTtcbiAgICAgIHRoaXMucHJpbnQoZm9ybWF0VGFibGUodGhpcy5kZWVwU3Vic3RpdHV0ZUJyYWNlZExvZ2ljYWxJZHMoY2hhbmdlcy5zdW1tYXJpemVTdGF0ZW1lbnRzKCkpLCB0aGlzLnN0cmVhbS5jb2x1bW5zKSk7XG4gICAgfVxuXG4gICAgaWYgKGNoYW5nZXMubWFuYWdlZFBvbGljaWVzLmhhc0NoYW5nZXMpIHtcbiAgICAgIHRoaXMucHJpbnRTZWN0aW9uSGVhZGVyKCdJQU0gUG9saWN5IENoYW5nZXMnKTtcbiAgICAgIHRoaXMucHJpbnQoZm9ybWF0VGFibGUodGhpcy5kZWVwU3Vic3RpdHV0ZUJyYWNlZExvZ2ljYWxJZHMoY2hhbmdlcy5zdW1tYXJpemVNYW5hZ2VkUG9saWNpZXMoKSksIHRoaXMuc3RyZWFtLmNvbHVtbnMpKTtcbiAgICB9XG5cbiAgICBpZiAoY2hhbmdlcy5zc29QZXJtaXNzaW9uU2V0cy5oYXNDaGFuZ2VzIHx8IGNoYW5nZXMuc3NvSW5zdGFuY2VBQ0FDb25maWdzLmhhc0NoYW5nZXMgfHwgY2hhbmdlcy5zc29Bc3NpZ25tZW50cy5oYXNDaGFuZ2VzKSB7XG4gICAgICB0aGlzLnByaW50U2VjdGlvbkhlYWRlcignSUFNIElkZW50aXR5IENlbnRlciBDaGFuZ2VzJyk7XG4gICAgICBpZiAoY2hhbmdlcy5zc29QZXJtaXNzaW9uU2V0cy5oYXNDaGFuZ2VzKSB7XG4gICAgICAgIHRoaXMucHJpbnQoZm9ybWF0VGFibGUodGhpcy5kZWVwU3Vic3RpdHV0ZUJyYWNlZExvZ2ljYWxJZHMoY2hhbmdlcy5zdW1tYXJpemVTc29QZXJtaXNzaW9uU2V0cygpKSwgdGhpcy5zdHJlYW0uY29sdW1ucykpO1xuICAgICAgfVxuICAgICAgaWYgKGNoYW5nZXMuc3NvSW5zdGFuY2VBQ0FDb25maWdzLmhhc0NoYW5nZXMpIHtcbiAgICAgICAgdGhpcy5wcmludChmb3JtYXRUYWJsZSh0aGlzLmRlZXBTdWJzdGl0dXRlQnJhY2VkTG9naWNhbElkcyhjaGFuZ2VzLnN1bW1hcml6ZVNzb0luc3RhbmNlQUNBQ29uZmlncygpKSwgdGhpcy5zdHJlYW0uY29sdW1ucykpO1xuICAgICAgfVxuICAgICAgaWYgKGNoYW5nZXMuc3NvQXNzaWdubWVudHMuaGFzQ2hhbmdlcykge1xuICAgICAgICB0aGlzLnByaW50KGZvcm1hdFRhYmxlKHRoaXMuZGVlcFN1YnN0aXR1dGVCcmFjZWRMb2dpY2FsSWRzKGNoYW5nZXMuc3VtbWFyaXplU3NvQXNzaWdubWVudHMoKSksIHRoaXMuc3RyZWFtLmNvbHVtbnMpKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZm9ybWF0U2VjdXJpdHlHcm91cENoYW5nZXMoY2hhbmdlczogU2VjdXJpdHlHcm91cENoYW5nZXMpIHtcbiAgICBpZiAoIWNoYW5nZXMuaGFzQ2hhbmdlcykgeyByZXR1cm47IH1cblxuICAgIHRoaXMucHJpbnRTZWN0aW9uSGVhZGVyKCdTZWN1cml0eSBHcm91cCBDaGFuZ2VzJyk7XG4gICAgdGhpcy5wcmludChmb3JtYXRUYWJsZSh0aGlzLmRlZXBTdWJzdGl0dXRlQnJhY2VkTG9naWNhbElkcyhjaGFuZ2VzLnN1bW1hcml6ZSgpKSwgdGhpcy5zdHJlYW0uY29sdW1ucykpO1xuICB9XG5cbiAgcHVibGljIGRlZXBTdWJzdGl0dXRlQnJhY2VkTG9naWNhbElkcyhyb3dzOiBzdHJpbmdbXVtdKTogc3RyaW5nW11bXSB7XG4gICAgcmV0dXJuIHJvd3MubWFwKHJvdyA9PiByb3cubWFwKHRoaXMuc3Vic3RpdHV0ZUJyYWNlZExvZ2ljYWxJZHMuYmluZCh0aGlzKSkpO1xuICB9XG5cbiAgLyoqXG4gICAqIFN1YnN0aXR1dGUgYWxsIHN0cmluZ3MgbGlrZSAke0xvZ0lkLnh4eH0gd2l0aCB0aGUgcGF0aCBpbnN0ZWFkIG9mIHRoZSBsb2dpY2FsIElEXG4gICAqL1xuICBwdWJsaWMgc3Vic3RpdHV0ZUJyYWNlZExvZ2ljYWxJZHMoc291cmNlOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiBzb3VyY2UucmVwbGFjZSgvXFwkXFx7KFteLn1dKykoLltefV0rKT9cXH0vaWcsIChfbWF0Y2gsIGxvZ0lkLCBzdWZmaXgpID0+IHtcbiAgICAgIHJldHVybiAnJHsnICsgKHRoaXMubm9ybWFsaXplZExvZ2ljYWxJZFBhdGgobG9nSWQpIHx8IGxvZ0lkKSArIChzdWZmaXggfHwgJycpICsgJ30nO1xuICAgIH0pO1xuICB9XG59XG5cbi8qKlxuICogQSBwYXRjaCBhcyByZXR1cm5lZCBieSBgYGRpZmYuc3RydWN0dXJlZFBhdGNoYGAuXG4gKi9cbmludGVyZmFjZSBQYXRjaCB7XG4gIC8qKlxuICAgKiBIdW5rcyBpbiB0aGUgcGF0Y2guXG4gICAqL1xuICBodW5rczogUmVhZG9ubHlBcnJheTxQYXRjaEh1bms+O1xufVxuXG4vKipcbiAqIEEgaHVuayBpbiBhIHBhdGNoIHByb2R1Y2VkIGJ5IGBgZGlmZi5zdHJ1Y3R1cmVkUGF0Y2hgYC5cbiAqL1xuaW50ZXJmYWNlIFBhdGNoSHVuayB7XG4gIG9sZFN0YXJ0OiBudW1iZXI7XG4gIG9sZExpbmVzOiBudW1iZXI7XG4gIG5ld1N0YXJ0OiBudW1iZXI7XG4gIG5ld0xpbmVzOiBudW1iZXI7XG4gIGxpbmVzOiBzdHJpbmdbXTtcbn1cblxuLyoqXG4gKiBDcmVhdGVzIGEgdW5pZmllZCBkaWZmIG9mIHR3byBzdHJpbmdzLlxuICpcbiAqIEBwYXJhbSBvbGRTdHIgIHRoZSBcIm9sZFwiIHZlcnNpb24gb2YgdGhlIHN0cmluZy5cbiAqIEBwYXJhbSBuZXdTdHIgIHRoZSBcIm5ld1wiIHZlcnNpb24gb2YgdGhlIHN0cmluZy5cbiAqIEBwYXJhbSBjb250ZXh0IHRoZSBudW1iZXIgb2YgY29udGV4dCBsaW5lcyB0byB1c2UgaW4gYXJiaXRyYXJ5IEpTT04gZGlmZi5cbiAqXG4gKiBAcmV0dXJucyBhbiBhcnJheSBvZiBkaWZmIGxpbmVzLlxuICovXG5mdW5jdGlvbiBfZGlmZlN0cmluZ3Mob2xkU3RyOiBzdHJpbmcsIG5ld1N0cjogc3RyaW5nLCBjb250ZXh0OiBudW1iZXIpOiBzdHJpbmdbXSB7XG4gIGNvbnN0IHBhdGNoOiBQYXRjaCA9IHN0cnVjdHVyZWRQYXRjaChudWxsLCBudWxsLCBvbGRTdHIsIG5ld1N0ciwgbnVsbCwgbnVsbCwgeyBjb250ZXh0IH0pO1xuICBjb25zdCByZXN1bHQgPSBuZXcgQXJyYXk8c3RyaW5nPigpO1xuICBmb3IgKGNvbnN0IGh1bmsgb2YgcGF0Y2guaHVua3MpIHtcbiAgICByZXN1bHQucHVzaChjaGFsay5tYWdlbnRhKGBAQCAtJHtodW5rLm9sZFN0YXJ0fSwke2h1bmsub2xkTGluZXN9ICske2h1bmsubmV3U3RhcnR9LCR7aHVuay5uZXdMaW5lc30gQEBgKSk7XG4gICAgY29uc3QgYmFzZUluZGVudCA9IF9maW5kSW5kZW50KGh1bmsubGluZXMpO1xuICAgIGZvciAoY29uc3QgbGluZSBvZiBodW5rLmxpbmVzKSB7XG4gICAgICAvLyBEb24ndCBjYXJlIGFib3V0IHRlcm1pbmF0aW9uIG5ld2xpbmUuXG4gICAgICBpZiAobGluZSA9PT0gJ1xcXFwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZScpIHsgY29udGludWU7IH1cbiAgICAgIGNvbnN0IG1hcmtlciA9IGxpbmUuY2hhckF0KDApO1xuICAgICAgY29uc3QgdGV4dCA9IGxpbmUuc2xpY2UoMSArIGJhc2VJbmRlbnQpO1xuICAgICAgc3dpdGNoIChtYXJrZXIpIHtcbiAgICAgICAgY2FzZSAnICc6XG4gICAgICAgICAgcmVzdWx0LnB1c2goYCR7Q09OVEVYVH0gJHt0ZXh0fWApO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICcrJzpcbiAgICAgICAgICByZXN1bHQucHVzaChjaGFsay5ib2xkKGAke0FERElUSU9OfSAke2NoYWxrLmdyZWVuKHRleHQpfWApKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnLSc6XG4gICAgICAgICAgcmVzdWx0LnB1c2goY2hhbGsuYm9sZChgJHtSRU1PVkFMfSAke2NoYWxrLnJlZCh0ZXh0KX1gKSk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBVbmV4cGVjdGVkIGRpZmYgbWFya2VyOiAke21hcmtlcn0gKGZ1bGwgbGluZTogJHtsaW5lfSlgKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcblxuICBmdW5jdGlvbiBfZmluZEluZGVudChsaW5lczogc3RyaW5nW10pOiBudW1iZXIge1xuICAgIGxldCBpbmRlbnQgPSBOdW1iZXIuTUFYX1NBRkVfSU5URUdFUjtcbiAgICBmb3IgKGNvbnN0IGxpbmUgb2YgbGluZXMpIHtcbiAgICAgIGZvciAobGV0IGkgPSAxOyBpIDwgbGluZS5sZW5ndGg7IGkrKykge1xuICAgICAgICBpZiAobGluZS5jaGFyQXQoaSkgIT09ICcgJykge1xuICAgICAgICAgIGluZGVudCA9IGluZGVudCA+IGkgLSAxID8gaSAtIDEgOiBpbmRlbnQ7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGluZGVudDtcbiAgfVxufVxuIl19","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.IamChanges = void 0;\nconst service_spec_types_1 = require(\"@aws-cdk/service-spec-types\");\nconst chalk = require(\"chalk\");\nconst iam_identity_center_1 = require(\"./iam-identity-center\");\nconst managed_policy_1 = require(\"./managed-policy\");\nconst statement_1 = require(\"./statement\");\nconst diffable_1 = require(\"../diffable\");\nconst render_intrinsics_1 = require(\"../render-intrinsics\");\nconst util_1 = require(\"../util\");\n/**\n * Changes to IAM statements and IAM identity center\n */\nclass IamChanges {\n constructor(props) {\n // each entry in a DiffableCollection is used to generate a single row of the security changes table that is presented for cdk diff and cdk deploy.\n this.statements = new diffable_1.DiffableCollection();\n this.managedPolicies = new diffable_1.DiffableCollection();\n this.ssoPermissionSets = new diffable_1.DiffableCollection();\n this.ssoAssignments = new diffable_1.DiffableCollection();\n this.ssoInstanceACAConfigs = new diffable_1.DiffableCollection();\n for (const propertyChange of props.propertyChanges) {\n this.readPropertyChange(propertyChange);\n }\n for (const resourceChange of props.resourceChanges) {\n this.readResourceChange(resourceChange);\n }\n this.statements.calculateDiff();\n this.managedPolicies.calculateDiff();\n this.ssoPermissionSets.calculateDiff();\n this.ssoAssignments.calculateDiff();\n this.ssoInstanceACAConfigs.calculateDiff();\n }\n get hasChanges() {\n return (this.statements.hasChanges\n || this.managedPolicies.hasChanges\n || this.ssoPermissionSets.hasChanges\n || this.ssoAssignments.hasChanges\n || this.ssoInstanceACAConfigs.hasChanges);\n }\n /**\n * Return whether the changes include broadened permissions\n *\n * Permissions are broadened if positive statements are added or\n * negative statements are removed, or if managed policies are added.\n */\n get permissionsBroadened() {\n return this.statements.additions.some(s => !s.isNegativeStatement)\n || this.statements.removals.some(s => s.isNegativeStatement)\n || this.managedPolicies.hasAdditions\n || this.ssoPermissionSets.hasAdditions\n || this.ssoAssignments.hasAdditions\n || this.ssoInstanceACAConfigs.hasAdditions;\n }\n /**\n * Return a summary table of changes\n */\n summarizeStatements() {\n const ret = [];\n const header = ['', 'Resource', 'Effect', 'Action', 'Principal', 'Condition'];\n // First generate all lines, then sort on Resource so that similar resources are together\n for (const statement of this.statements.additions) {\n const renderedStatement = statement.render();\n ret.push([\n '+',\n renderedStatement.resource,\n renderedStatement.effect,\n renderedStatement.action,\n renderedStatement.principal,\n renderedStatement.condition,\n ].map(s => chalk.green(s)));\n }\n for (const statement of this.statements.removals) {\n const renderedStatement = statement.render();\n ret.push([\n '-',\n renderedStatement.resource,\n renderedStatement.effect,\n renderedStatement.action,\n renderedStatement.principal,\n renderedStatement.condition,\n ].map(s => chalk.red(s)));\n }\n // Sort by 2nd column\n ret.sort((0, util_1.makeComparator)((row) => [row[1]]));\n ret.splice(0, 0, header);\n return ret;\n }\n summarizeManagedPolicies() {\n const ret = [];\n const header = ['', 'Resource', 'Managed Policy ARN'];\n for (const att of this.managedPolicies.additions) {\n ret.push([\n '+',\n att.identityArn,\n att.managedPolicyArn,\n ].map(s => chalk.green(s)));\n }\n for (const att of this.managedPolicies.removals) {\n ret.push([\n '-',\n att.identityArn,\n att.managedPolicyArn,\n ].map(s => chalk.red(s)));\n }\n // Sort by 2nd column\n ret.sort((0, util_1.makeComparator)((row) => [row[1]]));\n ret.splice(0, 0, header);\n return ret;\n }\n summarizeSsoAssignments() {\n const ret = [];\n const header = ['', 'Resource', 'InstanceArn', 'PermissionSetArn', 'PrincipalId', 'PrincipalType', 'TargetId', 'TargetType'];\n for (const att of this.ssoAssignments.additions) {\n ret.push([\n '+',\n att.cfnLogicalId || '',\n att.ssoInstanceArn || '',\n att.permissionSetArn || '',\n att.principalId || '',\n att.principalType || '',\n att.targetId || '',\n att.targetType || '',\n ].map(s => chalk.green(s)));\n }\n for (const att of this.ssoAssignments.removals) {\n ret.push([\n '-',\n att.cfnLogicalId || '',\n att.ssoInstanceArn || '',\n att.permissionSetArn || '',\n att.principalId || '',\n att.principalType || '',\n att.targetId || '',\n att.targetType || '',\n ].map(s => chalk.red(s)));\n }\n // Sort by resource name to ensure a unique value is used for sorting\n ret.sort((0, util_1.makeComparator)((row) => [row[1]]));\n ret.splice(0, 0, header);\n return ret;\n }\n summarizeSsoInstanceACAConfigs() {\n const ret = [];\n const header = ['', 'Resource', 'InstanceArn', 'AccessControlAttributes'];\n function formatAccessControlAttribute(aca) {\n return `Key: ${aca?.Key}, Values: [${aca?.Value?.Source.join(', ')}]`;\n }\n for (const att of this.ssoInstanceACAConfigs.additions) {\n ret.push([\n '+',\n att.cfnLogicalId || '',\n att.ssoInstanceArn || '',\n att.accessControlAttributes?.map(formatAccessControlAttribute).join('\\n') || '',\n ].map(s => chalk.green(s)));\n }\n for (const att of this.ssoInstanceACAConfigs.removals) {\n ret.push([\n '-',\n att.cfnLogicalId || '',\n att.ssoInstanceArn || '',\n att.accessControlAttributes?.map(formatAccessControlAttribute).join('\\n') || '',\n ].map(s => chalk.red(s)));\n }\n // Sort by resource name to ensure a unique value is used for sorting\n ret.sort((0, util_1.makeComparator)((row) => [row[1]]));\n ret.splice(0, 0, header);\n return ret;\n }\n summarizeSsoPermissionSets() {\n const ret = [];\n const header = ['', 'Resource', 'InstanceArn', 'PermissionSet name', 'PermissionsBoundary', 'CustomerManagedPolicyReferences'];\n function formatManagedPolicyRef(s) {\n return `Name: ${s?.Name || ''}, Path: ${s?.Path || ''}`;\n }\n function formatSsoPermissionsBoundary(ssoPb) {\n // ManagedPolicyArn OR CustomerManagedPolicyReference can be specified -- but not both.\n if (ssoPb?.ManagedPolicyArn !== undefined) {\n return `ManagedPolicyArn: ${ssoPb?.ManagedPolicyArn || ''}`;\n }\n else if (ssoPb?.CustomerManagedPolicyReference !== undefined) {\n return `CustomerManagedPolicyReference: {\\n ${formatManagedPolicyRef(ssoPb?.CustomerManagedPolicyReference)}\\n}`;\n }\n else {\n return '';\n }\n }\n for (const att of this.ssoPermissionSets.additions) {\n ret.push([\n '+',\n att.cfnLogicalId || '',\n att.ssoInstanceArn || '',\n att.name || '',\n formatSsoPermissionsBoundary(att.ssoPermissionsBoundary),\n att.ssoCustomerManagedPolicyReferences?.map(formatManagedPolicyRef).join('\\n') || '',\n ].map(s => chalk.green(s)));\n }\n for (const att of this.ssoPermissionSets.removals) {\n ret.push([\n '-',\n att.cfnLogicalId || '',\n att.ssoInstanceArn || '',\n att.name || '',\n formatSsoPermissionsBoundary(att.ssoPermissionsBoundary),\n att.ssoCustomerManagedPolicyReferences?.map(formatManagedPolicyRef).join('\\n') || '',\n ].map(s => chalk.red(s)));\n }\n // Sort by resource name to ensure a unique value is used for sorting\n ret.sort((0, util_1.makeComparator)((row) => [row[1]]));\n ret.splice(0, 0, header);\n return ret;\n }\n /**\n * Return a machine-readable version of the changes.\n * This is only used in tests.\n *\n * @internal\n */\n _toJson() {\n return (0, util_1.deepRemoveUndefined)({\n statementAdditions: (0, util_1.dropIfEmpty)(this.statements.additions.map(s => s._toJson())),\n statementRemovals: (0, util_1.dropIfEmpty)(this.statements.removals.map(s => s._toJson())),\n managedPolicyAdditions: (0, util_1.dropIfEmpty)(this.managedPolicies.additions.map(s => s._toJson())),\n managedPolicyRemovals: (0, util_1.dropIfEmpty)(this.managedPolicies.removals.map(s => s._toJson())),\n });\n }\n readPropertyChange(propertyChange) {\n switch (propertyChange.scrutinyType) {\n case service_spec_types_1.PropertyScrutinyType.InlineIdentityPolicies:\n // AWS::IAM::{ Role | User | Group }.Policies\n this.statements.addOld(...this.readIdentityPolicies(propertyChange.oldValue, propertyChange.resourceLogicalId));\n this.statements.addNew(...this.readIdentityPolicies(propertyChange.newValue, propertyChange.resourceLogicalId));\n break;\n case service_spec_types_1.PropertyScrutinyType.InlineResourcePolicy:\n // Any PolicyDocument on a resource (including AssumeRolePolicyDocument)\n this.statements.addOld(...this.readResourceStatements(propertyChange.oldValue, propertyChange.resourceLogicalId));\n this.statements.addNew(...this.readResourceStatements(propertyChange.newValue, propertyChange.resourceLogicalId));\n break;\n case service_spec_types_1.PropertyScrutinyType.ManagedPolicies:\n // Just a list of managed policies\n this.managedPolicies.addOld(...this.readManagedPolicies(propertyChange.oldValue, propertyChange.resourceLogicalId));\n this.managedPolicies.addNew(...this.readManagedPolicies(propertyChange.newValue, propertyChange.resourceLogicalId));\n break;\n }\n }\n readResourceChange(resourceChange) {\n switch (resourceChange.scrutinyType) {\n case service_spec_types_1.ResourceScrutinyType.IdentityPolicyResource:\n // AWS::IAM::Policy\n this.statements.addOld(...this.readIdentityPolicyResource(resourceChange.oldProperties));\n this.statements.addNew(...this.readIdentityPolicyResource(resourceChange.newProperties));\n break;\n case service_spec_types_1.ResourceScrutinyType.ResourcePolicyResource:\n // AWS::*::{Bucket,Queue,Topic}Policy\n this.statements.addOld(...this.readResourcePolicyResource(resourceChange.oldProperties));\n this.statements.addNew(...this.readResourcePolicyResource(resourceChange.newProperties));\n break;\n case service_spec_types_1.ResourceScrutinyType.LambdaPermission:\n this.statements.addOld(...this.readLambdaStatements(resourceChange.oldProperties));\n this.statements.addNew(...this.readLambdaStatements(resourceChange.newProperties));\n break;\n case service_spec_types_1.ResourceScrutinyType.SsoPermissionSet:\n this.ssoPermissionSets.addOld(...this.readSsoPermissionSet(resourceChange.oldProperties, resourceChange.resourceLogicalId));\n this.ssoPermissionSets.addNew(...this.readSsoPermissionSet(resourceChange.newProperties, resourceChange.resourceLogicalId));\n break;\n case service_spec_types_1.ResourceScrutinyType.SsoAssignmentResource:\n this.ssoAssignments.addOld(...this.readSsoAssignments(resourceChange.oldProperties, resourceChange.resourceLogicalId));\n this.ssoAssignments.addNew(...this.readSsoAssignments(resourceChange.newProperties, resourceChange.resourceLogicalId));\n break;\n case service_spec_types_1.ResourceScrutinyType.SsoInstanceACAConfigResource:\n this.ssoInstanceACAConfigs.addOld(...this.readSsoInstanceACAConfigs(resourceChange.oldProperties, resourceChange.resourceLogicalId));\n this.ssoInstanceACAConfigs.addNew(...this.readSsoInstanceACAConfigs(resourceChange.newProperties, resourceChange.resourceLogicalId));\n break;\n }\n }\n /**\n * Parse a list of policies on an identity\n */\n readIdentityPolicies(policies, logicalId) {\n if (policies === undefined || !Array.isArray(policies)) {\n return [];\n }\n const appliesToPrincipal = 'AWS:${' + logicalId + '}';\n return (0, util_1.flatMap)(policies, (policy) => {\n // check if the Policy itself is not an intrinsic, like an Fn::If\n const unparsedStatement = policy.PolicyDocument?.Statement\n ? policy.PolicyDocument.Statement\n : policy;\n return defaultPrincipal(appliesToPrincipal, (0, statement_1.parseStatements)((0, render_intrinsics_1.renderIntrinsics)(unparsedStatement)));\n });\n }\n /**\n * Parse an IAM::Policy resource\n */\n readIdentityPolicyResource(properties) {\n if (properties === undefined) {\n return [];\n }\n properties = (0, render_intrinsics_1.renderIntrinsics)(properties);\n const principals = (properties.Groups || []).concat(properties.Users || []).concat(properties.Roles || []);\n return (0, util_1.flatMap)(principals, (principal) => {\n const ref = 'AWS:' + principal;\n return defaultPrincipal(ref, (0, statement_1.parseStatements)(properties.PolicyDocument.Statement));\n });\n }\n readSsoInstanceACAConfigs(properties, logicalId) {\n if (properties === undefined) {\n return [];\n }\n properties = (0, render_intrinsics_1.renderIntrinsics)(properties);\n return [new iam_identity_center_1.SsoInstanceACAConfig({\n cfnLogicalId: '${' + logicalId + '}',\n ssoInstanceArn: properties.InstanceArn,\n accessControlAttributes: properties.AccessControlAttributes,\n })];\n }\n readSsoAssignments(properties, logicalId) {\n if (properties === undefined) {\n return [];\n }\n properties = (0, render_intrinsics_1.renderIntrinsics)(properties);\n return [new iam_identity_center_1.SsoAssignment({\n cfnLogicalId: '${' + logicalId + '}',\n ssoInstanceArn: properties.InstanceArn,\n permissionSetArn: properties.PermissionSetArn,\n principalId: properties.PrincipalId,\n principalType: properties.PrincipalType,\n targetId: properties.TargetId,\n targetType: properties.TargetType,\n })];\n }\n readSsoPermissionSet(properties, logicalId) {\n if (properties === undefined) {\n return [];\n }\n properties = (0, render_intrinsics_1.renderIntrinsics)(properties);\n return [new iam_identity_center_1.SsoPermissionSet({\n cfnLogicalId: '${' + logicalId + '}',\n name: properties.Name,\n ssoInstanceArn: properties.InstanceArn,\n ssoCustomerManagedPolicyReferences: properties.CustomerManagedPolicyReferences,\n ssoPermissionsBoundary: properties.PermissionsBoundary,\n })];\n }\n readResourceStatements(policy, logicalId) {\n if (policy === undefined) {\n return [];\n }\n const appliesToResource = '${' + logicalId + '.Arn}';\n return defaultResource(appliesToResource, (0, statement_1.parseStatements)((0, render_intrinsics_1.renderIntrinsics)(policy.Statement)));\n }\n /**\n * Parse an AWS::*::{Bucket,Topic,Queue}policy\n */\n readResourcePolicyResource(properties) {\n if (properties === undefined) {\n return [];\n }\n properties = (0, render_intrinsics_1.renderIntrinsics)(properties);\n const policyKeys = Object.keys(properties).filter(key => key.indexOf('Policy') > -1);\n // Find the key that identifies the resource(s) this policy applies to\n const resourceKeys = Object.keys(properties).filter(key => !policyKeys.includes(key) && !key.endsWith('Name'));\n let resources = resourceKeys.length === 1 ? properties[resourceKeys[0]] : ['???'];\n // For some resources, this is a singleton string, for some it's an array\n if (!Array.isArray(resources)) {\n resources = [resources];\n }\n return (0, util_1.flatMap)(resources, (resource) => {\n return defaultResource(resource, (0, statement_1.parseStatements)(properties[policyKeys[0]].Statement));\n });\n }\n readManagedPolicies(policyArns, logicalId) {\n if (!policyArns) {\n return [];\n }\n const rep = '${' + logicalId + '}';\n return managed_policy_1.ManagedPolicyAttachment.parseManagedPolicies(rep, (0, render_intrinsics_1.renderIntrinsics)(policyArns));\n }\n readLambdaStatements(properties) {\n if (!properties) {\n return [];\n }\n return [(0, statement_1.parseLambdaPermission)((0, render_intrinsics_1.renderIntrinsics)(properties))];\n }\n}\nexports.IamChanges = IamChanges;\nIamChanges.IamPropertyScrutinies = [\n service_spec_types_1.PropertyScrutinyType.InlineIdentityPolicies,\n service_spec_types_1.PropertyScrutinyType.InlineResourcePolicy,\n service_spec_types_1.PropertyScrutinyType.ManagedPolicies,\n];\nIamChanges.IamResourceScrutinies = [\n service_spec_types_1.ResourceScrutinyType.ResourcePolicyResource,\n service_spec_types_1.ResourceScrutinyType.IdentityPolicyResource,\n service_spec_types_1.ResourceScrutinyType.LambdaPermission,\n service_spec_types_1.ResourceScrutinyType.SsoAssignmentResource,\n service_spec_types_1.ResourceScrutinyType.SsoInstanceACAConfigResource,\n service_spec_types_1.ResourceScrutinyType.SsoPermissionSet,\n];\n/**\n * Set an undefined or wildcarded principal on these statements\n */\nfunction defaultPrincipal(principal, statements) {\n statements.forEach(s => s.principals.replaceEmpty(principal));\n statements.forEach(s => s.principals.replaceStar(principal));\n return statements;\n}\n/**\n * Set an undefined or wildcarded resource on these statements\n */\nfunction defaultResource(resource, statements) {\n statements.forEach(s => s.resources.replaceEmpty(resource));\n statements.forEach(s => s.resources.replaceStar(resource));\n return statements;\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWFtLWNoYW5nZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpYW0tY2hhbmdlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxvRUFBeUY7QUFDekYsK0JBQStCO0FBQy9CLCtEQUF3STtBQUN4SSxxREFBOEU7QUFDOUUsMkNBQStGO0FBRy9GLDBDQUFpRDtBQUNqRCw0REFBd0Q7QUFDeEQsa0NBQW9GO0FBT3BGOztHQUVHO0FBQ0gsTUFBYSxVQUFVO0lBdUJyQixZQUFZLEtBQXNCO1FBUGxDLG1KQUFtSjtRQUNuSSxlQUFVLEdBQUcsSUFBSSw2QkFBa0IsRUFBYSxDQUFDO1FBQ2pELG9CQUFlLEdBQUcsSUFBSSw2QkFBa0IsRUFBMkIsQ0FBQztRQUNwRSxzQkFBaUIsR0FBRyxJQUFJLDZCQUFrQixFQUFvQixDQUFDO1FBQy9ELG1CQUFjLEdBQUcsSUFBSSw2QkFBa0IsRUFBaUIsQ0FBQztRQUN6RCwwQkFBcUIsR0FBRyxJQUFJLDZCQUFrQixFQUF3QixDQUFDO1FBR3JGLEtBQUssTUFBTSxjQUFjLElBQUksS0FBSyxDQUFDLGVBQWUsRUFBRSxDQUFDO1lBQ25ELElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUMxQyxDQUFDO1FBQ0QsS0FBSyxNQUFNLGNBQWMsSUFBSSxLQUFLLENBQUMsZUFBZSxFQUFFLENBQUM7WUFDbkQsSUFBSSxDQUFDLGtCQUFrQixDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQzFDLENBQUM7UUFFRCxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQ2hDLElBQUksQ0FBQyxlQUFlLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDckMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQ3ZDLElBQUksQ0FBQyxjQUFjLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDcEMsSUFBSSxDQUFDLHFCQUFxQixDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQzdDLENBQUM7SUFF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QUVZLGdDQUFxQixHQUFHO0lBQ3BDLHlDQUFvQixDQUFDLHNCQUFzQjtJQUMzQyx5Q0FBb0IsQ0FBQyxzQkFBc0I7SUFDM0MseUNBQW9CLENBQUMsZ0JBQWdCO0lBQ3JDLHlDQUFvQixDQUFDLHFCQUFxQjtJQUMxQyx5Q0FBb0IsQ0FBQyw0QkFBNEI7SUFDakQseUNBQW9CLENBQUMsZ0JBQWdCO0NBQ3RDLEFBUGtDLENBT2pDO0FBOFpKOztHQUVHO0FBQ0gsU0FBUyxnQkFBZ0IsQ0FBQyxTQUFpQixFQUFFLFVBQXVCO0lBQ2xFLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO0lBQzlELFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO0lBQzdELE9BQU8sVUFBVSxDQUFDO0FBQ3BCLENBQUM7QUFFRDs7R0FFRztBQUNILFNBQVMsZUFBZSxDQUFDLFFBQWdCLEVBQUUsVUFBdUI7SUFDaEUsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7SUFDNUQsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7SUFDM0QsT0FBTyxVQUFVLENBQUM7QUFDcEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFByb3BlcnR5U2NydXRpbnlUeXBlLCBSZXNvdXJjZVNjcnV0aW55VHlwZSB9IGZyb20gJ0Bhd3MtY2RrL3NlcnZpY2Utc3BlYy10eXBlcyc7XG5pbXBvcnQgKiBhcyBjaGFsayBmcm9tICdjaGFsayc7XG5pbXBvcnQgeyBJU3NvSW5zdGFuY2VBQ0FDb25maWcsIElTc29QZXJtaXNzaW9uU2V0LCBTc29Bc3NpZ25tZW50LCBTc29JbnN0YW5jZUFDQUNvbmZpZywgU3NvUGVybWlzc2lvblNldCB9IGZyb20gJy4vaWFtLWlkZW50aXR5LWNlbnRlcic7XG5pbXBvcnQgeyBNYW5hZ2VkUG9saWN5QXR0YWNobWVudCwgTWFuYWdlZFBvbGljeUpzb24gfSBmcm9tICcuL21hbmFnZWQtcG9saWN5JztcbmltcG9ydCB7IHBhcnNlTGFtYmRhUGVybWlzc2lvbiwgcGFyc2VTdGF0ZW1lbnRzLCBTdGF0ZW1lbnQsIFN0YXRlbWVudEpzb24gfSBmcm9tICcuL3N0YXRlbWVudCc7XG5pbXBvcnQgeyBNYXliZVBhcnNlZCB9IGZyb20gJy4uL2RpZmYvbWF5YmUtcGFyc2VkJztcbmltcG9ydCB7IFByb3BlcnR5Q2hhbmdlLCBQcm9wZXJ0eU1hcCwgUmVzb3VyY2VDaGFuZ2UgfSBmcm9tICcuLi9kaWZmL3R5cGVzJztcbmltcG9ydCB7IERpZmZhYmxlQ29sbGVjdGlvbiB9IGZyb20gJy4uL2RpZmZhYmxlJztcbmltcG9ydCB7IHJlbmRlckludHJpbnNpY3MgfSBmcm9tICcuLi9yZW5kZXItaW50cmluc2ljcyc7XG5pbXBvcnQgeyBkZWVwUmVtb3ZlVW5kZWZpbmVkLCBkcm9wSWZFbXB0eSwgZmxhdE1hcCwgbWFrZUNvbXBhcmF0b3IgfSBmcm9tICcuLi91dGlsJztcblxuZXhwb3J0IGludGVyZmFjZSBJYW1DaGFuZ2VzUHJvcHMge1xuICBwcm9wZXJ0eUNoYW5nZXM6IFByb3BlcnR5Q2hhbmdlW107XG4gIHJlc291cmNlQ2hhbmdlczogUmVzb3VyY2VDaGFuZ2VbXTtcbn1cblxuLyoqXG4gKiBDaGFuZ2VzIHRvIElBTSBzdGF0ZW1lbnRzIGFuZCBJQU0gaWRlbnRpdHkgY2VudGVyXG4gKi9cbmV4cG9ydCBjbGFzcyBJYW1DaGFuZ2VzIHtcbiAgcHVibGljIHN0YXRpYyBJYW1Qcm9wZXJ0eVNjcnV0aW5pZXMgPSBbXG4gICAgUHJvcGVydHlTY3J1dGlueVR5cGUuSW5saW5lSWRlbnRpdHlQb2xpY2llcyxcbiAgICBQcm9wZXJ0eVNjcnV0aW55VHlwZS5JbmxpbmVSZXNvdXJjZVBvbGljeSxcbiAgICBQcm9wZXJ0eVNjcnV0aW55VHlwZS5NYW5hZ2VkUG9saWNpZXMsXG4gIF07XG5cbiAgcHVibGljIHN0YXRpYyBJYW1SZXNvdXJjZVNjcnV0aW5pZXMgPSBbXG4gICAgUmVzb3VyY2VTY3J1dGlueVR5cGUuUmVzb3VyY2VQb2xpY3lSZXNvdXJjZSxcbiAgICBSZXNvdXJjZVNjcnV0aW55VHlwZS5JZGVudGl0eVBvbGljeVJlc291cmNlLFxuICAgIFJlc291cmNlU2NydXRpbnlUeXBlLkxhbWJkYVBlcm1pc3Npb24sXG4gICAgUmVzb3VyY2VTY3J1dGlueVR5cGUuU3NvQXNzaWdubWVudFJlc291cmNlLFxuICAgIFJlc291cmNlU2NydXRpbnlUeXBlLlNzb0luc3RhbmNlQUNBQ29uZmlnUmVzb3VyY2UsXG4gICAgUmVzb3VyY2VTY3J1dGlueVR5cGUuU3NvUGVybWlzc2lvblNldCxcbiAgXTtcblxuICAvLyBlYWNoIGVudHJ5IGluIGEgRGlmZmFibGVDb2xsZWN0aW9uIGlzIHVzZWQgdG8gZ2VuZXJhdGUgYSBzaW5nbGUgcm93IG9mIHRoZSBzZWN1cml0eSBjaGFuZ2VzIHRhYmxlIHRoYXQgaXMgcHJlc2VudGVkIGZvciBjZGsgZGlmZiBhbmQgY2RrIGRlcGxveS5cbiAgcHVibGljIHJlYWRvbmx5IHN0YXRlbWVudHMgPSBuZXcgRGlmZmFibGVDb2xsZWN0aW9uPFN0YXRlbWVudD4oKTtcbiAgcHVibGljIHJlYWRvbmx5IG1hbmFnZWRQb2xpY2llcyA9IG5ldyBEaWZmYWJsZUNvbGxlY3Rpb248TWFuYWdlZFBvbGljeUF0dGFjaG1lbnQ+KCk7XG4gIHB1YmxpYyByZWFkb25seSBzc29QZXJtaXNzaW9uU2V0cyA9IG5ldyBEaWZmYWJsZUNvbGxlY3Rpb248U3NvUGVybWlzc2lvblNldD4oKTtcbiAgcHVibGljIHJlYWRvbmx5IHNzb0Fzc2lnbm1lbnRzID0gbmV3IERpZmZhYmxlQ29sbGVjdGlvbjxTc29Bc3NpZ25tZW50PigpO1xuICBwdWJsaWMgcmVhZG9ubHkgc3NvSW5zdGFuY2VBQ0FDb25maWdzID0gbmV3IERpZmZhYmxlQ29sbGVjdGlvbjxTc29JbnN0YW5jZUFDQUNvbmZpZz4oKTtcblxuICBjb25zdHJ1Y3Rvcihwcm9wczogSWFtQ2hhbmdlc1Byb3BzKSB7XG4gICAgZm9yIChjb25zdCBwcm9wZXJ0eUNoYW5nZSBvZiBwcm9wcy5wcm9wZXJ0eUNoYW5nZXMpIHtcbiAgICAgIHRoaXMucmVhZFByb3BlcnR5Q2hhbmdlKHByb3BlcnR5Q2hhbmdlKTtcbiAgICB9XG4gICAgZm9yIChjb25zdCByZXNvdXJjZUNoYW5nZSBvZiBwcm9wcy5yZXNvdXJjZUNoYW5nZXMpIHtcbiAgICAgIHRoaXMucmVhZFJlc291cmNlQ2hhbmdlKHJlc291cmNlQ2hhbmdlKTtcbiAgICB9XG5cbiAgICB0aGlzLnN0YXRlbWVudHMuY2FsY3VsYXRlRGlmZigpO1xuICAgIHRoaXMubWFuYWdlZFBvbGljaWVzLmNhbGN1bGF0ZURpZmYoKTtcbiAgICB0aGlzLnNzb1Blcm1pc3Npb25TZXRzLmNhbGN1bGF0ZURpZmYoKTtcbiAgICB0aGlzLnNzb0Fzc2lnbm1lbnRzLmNhbGN1bGF0ZURpZmYoKTtcbiAgICB0aGlzLnNzb0luc3RhbmNlQUNBQ29uZmlncy5jYWxjdWxhdGVEaWZmKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGhhc0NoYW5nZXMoKSB7XG4gICAgcmV0dXJuICh0aGlzLnN0YXRlbWVudHMuaGFzQ2hhbmdlc1xuICAgICAgfHwgdGhpcy5tYW5hZ2VkUG9saWNpZXMuaGFzQ2hhbmdlc1xuICAgICAgfHwgdGhpcy5zc29QZXJtaXNzaW9uU2V0cy5oYXNDaGFuZ2VzXG4gICAgICB8fCB0aGlzLnNzb0Fzc2lnbm1lbnRzLmhhc0NoYW5nZXNcbiAgICAgIHx8IHRoaXMuc3NvSW5zdGFuY2VBQ0FDb25maWdzLmhhc0NoYW5nZXMpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybiB3aGV0aGVyIHRoZSBjaGFuZ2VzIGluY2x1ZGUgYnJvYWRlbmVkIHBlcm1pc3Npb25zXG4gICAqXG4gICAqIFBlcm1pc3Npb25zIGFyZSBicm9hZGVuZWQgaWYgcG9zaXRpdmUgc3RhdGVtZW50cyBhcmUgYWRkZWQgb3JcbiAgICogbmVnYXRpdmUgc3RhdGVtZW50cyBhcmUgcmVtb3ZlZCwgb3IgaWYgbWFuYWdlZCBwb2xpY2llcyBhcmUgYWRkZWQuXG4gICAqL1xuICBwdWJsaWMgZ2V0IHBlcm1pc3Npb25zQnJvYWRlbmVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnN0YXRlbWVudHMuYWRkaXRpb25zLnNvbWUocyA9PiAhcy5pc05lZ2F0aXZlU3RhdGVtZW50KVxuICAgICAgICB8fCB0aGlzLnN0YXRlbWVudHMucmVtb3ZhbHMuc29tZShzID0+IHMuaXNOZWdhdGl2ZVN0YXRlbWVudClcbiAgICAgICAgfHwgdGhpcy5tYW5hZ2VkUG9saWNpZXMuaGFzQWRkaXRpb25zXG4gICAgICAgIHx8IHRoaXMuc3NvUGVybWlzc2lvblNldHMuaGFzQWRkaXRpb25zXG4gICAgICAgIHx8IHRoaXMuc3NvQXNzaWdubWVudHMuaGFzQWRkaXRpb25zXG4gICAgICAgIHx8IHRoaXMuc3NvSW5zdGFuY2VBQ0FDb25maWdzLmhhc0FkZGl0aW9ucztcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm4gYSBzdW1tYXJ5IHRhYmxlIG9mIGNoYW5nZXNcbiAgICovXG4gIHB1YmxpYyBzdW1tYXJpemVTdGF0ZW1lbnRzKCk6IHN0cmluZ1tdW10ge1xuICAgIGNvbnN0IHJldDogc3RyaW5nW11bXSA9IFtdO1xuXG4gICAgY29uc3QgaGVhZGVyID0gWycnLCAnUmVzb3VyY2UnLCAnRWZmZWN0JywgJ0FjdGlvbicsICdQcmluY2lwYWwnLCAnQ29uZGl0aW9uJ107XG5cbiAgICAvLyBGaXJzdCBnZW5lcmF0ZSBhbGwgbGluZXMsIHRoZW4gc29ydCBvbiBSZXNvdXJjZSBzbyB0aGF0IHNpbWlsYXIgcmVzb3VyY2VzIGFyZSB0b2dldGhlclxuICAgIGZvciAoY29uc3Qgc3RhdGVtZW50IG9mIHRoaXMuc3RhdGVtZW50cy5hZGRpdGlvbnMpIHtcbiAgICAgIGNvbnN0IHJlbmRlcmVkU3RhdGVtZW50ID0gc3RhdGVtZW50LnJlbmRlcigpO1xuICAgICAgcmV0LnB1c2goW1xuICAgICAgICAnKycsXG4gICAgICAgIHJlbmRlcmVkU3RhdGVtZW50LnJlc291cmNlLFxuICAgICAgICByZW5kZXJlZFN0YXRlbWVudC5lZmZlY3QsXG4gICAgICAgIHJlbmRlcmVkU3RhdGVtZW50LmFjdGlvbixcbiAgICAgICAgcmVuZGVyZWRTdGF0ZW1lbnQucHJpbmNpcGFsLFxuICAgICAgICByZW5kZXJlZFN0YXRlbWVudC5jb25kaXRpb24sXG4gICAgICBdLm1hcChzID0+IGNoYWxrLmdyZWVuKHMpKSk7XG4gICAgfVxuICAgIGZvciAoY29uc3Qgc3RhdGVtZW50IG9mIHRoaXMuc3RhdGVtZW50cy5yZW1vdmFscykge1xuICAgICAgY29uc3QgcmVuZGVyZWRTdGF0ZW1lbnQgPSBzdGF0ZW1lbnQucmVuZGVyKCk7XG4gICAgICByZXQucHVzaChbXG4gICAgICAgICctJyxcbiAgICAgICAgcmVuZGVyZWRTdGF0ZW1lbnQucmVzb3VyY2UsXG4gICAgICAgIHJlbmRlcmVkU3RhdGVtZW50LmVmZmVjdCxcbiAgICAgICAgcmVuZGVyZWRTdGF0ZW1lbnQuYWN0aW9uLFxuICAgICAgICByZW5kZXJlZFN0YXRlbWVudC5wcmluY2lwYWwsXG4gICAgICAgIHJlbmRlcmVkU3RhdGVtZW50LmNvbmRpdGlvbixcbiAgICAgIF0ubWFwKHMgPT4gY2hhbGsucmVkKHMpKSk7XG4gICAgfVxuXG4gICAgLy8gU29ydCBieSAybmQgY29sdW1uXG4gICAgcmV0LnNvcnQobWFrZUNvbXBhcmF0b3IoKHJvdzogc3RyaW5nW10pID0+IFtyb3dbMV1dKSk7XG5cbiAgICByZXQuc3BsaWNlKDAsIDAsIGhlYWRlcik7XG5cbiAgICByZXR1cm4gcmV0O1xuICB9XG5cbiAgcHVibGljIHN1bW1hcml6ZU1hbmFnZWRQb2xpY2llcygpOiBzdHJpbmdbXVtdIHtcbiAgICBjb25zdCByZXQ6IHN0cmluZ1tdW10gPSBbXTtcbiAgICBjb25zdCBoZWFkZXIgPSBbJycsICdSZXNvdXJjZScsICdNYW5hZ2VkIFBvbGljeSBBUk4nXTtcblxuICAgIGZvciAoY29uc3QgYXR0IG9mIHRoaXMubWFuYWdlZFBvbGljaWVzLmFkZGl0aW9ucykge1xuICAgICAgcmV0LnB1c2goW1xuICAgICAgICAnKycsXG4gICAgICAgIGF0dC5pZGVudGl0eUFybixcbiAgICAgICAgYXR0Lm1hbmFnZWRQb2xpY3lBcm4sXG4gICAgICBdLm1hcChzID0+IGNoYWxrLmdyZWVuKHMpKSk7XG4gICAgfVxuICAgIGZvciAoY29uc3QgYXR0IG9mIHRoaXMubWFuYWdlZFBvbGljaWVzLnJlbW92YWxzKSB7XG4gICAgICByZXQucHVzaChbXG4gICAgICAgICctJyxcbiAgICAgICAgYXR0LmlkZW50aXR5QXJuLFxuICAgICAgICBhdHQubWFuYWdlZFBvbGljeUFybixcbiAgICAgIF0ubWFwKHMgPT4gY2hhbGsucmVkKHMpKSk7XG4gICAgfVxuXG4gICAgLy8gU29ydCBieSAybmQgY29sdW1uXG4gICAgcmV0LnNvcnQobWFrZUNvbXBhcmF0b3IoKHJvdzogc3RyaW5nW10pID0+IFtyb3dbMV1dKSk7XG5cbiAgICByZXQuc3BsaWNlKDAsIDAsIGhlYWRlcik7XG5cbiAgICByZXR1cm4gcmV0O1xuICB9XG5cbiAgcHVibGljIHN1bW1hcml6ZVNzb0Fzc2lnbm1lbnRzKCk6IHN0cmluZ1tdW10ge1xuICAgIGNvbnN0IHJldDogc3RyaW5nW11bXSA9IFtdO1xuICAgIGNvbnN0IGhlYWRlciA9IFsnJywgJ1Jlc291cmNlJywgJ0luc3RhbmNlQXJuJywgJ1Blcm1pc3Npb25TZXRBcm4nLCAnUHJpbmNpcGFsSWQnLCAnUHJpbmNpcGFsVHlwZScsICdUYXJnZXRJZCcsICdUYXJnZXRUeXBlJ107XG5cbiAgICBmb3IgKGNvbnN0IGF0dCBvZiB0aGlzLnNzb0Fzc2lnbm1lbnRzLmFkZGl0aW9ucykge1xuICAgICAgcmV0LnB1c2goW1xuICAgICAgICAnKycsXG4gICAgICAgIGF0dC5jZm5Mb2dpY2FsSWQgfHwgJycsXG4gICAgICAgIGF0dC5zc29JbnN0YW5jZUFybiB8fCAnJyxcbiAgICAgICAgYXR0LnBlcm1pc3Npb25TZXRBcm4gfHwgJycsXG4gICAgICAgIGF0dC5wcmluY2lwYWxJZCB8fCAnJyxcbiAgICAgICAgYXR0LnByaW5jaXBhbFR5cGUgfHwgJycsXG4gICAgICAgIGF0dC50YXJnZXRJZCB8fCAnJyxcbiAgICAgICAgYXR0LnRhcmdldFR5cGUgfHwgJycsXG4gICAgICBdLm1hcChzID0+IGNoYWxrLmdyZWVuKHMpKSk7XG4gICAgfVxuICAgIGZvciAoY29uc3QgYXR0IG9mIHRoaXMuc3NvQXNzaWdubWVudHMucmVtb3ZhbHMpIHtcbiAgICAgIHJldC5wdXNoKFtcbiAgICAgICAgJy0nLFxuICAgICAgICBhdHQuY2ZuTG9naWNhbElkIHx8ICcnLFxuICAgICAgICBhdHQuc3NvSW5zdGFuY2VBcm4gfHwgJycsXG4gICAgICAgIGF0dC5wZXJtaXNzaW9uU2V0QXJuIHx8ICcnLFxuICAgICAgICBhdHQucHJpbmNpcGFsSWQgfHwgJycsXG4gICAgICAgIGF0dC5wcmluY2lwYWxUeXBlIHx8ICcnLFxuICAgICAgICBhdHQudGFyZ2V0SWQgfHwgJycsXG4gICAgICAgIGF0dC50YXJnZXRUeXBlIHx8ICcnLFxuICAgICAgXS5tYXAocyA9PiBjaGFsay5yZWQocykpKTtcbiAgICB9XG5cbiAgICAvLyBTb3J0IGJ5IHJlc291cmNlIG5hbWUgdG8gZW5zdXJlIGEgdW5pcXVlIHZhbHVlIGlzIHVzZWQgZm9yIHNvcnRpbmdcbiAgICByZXQuc29ydChtYWtlQ29tcGFyYXRvcigocm93OiBzdHJpbmdbXSkgPT4gW3Jvd1sxXV0pKTtcbiAgICByZXQuc3BsaWNlKDAsIDAsIGhlYWRlcik7XG5cbiAgICByZXR1cm4gcmV0O1xuICB9XG5cbiAgcHVibGljIHN1bW1hcml6ZVNzb0luc3RhbmNlQUNBQ29uZmlncygpOiBzdHJpbmdbXVtdIHtcbiAgICBjb25zdCByZXQ6IHN0cmluZ1tdW10gPSBbXTtcbiAgICBjb25zdCBoZWFkZXIgPSBbJycsICdSZXNvdXJjZScsICdJbnN0YW5jZUFybicsICdBY2Nlc3NDb250cm9sQXR0cmlidXRlcyddO1xuXG4gICAgZnVuY3Rpb24gZm9ybWF0QWNjZXNzQ29udHJvbEF0dHJpYnV0ZShhY2E6IElTc29JbnN0YW5jZUFDQUNvbmZpZy5BY2Nlc3NDb250cm9sQXR0cmlidXRlKTogc3RyaW5nIHtcbiAgICAgIHJldHVybiBgS2V5OiAke2FjYT8uS2V5fSwgVmFsdWVzOiBbJHthY2E/LlZhbHVlPy5Tb3VyY2Uuam9pbignLCAnKX1dYDtcbiAgICB9XG5cbiAgICBmb3IgKGNvbnN0IGF0dCBvZiB0aGlzLnNzb0luc3RhbmNlQUNBQ29uZmlncy5hZGRpdGlvbnMpIHtcbiAgICAgIHJldC5wdXNoKFtcbiAgICAgICAgJysnLFxuICAgICAgICBhdHQuY2ZuTG9naWNhbElkIHx8ICcnLFxuICAgICAgICBhdHQuc3NvSW5zdGFuY2VBcm4gfHwgJycsXG4gICAgICAgIGF0dC5hY2Nlc3NDb250cm9sQXR0cmlidXRlcz8ubWFwKGZvcm1hdEFjY2Vzc0NvbnRyb2xBdHRyaWJ1dGUpLmpvaW4oJ1xcbicpIHx8ICcnLFxuICAgICAgXS5tYXAocyA9PiBjaGFsay5ncmVlbihzKSkpO1xuICAgIH1cbiAgICBmb3IgKGNvbnN0IGF0dCBvZiB0aGlzLnNzb0luc3RhbmNlQUNBQ29uZmlncy5yZW1vdmFscykge1xuICAgICAgcmV0LnB1c2goW1xuICAgICAgICAnLScsXG4gICAgICAgIGF0dC5jZm5Mb2dpY2FsSWQgfHwgJycsXG4gICAgICAgIGF0dC5zc29JbnN0YW5jZUFybiB8fCAnJyxcbiAgICAgICAgYXR0LmFjY2Vzc0NvbnRyb2xBdHRyaWJ1dGVzPy5tYXAoZm9ybWF0QWNjZXNzQ29udHJvbEF0dHJpYnV0ZSkuam9pbignXFxuJykgfHwgJycsXG4gICAgICBdLm1hcChzID0+IGNoYWxrLnJlZChzKSkpO1xuICAgIH1cblxuICAgIC8vIFNvcnQgYnkgcmVzb3VyY2UgbmFtZSB0byBlbnN1cmUgYSB1bmlxdWUgdmFsdWUgaXMgdXNlZCBmb3Igc29ydGluZ1xuICAgIHJldC5zb3J0KG1ha2VDb21wYXJhdG9yKChyb3c6IHN0cmluZ1tdKSA9PiBbcm93WzFdXSkpO1xuICAgIHJldC5zcGxpY2UoMCwgMCwgaGVhZGVyKTtcblxuICAgIHJldHVybiByZXQ7XG4gIH1cblxuICBwdWJsaWMgc3VtbWFyaXplU3NvUGVybWlzc2lvblNldHMoKTogc3RyaW5nW11bXSB7XG4gICAgY29uc3QgcmV0OiBzdHJpbmdbXVtdID0gW107XG4gICAgY29uc3QgaGVhZGVyID0gWycnLCAnUmVzb3VyY2UnLCAnSW5zdGFuY2VBcm4nLCAnUGVybWlzc2lvblNldCBuYW1lJywgJ1Blcm1pc3Npb25zQm91bmRhcnknLCAnQ3VzdG9tZXJNYW5hZ2VkUG9saWN5UmVmZXJlbmNlcyddO1xuXG4gICAgZnVuY3Rpb24gZm9ybWF0TWFuYWdlZFBvbGljeVJlZihzOiBJU3NvUGVybWlzc2lvblNldC5DdXN0b21lck1hbmFnZWRQb2xpY3lSZWZlcmVuY2UgfCB1bmRlZmluZWQpOiBzdHJpbmcge1xuICAgICAgcmV0dXJuIGBOYW1lOiAke3M/Lk5hbWUgfHwgJyd9LCBQYXRoOiAke3M/LlBhdGggfHwgJyd9YDtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBmb3JtYXRTc29QZXJtaXNzaW9uc0JvdW5kYXJ5KHNzb1BiOiBJU3NvUGVybWlzc2lvblNldC5QZXJtaXNzaW9uc0JvdW5kYXJ5IHwgdW5kZWZpbmVkKTogc3RyaW5nIHtcbiAgICAgIC8vIE1hbmFnZWRQb2xpY3lBcm4gT1IgQ3VzdG9tZXJNYW5hZ2VkUG9saWN5UmVmZXJlbmNlIGNhbiBiZSBzcGVjaWZpZWQgLS0gYnV0IG5vdCBib3RoLlxuICAgICAgaWYgKHNzb1BiPy5NYW5hZ2VkUG9saWN5QXJuICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgcmV0dXJuIGBNYW5hZ2VkUG9saWN5QXJuOiAke3Nzb1BiPy5NYW5hZ2VkUG9saWN5QXJuIHx8ICcnfWA7XG4gICAgICB9IGVsc2UgaWYgKHNzb1BiPy5DdXN0b21lck1hbmFnZWRQb2xpY3lSZWZlcmVuY2UgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICByZXR1cm4gYEN1c3RvbWVyTWFuYWdlZFBvbGljeVJlZmVyZW5jZToge1xcbiAgJHtmb3JtYXRNYW5hZ2VkUG9saWN5UmVmKHNzb1BiPy5DdXN0b21lck1hbmFnZWRQb2xpY3lSZWZlcmVuY2UpfVxcbn1gO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuICcnO1xuICAgICAgfVxuICAgIH1cblxuICAgIGZvciAoY29uc3QgYXR0IG9mIHRoaXMuc3NvUGVybWlzc2lvblNldHMuYWRkaXRpb25zKSB7XG4gICAgICByZXQucHVzaChbXG4gICAgICAgICcrJyxcbiAgICAgICAgYXR0LmNmbkxvZ2ljYWxJZCB8fCAnJyxcbiAgICAgICAgYXR0LnNzb0luc3RhbmNlQXJuIHx8ICcnLFxuICAgICAgICBhdHQubmFtZSB8fCAnJyxcbiAgICAgICAgZm9ybWF0U3NvUGVybWlzc2lvbnNCb3VuZGFyeShhdHQuc3NvUGVybWlzc2lvbnNCb3VuZGFyeSksXG4gICAgICAgIGF0dC5zc29DdXN0b21lck1hbmFnZWRQb2xpY3lSZWZlcmVuY2VzPy5tYXAoZm9ybWF0TWFuYWdlZFBvbGljeVJlZikuam9pbignXFxuJykgfHwgJycsXG4gICAgICBdLm1hcChzID0+IGNoYWxrLmdyZWVuKHMpKSk7XG4gICAgfVxuICAgIGZvciAoY29uc3QgYXR0IG9mIHRoaXMuc3NvUGVybWlzc2lvblNldHMucmVtb3ZhbHMpIHtcbiAgICAgIHJldC5wdXNoKFtcbiAgICAgICAgJy0nLFxuICAgICAgICBhdHQuY2ZuTG9naWNhbElkIHx8ICcnLFxuICAgICAgICBhdHQuc3NvSW5zdGFuY2VBcm4gfHwgJycsXG4gICAgICAgIGF0dC5uYW1lIHx8ICcnLFxuICAgICAgICBmb3JtYXRTc29QZXJtaXNzaW9uc0JvdW5kYXJ5KGF0dC5zc29QZXJtaXNzaW9uc0JvdW5kYXJ5KSxcbiAgICAgICAgYXR0LnNzb0N1c3RvbWVyTWFuYWdlZFBvbGljeVJlZmVyZW5jZXM/Lm1hcChmb3JtYXRNYW5hZ2VkUG9saWN5UmVmKS5qb2luKCdcXG4nKSB8fCAnJyxcbiAgICAgIF0ubWFwKHMgPT4gY2hhbGsucmVkKHMpKSk7XG4gICAgfVxuXG4gICAgLy8gU29ydCBieSByZXNvdXJjZSBuYW1lIHRvIGVuc3VyZSBhIHVuaXF1ZSB2YWx1ZSBpcyB1c2VkIGZvciBzb3J0aW5nXG4gICAgcmV0LnNvcnQobWFrZUNvbXBhcmF0b3IoKHJvdzogc3RyaW5nW10pID0+IFtyb3dbMV1dKSk7XG4gICAgcmV0LnNwbGljZSgwLCAwLCBoZWFkZXIpO1xuXG4gICAgcmV0dXJuIHJldDtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm4gYSBtYWNoaW5lLXJlYWRhYmxlIHZlcnNpb24gb2YgdGhlIGNoYW5nZXMuXG4gICAqIFRoaXMgaXMgb25seSB1c2VkIGluIHRlc3RzLlxuICAgKlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIHB1YmxpYyBfdG9Kc29uKCk6IElhbUNoYW5nZXNKc29uIHtcbiAgICByZXR1cm4gZGVlcFJlbW92ZVVuZGVmaW5lZCh7XG4gICAgICBzdGF0ZW1lbnRBZGRpdGlvbnM6IGRyb3BJZkVtcHR5KHRoaXMuc3RhdGVtZW50cy5hZGRpdGlvbnMubWFwKHMgPT4gcy5fdG9Kc29uKCkpKSxcbiAgICAgIHN0YXRlbWVudFJlbW92YWxzOiBkcm9wSWZFbXB0eSh0aGlzLnN0YXRlbWVudHMucmVtb3ZhbHMubWFwKHMgPT4gcy5fdG9Kc29uKCkpKSxcbiAgICAgIG1hbmFnZWRQb2xpY3lBZGRpdGlvbnM6IGRyb3BJZkVtcHR5KHRoaXMubWFuYWdlZFBvbGljaWVzLmFkZGl0aW9ucy5tYXAocyA9PiBzLl90b0pzb24oKSkpLFxuICAgICAgbWFuYWdlZFBvbGljeVJlbW92YWxzOiBkcm9wSWZFbXB0eSh0aGlzLm1hbmFnZWRQb2xpY2llcy5yZW1vdmFscy5tYXAocyA9PiBzLl90b0pzb24oKSkpLFxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSByZWFkUHJvcGVydHlDaGFuZ2UocHJvcGVydHlDaGFuZ2U6IFByb3BlcnR5Q2hhbmdlKSB7XG4gICAgc3dpdGNoIChwcm9wZXJ0eUNoYW5nZS5zY3J1dGlueVR5cGUpIHtcbiAgICAgIGNhc2UgUHJvcGVydHlTY3J1dGlueVR5cGUuSW5saW5lSWRlbnRpdHlQb2xpY2llczpcbiAgICAgICAgLy8gQVdTOjpJQU06OnsgUm9sZSB8IFVzZXIgfCBHcm91cCB9LlBvbGljaWVzXG4gICAgICAgIHRoaXMuc3RhdGVtZW50cy5hZGRPbGQoLi4udGhpcy5yZWFkSWRlbnRpdHlQb2xpY2llcyhwcm9wZXJ0eUNoYW5nZS5vbGRWYWx1ZSwgcHJvcGVydHlDaGFuZ2UucmVzb3VyY2VMb2dpY2FsSWQpKTtcbiAgICAgICAgdGhpcy5zdGF0ZW1lbnRzLmFkZE5ldyguLi50aGlzLnJlYWRJZGVudGl0eVBvbGljaWVzKHByb3BlcnR5Q2hhbmdlLm5ld1ZhbHVlLCBwcm9wZXJ0eUNoYW5nZS5yZXNvdXJjZUxvZ2ljYWxJZCkpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgUHJvcGVydHlTY3J1dGlueVR5cGUuSW5saW5lUmVzb3VyY2VQb2xpY3k6XG4gICAgICAgIC8vIEFueSBQb2xpY3lEb2N1bWVudCBvbiBhIHJlc291cmNlIChpbmNsdWRpbmcgQXNzdW1lUm9sZVBvbGljeURvY3VtZW50KVxuICAgICAgICB0aGlzLnN0YXRlbWVudHMuYWRkT2xkKC4uLnRoaXMucmVhZFJlc291cmNlU3RhdGVtZW50cyhwcm9wZXJ0eUNoYW5nZS5vbGRWYWx1ZSwgcHJvcGVydHlDaGFuZ2UucmVzb3VyY2VMb2dpY2FsSWQpKTtcbiAgICAgICAgdGhpcy5zdGF0ZW1lbnRzLmFkZE5ldyguLi50aGlzLnJlYWRSZXNvdXJjZVN0YXRlbWVudHMocHJvcGVydHlDaGFuZ2UubmV3VmFsdWUsIHByb3BlcnR5Q2hhbmdlLnJlc291cmNlTG9naWNhbElkKSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBQcm9wZXJ0eVNjcnV0aW55VHlwZS5NYW5hZ2VkUG9saWNpZXM6XG4gICAgICAgIC8vIEp1c3QgYSBsaXN0IG9mIG1hbmFnZWQgcG9saWNpZXNcbiAgICAgICAgdGhpcy5tYW5hZ2VkUG9saWNpZXMuYWRkT2xkKC4uLnRoaXMucmVhZE1hbmFnZWRQb2xpY2llcyhwcm9wZXJ0eUNoYW5nZS5vbGRWYWx1ZSwgcHJvcGVydHlDaGFuZ2UucmVzb3VyY2VMb2dpY2FsSWQpKTtcbiAgICAgICAgdGhpcy5tYW5hZ2VkUG9saWNpZXMuYWRkTmV3KC4uLnRoaXMucmVhZE1hbmFnZWRQb2xpY2llcyhwcm9wZXJ0eUNoYW5nZS5uZXdWYWx1ZSwgcHJvcGVydHlDaGFuZ2UucmVzb3VyY2VMb2dpY2FsSWQpKTtcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSByZWFkUmVzb3VyY2VDaGFuZ2UocmVzb3VyY2VDaGFuZ2U6IFJlc291cmNlQ2hhbmdlKSB7XG4gICAgc3dpdGNoIChyZXNvdXJjZUNoYW5nZS5zY3J1dGlueVR5cGUpIHtcbiAgICAgIGNhc2UgUmVzb3VyY2VTY3J1dGlueVR5cGUuSWRlbnRpdHlQb2xpY3lSZXNvdXJjZTpcbiAgICAgICAgLy8gQVdTOjpJQU06OlBvbGljeVxuICAgICAgICB0aGlzLnN0YXRlbWVudHMuYWRkT2xkKC4uLnRoaXMucmVhZElkZW50aXR5UG9saWN5UmVzb3VyY2UocmVzb3VyY2VDaGFuZ2Uub2xkUHJvcGVydGllcykpO1xuICAgICAgICB0aGlzLnN0YXRlbWVudHMuYWRkTmV3KC4uLnRoaXMucmVhZElkZW50aXR5UG9saWN5UmVzb3VyY2UocmVzb3VyY2VDaGFuZ2UubmV3UHJvcGVydGllcykpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgUmVzb3VyY2VTY3J1dGlueVR5cGUuUmVzb3VyY2VQb2xpY3lSZXNvdXJjZTpcbiAgICAgICAgLy8gQVdTOjoqOjp7QnVja2V0LFF1ZXVlLFRvcGljfVBvbGljeVxuICAgICAgICB0aGlzLnN0YXRlbWVudHMuYWRkT2xkKC4uLnRoaXMucmVhZFJlc291cmNlUG9saWN5UmVzb3VyY2UocmVzb3VyY2VDaGFuZ2Uub2xkUHJvcGVydGllcykpO1xuICAgICAgICB0aGlzLnN0YXRlbWVudHMuYWRkTmV3KC4uLnRoaXMucmVhZFJlc291cmNlUG9saWN5UmVzb3VyY2UocmVzb3VyY2VDaGFuZ2UubmV3UHJvcGVydGllcykpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgUmVzb3VyY2VTY3J1dGlueVR5cGUuTGFtYmRhUGVybWlzc2lvbjpcbiAgICAgICAgdGhpcy5zdGF0ZW1lbnRzLmFkZE9sZCguLi50aGlzLnJlYWRMYW1iZGFTdGF0ZW1lbnRzKHJlc291cmNlQ2hhbmdlLm9sZFByb3BlcnRpZXMpKTtcbiAgICAgICAgdGhpcy5zdGF0ZW1lbnRzLmFkZE5ldyguLi50aGlzLnJlYWRMYW1iZGFTdGF0ZW1lbnRzKHJlc291cmNlQ2hhbmdlLm5ld1Byb3BlcnRpZXMpKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFJlc291cmNlU2NydXRpbnlUeXBlLlNzb1Blcm1pc3Npb25TZXQ6XG4gICAgICAgIHRoaXMuc3NvUGVybWlzc2lvblNldHMuYWRkT2xkKC4uLnRoaXMucmVhZFNzb1Blcm1pc3Npb25TZXQocmVzb3VyY2VDaGFuZ2Uub2xkUHJvcGVydGllcywgcmVzb3VyY2VDaGFuZ2UucmVzb3VyY2VMb2dpY2FsSWQpKTtcbiAgICAgICAgdGhpcy5zc29QZXJtaXNzaW9uU2V0cy5hZGROZXcoLi4udGhpcy5yZWFkU3NvUGVybWlzc2lvblNldChyZXNvdXJjZUNoYW5nZS5uZXdQcm9wZXJ0aWVzLCByZXNvdXJjZUNoYW5nZS5yZXNvdXJjZUxvZ2ljYWxJZCkpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgUmVzb3VyY2VTY3J1dGlueVR5cGUuU3NvQXNzaWdubWVudFJlc291cmNlOlxuICAgICAgICB0aGlzLnNzb0Fzc2lnbm1lbnRzLmFkZE9sZCguLi50aGlzLnJlYWRTc29Bc3NpZ25tZW50cyhyZXNvdXJjZUNoYW5nZS5vbGRQcm9wZXJ0aWVzLCByZXNvdXJjZUNoYW5nZS5yZXNvdXJjZUxvZ2ljYWxJZCkpO1xuICAgICAgICB0aGlzLnNzb0Fzc2lnbm1lbnRzLmFkZE5ldyguLi50aGlzLnJlYWRTc29Bc3NpZ25tZW50cyhyZXNvdXJjZUNoYW5nZS5uZXdQcm9wZXJ0aWVzLCByZXNvdXJjZUNoYW5nZS5yZXNvdXJjZUxvZ2ljYWxJZCkpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgUmVzb3VyY2VTY3J1dGlueVR5cGUuU3NvSW5zdGFuY2VBQ0FDb25maWdSZXNvdXJjZTpcbiAgICAgICAgdGhpcy5zc29JbnN0YW5jZUFDQUNvbmZpZ3MuYWRkT2xkKC4uLnRoaXMucmVhZFNzb0luc3RhbmNlQUNBQ29uZmlncyhyZXNvdXJjZUNoYW5nZS5vbGRQcm9wZXJ0aWVzLCByZXNvdXJjZUNoYW5nZS5yZXNvdXJjZUxvZ2ljYWxJZCkpO1xuICAgICAgICB0aGlzLnNzb0luc3RhbmNlQUNBQ29uZmlncy5hZGROZXcoLi4udGhpcy5yZWFkU3NvSW5zdGFuY2VBQ0FDb25maWdzKHJlc291cmNlQ2hhbmdlLm5ld1Byb3BlcnRpZXMsIHJlc291cmNlQ2hhbmdlLnJlc291cmNlTG9naWNhbElkKSk7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBQYXJzZSBhIGxpc3Qgb2YgcG9saWNpZXMgb24gYW4gaWRlbnRpdHlcbiAgICovXG4gIHByaXZhdGUgcmVhZElkZW50aXR5UG9saWNpZXMocG9saWNpZXM6IGFueSwgbG9naWNhbElkOiBzdHJpbmcpOiBTdGF0ZW1lbnRbXSB7XG4gICAgaWYgKHBvbGljaWVzID09PSB1bmRlZmluZWQgfHwgIUFycmF5LmlzQXJyYXkocG9saWNpZXMpKSB7IHJldHVybiBbXTsgfVxuXG4gICAgY29uc3QgYXBwbGllc1RvUHJpbmNpcGFsID0gJ0FXUzokeycgKyBsb2dpY2FsSWQgKyAnfSc7XG5cbiAgICByZXR1cm4gZmxhdE1hcChwb2xpY2llcywgKHBvbGljeTogYW55KSA9PiB7XG4gICAgICAvLyBjaGVjayBpZiB0aGUgUG9saWN5IGl0c2VsZiBpcyBub3QgYW4gaW50cmluc2ljLCBsaWtlIGFuIEZuOjpJZlxuICAgICAgY29uc3QgdW5wYXJzZWRTdGF0ZW1lbnQgPSBwb2xpY3kuUG9saWN5RG9jdW1lbnQ/LlN0YXRlbWVudFxuICAgICAgICA/IHBvbGljeS5Qb2xpY3lEb2N1bWVudC5TdGF0ZW1lbnRcbiAgICAgICAgOiBwb2xpY3k7XG4gICAgICByZXR1cm4gZGVmYXVsdFByaW5jaXBhbChhcHBsaWVzVG9QcmluY2lwYWwsIHBhcnNlU3RhdGVtZW50cyhyZW5kZXJJbnRyaW5zaWNzKHVucGFyc2VkU3RhdGVtZW50KSkpO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFBhcnNlIGFuIElBTTo6UG9saWN5IHJlc291cmNlXG4gICAqL1xuICBwcml2YXRlIHJlYWRJZGVudGl0eVBvbGljeVJlc291cmNlKHByb3BlcnRpZXM6IGFueSk6IFN0YXRlbWVudFtdIHtcbiAgICBpZiAocHJvcGVydGllcyA9PT0gdW5kZWZpbmVkKSB7IHJldHVybiBbXTsgfVxuXG4gICAgcHJvcGVydGllcyA9IHJlbmRlckludHJpbnNpY3MocHJvcGVydGllcyk7XG5cbiAgICBjb25zdCBwcmluY2lwYWxzID0gKHByb3BlcnRpZXMuR3JvdXBzIHx8IFtdKS5jb25jYXQocHJvcGVydGllcy5Vc2VycyB8fCBbXSkuY29uY2F0KHByb3BlcnRpZXMuUm9sZXMgfHwgW10pO1xuICAgIHJldHVybiBmbGF0TWFwKHByaW5jaXBhbHMsIChwcmluY2lwYWw6IHN0cmluZykgPT4ge1xuICAgICAgY29uc3QgcmVmID0gJ0FXUzonICsgcHJpbmNpcGFsO1xuICAgICAgcmV0dXJuIGRlZmF1bHRQcmluY2lwYWwocmVmLCBwYXJzZVN0YXRlbWVudHMocHJvcGVydGllcy5Qb2xpY3lEb2N1bWVudC5TdGF0ZW1lbnQpKTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgcmVhZFNzb0luc3RhbmNlQUNBQ29uZmlncyhwcm9wZXJ0aWVzOiBhbnksIGxvZ2ljYWxJZDogc3RyaW5nKTogU3NvSW5zdGFuY2VBQ0FDb25maWdbXSB7XG4gICAgaWYgKHByb3BlcnRpZXMgPT09IHVuZGVmaW5lZCkgeyByZXR1cm4gW107IH1cblxuICAgIHByb3BlcnRpZXMgPSByZW5kZXJJbnRyaW5zaWNzKHByb3BlcnRpZXMpO1xuXG4gICAgcmV0dXJuIFtuZXcgU3NvSW5zdGFuY2VBQ0FDb25maWcoe1xuICAgICAgY2ZuTG9naWNhbElkOiAnJHsnICsgbG9naWNhbElkICsgJ30nLFxuICAgICAgc3NvSW5zdGFuY2VBcm46IHByb3BlcnRpZXMuSW5zdGFuY2VBcm4sXG4gICAgICBhY2Nlc3NDb250cm9sQXR0cmlidXRlczogcHJvcGVydGllcy5BY2Nlc3NDb250cm9sQXR0cmlidXRlcyxcbiAgICB9KV07XG4gIH1cblxuICBwcml2YXRlIHJlYWRTc29Bc3NpZ25tZW50cyhwcm9wZXJ0aWVzOiBhbnksIGxvZ2ljYWxJZDogc3RyaW5nKTogU3NvQXNzaWdubWVudFtdIHtcbiAgICBpZiAocHJvcGVydGllcyA9PT0gdW5kZWZpbmVkKSB7IHJldHVybiBbXTsgfVxuXG4gICAgcHJvcGVydGllcyA9IHJlbmRlckludHJpbnNpY3MocHJvcGVydGllcyk7XG5cbiAgICByZXR1cm4gW25ldyBTc29Bc3NpZ25tZW50KHtcbiAgICAgIGNmbkxvZ2ljYWxJZDogJyR7JyArIGxvZ2ljYWxJZCArICd9JyxcbiAgICAgIHNzb0luc3RhbmNlQXJuOiBwcm9wZXJ0aWVzLkluc3RhbmNlQXJuLFxuICAgICAgcGVybWlzc2lvblNldEFybjogcHJvcGVydGllcy5QZXJtaXNzaW9uU2V0QXJuLFxuICAgICAgcHJpbmNpcGFsSWQ6IHByb3BlcnRpZXMuUHJpbmNpcGFsSWQsXG4gICAgICBwcmluY2lwYWxUeXBlOiBwcm9wZXJ0aWVzLlByaW5jaXBhbFR5cGUsXG4gICAgICB0YXJnZXRJZDogcHJvcGVydGllcy5UYXJnZXRJZCxcbiAgICAgIHRhcmdldFR5cGU6IHByb3BlcnRpZXMuVGFyZ2V0VHlwZSxcbiAgICB9KV07XG4gIH1cblxuICBwcml2YXRlIHJlYWRTc29QZXJtaXNzaW9uU2V0KHByb3BlcnRpZXM6IGFueSwgbG9naWNhbElkOiBzdHJpbmcpOiBTc29QZXJtaXNzaW9uU2V0W10ge1xuICAgIGlmIChwcm9wZXJ0aWVzID09PSB1bmRlZmluZWQpIHsgcmV0dXJuIFtdOyB9XG5cbiAgICBwcm9wZXJ0aWVzID0gcmVuZGVySW50cmluc2ljcyhwcm9wZXJ0aWVzKTtcblxuICAgIHJldHVybiBbbmV3IFNzb1Blcm1pc3Npb25TZXQoe1xuICAgICAgY2ZuTG9naWNhbElkOiAnJHsnICsgbG9naWNhbElkICsgJ30nLFxuICAgICAgbmFtZTogcHJvcGVydGllcy5OYW1lLFxuICAgICAgc3NvSW5zdGFuY2VBcm46IHByb3BlcnRpZXMuSW5zdGFuY2VBcm4sXG4gICAgICBzc29DdXN0b21lck1hbmFnZWRQb2xpY3lSZWZlcmVuY2VzOiBwcm9wZXJ0aWVzLkN1c3RvbWVyTWFuYWdlZFBvbGljeVJlZmVyZW5jZXMsXG4gICAgICBzc29QZXJtaXNzaW9uc0JvdW5kYXJ5OiBwcm9wZXJ0aWVzLlBlcm1pc3Npb25zQm91bmRhcnksXG4gICAgfSldO1xuICB9XG5cbiAgcHJpdmF0ZSByZWFkUmVzb3VyY2VTdGF0ZW1lbnRzKHBvbGljeTogYW55LCBsb2dpY2FsSWQ6IHN0cmluZyk6IFN0YXRlbWVudFtdIHtcbiAgICBpZiAocG9saWN5ID09PSB1bmRlZmluZWQpIHsgcmV0dXJuIFtdOyB9XG5cbiAgICBjb25zdCBhcHBsaWVzVG9SZXNvdXJjZSA9ICckeycgKyBsb2dpY2FsSWQgKyAnLkFybn0nO1xuICAgIHJldHVybiBkZWZhdWx0UmVzb3VyY2UoYXBwbGllc1RvUmVzb3VyY2UsIHBhcnNlU3RhdGVtZW50cyhyZW5kZXJJbnRyaW5zaWNzKHBvbGljeS5TdGF0ZW1lbnQpKSk7XG4gIH1cblxuICAvKipcbiAgICogUGFyc2UgYW4gQVdTOjoqOjp7QnVja2V0LFRvcGljLFF1ZXVlfXBvbGljeVxuICAgKi9cbiAgcHJpdmF0ZSByZWFkUmVzb3VyY2VQb2xpY3lSZXNvdXJjZShwcm9wZXJ0aWVzOiBhbnkpOiBTdGF0ZW1lbnRbXSB7XG4gICAgaWYgKHByb3BlcnRpZXMgPT09IHVuZGVmaW5lZCkgeyByZXR1cm4gW107IH1cblxuICAgIHByb3BlcnRpZXMgPSByZW5kZXJJbnRyaW5zaWNzKHByb3BlcnRpZXMpO1xuXG4gICAgY29uc3QgcG9saWN5S2V5cyA9IE9iamVjdC5rZXlzKHByb3BlcnRpZXMpLmZpbHRlcihrZXkgPT4ga2V5LmluZGV4T2YoJ1BvbGljeScpID4gLTEpO1xuXG4gICAgLy8gRmluZCB0aGUga2V5IHRoYXQgaWRlbnRpZmllcyB0aGUgcmVzb3VyY2UocykgdGhpcyBwb2xpY3kgYXBwbGllcyB0b1xuICAgIGNvbnN0IHJlc291cmNlS2V5cyA9IE9iamVjdC5rZXlzKHByb3BlcnRpZXMpLmZpbHRlcihrZXkgPT4gIXBvbGljeUtleXMuaW5jbHVkZXMoa2V5KSAmJiAha2V5LmVuZHNXaXRoKCdOYW1lJykpO1xuICAgIGxldCByZXNvdXJjZXMgPSByZXNvdXJjZUtleXMubGVuZ3RoID09PSAxID8gcHJvcGVydGllc1tyZXNvdXJjZUtleXNbMF1dIDogWyc/Pz8nXTtcblxuICAgIC8vIEZvciBzb21lIHJlc291cmNlcywgdGhpcyBpcyBhIHNpbmdsZXRvbiBzdHJpbmcsIGZvciBzb21lIGl0J3MgYW4gYXJyYXlcbiAgICBpZiAoIUFycmF5LmlzQXJyYXkocmVzb3VyY2VzKSkge1xuICAgICAgcmVzb3VyY2VzID0gW3Jlc291cmNlc107XG4gICAgfVxuXG4gICAgcmV0dXJuIGZsYXRNYXAocmVzb3VyY2VzLCAocmVzb3VyY2U6IHN0cmluZykgPT4ge1xuICAgICAgcmV0dXJuIGRlZmF1bHRSZXNvdXJjZShyZXNvdXJjZSwgcGFyc2VTdGF0ZW1lbnRzKHByb3BlcnRpZXNbcG9saWN5S2V5c1swXV0uU3RhdGVtZW50KSk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHJlYWRNYW5hZ2VkUG9saWNpZXMocG9saWN5QXJuczogYW55LCBsb2dpY2FsSWQ6IHN0cmluZyk6IE1hbmFnZWRQb2xpY3lBdHRhY2htZW50W10ge1xuICAgIGlmICghcG9saWN5QXJucykgeyByZXR1cm4gW107IH1cblxuICAgIGNvbnN0IHJlcCA9ICckeycgKyBsb2dpY2FsSWQgKyAnfSc7XG4gICAgcmV0dXJuIE1hbmFnZWRQb2xpY3lBdHRhY2htZW50LnBhcnNlTWFuYWdlZFBvbGljaWVzKHJlcCwgcmVuZGVySW50cmluc2ljcyhwb2xpY3lBcm5zKSk7XG4gIH1cblxuICBwcml2YXRlIHJlYWRMYW1iZGFTdGF0ZW1lbnRzKHByb3BlcnRpZXM/OiBQcm9wZXJ0eU1hcCk6IFN0YXRlbWVudFtdIHtcbiAgICBpZiAoIXByb3BlcnRpZXMpIHsgcmV0dXJuIFtdOyB9XG5cbiAgICByZXR1cm4gW3BhcnNlTGFtYmRhUGVybWlzc2lvbihyZW5kZXJJbnRyaW5zaWNzKHByb3BlcnRpZXMpKV07XG4gIH1cbn1cblxuLyoqXG4gKiBTZXQgYW4gdW5kZWZpbmVkIG9yIHdpbGRjYXJkZWQgcHJpbmNpcGFsIG9uIHRoZXNlIHN0YXRlbWVudHNcbiAqL1xuZnVuY3Rpb24gZGVmYXVsdFByaW5jaXBhbChwcmluY2lwYWw6IHN0cmluZywgc3RhdGVtZW50czogU3RhdGVtZW50W10pIHtcbiAgc3RhdGVtZW50cy5mb3JFYWNoKHMgPT4gcy5wcmluY2lwYWxzLnJlcGxhY2VFbXB0eShwcmluY2lwYWwpKTtcbiAgc3RhdGVtZW50cy5mb3JFYWNoKHMgPT4gcy5wcmluY2lwYWxzLnJlcGxhY2VTdGFyKHByaW5jaXBhbCkpO1xuICByZXR1cm4gc3RhdGVtZW50cztcbn1cblxuLyoqXG4gKiBTZXQgYW4gdW5kZWZpbmVkIG9yIHdpbGRjYXJkZWQgcmVzb3VyY2Ugb24gdGhlc2Ugc3RhdGVtZW50c1xuICovXG5mdW5jdGlvbiBkZWZhdWx0UmVzb3VyY2UocmVzb3VyY2U6IHN0cmluZywgc3RhdGVtZW50czogU3RhdGVtZW50W10pIHtcbiAgc3RhdGVtZW50cy5mb3JFYWNoKHMgPT4gcy5yZXNvdXJjZXMucmVwbGFjZUVtcHR5KHJlc291cmNlKSk7XG4gIHN0YXRlbWVudHMuZm9yRWFjaChzID0+IHMucmVzb3VyY2VzLnJlcGxhY2VTdGFyKHJlc291cmNlKSk7XG4gIHJldHVybiBzdGF0ZW1lbnRzO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElhbUNoYW5nZXNKc29uIHtcbiAgc3RhdGVtZW50QWRkaXRpb25zPzogQXJyYXk8TWF5YmVQYXJzZWQ8U3RhdGVtZW50SnNvbj4+O1xuICBzdGF0ZW1lbnRSZW1vdmFscz86IEFycmF5PE1heWJlUGFyc2VkPFN0YXRlbWVudEpzb24+PjtcbiAgbWFuYWdlZFBvbGljeUFkZGl0aW9ucz86IEFycmF5PE1heWJlUGFyc2VkPE1hbmFnZWRQb2xpY3lKc29uPj47XG4gIG1hbmFnZWRQb2xpY3lSZW1vdmFscz86IEFycmF5PE1heWJlUGFyc2VkPE1hbmFnZWRQb2xpY3lKc29uPj47XG59XG4iXX0=","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.SsoInstanceACAConfig = exports.SsoAssignment = exports.SsoPermissionSet = void 0;\n// namespace object imports won't work in the bundle for function exports\n// eslint-disable-next-line @typescript-eslint/no-require-imports\nconst deepEqual = require('fast-deep-equal');\nclass SsoPermissionSet {\n constructor(props) {\n this.cfnLogicalId = props.cfnLogicalId;\n this.name = props.name;\n this.ssoInstanceArn = props.ssoInstanceArn;\n this.ssoPermissionsBoundary = props.ssoPermissionsBoundary;\n this.ssoCustomerManagedPolicyReferences = props.ssoCustomerManagedPolicyReferences;\n }\n equal(other) {\n return deepEqual(this, other);\n }\n}\nexports.SsoPermissionSet = SsoPermissionSet;\nclass SsoAssignment {\n constructor(props) {\n this.cfnLogicalId = props.cfnLogicalId;\n this.ssoInstanceArn = props.ssoInstanceArn;\n this.permissionSetArn = props.permissionSetArn;\n this.principalId = props.principalId;\n this.principalType = props.principalType;\n this.targetId = props.targetId;\n this.targetType = props.targetType;\n }\n equal(other) {\n return deepEqual(this, other);\n }\n}\nexports.SsoAssignment = SsoAssignment;\nclass SsoInstanceACAConfig {\n constructor(props) {\n this.cfnLogicalId = props.cfnLogicalId;\n this.ssoInstanceArn = props.ssoInstanceArn;\n this.accessControlAttributes = props.accessControlAttributes;\n }\n equal(other) {\n return deepEqual(this, other);\n }\n}\nexports.SsoInstanceACAConfig = SsoInstanceACAConfig;\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWFtLWlkZW50aXR5LWNlbnRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImlhbS1pZGVudGl0eS1jZW50ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEseUVBQXlFO0FBQ3pFLGlFQUFpRTtBQUNqRSxNQUFNLFNBQVMsR0FBRyxPQUFPLENBQUMsaUJBQWlCLENBQUMsQ0FBQztBQXdCN0MsTUFBYSxnQkFBZ0I7SUFPM0IsWUFBWSxLQUE4QjtRQUN4QyxJQUFJLENBQUMsWUFBWSxHQUFHLEtBQUssQ0FBQyxZQUFZLENBQUM7UUFDdkMsSUFBSSxDQUFDLElBQUksR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxjQUFjLEdBQUcsS0FBSyxDQUFDLGNBQWMsQ0FBQztRQUMzQyxJQUFJLENBQUMsc0JBQXNCLEdBQUcsS0FBSyxDQUFDLHNCQUFzQixDQUFDO1FBQzNELElBQUksQ0FBQyxrQ0FBa0MsR0FBRyxLQUFLLENBQUMsa0NBQWtDLENBQUM7SUFDckYsQ0FBQztJQUVNLEtBQUssQ0FBQyxLQUF1QjtRQUNsQyxPQUFPLFNBQVMsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDaEMsQ0FBQztDQUNGO0FBbEJELDRDQWtCQztBQWNELE1BQWEsYUFBYTtJQVN4QixZQUFZLEtBQTJCO1FBQ3JDLElBQUksQ0FBQyxZQUFZLEdBQUcsS0FBSyxDQUFDLFlBQVksQ0FBQztRQUN2QyxJQUFJLENBQUMsY0FBYyxHQUFHLEtBQUssQ0FBQyxjQUFjLENBQUM7UUFDM0MsSUFBSSxDQUFDLGdCQUFnQixHQUFHLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQztRQUMvQyxJQUFJLENBQUMsV0FBVyxHQUFHLEtBQUssQ0FBQyxXQUFXLENBQUM7UUFDckMsSUFBSSxDQUFDLGFBQWEsR0FBRyxLQUFLLENBQUMsYUFBYSxDQUFDO1FBQ3pDLElBQUksQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDLFFBQVEsQ0FBQztRQUMvQixJQUFJLENBQUMsVUFBVSxHQUFHLEtBQUssQ0FBQyxVQUFVLENBQUM7SUFDckMsQ0FBQztJQUVNLEtBQUssQ0FBQyxLQUFvQjtRQUMvQixPQUFPLFNBQVMsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDaEMsQ0FBQztDQUNGO0FBdEJELHNDQXNCQztBQXNCRCxNQUFhLG9CQUFvQjtJQUsvQixZQUFZLEtBQWtDO1FBQzVDLElBQUksQ0FBQyxZQUFZLEdBQUcsS0FBSyxDQUFDLFlBQVksQ0FBQztRQUN2QyxJQUFJLENBQUMsY0FBYyxHQUFHLEtBQUssQ0FBQyxjQUFjLENBQUM7UUFDM0MsSUFBSSxDQUFDLHVCQUF1QixHQUFHLEtBQUssQ0FBQyx1QkFBdUIsQ0FBQztJQUMvRCxDQUFDO0lBRU0sS0FBSyxDQUFDLEtBQTJCO1FBQ3RDLE9BQU8sU0FBUyxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztJQUNoQyxDQUFDO0NBQ0Y7QUFkRCxvREFjQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIG5hbWVzcGFjZSBvYmplY3QgaW1wb3J0cyB3b24ndCB3b3JrIGluIHRoZSBidW5kbGUgZm9yIGZ1bmN0aW9uIGV4cG9ydHNcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tcmVxdWlyZS1pbXBvcnRzXG5jb25zdCBkZWVwRXF1YWwgPSByZXF1aXJlKCdmYXN0LWRlZXAtZXF1YWwnKTtcblxuLyoqXG4gKiBUaGlzIG5hbWVzcGFjZSBzaG91bGQgYmUgYSBzdWJzZXQgb2YgdGhlIEwxIENmblBlcm1pc3Npb25TZXQsIG90aGVyIHRoYW5cbiAqIGNhcGl0YWxpemF0aW9uLCBzaW5jZSB0aGUgdmFsdWVzIGNvbWUgZnJvbSBmcm9tIGEgcGFyc2VkIENGTiB0ZW1wbGF0ZS5cbiAqL1xuZXhwb3J0IG5hbWVzcGFjZSBJU3NvUGVybWlzc2lvblNldCB7XG4gIGV4cG9ydCBpbnRlcmZhY2UgUHJvcHMge1xuICAgIHJlYWRvbmx5IG5hbWU6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICByZWFkb25seSBjZm5Mb2dpY2FsSWQ6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICByZWFkb25seSBzc29JbnN0YW5jZUFybjogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgIHJlYWRvbmx5IHNzb1Blcm1pc3Npb25zQm91bmRhcnk6IElTc29QZXJtaXNzaW9uU2V0LlBlcm1pc3Npb25zQm91bmRhcnkgfCB1bmRlZmluZWQ7XG4gICAgcmVhZG9ubHkgc3NvQ3VzdG9tZXJNYW5hZ2VkUG9saWN5UmVmZXJlbmNlczogSVNzb1Blcm1pc3Npb25TZXQuQ3VzdG9tZXJNYW5hZ2VkUG9saWN5UmVmZXJlbmNlW10gfCB1bmRlZmluZWQ7XG4gIH1cbiAgZXhwb3J0IGludGVyZmFjZSBQZXJtaXNzaW9uc0JvdW5kYXJ5IHtcbiAgICByZWFkb25seSBDdXN0b21lck1hbmFnZWRQb2xpY3lSZWZlcmVuY2U/OiBDdXN0b21lck1hbmFnZWRQb2xpY3lSZWZlcmVuY2U7XG4gICAgcmVhZG9ubHkgTWFuYWdlZFBvbGljeUFybj86IHN0cmluZztcbiAgfVxuICBleHBvcnQgaW50ZXJmYWNlIEN1c3RvbWVyTWFuYWdlZFBvbGljeVJlZmVyZW5jZSB7XG4gICAgcmVhZG9ubHkgTmFtZTogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgIHJlYWRvbmx5IFBhdGg6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgU3NvUGVybWlzc2lvblNldCBpbXBsZW1lbnRzIElTc29QZXJtaXNzaW9uU2V0LlByb3BzIHtcbiAgcHVibGljIHJlYWRvbmx5IG5hbWU6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgcHVibGljIHJlYWRvbmx5IGNmbkxvZ2ljYWxJZDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICBwdWJsaWMgcmVhZG9ubHkgc3NvSW5zdGFuY2VBcm46IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgcHVibGljIHJlYWRvbmx5IHNzb1Blcm1pc3Npb25zQm91bmRhcnk6IElTc29QZXJtaXNzaW9uU2V0LlBlcm1pc3Npb25zQm91bmRhcnkgfCB1bmRlZmluZWQ7XG4gIHB1YmxpYyByZWFkb25seSBzc29DdXN0b21lck1hbmFnZWRQb2xpY3lSZWZlcmVuY2VzOiBJU3NvUGVybWlzc2lvblNldC5DdXN0b21lck1hbmFnZWRQb2xpY3lSZWZlcmVuY2VbXSB8IHVuZGVmaW5lZDtcblxuICBjb25zdHJ1Y3Rvcihwcm9wczogSVNzb1Blcm1pc3Npb25TZXQuUHJvcHMpIHtcbiAgICB0aGlzLmNmbkxvZ2ljYWxJZCA9IHByb3BzLmNmbkxvZ2ljYWxJZDtcbiAgICB0aGlzLm5hbWUgPSBwcm9wcy5uYW1lO1xuICAgIHRoaXMuc3NvSW5zdGFuY2VBcm4gPSBwcm9wcy5zc29JbnN0YW5jZUFybjtcbiAgICB0aGlzLnNzb1Blcm1pc3Npb25zQm91bmRhcnkgPSBwcm9wcy5zc29QZXJtaXNzaW9uc0JvdW5kYXJ5O1xuICAgIHRoaXMuc3NvQ3VzdG9tZXJNYW5hZ2VkUG9saWN5UmVmZXJlbmNlcyA9IHByb3BzLnNzb0N1c3RvbWVyTWFuYWdlZFBvbGljeVJlZmVyZW5jZXM7XG4gIH1cblxuICBwdWJsaWMgZXF1YWwob3RoZXI6IFNzb1Blcm1pc3Npb25TZXQpOiBib29sZWFuIHtcbiAgICByZXR1cm4gZGVlcEVxdWFsKHRoaXMsIG90aGVyKTtcbiAgfVxufVxuXG5leHBvcnQgbmFtZXNwYWNlIElTc29Bc3NpZ25tZW50IHtcbiAgZXhwb3J0IGludGVyZmFjZSBQcm9wcyB7XG4gICAgcmVhZG9ubHkgc3NvSW5zdGFuY2VBcm46IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICByZWFkb25seSBjZm5Mb2dpY2FsSWQ6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICByZWFkb25seSBwZXJtaXNzaW9uU2V0QXJuOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgcmVhZG9ubHkgcHJpbmNpcGFsSWQ6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICByZWFkb25seSBwcmluY2lwYWxUeXBlOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgcmVhZG9ubHkgdGFyZ2V0SWQ6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICByZWFkb25seSB0YXJnZXRUeXBlOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIFNzb0Fzc2lnbm1lbnQgaW1wbGVtZW50cyBJU3NvQXNzaWdubWVudC5Qcm9wcyB7XG4gIHB1YmxpYyByZWFkb25seSBjZm5Mb2dpY2FsSWQ6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgcHVibGljIHJlYWRvbmx5IHNzb0luc3RhbmNlQXJuOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIHB1YmxpYyByZWFkb25seSBwZXJtaXNzaW9uU2V0QXJuOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIHB1YmxpYyByZWFkb25seSBwcmluY2lwYWxJZDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICBwdWJsaWMgcmVhZG9ubHkgcHJpbmNpcGFsVHlwZTogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICBwdWJsaWMgcmVhZG9ubHkgdGFyZ2V0SWQ6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgcHVibGljIHJlYWRvbmx5IHRhcmdldFR5cGU6IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICBjb25zdHJ1Y3Rvcihwcm9wczogSVNzb0Fzc2lnbm1lbnQuUHJvcHMpIHtcbiAgICB0aGlzLmNmbkxvZ2ljYWxJZCA9IHByb3BzLmNmbkxvZ2ljYWxJZDtcbiAgICB0aGlzLnNzb0luc3RhbmNlQXJuID0gcHJvcHMuc3NvSW5zdGFuY2VBcm47XG4gICAgdGhpcy5wZXJtaXNzaW9uU2V0QXJuID0gcHJvcHMucGVybWlzc2lvblNldEFybjtcbiAgICB0aGlzLnByaW5jaXBhbElkID0gcHJvcHMucHJpbmNpcGFsSWQ7XG4gICAgdGhpcy5wcmluY2lwYWxUeXBlID0gcHJvcHMucHJpbmNpcGFsVHlwZTtcbiAgICB0aGlzLnRhcmdldElkID0gcHJvcHMudGFyZ2V0SWQ7XG4gICAgdGhpcy50YXJnZXRUeXBlID0gcHJvcHMudGFyZ2V0VHlwZTtcbiAgfVxuXG4gIHB1YmxpYyBlcXVhbChvdGhlcjogU3NvQXNzaWdubWVudCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBkZWVwRXF1YWwodGhpcywgb3RoZXIpO1xuICB9XG59XG5cbi8qKlxuICogQVdTOjpTU086Okluc3RhbmNlQWNjZXNzQ29udHJvbEF0dHJpYnV0ZUNvbmZpZ3VyYXRpb25cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJU3NvSW5zdGFuY2VBQ0FDb25maWdQcm9wcyB7XG4gIHNzb0luc3RhbmNlQXJuOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBuYW1lc3BhY2UgSVNzb0luc3RhbmNlQUNBQ29uZmlnIHtcbiAgZXhwb3J0IHR5cGUgQWNjZXNzQ29udHJvbEF0dHJpYnV0ZSA9IHtcbiAgICBLZXk6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICBWYWx1ZTogeyBTb3VyY2U6IHN0cmluZ1tdIH0gfCB1bmRlZmluZWQ7XG4gIH0gfCB1bmRlZmluZWQ7XG5cbiAgZXhwb3J0IGludGVyZmFjZSBQcm9wcyB7XG4gICAgcmVhZG9ubHkgc3NvSW5zdGFuY2VBcm46IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICByZWFkb25seSBjZm5Mb2dpY2FsSWQ6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICByZWFkb25seSBhY2Nlc3NDb250cm9sQXR0cmlidXRlcz86IEFjY2Vzc0NvbnRyb2xBdHRyaWJ1dGVbXSB8IHVuZGVmaW5lZDtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgU3NvSW5zdGFuY2VBQ0FDb25maWcgaW1wbGVtZW50cyBJU3NvSW5zdGFuY2VBQ0FDb25maWcuUHJvcHMge1xuICBwdWJsaWMgcmVhZG9ubHkgY2ZuTG9naWNhbElkOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIHB1YmxpYyByZWFkb25seSBzc29JbnN0YW5jZUFybjogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICBwdWJsaWMgcmVhZG9ubHkgYWNjZXNzQ29udHJvbEF0dHJpYnV0ZXM/OiBJU3NvSW5zdGFuY2VBQ0FDb25maWcuQWNjZXNzQ29udHJvbEF0dHJpYnV0ZVtdIHwgdW5kZWZpbmVkO1xuXG4gIGNvbnN0cnVjdG9yKHByb3BzOiBJU3NvSW5zdGFuY2VBQ0FDb25maWcuUHJvcHMpIHtcbiAgICB0aGlzLmNmbkxvZ2ljYWxJZCA9IHByb3BzLmNmbkxvZ2ljYWxJZDtcbiAgICB0aGlzLnNzb0luc3RhbmNlQXJuID0gcHJvcHMuc3NvSW5zdGFuY2VBcm47XG4gICAgdGhpcy5hY2Nlc3NDb250cm9sQXR0cmlidXRlcyA9IHByb3BzLmFjY2Vzc0NvbnRyb2xBdHRyaWJ1dGVzO1xuICB9XG5cbiAgcHVibGljIGVxdWFsKG90aGVyOiBTc29JbnN0YW5jZUFDQUNvbmZpZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBkZWVwRXF1YWwodGhpcywgb3RoZXIpO1xuICB9XG59XG4iXX0=","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ManagedPolicyAttachment = void 0;\nconst maybe_parsed_1 = require(\"../diff/maybe-parsed\");\nclass ManagedPolicyAttachment {\n static parseManagedPolicies(identityArn, arns) {\n return typeof arns === 'string'\n ? [new ManagedPolicyAttachment(identityArn, arns)]\n : arns.map((arn) => new ManagedPolicyAttachment(identityArn, arn));\n }\n constructor(identityArn, managedPolicyArn) {\n this.identityArn = identityArn;\n this.managedPolicyArn = managedPolicyArn;\n }\n equal(other) {\n return this.identityArn === other.identityArn\n && this.managedPolicyArn === other.managedPolicyArn;\n }\n /**\n * Return a machine-readable version of the changes.\n * This is only used in tests.\n *\n * @internal\n */\n _toJson() {\n return (0, maybe_parsed_1.mkParsed)({\n identityArn: this.identityArn,\n managedPolicyArn: this.managedPolicyArn,\n });\n }\n}\nexports.ManagedPolicyAttachment = ManagedPolicyAttachment;\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFuYWdlZC1wb2xpY3kuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJtYW5hZ2VkLXBvbGljeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSx1REFBNkQ7QUFFN0QsTUFBYSx1QkFBdUI7SUFDM0IsTUFBTSxDQUFDLG9CQUFvQixDQUFDLFdBQW1CLEVBQUUsSUFBdUI7UUFDN0UsT0FBTyxPQUFPLElBQUksS0FBSyxRQUFRO1lBQzdCLENBQUMsQ0FBQyxDQUFDLElBQUksdUJBQXVCLENBQUMsV0FBVyxFQUFFLElBQUksQ0FBQyxDQUFDO1lBQ2xELENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBVyxFQUFFLEVBQUUsQ0FBQyxJQUFJLHVCQUF1QixDQUFDLFdBQVcsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQy9FLENBQUM7SUFFRCxZQUE0QixXQUFtQixFQUFrQixnQkFBd0I7UUFBN0QsZ0JBQVcsR0FBWCxXQUFXLENBQVE7UUFBa0IscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFRO0lBQ3pGLENBQUM7SUFFTSxLQUFLLENBQUMsS0FBOEI7UUFDekMsT0FBTyxJQUFJLENBQUMsV0FBVyxLQUFLLEtBQUssQ0FBQyxXQUFXO2VBQ3RDLElBQUksQ0FBQyxnQkFBZ0IsS0FBSyxLQUFLLENBQUMsZ0JBQWdCLENBQUM7SUFDMUQsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0ksT0FBTztRQUNaLE9BQU8sSUFBQSx1QkFBUSxFQUFDO1lBQ2QsV0FBVyxFQUFFLElBQUksQ0FBQyxXQUFXO1lBQzdCLGdCQUFnQixFQUFFLElBQUksQ0FBQyxnQkFBZ0I7U0FDeEMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztDQUNGO0FBM0JELDBEQTJCQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE1heWJlUGFyc2VkLCBta1BhcnNlZCB9IGZyb20gJy4uL2RpZmYvbWF5YmUtcGFyc2VkJztcblxuZXhwb3J0IGNsYXNzIE1hbmFnZWRQb2xpY3lBdHRhY2htZW50IHtcbiAgcHVibGljIHN0YXRpYyBwYXJzZU1hbmFnZWRQb2xpY2llcyhpZGVudGl0eUFybjogc3RyaW5nLCBhcm5zOiBzdHJpbmcgfCBzdHJpbmdbXSk6IE1hbmFnZWRQb2xpY3lBdHRhY2htZW50W10ge1xuICAgIHJldHVybiB0eXBlb2YgYXJucyA9PT0gJ3N0cmluZydcbiAgICAgID8gW25ldyBNYW5hZ2VkUG9saWN5QXR0YWNobWVudChpZGVudGl0eUFybiwgYXJucyldXG4gICAgICA6IGFybnMubWFwKChhcm46IHN0cmluZykgPT4gbmV3IE1hbmFnZWRQb2xpY3lBdHRhY2htZW50KGlkZW50aXR5QXJuLCBhcm4pKTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyByZWFkb25seSBpZGVudGl0eUFybjogc3RyaW5nLCBwdWJsaWMgcmVhZG9ubHkgbWFuYWdlZFBvbGljeUFybjogc3RyaW5nKSB7XG4gIH1cblxuICBwdWJsaWMgZXF1YWwob3RoZXI6IE1hbmFnZWRQb2xpY3lBdHRhY2htZW50KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuaWRlbnRpdHlBcm4gPT09IG90aGVyLmlkZW50aXR5QXJuXG4gICAgICAgICYmIHRoaXMubWFuYWdlZFBvbGljeUFybiA9PT0gb3RoZXIubWFuYWdlZFBvbGljeUFybjtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm4gYSBtYWNoaW5lLXJlYWRhYmxlIHZlcnNpb24gb2YgdGhlIGNoYW5nZXMuXG4gICAqIFRoaXMgaXMgb25seSB1c2VkIGluIHRlc3RzLlxuICAgKlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIHB1YmxpYyBfdG9Kc29uKCk6IE1heWJlUGFyc2VkPE1hbmFnZWRQb2xpY3lKc29uPiB7XG4gICAgcmV0dXJuIG1rUGFyc2VkKHtcbiAgICAgIGlkZW50aXR5QXJuOiB0aGlzLmlkZW50aXR5QXJuLFxuICAgICAgbWFuYWdlZFBvbGljeUFybjogdGhpcy5tYW5hZ2VkUG9saWN5QXJuLFxuICAgIH0pO1xuICB9XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTWFuYWdlZFBvbGljeUpzb24ge1xuICBpZGVudGl0eUFybjogc3RyaW5nO1xuICBtYW5hZ2VkUG9saWN5QXJuOiBzdHJpbmc7XG59XG4iXX0=","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.renderCondition = exports.Effect = exports.Targets = exports.parseLambdaPermission = exports.parseStatements = exports.Statement = void 0;\nconst maybe_parsed_1 = require(\"../diff/maybe-parsed\");\nconst util_1 = require(\"../util\");\n// namespace object imports won't work in the bundle for function exports\n// eslint-disable-next-line @typescript-eslint/no-require-imports\nconst deepEqual = require('fast-deep-equal');\nclass Statement {\n constructor(statement) {\n if (typeof statement === 'string') {\n this.sid = undefined;\n this.effect = Effect.Unknown;\n this.resources = new Targets({}, '', '');\n this.actions = new Targets({}, '', '');\n this.principals = new Targets({}, '', '');\n this.condition = undefined;\n this.serializedIntrinsic = statement;\n }\n else {\n this.sid = expectString(statement.Sid);\n this.effect = expectEffect(statement.Effect);\n this.resources = new Targets(statement, 'Resource', 'NotResource');\n this.actions = new Targets(statement, 'Action', 'NotAction');\n this.principals = new Targets(statement, 'Principal', 'NotPrincipal');\n this.condition = statement.Condition;\n this.serializedIntrinsic = undefined;\n }\n }\n /**\n * Whether this statement is equal to the other statement\n */\n equal(other) {\n return (this.sid === other.sid\n && this.effect === other.effect\n && this.serializedIntrinsic === other.serializedIntrinsic\n && this.resources.equal(other.resources)\n && this.actions.equal(other.actions)\n && this.principals.equal(other.principals)\n && deepEqual(this.condition, other.condition));\n }\n render() {\n return this.serializedIntrinsic\n ? {\n resource: this.serializedIntrinsic,\n effect: '',\n action: '',\n principal: this.principals.render(), // these will be replaced by the call to replaceEmpty() from IamChanges\n condition: '',\n }\n : {\n resource: this.resources.render(),\n effect: this.effect,\n action: this.actions.render(),\n principal: this.principals.render(),\n condition: renderCondition(this.condition),\n };\n }\n /**\n * Return a machine-readable version of the changes.\n * This is only used in tests.\n *\n * @internal\n */\n _toJson() {\n return this.serializedIntrinsic\n ? (0, maybe_parsed_1.mkUnparseable)(this.serializedIntrinsic)\n : (0, maybe_parsed_1.mkParsed)((0, util_1.deepRemoveUndefined)({\n sid: this.sid,\n effect: this.effect,\n resources: this.resources._toJson(),\n principals: this.principals._toJson(),\n actions: this.actions._toJson(),\n condition: this.condition,\n }));\n }\n /**\n * Whether this is a negative statement\n *\n * A statement is negative if any of its targets are negative, inverted\n * if the Effect is Deny.\n */\n get isNegativeStatement() {\n const notTarget = this.actions.not || this.principals.not || this.resources.not;\n return this.effect === Effect.Allow ? notTarget : !notTarget;\n }\n}\nexports.Statement = Statement;\n/**\n * Parse a list of statements from undefined, a Statement, or a list of statements\n */\nfunction parseStatements(x) {\n if (x === undefined) {\n x = [];\n }\n if (!Array.isArray(x)) {\n x = [x];\n }\n return x.map((s) => new Statement(s));\n}\nexports.parseStatements = parseStatements;\n/**\n * Parse a Statement from a Lambda::Permission object\n *\n * This is actually what Lambda adds to the policy document if you call AddPermission.\n */\nfunction parseLambdaPermission(x) {\n // Construct a statement from\n const statement = {\n Effect: 'Allow',\n Action: x.Action,\n Resource: x.FunctionName,\n };\n if (x.Principal !== undefined) {\n if (x.Principal === '*') {\n // *\n statement.Principal = '*';\n }\n else if (/^\\d{12}$/.test(x.Principal)) {\n // Account number\n // eslint-disable-next-line @aws-cdk/no-literal-partition\n statement.Principal = { AWS: `arn:aws:iam::${x.Principal}:root` };\n }\n else {\n // Assume it's a service principal\n // We might get this wrong vs. the previous one for tokens. Nothing to be done\n // about that. It's only for human readable consumption after all.\n statement.Principal = { Service: x.Principal };\n }\n }\n if (x.SourceArn !== undefined) {\n if (statement.Condition === undefined) {\n statement.Condition = {};\n }\n statement.Condition.ArnLike = { 'AWS:SourceArn': x.SourceArn };\n }\n if (x.SourceAccount !== undefined) {\n if (statement.Condition === undefined) {\n statement.Condition = {};\n }\n statement.Condition.StringEquals = { 'AWS:SourceAccount': x.SourceAccount };\n }\n if (x.EventSourceToken !== undefined) {\n if (statement.Condition === undefined) {\n statement.Condition = {};\n }\n statement.Condition.StringEquals = { 'lambda:EventSourceToken': x.EventSourceToken };\n }\n return new Statement(statement);\n}\nexports.parseLambdaPermission = parseLambdaPermission;\n/**\n * Targets for a field\n */\nclass Targets {\n constructor(statement, positiveKey, negativeKey) {\n if (negativeKey in statement) {\n this.values = forceListOfStrings(statement[negativeKey]);\n this.not = true;\n }\n else {\n this.values = forceListOfStrings(statement[positiveKey]);\n this.not = false;\n }\n this.values.sort();\n }\n get empty() {\n return this.values.length === 0;\n }\n /**\n * Whether this set of targets is equal to the other set of targets\n */\n equal(other) {\n return this.not === other.not && deepEqual(this.values.sort(), other.values.sort());\n }\n /**\n * If the current value set is empty, put this in it\n */\n replaceEmpty(replacement) {\n if (this.empty) {\n this.values.push(replacement);\n }\n }\n /**\n * If the actions contains a '*', replace with this string.\n */\n replaceStar(replacement) {\n for (let i = 0; i < this.values.length; i++) {\n if (this.values[i] === '*') {\n this.values[i] = replacement;\n }\n }\n this.values.sort();\n }\n /**\n * Render into a summary table cell\n */\n render() {\n return this.not\n ? this.values.map(s => `NOT ${s}`).join('\\n')\n : this.values.join('\\n');\n }\n /**\n * Return a machine-readable version of the changes.\n * This is only used in tests.\n *\n * @internal\n */\n _toJson() {\n return { not: this.not, values: this.values };\n }\n}\nexports.Targets = Targets;\nvar Effect;\n(function (Effect) {\n Effect[\"Unknown\"] = \"Unknown\";\n Effect[\"Allow\"] = \"Allow\";\n Effect[\"Deny\"] = \"Deny\";\n})(Effect || (exports.Effect = Effect = {}));\nfunction expectString(x) {\n return typeof x === 'string' ? x : undefined;\n}\nfunction expectEffect(x) {\n if (x === Effect.Allow || x === Effect.Deny) {\n return x;\n }\n return Effect.Unknown;\n}\nfunction forceListOfStrings(x) {\n if (typeof x === 'string') {\n return [x];\n }\n if (typeof x === 'undefined' || x === null) {\n return [];\n }\n if (Array.isArray(x)) {\n return x.map(e => forceListOfStrings(e).join(','));\n }\n if (typeof x === 'object' && x !== null) {\n const ret = [];\n for (const [key, value] of Object.entries(x)) {\n ret.push(...forceListOfStrings(value).map(s => `${key}:${s}`));\n }\n return ret;\n }\n return [`${x}`];\n}\n/**\n * Render the Condition column\n */\nfunction renderCondition(condition) {\n if (!condition || Object.keys(condition).length === 0) {\n return '';\n }\n const jsonRepresentation = JSON.stringify(condition, undefined, 2);\n // The JSON representation looks like this:\n //\n // {\n // \"ArnLike\": {\n // \"AWS:SourceArn\": \"${MyTopic86869434}\"\n // }\n // }\n //\n // We can make it more compact without losing information by getting rid of the outermost braces\n // and the indentation.\n const lines = jsonRepresentation.split('\\n');\n return lines.slice(1, lines.length - 1).map(s => s.slice(2)).join('\\n');\n}\nexports.renderCondition = renderCondition;\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhdGVtZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsic3RhdGVtZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLHVEQUE0RTtBQUM1RSxrQ0FBOEM7QUFFOUMseUVBQXlFO0FBQ3pFLGlFQUFpRTtBQUNqRSxNQUFNLFNBQVMsR0FBRyxPQUFPLENBQUMsaUJBQWlCLENBQUMsQ0FBQztBQUU3QyxNQUFhLFNBQVM7SUFpQ3BCLFlBQVksU0FBOEI7UUFDeEMsSUFBSSxPQUFPLFNBQVMsS0FBSyxRQUFRLEVBQUUsQ0FBQztZQUNsQyxJQUFJLENBQUMsR0FBRyxHQUFHLFNBQVMsQ0FBQztZQUNyQixJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUM7WUFDN0IsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLE9BQU8sQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQ3pDLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxPQUFPLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztZQUN2QyxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksT0FBTyxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDMUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUM7WUFDM0IsSUFBSSxDQUFDLG1CQUFtQixHQUFHLFNBQVMsQ0FBQztRQUN2QyxDQUFDO2FBQU0sQ0FBQztZQUNOLElBQUksQ0FBQyxHQUFHLEdBQUcsWUFBWSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUN2QyxJQUFJLENBQUMsTUFBTSxHQUFHLFlBQVksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDN0MsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLE9BQU8sQ0FBQyxTQUFTLEVBQUUsVUFBVSxFQUFFLGFBQWEsQ0FBQyxDQUFDO1lBQ25FLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxPQUFPLENBQUMsU0FBUyxFQUFFLFFBQVEsRUFBRSxXQUFXLENBQUMsQ0FBQztZQUM3RCxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksT0FBTyxDQUFDLFNBQVMsRUFBRSxXQUFXLEVBQUUsY0FBYyxDQUFDLENBQUM7WUFDdEUsSUFBSSxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUMsU0FBUyxDQUFDO1lBQ3JDLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxTQUFTLENBQUM7UUFDdkMsQ0FBQztJQUNILENBQUM7SUFFRDs7T0FFRztJQUNJLEtBQUssQ0FBQyxLQUFnQjtRQUMzQixPQUFPLENBQUMsSUFBSSxDQUFDLEdBQUcsS0FBSyxLQUFLLENBQUMsR0FBRztlQUN6QixJQUFJLENBQUMsTUFBTSxLQUFLLEtBQUssQ0FBQyxNQUFNO2VBQzVCLElBQUksQ0FBQyxtQkFBbUIsS0FBSyxLQUFLLENBQUMsbUJBQW1CO2VBQ3RELElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUM7ZUFDckMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQztlQUNqQyxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDO2VBQ3ZDLFNBQVMsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO0lBQ25ELENBQUM7SUFFTSxNQUFNO1FBQ1gsT0FBTyxJQUFJLENBQUMsbUJBQW1CO1lBQzdCLENBQUMsQ0FBQztnQkFDQSxRQUFRLEVBQUUsSUFBSSxDQUFDLG1CQUFtQjtnQkFDbEMsTUFBTSxFQUFFLEVBQUU7Z0JBQ1YsTUFBTSxFQUFFLEVBQUU7Z0JBQ1YsU0FBUyxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxFQUFFLEVBQUUsdUVBQXVFO2dCQUM1RyxTQUFTLEVBQUUsRUFBRTthQUNkO1lBQ0QsQ0FBQyxDQUFDO2dCQUNBLFFBQVEsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sRUFBRTtnQkFDakMsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNO2dCQUNuQixNQUFNLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUU7Z0JBQzdCLFNBQVMsRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sRUFBRTtnQkFDbkMsU0FBUyxFQUFFLGVBQWUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDO2FBQzNDLENBQUM7SUFDTixDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSSxPQUFPO1FBQ1osT0FBTyxJQUFJLENBQUMsbUJBQW1CO1lBQzdCLENBQUMsQ0FBQyxJQUFBLDRCQUFhLEVBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDO1lBQ3pDLENBQUMsQ0FBQyxJQUFBLHVCQUFRLEVBQUMsSUFBQSwwQkFBbUIsRUFBQztnQkFDN0IsR0FBRyxFQUFFLElBQUksQ0FBQyxHQUFHO2dCQUNiLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTTtnQkFDbkIsU0FBUyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxFQUFFO2dCQUNuQyxVQUFVLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLEVBQUU7Z0JBQ3JDLE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRTtnQkFDL0IsU0FBUyxFQUFFLElBQUksQ0FBQyxTQUFTO2FBQzFCLENBQUMsQ0FBQyxDQUFDO0lBQ1IsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsSUFBVyxtQkFBbUI7UUFDNUIsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUM7UUFDaEYsT0FBTyxJQUFJLENBQUMsTUFBTSxLQUFLLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7SUFDL0QsQ0FBQztDQUNGO0FBakhELDhCQWlIQztBQXdCRDs7R0FFRztBQUNILFNBQWdCLGVBQWUsQ0FBQyxDQUFNO0lBQ3BDLElBQUksQ0FBQyxLQUFLLFNBQVMsRUFBRSxDQUFDO1FBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQztJQUFDLENBQUM7SUFDaEMsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQUMsQ0FBQztJQUNuQyxPQUFPLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFNLEVBQUUsRUFBRSxDQUFDLElBQUksU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDN0MsQ0FBQztBQUpELDBDQUlDO0FBRUQ7Ozs7R0FJRztBQUNILFNBQWdCLHFCQUFxQixDQUFDLENBQU07SUFDMUMsNkJBQTZCO0lBQzdCLE1BQU0sU0FBUyxHQUFRO1FBQ3JCLE1BQU0sRUFBRSxPQUFPO1FBQ2YsTUFBTSxFQUFFLENBQUMsQ0FBQyxNQUFNO1FBQ2hCLFFBQVEsRUFBRSxDQUFDLENBQUMsWUFBWTtLQUN6QixDQUFDO0lBRUYsSUFBSSxDQUFDLENBQUMsU0FBUyxLQUFLLFNBQVMsRUFBRSxDQUFDO1FBQzlCLElBQUksQ0FBQyxDQUFDLFNBQVMsS0FBSyxHQUFHLEVBQUUsQ0FBQztZQUN4QixJQUFJO1lBQ0osU0FBUyxDQUFDLFNBQVMsR0FBRyxHQUFHLENBQUM7UUFDNUIsQ0FBQzthQUFNLElBQUksVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQztZQUN4QyxpQkFBaUI7WUFDakIseURBQXlEO1lBQ3pELFNBQVMsQ0FBQyxTQUFTLEdBQUcsRUFBRSxHQUFHLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQyxTQUFTLE9BQU8sRUFBRSxDQUFDO1FBQ3BFLENBQUM7YUFBTSxDQUFDO1lBQ04sa0NBQWtDO1lBQ2xDLDhFQUE4RTtZQUM5RSxrRUFBa0U7WUFDbEUsU0FBUyxDQUFDLFNBQVMsR0FBRyxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUMsU0FBUyxFQUFFLENBQUM7UUFDakQsQ0FBQztJQUNILENBQUM7SUFDRCxJQUFJLENBQUMsQ0FBQyxTQUFTLEtBQUssU0FBUyxFQUFFLENBQUM7UUFDOUIsSUFBSSxTQUFTLENBQUMsU0FBUyxLQUFLLFNBQVMsRUFBRSxDQUFDO1lBQUMsU0FBUyxDQUFDLFNBQVMsR0FBRyxFQUFFLENBQUM7UUFBQyxDQUFDO1FBQ3BFLFNBQVMsQ0FBQyxTQUFTLENBQUMsT0FBTyxHQUFHLEVBQUUsZUFBZSxFQUFFLENBQUMsQ0FBQyxTQUFTLEVBQUUsQ0FBQztJQUNqRSxDQUFDO0lBQ0QsSUFBSSxDQUFDLENBQUMsYUFBYSxLQUFLLFNBQVMsRUFBRSxDQUFDO1FBQ2xDLElBQUksU0FBUyxDQUFDLFNBQVMsS0FBSyxTQUFTLEVBQUUsQ0FBQztZQUFDLFNBQVMsQ0FBQyxTQUFTLEdBQUcsRUFBRSxDQUFDO1FBQUMsQ0FBQztRQUNwRSxTQUFTLENBQUMsU0FBUyxDQUFDLFlBQVksR0FBRyxFQUFFLG1CQUFtQixFQUFFLENBQUMsQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUM5RSxDQUFDO0lBQ0QsSUFBSSxDQUFDLENBQUMsZ0JBQWdCLEtBQUssU0FBUyxFQUFFLENBQUM7UUFDckMsSUFBSSxTQUFTLENBQUMsU0FBUyxLQUFLLFNBQVMsRUFBRSxDQUFDO1lBQUMsU0FBUyxDQUFDLFNBQVMsR0FBRyxFQUFFLENBQUM7UUFBQyxDQUFDO1FBQ3BFLFNBQVMsQ0FBQyxTQUFTLENBQUMsWUFBWSxHQUFHLEVBQUUseUJBQXlCLEVBQUUsQ0FBQyxDQUFDLGdCQUFnQixFQUFFLENBQUM7SUFDdkYsQ0FBQztJQUVELE9BQU8sSUFBSSxTQUFTLENBQUMsU0FBUyxDQUFDLENBQUM7QUFDbEMsQ0FBQztBQXJDRCxzREFxQ0M7QUFFRDs7R0FFRztBQUNILE1BQWEsT0FBTztJQVdsQixZQUFZLFNBQXFCLEVBQUUsV0FBbUIsRUFBRSxXQUFtQjtRQUN6RSxJQUFJLFdBQVcsSUFBSSxTQUFTLEVBQUUsQ0FBQztZQUM3QixJQUFJLENBQUMsTUFBTSxHQUFHLGtCQUFrQixDQUFDLFNBQVMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDO1lBQ3pELElBQUksQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDO1FBQ2xCLENBQUM7YUFBTSxDQUFDO1lBQ04sSUFBSSxDQUFDLE1BQU0sR0FBRyxrQkFBa0IsQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQztZQUN6RCxJQUFJLENBQUMsR0FBRyxHQUFHLEtBQUssQ0FBQztRQUNuQixDQUFDO1FBQ0QsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUNyQixDQUFDO0lBRUQsSUFBVyxLQUFLO1FBQ2QsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sS0FBSyxDQUFDLENBQUM7SUFDbEMsQ0FBQztJQUVEOztPQUVHO0lBQ0ksS0FBSyxDQUFDLEtBQWM7UUFDekIsT0FBTyxJQUFJLENBQUMsR0FBRyxLQUFLLEtBQUssQ0FBQyxHQUFHLElBQUksU0FBUyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLEVBQUUsS0FBSyxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQ3RGLENBQUM7SUFFRDs7T0FFRztJQUNJLFlBQVksQ0FBQyxXQUFtQjtRQUNyQyxJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNmLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ2hDLENBQUM7SUFDSCxDQUFDO0lBRUQ7O09BRUc7SUFDSSxXQUFXLENBQUMsV0FBbUI7UUFDcEMsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7WUFDNUMsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxLQUFLLEdBQUcsRUFBRSxDQUFDO2dCQUMzQixJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLFdBQVcsQ0FBQztZQUMvQixDQUFDO1FBQ0gsQ0FBQztRQUNELElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDckIsQ0FBQztJQUVEOztPQUVHO0lBQ0ksTUFBTTtRQUNYLE9BQU8sSUFBSSxDQUFDLEdBQUc7WUFDYixDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQztZQUM3QyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDN0IsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0ksT0FBTztRQUNaLE9BQU8sRUFBRSxHQUFHLEVBQUUsSUFBSSxDQUFDLEdBQUcsRUFBRSxNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO0lBQ2hELENBQUM7Q0FDRjtBQXhFRCwwQkF3RUM7QUFJRCxJQUFZLE1BSVg7QUFKRCxXQUFZLE1BQU07SUFDaEIsNkJBQW1CLENBQUE7SUFDbkIseUJBQWUsQ0FBQTtJQUNmLHVCQUFhLENBQUE7QUFDZixDQUFDLEVBSlcsTUFBTSxzQkFBTixNQUFNLFFBSWpCO0FBRUQsU0FBUyxZQUFZLENBQUMsQ0FBVTtJQUM5QixPQUFPLE9BQU8sQ0FBQyxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7QUFDL0MsQ0FBQztBQUVELFNBQVMsWUFBWSxDQUFDLENBQVU7SUFDOUIsSUFBSSxDQUFDLEtBQUssTUFBTSxDQUFDLEtBQUssSUFBSSxDQUFDLEtBQUssTUFBTSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQUMsT0FBTyxDQUFXLENBQUM7SUFBQyxDQUFDO0lBQ3BFLE9BQU8sTUFBTSxDQUFDLE9BQU8sQ0FBQztBQUN4QixDQUFDO0FBRUQsU0FBUyxrQkFBa0IsQ0FBQyxDQUFVO0lBQ3BDLElBQUksT0FBTyxDQUFDLEtBQUssUUFBUSxFQUFFLENBQUM7UUFBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFBQyxDQUFDO0lBQzFDLElBQUksT0FBTyxDQUFDLEtBQUssV0FBVyxJQUFJLENBQUMsS0FBSyxJQUFJLEVBQUUsQ0FBQztRQUFDLE9BQU8sRUFBRSxDQUFDO0lBQUMsQ0FBQztJQUUxRCxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUNyQixPQUFPLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUNyRCxDQUFDO0lBRUQsSUFBSSxPQUFPLENBQUMsS0FBSyxRQUFRLElBQUksQ0FBQyxLQUFLLElBQUksRUFBRSxDQUFDO1FBQ3hDLE1BQU0sR0FBRyxHQUFhLEVBQUUsQ0FBQztRQUN6QixLQUFLLE1BQU0sQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQzdDLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxrQkFBa0IsQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDakUsQ0FBQztRQUNELE9BQU8sR0FBRyxDQUFDO0lBQ2IsQ0FBQztJQUVELE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDbEIsQ0FBQztBQUVEOztHQUVHO0FBQ0gsU0FBZ0IsZUFBZSxDQUFDLFNBQWM7SUFDNUMsSUFBSSxDQUFDLFNBQVMsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztRQUFDLE9BQU8sRUFBRSxDQUFDO0lBQUMsQ0FBQztJQUNyRSxNQUFNLGtCQUFrQixHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsU0FBUyxFQUFFLFNBQVMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUVuRSwyQ0FBMkM7SUFDM0MsRUFBRTtJQUNGLEtBQUs7SUFDTCxrQkFBa0I7SUFDbEIsNkNBQTZDO0lBQzdDLE9BQU87SUFDUCxLQUFLO0lBQ0wsRUFBRTtJQUNGLGdHQUFnRztJQUNoRyx1QkFBdUI7SUFDdkIsTUFBTSxLQUFLLEdBQUcsa0JBQWtCLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzdDLE9BQU8sS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQzFFLENBQUM7QUFoQkQsMENBZ0JDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTWF5YmVQYXJzZWQsIG1rUGFyc2VkLCBta1VucGFyc2VhYmxlIH0gZnJvbSAnLi4vZGlmZi9tYXliZS1wYXJzZWQnO1xuaW1wb3J0IHsgZGVlcFJlbW92ZVVuZGVmaW5lZCB9IGZyb20gJy4uL3V0aWwnO1xuXG4vLyBuYW1lc3BhY2Ugb2JqZWN0IGltcG9ydHMgd29uJ3Qgd29yayBpbiB0aGUgYnVuZGxlIGZvciBmdW5jdGlvbiBleHBvcnRzXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXJlcXVpcmUtaW1wb3J0c1xuY29uc3QgZGVlcEVxdWFsID0gcmVxdWlyZSgnZmFzdC1kZWVwLWVxdWFsJyk7XG5cbmV4cG9ydCBjbGFzcyBTdGF0ZW1lbnQge1xuICAvKipcbiAgICogU3RhdGVtZW50IElEXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgc2lkOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIFN0YXRlbWVudCBlZmZlY3RcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBlZmZlY3Q6IEVmZmVjdDtcblxuICAvKipcbiAgICogUmVzb3VyY2VzXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgcmVzb3VyY2VzOiBUYXJnZXRzO1xuXG4gIC8qKlxuICAgKiBQcmluY2lwYWxzXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgcHJpbmNpcGFsczogVGFyZ2V0cztcblxuICAvKipcbiAgICogQWN0aW9uc1xuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGFjdGlvbnM6IFRhcmdldHM7XG5cbiAgLyoqXG4gICAqIE9iamVjdCB3aXRoIGNvbmRpdGlvbnNcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBjb25kaXRpb24/OiBhbnk7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBzZXJpYWxpemVkSW50cmluc2ljOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgY29uc3RydWN0b3Ioc3RhdGVtZW50OiBVbmtub3duTWFwIHwgc3RyaW5nKSB7XG4gICAgaWYgKHR5cGVvZiBzdGF0ZW1lbnQgPT09ICdzdHJpbmcnKSB7XG4gICAgICB0aGlzLnNpZCA9IHVuZGVmaW5lZDtcbiAgICAgIHRoaXMuZWZmZWN0ID0gRWZmZWN0LlVua25vd247XG4gICAgICB0aGlzLnJlc291cmNlcyA9IG5ldyBUYXJnZXRzKHt9LCAnJywgJycpO1xuICAgICAgdGhpcy5hY3Rpb25zID0gbmV3IFRhcmdldHMoe30sICcnLCAnJyk7XG4gICAgICB0aGlzLnByaW5jaXBhbHMgPSBuZXcgVGFyZ2V0cyh7fSwgJycsICcnKTtcbiAgICAgIHRoaXMuY29uZGl0aW9uID0gdW5kZWZpbmVkO1xuICAgICAgdGhpcy5zZXJpYWxpemVkSW50cmluc2ljID0gc3RhdGVtZW50O1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnNpZCA9IGV4cGVjdFN0cmluZyhzdGF0ZW1lbnQuU2lkKTtcbiAgICAgIHRoaXMuZWZmZWN0ID0gZXhwZWN0RWZmZWN0KHN0YXRlbWVudC5FZmZlY3QpO1xuICAgICAgdGhpcy5yZXNvdXJjZXMgPSBuZXcgVGFyZ2V0cyhzdGF0ZW1lbnQsICdSZXNvdXJjZScsICdOb3RSZXNvdXJjZScpO1xuICAgICAgdGhpcy5hY3Rpb25zID0gbmV3IFRhcmdldHMoc3RhdGVtZW50LCAnQWN0aW9uJywgJ05vdEFjdGlvbicpO1xuICAgICAgdGhpcy5wcmluY2lwYWxzID0gbmV3IFRhcmdldHMoc3RhdGVtZW50LCAnUHJpbmNpcGFsJywgJ05vdFByaW5jaXBhbCcpO1xuICAgICAgdGhpcy5jb25kaXRpb24gPSBzdGF0ZW1lbnQuQ29uZGl0aW9uO1xuICAgICAgdGhpcy5zZXJpYWxpemVkSW50cmluc2ljID0gdW5kZWZpbmVkO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoaXMgc3RhdGVtZW50IGlzIGVxdWFsIHRvIHRoZSBvdGhlciBzdGF0ZW1lbnRcbiAgICovXG4gIHB1YmxpYyBlcXVhbChvdGhlcjogU3RhdGVtZW50KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICh0aGlzLnNpZCA9PT0gb3RoZXIuc2lkXG4gICAgICAmJiB0aGlzLmVmZmVjdCA9PT0gb3RoZXIuZWZmZWN0XG4gICAgICAmJiB0aGlzLnNlcmlhbGl6ZWRJbnRyaW5zaWMgPT09IG90aGVyLnNlcmlhbGl6ZWRJbnRyaW5zaWNcbiAgICAgICYmIHRoaXMucmVzb3VyY2VzLmVxdWFsKG90aGVyLnJlc291cmNlcylcbiAgICAgICYmIHRoaXMuYWN0aW9ucy5lcXVhbChvdGhlci5hY3Rpb25zKVxuICAgICAgJiYgdGhpcy5wcmluY2lwYWxzLmVxdWFsKG90aGVyLnByaW5jaXBhbHMpXG4gICAgICAmJiBkZWVwRXF1YWwodGhpcy5jb25kaXRpb24sIG90aGVyLmNvbmRpdGlvbikpO1xuICB9XG5cbiAgcHVibGljIHJlbmRlcigpOiBSZW5kZXJlZFN0YXRlbWVudCB7XG4gICAgcmV0dXJuIHRoaXMuc2VyaWFsaXplZEludHJpbnNpY1xuICAgICAgPyB7XG4gICAgICAgIHJlc291cmNlOiB0aGlzLnNlcmlhbGl6ZWRJbnRyaW5zaWMsXG4gICAgICAgIGVmZmVjdDogJycsXG4gICAgICAgIGFjdGlvbjogJycsXG4gICAgICAgIHByaW5jaXBhbDogdGhpcy5wcmluY2lwYWxzLnJlbmRlcigpLCAvLyB0aGVzZSB3aWxsIGJlIHJlcGxhY2VkIGJ5IHRoZSBjYWxsIHRvIHJlcGxhY2VFbXB0eSgpIGZyb20gSWFtQ2hhbmdlc1xuICAgICAgICBjb25kaXRpb246ICcnLFxuICAgICAgfVxuICAgICAgOiB7XG4gICAgICAgIHJlc291cmNlOiB0aGlzLnJlc291cmNlcy5yZW5kZXIoKSxcbiAgICAgICAgZWZmZWN0OiB0aGlzLmVmZmVjdCxcbiAgICAgICAgYWN0aW9uOiB0aGlzLmFjdGlvbnMucmVuZGVyKCksXG4gICAgICAgIHByaW5jaXBhbDogdGhpcy5wcmluY2lwYWxzLnJlbmRlcigpLFxuICAgICAgICBjb25kaXRpb246IHJlbmRlckNvbmRpdGlvbih0aGlzLmNvbmRpdGlvbiksXG4gICAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybiBhIG1hY2hpbmUtcmVhZGFibGUgdmVyc2lvbiBvZiB0aGUgY2hhbmdlcy5cbiAgICogVGhpcyBpcyBvbmx5IHVzZWQgaW4gdGVzdHMuXG4gICAqXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgcHVibGljIF90b0pzb24oKTogTWF5YmVQYXJzZWQ8U3RhdGVtZW50SnNvbj4ge1xuICAgIHJldHVybiB0aGlzLnNlcmlhbGl6ZWRJbnRyaW5zaWNcbiAgICAgID8gbWtVbnBhcnNlYWJsZSh0aGlzLnNlcmlhbGl6ZWRJbnRyaW5zaWMpXG4gICAgICA6IG1rUGFyc2VkKGRlZXBSZW1vdmVVbmRlZmluZWQoe1xuICAgICAgICBzaWQ6IHRoaXMuc2lkLFxuICAgICAgICBlZmZlY3Q6IHRoaXMuZWZmZWN0LFxuICAgICAgICByZXNvdXJjZXM6IHRoaXMucmVzb3VyY2VzLl90b0pzb24oKSxcbiAgICAgICAgcHJpbmNpcGFsczogdGhpcy5wcmluY2lwYWxzLl90b0pzb24oKSxcbiAgICAgICAgYWN0aW9uczogdGhpcy5hY3Rpb25zLl90b0pzb24oKSxcbiAgICAgICAgY29uZGl0aW9uOiB0aGlzLmNvbmRpdGlvbixcbiAgICAgIH0pKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoaXMgaXMgYSBuZWdhdGl2ZSBzdGF0ZW1lbnRcbiAgICpcbiAgICogQSBzdGF0ZW1lbnQgaXMgbmVnYXRpdmUgaWYgYW55IG9mIGl0cyB0YXJnZXRzIGFyZSBuZWdhdGl2ZSwgaW52ZXJ0ZWRcbiAgICogaWYgdGhlIEVmZmVjdCBpcyBEZW55LlxuICAgKi9cbiAgcHVibGljIGdldCBpc05lZ2F0aXZlU3RhdGVtZW50KCk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IG5vdFRhcmdldCA9IHRoaXMuYWN0aW9ucy5ub3QgfHwgdGhpcy5wcmluY2lwYWxzLm5vdCB8fCB0aGlzLnJlc291cmNlcy5ub3Q7XG4gICAgcmV0dXJuIHRoaXMuZWZmZWN0ID09PSBFZmZlY3QuQWxsb3cgPyBub3RUYXJnZXQgOiAhbm90VGFyZ2V0O1xuICB9XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVuZGVyZWRTdGF0ZW1lbnQge1xuICByZWFkb25seSByZXNvdXJjZTogc3RyaW5nO1xuICByZWFkb25seSBlZmZlY3Q6IHN0cmluZztcbiAgcmVhZG9ubHkgYWN0aW9uOiBzdHJpbmc7XG4gIHJlYWRvbmx5IHByaW5jaXBhbDogc3RyaW5nO1xuICByZWFkb25seSBjb25kaXRpb246IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTdGF0ZW1lbnRKc29uIHtcbiAgc2lkPzogc3RyaW5nO1xuICBlZmZlY3Q6IHN0cmluZztcbiAgcmVzb3VyY2VzOiBUYXJnZXRzSnNvbjtcbiAgYWN0aW9uczogVGFyZ2V0c0pzb247XG4gIHByaW5jaXBhbHM6IFRhcmdldHNKc29uO1xuICBjb25kaXRpb24/OiBhbnk7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVGFyZ2V0c0pzb24ge1xuICBub3Q6IGJvb2xlYW47XG4gIHZhbHVlczogc3RyaW5nW107XG59XG5cbi8qKlxuICogUGFyc2UgYSBsaXN0IG9mIHN0YXRlbWVudHMgZnJvbSB1bmRlZmluZWQsIGEgU3RhdGVtZW50LCBvciBhIGxpc3Qgb2Ygc3RhdGVtZW50c1xuICovXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VTdGF0ZW1lbnRzKHg6IGFueSk6IFN0YXRlbWVudFtdIHtcbiAgaWYgKHggPT09IHVuZGVmaW5lZCkgeyB4ID0gW107IH1cbiAgaWYgKCFBcnJheS5pc0FycmF5KHgpKSB7IHggPSBbeF07IH1cbiAgcmV0dXJuIHgubWFwKChzOiBhbnkpID0+IG5ldyBTdGF0ZW1lbnQocykpO1xufVxuXG4vKipcbiAqIFBhcnNlIGEgU3RhdGVtZW50IGZyb20gYSBMYW1iZGE6OlBlcm1pc3Npb24gb2JqZWN0XG4gKlxuICogVGhpcyBpcyBhY3R1YWxseSB3aGF0IExhbWJkYSBhZGRzIHRvIHRoZSBwb2xpY3kgZG9jdW1lbnQgaWYgeW91IGNhbGwgQWRkUGVybWlzc2lvbi5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlTGFtYmRhUGVybWlzc2lvbih4OiBhbnkpOiBTdGF0ZW1lbnQge1xuICAvLyBDb25zdHJ1Y3QgYSBzdGF0ZW1lbnQgZnJvbVxuICBjb25zdCBzdGF0ZW1lbnQ6IGFueSA9IHtcbiAgICBFZmZlY3Q6ICdBbGxvdycsXG4gICAgQWN0aW9uOiB4LkFjdGlvbixcbiAgICBSZXNvdXJjZTogeC5GdW5jdGlvbk5hbWUsXG4gIH07XG5cbiAgaWYgKHguUHJpbmNpcGFsICE9PSB1bmRlZmluZWQpIHtcbiAgICBpZiAoeC5QcmluY2lwYWwgPT09ICcqJykge1xuICAgICAgLy8gKlxuICAgICAgc3RhdGVtZW50LlByaW5jaXBhbCA9ICcqJztcbiAgICB9IGVsc2UgaWYgKC9eXFxkezEyfSQvLnRlc3QoeC5QcmluY2lwYWwpKSB7XG4gICAgICAvLyBBY2NvdW50IG51bWJlclxuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhd3MtY2RrL25vLWxpdGVyYWwtcGFydGl0aW9uXG4gICAgICBzdGF0ZW1lbnQuUHJpbmNpcGFsID0geyBBV1M6IGBhcm46YXdzOmlhbTo6JHt4LlByaW5jaXBhbH06cm9vdGAgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gQXNzdW1lIGl0J3MgYSBzZXJ2aWNlIHByaW5jaXBhbFxuICAgICAgLy8gV2UgbWlnaHQgZ2V0IHRoaXMgd3JvbmcgdnMuIHRoZSBwcmV2aW91cyBvbmUgZm9yIHRva2Vucy4gTm90aGluZyB0byBiZSBkb25lXG4gICAgICAvLyBhYm91dCB0aGF0LiBJdCdzIG9ubHkgZm9yIGh1bWFuIHJlYWRhYmxlIGNvbnN1bXB0aW9uIGFmdGVyIGFsbC5cbiAgICAgIHN0YXRlbWVudC5QcmluY2lwYWwgPSB7IFNlcnZpY2U6IHguUHJpbmNpcGFsIH07XG4gICAgfVxuICB9XG4gIGlmICh4LlNvdXJjZUFybiAhPT0gdW5kZWZpbmVkKSB7XG4gICAgaWYgKHN0YXRlbWVudC5Db25kaXRpb24gPT09IHVuZGVmaW5lZCkgeyBzdGF0ZW1lbnQuQ29uZGl0aW9uID0ge307IH1cbiAgICBzdGF0ZW1lbnQuQ29uZGl0aW9uLkFybkxpa2UgPSB7ICdBV1M6U291cmNlQXJuJzogeC5Tb3VyY2VBcm4gfTtcbiAgfVxuICBpZiAoeC5Tb3VyY2VBY2NvdW50ICE9PSB1bmRlZmluZWQpIHtcbiAgICBpZiAoc3RhdGVtZW50LkNvbmRpdGlvbiA9PT0gdW5kZWZpbmVkKSB7IHN0YXRlbWVudC5Db25kaXRpb24gPSB7fTsgfVxuICAgIHN0YXRlbWVudC5Db25kaXRpb24uU3RyaW5nRXF1YWxzID0geyAnQVdTOlNvdXJjZUFjY291bnQnOiB4LlNvdXJjZUFjY291bnQgfTtcbiAgfVxuICBpZiAoeC5FdmVudFNvdXJjZVRva2VuICE9PSB1bmRlZmluZWQpIHtcbiAgICBpZiAoc3RhdGVtZW50LkNvbmRpdGlvbiA9PT0gdW5kZWZpbmVkKSB7IHN0YXRlbWVudC5Db25kaXRpb24gPSB7fTsgfVxuICAgIHN0YXRlbWVudC5Db25kaXRpb24uU3RyaW5nRXF1YWxzID0geyAnbGFtYmRhOkV2ZW50U291cmNlVG9rZW4nOiB4LkV2ZW50U291cmNlVG9rZW4gfTtcbiAgfVxuXG4gIHJldHVybiBuZXcgU3RhdGVtZW50KHN0YXRlbWVudCk7XG59XG5cbi8qKlxuICogVGFyZ2V0cyBmb3IgYSBmaWVsZFxuICovXG5leHBvcnQgY2xhc3MgVGFyZ2V0cyB7XG4gIC8qKlxuICAgKiBUaGUgdmFsdWVzIG9mIHRoZSB0YXJnZXRzXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgdmFsdWVzOiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogV2hldGhlciBwb3NpdGl2ZSBvciBuZWdhdGl2ZSBtYXRjaGVyc1xuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IG5vdDogYm9vbGVhbjtcblxuICBjb25zdHJ1Y3RvcihzdGF0ZW1lbnQ6IFVua25vd25NYXAsIHBvc2l0aXZlS2V5OiBzdHJpbmcsIG5lZ2F0aXZlS2V5OiBzdHJpbmcpIHtcbiAgICBpZiAobmVnYXRpdmVLZXkgaW4gc3RhdGVtZW50KSB7XG4gICAgICB0aGlzLnZhbHVlcyA9IGZvcmNlTGlzdE9mU3RyaW5ncyhzdGF0ZW1lbnRbbmVnYXRpdmVLZXldKTtcbiAgICAgIHRoaXMubm90ID0gdHJ1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy52YWx1ZXMgPSBmb3JjZUxpc3RPZlN0cmluZ3Moc3RhdGVtZW50W3Bvc2l0aXZlS2V5XSk7XG4gICAgICB0aGlzLm5vdCA9IGZhbHNlO1xuICAgIH1cbiAgICB0aGlzLnZhbHVlcy5zb3J0KCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGVtcHR5KCkge1xuICAgIHJldHVybiB0aGlzLnZhbHVlcy5sZW5ndGggPT09IDA7XG4gIH1cblxuICAvKipcbiAgICogV2hldGhlciB0aGlzIHNldCBvZiB0YXJnZXRzIGlzIGVxdWFsIHRvIHRoZSBvdGhlciBzZXQgb2YgdGFyZ2V0c1xuICAgKi9cbiAgcHVibGljIGVxdWFsKG90aGVyOiBUYXJnZXRzKSB7XG4gICAgcmV0dXJuIHRoaXMubm90ID09PSBvdGhlci5ub3QgJiYgZGVlcEVxdWFsKHRoaXMudmFsdWVzLnNvcnQoKSwgb3RoZXIudmFsdWVzLnNvcnQoKSk7XG4gIH1cblxuICAvKipcbiAgICogSWYgdGhlIGN1cnJlbnQgdmFsdWUgc2V0IGlzIGVtcHR5LCBwdXQgdGhpcyBpbiBpdFxuICAgKi9cbiAgcHVibGljIHJlcGxhY2VFbXB0eShyZXBsYWNlbWVudDogc3RyaW5nKSB7XG4gICAgaWYgKHRoaXMuZW1wdHkpIHtcbiAgICAgIHRoaXMudmFsdWVzLnB1c2gocmVwbGFjZW1lbnQpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBJZiB0aGUgYWN0aW9ucyBjb250YWlucyBhICcqJywgcmVwbGFjZSB3aXRoIHRoaXMgc3RyaW5nLlxuICAgKi9cbiAgcHVibGljIHJlcGxhY2VTdGFyKHJlcGxhY2VtZW50OiBzdHJpbmcpIHtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMudmFsdWVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBpZiAodGhpcy52YWx1ZXNbaV0gPT09ICcqJykge1xuICAgICAgICB0aGlzLnZhbHVlc1tpXSA9IHJlcGxhY2VtZW50O1xuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLnZhbHVlcy5zb3J0KCk7XG4gIH1cblxuICAvKipcbiAgICogUmVuZGVyIGludG8gYSBzdW1tYXJ5IHRhYmxlIGNlbGxcbiAgICovXG4gIHB1YmxpYyByZW5kZXIoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5ub3RcbiAgICAgID8gdGhpcy52YWx1ZXMubWFwKHMgPT4gYE5PVCAke3N9YCkuam9pbignXFxuJylcbiAgICAgIDogdGhpcy52YWx1ZXMuam9pbignXFxuJyk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJuIGEgbWFjaGluZS1yZWFkYWJsZSB2ZXJzaW9uIG9mIHRoZSBjaGFuZ2VzLlxuICAgKiBUaGlzIGlzIG9ubHkgdXNlZCBpbiB0ZXN0cy5cbiAgICpcbiAgICogQGludGVybmFsXG4gICAqL1xuICBwdWJsaWMgX3RvSnNvbigpOiBUYXJnZXRzSnNvbiB7XG4gICAgcmV0dXJuIHsgbm90OiB0aGlzLm5vdCwgdmFsdWVzOiB0aGlzLnZhbHVlcyB9O1xuICB9XG59XG5cbnR5cGUgVW5rbm93bk1hcCA9IHtba2V5OiBzdHJpbmddOiB1bmtub3dufTtcblxuZXhwb3J0IGVudW0gRWZmZWN0IHtcbiAgVW5rbm93biA9ICdVbmtub3duJyxcbiAgQWxsb3cgPSAnQWxsb3cnLFxuICBEZW55ID0gJ0RlbnknLFxufVxuXG5mdW5jdGlvbiBleHBlY3RTdHJpbmcoeDogdW5rbm93bik6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gIHJldHVybiB0eXBlb2YgeCA9PT0gJ3N0cmluZycgPyB4IDogdW5kZWZpbmVkO1xufVxuXG5mdW5jdGlvbiBleHBlY3RFZmZlY3QoeDogdW5rbm93bik6IEVmZmVjdCB7XG4gIGlmICh4ID09PSBFZmZlY3QuQWxsb3cgfHwgeCA9PT0gRWZmZWN0LkRlbnkpIHsgcmV0dXJuIHggYXMgRWZmZWN0OyB9XG4gIHJldHVybiBFZmZlY3QuVW5rbm93bjtcbn1cblxuZnVuY3Rpb24gZm9yY2VMaXN0T2ZTdHJpbmdzKHg6IHVua25vd24pOiBzdHJpbmdbXSB7XG4gIGlmICh0eXBlb2YgeCA9PT0gJ3N0cmluZycpIHsgcmV0dXJuIFt4XTsgfVxuICBpZiAodHlwZW9mIHggPT09ICd1bmRlZmluZWQnIHx8IHggPT09IG51bGwpIHsgcmV0dXJuIFtdOyB9XG5cbiAgaWYgKEFycmF5LmlzQXJyYXkoeCkpIHtcbiAgICByZXR1cm4geC5tYXAoZSA9PiBmb3JjZUxpc3RPZlN0cmluZ3MoZSkuam9pbignLCcpKTtcbiAgfVxuXG4gIGlmICh0eXBlb2YgeCA9PT0gJ29iamVjdCcgJiYgeCAhPT0gbnVsbCkge1xuICAgIGNvbnN0IHJldDogc3RyaW5nW10gPSBbXTtcbiAgICBmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyh4KSkge1xuICAgICAgcmV0LnB1c2goLi4uZm9yY2VMaXN0T2ZTdHJpbmdzKHZhbHVlKS5tYXAocyA9PiBgJHtrZXl9OiR7c31gKSk7XG4gICAgfVxuICAgIHJldHVybiByZXQ7XG4gIH1cblxuICByZXR1cm4gW2Ake3h9YF07XG59XG5cbi8qKlxuICogUmVuZGVyIHRoZSBDb25kaXRpb24gY29sdW1uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZW5kZXJDb25kaXRpb24oY29uZGl0aW9uOiBhbnkpOiBzdHJpbmcge1xuICBpZiAoIWNvbmRpdGlvbiB8fCBPYmplY3Qua2V5cyhjb25kaXRpb24pLmxlbmd0aCA9PT0gMCkgeyByZXR1cm4gJyc7IH1cbiAgY29uc3QganNvblJlcHJlc2VudGF0aW9uID0gSlNPTi5zdHJpbmdpZnkoY29uZGl0aW9uLCB1bmRlZmluZWQsIDIpO1xuXG4gIC8vIFRoZSBKU09OIHJlcHJlc2VudGF0aW9uIGxvb2tzIGxpa2UgdGhpczpcbiAgLy9cbiAgLy8gIHtcbiAgLy8gICAgXCJBcm5MaWtlXCI6IHtcbiAgLy8gICAgICBcIkFXUzpTb3VyY2VBcm5cIjogXCIke015VG9waWM4Njg2OTQzNH1cIlxuICAvLyAgICB9XG4gIC8vICB9XG4gIC8vXG4gIC8vIFdlIGNhbiBtYWtlIGl0IG1vcmUgY29tcGFjdCB3aXRob3V0IGxvc2luZyBpbmZvcm1hdGlvbiBieSBnZXR0aW5nIHJpZCBvZiB0aGUgb3V0ZXJtb3N0IGJyYWNlc1xuICAvLyBhbmQgdGhlIGluZGVudGF0aW9uLlxuICBjb25zdCBsaW5lcyA9IGpzb25SZXByZXNlbnRhdGlvbi5zcGxpdCgnXFxuJyk7XG4gIHJldHVybiBsaW5lcy5zbGljZSgxLCBsaW5lcy5sZW5ndGggLSAxKS5tYXAocyA9PiBzLnNsaWNlKDIpKS5qb2luKCdcXG4nKTtcbn1cbiJdfQ==","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.mangleLikeCloudFormation = exports.deepEqual = void 0;\n__exportStar(require(\"./diff-template\"), exports);\n__exportStar(require(\"./format\"), exports);\n__exportStar(require(\"./format-table\"), exports);\nvar util_1 = require(\"./diff/util\");\nObject.defineProperty(exports, \"deepEqual\", { enumerable: true, get: function () { return util_1.deepEqual; } });\nObject.defineProperty(exports, \"mangleLikeCloudFormation\", { enumerable: true, get: function () { return util_1.mangleLikeCloudFormation; } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLGtEQUFnQztBQUNoQywyQ0FBeUI7QUFDekIsaURBQStCO0FBQy9CLG9DQUFrRTtBQUF6RCxpR0FBQSxTQUFTLE9BQUE7QUFBRSxnSEFBQSx3QkFBd0IsT0FBQSIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vZGlmZi10ZW1wbGF0ZSc7XG5leHBvcnQgKiBmcm9tICcuL2Zvcm1hdCc7XG5leHBvcnQgKiBmcm9tICcuL2Zvcm1hdC10YWJsZSc7XG5leHBvcnQgeyBkZWVwRXF1YWwsIG1hbmdsZUxpa2VDbG91ZEZvcm1hdGlvbiB9IGZyb20gJy4vZGlmZi91dGlsJztcbiJdfQ==","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.SecurityGroupChanges = void 0;\nconst chalk = require(\"chalk\");\nconst security_group_rule_1 = require(\"./security-group-rule\");\nconst diffable_1 = require(\"../diffable\");\nconst render_intrinsics_1 = require(\"../render-intrinsics\");\nconst util_1 = require(\"../util\");\n/**\n * Changes to IAM statements\n */\nclass SecurityGroupChanges {\n constructor(props) {\n this.ingress = new diffable_1.DiffableCollection();\n this.egress = new diffable_1.DiffableCollection();\n // Group rules\n for (const ingressProp of props.ingressRulePropertyChanges) {\n this.ingress.addOld(...this.readInlineRules(ingressProp.oldValue, ingressProp.resourceLogicalId));\n this.ingress.addNew(...this.readInlineRules(ingressProp.newValue, ingressProp.resourceLogicalId));\n }\n for (const egressProp of props.egressRulePropertyChanges) {\n this.egress.addOld(...this.readInlineRules(egressProp.oldValue, egressProp.resourceLogicalId));\n this.egress.addNew(...this.readInlineRules(egressProp.newValue, egressProp.resourceLogicalId));\n }\n // Rule resources\n for (const ingressRes of props.ingressRuleResourceChanges) {\n this.ingress.addOld(...this.readRuleResource(ingressRes.oldProperties));\n this.ingress.addNew(...this.readRuleResource(ingressRes.newProperties));\n }\n for (const egressRes of props.egressRuleResourceChanges) {\n this.egress.addOld(...this.readRuleResource(egressRes.oldProperties));\n this.egress.addNew(...this.readRuleResource(egressRes.newProperties));\n }\n this.ingress.calculateDiff();\n this.egress.calculateDiff();\n }\n get hasChanges() {\n return this.ingress.hasChanges || this.egress.hasChanges;\n }\n /**\n * Return a summary table of changes\n */\n summarize() {\n const ret = [];\n const header = ['', 'Group', 'Dir', 'Protocol', 'Peer'];\n const inWord = 'In';\n const outWord = 'Out';\n // Render a single rule to the table (curried function so we can map it across rules easily--thank you JavaScript!)\n const renderRule = (plusMin, inOut) => (rule) => [\n plusMin,\n rule.groupId,\n inOut,\n rule.describeProtocol(),\n rule.describePeer(),\n ].map(s => plusMin === '+' ? chalk.green(s) : chalk.red(s));\n // First generate all lines, sort later\n ret.push(...this.ingress.additions.map(renderRule('+', inWord)));\n ret.push(...this.egress.additions.map(renderRule('+', outWord)));\n ret.push(...this.ingress.removals.map(renderRule('-', inWord)));\n ret.push(...this.egress.removals.map(renderRule('-', outWord)));\n // Sort by group name then ingress/egress (ingress first)\n ret.sort((0, util_1.makeComparator)((row) => [row[1], row[2].indexOf(inWord) > -1 ? 0 : 1]));\n ret.splice(0, 0, header);\n return ret;\n }\n toJson() {\n return (0, util_1.deepRemoveUndefined)({\n ingressRuleAdditions: (0, util_1.dropIfEmpty)(this.ingress.additions.map(s => s.toJson())),\n ingressRuleRemovals: (0, util_1.dropIfEmpty)(this.ingress.removals.map(s => s.toJson())),\n egressRuleAdditions: (0, util_1.dropIfEmpty)(this.egress.additions.map(s => s.toJson())),\n egressRuleRemovals: (0, util_1.dropIfEmpty)(this.egress.removals.map(s => s.toJson())),\n });\n }\n get rulesAdded() {\n return this.ingress.hasAdditions\n || this.egress.hasAdditions;\n }\n readInlineRules(rules, logicalId) {\n if (!rules || !Array.isArray(rules)) {\n return [];\n }\n // UnCloudFormation so the parser works in an easier domain\n const ref = '${' + logicalId + '.GroupId}';\n return rules.flatMap((r) => {\n const rendered = (0, render_intrinsics_1.renderIntrinsics)(r);\n // SecurityGroupRule is not robust against unparsed objects\n return typeof rendered === 'object' ? [new security_group_rule_1.SecurityGroupRule(rendered, ref)] : [];\n });\n }\n readRuleResource(resource) {\n if (!resource) {\n return [];\n }\n // UnCloudFormation so the parser works in an easier domain\n return [new security_group_rule_1.SecurityGroupRule((0, render_intrinsics_1.renderIntrinsics)(resource))];\n }\n}\nexports.SecurityGroupChanges = SecurityGroupChanges;\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VjdXJpdHktZ3JvdXAtY2hhbmdlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInNlY3VyaXR5LWdyb3VwLWNoYW5nZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsK0JBQStCO0FBQy9CLCtEQUFvRTtBQUVwRSwwQ0FBaUQ7QUFDakQsNERBQXdEO0FBQ3hELGtDQUEyRTtBQVMzRTs7R0FFRztBQUNILE1BQWEsb0JBQW9CO0lBSS9CLFlBQVksS0FBZ0M7UUFINUIsWUFBTyxHQUFHLElBQUksNkJBQWtCLEVBQXFCLENBQUM7UUFDdEQsV0FBTSxHQUFHLElBQUksNkJBQWtCLEVBQXFCLENBQUM7UUFHbkUsY0FBYztRQUNkLEtBQUssTUFBTSxXQUFXLElBQUksS0FBSyxDQUFDLDBCQUEwQixFQUFFLENBQUM7WUFDM0QsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLFdBQVcsQ0FBQyxRQUFRLEVBQUUsV0FBVyxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQztZQUNsRyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsV0FBVyxDQUFDLFFBQVEsRUFBRSxXQUFXLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDO1FBQ3BHLENBQUM7UUFDRCxLQUFLLE1BQU0sVUFBVSxJQUFJLEtBQUssQ0FBQyx5QkFBeUIsRUFBRSxDQUFDO1lBQ3pELElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxVQUFVLENBQUMsUUFBUSxFQUFFLFVBQVUsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUM7WUFDL0YsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLFVBQVUsQ0FBQyxRQUFRLEVBQUUsVUFBVSxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQztRQUNq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QztJQUVPLGVBQWUsQ0FBQyxLQUFVLEVBQUUsU0FBaUI7UUFDbkQsSUFBSSxDQUFDLEtBQUssSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUFDLE9BQU8sRUFBRSxDQUFDO1FBQUMsQ0FBQztRQUVuRCwyREFBMkQ7UUFFM0QsTUFBTSxHQUFHLEdBQUcsSUFBSSxHQUFHLFNBQVMsR0FBRyxXQUFXLENBQUM7UUFDM0MsT0FBTyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBTSxFQUFFLEVBQUU7WUFDOUIsTUFBTSxRQUFRLEdBQUcsSUFBQSxvQ0FBZ0IsRUFBQyxDQUFDLENBQUMsQ0FBQztZQUNyQywyREFBMkQ7WUFDM0QsT0FBTyxPQUFPLFFBQVEsS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSx1Q0FBaUIsQ0FBQyxRQUFRLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQ3BGLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVPLGdCQUFnQixDQUFDLFFBQWE7UUFDcEMsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQUMsT0FBTyxFQUFFLENBQUM7UUFBQyxDQUFDO1FBRTdCLDJEQUEyRDtRQUUzRCxPQUFPLENBQUMsSUFBSSx1Q0FBaUIsQ0FBQyxJQUFBLG9DQUFnQixFQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM3RCxDQUFDO0NBQ0Y7QUFyR0Qsb0RBcUdDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgY2hhbGsgZnJvbSAnY2hhbGsnO1xuaW1wb3J0IHsgUnVsZUpzb24sIFNlY3VyaXR5R3JvdXBSdWxlIH0gZnJvbSAnLi9zZWN1cml0eS1ncm91cC1ydWxlJztcbmltcG9ydCB7IFByb3BlcnR5Q2hhbmdlLCBSZXNvdXJjZUNoYW5nZSB9IGZyb20gJy4uL2RpZmYvdHlwZXMnO1xuaW1wb3J0IHsgRGlmZmFibGVDb2xsZWN0aW9uIH0gZnJvbSAnLi4vZGlmZmFibGUnO1xuaW1wb3J0IHsgcmVuZGVySW50cmluc2ljcyB9IGZyb20gJy4uL3JlbmRlci1pbnRyaW5zaWNzJztcbmltcG9ydCB7IGRlZXBSZW1vdmVVbmRlZmluZWQsIGRyb3BJZkVtcHR5LCBtYWtlQ29tcGFyYXRvciB9IGZyb20gJy4uL3V0aWwnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFNlY3VyaXR5R3JvdXBDaGFuZ2VzUHJvcHMge1xuICBpbmdyZXNzUnVsZVByb3BlcnR5Q2hhbmdlczogUHJvcGVydHlDaGFuZ2VbXTtcbiAgaW5ncmVzc1J1bGVSZXNvdXJjZUNoYW5nZXM6IFJlc291cmNlQ2hhbmdlW107XG4gIGVncmVzc1J1bGVSZXNvdXJjZUNoYW5nZXM6IFJlc291cmNlQ2hhbmdlW107XG4gIGVncmVzc1J1bGVQcm9wZXJ0eUNoYW5nZXM6IFByb3BlcnR5Q2hhbmdlW107XG59XG5cbi8qKlxuICogQ2hhbmdlcyB0byBJQU0gc3RhdGVtZW50c1xuICovXG5leHBvcnQgY2xhc3MgU2VjdXJpdHlHcm91cENoYW5nZXMge1xuICBwdWJsaWMgcmVhZG9ubHkgaW5ncmVzcyA9IG5ldyBEaWZmYWJsZUNvbGxlY3Rpb248U2VjdXJpdHlHcm91cFJ1bGU+KCk7XG4gIHB1YmxpYyByZWFkb25seSBlZ3Jlc3MgPSBuZXcgRGlmZmFibGVDb2xsZWN0aW9uPFNlY3VyaXR5R3JvdXBSdWxlPigpO1xuXG4gIGNvbnN0cnVjdG9yKHByb3BzOiBTZWN1cml0eUdyb3VwQ2hhbmdlc1Byb3BzKSB7XG4gICAgLy8gR3JvdXAgcnVsZXNcbiAgICBmb3IgKGNvbnN0IGluZ3Jlc3NQcm9wIG9mIHByb3BzLmluZ3Jlc3NSdWxlUHJvcGVydHlDaGFuZ2VzKSB7XG4gICAgICB0aGlzLmluZ3Jlc3MuYWRkT2xkKC4uLnRoaXMucmVhZElubGluZVJ1bGVzKGluZ3Jlc3NQcm9wLm9sZFZhbHVlLCBpbmdyZXNzUHJvcC5yZXNvdXJjZUxvZ2ljYWxJZCkpO1xuICAgICAgdGhpcy5pbmdyZXNzLmFkZE5ldyguLi50aGlzLnJlYWRJbmxpbmVSdWxlcyhpbmdyZXNzUHJvcC5uZXdWYWx1ZSwgaW5ncmVzc1Byb3AucmVzb3VyY2VMb2dpY2FsSWQpKTtcbiAgICB9XG4gICAgZm9yIChjb25zdCBlZ3Jlc3NQcm9wIG9mIHByb3BzLmVncmVzc1J1bGVQcm9wZXJ0eUNoYW5nZXMpIHtcbiAgICAgIHRoaXMuZWdyZXNzLmFkZE9sZCguLi50aGlzLnJlYWRJbmxpbmVSdWxlcyhlZ3Jlc3NQcm9wLm9sZFZhbHVlLCBlZ3Jlc3NQcm9wLnJlc291cmNlTG9naWNhbElkKSk7XG4gICAgICB0aGlzLmVncmVzcy5hZGROZXcoLi4udGhpcy5yZWFkSW5saW5lUnVsZXMoZWdyZXNzUHJvcC5uZXdWYWx1ZSwgZWdyZXNzUHJvcC5yZXNvdXJjZUxvZ2ljYWxJZCkpO1xuICAgIH1cblxuICAgIC8vIFJ1bGUgcmVzb3VyY2VzXG4gICAgZm9yIChjb25zdCBpbmdyZXNzUmVzIG9mIHByb3BzLmluZ3Jlc3NSdWxlUmVzb3VyY2VDaGFuZ2VzKSB7XG4gICAgICB0aGlzLmluZ3Jlc3MuYWRkT2xkKC4uLnRoaXMucmVhZFJ1bGVSZXNvdXJjZShpbmdyZXNzUmVzLm9sZFByb3BlcnRpZXMpKTtcbiAgICAgIHRoaXMuaW5ncmVzcy5hZGROZXcoLi4udGhpcy5yZWFkUnVsZVJlc291cmNlKGluZ3Jlc3NSZXMubmV3UHJvcGVydGllcykpO1xuICAgIH1cbiAgICBmb3IgKGNvbnN0IGVncmVzc1JlcyBvZiBwcm9wcy5lZ3Jlc3NSdWxlUmVzb3VyY2VDaGFuZ2VzKSB7XG4gICAgICB0aGlzLmVncmVzcy5hZGRPbGQoLi4udGhpcy5yZWFkUnVsZVJlc291cmNlKGVncmVzc1Jlcy5vbGRQcm9wZXJ0aWVzKSk7XG4gICAgICB0aGlzLmVncmVzcy5hZGROZXcoLi4udGhpcy5yZWFkUnVsZVJlc291cmNlKGVncmVzc1Jlcy5uZXdQcm9wZXJ0aWVzKSk7XG4gICAgfVxuXG4gICAgdGhpcy5pbmdyZXNzLmNhbGN1bGF0ZURpZmYoKTtcbiAgICB0aGlzLmVncmVzcy5jYWxjdWxhdGVEaWZmKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGhhc0NoYW5nZXMoKSB7XG4gICAgcmV0dXJuIHRoaXMuaW5ncmVzcy5oYXNDaGFuZ2VzIHx8IHRoaXMuZWdyZXNzLmhhc0NoYW5nZXM7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJuIGEgc3VtbWFyeSB0YWJsZSBvZiBjaGFuZ2VzXG4gICAqL1xuICBwdWJsaWMgc3VtbWFyaXplKCk6IHN0cmluZ1tdW10ge1xuICAgIGNvbnN0IHJldDogc3RyaW5nW11bXSA9IFtdO1xuXG4gICAgY29uc3QgaGVhZGVyID0gWycnLCAnR3JvdXAnLCAnRGlyJywgJ1Byb3RvY29sJywgJ1BlZXInXTtcblxuICAgIGNvbnN0IGluV29yZCA9ICdJbic7XG4gICAgY29uc3Qgb3V0V29yZCA9ICdPdXQnO1xuXG4gICAgLy8gUmVuZGVyIGEgc2luZ2xlIHJ1bGUgdG8gdGhlIHRhYmxlIChjdXJyaWVkIGZ1bmN0aW9uIHNvIHdlIGNhbiBtYXAgaXQgYWNyb3NzIHJ1bGVzIGVhc2lseS0tdGhhbmsgeW91IEphdmFTY3JpcHQhKVxuICAgIGNvbnN0IHJlbmRlclJ1bGUgPSAocGx1c01pbjogc3RyaW5nLCBpbk91dDogc3RyaW5nKSA9PiAocnVsZTogU2VjdXJpdHlHcm91cFJ1bGUpID0+IFtcbiAgICAgIHBsdXNNaW4sXG4gICAgICBydWxlLmdyb3VwSWQsXG4gICAgICBpbk91dCxcbiAgICAgIHJ1bGUuZGVzY3JpYmVQcm90b2NvbCgpLFxuICAgICAgcnVsZS5kZXNjcmliZVBlZXIoKSxcbiAgICBdLm1hcChzID0+IHBsdXNNaW4gPT09ICcrJyA/IGNoYWxrLmdyZWVuKHMpIDogY2hhbGsucmVkKHMpKTtcblxuICAgIC8vIEZpcnN0IGdlbmVyYXRlIGFsbCBsaW5lcywgc29ydCBsYXRlclxuICAgIHJldC5wdXNoKC4uLnRoaXMuaW5ncmVzcy5hZGRpdGlvbnMubWFwKHJlbmRlclJ1bGUoJysnLCBpbldvcmQpKSk7XG4gICAgcmV0LnB1c2goLi4udGhpcy5lZ3Jlc3MuYWRkaXRpb25zLm1hcChyZW5kZXJSdWxlKCcrJywgb3V0V29yZCkpKTtcbiAgICByZXQucHVzaCguLi50aGlzLmluZ3Jlc3MucmVtb3ZhbHMubWFwKHJlbmRlclJ1bGUoJy0nLCBpbldvcmQpKSk7XG4gICAgcmV0LnB1c2goLi4udGhpcy5lZ3Jlc3MucmVtb3ZhbHMubWFwKHJlbmRlclJ1bGUoJy0nLCBvdXRXb3JkKSkpO1xuXG4gICAgLy8gU29ydCBieSBncm91cCBuYW1lIHRoZW4gaW5ncmVzcy9lZ3Jlc3MgKGluZ3Jlc3MgZmlyc3QpXG4gICAgcmV0LnNvcnQobWFrZUNvbXBhcmF0b3IoKHJvdzogc3RyaW5nW10pID0+IFtyb3dbMV0sIHJvd1syXS5pbmRleE9mKGluV29yZCkgPiAtMSA/IDAgOiAxXSkpO1xuXG4gICAgcmV0LnNwbGljZSgwLCAwLCBoZWFkZXIpO1xuXG4gICAgcmV0dXJuIHJldDtcbiAgfVxuXG4gIHB1YmxpYyB0b0pzb24oKTogU2VjdXJpdHlHcm91cENoYW5nZXNKc29uIHtcbiAgICByZXR1cm4gZGVlcFJlbW92ZVVuZGVmaW5lZCh7XG4gICAgICBpbmdyZXNzUnVsZUFkZGl0aW9uczogZHJvcElmRW1wdHkodGhpcy5pbmdyZXNzLmFkZGl0aW9ucy5tYXAocyA9PiBzLnRvSnNvbigpKSksXG4gICAgICBpbmdyZXNzUnVsZVJlbW92YWxzOiBkcm9wSWZFbXB0eSh0aGlzLmluZ3Jlc3MucmVtb3ZhbHMubWFwKHMgPT4gcy50b0pzb24oKSkpLFxuICAgICAgZWdyZXNzUnVsZUFkZGl0aW9uczogZHJvcElmRW1wdHkodGhpcy5lZ3Jlc3MuYWRkaXRpb25zLm1hcChzID0+IHMudG9Kc29uKCkpKSxcbiAgICAgIGVncmVzc1J1bGVSZW1vdmFsczogZHJvcElmRW1wdHkodGhpcy5lZ3Jlc3MucmVtb3ZhbHMubWFwKHMgPT4gcy50b0pzb24oKSkpLFxuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIGdldCBydWxlc0FkZGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmluZ3Jlc3MuaGFzQWRkaXRpb25zXG4gICAgICAgIHx8IHRoaXMuZWdyZXNzLmhhc0FkZGl0aW9ucztcbiAgfVxuXG4gIHByaXZhdGUgcmVhZElubGluZVJ1bGVzKHJ1bGVzOiBhbnksIGxvZ2ljYWxJZDogc3RyaW5nKTogU2VjdXJpdHlHcm91cFJ1bGVbXSB7XG4gICAgaWYgKCFydWxlcyB8fCAhQXJyYXkuaXNBcnJheShydWxlcykpIHsgcmV0dXJuIFtdOyB9XG5cbiAgICAvLyBVbkNsb3VkRm9ybWF0aW9uIHNvIHRoZSBwYXJzZXIgd29ya3MgaW4gYW4gZWFzaWVyIGRvbWFpblxuXG4gICAgY29uc3QgcmVmID0gJyR7JyArIGxvZ2ljYWxJZCArICcuR3JvdXBJZH0nO1xuICAgIHJldHVybiBydWxlcy5mbGF0TWFwKChyOiBhbnkpID0+IHtcbiAgICAgIGNvbnN0IHJlbmRlcmVkID0gcmVuZGVySW50cmluc2ljcyhyKTtcbiAgICAgIC8vIFNlY3VyaXR5R3JvdXBSdWxlIGlzIG5vdCByb2J1c3QgYWdhaW5zdCB1bnBhcnNlZCBvYmplY3RzXG4gICAgICByZXR1cm4gdHlwZW9mIHJlbmRlcmVkID09PSAnb2JqZWN0JyA/IFtuZXcgU2VjdXJpdHlHcm91cFJ1bGUocmVuZGVyZWQsIHJlZildIDogW107XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHJlYWRSdWxlUmVzb3VyY2UocmVzb3VyY2U6IGFueSk6IFNlY3VyaXR5R3JvdXBSdWxlW10ge1xuICAgIGlmICghcmVzb3VyY2UpIHsgcmV0dXJuIFtdOyB9XG5cbiAgICAvLyBVbkNsb3VkRm9ybWF0aW9uIHNvIHRoZSBwYXJzZXIgd29ya3MgaW4gYW4gZWFzaWVyIGRvbWFpblxuXG4gICAgcmV0dXJuIFtuZXcgU2VjdXJpdHlHcm91cFJ1bGUocmVuZGVySW50cmluc2ljcyhyZXNvdXJjZSkpXTtcbiAgfVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNlY3VyaXR5R3JvdXBDaGFuZ2VzSnNvbiB7XG4gIGluZ3Jlc3NSdWxlQWRkaXRpb25zPzogUnVsZUpzb25bXTtcbiAgaW5ncmVzc1J1bGVSZW1vdmFscz86IFJ1bGVKc29uW107XG4gIGVncmVzc1J1bGVBZGRpdGlvbnM/OiBSdWxlSnNvbltdO1xuICBlZ3Jlc3NSdWxlUmVtb3ZhbHM/OiBSdWxlSnNvbltdO1xufVxuIl19","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.SecurityGroupRule = void 0;\n/**\n * A single security group rule, either egress or ingress\n */\nclass SecurityGroupRule {\n constructor(ruleObject, groupRef) {\n this.ipProtocol = ruleObject.IpProtocol?.toString() || '*unknown*';\n this.fromPort = ruleObject.FromPort;\n this.toPort = ruleObject.ToPort;\n this.groupId = ruleObject.GroupId || groupRef || '*unknown*'; // In case of an inline rule\n this.peer =\n findFirst(ruleObject, ['CidrIp', 'CidrIpv6'], (ip) => ({ kind: 'cidr-ip', ip }))\n ||\n findFirst(ruleObject, ['DestinationSecurityGroupId', 'SourceSecurityGroupId'], (securityGroupId) => ({ kind: 'security-group', securityGroupId }))\n ||\n findFirst(ruleObject, ['DestinationPrefixListId', 'SourcePrefixListId'], (prefixListId) => ({ kind: 'prefix-list', prefixListId }));\n }\n equal(other) {\n return this.ipProtocol === other.ipProtocol\n && this.fromPort === other.fromPort\n && this.toPort === other.toPort\n && peerEqual(this.peer, other.peer);\n }\n describeProtocol() {\n if (this.ipProtocol === '-1') {\n return 'Everything';\n }\n const ipProtocol = this.ipProtocol.toUpperCase();\n if (this.fromPort === -1) {\n return `All ${ipProtocol}`;\n }\n if (this.fromPort === this.toPort) {\n return `${ipProtocol} ${this.fromPort}`;\n }\n return `${ipProtocol} ${this.fromPort}-${this.toPort}`;\n }\n describePeer() {\n if (this.peer) {\n switch (this.peer.kind) {\n case 'cidr-ip':\n if (this.peer.ip === '0.0.0.0/0') {\n return 'Everyone (IPv4)';\n }\n if (this.peer.ip === '::/0') {\n return 'Everyone (IPv6)';\n }\n return `${this.peer.ip}`;\n case 'prefix-list': return `${this.peer.prefixListId}`;\n case 'security-group': return `${this.peer.securityGroupId}`;\n }\n }\n return '?';\n }\n toJson() {\n return {\n groupId: this.groupId,\n ipProtocol: this.ipProtocol,\n fromPort: this.fromPort,\n toPort: this.toPort,\n peer: this.peer,\n };\n }\n}\nexports.SecurityGroupRule = SecurityGroupRule;\nfunction peerEqual(a, b) {\n if ((a === undefined) !== (b === undefined)) {\n return false;\n }\n if (a === undefined) {\n return true;\n }\n if (a.kind !== b.kind) {\n return false;\n }\n switch (a.kind) {\n case 'cidr-ip': return a.ip === b.ip;\n case 'security-group': return a.securityGroupId === b.securityGroupId;\n case 'prefix-list': return a.prefixListId === b.prefixListId;\n }\n}\nfunction findFirst(obj, keys, fn) {\n for (const key of keys) {\n try {\n if (key in obj) {\n return fn(obj[key]);\n }\n }\n catch (e) {\n debugger;\n }\n }\n return undefined;\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VjdXJpdHktZ3JvdXAtcnVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInNlY3VyaXR5LWdyb3VwLXJ1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUE7O0dBRUc7QUFDSCxNQUFhLGlCQUFpQjtJQTBCNUIsWUFBWSxVQUFlLEVBQUUsUUFBaUI7UUFDNUMsSUFBSSxDQUFDLFVBQVUsR0FBRyxVQUFVLENBQUMsVUFBVSxFQUFFLFFBQVEsRUFBRSxJQUFJLFdBQVcsQ0FBQztRQUNuRSxJQUFJLENBQUMsUUFBUSxHQUFHLFVBQVUsQ0FBQyxRQUFRLENBQUM7UUFDcEMsSUFBSSxDQUFDLE1BQU0sR0FBRyxVQUFVLENBQUMsTUFBTSxDQUFDO1FBQ2hDLElBQUksQ0FBQyxPQUFPLEdBQUcsVUFBVSxDQUFDLE9BQU8sSUFBSSxRQUFRLElBQUksV0FBVyxDQUFDLENBQUMsNEJBQTRCO1FBRTFGLElBQUksQ0FBQyxJQUFJO1lBQ0wsU0FBUyxDQUFDLFVBQVUsRUFDbEIsQ0FBQyxRQUFRLEVBQUUsVUFBVSxDQUFDLEVBQ3RCLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxFQUFFLEVBQWlCLENBQUEsQ0FBQzs7b0JBRWxELFNBQVMsQ0FBQyxVQUFVLEVBQ2xCLENBQUMsNEJBQTRCLEVBQUUsdUJBQXVCLENBQUMsRUFDdkQsQ0FBQyxlQUFlLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsZ0JBQWdCLEVBQUUsZUFBZSxFQUF3QixDQUFBLENBQUM7O29CQUUxRixTQUFTLENBQUMsVUFBVSxFQUNsQixDQUFDLHlCQUF5QixFQUFFLG9CQUFvQixDQUFDLEVBQ2pELENBQUMsWUFBWSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLGFBQWEsRUFBRSxZQUFZLEVBQXFCLENBQUEsQ0FBQyxDQUFDO0lBQ3JGLENBQUM7SUFFTSxLQUFLLENBQUMsS0FBd0I7UUFDbkMs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LENBQUMsT0FBTyxDQUFDLENBQUMsZUFBZSxLQUFNLENBQWMsQ0FBQyxlQUFlLENBQUM7UUFDcEYsS0FBSyxhQUFhLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxZQUFZLEtBQU0sQ0FBYyxDQUFDLFlBQVksQ0FBQztJQUM3RSxDQUFDO0FBQ0gsQ0FBQztBQUVELFNBQVMsU0FBUyxDQUFJLEdBQVEsRUFBRSxJQUFjLEVBQUUsRUFBb0I7SUFDbEUsS0FBSyxNQUFNLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQztRQUN2QixJQUFJLENBQUM7WUFDSCxJQUFJLEdBQUcsSUFBSSxHQUFHLEVBQUUsQ0FBQztnQkFDZixPQUFPLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztZQUN0QixDQUFDO1FBQ0gsQ0FBQztRQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7WUFDWCxRQUFRLENBQUM7UUFDWCxDQUFDO0lBQ0gsQ0FBQztJQUNELE9BQU8sU0FBUyxDQUFDO0FBQ25CLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEEgc2luZ2xlIHNlY3VyaXR5IGdyb3VwIHJ1bGUsIGVpdGhlciBlZ3Jlc3Mgb3IgaW5ncmVzc1xuICovXG5leHBvcnQgY2xhc3MgU2VjdXJpdHlHcm91cFJ1bGUge1xuICAvKipcbiAgICogR3JvdXAgSUQgb2YgdGhlIGdyb3VwIHRoaXMgcnVsZSBhcHBsaWVzIHRvXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgZ3JvdXBJZDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBJUCBwcm90b2NvbCB0aGlzIHJ1bGUgYXBwbGllcyB0b1xuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGlwUHJvdG9jb2w6IHN0cmluZztcblxuICAvKipcbiAgICogU3RhcnQgb2YgcG9ydCByYW5nZSB0aGlzIHJ1bGUgYXBwbGllcyB0bywgb3IgSUNNUCB0eXBlXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgZnJvbVBvcnQ/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIEVuZCBvZiBwb3J0IHJhbmdlIHRoaXMgcnVsZSBhcHBsaWVzIHRvLCBvciBJQ01QIGNvZGVcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSB0b1BvcnQ/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIFBlZXIgb2YgdGhpcyBydWxlXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgcGVlcj86IFJ1bGVQZWVyO1xuXG4gIGNvbnN0cnVjdG9yKHJ1bGVPYmplY3Q6IGFueSwgZ3JvdXBSZWY/OiBzdHJpbmcpIHtcbiAgICB0aGlzLmlwUHJvdG9jb2wgPSBydWxlT2JqZWN0LklwUHJvdG9jb2w/LnRvU3RyaW5nKCkgfHwgJyp1bmtub3duKic7XG4gICAgdGhpcy5mcm9tUG9ydCA9IHJ1bGVPYmplY3QuRnJvbVBvcnQ7XG4gICAgdGhpcy50b1BvcnQgPSBydWxlT2JqZWN0LlRvUG9ydDtcbiAgICB0aGlzLmdyb3VwSWQgPSBydWxlT2JqZWN0Lkdyb3VwSWQgfHwgZ3JvdXBSZWYgfHwgJyp1bmtub3duKic7IC8vIEluIGNhc2Ugb2YgYW4gaW5saW5lIHJ1bGVcblxuICAgIHRoaXMucGVlciA9XG4gICAgICAgIGZpbmRGaXJzdChydWxlT2JqZWN0LFxuICAgICAgICAgIFsnQ2lkcklwJywgJ0NpZHJJcHY2J10sXG4gICAgICAgICAgKGlwKSA9PiAoeyBraW5kOiAnY2lkci1pcCcsIGlwIH0gYXMgQ2lkcklwUGVlcikpXG4gICAgICAgIHx8XG4gICAgICAgIGZpbmRGaXJzdChydWxlT2JqZWN0LFxuICAgICAgICAgIFsnRGVzdGluYXRpb25TZWN1cml0eUdyb3VwSWQnLCAnU291cmNlU2VjdXJpdHlHcm91cElkJ10sXG4gICAgICAgICAgKHNlY3VyaXR5R3JvdXBJZCkgPT4gKHsga2luZDogJ3NlY3VyaXR5LWdyb3VwJywgc2VjdXJpdHlHcm91cElkIH0gYXMgU2VjdXJpdHlHcm91cFBlZXIpKVxuICAgICAgICB8fFxuICAgICAgICBmaW5kRmlyc3QocnVsZU9iamVjdCxcbiAgICAgICAgICBbJ0Rlc3RpbmF0aW9uUHJlZml4TGlzdElkJywgJ1NvdXJjZVByZWZpeExpc3RJZCddLFxuICAgICAgICAgIChwcmVmaXhMaXN0SWQpID0+ICh7IGtpbmQ6ICdwcmVmaXgtbGlzdCcsIHByZWZpeExpc3RJZCB9IGFzIFByZWZpeExpc3RQZWVyKSk7XG4gIH1cblxuICBwdWJsaWMgZXF1YWwob3RoZXI6IFNlY3VyaXR5R3JvdXBSdWxlKSB7XG4gICAgcmV0dXJuIHRoaXMuaXBQcm90b2NvbCA9PT0gb3RoZXIuaXBQcm90b2NvbFxuICAgICAgICAmJiB0aGlzLmZyb21Qb3J0ID09PSBvdGhlci5mcm9tUG9ydFxuICAgICAgICAmJiB0aGlzLnRvUG9ydCA9PT0gb3RoZXIudG9Qb3J0XG4gICAgICAgICYmIHBlZXJFcXVhbCh0aGlzLnBlZXIsIG90aGVyLnBlZXIpO1xuICB9XG5cbiAgcHVibGljIGRlc2NyaWJlUHJvdG9jb2woKSB7XG4gICAgaWYgKHRoaXMuaXBQcm90b2NvbCA9PT0gJy0xJykgeyByZXR1cm4gJ0V2ZXJ5dGhpbmcnOyB9XG5cbiAgICBjb25zdCBpcFByb3RvY29sID0gdGhpcy5pcFByb3RvY29sLnRvVXBwZXJDYXNlKCk7XG5cbiAgICBpZiAodGhpcy5mcm9tUG9ydCA9PT0gLTEpIHsgcmV0dXJuIGBBbGwgJHtpcFByb3RvY29sfWA7IH1cbiAgICBpZiAodGhpcy5mcm9tUG9ydCA9PT0gdGhpcy50b1BvcnQpIHsgcmV0dXJuIGAke2lwUHJvdG9jb2x9ICR7dGhpcy5mcm9tUG9ydH1gOyB9XG4gICAgcmV0dXJuIGAke2lwUHJvdG9jb2x9ICR7dGhpcy5mcm9tUG9ydH0tJHt0aGlzLnRvUG9ydH1gO1xuICB9XG5cbiAgcHVibGljIGRlc2NyaWJlUGVlcigpIHtcbiAgICBpZiAodGhpcy5wZWVyKSB7XG4gICAgICBzd2l0Y2ggKHRoaXMucGVlci5raW5kKSB7XG4gICAgICAgIGNhc2UgJ2NpZHItaXAnOlxuICAgICAgICAgIGlmICh0aGlzLnBlZXIuaXAgPT09ICcwLjAuMC4wLzAnKSB7IHJldHVybiAnRXZlcnlvbmUgKElQdjQpJzsgfVxuICAgICAgICAgIGlmICh0aGlzLnBlZXIuaXAgPT09ICc6Oi8wJykgeyByZXR1cm4gJ0V2ZXJ5b25lIChJUHY2KSc7IH1cbiAgICAgICAgICByZXR1cm4gYCR7dGhpcy5wZWVyLmlwfWA7XG4gICAgICAgIGNhc2UgJ3ByZWZpeC1saXN0JzogcmV0dXJuIGAke3RoaXMucGVlci5wcmVmaXhMaXN0SWR9YDtcbiAgICAgICAgY2FzZSAnc2VjdXJpdHktZ3JvdXAnOiByZXR1cm4gYCR7dGhpcy5wZWVyLnNlY3VyaXR5R3JvdXBJZH1gO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiAnPyc7XG4gIH1cblxuICBwdWJsaWMgdG9Kc29uKCk6IFJ1bGVKc29uIHtcbiAgICByZXR1cm4ge1xuICAgICAgZ3JvdXBJZDogdGhpcy5ncm91cElkLFxuICAgICAgaXBQcm90b2NvbDogdGhpcy5pcFByb3RvY29sLFxuICAgICAgZnJvbVBvcnQ6IHRoaXMuZnJvbVBvcnQsXG4gICAgICB0b1BvcnQ6IHRoaXMudG9Qb3J0LFxuICAgICAgcGVlcjogdGhpcy5wZWVyLFxuICAgIH07XG4gIH1cbn1cblxuZXhwb3J0IGludGVyZmFjZSBDaWRySXBQZWVyIHtcbiAga2luZDogJ2NpZHItaXAnO1xuICBpcDogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNlY3VyaXR5R3JvdXBQZWVyIHtcbiAga2luZDogJ3NlY3VyaXR5LWdyb3VwJztcbiAgc2VjdXJpdHlHcm91cElkOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUHJlZml4TGlzdFBlZXIge1xuICBraW5kOiAncHJlZml4LWxpc3QnO1xuICBwcmVmaXhMaXN0SWQ6IHN0cmluZztcbn1cblxuZXhwb3J0IHR5cGUgUnVsZVBlZXIgPSBDaWRySXBQZWVyIHwgU2VjdXJpdHlHcm91cFBlZXIgfCBQcmVmaXhMaXN0UGVlcjtcblxuZnVuY3Rpb24gcGVlckVxdWFsKGE/OiBSdWxlUGVlciwgYj86IFJ1bGVQZWVyKSB7XG4gIGlmICgoYSA9PT0gdW5kZWZpbmVkKSAhPT0gKGIgPT09IHVuZGVmaW5lZCkpIHsgcmV0dXJuIGZhbHNlOyB9XG4gIGlmIChhID09PSB1bmRlZmluZWQpIHsgcmV0dXJuIHRydWU7IH1cblxuICBpZiAoYS5raW5kICE9PSBiIS5raW5kKSB7IHJldHVybiBmYWxzZTsgfVxuICBzd2l0Y2ggKGEua2luZCkge1xuICAgIGNhc2UgJ2NpZHItaXAnOiByZXR1cm4gYS5pcCA9PT0gKGIgYXMgdHlwZW9mIGEpLmlwO1xuICAgIGNhc2UgJ3NlY3VyaXR5LWdyb3VwJzogcmV0dXJuIGEuc2VjdXJpdHlHcm91cElkID09PSAoYiBhcyB0eXBlb2YgYSkuc2VjdXJpdHlHcm91cElkO1xuICAgIGNhc2UgJ3ByZWZpeC1saXN0JzogcmV0dXJuIGEucHJlZml4TGlzdElkID09PSAoYiBhcyB0eXBlb2YgYSkucHJlZml4TGlzdElkO1xuICB9XG59XG5cbmZ1bmN0aW9uIGZpbmRGaXJzdDxUPihvYmo6IGFueSwga2V5czogc3RyaW5nW10sIGZuOiAoeDogc3RyaW5nKSA9PiBUKTogVCB8IHVuZGVmaW5lZCB7XG4gIGZvciAoY29uc3Qga2V5IG9mIGtleXMpIHtcbiAgICB0cnkge1xuICAgICAgaWYgKGtleSBpbiBvYmopIHtcbiAgICAgICAgcmV0dXJuIGZuKG9ialtrZXldKTtcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBkZWJ1Z2dlcjtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHVuZGVmaW5lZDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBSdWxlSnNvbiB7XG4gIGdyb3VwSWQ6IHN0cmluZztcbiAgaXBQcm90b2NvbDogc3RyaW5nO1xuICBmcm9tUG9ydD86IG51bWJlcjtcbiAgdG9Qb3J0PzogbnVtYmVyO1xuICBwZWVyPzogUnVsZVBlZXI7XG59Il19","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.renderIntrinsics = void 0;\n/**\n * Turn CloudFormation intrinsics into strings\n *\n * ------\n *\n * This stringification is not intended to be mechanically reversible! It's intended\n * to be understood by humans!\n *\n * ------\n *\n * Turns Fn::GetAtt and Fn::Ref objects into the same strings that can be\n * parsed by Fn::Sub, but without the surrounding intrinsics.\n *\n * Evaluates Fn::Join directly if the second argument is a literal list of strings.\n *\n * Removes list and object values evaluating to { Ref: 'AWS::NoValue' }.\n *\n * For other intrinsics we choose a string representation that CloudFormation\n * cannot actually parse, but is comprehensible to humans.\n */\nfunction renderIntrinsics(x) {\n if (Array.isArray(x)) {\n return x.filter(el => !isNoValue(el)).map(renderIntrinsics);\n }\n if (isNoValue(x)) {\n return undefined;\n }\n const intrinsic = getIntrinsic(x);\n if (intrinsic) {\n if (intrinsic.fn === 'Ref') {\n return '${' + intrinsic.args + '}';\n }\n if (intrinsic.fn === 'Fn::GetAtt') {\n return '${' + intrinsic.args[0] + '.' + intrinsic.args[1] + '}';\n }\n if (intrinsic.fn === 'Fn::Join') {\n return unCloudFormationFnJoin(intrinsic.args[0], intrinsic.args[1]);\n }\n return stringifyIntrinsic(intrinsic.fn, intrinsic.args);\n }\n if (typeof x === 'object' && x !== null) {\n const ret = {};\n for (const [key, value] of Object.entries(x)) {\n if (!isNoValue(value)) {\n ret[key] = renderIntrinsics(value);\n }\n }\n return ret;\n }\n return x;\n}\nexports.renderIntrinsics = renderIntrinsics;\nfunction unCloudFormationFnJoin(separator, args) {\n if (Array.isArray(args)) {\n return args.filter(el => !isNoValue(el)).map(renderIntrinsics).join(separator);\n }\n return stringifyIntrinsic('Fn::Join', [separator, args]);\n}\nfunction stringifyIntrinsic(fn, args) {\n return JSON.stringify({ [fn]: renderIntrinsics(args) });\n}\nfunction getIntrinsic(x) {\n if (x === undefined || x === null || Array.isArray(x)) {\n return undefined;\n }\n if (typeof x !== 'object') {\n return undefined;\n }\n const keys = Object.keys(x);\n return keys.length === 1 && (keys[0] === 'Ref' || keys[0].startsWith('Fn::')) ? { fn: keys[0], args: x[keys[0]] } : undefined;\n}\nfunction isNoValue(x) {\n const int = getIntrinsic(x);\n return int && int.fn === 'Ref' && int.args === 'AWS::NoValue';\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVuZGVyLWludHJpbnNpY3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJyZW5kZXItaW50cmluc2ljcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQW1CRztBQUNILFNBQWdCLGdCQUFnQixDQUFDLENBQU07SUFDckMsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDckIsT0FBTyxDQUFDLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztJQUM5RCxDQUFDO0lBRUQsSUFBSSxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUFDLE9BQU8sU0FBUyxDQUFDO0lBQUMsQ0FBQztJQUV2QyxNQUFNLFNBQVMsR0FBRyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDbEMsSUFBSSxTQUFTLEVBQUUsQ0FBQztRQUNkLElBQUksU0FBUyxDQUFDLEVBQUUsS0FBSyxLQUFLLEVBQUUsQ0FBQztZQUFDLE9BQU8sSUFBSSxHQUFHLFNBQVMsQ0FBQyxJQUFJLEdBQUcsR0FBRyxDQUFDO1FBQUMsQ0FBQztRQUNuRSxJQUFJLFNBQVMsQ0FBQyxFQUFFLEtBQUssWUFBWSxFQUFFLENBQUM7WUFBQyxPQUFPLElBQUksR0FBRyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsR0FBRyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQztRQUFDLENBQUM7UUFDdkcsSUFBSSxTQUFTLENBQUMsRUFBRSxLQUFLLFVBQVUsRUFBRSxDQUFDO1lBQUMsT0FBTyxzQkFBc0IsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUFDLENBQUM7UUFDekcsT0FBTyxrQkFBa0IsQ0FBQyxTQUFTLENBQUMsRUFBRSxFQUFFLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUMxRCxDQUFDO0lBRUQsSUFBSSxPQUFPLENBQUMsS0FBSyxRQUFRLElBQUksQ0FBQyxLQUFLLElBQUksRUFBRSxDQUFDO1FBQ3hDLE1BQU0sR0FBRyxHQUFRLEVBQUUsQ0FBQztRQUNwQixLQUFLLE1BQU0sQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQzdDLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztnQkFDdEIsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ3JDLENBQUM7UUFDSCxDQUFDO1FBQ0QsT0FBTyxHQUFHLENBQUM7SUFDYixDQUFDO0lBQ0QsT0FBTyxDQUFDLENBQUM7QUFDWCxDQUFDO0FBekJELDRDQXlCQztBQUVELFNBQVMsc0JBQXNCLENBQUMsU0FBaUIsRUFBRSxJQUFTO0lBQzFELElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO1FBQ3hCLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLGdCQUFnQixDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ2pGLENBQUM7SUFDRCxPQUFPLGtCQUFrQixDQUFDLFVBQVUsRUFBRSxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDO0FBQzNELENBQUM7QUFFRCxTQUFTLGtCQUFrQixDQUFDLEVBQVUsRUFBRSxJQUFTO0lBQy9DLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQzFELENBQUM7QUFFRCxTQUFTLFlBQVksQ0FBQyxDQUFNO0lBQzFCLElBQUksQ0FBQyxLQUFLLFNBQVMsSUFBSSxDQUFDLEtBQUssSUFBSSxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUFDLE9BQU8sU0FBUyxDQUFDO0lBQUMsQ0FBQztJQUM1RSxJQUFJLE9BQU8sQ0FBQyxLQUFLLFFBQVEsRUFBRSxDQUFDO1FBQUMsT0FBTyxTQUFTLENBQUM7SUFBQyxDQUFDO0lBQ2hELE1BQU0sSUFBSSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDNUIsT0FBTyxJQUFJLENBQUMsTUFBTSxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxLQUFLLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7QUFDaEksQ0FBQztBQUVELFNBQVMsU0FBUyxDQUFDLENBQU07SUFDdkIsTUFBTSxHQUFHLEdBQUcsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzVCLE9BQU8sR0FBRyxJQUFJLEdBQUcsQ0FBQyxFQUFFLEtBQUssS0FBSyxJQUFJLEdBQUcsQ0FBQyxJQUFJLEtBQUssY0FBYyxDQUFDO0FBQ2hFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFR1cm4gQ2xvdWRGb3JtYXRpb24gaW50cmluc2ljcyBpbnRvIHN0cmluZ3NcbiAqXG4gKiAtLS0tLS1cbiAqXG4gKiBUaGlzIHN0cmluZ2lmaWNhdGlvbiBpcyBub3QgaW50ZW5kZWQgdG8gYmUgbWVjaGFuaWNhbGx5IHJldmVyc2libGUhIEl0J3MgaW50ZW5kZWRcbiAqIHRvIGJlIHVuZGVyc3Rvb2QgYnkgaHVtYW5zIVxuICpcbiAqIC0tLS0tLVxuICpcbiAqIFR1cm5zIEZuOjpHZXRBdHQgYW5kIEZuOjpSZWYgb2JqZWN0cyBpbnRvIHRoZSBzYW1lIHN0cmluZ3MgdGhhdCBjYW4gYmVcbiAqIHBhcnNlZCBieSBGbjo6U3ViLCBidXQgd2l0aG91dCB0aGUgc3Vycm91bmRpbmcgaW50cmluc2ljcy5cbiAqXG4gKiBFdmFsdWF0ZXMgRm46OkpvaW4gZGlyZWN0bHkgaWYgdGhlIHNlY29uZCBhcmd1bWVudCBpcyBhIGxpdGVyYWwgbGlzdCBvZiBzdHJpbmdzLlxuICpcbiAqIFJlbW92ZXMgbGlzdCBhbmQgb2JqZWN0IHZhbHVlcyBldmFsdWF0aW5nIHRvIHsgUmVmOiAnQVdTOjpOb1ZhbHVlJyB9LlxuICpcbiAqIEZvciBvdGhlciBpbnRyaW5zaWNzIHdlIGNob29zZSBhIHN0cmluZyByZXByZXNlbnRhdGlvbiB0aGF0IENsb3VkRm9ybWF0aW9uXG4gKiBjYW5ub3QgYWN0dWFsbHkgcGFyc2UsIGJ1dCBpcyBjb21wcmVoZW5zaWJsZSB0byBodW1hbnMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZW5kZXJJbnRyaW5zaWNzKHg6IGFueSk6IGFueSB7XG4gIGlmIChBcnJheS5pc0FycmF5KHgpKSB7XG4gICAgcmV0dXJuIHguZmlsdGVyKGVsID0+ICFpc05vVmFsdWUoZWwpKS5tYXAocmVuZGVySW50cmluc2ljcyk7XG4gIH1cblxuICBpZiAoaXNOb1ZhbHVlKHgpKSB7IHJldHVybiB1bmRlZmluZWQ7IH1cblxuICBjb25zdCBpbnRyaW5zaWMgPSBnZXRJbnRyaW5zaWMoeCk7XG4gIGlmIChpbnRyaW5zaWMpIHtcbiAgICBpZiAoaW50cmluc2ljLmZuID09PSAnUmVmJykgeyByZXR1cm4gJyR7JyArIGludHJpbnNpYy5hcmdzICsgJ30nOyB9XG4gICAgaWYgKGludHJpbnNpYy5mbiA9PT0gJ0ZuOjpHZXRBdHQnKSB7IHJldHVybiAnJHsnICsgaW50cmluc2ljLmFyZ3NbMF0gKyAnLicgKyBpbnRyaW5zaWMuYXJnc1sxXSArICd9JzsgfVxuICAgIGlmIChpbnRyaW5zaWMuZm4gPT09ICdGbjo6Sm9pbicpIHsgcmV0dXJuIHVuQ2xvdWRGb3JtYXRpb25GbkpvaW4oaW50cmluc2ljLmFyZ3NbMF0sIGludHJpbnNpYy5hcmdzWzFdKTsgfVxuICAgIHJldHVybiBzdHJpbmdpZnlJbnRyaW5zaWMoaW50cmluc2ljLmZuLCBpbnRyaW5zaWMuYXJncyk7XG4gIH1cblxuICBpZiAodHlwZW9mIHggPT09ICdvYmplY3QnICYmIHggIT09IG51bGwpIHtcbiAgICBjb25zdCByZXQ6IGFueSA9IHt9O1xuICAgIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKHgpKSB7XG4gICAgICBpZiAoIWlzTm9WYWx1ZSh2YWx1ZSkpIHtcbiAgICAgICAgcmV0W2tleV0gPSByZW5kZXJJbnRyaW5zaWNzKHZhbHVlKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHJldDtcbiAgfVxuICByZXR1cm4geDtcbn1cblxuZnVuY3Rpb24gdW5DbG91ZEZvcm1hdGlvbkZuSm9pbihzZXBhcmF0b3I6IHN0cmluZywgYXJnczogYW55KSB7XG4gIGlmIChBcnJheS5pc0FycmF5KGFyZ3MpKSB7XG4gICAgcmV0dXJuIGFyZ3MuZmlsdGVyKGVsID0+ICFpc05vVmFsdWUoZWwpKS5tYXAocmVuZGVySW50cmluc2ljcykuam9pbihzZXBhcmF0b3IpO1xuICB9XG4gIHJldHVybiBzdHJpbmdpZnlJbnRyaW5zaWMoJ0ZuOjpKb2luJywgW3NlcGFyYXRvciwgYXJnc10pO1xufVxuXG5mdW5jdGlvbiBzdHJpbmdpZnlJbnRyaW5zaWMoZm46IHN0cmluZywgYXJnczogYW55KSB7XG4gIHJldHVybiBKU09OLnN0cmluZ2lmeSh7IFtmbl06IHJlbmRlckludHJpbnNpY3MoYXJncykgfSk7XG59XG5cbmZ1bmN0aW9uIGdldEludHJpbnNpYyh4OiBhbnkpOiBJbnRyaW5zaWMgfCB1bmRlZmluZWQge1xuICBpZiAoeCA9PT0gdW5kZWZpbmVkIHx8IHggPT09IG51bGwgfHwgQXJyYXkuaXNBcnJheSh4KSkgeyByZXR1cm4gdW5kZWZpbmVkOyB9XG4gIGlmICh0eXBlb2YgeCAhPT0gJ29iamVjdCcpIHsgcmV0dXJuIHVuZGVmaW5lZDsgfVxuICBjb25zdCBrZXlzID0gT2JqZWN0LmtleXMoeCk7XG4gIHJldHVybiBrZXlzLmxlbmd0aCA9PT0gMSAmJiAoa2V5c1swXSA9PT0gJ1JlZicgfHwga2V5c1swXS5zdGFydHNXaXRoKCdGbjo6JykpID8geyBmbjoga2V5c1swXSwgYXJnczogeFtrZXlzWzBdXSB9IDogdW5kZWZpbmVkO1xufVxuXG5mdW5jdGlvbiBpc05vVmFsdWUoeDogYW55KSB7XG4gIGNvbnN0IGludCA9IGdldEludHJpbnNpYyh4KTtcbiAgcmV0dXJuIGludCAmJiBpbnQuZm4gPT09ICdSZWYnICYmIGludC5hcmdzID09PSAnQVdTOjpOb1ZhbHVlJztcbn1cblxuaW50ZXJmYWNlIEludHJpbnNpYyB7XG4gIGZuOiBzdHJpbmc7XG4gIGFyZ3M6IGFueTtcbn0iXX0=","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.flatMap = exports.deepRemoveUndefined = exports.dropIfEmpty = exports.makeComparator = void 0;\n/**\n * Turn a (multi-key) extraction function into a comparator for use in Array.sort()\n */\nfunction makeComparator(keyFn) {\n return (a, b) => {\n const keyA = keyFn(a);\n const keyB = keyFn(b);\n const len = Math.min(keyA.length, keyB.length);\n for (let i = 0; i < len; i++) {\n const c = compare(keyA[i], keyB[i]);\n if (c !== 0) {\n return c;\n }\n }\n // Arrays are the same up to the min length -- shorter array sorts first\n return keyA.length - keyB.length;\n };\n}\nexports.makeComparator = makeComparator;\nfunction compare(a, b) {\n if (a < b) {\n return -1;\n }\n if (b < a) {\n return 1;\n }\n return 0;\n}\nfunction dropIfEmpty(xs) {\n return xs.length > 0 ? xs : undefined;\n}\nexports.dropIfEmpty = dropIfEmpty;\nfunction deepRemoveUndefined(x) {\n if (typeof x === undefined || x === null) {\n return x;\n }\n if (Array.isArray(x)) {\n return x.map(deepRemoveUndefined);\n }\n if (typeof x === 'object') {\n for (const [key, value] of Object.entries(x)) {\n x[key] = deepRemoveUndefined(value);\n if (x[key] === undefined) {\n delete x[key];\n }\n }\n return x;\n }\n return x;\n}\nexports.deepRemoveUndefined = deepRemoveUndefined;\nfunction flatMap(xs, f) {\n const ret = new Array();\n for (const x of xs) {\n ret.push(...f(x));\n }\n return ret;\n}\nexports.flatMap = flatMap;\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInV0aWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUE7O0dBRUc7QUFDSCxTQUFnQixjQUFjLENBQU8sS0FBb0I7SUFDdkQsT0FBTyxDQUFDLENBQUksRUFBRSxDQUFJLEVBQUUsRUFBRTtRQUNwQixNQUFNLElBQUksR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDdEIsTUFBTSxJQUFJLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3RCLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7UUFFL0MsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEdBQUcsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO1lBQzdCLE1BQU0sQ0FBQyxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDcEMsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7Z0JBQUMsT0FBTyxDQUFDLENBQUM7WUFBQyxDQUFDO1FBQzVCLENBQUM7UUFFRCx3RUFBd0U7UUFDeEUsT0FBTyxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUM7SUFDbkMsQ0FBQyxDQUFDO0FBQ0osQ0FBQztBQWRELHdDQWNDO0FBRUQsU0FBUyxPQUFPLENBQUksQ0FBSSxFQUFFLENBQUk7SUFDNUIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7UUFBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO0lBQUMsQ0FBQztJQUN6QixJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztRQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQUMsQ0FBQztJQUN4QixPQUFPLENBQUMsQ0FBQztBQUNYLENBQUM7QUFFRCxTQUFnQixXQUFXLENBQUksRUFBTztJQUNwQyxPQUFPLEVBQUUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztBQUN4QyxDQUFDO0FBRkQsa0NBRUM7QUFFRCxTQUFnQixtQkFBbUIsQ0FBQyxDQUFNO0lBQ3hDLElBQUksT0FBTyxDQUFDLEtBQUssU0FBUyxJQUFJLENBQUMsS0FBSyxJQUFJLEVBQUUsQ0FBQztRQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQUMsQ0FBQztJQUN2RCxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO0lBQUMsQ0FBQztJQUM1RCxJQUFJLE9BQU8sQ0FBQyxLQUFLLFFBQVEsRUFBRSxDQUFDO1FBQzFCLEtBQUssTUFBTSxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFDN0MsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLG1CQUFtQixDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ3BDLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxLQUFLLFNBQVMsRUFBRSxDQUFDO2dCQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQUMsQ0FBQztRQUM5QyxDQUFDO1FBQ0QsT0FBTyxDQUFDLENBQUM7SUFDWCxDQUFDO0lBQ0QsT0FBTyxDQUFDLENBQUM7QUFDWCxDQUFDO0FBWEQsa0RBV0M7QUFFRCxTQUFnQixPQUFPLENBQU8sRUFBTyxFQUFFLENBQWdCO0lBQ3JELE1BQU0sR0FBRyxHQUFHLElBQUksS0FBSyxFQUFLLENBQUM7SUFDM0IsS0FBSyxNQUFNLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQztRQUNuQixHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDcEIsQ0FBQztJQUNELE9BQU8sR0FBRyxDQUFDO0FBQ2IsQ0FBQztBQU5ELDBCQU1DIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBUdXJuIGEgKG11bHRpLWtleSkgZXh0cmFjdGlvbiBmdW5jdGlvbiBpbnRvIGEgY29tcGFyYXRvciBmb3IgdXNlIGluIEFycmF5LnNvcnQoKVxuICovXG5leHBvcnQgZnVuY3Rpb24gbWFrZUNvbXBhcmF0b3I8VCwgVT4oa2V5Rm46ICh4OiBUKSA9PiBVW10pIHtcbiAgcmV0dXJuIChhOiBULCBiOiBUKSA9PiB7XG4gICAgY29uc3Qga2V5QSA9IGtleUZuKGEpO1xuICAgIGNvbnN0IGtleUIgPSBrZXlGbihiKTtcbiAgICBjb25zdCBsZW4gPSBNYXRoLm1pbihrZXlBLmxlbmd0aCwga2V5Qi5sZW5ndGgpO1xuXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsZW47IGkrKykge1xuICAgICAgY29uc3QgYyA9IGNvbXBhcmUoa2V5QVtpXSwga2V5QltpXSk7XG4gICAgICBpZiAoYyAhPT0gMCkgeyByZXR1cm4gYzsgfVxuICAgIH1cblxuICAgIC8vIEFycmF5cyBhcmUgdGhlIHNhbWUgdXAgdG8gdGhlIG1pbiBsZW5ndGggLS0gc2hvcnRlciBhcnJheSBzb3J0cyBmaXJzdFxuICAgIHJldHVybiBrZXlBLmxlbmd0aCAtIGtleUIubGVuZ3RoO1xuICB9O1xufVxuXG5mdW5jdGlvbiBjb21wYXJlPFQ+KGE6IFQsIGI6IFQpIHtcbiAgaWYgKGEgPCBiKSB7IHJldHVybiAtMTsgfVxuICBpZiAoYiA8IGEpIHsgcmV0dXJuIDE7IH1cbiAgcmV0dXJuIDA7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkcm9wSWZFbXB0eTxUPih4czogVFtdKTogVFtdIHwgdW5kZWZpbmVkIHtcbiAgcmV0dXJuIHhzLmxlbmd0aCA+IDAgPyB4cyA6IHVuZGVmaW5lZDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRlZXBSZW1vdmVVbmRlZmluZWQoeDogYW55KTogYW55IHtcbiAgaWYgKHR5cGVvZiB4ID09PSB1bmRlZmluZWQgfHwgeCA9PT0gbnVsbCkgeyByZXR1cm4geDsgfVxuICBpZiAoQXJyYXkuaXNBcnJheSh4KSkgeyByZXR1cm4geC5tYXAoZGVlcFJlbW92ZVVuZGVmaW5lZCk7IH1cbiAgaWYgKHR5cGVvZiB4ID09PSAnb2JqZWN0Jykge1xuICAgIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKHgpKSB7XG4gICAgICB4W2tleV0gPSBkZWVwUmVtb3ZlVW5kZWZpbmVkKHZhbHVlKTtcbiAgICAgIGlmICh4W2tleV0gPT09IHVuZGVmaW5lZCkgeyBkZWxldGUgeFtrZXldOyB9XG4gICAgfVxuICAgIHJldHVybiB4O1xuICB9XG4gIHJldHVybiB4O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZmxhdE1hcDxULCBVPih4czogVFtdLCBmOiAoeDogVCkgPT4gVVtdKTogVVtdIHtcbiAgY29uc3QgcmV0ID0gbmV3IEFycmF5PFU+KCk7XG4gIGZvciAoY29uc3QgeCBvZiB4cykge1xuICAgIHJldC5wdXNoKC4uLmYoeCkpO1xuICB9XG4gIHJldHVybiByZXQ7XG59XG4iXX0=","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./types/database\"), exports);\n__exportStar(require(\"./types/resource\"), exports);\n__exportStar(require(\"./types/augmentations\"), exports);\n__exportStar(require(\"./types/metrics\"), exports);\n__exportStar(require(\"./types/diff\"), exports);\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLG1EQUFpQztBQUNqQyxtREFBaUM7QUFDakMsd0RBQXNDO0FBQ3RDLGtEQUFnQztBQUNoQywrQ0FBNkIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL3R5cGVzL2RhdGFiYXNlJztcbmV4cG9ydCAqIGZyb20gJy4vdHlwZXMvcmVzb3VyY2UnO1xuZXhwb3J0ICogZnJvbSAnLi90eXBlcy9hdWdtZW50YXRpb25zJztcbmV4cG9ydCAqIGZyb20gJy4vdHlwZXMvbWV0cmljcyc7XG5leHBvcnQgKiBmcm9tICcuL3R5cGVzL2RpZmYnO1xuIl19","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXVnbWVudGF0aW9ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90eXBlcy9hdWdtZW50YXRpb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFbnRpdHksIFJlbGF0aW9uc2hpcCB9IGZyb20gJ0BjZGtsYWJzL3Rza2InO1xuaW1wb3J0IHsgUmVzb3VyY2UgfSBmcm9tICcuL3Jlc291cmNlJztcblxuLyoqXG4gKiBBdWdtZW50YXRpb25zIGZvciBhIENsb3VkRm9ybWF0aW9uIHJlc291cmNlIHR5cGVcbiAqXG4gKiBBdWdtZW50YXRpb25zIGFyZSBhIGRlcHJlY2F0ZWQgbWVjaGFuaXNtIGZvciBhdXRvbWF0aWNhbGx5IGdlbmVyYXRpbmcgbWV0cmljc1xuICogZnVuY3Rpb25zIGZvciBjZXJ0YWluIHJlc291cmNlcywgdXRpbGl6aW5nIFR5cGVTY3JpcHQgbWl4aW5zLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJlc291cmNlQXVnbWVudGF0aW9uIGV4dGVuZHMgRW50aXR5IHtcbiAgLyoqXG4gICAqIE1ldHJpYyBhdWdtZW50YXRpb25zIGZvciB0aGlzIHJlc291cmNlIHR5cGVcbiAgICovXG4gIG1ldHJpY3M/OiBSZXNvdXJjZU1ldHJpY0F1Z21lbnRhdGlvbnM7XG5cbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSBmaWxlIGNvbnRhaW5pbmcgdGhlIGNsYXNzIHRvIGJlIFwiYXVnbWVudGVkXCIuXG4gICAqXG4gICAqIEBkZWZhdWx0IGtlYmFiIGNhc2VkIENsb3VkRm9ybWF0aW9uIHJlc291cmNlIG5hbWUgKyAnLWJhc2UnXG4gICAqL1xuICBiYXNlQ2xhc3NGaWxlPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgY2xhc3MgdG8gYmUgXCJhdWdtZW50ZWRcIi5cbiAgICpcbiAgICogQGRlZmF1bHQgQ2xvdWRGb3JtYXRpb24gcmVzb3VyY2UgbmFtZSArICdCYXNlJ1xuICAgKi9cbiAgYmFzZUNsYXNzPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgZmlsZSBjb250YWluaW5nIHRoZSBpbnRlcmZhY2UgdG8gYmUgXCJhdWdtZW50ZWRcIi5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBzYW1lIGFzIGBgY2xhc3NGaWxlYGAuXG4gICAqL1xuICBpbnRlcmZhY2VGaWxlPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgaW50ZXJmYWNlIHRvIGJlIFwiYXVnbWVudGVkXCIuXG4gICAqXG4gICAqIEBkZWZhdWx0ICdJJyArIENsb3VkRm9ybWF0aW9uIHJlc291cmNlIG5hbWVcbiAgICovXG4gIGludGVyZmFjZT86IHN0cmluZztcbn1cblxuZXhwb3J0IHR5cGUgSXNBdWdtZW50ZWRSZXNvdXJjZSA9IFJlbGF0aW9uc2hpcDxSZXNvdXJjZSwgUmVzb3VyY2VBdWdtZW50YXRpb24+O1xuXG5leHBvcnQgaW50ZXJmYWNlIFJlc291cmNlTWV0cmljQXVnbWVudGF0aW9ucyB7XG4gIC8qKlxuICAgKiBUaGUgbmFtZXNwYWNlIG9mIG1ldHJpY3MgZm9yIHRoaXMgc2VydmljZVxuICAgKi9cbiAgbmFtZXNwYWNlOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBwcm9wZXJ0aWVzIG9mIHRoZSByZXNvdXJjZSBjbGFzcyB0aGF0IHByb3ZpZGUgdmFsdWVzIGZvciB0aGUgZGltZW5zaW9uc1xuICAgKlxuICAgKiBGb3IgZXhhbXBsZSwgYHsgUXVldWVOYW1lOiAncXVldWVOYW1lJyB9YCBzYXlzIHRoYXQgdGhlIG1ldHJpYyBoYXMgYSBgUXVldWVOYW1lYFxuICAgKiBkaW1lbnNpb24sIGZvciB3aGljaCB0aGUgdmFsdWUgY2FuIGJlIG9idGFpbmVkIGJ5IHJlYWRpbmcgYHRoaXMucXVldWVOYW1lYC5cbiAgICovXG4gIGRpbWVuc2lvbnM6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH07XG5cbiAgLyoqXG4gICAqIFRoZSBtZXRyaWNzIGZvciB0aGlzIHJlc291cmNlXG4gICAqL1xuICBtZXRyaWNzOiBSZXNvdXJjZU1ldHJpY1tdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFJlc291cmNlTWV0cmljIHtcbiAgLyoqXG4gICAqIFVwcGVyY2FzZS1maXJzdCBtZXRyaWMgbmFtZVxuICAgKi9cbiAgbmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBEb2N1bWVudGF0aW9uIGxpbmVcbiAgICovXG4gIGRvY3VtZW50YXRpb246IHN0cmluZztcblxuICAvKipcbiAgICogV2hldGhlciB0aGlzIGlzIGFuIGV2ZW4gY291bnQgKDEgZ2V0cyBlbWl0dGVkIGV2ZXJ5IHRpbWUgc29tZXRoaW5nIG9jY3VycylcbiAgICpcbiAgICogQGRlZmF1bHQgTWV0cmljVHlwZS5BdHRyaWJcbiAgICovXG4gIHR5cGU/OiBNZXRyaWNUeXBlO1xufVxuXG5leHBvcnQgdHlwZSBNZXRyaWNUeXBlID1cbiAgLyoqXG4gICAqIFRoaXMgbWV0cmljIGlzIGVtaXR0ZWQgZm9yIGV2ZW50cywgbWVhc3VyaW5nIGEgYXR0cmlidXRlIG9mIHRoZSBldmVudC5cbiAgICpcbiAgICogVHlwaWNhbCBleGFtcGxlcyBvZiB0aGlzIHdvdWxkIGJlIGR1cmF0aW9uLCBvciByZXF1ZXN0IHNpemUsIG9yIHNpbWlsYXIuXG4gICAqXG4gICAqIFRoZSBkZWZhdWx0IGFnZ3JlZ2F0ZSBmb3IgdGhpcyB0eXBlIG9mIGV2ZW50IGlzIFwiQXZnXCIuXG4gICAqL1xuICB8ICdhdHRyaWInXG5cbiAgLyoqXG4gICAqIFRoaXMgbWV0cmljIGlzIGVtaXR0ZWQgZm9yIGV2ZW50cywgYW5kIHRoZSB2YWx1ZSBpcyBhbHdheXMgYDFgLlxuICAgKlxuICAgKiBPbmx5IFwiU3VtXCIgaXMgYSBtZWFuaW5nZnVsIGFnZ3JlZ2F0ZSBvZiB0aGlzIHR5cGUgb2YgbWV0cmljOyBhbGwgb3RoZXJcbiAgICogYWdncmVnYXRpb25zIHdpbGwgb25seSBldmVyIHByb2R1Y2UgdGhlIHZhbHVlIGAxYC5cbiAgICovXG4gIHwgJ2NvdW50J1xuXG4gIC8qKlxuICAgKiBUaGlzIG1ldHJpYyBpcyBlbWl0dGVkIHBlcmlvZGljYWxseSwgcmVwcmVzZW50aW5nIGEgc3lzdGVtIHByb3BlcnR5LlxuICAgKlxuICAgKiBUaGUgbWV0cmljIG1lYXN1cmVzIHNvbWUgZ2xvYmFsIGV2ZXItY2hhbmdpbmcgcHJvcGVydHksIGFuZCBkb2VzIG5vdFxuICAgKiBtZWFzdXJlIGV2ZW50cy4gVGhlIG1vc3QgdXNlZnVsIGFnZ3JlZ2F0ZSBvZiB0aGlzIHR5cGUgb2YgbWV0cmljIGlzIFwiTWF4XCIuXG4gICAqL1xuICB8ICdnYXVnZSc7XG4iXX0=","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.RichSpecDatabase = exports.loadDatabase = exports.emptyDatabase = void 0;\nconst fs_1 = require(\"fs\");\nconst zlib_1 = require(\"zlib\");\nconst tskb_1 = require(\"@cdklabs/tskb\");\nfunction emptyDatabase() {\n return new tskb_1.Database({\n resource: (0, tskb_1.entityCollection)().index({\n cloudFormationType: (0, tskb_1.fieldIndex)('cloudFormationType', tskb_1.stringCmp),\n }),\n region: (0, tskb_1.entityCollection)().index({\n name: (0, tskb_1.fieldIndex)('name', tskb_1.stringCmp),\n }),\n service: (0, tskb_1.entityCollection)().index({\n name: (0, tskb_1.fieldIndex)('name', tskb_1.stringCmp),\n cloudFormationNamespace: (0, tskb_1.fieldIndex)('cloudFormationNamespace', tskb_1.stringCmp),\n }),\n typeDefinition: (0, tskb_1.entityCollection)(),\n augmentations: (0, tskb_1.entityCollection)(),\n metric: (0, tskb_1.entityCollection)().index({\n name: (0, tskb_1.fieldIndex)('name', tskb_1.stringCmp),\n namespace: (0, tskb_1.fieldIndex)('namespace', tskb_1.stringCmp),\n dedupKey: (0, tskb_1.fieldIndex)('dedupKey', tskb_1.stringCmp),\n }),\n dimensionSet: (0, tskb_1.entityCollection)().index({\n dedupKey: (0, tskb_1.fieldIndex)('dedupKey', tskb_1.stringCmp),\n }),\n }, (r) => ({\n hasResource: r.relationship('service', 'resource'),\n regionHasResource: r.relationship('region', 'resource'),\n regionHasService: r.relationship('region', 'service'),\n usesType: r.relationship('resource', 'typeDefinition'),\n isAugmented: r.relationship('resource', 'augmentations'),\n usesDimensionSet: r.relationship('metric', 'dimensionSet'),\n resourceHasMetric: r.relationship('resource', 'metric'),\n serviceHasMetric: r.relationship('service', 'metric'),\n resourceHasDimensionSet: r.relationship('resource', 'dimensionSet'),\n serviceHasDimensionSet: r.relationship('service', 'dimensionSet'),\n }));\n}\nexports.emptyDatabase = emptyDatabase;\nasync function loadDatabase(pathToDb) {\n const db = emptyDatabase();\n const contents = await fs_1.promises.readFile(pathToDb);\n const json = pathToDb.endsWith('.gz') ? (0, zlib_1.gunzipSync)(contents).toString('utf-8') : contents.toString('utf-8');\n db.load(JSON.parse(json));\n return db;\n}\nexports.loadDatabase = loadDatabase;\n/**\n * Helpers for working with a SpecDatabase\n */\nclass RichSpecDatabase {\n constructor(db) {\n this.db = db;\n }\n /**\n * Find all resources of a given type\n */\n resourceByType(cfnType, operation = 'resourceByType') {\n const res = this.db.lookup('resource', 'cloudFormationType', 'equals', cfnType);\n if (res.length === 0) {\n throw new Error(`${operation}: no such resource: ${cfnType}`);\n }\n return res[0];\n }\n /**\n * All type definitions used by a certain resource\n */\n resourceTypeDefs(cfnType) {\n const resource = this.db.lookup('resource', 'cloudFormationType', 'equals', cfnType).only();\n return this.db.follow('usesType', resource).map((x) => x.entity);\n }\n /**\n * Find a type definition from a given property type\n */\n tryFindDef(type) {\n return type.type === 'ref' ? this.db.get('typeDefinition', type.reference.$ref) : undefined;\n }\n}\nexports.RichSpecDatabase = RichSpecDatabase;\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YWJhc2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdHlwZXMvZGF0YWJhc2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsMkJBQW9DO0FBQ3BDLCtCQUFrQztBQUNsQyx3Q0FBa0Y7QUF1QmxGLFNBQWdCLGFBQWE7SUFDM0IsT0FBTyxJQUFJLGVBQVEsQ0FDakI7UUFDRSxRQUFRLEVBQUUsSUFBQSx1QkFBZ0IsR0FBWSxDQUFDLEtBQUssQ0FBQztZQUMzQyxrQkFBa0IsRUFBRSxJQUFBLGlCQUFVLEVBQUMsb0JBQW9CLEVBQUUsZ0JBQVMsQ0FBQztTQUNoRSxDQUFDO1FBQ0YsTUFBTSxFQUFFLElBQUEsdUJBQWdCLEdBQVUsQ0FBQyxLQUFLLENBQUM7WUFDdkMsSUFBSSxFQUFFLElBQUEsaUJBQVUsRUFBQyxNQUFNLEVBQUUsZ0JBQVMsQ0FBQztTQUNwQyxDQUFDO1FBQ0YsT0FBTyxFQUFFLElBQUEsdUJBQWdCLEdBQVcsQ0FBQyxLQUFLLENBQUM7WUFDekMsSUFBSSxFQUFFLElBQUEsaUJBQVUsRUFBQyxNQUFNLEVBQUUsZ0JBQVMsQ0FBQztZQUNuQyx1QkFBdUIsRUFBRSxJQUFBLGlCQUFVLEVBQUMseUJBQXlCLEVBQUUsZ0JBQVMsQ0FBQztTQUMxRSxDQUFDO1FBQ0YsY0FBYyxFQUFFLElBQUEsdUJBQWdCLEdBQWtCO1FBQ2xELGFBQWEsRUFBRSxJQUFBLHVCQUFnQixHQUF3QjtRQUN2RCxNQUFNLEVBQUUsSUFBQSx1QkFBZ0IsR0FBVSxDQUFDLEtBQUssQ0FBQztZQUN2QyxJQUFJLEVBQUUsSUFBQSxpQkFBVSxFQUFDLE1BQU0sRUFBRSxnQkFBUyxDQUFDO1lBQ25DLFNBQVMsRUFBRSxJQUFBLGlCQUFVLEVBQUMsV0FBVyxFQUFFLGdCQUFTLENBQUM7WUFDN0MsUUFBUSxFQUFFLElBQUEsaUJBQVUsRUFBQyxVQUFVLEVBQUUsZ0JBQVMsQ0FBQztTQUM1QyxDQUFDO1FBQ0YsWUFBWSxFQUFFLElBQUEs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QUFDLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDbkUsQ0FBQztJQUVEOztPQUVHO0lBQ0ksVUFBVSxDQUFDLElBQWtCO1FBQ2xDLE9BQU8sSUFBSSxDQUFDLElBQUksS0FBSyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLGdCQUFnQixFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztJQUM5RixDQUFDO0NBQ0Y7QUE1QkQsNENBNEJDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgcHJvbWlzZXMgYXMgZnMgfSBmcm9tICdmcyc7XG5pbXBvcnQgeyBndW56aXBTeW5jIH0gZnJvbSAnemxpYic7XG5pbXBvcnQgeyBEYXRhYmFzZSwgZW50aXR5Q29sbGVjdGlvbiwgZmllbGRJbmRleCwgc3RyaW5nQ21wIH0gZnJvbSAnQGNka2xhYnMvdHNrYic7XG5pbXBvcnQgeyBJc0F1Z21lbnRlZFJlc291cmNlLCBSZXNvdXJjZUF1Z21lbnRhdGlvbiB9IGZyb20gJy4vYXVnbWVudGF0aW9ucyc7XG5pbXBvcnQge1xuICBEaW1lbnNpb25TZXQsXG4gIE1ldHJpYyxcbiAgUmVzb3VyY2VIYXNEaW1lbnNpb25TZXQsXG4gIFNlcnZpY2VIYXNEaW1lbnNpb25TZXQsXG4gIFVzZXNEaW1lbnNpb25TZXQsXG4gIFJlc291cmNlSGFzTWV0cmljLFxuICBTZXJ2aWNlSGFzTWV0cmljLFxufSBmcm9tICcuL21ldHJpY3MnO1xuaW1wb3J0IHtcbiAgUmVzb3VyY2UsXG4gIFNlcnZpY2UsXG4gIFR5cGVEZWZpbml0aW9uLFxuICBQcm9wZXJ0eVR5cGUsXG4gIFJlZ2lvbixcbiAgSGFzUmVzb3VyY2UsXG4gIFJlZ2lvbkhhc1Jlc291cmNlLFxuICBSZWdpb25IYXNTZXJ2aWNlLFxuICBVc2VzVHlwZSxcbn0gZnJvbSAnLi9yZXNvdXJjZSc7XG5cbmV4cG9ydCBmdW5jdGlvbiBlbXB0eURhdGFiYXNlKCkge1xuICByZXR1cm4gbmV3IERhdGFiYXNlKFxuICAgIHtcbiAgICAgIHJlc291cmNlOiBlbnRpdHlDb2xsZWN0aW9uPFJlc291cmNlPigpLmluZGV4KHtcbiAgICAgICAgY2xvdWRGb3JtYXRpb25UeXBlOiBmaWVsZEluZGV4KCdjbG91ZEZvcm1hdGlvblR5cGUnLCBzdHJpbmdDbXApLFxuICAgICAgfSksXG4gICAgICByZWdpb246IGVudGl0eUNvbGxlY3Rpb248UmVnaW9uPigpLmluZGV4KHtcbiAgICAgICAgbmFtZTogZmllbGRJbmRleCgnbmFtZScsIHN0cmluZ0NtcCksXG4gICAgICB9KSxcbiAgICAgIHNlcnZpY2U6IGVudGl0eUNvbGxlY3Rpb248U2VydmljZT4oKS5pbmRleCh7XG4gICAgICAgIG5hbWU6IGZpZWxkSW5kZXgoJ25hbWUnLCBzdHJpbmdDbXApLFxuICAgICAgICBjbG91ZEZvcm1hdGlvbk5hbWVzcGFjZTogZmllbGRJbmRleCgnY2xvdWRGb3JtYXRpb25OYW1lc3BhY2UnLCBzdHJpbmdDbXApLFxuICAgICAgfSksXG4gICAgICB0eXBlRGVmaW5pdGlvbjogZW50aXR5Q29sbGVjdGlvbjxUeXBlRGVmaW5pdGlvbj4oKSxcbiAgICAgIGF1Z21lbnRhdGlvbnM6IGVudGl0eUNvbGxlY3Rpb248UmVzb3VyY2VBdWdtZW50YXRpb24+KCksXG4gICAgICBtZXRyaWM6IGVudGl0eUNvbGxlY3Rpb248TWV0cmljPigpLmluZGV4KHtcbiAgICAgICAgbmFtZTogZmllbGRJbmRleCgnbmFtZScsIHN0cmluZ0NtcCksXG4gICAgICAgIG5hbWVzcGFjZTogZmllbGRJbmRleCgnbmFtZXNwYWNlJywgc3RyaW5nQ21wKSxcbiAgICAgICAgZGVkdXBLZXk6IGZpZWxkSW5kZXgoJ2RlZHVwS2V5Jywgc3RyaW5nQ21wKSxcbiAgICAgIH0pLFxuICAgICAgZGltZW5zaW9uU2V0OiBlbnRpdHlDb2xsZWN0aW9uPERpbWVuc2lvblNldD4oKS5pbmRleCh7XG4gICAgICAgIGRlZHVwS2V5OiBmaWVsZEluZGV4KCdkZWR1cEtleScsIHN0cmluZ0NtcCksXG4gICAgICB9KSxcbiAgICB9LFxuICAgIChyKSA9PiAoe1xuICAgICAgaGFzUmVzb3VyY2U6IHIucmVsYXRpb25zaGlwPEhhc1Jlc291cmNlPignc2VydmljZScsICdyZXNvdXJjZScpLFxuICAgICAgcmVnaW9uSGFzUmVzb3VyY2U6IHIucmVsYXRpb25zaGlwPFJlZ2lvbkhhc1Jlc291cmNlPigncmVnaW9uJywgJ3Jlc291cmNlJyksXG4gICAgICByZWdpb25IYXNTZXJ2aWNlOiByLnJlbGF0aW9uc2hpcDxSZWdpb25IYXNTZXJ2aWNlPigncmVnaW9uJywgJ3NlcnZpY2UnKSxcbiAgICAgIHVzZXNUeXBlOiByLnJlbGF0aW9uc2hpcDxVc2VzVHlwZT4oJ3Jlc291cmNlJywgJ3R5cGVEZWZpbml0aW9uJyksXG4gICAgICBpc0F1Z21lbnRlZDogci5yZWxhdGlvbnNoaXA8SXNBdWdtZW50ZWRSZXNvdXJjZT4oJ3Jlc291cmNlJywgJ2F1Z21lbnRhdGlvbnMnKSxcbiAgICAgIHVzZXNEaW1lbnNpb25TZXQ6IHIucmVsYXRpb25zaGlwPFVzZXNEaW1lbnNpb25TZXQ+KCdtZXRyaWMnLCAnZGltZW5zaW9uU2V0JyksXG4gICAgICByZXNvdXJjZUhhc01ldHJpYzogci5yZWxhdGlvbnNoaXA8UmVzb3VyY2VIYXNNZXRyaWM+KCdyZXNvdXJjZScsICdtZXRyaWMnKSxcbiAgICAgIHNlcnZpY2VIYXNNZXRyaWM6IHIucmVsYXRpb25zaGlwPFNlcnZpY2VIYXNNZXRyaWM+KCdzZXJ2aWNlJywgJ21ldHJpYycpLFxuICAgICAgcmVzb3VyY2VIYXNEaW1lbnNpb25TZXQ6IHIucmVsYXRpb25zaGlwPFJlc291cmNlSGFzRGltZW5zaW9uU2V0PigncmVzb3VyY2UnLCAnZGltZW5zaW9uU2V0JyksXG4gICAgICBzZXJ2aWNlSGFzRGltZW5zaW9uU2V0OiByLnJlbGF0aW9uc2hpcDxTZXJ2aWNlSGFzRGltZW5zaW9uU2V0Pignc2VydmljZScsICdkaW1lbnNpb25TZXQnKSxcbiAgICB9KSxcbiAgKTtcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGxvYWREYXRhYmFzZShwYXRoVG9EYjogc3RyaW5nKSB7XG4gIGNvbnN0IGRiID0gZW1wdHlEYXRhYmFzZSgpO1xuICBjb25zdCBjb250ZW50cyA9IGF3YWl0IGZzLnJlYWRGaWxlKHBhdGhUb0RiKTtcbiAgY29uc3QganNvbiA9IHBhdGhUb0RiLmVuZHNXaXRoKCcuZ3onKSA/IGd1bnppcFN5bmMoY29udGVudHMpLnRvU3RyaW5nKCd1dGYtOCcpIDogY29udGVudHMudG9TdHJpbmcoJ3V0Zi04Jyk7XG4gIGRiLmxvYWQoSlNPTi5wYXJzZShqc29uKSk7XG4gIHJldHVybiBkYjtcbn1cblxuZXhwb3J0IHR5cGUgU3BlY0RhdGFiYXNlID0gUmV0dXJuVHlwZTx0eXBlb2YgZW1wdHlEYXRhYmFzZT47XG5cbi8qKlxuICogSGVscGVycyBmb3Igd29ya2luZyB3aXRoIGEgU3BlY0RhdGFiYXNlXG4gKi9cbmV4cG9ydCBjbGFzcyBSaWNoU3BlY0RhdGFiYXNlIHtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBkYjogU3BlY0RhdGFiYXNlKSB7fVxuXG4gIC8qKlxuICAgKiBGaW5kIGFsbCByZXNvdXJjZXMgb2YgYSBnaXZlbiB0eXBlXG4gICAqL1xuICBwdWJsaWMgcmVzb3VyY2VCeVR5cGUoY2ZuVHlwZTogc3RyaW5nLCBvcGVyYXRpb24gPSAncmVzb3VyY2VCeVR5cGUnKTogUmVzb3VyY2Uge1xuICAgIGNvbnN0IHJlcyA9IHRoaXMuZGIubG9va3VwKCdyZXNvdXJjZScsICdjbG91ZEZvcm1hdGlvblR5cGUnLCAnZXF1YWxzJywgY2ZuVHlwZSk7XG4gICAgaWYgKHJlcy5sZW5ndGggPT09IDApIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgJHtvcGVyYXRpb259OiBubyBzdWNoIHJlc291cmNlOiAke2NmblR5cGV9YCk7XG4gICAgfVxuICAgIHJldHVybiByZXNbMF07XG4gIH1cblxuICAvKipcbiAgICogQWxsIHR5cGUgZGVmaW5pdGlvbnMgdXNlZCBieSBhIGNlcnRhaW4gcmVzb3VyY2VcbiAgICovXG4gIHB1YmxpYyByZXNvdXJjZVR5cGVEZWZzKGNmblR5cGU6IHN0cmluZyk6IHJlYWRvbmx5IFR5cGVEZWZpbml0aW9uW10ge1xuICAgIGNvbnN0IHJlc291cmNlID0gdGhpcy5kYi5sb29rdXAoJ3Jlc291cmNlJywgJ2Nsb3VkRm9ybWF0aW9uVHlwZScsICdlcXVhbHMnLCBjZm5UeXBlKS5vbmx5KCk7XG4gICAgcmV0dXJuIHRoaXMuZGIuZm9sbG93KCd1c2VzVHlwZScsIHJlc291cmNlKS5tYXAoKHgpID0+IHguZW50aXR5KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBGaW5kIGEgdHlwZSBkZWZpbml0aW9uIGZyb20gYSBnaXZlbiBwcm9wZXJ0eSB0eXBlXG4gICAqL1xuICBwdWJsaWMgdHJ5RmluZERlZih0eXBlOiBQcm9wZXJ0eVR5cGUpOiBUeXBlRGVmaW5pdGlvbiB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHR5cGUudHlwZSA9PT0gJ3JlZicgPyB0aGlzLmRiLmdldCgndHlwZURlZmluaXRpb24nLCB0eXBlLnJlZmVyZW5jZS4kcmVmKSA6IHVuZGVmaW5lZDtcbiAgfVxufVxuIl19","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlmZi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90eXBlcy9kaWZmLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBdHRyaWJ1dGUsIFByb3BlcnR5LCBSZXNvdXJjZSwgU2VydmljZSwgVHlwZURlZmluaXRpb24gfSBmcm9tICcuL3Jlc291cmNlJztcblxuZXhwb3J0IGludGVyZmFjZSBTcGVjRGF0YWJhc2VEaWZmIHtcbiAgc2VydmljZXM6IE1hcERpZmY8U2VydmljZSwgVXBkYXRlZFNlcnZpY2U+O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIExpc3REaWZmPEUsIEVEPiB7XG4gIHJlYWRvbmx5IGFkZGVkPzogRVtdO1xuICByZWFkb25seSByZW1vdmVkPzogRVtdO1xuICByZWFkb25seSB1cGRhdGVkPzogRURbXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBNYXBEaWZmPEUsIEVEPiB7XG4gIHJlYWRvbmx5IGFkZGVkPzogUmVjb3JkPHN0cmluZywgRT47XG4gIHJlYWRvbmx5IHJlbW92ZWQ/OiBSZWNvcmQ8c3RyaW5nLCBFPjtcbiAgcmVhZG9ubHkgdXBkYXRlZD86IFJlY29yZDxzdHJpbmcsIEVEPjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBVcGRhdGVkU2VydmljZSB7XG4gIHJlYWRvbmx5IG5hbWU/OiBTY2FsYXJEaWZmPFNlcnZpY2VbJ25hbWUnXT47XG4gIHJlYWRvbmx5IHNob3J0TmFtZT86IFNjYWxhckRpZmY8U2VydmljZVsnc2hvcnROYW1lJ10+O1xuICByZWFkb25seSBjYXBpdGFsaXplZD86IFNjYWxhckRpZmY8U2VydmljZVsnY2FwaXRhbGl6ZWQnXT47XG4gIHJlYWRvbmx5IGNsb3VkRm9ybWF0aW9uTmFtZXNwYWNlPzogU2NhbGFyRGlmZjxTZXJ2aWNlWydjbG91ZEZvcm1hdGlvbk5hbWVzcGFjZSddPjtcbiAgcmVhZG9ubHkgcmVzb3VyY2VEaWZmPzogTWFwRGlmZjxSZXNvdXJjZSwgVXBkYXRlZFJlc291cmNlPjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBVcGRhdGVkUmVzb3VyY2Uge1xuICByZWFkb25seSBuYW1lPzogU2NhbGFyRGlmZjxzdHJpbmc+O1xuICByZWFkb25seSBjbG91ZEZvcm1hdGlvblR5cGU/OiBTY2FsYXJEaWZmPHN0cmluZz47XG4gIHJlYWRvbmx5IGNsb3VkRm9ybWF0aW9uVHJhbnNmb3JtPzogU2NhbGFyRGlmZjxzdHJpbmc+O1xuICByZWFkb25seSBkb2N1bWVudGF0aW9uPzogU2NhbGFyRGlmZjxzdHJpbmc+O1xuICByZWFkb25seSBwcm9wZXJ0aWVzPzogTWFwRGlmZjxQcm9wZXJ0eSwgVXBkYXRlZFByb3BlcnR5PjtcbiAgcmVhZG9ubHkgYXR0cmlidXRlcz86IE1hcERpZmY8QXR0cmlidXRlLCBVcGRhdGVkQXR0cmlidXRlPjtcbiAgcmVhZG9ubHkgaWRlbnRpZmllcj86IFNjYWxhckRpZmY8UmVzb3VyY2VbJ2lkZW50aWZpZXInXT47XG4gIHJlYWRvbmx5IGlzU3RhdGVmdWw/OiBTY2FsYXJEaWZmPGJvb2xlYW4+O1xuICByZWFkb25seSB0YWdJbmZvcm1hdGlvbj86IFNjYWxhckRpZmY8UmVzb3VyY2VbJ3RhZ0luZm9ybWF0aW9uJ10+O1xuICByZWFkb25seSBzY3J1dGluaXphYmxlPzogU2NhbGFyRGlmZjxSZXNvdXJjZVsnc2NydXRpbml6YWJsZSddPjtcbiAgcmVhZG9ubHkgdHlwZURlZmluaXRpb25EaWZmPzogTWFwRGlmZjxUeXBlRGVmaW5pdGlvbiwgVXBkYXRlZFR5cGVEZWZpbml0aW9uPjtcbiAgcmVhZG9ubHkgcHJpbWFyeUlkZW50aWZpZXI/OiBMaXN0RGlmZjxzdHJpbmcsIHZvaWQ+O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFVwZGF0ZWRQcm9wZXJ0eSB7XG4gIHJlYWRvbmx5IG9sZDogUHJvcGVydHk7XG4gIHJlYWRvbmx5IG5ldzogUHJvcGVydHk7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVXBkYXRlZEF0dHJpYnV0ZSB7XG4gIHJlYWRvbmx5IG9sZDogQXR0cmlidXRlO1xuICByZWFkb25seSBuZXc6IEF0dHJpYnV0ZTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBVcGRhdGVkVHlwZURlZmluaXRpb24ge1xuICByZWFkb25seSBuYW1lPzogU2NhbGFyRGlmZjxzdHJpbmc+O1xuICByZWFkb25seSBkb2N1bWVudGF0aW9uPzogU2NhbGFyRGlmZjxzdHJpbmc+O1xuICByZWFkb25seSBwcm9wZXJ0aWVzPzogTWFwRGlmZjxQcm9wZXJ0eSwgVXBkYXRlZFByb3BlcnR5PjtcbiAgcmVhZG9ubHkgbXVzdFJlbmRlckZvckJ3Q29tcGF0PzogU2NhbGFyRGlmZjxib29sZWFuPjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTY2FsYXJEaWZmPEE+IHtcbiAgcmVhZG9ubHkgb2xkPzogQTtcbiAgcmVhZG9ubHkgbmV3PzogQTtcbn1cbiJdfQ==","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWV0cmljcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90eXBlcy9tZXRyaWNzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFbnRpdHksIFJlbGF0aW9uc2hpcCB9IGZyb20gJ0BjZGtsYWJzL3Rza2InO1xuaW1wb3J0IHsgUmVzb3VyY2UsIFNlcnZpY2UgfSBmcm9tICcuL3Jlc291cmNlJztcblxuLyoqXG4gKiBBIE1ldHJpYyBEaW1lbnNpb24gKG5vdCBhbiBlbnRpdHkpXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRGltZW5zaW9uIHtcbiAgLyoqXG4gICAqIE5hbWUgb2YgdGhlIGRpbWVuc2lvblxuICAgKi9cbiAgcmVhZG9ubHkgbmFtZTogc3RyaW5nO1xuICAvKipcbiAgICogQSBwb3RlbnRpYWwgdmFsdWUgZm9yIHRoaXMgZGltZW5zaW9uXG4gICAqL1xuICByZWFkb25seSB2YWx1ZT86IHN0cmluZztcbn1cblxuLyoqXG4gKiBBIHNldCBvZiBNZXRyaWMgRGltZW5zaW9uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRGltZW5zaW9uU2V0IGV4dGVuZHMgRW50aXR5IHtcbiAgLyoqXG4gICAqIEEgdW5pcXVlIHZhbHVlIHVzZWQgdG8gZGVkdXBsaWNhdGUgdGhlIGVudGl0eVxuICAgKi9cbiAgZGVkdXBLZXk6IHN0cmluZztcbiAgLyoqXG4gICAqIFRoZSBkaW1lbnNpb25zIGluIHRoaXMgc2V0XG4gICAqL1xuICBkaW1lbnNpb25zOiBEaW1lbnNpb25bXTtcbn1cbmV4cG9ydCB0eXBlIFJlc291cmNlSGFzRGltZW5zaW9uU2V0ID0gUmVsYXRpb25zaGlwPFJlc291cmNlLCBEaW1lbnNpb25TZXQ+O1xuZXhwb3J0IHR5cGUgU2VydmljZUhhc0RpbWVuc2lvblNldCA9IFJlbGF0aW9uc2hpcDxTZXJ2aWNlLCBEaW1lbnNpb25TZXQ+O1xuXG4vKipcbiAqIEEgQ2xvdWRXYXRjaCBNZXRyaWNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBNZXRyaWMgZXh0ZW5kcyBFbnRpdHkge1xuICAvKipcbiAgICogTWV0cmljIG5hbWVzcGFjZVxuICAgKi9cbiAgcmVhZG9ubHkgbmFtZXNwYWNlOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBOYW1lIG9mIHRoZSBtZXRyaWNcbiAgICovXG4gIHJlYWRvbmx5IG5hbWU6IHN0cmluZztcbiAgLyoqXG4gICAqIERlZmF1bHQgKHN1Z2dlc3RlZCkgc3RhdGlzdGljIGZvciB0aGlzIG1ldHJpY1xuICAgKi9cbiAgcmVhZG9ubHkgc3RhdGlzdGljOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBBIHVuaXF1ZSB2YWx1ZSB1c2VkIHRvIGRlZHVwbGljYXRlIHRoZSBlbnRpdHlcbiAgICovXG4gIHJlYWRvbmx5IGRlZHVwS2V5OiBzdHJpbmc7XG59XG5leHBvcnQgdHlwZSBVc2VzRGltZW5zaW9uU2V0ID0gUmVsYXRpb25zaGlwPE1ldHJpYywgRGltZW5zaW9uU2V0PjtcbmV4cG9ydCB0eXBlIFJlc291cmNlSGFzTWV0cmljID0gUmVsYXRpb25zaGlwPFJlc291cmNlLCBNZXRyaWM+O1xuZXhwb3J0IHR5cGUgU2VydmljZUhhc01ldHJpYyA9IFJlbGF0aW9uc2hpcDxTZXJ2aWNlLCBNZXRyaWM+O1xuIl19","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.RichPropertyType = exports.PropertyScrutinyType = exports.ResourceScrutinyType = exports.isCollectionType = exports.Deprecation = exports.RichAttribute = exports.RichProperty = exports.RichTypedField = void 0;\nconst sorting_1 = require(\"../util/sorting\");\nclass RichTypedField {\n constructor(field) {\n this.field = field;\n if (field === undefined) {\n throw new Error('Field is undefined');\n }\n }\n types() {\n var _a;\n return [...((_a = this.field.previousTypes) !== null && _a !== void 0 ? _a : []), this.field.type];\n }\n /**\n * Update the type of this property with a new type\n *\n * Only if it's not in the set of types already.\n */\n updateType(type) {\n const richType = new RichPropertyType(type);\n // Only add this type if we don't already have it. We are only doing comparisons where 'integer' and 'number'\n // are treated the same, for all other types we need strict equality. We used to use 'assignableTo' as a\n // condition, but these types will be rendered in both co- and contravariant positions, and so we really can't\n // do much better than full equality.\n if (this.types().some((t) => richType.equals(t))) {\n // Nothing to do, type is already in there.\n return false;\n }\n // Special case: if the new type is `string` and the old type is `date-time`, we assume this is\n // the same type but we dropped some formatting information. No need to make this a separate type.\n if (type.type === 'string' && this.types().some((t) => t.type === 'date-time')) {\n return false;\n }\n if (!this.field.previousTypes) {\n this.field.previousTypes = [];\n }\n this.field.previousTypes.push(this.field.type);\n this.field.type = type;\n return true;\n }\n}\nexports.RichTypedField = RichTypedField;\nclass RichProperty extends RichTypedField {\n constructor(property) {\n super(property);\n }\n}\nexports.RichProperty = RichProperty;\nclass RichAttribute extends RichTypedField {\n constructor(attr) {\n super(attr);\n }\n}\nexports.RichAttribute = RichAttribute;\nvar Deprecation;\n(function (Deprecation) {\n /**\n * Not deprecated\n */\n Deprecation[\"NONE\"] = \"NONE\";\n /**\n * Warn about use\n */\n Deprecation[\"WARN\"] = \"WARN\";\n /**\n * Do not emit the value at all\n *\n * (Handle properties that were incorrectly added to the spec)\n */\n Deprecation[\"IGNORE\"] = \"IGNORE\";\n})(Deprecation = exports.Deprecation || (exports.Deprecation = {}));\nfunction isCollectionType(x) {\n return x.type === 'array' || x.type === 'map';\n}\nexports.isCollectionType = isCollectionType;\n/**\n * Mark a resource as a resource that needs additional scrutiy when added, removed or changed\n *\n * Used to mark resources that represent security policies.\n */\nvar ResourceScrutinyType;\n(function (ResourceScrutinyType) {\n /**\n * No additional scrutiny\n */\n ResourceScrutinyType[\"None\"] = \"None\";\n /**\n * An externally attached policy document to a resource\n *\n * (Common for SQS, SNS, S3, ...)\n */\n ResourceScrutinyType[\"ResourcePolicyResource\"] = \"ResourcePolicyResource\";\n /**\n * This is an IAM policy on an identity resource\n *\n * (Basically saying: this is AWS::IAM::Policy)\n */\n ResourceScrutinyType[\"IdentityPolicyResource\"] = \"IdentityPolicyResource\";\n /**\n * This is a Lambda Permission policy\n */\n ResourceScrutinyType[\"LambdaPermission\"] = \"LambdaPermission\";\n /**\n * An ingress rule object\n */\n ResourceScrutinyType[\"IngressRuleResource\"] = \"IngressRuleResource\";\n /**\n * A set of egress rules\n */\n ResourceScrutinyType[\"EgressRuleResource\"] = \"EgressRuleResource\";\n /**\n * AWS::SSO::Assignment\n *\n * IAM Identity Center (formerly known as SSO)\n */\n ResourceScrutinyType[\"SsoAssignmentResource\"] = \"SsoAssignmentResource\";\n /**\n * AWS::SSO::InstanceAccessControlAttributeConfiguration\n *\n * IAM Identity Center (formerly known as SSO)\n */\n ResourceScrutinyType[\"SsoInstanceACAConfigResource\"] = \"SsoInstanceACAConfigResource\";\n /**\n * AWS::SSO::PermissionSet\n *\n * IAM Identity Center (formerly known as SSO)\n */\n ResourceScrutinyType[\"SsoPermissionSet\"] = \"SsoPermissionSet\";\n})(ResourceScrutinyType = exports.ResourceScrutinyType || (exports.ResourceScrutinyType = {}));\n/**\n * Mark a property as a property that needs additional scrutiny when it changes\n *\n * Used to mark sensitive properties that have security-related implications.\n */\nvar PropertyScrutinyType;\n(function (PropertyScrutinyType) {\n /**\n * No additional scrutiny\n */\n PropertyScrutinyType[\"None\"] = \"None\";\n /**\n * This is an IAM policy directly on a resource\n */\n PropertyScrutinyType[\"InlineResourcePolicy\"] = \"InlineResourcePolicy\";\n /**\n * Either an AssumeRolePolicyDocument or a dictionary of policy documents\n */\n PropertyScrutinyType[\"InlineIdentityPolicies\"] = \"InlineIdentityPolicies\";\n /**\n * A list of managed policies (on an identity resource)\n */\n PropertyScrutinyType[\"ManagedPolicies\"] = \"ManagedPolicies\";\n /**\n * A set of ingress rules (on a security group)\n */\n PropertyScrutinyType[\"IngressRules\"] = \"IngressRules\";\n /**\n * A set of egress rules (on a security group)\n */\n PropertyScrutinyType[\"EgressRules\"] = \"EgressRules\";\n})(PropertyScrutinyType = exports.PropertyScrutinyType || (exports.PropertyScrutinyType = {}));\nclass RichPropertyType {\n constructor(type) {\n this.type = type;\n }\n equals(rhs) {\n switch (this.type.type) {\n case 'integer':\n case 'boolean':\n case 'date-time':\n case 'json':\n case 'null':\n case 'number':\n case 'string':\n case 'tag':\n return rhs.type === this.type.type;\n case 'array':\n case 'map':\n return rhs.type === this.type.type && new RichPropertyType(this.type.element).equals(rhs.element);\n case 'ref':\n return rhs.type === 'ref' && this.type.reference.$ref === rhs.reference.$ref;\n case 'union':\n const lhsKey = this.sortKey();\n const rhsKey = new RichPropertyType(rhs).sortKey();\n return lhsKey.length === rhsKey.length && lhsKey.every((l, i) => l === rhsKey[i]);\n }\n }\n /**\n * Whether the current type is JavaScript-equal to the RHS type\n *\n * Same as normal equality, but consider `integer` and `number` the same types.\n */\n javascriptEquals(rhs) {\n switch (this.type.type) {\n case 'number':\n case 'integer':\n // Widening\n return rhs.type === 'integer' || rhs.type === 'number';\n case 'array':\n case 'map':\n return rhs.type === this.type.type && new RichPropertyType(this.type.element).javascriptEquals(rhs.element);\n case 'union':\n if (rhs.type !== 'union') {\n return false;\n }\n // Every type in this union needs to be equal one type in RHS\n return this.type.types.every((t1) => rhs.types.some((t2) => new RichPropertyType(t1).javascriptEquals(t2)));\n default:\n // For anything else, need strict equality\n return this.equals(rhs);\n }\n }\n /**\n * Whether the current type is assignable to the RHS type.\n *\n * This is means every type member of the LHS must be present in the RHS type\n */\n assignableTo(rhs) {\n const extractMembers = (type) => (type.type == 'union' ? type.types : [type]);\n const asRichType = (type) => new RichPropertyType(type);\n const rhsMembers = extractMembers(rhs);\n for (const lhsMember of extractMembers(this.type).map(asRichType)) {\n if (!rhsMembers.some((type) => lhsMember.equals(type))) {\n return false;\n }\n }\n return true;\n }\n /**\n * Return a version of this type, but with all type unions in a regularized order\n */\n normalize(db) {\n switch (this.type.type) {\n case 'array':\n case 'map':\n return new RichPropertyType({\n type: this.type.type,\n element: new RichPropertyType(this.type.element).normalize(db).type,\n });\n case 'union':\n const types = this.type.types\n .map((t) => new RichPropertyType(t).normalize(db))\n .map((t) => [t, t.sortKey(db)]);\n types.sort((0, sorting_1.sortKeyComparator)(([_, sortKey]) => sortKey));\n return new RichPropertyType({\n type: 'union',\n types: types.map(([t, _]) => t.type),\n });\n default:\n return this;\n }\n }\n stringify(db, withId = true) {\n switch (this.type.type) {\n case 'integer':\n case 'boolean':\n case 'date-time':\n case 'json':\n case 'null':\n case 'number':\n case 'string':\n case 'tag':\n return this.type.type;\n case 'array':\n return `Array<${new RichPropertyType(this.type.element).stringify(db, withId)}>`;\n case 'map':\n return `Map`;\n case 'ref':\n const type = db.get('typeDefinition', this.type.reference);\n return withId ? `${type.name}(${this.type.reference.$ref})` : type.name;\n case 'union':\n return this.type.types.map((t) => new RichPropertyType(t).stringify(db, withId)).join(' | ');\n }\n }\n /**\n * Return a sortable key based on this type\n *\n * If a database is given, type definitions will be sorted based on type name,\n * otherwise on identifier\n */\n sortKey(db) {\n var _a, _b;\n switch (this.type.type) {\n case 'integer':\n case 'boolean':\n case 'date-time':\n case 'json':\n case 'null':\n case 'number':\n case 'string':\n case 'tag':\n return ['0', this.type.type];\n case 'array':\n case 'map':\n return ['1', this.type.type, ...new RichPropertyType(this.type.element).sortKey(db)];\n case 'ref':\n return ['2', this.type.type, (_b = (_a = db === null || db === void 0 ? void 0 : db.get('typeDefinition', this.type.reference)) === null || _a === void 0 ? void 0 : _a.name) !== null && _b !== void 0 ? _b : this.type.reference.$ref];\n case 'union':\n const typeKeys = this.type.types.map((t) => new RichPropertyType(t).sortKey(db));\n typeKeys.sort((0, sorting_1.sortKeyComparator)((x) => x));\n return ['3', this.type.type, ...typeKeys.flatMap((x) => x)];\n }\n }\n}\nexports.RichPropertyType = RichPropertyType;\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzb3VyY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdHlwZXMvcmVzb3VyY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBRUEsNkNBQW9EO0FBdUtwRCxNQUFhLGNBQWM7SUFDekIsWUFBNkIsS0FBK0M7UUFBL0MsVUFBSyxHQUFMLEtBQUssQ0FBMEM7UUFDMUUsSUFBSSxLQUFLLEtBQUssU0FBUyxFQUFFO1lBQ3ZCLE1BQU0sSUFBSSxLQUFLLENBQUMsb0JBQW9CLENBQUMsQ0FBQztTQUN2QztJQUNILENBQUM7SUFFTSxLQUFLOztRQUNWLE9BQU8sQ0FBQyxHQUFHLENBQUMsTUFBQSxJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsbUNBQUksRUFBRSxDQUFDLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNoRSxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNJLFVBQVUsQ0FBQyxJQUFrQjtRQUNsQyxNQUFNLFFBQVEsR0FBRyxJQUFJLGdCQUFnQixDQUFDLElBQUksQ0FBQyxDQUFDO1FBRTVDLDZHQUE2RztRQUM3Ryx3R0FBd0c7UUFDeEcsOEdBQThHO1FBQzlHLHFDQUFxQztRQUNyQyxJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRTtZQUNoRCwyQ0FBMkM7WUFDM0MsT0FBTyxLQUFLLENBQUM7U0FDZDtRQUVELCtGQUErRjtRQUMvRixrR0FBa0c7UUFDbEcsSUFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLFFBQVEsSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLFdBQVcsQ0FBQyxFQUFFO1lBQzlFLE9BQU8sS0FBSyxDQUFDO1NBQ2Q7UUFFRCxJQUFJ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QyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsSUFBSSxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztnQkFDakYsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFBLDJCQUFpQixFQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUMzQyxPQUFPLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLEdBQUcsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUMvRDtJQUNILENBQUM7Q0FDRjtBQXRKRCw0Q0FzSkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFbnRpdHksIFJlZmVyZW5jZSwgUmVsYXRpb25zaGlwIH0gZnJvbSAnQGNka2xhYnMvdHNrYic7XG5pbXBvcnQgeyBTcGVjRGF0YWJhc2UgfSBmcm9tICcuL2RhdGFiYXNlJztcbmltcG9ydCB7IHNvcnRLZXlDb21wYXJhdG9yIH0gZnJvbSAnLi4vdXRpbC9zb3J0aW5nJztcblxuZXhwb3J0IGludGVyZmFjZSBQYXJ0aXRpb24gZXh0ZW5kcyBFbnRpdHkge1xuICByZWFkb25seSBwYXJ0aXRpb246IHN0cmluZztcbn1cblxuZXhwb3J0IHR5cGUgSGFzUmVnaW9uID0gUmVsYXRpb25zaGlwPFBhcnRpdGlvbiwgUmVnaW9uLCB7IGlzUHJpbWFyeT86IGJvb2xlYW4gfT47XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2VydmljZSBleHRlbmRzIEVudGl0eSB7XG4gIC8qKlxuICAgKiBUaGUgZnVsbCBuYW1lIG9mIHRoZSBzZXJ2aWNlIGluY2x1ZGluZyB0aGUgZ3JvdXAgcHJlZml4LCBsb3dlcmNhc2VkIGFuZCBoeXBoZW5hdGVkLlxuICAgKlxuICAgKiBFLmcuIGBBV1M6OkR5bmFtb0RCYCAtPiBgYXdzLWR5bmFtb2RiYFxuICAgKlxuICAgKiBAZXhhbXBsZSBhd3MtZHluYW1vZGJcbiAgICovXG4gIHJlYWRvbmx5IG5hbWU6IHN0cmluZztcbiAgLyoqXG4gICAqIE9ubHkgdGhlIHNlcnZpY2UgcGFydCBvZiB0aGUgbmFtZSwgbG93ZXJjYXNlZC5cbiAgICpcbiAgICogRS5nLiBgQVdTOjpEeW5hbW9EQmAgLT4gYGR5bmFtb2RiYFxuICAgKlxuICAgKiBAZXhhbXBsZSBkeW5hbW9kYlxuICAgKi9cbiAgcmVhZG9ubHkgc2hvcnROYW1lOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBUaGUgc2hvcnRuYW1lIG9mIHRoZSBzZXJ2aWNlIGluIGNhcGl0YWxpemVkIGZvcm1cbiAgICpcbiAgICogRS5nLiBgQVdTOjpEeW5hbW9EQmAgLT4gYER5bmFtb0RCYFxuICAgKlxuICAgKiBAZXhhbXBsZSBkeW5hbW9kYlxuICAgKi9cbiAgcmVhZG9ubHkgY2FwaXRhbGl6ZWQ6IHN0cmluZztcbiAgLyoqXG4gICAqIFRoZSBjb21wbGV0ZSBjbG91ZGZvcm1hdGlvbiBzdHlsZSBuYW1lc3BhY2Ugb2YgdGhlIHNlcnZpY2VcbiAgICpcbiAgICogRS5nLiBgQVdTOjpEeW5hbW9EQmBcbiAgICpcbiAgICogQGV4YW1wbGUgZHluYW1vZGJcbiAgICovXG4gIHJlYWRvbmx5IGNsb3VkRm9ybWF0aW9uTmFtZXNwYWNlOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVnaW9uIGV4dGVuZHMgRW50aXR5IHtcbiAgcmVhZG9ubHkgbmFtZTogc3RyaW5nO1xuICByZWFkb25seSBkZXNjcmlwdGlvbj86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBEb2N1bWVudGF0aW9uIGV4dGVuZHMgRW50aXR5IHtcbiAgcmVhZG9ubHkgbWFya2Rvd246IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBSZXNvdXJjZSBleHRlbmRzIEVudGl0eSB7XG4gIHJlYWRvbmx5IG5hbWU6IHN0cmluZztcbiAgcmVhZG9ubHkgY2xvdWRGb3JtYXRpb25UeXBlOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBJZiBzZXQsIHRoaXMgQ2xvdWRGb3JtYXRpb24gVHJhbnNmb3JtIGlzIHJlcXVpcmVkIGJ5IHRoZSByZXNvdXJjZVxuICAgKi9cbiAgY2xvdWRGb3JtYXRpb25UcmFuc2Zvcm0/OiBzdHJpbmc7XG4gIGRvY3VtZW50YXRpb24/OiBzdHJpbmc7XG4gIHByaW1hcnlJZGVudGlmaWVyPzogc3RyaW5nW107XG4gIHJlYWRvbmx5IHByb3BlcnRpZXM6IFJlc291cmNlUHJvcGVydGllcztcbiAgcmVhZG9ubHkgYXR0cmlidXRlczogUmVjb3JkPHN0cmluZywgQXR0cmlidXRlPjtcbiAgcmVhZG9ubHkgdmFsaWRhdGlvbnM/OiB1bmtub3duO1xuICBpZGVudGlmaWVyPzogUmVzb3VyY2VJZGVudGlmaWVyO1xuICBpc1N0YXRlZnVsPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogSW5mb3JtYXRpb24gYWJvdXQgdGhlIHRhZ2dhYmlsaXR5IG9mIHRoaXMgcmVzb3VyY2VcbiAgICpcbiAgICogVW5kZWZpbmVkIGlmIHRoZSByZXNvdXJjZSBpcyBub3QgdGFnZ2FibGUuXG4gICAqL1xuICB0YWdJbmZvcm1hdGlvbj86IFRhZ0luZm9ybWF0aW9uO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIGNoYW5nZXMgdG8gdGhpcyByZXNvdXJjZSBuZWVkIHRvIGJlIHNjcnV0aW5pemVkXG4gICAqXG4gICAqIEBkZWZhdWx0IFJlc291cmNlU2NydXRpbnlUeXBlLk5PTkVcbiAgICovXG4gIHNjcnV0aW5pemFibGU/OiBSZXNvdXJjZVNjcnV0aW55VHlwZTtcblxuICAvKipcbiAgICogQWRkaXRpb25hbCBwYXRocyB0byBwcm9wZXJ0aWVzIHRoYXQgYWxzbyBjYXVzZSByZXBsYWNlbWVudC5cbiAgICpcbiAgICogVGhpcyBpcyB0byBpbmRpY2F0ZSB0aGF0IGNlcnRhaW4gcHJvcGVydHkgcGF0aHMgaW50byB0aGlzIHJlc291cmNlXG4gICAqIHdpbGwgY2F1c2UgcmVwbGFjZW1lbnQ7IG9ubHkgcmVwbGFjZW1lbnRzIHRoYXQgY2Fubm90IGJlIHJlcHJlc2VudGVkXG4gICAqIGJ5IHRhZ2dpbmcgdGhlIHByb3BlcnR5IGluIGEgdHlwZSBkZWZpbml0aW9uIHdpbGwgYmUgaW5jbHVkZWQgaGVyZVxuICAgKiAoZm9yIGV4YW1wbGUsIGJlY2F1c2UgdGhlIHRhZ2dlZCBwcm9wZXJ0eSB3b3VsZCBiZSBpbiBhIHByZWRlZmluZWRcbiAgICogdHlwZSBsaWtlIGB0YWdgKS5cbiAgICpcbiAgICogQWxsIHByb3BlcnRpZXMgaW4gdGhpcyBsaXN0IHNob3VsZCBiZSB0cmVhdGVkIGFzIGBjYXVzZXNSZXBsYWNlbWVudDogJ3llcydgLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtXG4gICAqL1xuICBhZGRpdGlvbmFsUmVwbGFjZW1lbnRQcm9wZXJ0aWVzPzogc3RyaW5nW11bXTtcbn1cblxuZXhwb3J0IHR5cGUgUmVzb3VyY2VQcm9wZXJ0aWVzID0gUmVjb3JkPHN0cmluZywgUHJvcGVydHk+O1xuXG5leHBvcnQgaW50ZXJmYWNlIFR5cGVEZWZpbml0aW9uIGV4dGVuZHMgRW50aXR5IHtcbiAgcmVhZG9ubHkgbmFtZTogc3RyaW5nO1xuICBkb2N1bWVudGF0aW9uPzogc3RyaW5nO1xuICByZWFkb25seSBwcm9wZXJ0aWVzOiBSZXNvdXJjZVByb3BlcnRpZXM7XG5cbiAgLyoqXG4gICAqIElmIHRydWUsIHJlbmRlciB0aGlzIHR5cGUgZXZlbiBpZiBpdCBpcyB1bnVzZWQuXG4gICAqL1xuICBtdXN0UmVuZGVyRm9yQndDb21wYXQ/OiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFByb3BlcnR5IHtcbiAgLyoqXG4gICAqIERlc2NyaXB0aW9uIG9mIHRoZSBwcm9wZXJ0eVxuICAgKi9cbiAgZG9jdW1lbnRhdGlvbj86IHN0cmluZztcblxuICAvKipcbiAgICogSXMgdGhpcyBwcm9wZXJ0eSByZXF1aXJlZFxuICAgKlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVxdWlyZWQ/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBUaGUgY3VycmVudCB0eXBlIG9mIHRoaXMgcHJvcGVydHlcbiAgICovXG4gIHR5cGU6IFByb3BlcnR5VHlwZTtcblxuICAvKipcbiAgICogQW4gb3JkZXJlZCBsaXN0IG9mIHByZXZpb3VzIHR5cGVzIG9mIHRoaXMgcHJvcGVydHkgaW4gYXNjZW5kaW5nIG9yZGVyXG4gICAqXG4gICAqIERvZXMgbm90IGluY2x1ZGUgdGhlIGN1cnJlbnQgdHlwZSwgdXNlIGB0eXBlYCBmb3IgdGhpcy5cbiAgICovXG4gIHByZXZpb3VzVHlwZXM/OiBQcm9wZXJ0eVR5cGVbXTtcblxuICAvKipcbiAgICogQSBzdHJpbmcgcmVwcmVzZW50YXRpb24gdGhlIGRlZmF1bHQgdmFsdWUgb2YgdGhpcyBwcm9wZXJ0eVxuICAgKlxuICAgKiBUaGlzIHZhbHVlIGlzIG5vdCBkaXJlY3RseSBmdW5jdGlvbmFsOyBpdCBkZXNjcmliZXMgaG93IHRoZSB1bmRlcmx5aW5nIHJlc291cmNlXG4gICAqIHdpbGwgYmVoYXZlIGlmIHRoZSB2YWx1ZSBpcyBub3Qgc3BlY2lmaWVkLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIERlZmF1bHQgdW5rbm93blxuICAgKi9cbiAgZGVmYXVsdFZhbHVlPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoaXMgcHJvcGVydHkgaXMgZGVwcmVjYXRlZFxuICAgKlxuICAgKiBAZGVmYXVsdCAtIE5vdCBkZXByZWNhdGVkXG4gICAqL1xuICBkZXByZWNhdGVkPzogRGVwcmVjYXRpb247XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgY2hhbmdlcyB0byB0aGlzIHByb3BlcnR5IG5lZWRzIHRvIGJlIHNjcnV0aW5pemVkIHNwZWNpYWxseVxuICAgKlxuICAgKiBAZGVmYXVsdCBQcm9wZXJ0eVNjcnV0aW55VHlwZS5OT05FXG4gICAqL1xuICBzY3J1dGluaXphYmxlPzogUHJvcGVydHlTY3J1dGlueVR5cGU7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhlIGNvbnRhaW5pbmcgcmVzb3VyY2Ugd2lsbCBiZSByZXBsYWNlZCBpZiB0aGlzIHByb3BlcnR5IGlzIGNoYW5nZWRcbiAgICpcbiAgICogQGRlZmF1bHQgJ25vJ1xuICAgKi9cbiAgY2F1c2VzUmVwbGFjZW1lbnQ/OiAneWVzJyB8ICdubycgfCAnbWF5YmUnO1xufVxuXG5leHBvcnQgY2xhc3MgUmljaFR5cGVkRmllbGQge1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IGZpZWxkOiBQaWNrPFByb3BlcnR5LCAndHlwZScgfCAncHJldmlvdXNUeXBlcyc+KSB7XG4gICAgaWYgKGZpZWxkID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignRmllbGQgaXMgdW5kZWZpbmVkJyk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHR5cGVzKCk6IFByb3BlcnR5VHlwZVtdIHtcbiAgICByZXR1cm4gWy4uLih0aGlzLmZpZWxkLnByZXZpb3VzVHlwZXMgPz8gW10pLCB0aGlzLmZpZWxkLnR5cGVdO1xuICB9XG5cbiAgLyoqXG4gICAqIFVwZGF0ZSB0aGUgdHlwZSBvZiB0aGlzIHByb3BlcnR5IHdpdGggYSBuZXcgdHlwZVxuICAgKlxuICAgKiBPbmx5IGlmIGl0J3Mgbm90IGluIHRoZSBzZXQgb2YgdHlwZXMgYWxyZWFkeS5cbiAgICovXG4gIHB1YmxpYyB1cGRhdGVUeXBlKHR5cGU6IFByb3BlcnR5VHlwZSk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IHJpY2hUeXBlID0gbmV3IFJpY2hQcm9wZXJ0eVR5cGUodHlwZSk7XG5cbiAgICAvLyBPbmx5IGFkZCB0aGlzIHR5cGUgaWYgd2UgZG9uJ3QgYWxyZWFkeSBoYXZlIGl0LiBXZSBhcmUgb25seSBkb2luZyBjb21wYXJpc29ucyB3aGVyZSAnaW50ZWdlcicgYW5kICdudW1iZXInXG4gICAgLy8gYXJlIHRyZWF0ZWQgdGhlIHNhbWUsIGZvciBhbGwgb3RoZXIgdHlwZXMgd2UgbmVlZCBzdHJpY3QgZXF1YWxpdHkuIFdlIHVzZWQgdG8gdXNlICdhc3NpZ25hYmxlVG8nIGFzIGFcbiAgICAvLyBjb25kaXRpb24sIGJ1dCB0aGVzZSB0eXBlcyB3aWxsIGJlIHJlbmRlcmVkIGluIGJvdGggY28tIGFuZCBjb250cmF2YXJpYW50IHBvc2l0aW9ucywgYW5kIHNvIHdlIHJlYWxseSBjYW4ndFxuICAgIC8vIGRvIG11Y2ggYmV0dGVyIHRoYW4gZnVsbCBlcXVhbGl0eS5cbiAgICBpZiAodGhpcy50eXBlcygpLnNvbWUoKHQpID0+IHJpY2hUeXBlLmVxdWFscyh0KSkpIHtcbiAgICAgIC8vIE5vdGhpbmcgdG8gZG8sIHR5cGUgaXMgYWxyZWFkeSBpbiB0aGVyZS5cbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICAvLyBTcGVjaWFsIGNhc2U6IGlmIHRoZSBuZXcgdHlwZSBpcyBgc3RyaW5nYCBhbmQgdGhlIG9sZCB0eXBlIGlzIGBkYXRlLXRpbWVgLCB3ZSBhc3N1bWUgdGhpcyBpc1xuICAgIC8vIHRoZSBzYW1lIHR5cGUgYnV0IHdlIGRyb3BwZWQgc29tZSBmb3JtYXR0aW5nIGluZm9ybWF0aW9uLiBObyBuZWVkIHRvIG1ha2UgdGhpcyBhIHNlcGFyYXRlIHR5cGUuXG4gICAgaWYgKHR5cGUudHlwZSA9PT0gJ3N0cmluZycgJiYgdGhpcy50eXBlcygpLnNvbWUoKHQpID0+IHQudHlwZSA9PT0gJ2RhdGUtdGltZScpKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLmZpZWxkLnByZXZpb3VzVHlwZXMpIHtcbiAgICAgIHRoaXMuZmllbGQucHJldmlvdXNUeXBlcyA9IFtdO1xuICAgIH1cbiAgICB0aGlzLmZpZWxkLnByZXZpb3VzVHlwZXMucHVzaCh0aGlzLmZpZWxkLnR5cGUpO1xuICAgIHRoaXMuZmllbGQudHlwZSA9IHR5cGU7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIFJpY2hQcm9wZXJ0eSBleHRlbmRzIFJpY2hUeXBlZEZpZWxkIHtcbiAgY29uc3RydWN0b3IocHJvcGVydHk6IFByb3BlcnR5KSB7XG4gICAgc3VwZXIocHJvcGVydHkpO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBSaWNoQXR0cmlidXRlIGV4dGVuZHMgUmljaFR5cGVkRmllbGQge1xuICBjb25zdHJ1Y3RvcihhdHRyOiBBdHRyaWJ1dGUpIHtcbiAgICBzdXBlcihhdHRyKTtcbiAgfVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIEF0dHJpYnV0ZSB7XG4gIGRvY3VtZW50YXRpb24/OiBzdHJpbmc7XG4gIHR5cGU6IFByb3BlcnR5VHlwZTtcbiAgLyoqXG4gICAqIEFuIG9yZGVyZWQgbGlzdCBvZiBwcmV2aW91cyB0eXBlcyBvZiB0aGlzIHByb3BlcnR5IGluIGFzY2VuZGluZyBvcmRlclxuICAgKlxuICAgKiBEb2VzIG5vdCBpbmNsdWRlIHRoZSBjdXJyZW50IHR5cGUsIHVzZSBgdHlwZWAgZm9yIHRoaXMuXG4gICAqL1xuICBwcmV2aW91c1R5cGVzPzogUHJvcGVydHlUeXBlW107XG59XG5cbmV4cG9ydCBlbnVtIERlcHJlY2F0aW9uIHtcbiAgLyoqXG4gICAqIE5vdCBkZXByZWNhdGVkXG4gICAqL1xuICBOT05FID0gJ05PTkUnLFxuXG4gIC8qKlxuICAgKiBXYXJuIGFib3V0IHVzZVxuICAgKi9cbiAgV0FSTiA9ICdXQVJOJyxcblxuICAvKipcbiAgICogRG8gbm90IGVtaXQgdGhlIHZhbHVlIGF0IGFsbFxuICAgKlxuICAgKiAoSGFuZGxlIHByb3BlcnRpZXMgdGhhdCB3ZXJlIGluY29ycmVjdGx5IGFkZGVkIHRvIHRoZSBzcGVjKVxuICAgKi9cbiAgSUdOT1JFID0gJ0lHTk9SRScsXG59XG5cbmV4cG9ydCB0eXBlIFByb3BlcnR5VHlwZSA9XG4gIHwgUHJpbWl0aXZlVHlwZVxuICB8IERlZmluaXRpb25SZWZlcmVuY2VcbiAgfCBCdWlsdGluVGFnVHlwZVxuICB8IEFycmF5VHlwZTxQcm9wZXJ0eVR5cGU+XG4gIHwgTWFwVHlwZTxQcm9wZXJ0eVR5cGU+XG4gIHwgVHlwZVVuaW9uPFByb3BlcnR5VHlwZT47XG5cbmV4cG9ydCB0eXBlIFByaW1pdGl2ZVR5cGUgPVxuICB8IFN0cmluZ1R5cGVcbiAgfCBOdW1iZXJUeXBlXG4gIHwgSW50ZWdlclR5cGVcbiAgfCBCb29sZWFuVHlwZVxuICB8IEpzb25UeXBlXG4gIHwgRGF0ZVRpbWVUeXBlXG4gIHwgTnVsbFR5cGVcbiAgfCBCdWlsdGluVGFnVHlwZTtcblxuZXhwb3J0IGZ1bmN0aW9uIGlzQ29sbGVjdGlvblR5cGUoeDogUHJvcGVydHlUeXBlKTogeCBpcyBBcnJheVR5cGU8YW55PiB8IE1hcFR5cGU8YW55PiB7XG4gIHJldHVybiB4LnR5cGUgPT09ICdhcnJheScgfHwgeC50eXBlID09PSAnbWFwJztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBUYWdJbmZvcm1hdGlvbiB7XG4gIC8qKlxuICAgKiBOYW1lIG9mIHRoZSBwcm9wZXJ0eSB0aGF0IGhvbGRzIHRoZSB0YWdzXG4gICAqL1xuICByZWFkb25seSB0YWdQcm9wZXJ0eU5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogVXNlZCB0byBpbnN0cnVjdCBjZGsuVGFnTWFuYWdlciBob3cgdG8gaGFuZGxlIHRhZ3NcbiAgICovXG4gIHJlYWRvbmx5IHZhcmlhbnQ6IFRhZ1ZhcmlhbnQ7XG59XG5cbmV4cG9ydCB0eXBlIFRhZ1ZhcmlhbnQgPSAnc3RhbmRhcmQnIHwgJ2FzZycgfCAnbWFwJztcblxuZXhwb3J0IGludGVyZmFjZSBTdHJpbmdUeXBlIHtcbiAgcmVhZG9ubHkgdHlwZTogJ3N0cmluZyc7XG59XG5leHBvcnQgaW50ZXJmYWNlIEJ1aWx0aW5UYWdUeXBlIHtcbiAgcmVhZG9ubHkgdHlwZTogJ3RhZyc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTnVtYmVyVHlwZSB7XG4gIHJlYWRvbmx5IHR5cGU6ICdudW1iZXInO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEludGVnZXJUeXBlIHtcbiAgcmVhZG9ubHkgdHlwZTogJ2ludGVnZXInO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEJvb2xlYW5UeXBlIHtcbiAgcmVhZG9ubHkgdHlwZTogJ2Jvb2xlYW4nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEpzb25UeXBlIHtcbiAgcmVhZG9ubHkgdHlwZTogJ2pzb24nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE51bGxUeXBlIHtcbiAgcmVhZG9ubHkgdHlwZTogJ251bGwnO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIERhdGVUaW1lVHlwZSB7XG4gIHJlYWRvbmx5IHR5cGU6ICdkYXRlLXRpbWUnO1xufVxuXG4vKipcbiAqIFRoZSBcImxlZ2FjeVwiIHRhZyB0eXBlICh1c2VkIGluIHRoZSBvbGQgcmVzb3VyY2Ugc3BlYylcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBCdWlsdGluVGFnVHlwZSB7XG4gIHJlYWRvbmx5IHR5cGU6ICd0YWcnO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIERlZmluaXRpb25SZWZlcmVuY2Uge1xuICByZWFkb25seSB0eXBlOiAncmVmJztcbiAgcmVhZG9ubHkgcmVmZXJlbmNlOiBSZWZlcmVuY2U8VHlwZURlZmluaXRpb24+O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFycmF5VHlwZTxFPiB7XG4gIHJlYWRvbmx5IHR5cGU6ICdhcnJheSc7XG4gIHJlYWRvbmx5IGVsZW1lbnQ6IEU7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTWFwVHlwZTxFPiB7XG4gIHJlYWRvbmx5IHR5cGU6ICdtYXAnO1xuICByZWFkb25seSBlbGVtZW50OiBFO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFR5cGVVbmlvbjxFPiB7XG4gIHJlYWRvbmx5IHR5cGU6ICd1bmlvbic7XG4gIHJlYWRvbmx5IHR5cGVzOiBFW107XG59XG5cbmV4cG9ydCB0eXBlIEhhc1Jlc291cmNlID0gUmVsYXRpb25zaGlwPFNlcnZpY2UsIFJlc291cmNlPjtcbmV4cG9ydCB0eXBlIFJlZ2lvbkhhc1Jlc291cmNlID0gUmVsYXRpb25zaGlwPFJlZ2lvbiwgUmVzb3VyY2U+O1xuZXhwb3J0IHR5cGUgUmVnaW9uSGFzU2VydmljZSA9IFJlbGF0aW9uc2hpcDxSZWdpb24sIFNlcnZpY2U+O1xuZXhwb3J0IHR5cGUgUmVzb3VyY2VEb2MgPSBSZWxhdGlvbnNoaXA8UmVzb3VyY2UsIERvY3VtZW50YXRpb24+O1xuXG5leHBvcnQgdHlwZSBTZXJ2aWNlSW5SZWdpb24gPSBSZWxhdGlvbnNoaXA8UmVnaW9uLCBTZXJ2aWNlPjtcbmV4cG9ydCB0eXBlIFJlc291cmNlSW5SZWdpb24gPSBSZWxhdGlvbnNoaXA8UmVnaW9uLCBSZXNvdXJjZT47XG5cbmV4cG9ydCB0eXBlIFVzZXNUeXBlID0gUmVsYXRpb25zaGlwPFJlc291cmNlLCBUeXBlRGVmaW5pdGlvbj47XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVzb3VyY2VJZGVudGlmaWVyIGV4dGVuZHMgRW50aXR5IHtcbiAgcmVhZG9ubHkgYXJuVGVtcGxhdGU/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IHByaW1hcnlJZGVudGlmaWVyPzogc3RyaW5nW107XG59XG5cbi8qKlxuICogTWFyayBhIHJlc291cmNlIGFzIGEgcmVzb3VyY2UgdGhhdCBuZWVkcyBhZGRpdGlvbmFsIHNjcnV0aXkgd2hlbiBhZGRlZCwgcmVtb3ZlZCBvciBjaGFuZ2VkXG4gKlxuICogVXNlZCB0byBtYXJrIHJlc291cmNlcyB0aGF0IHJlcHJlc2VudCBzZWN1cml0eSBwb2xpY2llcy5cbiAqL1xuZXhwb3J0IGVudW0gUmVzb3VyY2VTY3J1dGlueVR5cGUge1xuICAvKipcbiAgICogTm8gYWRkaXRpb25hbCBzY3J1dGlueVxuICAgKi9cbiAgTm9uZSA9ICdOb25lJyxcblxuICAvKipcbiAgICogQW4gZXh0ZXJuYWxseSBhdHRhY2hlZCBwb2xpY3kgZG9jdW1lbnQgdG8gYSByZXNvdXJjZVxuICAgKlxuICAgKiAoQ29tbW9uIGZvciBTUVMsIFNOUywgUzMsIC4uLilcbiAgICovXG4gIFJlc291cmNlUG9saWN5UmVzb3VyY2UgPSAnUmVzb3VyY2VQb2xpY3lSZXNvdXJjZScsXG5cbiAgLyoqXG4gICAqIFRoaXMgaXMgYW4gSUFNIHBvbGljeSBvbiBhbiBpZGVudGl0eSByZXNvdXJjZVxuICAgKlxuICAgKiAoQmFzaWNhbGx5IHNheWluZzogdGhpcyBpcyBBV1M6OklBTTo6UG9saWN5KVxuICAgKi9cbiAgSWRlbnRpdHlQb2xpY3lSZXNvdXJjZSA9ICdJZGVudGl0eVBvbGljeVJlc291cmNlJyxcblxuICAvKipcbiAgICogVGhpcyBpcyBhIExhbWJkYSBQZXJtaXNzaW9uIHBvbGljeVxuICAgKi9cbiAgTGFtYmRhUGVybWlzc2lvbiA9ICdMYW1iZGFQZXJtaXNzaW9uJyxcblxuICAvKipcbiAgICogQW4gaW5ncmVzcyBydWxlIG9iamVjdFxuICAgKi9cbiAgSW5ncmVzc1J1bGVSZXNvdXJjZSA9ICdJbmdyZXNzUnVsZVJlc291cmNlJyxcblxuICAvKipcbiAgICogQSBzZXQgb2YgZWdyZXNzIHJ1bGVzXG4gICAqL1xuICBFZ3Jlc3NSdWxlUmVzb3VyY2UgPSAnRWdyZXNzUnVsZVJlc291cmNlJyxcblxuICAvKipcbiAgICogQVdTOjpTU086OkFzc2lnbm1lbnRcbiAgICpcbiAgICogSUFNIElkZW50aXR5IENlbnRlciAoZm9ybWVybHkga25vd24gYXMgU1NPKVxuICAgKi9cbiAgU3NvQXNzaWdubWVudFJlc291cmNlID0gJ1Nzb0Fzc2lnbm1lbnRSZXNvdXJjZScsXG5cbiAgLyoqXG4gICAqIEFXUzo6U1NPOjpJbnN0YW5jZUFjY2Vzc0NvbnRyb2xBdHRyaWJ1dGVDb25maWd1cmF0aW9uXG4gICAqXG4gICAqIElBTSBJZGVudGl0eSBDZW50ZXIgKGZvcm1lcmx5IGtub3duIGFzIFNTTylcbiAgICovXG4gIFNzb0luc3RhbmNlQUNBQ29uZmlnUmVzb3VyY2UgPSAnU3NvSW5zdGFuY2VBQ0FDb25maWdSZXNvdXJjZScsXG5cbiAgLyoqXG4gICAqIEFXUzo6U1NPOjpQZXJtaXNzaW9uU2V0XG4gICAqXG4gICAqIElBTSBJZGVudGl0eSBDZW50ZXIgKGZvcm1lcmx5IGtub3duIGFzIFNTTylcbiAgICovXG4gIFNzb1Blcm1pc3Npb25TZXQgPSAnU3NvUGVybWlzc2lvblNldCcsXG59XG5cbi8qKlxuICogTWFyayBhIHByb3BlcnR5IGFzIGEgcHJvcGVydHkgdGhhdCBuZWVkcyBhZGRpdGlvbmFsIHNjcnV0aW55IHdoZW4gaXQgY2hhbmdlc1xuICpcbiAqIFVzZWQgdG8gbWFyayBzZW5zaXRpdmUgcHJvcGVydGllcyB0aGF0IGhhdmUgc2VjdXJpdHktcmVsYXRlZCBpbXBsaWNhdGlvbnMuXG4gKi9cbmV4cG9ydCBlbnVtIFByb3BlcnR5U2NydXRpbnlUeXBlIHtcbiAgLyoqXG4gICAqIE5vIGFkZGl0aW9uYWwgc2NydXRpbnlcbiAgICovXG4gIE5vbmUgPSAnTm9uZScsXG5cbiAgLyoqXG4gICAqIFRoaXMgaXMgYW4gSUFNIHBvbGljeSBkaXJlY3RseSBvbiBhIHJlc291cmNlXG4gICAqL1xuICBJbmxpbmVSZXNvdXJjZVBvbGljeSA9ICdJbmxpbmVSZXNvdXJjZVBvbGljeScsXG5cbiAgLyoqXG4gICAqIEVpdGhlciBhbiBBc3N1bWVSb2xlUG9saWN5RG9jdW1lbnQgb3IgYSBkaWN0aW9uYXJ5IG9mIHBvbGljeSBkb2N1bWVudHNcbiAgICovXG4gIElubGluZUlkZW50aXR5UG9saWNpZXMgPSAnSW5saW5lSWRlbnRpdHlQb2xpY2llcycsXG5cbiAgLyoqXG4gICAqIEEgbGlzdCBvZiBtYW5hZ2VkIHBvbGljaWVzIChvbiBhbiBpZGVudGl0eSByZXNvdXJjZSlcbiAgICovXG4gIE1hbmFnZWRQb2xpY2llcyA9ICdNYW5hZ2VkUG9saWNpZXMnLFxuXG4gIC8qKlxuICAgKiBBIHNldCBvZiBpbmdyZXNzIHJ1bGVzIChvbiBhIHNlY3VyaXR5IGdyb3VwKVxuICAgKi9cbiAgSW5ncmVzc1J1bGVzID0gJ0luZ3Jlc3NSdWxlcycsXG5cbiAgLyoqXG4gICAqIEEgc2V0IG9mIGVncmVzcyBydWxlcyAob24gYSBzZWN1cml0eSBncm91cClcbiAgICovXG4gIEVncmVzc1J1bGVzID0gJ0VncmVzc1J1bGVzJyxcbn1cblxuZXhwb3J0IGNsYXNzIFJpY2hQcm9wZXJ0eVR5cGUge1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IHR5cGU6IFByb3BlcnR5VHlwZSkge31cblxuICBwdWJsaWMgZXF1YWxzKHJoczogUHJvcGVydHlUeXBlKTogYm9vbGVhbiB7XG4gICAgc3dpdGNoICh0aGlzLnR5cGUudHlwZSkge1xuICAgICAgY2FzZSAnaW50ZWdlcic6XG4gICAgICBjYXNlICdib29sZWFuJzpcbiAgICAgIGNhc2UgJ2RhdGUtdGltZSc6XG4gICAgICBjYXNlICdqc29uJzpcbiAgICAgIGNhc2UgJ251bGwnOlxuICAgICAgY2FzZSAnbnVtYmVyJzpcbiAgICAgIGNhc2UgJ3N0cmluZyc6XG4gICAgICBjYXNlICd0YWcnOlxuICAgICAgICByZXR1cm4gcmhzLnR5cGUgPT09IHRoaXMudHlwZS50eXBlO1xuICAgICAgY2FzZSAnYXJyYXknOlxuICAgICAgY2FzZSAnbWFwJzpcbiAgICAgICAgcmV0dXJuIHJocy50eXBlID09PSB0aGlzLnR5cGUudHlwZSAmJiBuZXcgUmljaFByb3BlcnR5VHlwZSh0aGlzLnR5cGUuZWxlbWVudCkuZXF1YWxzKHJocy5lbGVtZW50KTtcbiAgICAgIGNhc2UgJ3JlZic6XG4gICAgICAgIHJldHVybiByaHMudHlwZSA9PT0gJ3JlZicgJiYgdGhpcy50eXBlLnJlZmVyZW5jZS4kcmVmID09PSByaHMucmVmZXJlbmNlLiRyZWY7XG4gICAgICBjYXNlICd1bmlvbic6XG4gICAgICAgIGNvbnN0IGxoc0tleSA9IHRoaXMuc29ydEtleSgpO1xuICAgICAgICBjb25zdCByaHNLZXkgPSBuZXcgUmljaFByb3BlcnR5VHlwZShyaHMpLnNvcnRLZXkoKTtcbiAgICAgICAgcmV0dXJuIGxoc0tleS5sZW5ndGggPT09IHJoc0tleS5sZW5ndGggJiYgbGhzS2V5LmV2ZXJ5KChsLCBpKSA9PiBsID09PSByaHNLZXlbaV0pO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoZSBjdXJyZW50IHR5cGUgaXMgSmF2YVNjcmlwdC1lcXVhbCB0byB0aGUgUkhTIHR5cGVcbiAgICpcbiAgICogU2FtZSBhcyBub3JtYWwgZXF1YWxpdHksIGJ1dCBjb25zaWRlciBgaW50ZWdlcmAgYW5kIGBudW1iZXJgIHRoZSBzYW1lIHR5cGVzLlxuICAgKi9cbiAgcHVibGljIGphdmFzY3JpcHRFcXVhbHMocmhzOiBQcm9wZXJ0eVR5cGUpOiBib29sZWFuIHtcbiAgICBzd2l0Y2ggKHRoaXMudHlwZS50eXBlKSB7XG4gICAgICBjYXNlICdudW1iZXInOlxuICAgICAgY2FzZSAnaW50ZWdlcic6XG4gICAgICAgIC8vIFdpZGVuaW5nXG4gICAgICAgIHJldHVybiByaHMudHlwZSA9PT0gJ2ludGVnZXInIHx8IHJocy50eXBlID09PSAnbnVtYmVyJztcblxuICAgICAgY2FzZSAnYXJyYXknOlxuICAgICAgY2FzZSAnbWFwJzpcbiAgICAgICAgcmV0dXJuIHJocy50eXBlID09PSB0aGlzLnR5cGUudHlwZSAmJiBuZXcgUmljaFByb3BlcnR5VHlwZSh0aGlzLnR5cGUuZWxlbWVudCkuamF2YXNjcmlwdEVxdWFscyhyaHMuZWxlbWVudCk7XG5cbiAgICAgIGNhc2UgJ3VuaW9uJzpcbiAgICAgICAgaWYgKHJocy50eXBlICE9PSAndW5pb24nKSB7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIC8vIEV2ZXJ5IHR5cGUgaW4gdGhpcyB1bmlvbiBuZWVkcyB0byBiZSBlcXVhbCBvbmUgdHlwZSBpbiBSSFNcbiAgICAgICAgcmV0dXJuIHRoaXMudHlwZS50eXBlcy5ldmVyeSgodDEpID0+IHJocy50eXBlcy5zb21lKCh0MikgPT4gbmV3IFJpY2hQcm9wZXJ0eVR5cGUodDEpLmphdmFzY3JpcHRFcXVhbHModDIpKSk7XG5cbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIC8vIEZvciBhbnl0aGluZyBlbHNlLCBuZWVkIHN0cmljdCBlcXVhbGl0eVxuICAgICAgICByZXR1cm4gdGhpcy5lcXVhbHMocmhzKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogV2hldGhlciB0aGUgY3VycmVudCB0eXBlIGlzIGFzc2lnbmFibGUgdG8gdGhlIFJIUyB0eXBlLlxuICAgKlxuICAgKiBUaGlzIGlzIG1lYW5zIGV2ZXJ5IHR5cGUgbWVtYmVyIG9mIHRoZSBMSFMgbXVzdCBiZSBwcmVzZW50IGluIHRoZSBSSFMgdHlwZVxuICAgKi9cbiAgcHVibGljIGFzc2lnbmFibGVUbyhyaHM6IFByb3BlcnR5VHlwZSk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGV4dHJhY3RNZW1iZXJzID0gKHR5cGU6IFByb3BlcnR5VHlwZSk6IFByb3BlcnR5VHlwZVtdID0+ICh0eXBlLnR5cGUgPT0gJ3VuaW9uJyA/IHR5cGUudHlwZXMgOiBbdHlwZV0pO1xuICAgIGNvbnN0IGFzUmljaFR5cGUgPSAodHlwZTogUHJvcGVydHlUeXBlKTogUmljaFByb3BlcnR5VHlwZSA9PiBuZXcgUmljaFByb3BlcnR5VHlwZSh0eXBlKTtcblxuICAgIGNvbnN0IHJoc01lbWJlcnMgPSBleHRyYWN0TWVtYmVycyhyaHMpO1xuICAgIGZvciAoY29uc3QgbGhzTWVtYmVyIG9mIGV4dHJhY3RNZW1iZXJzKHRoaXMudHlwZSkubWFwKGFzUmljaFR5cGUpKSB7XG4gICAgICBpZiAoIXJoc01lbWJlcnMuc29tZSgodHlwZSkgPT4gbGhzTWVtYmVyLmVxdWFscyh0eXBlKSkpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybiBhIHZlcnNpb24gb2YgdGhpcyB0eXBlLCBidXQgd2l0aCBhbGwgdHlwZSB1bmlvbnMgaW4gYSByZWd1bGFyaXplZCBvcmRlclxuICAgKi9cbiAgcHVibGljIG5vcm1hbGl6ZShkYjogU3BlY0RhdGFiYXNlKTogUmljaFByb3BlcnR5VHlwZSB7XG4gICAgc3dpdGNoICh0aGlzLnR5cGUudHlwZSkge1xuICAgICAgY2FzZSAnYXJyYXknOlxuICAgICAgY2FzZSAnbWFwJzpcbiAgICAgICAgcmV0dXJuIG5ldyBSaWNoUHJvcGVydHlUeXBlKHtcbiAgICAgICAgICB0eXBlOiB0aGlzLnR5cGUudHlwZSxcbiAgICAgICAgICBlbGVtZW50OiBuZXcgUmljaFByb3BlcnR5VHlwZSh0aGlzLnR5cGUuZWxlbWVudCkubm9ybWFsaXplKGRiKS50eXBlLFxuICAgICAgICB9KTtcbiAgICAgIGNhc2UgJ3VuaW9uJzpcbiAgICAgICAgY29uc3QgdHlwZXMgPSB0aGlzLnR5cGUudHlwZXNcbiAgICAgICAgICAubWFwKCh0KSA9PiBuZXcgUmljaFByb3BlcnR5VHlwZSh0KS5ub3JtYWxpemUoZGIpKVxuICAgICAgICAgIC5tYXAoKHQpID0+IFt0LCB0LnNvcnRLZXkoZGIpXSBhcyBjb25zdCk7XG4gICAgICAgIHR5cGVzLnNvcnQoc29ydEtleUNvbXBhcmF0b3IoKFtfLCBzb3J0S2V5XSkgPT4gc29ydEtleSkpO1xuICAgICAgICByZXR1cm4gbmV3IFJpY2hQcm9wZXJ0eVR5cGUoe1xuICAgICAgICAgIHR5cGU6ICd1bmlvbicsXG4gICAgICAgICAgdHlwZXM6IHR5cGVzLm1hcCgoW3QsIF9dKSA9PiB0LnR5cGUpLFxuICAgICAgICB9KTtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBzdHJpbmdpZnkoZGI6IFNwZWNEYXRhYmFzZSwgd2l0aElkID0gdHJ1ZSk6IHN0cmluZyB7XG4gICAgc3dpdGNoICh0aGlzLnR5cGUudHlwZSkge1xuICAgICAgY2FzZSAnaW50ZWdlcic6XG4gICAgICBjYXNlICdib29sZWFuJzpcbiAgICAgIGNhc2UgJ2RhdGUtdGltZSc6XG4gICAgICBjYXNlICdqc29uJzpcbiAgICAgIGNhc2UgJ251bGwnOlxuICAgICAgY2FzZSAnbnVtYmVyJzpcbiAgICAgIGNhc2UgJ3N0cmluZyc6XG4gICAgICBjYXNlICd0YWcnOlxuICAgICAgICByZXR1cm4gdGhpcy50eXBlLnR5cGU7XG4gICAgICBjYXNlICdhcnJheSc6XG4gICAgICAgIHJldHVybiBgQXJyYXk8JHtuZXcgUmljaFByb3BlcnR5VHlwZSh0aGlzLnR5cGUuZWxlbWVudCkuc3RyaW5naWZ5KGRiLCB3aXRoSWQpfT5gO1xuICAgICAgY2FzZSAnbWFwJzpcbiAgICAgICAgcmV0dXJuIGBNYXA8c3RyaW5nLCAke25ldyBSaWNoUHJvcGVydHlUeXBlKHRoaXMudHlwZS5lbGVtZW50KS5zdHJpbmdpZnkoZGIsIHdpdGhJZCl9PmA7XG4gICAgICBjYXNlICdyZWYnOlxuICAgICAgICBjb25zdCB0eXBlID0gZGIuZ2V0KCd0eXBlRGVmaW5pdGlvbicsIHRoaXMudHlwZS5yZWZlcmVuY2UpO1xuICAgICAgICByZXR1cm4gd2l0aElkID8gYCR7dHlwZS5uYW1lfSgke3RoaXMudHlwZS5yZWZlcmVuY2UuJHJlZn0pYCA6IHR5cGUubmFtZTtcbiAgICAgIGNhc2UgJ3VuaW9uJzpcbiAgICAgICAgcmV0dXJuIHRoaXMudHlwZS50eXBlcy5tYXAoKHQpID0+IG5ldyBSaWNoUHJvcGVydHlUeXBlKHQpLnN0cmluZ2lmeShkYiwgd2l0aElkKSkuam9pbignIHwgJyk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybiBhIHNvcnRhYmxlIGtleSBiYXNlZCBvbiB0aGlzIHR5cGVcbiAgICpcbiAgICogSWYgYSBkYXRhYmFzZSBpcyBnaXZlbiwgdHlwZSBkZWZpbml0aW9ucyB3aWxsIGJlIHNvcnRlZCBiYXNlZCBvbiB0eXBlIG5hbWUsXG4gICAqIG90aGVyd2lzZSBvbiBpZGVudGlmaWVyXG4gICAqL1xuICBwdWJsaWMgc29ydEtleShkYj86IFNwZWNEYXRhYmFzZSk6IHN0cmluZ1tdIHtcbiAgICBzd2l0Y2ggKHRoaXMudHlwZS50eXBlKSB7XG4gICAgICBjYXNlICdpbnRlZ2VyJzpcbiAgICAgIGNhc2UgJ2Jvb2xlYW4nOlxuICAgICAgY2FzZSAnZGF0ZS10aW1lJzpcbiAgICAgIGNhc2UgJ2pzb24nOlxuICAgICAgY2FzZSAnbnVsbCc6XG4gICAgICBjYXNlICdudW1iZXInOlxuICAgICAgY2FzZSAnc3RyaW5nJzpcbiAgICAgIGNhc2UgJ3RhZyc6XG4gICAgICAgIHJldHVybiBbJzAnLCB0aGlzLnR5cGUudHlwZV07XG4gICAgICBjYXNlICdhcnJheSc6XG4gICAgICBjYXNlICdtYXAnOlxuICAgICAgICByZXR1cm4gWycxJywgdGhpcy50eXBlLnR5cGUsIC4uLm5ldyBSaWNoUHJvcGVydHlUeXBlKHRoaXMudHlwZS5lbGVtZW50KS5zb3J0S2V5KGRiKV07XG4gICAgICBjYXNlICdyZWYnOlxuICAgICAgICByZXR1cm4gWycyJywgdGhpcy50eXBlLnR5cGUsIGRiPy5nZXQoJ3R5cGVEZWZpbml0aW9uJywgdGhpcy50eXBlLnJlZmVyZW5jZSk/Lm5hbWUgPz8gdGhpcy50eXBlLnJlZmVyZW5jZS4kcmVmXTtcbiAgICAgIGNhc2UgJ3VuaW9uJzpcbiAgICAgICAgY29uc3QgdHlwZUtleXMgPSB0aGlzLnR5cGUudHlwZXMubWFwKCh0KSA9PiBuZXcgUmljaFByb3BlcnR5VHlwZSh0KS5zb3J0S2V5KGRiKSk7XG4gICAgICAgIHR5cGVLZXlzLnNvcnQoc29ydEtleUNvbXBhcmF0b3IoKHgpID0+IHgpKTtcbiAgICAgICAgcmV0dXJuIFsnMycsIHRoaXMudHlwZS50eXBlLCAuLi50eXBlS2V5cy5mbGF0TWFwKCh4KSA9PiB4KV07XG4gICAgfVxuICB9XG59XG4iXX0=","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.sortKeyComparator = void 0;\n/**\n * Make a sorting comparator that will sort by a given sort key\n */\nfunction sortKeyComparator(keyFn) {\n return (a, b) => {\n const ak = keyFn(a);\n const bk = keyFn(b);\n for (let i = 0; i < ak.length && i < bk.length; i++) {\n const av = ak[i];\n const bv = bk[i];\n let diff = 0;\n if (typeof av === 'number' && typeof bv === 'number') {\n diff = av - bv;\n }\n else if (typeof av === 'string' && typeof bv === 'string') {\n diff = av.localeCompare(bv);\n }\n if (diff !== 0) {\n return diff;\n }\n }\n return bk.length - ak.length;\n };\n}\nexports.sortKeyComparator = sortKeyComparator;\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic29ydGluZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsL3NvcnRpbmcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUE7O0dBRUc7QUFDSCxTQUFnQixpQkFBaUIsQ0FBSSxLQUF1QztJQUMxRSxPQUFPLENBQUMsQ0FBSSxFQUFFLENBQUksRUFBVSxFQUFFO1FBQzVCLE1BQU0sRUFBRSxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNwQixNQUFNLEVBQUUsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFFcEIsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxNQUFNLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7WUFDbkQsTUFBTSxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ2pCLE1BQU0sRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUVqQixJQUFJLElBQUksR0FBRyxDQUFDLENBQUM7WUFDYixJQUFJLE9BQU8sRUFBRSxLQUFLLFFBQVEsSUFBSSxPQUFPLEVBQUUsS0FBSyxRQUFRLEVBQUU7Z0JBQ3BELElBQUksR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDO2FBQ2hCO2lCQUFNLElBQUksT0FBTyxFQUFFLEtBQUssUUFBUSxJQUFJLE9BQU8sRUFBRSxLQUFLLFFBQVEsRUFBRTtnQkFDM0QsSUFBSSxHQUFHLEVBQUUsQ0FBQyxhQUFhLENBQUMsRUFBRSxDQUFDLENBQUM7YUFDN0I7WUFFRCxJQUFJLElBQUksS0FBSyxDQUFDLEVBQUU7Z0JBQ2QsT0FBTyxJQUFJLENBQUM7YUFDYjtTQUNGO1FBRUQsT0FBTyxFQUFFLENBQUMsTUFBTSxHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUM7SUFDL0IsQ0FBQyxDQUFDO0FBQ0osQ0FBQztBQXZCRCw4Q0F1QkMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIE1ha2UgYSBzb3J0aW5nIGNvbXBhcmF0b3IgdGhhdCB3aWxsIHNvcnQgYnkgYSBnaXZlbiBzb3J0IGtleVxuICovXG5leHBvcnQgZnVuY3Rpb24gc29ydEtleUNvbXBhcmF0b3I8QT4oa2V5Rm46ICh4OiBBKSA9PiBBcnJheTxzdHJpbmcgfCBudW1iZXI+KSB7XG4gIHJldHVybiAoYTogQSwgYjogQSk6IG51bWJlciA9PiB7XG4gICAgY29uc3QgYWsgPSBrZXlGbihhKTtcbiAgICBjb25zdCBiayA9IGtleUZuKGIpO1xuXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhay5sZW5ndGggJiYgaSA8IGJrLmxlbmd0aDsgaSsrKSB7XG4gICAgICBjb25zdCBhdiA9IGFrW2ldO1xuICAgICAgY29uc3QgYnYgPSBia1tpXTtcblxuICAgICAgbGV0IGRpZmYgPSAwO1xuICAgICAgaWYgKHR5cGVvZiBhdiA9PT0gJ251bWJlcicgJiYgdHlwZW9mIGJ2ID09PSAnbnVtYmVyJykge1xuICAgICAgICBkaWZmID0gYXYgLSBidjtcbiAgICAgIH0gZWxzZSBpZiAodHlwZW9mIGF2ID09PSAnc3RyaW5nJyAmJiB0eXBlb2YgYnYgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIGRpZmYgPSBhdi5sb2NhbGVDb21wYXJlKGJ2KTtcbiAgICAgIH1cblxuICAgICAgaWYgKGRpZmYgIT09IDApIHtcbiAgICAgICAgcmV0dXJuIGRpZmY7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGJrLmxlbmd0aCAtIGFrLmxlbmd0aDtcbiAgfTtcbn1cbiJdfQ==","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.resolveHttpAuthSchemeConfig = exports.defaultCloudFormationHttpAuthSchemeProvider = exports.defaultCloudFormationHttpAuthSchemeParametersProvider = void 0;\nconst core_1 = require(\"@aws-sdk/core\");\nconst util_middleware_1 = require(\"@smithy/util-middleware\");\nconst defaultCloudFormationHttpAuthSchemeParametersProvider = async (config, context, input) => {\n return {\n operation: (0, util_middleware_1.getSmithyContext)(context).operation,\n region: (await (0, util_middleware_1.normalizeProvider)(config.region)()) ||\n (() => {\n throw new Error(\"expected `region` to be configured for `aws.auth#sigv4`\");\n })(),\n };\n};\nexports.defaultCloudFormationHttpAuthSchemeParametersProvider = defaultCloudFormationHttpAuthSchemeParametersProvider;\nfunction createAwsAuthSigv4HttpAuthOption(authParameters) {\n return {\n schemeId: \"aws.auth#sigv4\",\n signingProperties: {\n name: \"cloudformation\",\n region: authParameters.region,\n },\n propertiesExtractor: (config, context) => ({\n signingProperties: {\n config,\n context,\n },\n }),\n };\n}\nconst defaultCloudFormationHttpAuthSchemeProvider = (authParameters) => {\n const options = [];\n switch (authParameters.operation) {\n default: {\n options.push(createAwsAuthSigv4HttpAuthOption(authParameters));\n }\n }\n return options;\n};\nexports.defaultCloudFormationHttpAuthSchemeProvider = defaultCloudFormationHttpAuthSchemeProvider;\nconst resolveHttpAuthSchemeConfig = (config) => {\n const config_0 = (0, core_1.resolveAwsSdkSigV4Config)(config);\n return {\n ...config_0,\n };\n};\nexports.resolveHttpAuthSchemeConfig = resolveHttpAuthSchemeConfig;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.defaultEndpointResolver = void 0;\nconst util_endpoints_1 = require(\"@aws-sdk/util-endpoints\");\nconst util_endpoints_2 = require(\"@smithy/util-endpoints\");\nconst ruleset_1 = require(\"./ruleset\");\nconst cache = new util_endpoints_2.EndpointCache({\n size: 50,\n params: [\"Endpoint\", \"Region\", \"UseDualStack\", \"UseFIPS\"],\n});\nconst defaultEndpointResolver = (endpointParams, context = {}) => {\n return cache.get(endpointParams, () => (0, util_endpoints_2.resolveEndpoint)(ruleset_1.ruleSet, {\n endpointParams: endpointParams,\n logger: context.logger,\n }));\n};\nexports.defaultEndpointResolver = defaultEndpointResolver;\nutil_endpoints_2.customEndpointFunctions.aws = util_endpoints_1.awsEndpointFunctions;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ruleSet = void 0;\nconst u = \"required\", v = \"fn\", w = \"argv\", x = \"ref\";\nconst a = true, b = \"isSet\", c = \"booleanEquals\", d = \"error\", e = \"endpoint\", f = \"tree\", g = \"PartitionResult\", h = \"getAttr\", i = { [u]: false, \"type\": \"String\" }, j = { [u]: true, \"default\": false, \"type\": \"Boolean\" }, k = { [x]: \"Endpoint\" }, l = { [v]: c, [w]: [{ [x]: \"UseFIPS\" }, true] }, m = { [v]: c, [w]: [{ [x]: \"UseDualStack\" }, true] }, n = {}, o = { [v]: h, [w]: [{ [x]: g }, \"supportsFIPS\"] }, p = { [x]: g }, q = { [v]: c, [w]: [true, { [v]: h, [w]: [p, \"supportsDualStack\"] }] }, r = [l], s = [m], t = [{ [x]: \"Region\" }];\nconst _data = { version: \"1.0\", parameters: { Region: i, UseDualStack: j, UseFIPS: j, Endpoint: i }, rules: [{ conditions: [{ [v]: b, [w]: [k] }], rules: [{ conditions: r, error: \"Invalid Configuration: FIPS and custom endpoint are not supported\", type: d }, { conditions: s, error: \"Invalid Configuration: Dualstack and custom endpoint are not supported\", type: d }, { endpoint: { url: k, properties: n, headers: n }, type: e }], type: f }, { conditions: [{ [v]: b, [w]: t }], rules: [{ conditions: [{ [v]: \"aws.partition\", [w]: t, assign: g }], rules: [{ conditions: [l, m], rules: [{ conditions: [{ [v]: c, [w]: [a, o] }, q], rules: [{ endpoint: { url: \"https://cloudformation-fips.{Region}.{PartitionResult#dualStackDnsSuffix}\", properties: n, headers: n }, type: e }], type: f }, { error: \"FIPS and DualStack are enabled, but this partition does not support one or both\", type: d }], type: f }, { conditions: r, rules: [{ conditions: [{ [v]: c, [w]: [o, a] }], rules: [{ conditions: [{ [v]: \"stringEquals\", [w]: [{ [v]: h, [w]: [p, \"name\"] }, \"aws-us-gov\"] }], endpoint: { url: \"https://cloudformation.{Region}.amazonaws.com\", properties: n, headers: n }, type: e }, { endpoint: { url: \"https://cloudformation-fips.{Region}.{PartitionResult#dnsSuffix}\", properties: n, headers: n }, type: e }], type: f }, { error: \"FIPS is enabled but this partition does not support FIPS\", type: d }], type: f }, { conditions: s, rules: [{ conditions: [q], rules: [{ endpoint: { url: \"https://cloudformation.{Region}.{PartitionResult#dualStackDnsSuffix}\", properties: n, headers: n }, type: e }], type: f }, { error: \"DualStack is enabled but this partition does not support DualStack\", type: d }], type: f }, { endpoint: { url: \"https://cloudformation.{Region}.{PartitionResult#dnsSuffix}\", properties: n, headers: n }, type: e }], type: f }], type: f }, { error: \"Invalid Configuration: Missing Region\", type: d }] };\nexports.ruleSet = _data;\n","\"use strict\";\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/index.ts\nvar src_exports = {};\n__export(src_exports, {\n AccountFilterType: () => AccountFilterType,\n AccountGateStatus: () => AccountGateStatus,\n ActivateOrganizationsAccessCommand: () => ActivateOrganizationsAccessCommand,\n ActivateTypeCommand: () => ActivateTypeCommand,\n AlreadyExistsException: () => AlreadyExistsException,\n AttributeChangeType: () => AttributeChangeType,\n BatchDescribeTypeConfigurationsCommand: () => BatchDescribeTypeConfigurationsCommand,\n CFNRegistryException: () => CFNRegistryException,\n CallAs: () => CallAs,\n CancelUpdateStackCommand: () => CancelUpdateStackCommand,\n Capability: () => Capability,\n Category: () => Category,\n ChangeAction: () => ChangeAction,\n ChangeSetHooksStatus: () => ChangeSetHooksStatus,\n ChangeSetNotFoundException: () => ChangeSetNotFoundException,\n ChangeSetStatus: () => ChangeSetStatus,\n ChangeSetType: () => ChangeSetType,\n ChangeSource: () => ChangeSource,\n ChangeType: () => ChangeType,\n CloudFormation: () => CloudFormation,\n CloudFormationClient: () => CloudFormationClient,\n CloudFormationServiceException: () => CloudFormationServiceException,\n ConcurrencyMode: () => ConcurrencyMode,\n ConcurrentResourcesLimitExceededException: () => ConcurrentResourcesLimitExceededException,\n ContinueUpdateRollbackCommand: () => ContinueUpdateRollbackCommand,\n CreateChangeSetCommand: () => CreateChangeSetCommand,\n CreateGeneratedTemplateCommand: () => CreateGeneratedTemplateCommand,\n CreateStackCommand: () => CreateStackCommand,\n CreateStackInstancesCommand: () => CreateStackInstancesCommand,\n CreateStackSetCommand: () => CreateStackSetCommand,\n CreatedButModifiedException: () => CreatedButModifiedException,\n DeactivateOrganizationsAccessCommand: () => DeactivateOrganizationsAccessCommand,\n DeactivateTypeCommand: () => DeactivateTypeCommand,\n DeleteChangeSetCommand: () => DeleteChangeSetCommand,\n DeleteGeneratedTemplateCommand: () => DeleteGeneratedTemplateCommand,\n DeleteStackCommand: () => DeleteStackCommand,\n DeleteStackInstancesCommand: () => DeleteStackInstancesCommand,\n DeleteStackSetCommand: () => DeleteStackSetCommand,\n DeletionMode: () => DeletionMode,\n DeprecatedStatus: () => DeprecatedStatus,\n DeregisterTypeCommand: () => DeregisterTypeCommand,\n DescribeAccountLimitsCommand: () => DescribeAccountLimitsCommand,\n DescribeChangeSetCommand: () => DescribeChangeSetCommand,\n DescribeChangeSetHooksCommand: () => DescribeChangeSetHooksCommand,\n DescribeGeneratedTemplateCommand: () => DescribeGeneratedTemplateCommand,\n DescribeOrganizationsAccessCommand: () => DescribeOrganizationsAccessCommand,\n DescribePublisherCommand: () => DescribePublisherCommand,\n DescribeResourceScanCommand: () => DescribeResourceScanCommand,\n DescribeStackDriftDetectionStatusCommand: () => DescribeStackDriftDetectionStatusCommand,\n DescribeStackEventsCommand: () => DescribeStackEventsCommand,\n DescribeStackInstanceCommand: () => DescribeStackInstanceCommand,\n DescribeStackResourceCommand: () => DescribeStackResourceCommand,\n DescribeStackResourceDriftsCommand: () => DescribeStackResourceDriftsCommand,\n DescribeStackResourcesCommand: () => DescribeStackResourcesCommand,\n DescribeStackSetCommand: () => DescribeStackSetCommand,\n DescribeStackSetOperationCommand: () => DescribeStackSetOperationCommand,\n DescribeStacksCommand: () => DescribeStacksCommand,\n DescribeTypeCommand: () => DescribeTypeCommand,\n DescribeTypeRegistrationCommand: () => DescribeTypeRegistrationCommand,\n DetailedStatus: () => DetailedStatus,\n DetectStackDriftCommand: () => DetectStackDriftCommand,\n DetectStackResourceDriftCommand: () => DetectStackResourceDriftCommand,\n DetectStackSetDriftCommand: () => DetectStackSetDriftCommand,\n DifferenceType: () => DifferenceType,\n EstimateTemplateCostCommand: () => EstimateTemplateCostCommand,\n EvaluationType: () => EvaluationType,\n ExecuteChangeSetCommand: () => ExecuteChangeSetCommand,\n ExecutionStatus: () => ExecutionStatus,\n GeneratedTemplateDeletionPolicy: () => GeneratedTemplateDeletionPolicy,\n GeneratedTemplateNotFoundException: () => GeneratedTemplateNotFoundException,\n GeneratedTemplateResourceStatus: () => GeneratedTemplateResourceStatus,\n GeneratedTemplateStatus: () => GeneratedTemplateStatus,\n GeneratedTemplateUpdateReplacePolicy: () => GeneratedTemplateUpdateReplacePolicy,\n GetGeneratedTemplateCommand: () => GetGeneratedTemplateCommand,\n GetStackPolicyCommand: () => GetStackPolicyCommand,\n GetTemplateCommand: () => GetTemplateCommand,\n GetTemplateSummaryCommand: () => GetTemplateSummaryCommand,\n HandlerErrorCode: () => HandlerErrorCode,\n HookFailureMode: () => HookFailureMode,\n HookInvocationPoint: () => HookInvocationPoint,\n HookStatus: () => HookStatus,\n HookTargetType: () => HookTargetType,\n IdentityProvider: () => IdentityProvider,\n ImportStacksToStackSetCommand: () => ImportStacksToStackSetCommand,\n InsufficientCapabilitiesException: () => InsufficientCapabilitiesException,\n InvalidChangeSetStatusException: () => InvalidChangeSetStatusException,\n InvalidOperationException: () => InvalidOperationException,\n InvalidStateTransitionException: () => InvalidStateTransitionException,\n LimitExceededException: () => LimitExceededException,\n ListChangeSetsCommand: () => ListChangeSetsCommand,\n ListExportsCommand: () => ListExportsCommand,\n ListGeneratedTemplatesCommand: () => ListGeneratedTemplatesCommand,\n ListImportsCommand: () => ListImportsCommand,\n ListResourceScanRelatedResourcesCommand: () => ListResourceScanRelatedResourcesCommand,\n ListResourceScanResourcesCommand: () => ListResourceScanResourcesCommand,\n ListResourceScansCommand: () => ListResourceScansCommand,\n ListStackInstanceResourceDriftsCommand: () => ListStackInstanceResourceDriftsCommand,\n ListStackInstancesCommand: () => ListStackInstancesCommand,\n ListStackResourcesCommand: () => ListStackResourcesCommand,\n ListStackSetAutoDeploymentTargetsCommand: () => ListStackSetAutoDeploymentTargetsCommand,\n ListStackSetOperationResultsCommand: () => ListStackSetOperationResultsCommand,\n ListStackSetOperationsCommand: () => ListStackSetOperationsCommand,\n ListStackSetsCommand: () => ListStackSetsCommand,\n ListStacksCommand: () => ListStacksCommand,\n ListTypeRegistrationsCommand: () => ListTypeRegistrationsCommand,\n ListTypeVersionsCommand: () => ListTypeVersionsCommand,\n ListTypesCommand: () => ListTypesCommand,\n NameAlreadyExistsException: () => NameAlreadyExistsException,\n OnFailure: () => OnFailure,\n OnStackFailure: () => OnStackFailure,\n OperationIdAlreadyExistsException: () => OperationIdAlreadyExistsException,\n OperationInProgressException: () => OperationInProgressException,\n OperationNotFoundException: () => OperationNotFoundException,\n OperationResultFilterName: () => OperationResultFilterName,\n OperationStatus: () => OperationStatus,\n OperationStatusCheckFailedException: () => OperationStatusCheckFailedException,\n OrganizationStatus: () => OrganizationStatus,\n PermissionModels: () => PermissionModels,\n PolicyAction: () => PolicyAction,\n ProvisioningType: () => ProvisioningType,\n PublishTypeCommand: () => PublishTypeCommand,\n PublisherStatus: () => PublisherStatus,\n RecordHandlerProgressCommand: () => RecordHandlerProgressCommand,\n RegionConcurrencyType: () => RegionConcurrencyType,\n RegisterPublisherCommand: () => RegisterPublisherCommand,\n RegisterTypeCommand: () => RegisterTypeCommand,\n RegistrationStatus: () => RegistrationStatus,\n RegistryType: () => RegistryType,\n Replacement: () => Replacement,\n RequiresRecreation: () => RequiresRecreation,\n ResourceAttribute: () => ResourceAttribute,\n ResourceScanInProgressException: () => ResourceScanInProgressException,\n ResourceScanLimitExceededException: () => ResourceScanLimitExceededException,\n ResourceScanNotFoundException: () => ResourceScanNotFoundException,\n ResourceScanStatus: () => ResourceScanStatus,\n ResourceSignalStatus: () => ResourceSignalStatus,\n ResourceStatus: () => ResourceStatus,\n RollbackStackCommand: () => RollbackStackCommand,\n SetStackPolicyCommand: () => SetStackPolicyCommand,\n SetTypeConfigurationCommand: () => SetTypeConfigurationCommand,\n SetTypeDefaultVersionCommand: () => SetTypeDefaultVersionCommand,\n SignalResourceCommand: () => SignalResourceCommand,\n StackDriftDetectionStatus: () => StackDriftDetectionStatus,\n StackDriftStatus: () => StackDriftStatus,\n StackInstanceDetailedStatus: () => StackInstanceDetailedStatus,\n StackInstanceFilterName: () => StackInstanceFilterName,\n StackInstanceNotFoundException: () => StackInstanceNotFoundException,\n StackInstanceStatus: () => StackInstanceStatus,\n StackNotFoundException: () => StackNotFoundException,\n StackResourceDriftStatus: () => StackResourceDriftStatus,\n StackSetDriftDetectionStatus: () => StackSetDriftDetectionStatus,\n StackSetDriftStatus: () => StackSetDriftStatus,\n StackSetNotEmptyException: () => StackSetNotEmptyException,\n StackSetNotFoundException: () => StackSetNotFoundException,\n StackSetOperationAction: () => StackSetOperationAction,\n StackSetOperationResultStatus: () => StackSetOperationResultStatus,\n StackSetOperationStatus: () => StackSetOperationStatus,\n StackSetStatus: () => StackSetStatus,\n StackStatus: () => StackStatus,\n StaleRequestException: () => StaleRequestException,\n StartResourceScanCommand: () => StartResourceScanCommand,\n StopStackSetOperationCommand: () => StopStackSetOperationCommand,\n TemplateFormat: () => TemplateFormat,\n TemplateStage: () => TemplateStage,\n TestTypeCommand: () => TestTypeCommand,\n ThirdPartyType: () => ThirdPartyType,\n TokenAlreadyExistsException: () => TokenAlreadyExistsException,\n TypeConfigurationNotFoundException: () => TypeConfigurationNotFoundException,\n TypeNotFoundException: () => TypeNotFoundException,\n TypeTestsStatus: () => TypeTestsStatus,\n UpdateGeneratedTemplateCommand: () => UpdateGeneratedTemplateCommand,\n UpdateStackCommand: () => UpdateStackCommand,\n UpdateStackInstancesCommand: () => UpdateStackInstancesCommand,\n UpdateStackSetCommand: () => UpdateStackSetCommand,\n UpdateTerminationProtectionCommand: () => UpdateTerminationProtectionCommand,\n ValidateTemplateCommand: () => ValidateTemplateCommand,\n VersionBump: () => VersionBump,\n Visibility: () => Visibility,\n WarningType: () => WarningType,\n __Client: () => import_smithy_client.Client,\n paginateDescribeAccountLimits: () => paginateDescribeAccountLimits,\n paginateDescribeStackEvents: () => paginateDescribeStackEvents,\n paginateDescribeStackResourceDrifts: () => paginateDescribeStackResourceDrifts,\n paginateDescribeStacks: () => paginateDescribeStacks,\n paginateListChangeSets: () => paginateListChangeSets,\n paginateListExports: () => paginateListExports,\n paginateListGeneratedTemplates: () => paginateListGeneratedTemplates,\n paginateListImports: () => paginateListImports,\n paginateListResourceScanRelatedResources: () => paginateListResourceScanRelatedResources,\n paginateListResourceScanResources: () => paginateListResourceScanResources,\n paginateListResourceScans: () => paginateListResourceScans,\n paginateListStackInstances: () => paginateListStackInstances,\n paginateListStackResources: () => paginateListStackResources,\n paginateListStackSetOperationResults: () => paginateListStackSetOperationResults,\n paginateListStackSetOperations: () => paginateListStackSetOperations,\n paginateListStackSets: () => paginateListStackSets,\n paginateListStacks: () => paginateListStacks,\n paginateListTypeRegistrations: () => paginateListTypeRegistrations,\n paginateListTypeVersions: () => paginateListTypeVersions,\n paginateListTypes: () => paginateListTypes,\n waitForChangeSetCreateComplete: () => waitForChangeSetCreateComplete,\n waitForStackCreateComplete: () => waitForStackCreateComplete,\n waitForStackDeleteComplete: () => waitForStackDeleteComplete,\n waitForStackExists: () => waitForStackExists,\n waitForStackImportComplete: () => waitForStackImportComplete,\n waitForStackRollbackComplete: () => waitForStackRollbackComplete,\n waitForStackUpdateComplete: () => waitForStackUpdateComplete,\n waitForTypeRegistrationComplete: () => waitForTypeRegistrationComplete,\n waitUntilChangeSetCreateComplete: () => waitUntilChangeSetCreateComplete,\n waitUntilStackCreateComplete: () => waitUntilStackCreateComplete,\n waitUntilStackDeleteComplete: () => waitUntilStackDeleteComplete,\n waitUntilStackExists: () => waitUntilStackExists,\n waitUntilStackImportComplete: () => waitUntilStackImportComplete,\n waitUntilStackRollbackComplete: () => waitUntilStackRollbackComplete,\n waitUntilStackUpdateComplete: () => waitUntilStackUpdateComplete,\n waitUntilTypeRegistrationComplete: () => waitUntilTypeRegistrationComplete\n});\nmodule.exports = __toCommonJS(src_exports);\n\n// src/CloudFormationClient.ts\nvar import_middleware_host_header = require(\"@aws-sdk/middleware-host-header\");\nvar import_middleware_logger = require(\"@aws-sdk/middleware-logger\");\nvar import_middleware_recursion_detection = require(\"@aws-sdk/middleware-recursion-detection\");\nvar import_middleware_user_agent = require(\"@aws-sdk/middleware-user-agent\");\nvar import_config_resolver = require(\"@smithy/config-resolver\");\nvar import_core = require(\"@smithy/core\");\nvar import_middleware_content_length = require(\"@smithy/middleware-content-length\");\nvar import_middleware_endpoint = require(\"@smithy/middleware-endpoint\");\nvar import_middleware_retry = require(\"@smithy/middleware-retry\");\n\nvar import_httpAuthSchemeProvider = require(\"./auth/httpAuthSchemeProvider\");\n\n// src/endpoint/EndpointParameters.ts\nvar resolveClientEndpointParameters = /* @__PURE__ */ __name((options) => {\n return {\n ...options,\n useDualstackEndpoint: options.useDualstackEndpoint ?? false,\n useFipsEndpoint: options.useFipsEndpoint ?? false,\n defaultSigningName: \"cloudformation\"\n };\n}, \"resolveClientEndpointParameters\");\nvar commonParams = {\n UseFIPS: { type: \"builtInParams\", name: \"useFipsEndpoint\" },\n Endpoint: { type: \"builtInParams\", name: \"endpoint\" },\n Region: { type: \"builtInParams\", name: \"region\" },\n UseDualStack: { type: \"builtInParams\", name: \"useDualstackEndpoint\" }\n};\n\n// src/CloudFormationClient.ts\nvar import_runtimeConfig = require(\"././runtimeConfig\");\n\n// src/runtimeExtensions.ts\nvar import_region_config_resolver = require(\"@aws-sdk/region-config-resolver\");\nvar import_protocol_http = require(\"@smithy/protocol-http\");\nvar import_smithy_client = require(\"@smithy/smithy-client\");\n\n// src/auth/httpAuthExtensionConfiguration.ts\nvar getHttpAuthExtensionConfiguration = /* @__PURE__ */ __name((runtimeConfig) => {\n const _httpAuthSchemes = runtimeConfig.httpAuthSchemes;\n let _httpAuthSchemeProvider = runtimeConfig.httpAuthSchemeProvider;\n let _credentials = runtimeConfig.credentials;\n return {\n setHttpAuthScheme(httpAuthScheme) {\n const index = _httpAuthSchemes.findIndex((scheme) => scheme.schemeId === httpAuthScheme.schemeId);\n if (index === -1) {\n _httpAuthSchemes.push(httpAuthScheme);\n } else {\n _httpAuthSchemes.splice(index, 1, httpAuthScheme);\n }\n },\n httpAuthSchemes() {\n return _httpAuthSchemes;\n },\n setHttpAuthSchemeProvider(httpAuthSchemeProvider) {\n _httpAuthSchemeProvider = httpAuthSchemeProvider;\n },\n httpAuthSchemeProvider() {\n return _httpAuthSchemeProvider;\n },\n setCredentials(credentials) {\n _credentials = credentials;\n },\n credentials() {\n return _credentials;\n }\n };\n}, \"getHttpAuthExtensionConfiguration\");\nvar resolveHttpAuthRuntimeConfig = /* @__PURE__ */ __name((config) => {\n return {\n httpAuthSchemes: config.httpAuthSchemes(),\n httpAuthSchemeProvider: config.httpAuthSchemeProvider(),\n credentials: config.credentials()\n };\n}, \"resolveHttpAuthRuntimeConfig\");\n\n// src/runtimeExtensions.ts\nvar asPartial = /* @__PURE__ */ __name((t) => t, \"asPartial\");\nvar resolveRuntimeExtensions = /* @__PURE__ */ __name((runtimeConfig, extensions) => {\n const extensionConfiguration = {\n ...asPartial((0, import_region_config_resolver.getAwsRegionExtensionConfiguration)(runtimeConfig)),\n ...asPartial((0, import_smithy_client.getDefaultExtensionConfiguration)(runtimeConfig)),\n ...asPartial((0, import_protocol_http.getHttpHandlerExtensionConfiguration)(runtimeConfig)),\n ...asPartial(getHttpAuthExtensionConfiguration(runtimeConfig))\n };\n extensions.forEach((extension) => extension.configure(extensionConfiguration));\n return {\n ...runtimeConfig,\n ...(0, import_region_config_resolver.resolveAwsRegionExtensionConfiguration)(extensionConfiguration),\n ...(0, import_smithy_client.resolveDefaultRuntimeConfig)(extensionConfiguration),\n ...(0, import_protocol_http.resolveHttpHandlerRuntimeConfig)(extensionConfiguration),\n ...resolveHttpAuthRuntimeConfig(extensionConfiguration)\n };\n}, \"resolveRuntimeExtensions\");\n\n// src/CloudFormationClient.ts\nvar _CloudFormationClient = class _CloudFormationClient extends import_smithy_client.Client {\n constructor(...[configuration]) {\n const _config_0 = (0, import_runtimeConfig.getRuntimeConfig)(configuration || {});\n const _config_1 = resolveClientEndpointParameters(_config_0);\n const _config_2 = (0, import_middleware_user_agent.resolveUserAgentConfig)(_config_1);\n const _config_3 = (0, import_middleware_retry.resolveRetryConfig)(_config_2);\n const _config_4 = (0, import_config_resolver.resolveRegionConfig)(_config_3);\n const _config_5 = (0, import_middleware_host_header.resolveHostHeaderConfig)(_config_4);\n const _config_6 = (0, import_middleware_endpoint.resolveEndpointConfig)(_config_5);\n const _config_7 = (0, import_httpAuthSchemeProvider.resolveHttpAuthSchemeConfig)(_config_6);\n const _config_8 = resolveRuntimeExtensions(_config_7, (configuration == null ? void 0 : configuration.extensions) || []);\n super(_config_8);\n this.config = _config_8;\n this.middlewareStack.use((0, import_middleware_user_agent.getUserAgentPlugin)(this.config));\n this.middlewareStack.use((0, import_middleware_retry.getRetryPlugin)(this.config));\n this.middlewareStack.use((0, import_middleware_content_length.getContentLengthPlugin)(this.config));\n this.middlewareStack.use((0, import_middleware_host_header.getHostHeaderPlugin)(this.config));\n this.middlewareStack.use((0, import_middleware_logger.getLoggerPlugin)(this.config));\n this.middlewareStack.use((0, import_middleware_recursion_detection.getRecursionDetectionPlugin)(this.config));\n this.middlewareStack.use(\n (0, import_core.getHttpAuthSchemeEndpointRuleSetPlugin)(this.config, {\n httpAuthSchemeParametersProvider: import_httpAuthSchemeProvider.defaultCloudFormationHttpAuthSchemeParametersProvider,\n identityProviderConfigProvider: async (config) => new import_core.DefaultIdentityProviderConfig({\n \"aws.auth#sigv4\": config.credentials\n })\n })\n );\n this.middlewareStack.use((0, import_core.getHttpSigningPlugin)(this.config));\n }\n /**\n * Destroy underlying resources, like sockets. It's usually not necessary to do this.\n * However in Node.js, it's best to explicitly shut down the client's agent when it is no longer needed.\n * Otherwise, sockets might stay open for quite a long time before the server terminates them.\n */\n destroy() {\n super.destroy();\n }\n};\n__name(_CloudFormationClient, \"CloudFormationClient\");\nvar CloudFormationClient = _CloudFormationClient;\n\n// src/CloudFormation.ts\n\n\n// src/commands/ActivateOrganizationsAccessCommand.ts\n\nvar import_middleware_serde = require(\"@smithy/middleware-serde\");\n\n\n// src/protocols/Aws_query.ts\nvar import_core2 = require(\"@aws-sdk/core\");\n\n\nvar import_uuid = require(\"uuid\");\n\n// src/models/CloudFormationServiceException.ts\n\nvar _CloudFormationServiceException = class _CloudFormationServiceException extends import_smithy_client.ServiceException {\n /**\n * @internal\n */\n constructor(options) {\n super(options);\n Object.setPrototypeOf(this, _CloudFormationServiceException.prototype);\n }\n};\n__name(_CloudFormationServiceException, \"CloudFormationServiceException\");\nvar CloudFormationServiceException = _CloudFormationServiceException;\n\n// src/models/models_0.ts\nvar AccountFilterType = {\n DIFFERENCE: \"DIFFERENCE\",\n INTERSECTION: \"INTERSECTION\",\n NONE: \"NONE\",\n UNION: \"UNION\"\n};\nvar AccountGateStatus = {\n FAILED: \"FAILED\",\n SKIPPED: \"SKIPPED\",\n SUCCEEDED: \"SUCCEEDED\"\n};\nvar _InvalidOperationException = class _InvalidOperationException extends CloudFormationServiceException {\n /**\n * @internal\n */\n constructor(opts) {\n super({\n name: \"InvalidOperationException\",\n $fault: \"client\",\n ...opts\n });\n this.name = \"InvalidOperationException\";\n this.$fault = \"client\";\n Object.setPrototypeOf(this, _InvalidOperationException.prototype);\n this.Message = opts.Message;\n }\n};\n__name(_InvalidOperationException, \"InvalidOperationException\");\nvar InvalidOperationException = _InvalidOperationException;\nvar _OperationNotFoundException = class _OperationNotFoundException extends CloudFormationServiceException {\n /**\n * @internal\n */\n constructor(opts) {\n super({\n name: \"OperationNotFoundException\",\n $fault: \"client\",\n ...opts\n });\n this.name = \"OperationNotFoundException\";\n this.$fault = \"client\";\n Object.setPrototypeOf(this, _OperationNotFoundException.prototype);\n this.Message = opts.Message;\n }\n};\n__name(_OperationNotFoundException, \"OperationNotFoundException\");\nvar OperationNotFoundException = _OperationNotFoundException;\nvar ThirdPartyType = {\n HOOK: \"HOOK\",\n MODULE: \"MODULE\",\n RESOURCE: \"RESOURCE\"\n};\nvar VersionBump = {\n MAJOR: \"MAJOR\",\n MINOR: \"MINOR\"\n};\nvar _CFNRegistryException = class _CFNRegistryException extends CloudFormationServiceException {\n /**\n * @internal\n */\n constructor(opts) {\n super({\n name: \"CFNRegistryException\",\n $fault: \"client\",\n ...opts\n });\n this.name = \"CFNRegistryException\";\n this.$fault = \"client\";\n Object.setPrototypeOf(this, _CFNRegistryException.prototype);\n this.Message = opts.Message;\n }\n};\n__name(_CFNRegistryException, \"CFNRegistryException\");\nvar CFNRegistryException = _CFNRegistryException;\nvar _TypeNotFoundException = class _TypeNotFoundException extends CloudFormationServiceException {\n /**\n * @internal\n */\n constructor(opts) {\n super({\n name: \"TypeNotFoundException\",\n $fault: \"client\",\n ...opts\n });\n this.name = \"TypeNotFoundException\";\n this.$fault = \"client\";\n Object.setPrototypeOf(this, _TypeNotFoundException.prototype);\n this.Message = opts.Message;\n }\n};\n__name(_TypeNotFoundException, \"TypeNotFoundException\");\nvar TypeNotFoundException = _TypeNotFoundException;\nvar _AlreadyExistsException = class _AlreadyExistsException extends CloudFormationServiceException {\n /**\n * @internal\n */\n constructor(opts) {\n super({\n name: \"AlreadyExistsException\",\n $fault: \"client\",\n ...opts\n });\n this.name = \"AlreadyExistsException\";\n this.$fault = \"client\";\n Object.setPrototypeOf(this, _AlreadyExistsException.prototype);\n this.Message = opts.Message;\n }\n};\n__name(_AlreadyExistsException, \"AlreadyExistsException\");\nvar AlreadyExistsException = _AlreadyExistsException;\nvar AttributeChangeType = {\n Add: \"Add\",\n Modify: \"Modify\",\n Remove: \"Remove\"\n};\nvar _TypeConfigurationNotFoundException = class _TypeConfigurationNotFoundException extends CloudFormationServiceException {\n /**\n * @internal\n */\n constructor(opts) {\n super({\n name: \"TypeConfigurationNotFoundException\",\n $fault: \"client\",\n ...opts\n });\n this.name = \"TypeConfigurationNotFoundException\";\n this.$fault = \"client\";\n Object.setPrototypeOf(this, _TypeConfigurationNotFoundException.prototype);\n this.Message = opts.Message;\n }\n};\n__name(_TypeConfigurationNotFoundException, \"TypeConfigurationNotFoundException\");\nvar TypeConfigurationNotFoundException = _TypeConfigurationNotFoundException;\nvar CallAs = {\n DELEGATED_ADMIN: \"DELEGATED_ADMIN\",\n SELF: \"SELF\"\n};\nvar _TokenAlreadyExistsException = class _TokenAlreadyExistsException extends CloudFormationServiceException {\n /**\n * @internal\n */\n constructor(opts) {\n super({\n name: \"TokenAlreadyExistsException\",\n $fault: \"client\",\n ...opts\n });\n this.name = \"TokenAlreadyExistsException\";\n this.$fault = \"client\";\n Object.setPrototypeOf(this, _TokenAlreadyExistsException.prototype);\n this.Message = opts.Message;\n }\n};\n__name(_TokenAlreadyExistsException, \"TokenAlreadyExistsException\");\nvar TokenAlreadyExistsException = _TokenAlreadyExistsException;\nvar Capability = {\n CAPABILITY_AUTO_EXPAND: \"CAPABILITY_AUTO_EXPAND\",\n CAPABILITY_IAM: \"CAPABILITY_IAM\",\n CAPABILITY_NAMED_IAM: \"CAPABILITY_NAMED_IAM\"\n};\nvar Category = {\n ACTIVATED: \"ACTIVATED\",\n AWS_TYPES: \"AWS_TYPES\",\n REGISTERED: \"REGISTERED\",\n THIRD_PARTY: \"THIRD_PARTY\"\n};\nvar ChangeAction = {\n Add: \"Add\",\n Dynamic: \"Dynamic\",\n Import: \"Import\",\n Modify: \"Modify\",\n Remove: \"Remove\"\n};\nvar ChangeSource = {\n Automatic: \"Automatic\",\n DirectModification: \"DirectModification\",\n ParameterReference: \"ParameterReference\",\n ResourceAttribute: \"ResourceAttribute\",\n ResourceReference: \"ResourceReference\"\n};\nvar EvaluationType = {\n Dynamic: \"Dynamic\",\n Static: \"Static\"\n};\nvar ResourceAttribute = {\n CreationPolicy: \"CreationPolicy\",\n DeletionPolicy: \"DeletionPolicy\",\n Metadata: \"Metadata\",\n Properties: \"Properties\",\n Tags: \"Tags\",\n UpdatePolicy: \"UpdatePolicy\",\n UpdateReplacePolicy: \"UpdateReplacePolicy\"\n};\nvar RequiresRecreation = {\n Always: \"Always\",\n Conditionally: \"Conditionally\",\n Never: \"Never\"\n};\nvar PolicyAction = {\n Delete: \"Delete\",\n ReplaceAndDelete: \"ReplaceAndDelete\",\n ReplaceAndRetain: \"ReplaceAndRetain\",\n ReplaceAndSnapshot: \"ReplaceAndSnapshot\",\n Retain: \"Retain\",\n Snapshot: \"Snapshot\"\n};\nvar Replacement = {\n Conditional: \"Conditional\",\n False: \"False\",\n True: \"True\"\n};\nvar ChangeType = {\n Resource: \"Resource\"\n};\nvar HookFailureMode = {\n FAIL: \"FAIL\",\n WARN: \"WARN\"\n};\nvar HookInvocationPoint = {\n PRE_PROVISION: \"PRE_PROVISION\"\n};\nvar HookTargetType = {\n RESOURCE: \"RESOURCE\"\n};\nvar ChangeSetHooksStatus = {\n PLANNED: \"PLANNED\",\n PLANNING: \"PLANNING\",\n UNAVAILABLE: \"UNAVAILABLE\"\n};\nvar _ChangeSetNotFoundException = class _ChangeSetNotFoundException extends CloudFormationServiceException {\n /**\n * @internal\n */\n constructor(opts) {\n super({\n name: \"ChangeSetNotFoundException\",\n $fault: \"client\",\n ...opts\n });\n this.name = \"ChangeSetNotFoundException\";\n this.$fault = \"client\";\n Object.setPrototypeOf(this, _ChangeSetNotFoundException.prototype);\n this.Message = opts.Message;\n }\n};\n__name(_ChangeSetNotFoundException, \"ChangeSetNotFoundException\");\nvar ChangeSetNotFoundException = _ChangeSetNotFoundException;\nvar ChangeSetStatus = {\n CREATE_COMPLETE: \"CREATE_COMPLETE\",\n CREATE_IN_PROGRESS: \"CREATE_IN_PROGRESS\",\n CREATE_PENDING: \"CREATE_PENDING\",\n DELETE_COMPLETE: \"DELETE_COMPLETE\",\n DELETE_FAILED: \"DELETE_FAILED\",\n DELETE_IN_PROGRESS: \"DELETE_IN_PROGRESS\",\n DELETE_PENDING: \"DELETE_PENDING\",\n FAILED: \"FAILED\"\n};\nvar ExecutionStatus = {\n AVAILABLE: \"AVAILABLE\",\n EXECUTE_COMPLETE: \"EXECUTE_COMPLETE\",\n EXECUTE_FAILED: \"EXECUTE_FAILED\",\n EXECUTE_IN_PROGRESS: \"EXECUTE_IN_PROGRESS\",\n OBSOLETE: \"OBSOLETE\",\n UNAVAILABLE: \"UNAVAILABLE\"\n};\nvar ChangeSetType = {\n CREATE: \"CREATE\",\n IMPORT: \"IMPORT\",\n UPDATE: \"UPDATE\"\n};\nvar OnStackFailure = {\n DELETE: \"DELETE\",\n DO_NOTHING: \"DO_NOTHING\",\n ROLLBACK: \"ROLLBACK\"\n};\nvar _InsufficientCapabilitiesException = class _InsufficientCapabilitiesException extends CloudFormationServiceException {\n /**\n * @internal\n */\n constructor(opts) {\n super({\n name: \"InsufficientCapabilitiesException\",\n $fault: \"client\",\n ...opts\n });\n this.name = \"InsufficientCapabilitiesException\";\n this.$fault = \"client\";\n Object.setPrototypeOf(this, _InsufficientCapabilitiesException.prototype);\n this.Message = opts.Message;\n }\n};\n__name(_InsufficientCapabilitiesException, \"InsufficientCapabilitiesException\");\nvar InsufficientCapabilitiesException = _InsufficientCapabilitiesException;\nvar _LimitExceededException = class _LimitExceededException extends CloudFormationServiceException {\n /**\n * @internal\n */\n constructor(opts) {\n super({\n name: \"LimitExceededException\",\n $fault: \"client\",\n ...opts\n });\n this.name = \"LimitExceededException\";\n this.$fault = \"client\";\n Object.setPrototypeOf(this, _LimitExceededException.prototype);\n this.Message = opts.Message;\n }\n};\n__name(_LimitExceededException, \"LimitExceededException\");\nvar LimitExceededException = _LimitExceededException;\nvar _ConcurrentResourcesLimitExceededException = class _ConcurrentResourcesLimitExceededException extends CloudFormationServiceException {\n /**\n * @internal\n */\n constructor(opts) {\n super({\n name: \"ConcurrentResourcesLimitExceededException\",\n $fault: \"client\",\n ...opts\n });\n this.name = \"ConcurrentResourcesLimitExceededException\";\n this.$fault = \"client\";\n Object.setPrototypeOf(this, _ConcurrentResourcesLimitExceededException.prototype);\n this.Message = opts.Message;\n }\n};\n__name(_ConcurrentResourcesLimitExceededException, \"ConcurrentResourcesLimitExceededException\");\nvar ConcurrentResourcesLimitExceededException = _ConcurrentResourcesLimitExceededException;\nvar GeneratedTemplateDeletionPolicy = {\n DELETE: \"DELETE\",\n RETAIN: \"RETAIN\"\n};\nvar GeneratedTemplateUpdateReplacePolicy = {\n DELETE: \"DELETE\",\n RETAIN: \"RETAIN\"\n};\nvar OnFailure = {\n DELETE: \"DELETE\",\n DO_NOTHING: \"DO_NOTHING\",\n ROLLBACK: \"ROLLBACK\"\n};\nvar ConcurrencyMode = {\n SOFT_FAILURE_TOLERANCE: \"SOFT_FAILURE_TOLERANCE\",\n STRICT_FAILURE_TOLERANCE: \"STRICT_FAILURE_TOLERANCE\"\n};\nvar RegionConcurrencyType = {\n PARALLEL: \"PARALLEL\",\n SEQUENTIAL: \"SEQUENTIAL\"\n};\nvar _OperationIdAlreadyExistsException = class _OperationIdAlreadyExistsException extends CloudFormationServiceException {\n /**\n * @internal\n */\n constructor(opts) {\n super({\n name: \"OperationIdAlreadyExistsException\",\n $fault: \"client\",\n ...opts\n });\n this.name = \"OperationIdAlreadyExistsException\";\n this.$fault = \"client\";\n Object.setPrototypeOf(this, _OperationIdAlreadyExistsException.prototype);\n this.Message = opts.Message;\n }\n};\n__name(_OperationIdAlreadyExistsException, \"OperationIdAlreadyExistsException\");\nvar OperationIdAlreadyExistsException = _OperationIdAlreadyExistsException;\nvar _OperationInProgressException = class _OperationInProgressException extends CloudFormationServiceException {\n /**\n * @internal\n */\n constructor(opts) {\n super({\n name: \"OperationInProgressException\",\n $fault: \"client\",\n ...opts\n });\n this.name = \"OperationInProgressException\";\n this.$fault = \"client\";\n Object.setPrototypeOf(this, _OperationInProgressException.prototype);\n this.Message = opts.Message;\n }\n};\n__name(_OperationInProgressException, \"OperationInProgressException\");\nvar OperationInProgressException = _OperationInProgressException;\nvar _StackSetNotFoundException = class _StackSetNotFoundException extends CloudFormationServiceException {\n /**\n * @internal\n */\n constructor(opts) {\n super({\n name: \"StackSetNotFoundException\",\n $fault: \"client\",\n ...opts\n });\n this.name = \"StackSetNotFoundException\";\n this.$fault = \"client\";\n Object.setPrototypeOf(this, _StackSetNotFoundException.prototype);\n this.Message = opts.Message;\n }\n};\n__name(_StackSetNotFoundException, \"StackSetNotFoundException\");\nvar StackSetNotFoundException = _StackSetNotFoundException;\nvar _StaleRequestException = class _StaleRequestException extends CloudFormationServiceException {\n /**\n * @internal\n */\n constructor(opts) {\n super({\n name: \"StaleRequestException\",\n $fault: \"client\",\n ...opts\n });\n this.name = \"StaleRequestException\";\n this.$fault = \"client\";\n Object.setPrototypeOf(this, _StaleRequestException.prototype);\n this.Message = opts.Message;\n }\n};\n__name(_StaleRequestException, \"StaleRequestException\");\nvar StaleRequestException = _StaleRequestException;\nvar _CreatedButModifiedException = class _CreatedButModifiedException extends CloudFormationServiceException {\n /**\n * @internal\n */\n constructor(opts) {\n super({\n name: \"CreatedButModifiedException\",\n $fault: \"client\",\n ...opts\n });\n this.name = \"CreatedButModifiedException\";\n this.$fault = \"client\";\n Object.setPrototypeOf(this, _CreatedButModifiedException.prototype);\n this.Message = opts.Message;\n }\n};\n__name(_CreatedButModifiedException, \"CreatedButModifiedException\");\nvar CreatedButModifiedException = _CreatedButModifiedException;\nvar PermissionModels = {\n SELF_MANAGED: \"SELF_MANAGED\",\n SERVICE_MANAGED: \"SERVICE_MANAGED\"\n};\nvar _NameAlreadyExistsException = class _NameAlreadyExistsException extends CloudFormationServiceException {\n /**\n * @internal\n */\n constructor(opts) {\n super({\n name: \"NameAlreadyExistsException\",\n $fault: \"client\",\n ...opts\n });\n this.name = \"NameAlreadyExistsException\";\n this.$fault = \"client\";\n Object.setPrototypeOf(this, _NameAlreadyExistsException.prototype);\n this.Message = opts.Message;\n }\n};\n__name(_NameAlreadyExistsException, \"NameAlreadyExistsException\");\nvar NameAlreadyExistsException = _NameAlreadyExistsException;\nvar _InvalidChangeSetStatusException = class _InvalidChangeSetStatusException extends CloudFormationServiceException {\n /**\n * @internal\n */\n constructor(opts) {\n super({\n name: \"InvalidChangeSetStatusException\",\n $fault: \"client\",\n ...opts\n });\n this.name = \"InvalidChangeSetStatusException\";\n this.$fault = \"client\";\n Object.setPrototypeOf(this, _InvalidChangeSetStatusException.prototype);\n this.Message = opts.Message;\n }\n};\n__name(_InvalidChangeSetStatusException, \"InvalidChangeSetStatusException\");\nvar InvalidChangeSetStatusException = _InvalidChangeSetStatusException;\nvar _GeneratedTemplateNotFoundException = class _GeneratedTemplateNotFoundException extends CloudFormationServiceException {\n /**\n * @internal\n */\n constructor(opts) {\n super({\n name: \"GeneratedTemplateNotFoundException\",\n $fault: \"client\",\n ...opts\n });\n this.name = \"GeneratedTemplateNotFoundException\";\n this.$fault = \"client\";\n Object.setPrototypeOf(this, _GeneratedTemplateNotFoundException.prototype);\n this.Message = opts.Message;\n }\n};\n__name(_GeneratedTemplateNotFoundException, \"GeneratedTemplateNotFoundException\");\nvar GeneratedTemplateNotFoundException = _GeneratedTemplateNotFoundException;\nvar DeletionMode = {\n FORCE_DELETE_STACK: \"FORCE_DELETE_STACK\",\n STANDARD: \"STANDARD\"\n};\nvar _StackSetNotEmptyException = class _StackSetNotEmptyException extends CloudFormationServiceException {\n /**\n * @internal\n */\n constructor(opts) {\n super({\n name: \"StackSetNotEmptyException\",\n $fault: \"client\",\n ...opts\n });\n this.name = \"StackSetNotEmptyException\";\n this.$fault = \"client\";\n Object.setPrototypeOf(this, _StackSetNotEmptyException.prototype);\n this.Message = opts.Message;\n }\n};\n__name(_StackSetNotEmptyException, \"StackSetNotEmptyException\");\nvar StackSetNotEmptyException = _StackSetNotEmptyException;\nvar RegistryType = {\n HOOK: \"HOOK\",\n MODULE: \"MODULE\",\n RESOURCE: \"RESOURCE\"\n};\nvar GeneratedTemplateResourceStatus = {\n COMPLETE: \"COMPLETE\",\n FAILED: \"FAILED\",\n IN_PROGRESS: \"IN_PROGRESS\",\n PENDING: \"PENDING\"\n};\nvar WarningType = {\n MUTUALLY_EXCLUSIVE_PROPERTIES: \"MUTUALLY_EXCLUSIVE_PROPERTIES\",\n MUTUALLY_EXCLUSIVE_TYPES: \"MUTUALLY_EXCLUSIVE_TYPES\",\n UNSUPPORTED_PROPERTIES: \"UNSUPPORTED_PROPERTIES\"\n};\nvar GeneratedTemplateStatus = {\n COMPLETE: \"COMPLETE\",\n CREATE_IN_PROGRESS: \"CREATE_IN_PROGRESS\",\n CREATE_PENDING: \"CREATE_PENDING\",\n DELETE_IN_PROGRESS: \"DELETE_IN_PROGRESS\",\n DELETE_PENDING: \"DELETE_PENDING\",\n FAILED: \"FAILED\",\n UPDATE_IN_PROGRESS: \"UPDATE_IN_PROGRESS\",\n UPDATE_PENDING: \"UPDATE_PENDING\"\n};\nvar OrganizationStatus = {\n DISABLED: \"DISABLED\",\n DISABLED_PERMANENTLY: \"DISABLED_PERMANENTLY\",\n ENABLED: \"ENABLED\"\n};\nvar IdentityProvider = {\n AWS_Marketplace: \"AWS_Marketplace\",\n Bitbucket: \"Bitbucket\",\n GitHub: \"GitHub\"\n};\nvar PublisherStatus = {\n UNVERIFIED: \"UNVERIFIED\",\n VERIFIED: \"VERIFIED\"\n};\nvar ResourceScanStatus = {\n COMPLETE: \"COMPLETE\",\n EXPIRED: \"EXPIRED\",\n FAILED: \"FAILED\",\n IN_PROGRESS: \"IN_PROGRESS\"\n};\nvar _ResourceScanNotFoundException = class _ResourceScanNotFoundException extends CloudFormationServiceException {\n /**\n * @internal\n */\n constructor(opts) {\n super({\n name: \"ResourceScanNotFoundException\",\n $fault: \"client\",\n ...opts\n });\n this.name = \"ResourceScanNotFoundException\";\n this.$fault = \"client\";\n Object.setPrototypeOf(this, _ResourceScanNotFoundException.prototype);\n this.Message = opts.Message;\n }\n};\n__name(_ResourceScanNotFoundException, \"ResourceScanNotFoundException\");\nvar ResourceScanNotFoundException = _ResourceScanNotFoundException;\nvar StackDriftDetectionStatus = {\n DETECTION_COMPLETE: \"DETECTION_COMPLETE\",\n DETECTION_FAILED: \"DETECTION_FAILED\",\n DETECTION_IN_PROGRESS: \"DETECTION_IN_PROGRESS\"\n};\nvar StackDriftStatus = {\n DRIFTED: \"DRIFTED\",\n IN_SYNC: \"IN_SYNC\",\n NOT_CHECKED: \"NOT_CHECKED\",\n UNKNOWN: \"UNKNOWN\"\n};\nvar DetailedStatus = {\n CONFIGURATION_COMPLETE: \"CONFIGURATION_COMPLETE\",\n VALIDATION_FAILED: \"VALIDATION_FAILED\"\n};\nvar HookStatus = {\n HOOK_COMPLETE_FAILED: \"HOOK_COMPLETE_FAILED\",\n HOOK_COMPLETE_SUCCEEDED: \"HOOK_COMPLETE_SUCCEEDED\",\n HOOK_FAILED: \"HOOK_FAILED\",\n HOOK_IN_PROGRESS: \"HOOK_IN_PROGRESS\"\n};\nvar ResourceStatus = {\n CREATE_COMPLETE: \"CREATE_COMPLETE\",\n CREATE_FAILED: \"CREATE_FAILED\",\n CREATE_IN_PROGRESS: \"CREATE_IN_PROGRESS\",\n DELETE_COMPLETE: \"DELETE_COMPLETE\",\n DELETE_FAILED: \"DELETE_FAILED\",\n DELETE_IN_PROGRESS: \"DELETE_IN_PROGRESS\",\n DELETE_SKIPPED: \"DELETE_SKIPPED\",\n IMPORT_COMPLETE: \"IMPORT_COMPLETE\",\n IMPORT_FAILED: \"IMPORT_FAILED\",\n IMPORT_IN_PROGRESS: \"IMPORT_IN_PROGRESS\",\n IMPORT_ROLLBACK_COMPLETE: \"IMPORT_ROLLBACK_COMPLETE\",\n IMPORT_ROLLBACK_FAILED: \"IMPORT_ROLLBACK_FAILED\",\n IMPORT_ROLLBACK_IN_PROGRESS: \"IMPORT_ROLLBACK_IN_PROGRESS\",\n ROLLBACK_COMPLETE: \"ROLLBACK_COMPLETE\",\n ROLLBACK_FAILED: \"ROLLBACK_FAILED\",\n ROLLBACK_IN_PROGRESS: \"ROLLBACK_IN_PROGRESS\",\n UPDATE_COMPLETE: \"UPDATE_COMPLETE\",\n UPDATE_FAILED: \"UPDATE_FAILED\",\n UPDATE_IN_PROGRESS: \"UPDATE_IN_PROGRESS\",\n UPDATE_ROLLBACK_COMPLETE: \"UPDATE_ROLLBACK_COMPLETE\",\n UPDATE_ROLLBACK_FAILED: \"UPDATE_ROLLBACK_FAILED\",\n UPDATE_ROLLBACK_IN_PROGRESS: \"UPDATE_ROLLBACK_IN_PROGRESS\"\n};\nvar StackInstanceDetailedStatus = {\n CANCELLED: \"CANCELLED\",\n FAILED: \"FAILED\",\n FAILED_IMPORT: \"FAILED_IMPORT\",\n INOPERABLE: \"INOPERABLE\",\n PENDING: \"PENDING\",\n RUNNING: \"RUNNING\",\n SKIPPED_SUSPENDED_ACCOUNT: \"SKIPPED_SUSPENDED_ACCOUNT\",\n SUCCEEDED: \"SUCCEEDED\"\n};\nvar StackInstanceStatus = {\n CURRENT: \"CURRENT\",\n INOPERABLE: \"INOPERABLE\",\n OUTDATED: \"OUTDATED\"\n};\nvar _StackInstanceNotFoundException = class _StackInstanceNotFoundException extends CloudFormationServiceException {\n /**\n * @internal\n */\n constructor(opts) {\n super({\n name: \"StackInstanceNotFoundException\",\n $fault: \"client\",\n ...opts\n });\n this.name = \"StackInstanceNotFoundException\";\n this.$fault = \"client\";\n Object.setPrototypeOf(this, _StackInstanceNotFoundException.prototype);\n this.Message = opts.Message;\n }\n};\n__name(_StackInstanceNotFoundException, \"StackInstanceNotFoundException\");\nvar StackInstanceNotFoundException = _StackInstanceNotFoundException;\nvar StackResourceDriftStatus = {\n DELETED: \"DELETED\",\n IN_SYNC: \"IN_SYNC\",\n MODIFIED: \"MODIFIED\",\n NOT_CHECKED: \"NOT_CHECKED\"\n};\nvar DifferenceType = {\n ADD: \"ADD\",\n NOT_EQUAL: \"NOT_EQUAL\",\n REMOVE: \"REMOVE\"\n};\nvar StackStatus = {\n CREATE_COMPLETE: \"CREATE_COMPLETE\",\n CREATE_FAILED: \"CREATE_FAILED\",\n CREATE_IN_PROGRESS: \"CREATE_IN_PROGRESS\",\n DELETE_COMPLETE: \"DELETE_COMPLETE\",\n DELETE_FAILED: \"DELETE_FAILED\",\n DELETE_IN_PROGRESS: \"DELETE_IN_PROGRESS\",\n IMPORT_COMPLETE: \"IMPORT_COMPLETE\",\n IMPORT_IN_PROGRESS: \"IMPORT_IN_PROGRESS\",\n IMPORT_ROLLBACK_COMPLETE: \"IMPORT_ROLLBACK_COMPLETE\",\n IMPORT_ROLLBACK_FAILED: \"IMPORT_ROLLBACK_FAILED\",\n IMPORT_ROLLBACK_IN_PROGRESS: \"IMPORT_ROLLBACK_IN_PROGRESS\",\n REVIEW_IN_PROGRESS: \"REVIEW_IN_PROGRESS\",\n ROLLBACK_COMPLETE: \"ROLLBACK_COMPLETE\",\n ROLLBACK_FAILED: \"ROLLBACK_FAILED\",\n ROLLBACK_IN_PROGRESS: \"ROLLBACK_IN_PROGRESS\",\n UPDATE_COMPLETE: \"UPDATE_COMPLETE\",\n UPDATE_COMPLETE_CLEANUP_IN_PROGRESS: \"UPDATE_COMPLETE_CLEANUP_IN_PROGRESS\",\n UPDATE_FAILED: \"UPDATE_FAILED\",\n UPDATE_IN_PROGRESS: \"UPDATE_IN_PROGRESS\",\n UPDATE_ROLLBACK_COMPLETE: \"UPDATE_ROLLBACK_COMPLETE\",\n UPDATE_ROLLBACK_COMPLETE_CLEANUP_IN_PROGRESS: \"UPDATE_ROLLBACK_COMPLETE_CLEANUP_IN_PROGRESS\",\n UPDATE_ROLLBACK_FAILED: \"UPDATE_ROLLBACK_FAILED\",\n UPDATE_ROLLBACK_IN_PROGRESS: \"UPDATE_ROLLBACK_IN_PROGRESS\"\n};\nvar StackSetDriftDetectionStatus = {\n COMPLETED: \"COMPLETED\",\n FAILED: \"FAILED\",\n IN_PROGRESS: \"IN_PROGRESS\",\n PARTIAL_SUCCESS: \"PARTIAL_SUCCESS\",\n STOPPED: \"STOPPED\"\n};\nvar StackSetDriftStatus = {\n DRIFTED: \"DRIFTED\",\n IN_SYNC: \"IN_SYNC\",\n NOT_CHECKED: \"NOT_CHECKED\"\n};\nvar StackSetStatus = {\n ACTIVE: \"ACTIVE\",\n DELETED: \"DELETED\"\n};\nvar StackSetOperationAction = {\n CREATE: \"CREATE\",\n DELETE: \"DELETE\",\n DETECT_DRIFT: \"DETECT_DRIFT\",\n UPDATE: \"UPDATE\"\n};\nvar StackSetOperationStatus = {\n FAILED: \"FAILED\",\n QUEUED: \"QUEUED\",\n RUNNING: \"RUNNING\",\n STOPPED: \"STOPPED\",\n STOPPING: \"STOPPING\",\n SUCCEEDED: \"SUCCEEDED\"\n};\nvar DeprecatedStatus = {\n DEPRECATED: \"DEPRECATED\",\n LIVE: \"LIVE\"\n};\nvar ProvisioningType = {\n FULLY_MUTABLE: \"FULLY_MUTABLE\",\n IMMUTABLE: \"IMMUTABLE\",\n NON_PROVISIONABLE: \"NON_PROVISIONABLE\"\n};\nvar TypeTestsStatus = {\n FAILED: \"FAILED\",\n IN_PROGRESS: \"IN_PROGRESS\",\n NOT_TESTED: \"NOT_TESTED\",\n PASSED: \"PASSED\"\n};\nvar Visibility = {\n PRIVATE: \"PRIVATE\",\n PUBLIC: \"PUBLIC\"\n};\nvar RegistrationStatus = {\n COMPLETE: \"COMPLETE\",\n FAILED: \"FAILED\",\n IN_PROGRESS: \"IN_PROGRESS\"\n};\nvar TemplateFormat = {\n JSON: \"JSON\",\n YAML: \"YAML\"\n};\nvar TemplateStage = {\n Original: \"Original\",\n Processed: \"Processed\"\n};\nvar _StackNotFoundException = class _StackNotFoundException extends CloudFormationServiceException {\n /**\n * @internal\n */\n constructor(opts) {\n super({\n name: \"StackNotFoundException\",\n $fault: \"client\",\n ...opts\n });\n this.name = \"StackNotFoundException\";\n this.$fault = \"client\";\n Object.setPrototypeOf(this, _StackNotFoundException.prototype);\n this.Message = opts.Message;\n }\n};\n__name(_StackNotFoundException, \"StackNotFoundException\");\nvar StackNotFoundException = _StackNotFoundException;\nvar _ResourceScanInProgressException = class _ResourceScanInProgressException extends CloudFormationServiceException {\n /**\n * @internal\n */\n constructor(opts) {\n super({\n name: \"ResourceScanInProgressException\",\n $fault: \"client\",\n ...opts\n });\n this.name = \"ResourceScanInProgressException\";\n this.$fault = \"client\";\n Object.setPrototypeOf(this, _ResourceScanInProgressException.prototype);\n this.Message = opts.Message;\n }\n};\n__name(_ResourceScanInProgressException, \"ResourceScanInProgressException\");\nvar ResourceScanInProgressException = _ResourceScanInProgressException;\nvar StackInstanceFilterName = {\n DETAILED_STATUS: \"DETAILED_STATUS\",\n DRIFT_STATUS: \"DRIFT_STATUS\",\n LAST_OPERATION_ID: \"LAST_OPERATION_ID\"\n};\nvar OperationResultFilterName = {\n OPERATION_RESULT_STATUS: \"OPERATION_RESULT_STATUS\"\n};\nvar StackSetOperationResultStatus = {\n CANCELLED: \"CANCELLED\",\n FAILED: \"FAILED\",\n PENDING: \"PENDING\",\n RUNNING: \"RUNNING\",\n SUCCEEDED: \"SUCCEEDED\"\n};\nvar _InvalidStateTransitionException = class _InvalidStateTransitionException extends CloudFormationServiceException {\n /**\n * @internal\n */\n constructor(opts) {\n super({\n name: \"InvalidStateTransitionException\",\n $fault: \"client\",\n ...opts\n });\n this.name = \"InvalidStateTransitionException\";\n this.$fault = \"client\";\n Object.setPrototypeOf(this, _InvalidStateTransitionException.prototype);\n this.Message = opts.Message;\n }\n};\n__name(_InvalidStateTransitionException, \"InvalidStateTransitionException\");\nvar InvalidStateTransitionException = _InvalidStateTransitionException;\nvar _OperationStatusCheckFailedException = class _OperationStatusCheckFailedException extends CloudFormationServiceException {\n /**\n * @internal\n */\n constructor(opts) {\n super({\n name: \"OperationStatusCheckFailedException\",\n $fault: \"client\",\n ...opts\n });\n this.name = \"OperationStatusCheckFailedException\";\n this.$fault = \"client\";\n Object.setPrototypeOf(this, _OperationStatusCheckFailedException.prototype);\n this.Message = opts.Message;\n }\n};\n__name(_OperationStatusCheckFailedException, \"OperationStatusCheckFailedException\");\nvar OperationStatusCheckFailedException = _OperationStatusCheckFailedException;\nvar OperationStatus = {\n FAILED: \"FAILED\",\n IN_PROGRESS: \"IN_PROGRESS\",\n PENDING: \"PENDING\",\n SUCCESS: \"SUCCESS\"\n};\nvar HandlerErrorCode = {\n AccessDenied: \"AccessDenied\",\n AlreadyExists: \"AlreadyExists\",\n GeneralServiceException: \"GeneralServiceException\",\n HandlerInternalFailure: \"HandlerInternalFailure\",\n InternalFailure: \"InternalFailure\",\n InvalidCredentials: \"InvalidCredentials\",\n InvalidRequest: \"InvalidRequest\",\n InvalidTypeConfiguration: \"InvalidTypeConfiguration\",\n NetworkFailure: \"NetworkFailure\",\n NonCompliant: \"NonCompliant\",\n NotFound: \"NotFound\",\n NotUpdatable: \"NotUpdatable\",\n ResourceConflict: \"ResourceConflict\",\n ServiceInternalError: \"ServiceInternalError\",\n ServiceLimitExceeded: \"ServiceLimitExceeded\",\n ServiceTimeout: \"NotStabilized\",\n Throttling: \"Throttling\",\n Unknown: \"Unknown\",\n UnsupportedTarget: \"UnsupportedTarget\"\n};\n\n// src/models/models_1.ts\nvar ResourceSignalStatus = {\n FAILURE: \"FAILURE\",\n SUCCESS: \"SUCCESS\"\n};\nvar _ResourceScanLimitExceededException = class _ResourceScanLimitExceededException extends CloudFormationServiceException {\n /**\n * @internal\n */\n constructor(opts) {\n super({\n name: \"ResourceScanLimitExceededException\",\n $fault: \"client\",\n ...opts\n });\n this.name = \"ResourceScanLimitExceededException\";\n this.$fault = \"client\";\n Object.setPrototypeOf(this, _ResourceScanLimitExceededException.prototype);\n this.Message = opts.Message;\n }\n};\n__name(_ResourceScanLimitExceededException, \"ResourceScanLimitExceededException\");\nvar ResourceScanLimitExceededException = _ResourceScanLimitExceededException;\n\n// src/protocols/Aws_query.ts\nvar se_ActivateOrganizationsAccessCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_ActivateOrganizationsAccessInput(input, context),\n [_A]: _AOA,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_ActivateOrganizationsAccessCommand\");\nvar se_ActivateTypeCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_ActivateTypeInput(input, context),\n [_A]: _AT,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_ActivateTypeCommand\");\nvar se_BatchDescribeTypeConfigurationsCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_BatchDescribeTypeConfigurationsInput(input, context),\n [_A]: _BDTC,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_BatchDescribeTypeConfigurationsCommand\");\nvar se_CancelUpdateStackCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_CancelUpdateStackInput(input, context),\n [_A]: _CUS,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_CancelUpdateStackCommand\");\nvar se_ContinueUpdateRollbackCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_ContinueUpdateRollbackInput(input, context),\n [_A]: _CUR,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_ContinueUpdateRollbackCommand\");\nvar se_CreateChangeSetCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_CreateChangeSetInput(input, context),\n [_A]: _CCS,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_CreateChangeSetCommand\");\nvar se_CreateGeneratedTemplateCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_CreateGeneratedTemplateInput(input, context),\n [_A]: _CGT,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_CreateGeneratedTemplateCommand\");\nvar se_CreateStackCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_CreateStackInput(input, context),\n [_A]: _CS,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_CreateStackCommand\");\nvar se_CreateStackInstancesCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_CreateStackInstancesInput(input, context),\n [_A]: _CSI,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_CreateStackInstancesCommand\");\nvar se_CreateStackSetCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_CreateStackSetInput(input, context),\n [_A]: _CSS,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_CreateStackSetCommand\");\nvar se_DeactivateOrganizationsAccessCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_DeactivateOrganizationsAccessInput(input, context),\n [_A]: _DOA,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_DeactivateOrganizationsAccessCommand\");\nvar se_DeactivateTypeCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_DeactivateTypeInput(input, context),\n [_A]: _DT,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_DeactivateTypeCommand\");\nvar se_DeleteChangeSetCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_DeleteChangeSetInput(input, context),\n [_A]: _DCS,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_DeleteChangeSetCommand\");\nvar se_DeleteGeneratedTemplateCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_DeleteGeneratedTemplateInput(input, context),\n [_A]: _DGT,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_DeleteGeneratedTemplateCommand\");\nvar se_DeleteStackCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_DeleteStackInput(input, context),\n [_A]: _DS,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_DeleteStackCommand\");\nvar se_DeleteStackInstancesCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_DeleteStackInstancesInput(input, context),\n [_A]: _DSI,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_DeleteStackInstancesCommand\");\nvar se_DeleteStackSetCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_DeleteStackSetInput(input, context),\n [_A]: _DSS,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_DeleteStackSetCommand\");\nvar se_DeregisterTypeCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_DeregisterTypeInput(input, context),\n [_A]: _DTe,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_DeregisterTypeCommand\");\nvar se_DescribeAccountLimitsCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_DescribeAccountLimitsInput(input, context),\n [_A]: _DAL,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_DescribeAccountLimitsCommand\");\nvar se_DescribeChangeSetCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_DescribeChangeSetInput(input, context),\n [_A]: _DCSe,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_DescribeChangeSetCommand\");\nvar se_DescribeChangeSetHooksCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_DescribeChangeSetHooksInput(input, context),\n [_A]: _DCSH,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_DescribeChangeSetHooksCommand\");\nvar se_DescribeGeneratedTemplateCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_DescribeGeneratedTemplateInput(input, context),\n [_A]: _DGTe,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_DescribeGeneratedTemplateCommand\");\nvar se_DescribeOrganizationsAccessCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_DescribeOrganizationsAccessInput(input, context),\n [_A]: _DOAe,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_DescribeOrganizationsAccessCommand\");\nvar se_DescribePublisherCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_DescribePublisherInput(input, context),\n [_A]: _DP,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_DescribePublisherCommand\");\nvar se_DescribeResourceScanCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_DescribeResourceScanInput(input, context),\n [_A]: _DRS,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_DescribeResourceScanCommand\");\nvar se_DescribeStackDriftDetectionStatusCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_DescribeStackDriftDetectionStatusInput(input, context),\n [_A]: _DSDDS,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_DescribeStackDriftDetectionStatusCommand\");\nvar se_DescribeStackEventsCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_DescribeStackEventsInput(input, context),\n [_A]: _DSE,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_DescribeStackEventsCommand\");\nvar se_DescribeStackInstanceCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_DescribeStackInstanceInput(input, context),\n [_A]: _DSIe,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_DescribeStackInstanceCommand\");\nvar se_DescribeStackResourceCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_DescribeStackResourceInput(input, context),\n [_A]: _DSR,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_DescribeStackResourceCommand\");\nvar se_DescribeStackResourceDriftsCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_DescribeStackResourceDriftsInput(input, context),\n [_A]: _DSRD,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_DescribeStackResourceDriftsCommand\");\nvar se_DescribeStackResourcesCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_DescribeStackResourcesInput(input, context),\n [_A]: _DSRe,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_DescribeStackResourcesCommand\");\nvar se_DescribeStacksCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_DescribeStacksInput(input, context),\n [_A]: _DSe,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_DescribeStacksCommand\");\nvar se_DescribeStackSetCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_DescribeStackSetInput(input, context),\n [_A]: _DSSe,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_DescribeStackSetCommand\");\nvar se_DescribeStackSetOperationCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_DescribeStackSetOperationInput(input, context),\n [_A]: _DSSO,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_DescribeStackSetOperationCommand\");\nvar se_DescribeTypeCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_DescribeTypeInput(input, context),\n [_A]: _DTes,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_DescribeTypeCommand\");\nvar se_DescribeTypeRegistrationCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_DescribeTypeRegistrationInput(input, context),\n [_A]: _DTR,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_DescribeTypeRegistrationCommand\");\nvar se_DetectStackDriftCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_DetectStackDriftInput(input, context),\n [_A]: _DSD,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_DetectStackDriftCommand\");\nvar se_DetectStackResourceDriftCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_DetectStackResourceDriftInput(input, context),\n [_A]: _DSRDe,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_DetectStackResourceDriftCommand\");\nvar se_DetectStackSetDriftCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_DetectStackSetDriftInput(input, context),\n [_A]: _DSSD,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_DetectStackSetDriftCommand\");\nvar se_EstimateTemplateCostCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_EstimateTemplateCostInput(input, context),\n [_A]: _ETC,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_EstimateTemplateCostCommand\");\nvar se_ExecuteChangeSetCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_ExecuteChangeSetInput(input, context),\n [_A]: _ECS,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_ExecuteChangeSetCommand\");\nvar se_GetGeneratedTemplateCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_GetGeneratedTemplateInput(input, context),\n [_A]: _GGT,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_GetGeneratedTemplateCommand\");\nvar se_GetStackPolicyCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_GetStackPolicyInput(input, context),\n [_A]: _GSP,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_GetStackPolicyCommand\");\nvar se_GetTemplateCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_GetTemplateInput(input, context),\n [_A]: _GT,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_GetTemplateCommand\");\nvar se_GetTemplateSummaryCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_GetTemplateSummaryInput(input, context),\n [_A]: _GTS,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_GetTemplateSummaryCommand\");\nvar se_ImportStacksToStackSetCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_ImportStacksToStackSetInput(input, context),\n [_A]: _ISTSS,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_ImportStacksToStackSetCommand\");\nvar se_ListChangeSetsCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_ListChangeSetsInput(input, context),\n [_A]: _LCS,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_ListChangeSetsCommand\");\nvar se_ListExportsCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_ListExportsInput(input, context),\n [_A]: _LE,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_ListExportsCommand\");\nvar se_ListGeneratedTemplatesCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_ListGeneratedTemplatesInput(input, context),\n [_A]: _LGT,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_ListGeneratedTemplatesCommand\");\nvar se_ListImportsCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_ListImportsInput(input, context),\n [_A]: _LI,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_ListImportsCommand\");\nvar se_ListResourceScanRelatedResourcesCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_ListResourceScanRelatedResourcesInput(input, context),\n [_A]: _LRSRR,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_ListResourceScanRelatedResourcesCommand\");\nvar se_ListResourceScanResourcesCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_ListResourceScanResourcesInput(input, context),\n [_A]: _LRSR,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_ListResourceScanResourcesCommand\");\nvar se_ListResourceScansCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_ListResourceScansInput(input, context),\n [_A]: _LRS,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_ListResourceScansCommand\");\nvar se_ListStackInstanceResourceDriftsCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_ListStackInstanceResourceDriftsInput(input, context),\n [_A]: _LSIRD,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_ListStackInstanceResourceDriftsCommand\");\nvar se_ListStackInstancesCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_ListStackInstancesInput(input, context),\n [_A]: _LSI,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_ListStackInstancesCommand\");\nvar se_ListStackResourcesCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_ListStackResourcesInput(input, context),\n [_A]: _LSR,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_ListStackResourcesCommand\");\nvar se_ListStacksCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_ListStacksInput(input, context),\n [_A]: _LS,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_ListStacksCommand\");\nvar se_ListStackSetAutoDeploymentTargetsCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_ListStackSetAutoDeploymentTargetsInput(input, context),\n [_A]: _LSSADT,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_ListStackSetAutoDeploymentTargetsCommand\");\nvar se_ListStackSetOperationResultsCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_ListStackSetOperationResultsInput(input, context),\n [_A]: _LSSOR,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_ListStackSetOperationResultsCommand\");\nvar se_ListStackSetOperationsCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_ListStackSetOperationsInput(input, context),\n [_A]: _LSSO,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_ListStackSetOperationsCommand\");\nvar se_ListStackSetsCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_ListStackSetsInput(input, context),\n [_A]: _LSS,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_ListStackSetsCommand\");\nvar se_ListTypeRegistrationsCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_ListTypeRegistrationsInput(input, context),\n [_A]: _LTR,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_ListTypeRegistrationsCommand\");\nvar se_ListTypesCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_ListTypesInput(input, context),\n [_A]: _LT,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_ListTypesCommand\");\nvar se_ListTypeVersionsCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_ListTypeVersionsInput(input, context),\n [_A]: _LTV,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_ListTypeVersionsCommand\");\nvar se_PublishTypeCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_PublishTypeInput(input, context),\n [_A]: _PT,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_PublishTypeCommand\");\nvar se_RecordHandlerProgressCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_RecordHandlerProgressInput(input, context),\n [_A]: _RHP,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_RecordHandlerProgressCommand\");\nvar se_RegisterPublisherCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_RegisterPublisherInput(input, context),\n [_A]: _RP,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_RegisterPublisherCommand\");\nvar se_RegisterTypeCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_RegisterTypeInput(input, context),\n [_A]: _RT,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_RegisterTypeCommand\");\nvar se_RollbackStackCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_RollbackStackInput(input, context),\n [_A]: _RS,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_RollbackStackCommand\");\nvar se_SetStackPolicyCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_SetStackPolicyInput(input, context),\n [_A]: _SSP,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_SetStackPolicyCommand\");\nvar se_SetTypeConfigurationCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_SetTypeConfigurationInput(input, context),\n [_A]: _STC,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_SetTypeConfigurationCommand\");\nvar se_SetTypeDefaultVersionCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_SetTypeDefaultVersionInput(input, context),\n [_A]: _STDV,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_SetTypeDefaultVersionCommand\");\nvar se_SignalResourceCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_SignalResourceInput(input, context),\n [_A]: _SR,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_SignalResourceCommand\");\nvar se_StartResourceScanCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_StartResourceScanInput(input, context),\n [_A]: _SRS,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_StartResourceScanCommand\");\nvar se_StopStackSetOperationCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_StopStackSetOperationInput(input, context),\n [_A]: _SSSO,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_StopStackSetOperationCommand\");\nvar se_TestTypeCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_TestTypeInput(input, context),\n [_A]: _TT,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_TestTypeCommand\");\nvar se_UpdateGeneratedTemplateCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_UpdateGeneratedTemplateInput(input, context),\n [_A]: _UGT,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_UpdateGeneratedTemplateCommand\");\nvar se_UpdateStackCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_UpdateStackInput(input, context),\n [_A]: _US,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_UpdateStackCommand\");\nvar se_UpdateStackInstancesCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_UpdateStackInstancesInput(input, context),\n [_A]: _USI,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_UpdateStackInstancesCommand\");\nvar se_UpdateStackSetCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_UpdateStackSetInput(input, context),\n [_A]: _USS,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_UpdateStackSetCommand\");\nvar se_UpdateTerminationProtectionCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_UpdateTerminationProtectionInput(input, context),\n [_A]: _UTP,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_UpdateTerminationProtectionCommand\");\nvar se_ValidateTemplateCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_ValidateTemplateInput(input, context),\n [_A]: _VT,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_ValidateTemplateCommand\");\nvar de_ActivateOrganizationsAccessCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_ActivateOrganizationsAccessOutput(data.ActivateOrganizationsAccessResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_ActivateOrganizationsAccessCommand\");\nvar de_ActivateTypeCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_ActivateTypeOutput(data.ActivateTypeResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_ActivateTypeCommand\");\nvar de_BatchDescribeTypeConfigurationsCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_BatchDescribeTypeConfigurationsOutput(data.BatchDescribeTypeConfigurationsResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_BatchDescribeTypeConfigurationsCommand\");\nvar de_CancelUpdateStackCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n await (0, import_smithy_client.collectBody)(output.body, context);\n const response = {\n $metadata: deserializeMetadata(output)\n };\n return response;\n}, \"de_CancelUpdateStackCommand\");\nvar de_ContinueUpdateRollbackCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_ContinueUpdateRollbackOutput(data.ContinueUpdateRollbackResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_ContinueUpdateRollbackCommand\");\nvar de_CreateChangeSetCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_CreateChangeSetOutput(data.CreateChangeSetResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_CreateChangeSetCommand\");\nvar de_CreateGeneratedTemplateCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_CreateGeneratedTemplateOutput(data.CreateGeneratedTemplateResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_CreateGeneratedTemplateCommand\");\nvar de_CreateStackCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_CreateStackOutput(data.CreateStackResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_CreateStackCommand\");\nvar de_CreateStackInstancesCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_CreateStackInstancesOutput(data.CreateStackInstancesResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_CreateStackInstancesCommand\");\nvar de_CreateStackSetCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_CreateStackSetOutput(data.CreateStackSetResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_CreateStackSetCommand\");\nvar de_DeactivateOrganizationsAccessCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_DeactivateOrganizationsAccessOutput(data.DeactivateOrganizationsAccessResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_DeactivateOrganizationsAccessCommand\");\nvar de_DeactivateTypeCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_DeactivateTypeOutput(data.DeactivateTypeResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_DeactivateTypeCommand\");\nvar de_DeleteChangeSetCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_DeleteChangeSetOutput(data.DeleteChangeSetResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_DeleteChangeSetCommand\");\nvar de_DeleteGeneratedTemplateCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n await (0, import_smithy_client.collectBody)(output.body, context);\n const response = {\n $metadata: deserializeMetadata(output)\n };\n return response;\n}, \"de_DeleteGeneratedTemplateCommand\");\nvar de_DeleteStackCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n await (0, import_smithy_client.collectBody)(output.body, context);\n const response = {\n $metadata: deserializeMetadata(output)\n };\n return response;\n}, \"de_DeleteStackCommand\");\nvar de_DeleteStackInstancesCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_DeleteStackInstancesOutput(data.DeleteStackInstancesResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_DeleteStackInstancesCommand\");\nvar de_DeleteStackSetCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_DeleteStackSetOutput(data.DeleteStackSetResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_DeleteStackSetCommand\");\nvar de_DeregisterTypeCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_DeregisterTypeOutput(data.DeregisterTypeResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_DeregisterTypeCommand\");\nvar de_DescribeAccountLimitsCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_DescribeAccountLimitsOutput(data.DescribeAccountLimitsResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_DescribeAccountLimitsCommand\");\nvar de_DescribeChangeSetCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_DescribeChangeSetOutput(data.DescribeChangeSetResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_DescribeChangeSetCommand\");\nvar de_DescribeChangeSetHooksCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_DescribeChangeSetHooksOutput(data.DescribeChangeSetHooksResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_DescribeChangeSetHooksCommand\");\nvar de_DescribeGeneratedTemplateCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_DescribeGeneratedTemplateOutput(data.DescribeGeneratedTemplateResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_DescribeGeneratedTemplateCommand\");\nvar de_DescribeOrganizationsAccessCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_DescribeOrganizationsAccessOutput(data.DescribeOrganizationsAccessResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_DescribeOrganizationsAccessCommand\");\nvar de_DescribePublisherCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_DescribePublisherOutput(data.DescribePublisherResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_DescribePublisherCommand\");\nvar de_DescribeResourceScanCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_DescribeResourceScanOutput(data.DescribeResourceScanResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_DescribeResourceScanCommand\");\nvar de_DescribeStackDriftDetectionStatusCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_DescribeStackDriftDetectionStatusOutput(data.DescribeStackDriftDetectionStatusResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_DescribeStackDriftDetectionStatusCommand\");\nvar de_DescribeStackEventsCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_DescribeStackEventsOutput(data.DescribeStackEventsResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_DescribeStackEventsCommand\");\nvar de_DescribeStackInstanceCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_DescribeStackInstanceOutput(data.DescribeStackInstanceResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_DescribeStackInstanceCommand\");\nvar de_DescribeStackResourceCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_DescribeStackResourceOutput(data.DescribeStackResourceResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_DescribeStackResourceCommand\");\nvar de_DescribeStackResourceDriftsCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_DescribeStackResourceDriftsOutput(data.DescribeStackResourceDriftsResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_DescribeStackResourceDriftsCommand\");\nvar de_DescribeStackResourcesCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_DescribeStackResourcesOutput(data.DescribeStackResourcesResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_DescribeStackResourcesCommand\");\nvar de_DescribeStacksCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_DescribeStacksOutput(data.DescribeStacksResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_DescribeStacksCommand\");\nvar de_DescribeStackSetCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_DescribeStackSetOutput(data.DescribeStackSetResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_DescribeStackSetCommand\");\nvar de_DescribeStackSetOperationCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_DescribeStackSetOperationOutput(data.DescribeStackSetOperationResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_DescribeStackSetOperationCommand\");\nvar de_DescribeTypeCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_DescribeTypeOutput(data.DescribeTypeResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_DescribeTypeCommand\");\nvar de_DescribeTypeRegistrationCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_DescribeTypeRegistrationOutput(data.DescribeTypeRegistrationResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_DescribeTypeRegistrationCommand\");\nvar de_DetectStackDriftCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_DetectStackDriftOutput(data.DetectStackDriftResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_DetectStackDriftCommand\");\nvar de_DetectStackResourceDriftCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_DetectStackResourceDriftOutput(data.DetectStackResourceDriftResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_DetectStackResourceDriftCommand\");\nvar de_DetectStackSetDriftCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_DetectStackSetDriftOutput(data.DetectStackSetDriftResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_DetectStackSetDriftCommand\");\nvar de_EstimateTemplateCostCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_EstimateTemplateCostOutput(data.EstimateTemplateCostResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_EstimateTemplateCostCommand\");\nvar de_ExecuteChangeSetCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_ExecuteChangeSetOutput(data.ExecuteChangeSetResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_ExecuteChangeSetCommand\");\nvar de_GetGeneratedTemplateCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_GetGeneratedTemplateOutput(data.GetGeneratedTemplateResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_GetGeneratedTemplateCommand\");\nvar de_GetStackPolicyCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_GetStackPolicyOutput(data.GetStackPolicyResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_GetStackPolicyCommand\");\nvar de_GetTemplateCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_GetTemplateOutput(data.GetTemplateResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_GetTemplateCommand\");\nvar de_GetTemplateSummaryCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_GetTemplateSummaryOutput(data.GetTemplateSummaryResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_GetTemplateSummaryCommand\");\nvar de_ImportStacksToStackSetCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_ImportStacksToStackSetOutput(data.ImportStacksToStackSetResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_ImportStacksToStackSetCommand\");\nvar de_ListChangeSetsCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_ListChangeSetsOutput(data.ListChangeSetsResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_ListChangeSetsCommand\");\nvar de_ListExportsCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_ListExportsOutput(data.ListExportsResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_ListExportsCommand\");\nvar de_ListGeneratedTemplatesCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_ListGeneratedTemplatesOutput(data.ListGeneratedTemplatesResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_ListGeneratedTemplatesCommand\");\nvar de_ListImportsCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_ListImportsOutput(data.ListImportsResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_ListImportsCommand\");\nvar de_ListResourceScanRelatedResourcesCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_ListResourceScanRelatedResourcesOutput(data.ListResourceScanRelatedResourcesResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_ListResourceScanRelatedResourcesCommand\");\nvar de_ListResourceScanResourcesCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_ListResourceScanResourcesOutput(data.ListResourceScanResourcesResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_ListResourceScanResourcesCommand\");\nvar de_ListResourceScansCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_ListResourceScansOutput(data.ListResourceScansResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_ListResourceScansCommand\");\nvar de_ListStackInstanceResourceDriftsCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_ListStackInstanceResourceDriftsOutput(data.ListStackInstanceResourceDriftsResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_ListStackInstanceResourceDriftsCommand\");\nvar de_ListStackInstancesCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_ListStackInstancesOutput(data.ListStackInstancesResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_ListStackInstancesCommand\");\nvar de_ListStackResourcesCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_ListStackResourcesOutput(data.ListStackResourcesResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_ListStackResourcesCommand\");\nvar de_ListStacksCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_ListStacksOutput(data.ListStacksResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_ListStacksCommand\");\nvar de_ListStackSetAutoDeploymentTargetsCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_ListStackSetAutoDeploymentTargetsOutput(data.ListStackSetAutoDeploymentTargetsResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_ListStackSetAutoDeploymentTargetsCommand\");\nvar de_ListStackSetOperationResultsCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_ListStackSetOperationResultsOutput(data.ListStackSetOperationResultsResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_ListStackSetOperationResultsCommand\");\nvar de_ListStackSetOperationsCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_ListStackSetOperationsOutput(data.ListStackSetOperationsResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_ListStackSetOperationsCommand\");\nvar de_ListStackSetsCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_ListStackSetsOutput(data.ListStackSetsResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_ListStackSetsCommand\");\nvar de_ListTypeRegistrationsCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_ListTypeRegistrationsOutput(data.ListTypeRegistrationsResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_ListTypeRegistrationsCommand\");\nvar de_ListTypesCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_ListTypesOutput(data.ListTypesResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_ListTypesCommand\");\nvar de_ListTypeVersionsCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_ListTypeVersionsOutput(data.ListTypeVersionsResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_ListTypeVersionsCommand\");\nvar de_PublishTypeCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_PublishTypeOutput(data.PublishTypeResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_PublishTypeCommand\");\nvar de_RecordHandlerProgressCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_RecordHandlerProgressOutput(data.RecordHandlerProgressResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_RecordHandlerProgressCommand\");\nvar de_RegisterPublisherCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_RegisterPublisherOutput(data.RegisterPublisherResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_RegisterPublisherCommand\");\nvar de_RegisterTypeCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_RegisterTypeOutput(data.RegisterTypeResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_RegisterTypeCommand\");\nvar de_RollbackStackCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_RollbackStackOutput(data.RollbackStackResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_RollbackStackCommand\");\nvar de_SetStackPolicyCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n await (0, import_smithy_client.collectBody)(output.body, context);\n const response = {\n $metadata: deserializeMetadata(output)\n };\n return response;\n}, \"de_SetStackPolicyCommand\");\nvar de_SetTypeConfigurationCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_SetTypeConfigurationOutput(data.SetTypeConfigurationResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_SetTypeConfigurationCommand\");\nvar de_SetTypeDefaultVersionCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_SetTypeDefaultVersionOutput(data.SetTypeDefaultVersionResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_SetTypeDefaultVersionCommand\");\nvar de_SignalResourceCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n await (0, import_smithy_client.collectBody)(output.body, context);\n const response = {\n $metadata: deserializeMetadata(output)\n };\n return response;\n}, \"de_SignalResourceCommand\");\nvar de_StartResourceScanCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_StartResourceScanOutput(data.StartResourceScanResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_StartResourceScanCommand\");\nvar de_StopStackSetOperationCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_StopStackSetOperationOutput(data.StopStackSetOperationResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_StopStackSetOperationCommand\");\nvar de_TestTypeCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_TestTypeOutput(data.TestTypeResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_TestTypeCommand\");\nvar de_UpdateGeneratedTemplateCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_UpdateGeneratedTemplateOutput(data.UpdateGeneratedTemplateResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_UpdateGeneratedTemplateCommand\");\nvar de_UpdateStackCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_UpdateStackOutput(data.UpdateStackResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_UpdateStackCommand\");\nvar de_UpdateStackInstancesCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_UpdateStackInstancesOutput(data.UpdateStackInstancesResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_UpdateStackInstancesCommand\");\nvar de_UpdateStackSetCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_UpdateStackSetOutput(data.UpdateStackSetResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_UpdateStackSetCommand\");\nvar de_UpdateTerminationProtectionCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_UpdateTerminationProtectionOutput(data.UpdateTerminationProtectionResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_UpdateTerminationProtectionCommand\");\nvar de_ValidateTemplateCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_ValidateTemplateOutput(data.ValidateTemplateResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_ValidateTemplateCommand\");\nvar de_CommandError = /* @__PURE__ */ __name(async (output, context) => {\n const parsedOutput = {\n ...output,\n body: await (0, import_core2.parseXmlErrorBody)(output.body, context)\n };\n const errorCode = loadQueryErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n case \"InvalidOperationException\":\n case \"com.amazonaws.cloudformation#InvalidOperationException\":\n throw await de_InvalidOperationExceptionRes(parsedOutput, context);\n case \"OperationNotFoundException\":\n case \"com.amazonaws.cloudformation#OperationNotFoundException\":\n throw await de_OperationNotFoundExceptionRes(parsedOutput, context);\n case \"CFNRegistryException\":\n case \"com.amazonaws.cloudformation#CFNRegistryException\":\n throw await de_CFNRegistryExceptionRes(parsedOutput, context);\n case \"TypeNotFoundException\":\n case \"com.amazonaws.cloudformation#TypeNotFoundException\":\n throw await de_TypeNotFoundExceptionRes(parsedOutput, context);\n case \"TypeConfigurationNotFoundException\":\n case \"com.amazonaws.cloudformation#TypeConfigurationNotFoundException\":\n throw await de_TypeConfigurationNotFoundExceptionRes(parsedOutput, context);\n case \"TokenAlreadyExistsException\":\n case \"com.amazonaws.cloudformation#TokenAlreadyExistsException\":\n throw await de_TokenAlreadyExistsExceptionRes(parsedOutput, context);\n case \"AlreadyExistsException\":\n case \"com.amazonaws.cloudformation#AlreadyExistsException\":\n throw await de_AlreadyExistsExceptionRes(parsedOutput, context);\n case \"InsufficientCapabilitiesException\":\n case \"com.amazonaws.cloudformation#InsufficientCapabilitiesException\":\n throw await de_InsufficientCapabilitiesExceptionRes(parsedOutput, context);\n case \"LimitExceededException\":\n case \"com.amazonaws.cloudformation#LimitExceededException\":\n throw await de_LimitExceededExceptionRes(parsedOutput, context);\n case \"ConcurrentResourcesLimitExceeded\":\n case \"com.amazonaws.cloudformation#ConcurrentResourcesLimitExceededException\":\n throw await de_ConcurrentResourcesLimitExceededExceptionRes(parsedOutput, context);\n case \"OperationIdAlreadyExistsException\":\n case \"com.amazonaws.cloudformation#OperationIdAlreadyExistsException\":\n throw await de_OperationIdAlreadyExistsExceptionRes(parsedOutput, context);\n case \"OperationInProgressException\":\n case \"com.amazonaws.cloudformation#OperationInProgressException\":\n throw await de_OperationInProgressExceptionRes(parsedOutput, context);\n case \"StackSetNotFoundException\":\n case \"com.amazonaws.cloudformation#StackSetNotFoundException\":\n throw await de_StackSetNotFoundExceptionRes(parsedOutput, context);\n case \"StaleRequestException\":\n case \"com.amazonaws.cloudformation#StaleRequestException\":\n throw await de_StaleRequestExceptionRes(parsedOutput, context);\n case \"CreatedButModifiedException\":\n case \"com.amazonaws.cloudformation#CreatedButModifiedException\":\n throw await de_CreatedButModifiedExceptionRes(parsedOutput, context);\n case \"NameAlreadyExistsException\":\n case \"com.amazonaws.cloudformation#NameAlreadyExistsException\":\n throw await de_NameAlreadyExistsExceptionRes(parsedOutput, context);\n case \"InvalidChangeSetStatus\":\n case \"com.amazonaws.cloudformation#InvalidChangeSetStatusException\":\n throw await de_InvalidChangeSetStatusExceptionRes(parsedOutput, context);\n case \"GeneratedTemplateNotFound\":\n case \"com.amazonaws.cloudformation#GeneratedTemplateNotFoundException\":\n throw await de_GeneratedTemplateNotFoundExceptionRes(parsedOutput, context);\n case \"StackSetNotEmptyException\":\n case \"com.amazonaws.cloudformation#StackSetNotEmptyException\":\n throw await de_StackSetNotEmptyExceptionRes(parsedOutput, context);\n case \"ChangeSetNotFound\":\n case \"com.amazonaws.cloudformation#ChangeSetNotFoundException\":\n throw await de_ChangeSetNotFoundExceptionRes(parsedOutput, context);\n case \"ResourceScanNotFound\":\n case \"com.amazonaws.cloudformation#ResourceScanNotFoundException\":\n throw await de_ResourceScanNotFoundExceptionRes(parsedOutput, context);\n case \"StackInstanceNotFoundException\":\n case \"com.amazonaws.cloudformation#StackInstanceNotFoundException\":\n throw await de_StackInstanceNotFoundExceptionRes(parsedOutput, context);\n case \"StackNotFoundException\":\n case \"com.amazonaws.cloudformation#StackNotFoundException\":\n throw await de_StackNotFoundExceptionRes(parsedOutput, context);\n case \"ResourceScanInProgress\":\n case \"com.amazonaws.cloudformation#ResourceScanInProgressException\":\n throw await de_ResourceScanInProgressExceptionRes(parsedOutput, context);\n case \"ConditionalCheckFailed\":\n case \"com.amazonaws.cloudformation#OperationStatusCheckFailedException\":\n throw await de_OperationStatusCheckFailedExceptionRes(parsedOutput, context);\n case \"InvalidStateTransition\":\n case \"com.amazonaws.cloudformation#InvalidStateTransitionException\":\n throw await de_InvalidStateTransitionExceptionRes(parsedOutput, context);\n case \"ResourceScanLimitExceeded\":\n case \"com.amazonaws.cloudformation#ResourceScanLimitExceededException\":\n throw await de_ResourceScanLimitExceededExceptionRes(parsedOutput, context);\n default:\n const parsedBody = parsedOutput.body;\n return throwDefaultError({\n output,\n parsedBody: parsedBody.Error,\n errorCode\n });\n }\n}, \"de_CommandError\");\nvar de_AlreadyExistsExceptionRes = /* @__PURE__ */ __name(async (parsedOutput, context) => {\n const body = parsedOutput.body;\n const deserialized = de_AlreadyExistsException(body.Error, context);\n const exception = new AlreadyExistsException({\n $metadata: deserializeMetadata(parsedOutput),\n ...deserialized\n });\n return (0, import_smithy_client.decorateServiceException)(exception, body);\n}, \"de_AlreadyExistsExceptionRes\");\nvar de_CFNRegistryExceptionRes = /* @__PURE__ */ __name(async (parsedOutput, context) => {\n const body = parsedOutput.body;\n const deserialized = de_CFNRegistryException(body.Error, context);\n const exception = new CFNRegistryException({\n $metadata: deserializeMetadata(parsedOutput),\n ...deserialized\n });\n return (0, import_smithy_client.decorateServiceException)(exception, body);\n}, \"de_CFNRegistryExceptionRes\");\nvar de_ChangeSetNotFoundExceptionRes = /* @__PURE__ */ __name(async (parsedOutput, context) => {\n const body = parsedOutput.body;\n const deserialized = de_ChangeSetNotFoundException(body.Error, context);\n const exception = new ChangeSetNotFoundException({\n $metadata: deserializeMetadata(parsedOutput),\n ...deserialized\n });\n return (0, import_smithy_client.decorateServiceException)(exception, body);\n}, \"de_ChangeSetNotFoundExceptionRes\");\nvar de_ConcurrentResourcesLimitExceededExceptionRes = /* @__PURE__ */ __name(async (parsedOutput, context) => {\n const body = parsedOutput.body;\n const deserialized = de_ConcurrentResourcesLimitExceededException(body.Error, context);\n const exception = new ConcurrentResourcesLimitExceededException({\n $metadata: deserializeMetadata(parsedOutput),\n ...deserialized\n });\n return (0, import_smithy_client.decorateServiceException)(exception, body);\n}, \"de_ConcurrentResourcesLimitExceededExceptionRes\");\nvar de_CreatedButModifiedExceptionRes = /* @__PURE__ */ __name(async (parsedOutput, context) => {\n const body = parsedOutput.body;\n const deserialized = de_CreatedButModifiedException(body.Error, context);\n const exception = new CreatedButModifiedException({\n $metadata: deserializeMetadata(parsedOutput),\n ...deserialized\n });\n return (0, import_smithy_client.decorateServiceException)(exception, body);\n}, \"de_CreatedButModifiedExceptionRes\");\nvar de_GeneratedTemplateNotFoundExceptionRes = /* @__PURE__ */ __name(async (parsedOutput, context) => {\n const body = parsedOutput.body;\n const deserialized = de_GeneratedTemplateNotFoundException(body.Error, context);\n const exception = new GeneratedTemplateNotFoundException({\n $metadata: deserializeMetadata(parsedOutput),\n ...deserialized\n });\n return (0, import_smithy_client.decorateServiceException)(exception, body);\n}, \"de_GeneratedTemplateNotFoundExceptionRes\");\nvar de_InsufficientCapabilitiesExceptionRes = /* @__PURE__ */ __name(async (parsedOutput, context) => {\n const body = parsedOutput.body;\n const deserialized = de_InsufficientCapabilitiesException(body.Error, context);\n const exception = new InsufficientCapabilitiesException({\n $metadata: deserializeMetadata(parsedOutput),\n ...deserialized\n });\n return (0, import_smithy_client.decorateServiceException)(exception, body);\n}, \"de_InsufficientCapabilitiesExceptionRes\");\nvar de_InvalidChangeSetStatusExceptionRes = /* @__PURE__ */ __name(async (parsedOutput, context) => {\n const body = parsedOutput.body;\n const deserialized = de_InvalidChangeSetStatusException(body.Error, context);\n const exception = new InvalidChangeSetStatusException({\n $metadata: deserializeMetadata(parsedOutput),\n ...deserialized\n });\n return (0, import_smithy_client.decorateServiceException)(exception, body);\n}, \"de_InvalidChangeSetStatusExceptionRes\");\nvar de_InvalidOperationExceptionRes = /* @__PURE__ */ __name(async (parsedOutput, context) => {\n const body = parsedOutput.body;\n const deserialized = de_InvalidOperationException(body.Error, context);\n const exception = new InvalidOperationException({\n $metadata: deserializeMetadata(parsedOutput),\n ...deserialized\n });\n return (0, import_smithy_client.decorateServiceException)(exception, body);\n}, \"de_InvalidOperationExceptionRes\");\nvar de_InvalidStateTransitionExceptionRes = /* @__PURE__ */ __name(async (parsedOutput, context) => {\n const body = parsedOutput.body;\n const deserialized = de_InvalidStateTransitionException(body.Error, context);\n const exception = new InvalidStateTransitionException({\n $metadata: deserializeMetadata(parsedOutput),\n ...deserialized\n });\n return (0, import_smithy_client.decorateServiceException)(exception, body);\n}, \"de_InvalidStateTransitionExceptionRes\");\nvar de_LimitExceededExceptionRes = /* @__PURE__ */ __name(async (parsedOutput, context) => {\n const body = parsedOutput.body;\n const deserialized = de_LimitExceededException(body.Error, context);\n const exception = new LimitExceededException({\n $metadata: deserializeMetadata(parsedOutput),\n ...deserialized\n });\n return (0, import_smithy_client.decorateServiceException)(exception, body);\n}, \"de_LimitExceededExceptionRes\");\nvar de_NameAlreadyExistsExceptionRes = /* @__PURE__ */ __name(async (parsedOutput, context) => {\n const body = parsedOutput.body;\n const deserialized = de_NameAlreadyExistsException(body.Error, context);\n const exception = new NameAlreadyExistsException({\n $metadata: deserializeMetadata(parsedOutput),\n ...deserialized\n });\n return (0, import_smithy_client.decorateServiceException)(exception, body);\n}, \"de_NameAlreadyExistsExceptionRes\");\nvar de_OperationIdAlreadyExistsExceptionRes = /* @__PURE__ */ __name(async (parsedOutput, context) => {\n const body = parsedOutput.body;\n const deserialized = de_OperationIdAlreadyExistsException(body.Error, context);\n const exception = new OperationIdAlreadyExistsException({\n $metadata: deserializeMetadata(parsedOutput),\n ...deserialized\n });\n return (0, import_smithy_client.decorateServiceException)(exception, body);\n}, \"de_OperationIdAlreadyExistsExceptionRes\");\nvar de_OperationInProgressExceptionRes = /* @__PURE__ */ __name(async (parsedOutput, context) => {\n const body = parsedOutput.body;\n const deserialized = de_OperationInProgressException(body.Error, context);\n const exception = new OperationInProgressException({\n $metadata: deserializeMetadata(parsedOutput),\n ...deserialized\n });\n return (0, import_smithy_client.decorateServiceException)(exception, body);\n}, \"de_OperationInProgressExceptionRes\");\nvar de_OperationNotFoundExceptionRes = /* @__PURE__ */ __name(async (parsedOutput, context) => {\n const body = parsedOutput.body;\n const deserialized = de_OperationNotFoundException(body.Error, context);\n const exception = new OperationNotFoundException({\n $metadata: deserializeMetadata(parsedOutput),\n ...deserialized\n });\n return (0, import_smithy_client.decorateServiceException)(exception, body);\n}, \"de_OperationNotFoundExceptionRes\");\nvar de_OperationStatusCheckFailedExceptionRes = /* @__PURE__ */ __name(async (parsedOutput, context) => {\n const body = parsedOutput.body;\n const deserialized = de_OperationStatusCheckFailedException(body.Error, context);\n const exception = new OperationStatusCheckFailedException({\n $metadata: deserializeMetadata(parsedOutput),\n ...deserialized\n });\n return (0, import_smithy_client.decorateServiceException)(exception, body);\n}, \"de_OperationStatusCheckFailedExceptionRes\");\nvar de_ResourceScanInProgressExceptionRes = /* @__PURE__ */ __name(async (parsedOutput, context) => {\n const body = parsedOutput.body;\n const deserialized = de_ResourceScanInProgressException(body.Error, context);\n const exception = new ResourceScanInProgressException({\n $metadata: deserializeMetadata(parsedOutput),\n ...deserialized\n });\n return (0, import_smithy_client.decorateServiceException)(exception, body);\n}, \"de_ResourceScanInProgressExceptionRes\");\nvar de_ResourceScanLimitExceededExceptionRes = /* @__PURE__ */ __name(async (parsedOutput, context) => {\n const body = parsedOutput.body;\n const deserialized = de_ResourceScanLimitExceededException(body.Error, context);\n const exception = new ResourceScanLimitExceededException({\n $metadata: deserializeMetadata(parsedOutput),\n ...deserialized\n });\n return (0, import_smithy_client.decorateServiceException)(exception, body);\n}, \"de_ResourceScanLimitExceededExceptionRes\");\nvar de_ResourceScanNotFoundExceptionRes = /* @__PURE__ */ __name(async (parsedOutput, context) => {\n const body = parsedOutput.body;\n const deserialized = de_ResourceScanNotFoundException(body.Error, context);\n const exception = new ResourceScanNotFoundException({\n $metadata: deserializeMetadata(parsedOutput),\n ...deserialized\n });\n return (0, import_smithy_client.decorateServiceException)(exception, body);\n}, \"de_ResourceScanNotFoundExceptionRes\");\nvar de_StackInstanceNotFoundExceptionRes = /* @__PURE__ */ __name(async (parsedOutput, context) => {\n const body = parsedOutput.body;\n const deserialized = de_StackInstanceNotFoundException(body.Error, context);\n const exception = new StackInstanceNotFoundException({\n $metadata: deserializeMetadata(parsedOutput),\n ...deserialized\n });\n return (0, import_smithy_client.decorateServiceException)(exception, body);\n}, \"de_StackInstanceNotFoundExceptionRes\");\nvar de_StackNotFoundExceptionRes = /* @__PURE__ */ __name(async (parsedOutput, context) => {\n const body = parsedOutput.body;\n const deserialized = de_StackNotFoundException(body.Error, context);\n const exception = new StackNotFoundException({\n $metadata: deserializeMetadata(parsedOutput),\n ...deserialized\n });\n return (0, import_smithy_client.decorateServiceException)(exception, body);\n}, \"de_StackNotFoundExceptionRes\");\nvar de_StackSetNotEmptyExceptionRes = /* @__PURE__ */ __name(async (parsedOutput, context) => {\n const body = parsedOutput.body;\n const deserialized = de_StackSetNotEmptyException(body.Error, context);\n const exception = new StackSetNotEmptyException({\n $metadata: deserializeMetadata(parsedOutput),\n ...deserialized\n });\n return (0, import_smithy_client.decorateServiceException)(exception, body);\n}, \"de_StackSetNotEmptyExceptionRes\");\nvar de_StackSetNotFoundExceptionRes = /* @__PURE__ */ __name(async (parsedOutput, context) => {\n const body = parsedOutput.body;\n const deserialized = de_StackSetNotFoundException(body.Error, context);\n const exception = new StackSetNotFoundException({\n $metadata: deserializeMetadata(parsedOutput),\n ...deserialized\n });\n return (0, import_smithy_client.decorateServiceException)(exception, body);\n}, \"de_StackSetNotFoundExceptionRes\");\nvar de_StaleRequestExceptionRes = /* @__PURE__ */ __name(async (parsedOutput, context) => {\n const body = parsedOutput.body;\n const deserialized = de_StaleRequestException(body.Error, context);\n const exception = new StaleRequestException({\n $metadata: deserializeMetadata(parsedOutput),\n ...deserialized\n });\n return (0, import_smithy_client.decorateServiceException)(exception, body);\n}, \"de_StaleRequestExceptionRes\");\nvar de_TokenAlreadyExistsExceptionRes = /* @__PURE__ */ __name(async (parsedOutput, context) => {\n const body = parsedOutput.body;\n const deserialized = de_TokenAlreadyExistsException(body.Error, context);\n const exception = new TokenAlreadyExistsException({\n $metadata: deserializeMetadata(parsedOutput),\n ...deserialized\n });\n return (0, import_smithy_client.decorateServiceException)(exception, body);\n}, \"de_TokenAlreadyExistsExceptionRes\");\nvar de_TypeConfigurationNotFoundExceptionRes = /* @__PURE__ */ __name(async (parsedOutput, context) => {\n const body = parsedOutput.body;\n const deserialized = de_TypeConfigurationNotFoundException(body.Error, context);\n const exception = new TypeConfigurationNotFoundException({\n $metadata: deserializeMetadata(parsedOutput),\n ...deserialized\n });\n return (0, import_smithy_client.decorateServiceException)(exception, body);\n}, \"de_TypeConfigurationNotFoundExceptionRes\");\nvar de_TypeNotFoundExceptionRes = /* @__PURE__ */ __name(async (parsedOutput, context) => {\n const body = parsedOutput.body;\n const deserialized = de_TypeNotFoundException(body.Error, context);\n const exception = new TypeNotFoundException({\n $metadata: deserializeMetadata(parsedOutput),\n ...deserialized\n });\n return (0, import_smithy_client.decorateServiceException)(exception, body);\n}, \"de_TypeNotFoundExceptionRes\");\nvar se_AccountList = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n let counter = 1;\n for (const entry of input) {\n if (entry === null) {\n continue;\n }\n entries[`member.${counter}`] = entry;\n counter++;\n }\n return entries;\n}, \"se_AccountList\");\nvar se_ActivateOrganizationsAccessInput = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n return entries;\n}, \"se_ActivateOrganizationsAccessInput\");\nvar se_ActivateTypeInput = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_T] != null) {\n entries[_T] = input[_T];\n }\n if (input[_PTA] != null) {\n entries[_PTA] = input[_PTA];\n }\n if (input[_PI] != null) {\n entries[_PI] = input[_PI];\n }\n if (input[_TN] != null) {\n entries[_TN] = input[_TN];\n }\n if (input[_TNA] != null) {\n entries[_TNA] = input[_TNA];\n }\n if (input[_AU] != null) {\n entries[_AU] = input[_AU];\n }\n if (input[_LC] != null) {\n const memberEntries = se_LoggingConfig(input[_LC], context);\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `LoggingConfig.${key}`;\n entries[loc] = value;\n });\n }\n if (input[_ERA] != null) {\n entries[_ERA] = input[_ERA];\n }\n if (input[_VB] != null) {\n entries[_VB] = input[_VB];\n }\n if (input[_MV] != null) {\n entries[_MV] = input[_MV];\n }\n return entries;\n}, \"se_ActivateTypeInput\");\nvar se_AutoDeployment = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_E] != null) {\n entries[_E] = input[_E];\n }\n if (input[_RSOAR] != null) {\n entries[_RSOAR] = input[_RSOAR];\n }\n return entries;\n}, \"se_AutoDeployment\");\nvar se_BatchDescribeTypeConfigurationsInput = /* @__PURE__ */ __name((input, context) => {\n var _a;\n const entries = {};\n if (input[_TCI] != null) {\n const memberEntries = se_TypeConfigurationIdentifiers(input[_TCI], context);\n if (((_a = input[_TCI]) == null ? void 0 : _a.length) === 0) {\n entries.TypeConfigurationIdentifiers = [];\n }\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `TypeConfigurationIdentifiers.${key}`;\n entries[loc] = value;\n });\n }\n return entries;\n}, \"se_BatchDescribeTypeConfigurationsInput\");\nvar se_CancelUpdateStackInput = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_SN] != null) {\n entries[_SN] = input[_SN];\n }\n if (input[_CRT] != null) {\n entries[_CRT] = input[_CRT];\n }\n return entries;\n}, \"se_CancelUpdateStackInput\");\nvar se_Capabilities = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n let counter = 1;\n for (const entry of input) {\n if (entry === null) {\n continue;\n }\n entries[`member.${counter}`] = entry;\n counter++;\n }\n return entries;\n}, \"se_Capabilities\");\nvar se_ContinueUpdateRollbackInput = /* @__PURE__ */ __name((input, context) => {\n var _a;\n const entries = {};\n if (input[_SN] != null) {\n entries[_SN] = input[_SN];\n }\n if (input[_RARN] != null) {\n entries[_RARN] = input[_RARN];\n }\n if (input[_RTS] != null) {\n const memberEntries = se_ResourcesToSkip(input[_RTS], context);\n if (((_a = input[_RTS]) == null ? void 0 : _a.length) === 0) {\n entries.ResourcesToSkip = [];\n }\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `ResourcesToSkip.${key}`;\n entries[loc] = value;\n });\n }\n if (input[_CRT] != null) {\n entries[_CRT] = input[_CRT];\n }\n return entries;\n}, \"se_ContinueUpdateRollbackInput\");\nvar se_CreateChangeSetInput = /* @__PURE__ */ __name((input, context) => {\n var _a, _b, _c, _d, _e2, _f;\n const entries = {};\n if (input[_SN] != null) {\n entries[_SN] = input[_SN];\n }\n if (input[_TB] != null) {\n entries[_TB] = input[_TB];\n }\n if (input[_TURL] != null) {\n entries[_TURL] = input[_TURL];\n }\n if (input[_UPT] != null) {\n entries[_UPT] = input[_UPT];\n }\n if (input[_P] != null) {\n const memberEntries = se_Parameters(input[_P], context);\n if (((_a = input[_P]) == null ? void 0 : _a.length) === 0) {\n entries.Parameters = [];\n }\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `Parameters.${key}`;\n entries[loc] = value;\n });\n }\n if (input[_C] != null) {\n const memberEntries = se_Capabilities(input[_C], context);\n if (((_b = input[_C]) == null ? void 0 : _b.length) === 0) {\n entries.Capabilities = [];\n }\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `Capabilities.${key}`;\n entries[loc] = value;\n });\n }\n if (input[_RTe] != null) {\n const memberEntries = se_ResourceTypes(input[_RTe], context);\n if (((_c = input[_RTe]) == null ? void 0 : _c.length) === 0) {\n entries.ResourceTypes = [];\n }\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `ResourceTypes.${key}`;\n entries[loc] = value;\n });\n }\n if (input[_RARN] != null) {\n entries[_RARN] = input[_RARN];\n }\n if (input[_RC] != null) {\n const memberEntries = se_RollbackConfiguration(input[_RC], context);\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `RollbackConfiguration.${key}`;\n entries[loc] = value;\n });\n }\n if (input[_NARN] != null) {\n const memberEntries = se_NotificationARNs(input[_NARN], context);\n if (((_d = input[_NARN]) == null ? void 0 : _d.length) === 0) {\n entries.NotificationARNs = [];\n }\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `NotificationARNs.${key}`;\n entries[loc] = value;\n });\n }\n if (input[_Ta] != null) {\n const memberEntries = se_Tags(input[_Ta], context);\n if (((_e2 = input[_Ta]) == null ? void 0 : _e2.length) === 0) {\n entries.Tags = [];\n }\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `Tags.${key}`;\n entries[loc] = value;\n });\n }\n if (input[_CSN] != null) {\n entries[_CSN] = input[_CSN];\n }\n if (input[_CT] != null) {\n entries[_CT] = input[_CT];\n }\n if (input[_D] != null) {\n entries[_D] = input[_D];\n }\n if (input[_CST] != null) {\n entries[_CST] = input[_CST];\n }\n if (input[_RTI] != null) {\n const memberEntries = se_ResourcesToImport(input[_RTI], context);\n if (((_f = input[_RTI]) == null ? void 0 : _f.length) === 0) {\n entries.ResourcesToImport = [];\n }\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `ResourcesToImport.${key}`;\n entries[loc] = value;\n });\n }\n if (input[_INS] != null) {\n entries[_INS] = input[_INS];\n }\n if (input[_OSF] != null) {\n entries[_OSF] = input[_OSF];\n }\n if (input[_IER] != null) {\n entries[_IER] = input[_IER];\n }\n return entries;\n}, \"se_CreateChangeSetInput\");\nvar se_CreateGeneratedTemplateInput = /* @__PURE__ */ __name((input, context) => {\n var _a;\n const entries = {};\n if (input[_R] != null) {\n const memberEntries = se_ResourceDefinitions(input[_R], context);\n if (((_a = input[_R]) == null ? void 0 : _a.length) === 0) {\n entries.Resources = [];\n }\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `Resources.${key}`;\n entries[loc] = value;\n });\n }\n if (input[_GTN] != null) {\n entries[_GTN] = input[_GTN];\n }\n if (input[_SN] != null) {\n entries[_SN] = input[_SN];\n }\n if (input[_TC] != null) {\n const memberEntries = se_TemplateConfiguration(input[_TC], context);\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `TemplateConfiguration.${key}`;\n entries[loc] = value;\n });\n }\n return entries;\n}, \"se_CreateGeneratedTemplateInput\");\nvar se_CreateStackInput = /* @__PURE__ */ __name((input, context) => {\n var _a, _b, _c, _d, _e2;\n const entries = {};\n if (input[_SN] != null) {\n entries[_SN] = input[_SN];\n }\n if (input[_TB] != null) {\n entries[_TB] = input[_TB];\n }\n if (input[_TURL] != null) {\n entries[_TURL] = input[_TURL];\n }\n if (input[_P] != null) {\n const memberEntries = se_Parameters(input[_P], context);\n if (((_a = input[_P]) == null ? void 0 : _a.length) === 0) {\n entries.Parameters = [];\n }\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `Parameters.${key}`;\n entries[loc] = value;\n });\n }\n if (input[_DR] != null) {\n entries[_DR] = input[_DR];\n }\n if (input[_RC] != null) {\n const memberEntries = se_RollbackConfiguration(input[_RC], context);\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `RollbackConfiguration.${key}`;\n entries[loc] = value;\n });\n }\n if (input[_TIM] != null) {\n entries[_TIM] = input[_TIM];\n }\n if (input[_NARN] != null) {\n const memberEntries = se_NotificationARNs(input[_NARN], context);\n if (((_b = input[_NARN]) == null ? void 0 : _b.length) === 0) {\n entries.NotificationARNs = [];\n }\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `NotificationARNs.${key}`;\n entries[loc] = value;\n });\n }\n if (input[_C] != null) {\n const memberEntries = se_Capabilities(input[_C], context);\n if (((_c = input[_C]) == null ? void 0 : _c.length) === 0) {\n entries.Capabilities = [];\n }\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `Capabilities.${key}`;\n entries[loc] = value;\n });\n }\n if (input[_RTe] != null) {\n const memberEntries = se_ResourceTypes(input[_RTe], context);\n if (((_d = input[_RTe]) == null ? void 0 : _d.length) === 0) {\n entries.ResourceTypes = [];\n }\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `ResourceTypes.${key}`;\n entries[loc] = value;\n });\n }\n if (input[_RARN] != null) {\n entries[_RARN] = input[_RARN];\n }\n if (input[_OF] != null) {\n entries[_OF] = input[_OF];\n }\n if (input[_SPB] != null) {\n entries[_SPB] = input[_SPB];\n }\n if (input[_SPURL] != null) {\n entries[_SPURL] = input[_SPURL];\n }\n if (input[_Ta] != null) {\n const memberEntries = se_Tags(input[_Ta], context);\n if (((_e2 = input[_Ta]) == null ? void 0 : _e2.length) === 0) {\n entries.Tags = [];\n }\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `Tags.${key}`;\n entries[loc] = value;\n });\n }\n if (input[_CRT] != null) {\n entries[_CRT] = input[_CRT];\n }\n if (input[_ETP] != null) {\n entries[_ETP] = input[_ETP];\n }\n if (input[_REOC] != null) {\n entries[_REOC] = input[_REOC];\n }\n return entries;\n}, \"se_CreateStackInput\");\nvar se_CreateStackInstancesInput = /* @__PURE__ */ __name((input, context) => {\n var _a, _b, _c;\n const entries = {};\n if (input[_SSN] != null) {\n entries[_SSN] = input[_SSN];\n }\n if (input[_Ac] != null) {\n const memberEntries = se_AccountList(input[_Ac], context);\n if (((_a = input[_Ac]) == null ? void 0 : _a.length) === 0) {\n entries.Accounts = [];\n }\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `Accounts.${key}`;\n entries[loc] = value;\n });\n }\n if (input[_DTep] != null) {\n const memberEntries = se_DeploymentTargets(input[_DTep], context);\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `DeploymentTargets.${key}`;\n entries[loc] = value;\n });\n }\n if (input[_Re] != null) {\n const memberEntries = se_RegionList(input[_Re], context);\n if (((_b = input[_Re]) == null ? void 0 : _b.length) === 0) {\n entries.Regions = [];\n }\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `Regions.${key}`;\n entries[loc] = value;\n });\n }\n if (input[_PO] != null) {\n const memberEntries = se_Parameters(input[_PO], context);\n if (((_c = input[_PO]) == null ? void 0 : _c.length) === 0) {\n entries.ParameterOverrides = [];\n }\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `ParameterOverrides.${key}`;\n entries[loc] = value;\n });\n }\n if (input[_OP] != null) {\n const memberEntries = se_StackSetOperationPreferences(input[_OP], context);\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `OperationPreferences.${key}`;\n entries[loc] = value;\n });\n }\n if (input[_OI] === void 0) {\n input[_OI] = (0, import_uuid.v4)();\n }\n if (input[_OI] != null) {\n entries[_OI] = input[_OI];\n }\n if (input[_CA] != null) {\n entries[_CA] = input[_CA];\n }\n return entries;\n}, \"se_CreateStackInstancesInput\");\nvar se_CreateStackSetInput = /* @__PURE__ */ __name((input, context) => {\n var _a, _b, _c;\n const entries = {};\n if (input[_SSN] != null) {\n entries[_SSN] = input[_SSN];\n }\n if (input[_D] != null) {\n entries[_D] = input[_D];\n }\n if (input[_TB] != null) {\n entries[_TB] = input[_TB];\n }\n if (input[_TURL] != null) {\n entries[_TURL] = input[_TURL];\n }\n if (input[_SI] != null) {\n entries[_SI] = input[_SI];\n }\n if (input[_P] != null) {\n const memberEntries = se_Parameters(input[_P], context);\n if (((_a = input[_P]) == null ? void 0 : _a.length) === 0) {\n entries.Parameters = [];\n }\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `Parameters.${key}`;\n entries[loc] = value;\n });\n }\n if (input[_C] != null) {\n const memberEntries = se_Capabilities(input[_C], context);\n if (((_b = input[_C]) == null ? void 0 : _b.length) === 0) {\n entries.Capabilities = [];\n }\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `Capabilities.${key}`;\n entries[loc] = value;\n });\n }\n if (input[_Ta] != null) {\n const memberEntries = se_Tags(input[_Ta], context);\n if (((_c = input[_Ta]) == null ? void 0 : _c.length) === 0) {\n entries.Tags = [];\n }\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `Tags.${key}`;\n entries[loc] = value;\n });\n }\n if (input[_ARARN] != null) {\n entries[_ARARN] = input[_ARARN];\n }\n if (input[_ERN] != null) {\n entries[_ERN] = input[_ERN];\n }\n if (input[_PM] != null) {\n entries[_PM] = input[_PM];\n }\n if (input[_AD] != null) {\n const memberEntries = se_AutoDeployment(input[_AD], context);\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `AutoDeployment.${key}`;\n entries[loc] = value;\n });\n }\n if (input[_CA] != null) {\n entries[_CA] = input[_CA];\n }\n if (input[_CRT] === void 0) {\n input[_CRT] = (0, import_uuid.v4)();\n }\n if (input[_CRT] != null) {\n entries[_CRT] = input[_CRT];\n }\n if (input[_ME] != null) {\n const memberEntries = se_ManagedExecution(input[_ME], context);\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `ManagedExecution.${key}`;\n entries[loc] = value;\n });\n }\n return entries;\n}, \"se_CreateStackSetInput\");\nvar se_DeactivateOrganizationsAccessInput = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n return entries;\n}, \"se_DeactivateOrganizationsAccessInput\");\nvar se_DeactivateTypeInput = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_TN] != null) {\n entries[_TN] = input[_TN];\n }\n if (input[_T] != null) {\n entries[_T] = input[_T];\n }\n if (input[_Ar] != null) {\n entries[_Ar] = input[_Ar];\n }\n return entries;\n}, \"se_DeactivateTypeInput\");\nvar se_DeleteChangeSetInput = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_CSN] != null) {\n entries[_CSN] = input[_CSN];\n }\n if (input[_SN] != null) {\n entries[_SN] = input[_SN];\n }\n return entries;\n}, \"se_DeleteChangeSetInput\");\nvar se_DeleteGeneratedTemplateInput = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_GTN] != null) {\n entries[_GTN] = input[_GTN];\n }\n return entries;\n}, \"se_DeleteGeneratedTemplateInput\");\nvar se_DeleteStackInput = /* @__PURE__ */ __name((input, context) => {\n var _a;\n const entries = {};\n if (input[_SN] != null) {\n entries[_SN] = input[_SN];\n }\n if (input[_RR] != null) {\n const memberEntries = se_RetainResources(input[_RR], context);\n if (((_a = input[_RR]) == null ? void 0 : _a.length) === 0) {\n entries.RetainResources = [];\n }\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `RetainResources.${key}`;\n entries[loc] = value;\n });\n }\n if (input[_RARN] != null) {\n entries[_RARN] = input[_RARN];\n }\n if (input[_CRT] != null) {\n entries[_CRT] = input[_CRT];\n }\n if (input[_DM] != null) {\n entries[_DM] = input[_DM];\n }\n return entries;\n}, \"se_DeleteStackInput\");\nvar se_DeleteStackInstancesInput = /* @__PURE__ */ __name((input, context) => {\n var _a, _b;\n const entries = {};\n if (input[_SSN] != null) {\n entries[_SSN] = input[_SSN];\n }\n if (input[_Ac] != null) {\n const memberEntries = se_AccountList(input[_Ac], context);\n if (((_a = input[_Ac]) == null ? void 0 : _a.length) === 0) {\n entries.Accounts = [];\n }\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `Accounts.${key}`;\n entries[loc] = value;\n });\n }\n if (input[_DTep] != null) {\n const memberEntries = se_DeploymentTargets(input[_DTep], context);\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `DeploymentTargets.${key}`;\n entries[loc] = value;\n });\n }\n if (input[_Re] != null) {\n const memberEntries = se_RegionList(input[_Re], context);\n if (((_b = input[_Re]) == null ? void 0 : _b.length) === 0) {\n entries.Regions = [];\n }\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `Regions.${key}`;\n entries[loc] = value;\n });\n }\n if (input[_OP] != null) {\n const memberEntries = se_StackSetOperationPreferences(input[_OP], context);\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `OperationPreferences.${key}`;\n entries[loc] = value;\n });\n }\n if (input[_RSe] != null) {\n entries[_RSe] = input[_RSe];\n }\n if (input[_OI] === void 0) {\n input[_OI] = (0, import_uuid.v4)();\n }\n if (input[_OI] != null) {\n entries[_OI] = input[_OI];\n }\n if (input[_CA] != null) {\n entries[_CA] = input[_CA];\n }\n return entries;\n}, \"se_DeleteStackInstancesInput\");\nvar se_DeleteStackSetInput = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_SSN] != null) {\n entries[_SSN] = input[_SSN];\n }\n if (input[_CA] != null) {\n entries[_CA] = input[_CA];\n }\n return entries;\n}, \"se_DeleteStackSetInput\");\nvar se_DeploymentTargets = /* @__PURE__ */ __name((input, context) => {\n var _a, _b;\n const entries = {};\n if (input[_Ac] != null) {\n const memberEntries = se_AccountList(input[_Ac], context);\n if (((_a = input[_Ac]) == null ? void 0 : _a.length) === 0) {\n entries.Accounts = [];\n }\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `Accounts.${key}`;\n entries[loc] = value;\n });\n }\n if (input[_AUc] != null) {\n entries[_AUc] = input[_AUc];\n }\n if (input[_OUI] != null) {\n const memberEntries = se_OrganizationalUnitIdList(input[_OUI], context);\n if (((_b = input[_OUI]) == null ? void 0 : _b.length) === 0) {\n entries.OrganizationalUnitIds = [];\n }\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `OrganizationalUnitIds.${key}`;\n entries[loc] = value;\n });\n }\n if (input[_AFT] != null) {\n entries[_AFT] = input[_AFT];\n }\n return entries;\n}, \"se_DeploymentTargets\");\nvar se_DeregisterTypeInput = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_Ar] != null) {\n entries[_Ar] = input[_Ar];\n }\n if (input[_T] != null) {\n entries[_T] = input[_T];\n }\n if (input[_TN] != null) {\n entries[_TN] = input[_TN];\n }\n if (input[_VI] != null) {\n entries[_VI] = input[_VI];\n }\n return entries;\n}, \"se_DeregisterTypeInput\");\nvar se_DescribeAccountLimitsInput = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_NT] != null) {\n entries[_NT] = input[_NT];\n }\n return entries;\n}, \"se_DescribeAccountLimitsInput\");\nvar se_DescribeChangeSetHooksInput = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_CSN] != null) {\n entries[_CSN] = input[_CSN];\n }\n if (input[_SN] != null) {\n entries[_SN] = input[_SN];\n }\n if (input[_NT] != null) {\n entries[_NT] = input[_NT];\n }\n if (input[_LRI] != null) {\n entries[_LRI] = input[_LRI];\n }\n return entries;\n}, \"se_DescribeChangeSetHooksInput\");\nvar se_DescribeChangeSetInput = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_CSN] != null) {\n entries[_CSN] = input[_CSN];\n }\n if (input[_SN] != null) {\n entries[_SN] = input[_SN];\n }\n if (input[_NT] != null) {\n entries[_NT] = input[_NT];\n }\n if (input[_IPV] != null) {\n entries[_IPV] = input[_IPV];\n }\n return entries;\n}, \"se_DescribeChangeSetInput\");\nvar se_DescribeGeneratedTemplateInput = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_GTN] != null) {\n entries[_GTN] = input[_GTN];\n }\n return entries;\n}, \"se_DescribeGeneratedTemplateInput\");\nvar se_DescribeOrganizationsAccessInput = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_CA] != null) {\n entries[_CA] = input[_CA];\n }\n return entries;\n}, \"se_DescribeOrganizationsAccessInput\");\nvar se_DescribePublisherInput = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_PI] != null) {\n entries[_PI] = input[_PI];\n }\n return entries;\n}, \"se_DescribePublisherInput\");\nvar se_DescribeResourceScanInput = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_RSI] != null) {\n entries[_RSI] = input[_RSI];\n }\n return entries;\n}, \"se_DescribeResourceScanInput\");\nvar se_DescribeStackDriftDetectionStatusInput = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_SDDI] != null) {\n entries[_SDDI] = input[_SDDI];\n }\n return entries;\n}, \"se_DescribeStackDriftDetectionStatusInput\");\nvar se_DescribeStackEventsInput = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_SN] != null) {\n entries[_SN] = input[_SN];\n }\n if (input[_NT] != null) {\n entries[_NT] = input[_NT];\n }\n return entries;\n}, \"se_DescribeStackEventsInput\");\nvar se_DescribeStackInstanceInput = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_SSN] != null) {\n entries[_SSN] = input[_SSN];\n }\n if (input[_SIA] != null) {\n entries[_SIA] = input[_SIA];\n }\n if (input[_SIR] != null) {\n entries[_SIR] = input[_SIR];\n }\n if (input[_CA] != null) {\n entries[_CA] = input[_CA];\n }\n return entries;\n}, \"se_DescribeStackInstanceInput\");\nvar se_DescribeStackResourceDriftsInput = /* @__PURE__ */ __name((input, context) => {\n var _a;\n const entries = {};\n if (input[_SN] != null) {\n entries[_SN] = input[_SN];\n }\n if (input[_SRDSF] != null) {\n const memberEntries = se_StackResourceDriftStatusFilters(input[_SRDSF], context);\n if (((_a = input[_SRDSF]) == null ? void 0 : _a.length) === 0) {\n entries.StackResourceDriftStatusFilters = [];\n }\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `StackResourceDriftStatusFilters.${key}`;\n entries[loc] = value;\n });\n }\n if (input[_NT] != null) {\n entries[_NT] = input[_NT];\n }\n if (input[_MR] != null) {\n entries[_MR] = input[_MR];\n }\n return entries;\n}, \"se_DescribeStackResourceDriftsInput\");\nvar se_DescribeStackResourceInput = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_SN] != null) {\n entries[_SN] = input[_SN];\n }\n if (input[_LRI] != null) {\n entries[_LRI] = input[_LRI];\n }\n return entries;\n}, \"se_DescribeStackResourceInput\");\nvar se_DescribeStackResourcesInput = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_SN] != null) {\n entries[_SN] = input[_SN];\n }\n if (input[_LRI] != null) {\n entries[_LRI] = input[_LRI];\n }\n if (input[_PRI] != null) {\n entries[_PRI] = input[_PRI];\n }\n return entries;\n}, \"se_DescribeStackResourcesInput\");\nvar se_DescribeStackSetInput = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_SSN] != null) {\n entries[_SSN] = input[_SSN];\n }\n if (input[_CA] != null) {\n entries[_CA] = input[_CA];\n }\n return entries;\n}, \"se_DescribeStackSetInput\");\nvar se_DescribeStackSetOperationInput = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_SSN] != null) {\n entries[_SSN] = input[_SSN];\n }\n if (input[_OI] != null) {\n entries[_OI] = input[_OI];\n }\n if (input[_CA] != null) {\n entries[_CA] = input[_CA];\n }\n return entries;\n}, \"se_DescribeStackSetOperationInput\");\nvar se_DescribeStacksInput = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_SN] != null) {\n entries[_SN] = input[_SN];\n }\n if (input[_NT] != null) {\n entries[_NT] = input[_NT];\n }\n return entries;\n}, \"se_DescribeStacksInput\");\nvar se_DescribeTypeInput = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_T] != null) {\n entries[_T] = input[_T];\n }\n if (input[_TN] != null) {\n entries[_TN] = input[_TN];\n }\n if (input[_Ar] != null) {\n entries[_Ar] = input[_Ar];\n }\n if (input[_VI] != null) {\n entries[_VI] = input[_VI];\n }\n if (input[_PI] != null) {\n entries[_PI] = input[_PI];\n }\n if (input[_PVN] != null) {\n entries[_PVN] = input[_PVN];\n }\n return entries;\n}, \"se_DescribeTypeInput\");\nvar se_DescribeTypeRegistrationInput = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_RTeg] != null) {\n entries[_RTeg] = input[_RTeg];\n }\n return entries;\n}, \"se_DescribeTypeRegistrationInput\");\nvar se_DetectStackDriftInput = /* @__PURE__ */ __name((input, context) => {\n var _a;\n const entries = {};\n if (input[_SN] != null) {\n entries[_SN] = input[_SN];\n }\n if (input[_LRIo] != null) {\n const memberEntries = se_LogicalResourceIds(input[_LRIo], context);\n if (((_a = input[_LRIo]) == null ? void 0 : _a.length) === 0) {\n entries.LogicalResourceIds = [];\n }\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `LogicalResourceIds.${key}`;\n entries[loc] = value;\n });\n }\n return entries;\n}, \"se_DetectStackDriftInput\");\nvar se_DetectStackResourceDriftInput = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_SN] != null) {\n entries[_SN] = input[_SN];\n }\n if (input[_LRI] != null) {\n entries[_LRI] = input[_LRI];\n }\n return entries;\n}, \"se_DetectStackResourceDriftInput\");\nvar se_DetectStackSetDriftInput = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_SSN] != null) {\n entries[_SSN] = input[_SSN];\n }\n if (input[_OP] != null) {\n const memberEntries = se_StackSetOperationPreferences(input[_OP], context);\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `OperationPreferences.${key}`;\n entries[loc] = value;\n });\n }\n if (input[_OI] === void 0) {\n input[_OI] = (0, import_uuid.v4)();\n }\n if (input[_OI] != null) {\n entries[_OI] = input[_OI];\n }\n if (input[_CA] != null) {\n entries[_CA] = input[_CA];\n }\n return entries;\n}, \"se_DetectStackSetDriftInput\");\nvar se_EstimateTemplateCostInput = /* @__PURE__ */ __name((input, context) => {\n var _a;\n const entries = {};\n if (input[_TB] != null) {\n entries[_TB] = input[_TB];\n }\n if (input[_TURL] != null) {\n entries[_TURL] = input[_TURL];\n }\n if (input[_P] != null) {\n const memberEntries = se_Parameters(input[_P], context);\n if (((_a = input[_P]) == null ? void 0 : _a.length) === 0) {\n entries.Parameters = [];\n }\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `Parameters.${key}`;\n entries[loc] = value;\n });\n }\n return entries;\n}, \"se_EstimateTemplateCostInput\");\nvar se_ExecuteChangeSetInput = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_CSN] != null) {\n entries[_CSN] = input[_CSN];\n }\n if (input[_SN] != null) {\n entries[_SN] = input[_SN];\n }\n if (input[_CRT] != null) {\n entries[_CRT] = input[_CRT];\n }\n if (input[_DR] != null) {\n entries[_DR] = input[_DR];\n }\n if (input[_REOC] != null) {\n entries[_REOC] = input[_REOC];\n }\n return entries;\n}, \"se_ExecuteChangeSetInput\");\nvar se_GetGeneratedTemplateInput = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_F] != null) {\n entries[_F] = input[_F];\n }\n if (input[_GTN] != null) {\n entries[_GTN] = input[_GTN];\n }\n return entries;\n}, \"se_GetGeneratedTemplateInput\");\nvar se_GetStackPolicyInput = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_SN] != null) {\n entries[_SN] = input[_SN];\n }\n return entries;\n}, \"se_GetStackPolicyInput\");\nvar se_GetTemplateInput = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_SN] != null) {\n entries[_SN] = input[_SN];\n }\n if (input[_CSN] != null) {\n entries[_CSN] = input[_CSN];\n }\n if (input[_TS] != null) {\n entries[_TS] = input[_TS];\n }\n return entries;\n}, \"se_GetTemplateInput\");\nvar se_GetTemplateSummaryInput = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_TB] != null) {\n entries[_TB] = input[_TB];\n }\n if (input[_TURL] != null) {\n entries[_TURL] = input[_TURL];\n }\n if (input[_SN] != null) {\n entries[_SN] = input[_SN];\n }\n if (input[_SSN] != null) {\n entries[_SSN] = input[_SSN];\n }\n if (input[_CA] != null) {\n entries[_CA] = input[_CA];\n }\n if (input[_TSC] != null) {\n const memberEntries = se_TemplateSummaryConfig(input[_TSC], context);\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `TemplateSummaryConfig.${key}`;\n entries[loc] = value;\n });\n }\n return entries;\n}, \"se_GetTemplateSummaryInput\");\nvar se_ImportStacksToStackSetInput = /* @__PURE__ */ __name((input, context) => {\n var _a, _b;\n const entries = {};\n if (input[_SSN] != null) {\n entries[_SSN] = input[_SSN];\n }\n if (input[_SIt] != null) {\n const memberEntries = se_StackIdList(input[_SIt], context);\n if (((_a = input[_SIt]) == null ? void 0 : _a.length) === 0) {\n entries.StackIds = [];\n }\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `StackIds.${key}`;\n entries[loc] = value;\n });\n }\n if (input[_SIU] != null) {\n entries[_SIU] = input[_SIU];\n }\n if (input[_OUI] != null) {\n const memberEntries = se_OrganizationalUnitIdList(input[_OUI], context);\n if (((_b = input[_OUI]) == null ? void 0 : _b.length) === 0) {\n entries.OrganizationalUnitIds = [];\n }\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `OrganizationalUnitIds.${key}`;\n entries[loc] = value;\n });\n }\n if (input[_OP] != null) {\n const memberEntries = se_StackSetOperationPreferences(input[_OP], context);\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `OperationPreferences.${key}`;\n entries[loc] = value;\n });\n }\n if (input[_OI] === void 0) {\n input[_OI] = (0, import_uuid.v4)();\n }\n if (input[_OI] != null) {\n entries[_OI] = input[_OI];\n }\n if (input[_CA] != null) {\n entries[_CA] = input[_CA];\n }\n return entries;\n}, \"se_ImportStacksToStackSetInput\");\nvar se_JazzLogicalResourceIds = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n let counter = 1;\n for (const entry of input) {\n if (entry === null) {\n continue;\n }\n entries[`member.${counter}`] = entry;\n counter++;\n }\n return entries;\n}, \"se_JazzLogicalResourceIds\");\nvar se_JazzResourceIdentifierProperties = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n let counter = 1;\n Object.keys(input).filter((key) => input[key] != null).forEach((key) => {\n entries[`entry.${counter}.key`] = key;\n entries[`entry.${counter}.value`] = input[key];\n counter++;\n });\n return entries;\n}, \"se_JazzResourceIdentifierProperties\");\nvar se_ListChangeSetsInput = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_SN] != null) {\n entries[_SN] = input[_SN];\n }\n if (input[_NT] != null) {\n entries[_NT] = input[_NT];\n }\n return entries;\n}, \"se_ListChangeSetsInput\");\nvar se_ListExportsInput = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_NT] != null) {\n entries[_NT] = input[_NT];\n }\n return entries;\n}, \"se_ListExportsInput\");\nvar se_ListGeneratedTemplatesInput = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_NT] != null) {\n entries[_NT] = input[_NT];\n }\n if (input[_MR] != null) {\n entries[_MR] = input[_MR];\n }\n return entries;\n}, \"se_ListGeneratedTemplatesInput\");\nvar se_ListImportsInput = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_EN] != null) {\n entries[_EN] = input[_EN];\n }\n if (input[_NT] != null) {\n entries[_NT] = input[_NT];\n }\n return entries;\n}, \"se_ListImportsInput\");\nvar se_ListResourceScanRelatedResourcesInput = /* @__PURE__ */ __name((input, context) => {\n var _a;\n const entries = {};\n if (input[_RSI] != null) {\n entries[_RSI] = input[_RSI];\n }\n if (input[_R] != null) {\n const memberEntries = se_ScannedResourceIdentifiers(input[_R], context);\n if (((_a = input[_R]) == null ? void 0 : _a.length) === 0) {\n entries.Resources = [];\n }\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `Resources.${key}`;\n entries[loc] = value;\n });\n }\n if (input[_NT] != null) {\n entries[_NT] = input[_NT];\n }\n if (input[_MR] != null) {\n entries[_MR] = input[_MR];\n }\n return entries;\n}, \"se_ListResourceScanRelatedResourcesInput\");\nvar se_ListResourceScanResourcesInput = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_RSI] != null) {\n entries[_RSI] = input[_RSI];\n }\n if (input[_RI] != null) {\n entries[_RI] = input[_RI];\n }\n if (input[_RTP] != null) {\n entries[_RTP] = input[_RTP];\n }\n if (input[_TK] != null) {\n entries[_TK] = input[_TK];\n }\n if (input[_TV] != null) {\n entries[_TV] = input[_TV];\n }\n if (input[_NT] != null) {\n entries[_NT] = input[_NT];\n }\n if (input[_MR] != null) {\n entries[_MR] = input[_MR];\n }\n return entries;\n}, \"se_ListResourceScanResourcesInput\");\nvar se_ListResourceScansInput = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_NT] != null) {\n entries[_NT] = input[_NT];\n }\n if (input[_MR] != null) {\n entries[_MR] = input[_MR];\n }\n return entries;\n}, \"se_ListResourceScansInput\");\nvar se_ListStackInstanceResourceDriftsInput = /* @__PURE__ */ __name((input, context) => {\n var _a;\n const entries = {};\n if (input[_SSN] != null) {\n entries[_SSN] = input[_SSN];\n }\n if (input[_NT] != null) {\n entries[_NT] = input[_NT];\n }\n if (input[_MR] != null) {\n entries[_MR] = input[_MR];\n }\n if (input[_SIRDS] != null) {\n const memberEntries = se_StackResourceDriftStatusFilters(input[_SIRDS], context);\n if (((_a = input[_SIRDS]) == null ? void 0 : _a.length) === 0) {\n entries.StackInstanceResourceDriftStatuses = [];\n }\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `StackInstanceResourceDriftStatuses.${key}`;\n entries[loc] = value;\n });\n }\n if (input[_SIA] != null) {\n entries[_SIA] = input[_SIA];\n }\n if (input[_SIR] != null) {\n entries[_SIR] = input[_SIR];\n }\n if (input[_OI] != null) {\n entries[_OI] = input[_OI];\n }\n if (input[_CA] != null) {\n entries[_CA] = input[_CA];\n }\n return entries;\n}, \"se_ListStackInstanceResourceDriftsInput\");\nvar se_ListStackInstancesInput = /* @__PURE__ */ __name((input, context) => {\n var _a;\n const entries = {};\n if (input[_SSN] != null) {\n entries[_SSN] = input[_SSN];\n }\n if (input[_NT] != null) {\n entries[_NT] = input[_NT];\n }\n if (input[_MR] != null) {\n entries[_MR] = input[_MR];\n }\n if (input[_Fi] != null) {\n const memberEntries = se_StackInstanceFilters(input[_Fi], context);\n if (((_a = input[_Fi]) == null ? void 0 : _a.length) === 0) {\n entries.Filters = [];\n }\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `Filters.${key}`;\n entries[loc] = value;\n });\n }\n if (input[_SIA] != null) {\n entries[_SIA] = input[_SIA];\n }\n if (input[_SIR] != null) {\n entries[_SIR] = input[_SIR];\n }\n if (input[_CA] != null) {\n entries[_CA] = input[_CA];\n }\n return entries;\n}, \"se_ListStackInstancesInput\");\nvar se_ListStackResourcesInput = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_SN] != null) {\n entries[_SN] = input[_SN];\n }\n if (input[_NT] != null) {\n entries[_NT] = input[_NT];\n }\n return entries;\n}, \"se_ListStackResourcesInput\");\nvar se_ListStackSetAutoDeploymentTargetsInput = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_SSN] != null) {\n entries[_SSN] = input[_SSN];\n }\n if (input[_NT] != null) {\n entries[_NT] = input[_NT];\n }\n if (input[_MR] != null) {\n entries[_MR] = input[_MR];\n }\n if (input[_CA] != null) {\n entries[_CA] = input[_CA];\n }\n return entries;\n}, \"se_ListStackSetAutoDeploymentTargetsInput\");\nvar se_ListStackSetOperationResultsInput = /* @__PURE__ */ __name((input, context) => {\n var _a;\n const entries = {};\n if (input[_SSN] != null) {\n entries[_SSN] = input[_SSN];\n }\n if (input[_OI] != null) {\n entries[_OI] = input[_OI];\n }\n if (input[_NT] != null) {\n entries[_NT] = input[_NT];\n }\n if (input[_MR] != null) {\n entries[_MR] = input[_MR];\n }\n if (input[_CA] != null) {\n entries[_CA] = input[_CA];\n }\n if (input[_Fi] != null) {\n const memberEntries = se_OperationResultFilters(input[_Fi], context);\n if (((_a = input[_Fi]) == null ? void 0 : _a.length) === 0) {\n entries.Filters = [];\n }\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `Filters.${key}`;\n entries[loc] = value;\n });\n }\n return entries;\n}, \"se_ListStackSetOperationResultsInput\");\nvar se_ListStackSetOperationsInput = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_SSN] != null) {\n entries[_SSN] = input[_SSN];\n }\n if (input[_NT] != null) {\n entries[_NT] = input[_NT];\n }\n if (input[_MR] != null) {\n entries[_MR] = input[_MR];\n }\n if (input[_CA] != null) {\n entries[_CA] = input[_CA];\n }\n return entries;\n}, \"se_ListStackSetOperationsInput\");\nvar se_ListStackSetsInput = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_NT] != null) {\n entries[_NT] = input[_NT];\n }\n if (input[_MR] != null) {\n entries[_MR] = input[_MR];\n }\n if (input[_S] != null) {\n entries[_S] = input[_S];\n }\n if (input[_CA] != null) {\n entries[_CA] = input[_CA];\n }\n return entries;\n}, \"se_ListStackSetsInput\");\nvar se_ListStacksInput = /* @__PURE__ */ __name((input, context) => {\n var _a;\n const entries = {};\n if (input[_NT] != null) {\n entries[_NT] = input[_NT];\n }\n if (input[_SSF] != null) {\n const memberEntries = se_StackStatusFilter(input[_SSF], context);\n if (((_a = input[_SSF]) == null ? void 0 : _a.length) === 0) {\n entries.StackStatusFilter = [];\n }\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `StackStatusFilter.${key}`;\n entries[loc] = value;\n });\n }\n return entries;\n}, \"se_ListStacksInput\");\nvar se_ListTypeRegistrationsInput = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_T] != null) {\n entries[_T] = input[_T];\n }\n if (input[_TN] != null) {\n entries[_TN] = input[_TN];\n }\n if (input[_TA] != null) {\n entries[_TA] = input[_TA];\n }\n if (input[_RSF] != null) {\n entries[_RSF] = input[_RSF];\n }\n if (input[_MR] != null) {\n entries[_MR] = input[_MR];\n }\n if (input[_NT] != null) {\n entries[_NT] = input[_NT];\n }\n return entries;\n}, \"se_ListTypeRegistrationsInput\");\nvar se_ListTypesInput = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_Vi] != null) {\n entries[_Vi] = input[_Vi];\n }\n if (input[_PTr] != null) {\n entries[_PTr] = input[_PTr];\n }\n if (input[_DSep] != null) {\n entries[_DSep] = input[_DSep];\n }\n if (input[_T] != null) {\n entries[_T] = input[_T];\n }\n if (input[_Fi] != null) {\n const memberEntries = se_TypeFilters(input[_Fi], context);\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `Filters.${key}`;\n entries[loc] = value;\n });\n }\n if (input[_MR] != null) {\n entries[_MR] = input[_MR];\n }\n if (input[_NT] != null) {\n entries[_NT] = input[_NT];\n }\n return entries;\n}, \"se_ListTypesInput\");\nvar se_ListTypeVersionsInput = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_T] != null) {\n entries[_T] = input[_T];\n }\n if (input[_TN] != null) {\n entries[_TN] = input[_TN];\n }\n if (input[_Ar] != null) {\n entries[_Ar] = input[_Ar];\n }\n if (input[_MR] != null) {\n entries[_MR] = input[_MR];\n }\n if (input[_NT] != null) {\n entries[_NT] = input[_NT];\n }\n if (input[_DSep] != null) {\n entries[_DSep] = input[_DSep];\n }\n if (input[_PI] != null) {\n entries[_PI] = input[_PI];\n }\n return entries;\n}, \"se_ListTypeVersionsInput\");\nvar se_LoggingConfig = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_LRA] != null) {\n entries[_LRA] = input[_LRA];\n }\n if (input[_LGN] != null) {\n entries[_LGN] = input[_LGN];\n }\n return entries;\n}, \"se_LoggingConfig\");\nvar se_LogicalResourceIds = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n let counter = 1;\n for (const entry of input) {\n if (entry === null) {\n continue;\n }\n entries[`member.${counter}`] = entry;\n counter++;\n }\n return entries;\n}, \"se_LogicalResourceIds\");\nvar se_ManagedExecution = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_Act] != null) {\n entries[_Act] = input[_Act];\n }\n return entries;\n}, \"se_ManagedExecution\");\nvar se_NotificationARNs = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n let counter = 1;\n for (const entry of input) {\n if (entry === null) {\n continue;\n }\n entries[`member.${counter}`] = entry;\n counter++;\n }\n return entries;\n}, \"se_NotificationARNs\");\nvar se_OperationResultFilter = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_N] != null) {\n entries[_N] = input[_N];\n }\n if (input[_Va] != null) {\n entries[_Va] = input[_Va];\n }\n return entries;\n}, \"se_OperationResultFilter\");\nvar se_OperationResultFilters = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n let counter = 1;\n for (const entry of input) {\n if (entry === null) {\n continue;\n }\n const memberEntries = se_OperationResultFilter(entry, context);\n Object.entries(memberEntries).forEach(([key, value]) => {\n entries[`member.${counter}.${key}`] = value;\n });\n counter++;\n }\n return entries;\n}, \"se_OperationResultFilters\");\nvar se_OrganizationalUnitIdList = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n let counter = 1;\n for (const entry of input) {\n if (entry === null) {\n continue;\n }\n entries[`member.${counter}`] = entry;\n counter++;\n }\n return entries;\n}, \"se_OrganizationalUnitIdList\");\nvar se_Parameter = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_PK] != null) {\n entries[_PK] = input[_PK];\n }\n if (input[_PV] != null) {\n entries[_PV] = input[_PV];\n }\n if (input[_UPV] != null) {\n entries[_UPV] = input[_UPV];\n }\n if (input[_RV] != null) {\n entries[_RV] = input[_RV];\n }\n return entries;\n}, \"se_Parameter\");\nvar se_Parameters = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n let counter = 1;\n for (const entry of input) {\n if (entry === null) {\n continue;\n }\n const memberEntries = se_Parameter(entry, context);\n Object.entries(memberEntries).forEach(([key, value]) => {\n entries[`member.${counter}.${key}`] = value;\n });\n counter++;\n }\n return entries;\n}, \"se_Parameters\");\nvar se_PublishTypeInput = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_T] != null) {\n entries[_T] = input[_T];\n }\n if (input[_Ar] != null) {\n entries[_Ar] = input[_Ar];\n }\n if (input[_TN] != null) {\n entries[_TN] = input[_TN];\n }\n if (input[_PVN] != null) {\n entries[_PVN] = input[_PVN];\n }\n return entries;\n}, \"se_PublishTypeInput\");\nvar se_RecordHandlerProgressInput = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_BT] != null) {\n entries[_BT] = input[_BT];\n }\n if (input[_OS] != null) {\n entries[_OS] = input[_OS];\n }\n if (input[_COS] != null) {\n entries[_COS] = input[_COS];\n }\n if (input[_SM] != null) {\n entries[_SM] = input[_SM];\n }\n if (input[_EC] != null) {\n entries[_EC] = input[_EC];\n }\n if (input[_RM] != null) {\n entries[_RM] = input[_RM];\n }\n if (input[_CRT] != null) {\n entries[_CRT] = input[_CRT];\n }\n return entries;\n}, \"se_RecordHandlerProgressInput\");\nvar se_RegionList = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n let counter = 1;\n for (const entry of input) {\n if (entry === null) {\n continue;\n }\n entries[`member.${counter}`] = entry;\n counter++;\n }\n return entries;\n}, \"se_RegionList\");\nvar se_RegisterPublisherInput = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_ATAC] != null) {\n entries[_ATAC] = input[_ATAC];\n }\n if (input[_CAo] != null) {\n entries[_CAo] = input[_CAo];\n }\n return entries;\n}, \"se_RegisterPublisherInput\");\nvar se_RegisterTypeInput = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_T] != null) {\n entries[_T] = input[_T];\n }\n if (input[_TN] != null) {\n entries[_TN] = input[_TN];\n }\n if (input[_SHP] != null) {\n entries[_SHP] = input[_SHP];\n }\n if (input[_LC] != null) {\n const memberEntries = se_LoggingConfig(input[_LC], context);\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `LoggingConfig.${key}`;\n entries[loc] = value;\n });\n }\n if (input[_ERA] != null) {\n entries[_ERA] = input[_ERA];\n }\n if (input[_CRT] != null) {\n entries[_CRT] = input[_CRT];\n }\n return entries;\n}, \"se_RegisterTypeInput\");\nvar se_ResourceDefinition = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_RTes] != null) {\n entries[_RTes] = input[_RTes];\n }\n if (input[_LRI] != null) {\n entries[_LRI] = input[_LRI];\n }\n if (input[_RI] != null) {\n const memberEntries = se_ResourceIdentifierProperties(input[_RI], context);\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `ResourceIdentifier.${key}`;\n entries[loc] = value;\n });\n }\n return entries;\n}, \"se_ResourceDefinition\");\nvar se_ResourceDefinitions = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n let counter = 1;\n for (const entry of input) {\n if (entry === null) {\n continue;\n }\n const memberEntries = se_ResourceDefinition(entry, context);\n Object.entries(memberEntries).forEach(([key, value]) => {\n entries[`member.${counter}.${key}`] = value;\n });\n counter++;\n }\n return entries;\n}, \"se_ResourceDefinitions\");\nvar se_ResourceIdentifierProperties = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n let counter = 1;\n Object.keys(input).filter((key) => input[key] != null).forEach((key) => {\n entries[`entry.${counter}.key`] = key;\n entries[`entry.${counter}.value`] = input[key];\n counter++;\n });\n return entries;\n}, \"se_ResourceIdentifierProperties\");\nvar se_ResourcesToImport = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n let counter = 1;\n for (const entry of input) {\n if (entry === null) {\n continue;\n }\n const memberEntries = se_ResourceToImport(entry, context);\n Object.entries(memberEntries).forEach(([key, value]) => {\n entries[`member.${counter}.${key}`] = value;\n });\n counter++;\n }\n return entries;\n}, \"se_ResourcesToImport\");\nvar se_ResourcesToSkip = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n let counter = 1;\n for (const entry of input) {\n if (entry === null) {\n continue;\n }\n entries[`member.${counter}`] = entry;\n counter++;\n }\n return entries;\n}, \"se_ResourcesToSkip\");\nvar se_ResourceToImport = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_RTes] != null) {\n entries[_RTes] = input[_RTes];\n }\n if (input[_LRI] != null) {\n entries[_LRI] = input[_LRI];\n }\n if (input[_RI] != null) {\n const memberEntries = se_ResourceIdentifierProperties(input[_RI], context);\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `ResourceIdentifier.${key}`;\n entries[loc] = value;\n });\n }\n return entries;\n}, \"se_ResourceToImport\");\nvar se_ResourceTypes = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n let counter = 1;\n for (const entry of input) {\n if (entry === null) {\n continue;\n }\n entries[`member.${counter}`] = entry;\n counter++;\n }\n return entries;\n}, \"se_ResourceTypes\");\nvar se_RetainResources = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n let counter = 1;\n for (const entry of input) {\n if (entry === null) {\n continue;\n }\n entries[`member.${counter}`] = entry;\n counter++;\n }\n return entries;\n}, \"se_RetainResources\");\nvar se_RollbackConfiguration = /* @__PURE__ */ __name((input, context) => {\n var _a;\n const entries = {};\n if (input[_RTo] != null) {\n const memberEntries = se_RollbackTriggers(input[_RTo], context);\n if (((_a = input[_RTo]) == null ? void 0 : _a.length) === 0) {\n entries.RollbackTriggers = [];\n }\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `RollbackTriggers.${key}`;\n entries[loc] = value;\n });\n }\n if (input[_MTIM] != null) {\n entries[_MTIM] = input[_MTIM];\n }\n return entries;\n}, \"se_RollbackConfiguration\");\nvar se_RollbackStackInput = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_SN] != null) {\n entries[_SN] = input[_SN];\n }\n if (input[_RARN] != null) {\n entries[_RARN] = input[_RARN];\n }\n if (input[_CRT] != null) {\n entries[_CRT] = input[_CRT];\n }\n if (input[_REOC] != null) {\n entries[_REOC] = input[_REOC];\n }\n return entries;\n}, \"se_RollbackStackInput\");\nvar se_RollbackTrigger = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_Ar] != null) {\n entries[_Ar] = input[_Ar];\n }\n if (input[_T] != null) {\n entries[_T] = input[_T];\n }\n return entries;\n}, \"se_RollbackTrigger\");\nvar se_RollbackTriggers = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n let counter = 1;\n for (const entry of input) {\n if (entry === null) {\n continue;\n }\n const memberEntries = se_RollbackTrigger(entry, context);\n Object.entries(memberEntries).forEach(([key, value]) => {\n entries[`member.${counter}.${key}`] = value;\n });\n counter++;\n }\n return entries;\n}, \"se_RollbackTriggers\");\nvar se_ScannedResourceIdentifier = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_RTes] != null) {\n entries[_RTes] = input[_RTes];\n }\n if (input[_RI] != null) {\n const memberEntries = se_JazzResourceIdentifierProperties(input[_RI], context);\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `ResourceIdentifier.${key}`;\n entries[loc] = value;\n });\n }\n return entries;\n}, \"se_ScannedResourceIdentifier\");\nvar se_ScannedResourceIdentifiers = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n let counter = 1;\n for (const entry of input) {\n if (entry === null) {\n continue;\n }\n const memberEntries = se_ScannedResourceIdentifier(entry, context);\n Object.entries(memberEntries).forEach(([key, value]) => {\n entries[`member.${counter}.${key}`] = value;\n });\n counter++;\n }\n return entries;\n}, \"se_ScannedResourceIdentifiers\");\nvar se_SetStackPolicyInput = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_SN] != null) {\n entries[_SN] = input[_SN];\n }\n if (input[_SPB] != null) {\n entries[_SPB] = input[_SPB];\n }\n if (input[_SPURL] != null) {\n entries[_SPURL] = input[_SPURL];\n }\n return entries;\n}, \"se_SetStackPolicyInput\");\nvar se_SetTypeConfigurationInput = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_TA] != null) {\n entries[_TA] = input[_TA];\n }\n if (input[_Co] != null) {\n entries[_Co] = input[_Co];\n }\n if (input[_CAon] != null) {\n entries[_CAon] = input[_CAon];\n }\n if (input[_TN] != null) {\n entries[_TN] = input[_TN];\n }\n if (input[_T] != null) {\n entries[_T] = input[_T];\n }\n return entries;\n}, \"se_SetTypeConfigurationInput\");\nvar se_SetTypeDefaultVersionInput = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_Ar] != null) {\n entries[_Ar] = input[_Ar];\n }\n if (input[_T] != null) {\n entries[_T] = input[_T];\n }\n if (input[_TN] != null) {\n entries[_TN] = input[_TN];\n }\n if (input[_VI] != null) {\n entries[_VI] = input[_VI];\n }\n return entries;\n}, \"se_SetTypeDefaultVersionInput\");\nvar se_SignalResourceInput = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_SN] != null) {\n entries[_SN] = input[_SN];\n }\n if (input[_LRI] != null) {\n entries[_LRI] = input[_LRI];\n }\n if (input[_UI] != null) {\n entries[_UI] = input[_UI];\n }\n if (input[_S] != null) {\n entries[_S] = input[_S];\n }\n return entries;\n}, \"se_SignalResourceInput\");\nvar se_StackIdList = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n let counter = 1;\n for (const entry of input) {\n if (entry === null) {\n continue;\n }\n entries[`member.${counter}`] = entry;\n counter++;\n }\n return entries;\n}, \"se_StackIdList\");\nvar se_StackInstanceFilter = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_N] != null) {\n entries[_N] = input[_N];\n }\n if (input[_Va] != null) {\n entries[_Va] = input[_Va];\n }\n return entries;\n}, \"se_StackInstanceFilter\");\nvar se_StackInstanceFilters = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n let counter = 1;\n for (const entry of input) {\n if (entry === null) {\n continue;\n }\n const memberEntries = se_StackInstanceFilter(entry, context);\n Object.entries(memberEntries).forEach(([key, value]) => {\n entries[`member.${counter}.${key}`] = value;\n });\n counter++;\n }\n return entries;\n}, \"se_StackInstanceFilters\");\nvar se_StackResourceDriftStatusFilters = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n let counter = 1;\n for (const entry of input) {\n if (entry === null) {\n continue;\n }\n entries[`member.${counter}`] = entry;\n counter++;\n }\n return entries;\n}, \"se_StackResourceDriftStatusFilters\");\nvar se_StackSetOperationPreferences = /* @__PURE__ */ __name((input, context) => {\n var _a;\n const entries = {};\n if (input[_RCT] != null) {\n entries[_RCT] = input[_RCT];\n }\n if (input[_RO] != null) {\n const memberEntries = se_RegionList(input[_RO], context);\n if (((_a = input[_RO]) == null ? void 0 : _a.length) === 0) {\n entries.RegionOrder = [];\n }\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `RegionOrder.${key}`;\n entries[loc] = value;\n });\n }\n if (input[_FTC] != null) {\n entries[_FTC] = input[_FTC];\n }\n if (input[_FTP] != null) {\n entries[_FTP] = input[_FTP];\n }\n if (input[_MCC] != null) {\n entries[_MCC] = input[_MCC];\n }\n if (input[_MCP] != null) {\n entries[_MCP] = input[_MCP];\n }\n if (input[_CM] != null) {\n entries[_CM] = input[_CM];\n }\n return entries;\n}, \"se_StackSetOperationPreferences\");\nvar se_StackStatusFilter = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n let counter = 1;\n for (const entry of input) {\n if (entry === null) {\n continue;\n }\n entries[`member.${counter}`] = entry;\n counter++;\n }\n return entries;\n}, \"se_StackStatusFilter\");\nvar se_StartResourceScanInput = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_CRT] != null) {\n entries[_CRT] = input[_CRT];\n }\n return entries;\n}, \"se_StartResourceScanInput\");\nvar se_StopStackSetOperationInput = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_SSN] != null) {\n entries[_SSN] = input[_SSN];\n }\n if (input[_OI] != null) {\n entries[_OI] = input[_OI];\n }\n if (input[_CA] != null) {\n entries[_CA] = input[_CA];\n }\n return entries;\n}, \"se_StopStackSetOperationInput\");\nvar se_Tag = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_K] != null) {\n entries[_K] = input[_K];\n }\n if (input[_Val] != null) {\n entries[_Val] = input[_Val];\n }\n return entries;\n}, \"se_Tag\");\nvar se_Tags = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n let counter = 1;\n for (const entry of input) {\n if (entry === null) {\n continue;\n }\n const memberEntries = se_Tag(entry, context);\n Object.entries(memberEntries).forEach(([key, value]) => {\n entries[`member.${counter}.${key}`] = value;\n });\n counter++;\n }\n return entries;\n}, \"se_Tags\");\nvar se_TemplateConfiguration = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_DPe] != null) {\n entries[_DPe] = input[_DPe];\n }\n if (input[_URP] != null) {\n entries[_URP] = input[_URP];\n }\n return entries;\n}, \"se_TemplateConfiguration\");\nvar se_TemplateSummaryConfig = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_TURTAW] != null) {\n entries[_TURTAW] = input[_TURTAW];\n }\n return entries;\n}, \"se_TemplateSummaryConfig\");\nvar se_TestTypeInput = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_Ar] != null) {\n entries[_Ar] = input[_Ar];\n }\n if (input[_T] != null) {\n entries[_T] = input[_T];\n }\n if (input[_TN] != null) {\n entries[_TN] = input[_TN];\n }\n if (input[_VI] != null) {\n entries[_VI] = input[_VI];\n }\n if (input[_LDB] != null) {\n entries[_LDB] = input[_LDB];\n }\n return entries;\n}, \"se_TestTypeInput\");\nvar se_TypeConfigurationIdentifier = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_TA] != null) {\n entries[_TA] = input[_TA];\n }\n if (input[_TCA] != null) {\n entries[_TCA] = input[_TCA];\n }\n if (input[_TCAy] != null) {\n entries[_TCAy] = input[_TCAy];\n }\n if (input[_T] != null) {\n entries[_T] = input[_T];\n }\n if (input[_TN] != null) {\n entries[_TN] = input[_TN];\n }\n return entries;\n}, \"se_TypeConfigurationIdentifier\");\nvar se_TypeConfigurationIdentifiers = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n let counter = 1;\n for (const entry of input) {\n if (entry === null) {\n continue;\n }\n const memberEntries = se_TypeConfigurationIdentifier(entry, context);\n Object.entries(memberEntries).forEach(([key, value]) => {\n entries[`member.${counter}.${key}`] = value;\n });\n counter++;\n }\n return entries;\n}, \"se_TypeConfigurationIdentifiers\");\nvar se_TypeFilters = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_Ca] != null) {\n entries[_Ca] = input[_Ca];\n }\n if (input[_PI] != null) {\n entries[_PI] = input[_PI];\n }\n if (input[_TNP] != null) {\n entries[_TNP] = input[_TNP];\n }\n return entries;\n}, \"se_TypeFilters\");\nvar se_UpdateGeneratedTemplateInput = /* @__PURE__ */ __name((input, context) => {\n var _a, _b;\n const entries = {};\n if (input[_GTN] != null) {\n entries[_GTN] = input[_GTN];\n }\n if (input[_NGTN] != null) {\n entries[_NGTN] = input[_NGTN];\n }\n if (input[_AR] != null) {\n const memberEntries = se_ResourceDefinitions(input[_AR], context);\n if (((_a = input[_AR]) == null ? void 0 : _a.length) === 0) {\n entries.AddResources = [];\n }\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `AddResources.${key}`;\n entries[loc] = value;\n });\n }\n if (input[_RRe] != null) {\n const memberEntries = se_JazzLogicalResourceIds(input[_RRe], context);\n if (((_b = input[_RRe]) == null ? void 0 : _b.length) === 0) {\n entries.RemoveResources = [];\n }\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `RemoveResources.${key}`;\n entries[loc] = value;\n });\n }\n if (input[_RAR] != null) {\n entries[_RAR] = input[_RAR];\n }\n if (input[_TC] != null) {\n const memberEntries = se_TemplateConfiguration(input[_TC], context);\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `TemplateConfiguration.${key}`;\n entries[loc] = value;\n });\n }\n return entries;\n}, \"se_UpdateGeneratedTemplateInput\");\nvar se_UpdateStackInput = /* @__PURE__ */ __name((input, context) => {\n var _a, _b, _c, _d, _e2;\n const entries = {};\n if (input[_SN] != null) {\n entries[_SN] = input[_SN];\n }\n if (input[_TB] != null) {\n entries[_TB] = input[_TB];\n }\n if (input[_TURL] != null) {\n entries[_TURL] = input[_TURL];\n }\n if (input[_UPT] != null) {\n entries[_UPT] = input[_UPT];\n }\n if (input[_SPDUB] != null) {\n entries[_SPDUB] = input[_SPDUB];\n }\n if (input[_SPDUURL] != null) {\n entries[_SPDUURL] = input[_SPDUURL];\n }\n if (input[_P] != null) {\n const memberEntries = se_Parameters(input[_P], context);\n if (((_a = input[_P]) == null ? void 0 : _a.length) === 0) {\n entries.Parameters = [];\n }\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `Parameters.${key}`;\n entries[loc] = value;\n });\n }\n if (input[_C] != null) {\n const memberEntries = se_Capabilities(input[_C], context);\n if (((_b = input[_C]) == null ? void 0 : _b.length) === 0) {\n entries.Capabilities = [];\n }\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `Capabilities.${key}`;\n entries[loc] = value;\n });\n }\n if (input[_RTe] != null) {\n const memberEntries = se_ResourceTypes(input[_RTe], context);\n if (((_c = input[_RTe]) == null ? void 0 : _c.length) === 0) {\n entries.ResourceTypes = [];\n }\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `ResourceTypes.${key}`;\n entries[loc] = value;\n });\n }\n if (input[_RARN] != null) {\n entries[_RARN] = input[_RARN];\n }\n if (input[_RC] != null) {\n const memberEntries = se_RollbackConfiguration(input[_RC], context);\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `RollbackConfiguration.${key}`;\n entries[loc] = value;\n });\n }\n if (input[_SPB] != null) {\n entries[_SPB] = input[_SPB];\n }\n if (input[_SPURL] != null) {\n entries[_SPURL] = input[_SPURL];\n }\n if (input[_NARN] != null) {\n const memberEntries = se_NotificationARNs(input[_NARN], context);\n if (((_d = input[_NARN]) == null ? void 0 : _d.length) === 0) {\n entries.NotificationARNs = [];\n }\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `NotificationARNs.${key}`;\n entries[loc] = value;\n });\n }\n if (input[_Ta] != null) {\n const memberEntries = se_Tags(input[_Ta], context);\n if (((_e2 = input[_Ta]) == null ? void 0 : _e2.length) === 0) {\n entries.Tags = [];\n }\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `Tags.${key}`;\n entries[loc] = value;\n });\n }\n if (input[_DR] != null) {\n entries[_DR] = input[_DR];\n }\n if (input[_CRT] != null) {\n entries[_CRT] = input[_CRT];\n }\n if (input[_REOC] != null) {\n entries[_REOC] = input[_REOC];\n }\n return entries;\n}, \"se_UpdateStackInput\");\nvar se_UpdateStackInstancesInput = /* @__PURE__ */ __name((input, context) => {\n var _a, _b, _c;\n const entries = {};\n if (input[_SSN] != null) {\n entries[_SSN] = input[_SSN];\n }\n if (input[_Ac] != null) {\n const memberEntries = se_AccountList(input[_Ac], context);\n if (((_a = input[_Ac]) == null ? void 0 : _a.length) === 0) {\n entries.Accounts = [];\n }\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `Accounts.${key}`;\n entries[loc] = value;\n });\n }\n if (input[_DTep] != null) {\n const memberEntries = se_DeploymentTargets(input[_DTep], context);\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `DeploymentTargets.${key}`;\n entries[loc] = value;\n });\n }\n if (input[_Re] != null) {\n const memberEntries = se_RegionList(input[_Re], context);\n if (((_b = input[_Re]) == null ? void 0 : _b.length) === 0) {\n entries.Regions = [];\n }\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `Regions.${key}`;\n entries[loc] = value;\n });\n }\n if (input[_PO] != null) {\n const memberEntries = se_Parameters(input[_PO], context);\n if (((_c = input[_PO]) == null ? void 0 : _c.length) === 0) {\n entries.ParameterOverrides = [];\n }\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `ParameterOverrides.${key}`;\n entries[loc] = value;\n });\n }\n if (input[_OP] != null) {\n const memberEntries = se_StackSetOperationPreferences(input[_OP], context);\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `OperationPreferences.${key}`;\n entries[loc] = value;\n });\n }\n if (input[_OI] === void 0) {\n input[_OI] = (0, import_uuid.v4)();\n }\n if (input[_OI] != null) {\n entries[_OI] = input[_OI];\n }\n if (input[_CA] != null) {\n entries[_CA] = input[_CA];\n }\n return entries;\n}, \"se_UpdateStackInstancesInput\");\nvar se_UpdateStackSetInput = /* @__PURE__ */ __name((input, context) => {\n var _a, _b, _c, _d, _e2;\n const entries = {};\n if (input[_SSN] != null) {\n entries[_SSN] = input[_SSN];\n }\n if (input[_D] != null) {\n entries[_D] = input[_D];\n }\n if (input[_TB] != null) {\n entries[_TB] = input[_TB];\n }\n if (input[_TURL] != null) {\n entries[_TURL] = input[_TURL];\n }\n if (input[_UPT] != null) {\n entries[_UPT] = input[_UPT];\n }\n if (input[_P] != null) {\n const memberEntries = se_Parameters(input[_P], context);\n if (((_a = input[_P]) == null ? void 0 : _a.length) === 0) {\n entries.Parameters = [];\n }\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `Parameters.${key}`;\n entries[loc] = value;\n });\n }\n if (input[_C] != null) {\n const memberEntries = se_Capabilities(input[_C], context);\n if (((_b = input[_C]) == null ? void 0 : _b.length) === 0) {\n entries.Capabilities = [];\n }\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `Capabilities.${key}`;\n entries[loc] = value;\n });\n }\n if (input[_Ta] != null) {\n const memberEntries = se_Tags(input[_Ta], context);\n if (((_c = input[_Ta]) == null ? void 0 : _c.length) === 0) {\n entries.Tags = [];\n }\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `Tags.${key}`;\n entries[loc] = value;\n });\n }\n if (input[_OP] != null) {\n const memberEntries = se_StackSetOperationPreferences(input[_OP], context);\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `OperationPreferences.${key}`;\n entries[loc] = value;\n });\n }\n if (input[_ARARN] != null) {\n entries[_ARARN] = input[_ARARN];\n }\n if (input[_ERN] != null) {\n entries[_ERN] = input[_ERN];\n }\n if (input[_DTep] != null) {\n const memberEntries = se_DeploymentTargets(input[_DTep], context);\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `DeploymentTargets.${key}`;\n entries[loc] = value;\n });\n }\n if (input[_PM] != null) {\n entries[_PM] = input[_PM];\n }\n if (input[_AD] != null) {\n const memberEntries = se_AutoDeployment(input[_AD], context);\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `AutoDeployment.${key}`;\n entries[loc] = value;\n });\n }\n if (input[_OI] === void 0) {\n input[_OI] = (0, import_uuid.v4)();\n }\n if (input[_OI] != null) {\n entries[_OI] = input[_OI];\n }\n if (input[_Ac] != null) {\n const memberEntries = se_AccountList(input[_Ac], context);\n if (((_d = input[_Ac]) == null ? void 0 : _d.length) === 0) {\n entries.Accounts = [];\n }\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `Accounts.${key}`;\n entries[loc] = value;\n });\n }\n if (input[_Re] != null) {\n const memberEntries = se_RegionList(input[_Re], context);\n if (((_e2 = input[_Re]) == null ? void 0 : _e2.length) === 0) {\n entries.Regions = [];\n }\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `Regions.${key}`;\n entries[loc] = value;\n });\n }\n if (input[_CA] != null) {\n entries[_CA] = input[_CA];\n }\n if (input[_ME] != null) {\n const memberEntries = se_ManagedExecution(input[_ME], context);\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `ManagedExecution.${key}`;\n entries[loc] = value;\n });\n }\n return entries;\n}, \"se_UpdateStackSetInput\");\nvar se_UpdateTerminationProtectionInput = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_ETP] != null) {\n entries[_ETP] = input[_ETP];\n }\n if (input[_SN] != null) {\n entries[_SN] = input[_SN];\n }\n return entries;\n}, \"se_UpdateTerminationProtectionInput\");\nvar se_ValidateTemplateInput = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_TB] != null) {\n entries[_TB] = input[_TB];\n }\n if (input[_TURL] != null) {\n entries[_TURL] = input[_TURL];\n }\n return entries;\n}, \"se_ValidateTemplateInput\");\nvar de_AccountGateResult = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_S] != null) {\n contents[_S] = (0, import_smithy_client.expectString)(output[_S]);\n }\n if (output[_SRt] != null) {\n contents[_SRt] = (0, import_smithy_client.expectString)(output[_SRt]);\n }\n return contents;\n}, \"de_AccountGateResult\");\nvar de_AccountLimit = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_N] != null) {\n contents[_N] = (0, import_smithy_client.expectString)(output[_N]);\n }\n if (output[_Val] != null) {\n contents[_Val] = (0, import_smithy_client.strictParseInt32)(output[_Val]);\n }\n return contents;\n}, \"de_AccountLimit\");\nvar de_AccountLimitList = /* @__PURE__ */ __name((output, context) => {\n return (output || []).filter((e) => e != null).map((entry) => {\n return de_AccountLimit(entry, context);\n });\n}, \"de_AccountLimitList\");\nvar de_AccountList = /* @__PURE__ */ __name((output, context) => {\n return (output || []).filter((e) => e != null).map((entry) => {\n return (0, import_smithy_client.expectString)(entry);\n });\n}, \"de_AccountList\");\nvar de_ActivateOrganizationsAccessOutput = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n return contents;\n}, \"de_ActivateOrganizationsAccessOutput\");\nvar de_ActivateTypeOutput = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_Ar] != null) {\n contents[_Ar] = (0, import_smithy_client.expectString)(output[_Ar]);\n }\n return contents;\n}, \"de_ActivateTypeOutput\");\nvar de_AllowedValues = /* @__PURE__ */ __name((output, context) => {\n return (output || []).filter((e) => e != null).map((entry) => {\n return (0, import_smithy_client.expectString)(entry);\n });\n}, \"de_AllowedValues\");\nvar de_AlreadyExistsException = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_M] != null) {\n contents[_M] = (0, import_smithy_client.expectString)(output[_M]);\n }\n return contents;\n}, \"de_AlreadyExistsException\");\nvar de_AutoDeployment = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_E] != null) {\n contents[_E] = (0, import_smithy_client.parseBoolean)(output[_E]);\n }\n if (output[_RSOAR] != null) {\n contents[_RSOAR] = (0, import_smithy_client.parseBoolean)(output[_RSOAR]);\n }\n return contents;\n}, \"de_AutoDeployment\");\nvar de_BatchDescribeTypeConfigurationsError = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_EC] != null) {\n contents[_EC] = (0, import_smithy_client.expectString)(output[_EC]);\n }\n if (output[_EM] != null) {\n contents[_EM] = (0, import_smithy_client.expectString)(output[_EM]);\n }\n if (output[_TCIy] != null) {\n contents[_TCIy] = de_TypeConfigurationIdentifier(output[_TCIy], context);\n }\n return contents;\n}, \"de_BatchDescribeTypeConfigurationsError\");\nvar de_BatchDescribeTypeConfigurationsErrors = /* @__PURE__ */ __name((output, context) => {\n return (output || []).filter((e) => e != null).map((entry) => {\n return de_BatchDescribeTypeConfigurationsError(entry, context);\n });\n}, \"de_BatchDescribeTypeConfigurationsErrors\");\nvar de_BatchDescribeTypeConfigurationsOutput = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output.Errors === \"\") {\n contents[_Er] = [];\n } else if (output[_Er] != null && output[_Er][_m] != null) {\n contents[_Er] = de_BatchDescribeTypeConfigurationsErrors((0, import_smithy_client.getArrayIfSingleItem)(output[_Er][_m]), context);\n }\n if (output.UnprocessedTypeConfigurations === \"\") {\n contents[_UTC] = [];\n } else if (output[_UTC] != null && output[_UTC][_m] != null) {\n contents[_UTC] = de_UnprocessedTypeConfigurations((0, import_smithy_client.getArrayIfSingleItem)(output[_UTC][_m]), context);\n }\n if (output.TypeConfigurations === \"\") {\n contents[_TCy] = [];\n } else if (output[_TCy] != null && output[_TCy][_m] != null) {\n contents[_TCy] = de_TypeConfigurationDetailsList((0, import_smithy_client.getArrayIfSingleItem)(output[_TCy][_m]), context);\n }\n return contents;\n}, \"de_BatchDescribeTypeConfigurationsOutput\");\nvar de_Capabilities = /* @__PURE__ */ __name((output, context) => {\n return (output || []).filter((e) => e != null).map((entry) => {\n return (0, import_smithy_client.expectString)(entry);\n });\n}, \"de_Capabilities\");\nvar de_CFNRegistryException = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_M] != null) {\n contents[_M] = (0, import_smithy_client.expectString)(output[_M]);\n }\n return contents;\n}, \"de_CFNRegistryException\");\nvar de_Change = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_T] != null) {\n contents[_T] = (0, import_smithy_client.expectString)(output[_T]);\n }\n if (output[_HIC] != null) {\n contents[_HIC] = (0, import_smithy_client.strictParseInt32)(output[_HIC]);\n }\n if (output[_RCe] != null) {\n contents[_RCe] = de_ResourceChange(output[_RCe], context);\n }\n return contents;\n}, \"de_Change\");\nvar de_Changes = /* @__PURE__ */ __name((output, context) => {\n return (output || []).filter((e) => e != null).map((entry) => {\n return de_Change(entry, context);\n });\n}, \"de_Changes\");\nvar de_ChangeSetHook = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_IP] != null) {\n contents[_IP] = (0, import_smithy_client.expectString)(output[_IP]);\n }\n if (output[_FM] != null) {\n contents[_FM] = (0, import_smithy_client.expectString)(output[_FM]);\n }\n if (output[_TN] != null) {\n contents[_TN] = (0, import_smithy_client.expectString)(output[_TN]);\n }\n if (output[_TVI] != null) {\n contents[_TVI] = (0, import_smithy_client.expectString)(output[_TVI]);\n }\n if (output[_TCVI] != null) {\n contents[_TCVI] = (0, import_smithy_client.expectString)(output[_TCVI]);\n }\n if (output[_TD] != null) {\n contents[_TD] = de_ChangeSetHookTargetDetails(output[_TD], context);\n }\n return contents;\n}, \"de_ChangeSetHook\");\nvar de_ChangeSetHookResourceTargetDetails = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_LRI] != null) {\n contents[_LRI] = (0, import_smithy_client.expectString)(output[_LRI]);\n }\n if (output[_RTes] != null) {\n contents[_RTes] = (0, import_smithy_client.expectString)(output[_RTes]);\n }\n if (output[_RA] != null) {\n contents[_RA] = (0, import_smithy_client.expectString)(output[_RA]);\n }\n return contents;\n}, \"de_ChangeSetHookResourceTargetDetails\");\nvar de_ChangeSetHooks = /* @__PURE__ */ __name((output, context) => {\n return (output || []).filter((e) => e != null).map((entry) => {\n return de_ChangeSetHook(entry, context);\n });\n}, \"de_ChangeSetHooks\");\nvar de_ChangeSetHookTargetDetails = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_TTa] != null) {\n contents[_TTa] = (0, import_smithy_client.expectString)(output[_TTa]);\n }\n if (output[_RTD] != null) {\n contents[_RTD] = de_ChangeSetHookResourceTargetDetails(output[_RTD], context);\n }\n return contents;\n}, \"de_ChangeSetHookTargetDetails\");\nvar de_ChangeSetNotFoundException = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_M] != null) {\n contents[_M] = (0, import_smithy_client.expectString)(output[_M]);\n }\n return contents;\n}, \"de_ChangeSetNotFoundException\");\nvar de_ChangeSetSummaries = /* @__PURE__ */ __name((output, context) => {\n return (output || []).filter((e) => e != null).map((entry) => {\n return de_ChangeSetSummary(entry, context);\n });\n}, \"de_ChangeSetSummaries\");\nvar de_ChangeSetSummary = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_SI] != null) {\n contents[_SI] = (0, import_smithy_client.expectString)(output[_SI]);\n }\n if (output[_SN] != null) {\n contents[_SN] = (0, import_smithy_client.expectString)(output[_SN]);\n }\n if (output[_CSIh] != null) {\n contents[_CSIh] = (0, import_smithy_client.expectString)(output[_CSIh]);\n }\n if (output[_CSN] != null) {\n contents[_CSN] = (0, import_smithy_client.expectString)(output[_CSN]);\n }\n if (output[_ES] != null) {\n contents[_ES] = (0, import_smithy_client.expectString)(output[_ES]);\n }\n if (output[_S] != null) {\n contents[_S] = (0, import_smithy_client.expectString)(output[_S]);\n }\n if (output[_SRt] != null) {\n contents[_SRt] = (0, import_smithy_client.expectString)(output[_SRt]);\n }\n if (output[_CTr] != null) {\n contents[_CTr] = (0, import_smithy_client.expectNonNull)((0, import_smithy_client.parseRfc3339DateTimeWithOffset)(output[_CTr]));\n }\n if (output[_D] != null) {\n contents[_D] = (0, import_smithy_client.expectString)(output[_D]);\n }\n if (output[_INS] != null) {\n contents[_INS] = (0, import_smithy_client.parseBoolean)(output[_INS]);\n }\n if (output[_PCSI] != null) {\n contents[_PCSI] = (0, import_smithy_client.expectString)(output[_PCSI]);\n }\n if (output[_RCSI] != null) {\n contents[_RCSI] = (0, import_smithy_client.expectString)(output[_RCSI]);\n }\n if (output[_IER] != null) {\n contents[_IER] = (0, import_smithy_client.parseBoolean)(output[_IER]);\n }\n return contents;\n}, \"de_ChangeSetSummary\");\nvar de_ConcurrentResourcesLimitExceededException = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_M] != null) {\n contents[_M] = (0, import_smithy_client.expectString)(output[_M]);\n }\n return contents;\n}, \"de_ConcurrentResourcesLimitExceededException\");\nvar de_ContinueUpdateRollbackOutput = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n return contents;\n}, \"de_ContinueUpdateRollbackOutput\");\nvar de_CreateChangeSetOutput = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_I] != null) {\n contents[_I] = (0, import_smithy_client.expectString)(output[_I]);\n }\n if (output[_SI] != null) {\n contents[_SI] = (0, import_smithy_client.expectString)(output[_SI]);\n }\n return contents;\n}, \"de_CreateChangeSetOutput\");\nvar de_CreatedButModifiedException = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_M] != null) {\n contents[_M] = (0, import_smithy_client.expectString)(output[_M]);\n }\n return contents;\n}, \"de_CreatedButModifiedException\");\nvar de_CreateGeneratedTemplateOutput = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_GTI] != null) {\n contents[_GTI] = (0, import_smithy_client.expectString)(output[_GTI]);\n }\n return contents;\n}, \"de_CreateGeneratedTemplateOutput\");\nvar de_CreateStackInstancesOutput = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_OI] != null) {\n contents[_OI] = (0, import_smithy_client.expectString)(output[_OI]);\n }\n return contents;\n}, \"de_CreateStackInstancesOutput\");\nvar de_CreateStackOutput = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_SI] != null) {\n contents[_SI] = (0, import_smithy_client.expectString)(output[_SI]);\n }\n return contents;\n}, \"de_CreateStackOutput\");\nvar de_CreateStackSetOutput = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_SSI] != null) {\n contents[_SSI] = (0, import_smithy_client.expectString)(output[_SSI]);\n }\n return contents;\n}, \"de_CreateStackSetOutput\");\nvar de_DeactivateOrganizationsAccessOutput = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n return contents;\n}, \"de_DeactivateOrganizationsAccessOutput\");\nvar de_DeactivateTypeOutput = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n return contents;\n}, \"de_DeactivateTypeOutput\");\nvar de_DeleteChangeSetOutput = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n return contents;\n}, \"de_DeleteChangeSetOutput\");\nvar de_DeleteStackInstancesOutput = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_OI] != null) {\n contents[_OI] = (0, import_smithy_client.expectString)(output[_OI]);\n }\n return contents;\n}, \"de_DeleteStackInstancesOutput\");\nvar de_DeleteStackSetOutput = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n return contents;\n}, \"de_DeleteStackSetOutput\");\nvar de_DeploymentTargets = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output.Accounts === \"\") {\n contents[_Ac] = [];\n } else if (output[_Ac] != null && output[_Ac][_m] != null) {\n contents[_Ac] = de_AccountList((0, import_smithy_client.getArrayIfSingleItem)(output[_Ac][_m]), context);\n }\n if (output[_AUc] != null) {\n contents[_AUc] = (0, import_smithy_client.expectString)(output[_AUc]);\n }\n if (output.OrganizationalUnitIds === \"\") {\n contents[_OUI] = [];\n } else if (output[_OUI] != null && output[_OUI][_m] != null) {\n contents[_OUI] = de_OrganizationalUnitIdList((0, import_smithy_client.getArrayIfSingleItem)(output[_OUI][_m]), context);\n }\n if (output[_AFT] != null) {\n contents[_AFT] = (0, import_smithy_client.expectString)(output[_AFT]);\n }\n return contents;\n}, \"de_DeploymentTargets\");\nvar de_DeregisterTypeOutput = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n return contents;\n}, \"de_DeregisterTypeOutput\");\nvar de_DescribeAccountLimitsOutput = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output.AccountLimits === \"\") {\n contents[_AL] = [];\n } else if (output[_AL] != null && output[_AL][_m] != null) {\n contents[_AL] = de_AccountLimitList((0, import_smithy_client.getArrayIfSingleItem)(output[_AL][_m]), context);\n }\n if (output[_NT] != null) {\n contents[_NT] = (0, import_smithy_client.expectString)(output[_NT]);\n }\n return contents;\n}, \"de_DescribeAccountLimitsOutput\");\nvar de_DescribeChangeSetHooksOutput = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_CSIh] != null) {\n contents[_CSIh] = (0, import_smithy_client.expectString)(output[_CSIh]);\n }\n if (output[_CSN] != null) {\n contents[_CSN] = (0, import_smithy_client.expectString)(output[_CSN]);\n }\n if (output.Hooks === \"\") {\n contents[_H] = [];\n } else if (output[_H] != null && output[_H][_m] != null) {\n contents[_H] = de_ChangeSetHooks((0, import_smithy_client.getArrayIfSingleItem)(output[_H][_m]), context);\n }\n if (output[_S] != null) {\n contents[_S] = (0, import_smithy_client.expectString)(output[_S]);\n }\n if (output[_NT] != null) {\n contents[_NT] = (0, import_smithy_client.expectString)(output[_NT]);\n }\n if (output[_SI] != null) {\n contents[_SI] = (0, import_smithy_client.expectString)(output[_SI]);\n }\n if (output[_SN] != null) {\n contents[_SN] = (0, import_smithy_client.expectString)(output[_SN]);\n }\n return contents;\n}, \"de_DescribeChangeSetHooksOutput\");\nvar de_DescribeChangeSetOutput = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_CSN] != null) {\n contents[_CSN] = (0, import_smithy_client.expectString)(output[_CSN]);\n }\n if (output[_CSIh] != null) {\n contents[_CSIh] = (0, import_smithy_client.expectString)(output[_CSIh]);\n }\n if (output[_SI] != null) {\n contents[_SI] = (0, import_smithy_client.expectString)(output[_SI]);\n }\n if (output[_SN] != null) {\n contents[_SN] = (0, import_smithy_client.expectString)(output[_SN]);\n }\n if (output[_D] != null) {\n contents[_D] = (0, import_smithy_client.expectString)(output[_D]);\n }\n if (output.Parameters === \"\") {\n contents[_P] = [];\n } else if (output[_P] != null && output[_P][_m] != null) {\n contents[_P] = de_Parameters((0, import_smithy_client.getArrayIfSingleItem)(output[_P][_m]), context);\n }\n if (output[_CTr] != null) {\n contents[_CTr] = (0, import_smithy_client.expectNonNull)((0, import_smithy_client.parseRfc3339DateTimeWithOffset)(output[_CTr]));\n }\n if (output[_ES] != null) {\n contents[_ES] = (0, import_smithy_client.expectString)(output[_ES]);\n }\n if (output[_S] != null) {\n contents[_S] = (0, import_smithy_client.expectString)(output[_S]);\n }\n if (output[_SRt] != null) {\n contents[_SRt] = (0, import_smithy_client.expectString)(output[_SRt]);\n }\n if (output.NotificationARNs === \"\") {\n contents[_NARN] = [];\n } else if (output[_NARN] != null && output[_NARN][_m] != null) {\n contents[_NARN] = de_NotificationARNs((0, import_smithy_client.getArrayIfSingleItem)(output[_NARN][_m]), context);\n }\n if (output[_RC] != null) {\n contents[_RC] = de_RollbackConfiguration(output[_RC], context);\n }\n if (output.Capabilities === \"\") {\n contents[_C] = [];\n } else if (output[_C] != null && output[_C][_m] != null) {\n contents[_C] = de_Capabilities((0, import_smithy_client.getArrayIfSingleItem)(output[_C][_m]), context);\n }\n if (output.Tags === \"\") {\n contents[_Ta] = [];\n } else if (output[_Ta] != null && output[_Ta][_m] != null) {\n contents[_Ta] = de_Tags((0, import_smithy_client.getArrayIfSingleItem)(output[_Ta][_m]), context);\n }\n if (output.Changes === \"\") {\n contents[_Ch] = [];\n } else if (output[_Ch] != null && output[_Ch][_m] != null) {\n contents[_Ch] = de_Changes((0, import_smithy_client.getArrayIfSingleItem)(output[_Ch][_m]), context);\n }\n if (output[_NT] != null) {\n contents[_NT] = (0, import_smithy_client.expectString)(output[_NT]);\n }\n if (output[_INS] != null) {\n contents[_INS] = (0, import_smithy_client.parseBoolean)(output[_INS]);\n }\n if (output[_PCSI] != null) {\n contents[_PCSI] = (0, import_smithy_client.expectString)(output[_PCSI]);\n }\n if (output[_RCSI] != null) {\n contents[_RCSI] = (0, import_smithy_client.expectString)(output[_RCSI]);\n }\n if (output[_OSF] != null) {\n contents[_OSF] = (0, import_smithy_client.expectString)(output[_OSF]);\n }\n if (output[_IER] != null) {\n contents[_IER] = (0, import_smithy_client.parseBoolean)(output[_IER]);\n }\n return contents;\n}, \"de_DescribeChangeSetOutput\");\nvar de_DescribeGeneratedTemplateOutput = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_GTI] != null) {\n contents[_GTI] = (0, import_smithy_client.expectString)(output[_GTI]);\n }\n if (output[_GTN] != null) {\n contents[_GTN] = (0, import_smithy_client.expectString)(output[_GTN]);\n }\n if (output.Resources === \"\") {\n contents[_R] = [];\n } else if (output[_R] != null && output[_R][_m] != null) {\n contents[_R] = de_ResourceDetails((0, import_smithy_client.getArrayIfSingleItem)(output[_R][_m]), context);\n }\n if (output[_S] != null) {\n contents[_S] = (0, import_smithy_client.expectString)(output[_S]);\n }\n if (output[_SRt] != null) {\n contents[_SRt] = (0, import_smithy_client.expectString)(output[_SRt]);\n }\n if (output[_CTr] != null) {\n contents[_CTr] = (0, import_smithy_client.expectNonNull)((0, import_smithy_client.parseRfc3339DateTimeWithOffset)(output[_CTr]));\n }\n if (output[_LUT] != null) {\n contents[_LUT] = (0, import_smithy_client.expectNonNull)((0, import_smithy_client.parseRfc3339DateTimeWithOffset)(output[_LUT]));\n }\n if (output[_Pr] != null) {\n contents[_Pr] = de_TemplateProgress(output[_Pr], context);\n }\n if (output[_SI] != null) {\n contents[_SI] = (0, import_smithy_client.expectString)(output[_SI]);\n }\n if (output[_TC] != null) {\n contents[_TC] = de_TemplateConfiguration(output[_TC], context);\n }\n if (output[_TW] != null) {\n contents[_TW] = (0, import_smithy_client.strictParseInt32)(output[_TW]);\n }\n return contents;\n}, \"de_DescribeGeneratedTemplateOutput\");\nvar de_DescribeOrganizationsAccessOutput = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_S] != null) {\n contents[_S] = (0, import_smithy_client.expectString)(output[_S]);\n }\n return contents;\n}, \"de_DescribeOrganizationsAccessOutput\");\nvar de_DescribePublisherOutput = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_PI] != null) {\n contents[_PI] = (0, import_smithy_client.expectString)(output[_PI]);\n }\n if (output[_PS] != null) {\n contents[_PS] = (0, import_smithy_client.expectString)(output[_PS]);\n }\n if (output[_IPd] != null) {\n contents[_IPd] = (0, import_smithy_client.expectString)(output[_IPd]);\n }\n if (output[_PP] != null) {\n contents[_PP] = (0, import_smithy_client.expectString)(output[_PP]);\n }\n return contents;\n}, \"de_DescribePublisherOutput\");\nvar de_DescribeResourceScanOutput = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_RSI] != null) {\n contents[_RSI] = (0, import_smithy_client.expectString)(output[_RSI]);\n }\n if (output[_S] != null) {\n contents[_S] = (0, import_smithy_client.expectString)(output[_S]);\n }\n if (output[_SRt] != null) {\n contents[_SRt] = (0, import_smithy_client.expectString)(output[_SRt]);\n }\n if (output[_ST] != null) {\n contents[_ST] = (0, import_smithy_client.expectNonNull)((0, import_smithy_client.parseRfc3339DateTimeWithOffset)(output[_ST]));\n }\n if (output[_ET] != null) {\n contents[_ET] = (0, import_smithy_client.expectNonNull)((0, import_smithy_client.parseRfc3339DateTimeWithOffset)(output[_ET]));\n }\n if (output[_PC] != null) {\n contents[_PC] = (0, import_smithy_client.strictParseFloat)(output[_PC]);\n }\n if (output.ResourceTypes === \"\") {\n contents[_RTe] = [];\n } else if (output[_RTe] != null && output[_RTe][_m] != null) {\n contents[_RTe] = de_ResourceTypes((0, import_smithy_client.getArrayIfSingleItem)(output[_RTe][_m]), context);\n }\n if (output[_RSes] != null) {\n contents[_RSes] = (0, import_smithy_client.strictParseInt32)(output[_RSes]);\n }\n if (output[_RRes] != null) {\n contents[_RRes] = (0, import_smithy_client.strictParseInt32)(output[_RRes]);\n }\n return contents;\n}, \"de_DescribeResourceScanOutput\");\nvar de_DescribeStackDriftDetectionStatusOutput = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_SI] != null) {\n contents[_SI] = (0, import_smithy_client.expectString)(output[_SI]);\n }\n if (output[_SDDI] != null) {\n contents[_SDDI] = (0, import_smithy_client.expectString)(output[_SDDI]);\n }\n if (output[_SDS] != null) {\n contents[_SDS] = (0, import_smithy_client.expectString)(output[_SDS]);\n }\n if (output[_DSet] != null) {\n contents[_DSet] = (0, import_smithy_client.expectString)(output[_DSet]);\n }\n if (output[_DSRet] != null) {\n contents[_DSRet] = (0, import_smithy_client.expectString)(output[_DSRet]);\n }\n if (output[_DSRC] != null) {\n contents[_DSRC] = (0, import_smithy_client.strictParseInt32)(output[_DSRC]);\n }\n if (output[_Ti] != null) {\n contents[_Ti] = (0, import_smithy_client.expectNonNull)((0, import_smithy_client.parseRfc3339DateTimeWithOffset)(output[_Ti]));\n }\n return contents;\n}, \"de_DescribeStackDriftDetectionStatusOutput\");\nvar de_DescribeStackEventsOutput = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output.StackEvents === \"\") {\n contents[_SE] = [];\n } else if (output[_SE] != null && output[_SE][_m] != null) {\n contents[_SE] = de_StackEvents((0, import_smithy_client.getArrayIfSingleItem)(output[_SE][_m]), context);\n }\n if (output[_NT] != null) {\n contents[_NT] = (0, import_smithy_client.expectString)(output[_NT]);\n }\n return contents;\n}, \"de_DescribeStackEventsOutput\");\nvar de_DescribeStackInstanceOutput = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_SIta] != null) {\n contents[_SIta] = de_StackInstance(output[_SIta], context);\n }\n return contents;\n}, \"de_DescribeStackInstanceOutput\");\nvar de_DescribeStackResourceDriftsOutput = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output.StackResourceDrifts === \"\") {\n contents[_SRD] = [];\n } else if (output[_SRD] != null && output[_SRD][_m] != null) {\n contents[_SRD] = de_StackResourceDrifts((0, import_smithy_client.getArrayIfSingleItem)(output[_SRD][_m]), context);\n }\n if (output[_NT] != null) {\n contents[_NT] = (0, import_smithy_client.expectString)(output[_NT]);\n }\n return contents;\n}, \"de_DescribeStackResourceDriftsOutput\");\nvar de_DescribeStackResourceOutput = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_SRDt] != null) {\n contents[_SRDt] = de_StackResourceDetail(output[_SRDt], context);\n }\n return contents;\n}, \"de_DescribeStackResourceOutput\");\nvar de_DescribeStackResourcesOutput = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output.StackResources === \"\") {\n contents[_SRta] = [];\n } else if (output[_SRta] != null && output[_SRta][_m] != null) {\n contents[_SRta] = de_StackResources((0, import_smithy_client.getArrayIfSingleItem)(output[_SRta][_m]), context);\n }\n return contents;\n}, \"de_DescribeStackResourcesOutput\");\nvar de_DescribeStackSetOperationOutput = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_SSO] != null) {\n contents[_SSO] = de_StackSetOperation(output[_SSO], context);\n }\n return contents;\n}, \"de_DescribeStackSetOperationOutput\");\nvar de_DescribeStackSetOutput = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_SS] != null) {\n contents[_SS] = de_StackSet(output[_SS], context);\n }\n return contents;\n}, \"de_DescribeStackSetOutput\");\nvar de_DescribeStacksOutput = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output.Stacks === \"\") {\n contents[_St] = [];\n } else if (output[_St] != null && output[_St][_m] != null) {\n contents[_St] = de_Stacks((0, import_smithy_client.getArrayIfSingleItem)(output[_St][_m]), context);\n }\n if (output[_NT] != null) {\n contents[_NT] = (0, import_smithy_client.expectString)(output[_NT]);\n }\n return contents;\n}, \"de_DescribeStacksOutput\");\nvar de_DescribeTypeOutput = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_Ar] != null) {\n contents[_Ar] = (0, import_smithy_client.expectString)(output[_Ar]);\n }\n if (output[_T] != null) {\n contents[_T] = (0, import_smithy_client.expectString)(output[_T]);\n }\n if (output[_TN] != null) {\n contents[_TN] = (0, import_smithy_client.expectString)(output[_TN]);\n }\n if (output[_DVI] != null) {\n contents[_DVI] = (0, import_smithy_client.expectString)(output[_DVI]);\n }\n if (output[_IDV] != null) {\n contents[_IDV] = (0, import_smithy_client.parseBoolean)(output[_IDV]);\n }\n if (output[_TTS] != null) {\n contents[_TTS] = (0, import_smithy_client.expectString)(output[_TTS]);\n }\n if (output[_TTSD] != null) {\n contents[_TTSD] = (0, import_smithy_client.expectString)(output[_TTSD]);\n }\n if (output[_D] != null) {\n contents[_D] = (0, import_smithy_client.expectString)(output[_D]);\n }\n if (output[_Sc] != null) {\n contents[_Sc] = (0, import_smithy_client.expectString)(output[_Sc]);\n }\n if (output[_PTr] != null) {\n contents[_PTr] = (0, import_smithy_client.expectString)(output[_PTr]);\n }\n if (output[_DSep] != null) {\n contents[_DSep] = (0, import_smithy_client.expectString)(output[_DSep]);\n }\n if (output[_LC] != null) {\n contents[_LC] = de_LoggingConfig(output[_LC], context);\n }\n if (output.RequiredActivatedTypes === \"\") {\n contents[_RAT] = [];\n } else if (output[_RAT] != null && output[_RAT][_m] != null) {\n contents[_RAT] = de_RequiredActivatedTypes((0, import_smithy_client.getArrayIfSingleItem)(output[_RAT][_m]), context);\n }\n if (output[_ERA] != null) {\n contents[_ERA] = (0, import_smithy_client.expectString)(output[_ERA]);\n }\n if (output[_Vi] != null) {\n contents[_Vi] = (0, import_smithy_client.expectString)(output[_Vi]);\n }\n if (output[_SU] != null) {\n contents[_SU] = (0, import_smithy_client.expectString)(output[_SU]);\n }\n if (output[_DU] != null) {\n contents[_DU] = (0, import_smithy_client.expectString)(output[_DU]);\n }\n if (output[_LU] != null) {\n contents[_LU] = (0, import_smithy_client.expectNonNull)((0, import_smithy_client.parseRfc3339DateTimeWithOffset)(output[_LU]));\n }\n if (output[_TCi] != null) {\n contents[_TCi] = (0, import_smithy_client.expectNonNull)((0, import_smithy_client.parseRfc3339DateTimeWithOffset)(output[_TCi]));\n }\n if (output[_CSo] != null) {\n contents[_CSo] = (0, import_smithy_client.expectString)(output[_CSo]);\n }\n if (output[_PI] != null) {\n contents[_PI] = (0, import_smithy_client.expectString)(output[_PI]);\n }\n if (output[_OTN] != null) {\n contents[_OTN] = (0, import_smithy_client.expectString)(output[_OTN]);\n }\n if (output[_OTA] != null) {\n contents[_OTA] = (0, import_smithy_client.expectString)(output[_OTA]);\n }\n if (output[_PVN] != null) {\n contents[_PVN] = (0, import_smithy_client.expectString)(output[_PVN]);\n }\n if (output[_LPV] != null) {\n contents[_LPV] = (0, import_smithy_client.expectString)(output[_LPV]);\n }\n if (output[_IA] != null) {\n contents[_IA] = (0, import_smithy_client.parseBoolean)(output[_IA]);\n }\n if (output[_AU] != null) {\n contents[_AU] = (0, import_smithy_client.parseBoolean)(output[_AU]);\n }\n return contents;\n}, \"de_DescribeTypeOutput\");\nvar de_DescribeTypeRegistrationOutput = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_PSr] != null) {\n contents[_PSr] = (0, import_smithy_client.expectString)(output[_PSr]);\n }\n if (output[_D] != null) {\n contents[_D] = (0, import_smithy_client.expectString)(output[_D]);\n }\n if (output[_TA] != null) {\n contents[_TA] = (0, import_smithy_client.expectString)(output[_TA]);\n }\n if (output[_TVA] != null) {\n contents[_TVA] = (0, import_smithy_client.expectString)(output[_TVA]);\n }\n return contents;\n}, \"de_DescribeTypeRegistrationOutput\");\nvar de_DetectStackDriftOutput = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_SDDI] != null) {\n contents[_SDDI] = (0, import_smithy_client.expectString)(output[_SDDI]);\n }\n return contents;\n}, \"de_DetectStackDriftOutput\");\nvar de_DetectStackResourceDriftOutput = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_SRDta] != null) {\n contents[_SRDta] = de_StackResourceDrift(output[_SRDta], context);\n }\n return contents;\n}, \"de_DetectStackResourceDriftOutput\");\nvar de_DetectStackSetDriftOutput = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_OI] != null) {\n contents[_OI] = (0, import_smithy_client.expectString)(output[_OI]);\n }\n return contents;\n}, \"de_DetectStackSetDriftOutput\");\nvar de_EstimateTemplateCostOutput = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_U] != null) {\n contents[_U] = (0, import_smithy_client.expectString)(output[_U]);\n }\n return contents;\n}, \"de_EstimateTemplateCostOutput\");\nvar de_ExecuteChangeSetOutput = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n return contents;\n}, \"de_ExecuteChangeSetOutput\");\nvar de_Export = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_ESI] != null) {\n contents[_ESI] = (0, import_smithy_client.expectString)(output[_ESI]);\n }\n if (output[_N] != null) {\n contents[_N] = (0, import_smithy_client.expectString)(output[_N]);\n }\n if (output[_Val] != null) {\n contents[_Val] = (0, import_smithy_client.expectString)(output[_Val]);\n }\n return contents;\n}, \"de_Export\");\nvar de_Exports = /* @__PURE__ */ __name((output, context) => {\n return (output || []).filter((e) => e != null).map((entry) => {\n return de_Export(entry, context);\n });\n}, \"de_Exports\");\nvar de_GeneratedTemplateNotFoundException = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_M] != null) {\n contents[_M] = (0, import_smithy_client.expectString)(output[_M]);\n }\n return contents;\n}, \"de_GeneratedTemplateNotFoundException\");\nvar de_GetGeneratedTemplateOutput = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_S] != null) {\n contents[_S] = (0, import_smithy_client.expectString)(output[_S]);\n }\n if (output[_TB] != null) {\n contents[_TB] = (0, import_smithy_client.expectString)(output[_TB]);\n }\n return contents;\n}, \"de_GetGeneratedTemplateOutput\");\nvar de_GetStackPolicyOutput = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_SPB] != null) {\n contents[_SPB] = (0, import_smithy_client.expectString)(output[_SPB]);\n }\n return contents;\n}, \"de_GetStackPolicyOutput\");\nvar de_GetTemplateOutput = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_TB] != null) {\n contents[_TB] = (0, import_smithy_client.expectString)(output[_TB]);\n }\n if (output.StagesAvailable === \"\") {\n contents[_SA] = [];\n } else if (output[_SA] != null && output[_SA][_m] != null) {\n contents[_SA] = de_StageList((0, import_smithy_client.getArrayIfSingleItem)(output[_SA][_m]), context);\n }\n return contents;\n}, \"de_GetTemplateOutput\");\nvar de_GetTemplateSummaryOutput = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output.Parameters === \"\") {\n contents[_P] = [];\n } else if (output[_P] != null && output[_P][_m] != null) {\n contents[_P] = de_ParameterDeclarations((0, import_smithy_client.getArrayIfSingleItem)(output[_P][_m]), context);\n }\n if (output[_D] != null) {\n contents[_D] = (0, import_smithy_client.expectString)(output[_D]);\n }\n if (output.Capabilities === \"\") {\n contents[_C] = [];\n } else if (output[_C] != null && output[_C][_m] != null) {\n contents[_C] = de_Capabilities((0, import_smithy_client.getArrayIfSingleItem)(output[_C][_m]), context);\n }\n if (output[_CR] != null) {\n contents[_CR] = (0, import_smithy_client.expectString)(output[_CR]);\n }\n if (output.ResourceTypes === \"\") {\n contents[_RTe] = [];\n } else if (output[_RTe] != null && output[_RTe][_m] != null) {\n contents[_RTe] = de_ResourceTypes((0, import_smithy_client.getArrayIfSingleItem)(output[_RTe][_m]), context);\n }\n if (output[_V] != null) {\n contents[_V] = (0, import_smithy_client.expectString)(output[_V]);\n }\n if (output[_Me] != null) {\n contents[_Me] = (0, import_smithy_client.expectString)(output[_Me]);\n }\n if (output.DeclaredTransforms === \"\") {\n contents[_DTec] = [];\n } else if (output[_DTec] != null && output[_DTec][_m] != null) {\n contents[_DTec] = de_TransformsList((0, import_smithy_client.getArrayIfSingleItem)(output[_DTec][_m]), context);\n }\n if (output.ResourceIdentifierSummaries === \"\") {\n contents[_RIS] = [];\n } else if (output[_RIS] != null && output[_RIS][_m] != null) {\n contents[_RIS] = de_ResourceIdentifierSummaries((0, import_smithy_client.getArrayIfSingleItem)(output[_RIS][_m]), context);\n }\n if (output[_W] != null) {\n contents[_W] = de_Warnings(output[_W], context);\n }\n return contents;\n}, \"de_GetTemplateSummaryOutput\");\nvar de_Imports = /* @__PURE__ */ __name((output, context) => {\n return (output || []).filter((e) => e != null).map((entry) => {\n return (0, import_smithy_client.expectString)(entry);\n });\n}, \"de_Imports\");\nvar de_ImportStacksToStackSetOutput = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_OI] != null) {\n contents[_OI] = (0, import_smithy_client.expectString)(output[_OI]);\n }\n return contents;\n}, \"de_ImportStacksToStackSetOutput\");\nvar de_InsufficientCapabilitiesException = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_M] != null) {\n contents[_M] = (0, import_smithy_client.expectString)(output[_M]);\n }\n return contents;\n}, \"de_InsufficientCapabilitiesException\");\nvar de_InvalidChangeSetStatusException = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_M] != null) {\n contents[_M] = (0, import_smithy_client.expectString)(output[_M]);\n }\n return contents;\n}, \"de_InvalidChangeSetStatusException\");\nvar de_InvalidOperationException = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_M] != null) {\n contents[_M] = (0, import_smithy_client.expectString)(output[_M]);\n }\n return contents;\n}, \"de_InvalidOperationException\");\nvar de_InvalidStateTransitionException = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_M] != null) {\n contents[_M] = (0, import_smithy_client.expectString)(output[_M]);\n }\n return contents;\n}, \"de_InvalidStateTransitionException\");\nvar de_JazzResourceIdentifierProperties = /* @__PURE__ */ __name((output, context) => {\n return output.reduce((acc, pair) => {\n if (pair[\"value\"] === null) {\n return acc;\n }\n acc[pair[\"key\"]] = (0, import_smithy_client.expectString)(pair[\"value\"]);\n return acc;\n }, {});\n}, \"de_JazzResourceIdentifierProperties\");\nvar de_LimitExceededException = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_M] != null) {\n contents[_M] = (0, import_smithy_client.expectString)(output[_M]);\n }\n return contents;\n}, \"de_LimitExceededException\");\nvar de_ListChangeSetsOutput = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output.Summaries === \"\") {\n contents[_Su] = [];\n } else if (output[_Su] != null && output[_Su][_m] != null) {\n contents[_Su] = de_ChangeSetSummaries((0, import_smithy_client.getArrayIfSingleItem)(output[_Su][_m]), context);\n }\n if (output[_NT] != null) {\n contents[_NT] = (0, import_smithy_client.expectString)(output[_NT]);\n }\n return contents;\n}, \"de_ListChangeSetsOutput\");\nvar de_ListExportsOutput = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output.Exports === \"\") {\n contents[_Ex] = [];\n } else if (output[_Ex] != null && output[_Ex][_m] != null) {\n contents[_Ex] = de_Exports((0, import_smithy_client.getArrayIfSingleItem)(output[_Ex][_m]), context);\n }\n if (output[_NT] != null) {\n contents[_NT] = (0, import_smithy_client.expectString)(output[_NT]);\n }\n return contents;\n}, \"de_ListExportsOutput\");\nvar de_ListGeneratedTemplatesOutput = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output.Summaries === \"\") {\n contents[_Su] = [];\n } else if (output[_Su] != null && output[_Su][_m] != null) {\n contents[_Su] = de_TemplateSummaries((0, import_smithy_client.getArrayIfSingleItem)(output[_Su][_m]), context);\n }\n if (output[_NT] != null) {\n contents[_NT] = (0, import_smithy_client.expectString)(output[_NT]);\n }\n return contents;\n}, \"de_ListGeneratedTemplatesOutput\");\nvar de_ListImportsOutput = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output.Imports === \"\") {\n contents[_Im] = [];\n } else if (output[_Im] != null && output[_Im][_m] != null) {\n contents[_Im] = de_Imports((0, import_smithy_client.getArrayIfSingleItem)(output[_Im][_m]), context);\n }\n if (output[_NT] != null) {\n contents[_NT] = (0, import_smithy_client.expectString)(output[_NT]);\n }\n return contents;\n}, \"de_ListImportsOutput\");\nvar de_ListResourceScanRelatedResourcesOutput = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output.RelatedResources === \"\") {\n contents[_RRel] = [];\n } else if (output[_RRel] != null && output[_RRel][_m] != null) {\n contents[_RRel] = de_RelatedResources((0, import_smithy_client.getArrayIfSingleItem)(output[_RRel][_m]), context);\n }\n if (output[_NT] != null) {\n contents[_NT] = (0, import_smithy_client.expectString)(output[_NT]);\n }\n return contents;\n}, \"de_ListResourceScanRelatedResourcesOutput\");\nvar de_ListResourceScanResourcesOutput = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output.Resources === \"\") {\n contents[_R] = [];\n } else if (output[_R] != null && output[_R][_m] != null) {\n contents[_R] = de_ScannedResources((0, import_smithy_client.getArrayIfSingleItem)(output[_R][_m]), context);\n }\n if (output[_NT] != null) {\n contents[_NT] = (0, import_smithy_client.expectString)(output[_NT]);\n }\n return contents;\n}, \"de_ListResourceScanResourcesOutput\");\nvar de_ListResourceScansOutput = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output.ResourceScanSummaries === \"\") {\n contents[_RSS] = [];\n } else if (output[_RSS] != null && output[_RSS][_m] != null) {\n contents[_RSS] = de_ResourceScanSummaries((0, import_smithy_client.getArrayIfSingleItem)(output[_RSS][_m]), context);\n }\n if (output[_NT] != null) {\n contents[_NT] = (0, import_smithy_client.expectString)(output[_NT]);\n }\n return contents;\n}, \"de_ListResourceScansOutput\");\nvar de_ListStackInstanceResourceDriftsOutput = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output.Summaries === \"\") {\n contents[_Su] = [];\n } else if (output[_Su] != null && output[_Su][_m] != null) {\n contents[_Su] = de_StackInstanceResourceDriftsSummaries((0, import_smithy_client.getArrayIfSingleItem)(output[_Su][_m]), context);\n }\n if (output[_NT] != null) {\n contents[_NT] = (0, import_smithy_client.expectString)(output[_NT]);\n }\n return contents;\n}, \"de_ListStackInstanceResourceDriftsOutput\");\nvar de_ListStackInstancesOutput = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output.Summaries === \"\") {\n contents[_Su] = [];\n } else if (output[_Su] != null && output[_Su][_m] != null) {\n contents[_Su] = de_StackInstanceSummaries((0, import_smithy_client.getArrayIfSingleItem)(output[_Su][_m]), context);\n }\n if (output[_NT] != null) {\n contents[_NT] = (0, import_smithy_client.expectString)(output[_NT]);\n }\n return contents;\n}, \"de_ListStackInstancesOutput\");\nvar de_ListStackResourcesOutput = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output.StackResourceSummaries === \"\") {\n contents[_SRSt] = [];\n } else if (output[_SRSt] != null && output[_SRSt][_m] != null) {\n contents[_SRSt] = de_StackResourceSummaries((0, import_smithy_client.getArrayIfSingleItem)(output[_SRSt][_m]), context);\n }\n if (output[_NT] != null) {\n contents[_NT] = (0, import_smithy_client.expectString)(output[_NT]);\n }\n return contents;\n}, \"de_ListStackResourcesOutput\");\nvar de_ListStackSetAutoDeploymentTargetsOutput = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output.Summaries === \"\") {\n contents[_Su] = [];\n } else if (output[_Su] != null && output[_Su][_m] != null) {\n contents[_Su] = de_StackSetAutoDeploymentTargetSummaries((0, import_smithy_client.getArrayIfSingleItem)(output[_Su][_m]), context);\n }\n if (output[_NT] != null) {\n contents[_NT] = (0, import_smithy_client.expectString)(output[_NT]);\n }\n return contents;\n}, \"de_ListStackSetAutoDeploymentTargetsOutput\");\nvar de_ListStackSetOperationResultsOutput = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output.Summaries === \"\") {\n contents[_Su] = [];\n } else if (output[_Su] != null && output[_Su][_m] != null) {\n contents[_Su] = de_StackSetOperationResultSummaries((0, import_smithy_client.getArrayIfSingleItem)(output[_Su][_m]), context);\n }\n if (output[_NT] != null) {\n contents[_NT] = (0, import_smithy_client.expectString)(output[_NT]);\n }\n return contents;\n}, \"de_ListStackSetOperationResultsOutput\");\nvar de_ListStackSetOperationsOutput = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output.Summaries === \"\") {\n contents[_Su] = [];\n } else if (output[_Su] != null && output[_Su][_m] != null) {\n contents[_Su] = de_StackSetOperationSummaries((0, import_smithy_client.getArrayIfSingleItem)(output[_Su][_m]), context);\n }\n if (output[_NT] != null) {\n contents[_NT] = (0, import_smithy_client.expectString)(output[_NT]);\n }\n return contents;\n}, \"de_ListStackSetOperationsOutput\");\nvar de_ListStackSetsOutput = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output.Summaries === \"\") {\n contents[_Su] = [];\n } else if (output[_Su] != null && output[_Su][_m] != null) {\n contents[_Su] = de_StackSetSummaries((0, import_smithy_client.getArrayIfSingleItem)(output[_Su][_m]), context);\n }\n if (output[_NT] != null) {\n contents[_NT] = (0, import_smithy_client.expectString)(output[_NT]);\n }\n return contents;\n}, \"de_ListStackSetsOutput\");\nvar de_ListStacksOutput = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output.StackSummaries === \"\") {\n contents[_SSt] = [];\n } else if (output[_SSt] != null && output[_SSt][_m] != null) {\n contents[_SSt] = de_StackSummaries((0, import_smithy_client.getArrayIfSingleItem)(output[_SSt][_m]), context);\n }\n if (output[_NT] != null) {\n contents[_NT] = (0, import_smithy_client.expectString)(output[_NT]);\n }\n return contents;\n}, \"de_ListStacksOutput\");\nvar de_ListTypeRegistrationsOutput = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output.RegistrationTokenList === \"\") {\n contents[_RTL] = [];\n } else if (output[_RTL] != null && output[_RTL][_m] != null) {\n contents[_RTL] = de_RegistrationTokenList((0, import_smithy_client.getArrayIfSingleItem)(output[_RTL][_m]), context);\n }\n if (output[_NT] != null) {\n contents[_NT] = (0, import_smithy_client.expectString)(output[_NT]);\n }\n return contents;\n}, \"de_ListTypeRegistrationsOutput\");\nvar de_ListTypesOutput = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output.TypeSummaries === \"\") {\n contents[_TSy] = [];\n } else if (output[_TSy] != null && output[_TSy][_m] != null) {\n contents[_TSy] = de_TypeSummaries((0, import_smithy_client.getArrayIfSingleItem)(output[_TSy][_m]), context);\n }\n if (output[_NT] != null) {\n contents[_NT] = (0, import_smithy_client.expectString)(output[_NT]);\n }\n return contents;\n}, \"de_ListTypesOutput\");\nvar de_ListTypeVersionsOutput = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output.TypeVersionSummaries === \"\") {\n contents[_TVS] = [];\n } else if (output[_TVS] != null && output[_TVS][_m] != null) {\n contents[_TVS] = de_TypeVersionSummaries((0, import_smithy_client.getArrayIfSingleItem)(output[_TVS][_m]), context);\n }\n if (output[_NT] != null) {\n contents[_NT] = (0, import_smithy_client.expectString)(output[_NT]);\n }\n return contents;\n}, \"de_ListTypeVersionsOutput\");\nvar de_LoggingConfig = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_LRA] != null) {\n contents[_LRA] = (0, import_smithy_client.expectString)(output[_LRA]);\n }\n if (output[_LGN] != null) {\n contents[_LGN] = (0, import_smithy_client.expectString)(output[_LGN]);\n }\n return contents;\n}, \"de_LoggingConfig\");\nvar de_LogicalResourceIds = /* @__PURE__ */ __name((output, context) => {\n return (output || []).filter((e) => e != null).map((entry) => {\n return (0, import_smithy_client.expectString)(entry);\n });\n}, \"de_LogicalResourceIds\");\nvar de_ManagedExecution = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_Act] != null) {\n contents[_Act] = (0, import_smithy_client.parseBoolean)(output[_Act]);\n }\n return contents;\n}, \"de_ManagedExecution\");\nvar de_ModuleInfo = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_TH] != null) {\n contents[_TH] = (0, import_smithy_client.expectString)(output[_TH]);\n }\n if (output[_LIH] != null) {\n contents[_LIH] = (0, import_smithy_client.expectString)(output[_LIH]);\n }\n return contents;\n}, \"de_ModuleInfo\");\nvar de_NameAlreadyExistsException = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_M] != null) {\n contents[_M] = (0, import_smithy_client.expectString)(output[_M]);\n }\n return contents;\n}, \"de_NameAlreadyExistsException\");\nvar de_NotificationARNs = /* @__PURE__ */ __name((output, context) => {\n return (output || []).filter((e) => e != null).map((entry) => {\n return (0, import_smithy_client.expectString)(entry);\n });\n}, \"de_NotificationARNs\");\nvar de_OperationIdAlreadyExistsException = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_M] != null) {\n contents[_M] = (0, import_smithy_client.expectString)(output[_M]);\n }\n return contents;\n}, \"de_OperationIdAlreadyExistsException\");\nvar de_OperationInProgressException = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_M] != null) {\n contents[_M] = (0, import_smithy_client.expectString)(output[_M]);\n }\n return contents;\n}, \"de_OperationInProgressException\");\nvar de_OperationNotFoundException = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_M] != null) {\n contents[_M] = (0, import_smithy_client.expectString)(output[_M]);\n }\n return contents;\n}, \"de_OperationNotFoundException\");\nvar de_OperationStatusCheckFailedException = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_M] != null) {\n contents[_M] = (0, import_smithy_client.expectString)(output[_M]);\n }\n return contents;\n}, \"de_OperationStatusCheckFailedException\");\nvar de_OrganizationalUnitIdList = /* @__PURE__ */ __name((output, context) => {\n return (output || []).filter((e) => e != null).map((entry) => {\n return (0, import_smithy_client.expectString)(entry);\n });\n}, \"de_OrganizationalUnitIdList\");\nvar de_Output = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_OK] != null) {\n contents[_OK] = (0, import_smithy_client.expectString)(output[_OK]);\n }\n if (output[_OV] != null) {\n contents[_OV] = (0, import_smithy_client.expectString)(output[_OV]);\n }\n if (output[_D] != null) {\n contents[_D] = (0, import_smithy_client.expectString)(output[_D]);\n }\n if (output[_EN] != null) {\n contents[_EN] = (0, import_smithy_client.expectString)(output[_EN]);\n }\n return contents;\n}, \"de_Output\");\nvar de_Outputs = /* @__PURE__ */ __name((output, context) => {\n return (output || []).filter((e) => e != null).map((entry) => {\n return de_Output(entry, context);\n });\n}, \"de_Outputs\");\nvar de_Parameter = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_PK] != null) {\n contents[_PK] = (0, import_smithy_client.expectString)(output[_PK]);\n }\n if (output[_PV] != null) {\n contents[_PV] = (0, import_smithy_client.expectString)(output[_PV]);\n }\n if (output[_UPV] != null) {\n contents[_UPV] = (0, import_smithy_client.parseBoolean)(output[_UPV]);\n }\n if (output[_RV] != null) {\n contents[_RV] = (0, import_smithy_client.expectString)(output[_RV]);\n }\n return contents;\n}, \"de_Parameter\");\nvar de_ParameterConstraints = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output.AllowedValues === \"\") {\n contents[_AV] = [];\n } else if (output[_AV] != null && output[_AV][_m] != null) {\n contents[_AV] = de_AllowedValues((0, import_smithy_client.getArrayIfSingleItem)(output[_AV][_m]), context);\n }\n return contents;\n}, \"de_ParameterConstraints\");\nvar de_ParameterDeclaration = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_PK] != null) {\n contents[_PK] = (0, import_smithy_client.expectString)(output[_PK]);\n }\n if (output[_DV] != null) {\n contents[_DV] = (0, import_smithy_client.expectString)(output[_DV]);\n }\n if (output[_PTa] != null) {\n contents[_PTa] = (0, import_smithy_client.expectString)(output[_PTa]);\n }\n if (output[_NE] != null) {\n contents[_NE] = (0, import_smithy_client.parseBoolean)(output[_NE]);\n }\n if (output[_D] != null) {\n contents[_D] = (0, import_smithy_client.expectString)(output[_D]);\n }\n if (output[_PCa] != null) {\n contents[_PCa] = de_ParameterConstraints(output[_PCa], context);\n }\n return contents;\n}, \"de_ParameterDeclaration\");\nvar de_ParameterDeclarations = /* @__PURE__ */ __name((output, context) => {\n return (output || []).filter((e) => e != null).map((entry) => {\n return de_ParameterDeclaration(entry, context);\n });\n}, \"de_ParameterDeclarations\");\nvar de_Parameters = /* @__PURE__ */ __name((output, context) => {\n return (output || []).filter((e) => e != null).map((entry) => {\n return de_Parameter(entry, context);\n });\n}, \"de_Parameters\");\nvar de_PhysicalResourceIdContext = /* @__PURE__ */ __name((output, context) => {\n return (output || []).filter((e) => e != null).map((entry) => {\n return de_PhysicalResourceIdContextKeyValuePair(entry, context);\n });\n}, \"de_PhysicalResourceIdContext\");\nvar de_PhysicalResourceIdContextKeyValuePair = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_K] != null) {\n contents[_K] = (0, import_smithy_client.expectString)(output[_K]);\n }\n if (output[_Val] != null) {\n contents[_Val] = (0, import_smithy_client.expectString)(output[_Val]);\n }\n return contents;\n}, \"de_PhysicalResourceIdContextKeyValuePair\");\nvar de_PropertyDifference = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_PPr] != null) {\n contents[_PPr] = (0, import_smithy_client.expectString)(output[_PPr]);\n }\n if (output[_EV] != null) {\n contents[_EV] = (0, import_smithy_client.expectString)(output[_EV]);\n }\n if (output[_AVc] != null) {\n contents[_AVc] = (0, import_smithy_client.expectString)(output[_AVc]);\n }\n if (output[_DTi] != null) {\n contents[_DTi] = (0, import_smithy_client.expectString)(output[_DTi]);\n }\n return contents;\n}, \"de_PropertyDifference\");\nvar de_PropertyDifferences = /* @__PURE__ */ __name((output, context) => {\n return (output || []).filter((e) => e != null).map((entry) => {\n return de_PropertyDifference(entry, context);\n });\n}, \"de_PropertyDifferences\");\nvar de_PublishTypeOutput = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_PTA] != null) {\n contents[_PTA] = (0, import_smithy_client.expectString)(output[_PTA]);\n }\n return contents;\n}, \"de_PublishTypeOutput\");\nvar de_RecordHandlerProgressOutput = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n return contents;\n}, \"de_RecordHandlerProgressOutput\");\nvar de_RegionList = /* @__PURE__ */ __name((output, context) => {\n return (output || []).filter((e) => e != null).map((entry) => {\n return (0, import_smithy_client.expectString)(entry);\n });\n}, \"de_RegionList\");\nvar de_RegisterPublisherOutput = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_PI] != null) {\n contents[_PI] = (0, import_smithy_client.expectString)(output[_PI]);\n }\n return contents;\n}, \"de_RegisterPublisherOutput\");\nvar de_RegisterTypeOutput = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_RTeg] != null) {\n contents[_RTeg] = (0, import_smithy_client.expectString)(output[_RTeg]);\n }\n return contents;\n}, \"de_RegisterTypeOutput\");\nvar de_RegistrationTokenList = /* @__PURE__ */ __name((output, context) => {\n return (output || []).filter((e) => e != null).map((entry) => {\n return (0, import_smithy_client.expectString)(entry);\n });\n}, \"de_RegistrationTokenList\");\nvar de_RelatedResources = /* @__PURE__ */ __name((output, context) => {\n return (output || []).filter((e) => e != null).map((entry) => {\n return de_ScannedResource(entry, context);\n });\n}, \"de_RelatedResources\");\nvar de_RequiredActivatedType = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_TNA] != null) {\n contents[_TNA] = (0, import_smithy_client.expectString)(output[_TNA]);\n }\n if (output[_OTN] != null) {\n contents[_OTN] = (0, import_smithy_client.expectString)(output[_OTN]);\n }\n if (output[_PI] != null) {\n contents[_PI] = (0, import_smithy_client.expectString)(output[_PI]);\n }\n if (output.SupportedMajorVersions === \"\") {\n contents[_SMV] = [];\n } else if (output[_SMV] != null && output[_SMV][_m] != null) {\n contents[_SMV] = de_SupportedMajorVersions((0, import_smithy_client.getArrayIfSingleItem)(output[_SMV][_m]), context);\n }\n return contents;\n}, \"de_RequiredActivatedType\");\nvar de_RequiredActivatedTypes = /* @__PURE__ */ __name((output, context) => {\n return (output || []).filter((e) => e != null).map((entry) => {\n return de_RequiredActivatedType(entry, context);\n });\n}, \"de_RequiredActivatedTypes\");\nvar de_ResourceChange = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_PA] != null) {\n contents[_PA] = (0, import_smithy_client.expectString)(output[_PA]);\n }\n if (output[_A] != null) {\n contents[_A] = (0, import_smithy_client.expectString)(output[_A]);\n }\n if (output[_LRI] != null) {\n contents[_LRI] = (0, import_smithy_client.expectString)(output[_LRI]);\n }\n if (output[_PRI] != null) {\n contents[_PRI] = (0, import_smithy_client.expectString)(output[_PRI]);\n }\n if (output[_RTes] != null) {\n contents[_RTes] = (0, import_smithy_client.expectString)(output[_RTes]);\n }\n if (output[_Rep] != null) {\n contents[_Rep] = (0, import_smithy_client.expectString)(output[_Rep]);\n }\n if (output.Scope === \"\") {\n contents[_Sco] = [];\n } else if (output[_Sco] != null && output[_Sco][_m] != null) {\n contents[_Sco] = de_Scope((0, import_smithy_client.getArrayIfSingleItem)(output[_Sco][_m]), context);\n }\n if (output.Details === \"\") {\n contents[_De] = [];\n } else if (output[_De] != null && output[_De][_m] != null) {\n contents[_De] = de_ResourceChangeDetails((0, import_smithy_client.getArrayIfSingleItem)(output[_De][_m]), context);\n }\n if (output[_CSIh] != null) {\n contents[_CSIh] = (0, import_smithy_client.expectString)(output[_CSIh]);\n }\n if (output[_MI] != null) {\n contents[_MI] = de_ModuleInfo(output[_MI], context);\n }\n if (output[_BC] != null) {\n contents[_BC] = (0, import_smithy_client.expectString)(output[_BC]);\n }\n if (output[_AC] != null) {\n contents[_AC] = (0, import_smithy_client.expectString)(output[_AC]);\n }\n return contents;\n}, \"de_ResourceChange\");\nvar de_ResourceChangeDetail = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_Tar] != null) {\n contents[_Tar] = de_ResourceTargetDefinition(output[_Tar], context);\n }\n if (output[_Ev] != null) {\n contents[_Ev] = (0, import_smithy_client.expectString)(output[_Ev]);\n }\n if (output[_CSh] != null) {\n contents[_CSh] = (0, import_smithy_client.expectString)(output[_CSh]);\n }\n if (output[_CE] != null) {\n contents[_CE] = (0, import_smithy_client.expectString)(output[_CE]);\n }\n return contents;\n}, \"de_ResourceChangeDetail\");\nvar de_ResourceChangeDetails = /* @__PURE__ */ __name((output, context) => {\n return (output || []).filter((e) => e != null).map((entry) => {\n return de_ResourceChangeDetail(entry, context);\n });\n}, \"de_ResourceChangeDetails\");\nvar de_ResourceDetail = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_RTes] != null) {\n contents[_RTes] = (0, import_smithy_client.expectString)(output[_RTes]);\n }\n if (output[_LRI] != null) {\n contents[_LRI] = (0, import_smithy_client.expectString)(output[_LRI]);\n }\n if (output.ResourceIdentifier === \"\") {\n contents[_RI] = {};\n } else if (output[_RI] != null && output[_RI][_e] != null) {\n contents[_RI] = de_ResourceIdentifierProperties((0, import_smithy_client.getArrayIfSingleItem)(output[_RI][_e]), context);\n }\n if (output[_RSeso] != null) {\n contents[_RSeso] = (0, import_smithy_client.expectString)(output[_RSeso]);\n }\n if (output[_RSR] != null) {\n contents[_RSR] = (0, import_smithy_client.expectString)(output[_RSR]);\n }\n if (output.Warnings === \"\") {\n contents[_W] = [];\n } else if (output[_W] != null && output[_W][_m] != null) {\n contents[_W] = de_WarningDetails((0, import_smithy_client.getArrayIfSingleItem)(output[_W][_m]), context);\n }\n return contents;\n}, \"de_ResourceDetail\");\nvar de_ResourceDetails = /* @__PURE__ */ __name((output, context) => {\n return (output || []).filter((e) => e != null).map((entry) => {\n return de_ResourceDetail(entry, context);\n });\n}, \"de_ResourceDetails\");\nvar de_ResourceIdentifierProperties = /* @__PURE__ */ __name((output, context) => {\n return output.reduce((acc, pair) => {\n if (pair[\"value\"] === null) {\n return acc;\n }\n acc[pair[\"key\"]] = (0, import_smithy_client.expectString)(pair[\"value\"]);\n return acc;\n }, {});\n}, \"de_ResourceIdentifierProperties\");\nvar de_ResourceIdentifiers = /* @__PURE__ */ __name((output, context) => {\n return (output || []).filter((e) => e != null).map((entry) => {\n return (0, import_smithy_client.expectString)(entry);\n });\n}, \"de_ResourceIdentifiers\");\nvar de_ResourceIdentifierSummaries = /* @__PURE__ */ __name((output, context) => {\n return (output || []).filter((e) => e != null).map((entry) => {\n return de_ResourceIdentifierSummary(entry, context);\n });\n}, \"de_ResourceIdentifierSummaries\");\nvar de_ResourceIdentifierSummary = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_RTes] != null) {\n contents[_RTes] = (0, import_smithy_client.expectString)(output[_RTes]);\n }\n if (output.LogicalResourceIds === \"\") {\n contents[_LRIo] = [];\n } else if (output[_LRIo] != null && output[_LRIo][_m] != null) {\n contents[_LRIo] = de_LogicalResourceIds((0, import_smithy_client.getArrayIfSingleItem)(output[_LRIo][_m]), context);\n }\n if (output.ResourceIdentifiers === \"\") {\n contents[_RIe] = [];\n } else if (output[_RIe] != null && output[_RIe][_m] != null) {\n contents[_RIe] = de_ResourceIdentifiers((0, import_smithy_client.getArrayIfSingleItem)(output[_RIe][_m]), context);\n }\n return contents;\n}, \"de_ResourceIdentifierSummary\");\nvar de_ResourceScanInProgressException = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_M] != null) {\n contents[_M] = (0, import_smithy_client.expectString)(output[_M]);\n }\n return contents;\n}, \"de_ResourceScanInProgressException\");\nvar de_ResourceScanLimitExceededException = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_M] != null) {\n contents[_M] = (0, import_smithy_client.expectString)(output[_M]);\n }\n return contents;\n}, \"de_ResourceScanLimitExceededException\");\nvar de_ResourceScanNotFoundException = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_M] != null) {\n contents[_M] = (0, import_smithy_client.expectString)(output[_M]);\n }\n return contents;\n}, \"de_ResourceScanNotFoundException\");\nvar de_ResourceScanSummaries = /* @__PURE__ */ __name((output, context) => {\n return (output || []).filter((e) => e != null).map((entry) => {\n return de_ResourceScanSummary(entry, context);\n });\n}, \"de_ResourceScanSummaries\");\nvar de_ResourceScanSummary = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_RSI] != null) {\n contents[_RSI] = (0, import_smithy_client.expectString)(output[_RSI]);\n }\n if (output[_S] != null) {\n contents[_S] = (0, import_smithy_client.expectString)(output[_S]);\n }\n if (output[_SRt] != null) {\n contents[_SRt] = (0, import_smithy_client.expectString)(output[_SRt]);\n }\n if (output[_ST] != null) {\n contents[_ST] = (0, import_smithy_client.expectNonNull)((0, import_smithy_client.parseRfc3339DateTimeWithOffset)(output[_ST]));\n }\n if (output[_ET] != null) {\n contents[_ET] = (0, import_smithy_client.expectNonNull)((0, import_smithy_client.parseRfc3339DateTimeWithOffset)(output[_ET]));\n }\n if (output[_PC] != null) {\n contents[_PC] = (0, import_smithy_client.strictParseFloat)(output[_PC]);\n }\n return contents;\n}, \"de_ResourceScanSummary\");\nvar de_ResourceTargetDefinition = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_At] != null) {\n contents[_At] = (0, import_smithy_client.expectString)(output[_At]);\n }\n if (output[_N] != null) {\n contents[_N] = (0, import_smithy_client.expectString)(output[_N]);\n }\n if (output[_RReq] != null) {\n contents[_RReq] = (0, import_smithy_client.expectString)(output[_RReq]);\n }\n if (output[_Pa] != null) {\n contents[_Pa] = (0, import_smithy_client.expectString)(output[_Pa]);\n }\n if (output[_BV] != null) {\n contents[_BV] = (0, import_smithy_client.expectString)(output[_BV]);\n }\n if (output[_AVf] != null) {\n contents[_AVf] = (0, import_smithy_client.expectString)(output[_AVf]);\n }\n if (output[_ACT] != null) {\n contents[_ACT] = (0, import_smithy_client.expectString)(output[_ACT]);\n }\n return contents;\n}, \"de_ResourceTargetDefinition\");\nvar de_ResourceTypes = /* @__PURE__ */ __name((output, context) => {\n return (output || []).filter((e) => e != null).map((entry) => {\n return (0, import_smithy_client.expectString)(entry);\n });\n}, \"de_ResourceTypes\");\nvar de_RollbackConfiguration = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output.RollbackTriggers === \"\") {\n contents[_RTo] = [];\n } else if (output[_RTo] != null && output[_RTo][_m] != null) {\n contents[_RTo] = de_RollbackTriggers((0, import_smithy_client.getArrayIfSingleItem)(output[_RTo][_m]), context);\n }\n if (output[_MTIM] != null) {\n contents[_MTIM] = (0, import_smithy_client.strictParseInt32)(output[_MTIM]);\n }\n return contents;\n}, \"de_RollbackConfiguration\");\nvar de_RollbackStackOutput = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_SI] != null) {\n contents[_SI] = (0, import_smithy_client.expectString)(output[_SI]);\n }\n return contents;\n}, \"de_RollbackStackOutput\");\nvar de_RollbackTrigger = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_Ar] != null) {\n contents[_Ar] = (0, import_smithy_client.expectString)(output[_Ar]);\n }\n if (output[_T] != null) {\n contents[_T] = (0, import_smithy_client.expectString)(output[_T]);\n }\n return contents;\n}, \"de_RollbackTrigger\");\nvar de_RollbackTriggers = /* @__PURE__ */ __name((output, context) => {\n return (output || []).filter((e) => e != null).map((entry) => {\n return de_RollbackTrigger(entry, context);\n });\n}, \"de_RollbackTriggers\");\nvar de_ScannedResource = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_RTes] != null) {\n contents[_RTes] = (0, import_smithy_client.expectString)(output[_RTes]);\n }\n if (output.ResourceIdentifier === \"\") {\n contents[_RI] = {};\n } else if (output[_RI] != null && output[_RI][_e] != null) {\n contents[_RI] = de_JazzResourceIdentifierProperties((0, import_smithy_client.getArrayIfSingleItem)(output[_RI][_e]), context);\n }\n if (output[_MBS] != null) {\n contents[_MBS] = (0, import_smithy_client.parseBoolean)(output[_MBS]);\n }\n return contents;\n}, \"de_ScannedResource\");\nvar de_ScannedResources = /* @__PURE__ */ __name((output, context) => {\n return (output || []).filter((e) => e != null).map((entry) => {\n return de_ScannedResource(entry, context);\n });\n}, \"de_ScannedResources\");\nvar de_Scope = /* @__PURE__ */ __name((output, context) => {\n return (output || []).filter((e) => e != null).map((entry) => {\n return (0, import_smithy_client.expectString)(entry);\n });\n}, \"de_Scope\");\nvar de_SetTypeConfigurationOutput = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_CAonf] != null) {\n contents[_CAonf] = (0, import_smithy_client.expectString)(output[_CAonf]);\n }\n return contents;\n}, \"de_SetTypeConfigurationOutput\");\nvar de_SetTypeDefaultVersionOutput = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n return contents;\n}, \"de_SetTypeDefaultVersionOutput\");\nvar de_Stack = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_SI] != null) {\n contents[_SI] = (0, import_smithy_client.expectString)(output[_SI]);\n }\n if (output[_SN] != null) {\n contents[_SN] = (0, import_smithy_client.expectString)(output[_SN]);\n }\n if (output[_CSIh] != null) {\n contents[_CSIh] = (0, import_smithy_client.expectString)(output[_CSIh]);\n }\n if (output[_D] != null) {\n contents[_D] = (0, import_smithy_client.expectString)(output[_D]);\n }\n if (output.Parameters === \"\") {\n contents[_P] = [];\n } else if (output[_P] != null && output[_P][_m] != null) {\n contents[_P] = de_Parameters((0, import_smithy_client.getArrayIfSingleItem)(output[_P][_m]), context);\n }\n if (output[_CTr] != null) {\n contents[_CTr] = (0, import_smithy_client.expectNonNull)((0, import_smithy_client.parseRfc3339DateTimeWithOffset)(output[_CTr]));\n }\n if (output[_DTel] != null) {\n contents[_DTel] = (0, import_smithy_client.expectNonNull)((0, import_smithy_client.parseRfc3339DateTimeWithOffset)(output[_DTel]));\n }\n if (output[_LUT] != null) {\n contents[_LUT] = (0, import_smithy_client.expectNonNull)((0, import_smithy_client.parseRfc3339DateTimeWithOffset)(output[_LUT]));\n }\n if (output[_RC] != null) {\n contents[_RC] = de_RollbackConfiguration(output[_RC], context);\n }\n if (output[_SSta] != null) {\n contents[_SSta] = (0, import_smithy_client.expectString)(output[_SSta]);\n }\n if (output[_SSR] != null) {\n contents[_SSR] = (0, import_smithy_client.expectString)(output[_SSR]);\n }\n if (output[_DR] != null) {\n contents[_DR] = (0, import_smithy_client.parseBoolean)(output[_DR]);\n }\n if (output.NotificationARNs === \"\") {\n contents[_NARN] = [];\n } else if (output[_NARN] != null && output[_NARN][_m] != null) {\n contents[_NARN] = de_NotificationARNs((0, import_smithy_client.getArrayIfSingleItem)(output[_NARN][_m]), context);\n }\n if (output[_TIM] != null) {\n contents[_TIM] = (0, import_smithy_client.strictParseInt32)(output[_TIM]);\n }\n if (output.Capabilities === \"\") {\n contents[_C] = [];\n } else if (output[_C] != null && output[_C][_m] != null) {\n contents[_C] = de_Capabilities((0, import_smithy_client.getArrayIfSingleItem)(output[_C][_m]), context);\n }\n if (output.Outputs === \"\") {\n contents[_O] = [];\n } else if (output[_O] != null && output[_O][_m] != null) {\n contents[_O] = de_Outputs((0, import_smithy_client.getArrayIfSingleItem)(output[_O][_m]), context);\n }\n if (output[_RARN] != null) {\n contents[_RARN] = (0, import_smithy_client.expectString)(output[_RARN]);\n }\n if (output.Tags === \"\") {\n contents[_Ta] = [];\n } else if (output[_Ta] != null && output[_Ta][_m] != null) {\n contents[_Ta] = de_Tags((0, import_smithy_client.getArrayIfSingleItem)(output[_Ta][_m]), context);\n }\n if (output[_ETP] != null) {\n contents[_ETP] = (0, import_smithy_client.parseBoolean)(output[_ETP]);\n }\n if (output[_PIa] != null) {\n contents[_PIa] = (0, import_smithy_client.expectString)(output[_PIa]);\n }\n if (output[_RIo] != null) {\n contents[_RIo] = (0, import_smithy_client.expectString)(output[_RIo]);\n }\n if (output[_DI] != null) {\n contents[_DI] = de_StackDriftInformation(output[_DI], context);\n }\n if (output[_REOC] != null) {\n contents[_REOC] = (0, import_smithy_client.parseBoolean)(output[_REOC]);\n }\n if (output[_DM] != null) {\n contents[_DM] = (0, import_smithy_client.expectString)(output[_DM]);\n }\n if (output[_DSeta] != null) {\n contents[_DSeta] = (0, import_smithy_client.expectString)(output[_DSeta]);\n }\n return contents;\n}, \"de_Stack\");\nvar de_StackDriftInformation = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_SDS] != null) {\n contents[_SDS] = (0, import_smithy_client.expectString)(output[_SDS]);\n }\n if (output[_LCT] != null) {\n contents[_LCT] = (0, import_smithy_client.expectNonNull)((0, import_smithy_client.parseRfc3339DateTimeWithOffset)(output[_LCT]));\n }\n return contents;\n}, \"de_StackDriftInformation\");\nvar de_StackDriftInformationSummary = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_SDS] != null) {\n contents[_SDS] = (0, import_smithy_client.expectString)(output[_SDS]);\n }\n if (output[_LCT] != null) {\n contents[_LCT] = (0, import_smithy_client.expectNonNull)((0, import_smithy_client.parseRfc3339DateTimeWithOffset)(output[_LCT]));\n }\n return contents;\n}, \"de_StackDriftInformationSummary\");\nvar de_StackEvent = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_SI] != null) {\n contents[_SI] = (0, import_smithy_client.expectString)(output[_SI]);\n }\n if (output[_EI] != null) {\n contents[_EI] = (0, import_smithy_client.expectString)(output[_EI]);\n }\n if (output[_SN] != null) {\n contents[_SN] = (0, import_smithy_client.expectString)(output[_SN]);\n }\n if (output[_LRI] != null) {\n contents[_LRI] = (0, import_smithy_client.expectString)(output[_LRI]);\n }\n if (output[_PRI] != null) {\n contents[_PRI] = (0, import_smithy_client.expectString)(output[_PRI]);\n }\n if (output[_RTes] != null) {\n contents[_RTes] = (0, import_smithy_client.expectString)(output[_RTes]);\n }\n if (output[_Ti] != null) {\n contents[_Ti] = (0, import_smithy_client.expectNonNull)((0, import_smithy_client.parseRfc3339DateTimeWithOffset)(output[_Ti]));\n }\n if (output[_RSeso] != null) {\n contents[_RSeso] = (0, import_smithy_client.expectString)(output[_RSeso]);\n }\n if (output[_RSR] != null) {\n contents[_RSR] = (0, import_smithy_client.expectString)(output[_RSR]);\n }\n if (output[_RPe] != null) {\n contents[_RPe] = (0, import_smithy_client.expectString)(output[_RPe]);\n }\n if (output[_CRT] != null) {\n contents[_CRT] = (0, import_smithy_client.expectString)(output[_CRT]);\n }\n if (output[_HT] != null) {\n contents[_HT] = (0, import_smithy_client.expectString)(output[_HT]);\n }\n if (output[_HS] != null) {\n contents[_HS] = (0, import_smithy_client.expectString)(output[_HS]);\n }\n if (output[_HSR] != null) {\n contents[_HSR] = (0, import_smithy_client.expectString)(output[_HSR]);\n }\n if (output[_HIP] != null) {\n contents[_HIP] = (0, import_smithy_client.expectString)(output[_HIP]);\n }\n if (output[_HFM] != null) {\n contents[_HFM] = (0, import_smithy_client.expectString)(output[_HFM]);\n }\n if (output[_DSeta] != null) {\n contents[_DSeta] = (0, import_smithy_client.expectString)(output[_DSeta]);\n }\n return contents;\n}, \"de_StackEvent\");\nvar de_StackEvents = /* @__PURE__ */ __name((output, context) => {\n return (output || []).filter((e) => e != null).map((entry) => {\n return de_StackEvent(entry, context);\n });\n}, \"de_StackEvents\");\nvar de_StackInstance = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_SSI] != null) {\n contents[_SSI] = (0, import_smithy_client.expectString)(output[_SSI]);\n }\n if (output[_Reg] != null) {\n contents[_Reg] = (0, import_smithy_client.expectString)(output[_Reg]);\n }\n if (output[_Acc] != null) {\n contents[_Acc] = (0, import_smithy_client.expectString)(output[_Acc]);\n }\n if (output[_SI] != null) {\n contents[_SI] = (0, import_smithy_client.expectString)(output[_SI]);\n }\n if (output.ParameterOverrides === \"\") {\n contents[_PO] = [];\n } else if (output[_PO] != null && output[_PO][_m] != null) {\n contents[_PO] = de_Parameters((0, import_smithy_client.getArrayIfSingleItem)(output[_PO][_m]), context);\n }\n if (output[_S] != null) {\n contents[_S] = (0, import_smithy_client.expectString)(output[_S]);\n }\n if (output[_SIS] != null) {\n contents[_SIS] = de_StackInstanceComprehensiveStatus(output[_SIS], context);\n }\n if (output[_SRt] != null) {\n contents[_SRt] = (0, import_smithy_client.expectString)(output[_SRt]);\n }\n if (output[_OUIr] != null) {\n contents[_OUIr] = (0, import_smithy_client.expectString)(output[_OUIr]);\n }\n if (output[_DSr] != null) {\n contents[_DSr] = (0, import_smithy_client.expectString)(output[_DSr]);\n }\n if (output[_LDCT] != null) {\n contents[_LDCT] = (0, import_smithy_client.expectNonNull)((0, import_smithy_client.parseRfc3339DateTimeWithOffset)(output[_LDCT]));\n }\n if (output[_LOI] != null) {\n contents[_LOI] = (0, import_smithy_client.expectString)(output[_LOI]);\n }\n return contents;\n}, \"de_StackInstance\");\nvar de_StackInstanceComprehensiveStatus = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_DSeta] != null) {\n contents[_DSeta] = (0, import_smithy_client.expectString)(output[_DSeta]);\n }\n return contents;\n}, \"de_StackInstanceComprehensiveStatus\");\nvar de_StackInstanceNotFoundException = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_M] != null) {\n contents[_M] = (0, import_smithy_client.expectString)(output[_M]);\n }\n return contents;\n}, \"de_StackInstanceNotFoundException\");\nvar de_StackInstanceResourceDriftsSummaries = /* @__PURE__ */ __name((output, context) => {\n return (output || []).filter((e) => e != null).map((entry) => {\n return de_StackInstanceResourceDriftsSummary(entry, context);\n });\n}, \"de_StackInstanceResourceDriftsSummaries\");\nvar de_StackInstanceResourceDriftsSummary = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_SI] != null) {\n contents[_SI] = (0, import_smithy_client.expectString)(output[_SI]);\n }\n if (output[_LRI] != null) {\n contents[_LRI] = (0, import_smithy_client.expectString)(output[_LRI]);\n }\n if (output[_PRI] != null) {\n contents[_PRI] = (0, import_smithy_client.expectString)(output[_PRI]);\n }\n if (output.PhysicalResourceIdContext === \"\") {\n contents[_PRIC] = [];\n } else if (output[_PRIC] != null && output[_PRIC][_m] != null) {\n contents[_PRIC] = de_PhysicalResourceIdContext((0, import_smithy_client.getArrayIfSingleItem)(output[_PRIC][_m]), context);\n }\n if (output[_RTes] != null) {\n contents[_RTes] = (0, import_smithy_client.expectString)(output[_RTes]);\n }\n if (output.PropertyDifferences === \"\") {\n contents[_PD] = [];\n } else if (output[_PD] != null && output[_PD][_m] != null) {\n contents[_PD] = de_PropertyDifferences((0, import_smithy_client.getArrayIfSingleItem)(output[_PD][_m]), context);\n }\n if (output[_SRDS] != null) {\n contents[_SRDS] = (0, import_smithy_client.expectString)(output[_SRDS]);\n }\n if (output[_Ti] != null) {\n contents[_Ti] = (0, import_smithy_client.expectNonNull)((0, import_smithy_client.parseRfc3339DateTimeWithOffset)(output[_Ti]));\n }\n return contents;\n}, \"de_StackInstanceResourceDriftsSummary\");\nvar de_StackInstanceSummaries = /* @__PURE__ */ __name((output, context) => {\n return (output || []).filter((e) => e != null).map((entry) => {\n return de_StackInstanceSummary(entry, context);\n });\n}, \"de_StackInstanceSummaries\");\nvar de_StackInstanceSummary = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_SSI] != null) {\n contents[_SSI] = (0, import_smithy_client.expectString)(output[_SSI]);\n }\n if (output[_Reg] != null) {\n contents[_Reg] = (0, import_smithy_client.expectString)(output[_Reg]);\n }\n if (output[_Acc] != null) {\n contents[_Acc] = (0, import_smithy_client.expectString)(output[_Acc]);\n }\n if (output[_SI] != null) {\n contents[_SI] = (0, import_smithy_client.expectString)(output[_SI]);\n }\n if (output[_S] != null) {\n contents[_S] = (0, import_smithy_client.expectString)(output[_S]);\n }\n if (output[_SRt] != null) {\n contents[_SRt] = (0, import_smithy_client.expectString)(output[_SRt]);\n }\n if (output[_SIS] != null) {\n contents[_SIS] = de_StackInstanceComprehensiveStatus(output[_SIS], context);\n }\n if (output[_OUIr] != null) {\n contents[_OUIr] = (0, import_smithy_client.expectString)(output[_OUIr]);\n }\n if (output[_DSr] != null) {\n contents[_DSr] = (0, import_smithy_client.expectString)(output[_DSr]);\n }\n if (output[_LDCT] != null) {\n contents[_LDCT] = (0, import_smithy_client.expectNonNull)((0, import_smithy_client.parseRfc3339DateTimeWithOffset)(output[_LDCT]));\n }\n if (output[_LOI] != null) {\n contents[_LOI] = (0, import_smithy_client.expectString)(output[_LOI]);\n }\n return contents;\n}, \"de_StackInstanceSummary\");\nvar de_StackNotFoundException = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_M] != null) {\n contents[_M] = (0, import_smithy_client.expectString)(output[_M]);\n }\n return contents;\n}, \"de_StackNotFoundException\");\nvar de_StackResource = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_SN] != null) {\n contents[_SN] = (0, import_smithy_client.expectString)(output[_SN]);\n }\n if (output[_SI] != null) {\n contents[_SI] = (0, import_smithy_client.expectString)(output[_SI]);\n }\n if (output[_LRI] != null) {\n contents[_LRI] = (0, import_smithy_client.expectString)(output[_LRI]);\n }\n if (output[_PRI] != null) {\n contents[_PRI] = (0, import_smithy_client.expectString)(output[_PRI]);\n }\n if (output[_RTes] != null) {\n contents[_RTes] = (0, import_smithy_client.expectString)(output[_RTes]);\n }\n if (output[_Ti] != null) {\n contents[_Ti] = (0, import_smithy_client.expectNonNull)((0, import_smithy_client.parseRfc3339DateTimeWithOffset)(output[_Ti]));\n }\n if (output[_RSeso] != null) {\n contents[_RSeso] = (0, import_smithy_client.expectString)(output[_RSeso]);\n }\n if (output[_RSR] != null) {\n contents[_RSR] = (0, import_smithy_client.expectString)(output[_RSR]);\n }\n if (output[_D] != null) {\n contents[_D] = (0, import_smithy_client.expectString)(output[_D]);\n }\n if (output[_DI] != null) {\n contents[_DI] = de_StackResourceDriftInformation(output[_DI], context);\n }\n if (output[_MI] != null) {\n contents[_MI] = de_ModuleInfo(output[_MI], context);\n }\n return contents;\n}, \"de_StackResource\");\nvar de_StackResourceDetail = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_SN] != null) {\n contents[_SN] = (0, import_smithy_client.expectString)(output[_SN]);\n }\n if (output[_SI] != null) {\n contents[_SI] = (0, import_smithy_client.expectString)(output[_SI]);\n }\n if (output[_LRI] != null) {\n contents[_LRI] = (0, import_smithy_client.expectString)(output[_LRI]);\n }\n if (output[_PRI] != null) {\n contents[_PRI] = (0, import_smithy_client.expectString)(output[_PRI]);\n }\n if (output[_RTes] != null) {\n contents[_RTes] = (0, import_smithy_client.expectString)(output[_RTes]);\n }\n if (output[_LUTa] != null) {\n contents[_LUTa] = (0, import_smithy_client.expectNonNull)((0, import_smithy_client.parseRfc3339DateTimeWithOffset)(output[_LUTa]));\n }\n if (output[_RSeso] != null) {\n contents[_RSeso] = (0, import_smithy_client.expectString)(output[_RSeso]);\n }\n if (output[_RSR] != null) {\n contents[_RSR] = (0, import_smithy_client.expectString)(output[_RSR]);\n }\n if (output[_D] != null) {\n contents[_D] = (0, import_smithy_client.expectString)(output[_D]);\n }\n if (output[_Me] != null) {\n contents[_Me] = (0, import_smithy_client.expectString)(output[_Me]);\n }\n if (output[_DI] != null) {\n contents[_DI] = de_StackResourceDriftInformation(output[_DI], context);\n }\n if (output[_MI] != null) {\n contents[_MI] = de_ModuleInfo(output[_MI], context);\n }\n return contents;\n}, \"de_StackResourceDetail\");\nvar de_StackResourceDrift = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_SI] != null) {\n contents[_SI] = (0, import_smithy_client.expectString)(output[_SI]);\n }\n if (output[_LRI] != null) {\n contents[_LRI] = (0, import_smithy_client.expectString)(output[_LRI]);\n }\n if (output[_PRI] != null) {\n contents[_PRI] = (0, import_smithy_client.expectString)(output[_PRI]);\n }\n if (output.PhysicalResourceIdContext === \"\") {\n contents[_PRIC] = [];\n } else if (output[_PRIC] != null && output[_PRIC][_m] != null) {\n contents[_PRIC] = de_PhysicalResourceIdContext((0, import_smithy_client.getArrayIfSingleItem)(output[_PRIC][_m]), context);\n }\n if (output[_RTes] != null) {\n contents[_RTes] = (0, import_smithy_client.expectString)(output[_RTes]);\n }\n if (output[_EP] != null) {\n contents[_EP] = (0, import_smithy_client.expectString)(output[_EP]);\n }\n if (output[_AP] != null) {\n contents[_AP] = (0, import_smithy_client.expectString)(output[_AP]);\n }\n if (output.PropertyDifferences === \"\") {\n contents[_PD] = [];\n } else if (output[_PD] != null && output[_PD][_m] != null) {\n contents[_PD] = de_PropertyDifferences((0, import_smithy_client.getArrayIfSingleItem)(output[_PD][_m]), context);\n }\n if (output[_SRDS] != null) {\n contents[_SRDS] = (0, import_smithy_client.expectString)(output[_SRDS]);\n }\n if (output[_Ti] != null) {\n contents[_Ti] = (0, import_smithy_client.expectNonNull)((0, import_smithy_client.parseRfc3339DateTimeWithOffset)(output[_Ti]));\n }\n if (output[_MI] != null) {\n contents[_MI] = de_ModuleInfo(output[_MI], context);\n }\n return contents;\n}, \"de_StackResourceDrift\");\nvar de_StackResourceDriftInformation = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_SRDS] != null) {\n contents[_SRDS] = (0, import_smithy_client.expectString)(output[_SRDS]);\n }\n if (output[_LCT] != null) {\n contents[_LCT] = (0, import_smithy_client.expectNonNull)((0, import_smithy_client.parseRfc3339DateTimeWithOffset)(output[_LCT]));\n }\n return contents;\n}, \"de_StackResourceDriftInformation\");\nvar de_StackResourceDriftInformationSummary = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_SRDS] != null) {\n contents[_SRDS] = (0, import_smithy_client.expectString)(output[_SRDS]);\n }\n if (output[_LCT] != null) {\n contents[_LCT] = (0, import_smithy_client.expectNonNull)((0, import_smithy_client.parseRfc3339DateTimeWithOffset)(output[_LCT]));\n }\n return contents;\n}, \"de_StackResourceDriftInformationSummary\");\nvar de_StackResourceDrifts = /* @__PURE__ */ __name((output, context) => {\n return (output || []).filter((e) => e != null).map((entry) => {\n return de_StackResourceDrift(entry, context);\n });\n}, \"de_StackResourceDrifts\");\nvar de_StackResources = /* @__PURE__ */ __name((output, context) => {\n return (output || []).filter((e) => e != null).map((entry) => {\n return de_StackResource(entry, context);\n });\n}, \"de_StackResources\");\nvar de_StackResourceSummaries = /* @__PURE__ */ __name((output, context) => {\n return (output || []).filter((e) => e != null).map((entry) => {\n return de_StackResourceSummary(entry, context);\n });\n}, \"de_StackResourceSummaries\");\nvar de_StackResourceSummary = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_LRI] != null) {\n contents[_LRI] = (0, import_smithy_client.expectString)(output[_LRI]);\n }\n if (output[_PRI] != null) {\n contents[_PRI] = (0, import_smithy_client.expectString)(output[_PRI]);\n }\n if (output[_RTes] != null) {\n contents[_RTes] = (0, import_smithy_client.expectString)(output[_RTes]);\n }\n if (output[_LUTa] != null) {\n contents[_LUTa] = (0, import_smithy_client.expectNonNull)((0, import_smithy_client.parseRfc3339DateTimeWithOffset)(output[_LUTa]));\n }\n if (output[_RSeso] != null) {\n contents[_RSeso] = (0, import_smithy_client.expectString)(output[_RSeso]);\n }\n if (output[_RSR] != null) {\n contents[_RSR] = (0, import_smithy_client.expectString)(output[_RSR]);\n }\n if (output[_DI] != null) {\n contents[_DI] = de_StackResourceDriftInformationSummary(output[_DI], context);\n }\n if (output[_MI] != null) {\n contents[_MI] = de_ModuleInfo(output[_MI], context);\n }\n return contents;\n}, \"de_StackResourceSummary\");\nvar de_Stacks = /* @__PURE__ */ __name((output, context) => {\n return (output || []).filter((e) => e != null).map((entry) => {\n return de_Stack(entry, context);\n });\n}, \"de_Stacks\");\nvar de_StackSet = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_SSN] != null) {\n contents[_SSN] = (0, import_smithy_client.expectString)(output[_SSN]);\n }\n if (output[_SSI] != null) {\n contents[_SSI] = (0, import_smithy_client.expectString)(output[_SSI]);\n }\n if (output[_D] != null) {\n contents[_D] = (0, import_smithy_client.expectString)(output[_D]);\n }\n if (output[_S] != null) {\n contents[_S] = (0, import_smithy_client.expectString)(output[_S]);\n }\n if (output[_TB] != null) {\n contents[_TB] = (0, import_smithy_client.expectString)(output[_TB]);\n }\n if (output.Parameters === \"\") {\n contents[_P] = [];\n } else if (output[_P] != null && output[_P][_m] != null) {\n contents[_P] = de_Parameters((0, import_smithy_client.getArrayIfSingleItem)(output[_P][_m]), context);\n }\n if (output.Capabilities === \"\") {\n contents[_C] = [];\n } else if (output[_C] != null && output[_C][_m] != null) {\n contents[_C] = de_Capabilities((0, import_smithy_client.getArrayIfSingleItem)(output[_C][_m]), context);\n }\n if (output.Tags === \"\") {\n contents[_Ta] = [];\n } else if (output[_Ta] != null && output[_Ta][_m] != null) {\n contents[_Ta] = de_Tags((0, import_smithy_client.getArrayIfSingleItem)(output[_Ta][_m]), context);\n }\n if (output[_SSARN] != null) {\n contents[_SSARN] = (0, import_smithy_client.expectString)(output[_SSARN]);\n }\n if (output[_ARARN] != null) {\n contents[_ARARN] = (0, import_smithy_client.expectString)(output[_ARARN]);\n }\n if (output[_ERN] != null) {\n contents[_ERN] = (0, import_smithy_client.expectString)(output[_ERN]);\n }\n if (output[_SSDDD] != null) {\n contents[_SSDDD] = de_StackSetDriftDetectionDetails(output[_SSDDD], context);\n }\n if (output[_AD] != null) {\n contents[_AD] = de_AutoDeployment(output[_AD], context);\n }\n if (output[_PM] != null) {\n contents[_PM] = (0, import_smithy_client.expectString)(output[_PM]);\n }\n if (output.OrganizationalUnitIds === \"\") {\n contents[_OUI] = [];\n } else if (output[_OUI] != null && output[_OUI][_m] != null) {\n contents[_OUI] = de_OrganizationalUnitIdList((0, import_smithy_client.getArrayIfSingleItem)(output[_OUI][_m]), context);\n }\n if (output[_ME] != null) {\n contents[_ME] = de_ManagedExecution(output[_ME], context);\n }\n if (output.Regions === \"\") {\n contents[_Re] = [];\n } else if (output[_Re] != null && output[_Re][_m] != null) {\n contents[_Re] = de_RegionList((0, import_smithy_client.getArrayIfSingleItem)(output[_Re][_m]), context);\n }\n return contents;\n}, \"de_StackSet\");\nvar de_StackSetAutoDeploymentTargetSummaries = /* @__PURE__ */ __name((output, context) => {\n return (output || []).filter((e) => e != null).map((entry) => {\n return de_StackSetAutoDeploymentTargetSummary(entry, context);\n });\n}, \"de_StackSetAutoDeploymentTargetSummaries\");\nvar de_StackSetAutoDeploymentTargetSummary = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_OUIr] != null) {\n contents[_OUIr] = (0, import_smithy_client.expectString)(output[_OUIr]);\n }\n if (output.Regions === \"\") {\n contents[_Re] = [];\n } else if (output[_Re] != null && output[_Re][_m] != null) {\n contents[_Re] = de_RegionList((0, import_smithy_client.getArrayIfSingleItem)(output[_Re][_m]), context);\n }\n return contents;\n}, \"de_StackSetAutoDeploymentTargetSummary\");\nvar de_StackSetDriftDetectionDetails = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_DSr] != null) {\n contents[_DSr] = (0, import_smithy_client.expectString)(output[_DSr]);\n }\n if (output[_DDS] != null) {\n contents[_DDS] = (0, import_smithy_client.expectString)(output[_DDS]);\n }\n if (output[_LDCT] != null) {\n contents[_LDCT] = (0, import_smithy_client.expectNonNull)((0, import_smithy_client.parseRfc3339DateTimeWithOffset)(output[_LDCT]));\n }\n if (output[_TSIC] != null) {\n contents[_TSIC] = (0, import_smithy_client.strictParseInt32)(output[_TSIC]);\n }\n if (output[_DSIC] != null) {\n contents[_DSIC] = (0, import_smithy_client.strictParseInt32)(output[_DSIC]);\n }\n if (output[_ISSIC] != null) {\n contents[_ISSIC] = (0, import_smithy_client.strictParseInt32)(output[_ISSIC]);\n }\n if (output[_IPSIC] != null) {\n contents[_IPSIC] = (0, import_smithy_client.strictParseInt32)(output[_IPSIC]);\n }\n if (output[_FSIC] != null) {\n contents[_FSIC] = (0, import_smithy_client.strictParseInt32)(output[_FSIC]);\n }\n return contents;\n}, \"de_StackSetDriftDetectionDetails\");\nvar de_StackSetNotEmptyException = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_M] != null) {\n contents[_M] = (0, import_smithy_client.expectString)(output[_M]);\n }\n return contents;\n}, \"de_StackSetNotEmptyException\");\nvar de_StackSetNotFoundException = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_M] != null) {\n contents[_M] = (0, import_smithy_client.expectString)(output[_M]);\n }\n return contents;\n}, \"de_StackSetNotFoundException\");\nvar de_StackSetOperation = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_OI] != null) {\n contents[_OI] = (0, import_smithy_client.expectString)(output[_OI]);\n }\n if (output[_SSI] != null) {\n contents[_SSI] = (0, import_smithy_client.expectString)(output[_SSI]);\n }\n if (output[_A] != null) {\n contents[_A] = (0, import_smithy_client.expectString)(output[_A]);\n }\n if (output[_S] != null) {\n contents[_S] = (0, import_smithy_client.expectString)(output[_S]);\n }\n if (output[_OP] != null) {\n contents[_OP] = de_StackSetOperationPreferences(output[_OP], context);\n }\n if (output[_RSe] != null) {\n contents[_RSe] = (0, import_smithy_client.parseBoolean)(output[_RSe]);\n }\n if (output[_ARARN] != null) {\n contents[_ARARN] = (0, import_smithy_client.expectString)(output[_ARARN]);\n }\n if (output[_ERN] != null) {\n contents[_ERN] = (0, import_smithy_client.expectString)(output[_ERN]);\n }\n if (output[_CTre] != null) {\n contents[_CTre] = (0, import_smithy_client.expectNonNull)((0, import_smithy_client.parseRfc3339DateTimeWithOffset)(output[_CTre]));\n }\n if (output[_ETn] != null) {\n contents[_ETn] = (0, import_smithy_client.expectNonNull)((0, import_smithy_client.parseRfc3339DateTimeWithOffset)(output[_ETn]));\n }\n if (output[_DTep] != null) {\n contents[_DTep] = de_DeploymentTargets(output[_DTep], context);\n }\n if (output[_SSDDD] != null) {\n contents[_SSDDD] = de_StackSetDriftDetectionDetails(output[_SSDDD], context);\n }\n if (output[_SRt] != null) {\n contents[_SRt] = (0, import_smithy_client.expectString)(output[_SRt]);\n }\n if (output[_SD] != null) {\n contents[_SD] = de_StackSetOperationStatusDetails(output[_SD], context);\n }\n return contents;\n}, \"de_StackSetOperation\");\nvar de_StackSetOperationPreferences = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_RCT] != null) {\n contents[_RCT] = (0, import_smithy_client.expectString)(output[_RCT]);\n }\n if (output.RegionOrder === \"\") {\n contents[_RO] = [];\n } else if (output[_RO] != null && output[_RO][_m] != null) {\n contents[_RO] = de_RegionList((0, import_smithy_client.getArrayIfSingleItem)(output[_RO][_m]), context);\n }\n if (output[_FTC] != null) {\n contents[_FTC] = (0, import_smithy_client.strictParseInt32)(output[_FTC]);\n }\n if (output[_FTP] != null) {\n contents[_FTP] = (0, import_smithy_client.strictParseInt32)(output[_FTP]);\n }\n if (output[_MCC] != null) {\n contents[_MCC] = (0, import_smithy_client.strictParseInt32)(output[_MCC]);\n }\n if (output[_MCP] != null) {\n contents[_MCP] = (0, import_smithy_client.strictParseInt32)(output[_MCP]);\n }\n if (output[_CM] != null) {\n contents[_CM] = (0, import_smithy_client.expectString)(output[_CM]);\n }\n return contents;\n}, \"de_StackSetOperationPreferences\");\nvar de_StackSetOperationResultSummaries = /* @__PURE__ */ __name((output, context) => {\n return (output || []).filter((e) => e != null).map((entry) => {\n return de_StackSetOperationResultSummary(entry, context);\n });\n}, \"de_StackSetOperationResultSummaries\");\nvar de_StackSetOperationResultSummary = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_Acc] != null) {\n contents[_Acc] = (0, import_smithy_client.expectString)(output[_Acc]);\n }\n if (output[_Reg] != null) {\n contents[_Reg] = (0, import_smithy_client.expectString)(output[_Reg]);\n }\n if (output[_S] != null) {\n contents[_S] = (0, import_smithy_client.expectString)(output[_S]);\n }\n if (output[_SRt] != null) {\n contents[_SRt] = (0, import_smithy_client.expectString)(output[_SRt]);\n }\n if (output[_AGR] != null) {\n contents[_AGR] = de_AccountGateResult(output[_AGR], context);\n }\n if (output[_OUIr] != null) {\n contents[_OUIr] = (0, import_smithy_client.expectString)(output[_OUIr]);\n }\n return contents;\n}, \"de_StackSetOperationResultSummary\");\nvar de_StackSetOperationStatusDetails = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_FSIC] != null) {\n contents[_FSIC] = (0, import_smithy_client.strictParseInt32)(output[_FSIC]);\n }\n return contents;\n}, \"de_StackSetOperationStatusDetails\");\nvar de_StackSetOperationSummaries = /* @__PURE__ */ __name((output, context) => {\n return (output || []).filter((e) => e != null).map((entry) => {\n return de_StackSetOperationSummary(entry, context);\n });\n}, \"de_StackSetOperationSummaries\");\nvar de_StackSetOperationSummary = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_OI] != null) {\n contents[_OI] = (0, import_smithy_client.expectString)(output[_OI]);\n }\n if (output[_A] != null) {\n contents[_A] = (0, import_smithy_client.expectString)(output[_A]);\n }\n if (output[_S] != null) {\n contents[_S] = (0, import_smithy_client.expectString)(output[_S]);\n }\n if (output[_CTre] != null) {\n contents[_CTre] = (0, import_smithy_client.expectNonNull)((0, import_smithy_client.parseRfc3339DateTimeWithOffset)(output[_CTre]));\n }\n if (output[_ETn] != null) {\n contents[_ETn] = (0, import_smithy_client.expectNonNull)((0, import_smithy_client.parseRfc3339DateTimeWithOffset)(output[_ETn]));\n }\n if (output[_SRt] != null) {\n contents[_SRt] = (0, import_smithy_client.expectString)(output[_SRt]);\n }\n if (output[_SD] != null) {\n contents[_SD] = de_StackSetOperationStatusDetails(output[_SD], context);\n }\n if (output[_OP] != null) {\n contents[_OP] = de_StackSetOperationPreferences(output[_OP], context);\n }\n return contents;\n}, \"de_StackSetOperationSummary\");\nvar de_StackSetSummaries = /* @__PURE__ */ __name((output, context) => {\n return (output || []).filter((e) => e != null).map((entry) => {\n return de_StackSetSummary(entry, context);\n });\n}, \"de_StackSetSummaries\");\nvar de_StackSetSummary = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_SSN] != null) {\n contents[_SSN] = (0, import_smithy_client.expectString)(output[_SSN]);\n }\n if (output[_SSI] != null) {\n contents[_SSI] = (0, import_smithy_client.expectString)(output[_SSI]);\n }\n if (output[_D] != null) {\n contents[_D] = (0, import_smithy_client.expectString)(output[_D]);\n }\n if (output[_S] != null) {\n contents[_S] = (0, import_smithy_client.expectString)(output[_S]);\n }\n if (output[_AD] != null) {\n contents[_AD] = de_AutoDeployment(output[_AD], context);\n }\n if (output[_PM] != null) {\n contents[_PM] = (0, import_smithy_client.expectString)(output[_PM]);\n }\n if (output[_DSr] != null) {\n contents[_DSr] = (0, import_smithy_client.expectString)(output[_DSr]);\n }\n if (output[_LDCT] != null) {\n contents[_LDCT] = (0, import_smithy_client.expectNonNull)((0, import_smithy_client.parseRfc3339DateTimeWithOffset)(output[_LDCT]));\n }\n if (output[_ME] != null) {\n contents[_ME] = de_ManagedExecution(output[_ME], context);\n }\n return contents;\n}, \"de_StackSetSummary\");\nvar de_StackSummaries = /* @__PURE__ */ __name((output, context) => {\n return (output || []).filter((e) => e != null).map((entry) => {\n return de_StackSummary(entry, context);\n });\n}, \"de_StackSummaries\");\nvar de_StackSummary = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_SI] != null) {\n contents[_SI] = (0, import_smithy_client.expectString)(output[_SI]);\n }\n if (output[_SN] != null) {\n contents[_SN] = (0, import_smithy_client.expectString)(output[_SN]);\n }\n if (output[_TDe] != null) {\n contents[_TDe] = (0, import_smithy_client.expectString)(output[_TDe]);\n }\n if (output[_CTr] != null) {\n contents[_CTr] = (0, import_smithy_client.expectNonNull)((0, import_smithy_client.parseRfc3339DateTimeWithOffset)(output[_CTr]));\n }\n if (output[_LUT] != null) {\n contents[_LUT] = (0, import_smithy_client.expectNonNull)((0, import_smithy_client.parseRfc3339DateTimeWithOffset)(output[_LUT]));\n }\n if (output[_DTel] != null) {\n contents[_DTel] = (0, import_smithy_client.expectNonNull)((0, import_smithy_client.parseRfc3339DateTimeWithOffset)(output[_DTel]));\n }\n if (output[_SSta] != null) {\n contents[_SSta] = (0, import_smithy_client.expectString)(output[_SSta]);\n }\n if (output[_SSR] != null) {\n contents[_SSR] = (0, import_smithy_client.expectString)(output[_SSR]);\n }\n if (output[_PIa] != null) {\n contents[_PIa] = (0, import_smithy_client.expectString)(output[_PIa]);\n }\n if (output[_RIo] != null) {\n contents[_RIo] = (0, import_smithy_client.expectString)(output[_RIo]);\n }\n if (output[_DI] != null) {\n contents[_DI] = de_StackDriftInformationSummary(output[_DI], context);\n }\n return contents;\n}, \"de_StackSummary\");\nvar de_StageList = /* @__PURE__ */ __name((output, context) => {\n return (output || []).filter((e) => e != null).map((entry) => {\n return (0, import_smithy_client.expectString)(entry);\n });\n}, \"de_StageList\");\nvar de_StaleRequestException = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_M] != null) {\n contents[_M] = (0, import_smithy_client.expectString)(output[_M]);\n }\n return contents;\n}, \"de_StaleRequestException\");\nvar de_StartResourceScanOutput = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_RSI] != null) {\n contents[_RSI] = (0, import_smithy_client.expectString)(output[_RSI]);\n }\n return contents;\n}, \"de_StartResourceScanOutput\");\nvar de_StopStackSetOperationOutput = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n return contents;\n}, \"de_StopStackSetOperationOutput\");\nvar de_SupportedMajorVersions = /* @__PURE__ */ __name((output, context) => {\n return (output || []).filter((e) => e != null).map((entry) => {\n return (0, import_smithy_client.strictParseInt32)(entry);\n });\n}, \"de_SupportedMajorVersions\");\nvar de_Tag = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_K] != null) {\n contents[_K] = (0, import_smithy_client.expectString)(output[_K]);\n }\n if (output[_Val] != null) {\n contents[_Val] = (0, import_smithy_client.expectString)(output[_Val]);\n }\n return contents;\n}, \"de_Tag\");\nvar de_Tags = /* @__PURE__ */ __name((output, context) => {\n return (output || []).filter((e) => e != null).map((entry) => {\n return de_Tag(entry, context);\n });\n}, \"de_Tags\");\nvar de_TemplateConfiguration = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_DPe] != null) {\n contents[_DPe] = (0, import_smithy_client.expectString)(output[_DPe]);\n }\n if (output[_URP] != null) {\n contents[_URP] = (0, import_smithy_client.expectString)(output[_URP]);\n }\n return contents;\n}, \"de_TemplateConfiguration\");\nvar de_TemplateParameter = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_PK] != null) {\n contents[_PK] = (0, import_smithy_client.expectString)(output[_PK]);\n }\n if (output[_DV] != null) {\n contents[_DV] = (0, import_smithy_client.expectString)(output[_DV]);\n }\n if (output[_NE] != null) {\n contents[_NE] = (0, import_smithy_client.parseBoolean)(output[_NE]);\n }\n if (output[_D] != null) {\n contents[_D] = (0, import_smithy_client.expectString)(output[_D]);\n }\n return contents;\n}, \"de_TemplateParameter\");\nvar de_TemplateParameters = /* @__PURE__ */ __name((output, context) => {\n return (output || []).filter((e) => e != null).map((entry) => {\n return de_TemplateParameter(entry, context);\n });\n}, \"de_TemplateParameters\");\nvar de_TemplateProgress = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_RSesou] != null) {\n contents[_RSesou] = (0, import_smithy_client.strictParseInt32)(output[_RSesou]);\n }\n if (output[_RF] != null) {\n contents[_RF] = (0, import_smithy_client.strictParseInt32)(output[_RF]);\n }\n if (output[_RPes] != null) {\n contents[_RPes] = (0, import_smithy_client.strictParseInt32)(output[_RPes]);\n }\n if (output[_RPeso] != null) {\n contents[_RPeso] = (0, import_smithy_client.strictParseInt32)(output[_RPeso]);\n }\n return contents;\n}, \"de_TemplateProgress\");\nvar de_TemplateSummaries = /* @__PURE__ */ __name((output, context) => {\n return (output || []).filter((e) => e != null).map((entry) => {\n return de_TemplateSummary(entry, context);\n });\n}, \"de_TemplateSummaries\");\nvar de_TemplateSummary = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_GTI] != null) {\n contents[_GTI] = (0, import_smithy_client.expectString)(output[_GTI]);\n }\n if (output[_GTN] != null) {\n contents[_GTN] = (0, import_smithy_client.expectString)(output[_GTN]);\n }\n if (output[_S] != null) {\n contents[_S] = (0, import_smithy_client.expectString)(output[_S]);\n }\n if (output[_SRt] != null) {\n contents[_SRt] = (0, import_smithy_client.expectString)(output[_SRt]);\n }\n if (output[_CTr] != null) {\n contents[_CTr] = (0, import_smithy_client.expectNonNull)((0, import_smithy_client.parseRfc3339DateTimeWithOffset)(output[_CTr]));\n }\n if (output[_LUT] != null) {\n contents[_LUT] = (0, import_smithy_client.expectNonNull)((0, import_smithy_client.parseRfc3339DateTimeWithOffset)(output[_LUT]));\n }\n if (output[_NOR] != null) {\n contents[_NOR] = (0, import_smithy_client.strictParseInt32)(output[_NOR]);\n }\n return contents;\n}, \"de_TemplateSummary\");\nvar de_TestTypeOutput = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_TVA] != null) {\n contents[_TVA] = (0, import_smithy_client.expectString)(output[_TVA]);\n }\n return contents;\n}, \"de_TestTypeOutput\");\nvar de_TokenAlreadyExistsException = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_M] != null) {\n contents[_M] = (0, import_smithy_client.expectString)(output[_M]);\n }\n return contents;\n}, \"de_TokenAlreadyExistsException\");\nvar de_TransformsList = /* @__PURE__ */ __name((output, context) => {\n return (output || []).filter((e) => e != null).map((entry) => {\n return (0, import_smithy_client.expectString)(entry);\n });\n}, \"de_TransformsList\");\nvar de_TypeConfigurationDetails = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_Ar] != null) {\n contents[_Ar] = (0, import_smithy_client.expectString)(output[_Ar]);\n }\n if (output[_Al] != null) {\n contents[_Al] = (0, import_smithy_client.expectString)(output[_Al]);\n }\n if (output[_Co] != null) {\n contents[_Co] = (0, import_smithy_client.expectString)(output[_Co]);\n }\n if (output[_LU] != null) {\n contents[_LU] = (0, import_smithy_client.expectNonNull)((0, import_smithy_client.parseRfc3339DateTimeWithOffset)(output[_LU]));\n }\n if (output[_TA] != null) {\n contents[_TA] = (0, import_smithy_client.expectString)(output[_TA]);\n }\n if (output[_TN] != null) {\n contents[_TN] = (0, import_smithy_client.expectString)(output[_TN]);\n }\n if (output[_IDC] != null) {\n contents[_IDC] = (0, import_smithy_client.parseBoolean)(output[_IDC]);\n }\n return contents;\n}, \"de_TypeConfigurationDetails\");\nvar de_TypeConfigurationDetailsList = /* @__PURE__ */ __name((output, context) => {\n return (output || []).filter((e) => e != null).map((entry) => {\n return de_TypeConfigurationDetails(entry, context);\n });\n}, \"de_TypeConfigurationDetailsList\");\nvar de_TypeConfigurationIdentifier = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_TA] != null) {\n contents[_TA] = (0, import_smithy_client.expectString)(output[_TA]);\n }\n if (output[_TCA] != null) {\n contents[_TCA] = (0, import_smithy_client.expectString)(output[_TCA]);\n }\n if (output[_TCAy] != null) {\n contents[_TCAy] = (0, import_smithy_client.expectString)(output[_TCAy]);\n }\n if (output[_T] != null) {\n contents[_T] = (0, import_smithy_client.expectString)(output[_T]);\n }\n if (output[_TN] != null) {\n contents[_TN] = (0, import_smithy_client.expectString)(output[_TN]);\n }\n return contents;\n}, \"de_TypeConfigurationIdentifier\");\nvar de_TypeConfigurationNotFoundException = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_M] != null) {\n contents[_M] = (0, import_smithy_client.expectString)(output[_M]);\n }\n return contents;\n}, \"de_TypeConfigurationNotFoundException\");\nvar de_TypeNotFoundException = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_M] != null) {\n contents[_M] = (0, import_smithy_client.expectString)(output[_M]);\n }\n return contents;\n}, \"de_TypeNotFoundException\");\nvar de_TypeSummaries = /* @__PURE__ */ __name((output, context) => {\n return (output || []).filter((e) => e != null).map((entry) => {\n return de_TypeSummary(entry, context);\n });\n}, \"de_TypeSummaries\");\nvar de_TypeSummary = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_T] != null) {\n contents[_T] = (0, import_smithy_client.expectString)(output[_T]);\n }\n if (output[_TN] != null) {\n contents[_TN] = (0, import_smithy_client.expectString)(output[_TN]);\n }\n if (output[_DVI] != null) {\n contents[_DVI] = (0, import_smithy_client.expectString)(output[_DVI]);\n }\n if (output[_TA] != null) {\n contents[_TA] = (0, import_smithy_client.expectString)(output[_TA]);\n }\n if (output[_LU] != null) {\n contents[_LU] = (0, import_smithy_client.expectNonNull)((0, import_smithy_client.parseRfc3339DateTimeWithOffset)(output[_LU]));\n }\n if (output[_D] != null) {\n contents[_D] = (0, import_smithy_client.expectString)(output[_D]);\n }\n if (output[_PI] != null) {\n contents[_PI] = (0, import_smithy_client.expectString)(output[_PI]);\n }\n if (output[_OTN] != null) {\n contents[_OTN] = (0, import_smithy_client.expectString)(output[_OTN]);\n }\n if (output[_PVN] != null) {\n contents[_PVN] = (0, import_smithy_client.expectString)(output[_PVN]);\n }\n if (output[_LPV] != null) {\n contents[_LPV] = (0, import_smithy_client.expectString)(output[_LPV]);\n }\n if (output[_PIu] != null) {\n contents[_PIu] = (0, import_smithy_client.expectString)(output[_PIu]);\n }\n if (output[_PN] != null) {\n contents[_PN] = (0, import_smithy_client.expectString)(output[_PN]);\n }\n if (output[_IA] != null) {\n contents[_IA] = (0, import_smithy_client.parseBoolean)(output[_IA]);\n }\n return contents;\n}, \"de_TypeSummary\");\nvar de_TypeVersionSummaries = /* @__PURE__ */ __name((output, context) => {\n return (output || []).filter((e) => e != null).map((entry) => {\n return de_TypeVersionSummary(entry, context);\n });\n}, \"de_TypeVersionSummaries\");\nvar de_TypeVersionSummary = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_T] != null) {\n contents[_T] = (0, import_smithy_client.expectString)(output[_T]);\n }\n if (output[_TN] != null) {\n contents[_TN] = (0, import_smithy_client.expectString)(output[_TN]);\n }\n if (output[_VI] != null) {\n contents[_VI] = (0, import_smithy_client.expectString)(output[_VI]);\n }\n if (output[_IDV] != null) {\n contents[_IDV] = (0, import_smithy_client.parseBoolean)(output[_IDV]);\n }\n if (output[_Ar] != null) {\n contents[_Ar] = (0, import_smithy_client.expectString)(output[_Ar]);\n }\n if (output[_TCi] != null) {\n contents[_TCi] = (0, import_smithy_client.expectNonNull)((0, import_smithy_client.parseRfc3339DateTimeWithOffset)(output[_TCi]));\n }\n if (output[_D] != null) {\n contents[_D] = (0, import_smithy_client.expectString)(output[_D]);\n }\n if (output[_PVN] != null) {\n contents[_PVN] = (0, import_smithy_client.expectString)(output[_PVN]);\n }\n return contents;\n}, \"de_TypeVersionSummary\");\nvar de_UnprocessedTypeConfigurations = /* @__PURE__ */ __name((output, context) => {\n return (output || []).filter((e) => e != null).map((entry) => {\n return de_TypeConfigurationIdentifier(entry, context);\n });\n}, \"de_UnprocessedTypeConfigurations\");\nvar de_UpdateGeneratedTemplateOutput = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_GTI] != null) {\n contents[_GTI] = (0, import_smithy_client.expectString)(output[_GTI]);\n }\n return contents;\n}, \"de_UpdateGeneratedTemplateOutput\");\nvar de_UpdateStackInstancesOutput = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_OI] != null) {\n contents[_OI] = (0, import_smithy_client.expectString)(output[_OI]);\n }\n return contents;\n}, \"de_UpdateStackInstancesOutput\");\nvar de_UpdateStackOutput = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_SI] != null) {\n contents[_SI] = (0, import_smithy_client.expectString)(output[_SI]);\n }\n return contents;\n}, \"de_UpdateStackOutput\");\nvar de_UpdateStackSetOutput = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_OI] != null) {\n contents[_OI] = (0, import_smithy_client.expectString)(output[_OI]);\n }\n return contents;\n}, \"de_UpdateStackSetOutput\");\nvar de_UpdateTerminationProtectionOutput = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_SI] != null) {\n contents[_SI] = (0, import_smithy_client.expectString)(output[_SI]);\n }\n return contents;\n}, \"de_UpdateTerminationProtectionOutput\");\nvar de_ValidateTemplateOutput = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output.Parameters === \"\") {\n contents[_P] = [];\n } else if (output[_P] != null && output[_P][_m] != null) {\n contents[_P] = de_TemplateParameters((0, import_smithy_client.getArrayIfSingleItem)(output[_P][_m]), context);\n }\n if (output[_D] != null) {\n contents[_D] = (0, import_smithy_client.expectString)(output[_D]);\n }\n if (output.Capabilities === \"\") {\n contents[_C] = [];\n } else if (output[_C] != null && output[_C][_m] != null) {\n contents[_C] = de_Capabilities((0, import_smithy_client.getArrayIfSingleItem)(output[_C][_m]), context);\n }\n if (output[_CR] != null) {\n contents[_CR] = (0, import_smithy_client.expectString)(output[_CR]);\n }\n if (output.DeclaredTransforms === \"\") {\n contents[_DTec] = [];\n } else if (output[_DTec] != null && output[_DTec][_m] != null) {\n contents[_DTec] = de_TransformsList((0, import_smithy_client.getArrayIfSingleItem)(output[_DTec][_m]), context);\n }\n return contents;\n}, \"de_ValidateTemplateOutput\");\nvar de_WarningDetail = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_T] != null) {\n contents[_T] = (0, import_smithy_client.expectString)(output[_T]);\n }\n if (output.Properties === \"\") {\n contents[_Pro] = [];\n } else if (output[_Pro] != null && output[_Pro][_m] != null) {\n contents[_Pro] = de_WarningProperties((0, import_smithy_client.getArrayIfSingleItem)(output[_Pro][_m]), context);\n }\n return contents;\n}, \"de_WarningDetail\");\nvar de_WarningDetails = /* @__PURE__ */ __name((output, context) => {\n return (output || []).filter((e) => e != null).map((entry) => {\n return de_WarningDetail(entry, context);\n });\n}, \"de_WarningDetails\");\nvar de_WarningProperties = /* @__PURE__ */ __name((output, context) => {\n return (output || []).filter((e) => e != null).map((entry) => {\n return de_WarningProperty(entry, context);\n });\n}, \"de_WarningProperties\");\nvar de_WarningProperty = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_PPr] != null) {\n contents[_PPr] = (0, import_smithy_client.expectString)(output[_PPr]);\n }\n if (output[_Req] != null) {\n contents[_Req] = (0, import_smithy_client.parseBoolean)(output[_Req]);\n }\n if (output[_D] != null) {\n contents[_D] = (0, import_smithy_client.expectString)(output[_D]);\n }\n return contents;\n}, \"de_WarningProperty\");\nvar de_Warnings = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output.UnrecognizedResourceTypes === \"\") {\n contents[_URT] = [];\n } else if (output[_URT] != null && output[_URT][_m] != null) {\n contents[_URT] = de_ResourceTypes((0, import_smithy_client.getArrayIfSingleItem)(output[_URT][_m]), context);\n }\n return contents;\n}, \"de_Warnings\");\nvar deserializeMetadata = /* @__PURE__ */ __name((output) => ({\n httpStatusCode: output.statusCode,\n requestId: output.headers[\"x-amzn-requestid\"] ?? output.headers[\"x-amzn-request-id\"] ?? output.headers[\"x-amz-request-id\"],\n extendedRequestId: output.headers[\"x-amz-id-2\"],\n cfId: output.headers[\"x-amz-cf-id\"]\n}), \"deserializeMetadata\");\nvar throwDefaultError = (0, import_smithy_client.withBaseException)(CloudFormationServiceException);\nvar buildHttpRpcRequest = /* @__PURE__ */ __name(async (context, headers, path, resolvedHostname, body) => {\n const { hostname, protocol = \"https\", port, path: basePath } = await context.endpoint();\n const contents = {\n protocol,\n hostname,\n port,\n method: \"POST\",\n path: basePath.endsWith(\"/\") ? basePath.slice(0, -1) + path : basePath + path,\n headers\n };\n if (resolvedHostname !== void 0) {\n contents.hostname = resolvedHostname;\n }\n if (body !== void 0) {\n contents.body = body;\n }\n return new import_protocol_http.HttpRequest(contents);\n}, \"buildHttpRpcRequest\");\nvar SHARED_HEADERS = {\n \"content-type\": \"application/x-www-form-urlencoded\"\n};\nvar _ = \"2010-05-15\";\nvar _A = \"Action\";\nvar _AC = \"AfterContext\";\nvar _ACT = \"AttributeChangeType\";\nvar _AD = \"AutoDeployment\";\nvar _AFT = \"AccountFilterType\";\nvar _AGR = \"AccountGateResult\";\nvar _AL = \"AccountLimits\";\nvar _AOA = \"ActivateOrganizationsAccess\";\nvar _AP = \"ActualProperties\";\nvar _AR = \"AddResources\";\nvar _ARARN = \"AdministrationRoleARN\";\nvar _AT = \"ActivateType\";\nvar _ATAC = \"AcceptTermsAndConditions\";\nvar _AU = \"AutoUpdate\";\nvar _AUc = \"AccountsUrl\";\nvar _AV = \"AllowedValues\";\nvar _AVc = \"ActualValue\";\nvar _AVf = \"AfterValue\";\nvar _Ac = \"Accounts\";\nvar _Acc = \"Account\";\nvar _Act = \"Active\";\nvar _Al = \"Alias\";\nvar _Ar = \"Arn\";\nvar _At = \"Attribute\";\nvar _BC = \"BeforeContext\";\nvar _BDTC = \"BatchDescribeTypeConfigurations\";\nvar _BT = \"BearerToken\";\nvar _BV = \"BeforeValue\";\nvar _C = \"Capabilities\";\nvar _CA = \"CallAs\";\nvar _CAo = \"ConnectionArn\";\nvar _CAon = \"ConfigurationAlias\";\nvar _CAonf = \"ConfigurationArn\";\nvar _CCS = \"CreateChangeSet\";\nvar _CE = \"CausingEntity\";\nvar _CGT = \"CreateGeneratedTemplate\";\nvar _CM = \"ConcurrencyMode\";\nvar _COS = \"CurrentOperationStatus\";\nvar _CR = \"CapabilitiesReason\";\nvar _CRT = \"ClientRequestToken\";\nvar _CS = \"CreateStack\";\nvar _CSI = \"CreateStackInstances\";\nvar _CSIh = \"ChangeSetId\";\nvar _CSN = \"ChangeSetName\";\nvar _CSS = \"CreateStackSet\";\nvar _CST = \"ChangeSetType\";\nvar _CSh = \"ChangeSource\";\nvar _CSo = \"ConfigurationSchema\";\nvar _CT = \"ClientToken\";\nvar _CTr = \"CreationTime\";\nvar _CTre = \"CreationTimestamp\";\nvar _CUR = \"ContinueUpdateRollback\";\nvar _CUS = \"CancelUpdateStack\";\nvar _Ca = \"Category\";\nvar _Ch = \"Changes\";\nvar _Co = \"Configuration\";\nvar _D = \"Description\";\nvar _DAL = \"DescribeAccountLimits\";\nvar _DCS = \"DeleteChangeSet\";\nvar _DCSH = \"DescribeChangeSetHooks\";\nvar _DCSe = \"DescribeChangeSet\";\nvar _DDS = \"DriftDetectionStatus\";\nvar _DGT = \"DeleteGeneratedTemplate\";\nvar _DGTe = \"DescribeGeneratedTemplate\";\nvar _DI = \"DriftInformation\";\nvar _DM = \"DeletionMode\";\nvar _DOA = \"DeactivateOrganizationsAccess\";\nvar _DOAe = \"DescribeOrganizationsAccess\";\nvar _DP = \"DescribePublisher\";\nvar _DPe = \"DeletionPolicy\";\nvar _DR = \"DisableRollback\";\nvar _DRS = \"DescribeResourceScan\";\nvar _DS = \"DeleteStack\";\nvar _DSD = \"DetectStackDrift\";\nvar _DSDDS = \"DescribeStackDriftDetectionStatus\";\nvar _DSE = \"DescribeStackEvents\";\nvar _DSI = \"DeleteStackInstances\";\nvar _DSIC = \"DriftedStackInstancesCount\";\nvar _DSIe = \"DescribeStackInstance\";\nvar _DSR = \"DescribeStackResource\";\nvar _DSRC = \"DriftedStackResourceCount\";\nvar _DSRD = \"DescribeStackResourceDrifts\";\nvar _DSRDe = \"DetectStackResourceDrift\";\nvar _DSRe = \"DescribeStackResources\";\nvar _DSRet = \"DetectionStatusReason\";\nvar _DSS = \"DeleteStackSet\";\nvar _DSSD = \"DetectStackSetDrift\";\nvar _DSSO = \"DescribeStackSetOperation\";\nvar _DSSe = \"DescribeStackSet\";\nvar _DSe = \"DescribeStacks\";\nvar _DSep = \"DeprecatedStatus\";\nvar _DSet = \"DetectionStatus\";\nvar _DSeta = \"DetailedStatus\";\nvar _DSr = \"DriftStatus\";\nvar _DT = \"DeactivateType\";\nvar _DTR = \"DescribeTypeRegistration\";\nvar _DTe = \"DeregisterType\";\nvar _DTec = \"DeclaredTransforms\";\nvar _DTel = \"DeletionTime\";\nvar _DTep = \"DeploymentTargets\";\nvar _DTes = \"DescribeType\";\nvar _DTi = \"DifferenceType\";\nvar _DU = \"DocumentationUrl\";\nvar _DV = \"DefaultValue\";\nvar _DVI = \"DefaultVersionId\";\nvar _De = \"Details\";\nvar _E = \"Enabled\";\nvar _EC = \"ErrorCode\";\nvar _ECS = \"ExecuteChangeSet\";\nvar _EI = \"EventId\";\nvar _EM = \"ErrorMessage\";\nvar _EN = \"ExportName\";\nvar _EP = \"ExpectedProperties\";\nvar _ERA = \"ExecutionRoleArn\";\nvar _ERN = \"ExecutionRoleName\";\nvar _ES = \"ExecutionStatus\";\nvar _ESI = \"ExportingStackId\";\nvar _ET = \"EndTime\";\nvar _ETC = \"EstimateTemplateCost\";\nvar _ETP = \"EnableTerminationProtection\";\nvar _ETn = \"EndTimestamp\";\nvar _EV = \"ExpectedValue\";\nvar _Er = \"Errors\";\nvar _Ev = \"Evaluation\";\nvar _Ex = \"Exports\";\nvar _F = \"Format\";\nvar _FM = \"FailureMode\";\nvar _FSIC = \"FailedStackInstancesCount\";\nvar _FTC = \"FailureToleranceCount\";\nvar _FTP = \"FailureTolerancePercentage\";\nvar _Fi = \"Filters\";\nvar _GGT = \"GetGeneratedTemplate\";\nvar _GSP = \"GetStackPolicy\";\nvar _GT = \"GetTemplate\";\nvar _GTI = \"GeneratedTemplateId\";\nvar _GTN = \"GeneratedTemplateName\";\nvar _GTS = \"GetTemplateSummary\";\nvar _H = \"Hooks\";\nvar _HFM = \"HookFailureMode\";\nvar _HIC = \"HookInvocationCount\";\nvar _HIP = \"HookInvocationPoint\";\nvar _HS = \"HookStatus\";\nvar _HSR = \"HookStatusReason\";\nvar _HT = \"HookType\";\nvar _I = \"Id\";\nvar _IA = \"IsActivated\";\nvar _IDC = \"IsDefaultConfiguration\";\nvar _IDV = \"IsDefaultVersion\";\nvar _IER = \"ImportExistingResources\";\nvar _INS = \"IncludeNestedStacks\";\nvar _IP = \"InvocationPoint\";\nvar _IPSIC = \"InProgressStackInstancesCount\";\nvar _IPV = \"IncludePropertyValues\";\nvar _IPd = \"IdentityProvider\";\nvar _ISSIC = \"InSyncStackInstancesCount\";\nvar _ISTSS = \"ImportStacksToStackSet\";\nvar _Im = \"Imports\";\nvar _K = \"Key\";\nvar _LC = \"LoggingConfig\";\nvar _LCS = \"ListChangeSets\";\nvar _LCT = \"LastCheckTimestamp\";\nvar _LDB = \"LogDeliveryBucket\";\nvar _LDCT = \"LastDriftCheckTimestamp\";\nvar _LE = \"ListExports\";\nvar _LGN = \"LogGroupName\";\nvar _LGT = \"ListGeneratedTemplates\";\nvar _LI = \"ListImports\";\nvar _LIH = \"LogicalIdHierarchy\";\nvar _LOI = \"LastOperationId\";\nvar _LPV = \"LatestPublicVersion\";\nvar _LRA = \"LogRoleArn\";\nvar _LRI = \"LogicalResourceId\";\nvar _LRIo = \"LogicalResourceIds\";\nvar _LRS = \"ListResourceScans\";\nvar _LRSR = \"ListResourceScanResources\";\nvar _LRSRR = \"ListResourceScanRelatedResources\";\nvar _LS = \"ListStacks\";\nvar _LSI = \"ListStackInstances\";\nvar _LSIRD = \"ListStackInstanceResourceDrifts\";\nvar _LSR = \"ListStackResources\";\nvar _LSS = \"ListStackSets\";\nvar _LSSADT = \"ListStackSetAutoDeploymentTargets\";\nvar _LSSO = \"ListStackSetOperations\";\nvar _LSSOR = \"ListStackSetOperationResults\";\nvar _LT = \"ListTypes\";\nvar _LTR = \"ListTypeRegistrations\";\nvar _LTV = \"ListTypeVersions\";\nvar _LU = \"LastUpdated\";\nvar _LUT = \"LastUpdatedTime\";\nvar _LUTa = \"LastUpdatedTimestamp\";\nvar _M = \"Message\";\nvar _MBS = \"ManagedByStack\";\nvar _MCC = \"MaxConcurrentCount\";\nvar _MCP = \"MaxConcurrentPercentage\";\nvar _ME = \"ManagedExecution\";\nvar _MI = \"ModuleInfo\";\nvar _MR = \"MaxResults\";\nvar _MTIM = \"MonitoringTimeInMinutes\";\nvar _MV = \"MajorVersion\";\nvar _Me = \"Metadata\";\nvar _N = \"Name\";\nvar _NARN = \"NotificationARNs\";\nvar _NE = \"NoEcho\";\nvar _NGTN = \"NewGeneratedTemplateName\";\nvar _NOR = \"NumberOfResources\";\nvar _NT = \"NextToken\";\nvar _O = \"Outputs\";\nvar _OF = \"OnFailure\";\nvar _OI = \"OperationId\";\nvar _OK = \"OutputKey\";\nvar _OP = \"OperationPreferences\";\nvar _OS = \"OperationStatus\";\nvar _OSF = \"OnStackFailure\";\nvar _OTA = \"OriginalTypeArn\";\nvar _OTN = \"OriginalTypeName\";\nvar _OUI = \"OrganizationalUnitIds\";\nvar _OUIr = \"OrganizationalUnitId\";\nvar _OV = \"OutputValue\";\nvar _P = \"Parameters\";\nvar _PA = \"PolicyAction\";\nvar _PC = \"PercentageCompleted\";\nvar _PCSI = \"ParentChangeSetId\";\nvar _PCa = \"ParameterConstraints\";\nvar _PD = \"PropertyDifferences\";\nvar _PI = \"PublisherId\";\nvar _PIa = \"ParentId\";\nvar _PIu = \"PublisherIdentity\";\nvar _PK = \"ParameterKey\";\nvar _PM = \"PermissionModel\";\nvar _PN = \"PublisherName\";\nvar _PO = \"ParameterOverrides\";\nvar _PP = \"PublisherProfile\";\nvar _PPr = \"PropertyPath\";\nvar _PRI = \"PhysicalResourceId\";\nvar _PRIC = \"PhysicalResourceIdContext\";\nvar _PS = \"PublisherStatus\";\nvar _PSr = \"ProgressStatus\";\nvar _PT = \"PublishType\";\nvar _PTA = \"PublicTypeArn\";\nvar _PTa = \"ParameterType\";\nvar _PTr = \"ProvisioningType\";\nvar _PV = \"ParameterValue\";\nvar _PVN = \"PublicVersionNumber\";\nvar _Pa = \"Path\";\nvar _Pr = \"Progress\";\nvar _Pro = \"Properties\";\nvar _R = \"Resources\";\nvar _RA = \"ResourceAction\";\nvar _RAR = \"RefreshAllResources\";\nvar _RARN = \"RoleARN\";\nvar _RAT = \"RequiredActivatedTypes\";\nvar _RC = \"RollbackConfiguration\";\nvar _RCSI = \"RootChangeSetId\";\nvar _RCT = \"RegionConcurrencyType\";\nvar _RCe = \"ResourceChange\";\nvar _REOC = \"RetainExceptOnCreate\";\nvar _RF = \"ResourcesFailed\";\nvar _RHP = \"RecordHandlerProgress\";\nvar _RI = \"ResourceIdentifier\";\nvar _RIS = \"ResourceIdentifierSummaries\";\nvar _RIe = \"ResourceIdentifiers\";\nvar _RIo = \"RootId\";\nvar _RM = \"ResourceModel\";\nvar _RO = \"RegionOrder\";\nvar _RP = \"RegisterPublisher\";\nvar _RPe = \"ResourceProperties\";\nvar _RPes = \"ResourcesProcessing\";\nvar _RPeso = \"ResourcesPending\";\nvar _RR = \"RetainResources\";\nvar _RRe = \"RemoveResources\";\nvar _RRel = \"RelatedResources\";\nvar _RReq = \"RequiresRecreation\";\nvar _RRes = \"ResourcesRead\";\nvar _RS = \"RollbackStack\";\nvar _RSF = \"RegistrationStatusFilter\";\nvar _RSI = \"ResourceScanId\";\nvar _RSOAR = \"RetainStacksOnAccountRemoval\";\nvar _RSR = \"ResourceStatusReason\";\nvar _RSS = \"ResourceScanSummaries\";\nvar _RSe = \"RetainStacks\";\nvar _RSes = \"ResourcesScanned\";\nvar _RSeso = \"ResourceStatus\";\nvar _RSesou = \"ResourcesSucceeded\";\nvar _RT = \"RegisterType\";\nvar _RTD = \"ResourceTargetDetails\";\nvar _RTI = \"ResourcesToImport\";\nvar _RTL = \"RegistrationTokenList\";\nvar _RTP = \"ResourceTypePrefix\";\nvar _RTS = \"ResourcesToSkip\";\nvar _RTe = \"ResourceTypes\";\nvar _RTeg = \"RegistrationToken\";\nvar _RTes = \"ResourceType\";\nvar _RTo = \"RollbackTriggers\";\nvar _RV = \"ResolvedValue\";\nvar _Re = \"Regions\";\nvar _Reg = \"Region\";\nvar _Rep = \"Replacement\";\nvar _Req = \"Required\";\nvar _S = \"Status\";\nvar _SA = \"StagesAvailable\";\nvar _SD = \"StatusDetails\";\nvar _SDDI = \"StackDriftDetectionId\";\nvar _SDS = \"StackDriftStatus\";\nvar _SE = \"StackEvents\";\nvar _SHP = \"SchemaHandlerPackage\";\nvar _SI = \"StackId\";\nvar _SIA = \"StackInstanceAccount\";\nvar _SIR = \"StackInstanceRegion\";\nvar _SIRDS = \"StackInstanceResourceDriftStatuses\";\nvar _SIS = \"StackInstanceStatus\";\nvar _SIU = \"StackIdsUrl\";\nvar _SIt = \"StackIds\";\nvar _SIta = \"StackInstance\";\nvar _SM = \"StatusMessage\";\nvar _SMV = \"SupportedMajorVersions\";\nvar _SN = \"StackName\";\nvar _SPB = \"StackPolicyBody\";\nvar _SPDUB = \"StackPolicyDuringUpdateBody\";\nvar _SPDUURL = \"StackPolicyDuringUpdateURL\";\nvar _SPURL = \"StackPolicyURL\";\nvar _SR = \"SignalResource\";\nvar _SRD = \"StackResourceDrifts\";\nvar _SRDS = \"StackResourceDriftStatus\";\nvar _SRDSF = \"StackResourceDriftStatusFilters\";\nvar _SRDt = \"StackResourceDetail\";\nvar _SRDta = \"StackResourceDrift\";\nvar _SRS = \"StartResourceScan\";\nvar _SRSt = \"StackResourceSummaries\";\nvar _SRt = \"StatusReason\";\nvar _SRta = \"StackResources\";\nvar _SS = \"StackSet\";\nvar _SSARN = \"StackSetARN\";\nvar _SSDDD = \"StackSetDriftDetectionDetails\";\nvar _SSF = \"StackStatusFilter\";\nvar _SSI = \"StackSetId\";\nvar _SSN = \"StackSetName\";\nvar _SSO = \"StackSetOperation\";\nvar _SSP = \"SetStackPolicy\";\nvar _SSR = \"StackStatusReason\";\nvar _SSSO = \"StopStackSetOperation\";\nvar _SSt = \"StackSummaries\";\nvar _SSta = \"StackStatus\";\nvar _ST = \"StartTime\";\nvar _STC = \"SetTypeConfiguration\";\nvar _STDV = \"SetTypeDefaultVersion\";\nvar _SU = \"SourceUrl\";\nvar _Sc = \"Schema\";\nvar _Sco = \"Scope\";\nvar _St = \"Stacks\";\nvar _Su = \"Summaries\";\nvar _T = \"Type\";\nvar _TA = \"TypeArn\";\nvar _TB = \"TemplateBody\";\nvar _TC = \"TemplateConfiguration\";\nvar _TCA = \"TypeConfigurationAlias\";\nvar _TCAy = \"TypeConfigurationArn\";\nvar _TCI = \"TypeConfigurationIdentifiers\";\nvar _TCIy = \"TypeConfigurationIdentifier\";\nvar _TCVI = \"TypeConfigurationVersionId\";\nvar _TCi = \"TimeCreated\";\nvar _TCy = \"TypeConfigurations\";\nvar _TD = \"TargetDetails\";\nvar _TDe = \"TemplateDescription\";\nvar _TH = \"TypeHierarchy\";\nvar _TIM = \"TimeoutInMinutes\";\nvar _TK = \"TagKey\";\nvar _TN = \"TypeName\";\nvar _TNA = \"TypeNameAlias\";\nvar _TNP = \"TypeNamePrefix\";\nvar _TS = \"TemplateStage\";\nvar _TSC = \"TemplateSummaryConfig\";\nvar _TSIC = \"TotalStackInstancesCount\";\nvar _TSy = \"TypeSummaries\";\nvar _TT = \"TestType\";\nvar _TTS = \"TypeTestsStatus\";\nvar _TTSD = \"TypeTestsStatusDescription\";\nvar _TTa = \"TargetType\";\nvar _TURL = \"TemplateURL\";\nvar _TURTAW = \"TreatUnrecognizedResourceTypesAsWarnings\";\nvar _TV = \"TagValue\";\nvar _TVA = \"TypeVersionArn\";\nvar _TVI = \"TypeVersionId\";\nvar _TVS = \"TypeVersionSummaries\";\nvar _TW = \"TotalWarnings\";\nvar _Ta = \"Tags\";\nvar _Tar = \"Target\";\nvar _Ti = \"Timestamp\";\nvar _U = \"Url\";\nvar _UGT = \"UpdateGeneratedTemplate\";\nvar _UI = \"UniqueId\";\nvar _UPT = \"UsePreviousTemplate\";\nvar _UPV = \"UsePreviousValue\";\nvar _URP = \"UpdateReplacePolicy\";\nvar _URT = \"UnrecognizedResourceTypes\";\nvar _US = \"UpdateStack\";\nvar _USI = \"UpdateStackInstances\";\nvar _USS = \"UpdateStackSet\";\nvar _UTC = \"UnprocessedTypeConfigurations\";\nvar _UTP = \"UpdateTerminationProtection\";\nvar _V = \"Version\";\nvar _VB = \"VersionBump\";\nvar _VI = \"VersionId\";\nvar _VT = \"ValidateTemplate\";\nvar _Va = \"Values\";\nvar _Val = \"Value\";\nvar _Vi = \"Visibility\";\nvar _W = \"Warnings\";\nvar _e = \"entry\";\nvar _m = \"member\";\nvar buildFormUrlencodedString = /* @__PURE__ */ __name((formEntries) => Object.entries(formEntries).map(([key, value]) => (0, import_smithy_client.extendedEncodeURIComponent)(key) + \"=\" + (0, import_smithy_client.extendedEncodeURIComponent)(value)).join(\"&\"), \"buildFormUrlencodedString\");\nvar loadQueryErrorCode = /* @__PURE__ */ __name((output, data) => {\n var _a;\n if (((_a = data.Error) == null ? void 0 : _a.Code) !== void 0) {\n return data.Error.Code;\n }\n if (output.statusCode == 404) {\n return \"NotFound\";\n }\n}, \"loadQueryErrorCode\");\n\n// src/commands/ActivateOrganizationsAccessCommand.ts\nvar _ActivateOrganizationsAccessCommand = class _ActivateOrganizationsAccessCommand extends import_smithy_client.Command.classBuilder().ep(commonParams).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"ActivateOrganizationsAccess\", {}).n(\"CloudFormationClient\", \"ActivateOrganizationsAccessCommand\").f(void 0, void 0).ser(se_ActivateOrganizationsAccessCommand).de(de_ActivateOrganizationsAccessCommand).build() {\n};\n__name(_ActivateOrganizationsAccessCommand, \"ActivateOrganizationsAccessCommand\");\nvar ActivateOrganizationsAccessCommand = _ActivateOrganizationsAccessCommand;\n\n// src/commands/ActivateTypeCommand.ts\n\n\n\nvar _ActivateTypeCommand = class _ActivateTypeCommand extends import_smithy_client.Command.classBuilder().ep(commonParams).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"ActivateType\", {}).n(\"CloudFormationClient\", \"ActivateTypeCommand\").f(void 0, void 0).ser(se_ActivateTypeCommand).de(de_ActivateTypeCommand).build() {\n};\n__name(_ActivateTypeCommand, \"ActivateTypeCommand\");\nvar ActivateTypeCommand = _ActivateTypeCommand;\n\n// src/commands/BatchDescribeTypeConfigurationsCommand.ts\n\n\n\nvar _BatchDescribeTypeConfigurationsCommand = class _BatchDescribeTypeConfigurationsCommand extends import_smithy_client.Command.classBuilder().ep(commonParams).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"BatchDescribeTypeConfigurations\", {}).n(\"CloudFormationClient\", \"BatchDescribeTypeConfigurationsCommand\").f(void 0, void 0).ser(se_BatchDescribeTypeConfigurationsCommand).de(de_BatchDescribeTypeConfigurationsCommand).build() {\n};\n__name(_BatchDescribeTypeConfigurationsCommand, \"BatchDescribeTypeConfigurationsCommand\");\nvar BatchDescribeTypeConfigurationsCommand = _BatchDescribeTypeConfigurationsCommand;\n\n// src/commands/CancelUpdateStackCommand.ts\n\n\n\nvar _CancelUpdateStackCommand = class _CancelUpdateStackCommand extends import_smithy_client.Command.classBuilder().ep(commonParams).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"CancelUpdateStack\", {}).n(\"CloudFormationClient\", \"CancelUpdateStackCommand\").f(void 0, void 0).ser(se_CancelUpdateStackCommand).de(de_CancelUpdateStackCommand).build() {\n};\n__name(_CancelUpdateStackCommand, \"CancelUpdateStackCommand\");\nvar CancelUpdateStackCommand = _CancelUpdateStackCommand;\n\n// src/commands/ContinueUpdateRollbackCommand.ts\n\n\n\nvar _ContinueUpdateRollbackCommand = class _ContinueUpdateRollbackCommand extends import_smithy_client.Command.classBuilder().ep(commonParams).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"ContinueUpdateRollback\", {}).n(\"CloudFormationClient\", \"ContinueUpdateRollbackCommand\").f(void 0, void 0).ser(se_ContinueUpdateRollbackCommand).de(de_ContinueUpdateRollbackCommand).build() {\n};\n__name(_ContinueUpdateRollbackCommand, \"ContinueUpdateRollbackCommand\");\nvar ContinueUpdateRollbackCommand = _ContinueUpdateRollbackCommand;\n\n// src/commands/CreateChangeSetCommand.ts\n\n\n\nvar _CreateChangeSetCommand = class _CreateChangeSetCommand extends import_smithy_client.Command.classBuilder().ep(commonParams).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"CreateChangeSet\", {}).n(\"CloudFormationClient\", \"CreateChangeSetCommand\").f(void 0, void 0).ser(se_CreateChangeSetCommand).de(de_CreateChangeSetCommand).build() {\n};\n__name(_CreateChangeSetCommand, \"CreateChangeSetCommand\");\nvar CreateChangeSetCommand = _CreateChangeSetCommand;\n\n// src/commands/CreateGeneratedTemplateCommand.ts\n\n\n\nvar _CreateGeneratedTemplateCommand = class _CreateGeneratedTemplateCommand extends import_smithy_client.Command.classBuilder().ep(commonParams).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"CreateGeneratedTemplate\", {}).n(\"CloudFormationClient\", \"CreateGeneratedTemplateCommand\").f(void 0, void 0).ser(se_CreateGeneratedTemplateCommand).de(de_CreateGeneratedTemplateCommand).build() {\n};\n__name(_CreateGeneratedTemplateCommand, \"CreateGeneratedTemplateCommand\");\nvar CreateGeneratedTemplateCommand = _CreateGeneratedTemplateCommand;\n\n// src/commands/CreateStackCommand.ts\n\n\n\nvar _CreateStackCommand = class _CreateStackCommand extends import_smithy_client.Command.classBuilder().ep(commonParams).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"CreateStack\", {}).n(\"CloudFormationClient\", \"CreateStackCommand\").f(void 0, void 0).ser(se_CreateStackCommand).de(de_CreateStackCommand).build() {\n};\n__name(_CreateStackCommand, \"CreateStackCommand\");\nvar CreateStackCommand = _CreateStackCommand;\n\n// src/commands/CreateStackInstancesCommand.ts\n\n\n\nvar _CreateStackInstancesCommand = class _CreateStackInstancesCommand extends import_smithy_client.Command.classBuilder().ep(commonParams).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"CreateStackInstances\", {}).n(\"CloudFormationClient\", \"CreateStackInstancesCommand\").f(void 0, void 0).ser(se_CreateStackInstancesCommand).de(de_CreateStackInstancesCommand).build() {\n};\n__name(_CreateStackInstancesCommand, \"CreateStackInstancesCommand\");\nvar CreateStackInstancesCommand = _CreateStackInstancesCommand;\n\n// src/commands/CreateStackSetCommand.ts\n\n\n\nvar _CreateStackSetCommand = class _CreateStackSetCommand extends import_smithy_client.Command.classBuilder().ep(commonParams).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"CreateStackSet\", {}).n(\"CloudFormationClient\", \"CreateStackSetCommand\").f(void 0, void 0).ser(se_CreateStackSetCommand).de(de_CreateStackSetCommand).build() {\n};\n__name(_CreateStackSetCommand, \"CreateStackSetCommand\");\nvar CreateStackSetCommand = _CreateStackSetCommand;\n\n// src/commands/DeactivateOrganizationsAccessCommand.ts\n\n\n\nvar _DeactivateOrganizationsAccessCommand = class _DeactivateOrganizationsAccessCommand extends import_smithy_client.Command.classBuilder().ep(commonParams).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"DeactivateOrganizationsAccess\", {}).n(\"CloudFormationClient\", \"DeactivateOrganizationsAccessCommand\").f(void 0, void 0).ser(se_DeactivateOrganizationsAccessCommand).de(de_DeactivateOrganizationsAccessCommand).build() {\n};\n__name(_DeactivateOrganizationsAccessCommand, \"DeactivateOrganizationsAccessCommand\");\nvar DeactivateOrganizationsAccessCommand = _DeactivateOrganizationsAccessCommand;\n\n// src/commands/DeactivateTypeCommand.ts\n\n\n\nvar _DeactivateTypeCommand = class _DeactivateTypeCommand extends import_smithy_client.Command.classBuilder().ep(commonParams).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"DeactivateType\", {}).n(\"CloudFormationClient\", \"DeactivateTypeCommand\").f(void 0, void 0).ser(se_DeactivateTypeCommand).de(de_DeactivateTypeCommand).build() {\n};\n__name(_DeactivateTypeCommand, \"DeactivateTypeCommand\");\nvar DeactivateTypeCommand = _DeactivateTypeCommand;\n\n// src/commands/DeleteChangeSetCommand.ts\n\n\n\nvar _DeleteChangeSetCommand = class _DeleteChangeSetCommand extends import_smithy_client.Command.classBuilder().ep(commonParams).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"DeleteChangeSet\", {}).n(\"CloudFormationClient\", \"DeleteChangeSetCommand\").f(void 0, void 0).ser(se_DeleteChangeSetCommand).de(de_DeleteChangeSetCommand).build() {\n};\n__name(_DeleteChangeSetCommand, \"DeleteChangeSetCommand\");\nvar DeleteChangeSetCommand = _DeleteChangeSetCommand;\n\n// src/commands/DeleteGeneratedTemplateCommand.ts\n\n\n\nvar _DeleteGeneratedTemplateCommand = class _DeleteGeneratedTemplateCommand extends import_smithy_client.Command.classBuilder().ep(commonParams).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"DeleteGeneratedTemplate\", {}).n(\"CloudFormationClient\", \"DeleteGeneratedTemplateCommand\").f(void 0, void 0).ser(se_DeleteGeneratedTemplateCommand).de(de_DeleteGeneratedTemplateCommand).build() {\n};\n__name(_DeleteGeneratedTemplateCommand, \"DeleteGeneratedTemplateCommand\");\nvar DeleteGeneratedTemplateCommand = _DeleteGeneratedTemplateCommand;\n\n// src/commands/DeleteStackCommand.ts\n\n\n\nvar _DeleteStackCommand = class _DeleteStackCommand extends import_smithy_client.Command.classBuilder().ep(commonParams).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"DeleteStack\", {}).n(\"CloudFormationClient\", \"DeleteStackCommand\").f(void 0, void 0).ser(se_DeleteStackCommand).de(de_DeleteStackCommand).build() {\n};\n__name(_DeleteStackCommand, \"DeleteStackCommand\");\nvar DeleteStackCommand = _DeleteStackCommand;\n\n// src/commands/DeleteStackInstancesCommand.ts\n\n\n\nvar _DeleteStackInstancesCommand = class _DeleteStackInstancesCommand extends import_smithy_client.Command.classBuilder().ep(commonParams).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"DeleteStackInstances\", {}).n(\"CloudFormationClient\", \"DeleteStackInstancesCommand\").f(void 0, void 0).ser(se_DeleteStackInstancesCommand).de(de_DeleteStackInstancesCommand).build() {\n};\n__name(_DeleteStackInstancesCommand, \"DeleteStackInstancesCommand\");\nvar DeleteStackInstancesCommand = _DeleteStackInstancesCommand;\n\n// src/commands/DeleteStackSetCommand.ts\n\n\n\nvar _DeleteStackSetCommand = class _DeleteStackSetCommand extends import_smithy_client.Command.classBuilder().ep(commonParams).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"DeleteStackSet\", {}).n(\"CloudFormationClient\", \"DeleteStackSetCommand\").f(void 0, void 0).ser(se_DeleteStackSetCommand).de(de_DeleteStackSetCommand).build() {\n};\n__name(_DeleteStackSetCommand, \"DeleteStackSetCommand\");\nvar DeleteStackSetCommand = _DeleteStackSetCommand;\n\n// src/commands/DeregisterTypeCommand.ts\n\n\n\nvar _DeregisterTypeCommand = class _DeregisterTypeCommand extends import_smithy_client.Command.classBuilder().ep(commonParams).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"DeregisterType\", {}).n(\"CloudFormationClient\", \"DeregisterTypeCommand\").f(void 0, void 0).ser(se_DeregisterTypeCommand).de(de_DeregisterTypeCommand).build() {\n};\n__name(_DeregisterTypeCommand, \"DeregisterTypeCommand\");\nvar DeregisterTypeCommand = _DeregisterTypeCommand;\n\n// src/commands/DescribeAccountLimitsCommand.ts\n\n\n\nvar _DescribeAccountLimitsCommand = class _DescribeAccountLimitsCommand extends import_smithy_client.Command.classBuilder().ep(commonParams).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"DescribeAccountLimits\", {}).n(\"CloudFormationClient\", \"DescribeAccountLimitsCommand\").f(void 0, void 0).ser(se_DescribeAccountLimitsCommand).de(de_DescribeAccountLimitsCommand).build() {\n};\n__name(_DescribeAccountLimitsCommand, \"DescribeAccountLimitsCommand\");\nvar DescribeAccountLimitsCommand = _DescribeAccountLimitsCommand;\n\n// src/commands/DescribeChangeSetCommand.ts\n\n\n\nvar _DescribeChangeSetCommand = class _DescribeChangeSetCommand extends import_smithy_client.Command.classBuilder().ep(commonParams).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"DescribeChangeSet\", {}).n(\"CloudFormationClient\", \"DescribeChangeSetCommand\").f(void 0, void 0).ser(se_DescribeChangeSetCommand).de(de_DescribeChangeSetCommand).build() {\n};\n__name(_DescribeChangeSetCommand, \"DescribeChangeSetCommand\");\nvar DescribeChangeSetCommand = _DescribeChangeSetCommand;\n\n// src/commands/DescribeChangeSetHooksCommand.ts\n\n\n\nvar _DescribeChangeSetHooksCommand = class _DescribeChangeSetHooksCommand extends import_smithy_client.Command.classBuilder().ep(commonParams).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"DescribeChangeSetHooks\", {}).n(\"CloudFormationClient\", \"DescribeChangeSetHooksCommand\").f(void 0, void 0).ser(se_DescribeChangeSetHooksCommand).de(de_DescribeChangeSetHooksCommand).build() {\n};\n__name(_DescribeChangeSetHooksCommand, \"DescribeChangeSetHooksCommand\");\nvar DescribeChangeSetHooksCommand = _DescribeChangeSetHooksCommand;\n\n// src/commands/DescribeGeneratedTemplateCommand.ts\n\n\n\nvar _DescribeGeneratedTemplateCommand = class _DescribeGeneratedTemplateCommand extends import_smithy_client.Command.classBuilder().ep(commonParams).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"DescribeGeneratedTemplate\", {}).n(\"CloudFormationClient\", \"DescribeGeneratedTemplateCommand\").f(void 0, void 0).ser(se_DescribeGeneratedTemplateCommand).de(de_DescribeGeneratedTemplateCommand).build() {\n};\n__name(_DescribeGeneratedTemplateCommand, \"DescribeGeneratedTemplateCommand\");\nvar DescribeGeneratedTemplateCommand = _DescribeGeneratedTemplateCommand;\n\n// src/commands/DescribeOrganizationsAccessCommand.ts\n\n\n\nvar _DescribeOrganizationsAccessCommand = class _DescribeOrganizationsAccessCommand extends import_smithy_client.Command.classBuilder().ep(commonParams).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"DescribeOrganizationsAccess\", {}).n(\"CloudFormationClient\", \"DescribeOrganizationsAccessCommand\").f(void 0, void 0).ser(se_DescribeOrganizationsAccessCommand).de(de_DescribeOrganizationsAccessCommand).build() {\n};\n__name(_DescribeOrganizationsAccessCommand, \"DescribeOrganizationsAccessCommand\");\nvar DescribeOrganizationsAccessCommand = _DescribeOrganizationsAccessCommand;\n\n// src/commands/DescribePublisherCommand.ts\n\n\n\nvar _DescribePublisherCommand = class _DescribePublisherCommand extends import_smithy_client.Command.classBuilder().ep(commonParams).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"DescribePublisher\", {}).n(\"CloudFormationClient\", \"DescribePublisherCommand\").f(void 0, void 0).ser(se_DescribePublisherCommand).de(de_DescribePublisherCommand).build() {\n};\n__name(_DescribePublisherCommand, \"DescribePublisherCommand\");\nvar DescribePublisherCommand = _DescribePublisherCommand;\n\n// src/commands/DescribeResourceScanCommand.ts\n\n\n\nvar _DescribeResourceScanCommand = class _DescribeResourceScanCommand extends import_smithy_client.Command.classBuilder().ep(commonParams).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"DescribeResourceScan\", {}).n(\"CloudFormationClient\", \"DescribeResourceScanCommand\").f(void 0, void 0).ser(se_DescribeResourceScanCommand).de(de_DescribeResourceScanCommand).build() {\n};\n__name(_DescribeResourceScanCommand, \"DescribeResourceScanCommand\");\nvar DescribeResourceScanCommand = _DescribeResourceScanCommand;\n\n// src/commands/DescribeStackDriftDetectionStatusCommand.ts\n\n\n\nvar _DescribeStackDriftDetectionStatusCommand = class _DescribeStackDriftDetectionStatusCommand extends import_smithy_client.Command.classBuilder().ep(commonParams).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"DescribeStackDriftDetectionStatus\", {}).n(\"CloudFormationClient\", \"DescribeStackDriftDetectionStatusCommand\").f(void 0, void 0).ser(se_DescribeStackDriftDetectionStatusCommand).de(de_DescribeStackDriftDetectionStatusCommand).build() {\n};\n__name(_DescribeStackDriftDetectionStatusCommand, \"DescribeStackDriftDetectionStatusCommand\");\nvar DescribeStackDriftDetectionStatusCommand = _DescribeStackDriftDetectionStatusCommand;\n\n// src/commands/DescribeStackEventsCommand.ts\n\n\n\nvar _DescribeStackEventsCommand = class _DescribeStackEventsCommand extends import_smithy_client.Command.classBuilder().ep(commonParams).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"DescribeStackEvents\", {}).n(\"CloudFormationClient\", \"DescribeStackEventsCommand\").f(void 0, void 0).ser(se_DescribeStackEventsCommand).de(de_DescribeStackEventsCommand).build() {\n};\n__name(_DescribeStackEventsCommand, \"DescribeStackEventsCommand\");\nvar DescribeStackEventsCommand = _DescribeStackEventsCommand;\n\n// src/commands/DescribeStackInstanceCommand.ts\n\n\n\nvar _DescribeStackInstanceCommand = class _DescribeStackInstanceCommand extends import_smithy_client.Command.classBuilder().ep(commonParams).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"DescribeStackInstance\", {}).n(\"CloudFormationClient\", \"DescribeStackInstanceCommand\").f(void 0, void 0).ser(se_DescribeStackInstanceCommand).de(de_DescribeStackInstanceCommand).build() {\n};\n__name(_DescribeStackInstanceCommand, \"DescribeStackInstanceCommand\");\nvar DescribeStackInstanceCommand = _DescribeStackInstanceCommand;\n\n// src/commands/DescribeStackResourceCommand.ts\n\n\n\nvar _DescribeStackResourceCommand = class _DescribeStackResourceCommand extends import_smithy_client.Command.classBuilder().ep(commonParams).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"DescribeStackResource\", {}).n(\"CloudFormationClient\", \"DescribeStackResourceCommand\").f(void 0, void 0).ser(se_DescribeStackResourceCommand).de(de_DescribeStackResourceCommand).build() {\n};\n__name(_DescribeStackResourceCommand, \"DescribeStackResourceCommand\");\nvar DescribeStackResourceCommand = _DescribeStackResourceCommand;\n\n// src/commands/DescribeStackResourceDriftsCommand.ts\n\n\n\nvar _DescribeStackResourceDriftsCommand = class _DescribeStackResourceDriftsCommand extends import_smithy_client.Command.classBuilder().ep(commonParams).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"DescribeStackResourceDrifts\", {}).n(\"CloudFormationClient\", \"DescribeStackResourceDriftsCommand\").f(void 0, void 0).ser(se_DescribeStackResourceDriftsCommand).de(de_DescribeStackResourceDriftsCommand).build() {\n};\n__name(_DescribeStackResourceDriftsCommand, \"DescribeStackResourceDriftsCommand\");\nvar DescribeStackResourceDriftsCommand = _DescribeStackResourceDriftsCommand;\n\n// src/commands/DescribeStackResourcesCommand.ts\n\n\n\nvar _DescribeStackResourcesCommand = class _DescribeStackResourcesCommand extends import_smithy_client.Command.classBuilder().ep(commonParams).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"DescribeStackResources\", {}).n(\"CloudFormationClient\", \"DescribeStackResourcesCommand\").f(void 0, void 0).ser(se_DescribeStackResourcesCommand).de(de_DescribeStackResourcesCommand).build() {\n};\n__name(_DescribeStackResourcesCommand, \"DescribeStackResourcesCommand\");\nvar DescribeStackResourcesCommand = _DescribeStackResourcesCommand;\n\n// src/commands/DescribeStacksCommand.ts\n\n\n\nvar _DescribeStacksCommand = class _DescribeStacksCommand extends import_smithy_client.Command.classBuilder().ep(commonParams).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"DescribeStacks\", {}).n(\"CloudFormationClient\", \"DescribeStacksCommand\").f(void 0, void 0).ser(se_DescribeStacksCommand).de(de_DescribeStacksCommand).build() {\n};\n__name(_DescribeStacksCommand, \"DescribeStacksCommand\");\nvar DescribeStacksCommand = _DescribeStacksCommand;\n\n// src/commands/DescribeStackSetCommand.ts\n\n\n\nvar _DescribeStackSetCommand = class _DescribeStackSetCommand extends import_smithy_client.Command.classBuilder().ep(commonParams).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"DescribeStackSet\", {}).n(\"CloudFormationClient\", \"DescribeStackSetCommand\").f(void 0, void 0).ser(se_DescribeStackSetCommand).de(de_DescribeStackSetCommand).build() {\n};\n__name(_DescribeStackSetCommand, \"DescribeStackSetCommand\");\nvar DescribeStackSetCommand = _DescribeStackSetCommand;\n\n// src/commands/DescribeStackSetOperationCommand.ts\n\n\n\nvar _DescribeStackSetOperationCommand = class _DescribeStackSetOperationCommand extends import_smithy_client.Command.classBuilder().ep(commonParams).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"DescribeStackSetOperation\", {}).n(\"CloudFormationClient\", \"DescribeStackSetOperationCommand\").f(void 0, void 0).ser(se_DescribeStackSetOperationCommand).de(de_DescribeStackSetOperationCommand).build() {\n};\n__name(_DescribeStackSetOperationCommand, \"DescribeStackSetOperationCommand\");\nvar DescribeStackSetOperationCommand = _DescribeStackSetOperationCommand;\n\n// src/commands/DescribeTypeCommand.ts\n\n\n\nvar _DescribeTypeCommand = class _DescribeTypeCommand extends import_smithy_client.Command.classBuilder().ep(commonParams).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"DescribeType\", {}).n(\"CloudFormationClient\", \"DescribeTypeCommand\").f(void 0, void 0).ser(se_DescribeTypeCommand).de(de_DescribeTypeCommand).build() {\n};\n__name(_DescribeTypeCommand, \"DescribeTypeCommand\");\nvar DescribeTypeCommand = _DescribeTypeCommand;\n\n// src/commands/DescribeTypeRegistrationCommand.ts\n\n\n\nvar _DescribeTypeRegistrationCommand = class _DescribeTypeRegistrationCommand extends import_smithy_client.Command.classBuilder().ep(commonParams).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"DescribeTypeRegistration\", {}).n(\"CloudFormationClient\", \"DescribeTypeRegistrationCommand\").f(void 0, void 0).ser(se_DescribeTypeRegistrationCommand).de(de_DescribeTypeRegistrationCommand).build() {\n};\n__name(_DescribeTypeRegistrationCommand, \"DescribeTypeRegistrationCommand\");\nvar DescribeTypeRegistrationCommand = _DescribeTypeRegistrationCommand;\n\n// src/commands/DetectStackDriftCommand.ts\n\n\n\nvar _DetectStackDriftCommand = class _DetectStackDriftCommand extends import_smithy_client.Command.classBuilder().ep(commonParams).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"DetectStackDrift\", {}).n(\"CloudFormationClient\", \"DetectStackDriftCommand\").f(void 0, void 0).ser(se_DetectStackDriftCommand).de(de_DetectStackDriftCommand).build() {\n};\n__name(_DetectStackDriftCommand, \"DetectStackDriftCommand\");\nvar DetectStackDriftCommand = _DetectStackDriftCommand;\n\n// src/commands/DetectStackResourceDriftCommand.ts\n\n\n\nvar _DetectStackResourceDriftCommand = class _DetectStackResourceDriftCommand extends import_smithy_client.Command.classBuilder().ep(commonParams).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"DetectStackResourceDrift\", {}).n(\"CloudFormationClient\", \"DetectStackResourceDriftCommand\").f(void 0, void 0).ser(se_DetectStackResourceDriftCommand).de(de_DetectStackResourceDriftCommand).build() {\n};\n__name(_DetectStackResourceDriftCommand, \"DetectStackResourceDriftCommand\");\nvar DetectStackResourceDriftCommand = _DetectStackResourceDriftCommand;\n\n// src/commands/DetectStackSetDriftCommand.ts\n\n\n\nvar _DetectStackSetDriftCommand = class _DetectStackSetDriftCommand extends import_smithy_client.Command.classBuilder().ep(commonParams).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"DetectStackSetDrift\", {}).n(\"CloudFormationClient\", \"DetectStackSetDriftCommand\").f(void 0, void 0).ser(se_DetectStackSetDriftCommand).de(de_DetectStackSetDriftCommand).build() {\n};\n__name(_DetectStackSetDriftCommand, \"DetectStackSetDriftCommand\");\nvar DetectStackSetDriftCommand = _DetectStackSetDriftCommand;\n\n// src/commands/EstimateTemplateCostCommand.ts\n\n\n\nvar _EstimateTemplateCostCommand = class _EstimateTemplateCostCommand extends import_smithy_client.Command.classBuilder().ep(commonParams).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"EstimateTemplateCost\", {}).n(\"CloudFormationClient\", \"EstimateTemplateCostCommand\").f(void 0, void 0).ser(se_EstimateTemplateCostCommand).de(de_EstimateTemplateCostCommand).build() {\n};\n__name(_EstimateTemplateCostCommand, \"EstimateTemplateCostCommand\");\nvar EstimateTemplateCostCommand = _EstimateTemplateCostCommand;\n\n// src/commands/ExecuteChangeSetCommand.ts\n\n\n\nvar _ExecuteChangeSetCommand = class _ExecuteChangeSetCommand extends import_smithy_client.Command.classBuilder().ep(commonParams).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"ExecuteChangeSet\", {}).n(\"CloudFormationClient\", \"ExecuteChangeSetCommand\").f(void 0, void 0).ser(se_ExecuteChangeSetCommand).de(de_ExecuteChangeSetCommand).build() {\n};\n__name(_ExecuteChangeSetCommand, \"ExecuteChangeSetCommand\");\nvar ExecuteChangeSetCommand = _ExecuteChangeSetCommand;\n\n// src/commands/GetGeneratedTemplateCommand.ts\n\n\n\nvar _GetGeneratedTemplateCommand = class _GetGeneratedTemplateCommand extends import_smithy_client.Command.classBuilder().ep(commonParams).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"GetGeneratedTemplate\", {}).n(\"CloudFormationClient\", \"GetGeneratedTemplateCommand\").f(void 0, void 0).ser(se_GetGeneratedTemplateCommand).de(de_GetGeneratedTemplateCommand).build() {\n};\n__name(_GetGeneratedTemplateCommand, \"GetGeneratedTemplateCommand\");\nvar GetGeneratedTemplateCommand = _GetGeneratedTemplateCommand;\n\n// src/commands/GetStackPolicyCommand.ts\n\n\n\nvar _GetStackPolicyCommand = class _GetStackPolicyCommand extends import_smithy_client.Command.classBuilder().ep(commonParams).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"GetStackPolicy\", {}).n(\"CloudFormationClient\", \"GetStackPolicyCommand\").f(void 0, void 0).ser(se_GetStackPolicyCommand).de(de_GetStackPolicyCommand).build() {\n};\n__name(_GetStackPolicyCommand, \"GetStackPolicyCommand\");\nvar GetStackPolicyCommand = _GetStackPolicyCommand;\n\n// src/commands/GetTemplateCommand.ts\n\n\n\nvar _GetTemplateCommand = class _GetTemplateCommand extends import_smithy_client.Command.classBuilder().ep(commonParams).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"GetTemplate\", {}).n(\"CloudFormationClient\", \"GetTemplateCommand\").f(void 0, void 0).ser(se_GetTemplateCommand).de(de_GetTemplateCommand).build() {\n};\n__name(_GetTemplateCommand, \"GetTemplateCommand\");\nvar GetTemplateCommand = _GetTemplateCommand;\n\n// src/commands/GetTemplateSummaryCommand.ts\n\n\n\nvar _GetTemplateSummaryCommand = class _GetTemplateSummaryCommand extends import_smithy_client.Command.classBuilder().ep(commonParams).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"GetTemplateSummary\", {}).n(\"CloudFormationClient\", \"GetTemplateSummaryCommand\").f(void 0, void 0).ser(se_GetTemplateSummaryCommand).de(de_GetTemplateSummaryCommand).build() {\n};\n__name(_GetTemplateSummaryCommand, \"GetTemplateSummaryCommand\");\nvar GetTemplateSummaryCommand = _GetTemplateSummaryCommand;\n\n// src/commands/ImportStacksToStackSetCommand.ts\n\n\n\nvar _ImportStacksToStackSetCommand = class _ImportStacksToStackSetCommand extends import_smithy_client.Command.classBuilder().ep(commonParams).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"ImportStacksToStackSet\", {}).n(\"CloudFormationClient\", \"ImportStacksToStackSetCommand\").f(void 0, void 0).ser(se_ImportStacksToStackSetCommand).de(de_ImportStacksToStackSetCommand).build() {\n};\n__name(_ImportStacksToStackSetCommand, \"ImportStacksToStackSetCommand\");\nvar ImportStacksToStackSetCommand = _ImportStacksToStackSetCommand;\n\n// src/commands/ListChangeSetsCommand.ts\n\n\n\nvar _ListChangeSetsCommand = class _ListChangeSetsCommand extends import_smithy_client.Command.classBuilder().ep(commonParams).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"ListChangeSets\", {}).n(\"CloudFormationClient\", \"ListChangeSetsCommand\").f(void 0, void 0).ser(se_ListChangeSetsCommand).de(de_ListChangeSetsCommand).build() {\n};\n__name(_ListChangeSetsCommand, \"ListChangeSetsCommand\");\nvar ListChangeSetsCommand = _ListChangeSetsCommand;\n\n// src/commands/ListExportsCommand.ts\n\n\n\nvar _ListExportsCommand = class _ListExportsCommand extends import_smithy_client.Command.classBuilder().ep(commonParams).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"ListExports\", {}).n(\"CloudFormationClient\", \"ListExportsCommand\").f(void 0, void 0).ser(se_ListExportsCommand).de(de_ListExportsCommand).build() {\n};\n__name(_ListExportsCommand, \"ListExportsCommand\");\nvar ListExportsCommand = _ListExportsCommand;\n\n// src/commands/ListGeneratedTemplatesCommand.ts\n\n\n\nvar _ListGeneratedTemplatesCommand = class _ListGeneratedTemplatesCommand extends import_smithy_client.Command.classBuilder().ep(commonParams).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"ListGeneratedTemplates\", {}).n(\"CloudFormationClient\", \"ListGeneratedTemplatesCommand\").f(void 0, void 0).ser(se_ListGeneratedTemplatesCommand).de(de_ListGeneratedTemplatesCommand).build() {\n};\n__name(_ListGeneratedTemplatesCommand, \"ListGeneratedTemplatesCommand\");\nvar ListGeneratedTemplatesCommand = _ListGeneratedTemplatesCommand;\n\n// src/commands/ListImportsCommand.ts\n\n\n\nvar _ListImportsCommand = class _ListImportsCommand extends import_smithy_client.Command.classBuilder().ep(commonParams).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"ListImports\", {}).n(\"CloudFormationClient\", \"ListImportsCommand\").f(void 0, void 0).ser(se_ListImportsCommand).de(de_ListImportsCommand).build() {\n};\n__name(_ListImportsCommand, \"ListImportsCommand\");\nvar ListImportsCommand = _ListImportsCommand;\n\n// src/commands/ListResourceScanRelatedResourcesCommand.ts\n\n\n\nvar _ListResourceScanRelatedResourcesCommand = class _ListResourceScanRelatedResourcesCommand extends import_smithy_client.Command.classBuilder().ep(commonParams).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"ListResourceScanRelatedResources\", {}).n(\"CloudFormationClient\", \"ListResourceScanRelatedResourcesCommand\").f(void 0, void 0).ser(se_ListResourceScanRelatedResourcesCommand).de(de_ListResourceScanRelatedResourcesCommand).build() {\n};\n__name(_ListResourceScanRelatedResourcesCommand, \"ListResourceScanRelatedResourcesCommand\");\nvar ListResourceScanRelatedResourcesCommand = _ListResourceScanRelatedResourcesCommand;\n\n// src/commands/ListResourceScanResourcesCommand.ts\n\n\n\nvar _ListResourceScanResourcesCommand = class _ListResourceScanResourcesCommand extends import_smithy_client.Command.classBuilder().ep(commonParams).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"ListResourceScanResources\", {}).n(\"CloudFormationClient\", \"ListResourceScanResourcesCommand\").f(void 0, void 0).ser(se_ListResourceScanResourcesCommand).de(de_ListResourceScanResourcesCommand).build() {\n};\n__name(_ListResourceScanResourcesCommand, \"ListResourceScanResourcesCommand\");\nvar ListResourceScanResourcesCommand = _ListResourceScanResourcesCommand;\n\n// src/commands/ListResourceScansCommand.ts\n\n\n\nvar _ListResourceScansCommand = class _ListResourceScansCommand extends import_smithy_client.Command.classBuilder().ep(commonParams).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"ListResourceScans\", {}).n(\"CloudFormationClient\", \"ListResourceScansCommand\").f(void 0, void 0).ser(se_ListResourceScansCommand).de(de_ListResourceScansCommand).build() {\n};\n__name(_ListResourceScansCommand, \"ListResourceScansCommand\");\nvar ListResourceScansCommand = _ListResourceScansCommand;\n\n// src/commands/ListStackInstanceResourceDriftsCommand.ts\n\n\n\nvar _ListStackInstanceResourceDriftsCommand = class _ListStackInstanceResourceDriftsCommand extends import_smithy_client.Command.classBuilder().ep(commonParams).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"ListStackInstanceResourceDrifts\", {}).n(\"CloudFormationClient\", \"ListStackInstanceResourceDriftsCommand\").f(void 0, void 0).ser(se_ListStackInstanceResourceDriftsCommand).de(de_ListStackInstanceResourceDriftsCommand).build() {\n};\n__name(_ListStackInstanceResourceDriftsCommand, \"ListStackInstanceResourceDriftsCommand\");\nvar ListStackInstanceResourceDriftsCommand = _ListStackInstanceResourceDriftsCommand;\n\n// src/commands/ListStackInstancesCommand.ts\n\n\n\nvar _ListStackInstancesCommand = class _ListStackInstancesCommand extends import_smithy_client.Command.classBuilder().ep(commonParams).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"ListStackInstances\", {}).n(\"CloudFormationClient\", \"ListStackInstancesCommand\").f(void 0, void 0).ser(se_ListStackInstancesCommand).de(de_ListStackInstancesCommand).build() {\n};\n__name(_ListStackInstancesCommand, \"ListStackInstancesCommand\");\nvar ListStackInstancesCommand = _ListStackInstancesCommand;\n\n// src/commands/ListStackResourcesCommand.ts\n\n\n\nvar _ListStackResourcesCommand = class _ListStackResourcesCommand extends import_smithy_client.Command.classBuilder().ep(commonParams).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"ListStackResources\", {}).n(\"CloudFormationClient\", \"ListStackResourcesCommand\").f(void 0, void 0).ser(se_ListStackResourcesCommand).de(de_ListStackResourcesCommand).build() {\n};\n__name(_ListStackResourcesCommand, \"ListStackResourcesCommand\");\nvar ListStackResourcesCommand = _ListStackResourcesCommand;\n\n// src/commands/ListStacksCommand.ts\n\n\n\nvar _ListStacksCommand = class _ListStacksCommand extends import_smithy_client.Command.classBuilder().ep(commonParams).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"ListStacks\", {}).n(\"CloudFormationClient\", \"ListStacksCommand\").f(void 0, void 0).ser(se_ListStacksCommand).de(de_ListStacksCommand).build() {\n};\n__name(_ListStacksCommand, \"ListStacksCommand\");\nvar ListStacksCommand = _ListStacksCommand;\n\n// src/commands/ListStackSetAutoDeploymentTargetsCommand.ts\n\n\n\nvar _ListStackSetAutoDeploymentTargetsCommand = class _ListStackSetAutoDeploymentTargetsCommand extends import_smithy_client.Command.classBuilder().ep(commonParams).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"ListStackSetAutoDeploymentTargets\", {}).n(\"CloudFormationClient\", \"ListStackSetAutoDeploymentTargetsCommand\").f(void 0, void 0).ser(se_ListStackSetAutoDeploymentTargetsCommand).de(de_ListStackSetAutoDeploymentTargetsCommand).build() {\n};\n__name(_ListStackSetAutoDeploymentTargetsCommand, \"ListStackSetAutoDeploymentTargetsCommand\");\nvar ListStackSetAutoDeploymentTargetsCommand = _ListStackSetAutoDeploymentTargetsCommand;\n\n// src/commands/ListStackSetOperationResultsCommand.ts\n\n\n\nvar _ListStackSetOperationResultsCommand = class _ListStackSetOperationResultsCommand extends import_smithy_client.Command.classBuilder().ep(commonParams).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"ListStackSetOperationResults\", {}).n(\"CloudFormationClient\", \"ListStackSetOperationResultsCommand\").f(void 0, void 0).ser(se_ListStackSetOperationResultsCommand).de(de_ListStackSetOperationResultsCommand).build() {\n};\n__name(_ListStackSetOperationResultsCommand, \"ListStackSetOperationResultsCommand\");\nvar ListStackSetOperationResultsCommand = _ListStackSetOperationResultsCommand;\n\n// src/commands/ListStackSetOperationsCommand.ts\n\n\n\nvar _ListStackSetOperationsCommand = class _ListStackSetOperationsCommand extends import_smithy_client.Command.classBuilder().ep(commonParams).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"ListStackSetOperations\", {}).n(\"CloudFormationClient\", \"ListStackSetOperationsCommand\").f(void 0, void 0).ser(se_ListStackSetOperationsCommand).de(de_ListStackSetOperationsCommand).build() {\n};\n__name(_ListStackSetOperationsCommand, \"ListStackSetOperationsCommand\");\nvar ListStackSetOperationsCommand = _ListStackSetOperationsCommand;\n\n// src/commands/ListStackSetsCommand.ts\n\n\n\nvar _ListStackSetsCommand = class _ListStackSetsCommand extends import_smithy_client.Command.classBuilder().ep(commonParams).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"ListStackSets\", {}).n(\"CloudFormationClient\", \"ListStackSetsCommand\").f(void 0, void 0).ser(se_ListStackSetsCommand).de(de_ListStackSetsCommand).build() {\n};\n__name(_ListStackSetsCommand, \"ListStackSetsCommand\");\nvar ListStackSetsCommand = _ListStackSetsCommand;\n\n// src/commands/ListTypeRegistrationsCommand.ts\n\n\n\nvar _ListTypeRegistrationsCommand = class _ListTypeRegistrationsCommand extends import_smithy_client.Command.classBuilder().ep(commonParams).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"ListTypeRegistrations\", {}).n(\"CloudFormationClient\", \"ListTypeRegistrationsCommand\").f(void 0, void 0).ser(se_ListTypeRegistrationsCommand).de(de_ListTypeRegistrationsCommand).build() {\n};\n__name(_ListTypeRegistrationsCommand, \"ListTypeRegistrationsCommand\");\nvar ListTypeRegistrationsCommand = _ListTypeRegistrationsCommand;\n\n// src/commands/ListTypesCommand.ts\n\n\n\nvar _ListTypesCommand = class _ListTypesCommand extends import_smithy_client.Command.classBuilder().ep(commonParams).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"ListTypes\", {}).n(\"CloudFormationClient\", \"ListTypesCommand\").f(void 0, void 0).ser(se_ListTypesCommand).de(de_ListTypesCommand).build() {\n};\n__name(_ListTypesCommand, \"ListTypesCommand\");\nvar ListTypesCommand = _ListTypesCommand;\n\n// src/commands/ListTypeVersionsCommand.ts\n\n\n\nvar _ListTypeVersionsCommand = class _ListTypeVersionsCommand extends import_smithy_client.Command.classBuilder().ep(commonParams).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"ListTypeVersions\", {}).n(\"CloudFormationClient\", \"ListTypeVersionsCommand\").f(void 0, void 0).ser(se_ListTypeVersionsCommand).de(de_ListTypeVersionsCommand).build() {\n};\n__name(_ListTypeVersionsCommand, \"ListTypeVersionsCommand\");\nvar ListTypeVersionsCommand = _ListTypeVersionsCommand;\n\n// src/commands/PublishTypeCommand.ts\n\n\n\nvar _PublishTypeCommand = class _PublishTypeCommand extends import_smithy_client.Command.classBuilder().ep(commonParams).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"PublishType\", {}).n(\"CloudFormationClient\", \"PublishTypeCommand\").f(void 0, void 0).ser(se_PublishTypeCommand).de(de_PublishTypeCommand).build() {\n};\n__name(_PublishTypeCommand, \"PublishTypeCommand\");\nvar PublishTypeCommand = _PublishTypeCommand;\n\n// src/commands/RecordHandlerProgressCommand.ts\n\n\n\nvar _RecordHandlerProgressCommand = class _RecordHandlerProgressCommand extends import_smithy_client.Command.classBuilder().ep(commonParams).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"RecordHandlerProgress\", {}).n(\"CloudFormationClient\", \"RecordHandlerProgressCommand\").f(void 0, void 0).ser(se_RecordHandlerProgressCommand).de(de_RecordHandlerProgressCommand).build() {\n};\n__name(_RecordHandlerProgressCommand, \"RecordHandlerProgressCommand\");\nvar RecordHandlerProgressCommand = _RecordHandlerProgressCommand;\n\n// src/commands/RegisterPublisherCommand.ts\n\n\n\nvar _RegisterPublisherCommand = class _RegisterPublisherCommand extends import_smithy_client.Command.classBuilder().ep(commonParams).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"RegisterPublisher\", {}).n(\"CloudFormationClient\", \"RegisterPublisherCommand\").f(void 0, void 0).ser(se_RegisterPublisherCommand).de(de_RegisterPublisherCommand).build() {\n};\n__name(_RegisterPublisherCommand, \"RegisterPublisherCommand\");\nvar RegisterPublisherCommand = _RegisterPublisherCommand;\n\n// src/commands/RegisterTypeCommand.ts\n\n\n\nvar _RegisterTypeCommand = class _RegisterTypeCommand extends import_smithy_client.Command.classBuilder().ep(commonParams).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"RegisterType\", {}).n(\"CloudFormationClient\", \"RegisterTypeCommand\").f(void 0, void 0).ser(se_RegisterTypeCommand).de(de_RegisterTypeCommand).build() {\n};\n__name(_RegisterTypeCommand, \"RegisterTypeCommand\");\nvar RegisterTypeCommand = _RegisterTypeCommand;\n\n// src/commands/RollbackStackCommand.ts\n\n\n\nvar _RollbackStackCommand = class _RollbackStackCommand extends import_smithy_client.Command.classBuilder().ep(commonParams).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"RollbackStack\", {}).n(\"CloudFormationClient\", \"RollbackStackCommand\").f(void 0, void 0).ser(se_RollbackStackCommand).de(de_RollbackStackCommand).build() {\n};\n__name(_RollbackStackCommand, \"RollbackStackCommand\");\nvar RollbackStackCommand = _RollbackStackCommand;\n\n// src/commands/SetStackPolicyCommand.ts\n\n\n\nvar _SetStackPolicyCommand = class _SetStackPolicyCommand extends import_smithy_client.Command.classBuilder().ep(commonParams).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"SetStackPolicy\", {}).n(\"CloudFormationClient\", \"SetStackPolicyCommand\").f(void 0, void 0).ser(se_SetStackPolicyCommand).de(de_SetStackPolicyCommand).build() {\n};\n__name(_SetStackPolicyCommand, \"SetStackPolicyCommand\");\nvar SetStackPolicyCommand = _SetStackPolicyCommand;\n\n// src/commands/SetTypeConfigurationCommand.ts\n\n\n\nvar _SetTypeConfigurationCommand = class _SetTypeConfigurationCommand extends import_smithy_client.Command.classBuilder().ep(commonParams).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"SetTypeConfiguration\", {}).n(\"CloudFormationClient\", \"SetTypeConfigurationCommand\").f(void 0, void 0).ser(se_SetTypeConfigurationCommand).de(de_SetTypeConfigurationCommand).build() {\n};\n__name(_SetTypeConfigurationCommand, \"SetTypeConfigurationCommand\");\nvar SetTypeConfigurationCommand = _SetTypeConfigurationCommand;\n\n// src/commands/SetTypeDefaultVersionCommand.ts\n\n\n\nvar _SetTypeDefaultVersionCommand = class _SetTypeDefaultVersionCommand extends import_smithy_client.Command.classBuilder().ep(commonParams).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"SetTypeDefaultVersion\", {}).n(\"CloudFormationClient\", \"SetTypeDefaultVersionCommand\").f(void 0, void 0).ser(se_SetTypeDefaultVersionCommand).de(de_SetTypeDefaultVersionCommand).build() {\n};\n__name(_SetTypeDefaultVersionCommand, \"SetTypeDefaultVersionCommand\");\nvar SetTypeDefaultVersionCommand = _SetTypeDefaultVersionCommand;\n\n// src/commands/SignalResourceCommand.ts\n\n\n\nvar _SignalResourceCommand = class _SignalResourceCommand extends import_smithy_client.Command.classBuilder().ep(commonParams).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"SignalResource\", {}).n(\"CloudFormationClient\", \"SignalResourceCommand\").f(void 0, void 0).ser(se_SignalResourceCommand).de(de_SignalResourceCommand).build() {\n};\n__name(_SignalResourceCommand, \"SignalResourceCommand\");\nvar SignalResourceCommand = _SignalResourceCommand;\n\n// src/commands/StartResourceScanCommand.ts\n\n\n\nvar _StartResourceScanCommand = class _StartResourceScanCommand extends import_smithy_client.Command.classBuilder().ep(commonParams).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"StartResourceScan\", {}).n(\"CloudFormationClient\", \"StartResourceScanCommand\").f(void 0, void 0).ser(se_StartResourceScanCommand).de(de_StartResourceScanCommand).build() {\n};\n__name(_StartResourceScanCommand, \"StartResourceScanCommand\");\nvar StartResourceScanCommand = _StartResourceScanCommand;\n\n// src/commands/StopStackSetOperationCommand.ts\n\n\n\nvar _StopStackSetOperationCommand = class _StopStackSetOperationCommand extends import_smithy_client.Command.classBuilder().ep(commonParams).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"StopStackSetOperation\", {}).n(\"CloudFormationClient\", \"StopStackSetOperationCommand\").f(void 0, void 0).ser(se_StopStackSetOperationCommand).de(de_StopStackSetOperationCommand).build() {\n};\n__name(_StopStackSetOperationCommand, \"StopStackSetOperationCommand\");\nvar StopStackSetOperationCommand = _StopStackSetOperationCommand;\n\n// src/commands/TestTypeCommand.ts\n\n\n\nvar _TestTypeCommand = class _TestTypeCommand extends import_smithy_client.Command.classBuilder().ep(commonParams).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"TestType\", {}).n(\"CloudFormationClient\", \"TestTypeCommand\").f(void 0, void 0).ser(se_TestTypeCommand).de(de_TestTypeCommand).build() {\n};\n__name(_TestTypeCommand, \"TestTypeCommand\");\nvar TestTypeCommand = _TestTypeCommand;\n\n// src/commands/UpdateGeneratedTemplateCommand.ts\n\n\n\nvar _UpdateGeneratedTemplateCommand = class _UpdateGeneratedTemplateCommand extends import_smithy_client.Command.classBuilder().ep(commonParams).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"UpdateGeneratedTemplate\", {}).n(\"CloudFormationClient\", \"UpdateGeneratedTemplateCommand\").f(void 0, void 0).ser(se_UpdateGeneratedTemplateCommand).de(de_UpdateGeneratedTemplateCommand).build() {\n};\n__name(_UpdateGeneratedTemplateCommand, \"UpdateGeneratedTemplateCommand\");\nvar UpdateGeneratedTemplateCommand = _UpdateGeneratedTemplateCommand;\n\n// src/commands/UpdateStackCommand.ts\n\n\n\nvar _UpdateStackCommand = class _UpdateStackCommand extends import_smithy_client.Command.classBuilder().ep(commonParams).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"UpdateStack\", {}).n(\"CloudFormationClient\", \"UpdateStackCommand\").f(void 0, void 0).ser(se_UpdateStackCommand).de(de_UpdateStackCommand).build() {\n};\n__name(_UpdateStackCommand, \"UpdateStackCommand\");\nvar UpdateStackCommand = _UpdateStackCommand;\n\n// src/commands/UpdateStackInstancesCommand.ts\n\n\n\nvar _UpdateStackInstancesCommand = class _UpdateStackInstancesCommand extends import_smithy_client.Command.classBuilder().ep(commonParams).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"UpdateStackInstances\", {}).n(\"CloudFormationClient\", \"UpdateStackInstancesCommand\").f(void 0, void 0).ser(se_UpdateStackInstancesCommand).de(de_UpdateStackInstancesCommand).build() {\n};\n__name(_UpdateStackInstancesCommand, \"UpdateStackInstancesCommand\");\nvar UpdateStackInstancesCommand = _UpdateStackInstancesCommand;\n\n// src/commands/UpdateStackSetCommand.ts\n\n\n\nvar _UpdateStackSetCommand = class _UpdateStackSetCommand extends import_smithy_client.Command.classBuilder().ep(commonParams).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"UpdateStackSet\", {}).n(\"CloudFormationClient\", \"UpdateStackSetCommand\").f(void 0, void 0).ser(se_UpdateStackSetCommand).de(de_UpdateStackSetCommand).build() {\n};\n__name(_UpdateStackSetCommand, \"UpdateStackSetCommand\");\nvar UpdateStackSetCommand = _UpdateStackSetCommand;\n\n// src/commands/UpdateTerminationProtectionCommand.ts\n\n\n\nvar _UpdateTerminationProtectionCommand = class _UpdateTerminationProtectionCommand extends import_smithy_client.Command.classBuilder().ep(commonParams).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"UpdateTerminationProtection\", {}).n(\"CloudFormationClient\", \"UpdateTerminationProtectionCommand\").f(void 0, void 0).ser(se_UpdateTerminationProtectionCommand).de(de_UpdateTerminationProtectionCommand).build() {\n};\n__name(_UpdateTerminationProtectionCommand, \"UpdateTerminationProtectionCommand\");\nvar UpdateTerminationProtectionCommand = _UpdateTerminationProtectionCommand;\n\n// src/commands/ValidateTemplateCommand.ts\n\n\n\nvar _ValidateTemplateCommand = class _ValidateTemplateCommand extends import_smithy_client.Command.classBuilder().ep(commonParams).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"ValidateTemplate\", {}).n(\"CloudFormationClient\", \"ValidateTemplateCommand\").f(void 0, void 0).ser(se_ValidateTemplateCommand).de(de_ValidateTemplateCommand).build() {\n};\n__name(_ValidateTemplateCommand, \"ValidateTemplateCommand\");\nvar ValidateTemplateCommand = _ValidateTemplateCommand;\n\n// src/CloudFormation.ts\nvar commands = {\n ActivateOrganizationsAccessCommand,\n ActivateTypeCommand,\n BatchDescribeTypeConfigurationsCommand,\n CancelUpdateStackCommand,\n ContinueUpdateRollbackCommand,\n CreateChangeSetCommand,\n CreateGeneratedTemplateCommand,\n CreateStackCommand,\n CreateStackInstancesCommand,\n CreateStackSetCommand,\n DeactivateOrganizationsAccessCommand,\n DeactivateTypeCommand,\n DeleteChangeSetCommand,\n DeleteGeneratedTemplateCommand,\n DeleteStackCommand,\n DeleteStackInstancesCommand,\n DeleteStackSetCommand,\n DeregisterTypeCommand,\n DescribeAccountLimitsCommand,\n DescribeChangeSetCommand,\n DescribeChangeSetHooksCommand,\n DescribeGeneratedTemplateCommand,\n DescribeOrganizationsAccessCommand,\n DescribePublisherCommand,\n DescribeResourceScanCommand,\n DescribeStackDriftDetectionStatusCommand,\n DescribeStackEventsCommand,\n DescribeStackInstanceCommand,\n DescribeStackResourceCommand,\n DescribeStackResourceDriftsCommand,\n DescribeStackResourcesCommand,\n DescribeStacksCommand,\n DescribeStackSetCommand,\n DescribeStackSetOperationCommand,\n DescribeTypeCommand,\n DescribeTypeRegistrationCommand,\n DetectStackDriftCommand,\n DetectStackResourceDriftCommand,\n DetectStackSetDriftCommand,\n EstimateTemplateCostCommand,\n ExecuteChangeSetCommand,\n GetGeneratedTemplateCommand,\n GetStackPolicyCommand,\n GetTemplateCommand,\n GetTemplateSummaryCommand,\n ImportStacksToStackSetCommand,\n ListChangeSetsCommand,\n ListExportsCommand,\n ListGeneratedTemplatesCommand,\n ListImportsCommand,\n ListResourceScanRelatedResourcesCommand,\n ListResourceScanResourcesCommand,\n ListResourceScansCommand,\n ListStackInstanceResourceDriftsCommand,\n ListStackInstancesCommand,\n ListStackResourcesCommand,\n ListStacksCommand,\n ListStackSetAutoDeploymentTargetsCommand,\n ListStackSetOperationResultsCommand,\n ListStackSetOperationsCommand,\n ListStackSetsCommand,\n ListTypeRegistrationsCommand,\n ListTypesCommand,\n ListTypeVersionsCommand,\n PublishTypeCommand,\n RecordHandlerProgressCommand,\n RegisterPublisherCommand,\n RegisterTypeCommand,\n RollbackStackCommand,\n SetStackPolicyCommand,\n SetTypeConfigurationCommand,\n SetTypeDefaultVersionCommand,\n SignalResourceCommand,\n StartResourceScanCommand,\n StopStackSetOperationCommand,\n TestTypeCommand,\n UpdateGeneratedTemplateCommand,\n UpdateStackCommand,\n UpdateStackInstancesCommand,\n UpdateStackSetCommand,\n UpdateTerminationProtectionCommand,\n ValidateTemplateCommand\n};\nvar _CloudFormation = class _CloudFormation extends CloudFormationClient {\n};\n__name(_CloudFormation, \"CloudFormation\");\nvar CloudFormation = _CloudFormation;\n(0, import_smithy_client.createAggregatedClient)(commands, CloudFormation);\n\n// src/pagination/DescribeAccountLimitsPaginator.ts\n\nvar paginateDescribeAccountLimits = (0, import_core.createPaginator)(CloudFormationClient, DescribeAccountLimitsCommand, \"NextToken\", \"NextToken\", \"\");\n\n// src/pagination/DescribeStackEventsPaginator.ts\n\nvar paginateDescribeStackEvents = (0, import_core.createPaginator)(CloudFormationClient, DescribeStackEventsCommand, \"NextToken\", \"NextToken\", \"\");\n\n// src/pagination/DescribeStackResourceDriftsPaginator.ts\n\nvar paginateDescribeStackResourceDrifts = (0, import_core.createPaginator)(CloudFormationClient, DescribeStackResourceDriftsCommand, \"NextToken\", \"NextToken\", \"MaxResults\");\n\n// src/pagination/DescribeStacksPaginator.ts\n\nvar paginateDescribeStacks = (0, import_core.createPaginator)(CloudFormationClient, DescribeStacksCommand, \"NextToken\", \"NextToken\", \"\");\n\n// src/pagination/ListChangeSetsPaginator.ts\n\nvar paginateListChangeSets = (0, import_core.createPaginator)(CloudFormationClient, ListChangeSetsCommand, \"NextToken\", \"NextToken\", \"\");\n\n// src/pagination/ListExportsPaginator.ts\n\nvar paginateListExports = (0, import_core.createPaginator)(CloudFormationClient, ListExportsCommand, \"NextToken\", \"NextToken\", \"\");\n\n// src/pagination/ListGeneratedTemplatesPaginator.ts\n\nvar paginateListGeneratedTemplates = (0, import_core.createPaginator)(CloudFormationClient, ListGeneratedTemplatesCommand, \"NextToken\", \"NextToken\", \"MaxResults\");\n\n// src/pagination/ListImportsPaginator.ts\n\nvar paginateListImports = (0, import_core.createPaginator)(CloudFormationClient, ListImportsCommand, \"NextToken\", \"NextToken\", \"\");\n\n// src/pagination/ListResourceScanRelatedResourcesPaginator.ts\n\nvar paginateListResourceScanRelatedResources = (0, import_core.createPaginator)(CloudFormationClient, ListResourceScanRelatedResourcesCommand, \"NextToken\", \"NextToken\", \"MaxResults\");\n\n// src/pagination/ListResourceScanResourcesPaginator.ts\n\nvar paginateListResourceScanResources = (0, import_core.createPaginator)(CloudFormationClient, ListResourceScanResourcesCommand, \"NextToken\", \"NextToken\", \"MaxResults\");\n\n// src/pagination/ListResourceScansPaginator.ts\n\nvar paginateListResourceScans = (0, import_core.createPaginator)(CloudFormationClient, ListResourceScansCommand, \"NextToken\", \"NextToken\", \"MaxResults\");\n\n// src/pagination/ListStackInstancesPaginator.ts\n\nvar paginateListStackInstances = (0, import_core.createPaginator)(CloudFormationClient, ListStackInstancesCommand, \"NextToken\", \"NextToken\", \"MaxResults\");\n\n// src/pagination/ListStackResourcesPaginator.ts\n\nvar paginateListStackResources = (0, import_core.createPaginator)(CloudFormationClient, ListStackResourcesCommand, \"NextToken\", \"NextToken\", \"\");\n\n// src/pagination/ListStackSetOperationResultsPaginator.ts\n\nvar paginateListStackSetOperationResults = (0, import_core.createPaginator)(CloudFormationClient, ListStackSetOperationResultsCommand, \"NextToken\", \"NextToken\", \"MaxResults\");\n\n// src/pagination/ListStackSetOperationsPaginator.ts\n\nvar paginateListStackSetOperations = (0, import_core.createPaginator)(CloudFormationClient, ListStackSetOperationsCommand, \"NextToken\", \"NextToken\", \"MaxResults\");\n\n// src/pagination/ListStackSetsPaginator.ts\n\nvar paginateListStackSets = (0, import_core.createPaginator)(CloudFormationClient, ListStackSetsCommand, \"NextToken\", \"NextToken\", \"MaxResults\");\n\n// src/pagination/ListStacksPaginator.ts\n\nvar paginateListStacks = (0, import_core.createPaginator)(CloudFormationClient, ListStacksCommand, \"NextToken\", \"NextToken\", \"\");\n\n// src/pagination/ListTypeRegistrationsPaginator.ts\n\nvar paginateListTypeRegistrations = (0, import_core.createPaginator)(CloudFormationClient, ListTypeRegistrationsCommand, \"NextToken\", \"NextToken\", \"MaxResults\");\n\n// src/pagination/ListTypeVersionsPaginator.ts\n\nvar paginateListTypeVersions = (0, import_core.createPaginator)(CloudFormationClient, ListTypeVersionsCommand, \"NextToken\", \"NextToken\", \"MaxResults\");\n\n// src/pagination/ListTypesPaginator.ts\n\nvar paginateListTypes = (0, import_core.createPaginator)(CloudFormationClient, ListTypesCommand, \"NextToken\", \"NextToken\", \"MaxResults\");\n\n// src/waiters/waitForChangeSetCreateComplete.ts\nvar import_util_waiter = require(\"@smithy/util-waiter\");\nvar checkState = /* @__PURE__ */ __name(async (client, input) => {\n let reason;\n try {\n const result = await client.send(new DescribeChangeSetCommand(input));\n reason = result;\n try {\n const returnComparator = /* @__PURE__ */ __name(() => {\n return result.Status;\n }, \"returnComparator\");\n if (returnComparator() === \"CREATE_COMPLETE\") {\n return { state: import_util_waiter.WaiterState.SUCCESS, reason };\n }\n } catch (e) {\n }\n try {\n const returnComparator = /* @__PURE__ */ __name(() => {\n return result.Status;\n }, \"returnComparator\");\n if (returnComparator() === \"FAILED\") {\n return { state: import_util_waiter.WaiterState.FAILURE, reason };\n }\n } catch (e) {\n }\n } catch (exception) {\n reason = exception;\n if (exception.name && exception.name == \"ValidationError\") {\n return { state: import_util_waiter.WaiterState.FAILURE, reason };\n }\n }\n return { state: import_util_waiter.WaiterState.RETRY, reason };\n}, \"checkState\");\nvar waitForChangeSetCreateComplete = /* @__PURE__ */ __name(async (params, input) => {\n const serviceDefaults = { minDelay: 30, maxDelay: 120 };\n return (0, import_util_waiter.createWaiter)({ ...serviceDefaults, ...params }, input, checkState);\n}, \"waitForChangeSetCreateComplete\");\nvar waitUntilChangeSetCreateComplete = /* @__PURE__ */ __name(async (params, input) => {\n const serviceDefaults = { minDelay: 30, maxDelay: 120 };\n const result = await (0, import_util_waiter.createWaiter)({ ...serviceDefaults, ...params }, input, checkState);\n return (0, import_util_waiter.checkExceptions)(result);\n}, \"waitUntilChangeSetCreateComplete\");\n\n// src/waiters/waitForStackCreateComplete.ts\n\nvar checkState2 = /* @__PURE__ */ __name(async (client, input) => {\n let reason;\n try {\n const result = await client.send(new DescribeStacksCommand(input));\n reason = result;\n try {\n const returnComparator = /* @__PURE__ */ __name(() => {\n const flat_1 = [].concat(...result.Stacks);\n const projection_3 = flat_1.map((element_2) => {\n return element_2.StackStatus;\n });\n return projection_3;\n }, \"returnComparator\");\n let allStringEq_5 = returnComparator().length > 0;\n for (const element_4 of returnComparator()) {\n allStringEq_5 = allStringEq_5 && element_4 == \"CREATE_COMPLETE\";\n }\n if (allStringEq_5) {\n return { state: import_util_waiter.WaiterState.SUCCESS, reason };\n }\n } catch (e) {\n }\n try {\n const returnComparator = /* @__PURE__ */ __name(() => {\n const flat_1 = [].concat(...result.Stacks);\n const projection_3 = flat_1.map((element_2) => {\n return element_2.StackStatus;\n });\n return projection_3;\n }, \"returnComparator\");\n let allStringEq_5 = returnComparator().length > 0;\n for (const element_4 of returnComparator()) {\n allStringEq_5 = allStringEq_5 && element_4 == \"UPDATE_COMPLETE\";\n }\n if (allStringEq_5) {\n return { state: import_util_waiter.WaiterState.SUCCESS, reason };\n }\n } catch (e) {\n }\n try {\n const returnComparator = /* @__PURE__ */ __name(() => {\n const flat_1 = [].concat(...result.Stacks);\n const projection_3 = flat_1.map((element_2) => {\n return element_2.StackStatus;\n });\n return projection_3;\n }, \"returnComparator\");\n let allStringEq_5 = returnComparator().length > 0;\n for (const element_4 of returnComparator()) {\n allStringEq_5 = allStringEq_5 && element_4 == \"UPDATE_IN_PROGRESS\";\n }\n if (allStringEq_5) {\n return { state: import_util_waiter.WaiterState.SUCCESS, reason };\n }\n } catch (e) {\n }\n try {\n const returnComparator = /* @__PURE__ */ __name(() => {\n const flat_1 = [].concat(...result.Stacks);\n const projection_3 = flat_1.map((element_2) => {\n return element_2.StackStatus;\n });\n return projection_3;\n }, \"returnComparator\");\n let allStringEq_5 = returnComparator().length > 0;\n for (const element_4 of returnComparator()) {\n allStringEq_5 = allStringEq_5 && element_4 == \"UPDATE_COMPLETE_CLEANUP_IN_PROGRESS\";\n }\n if (allStringEq_5) {\n return { state: import_util_waiter.WaiterState.SUCCESS, reason };\n }\n } catch (e) {\n }\n try {\n const returnComparator = /* @__PURE__ */ __name(() => {\n const flat_1 = [].concat(...result.Stacks);\n const projection_3 = flat_1.map((element_2) => {\n return element_2.StackStatus;\n });\n return projection_3;\n }, \"returnComparator\");\n let allStringEq_5 = returnComparator().length > 0;\n for (const element_4 of returnComparator()) {\n allStringEq_5 = allStringEq_5 && element_4 == \"UPDATE_FAILED\";\n }\n if (allStringEq_5) {\n return { state: import_util_waiter.WaiterState.SUCCESS, reason };\n }\n } catch (e) {\n }\n try {\n const returnComparator = /* @__PURE__ */ __name(() => {\n const flat_1 = [].concat(...result.Stacks);\n const projection_3 = flat_1.map((element_2) => {\n return element_2.StackStatus;\n });\n return projection_3;\n }, \"returnComparator\");\n let allStringEq_5 = returnComparator().length > 0;\n for (const element_4 of returnComparator()) {\n allStringEq_5 = allStringEq_5 && element_4 == \"UPDATE_ROLLBACK_IN_PROGRESS\";\n }\n if (allStringEq_5) {\n return { state: import_util_waiter.WaiterState.SUCCESS, reason };\n }\n } catch (e) {\n }\n try {\n const returnComparator = /* @__PURE__ */ __name(() => {\n const flat_1 = [].concat(...result.Stacks);\n const projection_3 = flat_1.map((element_2) => {\n return element_2.StackStatus;\n });\n return projection_3;\n }, \"returnComparator\");\n let allStringEq_5 = returnComparator().length > 0;\n for (const element_4 of returnComparator()) {\n allStringEq_5 = allStringEq_5 && element_4 == \"UPDATE_ROLLBACK_FAILED\";\n }\n if (allStringEq_5) {\n return { state: import_util_waiter.WaiterState.SUCCESS, reason };\n }\n } catch (e) {\n }\n try {\n const returnComparator = /* @__PURE__ */ __name(() => {\n const flat_1 = [].concat(...result.Stacks);\n const projection_3 = flat_1.map((element_2) => {\n return element_2.StackStatus;\n });\n return projection_3;\n }, \"returnComparator\");\n let allStringEq_5 = returnComparator().length > 0;\n for (const element_4 of returnComparator()) {\n allStringEq_5 = allStringEq_5 && element_4 == \"UPDATE_ROLLBACK_COMPLETE_CLEANUP_IN_PROGRESS\";\n }\n if (allStringEq_5) {\n return { state: import_util_waiter.WaiterState.SUCCESS, reason };\n }\n } catch (e) {\n }\n try {\n const returnComparator = /* @__PURE__ */ __name(() => {\n const flat_1 = [].concat(...result.Stacks);\n const projection_3 = flat_1.map((element_2) => {\n return element_2.StackStatus;\n });\n return projection_3;\n }, \"returnComparator\");\n let allStringEq_5 = returnComparator().length > 0;\n for (const element_4 of returnComparator()) {\n allStringEq_5 = allStringEq_5 && element_4 == \"UPDATE_ROLLBACK_COMPLETE\";\n }\n if (allStringEq_5) {\n return { state: import_util_waiter.WaiterState.SUCCESS, reason };\n }\n } catch (e) {\n }\n try {\n const returnComparator = /* @__PURE__ */ __name(() => {\n const flat_1 = [].concat(...result.Stacks);\n const projection_3 = flat_1.map((element_2) => {\n return element_2.StackStatus;\n });\n return projection_3;\n }, \"returnComparator\");\n for (const anyStringEq_4 of returnComparator()) {\n if (anyStringEq_4 == \"CREATE_FAILED\") {\n return { state: import_util_waiter.WaiterState.FAILURE, reason };\n }\n }\n } catch (e) {\n }\n try {\n const returnComparator = /* @__PURE__ */ __name(() => {\n const flat_1 = [].concat(...result.Stacks);\n const projection_3 = flat_1.map((element_2) => {\n return element_2.StackStatus;\n });\n return projection_3;\n }, \"returnComparator\");\n for (const anyStringEq_4 of returnComparator()) {\n if (anyStringEq_4 == \"DELETE_COMPLETE\") {\n return { state: import_util_waiter.WaiterState.FAILURE, reason };\n }\n }\n } catch (e) {\n }\n try {\n const returnComparator = /* @__PURE__ */ __name(() => {\n const flat_1 = [].concat(...result.Stacks);\n const projection_3 = flat_1.map((element_2) => {\n return element_2.StackStatus;\n });\n return projection_3;\n }, \"returnComparator\");\n for (const anyStringEq_4 of returnComparator()) {\n if (anyStringEq_4 == \"DELETE_FAILED\") {\n return { state: import_util_waiter.WaiterState.FAILURE, reason };\n }\n }\n } catch (e) {\n }\n try {\n const returnComparator = /* @__PURE__ */ __name(() => {\n const flat_1 = [].concat(...result.Stacks);\n const projection_3 = flat_1.map((element_2) => {\n return element_2.StackStatus;\n });\n return projection_3;\n }, \"returnComparator\");\n for (const anyStringEq_4 of returnComparator()) {\n if (anyStringEq_4 == \"ROLLBACK_FAILED\") {\n return { state: import_util_waiter.WaiterState.FAILURE, reason };\n }\n }\n } catch (e) {\n }\n try {\n const returnComparator = /* @__PURE__ */ __name(() => {\n const flat_1 = [].concat(...result.Stacks);\n const projection_3 = flat_1.map((element_2) => {\n return element_2.StackStatus;\n });\n return projection_3;\n }, \"returnComparator\");\n for (const anyStringEq_4 of returnComparator()) {\n if (anyStringEq_4 == \"ROLLBACK_COMPLETE\") {\n return { state: import_util_waiter.WaiterState.FAILURE, reason };\n }\n }\n } catch (e) {\n }\n } catch (exception) {\n reason = exception;\n if (exception.name && exception.name == \"ValidationError\") {\n return { state: import_util_waiter.WaiterState.FAILURE, reason };\n }\n }\n return { state: import_util_waiter.WaiterState.RETRY, reason };\n}, \"checkState\");\nvar waitForStackCreateComplete = /* @__PURE__ */ __name(async (params, input) => {\n const serviceDefaults = { minDelay: 30, maxDelay: 120 };\n return (0, import_util_waiter.createWaiter)({ ...serviceDefaults, ...params }, input, checkState2);\n}, \"waitForStackCreateComplete\");\nvar waitUntilStackCreateComplete = /* @__PURE__ */ __name(async (params, input) => {\n const serviceDefaults = { minDelay: 30, maxDelay: 120 };\n const result = await (0, import_util_waiter.createWaiter)({ ...serviceDefaults, ...params }, input, checkState2);\n return (0, import_util_waiter.checkExceptions)(result);\n}, \"waitUntilStackCreateComplete\");\n\n// src/waiters/waitForStackDeleteComplete.ts\n\nvar checkState3 = /* @__PURE__ */ __name(async (client, input) => {\n let reason;\n try {\n const result = await client.send(new DescribeStacksCommand(input));\n reason = result;\n try {\n const returnComparator = /* @__PURE__ */ __name(() => {\n const flat_1 = [].concat(...result.Stacks);\n const projection_3 = flat_1.map((element_2) => {\n return element_2.StackStatus;\n });\n return projection_3;\n }, \"returnComparator\");\n let allStringEq_5 = returnComparator().length > 0;\n for (const element_4 of returnComparator()) {\n allStringEq_5 = allStringEq_5 && element_4 == \"DELETE_COMPLETE\";\n }\n if (allStringEq_5) {\n return { state: import_util_waiter.WaiterState.SUCCESS, reason };\n }\n } catch (e) {\n }\n try {\n const returnComparator = /* @__PURE__ */ __name(() => {\n const flat_1 = [].concat(...result.Stacks);\n const projection_3 = flat_1.map((element_2) => {\n return element_2.StackStatus;\n });\n return projection_3;\n }, \"returnComparator\");\n for (const anyStringEq_4 of returnComparator()) {\n if (anyStringEq_4 == \"DELETE_FAILED\") {\n return { state: import_util_waiter.WaiterState.FAILURE, reason };\n }\n }\n } catch (e) {\n }\n try {\n const returnComparator = /* @__PURE__ */ __name(() => {\n const flat_1 = [].concat(...result.Stacks);\n const projection_3 = flat_1.map((element_2) => {\n return element_2.StackStatus;\n });\n return projection_3;\n }, \"returnComparator\");\n for (const anyStringEq_4 of returnComparator()) {\n if (anyStringEq_4 == \"CREATE_FAILED\") {\n return { state: import_util_waiter.WaiterState.FAILURE, reason };\n }\n }\n } catch (e) {\n }\n try {\n const returnComparator = /* @__PURE__ */ __name(() => {\n const flat_1 = [].concat(...result.Stacks);\n const projection_3 = flat_1.map((element_2) => {\n return element_2.StackStatus;\n });\n return projection_3;\n }, \"returnComparator\");\n for (const anyStringEq_4 of returnComparator()) {\n if (anyStringEq_4 == \"ROLLBACK_FAILED\") {\n return { state: import_util_waiter.WaiterState.FAILURE, reason };\n }\n }\n } catch (e) {\n }\n try {\n const returnComparator = /* @__PURE__ */ __name(() => {\n const flat_1 = [].concat(...result.Stacks);\n const projection_3 = flat_1.map((element_2) => {\n return element_2.StackStatus;\n });\n return projection_3;\n }, \"returnComparator\");\n for (const anyStringEq_4 of returnComparator()) {\n if (anyStringEq_4 == \"UPDATE_ROLLBACK_IN_PROGRESS\") {\n return { state: import_util_waiter.WaiterState.FAILURE, reason };\n }\n }\n } catch (e) {\n }\n try {\n const returnComparator = /* @__PURE__ */ __name(() => {\n const flat_1 = [].concat(...result.Stacks);\n const projection_3 = flat_1.map((element_2) => {\n return element_2.StackStatus;\n });\n return projection_3;\n }, \"returnComparator\");\n for (const anyStringEq_4 of returnComparator()) {\n if (anyStringEq_4 == \"UPDATE_ROLLBACK_FAILED\") {\n return { state: import_util_waiter.WaiterState.FAILURE, reason };\n }\n }\n } catch (e) {\n }\n try {\n const returnComparator = /* @__PURE__ */ __name(() => {\n const flat_1 = [].concat(...result.Stacks);\n const projection_3 = flat_1.map((element_2) => {\n return element_2.StackStatus;\n });\n return projection_3;\n }, \"returnComparator\");\n for (const anyStringEq_4 of returnComparator()) {\n if (anyStringEq_4 == \"UPDATE_ROLLBACK_COMPLETE\") {\n return { state: import_util_waiter.WaiterState.FAILURE, reason };\n }\n }\n } catch (e) {\n }\n try {\n const returnComparator = /* @__PURE__ */ __name(() => {\n const flat_1 = [].concat(...result.Stacks);\n const projection_3 = flat_1.map((element_2) => {\n return element_2.StackStatus;\n });\n return projection_3;\n }, \"returnComparator\");\n for (const anyStringEq_4 of returnComparator()) {\n if (anyStringEq_4 == \"UPDATE_COMPLETE\") {\n return { state: import_util_waiter.WaiterState.FAILURE, reason };\n }\n }\n } catch (e) {\n }\n } catch (exception) {\n reason = exception;\n if (exception.name && exception.name == \"ValidationError\") {\n return { state: import_util_waiter.WaiterState.SUCCESS, reason };\n }\n }\n return { state: import_util_waiter.WaiterState.RETRY, reason };\n}, \"checkState\");\nvar waitForStackDeleteComplete = /* @__PURE__ */ __name(async (params, input) => {\n const serviceDefaults = { minDelay: 30, maxDelay: 120 };\n return (0, import_util_waiter.createWaiter)({ ...serviceDefaults, ...params }, input, checkState3);\n}, \"waitForStackDeleteComplete\");\nvar waitUntilStackDeleteComplete = /* @__PURE__ */ __name(async (params, input) => {\n const serviceDefaults = { minDelay: 30, maxDelay: 120 };\n const result = await (0, import_util_waiter.createWaiter)({ ...serviceDefaults, ...params }, input, checkState3);\n return (0, import_util_waiter.checkExceptions)(result);\n}, \"waitUntilStackDeleteComplete\");\n\n// src/waiters/waitForStackExists.ts\n\nvar checkState4 = /* @__PURE__ */ __name(async (client, input) => {\n let reason;\n try {\n const result = await client.send(new DescribeStacksCommand(input));\n reason = result;\n return { state: import_util_waiter.WaiterState.SUCCESS, reason };\n } catch (exception) {\n reason = exception;\n if (exception.name && exception.name == \"ValidationError\") {\n return { state: import_util_waiter.WaiterState.RETRY, reason };\n }\n }\n return { state: import_util_waiter.WaiterState.RETRY, reason };\n}, \"checkState\");\nvar waitForStackExists = /* @__PURE__ */ __name(async (params, input) => {\n const serviceDefaults = { minDelay: 5, maxDelay: 120 };\n return (0, import_util_waiter.createWaiter)({ ...serviceDefaults, ...params }, input, checkState4);\n}, \"waitForStackExists\");\nvar waitUntilStackExists = /* @__PURE__ */ __name(async (params, input) => {\n const serviceDefaults = { minDelay: 5, maxDelay: 120 };\n const result = await (0, import_util_waiter.createWaiter)({ ...serviceDefaults, ...params }, input, checkState4);\n return (0, import_util_waiter.checkExceptions)(result);\n}, \"waitUntilStackExists\");\n\n// src/waiters/waitForStackImportComplete.ts\n\nvar checkState5 = /* @__PURE__ */ __name(async (client, input) => {\n let reason;\n try {\n const result = await client.send(new DescribeStacksCommand(input));\n reason = result;\n try {\n const returnComparator = /* @__PURE__ */ __name(() => {\n const flat_1 = [].concat(...result.Stacks);\n const projection_3 = flat_1.map((element_2) => {\n return element_2.StackStatus;\n });\n return projection_3;\n }, \"returnComparator\");\n let allStringEq_5 = returnComparator().length > 0;\n for (const element_4 of returnComparator()) {\n allStringEq_5 = allStringEq_5 && element_4 == \"IMPORT_COMPLETE\";\n }\n if (allStringEq_5) {\n return { state: import_util_waiter.WaiterState.SUCCESS, reason };\n }\n } catch (e) {\n }\n try {\n const returnComparator = /* @__PURE__ */ __name(() => {\n const flat_1 = [].concat(...result.Stacks);\n const projection_3 = flat_1.map((element_2) => {\n return element_2.StackStatus;\n });\n return projection_3;\n }, \"returnComparator\");\n for (const anyStringEq_4 of returnComparator()) {\n if (anyStringEq_4 == \"ROLLBACK_COMPLETE\") {\n return { state: import_util_waiter.WaiterState.FAILURE, reason };\n }\n }\n } catch (e) {\n }\n try {\n const returnComparator = /* @__PURE__ */ __name(() => {\n const flat_1 = [].concat(...result.Stacks);\n const projection_3 = flat_1.map((element_2) => {\n return element_2.StackStatus;\n });\n return projection_3;\n }, \"returnComparator\");\n for (const anyStringEq_4 of returnComparator()) {\n if (anyStringEq_4 == \"ROLLBACK_FAILED\") {\n return { state: import_util_waiter.WaiterState.FAILURE, reason };\n }\n }\n } catch (e) {\n }\n try {\n const returnComparator = /* @__PURE__ */ __name(() => {\n const flat_1 = [].concat(...result.Stacks);\n const projection_3 = flat_1.map((element_2) => {\n return element_2.StackStatus;\n });\n return projection_3;\n }, \"returnComparator\");\n for (const anyStringEq_4 of returnComparator()) {\n if (anyStringEq_4 == \"IMPORT_ROLLBACK_IN_PROGRESS\") {\n return { state: import_util_waiter.WaiterState.FAILURE, reason };\n }\n }\n } catch (e) {\n }\n try {\n const returnComparator = /* @__PURE__ */ __name(() => {\n const flat_1 = [].concat(...result.Stacks);\n const projection_3 = flat_1.map((element_2) => {\n return element_2.StackStatus;\n });\n return projection_3;\n }, \"returnComparator\");\n for (const anyStringEq_4 of returnComparator()) {\n if (anyStringEq_4 == \"IMPORT_ROLLBACK_FAILED\") {\n return { state: import_util_waiter.WaiterState.FAILURE, reason };\n }\n }\n } catch (e) {\n }\n try {\n const returnComparator = /* @__PURE__ */ __name(() => {\n const flat_1 = [].concat(...result.Stacks);\n const projection_3 = flat_1.map((element_2) => {\n return element_2.StackStatus;\n });\n return projection_3;\n }, \"returnComparator\");\n for (const anyStringEq_4 of returnComparator()) {\n if (anyStringEq_4 == \"IMPORT_ROLLBACK_COMPLETE\") {\n return { state: import_util_waiter.WaiterState.FAILURE, reason };\n }\n }\n } catch (e) {\n }\n } catch (exception) {\n reason = exception;\n if (exception.name && exception.name == \"ValidationError\") {\n return { state: import_util_waiter.WaiterState.FAILURE, reason };\n }\n }\n return { state: import_util_waiter.WaiterState.RETRY, reason };\n}, \"checkState\");\nvar waitForStackImportComplete = /* @__PURE__ */ __name(async (params, input) => {\n const serviceDefaults = { minDelay: 30, maxDelay: 120 };\n return (0, import_util_waiter.createWaiter)({ ...serviceDefaults, ...params }, input, checkState5);\n}, \"waitForStackImportComplete\");\nvar waitUntilStackImportComplete = /* @__PURE__ */ __name(async (params, input) => {\n const serviceDefaults = { minDelay: 30, maxDelay: 120 };\n const result = await (0, import_util_waiter.createWaiter)({ ...serviceDefaults, ...params }, input, checkState5);\n return (0, import_util_waiter.checkExceptions)(result);\n}, \"waitUntilStackImportComplete\");\n\n// src/waiters/waitForStackRollbackComplete.ts\n\nvar checkState6 = /* @__PURE__ */ __name(async (client, input) => {\n let reason;\n try {\n const result = await client.send(new DescribeStacksCommand(input));\n reason = result;\n try {\n const returnComparator = /* @__PURE__ */ __name(() => {\n const flat_1 = [].concat(...result.Stacks);\n const projection_3 = flat_1.map((element_2) => {\n return element_2.StackStatus;\n });\n return projection_3;\n }, \"returnComparator\");\n let allStringEq_5 = returnComparator().length > 0;\n for (const element_4 of returnComparator()) {\n allStringEq_5 = allStringEq_5 && element_4 == \"UPDATE_ROLLBACK_COMPLETE\";\n }\n if (allStringEq_5) {\n return { state: import_util_waiter.WaiterState.SUCCESS, reason };\n }\n } catch (e) {\n }\n try {\n const returnComparator = /* @__PURE__ */ __name(() => {\n const flat_1 = [].concat(...result.Stacks);\n const projection_3 = flat_1.map((element_2) => {\n return element_2.StackStatus;\n });\n return projection_3;\n }, \"returnComparator\");\n for (const anyStringEq_4 of returnComparator()) {\n if (anyStringEq_4 == \"UPDATE_FAILED\") {\n return { state: import_util_waiter.WaiterState.FAILURE, reason };\n }\n }\n } catch (e) {\n }\n try {\n const returnComparator = /* @__PURE__ */ __name(() => {\n const flat_1 = [].concat(...result.Stacks);\n const projection_3 = flat_1.map((element_2) => {\n return element_2.StackStatus;\n });\n return projection_3;\n }, \"returnComparator\");\n for (const anyStringEq_4 of returnComparator()) {\n if (anyStringEq_4 == \"UPDATE_ROLLBACK_FAILED\") {\n return { state: import_util_waiter.WaiterState.FAILURE, reason };\n }\n }\n } catch (e) {\n }\n try {\n const returnComparator = /* @__PURE__ */ __name(() => {\n const flat_1 = [].concat(...result.Stacks);\n const projection_3 = flat_1.map((element_2) => {\n return element_2.StackStatus;\n });\n return projection_3;\n }, \"returnComparator\");\n for (const anyStringEq_4 of returnComparator()) {\n if (anyStringEq_4 == \"DELETE_FAILED\") {\n return { state: import_util_waiter.WaiterState.FAILURE, reason };\n }\n }\n } catch (e) {\n }\n } catch (exception) {\n reason = exception;\n if (exception.name && exception.name == \"ValidationError\") {\n return { state: import_util_waiter.WaiterState.FAILURE, reason };\n }\n }\n return { state: import_util_waiter.WaiterState.RETRY, reason };\n}, \"checkState\");\nvar waitForStackRollbackComplete = /* @__PURE__ */ __name(async (params, input) => {\n const serviceDefaults = { minDelay: 30, maxDelay: 120 };\n return (0, import_util_waiter.createWaiter)({ ...serviceDefaults, ...params }, input, checkState6);\n}, \"waitForStackRollbackComplete\");\nvar waitUntilStackRollbackComplete = /* @__PURE__ */ __name(async (params, input) => {\n const serviceDefaults = { minDelay: 30, maxDelay: 120 };\n const result = await (0, import_util_waiter.createWaiter)({ ...serviceDefaults, ...params }, input, checkState6);\n return (0, import_util_waiter.checkExceptions)(result);\n}, \"waitUntilStackRollbackComplete\");\n\n// src/waiters/waitForStackUpdateComplete.ts\n\nvar checkState7 = /* @__PURE__ */ __name(async (client, input) => {\n let reason;\n try {\n const result = await client.send(new DescribeStacksCommand(input));\n reason = result;\n try {\n const returnComparator = /* @__PURE__ */ __name(() => {\n const flat_1 = [].concat(...result.Stacks);\n const projection_3 = flat_1.map((element_2) => {\n return element_2.StackStatus;\n });\n return projection_3;\n }, \"returnComparator\");\n let allStringEq_5 = returnComparator().length > 0;\n for (const element_4 of returnComparator()) {\n allStringEq_5 = allStringEq_5 && element_4 == \"UPDATE_COMPLETE\";\n }\n if (allStringEq_5) {\n return { state: import_util_waiter.WaiterState.SUCCESS, reason };\n }\n } catch (e) {\n }\n try {\n const returnComparator = /* @__PURE__ */ __name(() => {\n const flat_1 = [].concat(...result.Stacks);\n const projection_3 = flat_1.map((element_2) => {\n return element_2.StackStatus;\n });\n return projection_3;\n }, \"returnComparator\");\n for (const anyStringEq_4 of returnComparator()) {\n if (anyStringEq_4 == \"UPDATE_FAILED\") {\n return { state: import_util_waiter.WaiterState.FAILURE, reason };\n }\n }\n } catch (e) {\n }\n try {\n const returnComparator = /* @__PURE__ */ __name(() => {\n const flat_1 = [].concat(...result.Stacks);\n const projection_3 = flat_1.map((element_2) => {\n return element_2.StackStatus;\n });\n return projection_3;\n }, \"returnComparator\");\n for (const anyStringEq_4 of returnComparator()) {\n if (anyStringEq_4 == \"UPDATE_ROLLBACK_FAILED\") {\n return { state: import_util_waiter.WaiterState.FAILURE, reason };\n }\n }\n } catch (e) {\n }\n try {\n const returnComparator = /* @__PURE__ */ __name(() => {\n const flat_1 = [].concat(...result.Stacks);\n const projection_3 = flat_1.map((element_2) => {\n return element_2.StackStatus;\n });\n return projection_3;\n }, \"returnComparator\");\n for (const anyStringEq_4 of returnComparator()) {\n if (anyStringEq_4 == \"UPDATE_ROLLBACK_COMPLETE\") {\n return { state: import_util_waiter.WaiterState.FAILURE, reason };\n }\n }\n } catch (e) {\n }\n } catch (exception) {\n reason = exception;\n if (exception.name && exception.name == \"ValidationError\") {\n return { state: import_util_waiter.WaiterState.FAILURE, reason };\n }\n }\n return { state: import_util_waiter.WaiterState.RETRY, reason };\n}, \"checkState\");\nvar waitForStackUpdateComplete = /* @__PURE__ */ __name(async (params, input) => {\n const serviceDefaults = { minDelay: 30, maxDelay: 120 };\n return (0, import_util_waiter.createWaiter)({ ...serviceDefaults, ...params }, input, checkState7);\n}, \"waitForStackUpdateComplete\");\nvar waitUntilStackUpdateComplete = /* @__PURE__ */ __name(async (params, input) => {\n const serviceDefaults = { minDelay: 30, maxDelay: 120 };\n const result = await (0, import_util_waiter.createWaiter)({ ...serviceDefaults, ...params }, input, checkState7);\n return (0, import_util_waiter.checkExceptions)(result);\n}, \"waitUntilStackUpdateComplete\");\n\n// src/waiters/waitForTypeRegistrationComplete.ts\n\nvar checkState8 = /* @__PURE__ */ __name(async (client, input) => {\n let reason;\n try {\n const result = await client.send(new DescribeTypeRegistrationCommand(input));\n reason = result;\n try {\n const returnComparator = /* @__PURE__ */ __name(() => {\n return result.ProgressStatus;\n }, \"returnComparator\");\n if (returnComparator() === \"COMPLETE\") {\n return { state: import_util_waiter.WaiterState.SUCCESS, reason };\n }\n } catch (e) {\n }\n try {\n const returnComparator = /* @__PURE__ */ __name(() => {\n return result.ProgressStatus;\n }, \"returnComparator\");\n if (returnComparator() === \"FAILED\") {\n return { state: import_util_waiter.WaiterState.FAILURE, reason };\n }\n } catch (e) {\n }\n } catch (exception) {\n reason = exception;\n }\n return { state: import_util_waiter.WaiterState.RETRY, reason };\n}, \"checkState\");\nvar waitForTypeRegistrationComplete = /* @__PURE__ */ __name(async (params, input) => {\n const serviceDefaults = { minDelay: 30, maxDelay: 120 };\n return (0, import_util_waiter.createWaiter)({ ...serviceDefaults, ...params }, input, checkState8);\n}, \"waitForTypeRegistrationComplete\");\nvar waitUntilTypeRegistrationComplete = /* @__PURE__ */ __name(async (params, input) => {\n const serviceDefaults = { minDelay: 30, maxDelay: 120 };\n const result = await (0, import_util_waiter.createWaiter)({ ...serviceDefaults, ...params }, input, checkState8);\n return (0, import_util_waiter.checkExceptions)(result);\n}, \"waitUntilTypeRegistrationComplete\");\n// Annotate the CommonJS export names for ESM import in node:\n\n0 && (module.exports = {\n CloudFormationServiceException,\n __Client,\n CloudFormationClient,\n CloudFormation,\n $Command,\n ActivateOrganizationsAccessCommand,\n ActivateTypeCommand,\n BatchDescribeTypeConfigurationsCommand,\n CancelUpdateStackCommand,\n ContinueUpdateRollbackCommand,\n CreateChangeSetCommand,\n CreateGeneratedTemplateCommand,\n CreateStackCommand,\n CreateStackInstancesCommand,\n CreateStackSetCommand,\n DeactivateOrganizationsAccessCommand,\n DeactivateTypeCommand,\n DeleteChangeSetCommand,\n DeleteGeneratedTemplateCommand,\n DeleteStackCommand,\n DeleteStackInstancesCommand,\n DeleteStackSetCommand,\n DeregisterTypeCommand,\n DescribeAccountLimitsCommand,\n DescribeChangeSetCommand,\n DescribeChangeSetHooksCommand,\n DescribeGeneratedTemplateCommand,\n DescribeOrganizationsAccessCommand,\n DescribePublisherCommand,\n DescribeResourceScanCommand,\n DescribeStackDriftDetectionStatusCommand,\n DescribeStackEventsCommand,\n DescribeStackInstanceCommand,\n DescribeStackResourceCommand,\n DescribeStackResourceDriftsCommand,\n DescribeStackResourcesCommand,\n DescribeStackSetCommand,\n DescribeStackSetOperationCommand,\n DescribeStacksCommand,\n DescribeTypeCommand,\n DescribeTypeRegistrationCommand,\n DetectStackDriftCommand,\n DetectStackResourceDriftCommand,\n DetectStackSetDriftCommand,\n EstimateTemplateCostCommand,\n ExecuteChangeSetCommand,\n GetGeneratedTemplateCommand,\n GetStackPolicyCommand,\n GetTemplateCommand,\n GetTemplateSummaryCommand,\n ImportStacksToStackSetCommand,\n ListChangeSetsCommand,\n ListExportsCommand,\n ListGeneratedTemplatesCommand,\n ListImportsCommand,\n ListResourceScanRelatedResourcesCommand,\n ListResourceScanResourcesCommand,\n ListResourceScansCommand,\n ListStackInstanceResourceDriftsCommand,\n ListStackInstancesCommand,\n ListStackResourcesCommand,\n ListStackSetAutoDeploymentTargetsCommand,\n ListStackSetOperationResultsCommand,\n ListStackSetOperationsCommand,\n ListStackSetsCommand,\n ListStacksCommand,\n ListTypeRegistrationsCommand,\n ListTypeVersionsCommand,\n ListTypesCommand,\n PublishTypeCommand,\n RecordHandlerProgressCommand,\n RegisterPublisherCommand,\n RegisterTypeCommand,\n RollbackStackCommand,\n SetStackPolicyCommand,\n SetTypeConfigurationCommand,\n SetTypeDefaultVersionCommand,\n SignalResourceCommand,\n StartResourceScanCommand,\n StopStackSetOperationCommand,\n TestTypeCommand,\n UpdateGeneratedTemplateCommand,\n UpdateStackCommand,\n UpdateStackInstancesCommand,\n UpdateStackSetCommand,\n UpdateTerminationProtectionCommand,\n ValidateTemplateCommand,\n paginateDescribeAccountLimits,\n paginateDescribeStackEvents,\n paginateDescribeStackResourceDrifts,\n paginateDescribeStacks,\n paginateListChangeSets,\n paginateListExports,\n paginateListGeneratedTemplates,\n paginateListImports,\n paginateListResourceScanRelatedResources,\n paginateListResourceScanResources,\n paginateListResourceScans,\n paginateListStackInstances,\n paginateListStackResources,\n paginateListStackSetOperationResults,\n paginateListStackSetOperations,\n paginateListStackSets,\n paginateListStacks,\n paginateListTypeRegistrations,\n paginateListTypeVersions,\n paginateListTypes,\n waitForChangeSetCreateComplete,\n waitUntilChangeSetCreateComplete,\n waitForStackCreateComplete,\n waitUntilStackCreateComplete,\n waitForStackDeleteComplete,\n waitUntilStackDeleteComplete,\n waitForStackExists,\n waitUntilStackExists,\n waitForStackImportComplete,\n waitUntilStackImportComplete,\n waitForStackRollbackComplete,\n waitUntilStackRollbackComplete,\n waitForStackUpdateComplete,\n waitUntilStackUpdateComplete,\n waitForTypeRegistrationComplete,\n waitUntilTypeRegistrationComplete,\n AccountFilterType,\n AccountGateStatus,\n InvalidOperationException,\n OperationNotFoundException,\n ThirdPartyType,\n VersionBump,\n CFNRegistryException,\n TypeNotFoundException,\n AlreadyExistsException,\n AttributeChangeType,\n TypeConfigurationNotFoundException,\n CallAs,\n TokenAlreadyExistsException,\n Capability,\n Category,\n ChangeAction,\n ChangeSource,\n EvaluationType,\n ResourceAttribute,\n RequiresRecreation,\n PolicyAction,\n Replacement,\n ChangeType,\n HookFailureMode,\n HookInvocationPoint,\n HookTargetType,\n ChangeSetHooksStatus,\n ChangeSetNotFoundException,\n ChangeSetStatus,\n ExecutionStatus,\n ChangeSetType,\n OnStackFailure,\n InsufficientCapabilitiesException,\n LimitExceededException,\n ConcurrentResourcesLimitExceededException,\n GeneratedTemplateDeletionPolicy,\n GeneratedTemplateUpdateReplacePolicy,\n OnFailure,\n ConcurrencyMode,\n RegionConcurrencyType,\n OperationIdAlreadyExistsException,\n OperationInProgressException,\n StackSetNotFoundException,\n StaleRequestException,\n CreatedButModifiedException,\n PermissionModels,\n NameAlreadyExistsException,\n InvalidChangeSetStatusException,\n GeneratedTemplateNotFoundException,\n DeletionMode,\n StackSetNotEmptyException,\n RegistryType,\n GeneratedTemplateResourceStatus,\n WarningType,\n GeneratedTemplateStatus,\n OrganizationStatus,\n IdentityProvider,\n PublisherStatus,\n ResourceScanStatus,\n ResourceScanNotFoundException,\n StackDriftDetectionStatus,\n StackDriftStatus,\n DetailedStatus,\n HookStatus,\n ResourceStatus,\n StackInstanceDetailedStatus,\n StackInstanceStatus,\n StackInstanceNotFoundException,\n StackResourceDriftStatus,\n DifferenceType,\n StackStatus,\n StackSetDriftDetectionStatus,\n StackSetDriftStatus,\n StackSetStatus,\n StackSetOperationAction,\n StackSetOperationStatus,\n DeprecatedStatus,\n ProvisioningType,\n TypeTestsStatus,\n Visibility,\n RegistrationStatus,\n TemplateFormat,\n TemplateStage,\n StackNotFoundException,\n ResourceScanInProgressException,\n StackInstanceFilterName,\n OperationResultFilterName,\n StackSetOperationResultStatus,\n InvalidStateTransitionException,\n OperationStatusCheckFailedException,\n OperationStatus,\n HandlerErrorCode,\n ResourceSignalStatus,\n ResourceScanLimitExceededException\n});\n\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getRuntimeConfig = void 0;\nconst tslib_1 = require(\"tslib\");\nconst package_json_1 = tslib_1.__importDefault(require(\"../package.json\"));\nconst core_1 = require(\"@aws-sdk/core\");\nconst credential_provider_node_1 = require(\"@aws-sdk/credential-provider-node\");\nconst util_user_agent_node_1 = require(\"@aws-sdk/util-user-agent-node\");\nconst config_resolver_1 = require(\"@smithy/config-resolver\");\nconst hash_node_1 = require(\"@smithy/hash-node\");\nconst middleware_retry_1 = require(\"@smithy/middleware-retry\");\nconst node_config_provider_1 = require(\"@smithy/node-config-provider\");\nconst node_http_handler_1 = require(\"@smithy/node-http-handler\");\nconst util_body_length_node_1 = require(\"@smithy/util-body-length-node\");\nconst util_retry_1 = require(\"@smithy/util-retry\");\nconst runtimeConfig_shared_1 = require(\"./runtimeConfig.shared\");\nconst smithy_client_1 = require(\"@smithy/smithy-client\");\nconst util_defaults_mode_node_1 = require(\"@smithy/util-defaults-mode-node\");\nconst smithy_client_2 = require(\"@smithy/smithy-client\");\nconst getRuntimeConfig = (config) => {\n (0, smithy_client_2.emitWarningIfUnsupportedVersion)(process.version);\n const defaultsMode = (0, util_defaults_mode_node_1.resolveDefaultsModeConfig)(config);\n const defaultConfigProvider = () => defaultsMode().then(smithy_client_1.loadConfigsForDefaultMode);\n const clientSharedValues = (0, runtimeConfig_shared_1.getRuntimeConfig)(config);\n (0, core_1.emitWarningIfUnsupportedVersion)(process.version);\n return {\n ...clientSharedValues,\n ...config,\n runtime: \"node\",\n defaultsMode,\n bodyLengthChecker: config?.bodyLengthChecker ?? util_body_length_node_1.calculateBodyLength,\n credentialDefaultProvider: config?.credentialDefaultProvider ?? credential_provider_node_1.defaultProvider,\n defaultUserAgentProvider: config?.defaultUserAgentProvider ??\n (0, util_user_agent_node_1.defaultUserAgent)({ serviceId: clientSharedValues.serviceId, clientVersion: package_json_1.default.version }),\n maxAttempts: config?.maxAttempts ?? (0, node_config_provider_1.loadConfig)(middleware_retry_1.NODE_MAX_ATTEMPT_CONFIG_OPTIONS),\n region: config?.region ?? (0, node_config_provider_1.loadConfig)(config_resolver_1.NODE_REGION_CONFIG_OPTIONS, config_resolver_1.NODE_REGION_CONFIG_FILE_OPTIONS),\n requestHandler: node_http_handler_1.NodeHttpHandler.create(config?.requestHandler ?? defaultConfigProvider),\n retryMode: config?.retryMode ??\n (0, node_config_provider_1.loadConfig)({\n ...middleware_retry_1.NODE_RETRY_MODE_CONFIG_OPTIONS,\n default: async () => (await defaultConfigProvider()).retryMode || util_retry_1.DEFAULT_RETRY_MODE,\n }),\n sha256: config?.sha256 ?? hash_node_1.Hash.bind(null, \"sha256\"),\n streamCollector: config?.streamCollector ?? node_http_handler_1.streamCollector,\n useDualstackEndpoint: config?.useDualstackEndpoint ?? (0, node_config_provider_1.loadConfig)(config_resolver_1.NODE_USE_DUALSTACK_ENDPOINT_CONFIG_OPTIONS),\n useFipsEndpoint: config?.useFipsEndpoint ?? (0, node_config_provider_1.loadConfig)(config_resolver_1.NODE_USE_FIPS_ENDPOINT_CONFIG_OPTIONS),\n userAgentAppId: config?.userAgentAppId ?? (0, node_config_provider_1.loadConfig)(util_user_agent_node_1.NODE_APP_ID_CONFIG_OPTIONS),\n };\n};\nexports.getRuntimeConfig = getRuntimeConfig;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getRuntimeConfig = void 0;\nconst core_1 = require(\"@aws-sdk/core\");\nconst smithy_client_1 = require(\"@smithy/smithy-client\");\nconst url_parser_1 = require(\"@smithy/url-parser\");\nconst util_base64_1 = require(\"@smithy/util-base64\");\nconst util_utf8_1 = require(\"@smithy/util-utf8\");\nconst httpAuthSchemeProvider_1 = require(\"./auth/httpAuthSchemeProvider\");\nconst endpointResolver_1 = require(\"./endpoint/endpointResolver\");\nconst getRuntimeConfig = (config) => {\n return {\n apiVersion: \"2010-05-15\",\n base64Decoder: config?.base64Decoder ?? util_base64_1.fromBase64,\n base64Encoder: config?.base64Encoder ?? util_base64_1.toBase64,\n disableHostPrefix: config?.disableHostPrefix ?? false,\n endpointProvider: config?.endpointProvider ?? endpointResolver_1.defaultEndpointResolver,\n extensions: config?.extensions ?? [],\n httpAuthSchemeProvider: config?.httpAuthSchemeProvider ?? httpAuthSchemeProvider_1.defaultCloudFormationHttpAuthSchemeProvider,\n httpAuthSchemes: config?.httpAuthSchemes ?? [\n {\n schemeId: \"aws.auth#sigv4\",\n identityProvider: (ipc) => ipc.getIdentityProvider(\"aws.auth#sigv4\"),\n signer: new core_1.AwsSdkSigV4Signer(),\n },\n ],\n logger: config?.logger ?? new smithy_client_1.NoOpLogger(),\n serviceId: config?.serviceId ?? \"CloudFormation\",\n urlParser: config?.urlParser ?? url_parser_1.parseUrl,\n utf8Decoder: config?.utf8Decoder ?? util_utf8_1.fromUtf8,\n utf8Encoder: config?.utf8Encoder ?? util_utf8_1.toUtf8,\n };\n};\nexports.getRuntimeConfig = getRuntimeConfig;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.resolveHttpAuthSchemeConfig = exports.defaultCognitoIdentityHttpAuthSchemeProvider = exports.defaultCognitoIdentityHttpAuthSchemeParametersProvider = void 0;\nconst core_1 = require(\"@aws-sdk/core\");\nconst util_middleware_1 = require(\"@smithy/util-middleware\");\nconst defaultCognitoIdentityHttpAuthSchemeParametersProvider = async (config, context, input) => {\n return {\n operation: (0, util_middleware_1.getSmithyContext)(context).operation,\n region: (await (0, util_middleware_1.normalizeProvider)(config.region)()) ||\n (() => {\n throw new Error(\"expected `region` to be configured for `aws.auth#sigv4`\");\n })(),\n };\n};\nexports.defaultCognitoIdentityHttpAuthSchemeParametersProvider = defaultCognitoIdentityHttpAuthSchemeParametersProvider;\nfunction createAwsAuthSigv4HttpAuthOption(authParameters) {\n return {\n schemeId: \"aws.auth#sigv4\",\n signingProperties: {\n name: \"cognito-identity\",\n region: authParameters.region,\n },\n propertiesExtractor: (config, context) => ({\n signingProperties: {\n config,\n context,\n },\n }),\n };\n}\nfunction createSmithyApiNoAuthHttpAuthOption(authParameters) {\n return {\n schemeId: \"smithy.api#noAuth\",\n };\n}\nconst defaultCognitoIdentityHttpAuthSchemeProvider = (authParameters) => {\n const options = [];\n switch (authParameters.operation) {\n case \"GetCredentialsForIdentity\": {\n options.push(createSmithyApiNoAuthHttpAuthOption(authParameters));\n break;\n }\n case \"GetId\": {\n options.push(createSmithyApiNoAuthHttpAuthOption(authParameters));\n break;\n }\n case \"GetOpenIdToken\": {\n options.push(createSmithyApiNoAuthHttpAuthOption(authParameters));\n break;\n }\n case \"UnlinkIdentity\": {\n options.push(createSmithyApiNoAuthHttpAuthOption(authParameters));\n break;\n }\n default: {\n options.push(createAwsAuthSigv4HttpAuthOption(authParameters));\n }\n }\n return options;\n};\nexports.defaultCognitoIdentityHttpAuthSchemeProvider = defaultCognitoIdentityHttpAuthSchemeProvider;\nconst resolveHttpAuthSchemeConfig = (config) => {\n const config_0 = (0, core_1.resolveAwsSdkSigV4Config)(config);\n return {\n ...config_0,\n };\n};\nexports.resolveHttpAuthSchemeConfig = resolveHttpAuthSchemeConfig;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.defaultEndpointResolver = void 0;\nconst util_endpoints_1 = require(\"@aws-sdk/util-endpoints\");\nconst util_endpoints_2 = require(\"@smithy/util-endpoints\");\nconst ruleset_1 = require(\"./ruleset\");\nconst cache = new util_endpoints_2.EndpointCache({\n size: 50,\n params: [\"Endpoint\", \"Region\", \"UseDualStack\", \"UseFIPS\"],\n});\nconst defaultEndpointResolver = (endpointParams, context = {}) => {\n return cache.get(endpointParams, () => (0, util_endpoints_2.resolveEndpoint)(ruleset_1.ruleSet, {\n endpointParams: endpointParams,\n logger: context.logger,\n }));\n};\nexports.defaultEndpointResolver = defaultEndpointResolver;\nutil_endpoints_2.customEndpointFunctions.aws = util_endpoints_1.awsEndpointFunctions;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ruleSet = void 0;\nconst s = \"required\", t = \"fn\", u = \"argv\", v = \"ref\";\nconst a = true, b = \"isSet\", c = \"booleanEquals\", d = \"error\", e = \"endpoint\", f = \"tree\", g = \"PartitionResult\", h = { [s]: false, \"type\": \"String\" }, i = { [s]: true, \"default\": false, \"type\": \"Boolean\" }, j = { [v]: \"Endpoint\" }, k = { [t]: c, [u]: [{ [v]: \"UseFIPS\" }, true] }, l = { [t]: c, [u]: [{ [v]: \"UseDualStack\" }, true] }, m = {}, n = { [t]: \"getAttr\", [u]: [{ [v]: g }, \"supportsFIPS\"] }, o = { [t]: c, [u]: [true, { [t]: \"getAttr\", [u]: [{ [v]: g }, \"supportsDualStack\"] }] }, p = [k], q = [l], r = [{ [v]: \"Region\" }];\nconst _data = { version: \"1.0\", parameters: { Region: h, UseDualStack: i, UseFIPS: i, Endpoint: h }, rules: [{ conditions: [{ [t]: b, [u]: [j] }], rules: [{ conditions: p, error: \"Invalid Configuration: FIPS and custom endpoint are not supported\", type: d }, { conditions: q, error: \"Invalid Configuration: Dualstack and custom endpoint are not supported\", type: d }, { endpoint: { url: j, properties: m, headers: m }, type: e }], type: f }, { conditions: [{ [t]: b, [u]: r }], rules: [{ conditions: [{ [t]: \"aws.partition\", [u]: r, assign: g }], rules: [{ conditions: [k, l], rules: [{ conditions: [{ [t]: c, [u]: [a, n] }, o], rules: [{ endpoint: { url: \"https://cognito-identity-fips.{Region}.{PartitionResult#dualStackDnsSuffix}\", properties: m, headers: m }, type: e }], type: f }, { error: \"FIPS and DualStack are enabled, but this partition does not support one or both\", type: d }], type: f }, { conditions: p, rules: [{ conditions: [{ [t]: c, [u]: [n, a] }], rules: [{ endpoint: { url: \"https://cognito-identity-fips.{Region}.{PartitionResult#dnsSuffix}\", properties: m, headers: m }, type: e }], type: f }, { error: \"FIPS is enabled but this partition does not support FIPS\", type: d }], type: f }, { conditions: q, rules: [{ conditions: [o], rules: [{ endpoint: { url: \"https://cognito-identity.{Region}.{PartitionResult#dualStackDnsSuffix}\", properties: m, headers: m }, type: e }], type: f }, { error: \"DualStack is enabled but this partition does not support DualStack\", type: d }], type: f }, { endpoint: { url: \"https://cognito-identity.{Region}.{PartitionResult#dnsSuffix}\", properties: m, headers: m }, type: e }], type: f }], type: f }, { error: \"Invalid Configuration: Missing Region\", type: d }] };\nexports.ruleSet = _data;\n","\"use strict\";\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/index.ts\nvar src_exports = {};\n__export(src_exports, {\n AmbiguousRoleResolutionType: () => AmbiguousRoleResolutionType,\n CognitoIdentity: () => CognitoIdentity,\n CognitoIdentityClient: () => CognitoIdentityClient,\n CognitoIdentityServiceException: () => CognitoIdentityServiceException,\n ConcurrentModificationException: () => ConcurrentModificationException,\n CreateIdentityPoolCommand: () => CreateIdentityPoolCommand,\n CredentialsFilterSensitiveLog: () => CredentialsFilterSensitiveLog,\n DeleteIdentitiesCommand: () => DeleteIdentitiesCommand,\n DeleteIdentityPoolCommand: () => DeleteIdentityPoolCommand,\n DescribeIdentityCommand: () => DescribeIdentityCommand,\n DescribeIdentityPoolCommand: () => DescribeIdentityPoolCommand,\n DeveloperUserAlreadyRegisteredException: () => DeveloperUserAlreadyRegisteredException,\n ErrorCode: () => ErrorCode,\n ExternalServiceException: () => ExternalServiceException,\n GetCredentialsForIdentityCommand: () => GetCredentialsForIdentityCommand,\n GetCredentialsForIdentityInputFilterSensitiveLog: () => GetCredentialsForIdentityInputFilterSensitiveLog,\n GetCredentialsForIdentityResponseFilterSensitiveLog: () => GetCredentialsForIdentityResponseFilterSensitiveLog,\n GetIdCommand: () => GetIdCommand,\n GetIdInputFilterSensitiveLog: () => GetIdInputFilterSensitiveLog,\n GetIdentityPoolRolesCommand: () => GetIdentityPoolRolesCommand,\n GetOpenIdTokenCommand: () => GetOpenIdTokenCommand,\n GetOpenIdTokenForDeveloperIdentityCommand: () => GetOpenIdTokenForDeveloperIdentityCommand,\n GetOpenIdTokenForDeveloperIdentityInputFilterSensitiveLog: () => GetOpenIdTokenForDeveloperIdentityInputFilterSensitiveLog,\n GetOpenIdTokenForDeveloperIdentityResponseFilterSensitiveLog: () => GetOpenIdTokenForDeveloperIdentityResponseFilterSensitiveLog,\n GetOpenIdTokenInputFilterSensitiveLog: () => GetOpenIdTokenInputFilterSensitiveLog,\n GetOpenIdTokenResponseFilterSensitiveLog: () => GetOpenIdTokenResponseFilterSensitiveLog,\n GetPrincipalTagAttributeMapCommand: () => GetPrincipalTagAttributeMapCommand,\n InternalErrorException: () => InternalErrorException,\n InvalidIdentityPoolConfigurationException: () => InvalidIdentityPoolConfigurationException,\n InvalidParameterException: () => InvalidParameterException,\n LimitExceededException: () => LimitExceededException,\n ListIdentitiesCommand: () => ListIdentitiesCommand,\n ListIdentityPoolsCommand: () => ListIdentityPoolsCommand,\n ListTagsForResourceCommand: () => ListTagsForResourceCommand,\n LookupDeveloperIdentityCommand: () => LookupDeveloperIdentityCommand,\n MappingRuleMatchType: () => MappingRuleMatchType,\n MergeDeveloperIdentitiesCommand: () => MergeDeveloperIdentitiesCommand,\n NotAuthorizedException: () => NotAuthorizedException,\n ResourceConflictException: () => ResourceConflictException,\n ResourceNotFoundException: () => ResourceNotFoundException,\n RoleMappingType: () => RoleMappingType,\n SetIdentityPoolRolesCommand: () => SetIdentityPoolRolesCommand,\n SetPrincipalTagAttributeMapCommand: () => SetPrincipalTagAttributeMapCommand,\n TagResourceCommand: () => TagResourceCommand,\n TooManyRequestsException: () => TooManyRequestsException,\n UnlinkDeveloperIdentityCommand: () => UnlinkDeveloperIdentityCommand,\n UnlinkIdentityCommand: () => UnlinkIdentityCommand,\n UnlinkIdentityInputFilterSensitiveLog: () => UnlinkIdentityInputFilterSensitiveLog,\n UntagResourceCommand: () => UntagResourceCommand,\n UpdateIdentityPoolCommand: () => UpdateIdentityPoolCommand,\n __Client: () => import_smithy_client.Client,\n paginateListIdentityPools: () => paginateListIdentityPools\n});\nmodule.exports = __toCommonJS(src_exports);\n\n// src/CognitoIdentityClient.ts\nvar import_middleware_host_header = require(\"@aws-sdk/middleware-host-header\");\nvar import_middleware_logger = require(\"@aws-sdk/middleware-logger\");\nvar import_middleware_recursion_detection = require(\"@aws-sdk/middleware-recursion-detection\");\nvar import_middleware_user_agent = require(\"@aws-sdk/middleware-user-agent\");\nvar import_config_resolver = require(\"@smithy/config-resolver\");\nvar import_core = require(\"@smithy/core\");\nvar import_middleware_content_length = require(\"@smithy/middleware-content-length\");\nvar import_middleware_endpoint = require(\"@smithy/middleware-endpoint\");\nvar import_middleware_retry = require(\"@smithy/middleware-retry\");\n\nvar import_httpAuthSchemeProvider = require(\"./auth/httpAuthSchemeProvider\");\n\n// src/endpoint/EndpointParameters.ts\nvar resolveClientEndpointParameters = /* @__PURE__ */ __name((options) => {\n return {\n ...options,\n useDualstackEndpoint: options.useDualstackEndpoint ?? false,\n useFipsEndpoint: options.useFipsEndpoint ?? false,\n defaultSigningName: \"cognito-identity\"\n };\n}, \"resolveClientEndpointParameters\");\nvar commonParams = {\n UseFIPS: { type: \"builtInParams\", name: \"useFipsEndpoint\" },\n Endpoint: { type: \"builtInParams\", name: \"endpoint\" },\n Region: { type: \"builtInParams\", name: \"region\" },\n UseDualStack: { type: \"builtInParams\", name: \"useDualstackEndpoint\" }\n};\n\n// src/CognitoIdentityClient.ts\nvar import_runtimeConfig = require(\"././runtimeConfig\");\n\n// src/runtimeExtensions.ts\nvar import_region_config_resolver = require(\"@aws-sdk/region-config-resolver\");\nvar import_protocol_http = require(\"@smithy/protocol-http\");\nvar import_smithy_client = require(\"@smithy/smithy-client\");\n\n// src/auth/httpAuthExtensionConfiguration.ts\nvar getHttpAuthExtensionConfiguration = /* @__PURE__ */ __name((runtimeConfig) => {\n const _httpAuthSchemes = runtimeConfig.httpAuthSchemes;\n let _httpAuthSchemeProvider = runtimeConfig.httpAuthSchemeProvider;\n let _credentials = runtimeConfig.credentials;\n return {\n setHttpAuthScheme(httpAuthScheme) {\n const index = _httpAuthSchemes.findIndex((scheme) => scheme.schemeId === httpAuthScheme.schemeId);\n if (index === -1) {\n _httpAuthSchemes.push(httpAuthScheme);\n } else {\n _httpAuthSchemes.splice(index, 1, httpAuthScheme);\n }\n },\n httpAuthSchemes() {\n return _httpAuthSchemes;\n },\n setHttpAuthSchemeProvider(httpAuthSchemeProvider) {\n _httpAuthSchemeProvider = httpAuthSchemeProvider;\n },\n httpAuthSchemeProvider() {\n return _httpAuthSchemeProvider;\n },\n setCredentials(credentials) {\n _credentials = credentials;\n },\n credentials() {\n return _credentials;\n }\n };\n}, \"getHttpAuthExtensionConfiguration\");\nvar resolveHttpAuthRuntimeConfig = /* @__PURE__ */ __name((config) => {\n return {\n httpAuthSchemes: config.httpAuthSchemes(),\n httpAuthSchemeProvider: config.httpAuthSchemeProvider(),\n credentials: config.credentials()\n };\n}, \"resolveHttpAuthRuntimeConfig\");\n\n// src/runtimeExtensions.ts\nvar asPartial = /* @__PURE__ */ __name((t) => t, \"asPartial\");\nvar resolveRuntimeExtensions = /* @__PURE__ */ __name((runtimeConfig, extensions) => {\n const extensionConfiguration = {\n ...asPartial((0, import_region_config_resolver.getAwsRegionExtensionConfiguration)(runtimeConfig)),\n ...asPartial((0, import_smithy_client.getDefaultExtensionConfiguration)(runtimeConfig)),\n ...asPartial((0, import_protocol_http.getHttpHandlerExtensionConfiguration)(runtimeConfig)),\n ...asPartial(getHttpAuthExtensionConfiguration(runtimeConfig))\n };\n extensions.forEach((extension) => extension.configure(extensionConfiguration));\n return {\n ...runtimeConfig,\n ...(0, import_region_config_resolver.resolveAwsRegionExtensionConfiguration)(extensionConfiguration),\n ...(0, import_smithy_client.resolveDefaultRuntimeConfig)(extensionConfiguration),\n ...(0, import_protocol_http.resolveHttpHandlerRuntimeConfig)(extensionConfiguration),\n ...resolveHttpAuthRuntimeConfig(extensionConfiguration)\n };\n}, \"resolveRuntimeExtensions\");\n\n// src/CognitoIdentityClient.ts\nvar _CognitoIdentityClient = class _CognitoIdentityClient extends import_smithy_client.Client {\n constructor(...[configuration]) {\n const _config_0 = (0, import_runtimeConfig.getRuntimeConfig)(configuration || {});\n const _config_1 = resolveClientEndpointParameters(_config_0);\n const _config_2 = (0, import_middleware_user_agent.resolveUserAgentConfig)(_config_1);\n const _config_3 = (0, import_middleware_retry.resolveRetryConfig)(_config_2);\n const _config_4 = (0, import_config_resolver.resolveRegionConfig)(_config_3);\n const _config_5 = (0, import_middleware_host_header.resolveHostHeaderConfig)(_config_4);\n const _config_6 = (0, import_middleware_endpoint.resolveEndpointConfig)(_config_5);\n const _config_7 = (0, import_httpAuthSchemeProvider.resolveHttpAuthSchemeConfig)(_config_6);\n const _config_8 = resolveRuntimeExtensions(_config_7, (configuration == null ? void 0 : configuration.extensions) || []);\n super(_config_8);\n this.config = _config_8;\n this.middlewareStack.use((0, import_middleware_user_agent.getUserAgentPlugin)(this.config));\n this.middlewareStack.use((0, import_middleware_retry.getRetryPlugin)(this.config));\n this.middlewareStack.use((0, import_middleware_content_length.getContentLengthPlugin)(this.config));\n this.middlewareStack.use((0, import_middleware_host_header.getHostHeaderPlugin)(this.config));\n this.middlewareStack.use((0, import_middleware_logger.getLoggerPlugin)(this.config));\n this.middlewareStack.use((0, import_middleware_recursion_detection.getRecursionDetectionPlugin)(this.config));\n this.middlewareStack.use(\n (0, import_core.getHttpAuthSchemeEndpointRuleSetPlugin)(this.config, {\n httpAuthSchemeParametersProvider: import_httpAuthSchemeProvider.defaultCognitoIdentityHttpAuthSchemeParametersProvider,\n identityProviderConfigProvider: async (config) => new import_core.DefaultIdentityProviderConfig({\n \"aws.auth#sigv4\": config.credentials\n })\n })\n );\n this.middlewareStack.use((0, import_core.getHttpSigningPlugin)(this.config));\n }\n /**\n * Destroy underlying resources, like sockets. It's usually not necessary to do this.\n * However in Node.js, it's best to explicitly shut down the client's agent when it is no longer needed.\n * Otherwise, sockets might stay open for quite a long time before the server terminates them.\n */\n destroy() {\n super.destroy();\n }\n};\n__name(_CognitoIdentityClient, \"CognitoIdentityClient\");\nvar CognitoIdentityClient = _CognitoIdentityClient;\n\n// src/CognitoIdentity.ts\n\n\n// src/commands/CreateIdentityPoolCommand.ts\n\nvar import_middleware_serde = require(\"@smithy/middleware-serde\");\n\n\n// src/protocols/Aws_json1_1.ts\nvar import_core2 = require(\"@aws-sdk/core\");\n\n\n\n// src/models/CognitoIdentityServiceException.ts\n\nvar _CognitoIdentityServiceException = class _CognitoIdentityServiceException extends import_smithy_client.ServiceException {\n /**\n * @internal\n */\n constructor(options) {\n super(options);\n Object.setPrototypeOf(this, _CognitoIdentityServiceException.prototype);\n }\n};\n__name(_CognitoIdentityServiceException, \"CognitoIdentityServiceException\");\nvar CognitoIdentityServiceException = _CognitoIdentityServiceException;\n\n// src/models/models_0.ts\n\nvar AmbiguousRoleResolutionType = {\n AUTHENTICATED_ROLE: \"AuthenticatedRole\",\n DENY: \"Deny\"\n};\nvar _InternalErrorException = class _InternalErrorException extends CognitoIdentityServiceException {\n /**\n * @internal\n */\n constructor(opts) {\n super({\n name: \"InternalErrorException\",\n $fault: \"server\",\n ...opts\n });\n this.name = \"InternalErrorException\";\n this.$fault = \"server\";\n Object.setPrototypeOf(this, _InternalErrorException.prototype);\n }\n};\n__name(_InternalErrorException, \"InternalErrorException\");\nvar InternalErrorException = _InternalErrorException;\nvar _InvalidParameterException = class _InvalidParameterException extends CognitoIdentityServiceException {\n /**\n * @internal\n */\n constructor(opts) {\n super({\n name: \"InvalidParameterException\",\n $fault: \"client\",\n ...opts\n });\n this.name = \"InvalidParameterException\";\n this.$fault = \"client\";\n Object.setPrototypeOf(this, _InvalidParameterException.prototype);\n }\n};\n__name(_InvalidParameterException, \"InvalidParameterException\");\nvar InvalidParameterException = _InvalidParameterException;\nvar _LimitExceededException = class _LimitExceededException extends CognitoIdentityServiceException {\n /**\n * @internal\n */\n constructor(opts) {\n super({\n name: \"LimitExceededException\",\n $fault: \"client\",\n ...opts\n });\n this.name = \"LimitExceededException\";\n this.$fault = \"client\";\n Object.setPrototypeOf(this, _LimitExceededException.prototype);\n }\n};\n__name(_LimitExceededException, \"LimitExceededException\");\nvar LimitExceededException = _LimitExceededException;\nvar _NotAuthorizedException = class _NotAuthorizedException extends CognitoIdentityServiceException {\n /**\n * @internal\n */\n constructor(opts) {\n super({\n name: \"NotAuthorizedException\",\n $fault: \"client\",\n ...opts\n });\n this.name = \"NotAuthorizedException\";\n this.$fault = \"client\";\n Object.setPrototypeOf(this, _NotAuthorizedException.prototype);\n }\n};\n__name(_NotAuthorizedException, \"NotAuthorizedException\");\nvar NotAuthorizedException = _NotAuthorizedException;\nvar _ResourceConflictException = class _ResourceConflictException extends CognitoIdentityServiceException {\n /**\n * @internal\n */\n constructor(opts) {\n super({\n name: \"ResourceConflictException\",\n $fault: \"client\",\n ...opts\n });\n this.name = \"ResourceConflictException\";\n this.$fault = \"client\";\n Object.setPrototypeOf(this, _ResourceConflictException.prototype);\n }\n};\n__name(_ResourceConflictException, \"ResourceConflictException\");\nvar ResourceConflictException = _ResourceConflictException;\nvar _TooManyRequestsException = class _TooManyRequestsException extends CognitoIdentityServiceException {\n /**\n * @internal\n */\n constructor(opts) {\n super({\n name: \"TooManyRequestsException\",\n $fault: \"client\",\n ...opts\n });\n this.name = \"TooManyRequestsException\";\n this.$fault = \"client\";\n Object.setPrototypeOf(this, _TooManyRequestsException.prototype);\n }\n};\n__name(_TooManyRequestsException, \"TooManyRequestsException\");\nvar TooManyRequestsException = _TooManyRequestsException;\nvar ErrorCode = {\n ACCESS_DENIED: \"AccessDenied\",\n INTERNAL_SERVER_ERROR: \"InternalServerError\"\n};\nvar _ResourceNotFoundException = class _ResourceNotFoundException extends CognitoIdentityServiceException {\n /**\n * @internal\n */\n constructor(opts) {\n super({\n name: \"ResourceNotFoundException\",\n $fault: \"client\",\n ...opts\n });\n this.name = \"ResourceNotFoundException\";\n this.$fault = \"client\";\n Object.setPrototypeOf(this, _ResourceNotFoundException.prototype);\n }\n};\n__name(_ResourceNotFoundException, \"ResourceNotFoundException\");\nvar ResourceNotFoundException = _ResourceNotFoundException;\nvar _ExternalServiceException = class _ExternalServiceException extends CognitoIdentityServiceException {\n /**\n * @internal\n */\n constructor(opts) {\n super({\n name: \"ExternalServiceException\",\n $fault: \"client\",\n ...opts\n });\n this.name = \"ExternalServiceException\";\n this.$fault = \"client\";\n Object.setPrototypeOf(this, _ExternalServiceException.prototype);\n }\n};\n__name(_ExternalServiceException, \"ExternalServiceException\");\nvar ExternalServiceException = _ExternalServiceException;\nvar _InvalidIdentityPoolConfigurationException = class _InvalidIdentityPoolConfigurationException extends CognitoIdentityServiceException {\n /**\n * @internal\n */\n constructor(opts) {\n super({\n name: \"InvalidIdentityPoolConfigurationException\",\n $fault: \"client\",\n ...opts\n });\n this.name = \"InvalidIdentityPoolConfigurationException\";\n this.$fault = \"client\";\n Object.setPrototypeOf(this, _InvalidIdentityPoolConfigurationException.prototype);\n }\n};\n__name(_InvalidIdentityPoolConfigurationException, \"InvalidIdentityPoolConfigurationException\");\nvar InvalidIdentityPoolConfigurationException = _InvalidIdentityPoolConfigurationException;\nvar MappingRuleMatchType = {\n CONTAINS: \"Contains\",\n EQUALS: \"Equals\",\n NOT_EQUAL: \"NotEqual\",\n STARTS_WITH: \"StartsWith\"\n};\nvar RoleMappingType = {\n RULES: \"Rules\",\n TOKEN: \"Token\"\n};\nvar _DeveloperUserAlreadyRegisteredException = class _DeveloperUserAlreadyRegisteredException extends CognitoIdentityServiceException {\n /**\n * @internal\n */\n constructor(opts) {\n super({\n name: \"DeveloperUserAlreadyRegisteredException\",\n $fault: \"client\",\n ...opts\n });\n this.name = \"DeveloperUserAlreadyRegisteredException\";\n this.$fault = \"client\";\n Object.setPrototypeOf(this, _DeveloperUserAlreadyRegisteredException.prototype);\n }\n};\n__name(_DeveloperUserAlreadyRegisteredException, \"DeveloperUserAlreadyRegisteredException\");\nvar DeveloperUserAlreadyRegisteredException = _DeveloperUserAlreadyRegisteredException;\nvar _ConcurrentModificationException = class _ConcurrentModificationException extends CognitoIdentityServiceException {\n /**\n * @internal\n */\n constructor(opts) {\n super({\n name: \"ConcurrentModificationException\",\n $fault: \"client\",\n ...opts\n });\n this.name = \"ConcurrentModificationException\";\n this.$fault = \"client\";\n Object.setPrototypeOf(this, _ConcurrentModificationException.prototype);\n }\n};\n__name(_ConcurrentModificationException, \"ConcurrentModificationException\");\nvar ConcurrentModificationException = _ConcurrentModificationException;\nvar GetCredentialsForIdentityInputFilterSensitiveLog = /* @__PURE__ */ __name((obj) => ({\n ...obj,\n ...obj.Logins && { Logins: import_smithy_client.SENSITIVE_STRING }\n}), \"GetCredentialsForIdentityInputFilterSensitiveLog\");\nvar CredentialsFilterSensitiveLog = /* @__PURE__ */ __name((obj) => ({\n ...obj,\n ...obj.SecretKey && { SecretKey: import_smithy_client.SENSITIVE_STRING }\n}), \"CredentialsFilterSensitiveLog\");\nvar GetCredentialsForIdentityResponseFilterSensitiveLog = /* @__PURE__ */ __name((obj) => ({\n ...obj,\n ...obj.Credentials && { Credentials: CredentialsFilterSensitiveLog(obj.Credentials) }\n}), \"GetCredentialsForIdentityResponseFilterSensitiveLog\");\nvar GetIdInputFilterSensitiveLog = /* @__PURE__ */ __name((obj) => ({\n ...obj,\n ...obj.Logins && { Logins: import_smithy_client.SENSITIVE_STRING }\n}), \"GetIdInputFilterSensitiveLog\");\nvar GetOpenIdTokenInputFilterSensitiveLog = /* @__PURE__ */ __name((obj) => ({\n ...obj,\n ...obj.Logins && { Logins: import_smithy_client.SENSITIVE_STRING }\n}), \"GetOpenIdTokenInputFilterSensitiveLog\");\nvar GetOpenIdTokenResponseFilterSensitiveLog = /* @__PURE__ */ __name((obj) => ({\n ...obj,\n ...obj.Token && { Token: import_smithy_client.SENSITIVE_STRING }\n}), \"GetOpenIdTokenResponseFilterSensitiveLog\");\nvar GetOpenIdTokenForDeveloperIdentityInputFilterSensitiveLog = /* @__PURE__ */ __name((obj) => ({\n ...obj,\n ...obj.Logins && { Logins: import_smithy_client.SENSITIVE_STRING }\n}), \"GetOpenIdTokenForDeveloperIdentityInputFilterSensitiveLog\");\nvar GetOpenIdTokenForDeveloperIdentityResponseFilterSensitiveLog = /* @__PURE__ */ __name((obj) => ({\n ...obj,\n ...obj.Token && { Token: import_smithy_client.SENSITIVE_STRING }\n}), \"GetOpenIdTokenForDeveloperIdentityResponseFilterSensitiveLog\");\nvar UnlinkIdentityInputFilterSensitiveLog = /* @__PURE__ */ __name((obj) => ({\n ...obj,\n ...obj.Logins && { Logins: import_smithy_client.SENSITIVE_STRING }\n}), \"UnlinkIdentityInputFilterSensitiveLog\");\n\n// src/protocols/Aws_json1_1.ts\nvar se_CreateIdentityPoolCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = sharedHeaders(\"CreateIdentityPool\");\n let body;\n body = JSON.stringify((0, import_smithy_client._json)(input));\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_CreateIdentityPoolCommand\");\nvar se_DeleteIdentitiesCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = sharedHeaders(\"DeleteIdentities\");\n let body;\n body = JSON.stringify((0, import_smithy_client._json)(input));\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_DeleteIdentitiesCommand\");\nvar se_DeleteIdentityPoolCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = sharedHeaders(\"DeleteIdentityPool\");\n let body;\n body = JSON.stringify((0, import_smithy_client._json)(input));\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_DeleteIdentityPoolCommand\");\nvar se_DescribeIdentityCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = sharedHeaders(\"DescribeIdentity\");\n let body;\n body = JSON.stringify((0, import_smithy_client._json)(input));\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_DescribeIdentityCommand\");\nvar se_DescribeIdentityPoolCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = sharedHeaders(\"DescribeIdentityPool\");\n let body;\n body = JSON.stringify((0, import_smithy_client._json)(input));\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_DescribeIdentityPoolCommand\");\nvar se_GetCredentialsForIdentityCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = sharedHeaders(\"GetCredentialsForIdentity\");\n let body;\n body = JSON.stringify((0, import_smithy_client._json)(input));\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_GetCredentialsForIdentityCommand\");\nvar se_GetIdCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = sharedHeaders(\"GetId\");\n let body;\n body = JSON.stringify((0, import_smithy_client._json)(input));\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_GetIdCommand\");\nvar se_GetIdentityPoolRolesCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = sharedHeaders(\"GetIdentityPoolRoles\");\n let body;\n body = JSON.stringify((0, import_smithy_client._json)(input));\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_GetIdentityPoolRolesCommand\");\nvar se_GetOpenIdTokenCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = sharedHeaders(\"GetOpenIdToken\");\n let body;\n body = JSON.stringify((0, import_smithy_client._json)(input));\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_GetOpenIdTokenCommand\");\nvar se_GetOpenIdTokenForDeveloperIdentityCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = sharedHeaders(\"GetOpenIdTokenForDeveloperIdentity\");\n let body;\n body = JSON.stringify((0, import_smithy_client._json)(input));\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_GetOpenIdTokenForDeveloperIdentityCommand\");\nvar se_GetPrincipalTagAttributeMapCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = sharedHeaders(\"GetPrincipalTagAttributeMap\");\n let body;\n body = JSON.stringify((0, import_smithy_client._json)(input));\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_GetPrincipalTagAttributeMapCommand\");\nvar se_ListIdentitiesCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = sharedHeaders(\"ListIdentities\");\n let body;\n body = JSON.stringify((0, import_smithy_client._json)(input));\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_ListIdentitiesCommand\");\nvar se_ListIdentityPoolsCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = sharedHeaders(\"ListIdentityPools\");\n let body;\n body = JSON.stringify((0, import_smithy_client._json)(input));\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_ListIdentityPoolsCommand\");\nvar se_ListTagsForResourceCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = sharedHeaders(\"ListTagsForResource\");\n let body;\n body = JSON.stringify((0, import_smithy_client._json)(input));\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_ListTagsForResourceCommand\");\nvar se_LookupDeveloperIdentityCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = sharedHeaders(\"LookupDeveloperIdentity\");\n let body;\n body = JSON.stringify((0, import_smithy_client._json)(input));\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_LookupDeveloperIdentityCommand\");\nvar se_MergeDeveloperIdentitiesCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = sharedHeaders(\"MergeDeveloperIdentities\");\n let body;\n body = JSON.stringify((0, import_smithy_client._json)(input));\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_MergeDeveloperIdentitiesCommand\");\nvar se_SetIdentityPoolRolesCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = sharedHeaders(\"SetIdentityPoolRoles\");\n let body;\n body = JSON.stringify((0, import_smithy_client._json)(input));\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_SetIdentityPoolRolesCommand\");\nvar se_SetPrincipalTagAttributeMapCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = sharedHeaders(\"SetPrincipalTagAttributeMap\");\n let body;\n body = JSON.stringify((0, import_smithy_client._json)(input));\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_SetPrincipalTagAttributeMapCommand\");\nvar se_TagResourceCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = sharedHeaders(\"TagResource\");\n let body;\n body = JSON.stringify((0, import_smithy_client._json)(input));\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_TagResourceCommand\");\nvar se_UnlinkDeveloperIdentityCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = sharedHeaders(\"UnlinkDeveloperIdentity\");\n let body;\n body = JSON.stringify((0, import_smithy_client._json)(input));\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_UnlinkDeveloperIdentityCommand\");\nvar se_UnlinkIdentityCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = sharedHeaders(\"UnlinkIdentity\");\n let body;\n body = JSON.stringify((0, import_smithy_client._json)(input));\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_UnlinkIdentityCommand\");\nvar se_UntagResourceCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = sharedHeaders(\"UntagResource\");\n let body;\n body = JSON.stringify((0, import_smithy_client._json)(input));\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_UntagResourceCommand\");\nvar se_UpdateIdentityPoolCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = sharedHeaders(\"UpdateIdentityPool\");\n let body;\n body = JSON.stringify((0, import_smithy_client._json)(input));\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_UpdateIdentityPoolCommand\");\nvar de_CreateIdentityPoolCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseJsonBody)(output.body, context);\n let contents = {};\n contents = (0, import_smithy_client._json)(data);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_CreateIdentityPoolCommand\");\nvar de_DeleteIdentitiesCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseJsonBody)(output.body, context);\n let contents = {};\n contents = (0, import_smithy_client._json)(data);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_DeleteIdentitiesCommand\");\nvar de_DeleteIdentityPoolCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n await (0, import_smithy_client.collectBody)(output.body, context);\n const response = {\n $metadata: deserializeMetadata(output)\n };\n return response;\n}, \"de_DeleteIdentityPoolCommand\");\nvar de_DescribeIdentityCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseJsonBody)(output.body, context);\n let contents = {};\n contents = de_IdentityDescription(data, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_DescribeIdentityCommand\");\nvar de_DescribeIdentityPoolCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseJsonBody)(output.body, context);\n let contents = {};\n contents = (0, import_smithy_client._json)(data);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_DescribeIdentityPoolCommand\");\nvar de_GetCredentialsForIdentityCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseJsonBody)(output.body, context);\n let contents = {};\n contents = de_GetCredentialsForIdentityResponse(data, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_GetCredentialsForIdentityCommand\");\nvar de_GetIdCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseJsonBody)(output.body, context);\n let contents = {};\n contents = (0, import_smithy_client._json)(data);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_GetIdCommand\");\nvar de_GetIdentityPoolRolesCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseJsonBody)(output.body, context);\n let contents = {};\n contents = (0, import_smithy_client._json)(data);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_GetIdentityPoolRolesCommand\");\nvar de_GetOpenIdTokenCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseJsonBody)(output.body, context);\n let contents = {};\n contents = (0, import_smithy_client._json)(data);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_GetOpenIdTokenCommand\");\nvar de_GetOpenIdTokenForDeveloperIdentityCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseJsonBody)(output.body, context);\n let contents = {};\n contents = (0, import_smithy_client._json)(data);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_GetOpenIdTokenForDeveloperIdentityCommand\");\nvar de_GetPrincipalTagAttributeMapCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseJsonBody)(output.body, context);\n let contents = {};\n contents = (0, import_smithy_client._json)(data);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_GetPrincipalTagAttributeMapCommand\");\nvar de_ListIdentitiesCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseJsonBody)(output.body, context);\n let contents = {};\n contents = de_ListIdentitiesResponse(data, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_ListIdentitiesCommand\");\nvar de_ListIdentityPoolsCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseJsonBody)(output.body, context);\n let contents = {};\n contents = (0, import_smithy_client._json)(data);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_ListIdentityPoolsCommand\");\nvar de_ListTagsForResourceCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseJsonBody)(output.body, context);\n let contents = {};\n contents = (0, import_smithy_client._json)(data);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_ListTagsForResourceCommand\");\nvar de_LookupDeveloperIdentityCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseJsonBody)(output.body, context);\n let contents = {};\n contents = (0, import_smithy_client._json)(data);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_LookupDeveloperIdentityCommand\");\nvar de_MergeDeveloperIdentitiesCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseJsonBody)(output.body, context);\n let contents = {};\n contents = (0, import_smithy_client._json)(data);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_MergeDeveloperIdentitiesCommand\");\nvar de_SetIdentityPoolRolesCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n await (0, import_smithy_client.collectBody)(output.body, context);\n const response = {\n $metadata: deserializeMetadata(output)\n };\n return response;\n}, \"de_SetIdentityPoolRolesCommand\");\nvar de_SetPrincipalTagAttributeMapCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseJsonBody)(output.body, context);\n let contents = {};\n contents = (0, import_smithy_client._json)(data);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_SetPrincipalTagAttributeMapCommand\");\nvar de_TagResourceCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseJsonBody)(output.body, context);\n let contents = {};\n contents = (0, import_smithy_client._json)(data);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_TagResourceCommand\");\nvar de_UnlinkDeveloperIdentityCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n await (0, import_smithy_client.collectBody)(output.body, context);\n const response = {\n $metadata: deserializeMetadata(output)\n };\n return response;\n}, \"de_UnlinkDeveloperIdentityCommand\");\nvar de_UnlinkIdentityCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n await (0, import_smithy_client.collectBody)(output.body, context);\n const response = {\n $metadata: deserializeMetadata(output)\n };\n return response;\n}, \"de_UnlinkIdentityCommand\");\nvar de_UntagResourceCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseJsonBody)(output.body, context);\n let contents = {};\n contents = (0, import_smithy_client._json)(data);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_UntagResourceCommand\");\nvar de_UpdateIdentityPoolCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseJsonBody)(output.body, context);\n let contents = {};\n contents = (0, import_smithy_client._json)(data);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_UpdateIdentityPoolCommand\");\nvar de_CommandError = /* @__PURE__ */ __name(async (output, context) => {\n const parsedOutput = {\n ...output,\n body: await (0, import_core2.parseJsonErrorBody)(output.body, context)\n };\n const errorCode = (0, import_core2.loadRestJsonErrorCode)(output, parsedOutput.body);\n switch (errorCode) {\n case \"InternalErrorException\":\n case \"com.amazonaws.cognitoidentity#InternalErrorException\":\n throw await de_InternalErrorExceptionRes(parsedOutput, context);\n case \"InvalidParameterException\":\n case \"com.amazonaws.cognitoidentity#InvalidParameterException\":\n throw await de_InvalidParameterExceptionRes(parsedOutput, context);\n case \"LimitExceededException\":\n case \"com.amazonaws.cognitoidentity#LimitExceededException\":\n throw await de_LimitExceededExceptionRes(parsedOutput, context);\n case \"NotAuthorizedException\":\n case \"com.amazonaws.cognitoidentity#NotAuthorizedException\":\n throw await de_NotAuthorizedExceptionRes(parsedOutput, context);\n case \"ResourceConflictException\":\n case \"com.amazonaws.cognitoidentity#ResourceConflictException\":\n throw await de_ResourceConflictExceptionRes(parsedOutput, context);\n case \"TooManyRequestsException\":\n case \"com.amazonaws.cognitoidentity#TooManyRequestsException\":\n throw await de_TooManyRequestsExceptionRes(parsedOutput, context);\n case \"ResourceNotFoundException\":\n case \"com.amazonaws.cognitoidentity#ResourceNotFoundException\":\n throw await de_ResourceNotFoundExceptionRes(parsedOutput, context);\n case \"ExternalServiceException\":\n case \"com.amazonaws.cognitoidentity#ExternalServiceException\":\n throw await de_ExternalServiceExceptionRes(parsedOutput, context);\n case \"InvalidIdentityPoolConfigurationException\":\n case \"com.amazonaws.cognitoidentity#InvalidIdentityPoolConfigurationException\":\n throw await de_InvalidIdentityPoolConfigurationExceptionRes(parsedOutput, context);\n case \"DeveloperUserAlreadyRegisteredException\":\n case \"com.amazonaws.cognitoidentity#DeveloperUserAlreadyRegisteredException\":\n throw await de_DeveloperUserAlreadyRegisteredExceptionRes(parsedOutput, context);\n case \"ConcurrentModificationException\":\n case \"com.amazonaws.cognitoidentity#ConcurrentModificationException\":\n throw await de_ConcurrentModificationExceptionRes(parsedOutput, context);\n default:\n const parsedBody = parsedOutput.body;\n return throwDefaultError({\n output,\n parsedBody,\n errorCode\n });\n }\n}, \"de_CommandError\");\nvar de_ConcurrentModificationExceptionRes = /* @__PURE__ */ __name(async (parsedOutput, context) => {\n const body = parsedOutput.body;\n const deserialized = (0, import_smithy_client._json)(body);\n const exception = new ConcurrentModificationException({\n $metadata: deserializeMetadata(parsedOutput),\n ...deserialized\n });\n return (0, import_smithy_client.decorateServiceException)(exception, body);\n}, \"de_ConcurrentModificationExceptionRes\");\nvar de_DeveloperUserAlreadyRegisteredExceptionRes = /* @__PURE__ */ __name(async (parsedOutput, context) => {\n const body = parsedOutput.body;\n const deserialized = (0, import_smithy_client._json)(body);\n const exception = new DeveloperUserAlreadyRegisteredException({\n $metadata: deserializeMetadata(parsedOutput),\n ...deserialized\n });\n return (0, import_smithy_client.decorateServiceException)(exception, body);\n}, \"de_DeveloperUserAlreadyRegisteredExceptionRes\");\nvar de_ExternalServiceExceptionRes = /* @__PURE__ */ __name(async (parsedOutput, context) => {\n const body = parsedOutput.body;\n const deserialized = (0, import_smithy_client._json)(body);\n const exception = new ExternalServiceException({\n $metadata: deserializeMetadata(parsedOutput),\n ...deserialized\n });\n return (0, import_smithy_client.decorateServiceException)(exception, body);\n}, \"de_ExternalServiceExceptionRes\");\nvar de_InternalErrorExceptionRes = /* @__PURE__ */ __name(async (parsedOutput, context) => {\n const body = parsedOutput.body;\n const deserialized = (0, import_smithy_client._json)(body);\n const exception = new InternalErrorException({\n $metadata: deserializeMetadata(parsedOutput),\n ...deserialized\n });\n return (0, import_smithy_client.decorateServiceException)(exception, body);\n}, \"de_InternalErrorExceptionRes\");\nvar de_InvalidIdentityPoolConfigurationExceptionRes = /* @__PURE__ */ __name(async (parsedOutput, context) => {\n const body = parsedOutput.body;\n const deserialized = (0, import_smithy_client._json)(body);\n const exception = new InvalidIdentityPoolConfigurationException({\n $metadata: deserializeMetadata(parsedOutput),\n ...deserialized\n });\n return (0, import_smithy_client.decorateServiceException)(exception, body);\n}, \"de_InvalidIdentityPoolConfigurationExceptionRes\");\nvar de_InvalidParameterExceptionRes = /* @__PURE__ */ __name(async (parsedOutput, context) => {\n const body = parsedOutput.body;\n const deserialized = (0, import_smithy_client._json)(body);\n const exception = new InvalidParameterException({\n $metadata: deserializeMetadata(parsedOutput),\n ...deserialized\n });\n return (0, import_smithy_client.decorateServiceException)(exception, body);\n}, \"de_InvalidParameterExceptionRes\");\nvar de_LimitExceededExceptionRes = /* @__PURE__ */ __name(async (parsedOutput, context) => {\n const body = parsedOutput.body;\n const deserialized = (0, import_smithy_client._json)(body);\n const exception = new LimitExceededException({\n $metadata: deserializeMetadata(parsedOutput),\n ...deserialized\n });\n return (0, import_smithy_client.decorateServiceException)(exception, body);\n}, \"de_LimitExceededExceptionRes\");\nvar de_NotAuthorizedExceptionRes = /* @__PURE__ */ __name(async (parsedOutput, context) => {\n const body = parsedOutput.body;\n const deserialized = (0, import_smithy_client._json)(body);\n const exception = new NotAuthorizedException({\n $metadata: deserializeMetadata(parsedOutput),\n ...deserialized\n });\n return (0, import_smithy_client.decorateServiceException)(exception, body);\n}, \"de_NotAuthorizedExceptionRes\");\nvar de_ResourceConflictExceptionRes = /* @__PURE__ */ __name(async (parsedOutput, context) => {\n const body = parsedOutput.body;\n const deserialized = (0, import_smithy_client._json)(body);\n const exception = new ResourceConflictException({\n $metadata: deserializeMetadata(parsedOutput),\n ...deserialized\n });\n return (0, import_smithy_client.decorateServiceException)(exception, body);\n}, \"de_ResourceConflictExceptionRes\");\nvar de_ResourceNotFoundExceptionRes = /* @__PURE__ */ __name(async (parsedOutput, context) => {\n const body = parsedOutput.body;\n const deserialized = (0, import_smithy_client._json)(body);\n const exception = new ResourceNotFoundException({\n $metadata: deserializeMetadata(parsedOutput),\n ...deserialized\n });\n return (0, import_smithy_client.decorateServiceException)(exception, body);\n}, \"de_ResourceNotFoundExceptionRes\");\nvar de_TooManyRequestsExceptionRes = /* @__PURE__ */ __name(async (parsedOutput, context) => {\n const body = parsedOutput.body;\n const deserialized = (0, import_smithy_client._json)(body);\n const exception = new TooManyRequestsException({\n $metadata: deserializeMetadata(parsedOutput),\n ...deserialized\n });\n return (0, import_smithy_client.decorateServiceException)(exception, body);\n}, \"de_TooManyRequestsExceptionRes\");\nvar de_Credentials = /* @__PURE__ */ __name((output, context) => {\n return (0, import_smithy_client.take)(output, {\n AccessKeyId: import_smithy_client.expectString,\n Expiration: (_) => (0, import_smithy_client.expectNonNull)((0, import_smithy_client.parseEpochTimestamp)((0, import_smithy_client.expectNumber)(_))),\n SecretKey: import_smithy_client.expectString,\n SessionToken: import_smithy_client.expectString\n });\n}, \"de_Credentials\");\nvar de_GetCredentialsForIdentityResponse = /* @__PURE__ */ __name((output, context) => {\n return (0, import_smithy_client.take)(output, {\n Credentials: (_) => de_Credentials(_, context),\n IdentityId: import_smithy_client.expectString\n });\n}, \"de_GetCredentialsForIdentityResponse\");\nvar de_IdentitiesList = /* @__PURE__ */ __name((output, context) => {\n const retVal = (output || []).filter((e) => e != null).map((entry) => {\n return de_IdentityDescription(entry, context);\n });\n return retVal;\n}, \"de_IdentitiesList\");\nvar de_IdentityDescription = /* @__PURE__ */ __name((output, context) => {\n return (0, import_smithy_client.take)(output, {\n CreationDate: (_) => (0, import_smithy_client.expectNonNull)((0, import_smithy_client.parseEpochTimestamp)((0, import_smithy_client.expectNumber)(_))),\n IdentityId: import_smithy_client.expectString,\n LastModifiedDate: (_) => (0, import_smithy_client.expectNonNull)((0, import_smithy_client.parseEpochTimestamp)((0, import_smithy_client.expectNumber)(_))),\n Logins: import_smithy_client._json\n });\n}, \"de_IdentityDescription\");\nvar de_ListIdentitiesResponse = /* @__PURE__ */ __name((output, context) => {\n return (0, import_smithy_client.take)(output, {\n Identities: (_) => de_IdentitiesList(_, context),\n IdentityPoolId: import_smithy_client.expectString,\n NextToken: import_smithy_client.expectString\n });\n}, \"de_ListIdentitiesResponse\");\nvar deserializeMetadata = /* @__PURE__ */ __name((output) => ({\n httpStatusCode: output.statusCode,\n requestId: output.headers[\"x-amzn-requestid\"] ?? output.headers[\"x-amzn-request-id\"] ?? output.headers[\"x-amz-request-id\"],\n extendedRequestId: output.headers[\"x-amz-id-2\"],\n cfId: output.headers[\"x-amz-cf-id\"]\n}), \"deserializeMetadata\");\nvar throwDefaultError = (0, import_smithy_client.withBaseException)(CognitoIdentityServiceException);\nvar buildHttpRpcRequest = /* @__PURE__ */ __name(async (context, headers, path, resolvedHostname, body) => {\n const { hostname, protocol = \"https\", port, path: basePath } = await context.endpoint();\n const contents = {\n protocol,\n hostname,\n port,\n method: \"POST\",\n path: basePath.endsWith(\"/\") ? basePath.slice(0, -1) + path : basePath + path,\n headers\n };\n if (resolvedHostname !== void 0) {\n contents.hostname = resolvedHostname;\n }\n if (body !== void 0) {\n contents.body = body;\n }\n return new import_protocol_http.HttpRequest(contents);\n}, \"buildHttpRpcRequest\");\nfunction sharedHeaders(operation) {\n return {\n \"content-type\": \"application/x-amz-json-1.1\",\n \"x-amz-target\": `AWSCognitoIdentityService.${operation}`\n };\n}\n__name(sharedHeaders, \"sharedHeaders\");\n\n// src/commands/CreateIdentityPoolCommand.ts\nvar _CreateIdentityPoolCommand = class _CreateIdentityPoolCommand extends import_smithy_client.Command.classBuilder().ep(commonParams).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"AWSCognitoIdentityService\", \"CreateIdentityPool\", {}).n(\"CognitoIdentityClient\", \"CreateIdentityPoolCommand\").f(void 0, void 0).ser(se_CreateIdentityPoolCommand).de(de_CreateIdentityPoolCommand).build() {\n};\n__name(_CreateIdentityPoolCommand, \"CreateIdentityPoolCommand\");\nvar CreateIdentityPoolCommand = _CreateIdentityPoolCommand;\n\n// src/commands/DeleteIdentitiesCommand.ts\n\n\n\nvar _DeleteIdentitiesCommand = class _DeleteIdentitiesCommand extends import_smithy_client.Command.classBuilder().ep(commonParams).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"AWSCognitoIdentityService\", \"DeleteIdentities\", {}).n(\"CognitoIdentityClient\", \"DeleteIdentitiesCommand\").f(void 0, void 0).ser(se_DeleteIdentitiesCommand).de(de_DeleteIdentitiesCommand).build() {\n};\n__name(_DeleteIdentitiesCommand, \"DeleteIdentitiesCommand\");\nvar DeleteIdentitiesCommand = _DeleteIdentitiesCommand;\n\n// src/commands/DeleteIdentityPoolCommand.ts\n\n\n\nvar _DeleteIdentityPoolCommand = class _DeleteIdentityPoolCommand extends import_smithy_client.Command.classBuilder().ep(commonParams).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"AWSCognitoIdentityService\", \"DeleteIdentityPool\", {}).n(\"CognitoIdentityClient\", \"DeleteIdentityPoolCommand\").f(void 0, void 0).ser(se_DeleteIdentityPoolCommand).de(de_DeleteIdentityPoolCommand).build() {\n};\n__name(_DeleteIdentityPoolCommand, \"DeleteIdentityPoolCommand\");\nvar DeleteIdentityPoolCommand = _DeleteIdentityPoolCommand;\n\n// src/commands/DescribeIdentityCommand.ts\n\n\n\nvar _DescribeIdentityCommand = class _DescribeIdentityCommand extends import_smithy_client.Command.classBuilder().ep(commonParams).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"AWSCognitoIdentityService\", \"DescribeIdentity\", {}).n(\"CognitoIdentityClient\", \"DescribeIdentityCommand\").f(void 0, void 0).ser(se_DescribeIdentityCommand).de(de_DescribeIdentityCommand).build() {\n};\n__name(_DescribeIdentityCommand, \"DescribeIdentityCommand\");\nvar DescribeIdentityCommand = _DescribeIdentityCommand;\n\n// src/commands/DescribeIdentityPoolCommand.ts\n\n\n\nvar _DescribeIdentityPoolCommand = class _DescribeIdentityPoolCommand extends import_smithy_client.Command.classBuilder().ep(commonParams).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"AWSCognitoIdentityService\", \"DescribeIdentityPool\", {}).n(\"CognitoIdentityClient\", \"DescribeIdentityPoolCommand\").f(void 0, void 0).ser(se_DescribeIdentityPoolCommand).de(de_DescribeIdentityPoolCommand).build() {\n};\n__name(_DescribeIdentityPoolCommand, \"DescribeIdentityPoolCommand\");\nvar DescribeIdentityPoolCommand = _DescribeIdentityPoolCommand;\n\n// src/commands/GetCredentialsForIdentityCommand.ts\n\n\n\nvar _GetCredentialsForIdentityCommand = class _GetCredentialsForIdentityCommand extends import_smithy_client.Command.classBuilder().ep(commonParams).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"AWSCognitoIdentityService\", \"GetCredentialsForIdentity\", {}).n(\"CognitoIdentityClient\", \"GetCredentialsForIdentityCommand\").f(GetCredentialsForIdentityInputFilterSensitiveLog, GetCredentialsForIdentityResponseFilterSensitiveLog).ser(se_GetCredentialsForIdentityCommand).de(de_GetCredentialsForIdentityCommand).build() {\n};\n__name(_GetCredentialsForIdentityCommand, \"GetCredentialsForIdentityCommand\");\nvar GetCredentialsForIdentityCommand = _GetCredentialsForIdentityCommand;\n\n// src/commands/GetIdCommand.ts\n\n\n\nvar _GetIdCommand = class _GetIdCommand extends import_smithy_client.Command.classBuilder().ep(commonParams).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"AWSCognitoIdentityService\", \"GetId\", {}).n(\"CognitoIdentityClient\", \"GetIdCommand\").f(GetIdInputFilterSensitiveLog, void 0).ser(se_GetIdCommand).de(de_GetIdCommand).build() {\n};\n__name(_GetIdCommand, \"GetIdCommand\");\nvar GetIdCommand = _GetIdCommand;\n\n// src/commands/GetIdentityPoolRolesCommand.ts\n\n\n\nvar _GetIdentityPoolRolesCommand = class _GetIdentityPoolRolesCommand extends import_smithy_client.Command.classBuilder().ep(commonParams).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"AWSCognitoIdentityService\", \"GetIdentityPoolRoles\", {}).n(\"CognitoIdentityClient\", \"GetIdentityPoolRolesCommand\").f(void 0, void 0).ser(se_GetIdentityPoolRolesCommand).de(de_GetIdentityPoolRolesCommand).build() {\n};\n__name(_GetIdentityPoolRolesCommand, \"GetIdentityPoolRolesCommand\");\nvar GetIdentityPoolRolesCommand = _GetIdentityPoolRolesCommand;\n\n// src/commands/GetOpenIdTokenCommand.ts\n\n\n\nvar _GetOpenIdTokenCommand = class _GetOpenIdTokenCommand extends import_smithy_client.Command.classBuilder().ep(commonParams).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"AWSCognitoIdentityService\", \"GetOpenIdToken\", {}).n(\"CognitoIdentityClient\", \"GetOpenIdTokenCommand\").f(GetOpenIdTokenInputFilterSensitiveLog, GetOpenIdTokenResponseFilterSensitiveLog).ser(se_GetOpenIdTokenCommand).de(de_GetOpenIdTokenCommand).build() {\n};\n__name(_GetOpenIdTokenCommand, \"GetOpenIdTokenCommand\");\nvar GetOpenIdTokenCommand = _GetOpenIdTokenCommand;\n\n// src/commands/GetOpenIdTokenForDeveloperIdentityCommand.ts\n\n\n\nvar _GetOpenIdTokenForDeveloperIdentityCommand = class _GetOpenIdTokenForDeveloperIdentityCommand extends import_smithy_client.Command.classBuilder().ep(commonParams).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"AWSCognitoIdentityService\", \"GetOpenIdTokenForDeveloperIdentity\", {}).n(\"CognitoIdentityClient\", \"GetOpenIdTokenForDeveloperIdentityCommand\").f(\n GetOpenIdTokenForDeveloperIdentityInputFilterSensitiveLog,\n GetOpenIdTokenForDeveloperIdentityResponseFilterSensitiveLog\n).ser(se_GetOpenIdTokenForDeveloperIdentityCommand).de(de_GetOpenIdTokenForDeveloperIdentityCommand).build() {\n};\n__name(_GetOpenIdTokenForDeveloperIdentityCommand, \"GetOpenIdTokenForDeveloperIdentityCommand\");\nvar GetOpenIdTokenForDeveloperIdentityCommand = _GetOpenIdTokenForDeveloperIdentityCommand;\n\n// src/commands/GetPrincipalTagAttributeMapCommand.ts\n\n\n\nvar _GetPrincipalTagAttributeMapCommand = class _GetPrincipalTagAttributeMapCommand extends import_smithy_client.Command.classBuilder().ep(commonParams).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"AWSCognitoIdentityService\", \"GetPrincipalTagAttributeMap\", {}).n(\"CognitoIdentityClient\", \"GetPrincipalTagAttributeMapCommand\").f(void 0, void 0).ser(se_GetPrincipalTagAttributeMapCommand).de(de_GetPrincipalTagAttributeMapCommand).build() {\n};\n__name(_GetPrincipalTagAttributeMapCommand, \"GetPrincipalTagAttributeMapCommand\");\nvar GetPrincipalTagAttributeMapCommand = _GetPrincipalTagAttributeMapCommand;\n\n// src/commands/ListIdentitiesCommand.ts\n\n\n\nvar _ListIdentitiesCommand = class _ListIdentitiesCommand extends import_smithy_client.Command.classBuilder().ep(commonParams).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"AWSCognitoIdentityService\", \"ListIdentities\", {}).n(\"CognitoIdentityClient\", \"ListIdentitiesCommand\").f(void 0, void 0).ser(se_ListIdentitiesCommand).de(de_ListIdentitiesCommand).build() {\n};\n__name(_ListIdentitiesCommand, \"ListIdentitiesCommand\");\nvar ListIdentitiesCommand = _ListIdentitiesCommand;\n\n// src/commands/ListIdentityPoolsCommand.ts\n\n\n\nvar _ListIdentityPoolsCommand = class _ListIdentityPoolsCommand extends import_smithy_client.Command.classBuilder().ep(commonParams).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"AWSCognitoIdentityService\", \"ListIdentityPools\", {}).n(\"CognitoIdentityClient\", \"ListIdentityPoolsCommand\").f(void 0, void 0).ser(se_ListIdentityPoolsCommand).de(de_ListIdentityPoolsCommand).build() {\n};\n__name(_ListIdentityPoolsCommand, \"ListIdentityPoolsCommand\");\nvar ListIdentityPoolsCommand = _ListIdentityPoolsCommand;\n\n// src/commands/ListTagsForResourceCommand.ts\n\n\n\nvar _ListTagsForResourceCommand = class _ListTagsForResourceCommand extends import_smithy_client.Command.classBuilder().ep(commonParams).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"AWSCognitoIdentityService\", \"ListTagsForResource\", {}).n(\"CognitoIdentityClient\", \"ListTagsForResourceCommand\").f(void 0, void 0).ser(se_ListTagsForResourceCommand).de(de_ListTagsForResourceCommand).build() {\n};\n__name(_ListTagsForResourceCommand, \"ListTagsForResourceCommand\");\nvar ListTagsForResourceCommand = _ListTagsForResourceCommand;\n\n// src/commands/LookupDeveloperIdentityCommand.ts\n\n\n\nvar _LookupDeveloperIdentityCommand = class _LookupDeveloperIdentityCommand extends import_smithy_client.Command.classBuilder().ep(commonParams).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"AWSCognitoIdentityService\", \"LookupDeveloperIdentity\", {}).n(\"CognitoIdentityClient\", \"LookupDeveloperIdentityCommand\").f(void 0, void 0).ser(se_LookupDeveloperIdentityCommand).de(de_LookupDeveloperIdentityCommand).build() {\n};\n__name(_LookupDeveloperIdentityCommand, \"LookupDeveloperIdentityCommand\");\nvar LookupDeveloperIdentityCommand = _LookupDeveloperIdentityCommand;\n\n// src/commands/MergeDeveloperIdentitiesCommand.ts\n\n\n\nvar _MergeDeveloperIdentitiesCommand = class _MergeDeveloperIdentitiesCommand extends import_smithy_client.Command.classBuilder().ep(commonParams).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"AWSCognitoIdentityService\", \"MergeDeveloperIdentities\", {}).n(\"CognitoIdentityClient\", \"MergeDeveloperIdentitiesCommand\").f(void 0, void 0).ser(se_MergeDeveloperIdentitiesCommand).de(de_MergeDeveloperIdentitiesCommand).build() {\n};\n__name(_MergeDeveloperIdentitiesCommand, \"MergeDeveloperIdentitiesCommand\");\nvar MergeDeveloperIdentitiesCommand = _MergeDeveloperIdentitiesCommand;\n\n// src/commands/SetIdentityPoolRolesCommand.ts\n\n\n\nvar _SetIdentityPoolRolesCommand = class _SetIdentityPoolRolesCommand extends import_smithy_client.Command.classBuilder().ep(commonParams).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"AWSCognitoIdentityService\", \"SetIdentityPoolRoles\", {}).n(\"CognitoIdentityClient\", \"SetIdentityPoolRolesCommand\").f(void 0, void 0).ser(se_SetIdentityPoolRolesCommand).de(de_SetIdentityPoolRolesCommand).build() {\n};\n__name(_SetIdentityPoolRolesCommand, \"SetIdentityPoolRolesCommand\");\nvar SetIdentityPoolRolesCommand = _SetIdentityPoolRolesCommand;\n\n// src/commands/SetPrincipalTagAttributeMapCommand.ts\n\n\n\nvar _SetPrincipalTagAttributeMapCommand = class _SetPrincipalTagAttributeMapCommand extends import_smithy_client.Command.classBuilder().ep(commonParams).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"AWSCognitoIdentityService\", \"SetPrincipalTagAttributeMap\", {}).n(\"CognitoIdentityClient\", \"SetPrincipalTagAttributeMapCommand\").f(void 0, void 0).ser(se_SetPrincipalTagAttributeMapCommand).de(de_SetPrincipalTagAttributeMapCommand).build() {\n};\n__name(_SetPrincipalTagAttributeMapCommand, \"SetPrincipalTagAttributeMapCommand\");\nvar SetPrincipalTagAttributeMapCommand = _SetPrincipalTagAttributeMapCommand;\n\n// src/commands/TagResourceCommand.ts\n\n\n\nvar _TagResourceCommand = class _TagResourceCommand extends import_smithy_client.Command.classBuilder().ep(commonParams).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"AWSCognitoIdentityService\", \"TagResource\", {}).n(\"CognitoIdentityClient\", \"TagResourceCommand\").f(void 0, void 0).ser(se_TagResourceCommand).de(de_TagResourceCommand).build() {\n};\n__name(_TagResourceCommand, \"TagResourceCommand\");\nvar TagResourceCommand = _TagResourceCommand;\n\n// src/commands/UnlinkDeveloperIdentityCommand.ts\n\n\n\nvar _UnlinkDeveloperIdentityCommand = class _UnlinkDeveloperIdentityCommand extends import_smithy_client.Command.classBuilder().ep(commonParams).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"AWSCognitoIdentityService\", \"UnlinkDeveloperIdentity\", {}).n(\"CognitoIdentityClient\", \"UnlinkDeveloperIdentityCommand\").f(void 0, void 0).ser(se_UnlinkDeveloperIdentityCommand).de(de_UnlinkDeveloperIdentityCommand).build() {\n};\n__name(_UnlinkDeveloperIdentityCommand, \"UnlinkDeveloperIdentityCommand\");\nvar UnlinkDeveloperIdentityCommand = _UnlinkDeveloperIdentityCommand;\n\n// src/commands/UnlinkIdentityCommand.ts\n\n\n\nvar _UnlinkIdentityCommand = class _UnlinkIdentityCommand extends import_smithy_client.Command.classBuilder().ep(commonParams).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"AWSCognitoIdentityService\", \"UnlinkIdentity\", {}).n(\"CognitoIdentityClient\", \"UnlinkIdentityCommand\").f(UnlinkIdentityInputFilterSensitiveLog, void 0).ser(se_UnlinkIdentityCommand).de(de_UnlinkIdentityCommand).build() {\n};\n__name(_UnlinkIdentityCommand, \"UnlinkIdentityCommand\");\nvar UnlinkIdentityCommand = _UnlinkIdentityCommand;\n\n// src/commands/UntagResourceCommand.ts\n\n\n\nvar _UntagResourceCommand = class _UntagResourceCommand extends import_smithy_client.Command.classBuilder().ep(commonParams).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"AWSCognitoIdentityService\", \"UntagResource\", {}).n(\"CognitoIdentityClient\", \"UntagResourceCommand\").f(void 0, void 0).ser(se_UntagResourceCommand).de(de_UntagResourceCommand).build() {\n};\n__name(_UntagResourceCommand, \"UntagResourceCommand\");\nvar UntagResourceCommand = _UntagResourceCommand;\n\n// src/commands/UpdateIdentityPoolCommand.ts\n\n\n\nvar _UpdateIdentityPoolCommand = class _UpdateIdentityPoolCommand extends import_smithy_client.Command.classBuilder().ep(commonParams).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"AWSCognitoIdentityService\", \"UpdateIdentityPool\", {}).n(\"CognitoIdentityClient\", \"UpdateIdentityPoolCommand\").f(void 0, void 0).ser(se_UpdateIdentityPoolCommand).de(de_UpdateIdentityPoolCommand).build() {\n};\n__name(_UpdateIdentityPoolCommand, \"UpdateIdentityPoolCommand\");\nvar UpdateIdentityPoolCommand = _UpdateIdentityPoolCommand;\n\n// src/CognitoIdentity.ts\nvar commands = {\n CreateIdentityPoolCommand,\n DeleteIdentitiesCommand,\n DeleteIdentityPoolCommand,\n DescribeIdentityCommand,\n DescribeIdentityPoolCommand,\n GetCredentialsForIdentityCommand,\n GetIdCommand,\n GetIdentityPoolRolesCommand,\n GetOpenIdTokenCommand,\n GetOpenIdTokenForDeveloperIdentityCommand,\n GetPrincipalTagAttributeMapCommand,\n ListIdentitiesCommand,\n ListIdentityPoolsCommand,\n ListTagsForResourceCommand,\n LookupDeveloperIdentityCommand,\n MergeDeveloperIdentitiesCommand,\n SetIdentityPoolRolesCommand,\n SetPrincipalTagAttributeMapCommand,\n TagResourceCommand,\n UnlinkDeveloperIdentityCommand,\n UnlinkIdentityCommand,\n UntagResourceCommand,\n UpdateIdentityPoolCommand\n};\nvar _CognitoIdentity = class _CognitoIdentity extends CognitoIdentityClient {\n};\n__name(_CognitoIdentity, \"CognitoIdentity\");\nvar CognitoIdentity = _CognitoIdentity;\n(0, import_smithy_client.createAggregatedClient)(commands, CognitoIdentity);\n\n// src/pagination/ListIdentityPoolsPaginator.ts\n\nvar paginateListIdentityPools = (0, import_core.createPaginator)(CognitoIdentityClient, ListIdentityPoolsCommand, \"NextToken\", \"NextToken\", \"MaxResults\");\n// Annotate the CommonJS export names for ESM import in node:\n\n0 && (module.exports = {\n CognitoIdentityServiceException,\n __Client,\n CognitoIdentityClient,\n CognitoIdentity,\n $Command,\n CreateIdentityPoolCommand,\n DeleteIdentitiesCommand,\n DeleteIdentityPoolCommand,\n DescribeIdentityCommand,\n DescribeIdentityPoolCommand,\n GetCredentialsForIdentityCommand,\n GetIdCommand,\n GetIdentityPoolRolesCommand,\n GetOpenIdTokenCommand,\n GetOpenIdTokenForDeveloperIdentityCommand,\n GetPrincipalTagAttributeMapCommand,\n ListIdentitiesCommand,\n ListIdentityPoolsCommand,\n ListTagsForResourceCommand,\n LookupDeveloperIdentityCommand,\n MergeDeveloperIdentitiesCommand,\n SetIdentityPoolRolesCommand,\n SetPrincipalTagAttributeMapCommand,\n TagResourceCommand,\n UnlinkDeveloperIdentityCommand,\n UnlinkIdentityCommand,\n UntagResourceCommand,\n UpdateIdentityPoolCommand,\n paginateListIdentityPools,\n AmbiguousRoleResolutionType,\n InternalErrorException,\n InvalidParameterException,\n LimitExceededException,\n NotAuthorizedException,\n ResourceConflictException,\n TooManyRequestsException,\n ErrorCode,\n ResourceNotFoundException,\n ExternalServiceException,\n InvalidIdentityPoolConfigurationException,\n MappingRuleMatchType,\n RoleMappingType,\n DeveloperUserAlreadyRegisteredException,\n ConcurrentModificationException,\n GetCredentialsForIdentityInputFilterSensitiveLog,\n CredentialsFilterSensitiveLog,\n GetCredentialsForIdentityResponseFilterSensitiveLog,\n GetIdInputFilterSensitiveLog,\n GetOpenIdTokenInputFilterSensitiveLog,\n GetOpenIdTokenResponseFilterSensitiveLog,\n GetOpenIdTokenForDeveloperIdentityInputFilterSensitiveLog,\n GetOpenIdTokenForDeveloperIdentityResponseFilterSensitiveLog,\n UnlinkIdentityInputFilterSensitiveLog\n});\n\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getRuntimeConfig = void 0;\nconst tslib_1 = require(\"tslib\");\nconst package_json_1 = tslib_1.__importDefault(require(\"../package.json\"));\nconst core_1 = require(\"@aws-sdk/core\");\nconst credential_provider_node_1 = require(\"@aws-sdk/credential-provider-node\");\nconst util_user_agent_node_1 = require(\"@aws-sdk/util-user-agent-node\");\nconst config_resolver_1 = require(\"@smithy/config-resolver\");\nconst hash_node_1 = require(\"@smithy/hash-node\");\nconst middleware_retry_1 = require(\"@smithy/middleware-retry\");\nconst node_config_provider_1 = require(\"@smithy/node-config-provider\");\nconst node_http_handler_1 = require(\"@smithy/node-http-handler\");\nconst util_body_length_node_1 = require(\"@smithy/util-body-length-node\");\nconst util_retry_1 = require(\"@smithy/util-retry\");\nconst runtimeConfig_shared_1 = require(\"./runtimeConfig.shared\");\nconst smithy_client_1 = require(\"@smithy/smithy-client\");\nconst util_defaults_mode_node_1 = require(\"@smithy/util-defaults-mode-node\");\nconst smithy_client_2 = require(\"@smithy/smithy-client\");\nconst getRuntimeConfig = (config) => {\n (0, smithy_client_2.emitWarningIfUnsupportedVersion)(process.version);\n const defaultsMode = (0, util_defaults_mode_node_1.resolveDefaultsModeConfig)(config);\n const defaultConfigProvider = () => defaultsMode().then(smithy_client_1.loadConfigsForDefaultMode);\n const clientSharedValues = (0, runtimeConfig_shared_1.getRuntimeConfig)(config);\n (0, core_1.emitWarningIfUnsupportedVersion)(process.version);\n return {\n ...clientSharedValues,\n ...config,\n runtime: \"node\",\n defaultsMode,\n bodyLengthChecker: config?.bodyLengthChecker ?? util_body_length_node_1.calculateBodyLength,\n credentialDefaultProvider: config?.credentialDefaultProvider ?? credential_provider_node_1.defaultProvider,\n defaultUserAgentProvider: config?.defaultUserAgentProvider ??\n (0, util_user_agent_node_1.defaultUserAgent)({ serviceId: clientSharedValues.serviceId, clientVersion: package_json_1.default.version }),\n maxAttempts: config?.maxAttempts ?? (0, node_config_provider_1.loadConfig)(middleware_retry_1.NODE_MAX_ATTEMPT_CONFIG_OPTIONS),\n region: config?.region ?? (0, node_config_provider_1.loadConfig)(config_resolver_1.NODE_REGION_CONFIG_OPTIONS, config_resolver_1.NODE_REGION_CONFIG_FILE_OPTIONS),\n requestHandler: node_http_handler_1.NodeHttpHandler.create(config?.requestHandler ?? defaultConfigProvider),\n retryMode: config?.retryMode ??\n (0, node_config_provider_1.loadConfig)({\n ...middleware_retry_1.NODE_RETRY_MODE_CONFIG_OPTIONS,\n default: async () => (await defaultConfigProvider()).retryMode || util_retry_1.DEFAULT_RETRY_MODE,\n }),\n sha256: config?.sha256 ?? hash_node_1.Hash.bind(null, \"sha256\"),\n streamCollector: config?.streamCollector ?? node_http_handler_1.streamCollector,\n useDualstackEndpoint: config?.useDualstackEndpoint ?? (0, node_config_provider_1.loadConfig)(config_resolver_1.NODE_USE_DUALSTACK_ENDPOINT_CONFIG_OPTIONS),\n useFipsEndpoint: config?.useFipsEndpoint ?? (0, node_config_provider_1.loadConfig)(config_resolver_1.NODE_USE_FIPS_ENDPOINT_CONFIG_OPTIONS),\n userAgentAppId: config?.userAgentAppId ?? (0, node_config_provider_1.loadConfig)(util_user_agent_node_1.NODE_APP_ID_CONFIG_OPTIONS),\n };\n};\nexports.getRuntimeConfig = getRuntimeConfig;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getRuntimeConfig = void 0;\nconst core_1 = require(\"@aws-sdk/core\");\nconst core_2 = require(\"@smithy/core\");\nconst smithy_client_1 = require(\"@smithy/smithy-client\");\nconst url_parser_1 = require(\"@smithy/url-parser\");\nconst util_base64_1 = require(\"@smithy/util-base64\");\nconst util_utf8_1 = require(\"@smithy/util-utf8\");\nconst httpAuthSchemeProvider_1 = require(\"./auth/httpAuthSchemeProvider\");\nconst endpointResolver_1 = require(\"./endpoint/endpointResolver\");\nconst getRuntimeConfig = (config) => {\n return {\n apiVersion: \"2014-06-30\",\n base64Decoder: config?.base64Decoder ?? util_base64_1.fromBase64,\n base64Encoder: config?.base64Encoder ?? util_base64_1.toBase64,\n disableHostPrefix: config?.disableHostPrefix ?? false,\n endpointProvider: config?.endpointProvider ?? endpointResolver_1.defaultEndpointResolver,\n extensions: config?.extensions ?? [],\n httpAuthSchemeProvider: config?.httpAuthSchemeProvider ?? httpAuthSchemeProvider_1.defaultCognitoIdentityHttpAuthSchemeProvider,\n httpAuthSchemes: config?.httpAuthSchemes ?? [\n {\n schemeId: \"aws.auth#sigv4\",\n identityProvider: (ipc) => ipc.getIdentityProvider(\"aws.auth#sigv4\"),\n signer: new core_1.AwsSdkSigV4Signer(),\n },\n {\n schemeId: \"smithy.api#noAuth\",\n identityProvider: (ipc) => ipc.getIdentityProvider(\"smithy.api#noAuth\") || (async () => ({})),\n signer: new core_2.NoAuthSigner(),\n },\n ],\n logger: config?.logger ?? new smithy_client_1.NoOpLogger(),\n serviceId: config?.serviceId ?? \"Cognito Identity\",\n urlParser: config?.urlParser ?? url_parser_1.parseUrl,\n utf8Decoder: config?.utf8Decoder ?? util_utf8_1.fromUtf8,\n utf8Encoder: config?.utf8Encoder ?? util_utf8_1.toUtf8,\n };\n};\nexports.getRuntimeConfig = getRuntimeConfig;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.resolveHttpAuthSchemeConfig = exports.defaultSSOOIDCHttpAuthSchemeProvider = exports.defaultSSOOIDCHttpAuthSchemeParametersProvider = void 0;\nconst core_1 = require(\"@aws-sdk/core\");\nconst util_middleware_1 = require(\"@smithy/util-middleware\");\nconst defaultSSOOIDCHttpAuthSchemeParametersProvider = async (config, context, input) => {\n return {\n operation: (0, util_middleware_1.getSmithyContext)(context).operation,\n region: (await (0, util_middleware_1.normalizeProvider)(config.region)()) ||\n (() => {\n throw new Error(\"expected `region` to be configured for `aws.auth#sigv4`\");\n })(),\n };\n};\nexports.defaultSSOOIDCHttpAuthSchemeParametersProvider = defaultSSOOIDCHttpAuthSchemeParametersProvider;\nfunction createAwsAuthSigv4HttpAuthOption(authParameters) {\n return {\n schemeId: \"aws.auth#sigv4\",\n signingProperties: {\n name: \"sso-oauth\",\n region: authParameters.region,\n },\n propertiesExtractor: (config, context) => ({\n signingProperties: {\n config,\n context,\n },\n }),\n };\n}\nfunction createSmithyApiNoAuthHttpAuthOption(authParameters) {\n return {\n schemeId: \"smithy.api#noAuth\",\n };\n}\nconst defaultSSOOIDCHttpAuthSchemeProvider = (authParameters) => {\n const options = [];\n switch (authParameters.operation) {\n case \"CreateToken\": {\n options.push(createSmithyApiNoAuthHttpAuthOption(authParameters));\n break;\n }\n case \"RegisterClient\": {\n options.push(createSmithyApiNoAuthHttpAuthOption(authParameters));\n break;\n }\n case \"StartDeviceAuthorization\": {\n options.push(createSmithyApiNoAuthHttpAuthOption(authParameters));\n break;\n }\n default: {\n options.push(createAwsAuthSigv4HttpAuthOption(authParameters));\n }\n }\n return options;\n};\nexports.defaultSSOOIDCHttpAuthSchemeProvider = defaultSSOOIDCHttpAuthSchemeProvider;\nconst resolveHttpAuthSchemeConfig = (config) => {\n const config_0 = (0, core_1.resolveAwsSdkSigV4Config)(config);\n return {\n ...config_0,\n };\n};\nexports.resolveHttpAuthSchemeConfig = resolveHttpAuthSchemeConfig;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.defaultEndpointResolver = void 0;\nconst util_endpoints_1 = require(\"@aws-sdk/util-endpoints\");\nconst util_endpoints_2 = require(\"@smithy/util-endpoints\");\nconst ruleset_1 = require(\"./ruleset\");\nconst cache = new util_endpoints_2.EndpointCache({\n size: 50,\n params: [\"Endpoint\", \"Region\", \"UseDualStack\", \"UseFIPS\"],\n});\nconst defaultEndpointResolver = (endpointParams, context = {}) => {\n return cache.get(endpointParams, () => (0, util_endpoints_2.resolveEndpoint)(ruleset_1.ruleSet, {\n endpointParams: endpointParams,\n logger: context.logger,\n }));\n};\nexports.defaultEndpointResolver = defaultEndpointResolver;\nutil_endpoints_2.customEndpointFunctions.aws = util_endpoints_1.awsEndpointFunctions;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ruleSet = void 0;\nconst u = \"required\", v = \"fn\", w = \"argv\", x = \"ref\";\nconst a = true, b = \"isSet\", c = \"booleanEquals\", d = \"error\", e = \"endpoint\", f = \"tree\", g = \"PartitionResult\", h = \"getAttr\", i = { [u]: false, \"type\": \"String\" }, j = { [u]: true, \"default\": false, \"type\": \"Boolean\" }, k = { [x]: \"Endpoint\" }, l = { [v]: c, [w]: [{ [x]: \"UseFIPS\" }, true] }, m = { [v]: c, [w]: [{ [x]: \"UseDualStack\" }, true] }, n = {}, o = { [v]: h, [w]: [{ [x]: g }, \"supportsFIPS\"] }, p = { [x]: g }, q = { [v]: c, [w]: [true, { [v]: h, [w]: [p, \"supportsDualStack\"] }] }, r = [l], s = [m], t = [{ [x]: \"Region\" }];\nconst _data = { version: \"1.0\", parameters: { Region: i, UseDualStack: j, UseFIPS: j, Endpoint: i }, rules: [{ conditions: [{ [v]: b, [w]: [k] }], rules: [{ conditions: r, error: \"Invalid Configuration: FIPS and custom endpoint are not supported\", type: d }, { conditions: s, error: \"Invalid Configuration: Dualstack and custom endpoint are not supported\", type: d }, { endpoint: { url: k, properties: n, headers: n }, type: e }], type: f }, { conditions: [{ [v]: b, [w]: t }], rules: [{ conditions: [{ [v]: \"aws.partition\", [w]: t, assign: g }], rules: [{ conditions: [l, m], rules: [{ conditions: [{ [v]: c, [w]: [a, o] }, q], rules: [{ endpoint: { url: \"https://oidc-fips.{Region}.{PartitionResult#dualStackDnsSuffix}\", properties: n, headers: n }, type: e }], type: f }, { error: \"FIPS and DualStack are enabled, but this partition does not support one or both\", type: d }], type: f }, { conditions: r, rules: [{ conditions: [{ [v]: c, [w]: [o, a] }], rules: [{ conditions: [{ [v]: \"stringEquals\", [w]: [{ [v]: h, [w]: [p, \"name\"] }, \"aws-us-gov\"] }], endpoint: { url: \"https://oidc.{Region}.amazonaws.com\", properties: n, headers: n }, type: e }, { endpoint: { url: \"https://oidc-fips.{Region}.{PartitionResult#dnsSuffix}\", properties: n, headers: n }, type: e }], type: f }, { error: \"FIPS is enabled but this partition does not support FIPS\", type: d }], type: f }, { conditions: s, rules: [{ conditions: [q], rules: [{ endpoint: { url: \"https://oidc.{Region}.{PartitionResult#dualStackDnsSuffix}\", properties: n, headers: n }, type: e }], type: f }, { error: \"DualStack is enabled but this partition does not support DualStack\", type: d }], type: f }, { endpoint: { url: \"https://oidc.{Region}.{PartitionResult#dnsSuffix}\", properties: n, headers: n }, type: e }], type: f }], type: f }, { error: \"Invalid Configuration: Missing Region\", type: d }] };\nexports.ruleSet = _data;\n","\"use strict\";\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/index.ts\nvar src_exports = {};\n__export(src_exports, {\n AccessDeniedException: () => AccessDeniedException,\n AuthorizationPendingException: () => AuthorizationPendingException,\n CreateTokenCommand: () => CreateTokenCommand,\n CreateTokenRequestFilterSensitiveLog: () => CreateTokenRequestFilterSensitiveLog,\n CreateTokenResponseFilterSensitiveLog: () => CreateTokenResponseFilterSensitiveLog,\n CreateTokenWithIAMCommand: () => CreateTokenWithIAMCommand,\n CreateTokenWithIAMRequestFilterSensitiveLog: () => CreateTokenWithIAMRequestFilterSensitiveLog,\n CreateTokenWithIAMResponseFilterSensitiveLog: () => CreateTokenWithIAMResponseFilterSensitiveLog,\n ExpiredTokenException: () => ExpiredTokenException,\n InternalServerException: () => InternalServerException,\n InvalidClientException: () => InvalidClientException,\n InvalidClientMetadataException: () => InvalidClientMetadataException,\n InvalidGrantException: () => InvalidGrantException,\n InvalidRedirectUriException: () => InvalidRedirectUriException,\n InvalidRequestException: () => InvalidRequestException,\n InvalidRequestRegionException: () => InvalidRequestRegionException,\n InvalidScopeException: () => InvalidScopeException,\n RegisterClientCommand: () => RegisterClientCommand,\n RegisterClientResponseFilterSensitiveLog: () => RegisterClientResponseFilterSensitiveLog,\n SSOOIDC: () => SSOOIDC,\n SSOOIDCClient: () => SSOOIDCClient,\n SSOOIDCServiceException: () => SSOOIDCServiceException,\n SlowDownException: () => SlowDownException,\n StartDeviceAuthorizationCommand: () => StartDeviceAuthorizationCommand,\n StartDeviceAuthorizationRequestFilterSensitiveLog: () => StartDeviceAuthorizationRequestFilterSensitiveLog,\n UnauthorizedClientException: () => UnauthorizedClientException,\n UnsupportedGrantTypeException: () => UnsupportedGrantTypeException,\n __Client: () => import_smithy_client.Client\n});\nmodule.exports = __toCommonJS(src_exports);\n\n// src/SSOOIDCClient.ts\nvar import_middleware_host_header = require(\"@aws-sdk/middleware-host-header\");\nvar import_middleware_logger = require(\"@aws-sdk/middleware-logger\");\nvar import_middleware_recursion_detection = require(\"@aws-sdk/middleware-recursion-detection\");\nvar import_middleware_user_agent = require(\"@aws-sdk/middleware-user-agent\");\nvar import_config_resolver = require(\"@smithy/config-resolver\");\nvar import_core = require(\"@smithy/core\");\nvar import_middleware_content_length = require(\"@smithy/middleware-content-length\");\nvar import_middleware_endpoint = require(\"@smithy/middleware-endpoint\");\nvar import_middleware_retry = require(\"@smithy/middleware-retry\");\n\nvar import_httpAuthSchemeProvider = require(\"./auth/httpAuthSchemeProvider\");\n\n// src/endpoint/EndpointParameters.ts\nvar resolveClientEndpointParameters = /* @__PURE__ */ __name((options) => {\n return {\n ...options,\n useDualstackEndpoint: options.useDualstackEndpoint ?? false,\n useFipsEndpoint: options.useFipsEndpoint ?? false,\n defaultSigningName: \"sso-oauth\"\n };\n}, \"resolveClientEndpointParameters\");\nvar commonParams = {\n UseFIPS: { type: \"builtInParams\", name: \"useFipsEndpoint\" },\n Endpoint: { type: \"builtInParams\", name: \"endpoint\" },\n Region: { type: \"builtInParams\", name: \"region\" },\n UseDualStack: { type: \"builtInParams\", name: \"useDualstackEndpoint\" }\n};\n\n// src/SSOOIDCClient.ts\nvar import_runtimeConfig = require(\"././runtimeConfig\");\n\n// src/runtimeExtensions.ts\nvar import_region_config_resolver = require(\"@aws-sdk/region-config-resolver\");\nvar import_protocol_http = require(\"@smithy/protocol-http\");\nvar import_smithy_client = require(\"@smithy/smithy-client\");\n\n// src/auth/httpAuthExtensionConfiguration.ts\nvar getHttpAuthExtensionConfiguration = /* @__PURE__ */ __name((runtimeConfig) => {\n const _httpAuthSchemes = runtimeConfig.httpAuthSchemes;\n let _httpAuthSchemeProvider = runtimeConfig.httpAuthSchemeProvider;\n let _credentials = runtimeConfig.credentials;\n return {\n setHttpAuthScheme(httpAuthScheme) {\n const index = _httpAuthSchemes.findIndex((scheme) => scheme.schemeId === httpAuthScheme.schemeId);\n if (index === -1) {\n _httpAuthSchemes.push(httpAuthScheme);\n } else {\n _httpAuthSchemes.splice(index, 1, httpAuthScheme);\n }\n },\n httpAuthSchemes() {\n return _httpAuthSchemes;\n },\n setHttpAuthSchemeProvider(httpAuthSchemeProvider) {\n _httpAuthSchemeProvider = httpAuthSchemeProvider;\n },\n httpAuthSchemeProvider() {\n return _httpAuthSchemeProvider;\n },\n setCredentials(credentials) {\n _credentials = credentials;\n },\n credentials() {\n return _credentials;\n }\n };\n}, \"getHttpAuthExtensionConfiguration\");\nvar resolveHttpAuthRuntimeConfig = /* @__PURE__ */ __name((config) => {\n return {\n httpAuthSchemes: config.httpAuthSchemes(),\n httpAuthSchemeProvider: config.httpAuthSchemeProvider(),\n credentials: config.credentials()\n };\n}, \"resolveHttpAuthRuntimeConfig\");\n\n// src/runtimeExtensions.ts\nvar asPartial = /* @__PURE__ */ __name((t) => t, \"asPartial\");\nvar resolveRuntimeExtensions = /* @__PURE__ */ __name((runtimeConfig, extensions) => {\n const extensionConfiguration = {\n ...asPartial((0, import_region_config_resolver.getAwsRegionExtensionConfiguration)(runtimeConfig)),\n ...asPartial((0, import_smithy_client.getDefaultExtensionConfiguration)(runtimeConfig)),\n ...asPartial((0, import_protocol_http.getHttpHandlerExtensionConfiguration)(runtimeConfig)),\n ...asPartial(getHttpAuthExtensionConfiguration(runtimeConfig))\n };\n extensions.forEach((extension) => extension.configure(extensionConfiguration));\n return {\n ...runtimeConfig,\n ...(0, import_region_config_resolver.resolveAwsRegionExtensionConfiguration)(extensionConfiguration),\n ...(0, import_smithy_client.resolveDefaultRuntimeConfig)(extensionConfiguration),\n ...(0, import_protocol_http.resolveHttpHandlerRuntimeConfig)(extensionConfiguration),\n ...resolveHttpAuthRuntimeConfig(extensionConfiguration)\n };\n}, \"resolveRuntimeExtensions\");\n\n// src/SSOOIDCClient.ts\nvar _SSOOIDCClient = class _SSOOIDCClient extends import_smithy_client.Client {\n constructor(...[configuration]) {\n const _config_0 = (0, import_runtimeConfig.getRuntimeConfig)(configuration || {});\n const _config_1 = resolveClientEndpointParameters(_config_0);\n const _config_2 = (0, import_middleware_user_agent.resolveUserAgentConfig)(_config_1);\n const _config_3 = (0, import_middleware_retry.resolveRetryConfig)(_config_2);\n const _config_4 = (0, import_config_resolver.resolveRegionConfig)(_config_3);\n const _config_5 = (0, import_middleware_host_header.resolveHostHeaderConfig)(_config_4);\n const _config_6 = (0, import_middleware_endpoint.resolveEndpointConfig)(_config_5);\n const _config_7 = (0, import_httpAuthSchemeProvider.resolveHttpAuthSchemeConfig)(_config_6);\n const _config_8 = resolveRuntimeExtensions(_config_7, (configuration == null ? void 0 : configuration.extensions) || []);\n super(_config_8);\n this.config = _config_8;\n this.middlewareStack.use((0, import_middleware_user_agent.getUserAgentPlugin)(this.config));\n this.middlewareStack.use((0, import_middleware_retry.getRetryPlugin)(this.config));\n this.middlewareStack.use((0, import_middleware_content_length.getContentLengthPlugin)(this.config));\n this.middlewareStack.use((0, import_middleware_host_header.getHostHeaderPlugin)(this.config));\n this.middlewareStack.use((0, import_middleware_logger.getLoggerPlugin)(this.config));\n this.middlewareStack.use((0, import_middleware_recursion_detection.getRecursionDetectionPlugin)(this.config));\n this.middlewareStack.use(\n (0, import_core.getHttpAuthSchemeEndpointRuleSetPlugin)(this.config, {\n httpAuthSchemeParametersProvider: import_httpAuthSchemeProvider.defaultSSOOIDCHttpAuthSchemeParametersProvider,\n identityProviderConfigProvider: async (config) => new import_core.DefaultIdentityProviderConfig({\n \"aws.auth#sigv4\": config.credentials\n })\n })\n );\n this.middlewareStack.use((0, import_core.getHttpSigningPlugin)(this.config));\n }\n /**\n * Destroy underlying resources, like sockets. It's usually not necessary to do this.\n * However in Node.js, it's best to explicitly shut down the client's agent when it is no longer needed.\n * Otherwise, sockets might stay open for quite a long time before the server terminates them.\n */\n destroy() {\n super.destroy();\n }\n};\n__name(_SSOOIDCClient, \"SSOOIDCClient\");\nvar SSOOIDCClient = _SSOOIDCClient;\n\n// src/SSOOIDC.ts\n\n\n// src/commands/CreateTokenCommand.ts\n\nvar import_middleware_serde = require(\"@smithy/middleware-serde\");\n\n\n// src/models/models_0.ts\n\n\n// src/models/SSOOIDCServiceException.ts\n\nvar _SSOOIDCServiceException = class _SSOOIDCServiceException extends import_smithy_client.ServiceException {\n /**\n * @internal\n */\n constructor(options) {\n super(options);\n Object.setPrototypeOf(this, _SSOOIDCServiceException.prototype);\n }\n};\n__name(_SSOOIDCServiceException, \"SSOOIDCServiceException\");\nvar SSOOIDCServiceException = _SSOOIDCServiceException;\n\n// src/models/models_0.ts\nvar _AccessDeniedException = class _AccessDeniedException extends SSOOIDCServiceException {\n /**\n * @internal\n */\n constructor(opts) {\n super({\n name: \"AccessDeniedException\",\n $fault: \"client\",\n ...opts\n });\n this.name = \"AccessDeniedException\";\n this.$fault = \"client\";\n Object.setPrototypeOf(this, _AccessDeniedException.prototype);\n this.error = opts.error;\n this.error_description = opts.error_description;\n }\n};\n__name(_AccessDeniedException, \"AccessDeniedException\");\nvar AccessDeniedException = _AccessDeniedException;\nvar _AuthorizationPendingException = class _AuthorizationPendingException extends SSOOIDCServiceException {\n /**\n * @internal\n */\n constructor(opts) {\n super({\n name: \"AuthorizationPendingException\",\n $fault: \"client\",\n ...opts\n });\n this.name = \"AuthorizationPendingException\";\n this.$fault = \"client\";\n Object.setPrototypeOf(this, _AuthorizationPendingException.prototype);\n this.error = opts.error;\n this.error_description = opts.error_description;\n }\n};\n__name(_AuthorizationPendingException, \"AuthorizationPendingException\");\nvar AuthorizationPendingException = _AuthorizationPendingException;\nvar _ExpiredTokenException = class _ExpiredTokenException extends SSOOIDCServiceException {\n /**\n * @internal\n */\n constructor(opts) {\n super({\n name: \"ExpiredTokenException\",\n $fault: \"client\",\n ...opts\n });\n this.name = \"ExpiredTokenException\";\n this.$fault = \"client\";\n Object.setPrototypeOf(this, _ExpiredTokenException.prototype);\n this.error = opts.error;\n this.error_description = opts.error_description;\n }\n};\n__name(_ExpiredTokenException, \"ExpiredTokenException\");\nvar ExpiredTokenException = _ExpiredTokenException;\nvar _InternalServerException = class _InternalServerException extends SSOOIDCServiceException {\n /**\n * @internal\n */\n constructor(opts) {\n super({\n name: \"InternalServerException\",\n $fault: \"server\",\n ...opts\n });\n this.name = \"InternalServerException\";\n this.$fault = \"server\";\n Object.setPrototypeOf(this, _InternalServerException.prototype);\n this.error = opts.error;\n this.error_description = opts.error_description;\n }\n};\n__name(_InternalServerException, \"InternalServerException\");\nvar InternalServerException = _InternalServerException;\nvar _InvalidClientException = class _InvalidClientException extends SSOOIDCServiceException {\n /**\n * @internal\n */\n constructor(opts) {\n super({\n name: \"InvalidClientException\",\n $fault: \"client\",\n ...opts\n });\n this.name = \"InvalidClientException\";\n this.$fault = \"client\";\n Object.setPrototypeOf(this, _InvalidClientException.prototype);\n this.error = opts.error;\n this.error_description = opts.error_description;\n }\n};\n__name(_InvalidClientException, \"InvalidClientException\");\nvar InvalidClientException = _InvalidClientException;\nvar _InvalidGrantException = class _InvalidGrantException extends SSOOIDCServiceException {\n /**\n * @internal\n */\n constructor(opts) {\n super({\n name: \"InvalidGrantException\",\n $fault: \"client\",\n ...opts\n });\n this.name = \"InvalidGrantException\";\n this.$fault = \"client\";\n Object.setPrototypeOf(this, _InvalidGrantException.prototype);\n this.error = opts.error;\n this.error_description = opts.error_description;\n }\n};\n__name(_InvalidGrantException, \"InvalidGrantException\");\nvar InvalidGrantException = _InvalidGrantException;\nvar _InvalidRequestException = class _InvalidRequestException extends SSOOIDCServiceException {\n /**\n * @internal\n */\n constructor(opts) {\n super({\n name: \"InvalidRequestException\",\n $fault: \"client\",\n ...opts\n });\n this.name = \"InvalidRequestException\";\n this.$fault = \"client\";\n Object.setPrototypeOf(this, _InvalidRequestException.prototype);\n this.error = opts.error;\n this.error_description = opts.error_description;\n }\n};\n__name(_InvalidRequestException, \"InvalidRequestException\");\nvar InvalidRequestException = _InvalidRequestException;\nvar _InvalidScopeException = class _InvalidScopeException extends SSOOIDCServiceException {\n /**\n * @internal\n */\n constructor(opts) {\n super({\n name: \"InvalidScopeException\",\n $fault: \"client\",\n ...opts\n });\n this.name = \"InvalidScopeException\";\n this.$fault = \"client\";\n Object.setPrototypeOf(this, _InvalidScopeException.prototype);\n this.error = opts.error;\n this.error_description = opts.error_description;\n }\n};\n__name(_InvalidScopeException, \"InvalidScopeException\");\nvar InvalidScopeException = _InvalidScopeException;\nvar _SlowDownException = class _SlowDownException extends SSOOIDCServiceException {\n /**\n * @internal\n */\n constructor(opts) {\n super({\n name: \"SlowDownException\",\n $fault: \"client\",\n ...opts\n });\n this.name = \"SlowDownException\";\n this.$fault = \"client\";\n Object.setPrototypeOf(this, _SlowDownException.prototype);\n this.error = opts.error;\n this.error_description = opts.error_description;\n }\n};\n__name(_SlowDownException, \"SlowDownException\");\nvar SlowDownException = _SlowDownException;\nvar _UnauthorizedClientException = class _UnauthorizedClientException extends SSOOIDCServiceException {\n /**\n * @internal\n */\n constructor(opts) {\n super({\n name: \"UnauthorizedClientException\",\n $fault: \"client\",\n ...opts\n });\n this.name = \"UnauthorizedClientException\";\n this.$fault = \"client\";\n Object.setPrototypeOf(this, _UnauthorizedClientException.prototype);\n this.error = opts.error;\n this.error_description = opts.error_description;\n }\n};\n__name(_UnauthorizedClientException, \"UnauthorizedClientException\");\nvar UnauthorizedClientException = _UnauthorizedClientException;\nvar _UnsupportedGrantTypeException = class _UnsupportedGrantTypeException extends SSOOIDCServiceException {\n /**\n * @internal\n */\n constructor(opts) {\n super({\n name: \"UnsupportedGrantTypeException\",\n $fault: \"client\",\n ...opts\n });\n this.name = \"UnsupportedGrantTypeException\";\n this.$fault = \"client\";\n Object.setPrototypeOf(this, _UnsupportedGrantTypeException.prototype);\n this.error = opts.error;\n this.error_description = opts.error_description;\n }\n};\n__name(_UnsupportedGrantTypeException, \"UnsupportedGrantTypeException\");\nvar UnsupportedGrantTypeException = _UnsupportedGrantTypeException;\nvar _InvalidRequestRegionException = class _InvalidRequestRegionException extends SSOOIDCServiceException {\n /**\n * @internal\n */\n constructor(opts) {\n super({\n name: \"InvalidRequestRegionException\",\n $fault: \"client\",\n ...opts\n });\n this.name = \"InvalidRequestRegionException\";\n this.$fault = \"client\";\n Object.setPrototypeOf(this, _InvalidRequestRegionException.prototype);\n this.error = opts.error;\n this.error_description = opts.error_description;\n this.endpoint = opts.endpoint;\n this.region = opts.region;\n }\n};\n__name(_InvalidRequestRegionException, \"InvalidRequestRegionException\");\nvar InvalidRequestRegionException = _InvalidRequestRegionException;\nvar _InvalidClientMetadataException = class _InvalidClientMetadataException extends SSOOIDCServiceException {\n /**\n * @internal\n */\n constructor(opts) {\n super({\n name: \"InvalidClientMetadataException\",\n $fault: \"client\",\n ...opts\n });\n this.name = \"InvalidClientMetadataException\";\n this.$fault = \"client\";\n Object.setPrototypeOf(this, _InvalidClientMetadataException.prototype);\n this.error = opts.error;\n this.error_description = opts.error_description;\n }\n};\n__name(_InvalidClientMetadataException, \"InvalidClientMetadataException\");\nvar InvalidClientMetadataException = _InvalidClientMetadataException;\nvar _InvalidRedirectUriException = class _InvalidRedirectUriException extends SSOOIDCServiceException {\n /**\n * @internal\n */\n constructor(opts) {\n super({\n name: \"InvalidRedirectUriException\",\n $fault: \"client\",\n ...opts\n });\n this.name = \"InvalidRedirectUriException\";\n this.$fault = \"client\";\n Object.setPrototypeOf(this, _InvalidRedirectUriException.prototype);\n this.error = opts.error;\n this.error_description = opts.error_description;\n }\n};\n__name(_InvalidRedirectUriException, \"InvalidRedirectUriException\");\nvar InvalidRedirectUriException = _InvalidRedirectUriException;\nvar CreateTokenRequestFilterSensitiveLog = /* @__PURE__ */ __name((obj) => ({\n ...obj,\n ...obj.clientSecret && { clientSecret: import_smithy_client.SENSITIVE_STRING },\n ...obj.refreshToken && { refreshToken: import_smithy_client.SENSITIVE_STRING },\n ...obj.codeVerifier && { codeVerifier: import_smithy_client.SENSITIVE_STRING }\n}), \"CreateTokenRequestFilterSensitiveLog\");\nvar CreateTokenResponseFilterSensitiveLog = /* @__PURE__ */ __name((obj) => ({\n ...obj,\n ...obj.accessToken && { accessToken: import_smithy_client.SENSITIVE_STRING },\n ...obj.refreshToken && { refreshToken: import_smithy_client.SENSITIVE_STRING },\n ...obj.idToken && { idToken: import_smithy_client.SENSITIVE_STRING }\n}), \"CreateTokenResponseFilterSensitiveLog\");\nvar CreateTokenWithIAMRequestFilterSensitiveLog = /* @__PURE__ */ __name((obj) => ({\n ...obj,\n ...obj.refreshToken && { refreshToken: import_smithy_client.SENSITIVE_STRING },\n ...obj.assertion && { assertion: import_smithy_client.SENSITIVE_STRING },\n ...obj.subjectToken && { subjectToken: import_smithy_client.SENSITIVE_STRING },\n ...obj.codeVerifier && { codeVerifier: import_smithy_client.SENSITIVE_STRING }\n}), \"CreateTokenWithIAMRequestFilterSensitiveLog\");\nvar CreateTokenWithIAMResponseFilterSensitiveLog = /* @__PURE__ */ __name((obj) => ({\n ...obj,\n ...obj.accessToken && { accessToken: import_smithy_client.SENSITIVE_STRING },\n ...obj.refreshToken && { refreshToken: import_smithy_client.SENSITIVE_STRING },\n ...obj.idToken && { idToken: import_smithy_client.SENSITIVE_STRING }\n}), \"CreateTokenWithIAMResponseFilterSensitiveLog\");\nvar RegisterClientResponseFilterSensitiveLog = /* @__PURE__ */ __name((obj) => ({\n ...obj,\n ...obj.clientSecret && { clientSecret: import_smithy_client.SENSITIVE_STRING }\n}), \"RegisterClientResponseFilterSensitiveLog\");\nvar StartDeviceAuthorizationRequestFilterSensitiveLog = /* @__PURE__ */ __name((obj) => ({\n ...obj,\n ...obj.clientSecret && { clientSecret: import_smithy_client.SENSITIVE_STRING }\n}), \"StartDeviceAuthorizationRequestFilterSensitiveLog\");\n\n// src/protocols/Aws_restJson1.ts\nvar import_core2 = require(\"@aws-sdk/core\");\n\n\nvar se_CreateTokenCommand = /* @__PURE__ */ __name(async (input, context) => {\n const b = (0, import_core.requestBuilder)(input, context);\n const headers = {\n \"content-type\": \"application/json\"\n };\n b.bp(\"/token\");\n let body;\n body = JSON.stringify(\n (0, import_smithy_client.take)(input, {\n clientId: [],\n clientSecret: [],\n code: [],\n codeVerifier: [],\n deviceCode: [],\n grantType: [],\n redirectUri: [],\n refreshToken: [],\n scope: (_) => (0, import_smithy_client._json)(_)\n })\n );\n b.m(\"POST\").h(headers).b(body);\n return b.build();\n}, \"se_CreateTokenCommand\");\nvar se_CreateTokenWithIAMCommand = /* @__PURE__ */ __name(async (input, context) => {\n const b = (0, import_core.requestBuilder)(input, context);\n const headers = {\n \"content-type\": \"application/json\"\n };\n b.bp(\"/token\");\n const query = (0, import_smithy_client.map)({\n [_ai]: [, \"t\"]\n });\n let body;\n body = JSON.stringify(\n (0, import_smithy_client.take)(input, {\n assertion: [],\n clientId: [],\n code: [],\n codeVerifier: [],\n grantType: [],\n redirectUri: [],\n refreshToken: [],\n requestedTokenType: [],\n scope: (_) => (0, import_smithy_client._json)(_),\n subjectToken: [],\n subjectTokenType: []\n })\n );\n b.m(\"POST\").h(headers).q(query).b(body);\n return b.build();\n}, \"se_CreateTokenWithIAMCommand\");\nvar se_RegisterClientCommand = /* @__PURE__ */ __name(async (input, context) => {\n const b = (0, import_core.requestBuilder)(input, context);\n const headers = {\n \"content-type\": \"application/json\"\n };\n b.bp(\"/client/register\");\n let body;\n body = JSON.stringify(\n (0, import_smithy_client.take)(input, {\n clientName: [],\n clientType: [],\n entitledApplicationArn: [],\n grantTypes: (_) => (0, import_smithy_client._json)(_),\n issuerUrl: [],\n redirectUris: (_) => (0, import_smithy_client._json)(_),\n scopes: (_) => (0, import_smithy_client._json)(_)\n })\n );\n b.m(\"POST\").h(headers).b(body);\n return b.build();\n}, \"se_RegisterClientCommand\");\nvar se_StartDeviceAuthorizationCommand = /* @__PURE__ */ __name(async (input, context) => {\n const b = (0, import_core.requestBuilder)(input, context);\n const headers = {\n \"content-type\": \"application/json\"\n };\n b.bp(\"/device_authorization\");\n let body;\n body = JSON.stringify(\n (0, import_smithy_client.take)(input, {\n clientId: [],\n clientSecret: [],\n startUrl: []\n })\n );\n b.m(\"POST\").h(headers).b(body);\n return b.build();\n}, \"se_StartDeviceAuthorizationCommand\");\nvar de_CreateTokenCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode !== 200 && output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const contents = (0, import_smithy_client.map)({\n $metadata: deserializeMetadata(output)\n });\n const data = (0, import_smithy_client.expectNonNull)((0, import_smithy_client.expectObject)(await (0, import_core2.parseJsonBody)(output.body, context)), \"body\");\n const doc = (0, import_smithy_client.take)(data, {\n accessToken: import_smithy_client.expectString,\n expiresIn: import_smithy_client.expectInt32,\n idToken: import_smithy_client.expectString,\n refreshToken: import_smithy_client.expectString,\n tokenType: import_smithy_client.expectString\n });\n Object.assign(contents, doc);\n return contents;\n}, \"de_CreateTokenCommand\");\nvar de_CreateTokenWithIAMCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode !== 200 && output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const contents = (0, import_smithy_client.map)({\n $metadata: deserializeMetadata(output)\n });\n const data = (0, import_smithy_client.expectNonNull)((0, import_smithy_client.expectObject)(await (0, import_core2.parseJsonBody)(output.body, context)), \"body\");\n const doc = (0, import_smithy_client.take)(data, {\n accessToken: import_smithy_client.expectString,\n expiresIn: import_smithy_client.expectInt32,\n idToken: import_smithy_client.expectString,\n issuedTokenType: import_smithy_client.expectString,\n refreshToken: import_smithy_client.expectString,\n scope: import_smithy_client._json,\n tokenType: import_smithy_client.expectString\n });\n Object.assign(contents, doc);\n return contents;\n}, \"de_CreateTokenWithIAMCommand\");\nvar de_RegisterClientCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode !== 200 && output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const contents = (0, import_smithy_client.map)({\n $metadata: deserializeMetadata(output)\n });\n const data = (0, import_smithy_client.expectNonNull)((0, import_smithy_client.expectObject)(await (0, import_core2.parseJsonBody)(output.body, context)), \"body\");\n const doc = (0, import_smithy_client.take)(data, {\n authorizationEndpoint: import_smithy_client.expectString,\n clientId: import_smithy_client.expectString,\n clientIdIssuedAt: import_smithy_client.expectLong,\n clientSecret: import_smithy_client.expectString,\n clientSecretExpiresAt: import_smithy_client.expectLong,\n tokenEndpoint: import_smithy_client.expectString\n });\n Object.assign(contents, doc);\n return contents;\n}, \"de_RegisterClientCommand\");\nvar de_StartDeviceAuthorizationCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode !== 200 && output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const contents = (0, import_smithy_client.map)({\n $metadata: deserializeMetadata(output)\n });\n const data = (0, import_smithy_client.expectNonNull)((0, import_smithy_client.expectObject)(await (0, import_core2.parseJsonBody)(output.body, context)), \"body\");\n const doc = (0, import_smithy_client.take)(data, {\n deviceCode: import_smithy_client.expectString,\n expiresIn: import_smithy_client.expectInt32,\n interval: import_smithy_client.expectInt32,\n userCode: import_smithy_client.expectString,\n verificationUri: import_smithy_client.expectString,\n verificationUriComplete: import_smithy_client.expectString\n });\n Object.assign(contents, doc);\n return contents;\n}, \"de_StartDeviceAuthorizationCommand\");\nvar de_CommandError = /* @__PURE__ */ __name(async (output, context) => {\n const parsedOutput = {\n ...output,\n body: await (0, import_core2.parseJsonErrorBody)(output.body, context)\n };\n const errorCode = (0, import_core2.loadRestJsonErrorCode)(output, parsedOutput.body);\n switch (errorCode) {\n case \"AccessDeniedException\":\n case \"com.amazonaws.ssooidc#AccessDeniedException\":\n throw await de_AccessDeniedExceptionRes(parsedOutput, context);\n case \"AuthorizationPendingException\":\n case \"com.amazonaws.ssooidc#AuthorizationPendingException\":\n throw await de_AuthorizationPendingExceptionRes(parsedOutput, context);\n case \"ExpiredTokenException\":\n case \"com.amazonaws.ssooidc#ExpiredTokenException\":\n throw await de_ExpiredTokenExceptionRes(parsedOutput, context);\n case \"InternalServerException\":\n case \"com.amazonaws.ssooidc#InternalServerException\":\n throw await de_InternalServerExceptionRes(parsedOutput, context);\n case \"InvalidClientException\":\n case \"com.amazonaws.ssooidc#InvalidClientException\":\n throw await de_InvalidClientExceptionRes(parsedOutput, context);\n case \"InvalidGrantException\":\n case \"com.amazonaws.ssooidc#InvalidGrantException\":\n throw await de_InvalidGrantExceptionRes(parsedOutput, context);\n case \"InvalidRequestException\":\n case \"com.amazonaws.ssooidc#InvalidRequestException\":\n throw await de_InvalidRequestExceptionRes(parsedOutput, context);\n case \"InvalidScopeException\":\n case \"com.amazonaws.ssooidc#InvalidScopeException\":\n throw await de_InvalidScopeExceptionRes(parsedOutput, context);\n case \"SlowDownException\":\n case \"com.amazonaws.ssooidc#SlowDownException\":\n throw await de_SlowDownExceptionRes(parsedOutput, context);\n case \"UnauthorizedClientException\":\n case \"com.amazonaws.ssooidc#UnauthorizedClientException\":\n throw await de_UnauthorizedClientExceptionRes(parsedOutput, context);\n case \"UnsupportedGrantTypeException\":\n case \"com.amazonaws.ssooidc#UnsupportedGrantTypeException\":\n throw await de_UnsupportedGrantTypeExceptionRes(parsedOutput, context);\n case \"InvalidRequestRegionException\":\n case \"com.amazonaws.ssooidc#InvalidRequestRegionException\":\n throw await de_InvalidRequestRegionExceptionRes(parsedOutput, context);\n case \"InvalidClientMetadataException\":\n case \"com.amazonaws.ssooidc#InvalidClientMetadataException\":\n throw await de_InvalidClientMetadataExceptionRes(parsedOutput, context);\n case \"InvalidRedirectUriException\":\n case \"com.amazonaws.ssooidc#InvalidRedirectUriException\":\n throw await de_InvalidRedirectUriExceptionRes(parsedOutput, context);\n default:\n const parsedBody = parsedOutput.body;\n return throwDefaultError({\n output,\n parsedBody,\n errorCode\n });\n }\n}, \"de_CommandError\");\nvar throwDefaultError = (0, import_smithy_client.withBaseException)(SSOOIDCServiceException);\nvar de_AccessDeniedExceptionRes = /* @__PURE__ */ __name(async (parsedOutput, context) => {\n const contents = (0, import_smithy_client.map)({});\n const data = parsedOutput.body;\n const doc = (0, import_smithy_client.take)(data, {\n error: import_smithy_client.expectString,\n error_description: import_smithy_client.expectString\n });\n Object.assign(contents, doc);\n const exception = new AccessDeniedException({\n $metadata: deserializeMetadata(parsedOutput),\n ...contents\n });\n return (0, import_smithy_client.decorateServiceException)(exception, parsedOutput.body);\n}, \"de_AccessDeniedExceptionRes\");\nvar de_AuthorizationPendingExceptionRes = /* @__PURE__ */ __name(async (parsedOutput, context) => {\n const contents = (0, import_smithy_client.map)({});\n const data = parsedOutput.body;\n const doc = (0, import_smithy_client.take)(data, {\n error: import_smithy_client.expectString,\n error_description: import_smithy_client.expectString\n });\n Object.assign(contents, doc);\n const exception = new AuthorizationPendingException({\n $metadata: deserializeMetadata(parsedOutput),\n ...contents\n });\n return (0, import_smithy_client.decorateServiceException)(exception, parsedOutput.body);\n}, \"de_AuthorizationPendingExceptionRes\");\nvar de_ExpiredTokenExceptionRes = /* @__PURE__ */ __name(async (parsedOutput, context) => {\n const contents = (0, import_smithy_client.map)({});\n const data = parsedOutput.body;\n const doc = (0, import_smithy_client.take)(data, {\n error: import_smithy_client.expectString,\n error_description: import_smithy_client.expectString\n });\n Object.assign(contents, doc);\n const exception = new ExpiredTokenException({\n $metadata: deserializeMetadata(parsedOutput),\n ...contents\n });\n return (0, import_smithy_client.decorateServiceException)(exception, parsedOutput.body);\n}, \"de_ExpiredTokenExceptionRes\");\nvar de_InternalServerExceptionRes = /* @__PURE__ */ __name(async (parsedOutput, context) => {\n const contents = (0, import_smithy_client.map)({});\n const data = parsedOutput.body;\n const doc = (0, import_smithy_client.take)(data, {\n error: import_smithy_client.expectString,\n error_description: import_smithy_client.expectString\n });\n Object.assign(contents, doc);\n const exception = new InternalServerException({\n $metadata: deserializeMetadata(parsedOutput),\n ...contents\n });\n return (0, import_smithy_client.decorateServiceException)(exception, parsedOutput.body);\n}, \"de_InternalServerExceptionRes\");\nvar de_InvalidClientExceptionRes = /* @__PURE__ */ __name(async (parsedOutput, context) => {\n const contents = (0, import_smithy_client.map)({});\n const data = parsedOutput.body;\n const doc = (0, import_smithy_client.take)(data, {\n error: import_smithy_client.expectString,\n error_description: import_smithy_client.expectString\n });\n Object.assign(contents, doc);\n const exception = new InvalidClientException({\n $metadata: deserializeMetadata(parsedOutput),\n ...contents\n });\n return (0, import_smithy_client.decorateServiceException)(exception, parsedOutput.body);\n}, \"de_InvalidClientExceptionRes\");\nvar de_InvalidClientMetadataExceptionRes = /* @__PURE__ */ __name(async (parsedOutput, context) => {\n const contents = (0, import_smithy_client.map)({});\n const data = parsedOutput.body;\n const doc = (0, import_smithy_client.take)(data, {\n error: import_smithy_client.expectString,\n error_description: import_smithy_client.expectString\n });\n Object.assign(contents, doc);\n const exception = new InvalidClientMetadataException({\n $metadata: deserializeMetadata(parsedOutput),\n ...contents\n });\n return (0, import_smithy_client.decorateServiceException)(exception, parsedOutput.body);\n}, \"de_InvalidClientMetadataExceptionRes\");\nvar de_InvalidGrantExceptionRes = /* @__PURE__ */ __name(async (parsedOutput, context) => {\n const contents = (0, import_smithy_client.map)({});\n const data = parsedOutput.body;\n const doc = (0, import_smithy_client.take)(data, {\n error: import_smithy_client.expectString,\n error_description: import_smithy_client.expectString\n });\n Object.assign(contents, doc);\n const exception = new InvalidGrantException({\n $metadata: deserializeMetadata(parsedOutput),\n ...contents\n });\n return (0, import_smithy_client.decorateServiceException)(exception, parsedOutput.body);\n}, \"de_InvalidGrantExceptionRes\");\nvar de_InvalidRedirectUriExceptionRes = /* @__PURE__ */ __name(async (parsedOutput, context) => {\n const contents = (0, import_smithy_client.map)({});\n const data = parsedOutput.body;\n const doc = (0, import_smithy_client.take)(data, {\n error: import_smithy_client.expectString,\n error_description: import_smithy_client.expectString\n });\n Object.assign(contents, doc);\n const exception = new InvalidRedirectUriException({\n $metadata: deserializeMetadata(parsedOutput),\n ...contents\n });\n return (0, import_smithy_client.decorateServiceException)(exception, parsedOutput.body);\n}, \"de_InvalidRedirectUriExceptionRes\");\nvar de_InvalidRequestExceptionRes = /* @__PURE__ */ __name(async (parsedOutput, context) => {\n const contents = (0, import_smithy_client.map)({});\n const data = parsedOutput.body;\n const doc = (0, import_smithy_client.take)(data, {\n error: import_smithy_client.expectString,\n error_description: import_smithy_client.expectString\n });\n Object.assign(contents, doc);\n const exception = new InvalidRequestException({\n $metadata: deserializeMetadata(parsedOutput),\n ...contents\n });\n return (0, import_smithy_client.decorateServiceException)(exception, parsedOutput.body);\n}, \"de_InvalidRequestExceptionRes\");\nvar de_InvalidRequestRegionExceptionRes = /* @__PURE__ */ __name(async (parsedOutput, context) => {\n const contents = (0, import_smithy_client.map)({});\n const data = parsedOutput.body;\n const doc = (0, import_smithy_client.take)(data, {\n endpoint: import_smithy_client.expectString,\n error: import_smithy_client.expectString,\n error_description: import_smithy_client.expectString,\n region: import_smithy_client.expectString\n });\n Object.assign(contents, doc);\n const exception = new InvalidRequestRegionException({\n $metadata: deserializeMetadata(parsedOutput),\n ...contents\n });\n return (0, import_smithy_client.decorateServiceException)(exception, parsedOutput.body);\n}, \"de_InvalidRequestRegionExceptionRes\");\nvar de_InvalidScopeExceptionRes = /* @__PURE__ */ __name(async (parsedOutput, context) => {\n const contents = (0, import_smithy_client.map)({});\n const data = parsedOutput.body;\n const doc = (0, import_smithy_client.take)(data, {\n error: import_smithy_client.expectString,\n error_description: import_smithy_client.expectString\n });\n Object.assign(contents, doc);\n const exception = new InvalidScopeException({\n $metadata: deserializeMetadata(parsedOutput),\n ...contents\n });\n return (0, import_smithy_client.decorateServiceException)(exception, parsedOutput.body);\n}, \"de_InvalidScopeExceptionRes\");\nvar de_SlowDownExceptionRes = /* @__PURE__ */ __name(async (parsedOutput, context) => {\n const contents = (0, import_smithy_client.map)({});\n const data = parsedOutput.body;\n const doc = (0, import_smithy_client.take)(data, {\n error: import_smithy_client.expectString,\n error_description: import_smithy_client.expectString\n });\n Object.assign(contents, doc);\n const exception = new SlowDownException({\n $metadata: deserializeMetadata(parsedOutput),\n ...contents\n });\n return (0, import_smithy_client.decorateServiceException)(exception, parsedOutput.body);\n}, \"de_SlowDownExceptionRes\");\nvar de_UnauthorizedClientExceptionRes = /* @__PURE__ */ __name(async (parsedOutput, context) => {\n const contents = (0, import_smithy_client.map)({});\n const data = parsedOutput.body;\n const doc = (0, import_smithy_client.take)(data, {\n error: import_smithy_client.expectString,\n error_description: import_smithy_client.expectString\n });\n Object.assign(contents, doc);\n const exception = new UnauthorizedClientException({\n $metadata: deserializeMetadata(parsedOutput),\n ...contents\n });\n return (0, import_smithy_client.decorateServiceException)(exception, parsedOutput.body);\n}, \"de_UnauthorizedClientExceptionRes\");\nvar de_UnsupportedGrantTypeExceptionRes = /* @__PURE__ */ __name(async (parsedOutput, context) => {\n const contents = (0, import_smithy_client.map)({});\n const data = parsedOutput.body;\n const doc = (0, import_smithy_client.take)(data, {\n error: import_smithy_client.expectString,\n error_description: import_smithy_client.expectString\n });\n Object.assign(contents, doc);\n const exception = new UnsupportedGrantTypeException({\n $metadata: deserializeMetadata(parsedOutput),\n ...contents\n });\n return (0, import_smithy_client.decorateServiceException)(exception, parsedOutput.body);\n}, \"de_UnsupportedGrantTypeExceptionRes\");\nvar deserializeMetadata = /* @__PURE__ */ __name((output) => ({\n httpStatusCode: output.statusCode,\n requestId: output.headers[\"x-amzn-requestid\"] ?? output.headers[\"x-amzn-request-id\"] ?? output.headers[\"x-amz-request-id\"],\n extendedRequestId: output.headers[\"x-amz-id-2\"],\n cfId: output.headers[\"x-amz-cf-id\"]\n}), \"deserializeMetadata\");\nvar _ai = \"aws_iam\";\n\n// src/commands/CreateTokenCommand.ts\nvar _CreateTokenCommand = class _CreateTokenCommand extends import_smithy_client.Command.classBuilder().ep(commonParams).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"AWSSSOOIDCService\", \"CreateToken\", {}).n(\"SSOOIDCClient\", \"CreateTokenCommand\").f(CreateTokenRequestFilterSensitiveLog, CreateTokenResponseFilterSensitiveLog).ser(se_CreateTokenCommand).de(de_CreateTokenCommand).build() {\n};\n__name(_CreateTokenCommand, \"CreateTokenCommand\");\nvar CreateTokenCommand = _CreateTokenCommand;\n\n// src/commands/CreateTokenWithIAMCommand.ts\n\n\n\nvar _CreateTokenWithIAMCommand = class _CreateTokenWithIAMCommand extends import_smithy_client.Command.classBuilder().ep(commonParams).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"AWSSSOOIDCService\", \"CreateTokenWithIAM\", {}).n(\"SSOOIDCClient\", \"CreateTokenWithIAMCommand\").f(CreateTokenWithIAMRequestFilterSensitiveLog, CreateTokenWithIAMResponseFilterSensitiveLog).ser(se_CreateTokenWithIAMCommand).de(de_CreateTokenWithIAMCommand).build() {\n};\n__name(_CreateTokenWithIAMCommand, \"CreateTokenWithIAMCommand\");\nvar CreateTokenWithIAMCommand = _CreateTokenWithIAMCommand;\n\n// src/commands/RegisterClientCommand.ts\n\n\n\nvar _RegisterClientCommand = class _RegisterClientCommand extends import_smithy_client.Command.classBuilder().ep(commonParams).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"AWSSSOOIDCService\", \"RegisterClient\", {}).n(\"SSOOIDCClient\", \"RegisterClientCommand\").f(void 0, RegisterClientResponseFilterSensitiveLog).ser(se_RegisterClientCommand).de(de_RegisterClientCommand).build() {\n};\n__name(_RegisterClientCommand, \"RegisterClientCommand\");\nvar RegisterClientCommand = _RegisterClientCommand;\n\n// src/commands/StartDeviceAuthorizationCommand.ts\n\n\n\nvar _StartDeviceAuthorizationCommand = class _StartDeviceAuthorizationCommand extends import_smithy_client.Command.classBuilder().ep(commonParams).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"AWSSSOOIDCService\", \"StartDeviceAuthorization\", {}).n(\"SSOOIDCClient\", \"StartDeviceAuthorizationCommand\").f(StartDeviceAuthorizationRequestFilterSensitiveLog, void 0).ser(se_StartDeviceAuthorizationCommand).de(de_StartDeviceAuthorizationCommand).build() {\n};\n__name(_StartDeviceAuthorizationCommand, \"StartDeviceAuthorizationCommand\");\nvar StartDeviceAuthorizationCommand = _StartDeviceAuthorizationCommand;\n\n// src/SSOOIDC.ts\nvar commands = {\n CreateTokenCommand,\n CreateTokenWithIAMCommand,\n RegisterClientCommand,\n StartDeviceAuthorizationCommand\n};\nvar _SSOOIDC = class _SSOOIDC extends SSOOIDCClient {\n};\n__name(_SSOOIDC, \"SSOOIDC\");\nvar SSOOIDC = _SSOOIDC;\n(0, import_smithy_client.createAggregatedClient)(commands, SSOOIDC);\n// Annotate the CommonJS export names for ESM import in node:\n\n0 && (module.exports = {\n SSOOIDCServiceException,\n __Client,\n SSOOIDCClient,\n SSOOIDC,\n $Command,\n CreateTokenCommand,\n CreateTokenWithIAMCommand,\n RegisterClientCommand,\n StartDeviceAuthorizationCommand,\n AccessDeniedException,\n AuthorizationPendingException,\n ExpiredTokenException,\n InternalServerException,\n InvalidClientException,\n InvalidGrantException,\n InvalidRequestException,\n InvalidScopeException,\n SlowDownException,\n UnauthorizedClientException,\n UnsupportedGrantTypeException,\n InvalidRequestRegionException,\n InvalidClientMetadataException,\n InvalidRedirectUriException,\n CreateTokenRequestFilterSensitiveLog,\n CreateTokenResponseFilterSensitiveLog,\n CreateTokenWithIAMRequestFilterSensitiveLog,\n CreateTokenWithIAMResponseFilterSensitiveLog,\n RegisterClientResponseFilterSensitiveLog,\n StartDeviceAuthorizationRequestFilterSensitiveLog\n});\n\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getRuntimeConfig = void 0;\nconst tslib_1 = require(\"tslib\");\nconst package_json_1 = tslib_1.__importDefault(require(\"../package.json\"));\nconst core_1 = require(\"@aws-sdk/core\");\nconst credential_provider_node_1 = require(\"@aws-sdk/credential-provider-node\");\nconst util_user_agent_node_1 = require(\"@aws-sdk/util-user-agent-node\");\nconst config_resolver_1 = require(\"@smithy/config-resolver\");\nconst hash_node_1 = require(\"@smithy/hash-node\");\nconst middleware_retry_1 = require(\"@smithy/middleware-retry\");\nconst node_config_provider_1 = require(\"@smithy/node-config-provider\");\nconst node_http_handler_1 = require(\"@smithy/node-http-handler\");\nconst util_body_length_node_1 = require(\"@smithy/util-body-length-node\");\nconst util_retry_1 = require(\"@smithy/util-retry\");\nconst runtimeConfig_shared_1 = require(\"./runtimeConfig.shared\");\nconst smithy_client_1 = require(\"@smithy/smithy-client\");\nconst util_defaults_mode_node_1 = require(\"@smithy/util-defaults-mode-node\");\nconst smithy_client_2 = require(\"@smithy/smithy-client\");\nconst getRuntimeConfig = (config) => {\n (0, smithy_client_2.emitWarningIfUnsupportedVersion)(process.version);\n const defaultsMode = (0, util_defaults_mode_node_1.resolveDefaultsModeConfig)(config);\n const defaultConfigProvider = () => defaultsMode().then(smithy_client_1.loadConfigsForDefaultMode);\n const clientSharedValues = (0, runtimeConfig_shared_1.getRuntimeConfig)(config);\n (0, core_1.emitWarningIfUnsupportedVersion)(process.version);\n return {\n ...clientSharedValues,\n ...config,\n runtime: \"node\",\n defaultsMode,\n bodyLengthChecker: config?.bodyLengthChecker ?? util_body_length_node_1.calculateBodyLength,\n credentialDefaultProvider: config?.credentialDefaultProvider ?? credential_provider_node_1.defaultProvider,\n defaultUserAgentProvider: config?.defaultUserAgentProvider ??\n (0, util_user_agent_node_1.defaultUserAgent)({ serviceId: clientSharedValues.serviceId, clientVersion: package_json_1.default.version }),\n maxAttempts: config?.maxAttempts ?? (0, node_config_provider_1.loadConfig)(middleware_retry_1.NODE_MAX_ATTEMPT_CONFIG_OPTIONS),\n region: config?.region ?? (0, node_config_provider_1.loadConfig)(config_resolver_1.NODE_REGION_CONFIG_OPTIONS, config_resolver_1.NODE_REGION_CONFIG_FILE_OPTIONS),\n requestHandler: node_http_handler_1.NodeHttpHandler.create(config?.requestHandler ?? defaultConfigProvider),\n retryMode: config?.retryMode ??\n (0, node_config_provider_1.loadConfig)({\n ...middleware_retry_1.NODE_RETRY_MODE_CONFIG_OPTIONS,\n default: async () => (await defaultConfigProvider()).retryMode || util_retry_1.DEFAULT_RETRY_MODE,\n }),\n sha256: config?.sha256 ?? hash_node_1.Hash.bind(null, \"sha256\"),\n streamCollector: config?.streamCollector ?? node_http_handler_1.streamCollector,\n useDualstackEndpoint: config?.useDualstackEndpoint ?? (0, node_config_provider_1.loadConfig)(config_resolver_1.NODE_USE_DUALSTACK_ENDPOINT_CONFIG_OPTIONS),\n useFipsEndpoint: config?.useFipsEndpoint ?? (0, node_config_provider_1.loadConfig)(config_resolver_1.NODE_USE_FIPS_ENDPOINT_CONFIG_OPTIONS),\n userAgentAppId: config?.userAgentAppId ?? (0, node_config_provider_1.loadConfig)(util_user_agent_node_1.NODE_APP_ID_CONFIG_OPTIONS),\n };\n};\nexports.getRuntimeConfig = getRuntimeConfig;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getRuntimeConfig = void 0;\nconst core_1 = require(\"@aws-sdk/core\");\nconst core_2 = require(\"@smithy/core\");\nconst smithy_client_1 = require(\"@smithy/smithy-client\");\nconst url_parser_1 = require(\"@smithy/url-parser\");\nconst util_base64_1 = require(\"@smithy/util-base64\");\nconst util_utf8_1 = require(\"@smithy/util-utf8\");\nconst httpAuthSchemeProvider_1 = require(\"./auth/httpAuthSchemeProvider\");\nconst endpointResolver_1 = require(\"./endpoint/endpointResolver\");\nconst getRuntimeConfig = (config) => {\n return {\n apiVersion: \"2019-06-10\",\n base64Decoder: config?.base64Decoder ?? util_base64_1.fromBase64,\n base64Encoder: config?.base64Encoder ?? util_base64_1.toBase64,\n disableHostPrefix: config?.disableHostPrefix ?? false,\n endpointProvider: config?.endpointProvider ?? endpointResolver_1.defaultEndpointResolver,\n extensions: config?.extensions ?? [],\n httpAuthSchemeProvider: config?.httpAuthSchemeProvider ?? httpAuthSchemeProvider_1.defaultSSOOIDCHttpAuthSchemeProvider,\n httpAuthSchemes: config?.httpAuthSchemes ?? [\n {\n schemeId: \"aws.auth#sigv4\",\n identityProvider: (ipc) => ipc.getIdentityProvider(\"aws.auth#sigv4\"),\n signer: new core_1.AwsSdkSigV4Signer(),\n },\n {\n schemeId: \"smithy.api#noAuth\",\n identityProvider: (ipc) => ipc.getIdentityProvider(\"smithy.api#noAuth\") || (async () => ({})),\n signer: new core_2.NoAuthSigner(),\n },\n ],\n logger: config?.logger ?? new smithy_client_1.NoOpLogger(),\n serviceId: config?.serviceId ?? \"SSO OIDC\",\n urlParser: config?.urlParser ?? url_parser_1.parseUrl,\n utf8Decoder: config?.utf8Decoder ?? util_utf8_1.fromUtf8,\n utf8Encoder: config?.utf8Encoder ?? util_utf8_1.toUtf8,\n };\n};\nexports.getRuntimeConfig = getRuntimeConfig;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.resolveHttpAuthSchemeConfig = exports.defaultSSOHttpAuthSchemeProvider = exports.defaultSSOHttpAuthSchemeParametersProvider = void 0;\nconst core_1 = require(\"@aws-sdk/core\");\nconst util_middleware_1 = require(\"@smithy/util-middleware\");\nconst defaultSSOHttpAuthSchemeParametersProvider = async (config, context, input) => {\n return {\n operation: (0, util_middleware_1.getSmithyContext)(context).operation,\n region: (await (0, util_middleware_1.normalizeProvider)(config.region)()) ||\n (() => {\n throw new Error(\"expected `region` to be configured for `aws.auth#sigv4`\");\n })(),\n };\n};\nexports.defaultSSOHttpAuthSchemeParametersProvider = defaultSSOHttpAuthSchemeParametersProvider;\nfunction createAwsAuthSigv4HttpAuthOption(authParameters) {\n return {\n schemeId: \"aws.auth#sigv4\",\n signingProperties: {\n name: \"awsssoportal\",\n region: authParameters.region,\n },\n propertiesExtractor: (config, context) => ({\n signingProperties: {\n config,\n context,\n },\n }),\n };\n}\nfunction createSmithyApiNoAuthHttpAuthOption(authParameters) {\n return {\n schemeId: \"smithy.api#noAuth\",\n };\n}\nconst defaultSSOHttpAuthSchemeProvider = (authParameters) => {\n const options = [];\n switch (authParameters.operation) {\n case \"GetRoleCredentials\": {\n options.push(createSmithyApiNoAuthHttpAuthOption(authParameters));\n break;\n }\n case \"ListAccountRoles\": {\n options.push(createSmithyApiNoAuthHttpAuthOption(authParameters));\n break;\n }\n case \"ListAccounts\": {\n options.push(createSmithyApiNoAuthHttpAuthOption(authParameters));\n break;\n }\n case \"Logout\": {\n options.push(createSmithyApiNoAuthHttpAuthOption(authParameters));\n break;\n }\n default: {\n options.push(createAwsAuthSigv4HttpAuthOption(authParameters));\n }\n }\n return options;\n};\nexports.defaultSSOHttpAuthSchemeProvider = defaultSSOHttpAuthSchemeProvider;\nconst resolveHttpAuthSchemeConfig = (config) => {\n const config_0 = (0, core_1.resolveAwsSdkSigV4Config)(config);\n return {\n ...config_0,\n };\n};\nexports.resolveHttpAuthSchemeConfig = resolveHttpAuthSchemeConfig;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.defaultEndpointResolver = void 0;\nconst util_endpoints_1 = require(\"@aws-sdk/util-endpoints\");\nconst util_endpoints_2 = require(\"@smithy/util-endpoints\");\nconst ruleset_1 = require(\"./ruleset\");\nconst cache = new util_endpoints_2.EndpointCache({\n size: 50,\n params: [\"Endpoint\", \"Region\", \"UseDualStack\", \"UseFIPS\"],\n});\nconst defaultEndpointResolver = (endpointParams, context = {}) => {\n return cache.get(endpointParams, () => (0, util_endpoints_2.resolveEndpoint)(ruleset_1.ruleSet, {\n endpointParams: endpointParams,\n logger: context.logger,\n }));\n};\nexports.defaultEndpointResolver = defaultEndpointResolver;\nutil_endpoints_2.customEndpointFunctions.aws = util_endpoints_1.awsEndpointFunctions;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ruleSet = void 0;\nconst u = \"required\", v = \"fn\", w = \"argv\", x = \"ref\";\nconst a = true, b = \"isSet\", c = \"booleanEquals\", d = \"error\", e = \"endpoint\", f = \"tree\", g = \"PartitionResult\", h = \"getAttr\", i = { [u]: false, \"type\": \"String\" }, j = { [u]: true, \"default\": false, \"type\": \"Boolean\" }, k = { [x]: \"Endpoint\" }, l = { [v]: c, [w]: [{ [x]: \"UseFIPS\" }, true] }, m = { [v]: c, [w]: [{ [x]: \"UseDualStack\" }, true] }, n = {}, o = { [v]: h, [w]: [{ [x]: g }, \"supportsFIPS\"] }, p = { [x]: g }, q = { [v]: c, [w]: [true, { [v]: h, [w]: [p, \"supportsDualStack\"] }] }, r = [l], s = [m], t = [{ [x]: \"Region\" }];\nconst _data = { version: \"1.0\", parameters: { Region: i, UseDualStack: j, UseFIPS: j, Endpoint: i }, rules: [{ conditions: [{ [v]: b, [w]: [k] }], rules: [{ conditions: r, error: \"Invalid Configuration: FIPS and custom endpoint are not supported\", type: d }, { conditions: s, error: \"Invalid Configuration: Dualstack and custom endpoint are not supported\", type: d }, { endpoint: { url: k, properties: n, headers: n }, type: e }], type: f }, { conditions: [{ [v]: b, [w]: t }], rules: [{ conditions: [{ [v]: \"aws.partition\", [w]: t, assign: g }], rules: [{ conditions: [l, m], rules: [{ conditions: [{ [v]: c, [w]: [a, o] }, q], rules: [{ endpoint: { url: \"https://portal.sso-fips.{Region}.{PartitionResult#dualStackDnsSuffix}\", properties: n, headers: n }, type: e }], type: f }, { error: \"FIPS and DualStack are enabled, but this partition does not support one or both\", type: d }], type: f }, { conditions: r, rules: [{ conditions: [{ [v]: c, [w]: [o, a] }], rules: [{ conditions: [{ [v]: \"stringEquals\", [w]: [{ [v]: h, [w]: [p, \"name\"] }, \"aws-us-gov\"] }], endpoint: { url: \"https://portal.sso.{Region}.amazonaws.com\", properties: n, headers: n }, type: e }, { endpoint: { url: \"https://portal.sso-fips.{Region}.{PartitionResult#dnsSuffix}\", properties: n, headers: n }, type: e }], type: f }, { error: \"FIPS is enabled but this partition does not support FIPS\", type: d }], type: f }, { conditions: s, rules: [{ conditions: [q], rules: [{ endpoint: { url: \"https://portal.sso.{Region}.{PartitionResult#dualStackDnsSuffix}\", properties: n, headers: n }, type: e }], type: f }, { error: \"DualStack is enabled but this partition does not support DualStack\", type: d }], type: f }, { endpoint: { url: \"https://portal.sso.{Region}.{PartitionResult#dnsSuffix}\", properties: n, headers: n }, type: e }], type: f }], type: f }, { error: \"Invalid Configuration: Missing Region\", type: d }] };\nexports.ruleSet = _data;\n","\"use strict\";\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/index.ts\nvar src_exports = {};\n__export(src_exports, {\n GetRoleCredentialsCommand: () => GetRoleCredentialsCommand,\n GetRoleCredentialsRequestFilterSensitiveLog: () => GetRoleCredentialsRequestFilterSensitiveLog,\n GetRoleCredentialsResponseFilterSensitiveLog: () => GetRoleCredentialsResponseFilterSensitiveLog,\n InvalidRequestException: () => InvalidRequestException,\n ListAccountRolesCommand: () => ListAccountRolesCommand,\n ListAccountRolesRequestFilterSensitiveLog: () => ListAccountRolesRequestFilterSensitiveLog,\n ListAccountsCommand: () => ListAccountsCommand,\n ListAccountsRequestFilterSensitiveLog: () => ListAccountsRequestFilterSensitiveLog,\n LogoutCommand: () => LogoutCommand,\n LogoutRequestFilterSensitiveLog: () => LogoutRequestFilterSensitiveLog,\n ResourceNotFoundException: () => ResourceNotFoundException,\n RoleCredentialsFilterSensitiveLog: () => RoleCredentialsFilterSensitiveLog,\n SSO: () => SSO,\n SSOClient: () => SSOClient,\n SSOServiceException: () => SSOServiceException,\n TooManyRequestsException: () => TooManyRequestsException,\n UnauthorizedException: () => UnauthorizedException,\n __Client: () => import_smithy_client.Client,\n paginateListAccountRoles: () => paginateListAccountRoles,\n paginateListAccounts: () => paginateListAccounts\n});\nmodule.exports = __toCommonJS(src_exports);\n\n// src/SSOClient.ts\nvar import_middleware_host_header = require(\"@aws-sdk/middleware-host-header\");\nvar import_middleware_logger = require(\"@aws-sdk/middleware-logger\");\nvar import_middleware_recursion_detection = require(\"@aws-sdk/middleware-recursion-detection\");\nvar import_middleware_user_agent = require(\"@aws-sdk/middleware-user-agent\");\nvar import_config_resolver = require(\"@smithy/config-resolver\");\nvar import_core = require(\"@smithy/core\");\nvar import_middleware_content_length = require(\"@smithy/middleware-content-length\");\nvar import_middleware_endpoint = require(\"@smithy/middleware-endpoint\");\nvar import_middleware_retry = require(\"@smithy/middleware-retry\");\n\nvar import_httpAuthSchemeProvider = require(\"./auth/httpAuthSchemeProvider\");\n\n// src/endpoint/EndpointParameters.ts\nvar resolveClientEndpointParameters = /* @__PURE__ */ __name((options) => {\n return {\n ...options,\n useDualstackEndpoint: options.useDualstackEndpoint ?? false,\n useFipsEndpoint: options.useFipsEndpoint ?? false,\n defaultSigningName: \"awsssoportal\"\n };\n}, \"resolveClientEndpointParameters\");\nvar commonParams = {\n UseFIPS: { type: \"builtInParams\", name: \"useFipsEndpoint\" },\n Endpoint: { type: \"builtInParams\", name: \"endpoint\" },\n Region: { type: \"builtInParams\", name: \"region\" },\n UseDualStack: { type: \"builtInParams\", name: \"useDualstackEndpoint\" }\n};\n\n// src/SSOClient.ts\nvar import_runtimeConfig = require(\"././runtimeConfig\");\n\n// src/runtimeExtensions.ts\nvar import_region_config_resolver = require(\"@aws-sdk/region-config-resolver\");\nvar import_protocol_http = require(\"@smithy/protocol-http\");\nvar import_smithy_client = require(\"@smithy/smithy-client\");\n\n// src/auth/httpAuthExtensionConfiguration.ts\nvar getHttpAuthExtensionConfiguration = /* @__PURE__ */ __name((runtimeConfig) => {\n const _httpAuthSchemes = runtimeConfig.httpAuthSchemes;\n let _httpAuthSchemeProvider = runtimeConfig.httpAuthSchemeProvider;\n let _credentials = runtimeConfig.credentials;\n return {\n setHttpAuthScheme(httpAuthScheme) {\n const index = _httpAuthSchemes.findIndex((scheme) => scheme.schemeId === httpAuthScheme.schemeId);\n if (index === -1) {\n _httpAuthSchemes.push(httpAuthScheme);\n } else {\n _httpAuthSchemes.splice(index, 1, httpAuthScheme);\n }\n },\n httpAuthSchemes() {\n return _httpAuthSchemes;\n },\n setHttpAuthSchemeProvider(httpAuthSchemeProvider) {\n _httpAuthSchemeProvider = httpAuthSchemeProvider;\n },\n httpAuthSchemeProvider() {\n return _httpAuthSchemeProvider;\n },\n setCredentials(credentials) {\n _credentials = credentials;\n },\n credentials() {\n return _credentials;\n }\n };\n}, \"getHttpAuthExtensionConfiguration\");\nvar resolveHttpAuthRuntimeConfig = /* @__PURE__ */ __name((config) => {\n return {\n httpAuthSchemes: config.httpAuthSchemes(),\n httpAuthSchemeProvider: config.httpAuthSchemeProvider(),\n credentials: config.credentials()\n };\n}, \"resolveHttpAuthRuntimeConfig\");\n\n// src/runtimeExtensions.ts\nvar asPartial = /* @__PURE__ */ __name((t) => t, \"asPartial\");\nvar resolveRuntimeExtensions = /* @__PURE__ */ __name((runtimeConfig, extensions) => {\n const extensionConfiguration = {\n ...asPartial((0, import_region_config_resolver.getAwsRegionExtensionConfiguration)(runtimeConfig)),\n ...asPartial((0, import_smithy_client.getDefaultExtensionConfiguration)(runtimeConfig)),\n ...asPartial((0, import_protocol_http.getHttpHandlerExtensionConfiguration)(runtimeConfig)),\n ...asPartial(getHttpAuthExtensionConfiguration(runtimeConfig))\n };\n extensions.forEach((extension) => extension.configure(extensionConfiguration));\n return {\n ...runtimeConfig,\n ...(0, import_region_config_resolver.resolveAwsRegionExtensionConfiguration)(extensionConfiguration),\n ...(0, import_smithy_client.resolveDefaultRuntimeConfig)(extensionConfiguration),\n ...(0, import_protocol_http.resolveHttpHandlerRuntimeConfig)(extensionConfiguration),\n ...resolveHttpAuthRuntimeConfig(extensionConfiguration)\n };\n}, \"resolveRuntimeExtensions\");\n\n// src/SSOClient.ts\nvar _SSOClient = class _SSOClient extends import_smithy_client.Client {\n constructor(...[configuration]) {\n const _config_0 = (0, import_runtimeConfig.getRuntimeConfig)(configuration || {});\n const _config_1 = resolveClientEndpointParameters(_config_0);\n const _config_2 = (0, import_middleware_user_agent.resolveUserAgentConfig)(_config_1);\n const _config_3 = (0, import_middleware_retry.resolveRetryConfig)(_config_2);\n const _config_4 = (0, import_config_resolver.resolveRegionConfig)(_config_3);\n const _config_5 = (0, import_middleware_host_header.resolveHostHeaderConfig)(_config_4);\n const _config_6 = (0, import_middleware_endpoint.resolveEndpointConfig)(_config_5);\n const _config_7 = (0, import_httpAuthSchemeProvider.resolveHttpAuthSchemeConfig)(_config_6);\n const _config_8 = resolveRuntimeExtensions(_config_7, (configuration == null ? void 0 : configuration.extensions) || []);\n super(_config_8);\n this.config = _config_8;\n this.middlewareStack.use((0, import_middleware_user_agent.getUserAgentPlugin)(this.config));\n this.middlewareStack.use((0, import_middleware_retry.getRetryPlugin)(this.config));\n this.middlewareStack.use((0, import_middleware_content_length.getContentLengthPlugin)(this.config));\n this.middlewareStack.use((0, import_middleware_host_header.getHostHeaderPlugin)(this.config));\n this.middlewareStack.use((0, import_middleware_logger.getLoggerPlugin)(this.config));\n this.middlewareStack.use((0, import_middleware_recursion_detection.getRecursionDetectionPlugin)(this.config));\n this.middlewareStack.use(\n (0, import_core.getHttpAuthSchemeEndpointRuleSetPlugin)(this.config, {\n httpAuthSchemeParametersProvider: import_httpAuthSchemeProvider.defaultSSOHttpAuthSchemeParametersProvider,\n identityProviderConfigProvider: async (config) => new import_core.DefaultIdentityProviderConfig({\n \"aws.auth#sigv4\": config.credentials\n })\n })\n );\n this.middlewareStack.use((0, import_core.getHttpSigningPlugin)(this.config));\n }\n /**\n * Destroy underlying resources, like sockets. It's usually not necessary to do this.\n * However in Node.js, it's best to explicitly shut down the client's agent when it is no longer needed.\n * Otherwise, sockets might stay open for quite a long time before the server terminates them.\n */\n destroy() {\n super.destroy();\n }\n};\n__name(_SSOClient, \"SSOClient\");\nvar SSOClient = _SSOClient;\n\n// src/SSO.ts\n\n\n// src/commands/GetRoleCredentialsCommand.ts\n\nvar import_middleware_serde = require(\"@smithy/middleware-serde\");\n\n\n// src/models/models_0.ts\n\n\n// src/models/SSOServiceException.ts\n\nvar _SSOServiceException = class _SSOServiceException extends import_smithy_client.ServiceException {\n /**\n * @internal\n */\n constructor(options) {\n super(options);\n Object.setPrototypeOf(this, _SSOServiceException.prototype);\n }\n};\n__name(_SSOServiceException, \"SSOServiceException\");\nvar SSOServiceException = _SSOServiceException;\n\n// src/models/models_0.ts\nvar _InvalidRequestException = class _InvalidRequestException extends SSOServiceException {\n /**\n * @internal\n */\n constructor(opts) {\n super({\n name: \"InvalidRequestException\",\n $fault: \"client\",\n ...opts\n });\n this.name = \"InvalidRequestException\";\n this.$fault = \"client\";\n Object.setPrototypeOf(this, _InvalidRequestException.prototype);\n }\n};\n__name(_InvalidRequestException, \"InvalidRequestException\");\nvar InvalidRequestException = _InvalidRequestException;\nvar _ResourceNotFoundException = class _ResourceNotFoundException extends SSOServiceException {\n /**\n * @internal\n */\n constructor(opts) {\n super({\n name: \"ResourceNotFoundException\",\n $fault: \"client\",\n ...opts\n });\n this.name = \"ResourceNotFoundException\";\n this.$fault = \"client\";\n Object.setPrototypeOf(this, _ResourceNotFoundException.prototype);\n }\n};\n__name(_ResourceNotFoundException, \"ResourceNotFoundException\");\nvar ResourceNotFoundException = _ResourceNotFoundException;\nvar _TooManyRequestsException = class _TooManyRequestsException extends SSOServiceException {\n /**\n * @internal\n */\n constructor(opts) {\n super({\n name: \"TooManyRequestsException\",\n $fault: \"client\",\n ...opts\n });\n this.name = \"TooManyRequestsException\";\n this.$fault = \"client\";\n Object.setPrototypeOf(this, _TooManyRequestsException.prototype);\n }\n};\n__name(_TooManyRequestsException, \"TooManyRequestsException\");\nvar TooManyRequestsException = _TooManyRequestsException;\nvar _UnauthorizedException = class _UnauthorizedException extends SSOServiceException {\n /**\n * @internal\n */\n constructor(opts) {\n super({\n name: \"UnauthorizedException\",\n $fault: \"client\",\n ...opts\n });\n this.name = \"UnauthorizedException\";\n this.$fault = \"client\";\n Object.setPrototypeOf(this, _UnauthorizedException.prototype);\n }\n};\n__name(_UnauthorizedException, \"UnauthorizedException\");\nvar UnauthorizedException = _UnauthorizedException;\nvar GetRoleCredentialsRequestFilterSensitiveLog = /* @__PURE__ */ __name((obj) => ({\n ...obj,\n ...obj.accessToken && { accessToken: import_smithy_client.SENSITIVE_STRING }\n}), \"GetRoleCredentialsRequestFilterSensitiveLog\");\nvar RoleCredentialsFilterSensitiveLog = /* @__PURE__ */ __name((obj) => ({\n ...obj,\n ...obj.secretAccessKey && { secretAccessKey: import_smithy_client.SENSITIVE_STRING },\n ...obj.sessionToken && { sessionToken: import_smithy_client.SENSITIVE_STRING }\n}), \"RoleCredentialsFilterSensitiveLog\");\nvar GetRoleCredentialsResponseFilterSensitiveLog = /* @__PURE__ */ __name((obj) => ({\n ...obj,\n ...obj.roleCredentials && { roleCredentials: RoleCredentialsFilterSensitiveLog(obj.roleCredentials) }\n}), \"GetRoleCredentialsResponseFilterSensitiveLog\");\nvar ListAccountRolesRequestFilterSensitiveLog = /* @__PURE__ */ __name((obj) => ({\n ...obj,\n ...obj.accessToken && { accessToken: import_smithy_client.SENSITIVE_STRING }\n}), \"ListAccountRolesRequestFilterSensitiveLog\");\nvar ListAccountsRequestFilterSensitiveLog = /* @__PURE__ */ __name((obj) => ({\n ...obj,\n ...obj.accessToken && { accessToken: import_smithy_client.SENSITIVE_STRING }\n}), \"ListAccountsRequestFilterSensitiveLog\");\nvar LogoutRequestFilterSensitiveLog = /* @__PURE__ */ __name((obj) => ({\n ...obj,\n ...obj.accessToken && { accessToken: import_smithy_client.SENSITIVE_STRING }\n}), \"LogoutRequestFilterSensitiveLog\");\n\n// src/protocols/Aws_restJson1.ts\nvar import_core2 = require(\"@aws-sdk/core\");\n\n\nvar se_GetRoleCredentialsCommand = /* @__PURE__ */ __name(async (input, context) => {\n const b = (0, import_core.requestBuilder)(input, context);\n const headers = (0, import_smithy_client.map)({}, import_smithy_client.isSerializableHeaderValue, {\n [_xasbt]: input[_aT]\n });\n b.bp(\"/federation/credentials\");\n const query = (0, import_smithy_client.map)({\n [_rn]: [, (0, import_smithy_client.expectNonNull)(input[_rN], `roleName`)],\n [_ai]: [, (0, import_smithy_client.expectNonNull)(input[_aI], `accountId`)]\n });\n let body;\n b.m(\"GET\").h(headers).q(query).b(body);\n return b.build();\n}, \"se_GetRoleCredentialsCommand\");\nvar se_ListAccountRolesCommand = /* @__PURE__ */ __name(async (input, context) => {\n const b = (0, import_core.requestBuilder)(input, context);\n const headers = (0, import_smithy_client.map)({}, import_smithy_client.isSerializableHeaderValue, {\n [_xasbt]: input[_aT]\n });\n b.bp(\"/assignment/roles\");\n const query = (0, import_smithy_client.map)({\n [_nt]: [, input[_nT]],\n [_mr]: [() => input.maxResults !== void 0, () => input[_mR].toString()],\n [_ai]: [, (0, import_smithy_client.expectNonNull)(input[_aI], `accountId`)]\n });\n let body;\n b.m(\"GET\").h(headers).q(query).b(body);\n return b.build();\n}, \"se_ListAccountRolesCommand\");\nvar se_ListAccountsCommand = /* @__PURE__ */ __name(async (input, context) => {\n const b = (0, import_core.requestBuilder)(input, context);\n const headers = (0, import_smithy_client.map)({}, import_smithy_client.isSerializableHeaderValue, {\n [_xasbt]: input[_aT]\n });\n b.bp(\"/assignment/accounts\");\n const query = (0, import_smithy_client.map)({\n [_nt]: [, input[_nT]],\n [_mr]: [() => input.maxResults !== void 0, () => input[_mR].toString()]\n });\n let body;\n b.m(\"GET\").h(headers).q(query).b(body);\n return b.build();\n}, \"se_ListAccountsCommand\");\nvar se_LogoutCommand = /* @__PURE__ */ __name(async (input, context) => {\n const b = (0, import_core.requestBuilder)(input, context);\n const headers = (0, import_smithy_client.map)({}, import_smithy_client.isSerializableHeaderValue, {\n [_xasbt]: input[_aT]\n });\n b.bp(\"/logout\");\n let body;\n b.m(\"POST\").h(headers).b(body);\n return b.build();\n}, \"se_LogoutCommand\");\nvar de_GetRoleCredentialsCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode !== 200 && output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const contents = (0, import_smithy_client.map)({\n $metadata: deserializeMetadata(output)\n });\n const data = (0, import_smithy_client.expectNonNull)((0, import_smithy_client.expectObject)(await (0, import_core2.parseJsonBody)(output.body, context)), \"body\");\n const doc = (0, import_smithy_client.take)(data, {\n roleCredentials: import_smithy_client._json\n });\n Object.assign(contents, doc);\n return contents;\n}, \"de_GetRoleCredentialsCommand\");\nvar de_ListAccountRolesCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode !== 200 && output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const contents = (0, import_smithy_client.map)({\n $metadata: deserializeMetadata(output)\n });\n const data = (0, import_smithy_client.expectNonNull)((0, import_smithy_client.expectObject)(await (0, import_core2.parseJsonBody)(output.body, context)), \"body\");\n const doc = (0, import_smithy_client.take)(data, {\n nextToken: import_smithy_client.expectString,\n roleList: import_smithy_client._json\n });\n Object.assign(contents, doc);\n return contents;\n}, \"de_ListAccountRolesCommand\");\nvar de_ListAccountsCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode !== 200 && output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const contents = (0, import_smithy_client.map)({\n $metadata: deserializeMetadata(output)\n });\n const data = (0, import_smithy_client.expectNonNull)((0, import_smithy_client.expectObject)(await (0, import_core2.parseJsonBody)(output.body, context)), \"body\");\n const doc = (0, import_smithy_client.take)(data, {\n accountList: import_smithy_client._json,\n nextToken: import_smithy_client.expectString\n });\n Object.assign(contents, doc);\n return contents;\n}, \"de_ListAccountsCommand\");\nvar de_LogoutCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode !== 200 && output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const contents = (0, import_smithy_client.map)({\n $metadata: deserializeMetadata(output)\n });\n await (0, import_smithy_client.collectBody)(output.body, context);\n return contents;\n}, \"de_LogoutCommand\");\nvar de_CommandError = /* @__PURE__ */ __name(async (output, context) => {\n const parsedOutput = {\n ...output,\n body: await (0, import_core2.parseJsonErrorBody)(output.body, context)\n };\n const errorCode = (0, import_core2.loadRestJsonErrorCode)(output, parsedOutput.body);\n switch (errorCode) {\n case \"InvalidRequestException\":\n case \"com.amazonaws.sso#InvalidRequestException\":\n throw await de_InvalidRequestExceptionRes(parsedOutput, context);\n case \"ResourceNotFoundException\":\n case \"com.amazonaws.sso#ResourceNotFoundException\":\n throw await de_ResourceNotFoundExceptionRes(parsedOutput, context);\n case \"TooManyRequestsException\":\n case \"com.amazonaws.sso#TooManyRequestsException\":\n throw await de_TooManyRequestsExceptionRes(parsedOutput, context);\n case \"UnauthorizedException\":\n case \"com.amazonaws.sso#UnauthorizedException\":\n throw await de_UnauthorizedExceptionRes(parsedOutput, context);\n default:\n const parsedBody = parsedOutput.body;\n return throwDefaultError({\n output,\n parsedBody,\n errorCode\n });\n }\n}, \"de_CommandError\");\nvar throwDefaultError = (0, import_smithy_client.withBaseException)(SSOServiceException);\nvar de_InvalidRequestExceptionRes = /* @__PURE__ */ __name(async (parsedOutput, context) => {\n const contents = (0, import_smithy_client.map)({});\n const data = parsedOutput.body;\n const doc = (0, import_smithy_client.take)(data, {\n message: import_smithy_client.expectString\n });\n Object.assign(contents, doc);\n const exception = new InvalidRequestException({\n $metadata: deserializeMetadata(parsedOutput),\n ...contents\n });\n return (0, import_smithy_client.decorateServiceException)(exception, parsedOutput.body);\n}, \"de_InvalidRequestExceptionRes\");\nvar de_ResourceNotFoundExceptionRes = /* @__PURE__ */ __name(async (parsedOutput, context) => {\n const contents = (0, import_smithy_client.map)({});\n const data = parsedOutput.body;\n const doc = (0, import_smithy_client.take)(data, {\n message: import_smithy_client.expectString\n });\n Object.assign(contents, doc);\n const exception = new ResourceNotFoundException({\n $metadata: deserializeMetadata(parsedOutput),\n ...contents\n });\n return (0, import_smithy_client.decorateServiceException)(exception, parsedOutput.body);\n}, \"de_ResourceNotFoundExceptionRes\");\nvar de_TooManyRequestsExceptionRes = /* @__PURE__ */ __name(async (parsedOutput, context) => {\n const contents = (0, import_smithy_client.map)({});\n const data = parsedOutput.body;\n const doc = (0, import_smithy_client.take)(data, {\n message: import_smithy_client.expectString\n });\n Object.assign(contents, doc);\n const exception = new TooManyRequestsException({\n $metadata: deserializeMetadata(parsedOutput),\n ...contents\n });\n return (0, import_smithy_client.decorateServiceException)(exception, parsedOutput.body);\n}, \"de_TooManyRequestsExceptionRes\");\nvar de_UnauthorizedExceptionRes = /* @__PURE__ */ __name(async (parsedOutput, context) => {\n const contents = (0, import_smithy_client.map)({});\n const data = parsedOutput.body;\n const doc = (0, import_smithy_client.take)(data, {\n message: import_smithy_client.expectString\n });\n Object.assign(contents, doc);\n const exception = new UnauthorizedException({\n $metadata: deserializeMetadata(parsedOutput),\n ...contents\n });\n return (0, import_smithy_client.decorateServiceException)(exception, parsedOutput.body);\n}, \"de_UnauthorizedExceptionRes\");\nvar deserializeMetadata = /* @__PURE__ */ __name((output) => ({\n httpStatusCode: output.statusCode,\n requestId: output.headers[\"x-amzn-requestid\"] ?? output.headers[\"x-amzn-request-id\"] ?? output.headers[\"x-amz-request-id\"],\n extendedRequestId: output.headers[\"x-amz-id-2\"],\n cfId: output.headers[\"x-amz-cf-id\"]\n}), \"deserializeMetadata\");\nvar _aI = \"accountId\";\nvar _aT = \"accessToken\";\nvar _ai = \"account_id\";\nvar _mR = \"maxResults\";\nvar _mr = \"max_result\";\nvar _nT = \"nextToken\";\nvar _nt = \"next_token\";\nvar _rN = \"roleName\";\nvar _rn = \"role_name\";\nvar _xasbt = \"x-amz-sso_bearer_token\";\n\n// src/commands/GetRoleCredentialsCommand.ts\nvar _GetRoleCredentialsCommand = class _GetRoleCredentialsCommand extends import_smithy_client.Command.classBuilder().ep(commonParams).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"SWBPortalService\", \"GetRoleCredentials\", {}).n(\"SSOClient\", \"GetRoleCredentialsCommand\").f(GetRoleCredentialsRequestFilterSensitiveLog, GetRoleCredentialsResponseFilterSensitiveLog).ser(se_GetRoleCredentialsCommand).de(de_GetRoleCredentialsCommand).build() {\n};\n__name(_GetRoleCredentialsCommand, \"GetRoleCredentialsCommand\");\nvar GetRoleCredentialsCommand = _GetRoleCredentialsCommand;\n\n// src/commands/ListAccountRolesCommand.ts\n\n\n\nvar _ListAccountRolesCommand = class _ListAccountRolesCommand extends import_smithy_client.Command.classBuilder().ep(commonParams).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"SWBPortalService\", \"ListAccountRoles\", {}).n(\"SSOClient\", \"ListAccountRolesCommand\").f(ListAccountRolesRequestFilterSensitiveLog, void 0).ser(se_ListAccountRolesCommand).de(de_ListAccountRolesCommand).build() {\n};\n__name(_ListAccountRolesCommand, \"ListAccountRolesCommand\");\nvar ListAccountRolesCommand = _ListAccountRolesCommand;\n\n// src/commands/ListAccountsCommand.ts\n\n\n\nvar _ListAccountsCommand = class _ListAccountsCommand extends import_smithy_client.Command.classBuilder().ep(commonParams).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"SWBPortalService\", \"ListAccounts\", {}).n(\"SSOClient\", \"ListAccountsCommand\").f(ListAccountsRequestFilterSensitiveLog, void 0).ser(se_ListAccountsCommand).de(de_ListAccountsCommand).build() {\n};\n__name(_ListAccountsCommand, \"ListAccountsCommand\");\nvar ListAccountsCommand = _ListAccountsCommand;\n\n// src/commands/LogoutCommand.ts\n\n\n\nvar _LogoutCommand = class _LogoutCommand extends import_smithy_client.Command.classBuilder().ep(commonParams).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"SWBPortalService\", \"Logout\", {}).n(\"SSOClient\", \"LogoutCommand\").f(LogoutRequestFilterSensitiveLog, void 0).ser(se_LogoutCommand).de(de_LogoutCommand).build() {\n};\n__name(_LogoutCommand, \"LogoutCommand\");\nvar LogoutCommand = _LogoutCommand;\n\n// src/SSO.ts\nvar commands = {\n GetRoleCredentialsCommand,\n ListAccountRolesCommand,\n ListAccountsCommand,\n LogoutCommand\n};\nvar _SSO = class _SSO extends SSOClient {\n};\n__name(_SSO, \"SSO\");\nvar SSO = _SSO;\n(0, import_smithy_client.createAggregatedClient)(commands, SSO);\n\n// src/pagination/ListAccountRolesPaginator.ts\n\nvar paginateListAccountRoles = (0, import_core.createPaginator)(SSOClient, ListAccountRolesCommand, \"nextToken\", \"nextToken\", \"maxResults\");\n\n// src/pagination/ListAccountsPaginator.ts\n\nvar paginateListAccounts = (0, import_core.createPaginator)(SSOClient, ListAccountsCommand, \"nextToken\", \"nextToken\", \"maxResults\");\n// Annotate the CommonJS export names for ESM import in node:\n\n0 && (module.exports = {\n SSOServiceException,\n __Client,\n SSOClient,\n SSO,\n $Command,\n GetRoleCredentialsCommand,\n ListAccountRolesCommand,\n ListAccountsCommand,\n LogoutCommand,\n paginateListAccountRoles,\n paginateListAccounts,\n InvalidRequestException,\n ResourceNotFoundException,\n TooManyRequestsException,\n UnauthorizedException,\n GetRoleCredentialsRequestFilterSensitiveLog,\n RoleCredentialsFilterSensitiveLog,\n GetRoleCredentialsResponseFilterSensitiveLog,\n ListAccountRolesRequestFilterSensitiveLog,\n ListAccountsRequestFilterSensitiveLog,\n LogoutRequestFilterSensitiveLog\n});\n\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getRuntimeConfig = void 0;\nconst tslib_1 = require(\"tslib\");\nconst package_json_1 = tslib_1.__importDefault(require(\"../package.json\"));\nconst core_1 = require(\"@aws-sdk/core\");\nconst util_user_agent_node_1 = require(\"@aws-sdk/util-user-agent-node\");\nconst config_resolver_1 = require(\"@smithy/config-resolver\");\nconst hash_node_1 = require(\"@smithy/hash-node\");\nconst middleware_retry_1 = require(\"@smithy/middleware-retry\");\nconst node_config_provider_1 = require(\"@smithy/node-config-provider\");\nconst node_http_handler_1 = require(\"@smithy/node-http-handler\");\nconst util_body_length_node_1 = require(\"@smithy/util-body-length-node\");\nconst util_retry_1 = require(\"@smithy/util-retry\");\nconst runtimeConfig_shared_1 = require(\"./runtimeConfig.shared\");\nconst smithy_client_1 = require(\"@smithy/smithy-client\");\nconst util_defaults_mode_node_1 = require(\"@smithy/util-defaults-mode-node\");\nconst smithy_client_2 = require(\"@smithy/smithy-client\");\nconst getRuntimeConfig = (config) => {\n (0, smithy_client_2.emitWarningIfUnsupportedVersion)(process.version);\n const defaultsMode = (0, util_defaults_mode_node_1.resolveDefaultsModeConfig)(config);\n const defaultConfigProvider = () => defaultsMode().then(smithy_client_1.loadConfigsForDefaultMode);\n const clientSharedValues = (0, runtimeConfig_shared_1.getRuntimeConfig)(config);\n (0, core_1.emitWarningIfUnsupportedVersion)(process.version);\n return {\n ...clientSharedValues,\n ...config,\n runtime: \"node\",\n defaultsMode,\n bodyLengthChecker: config?.bodyLengthChecker ?? util_body_length_node_1.calculateBodyLength,\n defaultUserAgentProvider: config?.defaultUserAgentProvider ??\n (0, util_user_agent_node_1.defaultUserAgent)({ serviceId: clientSharedValues.serviceId, clientVersion: package_json_1.default.version }),\n maxAttempts: config?.maxAttempts ?? (0, node_config_provider_1.loadConfig)(middleware_retry_1.NODE_MAX_ATTEMPT_CONFIG_OPTIONS),\n region: config?.region ?? (0, node_config_provider_1.loadConfig)(config_resolver_1.NODE_REGION_CONFIG_OPTIONS, config_resolver_1.NODE_REGION_CONFIG_FILE_OPTIONS),\n requestHandler: node_http_handler_1.NodeHttpHandler.create(config?.requestHandler ?? defaultConfigProvider),\n retryMode: config?.retryMode ??\n (0, node_config_provider_1.loadConfig)({\n ...middleware_retry_1.NODE_RETRY_MODE_CONFIG_OPTIONS,\n default: async () => (await defaultConfigProvider()).retryMode || util_retry_1.DEFAULT_RETRY_MODE,\n }),\n sha256: config?.sha256 ?? hash_node_1.Hash.bind(null, \"sha256\"),\n streamCollector: config?.streamCollector ?? node_http_handler_1.streamCollector,\n useDualstackEndpoint: config?.useDualstackEndpoint ?? (0, node_config_provider_1.loadConfig)(config_resolver_1.NODE_USE_DUALSTACK_ENDPOINT_CONFIG_OPTIONS),\n useFipsEndpoint: config?.useFipsEndpoint ?? (0, node_config_provider_1.loadConfig)(config_resolver_1.NODE_USE_FIPS_ENDPOINT_CONFIG_OPTIONS),\n userAgentAppId: config?.userAgentAppId ?? (0, node_config_provider_1.loadConfig)(util_user_agent_node_1.NODE_APP_ID_CONFIG_OPTIONS),\n };\n};\nexports.getRuntimeConfig = getRuntimeConfig;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getRuntimeConfig = void 0;\nconst core_1 = require(\"@aws-sdk/core\");\nconst core_2 = require(\"@smithy/core\");\nconst smithy_client_1 = require(\"@smithy/smithy-client\");\nconst url_parser_1 = require(\"@smithy/url-parser\");\nconst util_base64_1 = require(\"@smithy/util-base64\");\nconst util_utf8_1 = require(\"@smithy/util-utf8\");\nconst httpAuthSchemeProvider_1 = require(\"./auth/httpAuthSchemeProvider\");\nconst endpointResolver_1 = require(\"./endpoint/endpointResolver\");\nconst getRuntimeConfig = (config) => {\n return {\n apiVersion: \"2019-06-10\",\n base64Decoder: config?.base64Decoder ?? util_base64_1.fromBase64,\n base64Encoder: config?.base64Encoder ?? util_base64_1.toBase64,\n disableHostPrefix: config?.disableHostPrefix ?? false,\n endpointProvider: config?.endpointProvider ?? endpointResolver_1.defaultEndpointResolver,\n extensions: config?.extensions ?? [],\n httpAuthSchemeProvider: config?.httpAuthSchemeProvider ?? httpAuthSchemeProvider_1.defaultSSOHttpAuthSchemeProvider,\n httpAuthSchemes: config?.httpAuthSchemes ?? [\n {\n schemeId: \"aws.auth#sigv4\",\n identityProvider: (ipc) => ipc.getIdentityProvider(\"aws.auth#sigv4\"),\n signer: new core_1.AwsSdkSigV4Signer(),\n },\n {\n schemeId: \"smithy.api#noAuth\",\n identityProvider: (ipc) => ipc.getIdentityProvider(\"smithy.api#noAuth\") || (async () => ({})),\n signer: new core_2.NoAuthSigner(),\n },\n ],\n logger: config?.logger ?? new smithy_client_1.NoOpLogger(),\n serviceId: config?.serviceId ?? \"SSO\",\n urlParser: config?.urlParser ?? url_parser_1.parseUrl,\n utf8Decoder: config?.utf8Decoder ?? util_utf8_1.fromUtf8,\n utf8Encoder: config?.utf8Encoder ?? util_utf8_1.toUtf8,\n };\n};\nexports.getRuntimeConfig = getRuntimeConfig;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.STSClient = exports.__Client = void 0;\nconst middleware_host_header_1 = require(\"@aws-sdk/middleware-host-header\");\nconst middleware_logger_1 = require(\"@aws-sdk/middleware-logger\");\nconst middleware_recursion_detection_1 = require(\"@aws-sdk/middleware-recursion-detection\");\nconst middleware_user_agent_1 = require(\"@aws-sdk/middleware-user-agent\");\nconst config_resolver_1 = require(\"@smithy/config-resolver\");\nconst core_1 = require(\"@smithy/core\");\nconst middleware_content_length_1 = require(\"@smithy/middleware-content-length\");\nconst middleware_endpoint_1 = require(\"@smithy/middleware-endpoint\");\nconst middleware_retry_1 = require(\"@smithy/middleware-retry\");\nconst smithy_client_1 = require(\"@smithy/smithy-client\");\nObject.defineProperty(exports, \"__Client\", { enumerable: true, get: function () { return smithy_client_1.Client; } });\nconst httpAuthSchemeProvider_1 = require(\"./auth/httpAuthSchemeProvider\");\nconst EndpointParameters_1 = require(\"./endpoint/EndpointParameters\");\nconst runtimeConfig_1 = require(\"./runtimeConfig\");\nconst runtimeExtensions_1 = require(\"./runtimeExtensions\");\nclass STSClient extends smithy_client_1.Client {\n constructor(...[configuration]) {\n const _config_0 = (0, runtimeConfig_1.getRuntimeConfig)(configuration || {});\n const _config_1 = (0, EndpointParameters_1.resolveClientEndpointParameters)(_config_0);\n const _config_2 = (0, middleware_user_agent_1.resolveUserAgentConfig)(_config_1);\n const _config_3 = (0, middleware_retry_1.resolveRetryConfig)(_config_2);\n const _config_4 = (0, config_resolver_1.resolveRegionConfig)(_config_3);\n const _config_5 = (0, middleware_host_header_1.resolveHostHeaderConfig)(_config_4);\n const _config_6 = (0, middleware_endpoint_1.resolveEndpointConfig)(_config_5);\n const _config_7 = (0, httpAuthSchemeProvider_1.resolveHttpAuthSchemeConfig)(_config_6);\n const _config_8 = (0, runtimeExtensions_1.resolveRuntimeExtensions)(_config_7, configuration?.extensions || []);\n super(_config_8);\n this.config = _config_8;\n this.middlewareStack.use((0, middleware_user_agent_1.getUserAgentPlugin)(this.config));\n this.middlewareStack.use((0, middleware_retry_1.getRetryPlugin)(this.config));\n this.middlewareStack.use((0, middleware_content_length_1.getContentLengthPlugin)(this.config));\n this.middlewareStack.use((0, middleware_host_header_1.getHostHeaderPlugin)(this.config));\n this.middlewareStack.use((0, middleware_logger_1.getLoggerPlugin)(this.config));\n this.middlewareStack.use((0, middleware_recursion_detection_1.getRecursionDetectionPlugin)(this.config));\n this.middlewareStack.use((0, core_1.getHttpAuthSchemeEndpointRuleSetPlugin)(this.config, {\n httpAuthSchemeParametersProvider: httpAuthSchemeProvider_1.defaultSTSHttpAuthSchemeParametersProvider,\n identityProviderConfigProvider: async (config) => new core_1.DefaultIdentityProviderConfig({\n \"aws.auth#sigv4\": config.credentials,\n }),\n }));\n this.middlewareStack.use((0, core_1.getHttpSigningPlugin)(this.config));\n }\n destroy() {\n super.destroy();\n }\n}\nexports.STSClient = STSClient;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.resolveHttpAuthRuntimeConfig = exports.getHttpAuthExtensionConfiguration = void 0;\nconst getHttpAuthExtensionConfiguration = (runtimeConfig) => {\n const _httpAuthSchemes = runtimeConfig.httpAuthSchemes;\n let _httpAuthSchemeProvider = runtimeConfig.httpAuthSchemeProvider;\n let _credentials = runtimeConfig.credentials;\n return {\n setHttpAuthScheme(httpAuthScheme) {\n const index = _httpAuthSchemes.findIndex((scheme) => scheme.schemeId === httpAuthScheme.schemeId);\n if (index === -1) {\n _httpAuthSchemes.push(httpAuthScheme);\n }\n else {\n _httpAuthSchemes.splice(index, 1, httpAuthScheme);\n }\n },\n httpAuthSchemes() {\n return _httpAuthSchemes;\n },\n setHttpAuthSchemeProvider(httpAuthSchemeProvider) {\n _httpAuthSchemeProvider = httpAuthSchemeProvider;\n },\n httpAuthSchemeProvider() {\n return _httpAuthSchemeProvider;\n },\n setCredentials(credentials) {\n _credentials = credentials;\n },\n credentials() {\n return _credentials;\n },\n };\n};\nexports.getHttpAuthExtensionConfiguration = getHttpAuthExtensionConfiguration;\nconst resolveHttpAuthRuntimeConfig = (config) => {\n return {\n httpAuthSchemes: config.httpAuthSchemes(),\n httpAuthSchemeProvider: config.httpAuthSchemeProvider(),\n credentials: config.credentials(),\n };\n};\nexports.resolveHttpAuthRuntimeConfig = resolveHttpAuthRuntimeConfig;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.resolveHttpAuthSchemeConfig = exports.resolveStsAuthConfig = exports.defaultSTSHttpAuthSchemeProvider = exports.defaultSTSHttpAuthSchemeParametersProvider = void 0;\nconst core_1 = require(\"@aws-sdk/core\");\nconst util_middleware_1 = require(\"@smithy/util-middleware\");\nconst STSClient_1 = require(\"../STSClient\");\nconst defaultSTSHttpAuthSchemeParametersProvider = async (config, context, input) => {\n return {\n operation: (0, util_middleware_1.getSmithyContext)(context).operation,\n region: (await (0, util_middleware_1.normalizeProvider)(config.region)()) ||\n (() => {\n throw new Error(\"expected `region` to be configured for `aws.auth#sigv4`\");\n })(),\n };\n};\nexports.defaultSTSHttpAuthSchemeParametersProvider = defaultSTSHttpAuthSchemeParametersProvider;\nfunction createAwsAuthSigv4HttpAuthOption(authParameters) {\n return {\n schemeId: \"aws.auth#sigv4\",\n signingProperties: {\n name: \"sts\",\n region: authParameters.region,\n },\n propertiesExtractor: (config, context) => ({\n signingProperties: {\n config,\n context,\n },\n }),\n };\n}\nfunction createSmithyApiNoAuthHttpAuthOption(authParameters) {\n return {\n schemeId: \"smithy.api#noAuth\",\n };\n}\nconst defaultSTSHttpAuthSchemeProvider = (authParameters) => {\n const options = [];\n switch (authParameters.operation) {\n case \"AssumeRoleWithSAML\": {\n options.push(createSmithyApiNoAuthHttpAuthOption(authParameters));\n break;\n }\n case \"AssumeRoleWithWebIdentity\": {\n options.push(createSmithyApiNoAuthHttpAuthOption(authParameters));\n break;\n }\n default: {\n options.push(createAwsAuthSigv4HttpAuthOption(authParameters));\n }\n }\n return options;\n};\nexports.defaultSTSHttpAuthSchemeProvider = defaultSTSHttpAuthSchemeProvider;\nconst resolveStsAuthConfig = (input) => ({\n ...input,\n stsClientCtor: STSClient_1.STSClient,\n});\nexports.resolveStsAuthConfig = resolveStsAuthConfig;\nconst resolveHttpAuthSchemeConfig = (config) => {\n const config_0 = (0, exports.resolveStsAuthConfig)(config);\n const config_1 = (0, core_1.resolveAwsSdkSigV4Config)(config_0);\n return {\n ...config_1,\n };\n};\nexports.resolveHttpAuthSchemeConfig = resolveHttpAuthSchemeConfig;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.commonParams = exports.resolveClientEndpointParameters = void 0;\nconst resolveClientEndpointParameters = (options) => {\n return {\n ...options,\n useDualstackEndpoint: options.useDualstackEndpoint ?? false,\n useFipsEndpoint: options.useFipsEndpoint ?? false,\n useGlobalEndpoint: options.useGlobalEndpoint ?? false,\n defaultSigningName: \"sts\",\n };\n};\nexports.resolveClientEndpointParameters = resolveClientEndpointParameters;\nexports.commonParams = {\n UseGlobalEndpoint: { type: \"builtInParams\", name: \"useGlobalEndpoint\" },\n UseFIPS: { type: \"builtInParams\", name: \"useFipsEndpoint\" },\n Endpoint: { type: \"builtInParams\", name: \"endpoint\" },\n Region: { type: \"builtInParams\", name: \"region\" },\n UseDualStack: { type: \"builtInParams\", name: \"useDualstackEndpoint\" },\n};\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.defaultEndpointResolver = void 0;\nconst util_endpoints_1 = require(\"@aws-sdk/util-endpoints\");\nconst util_endpoints_2 = require(\"@smithy/util-endpoints\");\nconst ruleset_1 = require(\"./ruleset\");\nconst cache = new util_endpoints_2.EndpointCache({\n size: 50,\n params: [\"Endpoint\", \"Region\", \"UseDualStack\", \"UseFIPS\", \"UseGlobalEndpoint\"],\n});\nconst defaultEndpointResolver = (endpointParams, context = {}) => {\n return cache.get(endpointParams, () => (0, util_endpoints_2.resolveEndpoint)(ruleset_1.ruleSet, {\n endpointParams: endpointParams,\n logger: context.logger,\n }));\n};\nexports.defaultEndpointResolver = defaultEndpointResolver;\nutil_endpoints_2.customEndpointFunctions.aws = util_endpoints_1.awsEndpointFunctions;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ruleSet = void 0;\nconst F = \"required\", G = \"type\", H = \"fn\", I = \"argv\", J = \"ref\";\nconst a = false, b = true, c = \"booleanEquals\", d = \"stringEquals\", e = \"sigv4\", f = \"sts\", g = \"us-east-1\", h = \"endpoint\", i = \"https://sts.{Region}.{PartitionResult#dnsSuffix}\", j = \"tree\", k = \"error\", l = \"getAttr\", m = { [F]: false, [G]: \"String\" }, n = { [F]: true, \"default\": false, [G]: \"Boolean\" }, o = { [J]: \"Endpoint\" }, p = { [H]: \"isSet\", [I]: [{ [J]: \"Region\" }] }, q = { [J]: \"Region\" }, r = { [H]: \"aws.partition\", [I]: [q], \"assign\": \"PartitionResult\" }, s = { [J]: \"UseFIPS\" }, t = { [J]: \"UseDualStack\" }, u = { \"url\": \"https://sts.amazonaws.com\", \"properties\": { \"authSchemes\": [{ \"name\": e, \"signingName\": f, \"signingRegion\": g }] }, \"headers\": {} }, v = {}, w = { \"conditions\": [{ [H]: d, [I]: [q, \"aws-global\"] }], [h]: u, [G]: h }, x = { [H]: c, [I]: [s, true] }, y = { [H]: c, [I]: [t, true] }, z = { [H]: l, [I]: [{ [J]: \"PartitionResult\" }, \"supportsFIPS\"] }, A = { [J]: \"PartitionResult\" }, B = { [H]: c, [I]: [true, { [H]: l, [I]: [A, \"supportsDualStack\"] }] }, C = [{ [H]: \"isSet\", [I]: [o] }], D = [x], E = [y];\nconst _data = { version: \"1.0\", parameters: { Region: m, UseDualStack: n, UseFIPS: n, Endpoint: m, UseGlobalEndpoint: n }, rules: [{ conditions: [{ [H]: c, [I]: [{ [J]: \"UseGlobalEndpoint\" }, b] }, { [H]: \"not\", [I]: C }, p, r, { [H]: c, [I]: [s, a] }, { [H]: c, [I]: [t, a] }], rules: [{ conditions: [{ [H]: d, [I]: [q, \"ap-northeast-1\"] }], endpoint: u, [G]: h }, { conditions: [{ [H]: d, [I]: [q, \"ap-south-1\"] }], endpoint: u, [G]: h }, { conditions: [{ [H]: d, [I]: [q, \"ap-southeast-1\"] }], endpoint: u, [G]: h }, { conditions: [{ [H]: d, [I]: [q, \"ap-southeast-2\"] }], endpoint: u, [G]: h }, w, { conditions: [{ [H]: d, [I]: [q, \"ca-central-1\"] }], endpoint: u, [G]: h }, { conditions: [{ [H]: d, [I]: [q, \"eu-central-1\"] }], endpoint: u, [G]: h }, { conditions: [{ [H]: d, [I]: [q, \"eu-north-1\"] }], endpoint: u, [G]: h }, { conditions: [{ [H]: d, [I]: [q, \"eu-west-1\"] }], endpoint: u, [G]: h }, { conditions: [{ [H]: d, [I]: [q, \"eu-west-2\"] }], endpoint: u, [G]: h }, { conditions: [{ [H]: d, [I]: [q, \"eu-west-3\"] }], endpoint: u, [G]: h }, { conditions: [{ [H]: d, [I]: [q, \"sa-east-1\"] }], endpoint: u, [G]: h }, { conditions: [{ [H]: d, [I]: [q, g] }], endpoint: u, [G]: h }, { conditions: [{ [H]: d, [I]: [q, \"us-east-2\"] }], endpoint: u, [G]: h }, { conditions: [{ [H]: d, [I]: [q, \"us-west-1\"] }], endpoint: u, [G]: h }, { conditions: [{ [H]: d, [I]: [q, \"us-west-2\"] }], endpoint: u, [G]: h }, { endpoint: { url: i, properties: { authSchemes: [{ name: e, signingName: f, signingRegion: \"{Region}\" }] }, headers: v }, [G]: h }], [G]: j }, { conditions: C, rules: [{ conditions: D, error: \"Invalid Configuration: FIPS and custom endpoint are not supported\", [G]: k }, { conditions: E, error: \"Invalid Configuration: Dualstack and custom endpoint are not supported\", [G]: k }, { endpoint: { url: o, properties: v, headers: v }, [G]: h }], [G]: j }, { conditions: [p], rules: [{ conditions: [r], rules: [{ conditions: [x, y], rules: [{ conditions: [{ [H]: c, [I]: [b, z] }, B], rules: [{ endpoint: { url: \"https://sts-fips.{Region}.{PartitionResult#dualStackDnsSuffix}\", properties: v, headers: v }, [G]: h }], [G]: j }, { error: \"FIPS and DualStack are enabled, but this partition does not support one or both\", [G]: k }], [G]: j }, { conditions: D, rules: [{ conditions: [{ [H]: c, [I]: [z, b] }], rules: [{ conditions: [{ [H]: d, [I]: [{ [H]: l, [I]: [A, \"name\"] }, \"aws-us-gov\"] }], endpoint: { url: \"https://sts.{Region}.amazonaws.com\", properties: v, headers: v }, [G]: h }, { endpoint: { url: \"https://sts-fips.{Region}.{PartitionResult#dnsSuffix}\", properties: v, headers: v }, [G]: h }], [G]: j }, { error: \"FIPS is enabled but this partition does not support FIPS\", [G]: k }], [G]: j }, { conditions: E, rules: [{ conditions: [B], rules: [{ endpoint: { url: \"https://sts.{Region}.{PartitionResult#dualStackDnsSuffix}\", properties: v, headers: v }, [G]: h }], [G]: j }, { error: \"DualStack is enabled but this partition does not support DualStack\", [G]: k }], [G]: j }, w, { endpoint: { url: i, properties: v, headers: v }, [G]: h }], [G]: j }], [G]: j }, { error: \"Invalid Configuration: Missing Region\", [G]: k }] };\nexports.ruleSet = _data;\n","\"use strict\";\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, \"default\"), secondTarget && __copyProps(secondTarget, mod, \"default\"));\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/index.ts\nvar src_exports = {};\n__export(src_exports, {\n AssumeRoleCommand: () => AssumeRoleCommand,\n AssumeRoleResponseFilterSensitiveLog: () => AssumeRoleResponseFilterSensitiveLog,\n AssumeRoleWithSAMLCommand: () => AssumeRoleWithSAMLCommand,\n AssumeRoleWithSAMLRequestFilterSensitiveLog: () => AssumeRoleWithSAMLRequestFilterSensitiveLog,\n AssumeRoleWithSAMLResponseFilterSensitiveLog: () => AssumeRoleWithSAMLResponseFilterSensitiveLog,\n AssumeRoleWithWebIdentityCommand: () => AssumeRoleWithWebIdentityCommand,\n AssumeRoleWithWebIdentityRequestFilterSensitiveLog: () => AssumeRoleWithWebIdentityRequestFilterSensitiveLog,\n AssumeRoleWithWebIdentityResponseFilterSensitiveLog: () => AssumeRoleWithWebIdentityResponseFilterSensitiveLog,\n ClientInputEndpointParameters: () => import_EndpointParameters9.ClientInputEndpointParameters,\n CredentialsFilterSensitiveLog: () => CredentialsFilterSensitiveLog,\n DecodeAuthorizationMessageCommand: () => DecodeAuthorizationMessageCommand,\n ExpiredTokenException: () => ExpiredTokenException,\n GetAccessKeyInfoCommand: () => GetAccessKeyInfoCommand,\n GetCallerIdentityCommand: () => GetCallerIdentityCommand,\n GetFederationTokenCommand: () => GetFederationTokenCommand,\n GetFederationTokenResponseFilterSensitiveLog: () => GetFederationTokenResponseFilterSensitiveLog,\n GetSessionTokenCommand: () => GetSessionTokenCommand,\n GetSessionTokenResponseFilterSensitiveLog: () => GetSessionTokenResponseFilterSensitiveLog,\n IDPCommunicationErrorException: () => IDPCommunicationErrorException,\n IDPRejectedClaimException: () => IDPRejectedClaimException,\n InvalidAuthorizationMessageException: () => InvalidAuthorizationMessageException,\n InvalidIdentityTokenException: () => InvalidIdentityTokenException,\n MalformedPolicyDocumentException: () => MalformedPolicyDocumentException,\n PackedPolicyTooLargeException: () => PackedPolicyTooLargeException,\n RegionDisabledException: () => RegionDisabledException,\n STS: () => STS,\n STSServiceException: () => STSServiceException,\n decorateDefaultCredentialProvider: () => decorateDefaultCredentialProvider,\n getDefaultRoleAssumer: () => getDefaultRoleAssumer2,\n getDefaultRoleAssumerWithWebIdentity: () => getDefaultRoleAssumerWithWebIdentity2\n});\nmodule.exports = __toCommonJS(src_exports);\n__reExport(src_exports, require(\"././STSClient\"), module.exports);\n\n// src/STS.ts\n\n\n// src/commands/AssumeRoleCommand.ts\nvar import_middleware_endpoint = require(\"@smithy/middleware-endpoint\");\nvar import_middleware_serde = require(\"@smithy/middleware-serde\");\n\nvar import_EndpointParameters = require(\"./endpoint/EndpointParameters\");\n\n// src/models/models_0.ts\n\n\n// src/models/STSServiceException.ts\nvar import_smithy_client = require(\"@smithy/smithy-client\");\nvar _STSServiceException = class _STSServiceException extends import_smithy_client.ServiceException {\n /**\n * @internal\n */\n constructor(options) {\n super(options);\n Object.setPrototypeOf(this, _STSServiceException.prototype);\n }\n};\n__name(_STSServiceException, \"STSServiceException\");\nvar STSServiceException = _STSServiceException;\n\n// src/models/models_0.ts\nvar _ExpiredTokenException = class _ExpiredTokenException extends STSServiceException {\n /**\n * @internal\n */\n constructor(opts) {\n super({\n name: \"ExpiredTokenException\",\n $fault: \"client\",\n ...opts\n });\n this.name = \"ExpiredTokenException\";\n this.$fault = \"client\";\n Object.setPrototypeOf(this, _ExpiredTokenException.prototype);\n }\n};\n__name(_ExpiredTokenException, \"ExpiredTokenException\");\nvar ExpiredTokenException = _ExpiredTokenException;\nvar _MalformedPolicyDocumentException = class _MalformedPolicyDocumentException extends STSServiceException {\n /**\n * @internal\n */\n constructor(opts) {\n super({\n name: \"MalformedPolicyDocumentException\",\n $fault: \"client\",\n ...opts\n });\n this.name = \"MalformedPolicyDocumentException\";\n this.$fault = \"client\";\n Object.setPrototypeOf(this, _MalformedPolicyDocumentException.prototype);\n }\n};\n__name(_MalformedPolicyDocumentException, \"MalformedPolicyDocumentException\");\nvar MalformedPolicyDocumentException = _MalformedPolicyDocumentException;\nvar _PackedPolicyTooLargeException = class _PackedPolicyTooLargeException extends STSServiceException {\n /**\n * @internal\n */\n constructor(opts) {\n super({\n name: \"PackedPolicyTooLargeException\",\n $fault: \"client\",\n ...opts\n });\n this.name = \"PackedPolicyTooLargeException\";\n this.$fault = \"client\";\n Object.setPrototypeOf(this, _PackedPolicyTooLargeException.prototype);\n }\n};\n__name(_PackedPolicyTooLargeException, \"PackedPolicyTooLargeException\");\nvar PackedPolicyTooLargeException = _PackedPolicyTooLargeException;\nvar _RegionDisabledException = class _RegionDisabledException extends STSServiceException {\n /**\n * @internal\n */\n constructor(opts) {\n super({\n name: \"RegionDisabledException\",\n $fault: \"client\",\n ...opts\n });\n this.name = \"RegionDisabledException\";\n this.$fault = \"client\";\n Object.setPrototypeOf(this, _RegionDisabledException.prototype);\n }\n};\n__name(_RegionDisabledException, \"RegionDisabledException\");\nvar RegionDisabledException = _RegionDisabledException;\nvar _IDPRejectedClaimException = class _IDPRejectedClaimException extends STSServiceException {\n /**\n * @internal\n */\n constructor(opts) {\n super({\n name: \"IDPRejectedClaimException\",\n $fault: \"client\",\n ...opts\n });\n this.name = \"IDPRejectedClaimException\";\n this.$fault = \"client\";\n Object.setPrototypeOf(this, _IDPRejectedClaimException.prototype);\n }\n};\n__name(_IDPRejectedClaimException, \"IDPRejectedClaimException\");\nvar IDPRejectedClaimException = _IDPRejectedClaimException;\nvar _InvalidIdentityTokenException = class _InvalidIdentityTokenException extends STSServiceException {\n /**\n * @internal\n */\n constructor(opts) {\n super({\n name: \"InvalidIdentityTokenException\",\n $fault: \"client\",\n ...opts\n });\n this.name = \"InvalidIdentityTokenException\";\n this.$fault = \"client\";\n Object.setPrototypeOf(this, _InvalidIdentityTokenException.prototype);\n }\n};\n__name(_InvalidIdentityTokenException, \"InvalidIdentityTokenException\");\nvar InvalidIdentityTokenException = _InvalidIdentityTokenException;\nvar _IDPCommunicationErrorException = class _IDPCommunicationErrorException extends STSServiceException {\n /**\n * @internal\n */\n constructor(opts) {\n super({\n name: \"IDPCommunicationErrorException\",\n $fault: \"client\",\n ...opts\n });\n this.name = \"IDPCommunicationErrorException\";\n this.$fault = \"client\";\n Object.setPrototypeOf(this, _IDPCommunicationErrorException.prototype);\n }\n};\n__name(_IDPCommunicationErrorException, \"IDPCommunicationErrorException\");\nvar IDPCommunicationErrorException = _IDPCommunicationErrorException;\nvar _InvalidAuthorizationMessageException = class _InvalidAuthorizationMessageException extends STSServiceException {\n /**\n * @internal\n */\n constructor(opts) {\n super({\n name: \"InvalidAuthorizationMessageException\",\n $fault: \"client\",\n ...opts\n });\n this.name = \"InvalidAuthorizationMessageException\";\n this.$fault = \"client\";\n Object.setPrototypeOf(this, _InvalidAuthorizationMessageException.prototype);\n }\n};\n__name(_InvalidAuthorizationMessageException, \"InvalidAuthorizationMessageException\");\nvar InvalidAuthorizationMessageException = _InvalidAuthorizationMessageException;\nvar CredentialsFilterSensitiveLog = /* @__PURE__ */ __name((obj) => ({\n ...obj,\n ...obj.SecretAccessKey && { SecretAccessKey: import_smithy_client.SENSITIVE_STRING }\n}), \"CredentialsFilterSensitiveLog\");\nvar AssumeRoleResponseFilterSensitiveLog = /* @__PURE__ */ __name((obj) => ({\n ...obj,\n ...obj.Credentials && { Credentials: CredentialsFilterSensitiveLog(obj.Credentials) }\n}), \"AssumeRoleResponseFilterSensitiveLog\");\nvar AssumeRoleWithSAMLRequestFilterSensitiveLog = /* @__PURE__ */ __name((obj) => ({\n ...obj,\n ...obj.SAMLAssertion && { SAMLAssertion: import_smithy_client.SENSITIVE_STRING }\n}), \"AssumeRoleWithSAMLRequestFilterSensitiveLog\");\nvar AssumeRoleWithSAMLResponseFilterSensitiveLog = /* @__PURE__ */ __name((obj) => ({\n ...obj,\n ...obj.Credentials && { Credentials: CredentialsFilterSensitiveLog(obj.Credentials) }\n}), \"AssumeRoleWithSAMLResponseFilterSensitiveLog\");\nvar AssumeRoleWithWebIdentityRequestFilterSensitiveLog = /* @__PURE__ */ __name((obj) => ({\n ...obj,\n ...obj.WebIdentityToken && { WebIdentityToken: import_smithy_client.SENSITIVE_STRING }\n}), \"AssumeRoleWithWebIdentityRequestFilterSensitiveLog\");\nvar AssumeRoleWithWebIdentityResponseFilterSensitiveLog = /* @__PURE__ */ __name((obj) => ({\n ...obj,\n ...obj.Credentials && { Credentials: CredentialsFilterSensitiveLog(obj.Credentials) }\n}), \"AssumeRoleWithWebIdentityResponseFilterSensitiveLog\");\nvar GetFederationTokenResponseFilterSensitiveLog = /* @__PURE__ */ __name((obj) => ({\n ...obj,\n ...obj.Credentials && { Credentials: CredentialsFilterSensitiveLog(obj.Credentials) }\n}), \"GetFederationTokenResponseFilterSensitiveLog\");\nvar GetSessionTokenResponseFilterSensitiveLog = /* @__PURE__ */ __name((obj) => ({\n ...obj,\n ...obj.Credentials && { Credentials: CredentialsFilterSensitiveLog(obj.Credentials) }\n}), \"GetSessionTokenResponseFilterSensitiveLog\");\n\n// src/protocols/Aws_query.ts\nvar import_core = require(\"@aws-sdk/core\");\nvar import_protocol_http = require(\"@smithy/protocol-http\");\n\nvar se_AssumeRoleCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_AssumeRoleRequest(input, context),\n [_A]: _AR,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_AssumeRoleCommand\");\nvar se_AssumeRoleWithSAMLCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_AssumeRoleWithSAMLRequest(input, context),\n [_A]: _ARWSAML,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_AssumeRoleWithSAMLCommand\");\nvar se_AssumeRoleWithWebIdentityCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_AssumeRoleWithWebIdentityRequest(input, context),\n [_A]: _ARWWI,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_AssumeRoleWithWebIdentityCommand\");\nvar se_DecodeAuthorizationMessageCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_DecodeAuthorizationMessageRequest(input, context),\n [_A]: _DAM,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_DecodeAuthorizationMessageCommand\");\nvar se_GetAccessKeyInfoCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_GetAccessKeyInfoRequest(input, context),\n [_A]: _GAKI,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_GetAccessKeyInfoCommand\");\nvar se_GetCallerIdentityCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_GetCallerIdentityRequest(input, context),\n [_A]: _GCI,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_GetCallerIdentityCommand\");\nvar se_GetFederationTokenCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_GetFederationTokenRequest(input, context),\n [_A]: _GFT,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_GetFederationTokenCommand\");\nvar se_GetSessionTokenCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_GetSessionTokenRequest(input, context),\n [_A]: _GST,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_GetSessionTokenCommand\");\nvar de_AssumeRoleCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_AssumeRoleResponse(data.AssumeRoleResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_AssumeRoleCommand\");\nvar de_AssumeRoleWithSAMLCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_AssumeRoleWithSAMLResponse(data.AssumeRoleWithSAMLResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_AssumeRoleWithSAMLCommand\");\nvar de_AssumeRoleWithWebIdentityCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_AssumeRoleWithWebIdentityResponse(data.AssumeRoleWithWebIdentityResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_AssumeRoleWithWebIdentityCommand\");\nvar de_DecodeAuthorizationMessageCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_DecodeAuthorizationMessageResponse(data.DecodeAuthorizationMessageResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_DecodeAuthorizationMessageCommand\");\nvar de_GetAccessKeyInfoCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_GetAccessKeyInfoResponse(data.GetAccessKeyInfoResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_GetAccessKeyInfoCommand\");\nvar de_GetCallerIdentityCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_GetCallerIdentityResponse(data.GetCallerIdentityResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_GetCallerIdentityCommand\");\nvar de_GetFederationTokenCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_GetFederationTokenResponse(data.GetFederationTokenResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_GetFederationTokenCommand\");\nvar de_GetSessionTokenCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_GetSessionTokenResponse(data.GetSessionTokenResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_GetSessionTokenCommand\");\nvar de_CommandError = /* @__PURE__ */ __name(async (output, context) => {\n const parsedOutput = {\n ...output,\n body: await (0, import_core.parseXmlErrorBody)(output.body, context)\n };\n const errorCode = loadQueryErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n case \"ExpiredTokenException\":\n case \"com.amazonaws.sts#ExpiredTokenException\":\n throw await de_ExpiredTokenExceptionRes(parsedOutput, context);\n case \"MalformedPolicyDocument\":\n case \"com.amazonaws.sts#MalformedPolicyDocumentException\":\n throw await de_MalformedPolicyDocumentExceptionRes(parsedOutput, context);\n case \"PackedPolicyTooLarge\":\n case \"com.amazonaws.sts#PackedPolicyTooLargeException\":\n throw await de_PackedPolicyTooLargeExceptionRes(parsedOutput, context);\n case \"RegionDisabledException\":\n case \"com.amazonaws.sts#RegionDisabledException\":\n throw await de_RegionDisabledExceptionRes(parsedOutput, context);\n case \"IDPRejectedClaim\":\n case \"com.amazonaws.sts#IDPRejectedClaimException\":\n throw await de_IDPRejectedClaimExceptionRes(parsedOutput, context);\n case \"InvalidIdentityToken\":\n case \"com.amazonaws.sts#InvalidIdentityTokenException\":\n throw await de_InvalidIdentityTokenExceptionRes(parsedOutput, context);\n case \"IDPCommunicationError\":\n case \"com.amazonaws.sts#IDPCommunicationErrorException\":\n throw await de_IDPCommunicationErrorExceptionRes(parsedOutput, context);\n case \"InvalidAuthorizationMessageException\":\n case \"com.amazonaws.sts#InvalidAuthorizationMessageException\":\n throw await de_InvalidAuthorizationMessageExceptionRes(parsedOutput, context);\n default:\n const parsedBody = parsedOutput.body;\n return throwDefaultError({\n output,\n parsedBody: parsedBody.Error,\n errorCode\n });\n }\n}, \"de_CommandError\");\nvar de_ExpiredTokenExceptionRes = /* @__PURE__ */ __name(async (parsedOutput, context) => {\n const body = parsedOutput.body;\n const deserialized = de_ExpiredTokenException(body.Error, context);\n const exception = new ExpiredTokenException({\n $metadata: deserializeMetadata(parsedOutput),\n ...deserialized\n });\n return (0, import_smithy_client.decorateServiceException)(exception, body);\n}, \"de_ExpiredTokenExceptionRes\");\nvar de_IDPCommunicationErrorExceptionRes = /* @__PURE__ */ __name(async (parsedOutput, context) => {\n const body = parsedOutput.body;\n const deserialized = de_IDPCommunicationErrorException(body.Error, context);\n const exception = new IDPCommunicationErrorException({\n $metadata: deserializeMetadata(parsedOutput),\n ...deserialized\n });\n return (0, import_smithy_client.decorateServiceException)(exception, body);\n}, \"de_IDPCommunicationErrorExceptionRes\");\nvar de_IDPRejectedClaimExceptionRes = /* @__PURE__ */ __name(async (parsedOutput, context) => {\n const body = parsedOutput.body;\n const deserialized = de_IDPRejectedClaimException(body.Error, context);\n const exception = new IDPRejectedClaimException({\n $metadata: deserializeMetadata(parsedOutput),\n ...deserialized\n });\n return (0, import_smithy_client.decorateServiceException)(exception, body);\n}, \"de_IDPRejectedClaimExceptionRes\");\nvar de_InvalidAuthorizationMessageExceptionRes = /* @__PURE__ */ __name(async (parsedOutput, context) => {\n const body = parsedOutput.body;\n const deserialized = de_InvalidAuthorizationMessageException(body.Error, context);\n const exception = new InvalidAuthorizationMessageException({\n $metadata: deserializeMetadata(parsedOutput),\n ...deserialized\n });\n return (0, import_smithy_client.decorateServiceException)(exception, body);\n}, \"de_InvalidAuthorizationMessageExceptionRes\");\nvar de_InvalidIdentityTokenExceptionRes = /* @__PURE__ */ __name(async (parsedOutput, context) => {\n const body = parsedOutput.body;\n const deserialized = de_InvalidIdentityTokenException(body.Error, context);\n const exception = new InvalidIdentityTokenException({\n $metadata: deserializeMetadata(parsedOutput),\n ...deserialized\n });\n return (0, import_smithy_client.decorateServiceException)(exception, body);\n}, \"de_InvalidIdentityTokenExceptionRes\");\nvar de_MalformedPolicyDocumentExceptionRes = /* @__PURE__ */ __name(async (parsedOutput, context) => {\n const body = parsedOutput.body;\n const deserialized = de_MalformedPolicyDocumentException(body.Error, context);\n const exception = new MalformedPolicyDocumentException({\n $metadata: deserializeMetadata(parsedOutput),\n ...deserialized\n });\n return (0, import_smithy_client.decorateServiceException)(exception, body);\n}, \"de_MalformedPolicyDocumentExceptionRes\");\nvar de_PackedPolicyTooLargeExceptionRes = /* @__PURE__ */ __name(async (parsedOutput, context) => {\n const body = parsedOutput.body;\n const deserialized = de_PackedPolicyTooLargeException(body.Error, context);\n const exception = new PackedPolicyTooLargeException({\n $metadata: deserializeMetadata(parsedOutput),\n ...deserialized\n });\n return (0, import_smithy_client.decorateServiceException)(exception, body);\n}, \"de_PackedPolicyTooLargeExceptionRes\");\nvar de_RegionDisabledExceptionRes = /* @__PURE__ */ __name(async (parsedOutput, context) => {\n const body = parsedOutput.body;\n const deserialized = de_RegionDisabledException(body.Error, context);\n const exception = new RegionDisabledException({\n $metadata: deserializeMetadata(parsedOutput),\n ...deserialized\n });\n return (0, import_smithy_client.decorateServiceException)(exception, body);\n}, \"de_RegionDisabledExceptionRes\");\nvar se_AssumeRoleRequest = /* @__PURE__ */ __name((input, context) => {\n var _a2, _b, _c, _d;\n const entries = {};\n if (input[_RA] != null) {\n entries[_RA] = input[_RA];\n }\n if (input[_RSN] != null) {\n entries[_RSN] = input[_RSN];\n }\n if (input[_PA] != null) {\n const memberEntries = se_policyDescriptorListType(input[_PA], context);\n if (((_a2 = input[_PA]) == null ? void 0 : _a2.length) === 0) {\n entries.PolicyArns = [];\n }\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `PolicyArns.${key}`;\n entries[loc] = value;\n });\n }\n if (input[_P] != null) {\n entries[_P] = input[_P];\n }\n if (input[_DS] != null) {\n entries[_DS] = input[_DS];\n }\n if (input[_T] != null) {\n const memberEntries = se_tagListType(input[_T], context);\n if (((_b = input[_T]) == null ? void 0 : _b.length) === 0) {\n entries.Tags = [];\n }\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `Tags.${key}`;\n entries[loc] = value;\n });\n }\n if (input[_TTK] != null) {\n const memberEntries = se_tagKeyListType(input[_TTK], context);\n if (((_c = input[_TTK]) == null ? void 0 : _c.length) === 0) {\n entries.TransitiveTagKeys = [];\n }\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `TransitiveTagKeys.${key}`;\n entries[loc] = value;\n });\n }\n if (input[_EI] != null) {\n entries[_EI] = input[_EI];\n }\n if (input[_SN] != null) {\n entries[_SN] = input[_SN];\n }\n if (input[_TC] != null) {\n entries[_TC] = input[_TC];\n }\n if (input[_SI] != null) {\n entries[_SI] = input[_SI];\n }\n if (input[_PC] != null) {\n const memberEntries = se_ProvidedContextsListType(input[_PC], context);\n if (((_d = input[_PC]) == null ? void 0 : _d.length) === 0) {\n entries.ProvidedContexts = [];\n }\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `ProvidedContexts.${key}`;\n entries[loc] = value;\n });\n }\n return entries;\n}, \"se_AssumeRoleRequest\");\nvar se_AssumeRoleWithSAMLRequest = /* @__PURE__ */ __name((input, context) => {\n var _a2;\n const entries = {};\n if (input[_RA] != null) {\n entries[_RA] = input[_RA];\n }\n if (input[_PAr] != null) {\n entries[_PAr] = input[_PAr];\n }\n if (input[_SAMLA] != null) {\n entries[_SAMLA] = input[_SAMLA];\n }\n if (input[_PA] != null) {\n const memberEntries = se_policyDescriptorListType(input[_PA], context);\n if (((_a2 = input[_PA]) == null ? void 0 : _a2.length) === 0) {\n entries.PolicyArns = [];\n }\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `PolicyArns.${key}`;\n entries[loc] = value;\n });\n }\n if (input[_P] != null) {\n entries[_P] = input[_P];\n }\n if (input[_DS] != null) {\n entries[_DS] = input[_DS];\n }\n return entries;\n}, \"se_AssumeRoleWithSAMLRequest\");\nvar se_AssumeRoleWithWebIdentityRequest = /* @__PURE__ */ __name((input, context) => {\n var _a2;\n const entries = {};\n if (input[_RA] != null) {\n entries[_RA] = input[_RA];\n }\n if (input[_RSN] != null) {\n entries[_RSN] = input[_RSN];\n }\n if (input[_WIT] != null) {\n entries[_WIT] = input[_WIT];\n }\n if (input[_PI] != null) {\n entries[_PI] = input[_PI];\n }\n if (input[_PA] != null) {\n const memberEntries = se_policyDescriptorListType(input[_PA], context);\n if (((_a2 = input[_PA]) == null ? void 0 : _a2.length) === 0) {\n entries.PolicyArns = [];\n }\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `PolicyArns.${key}`;\n entries[loc] = value;\n });\n }\n if (input[_P] != null) {\n entries[_P] = input[_P];\n }\n if (input[_DS] != null) {\n entries[_DS] = input[_DS];\n }\n return entries;\n}, \"se_AssumeRoleWithWebIdentityRequest\");\nvar se_DecodeAuthorizationMessageRequest = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_EM] != null) {\n entries[_EM] = input[_EM];\n }\n return entries;\n}, \"se_DecodeAuthorizationMessageRequest\");\nvar se_GetAccessKeyInfoRequest = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_AKI] != null) {\n entries[_AKI] = input[_AKI];\n }\n return entries;\n}, \"se_GetAccessKeyInfoRequest\");\nvar se_GetCallerIdentityRequest = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n return entries;\n}, \"se_GetCallerIdentityRequest\");\nvar se_GetFederationTokenRequest = /* @__PURE__ */ __name((input, context) => {\n var _a2, _b;\n const entries = {};\n if (input[_N] != null) {\n entries[_N] = input[_N];\n }\n if (input[_P] != null) {\n entries[_P] = input[_P];\n }\n if (input[_PA] != null) {\n const memberEntries = se_policyDescriptorListType(input[_PA], context);\n if (((_a2 = input[_PA]) == null ? void 0 : _a2.length) === 0) {\n entries.PolicyArns = [];\n }\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `PolicyArns.${key}`;\n entries[loc] = value;\n });\n }\n if (input[_DS] != null) {\n entries[_DS] = input[_DS];\n }\n if (input[_T] != null) {\n const memberEntries = se_tagListType(input[_T], context);\n if (((_b = input[_T]) == null ? void 0 : _b.length) === 0) {\n entries.Tags = [];\n }\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `Tags.${key}`;\n entries[loc] = value;\n });\n }\n return entries;\n}, \"se_GetFederationTokenRequest\");\nvar se_GetSessionTokenRequest = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_DS] != null) {\n entries[_DS] = input[_DS];\n }\n if (input[_SN] != null) {\n entries[_SN] = input[_SN];\n }\n if (input[_TC] != null) {\n entries[_TC] = input[_TC];\n }\n return entries;\n}, \"se_GetSessionTokenRequest\");\nvar se_policyDescriptorListType = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n let counter = 1;\n for (const entry of input) {\n if (entry === null) {\n continue;\n }\n const memberEntries = se_PolicyDescriptorType(entry, context);\n Object.entries(memberEntries).forEach(([key, value]) => {\n entries[`member.${counter}.${key}`] = value;\n });\n counter++;\n }\n return entries;\n}, \"se_policyDescriptorListType\");\nvar se_PolicyDescriptorType = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_a] != null) {\n entries[_a] = input[_a];\n }\n return entries;\n}, \"se_PolicyDescriptorType\");\nvar se_ProvidedContext = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_PAro] != null) {\n entries[_PAro] = input[_PAro];\n }\n if (input[_CA] != null) {\n entries[_CA] = input[_CA];\n }\n return entries;\n}, \"se_ProvidedContext\");\nvar se_ProvidedContextsListType = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n let counter = 1;\n for (const entry of input) {\n if (entry === null) {\n continue;\n }\n const memberEntries = se_ProvidedContext(entry, context);\n Object.entries(memberEntries).forEach(([key, value]) => {\n entries[`member.${counter}.${key}`] = value;\n });\n counter++;\n }\n return entries;\n}, \"se_ProvidedContextsListType\");\nvar se_Tag = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_K] != null) {\n entries[_K] = input[_K];\n }\n if (input[_Va] != null) {\n entries[_Va] = input[_Va];\n }\n return entries;\n}, \"se_Tag\");\nvar se_tagKeyListType = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n let counter = 1;\n for (const entry of input) {\n if (entry === null) {\n continue;\n }\n entries[`member.${counter}`] = entry;\n counter++;\n }\n return entries;\n}, \"se_tagKeyListType\");\nvar se_tagListType = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n let counter = 1;\n for (const entry of input) {\n if (entry === null) {\n continue;\n }\n const memberEntries = se_Tag(entry, context);\n Object.entries(memberEntries).forEach(([key, value]) => {\n entries[`member.${counter}.${key}`] = value;\n });\n counter++;\n }\n return entries;\n}, \"se_tagListType\");\nvar de_AssumedRoleUser = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_ARI] != null) {\n contents[_ARI] = (0, import_smithy_client.expectString)(output[_ARI]);\n }\n if (output[_Ar] != null) {\n contents[_Ar] = (0, import_smithy_client.expectString)(output[_Ar]);\n }\n return contents;\n}, \"de_AssumedRoleUser\");\nvar de_AssumeRoleResponse = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_C] != null) {\n contents[_C] = de_Credentials(output[_C], context);\n }\n if (output[_ARU] != null) {\n contents[_ARU] = de_AssumedRoleUser(output[_ARU], context);\n }\n if (output[_PPS] != null) {\n contents[_PPS] = (0, import_smithy_client.strictParseInt32)(output[_PPS]);\n }\n if (output[_SI] != null) {\n contents[_SI] = (0, import_smithy_client.expectString)(output[_SI]);\n }\n return contents;\n}, \"de_AssumeRoleResponse\");\nvar de_AssumeRoleWithSAMLResponse = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_C] != null) {\n contents[_C] = de_Credentials(output[_C], context);\n }\n if (output[_ARU] != null) {\n contents[_ARU] = de_AssumedRoleUser(output[_ARU], context);\n }\n if (output[_PPS] != null) {\n contents[_PPS] = (0, import_smithy_client.strictParseInt32)(output[_PPS]);\n }\n if (output[_S] != null) {\n contents[_S] = (0, import_smithy_client.expectString)(output[_S]);\n }\n if (output[_ST] != null) {\n contents[_ST] = (0, import_smithy_client.expectString)(output[_ST]);\n }\n if (output[_I] != null) {\n contents[_I] = (0, import_smithy_client.expectString)(output[_I]);\n }\n if (output[_Au] != null) {\n contents[_Au] = (0, import_smithy_client.expectString)(output[_Au]);\n }\n if (output[_NQ] != null) {\n contents[_NQ] = (0, import_smithy_client.expectString)(output[_NQ]);\n }\n if (output[_SI] != null) {\n contents[_SI] = (0, import_smithy_client.expectString)(output[_SI]);\n }\n return contents;\n}, \"de_AssumeRoleWithSAMLResponse\");\nvar de_AssumeRoleWithWebIdentityResponse = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_C] != null) {\n contents[_C] = de_Credentials(output[_C], context);\n }\n if (output[_SFWIT] != null) {\n contents[_SFWIT] = (0, import_smithy_client.expectString)(output[_SFWIT]);\n }\n if (output[_ARU] != null) {\n contents[_ARU] = de_AssumedRoleUser(output[_ARU], context);\n }\n if (output[_PPS] != null) {\n contents[_PPS] = (0, import_smithy_client.strictParseInt32)(output[_PPS]);\n }\n if (output[_Pr] != null) {\n contents[_Pr] = (0, import_smithy_client.expectString)(output[_Pr]);\n }\n if (output[_Au] != null) {\n contents[_Au] = (0, import_smithy_client.expectString)(output[_Au]);\n }\n if (output[_SI] != null) {\n contents[_SI] = (0, import_smithy_client.expectString)(output[_SI]);\n }\n return contents;\n}, \"de_AssumeRoleWithWebIdentityResponse\");\nvar de_Credentials = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_AKI] != null) {\n contents[_AKI] = (0, import_smithy_client.expectString)(output[_AKI]);\n }\n if (output[_SAK] != null) {\n contents[_SAK] = (0, import_smithy_client.expectString)(output[_SAK]);\n }\n if (output[_STe] != null) {\n contents[_STe] = (0, import_smithy_client.expectString)(output[_STe]);\n }\n if (output[_E] != null) {\n contents[_E] = (0, import_smithy_client.expectNonNull)((0, import_smithy_client.parseRfc3339DateTimeWithOffset)(output[_E]));\n }\n return contents;\n}, \"de_Credentials\");\nvar de_DecodeAuthorizationMessageResponse = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_DM] != null) {\n contents[_DM] = (0, import_smithy_client.expectString)(output[_DM]);\n }\n return contents;\n}, \"de_DecodeAuthorizationMessageResponse\");\nvar de_ExpiredTokenException = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_m] != null) {\n contents[_m] = (0, import_smithy_client.expectString)(output[_m]);\n }\n return contents;\n}, \"de_ExpiredTokenException\");\nvar de_FederatedUser = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_FUI] != null) {\n contents[_FUI] = (0, import_smithy_client.expectString)(output[_FUI]);\n }\n if (output[_Ar] != null) {\n contents[_Ar] = (0, import_smithy_client.expectString)(output[_Ar]);\n }\n return contents;\n}, \"de_FederatedUser\");\nvar de_GetAccessKeyInfoResponse = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_Ac] != null) {\n contents[_Ac] = (0, import_smithy_client.expectString)(output[_Ac]);\n }\n return contents;\n}, \"de_GetAccessKeyInfoResponse\");\nvar de_GetCallerIdentityResponse = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_UI] != null) {\n contents[_UI] = (0, import_smithy_client.expectString)(output[_UI]);\n }\n if (output[_Ac] != null) {\n contents[_Ac] = (0, import_smithy_client.expectString)(output[_Ac]);\n }\n if (output[_Ar] != null) {\n contents[_Ar] = (0, import_smithy_client.expectString)(output[_Ar]);\n }\n return contents;\n}, \"de_GetCallerIdentityResponse\");\nvar de_GetFederationTokenResponse = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_C] != null) {\n contents[_C] = de_Credentials(output[_C], context);\n }\n if (output[_FU] != null) {\n contents[_FU] = de_FederatedUser(output[_FU], context);\n }\n if (output[_PPS] != null) {\n contents[_PPS] = (0, import_smithy_client.strictParseInt32)(output[_PPS]);\n }\n return contents;\n}, \"de_GetFederationTokenResponse\");\nvar de_GetSessionTokenResponse = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_C] != null) {\n contents[_C] = de_Credentials(output[_C], context);\n }\n return contents;\n}, \"de_GetSessionTokenResponse\");\nvar de_IDPCommunicationErrorException = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_m] != null) {\n contents[_m] = (0, import_smithy_client.expectString)(output[_m]);\n }\n return contents;\n}, \"de_IDPCommunicationErrorException\");\nvar de_IDPRejectedClaimException = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_m] != null) {\n contents[_m] = (0, import_smithy_client.expectString)(output[_m]);\n }\n return contents;\n}, \"de_IDPRejectedClaimException\");\nvar de_InvalidAuthorizationMessageException = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_m] != null) {\n contents[_m] = (0, import_smithy_client.expectString)(output[_m]);\n }\n return contents;\n}, \"de_InvalidAuthorizationMessageException\");\nvar de_InvalidIdentityTokenException = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_m] != null) {\n contents[_m] = (0, import_smithy_client.expectString)(output[_m]);\n }\n return contents;\n}, \"de_InvalidIdentityTokenException\");\nvar de_MalformedPolicyDocumentException = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_m] != null) {\n contents[_m] = (0, import_smithy_client.expectString)(output[_m]);\n }\n return contents;\n}, \"de_MalformedPolicyDocumentException\");\nvar de_PackedPolicyTooLargeException = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_m] != null) {\n contents[_m] = (0, import_smithy_client.expectString)(output[_m]);\n }\n return contents;\n}, \"de_PackedPolicyTooLargeException\");\nvar de_RegionDisabledException = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_m] != null) {\n contents[_m] = (0, import_smithy_client.expectString)(output[_m]);\n }\n return contents;\n}, \"de_RegionDisabledException\");\nvar deserializeMetadata = /* @__PURE__ */ __name((output) => ({\n httpStatusCode: output.statusCode,\n requestId: output.headers[\"x-amzn-requestid\"] ?? output.headers[\"x-amzn-request-id\"] ?? output.headers[\"x-amz-request-id\"],\n extendedRequestId: output.headers[\"x-amz-id-2\"],\n cfId: output.headers[\"x-amz-cf-id\"]\n}), \"deserializeMetadata\");\nvar throwDefaultError = (0, import_smithy_client.withBaseException)(STSServiceException);\nvar buildHttpRpcRequest = /* @__PURE__ */ __name(async (context, headers, path, resolvedHostname, body) => {\n const { hostname, protocol = \"https\", port, path: basePath } = await context.endpoint();\n const contents = {\n protocol,\n hostname,\n port,\n method: \"POST\",\n path: basePath.endsWith(\"/\") ? basePath.slice(0, -1) + path : basePath + path,\n headers\n };\n if (resolvedHostname !== void 0) {\n contents.hostname = resolvedHostname;\n }\n if (body !== void 0) {\n contents.body = body;\n }\n return new import_protocol_http.HttpRequest(contents);\n}, \"buildHttpRpcRequest\");\nvar SHARED_HEADERS = {\n \"content-type\": \"application/x-www-form-urlencoded\"\n};\nvar _ = \"2011-06-15\";\nvar _A = \"Action\";\nvar _AKI = \"AccessKeyId\";\nvar _AR = \"AssumeRole\";\nvar _ARI = \"AssumedRoleId\";\nvar _ARU = \"AssumedRoleUser\";\nvar _ARWSAML = \"AssumeRoleWithSAML\";\nvar _ARWWI = \"AssumeRoleWithWebIdentity\";\nvar _Ac = \"Account\";\nvar _Ar = \"Arn\";\nvar _Au = \"Audience\";\nvar _C = \"Credentials\";\nvar _CA = \"ContextAssertion\";\nvar _DAM = \"DecodeAuthorizationMessage\";\nvar _DM = \"DecodedMessage\";\nvar _DS = \"DurationSeconds\";\nvar _E = \"Expiration\";\nvar _EI = \"ExternalId\";\nvar _EM = \"EncodedMessage\";\nvar _FU = \"FederatedUser\";\nvar _FUI = \"FederatedUserId\";\nvar _GAKI = \"GetAccessKeyInfo\";\nvar _GCI = \"GetCallerIdentity\";\nvar _GFT = \"GetFederationToken\";\nvar _GST = \"GetSessionToken\";\nvar _I = \"Issuer\";\nvar _K = \"Key\";\nvar _N = \"Name\";\nvar _NQ = \"NameQualifier\";\nvar _P = \"Policy\";\nvar _PA = \"PolicyArns\";\nvar _PAr = \"PrincipalArn\";\nvar _PAro = \"ProviderArn\";\nvar _PC = \"ProvidedContexts\";\nvar _PI = \"ProviderId\";\nvar _PPS = \"PackedPolicySize\";\nvar _Pr = \"Provider\";\nvar _RA = \"RoleArn\";\nvar _RSN = \"RoleSessionName\";\nvar _S = \"Subject\";\nvar _SAK = \"SecretAccessKey\";\nvar _SAMLA = \"SAMLAssertion\";\nvar _SFWIT = \"SubjectFromWebIdentityToken\";\nvar _SI = \"SourceIdentity\";\nvar _SN = \"SerialNumber\";\nvar _ST = \"SubjectType\";\nvar _STe = \"SessionToken\";\nvar _T = \"Tags\";\nvar _TC = \"TokenCode\";\nvar _TTK = \"TransitiveTagKeys\";\nvar _UI = \"UserId\";\nvar _V = \"Version\";\nvar _Va = \"Value\";\nvar _WIT = \"WebIdentityToken\";\nvar _a = \"arn\";\nvar _m = \"message\";\nvar buildFormUrlencodedString = /* @__PURE__ */ __name((formEntries) => Object.entries(formEntries).map(([key, value]) => (0, import_smithy_client.extendedEncodeURIComponent)(key) + \"=\" + (0, import_smithy_client.extendedEncodeURIComponent)(value)).join(\"&\"), \"buildFormUrlencodedString\");\nvar loadQueryErrorCode = /* @__PURE__ */ __name((output, data) => {\n var _a2;\n if (((_a2 = data.Error) == null ? void 0 : _a2.Code) !== void 0) {\n return data.Error.Code;\n }\n if (output.statusCode == 404) {\n return \"NotFound\";\n }\n}, \"loadQueryErrorCode\");\n\n// src/commands/AssumeRoleCommand.ts\nvar _AssumeRoleCommand = class _AssumeRoleCommand extends import_smithy_client.Command.classBuilder().ep(import_EndpointParameters.commonParams).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"AWSSecurityTokenServiceV20110615\", \"AssumeRole\", {}).n(\"STSClient\", \"AssumeRoleCommand\").f(void 0, AssumeRoleResponseFilterSensitiveLog).ser(se_AssumeRoleCommand).de(de_AssumeRoleCommand).build() {\n};\n__name(_AssumeRoleCommand, \"AssumeRoleCommand\");\nvar AssumeRoleCommand = _AssumeRoleCommand;\n\n// src/commands/AssumeRoleWithSAMLCommand.ts\n\n\n\nvar import_EndpointParameters2 = require(\"./endpoint/EndpointParameters\");\nvar _AssumeRoleWithSAMLCommand = class _AssumeRoleWithSAMLCommand extends import_smithy_client.Command.classBuilder().ep(import_EndpointParameters2.commonParams).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"AWSSecurityTokenServiceV20110615\", \"AssumeRoleWithSAML\", {}).n(\"STSClient\", \"AssumeRoleWithSAMLCommand\").f(AssumeRoleWithSAMLRequestFilterSensitiveLog, AssumeRoleWithSAMLResponseFilterSensitiveLog).ser(se_AssumeRoleWithSAMLCommand).de(de_AssumeRoleWithSAMLCommand).build() {\n};\n__name(_AssumeRoleWithSAMLCommand, \"AssumeRoleWithSAMLCommand\");\nvar AssumeRoleWithSAMLCommand = _AssumeRoleWithSAMLCommand;\n\n// src/commands/AssumeRoleWithWebIdentityCommand.ts\n\n\n\nvar import_EndpointParameters3 = require(\"./endpoint/EndpointParameters\");\nvar _AssumeRoleWithWebIdentityCommand = class _AssumeRoleWithWebIdentityCommand extends import_smithy_client.Command.classBuilder().ep(import_EndpointParameters3.commonParams).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"AWSSecurityTokenServiceV20110615\", \"AssumeRoleWithWebIdentity\", {}).n(\"STSClient\", \"AssumeRoleWithWebIdentityCommand\").f(AssumeRoleWithWebIdentityRequestFilterSensitiveLog, AssumeRoleWithWebIdentityResponseFilterSensitiveLog).ser(se_AssumeRoleWithWebIdentityCommand).de(de_AssumeRoleWithWebIdentityCommand).build() {\n};\n__name(_AssumeRoleWithWebIdentityCommand, \"AssumeRoleWithWebIdentityCommand\");\nvar AssumeRoleWithWebIdentityCommand = _AssumeRoleWithWebIdentityCommand;\n\n// src/commands/DecodeAuthorizationMessageCommand.ts\n\n\n\nvar import_EndpointParameters4 = require(\"./endpoint/EndpointParameters\");\nvar _DecodeAuthorizationMessageCommand = class _DecodeAuthorizationMessageCommand extends import_smithy_client.Command.classBuilder().ep(import_EndpointParameters4.commonParams).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"AWSSecurityTokenServiceV20110615\", \"DecodeAuthorizationMessage\", {}).n(\"STSClient\", \"DecodeAuthorizationMessageCommand\").f(void 0, void 0).ser(se_DecodeAuthorizationMessageCommand).de(de_DecodeAuthorizationMessageCommand).build() {\n};\n__name(_DecodeAuthorizationMessageCommand, \"DecodeAuthorizationMessageCommand\");\nvar DecodeAuthorizationMessageCommand = _DecodeAuthorizationMessageCommand;\n\n// src/commands/GetAccessKeyInfoCommand.ts\n\n\n\nvar import_EndpointParameters5 = require(\"./endpoint/EndpointParameters\");\nvar _GetAccessKeyInfoCommand = class _GetAccessKeyInfoCommand extends import_smithy_client.Command.classBuilder().ep(import_EndpointParameters5.commonParams).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"AWSSecurityTokenServiceV20110615\", \"GetAccessKeyInfo\", {}).n(\"STSClient\", \"GetAccessKeyInfoCommand\").f(void 0, void 0).ser(se_GetAccessKeyInfoCommand).de(de_GetAccessKeyInfoCommand).build() {\n};\n__name(_GetAccessKeyInfoCommand, \"GetAccessKeyInfoCommand\");\nvar GetAccessKeyInfoCommand = _GetAccessKeyInfoCommand;\n\n// src/commands/GetCallerIdentityCommand.ts\n\n\n\nvar import_EndpointParameters6 = require(\"./endpoint/EndpointParameters\");\nvar _GetCallerIdentityCommand = class _GetCallerIdentityCommand extends import_smithy_client.Command.classBuilder().ep(import_EndpointParameters6.commonParams).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"AWSSecurityTokenServiceV20110615\", \"GetCallerIdentity\", {}).n(\"STSClient\", \"GetCallerIdentityCommand\").f(void 0, void 0).ser(se_GetCallerIdentityCommand).de(de_GetCallerIdentityCommand).build() {\n};\n__name(_GetCallerIdentityCommand, \"GetCallerIdentityCommand\");\nvar GetCallerIdentityCommand = _GetCallerIdentityCommand;\n\n// src/commands/GetFederationTokenCommand.ts\n\n\n\nvar import_EndpointParameters7 = require(\"./endpoint/EndpointParameters\");\nvar _GetFederationTokenCommand = class _GetFederationTokenCommand extends import_smithy_client.Command.classBuilder().ep(import_EndpointParameters7.commonParams).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"AWSSecurityTokenServiceV20110615\", \"GetFederationToken\", {}).n(\"STSClient\", \"GetFederationTokenCommand\").f(void 0, GetFederationTokenResponseFilterSensitiveLog).ser(se_GetFederationTokenCommand).de(de_GetFederationTokenCommand).build() {\n};\n__name(_GetFederationTokenCommand, \"GetFederationTokenCommand\");\nvar GetFederationTokenCommand = _GetFederationTokenCommand;\n\n// src/commands/GetSessionTokenCommand.ts\n\n\n\nvar import_EndpointParameters8 = require(\"./endpoint/EndpointParameters\");\nvar _GetSessionTokenCommand = class _GetSessionTokenCommand extends import_smithy_client.Command.classBuilder().ep(import_EndpointParameters8.commonParams).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"AWSSecurityTokenServiceV20110615\", \"GetSessionToken\", {}).n(\"STSClient\", \"GetSessionTokenCommand\").f(void 0, GetSessionTokenResponseFilterSensitiveLog).ser(se_GetSessionTokenCommand).de(de_GetSessionTokenCommand).build() {\n};\n__name(_GetSessionTokenCommand, \"GetSessionTokenCommand\");\nvar GetSessionTokenCommand = _GetSessionTokenCommand;\n\n// src/STS.ts\nvar import_STSClient = require(\"././STSClient\");\nvar commands = {\n AssumeRoleCommand,\n AssumeRoleWithSAMLCommand,\n AssumeRoleWithWebIdentityCommand,\n DecodeAuthorizationMessageCommand,\n GetAccessKeyInfoCommand,\n GetCallerIdentityCommand,\n GetFederationTokenCommand,\n GetSessionTokenCommand\n};\nvar _STS = class _STS extends import_STSClient.STSClient {\n};\n__name(_STS, \"STS\");\nvar STS = _STS;\n(0, import_smithy_client.createAggregatedClient)(commands, STS);\n\n// src/index.ts\nvar import_EndpointParameters9 = require(\"./endpoint/EndpointParameters\");\n\n// src/defaultStsRoleAssumers.ts\nvar ASSUME_ROLE_DEFAULT_REGION = \"us-east-1\";\nvar getAccountIdFromAssumedRoleUser = /* @__PURE__ */ __name((assumedRoleUser) => {\n if (typeof (assumedRoleUser == null ? void 0 : assumedRoleUser.Arn) === \"string\") {\n const arnComponents = assumedRoleUser.Arn.split(\":\");\n if (arnComponents.length > 4 && arnComponents[4] !== \"\") {\n return arnComponents[4];\n }\n }\n return void 0;\n}, \"getAccountIdFromAssumedRoleUser\");\nvar resolveRegion = /* @__PURE__ */ __name(async (_region, _parentRegion, credentialProviderLogger) => {\n var _a2;\n const region = typeof _region === \"function\" ? await _region() : _region;\n const parentRegion = typeof _parentRegion === \"function\" ? await _parentRegion() : _parentRegion;\n (_a2 = credentialProviderLogger == null ? void 0 : credentialProviderLogger.debug) == null ? void 0 : _a2.call(\n credentialProviderLogger,\n \"@aws-sdk/client-sts::resolveRegion\",\n \"accepting first of:\",\n `${region} (provider)`,\n `${parentRegion} (parent client)`,\n `${ASSUME_ROLE_DEFAULT_REGION} (STS default)`\n );\n return region ?? parentRegion ?? ASSUME_ROLE_DEFAULT_REGION;\n}, \"resolveRegion\");\nvar getDefaultRoleAssumer = /* @__PURE__ */ __name((stsOptions, stsClientCtor) => {\n let stsClient;\n let closureSourceCreds;\n return async (sourceCreds, params) => {\n var _a2, _b, _c;\n closureSourceCreds = sourceCreds;\n if (!stsClient) {\n const {\n logger = (_a2 = stsOptions == null ? void 0 : stsOptions.parentClientConfig) == null ? void 0 : _a2.logger,\n region,\n requestHandler = (_b = stsOptions == null ? void 0 : stsOptions.parentClientConfig) == null ? void 0 : _b.requestHandler,\n credentialProviderLogger\n } = stsOptions;\n const resolvedRegion = await resolveRegion(\n region,\n (_c = stsOptions == null ? void 0 : stsOptions.parentClientConfig) == null ? void 0 : _c.region,\n credentialProviderLogger\n );\n const isCompatibleRequestHandler = !isH2(requestHandler);\n stsClient = new stsClientCtor({\n // A hack to make sts client uses the credential in current closure.\n credentialDefaultProvider: () => async () => closureSourceCreds,\n region: resolvedRegion,\n requestHandler: isCompatibleRequestHandler ? requestHandler : void 0,\n logger\n });\n }\n const { Credentials: Credentials2, AssumedRoleUser: AssumedRoleUser2 } = await stsClient.send(new AssumeRoleCommand(params));\n if (!Credentials2 || !Credentials2.AccessKeyId || !Credentials2.SecretAccessKey) {\n throw new Error(`Invalid response from STS.assumeRole call with role ${params.RoleArn}`);\n }\n const accountId = getAccountIdFromAssumedRoleUser(AssumedRoleUser2);\n return {\n accessKeyId: Credentials2.AccessKeyId,\n secretAccessKey: Credentials2.SecretAccessKey,\n sessionToken: Credentials2.SessionToken,\n expiration: Credentials2.Expiration,\n // TODO(credentialScope): access normally when shape is updated.\n ...Credentials2.CredentialScope && { credentialScope: Credentials2.CredentialScope },\n ...accountId && { accountId }\n };\n };\n}, \"getDefaultRoleAssumer\");\nvar getDefaultRoleAssumerWithWebIdentity = /* @__PURE__ */ __name((stsOptions, stsClientCtor) => {\n let stsClient;\n return async (params) => {\n var _a2, _b, _c;\n if (!stsClient) {\n const {\n logger = (_a2 = stsOptions == null ? void 0 : stsOptions.parentClientConfig) == null ? void 0 : _a2.logger,\n region,\n requestHandler = (_b = stsOptions == null ? void 0 : stsOptions.parentClientConfig) == null ? void 0 : _b.requestHandler,\n credentialProviderLogger\n } = stsOptions;\n const resolvedRegion = await resolveRegion(\n region,\n (_c = stsOptions == null ? void 0 : stsOptions.parentClientConfig) == null ? void 0 : _c.region,\n credentialProviderLogger\n );\n const isCompatibleRequestHandler = !isH2(requestHandler);\n stsClient = new stsClientCtor({\n region: resolvedRegion,\n requestHandler: isCompatibleRequestHandler ? requestHandler : void 0,\n logger\n });\n }\n const { Credentials: Credentials2, AssumedRoleUser: AssumedRoleUser2 } = await stsClient.send(new AssumeRoleWithWebIdentityCommand(params));\n if (!Credentials2 || !Credentials2.AccessKeyId || !Credentials2.SecretAccessKey) {\n throw new Error(`Invalid response from STS.assumeRoleWithWebIdentity call with role ${params.RoleArn}`);\n }\n const accountId = getAccountIdFromAssumedRoleUser(AssumedRoleUser2);\n return {\n accessKeyId: Credentials2.AccessKeyId,\n secretAccessKey: Credentials2.SecretAccessKey,\n sessionToken: Credentials2.SessionToken,\n expiration: Credentials2.Expiration,\n // TODO(credentialScope): access normally when shape is updated.\n ...Credentials2.CredentialScope && { credentialScope: Credentials2.CredentialScope },\n ...accountId && { accountId }\n };\n };\n}, \"getDefaultRoleAssumerWithWebIdentity\");\nvar isH2 = /* @__PURE__ */ __name((requestHandler) => {\n var _a2;\n return ((_a2 = requestHandler == null ? void 0 : requestHandler.metadata) == null ? void 0 : _a2.handlerProtocol) === \"h2\";\n}, \"isH2\");\n\n// src/defaultRoleAssumers.ts\nvar import_STSClient2 = require(\"././STSClient\");\nvar getCustomizableStsClientCtor = /* @__PURE__ */ __name((baseCtor, customizations) => {\n var _a2;\n if (!customizations)\n return baseCtor;\n else\n return _a2 = class extends baseCtor {\n constructor(config) {\n super(config);\n for (const customization of customizations) {\n this.middlewareStack.use(customization);\n }\n }\n }, __name(_a2, \"CustomizableSTSClient\"), _a2;\n}, \"getCustomizableStsClientCtor\");\nvar getDefaultRoleAssumer2 = /* @__PURE__ */ __name((stsOptions = {}, stsPlugins) => getDefaultRoleAssumer(stsOptions, getCustomizableStsClientCtor(import_STSClient2.STSClient, stsPlugins)), \"getDefaultRoleAssumer\");\nvar getDefaultRoleAssumerWithWebIdentity2 = /* @__PURE__ */ __name((stsOptions = {}, stsPlugins) => getDefaultRoleAssumerWithWebIdentity(stsOptions, getCustomizableStsClientCtor(import_STSClient2.STSClient, stsPlugins)), \"getDefaultRoleAssumerWithWebIdentity\");\nvar decorateDefaultCredentialProvider = /* @__PURE__ */ __name((provider) => (input) => provider({\n roleAssumer: getDefaultRoleAssumer2(input),\n roleAssumerWithWebIdentity: getDefaultRoleAssumerWithWebIdentity2(input),\n ...input\n}), \"decorateDefaultCredentialProvider\");\n// Annotate the CommonJS export names for ESM import in node:\n\n0 && (module.exports = {\n STSServiceException,\n __Client,\n STSClient,\n STS,\n $Command,\n AssumeRoleCommand,\n AssumeRoleWithSAMLCommand,\n AssumeRoleWithWebIdentityCommand,\n DecodeAuthorizationMessageCommand,\n GetAccessKeyInfoCommand,\n GetCallerIdentityCommand,\n GetFederationTokenCommand,\n GetSessionTokenCommand,\n ExpiredTokenException,\n MalformedPolicyDocumentException,\n PackedPolicyTooLargeException,\n RegionDisabledException,\n IDPRejectedClaimException,\n InvalidIdentityTokenException,\n IDPCommunicationErrorException,\n InvalidAuthorizationMessageException,\n CredentialsFilterSensitiveLog,\n AssumeRoleResponseFilterSensitiveLog,\n AssumeRoleWithSAMLRequestFilterSensitiveLog,\n AssumeRoleWithSAMLResponseFilterSensitiveLog,\n AssumeRoleWithWebIdentityRequestFilterSensitiveLog,\n AssumeRoleWithWebIdentityResponseFilterSensitiveLog,\n GetFederationTokenResponseFilterSensitiveLog,\n GetSessionTokenResponseFilterSensitiveLog,\n getDefaultRoleAssumer,\n getDefaultRoleAssumerWithWebIdentity,\n decorateDefaultCredentialProvider\n});\n\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getRuntimeConfig = void 0;\nconst tslib_1 = require(\"tslib\");\nconst package_json_1 = tslib_1.__importDefault(require(\"../package.json\"));\nconst core_1 = require(\"@aws-sdk/core\");\nconst credential_provider_node_1 = require(\"@aws-sdk/credential-provider-node\");\nconst util_user_agent_node_1 = require(\"@aws-sdk/util-user-agent-node\");\nconst config_resolver_1 = require(\"@smithy/config-resolver\");\nconst core_2 = require(\"@smithy/core\");\nconst hash_node_1 = require(\"@smithy/hash-node\");\nconst middleware_retry_1 = require(\"@smithy/middleware-retry\");\nconst node_config_provider_1 = require(\"@smithy/node-config-provider\");\nconst node_http_handler_1 = require(\"@smithy/node-http-handler\");\nconst util_body_length_node_1 = require(\"@smithy/util-body-length-node\");\nconst util_retry_1 = require(\"@smithy/util-retry\");\nconst runtimeConfig_shared_1 = require(\"./runtimeConfig.shared\");\nconst smithy_client_1 = require(\"@smithy/smithy-client\");\nconst util_defaults_mode_node_1 = require(\"@smithy/util-defaults-mode-node\");\nconst smithy_client_2 = require(\"@smithy/smithy-client\");\nconst getRuntimeConfig = (config) => {\n (0, smithy_client_2.emitWarningIfUnsupportedVersion)(process.version);\n const defaultsMode = (0, util_defaults_mode_node_1.resolveDefaultsModeConfig)(config);\n const defaultConfigProvider = () => defaultsMode().then(smithy_client_1.loadConfigsForDefaultMode);\n const clientSharedValues = (0, runtimeConfig_shared_1.getRuntimeConfig)(config);\n (0, core_1.emitWarningIfUnsupportedVersion)(process.version);\n return {\n ...clientSharedValues,\n ...config,\n runtime: \"node\",\n defaultsMode,\n bodyLengthChecker: config?.bodyLengthChecker ?? util_body_length_node_1.calculateBodyLength,\n credentialDefaultProvider: config?.credentialDefaultProvider ?? credential_provider_node_1.defaultProvider,\n defaultUserAgentProvider: config?.defaultUserAgentProvider ??\n (0, util_user_agent_node_1.defaultUserAgent)({ serviceId: clientSharedValues.serviceId, clientVersion: package_json_1.default.version }),\n httpAuthSchemes: config?.httpAuthSchemes ?? [\n {\n schemeId: \"aws.auth#sigv4\",\n identityProvider: (ipc) => ipc.getIdentityProvider(\"aws.auth#sigv4\") ||\n (async (idProps) => await (0, credential_provider_node_1.defaultProvider)(idProps?.__config || {})()),\n signer: new core_1.AwsSdkSigV4Signer(),\n },\n {\n schemeId: \"smithy.api#noAuth\",\n identityProvider: (ipc) => ipc.getIdentityProvider(\"smithy.api#noAuth\") || (async () => ({})),\n signer: new core_2.NoAuthSigner(),\n },\n ],\n maxAttempts: config?.maxAttempts ?? (0, node_config_provider_1.loadConfig)(middleware_retry_1.NODE_MAX_ATTEMPT_CONFIG_OPTIONS),\n region: config?.region ?? (0, node_config_provider_1.loadConfig)(config_resolver_1.NODE_REGION_CONFIG_OPTIONS, config_resolver_1.NODE_REGION_CONFIG_FILE_OPTIONS),\n requestHandler: node_http_handler_1.NodeHttpHandler.create(config?.requestHandler ?? defaultConfigProvider),\n retryMode: config?.retryMode ??\n (0, node_config_provider_1.loadConfig)({\n ...middleware_retry_1.NODE_RETRY_MODE_CONFIG_OPTIONS,\n default: async () => (await defaultConfigProvider()).retryMode || util_retry_1.DEFAULT_RETRY_MODE,\n }),\n sha256: config?.sha256 ?? hash_node_1.Hash.bind(null, \"sha256\"),\n streamCollector: config?.streamCollector ?? node_http_handler_1.streamCollector,\n useDualstackEndpoint: config?.useDualstackEndpoint ?? (0, node_config_provider_1.loadConfig)(config_resolver_1.NODE_USE_DUALSTACK_ENDPOINT_CONFIG_OPTIONS),\n useFipsEndpoint: config?.useFipsEndpoint ?? (0, node_config_provider_1.loadConfig)(config_resolver_1.NODE_USE_FIPS_ENDPOINT_CONFIG_OPTIONS),\n userAgentAppId: config?.userAgentAppId ?? (0, node_config_provider_1.loadConfig)(util_user_agent_node_1.NODE_APP_ID_CONFIG_OPTIONS),\n };\n};\nexports.getRuntimeConfig = getRuntimeConfig;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getRuntimeConfig = void 0;\nconst core_1 = require(\"@aws-sdk/core\");\nconst core_2 = require(\"@smithy/core\");\nconst smithy_client_1 = require(\"@smithy/smithy-client\");\nconst url_parser_1 = require(\"@smithy/url-parser\");\nconst util_base64_1 = require(\"@smithy/util-base64\");\nconst util_utf8_1 = require(\"@smithy/util-utf8\");\nconst httpAuthSchemeProvider_1 = require(\"./auth/httpAuthSchemeProvider\");\nconst endpointResolver_1 = require(\"./endpoint/endpointResolver\");\nconst getRuntimeConfig = (config) => {\n return {\n apiVersion: \"2011-06-15\",\n base64Decoder: config?.base64Decoder ?? util_base64_1.fromBase64,\n base64Encoder: config?.base64Encoder ?? util_base64_1.toBase64,\n disableHostPrefix: config?.disableHostPrefix ?? false,\n endpointProvider: config?.endpointProvider ?? endpointResolver_1.defaultEndpointResolver,\n extensions: config?.extensions ?? [],\n httpAuthSchemeProvider: config?.httpAuthSchemeProvider ?? httpAuthSchemeProvider_1.defaultSTSHttpAuthSchemeProvider,\n httpAuthSchemes: config?.httpAuthSchemes ?? [\n {\n schemeId: \"aws.auth#sigv4\",\n identityProvider: (ipc) => ipc.getIdentityProvider(\"aws.auth#sigv4\"),\n signer: new core_1.AwsSdkSigV4Signer(),\n },\n {\n schemeId: \"smithy.api#noAuth\",\n identityProvider: (ipc) => ipc.getIdentityProvider(\"smithy.api#noAuth\") || (async () => ({})),\n signer: new core_2.NoAuthSigner(),\n },\n ],\n logger: config?.logger ?? new smithy_client_1.NoOpLogger(),\n serviceId: config?.serviceId ?? \"STS\",\n urlParser: config?.urlParser ?? url_parser_1.parseUrl,\n utf8Decoder: config?.utf8Decoder ?? util_utf8_1.fromUtf8,\n utf8Encoder: config?.utf8Encoder ?? util_utf8_1.toUtf8,\n };\n};\nexports.getRuntimeConfig = getRuntimeConfig;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.resolveRuntimeExtensions = void 0;\nconst region_config_resolver_1 = require(\"@aws-sdk/region-config-resolver\");\nconst protocol_http_1 = require(\"@smithy/protocol-http\");\nconst smithy_client_1 = require(\"@smithy/smithy-client\");\nconst httpAuthExtensionConfiguration_1 = require(\"./auth/httpAuthExtensionConfiguration\");\nconst asPartial = (t) => t;\nconst resolveRuntimeExtensions = (runtimeConfig, extensions) => {\n const extensionConfiguration = {\n ...asPartial((0, region_config_resolver_1.getAwsRegionExtensionConfiguration)(runtimeConfig)),\n ...asPartial((0, smithy_client_1.getDefaultExtensionConfiguration)(runtimeConfig)),\n ...asPartial((0, protocol_http_1.getHttpHandlerExtensionConfiguration)(runtimeConfig)),\n ...asPartial((0, httpAuthExtensionConfiguration_1.getHttpAuthExtensionConfiguration)(runtimeConfig)),\n };\n extensions.forEach((extension) => extension.configure(extensionConfiguration));\n return {\n ...runtimeConfig,\n ...(0, region_config_resolver_1.resolveAwsRegionExtensionConfiguration)(extensionConfiguration),\n ...(0, smithy_client_1.resolveDefaultRuntimeConfig)(extensionConfiguration),\n ...(0, protocol_http_1.resolveHttpHandlerRuntimeConfig)(extensionConfiguration),\n ...(0, httpAuthExtensionConfiguration_1.resolveHttpAuthRuntimeConfig)(extensionConfiguration),\n };\n};\nexports.resolveRuntimeExtensions = resolveRuntimeExtensions;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst tslib_1 = require(\"tslib\");\ntslib_1.__exportStar(require(\"./submodules/client/index\"), exports);\ntslib_1.__exportStar(require(\"./submodules/httpAuthSchemes/index\"), exports);\ntslib_1.__exportStar(require(\"./submodules/protocols/index\"), exports);\n","\"use strict\";\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/submodules/client/index.ts\nvar client_exports = {};\n__export(client_exports, {\n emitWarningIfUnsupportedVersion: () => emitWarningIfUnsupportedVersion,\n setFeature: () => setFeature\n});\nmodule.exports = __toCommonJS(client_exports);\n\n// src/submodules/client/emitWarningIfUnsupportedVersion.ts\nvar warningEmitted = false;\nvar emitWarningIfUnsupportedVersion = /* @__PURE__ */ __name((version) => {\n if (version && !warningEmitted && parseInt(version.substring(1, version.indexOf(\".\"))) < 18) {\n warningEmitted = true;\n process.emitWarning(\n `NodeDeprecationWarning: The AWS SDK for JavaScript (v3) will\nno longer support Node.js 16.x on January 6, 2025.\n\nTo continue receiving updates to AWS services, bug fixes, and security\nupdates please upgrade to a supported Node.js LTS version.\n\nMore information can be found at: https://a.co/74kJMmI`\n );\n }\n}, \"emitWarningIfUnsupportedVersion\");\n\n// src/submodules/client/setFeature.ts\nfunction setFeature(context, feature, value) {\n if (!context.__aws_sdk_context) {\n context.__aws_sdk_context = {\n features: {}\n };\n } else if (!context.__aws_sdk_context.features) {\n context.__aws_sdk_context.features = {};\n }\n context.__aws_sdk_context.features[feature] = value;\n}\n__name(setFeature, \"setFeature\");\n// Annotate the CommonJS export names for ESM import in node:\n0 && (module.exports = {\n emitWarningIfUnsupportedVersion,\n setFeature\n});\n","\"use strict\";\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/submodules/httpAuthSchemes/index.ts\nvar httpAuthSchemes_exports = {};\n__export(httpAuthSchemes_exports, {\n AWSSDKSigV4Signer: () => AWSSDKSigV4Signer,\n AwsSdkSigV4ASigner: () => AwsSdkSigV4ASigner,\n AwsSdkSigV4Signer: () => AwsSdkSigV4Signer,\n NODE_SIGV4A_CONFIG_OPTIONS: () => NODE_SIGV4A_CONFIG_OPTIONS,\n resolveAWSSDKSigV4Config: () => resolveAWSSDKSigV4Config,\n resolveAwsSdkSigV4AConfig: () => resolveAwsSdkSigV4AConfig,\n resolveAwsSdkSigV4Config: () => resolveAwsSdkSigV4Config,\n validateSigningProperties: () => validateSigningProperties\n});\nmodule.exports = __toCommonJS(httpAuthSchemes_exports);\n\n// src/submodules/httpAuthSchemes/aws_sdk/AwsSdkSigV4Signer.ts\nvar import_protocol_http2 = require(\"@smithy/protocol-http\");\n\n// src/submodules/httpAuthSchemes/utils/getDateHeader.ts\nvar import_protocol_http = require(\"@smithy/protocol-http\");\nvar getDateHeader = /* @__PURE__ */ __name((response) => {\n var _a, _b;\n return import_protocol_http.HttpResponse.isInstance(response) ? ((_a = response.headers) == null ? void 0 : _a.date) ?? ((_b = response.headers) == null ? void 0 : _b.Date) : void 0;\n}, \"getDateHeader\");\n\n// src/submodules/httpAuthSchemes/utils/getSkewCorrectedDate.ts\nvar getSkewCorrectedDate = /* @__PURE__ */ __name((systemClockOffset) => new Date(Date.now() + systemClockOffset), \"getSkewCorrectedDate\");\n\n// src/submodules/httpAuthSchemes/utils/isClockSkewed.ts\nvar isClockSkewed = /* @__PURE__ */ __name((clockTime, systemClockOffset) => Math.abs(getSkewCorrectedDate(systemClockOffset).getTime() - clockTime) >= 3e5, \"isClockSkewed\");\n\n// src/submodules/httpAuthSchemes/utils/getUpdatedSystemClockOffset.ts\nvar getUpdatedSystemClockOffset = /* @__PURE__ */ __name((clockTime, currentSystemClockOffset) => {\n const clockTimeInMs = Date.parse(clockTime);\n if (isClockSkewed(clockTimeInMs, currentSystemClockOffset)) {\n return clockTimeInMs - Date.now();\n }\n return currentSystemClockOffset;\n}, \"getUpdatedSystemClockOffset\");\n\n// src/submodules/httpAuthSchemes/aws_sdk/AwsSdkSigV4Signer.ts\nvar throwSigningPropertyError = /* @__PURE__ */ __name((name, property) => {\n if (!property) {\n throw new Error(`Property \\`${name}\\` is not resolved for AWS SDK SigV4Auth`);\n }\n return property;\n}, \"throwSigningPropertyError\");\nvar validateSigningProperties = /* @__PURE__ */ __name(async (signingProperties) => {\n var _a, _b, _c;\n const context = throwSigningPropertyError(\n \"context\",\n signingProperties.context\n );\n const config = throwSigningPropertyError(\"config\", signingProperties.config);\n const authScheme = (_c = (_b = (_a = context.endpointV2) == null ? void 0 : _a.properties) == null ? void 0 : _b.authSchemes) == null ? void 0 : _c[0];\n const signerFunction = throwSigningPropertyError(\n \"signer\",\n config.signer\n );\n const signer = await signerFunction(authScheme);\n const signingRegion = signingProperties == null ? void 0 : signingProperties.signingRegion;\n const signingRegionSet = signingProperties == null ? void 0 : signingProperties.signingRegionSet;\n const signingName = signingProperties == null ? void 0 : signingProperties.signingName;\n return {\n config,\n signer,\n signingRegion,\n signingRegionSet,\n signingName\n };\n}, \"validateSigningProperties\");\nvar _AwsSdkSigV4Signer = class _AwsSdkSigV4Signer {\n async sign(httpRequest, identity, signingProperties) {\n var _a;\n if (!import_protocol_http2.HttpRequest.isInstance(httpRequest)) {\n throw new Error(\"The request is not an instance of `HttpRequest` and cannot be signed\");\n }\n const validatedProps = await validateSigningProperties(signingProperties);\n const { config, signer } = validatedProps;\n let { signingRegion, signingName } = validatedProps;\n const handlerExecutionContext = signingProperties.context;\n if (((_a = handlerExecutionContext == null ? void 0 : handlerExecutionContext.authSchemes) == null ? void 0 : _a.length) ?? 0 > 1) {\n const [first, second] = handlerExecutionContext.authSchemes;\n if ((first == null ? void 0 : first.name) === \"sigv4a\" && (second == null ? void 0 : second.name) === \"sigv4\") {\n signingRegion = (second == null ? void 0 : second.signingRegion) ?? signingRegion;\n signingName = (second == null ? void 0 : second.signingName) ?? signingName;\n }\n }\n const signedRequest = await signer.sign(httpRequest, {\n signingDate: getSkewCorrectedDate(config.systemClockOffset),\n signingRegion,\n signingService: signingName\n });\n return signedRequest;\n }\n errorHandler(signingProperties) {\n return (error) => {\n const serverTime = error.ServerTime ?? getDateHeader(error.$response);\n if (serverTime) {\n const config = throwSigningPropertyError(\"config\", signingProperties.config);\n const initialSystemClockOffset = config.systemClockOffset;\n config.systemClockOffset = getUpdatedSystemClockOffset(serverTime, config.systemClockOffset);\n const clockSkewCorrected = config.systemClockOffset !== initialSystemClockOffset;\n if (clockSkewCorrected && error.$metadata) {\n error.$metadata.clockSkewCorrected = true;\n }\n }\n throw error;\n };\n }\n successHandler(httpResponse, signingProperties) {\n const dateHeader = getDateHeader(httpResponse);\n if (dateHeader) {\n const config = throwSigningPropertyError(\"config\", signingProperties.config);\n config.systemClockOffset = getUpdatedSystemClockOffset(dateHeader, config.systemClockOffset);\n }\n }\n};\n__name(_AwsSdkSigV4Signer, \"AwsSdkSigV4Signer\");\nvar AwsSdkSigV4Signer = _AwsSdkSigV4Signer;\nvar AWSSDKSigV4Signer = AwsSdkSigV4Signer;\n\n// src/submodules/httpAuthSchemes/aws_sdk/AwsSdkSigV4ASigner.ts\nvar import_protocol_http3 = require(\"@smithy/protocol-http\");\nvar _AwsSdkSigV4ASigner = class _AwsSdkSigV4ASigner extends AwsSdkSigV4Signer {\n async sign(httpRequest, identity, signingProperties) {\n var _a;\n if (!import_protocol_http3.HttpRequest.isInstance(httpRequest)) {\n throw new Error(\"The request is not an instance of `HttpRequest` and cannot be signed\");\n }\n const { config, signer, signingRegion, signingRegionSet, signingName } = await validateSigningProperties(\n signingProperties\n );\n const configResolvedSigningRegionSet = await ((_a = config.sigv4aSigningRegionSet) == null ? void 0 : _a.call(config));\n const multiRegionOverride = (configResolvedSigningRegionSet ?? signingRegionSet ?? [signingRegion]).join(\",\");\n const signedRequest = await signer.sign(httpRequest, {\n signingDate: getSkewCorrectedDate(config.systemClockOffset),\n signingRegion: multiRegionOverride,\n signingService: signingName\n });\n return signedRequest;\n }\n};\n__name(_AwsSdkSigV4ASigner, \"AwsSdkSigV4ASigner\");\nvar AwsSdkSigV4ASigner = _AwsSdkSigV4ASigner;\n\n// src/submodules/httpAuthSchemes/aws_sdk/resolveAwsSdkSigV4AConfig.ts\nvar import_core = require(\"@smithy/core\");\nvar import_property_provider = require(\"@smithy/property-provider\");\nvar resolveAwsSdkSigV4AConfig = /* @__PURE__ */ __name((config) => {\n config.sigv4aSigningRegionSet = (0, import_core.normalizeProvider)(config.sigv4aSigningRegionSet);\n return config;\n}, \"resolveAwsSdkSigV4AConfig\");\nvar NODE_SIGV4A_CONFIG_OPTIONS = {\n environmentVariableSelector(env) {\n if (env.AWS_SIGV4A_SIGNING_REGION_SET) {\n return env.AWS_SIGV4A_SIGNING_REGION_SET.split(\",\").map((_) => _.trim());\n }\n throw new import_property_provider.ProviderError(\"AWS_SIGV4A_SIGNING_REGION_SET not set in env.\", {\n tryNextLink: true\n });\n },\n configFileSelector(profile) {\n if (profile.sigv4a_signing_region_set) {\n return (profile.sigv4a_signing_region_set ?? \"\").split(\",\").map((_) => _.trim());\n }\n throw new import_property_provider.ProviderError(\"sigv4a_signing_region_set not set in profile.\", {\n tryNextLink: true\n });\n },\n default: void 0\n};\n\n// src/submodules/httpAuthSchemes/aws_sdk/resolveAwsSdkSigV4Config.ts\nvar import_core2 = require(\"@smithy/core\");\nvar import_signature_v4 = require(\"@smithy/signature-v4\");\nvar resolveAwsSdkSigV4Config = /* @__PURE__ */ __name((config) => {\n let normalizedCreds;\n if (config.credentials) {\n normalizedCreds = (0, import_core2.memoizeIdentityProvider)(config.credentials, import_core2.isIdentityExpired, import_core2.doesIdentityRequireRefresh);\n }\n if (!normalizedCreds) {\n if (config.credentialDefaultProvider) {\n normalizedCreds = (0, import_core2.normalizeProvider)(\n config.credentialDefaultProvider(\n Object.assign({}, config, {\n parentClientConfig: config\n })\n )\n );\n } else {\n normalizedCreds = /* @__PURE__ */ __name(async () => {\n throw new Error(\"`credentials` is missing\");\n }, \"normalizedCreds\");\n }\n }\n const {\n // Default for signingEscapePath\n signingEscapePath = true,\n // Default for systemClockOffset\n systemClockOffset = config.systemClockOffset || 0,\n // No default for sha256 since it is platform dependent\n sha256\n } = config;\n let signer;\n if (config.signer) {\n signer = (0, import_core2.normalizeProvider)(config.signer);\n } else if (config.regionInfoProvider) {\n signer = /* @__PURE__ */ __name(() => (0, import_core2.normalizeProvider)(config.region)().then(\n async (region) => [\n await config.regionInfoProvider(region, {\n useFipsEndpoint: await config.useFipsEndpoint(),\n useDualstackEndpoint: await config.useDualstackEndpoint()\n }) || {},\n region\n ]\n ).then(([regionInfo, region]) => {\n const { signingRegion, signingService } = regionInfo;\n config.signingRegion = config.signingRegion || signingRegion || region;\n config.signingName = config.signingName || signingService || config.serviceId;\n const params = {\n ...config,\n credentials: normalizedCreds,\n region: config.signingRegion,\n service: config.signingName,\n sha256,\n uriEscapePath: signingEscapePath\n };\n const SignerCtor = config.signerConstructor || import_signature_v4.SignatureV4;\n return new SignerCtor(params);\n }), \"signer\");\n } else {\n signer = /* @__PURE__ */ __name(async (authScheme) => {\n authScheme = Object.assign(\n {},\n {\n name: \"sigv4\",\n signingName: config.signingName || config.defaultSigningName,\n signingRegion: await (0, import_core2.normalizeProvider)(config.region)(),\n properties: {}\n },\n authScheme\n );\n const signingRegion = authScheme.signingRegion;\n const signingService = authScheme.signingName;\n config.signingRegion = config.signingRegion || signingRegion;\n config.signingName = config.signingName || signingService || config.serviceId;\n const params = {\n ...config,\n credentials: normalizedCreds,\n region: config.signingRegion,\n service: config.signingName,\n sha256,\n uriEscapePath: signingEscapePath\n };\n const SignerCtor = config.signerConstructor || import_signature_v4.SignatureV4;\n return new SignerCtor(params);\n }, \"signer\");\n }\n return {\n ...config,\n systemClockOffset,\n signingEscapePath,\n credentials: normalizedCreds,\n signer\n };\n}, \"resolveAwsSdkSigV4Config\");\nvar resolveAWSSDKSigV4Config = resolveAwsSdkSigV4Config;\n// Annotate the CommonJS export names for ESM import in node:\n0 && (module.exports = {\n AWSSDKSigV4Signer,\n AwsSdkSigV4ASigner,\n AwsSdkSigV4Signer,\n NODE_SIGV4A_CONFIG_OPTIONS,\n resolveAWSSDKSigV4Config,\n resolveAwsSdkSigV4AConfig,\n resolveAwsSdkSigV4Config,\n validateSigningProperties\n});\n","\"use strict\";\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/submodules/protocols/index.ts\nvar protocols_exports = {};\n__export(protocols_exports, {\n _toBool: () => _toBool,\n _toNum: () => _toNum,\n _toStr: () => _toStr,\n awsExpectUnion: () => awsExpectUnion,\n loadRestJsonErrorCode: () => loadRestJsonErrorCode,\n loadRestXmlErrorCode: () => loadRestXmlErrorCode,\n parseJsonBody: () => parseJsonBody,\n parseJsonErrorBody: () => parseJsonErrorBody,\n parseXmlBody: () => parseXmlBody,\n parseXmlErrorBody: () => parseXmlErrorBody\n});\nmodule.exports = __toCommonJS(protocols_exports);\n\n// src/submodules/protocols/coercing-serializers.ts\nvar _toStr = /* @__PURE__ */ __name((val) => {\n if (val == null) {\n return val;\n }\n if (typeof val === \"number\" || typeof val === \"bigint\") {\n const warning = new Error(`Received number ${val} where a string was expected.`);\n warning.name = \"Warning\";\n console.warn(warning);\n return String(val);\n }\n if (typeof val === \"boolean\") {\n const warning = new Error(`Received boolean ${val} where a string was expected.`);\n warning.name = \"Warning\";\n console.warn(warning);\n return String(val);\n }\n return val;\n}, \"_toStr\");\nvar _toBool = /* @__PURE__ */ __name((val) => {\n if (val == null) {\n return val;\n }\n if (typeof val === \"number\") {\n }\n if (typeof val === \"string\") {\n const lowercase = val.toLowerCase();\n if (val !== \"\" && lowercase !== \"false\" && lowercase !== \"true\") {\n const warning = new Error(`Received string \"${val}\" where a boolean was expected.`);\n warning.name = \"Warning\";\n console.warn(warning);\n }\n return val !== \"\" && lowercase !== \"false\";\n }\n return val;\n}, \"_toBool\");\nvar _toNum = /* @__PURE__ */ __name((val) => {\n if (val == null) {\n return val;\n }\n if (typeof val === \"boolean\") {\n }\n if (typeof val === \"string\") {\n const num = Number(val);\n if (num.toString() !== val) {\n const warning = new Error(`Received string \"${val}\" where a number was expected.`);\n warning.name = \"Warning\";\n console.warn(warning);\n return val;\n }\n return num;\n }\n return val;\n}, \"_toNum\");\n\n// src/submodules/protocols/json/awsExpectUnion.ts\nvar import_smithy_client = require(\"@smithy/smithy-client\");\nvar awsExpectUnion = /* @__PURE__ */ __name((value) => {\n if (value == null) {\n return void 0;\n }\n if (typeof value === \"object\" && \"__type\" in value) {\n delete value.__type;\n }\n return (0, import_smithy_client.expectUnion)(value);\n}, \"awsExpectUnion\");\n\n// src/submodules/protocols/common.ts\nvar import_smithy_client2 = require(\"@smithy/smithy-client\");\nvar collectBodyString = /* @__PURE__ */ __name((streamBody, context) => (0, import_smithy_client2.collectBody)(streamBody, context).then((body) => context.utf8Encoder(body)), \"collectBodyString\");\n\n// src/submodules/protocols/json/parseJsonBody.ts\nvar parseJsonBody = /* @__PURE__ */ __name((streamBody, context) => collectBodyString(streamBody, context).then((encoded) => {\n if (encoded.length) {\n try {\n return JSON.parse(encoded);\n } catch (e) {\n if ((e == null ? void 0 : e.name) === \"SyntaxError\") {\n Object.defineProperty(e, \"$responseBodyText\", {\n value: encoded\n });\n }\n throw e;\n }\n }\n return {};\n}), \"parseJsonBody\");\nvar parseJsonErrorBody = /* @__PURE__ */ __name(async (errorBody, context) => {\n const value = await parseJsonBody(errorBody, context);\n value.message = value.message ?? value.Message;\n return value;\n}, \"parseJsonErrorBody\");\nvar loadRestJsonErrorCode = /* @__PURE__ */ __name((output, data) => {\n const findKey = /* @__PURE__ */ __name((object, key) => Object.keys(object).find((k) => k.toLowerCase() === key.toLowerCase()), \"findKey\");\n const sanitizeErrorCode = /* @__PURE__ */ __name((rawValue) => {\n let cleanValue = rawValue;\n if (typeof cleanValue === \"number\") {\n cleanValue = cleanValue.toString();\n }\n if (cleanValue.indexOf(\",\") >= 0) {\n cleanValue = cleanValue.split(\",\")[0];\n }\n if (cleanValue.indexOf(\":\") >= 0) {\n cleanValue = cleanValue.split(\":\")[0];\n }\n if (cleanValue.indexOf(\"#\") >= 0) {\n cleanValue = cleanValue.split(\"#\")[1];\n }\n return cleanValue;\n }, \"sanitizeErrorCode\");\n const headerKey = findKey(output.headers, \"x-amzn-errortype\");\n if (headerKey !== void 0) {\n return sanitizeErrorCode(output.headers[headerKey]);\n }\n if (data.code !== void 0) {\n return sanitizeErrorCode(data.code);\n }\n if (data[\"__type\"] !== void 0) {\n return sanitizeErrorCode(data[\"__type\"]);\n }\n}, \"loadRestJsonErrorCode\");\n\n// src/submodules/protocols/xml/parseXmlBody.ts\nvar import_smithy_client3 = require(\"@smithy/smithy-client\");\nvar import_fast_xml_parser = require(\"fast-xml-parser\");\nvar parseXmlBody = /* @__PURE__ */ __name((streamBody, context) => collectBodyString(streamBody, context).then((encoded) => {\n if (encoded.length) {\n const parser = new import_fast_xml_parser.XMLParser({\n attributeNamePrefix: \"\",\n htmlEntities: true,\n ignoreAttributes: false,\n ignoreDeclaration: true,\n parseTagValue: false,\n trimValues: false,\n tagValueProcessor: (_, val) => val.trim() === \"\" && val.includes(\"\\n\") ? \"\" : void 0\n });\n parser.addEntity(\"#xD\", \"\\r\");\n parser.addEntity(\"#10\", \"\\n\");\n let parsedObj;\n try {\n parsedObj = parser.parse(encoded, true);\n } catch (e) {\n if (e && typeof e === \"object\") {\n Object.defineProperty(e, \"$responseBodyText\", {\n value: encoded\n });\n }\n throw e;\n }\n const textNodeName = \"#text\";\n const key = Object.keys(parsedObj)[0];\n const parsedObjToReturn = parsedObj[key];\n if (parsedObjToReturn[textNodeName]) {\n parsedObjToReturn[key] = parsedObjToReturn[textNodeName];\n delete parsedObjToReturn[textNodeName];\n }\n return (0, import_smithy_client3.getValueFromTextNode)(parsedObjToReturn);\n }\n return {};\n}), \"parseXmlBody\");\nvar parseXmlErrorBody = /* @__PURE__ */ __name(async (errorBody, context) => {\n const value = await parseXmlBody(errorBody, context);\n if (value.Error) {\n value.Error.message = value.Error.message ?? value.Error.Message;\n }\n return value;\n}, \"parseXmlErrorBody\");\nvar loadRestXmlErrorCode = /* @__PURE__ */ __name((output, data) => {\n var _a;\n if (((_a = data == null ? void 0 : data.Error) == null ? void 0 : _a.Code) !== void 0) {\n return data.Error.Code;\n }\n if ((data == null ? void 0 : data.Code) !== void 0) {\n return data.Code;\n }\n if (output.statusCode == 404) {\n return \"NotFound\";\n }\n}, \"loadRestXmlErrorCode\");\n// Annotate the CommonJS export names for ESM import in node:\n0 && (module.exports = {\n _toBool,\n _toNum,\n _toStr,\n awsExpectUnion,\n loadRestJsonErrorCode,\n loadRestXmlErrorCode,\n parseJsonBody,\n parseJsonErrorBody,\n parseXmlBody,\n parseXmlErrorBody\n});\n","\"use strict\";\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\nvar __esm = (fn, res) => function __init() {\n return fn && (res = (0, fn[__getOwnPropNames(fn)[0]])(fn = 0)), res;\n};\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/loadCognitoIdentity.ts\nvar loadCognitoIdentity_exports = {};\n__export(loadCognitoIdentity_exports, {\n CognitoIdentityClient: () => import_client_cognito_identity.CognitoIdentityClient,\n GetCredentialsForIdentityCommand: () => import_client_cognito_identity.GetCredentialsForIdentityCommand,\n GetIdCommand: () => import_client_cognito_identity.GetIdCommand\n});\nvar import_client_cognito_identity;\nvar init_loadCognitoIdentity = __esm({\n \"src/loadCognitoIdentity.ts\"() {\n \"use strict\";\n import_client_cognito_identity = require(\"@aws-sdk/client-cognito-identity\");\n }\n});\n\n// src/index.ts\nvar src_exports = {};\n__export(src_exports, {\n fromCognitoIdentity: () => fromCognitoIdentity,\n fromCognitoIdentityPool: () => fromCognitoIdentityPool\n});\nmodule.exports = __toCommonJS(src_exports);\n\n// src/fromCognitoIdentity.ts\nvar import_property_provider = require(\"@smithy/property-provider\");\n\n// src/resolveLogins.ts\nfunction resolveLogins(logins) {\n return Promise.all(\n Object.keys(logins).reduce((arr, name) => {\n const tokenOrProvider = logins[name];\n if (typeof tokenOrProvider === \"string\") {\n arr.push([name, tokenOrProvider]);\n } else {\n arr.push(tokenOrProvider().then((token) => [name, token]));\n }\n return arr;\n }, [])\n ).then(\n (resolvedPairs) => resolvedPairs.reduce((logins2, [key, value]) => {\n logins2[key] = value;\n return logins2;\n }, {})\n );\n}\n__name(resolveLogins, \"resolveLogins\");\n\n// src/fromCognitoIdentity.ts\nfunction fromCognitoIdentity(parameters) {\n return async () => {\n var _a, _b, _c;\n (_a = parameters.logger) == null ? void 0 : _a.debug(\"@aws-sdk/credential-provider-cognito-identity - fromCognitoIdentity\");\n const { GetCredentialsForIdentityCommand: GetCredentialsForIdentityCommand2, CognitoIdentityClient: CognitoIdentityClient2 } = await Promise.resolve().then(() => (init_loadCognitoIdentity(), loadCognitoIdentity_exports));\n const {\n Credentials: {\n AccessKeyId = throwOnMissingAccessKeyId(parameters.logger),\n Expiration,\n SecretKey = throwOnMissingSecretKey(parameters.logger),\n SessionToken\n } = throwOnMissingCredentials(parameters.logger)\n } = await (parameters.client ?? new CognitoIdentityClient2(\n Object.assign({}, parameters.clientConfig ?? {}, {\n region: ((_b = parameters.clientConfig) == null ? void 0 : _b.region) ?? ((_c = parameters.parentClientConfig) == null ? void 0 : _c.region)\n })\n )).send(\n new GetCredentialsForIdentityCommand2({\n CustomRoleArn: parameters.customRoleArn,\n IdentityId: parameters.identityId,\n Logins: parameters.logins ? await resolveLogins(parameters.logins) : void 0\n })\n );\n return {\n identityId: parameters.identityId,\n accessKeyId: AccessKeyId,\n secretAccessKey: SecretKey,\n sessionToken: SessionToken,\n expiration: Expiration\n };\n };\n}\n__name(fromCognitoIdentity, \"fromCognitoIdentity\");\nfunction throwOnMissingAccessKeyId(logger) {\n throw new import_property_provider.CredentialsProviderError(\"Response from Amazon Cognito contained no access key ID\", { logger });\n}\n__name(throwOnMissingAccessKeyId, \"throwOnMissingAccessKeyId\");\nfunction throwOnMissingCredentials(logger) {\n throw new import_property_provider.CredentialsProviderError(\"Response from Amazon Cognito contained no credentials\", { logger });\n}\n__name(throwOnMissingCredentials, \"throwOnMissingCredentials\");\nfunction throwOnMissingSecretKey(logger) {\n throw new import_property_provider.CredentialsProviderError(\"Response from Amazon Cognito contained no secret key\", { logger });\n}\n__name(throwOnMissingSecretKey, \"throwOnMissingSecretKey\");\n\n// src/fromCognitoIdentityPool.ts\n\n\n// src/IndexedDbStorage.ts\nvar STORE_NAME = \"IdentityIds\";\nvar _IndexedDbStorage = class _IndexedDbStorage {\n constructor(dbName = \"aws:cognito-identity-ids\") {\n this.dbName = dbName;\n }\n getItem(key) {\n return this.withObjectStore(\"readonly\", (store) => {\n const req = store.get(key);\n return new Promise((resolve) => {\n req.onerror = () => resolve(null);\n req.onsuccess = () => resolve(req.result ? req.result.value : null);\n });\n }).catch(() => null);\n }\n removeItem(key) {\n return this.withObjectStore(\"readwrite\", (store) => {\n const req = store.delete(key);\n return new Promise((resolve, reject) => {\n req.onerror = () => reject(req.error);\n req.onsuccess = () => resolve();\n });\n });\n }\n setItem(id, value) {\n return this.withObjectStore(\"readwrite\", (store) => {\n const req = store.put({ id, value });\n return new Promise((resolve, reject) => {\n req.onerror = () => reject(req.error);\n req.onsuccess = () => resolve();\n });\n });\n }\n getDb() {\n const openDbRequest = self.indexedDB.open(this.dbName, 1);\n return new Promise((resolve, reject) => {\n openDbRequest.onsuccess = () => {\n resolve(openDbRequest.result);\n };\n openDbRequest.onerror = () => {\n reject(openDbRequest.error);\n };\n openDbRequest.onblocked = () => {\n reject(new Error(\"Unable to access DB\"));\n };\n openDbRequest.onupgradeneeded = () => {\n const db = openDbRequest.result;\n db.onerror = () => {\n reject(new Error(\"Failed to create object store\"));\n };\n db.createObjectStore(STORE_NAME, { keyPath: \"id\" });\n };\n });\n }\n withObjectStore(mode, action) {\n return this.getDb().then((db) => {\n const tx = db.transaction(STORE_NAME, mode);\n tx.oncomplete = () => db.close();\n return new Promise((resolve, reject) => {\n tx.onerror = () => reject(tx.error);\n resolve(action(tx.objectStore(STORE_NAME)));\n }).catch((err) => {\n db.close();\n throw err;\n });\n });\n }\n};\n__name(_IndexedDbStorage, \"IndexedDbStorage\");\nvar IndexedDbStorage = _IndexedDbStorage;\n\n// src/InMemoryStorage.ts\nvar _InMemoryStorage = class _InMemoryStorage {\n constructor(store = {}) {\n this.store = store;\n }\n getItem(key) {\n if (key in this.store) {\n return this.store[key];\n }\n return null;\n }\n removeItem(key) {\n delete this.store[key];\n }\n setItem(key, value) {\n this.store[key] = value;\n }\n};\n__name(_InMemoryStorage, \"InMemoryStorage\");\nvar InMemoryStorage = _InMemoryStorage;\n\n// src/localStorage.ts\nvar inMemoryStorage = new InMemoryStorage();\nfunction localStorage() {\n if (typeof self === \"object\" && self.indexedDB) {\n return new IndexedDbStorage();\n }\n if (typeof window === \"object\" && window.localStorage) {\n return window.localStorage;\n }\n return inMemoryStorage;\n}\n__name(localStorage, \"localStorage\");\n\n// src/fromCognitoIdentityPool.ts\nfunction fromCognitoIdentityPool({\n accountId,\n cache = localStorage(),\n client,\n clientConfig,\n customRoleArn,\n identityPoolId,\n logins,\n userIdentifier = !logins || Object.keys(logins).length === 0 ? \"ANONYMOUS\" : void 0,\n logger,\n parentClientConfig\n}) {\n logger == null ? void 0 : logger.debug(\"@aws-sdk/credential-provider-cognito-identity - fromCognitoIdentity\");\n const cacheKey = userIdentifier ? `aws:cognito-identity-credentials:${identityPoolId}:${userIdentifier}` : void 0;\n let provider = /* @__PURE__ */ __name(async () => {\n const { GetIdCommand: GetIdCommand2, CognitoIdentityClient: CognitoIdentityClient2 } = await Promise.resolve().then(() => (init_loadCognitoIdentity(), loadCognitoIdentity_exports));\n const _client = client ?? new CognitoIdentityClient2(\n Object.assign({}, clientConfig ?? {}, { region: (clientConfig == null ? void 0 : clientConfig.region) ?? (parentClientConfig == null ? void 0 : parentClientConfig.region) })\n );\n let identityId = cacheKey && await cache.getItem(cacheKey);\n if (!identityId) {\n const { IdentityId = throwOnMissingId(logger) } = await _client.send(\n new GetIdCommand2({\n AccountId: accountId,\n IdentityPoolId: identityPoolId,\n Logins: logins ? await resolveLogins(logins) : void 0\n })\n );\n identityId = IdentityId;\n if (cacheKey) {\n Promise.resolve(cache.setItem(cacheKey, identityId)).catch(() => {\n });\n }\n }\n provider = fromCognitoIdentity({\n client: _client,\n customRoleArn,\n logins,\n identityId\n });\n return provider();\n }, \"provider\");\n return () => provider().catch(async (err) => {\n if (cacheKey) {\n Promise.resolve(cache.removeItem(cacheKey)).catch(() => {\n });\n }\n throw err;\n });\n}\n__name(fromCognitoIdentityPool, \"fromCognitoIdentityPool\");\nfunction throwOnMissingId(logger) {\n throw new import_property_provider.CredentialsProviderError(\"Response from Amazon Cognito contained no identity ID\", { logger });\n}\n__name(throwOnMissingId, \"throwOnMissingId\");\n// Annotate the CommonJS export names for ESM import in node:\n\n0 && (module.exports = {\n fromCognitoIdentity,\n fromCognitoIdentityPool\n});\n\n","\"use strict\";\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/index.ts\nvar src_exports = {};\n__export(src_exports, {\n ENV_ACCOUNT_ID: () => ENV_ACCOUNT_ID,\n ENV_CREDENTIAL_SCOPE: () => ENV_CREDENTIAL_SCOPE,\n ENV_EXPIRATION: () => ENV_EXPIRATION,\n ENV_KEY: () => ENV_KEY,\n ENV_SECRET: () => ENV_SECRET,\n ENV_SESSION: () => ENV_SESSION,\n fromEnv: () => fromEnv\n});\nmodule.exports = __toCommonJS(src_exports);\n\n// src/fromEnv.ts\nvar import_property_provider = require(\"@smithy/property-provider\");\nvar ENV_KEY = \"AWS_ACCESS_KEY_ID\";\nvar ENV_SECRET = \"AWS_SECRET_ACCESS_KEY\";\nvar ENV_SESSION = \"AWS_SESSION_TOKEN\";\nvar ENV_EXPIRATION = \"AWS_CREDENTIAL_EXPIRATION\";\nvar ENV_CREDENTIAL_SCOPE = \"AWS_CREDENTIAL_SCOPE\";\nvar ENV_ACCOUNT_ID = \"AWS_ACCOUNT_ID\";\nvar fromEnv = /* @__PURE__ */ __name((init) => async () => {\n var _a;\n (_a = init == null ? void 0 : init.logger) == null ? void 0 : _a.debug(\"@aws-sdk/credential-provider-env - fromEnv\");\n const accessKeyId = process.env[ENV_KEY];\n const secretAccessKey = process.env[ENV_SECRET];\n const sessionToken = process.env[ENV_SESSION];\n const expiry = process.env[ENV_EXPIRATION];\n const credentialScope = process.env[ENV_CREDENTIAL_SCOPE];\n const accountId = process.env[ENV_ACCOUNT_ID];\n if (accessKeyId && secretAccessKey) {\n return {\n accessKeyId,\n secretAccessKey,\n ...sessionToken && { sessionToken },\n ...expiry && { expiration: new Date(expiry) },\n ...credentialScope && { credentialScope },\n ...accountId && { accountId }\n };\n }\n throw new import_property_provider.CredentialsProviderError(\"Unable to find environment variable credentials.\", { logger: init == null ? void 0 : init.logger });\n}, \"fromEnv\");\n// Annotate the CommonJS export names for ESM import in node:\n\n0 && (module.exports = {\n ENV_KEY,\n ENV_SECRET,\n ENV_SESSION,\n ENV_EXPIRATION,\n ENV_CREDENTIAL_SCOPE,\n ENV_ACCOUNT_ID,\n fromEnv\n});\n\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.checkUrl = void 0;\nconst property_provider_1 = require(\"@smithy/property-provider\");\nconst LOOPBACK_CIDR_IPv4 = \"127.0.0.0/8\";\nconst LOOPBACK_CIDR_IPv6 = \"::1/128\";\nconst ECS_CONTAINER_HOST = \"169.254.170.2\";\nconst EKS_CONTAINER_HOST_IPv4 = \"169.254.170.23\";\nconst EKS_CONTAINER_HOST_IPv6 = \"[fd00:ec2::23]\";\nconst checkUrl = (url, logger) => {\n if (url.protocol === \"https:\") {\n return;\n }\n if (url.hostname === ECS_CONTAINER_HOST ||\n url.hostname === EKS_CONTAINER_HOST_IPv4 ||\n url.hostname === EKS_CONTAINER_HOST_IPv6) {\n return;\n }\n if (url.hostname.includes(\"[\")) {\n if (url.hostname === \"[::1]\" || url.hostname === \"[0000:0000:0000:0000:0000:0000:0000:0001]\") {\n return;\n }\n }\n else {\n if (url.hostname === \"localhost\") {\n return;\n }\n const ipComponents = url.hostname.split(\".\");\n const inRange = (component) => {\n const num = parseInt(component, 10);\n return 0 <= num && num <= 255;\n };\n if (ipComponents[0] === \"127\" &&\n inRange(ipComponents[1]) &&\n inRange(ipComponents[2]) &&\n inRange(ipComponents[3]) &&\n ipComponents.length === 4) {\n return;\n }\n }\n throw new property_provider_1.CredentialsProviderError(`URL not accepted. It must either be HTTPS or match one of the following:\n - loopback CIDR 127.0.0.0/8 or [::1/128]\n - ECS container host 169.254.170.2\n - EKS container host 169.254.170.23 or [fd00:ec2::23]`, { logger });\n};\nexports.checkUrl = checkUrl;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.fromHttp = void 0;\nconst tslib_1 = require(\"tslib\");\nconst node_http_handler_1 = require(\"@smithy/node-http-handler\");\nconst property_provider_1 = require(\"@smithy/property-provider\");\nconst promises_1 = tslib_1.__importDefault(require(\"fs/promises\"));\nconst checkUrl_1 = require(\"./checkUrl\");\nconst requestHelpers_1 = require(\"./requestHelpers\");\nconst retry_wrapper_1 = require(\"./retry-wrapper\");\nconst AWS_CONTAINER_CREDENTIALS_RELATIVE_URI = \"AWS_CONTAINER_CREDENTIALS_RELATIVE_URI\";\nconst DEFAULT_LINK_LOCAL_HOST = \"http://169.254.170.2\";\nconst AWS_CONTAINER_CREDENTIALS_FULL_URI = \"AWS_CONTAINER_CREDENTIALS_FULL_URI\";\nconst AWS_CONTAINER_AUTHORIZATION_TOKEN_FILE = \"AWS_CONTAINER_AUTHORIZATION_TOKEN_FILE\";\nconst AWS_CONTAINER_AUTHORIZATION_TOKEN = \"AWS_CONTAINER_AUTHORIZATION_TOKEN\";\nconst fromHttp = (options = {}) => {\n options.logger?.debug(\"@aws-sdk/credential-provider-http - fromHttp\");\n let host;\n const relative = options.awsContainerCredentialsRelativeUri ?? process.env[AWS_CONTAINER_CREDENTIALS_RELATIVE_URI];\n const full = options.awsContainerCredentialsFullUri ?? process.env[AWS_CONTAINER_CREDENTIALS_FULL_URI];\n const token = options.awsContainerAuthorizationToken ?? process.env[AWS_CONTAINER_AUTHORIZATION_TOKEN];\n const tokenFile = options.awsContainerAuthorizationTokenFile ?? process.env[AWS_CONTAINER_AUTHORIZATION_TOKEN_FILE];\n const warn = options.logger?.constructor?.name === \"NoOpLogger\" || !options.logger ? console.warn : options.logger.warn;\n if (relative && full) {\n warn(\"@aws-sdk/credential-provider-http: \" +\n \"you have set both awsContainerCredentialsRelativeUri and awsContainerCredentialsFullUri.\");\n warn(\"awsContainerCredentialsFullUri will take precedence.\");\n }\n if (token && tokenFile) {\n warn(\"@aws-sdk/credential-provider-http: \" +\n \"you have set both awsContainerAuthorizationToken and awsContainerAuthorizationTokenFile.\");\n warn(\"awsContainerAuthorizationToken will take precedence.\");\n }\n if (full) {\n host = full;\n }\n else if (relative) {\n host = `${DEFAULT_LINK_LOCAL_HOST}${relative}`;\n }\n else {\n throw new property_provider_1.CredentialsProviderError(`No HTTP credential provider host provided.\nSet AWS_CONTAINER_CREDENTIALS_FULL_URI or AWS_CONTAINER_CREDENTIALS_RELATIVE_URI.`, { logger: options.logger });\n }\n const url = new URL(host);\n (0, checkUrl_1.checkUrl)(url, options.logger);\n const requestHandler = new node_http_handler_1.NodeHttpHandler({\n requestTimeout: options.timeout ?? 1000,\n connectionTimeout: options.timeout ?? 1000,\n });\n return (0, retry_wrapper_1.retryWrapper)(async () => {\n const request = (0, requestHelpers_1.createGetRequest)(url);\n if (token) {\n request.headers.Authorization = token;\n }\n else if (tokenFile) {\n request.headers.Authorization = (await promises_1.default.readFile(tokenFile)).toString();\n }\n try {\n const result = await requestHandler.handle(request);\n return (0, requestHelpers_1.getCredentials)(result.response);\n }\n catch (e) {\n throw new property_provider_1.CredentialsProviderError(String(e), { logger: options.logger });\n }\n }, options.maxRetries ?? 3, options.timeout ?? 1000);\n};\nexports.fromHttp = fromHttp;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getCredentials = exports.createGetRequest = void 0;\nconst property_provider_1 = require(\"@smithy/property-provider\");\nconst protocol_http_1 = require(\"@smithy/protocol-http\");\nconst smithy_client_1 = require(\"@smithy/smithy-client\");\nconst util_stream_1 = require(\"@smithy/util-stream\");\nfunction createGetRequest(url) {\n return new protocol_http_1.HttpRequest({\n protocol: url.protocol,\n hostname: url.hostname,\n port: Number(url.port),\n path: url.pathname,\n query: Array.from(url.searchParams.entries()).reduce((acc, [k, v]) => {\n acc[k] = v;\n return acc;\n }, {}),\n fragment: url.hash,\n });\n}\nexports.createGetRequest = createGetRequest;\nasync function getCredentials(response, logger) {\n const stream = (0, util_stream_1.sdkStreamMixin)(response.body);\n const str = await stream.transformToString();\n if (response.statusCode === 200) {\n const parsed = JSON.parse(str);\n if (typeof parsed.AccessKeyId !== \"string\" ||\n typeof parsed.SecretAccessKey !== \"string\" ||\n typeof parsed.Token !== \"string\" ||\n typeof parsed.Expiration !== \"string\") {\n throw new property_provider_1.CredentialsProviderError(\"HTTP credential provider response not of the required format, an object matching: \" +\n \"{ AccessKeyId: string, SecretAccessKey: string, Token: string, Expiration: string(rfc3339) }\", { logger });\n }\n return {\n accessKeyId: parsed.AccessKeyId,\n secretAccessKey: parsed.SecretAccessKey,\n sessionToken: parsed.Token,\n expiration: (0, smithy_client_1.parseRfc3339DateTime)(parsed.Expiration),\n };\n }\n if (response.statusCode >= 400 && response.statusCode < 500) {\n let parsedBody = {};\n try {\n parsedBody = JSON.parse(str);\n }\n catch (e) { }\n throw Object.assign(new property_provider_1.CredentialsProviderError(`Server responded with status: ${response.statusCode}`, { logger }), {\n Code: parsedBody.Code,\n Message: parsedBody.Message,\n });\n }\n throw new property_provider_1.CredentialsProviderError(`Server responded with status: ${response.statusCode}`, { logger });\n}\nexports.getCredentials = getCredentials;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.retryWrapper = void 0;\nconst retryWrapper = (toRetry, maxRetries, delayMs) => {\n return async () => {\n for (let i = 0; i < maxRetries; ++i) {\n try {\n return await toRetry();\n }\n catch (e) {\n await new Promise((resolve) => setTimeout(resolve, delayMs));\n }\n }\n return await toRetry();\n };\n};\nexports.retryWrapper = retryWrapper;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.fromHttp = void 0;\nvar fromHttp_1 = require(\"./fromHttp/fromHttp\");\nObject.defineProperty(exports, \"fromHttp\", { enumerable: true, get: function () { return fromHttp_1.fromHttp; } });\n","\"use strict\";\nvar __create = Object.create;\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __getProtoOf = Object.getPrototypeOf;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(\n // If the importer is in node compatibility mode or this is not an ESM\n // file that has been converted to a CommonJS file using a Babel-\n // compatible transform (i.e. \"__esModule\" has not been set), then set\n // \"default\" to the CommonJS \"module.exports\" for node compatibility.\n isNodeMode || !mod || !mod.__esModule ? __defProp(target, \"default\", { value: mod, enumerable: true }) : target,\n mod\n));\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/index.ts\nvar src_exports = {};\n__export(src_exports, {\n fromIni: () => fromIni\n});\nmodule.exports = __toCommonJS(src_exports);\n\n// src/fromIni.ts\n\n\n// src/resolveProfileData.ts\n\n\n// src/resolveAssumeRoleCredentials.ts\n\nvar import_shared_ini_file_loader = require(\"@smithy/shared-ini-file-loader\");\n\n// src/resolveCredentialSource.ts\nvar import_property_provider = require(\"@smithy/property-provider\");\nvar resolveCredentialSource = /* @__PURE__ */ __name((credentialSource, profileName, logger) => {\n const sourceProvidersMap = {\n EcsContainer: async (options) => {\n const { fromHttp } = await Promise.resolve().then(() => __toESM(require(\"@aws-sdk/credential-provider-http\")));\n const { fromContainerMetadata } = await Promise.resolve().then(() => __toESM(require(\"@smithy/credential-provider-imds\")));\n logger == null ? void 0 : logger.debug(\"@aws-sdk/credential-provider-ini - credential_source is EcsContainer\");\n return (0, import_property_provider.chain)(fromHttp(options ?? {}), fromContainerMetadata(options));\n },\n Ec2InstanceMetadata: async (options) => {\n logger == null ? void 0 : logger.debug(\"@aws-sdk/credential-provider-ini - credential_source is Ec2InstanceMetadata\");\n const { fromInstanceMetadata } = await Promise.resolve().then(() => __toESM(require(\"@smithy/credential-provider-imds\")));\n return fromInstanceMetadata(options);\n },\n Environment: async (options) => {\n logger == null ? void 0 : logger.debug(\"@aws-sdk/credential-provider-ini - credential_source is Environment\");\n const { fromEnv } = await Promise.resolve().then(() => __toESM(require(\"@aws-sdk/credential-provider-env\")));\n return fromEnv(options);\n }\n };\n if (credentialSource in sourceProvidersMap) {\n return sourceProvidersMap[credentialSource];\n } else {\n throw new import_property_provider.CredentialsProviderError(\n `Unsupported credential source in profile ${profileName}. Got ${credentialSource}, expected EcsContainer or Ec2InstanceMetadata or Environment.`,\n { logger }\n );\n }\n}, \"resolveCredentialSource\");\n\n// src/resolveAssumeRoleCredentials.ts\nvar isAssumeRoleProfile = /* @__PURE__ */ __name((arg, { profile = \"default\", logger } = {}) => {\n return Boolean(arg) && typeof arg === \"object\" && typeof arg.role_arn === \"string\" && [\"undefined\", \"string\"].indexOf(typeof arg.role_session_name) > -1 && [\"undefined\", \"string\"].indexOf(typeof arg.external_id) > -1 && [\"undefined\", \"string\"].indexOf(typeof arg.mfa_serial) > -1 && (isAssumeRoleWithSourceProfile(arg, { profile, logger }) || isCredentialSourceProfile(arg, { profile, logger }));\n}, \"isAssumeRoleProfile\");\nvar isAssumeRoleWithSourceProfile = /* @__PURE__ */ __name((arg, { profile, logger }) => {\n var _a;\n const withSourceProfile = typeof arg.source_profile === \"string\" && typeof arg.credential_source === \"undefined\";\n if (withSourceProfile) {\n (_a = logger == null ? void 0 : logger.debug) == null ? void 0 : _a.call(logger, ` ${profile} isAssumeRoleWithSourceProfile source_profile=${arg.source_profile}`);\n }\n return withSourceProfile;\n}, \"isAssumeRoleWithSourceProfile\");\nvar isCredentialSourceProfile = /* @__PURE__ */ __name((arg, { profile, logger }) => {\n var _a;\n const withProviderProfile = typeof arg.credential_source === \"string\" && typeof arg.source_profile === \"undefined\";\n if (withProviderProfile) {\n (_a = logger == null ? void 0 : logger.debug) == null ? void 0 : _a.call(logger, ` ${profile} isCredentialSourceProfile credential_source=${arg.credential_source}`);\n }\n return withProviderProfile;\n}, \"isCredentialSourceProfile\");\nvar resolveAssumeRoleCredentials = /* @__PURE__ */ __name(async (profileName, profiles, options, visitedProfiles = {}) => {\n var _a, _b;\n (_a = options.logger) == null ? void 0 : _a.debug(\"@aws-sdk/credential-provider-ini - resolveAssumeRoleCredentials (STS)\");\n const data = profiles[profileName];\n if (!options.roleAssumer) {\n const { getDefaultRoleAssumer } = await Promise.resolve().then(() => __toESM(require(\"@aws-sdk/client-sts\")));\n options.roleAssumer = getDefaultRoleAssumer(\n {\n ...options.clientConfig,\n credentialProviderLogger: options.logger,\n parentClientConfig: options == null ? void 0 : options.parentClientConfig\n },\n options.clientPlugins\n );\n }\n const { source_profile } = data;\n if (source_profile && source_profile in visitedProfiles) {\n throw new import_property_provider.CredentialsProviderError(\n `Detected a cycle attempting to resolve credentials for profile ${(0, import_shared_ini_file_loader.getProfileName)(options)}. Profiles visited: ` + Object.keys(visitedProfiles).join(\", \"),\n { logger: options.logger }\n );\n }\n (_b = options.logger) == null ? void 0 : _b.debug(\n `@aws-sdk/credential-provider-ini - finding credential resolver using ${source_profile ? `source_profile=[${source_profile}]` : `profile=[${profileName}]`}`\n );\n const sourceCredsProvider = source_profile ? resolveProfileData(\n source_profile,\n profiles,\n options,\n {\n ...visitedProfiles,\n [source_profile]: true\n },\n isCredentialSourceWithoutRoleArn(profiles[source_profile] ?? {})\n ) : (await resolveCredentialSource(data.credential_source, profileName, options.logger)(options))();\n if (isCredentialSourceWithoutRoleArn(data)) {\n return sourceCredsProvider;\n } else {\n const params = {\n RoleArn: data.role_arn,\n RoleSessionName: data.role_session_name || `aws-sdk-js-${Date.now()}`,\n ExternalId: data.external_id,\n DurationSeconds: parseInt(data.duration_seconds || \"3600\", 10)\n };\n const { mfa_serial } = data;\n if (mfa_serial) {\n if (!options.mfaCodeProvider) {\n throw new import_property_provider.CredentialsProviderError(\n `Profile ${profileName} requires multi-factor authentication, but no MFA code callback was provided.`,\n { logger: options.logger, tryNextLink: false }\n );\n }\n params.SerialNumber = mfa_serial;\n params.TokenCode = await options.mfaCodeProvider(mfa_serial);\n }\n const sourceCreds = await sourceCredsProvider;\n return options.roleAssumer(sourceCreds, params);\n }\n}, \"resolveAssumeRoleCredentials\");\nvar isCredentialSourceWithoutRoleArn = /* @__PURE__ */ __name((section) => {\n return !section.role_arn && !!section.credential_source;\n}, \"isCredentialSourceWithoutRoleArn\");\n\n// src/resolveProcessCredentials.ts\nvar isProcessProfile = /* @__PURE__ */ __name((arg) => Boolean(arg) && typeof arg === \"object\" && typeof arg.credential_process === \"string\", \"isProcessProfile\");\nvar resolveProcessCredentials = /* @__PURE__ */ __name(async (options, profile) => Promise.resolve().then(() => __toESM(require(\"@aws-sdk/credential-provider-process\"))).then(\n ({ fromProcess }) => fromProcess({\n ...options,\n profile\n })()\n), \"resolveProcessCredentials\");\n\n// src/resolveSsoCredentials.ts\nvar resolveSsoCredentials = /* @__PURE__ */ __name(async (profile, options = {}) => {\n const { fromSSO } = await Promise.resolve().then(() => __toESM(require(\"@aws-sdk/credential-provider-sso\")));\n return fromSSO({\n profile,\n logger: options.logger\n })();\n}, \"resolveSsoCredentials\");\nvar isSsoProfile = /* @__PURE__ */ __name((arg) => arg && (typeof arg.sso_start_url === \"string\" || typeof arg.sso_account_id === \"string\" || typeof arg.sso_session === \"string\" || typeof arg.sso_region === \"string\" || typeof arg.sso_role_name === \"string\"), \"isSsoProfile\");\n\n// src/resolveStaticCredentials.ts\nvar isStaticCredsProfile = /* @__PURE__ */ __name((arg) => Boolean(arg) && typeof arg === \"object\" && typeof arg.aws_access_key_id === \"string\" && typeof arg.aws_secret_access_key === \"string\" && [\"undefined\", \"string\"].indexOf(typeof arg.aws_session_token) > -1 && [\"undefined\", \"string\"].indexOf(typeof arg.aws_account_id) > -1, \"isStaticCredsProfile\");\nvar resolveStaticCredentials = /* @__PURE__ */ __name((profile, options) => {\n var _a;\n (_a = options == null ? void 0 : options.logger) == null ? void 0 : _a.debug(\"@aws-sdk/credential-provider-ini - resolveStaticCredentials\");\n return Promise.resolve({\n accessKeyId: profile.aws_access_key_id,\n secretAccessKey: profile.aws_secret_access_key,\n sessionToken: profile.aws_session_token,\n ...profile.aws_credential_scope && { credentialScope: profile.aws_credential_scope },\n ...profile.aws_account_id && { accountId: profile.aws_account_id }\n });\n}, \"resolveStaticCredentials\");\n\n// src/resolveWebIdentityCredentials.ts\nvar isWebIdentityProfile = /* @__PURE__ */ __name((arg) => Boolean(arg) && typeof arg === \"object\" && typeof arg.web_identity_token_file === \"string\" && typeof arg.role_arn === \"string\" && [\"undefined\", \"string\"].indexOf(typeof arg.role_session_name) > -1, \"isWebIdentityProfile\");\nvar resolveWebIdentityCredentials = /* @__PURE__ */ __name(async (profile, options) => Promise.resolve().then(() => __toESM(require(\"@aws-sdk/credential-provider-web-identity\"))).then(\n ({ fromTokenFile }) => fromTokenFile({\n webIdentityTokenFile: profile.web_identity_token_file,\n roleArn: profile.role_arn,\n roleSessionName: profile.role_session_name,\n roleAssumerWithWebIdentity: options.roleAssumerWithWebIdentity,\n logger: options.logger,\n parentClientConfig: options.parentClientConfig\n })()\n), \"resolveWebIdentityCredentials\");\n\n// src/resolveProfileData.ts\nvar resolveProfileData = /* @__PURE__ */ __name(async (profileName, profiles, options, visitedProfiles = {}, isAssumeRoleRecursiveCall = false) => {\n const data = profiles[profileName];\n if (Object.keys(visitedProfiles).length > 0 && isStaticCredsProfile(data)) {\n return resolveStaticCredentials(data, options);\n }\n if (isAssumeRoleRecursiveCall || isAssumeRoleProfile(data, { profile: profileName, logger: options.logger })) {\n return resolveAssumeRoleCredentials(profileName, profiles, options, visitedProfiles);\n }\n if (isStaticCredsProfile(data)) {\n return resolveStaticCredentials(data, options);\n }\n if (isWebIdentityProfile(data)) {\n return resolveWebIdentityCredentials(data, options);\n }\n if (isProcessProfile(data)) {\n return resolveProcessCredentials(options, profileName);\n }\n if (isSsoProfile(data)) {\n return await resolveSsoCredentials(profileName, options);\n }\n throw new import_property_provider.CredentialsProviderError(\n `Could not resolve credentials using profile: [${profileName}] in configuration/credentials file(s).`,\n { logger: options.logger }\n );\n}, \"resolveProfileData\");\n\n// src/fromIni.ts\nvar fromIni = /* @__PURE__ */ __name((init = {}) => async () => {\n var _a;\n (_a = init.logger) == null ? void 0 : _a.debug(\"@aws-sdk/credential-provider-ini - fromIni\");\n const profiles = await (0, import_shared_ini_file_loader.parseKnownFiles)(init);\n return resolveProfileData((0, import_shared_ini_file_loader.getProfileName)(init), profiles, init);\n}, \"fromIni\");\n// Annotate the CommonJS export names for ESM import in node:\n\n0 && (module.exports = {\n fromIni\n});\n\n","\"use strict\";\nvar __create = Object.create;\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __getProtoOf = Object.getPrototypeOf;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(\n // If the importer is in node compatibility mode or this is not an ESM\n // file that has been converted to a CommonJS file using a Babel-\n // compatible transform (i.e. \"__esModule\" has not been set), then set\n // \"default\" to the CommonJS \"module.exports\" for node compatibility.\n isNodeMode || !mod || !mod.__esModule ? __defProp(target, \"default\", { value: mod, enumerable: true }) : target,\n mod\n));\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/index.ts\nvar src_exports = {};\n__export(src_exports, {\n credentialsTreatedAsExpired: () => credentialsTreatedAsExpired,\n credentialsWillNeedRefresh: () => credentialsWillNeedRefresh,\n defaultProvider: () => defaultProvider\n});\nmodule.exports = __toCommonJS(src_exports);\n\n// src/defaultProvider.ts\nvar import_credential_provider_env = require(\"@aws-sdk/credential-provider-env\");\n\nvar import_shared_ini_file_loader = require(\"@smithy/shared-ini-file-loader\");\n\n// src/remoteProvider.ts\nvar import_property_provider = require(\"@smithy/property-provider\");\nvar ENV_IMDS_DISABLED = \"AWS_EC2_METADATA_DISABLED\";\nvar remoteProvider = /* @__PURE__ */ __name(async (init) => {\n var _a, _b;\n const { ENV_CMDS_FULL_URI, ENV_CMDS_RELATIVE_URI, fromContainerMetadata, fromInstanceMetadata } = await Promise.resolve().then(() => __toESM(require(\"@smithy/credential-provider-imds\")));\n if (process.env[ENV_CMDS_RELATIVE_URI] || process.env[ENV_CMDS_FULL_URI]) {\n (_a = init.logger) == null ? void 0 : _a.debug(\"@aws-sdk/credential-provider-node - remoteProvider::fromHttp/fromContainerMetadata\");\n const { fromHttp } = await Promise.resolve().then(() => __toESM(require(\"@aws-sdk/credential-provider-http\")));\n return (0, import_property_provider.chain)(fromHttp(init), fromContainerMetadata(init));\n }\n if (process.env[ENV_IMDS_DISABLED]) {\n return async () => {\n throw new import_property_provider.CredentialsProviderError(\"EC2 Instance Metadata Service access disabled\", { logger: init.logger });\n };\n }\n (_b = init.logger) == null ? void 0 : _b.debug(\"@aws-sdk/credential-provider-node - remoteProvider::fromInstanceMetadata\");\n return fromInstanceMetadata(init);\n}, \"remoteProvider\");\n\n// src/defaultProvider.ts\nvar multipleCredentialSourceWarningEmitted = false;\nvar defaultProvider = /* @__PURE__ */ __name((init = {}) => (0, import_property_provider.memoize)(\n (0, import_property_provider.chain)(\n async () => {\n var _a, _b, _c, _d;\n const profile = init.profile ?? process.env[import_shared_ini_file_loader.ENV_PROFILE];\n if (profile) {\n const envStaticCredentialsAreSet = process.env[import_credential_provider_env.ENV_KEY] && process.env[import_credential_provider_env.ENV_SECRET];\n if (envStaticCredentialsAreSet) {\n if (!multipleCredentialSourceWarningEmitted) {\n const warnFn = ((_a = init.logger) == null ? void 0 : _a.warn) && ((_c = (_b = init.logger) == null ? void 0 : _b.constructor) == null ? void 0 : _c.name) !== \"NoOpLogger\" ? init.logger.warn : console.warn;\n warnFn(\n `@aws-sdk/credential-provider-node - defaultProvider::fromEnv WARNING:\n Multiple credential sources detected: \n Both AWS_PROFILE and the pair AWS_ACCESS_KEY_ID/AWS_SECRET_ACCESS_KEY static credentials are set.\n This SDK will proceed with the AWS_PROFILE value.\n \n However, a future version may change this behavior to prefer the ENV static credentials.\n Please ensure that your environment only sets either the AWS_PROFILE or the\n AWS_ACCESS_KEY_ID/AWS_SECRET_ACCESS_KEY pair.\n`\n );\n multipleCredentialSourceWarningEmitted = true;\n }\n }\n throw new import_property_provider.CredentialsProviderError(\"AWS_PROFILE is set, skipping fromEnv provider.\", {\n logger: init.logger,\n tryNextLink: true\n });\n }\n (_d = init.logger) == null ? void 0 : _d.debug(\"@aws-sdk/credential-provider-node - defaultProvider::fromEnv\");\n return (0, import_credential_provider_env.fromEnv)(init)();\n },\n async () => {\n var _a;\n (_a = init.logger) == null ? void 0 : _a.debug(\"@aws-sdk/credential-provider-node - defaultProvider::fromSSO\");\n const { ssoStartUrl, ssoAccountId, ssoRegion, ssoRoleName, ssoSession } = init;\n if (!ssoStartUrl && !ssoAccountId && !ssoRegion && !ssoRoleName && !ssoSession) {\n throw new import_property_provider.CredentialsProviderError(\n \"Skipping SSO provider in default chain (inputs do not include SSO fields).\",\n { logger: init.logger }\n );\n }\n const { fromSSO } = await Promise.resolve().then(() => __toESM(require(\"@aws-sdk/credential-provider-sso\")));\n return fromSSO(init)();\n },\n async () => {\n var _a;\n (_a = init.logger) == null ? void 0 : _a.debug(\"@aws-sdk/credential-provider-node - defaultProvider::fromIni\");\n const { fromIni } = await Promise.resolve().then(() => __toESM(require(\"@aws-sdk/credential-provider-ini\")));\n return fromIni(init)();\n },\n async () => {\n var _a;\n (_a = init.logger) == null ? void 0 : _a.debug(\"@aws-sdk/credential-provider-node - defaultProvider::fromProcess\");\n const { fromProcess } = await Promise.resolve().then(() => __toESM(require(\"@aws-sdk/credential-provider-process\")));\n return fromProcess(init)();\n },\n async () => {\n var _a;\n (_a = init.logger) == null ? void 0 : _a.debug(\"@aws-sdk/credential-provider-node - defaultProvider::fromTokenFile\");\n const { fromTokenFile } = await Promise.resolve().then(() => __toESM(require(\"@aws-sdk/credential-provider-web-identity\")));\n return fromTokenFile(init)();\n },\n async () => {\n var _a;\n (_a = init.logger) == null ? void 0 : _a.debug(\"@aws-sdk/credential-provider-node - defaultProvider::remoteProvider\");\n return (await remoteProvider(init))();\n },\n async () => {\n throw new import_property_provider.CredentialsProviderError(\"Could not load credentials from any providers\", {\n tryNextLink: false,\n logger: init.logger\n });\n }\n ),\n credentialsTreatedAsExpired,\n credentialsWillNeedRefresh\n), \"defaultProvider\");\nvar credentialsWillNeedRefresh = /* @__PURE__ */ __name((credentials) => (credentials == null ? void 0 : credentials.expiration) !== void 0, \"credentialsWillNeedRefresh\");\nvar credentialsTreatedAsExpired = /* @__PURE__ */ __name((credentials) => (credentials == null ? void 0 : credentials.expiration) !== void 0 && credentials.expiration.getTime() - Date.now() < 3e5, \"credentialsTreatedAsExpired\");\n// Annotate the CommonJS export names for ESM import in node:\n\n0 && (module.exports = {\n defaultProvider,\n credentialsWillNeedRefresh,\n credentialsTreatedAsExpired\n});\n\n","\"use strict\";\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/index.ts\nvar src_exports = {};\n__export(src_exports, {\n fromProcess: () => fromProcess\n});\nmodule.exports = __toCommonJS(src_exports);\n\n// src/fromProcess.ts\nvar import_shared_ini_file_loader = require(\"@smithy/shared-ini-file-loader\");\n\n// src/resolveProcessCredentials.ts\nvar import_property_provider = require(\"@smithy/property-provider\");\nvar import_child_process = require(\"child_process\");\nvar import_util = require(\"util\");\n\n// src/getValidatedProcessCredentials.ts\nvar getValidatedProcessCredentials = /* @__PURE__ */ __name((profileName, data, profiles) => {\n var _a;\n if (data.Version !== 1) {\n throw Error(`Profile ${profileName} credential_process did not return Version 1.`);\n }\n if (data.AccessKeyId === void 0 || data.SecretAccessKey === void 0) {\n throw Error(`Profile ${profileName} credential_process returned invalid credentials.`);\n }\n if (data.Expiration) {\n const currentTime = /* @__PURE__ */ new Date();\n const expireTime = new Date(data.Expiration);\n if (expireTime < currentTime) {\n throw Error(`Profile ${profileName} credential_process returned expired credentials.`);\n }\n }\n let accountId = data.AccountId;\n if (!accountId && ((_a = profiles == null ? void 0 : profiles[profileName]) == null ? void 0 : _a.aws_account_id)) {\n accountId = profiles[profileName].aws_account_id;\n }\n return {\n accessKeyId: data.AccessKeyId,\n secretAccessKey: data.SecretAccessKey,\n ...data.SessionToken && { sessionToken: data.SessionToken },\n ...data.Expiration && { expiration: new Date(data.Expiration) },\n ...data.CredentialScope && { credentialScope: data.CredentialScope },\n ...accountId && { accountId }\n };\n}, \"getValidatedProcessCredentials\");\n\n// src/resolveProcessCredentials.ts\nvar resolveProcessCredentials = /* @__PURE__ */ __name(async (profileName, profiles, logger) => {\n const profile = profiles[profileName];\n if (profiles[profileName]) {\n const credentialProcess = profile[\"credential_process\"];\n if (credentialProcess !== void 0) {\n const execPromise = (0, import_util.promisify)(import_child_process.exec);\n try {\n const { stdout } = await execPromise(credentialProcess);\n let data;\n try {\n data = JSON.parse(stdout.trim());\n } catch {\n throw Error(`Profile ${profileName} credential_process returned invalid JSON.`);\n }\n return getValidatedProcessCredentials(profileName, data, profiles);\n } catch (error) {\n throw new import_property_provider.CredentialsProviderError(error.message, { logger });\n }\n } else {\n throw new import_property_provider.CredentialsProviderError(`Profile ${profileName} did not contain credential_process.`, { logger });\n }\n } else {\n throw new import_property_provider.CredentialsProviderError(`Profile ${profileName} could not be found in shared credentials file.`, {\n logger\n });\n }\n}, \"resolveProcessCredentials\");\n\n// src/fromProcess.ts\nvar fromProcess = /* @__PURE__ */ __name((init = {}) => async () => {\n var _a;\n (_a = init.logger) == null ? void 0 : _a.debug(\"@aws-sdk/credential-provider-process - fromProcess\");\n const profiles = await (0, import_shared_ini_file_loader.parseKnownFiles)(init);\n return resolveProcessCredentials((0, import_shared_ini_file_loader.getProfileName)(init), profiles, init.logger);\n}, \"fromProcess\");\n// Annotate the CommonJS export names for ESM import in node:\n\n0 && (module.exports = {\n fromProcess\n});\n\n","\"use strict\";\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\nvar __esm = (fn, res) => function __init() {\n return fn && (res = (0, fn[__getOwnPropNames(fn)[0]])(fn = 0)), res;\n};\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/loadSso.ts\nvar loadSso_exports = {};\n__export(loadSso_exports, {\n GetRoleCredentialsCommand: () => import_client_sso.GetRoleCredentialsCommand,\n SSOClient: () => import_client_sso.SSOClient\n});\nvar import_client_sso;\nvar init_loadSso = __esm({\n \"src/loadSso.ts\"() {\n \"use strict\";\n import_client_sso = require(\"@aws-sdk/client-sso\");\n }\n});\n\n// src/index.ts\nvar src_exports = {};\n__export(src_exports, {\n fromSSO: () => fromSSO,\n isSsoProfile: () => isSsoProfile,\n validateSsoProfile: () => validateSsoProfile\n});\nmodule.exports = __toCommonJS(src_exports);\n\n// src/fromSSO.ts\n\n\n\n// src/isSsoProfile.ts\nvar isSsoProfile = /* @__PURE__ */ __name((arg) => arg && (typeof arg.sso_start_url === \"string\" || typeof arg.sso_account_id === \"string\" || typeof arg.sso_session === \"string\" || typeof arg.sso_region === \"string\" || typeof arg.sso_role_name === \"string\"), \"isSsoProfile\");\n\n// src/resolveSSOCredentials.ts\nvar import_token_providers = require(\"@aws-sdk/token-providers\");\nvar import_property_provider = require(\"@smithy/property-provider\");\nvar import_shared_ini_file_loader = require(\"@smithy/shared-ini-file-loader\");\nvar SHOULD_FAIL_CREDENTIAL_CHAIN = false;\nvar resolveSSOCredentials = /* @__PURE__ */ __name(async ({\n ssoStartUrl,\n ssoSession,\n ssoAccountId,\n ssoRegion,\n ssoRoleName,\n ssoClient,\n clientConfig,\n profile,\n logger\n}) => {\n let token;\n const refreshMessage = `To refresh this SSO session run aws sso login with the corresponding profile.`;\n if (ssoSession) {\n try {\n const _token = await (0, import_token_providers.fromSso)({ profile })();\n token = {\n accessToken: _token.token,\n expiresAt: new Date(_token.expiration).toISOString()\n };\n } catch (e) {\n throw new import_property_provider.CredentialsProviderError(e.message, {\n tryNextLink: SHOULD_FAIL_CREDENTIAL_CHAIN,\n logger\n });\n }\n } else {\n try {\n token = await (0, import_shared_ini_file_loader.getSSOTokenFromFile)(ssoStartUrl);\n } catch (e) {\n throw new import_property_provider.CredentialsProviderError(`The SSO session associated with this profile is invalid. ${refreshMessage}`, {\n tryNextLink: SHOULD_FAIL_CREDENTIAL_CHAIN,\n logger\n });\n }\n }\n if (new Date(token.expiresAt).getTime() - Date.now() <= 0) {\n throw new import_property_provider.CredentialsProviderError(`The SSO session associated with this profile has expired. ${refreshMessage}`, {\n tryNextLink: SHOULD_FAIL_CREDENTIAL_CHAIN,\n logger\n });\n }\n const { accessToken } = token;\n const { SSOClient: SSOClient2, GetRoleCredentialsCommand: GetRoleCredentialsCommand2 } = await Promise.resolve().then(() => (init_loadSso(), loadSso_exports));\n const sso = ssoClient || new SSOClient2(\n Object.assign({}, clientConfig ?? {}, {\n region: (clientConfig == null ? void 0 : clientConfig.region) ?? ssoRegion\n })\n );\n let ssoResp;\n try {\n ssoResp = await sso.send(\n new GetRoleCredentialsCommand2({\n accountId: ssoAccountId,\n roleName: ssoRoleName,\n accessToken\n })\n );\n } catch (e) {\n throw new import_property_provider.CredentialsProviderError(e, {\n tryNextLink: SHOULD_FAIL_CREDENTIAL_CHAIN,\n logger\n });\n }\n const {\n roleCredentials: { accessKeyId, secretAccessKey, sessionToken, expiration, credentialScope, accountId } = {}\n } = ssoResp;\n if (!accessKeyId || !secretAccessKey || !sessionToken || !expiration) {\n throw new import_property_provider.CredentialsProviderError(\"SSO returns an invalid temporary credential.\", {\n tryNextLink: SHOULD_FAIL_CREDENTIAL_CHAIN,\n logger\n });\n }\n return {\n accessKeyId,\n secretAccessKey,\n sessionToken,\n expiration: new Date(expiration),\n ...credentialScope && { credentialScope },\n ...accountId && { accountId }\n };\n}, \"resolveSSOCredentials\");\n\n// src/validateSsoProfile.ts\n\nvar validateSsoProfile = /* @__PURE__ */ __name((profile, logger) => {\n const { sso_start_url, sso_account_id, sso_region, sso_role_name } = profile;\n if (!sso_start_url || !sso_account_id || !sso_region || !sso_role_name) {\n throw new import_property_provider.CredentialsProviderError(\n `Profile is configured with invalid SSO credentials. Required parameters \"sso_account_id\", \"sso_region\", \"sso_role_name\", \"sso_start_url\". Got ${Object.keys(profile).join(\n \", \"\n )}\nReference: https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-sso.html`,\n { tryNextLink: false, logger }\n );\n }\n return profile;\n}, \"validateSsoProfile\");\n\n// src/fromSSO.ts\nvar fromSSO = /* @__PURE__ */ __name((init = {}) => async () => {\n var _a;\n (_a = init.logger) == null ? void 0 : _a.debug(\"@aws-sdk/credential-provider-sso - fromSSO\");\n const { ssoStartUrl, ssoAccountId, ssoRegion, ssoRoleName, ssoSession } = init;\n const { ssoClient } = init;\n const profileName = (0, import_shared_ini_file_loader.getProfileName)(init);\n if (!ssoStartUrl && !ssoAccountId && !ssoRegion && !ssoRoleName && !ssoSession) {\n const profiles = await (0, import_shared_ini_file_loader.parseKnownFiles)(init);\n const profile = profiles[profileName];\n if (!profile) {\n throw new import_property_provider.CredentialsProviderError(`Profile ${profileName} was not found.`, { logger: init.logger });\n }\n if (!isSsoProfile(profile)) {\n throw new import_property_provider.CredentialsProviderError(`Profile ${profileName} is not configured with SSO credentials.`, {\n logger: init.logger\n });\n }\n if (profile == null ? void 0 : profile.sso_session) {\n const ssoSessions = await (0, import_shared_ini_file_loader.loadSsoSessionData)(init);\n const session = ssoSessions[profile.sso_session];\n const conflictMsg = ` configurations in profile ${profileName} and sso-session ${profile.sso_session}`;\n if (ssoRegion && ssoRegion !== session.sso_region) {\n throw new import_property_provider.CredentialsProviderError(`Conflicting SSO region` + conflictMsg, {\n tryNextLink: false,\n logger: init.logger\n });\n }\n if (ssoStartUrl && ssoStartUrl !== session.sso_start_url) {\n throw new import_property_provider.CredentialsProviderError(`Conflicting SSO start_url` + conflictMsg, {\n tryNextLink: false,\n logger: init.logger\n });\n }\n profile.sso_region = session.sso_region;\n profile.sso_start_url = session.sso_start_url;\n }\n const { sso_start_url, sso_account_id, sso_region, sso_role_name, sso_session } = validateSsoProfile(\n profile,\n init.logger\n );\n return resolveSSOCredentials({\n ssoStartUrl: sso_start_url,\n ssoSession: sso_session,\n ssoAccountId: sso_account_id,\n ssoRegion: sso_region,\n ssoRoleName: sso_role_name,\n ssoClient,\n clientConfig: init.clientConfig,\n profile: profileName\n });\n } else if (!ssoStartUrl || !ssoAccountId || !ssoRegion || !ssoRoleName) {\n throw new import_property_provider.CredentialsProviderError(\n 'Incomplete configuration. The fromSSO() argument hash must include \"ssoStartUrl\", \"ssoAccountId\", \"ssoRegion\", \"ssoRoleName\"',\n { tryNextLink: false, logger: init.logger }\n );\n } else {\n return resolveSSOCredentials({\n ssoStartUrl,\n ssoSession,\n ssoAccountId,\n ssoRegion,\n ssoRoleName,\n ssoClient,\n clientConfig: init.clientConfig,\n profile: profileName\n });\n }\n}, \"fromSSO\");\n// Annotate the CommonJS export names for ESM import in node:\n\n0 && (module.exports = {\n fromSSO,\n isSsoProfile,\n validateSsoProfile\n});\n\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.fromTokenFile = void 0;\nconst property_provider_1 = require(\"@smithy/property-provider\");\nconst fs_1 = require(\"fs\");\nconst fromWebToken_1 = require(\"./fromWebToken\");\nconst ENV_TOKEN_FILE = \"AWS_WEB_IDENTITY_TOKEN_FILE\";\nconst ENV_ROLE_ARN = \"AWS_ROLE_ARN\";\nconst ENV_ROLE_SESSION_NAME = \"AWS_ROLE_SESSION_NAME\";\nconst fromTokenFile = (init = {}) => async () => {\n init.logger?.debug(\"@aws-sdk/credential-provider-web-identity - fromTokenFile\");\n const webIdentityTokenFile = init?.webIdentityTokenFile ?? process.env[ENV_TOKEN_FILE];\n const roleArn = init?.roleArn ?? process.env[ENV_ROLE_ARN];\n const roleSessionName = init?.roleSessionName ?? process.env[ENV_ROLE_SESSION_NAME];\n if (!webIdentityTokenFile || !roleArn) {\n throw new property_provider_1.CredentialsProviderError(\"Web identity configuration not specified\", {\n logger: init.logger,\n });\n }\n return (0, fromWebToken_1.fromWebToken)({\n ...init,\n webIdentityToken: (0, fs_1.readFileSync)(webIdentityTokenFile, { encoding: \"ascii\" }),\n roleArn,\n roleSessionName,\n })();\n};\nexports.fromTokenFile = fromTokenFile;\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.fromWebToken = void 0;\nconst fromWebToken = (init) => async () => {\n init.logger?.debug(\"@aws-sdk/credential-provider-web-identity - fromWebToken\");\n const { roleArn, roleSessionName, webIdentityToken, providerId, policyArns, policy, durationSeconds } = init;\n let { roleAssumerWithWebIdentity } = init;\n if (!roleAssumerWithWebIdentity) {\n const { getDefaultRoleAssumerWithWebIdentity } = await Promise.resolve().then(() => __importStar(require(\"@aws-sdk/client-sts\")));\n roleAssumerWithWebIdentity = getDefaultRoleAssumerWithWebIdentity({\n ...init.clientConfig,\n credentialProviderLogger: init.logger,\n parentClientConfig: init.parentClientConfig,\n }, init.clientPlugins);\n }\n return roleAssumerWithWebIdentity({\n RoleArn: roleArn,\n RoleSessionName: roleSessionName ?? `aws-sdk-js-session-${Date.now()}`,\n WebIdentityToken: webIdentityToken,\n ProviderId: providerId,\n PolicyArns: policyArns,\n Policy: policy,\n DurationSeconds: durationSeconds,\n });\n};\nexports.fromWebToken = fromWebToken;\n","\"use strict\";\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, \"default\"), secondTarget && __copyProps(secondTarget, mod, \"default\"));\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/index.ts\nvar src_exports = {};\nmodule.exports = __toCommonJS(src_exports);\n__reExport(src_exports, require(\"././fromTokenFile\"), module.exports);\n__reExport(src_exports, require(\"././fromWebToken\"), module.exports);\n// Annotate the CommonJS export names for ESM import in node:\n\n0 && (module.exports = {\n fromTokenFile,\n fromWebToken\n});\n\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.createCredentialChain = void 0;\nconst property_provider_1 = require(\"@smithy/property-provider\");\nconst createCredentialChain = (...credentialProviders) => {\n let expireAfter = -1;\n const baseFunction = async () => {\n const credentials = await (0, property_provider_1.chain)(...credentialProviders)();\n if (!credentials.expiration && expireAfter !== -1) {\n credentials.expiration = new Date(Date.now() + expireAfter);\n }\n return credentials;\n };\n const withOptions = Object.assign(baseFunction, {\n expireAfter(milliseconds) {\n if (milliseconds < 5 * 60000) {\n throw new Error(\"@aws-sdk/credential-providers - createCredentialChain(...).expireAfter(ms) may not be called with a duration lower than five minutes.\");\n }\n expireAfter = milliseconds;\n return withOptions;\n },\n });\n return withOptions;\n};\nexports.createCredentialChain = createCredentialChain;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.fromCognitoIdentity = void 0;\nconst credential_provider_cognito_identity_1 = require(\"@aws-sdk/credential-provider-cognito-identity\");\nconst fromCognitoIdentity = (options) => (0, credential_provider_cognito_identity_1.fromCognitoIdentity)({\n ...options,\n});\nexports.fromCognitoIdentity = fromCognitoIdentity;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.fromCognitoIdentityPool = void 0;\nconst credential_provider_cognito_identity_1 = require(\"@aws-sdk/credential-provider-cognito-identity\");\nconst fromCognitoIdentityPool = (options) => (0, credential_provider_cognito_identity_1.fromCognitoIdentityPool)({\n ...options,\n});\nexports.fromCognitoIdentityPool = fromCognitoIdentityPool;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.fromContainerMetadata = void 0;\nconst credential_provider_imds_1 = require(\"@smithy/credential-provider-imds\");\nconst fromContainerMetadata = (init) => {\n init?.logger?.debug(\"@smithy/credential-provider-imds\", \"fromContainerMetadata\");\n return (0, credential_provider_imds_1.fromContainerMetadata)(init);\n};\nexports.fromContainerMetadata = fromContainerMetadata;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.fromEnv = void 0;\nconst credential_provider_env_1 = require(\"@aws-sdk/credential-provider-env\");\nconst fromEnv = (init) => (0, credential_provider_env_1.fromEnv)(init);\nexports.fromEnv = fromEnv;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.fromIni = void 0;\nconst credential_provider_ini_1 = require(\"@aws-sdk/credential-provider-ini\");\nconst fromIni = (init = {}) => (0, credential_provider_ini_1.fromIni)({\n ...init,\n});\nexports.fromIni = fromIni;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.fromInstanceMetadata = void 0;\nconst credential_provider_imds_1 = require(\"@smithy/credential-provider-imds\");\nconst fromInstanceMetadata = (init) => {\n init?.logger?.debug(\"@smithy/credential-provider-imds\", \"fromInstanceMetadata\");\n return (0, credential_provider_imds_1.fromInstanceMetadata)(init);\n};\nexports.fromInstanceMetadata = fromInstanceMetadata;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.fromNodeProviderChain = void 0;\nconst credential_provider_node_1 = require(\"@aws-sdk/credential-provider-node\");\nconst fromNodeProviderChain = (init = {}) => (0, credential_provider_node_1.defaultProvider)({\n ...init,\n});\nexports.fromNodeProviderChain = fromNodeProviderChain;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.fromProcess = void 0;\nconst credential_provider_process_1 = require(\"@aws-sdk/credential-provider-process\");\nconst fromProcess = (init) => (0, credential_provider_process_1.fromProcess)(init);\nexports.fromProcess = fromProcess;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.fromSSO = void 0;\nconst credential_provider_sso_1 = require(\"@aws-sdk/credential-provider-sso\");\nconst fromSSO = (init = {}) => {\n return (0, credential_provider_sso_1.fromSSO)({ ...init });\n};\nexports.fromSSO = fromSSO;\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.fromTemporaryCredentials = void 0;\nconst property_provider_1 = require(\"@smithy/property-provider\");\nconst fromTemporaryCredentials = (options) => {\n let stsClient;\n return async () => {\n options.logger?.debug(\"@aws-sdk/credential-providers - fromTemporaryCredentials (STS)\");\n const params = { ...options.params, RoleSessionName: options.params.RoleSessionName ?? \"aws-sdk-js-\" + Date.now() };\n if (params?.SerialNumber) {\n if (!options.mfaCodeProvider) {\n throw new property_provider_1.CredentialsProviderError(`Temporary credential requires multi-factor authentication,` + ` but no MFA code callback was provided.`, {\n tryNextLink: false,\n logger: options.logger,\n });\n }\n params.TokenCode = await options.mfaCodeProvider(params?.SerialNumber);\n }\n const { AssumeRoleCommand, STSClient } = await Promise.resolve().then(() => __importStar(require(\"./loadSts\")));\n if (!stsClient)\n stsClient = new STSClient({ ...options.clientConfig, credentials: options.masterCredentials });\n if (options.clientPlugins) {\n for (const plugin of options.clientPlugins) {\n stsClient.middlewareStack.use(plugin);\n }\n }\n const { Credentials } = await stsClient.send(new AssumeRoleCommand(params));\n if (!Credentials || !Credentials.AccessKeyId || !Credentials.SecretAccessKey) {\n throw new property_provider_1.CredentialsProviderError(`Invalid response from STS.assumeRole call with role ${params.RoleArn}`, {\n logger: options.logger,\n });\n }\n return {\n accessKeyId: Credentials.AccessKeyId,\n secretAccessKey: Credentials.SecretAccessKey,\n sessionToken: Credentials.SessionToken,\n expiration: Credentials.Expiration,\n credentialScope: Credentials.CredentialScope,\n };\n };\n};\nexports.fromTemporaryCredentials = fromTemporaryCredentials;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.fromTokenFile = void 0;\nconst credential_provider_web_identity_1 = require(\"@aws-sdk/credential-provider-web-identity\");\nconst fromTokenFile = (init = {}) => (0, credential_provider_web_identity_1.fromTokenFile)({\n ...init,\n});\nexports.fromTokenFile = fromTokenFile;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.fromWebToken = void 0;\nconst credential_provider_web_identity_1 = require(\"@aws-sdk/credential-provider-web-identity\");\nconst fromWebToken = (init) => (0, credential_provider_web_identity_1.fromWebToken)({\n ...init,\n});\nexports.fromWebToken = fromWebToken;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.fromHttp = void 0;\nconst tslib_1 = require(\"tslib\");\ntslib_1.__exportStar(require(\"./createCredentialChain\"), exports);\ntslib_1.__exportStar(require(\"./fromCognitoIdentity\"), exports);\ntslib_1.__exportStar(require(\"./fromCognitoIdentityPool\"), exports);\ntslib_1.__exportStar(require(\"./fromContainerMetadata\"), exports);\nvar credential_provider_http_1 = require(\"@aws-sdk/credential-provider-http\");\nObject.defineProperty(exports, \"fromHttp\", { enumerable: true, get: function () { return credential_provider_http_1.fromHttp; } });\ntslib_1.__exportStar(require(\"./fromEnv\"), exports);\ntslib_1.__exportStar(require(\"./fromIni\"), exports);\ntslib_1.__exportStar(require(\"./fromInstanceMetadata\"), exports);\ntslib_1.__exportStar(require(\"./fromNodeProviderChain\"), exports);\ntslib_1.__exportStar(require(\"./fromProcess\"), exports);\ntslib_1.__exportStar(require(\"./fromSSO\"), exports);\ntslib_1.__exportStar(require(\"./fromTemporaryCredentials\"), exports);\ntslib_1.__exportStar(require(\"./fromTokenFile\"), exports);\ntslib_1.__exportStar(require(\"./fromWebToken\"), exports);\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.STSClient = exports.AssumeRoleCommand = void 0;\nconst client_sts_1 = require(\"@aws-sdk/client-sts\");\nObject.defineProperty(exports, \"AssumeRoleCommand\", { enumerable: true, get: function () { return client_sts_1.AssumeRoleCommand; } });\nObject.defineProperty(exports, \"STSClient\", { enumerable: true, get: function () { return client_sts_1.STSClient; } });\n","\"use strict\";\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/index.ts\nvar src_exports = {};\n__export(src_exports, {\n getHostHeaderPlugin: () => getHostHeaderPlugin,\n hostHeaderMiddleware: () => hostHeaderMiddleware,\n hostHeaderMiddlewareOptions: () => hostHeaderMiddlewareOptions,\n resolveHostHeaderConfig: () => resolveHostHeaderConfig\n});\nmodule.exports = __toCommonJS(src_exports);\nvar import_protocol_http = require(\"@smithy/protocol-http\");\nfunction resolveHostHeaderConfig(input) {\n return input;\n}\n__name(resolveHostHeaderConfig, \"resolveHostHeaderConfig\");\nvar hostHeaderMiddleware = /* @__PURE__ */ __name((options) => (next) => async (args) => {\n if (!import_protocol_http.HttpRequest.isInstance(args.request))\n return next(args);\n const { request } = args;\n const { handlerProtocol = \"\" } = options.requestHandler.metadata || {};\n if (handlerProtocol.indexOf(\"h2\") >= 0 && !request.headers[\":authority\"]) {\n delete request.headers[\"host\"];\n request.headers[\":authority\"] = request.hostname + (request.port ? \":\" + request.port : \"\");\n } else if (!request.headers[\"host\"]) {\n let host = request.hostname;\n if (request.port != null)\n host += `:${request.port}`;\n request.headers[\"host\"] = host;\n }\n return next(args);\n}, \"hostHeaderMiddleware\");\nvar hostHeaderMiddlewareOptions = {\n name: \"hostHeaderMiddleware\",\n step: \"build\",\n priority: \"low\",\n tags: [\"HOST\"],\n override: true\n};\nvar getHostHeaderPlugin = /* @__PURE__ */ __name((options) => ({\n applyToStack: (clientStack) => {\n clientStack.add(hostHeaderMiddleware(options), hostHeaderMiddlewareOptions);\n }\n}), \"getHostHeaderPlugin\");\n// Annotate the CommonJS export names for ESM import in node:\n\n0 && (module.exports = {\n resolveHostHeaderConfig,\n hostHeaderMiddleware,\n hostHeaderMiddlewareOptions,\n getHostHeaderPlugin\n});\n\n","\"use strict\";\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/index.ts\nvar src_exports = {};\n__export(src_exports, {\n getLoggerPlugin: () => getLoggerPlugin,\n loggerMiddleware: () => loggerMiddleware,\n loggerMiddlewareOptions: () => loggerMiddlewareOptions\n});\nmodule.exports = __toCommonJS(src_exports);\n\n// src/loggerMiddleware.ts\nvar loggerMiddleware = /* @__PURE__ */ __name(() => (next, context) => async (args) => {\n var _a, _b;\n try {\n const response = await next(args);\n const { clientName, commandName, logger, dynamoDbDocumentClientOptions = {} } = context;\n const { overrideInputFilterSensitiveLog, overrideOutputFilterSensitiveLog } = dynamoDbDocumentClientOptions;\n const inputFilterSensitiveLog = overrideInputFilterSensitiveLog ?? context.inputFilterSensitiveLog;\n const outputFilterSensitiveLog = overrideOutputFilterSensitiveLog ?? context.outputFilterSensitiveLog;\n const { $metadata, ...outputWithoutMetadata } = response.output;\n (_a = logger == null ? void 0 : logger.info) == null ? void 0 : _a.call(logger, {\n clientName,\n commandName,\n input: inputFilterSensitiveLog(args.input),\n output: outputFilterSensitiveLog(outputWithoutMetadata),\n metadata: $metadata\n });\n return response;\n } catch (error) {\n const { clientName, commandName, logger, dynamoDbDocumentClientOptions = {} } = context;\n const { overrideInputFilterSensitiveLog } = dynamoDbDocumentClientOptions;\n const inputFilterSensitiveLog = overrideInputFilterSensitiveLog ?? context.inputFilterSensitiveLog;\n (_b = logger == null ? void 0 : logger.error) == null ? void 0 : _b.call(logger, {\n clientName,\n commandName,\n input: inputFilterSensitiveLog(args.input),\n error,\n metadata: error.$metadata\n });\n throw error;\n }\n}, \"loggerMiddleware\");\nvar loggerMiddlewareOptions = {\n name: \"loggerMiddleware\",\n tags: [\"LOGGER\"],\n step: \"initialize\",\n override: true\n};\nvar getLoggerPlugin = /* @__PURE__ */ __name((options) => ({\n applyToStack: (clientStack) => {\n clientStack.add(loggerMiddleware(), loggerMiddlewareOptions);\n }\n}), \"getLoggerPlugin\");\n// Annotate the CommonJS export names for ESM import in node:\n\n0 && (module.exports = {\n loggerMiddleware,\n loggerMiddlewareOptions,\n getLoggerPlugin\n});\n\n","\"use strict\";\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/index.ts\nvar src_exports = {};\n__export(src_exports, {\n addRecursionDetectionMiddlewareOptions: () => addRecursionDetectionMiddlewareOptions,\n getRecursionDetectionPlugin: () => getRecursionDetectionPlugin,\n recursionDetectionMiddleware: () => recursionDetectionMiddleware\n});\nmodule.exports = __toCommonJS(src_exports);\nvar import_protocol_http = require(\"@smithy/protocol-http\");\nvar TRACE_ID_HEADER_NAME = \"X-Amzn-Trace-Id\";\nvar ENV_LAMBDA_FUNCTION_NAME = \"AWS_LAMBDA_FUNCTION_NAME\";\nvar ENV_TRACE_ID = \"_X_AMZN_TRACE_ID\";\nvar recursionDetectionMiddleware = /* @__PURE__ */ __name((options) => (next) => async (args) => {\n const { request } = args;\n if (!import_protocol_http.HttpRequest.isInstance(request) || options.runtime !== \"node\" || request.headers.hasOwnProperty(TRACE_ID_HEADER_NAME)) {\n return next(args);\n }\n const functionName = process.env[ENV_LAMBDA_FUNCTION_NAME];\n const traceId = process.env[ENV_TRACE_ID];\n const nonEmptyString = /* @__PURE__ */ __name((str) => typeof str === \"string\" && str.length > 0, \"nonEmptyString\");\n if (nonEmptyString(functionName) && nonEmptyString(traceId)) {\n request.headers[TRACE_ID_HEADER_NAME] = traceId;\n }\n return next({\n ...args,\n request\n });\n}, \"recursionDetectionMiddleware\");\nvar addRecursionDetectionMiddlewareOptions = {\n step: \"build\",\n tags: [\"RECURSION_DETECTION\"],\n name: \"recursionDetectionMiddleware\",\n override: true,\n priority: \"low\"\n};\nvar getRecursionDetectionPlugin = /* @__PURE__ */ __name((options) => ({\n applyToStack: (clientStack) => {\n clientStack.add(recursionDetectionMiddleware(options), addRecursionDetectionMiddlewareOptions);\n }\n}), \"getRecursionDetectionPlugin\");\n// Annotate the CommonJS export names for ESM import in node:\n\n0 && (module.exports = {\n recursionDetectionMiddleware,\n addRecursionDetectionMiddlewareOptions,\n getRecursionDetectionPlugin\n});\n\n","\"use strict\";\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/index.ts\nvar src_exports = {};\n__export(src_exports, {\n DEFAULT_UA_APP_ID: () => DEFAULT_UA_APP_ID,\n getUserAgentMiddlewareOptions: () => getUserAgentMiddlewareOptions,\n getUserAgentPlugin: () => getUserAgentPlugin,\n resolveUserAgentConfig: () => resolveUserAgentConfig,\n userAgentMiddleware: () => userAgentMiddleware\n});\nmodule.exports = __toCommonJS(src_exports);\n\n// src/configurations.ts\nvar import_core = require(\"@smithy/core\");\nvar DEFAULT_UA_APP_ID = void 0;\nfunction isValidUserAgentAppId(appId) {\n if (appId === void 0) {\n return true;\n }\n return typeof appId === \"string\" && appId.length <= 50;\n}\n__name(isValidUserAgentAppId, \"isValidUserAgentAppId\");\nfunction resolveUserAgentConfig(input) {\n const normalizedAppIdProvider = (0, import_core.normalizeProvider)(input.userAgentAppId ?? DEFAULT_UA_APP_ID);\n return {\n ...input,\n customUserAgent: typeof input.customUserAgent === \"string\" ? [[input.customUserAgent]] : input.customUserAgent,\n userAgentAppId: async () => {\n var _a, _b;\n const appId = await normalizedAppIdProvider();\n if (!isValidUserAgentAppId(appId)) {\n const logger = ((_b = (_a = input.logger) == null ? void 0 : _a.constructor) == null ? void 0 : _b.name) === \"NoOpLogger\" || !input.logger ? console : input.logger;\n if (typeof appId !== \"string\") {\n logger == null ? void 0 : logger.warn(\"userAgentAppId must be a string or undefined.\");\n } else if (appId.length > 50) {\n logger == null ? void 0 : logger.warn(\"The provided userAgentAppId exceeds the maximum length of 50 characters.\");\n }\n }\n return appId;\n }\n };\n}\n__name(resolveUserAgentConfig, \"resolveUserAgentConfig\");\n\n// src/user-agent-middleware.ts\nvar import_util_endpoints = require(\"@aws-sdk/util-endpoints\");\nvar import_protocol_http = require(\"@smithy/protocol-http\");\n\n// src/constants.ts\nvar USER_AGENT = \"user-agent\";\nvar X_AMZ_USER_AGENT = \"x-amz-user-agent\";\nvar SPACE = \" \";\nvar UA_NAME_SEPARATOR = \"/\";\nvar UA_NAME_ESCAPE_REGEX = /[^\\!\\$\\%\\&\\'\\*\\+\\-\\.\\^\\_\\`\\|\\~\\d\\w]/g;\nvar UA_VALUE_ESCAPE_REGEX = /[^\\!\\$\\%\\&\\'\\*\\+\\-\\.\\^\\_\\`\\|\\~\\d\\w\\#]/g;\nvar UA_ESCAPE_CHAR = \"-\";\n\n// src/encode-features.ts\nvar BYTE_LIMIT = 1024;\nfunction encodeFeatures(features) {\n let buffer = \"\";\n for (const key in features) {\n const val = features[key];\n if (buffer.length + val.length + 1 <= BYTE_LIMIT) {\n if (buffer.length) {\n buffer += \",\" + val;\n } else {\n buffer += val;\n }\n continue;\n }\n break;\n }\n return buffer;\n}\n__name(encodeFeatures, \"encodeFeatures\");\n\n// src/user-agent-middleware.ts\nvar userAgentMiddleware = /* @__PURE__ */ __name((options) => (next, context) => async (args) => {\n var _a, _b, _c, _d;\n const { request } = args;\n if (!import_protocol_http.HttpRequest.isInstance(request)) {\n return next(args);\n }\n const { headers } = request;\n const userAgent = ((_a = context == null ? void 0 : context.userAgent) == null ? void 0 : _a.map(escapeUserAgent)) || [];\n const defaultUserAgent = (await options.defaultUserAgentProvider()).map(escapeUserAgent);\n const awsContext = context;\n defaultUserAgent.push(\n `m/${encodeFeatures(\n Object.assign({}, (_b = context.__smithy_context) == null ? void 0 : _b.features, (_c = awsContext.__aws_sdk_context) == null ? void 0 : _c.features)\n )}`\n );\n const customUserAgent = ((_d = options == null ? void 0 : options.customUserAgent) == null ? void 0 : _d.map(escapeUserAgent)) || [];\n const appId = await options.userAgentAppId();\n if (appId) {\n defaultUserAgent.push(escapeUserAgent([`app/${appId}`]));\n }\n const prefix = (0, import_util_endpoints.getUserAgentPrefix)();\n const sdkUserAgentValue = (prefix ? [prefix] : []).concat([...defaultUserAgent, ...userAgent, ...customUserAgent]).join(SPACE);\n const normalUAValue = [\n ...defaultUserAgent.filter((section) => section.startsWith(\"aws-sdk-\")),\n ...customUserAgent\n ].join(SPACE);\n if (options.runtime !== \"browser\") {\n if (normalUAValue) {\n headers[X_AMZ_USER_AGENT] = headers[X_AMZ_USER_AGENT] ? `${headers[USER_AGENT]} ${normalUAValue}` : normalUAValue;\n }\n headers[USER_AGENT] = sdkUserAgentValue;\n } else {\n headers[X_AMZ_USER_AGENT] = sdkUserAgentValue;\n }\n return next({\n ...args,\n request\n });\n}, \"userAgentMiddleware\");\nvar escapeUserAgent = /* @__PURE__ */ __name((userAgentPair) => {\n var _a;\n const name = userAgentPair[0].split(UA_NAME_SEPARATOR).map((part) => part.replace(UA_NAME_ESCAPE_REGEX, UA_ESCAPE_CHAR)).join(UA_NAME_SEPARATOR);\n const version = (_a = userAgentPair[1]) == null ? void 0 : _a.replace(UA_VALUE_ESCAPE_REGEX, UA_ESCAPE_CHAR);\n const prefixSeparatorIndex = name.indexOf(UA_NAME_SEPARATOR);\n const prefix = name.substring(0, prefixSeparatorIndex);\n let uaName = name.substring(prefixSeparatorIndex + 1);\n if (prefix === \"api\") {\n uaName = uaName.toLowerCase();\n }\n return [prefix, uaName, version].filter((item) => item && item.length > 0).reduce((acc, item, index) => {\n switch (index) {\n case 0:\n return item;\n case 1:\n return `${acc}/${item}`;\n default:\n return `${acc}#${item}`;\n }\n }, \"\");\n}, \"escapeUserAgent\");\nvar getUserAgentMiddlewareOptions = {\n name: \"getUserAgentMiddleware\",\n step: \"build\",\n priority: \"low\",\n tags: [\"SET_USER_AGENT\", \"USER_AGENT\"],\n override: true\n};\nvar getUserAgentPlugin = /* @__PURE__ */ __name((config) => ({\n applyToStack: (clientStack) => {\n clientStack.add(userAgentMiddleware(config), getUserAgentMiddlewareOptions);\n }\n}), \"getUserAgentPlugin\");\n// Annotate the CommonJS export names for ESM import in node:\n\n0 && (module.exports = {\n DEFAULT_UA_APP_ID,\n resolveUserAgentConfig,\n userAgentMiddleware,\n getUserAgentMiddlewareOptions,\n getUserAgentPlugin\n});\n\n","\"use strict\";\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/index.ts\nvar src_exports = {};\n__export(src_exports, {\n NODE_REGION_CONFIG_FILE_OPTIONS: () => NODE_REGION_CONFIG_FILE_OPTIONS,\n NODE_REGION_CONFIG_OPTIONS: () => NODE_REGION_CONFIG_OPTIONS,\n REGION_ENV_NAME: () => REGION_ENV_NAME,\n REGION_INI_NAME: () => REGION_INI_NAME,\n getAwsRegionExtensionConfiguration: () => getAwsRegionExtensionConfiguration,\n resolveAwsRegionExtensionConfiguration: () => resolveAwsRegionExtensionConfiguration,\n resolveRegionConfig: () => resolveRegionConfig\n});\nmodule.exports = __toCommonJS(src_exports);\n\n// src/extensions/index.ts\nvar getAwsRegionExtensionConfiguration = /* @__PURE__ */ __name((runtimeConfig) => {\n let runtimeConfigRegion = /* @__PURE__ */ __name(async () => {\n if (runtimeConfig.region === void 0) {\n throw new Error(\"Region is missing from runtimeConfig\");\n }\n const region = runtimeConfig.region;\n if (typeof region === \"string\") {\n return region;\n }\n return region();\n }, \"runtimeConfigRegion\");\n return {\n setRegion(region) {\n runtimeConfigRegion = region;\n },\n region() {\n return runtimeConfigRegion;\n }\n };\n}, \"getAwsRegionExtensionConfiguration\");\nvar resolveAwsRegionExtensionConfiguration = /* @__PURE__ */ __name((awsRegionExtensionConfiguration) => {\n return {\n region: awsRegionExtensionConfiguration.region()\n };\n}, \"resolveAwsRegionExtensionConfiguration\");\n\n// src/regionConfig/config.ts\nvar REGION_ENV_NAME = \"AWS_REGION\";\nvar REGION_INI_NAME = \"region\";\nvar NODE_REGION_CONFIG_OPTIONS = {\n environmentVariableSelector: (env) => env[REGION_ENV_NAME],\n configFileSelector: (profile) => profile[REGION_INI_NAME],\n default: () => {\n throw new Error(\"Region is missing\");\n }\n};\nvar NODE_REGION_CONFIG_FILE_OPTIONS = {\n preferredFile: \"credentials\"\n};\n\n// src/regionConfig/isFipsRegion.ts\nvar isFipsRegion = /* @__PURE__ */ __name((region) => typeof region === \"string\" && (region.startsWith(\"fips-\") || region.endsWith(\"-fips\")), \"isFipsRegion\");\n\n// src/regionConfig/getRealRegion.ts\nvar getRealRegion = /* @__PURE__ */ __name((region) => isFipsRegion(region) ? [\"fips-aws-global\", \"aws-fips\"].includes(region) ? \"us-east-1\" : region.replace(/fips-(dkr-|prod-)?|-fips/, \"\") : region, \"getRealRegion\");\n\n// src/regionConfig/resolveRegionConfig.ts\nvar resolveRegionConfig = /* @__PURE__ */ __name((input) => {\n const { region, useFipsEndpoint } = input;\n if (!region) {\n throw new Error(\"Region is missing\");\n }\n return {\n ...input,\n region: async () => {\n if (typeof region === \"string\") {\n return getRealRegion(region);\n }\n const providedRegion = await region();\n return getRealRegion(providedRegion);\n },\n useFipsEndpoint: async () => {\n const providedRegion = typeof region === \"string\" ? region : await region();\n if (isFipsRegion(providedRegion)) {\n return true;\n }\n return typeof useFipsEndpoint !== \"function\" ? Promise.resolve(!!useFipsEndpoint) : useFipsEndpoint();\n }\n };\n}, \"resolveRegionConfig\");\n// Annotate the CommonJS export names for ESM import in node:\n\n0 && (module.exports = {\n getAwsRegionExtensionConfiguration,\n resolveAwsRegionExtensionConfiguration,\n REGION_ENV_NAME,\n REGION_INI_NAME,\n NODE_REGION_CONFIG_OPTIONS,\n NODE_REGION_CONFIG_FILE_OPTIONS,\n resolveRegionConfig\n});\n\n","\"use strict\";\nvar __create = Object.create;\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __getProtoOf = Object.getPrototypeOf;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(\n // If the importer is in node compatibility mode or this is not an ESM\n // file that has been converted to a CommonJS file using a Babel-\n // compatible transform (i.e. \"__esModule\" has not been set), then set\n // \"default\" to the CommonJS \"module.exports\" for node compatibility.\n isNodeMode || !mod || !mod.__esModule ? __defProp(target, \"default\", { value: mod, enumerable: true }) : target,\n mod\n));\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/index.ts\nvar src_exports = {};\n__export(src_exports, {\n fromSso: () => fromSso,\n fromStatic: () => fromStatic,\n nodeProvider: () => nodeProvider\n});\nmodule.exports = __toCommonJS(src_exports);\n\n// src/fromSso.ts\n\n\n\n// src/constants.ts\nvar EXPIRE_WINDOW_MS = 5 * 60 * 1e3;\nvar REFRESH_MESSAGE = `To refresh this SSO session run 'aws sso login' with the corresponding profile.`;\n\n// src/getSsoOidcClient.ts\nvar ssoOidcClientsHash = {};\nvar getSsoOidcClient = /* @__PURE__ */ __name(async (ssoRegion) => {\n const { SSOOIDCClient } = await Promise.resolve().then(() => __toESM(require(\"@aws-sdk/client-sso-oidc\")));\n if (ssoOidcClientsHash[ssoRegion]) {\n return ssoOidcClientsHash[ssoRegion];\n }\n const ssoOidcClient = new SSOOIDCClient({ region: ssoRegion });\n ssoOidcClientsHash[ssoRegion] = ssoOidcClient;\n return ssoOidcClient;\n}, \"getSsoOidcClient\");\n\n// src/getNewSsoOidcToken.ts\nvar getNewSsoOidcToken = /* @__PURE__ */ __name(async (ssoToken, ssoRegion) => {\n const { CreateTokenCommand } = await Promise.resolve().then(() => __toESM(require(\"@aws-sdk/client-sso-oidc\")));\n const ssoOidcClient = await getSsoOidcClient(ssoRegion);\n return ssoOidcClient.send(\n new CreateTokenCommand({\n clientId: ssoToken.clientId,\n clientSecret: ssoToken.clientSecret,\n refreshToken: ssoToken.refreshToken,\n grantType: \"refresh_token\"\n })\n );\n}, \"getNewSsoOidcToken\");\n\n// src/validateTokenExpiry.ts\nvar import_property_provider = require(\"@smithy/property-provider\");\nvar validateTokenExpiry = /* @__PURE__ */ __name((token) => {\n if (token.expiration && token.expiration.getTime() < Date.now()) {\n throw new import_property_provider.TokenProviderError(`Token is expired. ${REFRESH_MESSAGE}`, false);\n }\n}, \"validateTokenExpiry\");\n\n// src/validateTokenKey.ts\n\nvar validateTokenKey = /* @__PURE__ */ __name((key, value, forRefresh = false) => {\n if (typeof value === \"undefined\") {\n throw new import_property_provider.TokenProviderError(\n `Value not present for '${key}' in SSO Token${forRefresh ? \". Cannot refresh\" : \"\"}. ${REFRESH_MESSAGE}`,\n false\n );\n }\n}, \"validateTokenKey\");\n\n// src/writeSSOTokenToFile.ts\nvar import_shared_ini_file_loader = require(\"@smithy/shared-ini-file-loader\");\nvar import_fs = require(\"fs\");\nvar { writeFile } = import_fs.promises;\nvar writeSSOTokenToFile = /* @__PURE__ */ __name((id, ssoToken) => {\n const tokenFilepath = (0, import_shared_ini_file_loader.getSSOTokenFilepath)(id);\n const tokenString = JSON.stringify(ssoToken, null, 2);\n return writeFile(tokenFilepath, tokenString);\n}, \"writeSSOTokenToFile\");\n\n// src/fromSso.ts\nvar lastRefreshAttemptTime = /* @__PURE__ */ new Date(0);\nvar fromSso = /* @__PURE__ */ __name((init = {}) => async () => {\n var _a;\n (_a = init.logger) == null ? void 0 : _a.debug(\"@aws-sdk/token-providers - fromSso\");\n const profiles = await (0, import_shared_ini_file_loader.parseKnownFiles)(init);\n const profileName = (0, import_shared_ini_file_loader.getProfileName)(init);\n const profile = profiles[profileName];\n if (!profile) {\n throw new import_property_provider.TokenProviderError(`Profile '${profileName}' could not be found in shared credentials file.`, false);\n } else if (!profile[\"sso_session\"]) {\n throw new import_property_provider.TokenProviderError(`Profile '${profileName}' is missing required property 'sso_session'.`);\n }\n const ssoSessionName = profile[\"sso_session\"];\n const ssoSessions = await (0, import_shared_ini_file_loader.loadSsoSessionData)(init);\n const ssoSession = ssoSessions[ssoSessionName];\n if (!ssoSession) {\n throw new import_property_provider.TokenProviderError(\n `Sso session '${ssoSessionName}' could not be found in shared credentials file.`,\n false\n );\n }\n for (const ssoSessionRequiredKey of [\"sso_start_url\", \"sso_region\"]) {\n if (!ssoSession[ssoSessionRequiredKey]) {\n throw new import_property_provider.TokenProviderError(\n `Sso session '${ssoSessionName}' is missing required property '${ssoSessionRequiredKey}'.`,\n false\n );\n }\n }\n const ssoStartUrl = ssoSession[\"sso_start_url\"];\n const ssoRegion = ssoSession[\"sso_region\"];\n let ssoToken;\n try {\n ssoToken = await (0, import_shared_ini_file_loader.getSSOTokenFromFile)(ssoSessionName);\n } catch (e) {\n throw new import_property_provider.TokenProviderError(\n `The SSO session token associated with profile=${profileName} was not found or is invalid. ${REFRESH_MESSAGE}`,\n false\n );\n }\n validateTokenKey(\"accessToken\", ssoToken.accessToken);\n validateTokenKey(\"expiresAt\", ssoToken.expiresAt);\n const { accessToken, expiresAt } = ssoToken;\n const existingToken = { token: accessToken, expiration: new Date(expiresAt) };\n if (existingToken.expiration.getTime() - Date.now() > EXPIRE_WINDOW_MS) {\n return existingToken;\n }\n if (Date.now() - lastRefreshAttemptTime.getTime() < 30 * 1e3) {\n validateTokenExpiry(existingToken);\n return existingToken;\n }\n validateTokenKey(\"clientId\", ssoToken.clientId, true);\n validateTokenKey(\"clientSecret\", ssoToken.clientSecret, true);\n validateTokenKey(\"refreshToken\", ssoToken.refreshToken, true);\n try {\n lastRefreshAttemptTime.setTime(Date.now());\n const newSsoOidcToken = await getNewSsoOidcToken(ssoToken, ssoRegion);\n validateTokenKey(\"accessToken\", newSsoOidcToken.accessToken);\n validateTokenKey(\"expiresIn\", newSsoOidcToken.expiresIn);\n const newTokenExpiration = new Date(Date.now() + newSsoOidcToken.expiresIn * 1e3);\n try {\n await writeSSOTokenToFile(ssoSessionName, {\n ...ssoToken,\n accessToken: newSsoOidcToken.accessToken,\n expiresAt: newTokenExpiration.toISOString(),\n refreshToken: newSsoOidcToken.refreshToken\n });\n } catch (error) {\n }\n return {\n token: newSsoOidcToken.accessToken,\n expiration: newTokenExpiration\n };\n } catch (error) {\n validateTokenExpiry(existingToken);\n return existingToken;\n }\n}, \"fromSso\");\n\n// src/fromStatic.ts\n\nvar fromStatic = /* @__PURE__ */ __name(({ token, logger }) => async () => {\n logger == null ? void 0 : logger.debug(\"@aws-sdk/token-providers - fromStatic\");\n if (!token || !token.token) {\n throw new import_property_provider.TokenProviderError(`Please pass a valid token to fromStatic`, false);\n }\n return token;\n}, \"fromStatic\");\n\n// src/nodeProvider.ts\n\nvar nodeProvider = /* @__PURE__ */ __name((init = {}) => (0, import_property_provider.memoize)(\n (0, import_property_provider.chain)(fromSso(init), async () => {\n throw new import_property_provider.TokenProviderError(\"Could not load token from any providers\", false);\n }),\n (token) => token.expiration !== void 0 && token.expiration.getTime() - Date.now() < 3e5,\n (token) => token.expiration !== void 0\n), \"nodeProvider\");\n// Annotate the CommonJS export names for ESM import in node:\n\n0 && (module.exports = {\n fromSso,\n fromStatic,\n nodeProvider\n});\n\n","\"use strict\";\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/index.ts\nvar src_exports = {};\n__export(src_exports, {\n ConditionObject: () => import_util_endpoints.ConditionObject,\n DeprecatedObject: () => import_util_endpoints.DeprecatedObject,\n EndpointError: () => import_util_endpoints.EndpointError,\n EndpointObject: () => import_util_endpoints.EndpointObject,\n EndpointObjectHeaders: () => import_util_endpoints.EndpointObjectHeaders,\n EndpointObjectProperties: () => import_util_endpoints.EndpointObjectProperties,\n EndpointParams: () => import_util_endpoints.EndpointParams,\n EndpointResolverOptions: () => import_util_endpoints.EndpointResolverOptions,\n EndpointRuleObject: () => import_util_endpoints.EndpointRuleObject,\n ErrorRuleObject: () => import_util_endpoints.ErrorRuleObject,\n EvaluateOptions: () => import_util_endpoints.EvaluateOptions,\n Expression: () => import_util_endpoints.Expression,\n FunctionArgv: () => import_util_endpoints.FunctionArgv,\n FunctionObject: () => import_util_endpoints.FunctionObject,\n FunctionReturn: () => import_util_endpoints.FunctionReturn,\n ParameterObject: () => import_util_endpoints.ParameterObject,\n ReferenceObject: () => import_util_endpoints.ReferenceObject,\n ReferenceRecord: () => import_util_endpoints.ReferenceRecord,\n RuleSetObject: () => import_util_endpoints.RuleSetObject,\n RuleSetRules: () => import_util_endpoints.RuleSetRules,\n TreeRuleObject: () => import_util_endpoints.TreeRuleObject,\n awsEndpointFunctions: () => awsEndpointFunctions,\n getUserAgentPrefix: () => getUserAgentPrefix,\n isIpAddress: () => import_util_endpoints.isIpAddress,\n partition: () => partition,\n resolveEndpoint: () => import_util_endpoints.resolveEndpoint,\n setPartitionInfo: () => setPartitionInfo,\n useDefaultPartitionInfo: () => useDefaultPartitionInfo\n});\nmodule.exports = __toCommonJS(src_exports);\n\n// src/aws.ts\n\n\n// src/lib/aws/isVirtualHostableS3Bucket.ts\n\n\n// src/lib/isIpAddress.ts\nvar import_util_endpoints = require(\"@smithy/util-endpoints\");\n\n// src/lib/aws/isVirtualHostableS3Bucket.ts\nvar isVirtualHostableS3Bucket = /* @__PURE__ */ __name((value, allowSubDomains = false) => {\n if (allowSubDomains) {\n for (const label of value.split(\".\")) {\n if (!isVirtualHostableS3Bucket(label)) {\n return false;\n }\n }\n return true;\n }\n if (!(0, import_util_endpoints.isValidHostLabel)(value)) {\n return false;\n }\n if (value.length < 3 || value.length > 63) {\n return false;\n }\n if (value !== value.toLowerCase()) {\n return false;\n }\n if ((0, import_util_endpoints.isIpAddress)(value)) {\n return false;\n }\n return true;\n}, \"isVirtualHostableS3Bucket\");\n\n// src/lib/aws/parseArn.ts\nvar ARN_DELIMITER = \":\";\nvar RESOURCE_DELIMITER = \"/\";\nvar parseArn = /* @__PURE__ */ __name((value) => {\n const segments = value.split(ARN_DELIMITER);\n if (segments.length < 6)\n return null;\n const [arn, partition2, service, region, accountId, ...resourcePath] = segments;\n if (arn !== \"arn\" || partition2 === \"\" || service === \"\" || resourcePath.join(ARN_DELIMITER) === \"\")\n return null;\n const resourceId = resourcePath.map((resource) => resource.split(RESOURCE_DELIMITER)).flat();\n return {\n partition: partition2,\n service,\n region,\n accountId,\n resourceId\n };\n}, \"parseArn\");\n\n// src/lib/aws/partitions.json\nvar partitions_default = {\n partitions: [{\n id: \"aws\",\n outputs: {\n dnsSuffix: \"amazonaws.com\",\n dualStackDnsSuffix: \"api.aws\",\n implicitGlobalRegion: \"us-east-1\",\n name: \"aws\",\n supportsDualStack: true,\n supportsFIPS: true\n },\n regionRegex: \"^(us|eu|ap|sa|ca|me|af|il|mx)\\\\-\\\\w+\\\\-\\\\d+$\",\n regions: {\n \"af-south-1\": {\n description: \"Africa (Cape Town)\"\n },\n \"ap-east-1\": {\n description: \"Asia Pacific (Hong Kong)\"\n },\n \"ap-northeast-1\": {\n description: \"Asia Pacific (Tokyo)\"\n },\n \"ap-northeast-2\": {\n description: \"Asia Pacific (Seoul)\"\n },\n \"ap-northeast-3\": {\n description: \"Asia Pacific (Osaka)\"\n },\n \"ap-south-1\": {\n description: \"Asia Pacific (Mumbai)\"\n },\n \"ap-south-2\": {\n description: \"Asia Pacific (Hyderabad)\"\n },\n \"ap-southeast-1\": {\n description: \"Asia Pacific (Singapore)\"\n },\n \"ap-southeast-2\": {\n description: \"Asia Pacific (Sydney)\"\n },\n \"ap-southeast-3\": {\n description: \"Asia Pacific (Jakarta)\"\n },\n \"ap-southeast-4\": {\n description: \"Asia Pacific (Melbourne)\"\n },\n \"ap-southeast-5\": {\n description: \"Asia Pacific (Malaysia)\"\n },\n \"aws-global\": {\n description: \"AWS Standard global region\"\n },\n \"ca-central-1\": {\n description: \"Canada (Central)\"\n },\n \"ca-west-1\": {\n description: \"Canada West (Calgary)\"\n },\n \"eu-central-1\": {\n description: \"Europe (Frankfurt)\"\n },\n \"eu-central-2\": {\n description: \"Europe (Zurich)\"\n },\n \"eu-north-1\": {\n description: \"Europe (Stockholm)\"\n },\n \"eu-south-1\": {\n description: \"Europe (Milan)\"\n },\n \"eu-south-2\": {\n description: \"Europe (Spain)\"\n },\n \"eu-west-1\": {\n description: \"Europe (Ireland)\"\n },\n \"eu-west-2\": {\n description: \"Europe (London)\"\n },\n \"eu-west-3\": {\n description: \"Europe (Paris)\"\n },\n \"il-central-1\": {\n description: \"Israel (Tel Aviv)\"\n },\n \"me-central-1\": {\n description: \"Middle East (UAE)\"\n },\n \"me-south-1\": {\n description: \"Middle East (Bahrain)\"\n },\n \"sa-east-1\": {\n description: \"South America (Sao Paulo)\"\n },\n \"us-east-1\": {\n description: \"US East (N. Virginia)\"\n },\n \"us-east-2\": {\n description: \"US East (Ohio)\"\n },\n \"us-west-1\": {\n description: \"US West (N. California)\"\n },\n \"us-west-2\": {\n description: \"US West (Oregon)\"\n }\n }\n }, {\n id: \"aws-cn\",\n outputs: {\n dnsSuffix: \"amazonaws.com.cn\",\n dualStackDnsSuffix: \"api.amazonwebservices.com.cn\",\n implicitGlobalRegion: \"cn-northwest-1\",\n name: \"aws-cn\",\n supportsDualStack: true,\n supportsFIPS: true\n },\n regionRegex: \"^cn\\\\-\\\\w+\\\\-\\\\d+$\",\n regions: {\n \"aws-cn-global\": {\n description: \"AWS China global region\"\n },\n \"cn-north-1\": {\n description: \"China (Beijing)\"\n },\n \"cn-northwest-1\": {\n description: \"China (Ningxia)\"\n }\n }\n }, {\n id: \"aws-us-gov\",\n outputs: {\n dnsSuffix: \"amazonaws.com\",\n dualStackDnsSuffix: \"api.aws\",\n implicitGlobalRegion: \"us-gov-west-1\",\n name: \"aws-us-gov\",\n supportsDualStack: true,\n supportsFIPS: true\n },\n regionRegex: \"^us\\\\-gov\\\\-\\\\w+\\\\-\\\\d+$\",\n regions: {\n \"aws-us-gov-global\": {\n description: \"AWS GovCloud (US) global region\"\n },\n \"us-gov-east-1\": {\n description: \"AWS GovCloud (US-East)\"\n },\n \"us-gov-west-1\": {\n description: \"AWS GovCloud (US-West)\"\n }\n }\n }, {\n id: \"aws-iso\",\n outputs: {\n dnsSuffix: \"c2s.ic.gov\",\n dualStackDnsSuffix: \"c2s.ic.gov\",\n implicitGlobalRegion: \"us-iso-east-1\",\n name: \"aws-iso\",\n supportsDualStack: false,\n supportsFIPS: true\n },\n regionRegex: \"^us\\\\-iso\\\\-\\\\w+\\\\-\\\\d+$\",\n regions: {\n \"aws-iso-global\": {\n description: \"AWS ISO (US) global region\"\n },\n \"us-iso-east-1\": {\n description: \"US ISO East\"\n },\n \"us-iso-west-1\": {\n description: \"US ISO WEST\"\n }\n }\n }, {\n id: \"aws-iso-b\",\n outputs: {\n dnsSuffix: \"sc2s.sgov.gov\",\n dualStackDnsSuffix: \"sc2s.sgov.gov\",\n implicitGlobalRegion: \"us-isob-east-1\",\n name: \"aws-iso-b\",\n supportsDualStack: false,\n supportsFIPS: true\n },\n regionRegex: \"^us\\\\-isob\\\\-\\\\w+\\\\-\\\\d+$\",\n regions: {\n \"aws-iso-b-global\": {\n description: \"AWS ISOB (US) global region\"\n },\n \"us-isob-east-1\": {\n description: \"US ISOB East (Ohio)\"\n }\n }\n }, {\n id: \"aws-iso-e\",\n outputs: {\n dnsSuffix: \"cloud.adc-e.uk\",\n dualStackDnsSuffix: \"cloud.adc-e.uk\",\n implicitGlobalRegion: \"eu-isoe-west-1\",\n name: \"aws-iso-e\",\n supportsDualStack: false,\n supportsFIPS: true\n },\n regionRegex: \"^eu\\\\-isoe\\\\-\\\\w+\\\\-\\\\d+$\",\n regions: {\n \"eu-isoe-west-1\": {\n description: \"EU ISOE West\"\n }\n }\n }, {\n id: \"aws-iso-f\",\n outputs: {\n dnsSuffix: \"csp.hci.ic.gov\",\n dualStackDnsSuffix: \"csp.hci.ic.gov\",\n implicitGlobalRegion: \"us-isof-south-1\",\n name: \"aws-iso-f\",\n supportsDualStack: false,\n supportsFIPS: true\n },\n regionRegex: \"^us\\\\-isof\\\\-\\\\w+\\\\-\\\\d+$\",\n regions: {}\n }],\n version: \"1.1\"\n};\n\n// src/lib/aws/partition.ts\nvar selectedPartitionsInfo = partitions_default;\nvar selectedUserAgentPrefix = \"\";\nvar partition = /* @__PURE__ */ __name((value) => {\n const { partitions } = selectedPartitionsInfo;\n for (const partition2 of partitions) {\n const { regions, outputs } = partition2;\n for (const [region, regionData] of Object.entries(regions)) {\n if (region === value) {\n return {\n ...outputs,\n ...regionData\n };\n }\n }\n }\n for (const partition2 of partitions) {\n const { regionRegex, outputs } = partition2;\n if (new RegExp(regionRegex).test(value)) {\n return {\n ...outputs\n };\n }\n }\n const DEFAULT_PARTITION = partitions.find((partition2) => partition2.id === \"aws\");\n if (!DEFAULT_PARTITION) {\n throw new Error(\n \"Provided region was not found in the partition array or regex, and default partition with id 'aws' doesn't exist.\"\n );\n }\n return {\n ...DEFAULT_PARTITION.outputs\n };\n}, \"partition\");\nvar setPartitionInfo = /* @__PURE__ */ __name((partitionsInfo, userAgentPrefix = \"\") => {\n selectedPartitionsInfo = partitionsInfo;\n selectedUserAgentPrefix = userAgentPrefix;\n}, \"setPartitionInfo\");\nvar useDefaultPartitionInfo = /* @__PURE__ */ __name(() => {\n setPartitionInfo(partitions_default, \"\");\n}, \"useDefaultPartitionInfo\");\nvar getUserAgentPrefix = /* @__PURE__ */ __name(() => selectedUserAgentPrefix, \"getUserAgentPrefix\");\n\n// src/aws.ts\nvar awsEndpointFunctions = {\n isVirtualHostableS3Bucket,\n parseArn,\n partition\n};\nimport_util_endpoints.customEndpointFunctions.aws = awsEndpointFunctions;\n\n// src/resolveEndpoint.ts\n\n\n// src/types/EndpointError.ts\n\n\n// src/types/EndpointRuleObject.ts\n\n\n// src/types/ErrorRuleObject.ts\n\n\n// src/types/RuleSetObject.ts\n\n\n// src/types/TreeRuleObject.ts\n\n\n// src/types/shared.ts\n\n// Annotate the CommonJS export names for ESM import in node:\n\n0 && (module.exports = {\n awsEndpointFunctions,\n partition,\n setPartitionInfo,\n useDefaultPartitionInfo,\n getUserAgentPrefix,\n isIpAddress,\n resolveEndpoint,\n EndpointError\n});\n\n","\"use strict\";\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/index.ts\nvar src_exports = {};\n__export(src_exports, {\n NODE_APP_ID_CONFIG_OPTIONS: () => NODE_APP_ID_CONFIG_OPTIONS,\n UA_APP_ID_ENV_NAME: () => UA_APP_ID_ENV_NAME,\n UA_APP_ID_INI_NAME: () => UA_APP_ID_INI_NAME,\n createDefaultUserAgentProvider: () => createDefaultUserAgentProvider,\n crtAvailability: () => crtAvailability,\n defaultUserAgent: () => defaultUserAgent\n});\nmodule.exports = __toCommonJS(src_exports);\n\n// src/defaultUserAgent.ts\nvar import_os = require(\"os\");\nvar import_process = require(\"process\");\n\n// src/crt-availability.ts\nvar crtAvailability = {\n isCrtAvailable: false\n};\n\n// src/is-crt-available.ts\nvar isCrtAvailable = /* @__PURE__ */ __name(() => {\n if (crtAvailability.isCrtAvailable) {\n return [\"md/crt-avail\"];\n }\n return null;\n}, \"isCrtAvailable\");\n\n// src/defaultUserAgent.ts\nvar createDefaultUserAgentProvider = /* @__PURE__ */ __name(({ serviceId, clientVersion }) => {\n return async (config) => {\n var _a;\n const sections = [\n // sdk-metadata\n [\"aws-sdk-js\", clientVersion],\n // ua-metadata\n [\"ua\", \"2.1\"],\n // os-metadata\n [`os/${(0, import_os.platform)()}`, (0, import_os.release)()],\n // language-metadata\n // ECMAScript edition doesn't matter in JS, so no version needed.\n [\"lang/js\"],\n [\"md/nodejs\", `${import_process.versions.node}`]\n ];\n const crtAvailable = isCrtAvailable();\n if (crtAvailable) {\n sections.push(crtAvailable);\n }\n if (serviceId) {\n sections.push([`api/${serviceId}`, clientVersion]);\n }\n if (import_process.env.AWS_EXECUTION_ENV) {\n sections.push([`exec-env/${import_process.env.AWS_EXECUTION_ENV}`]);\n }\n const appId = await ((_a = config == null ? void 0 : config.userAgentAppId) == null ? void 0 : _a.call(config));\n const resolvedUserAgent = appId ? [...sections, [`app/${appId}`]] : [...sections];\n return resolvedUserAgent;\n };\n}, \"createDefaultUserAgentProvider\");\nvar defaultUserAgent = createDefaultUserAgentProvider;\n\n// src/nodeAppIdConfigOptions.ts\nvar import_middleware_user_agent = require(\"@aws-sdk/middleware-user-agent\");\nvar UA_APP_ID_ENV_NAME = \"AWS_SDK_UA_APP_ID\";\nvar UA_APP_ID_INI_NAME = \"sdk-ua-app-id\";\nvar NODE_APP_ID_CONFIG_OPTIONS = {\n environmentVariableSelector: (env2) => env2[UA_APP_ID_ENV_NAME],\n configFileSelector: (profile) => profile[UA_APP_ID_INI_NAME],\n default: import_middleware_user_agent.DEFAULT_UA_APP_ID\n};\n// Annotate the CommonJS export names for ESM import in node:\n\n0 && (module.exports = {\n crtAvailability,\n createDefaultUserAgentProvider,\n defaultUserAgent,\n UA_APP_ID_ENV_NAME,\n UA_APP_ID_INI_NAME,\n NODE_APP_ID_CONFIG_OPTIONS\n});\n\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Database = void 0;\nconst entity_1 = require(\"./entity\");\nconst relationship_1 = require(\"./relationship\");\nclass Database {\n static entitiesOnly(entities) {\n return new Database(entities, relationship_1.NO_RELATIONSHIPS);\n }\n constructor(entities, relationships) {\n this.idCtr = 0;\n this.schema = {\n ...entities,\n ...relationships({\n relationship: (fromKey, toKey) => (0, relationship_1.relationshipCollection)((id) => this.get(fromKey, id), (id) => this.get(toKey, id)),\n }),\n };\n }\n id() {\n return `${this.idCtr++}`;\n }\n /**\n * Allocate an ID and store\n */\n allocate(key, entity) {\n return this.store(key, this.e(entity));\n }\n /**\n * Store with a preallocated ID\n */\n store(key, entity) {\n const coll = this.schema[key];\n coll.add(entity);\n return entity;\n }\n /**\n * Get an entity by key\n */\n get(key, id) {\n const coll = this.schema[key];\n const ret = coll.entities.get(typeof id === 'string' ? id : id.$ref);\n if (!ret) {\n throw new Error(`No such ${String(key)}: ${id}`);\n }\n return ret;\n }\n /**\n * All entities of a given type\n */\n all(key) {\n const coll = this.schema[key];\n return Array.from(coll.entities.values());\n }\n /**\n * Lookup an entity by index\n */\n lookup(key, index, lookup, value) {\n const coll = this.schema[key];\n const ids = coll.indexes[index].lookups[lookup](value);\n return addOnlyMethod(ids.map((id) => coll.entities.get(id)), `${String(key)} with ${String(index)} ${String(lookup)} ${JSON.stringify(value)}`);\n }\n /**\n * Allocate an ID and store if the entity does not yet exist\n */\n findOrAllocate(key, index, lookup, entity) {\n const res = this.lookup(key, index, lookup, entity[index]);\n if (res.length) {\n return res.only();\n }\n return this.allocate(key, entity);\n }\n link(key, from, to, attributes) {\n const col = this.schema[key];\n col.add(from, to, attributes);\n }\n /**\n * Follow a link\n */\n follow(key, from) {\n var _a;\n const col = this.schema[key];\n const toLinks = (_a = col.forward.get(from.$id)) !== null && _a !== void 0 ? _a : [];\n const ret = toLinks.map((i) => ({ entity: col.toColl(i.$id), ...removeId(i) }));\n return addOnlyMethod(ret, `${String(key)} from ${from}`);\n }\n /**\n * Follow incoming links backwards\n */\n incoming(key, to) {\n var _a;\n const col = this.schema[key];\n const fromIds = (_a = col.backward.get(to.$id)) !== null && _a !== void 0 ? _a : [];\n const ret = fromIds.map((i) => ({ entity: col.fromColl(i.$id), ...removeId(i) }));\n return addOnlyMethod(ret, `${String(key)} to ${to}`);\n }\n e(entity) {\n return {\n $id: this.id(),\n ...entity,\n };\n }\n /**\n * Turn the current database collection into something that can be stored.\n */\n save() {\n return {\n idCtr: this.idCtr,\n schema: dehydrate(this.schema),\n };\n function dehydrate(x) {\n if ((0, entity_1.isEntityCollection)(x)) {\n return x.dehydrate();\n }\n if ((0, relationship_1.isRelationshipCollection)(x)) {\n return x.dehydrate();\n }\n if (Array.isArray(x)) {\n return x.map(dehydrate);\n }\n if (!!x && typeof x === 'object') {\n return Object.fromEntries(Object.entries(x).map(([k, v]) => [k, dehydrate(v)]));\n }\n return x;\n }\n }\n load(db) {\n this.idCtr = db.idCtr;\n hydrate(this.schema, db.schema);\n function hydrate(proto, x) {\n if ((0, entity_1.isEntityCollection)(proto)) {\n proto.hydrateFrom(x);\n }\n if ((0, relationship_1.isRelationshipCollection)(proto)) {\n proto.hydrateFrom(x);\n }\n if (Array.isArray(x)) {\n x.forEach(hydrate);\n }\n if (!!proto && typeof proto === 'object' && !!x && typeof x === 'object') {\n for (const [k, v] of Object.entries(proto)) {\n hydrate(v, x[k]);\n }\n }\n }\n }\n}\nexports.Database = Database;\nfunction removeId(x) {\n const ret = { ...x };\n delete ret.$id;\n return ret;\n}\nfunction addOnlyMethod(xs, description) {\n return Object.defineProperties(xs, {\n only: {\n enumerable: false,\n value: () => {\n if (xs.length !== 1) {\n throw new Error(`Expected exactly 1 ${description}, found ${xs.length}`);\n }\n return xs[0];\n },\n },\n });\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YWJhc2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvZGF0YWJhc2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEscUNBQXVHO0FBQ3ZHLGlEQU13QjtBQVN4QixNQUFhLFFBQVE7SUFDWixNQUFNLENBQUMsWUFBWSxDQUFvQixRQUFZO1FBQ3hELE9BQU8sSUFBSSxRQUFRLENBQUMsUUFBUSxFQUFFLCtCQUFnQixDQUFDLENBQUM7SUFDbEQsQ0FBQztJQUtELFlBQVksUUFBWSxFQUFFLGFBQWtEO1FBRnBFLFVBQUssR0FBRyxDQUFDLENBQUM7UUFHaEIsSUFBSSxDQUFDLE1BQU0sR0FBRztZQUNaLEdBQUcsUUFBUTtZQUNYLEdBQUcsYUFBYSxDQUFDO2dCQUNmLFlBQVksRUFBRSxDQUFDLE9BQU8sRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUMvQixJQUFBLHFDQUFzQixFQUNwQixDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLEVBQzdCLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FDNUI7YUFDSixDQUFDO1NBQ0gsQ0FBQztJQUNKLENBQUM7SUFFTSxFQUFFO1FBQ1AsT0FBTyxHQUFHLElBQUksQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDO0lBQzNCLENBQUM7SUFFRDs7T0FFRztJQUNJLFFBQVEsQ0FBcUIsR0FBTSxFQUFFLE1BQWdDO1FBQzFFLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ3pDLENBQUM7SUFFRDs7T0FFRztJQUNJLEtBQUssQ0FBcUIsR0FBTSxFQUFFLE1BQXlCO1FBQ2hFLE1BQU0sSUFBSSxHQUEwQixJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBUSxDQUFD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bnQiOlsiaW1wb3J0IHsgRW50aXR5LCBFbnRpdHlDb2xsZWN0aW9uLCBFbnRpdHlJbmRleCwgaXNFbnRpdHlDb2xsZWN0aW9uLCBQbGFpbiwgUmVmZXJlbmNlIH0gZnJvbSAnLi9lbnRpdHknO1xuaW1wb3J0IHtcbiAgaXNSZWxhdGlvbnNoaXBDb2xsZWN0aW9uLFxuICBOT19SRUxBVElPTlNISVBTLFxuICBSZWxhdGlvbnNoaXAsXG4gIHJlbGF0aW9uc2hpcENvbGxlY3Rpb24sXG4gIFJlbGF0aW9uc2hpcENvbGxlY3Rpb24sXG59IGZyb20gJy4vcmVsYXRpb25zaGlwJztcblxuZXhwb3J0IGludGVyZmFjZSBSZWxhdGlvbnNoaXBzQnVpbGRlcjxFUyBleHRlbmRzIG9iamVjdD4ge1xuICByZWxhdGlvbnNoaXA8UiBleHRlbmRzIFJlbGF0aW9uc2hpcDxhbnksIGFueSwgYW55Pj4oXG4gICAgZnJvbUtleTogS2V5c0ZvcjxFUywgRW50aXR5Q29sbGVjdGlvbjxSWydmcm9tJ10sIGFueT4+LFxuICAgIHRvS2V5OiBLZXlzRm9yPEVTLCBFbnRpdHlDb2xsZWN0aW9uPFJbJ3RvJ10sIGFueT4+LFxuICApOiBSZWxhdGlvbnNoaXBDb2xsZWN0aW9uPFI+O1xufVxuXG5leHBvcnQgY2xhc3MgRGF0YWJhc2U8RVMgZXh0ZW5kcyBvYmplY3QsIFJTIGV4dGVuZHMgb2JqZWN0PiB7XG4gIHB1YmxpYyBzdGF0aWMgZW50aXRpZXNPbmx5PEVTIGV4dGVuZHMgb2JqZWN0PihlbnRpdGllczogRVMpOiBEYXRhYmFzZTxFUywge30+IHtcbiAgICByZXR1cm4gbmV3IERhdGFiYXNlKGVudGl0aWVzLCBOT19SRUxBVElPTlNISVBTKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVhZG9ubHkgc2NoZW1hOiBFUyAmIFJTO1xuICBwcml2YXRlIGlkQ3RyID0gMDtcblxuICBjb25zdHJ1Y3RvcihlbnRpdGllczogRVMsIHJlbGF0aW9uc2hpcHM6ICh4OiBSZWxhdGlvbnNoaXBzQnVpbGRlcjxFUz4pID0+IFJTKSB7XG4gICAgdGhpcy5zY2hlbWEgPSB7XG4gICAgICAuLi5lbnRpdGllcyxcbiAgICAgIC4uLnJlbGF0aW9uc2hpcHMoe1xuICAgICAgICByZWxhdGlvbnNoaXA6IChmcm9tS2V5LCB0b0tleSkgPT5cbiAgICAgICAgICByZWxhdGlvbnNoaXBDb2xsZWN0aW9uKFxuICAgICAgICAgICAgKGlkKSA9PiB0aGlzLmdldChmcm9tS2V5LCBpZCksXG4gICAgICAgICAgICAoaWQpID0+IHRoaXMuZ2V0KHRvS2V5LCBpZCksXG4gICAgICAgICAgKSxcbiAgICAgIH0pLFxuICAgIH07XG4gIH1cblxuICBwdWJsaWMgaWQoKSB7XG4gICAgcmV0dXJuIGAke3RoaXMuaWRDdHIrK31gO1xuICB9XG5cbiAgLyoqXG4gICAqIEFsbG9jYXRlIGFuIElEIGFuZCBzdG9yZVxuICAgKi9cbiAgcHVibGljIGFsbG9jYXRlPEsgZXh0ZW5kcyBrZXlvZiBFUz4oa2V5OiBLLCBlbnRpdHk6IFBsYWluPEVudGl0eVR5cGU8RVNbS10+Pik6IEVudGl0eVR5cGU8RVNbS10+IHtcbiAgICByZXR1cm4gdGhpcy5zdG9yZShrZXksIHRoaXMuZShlbnRpdHkpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTdG9yZSB3aXRoIGEgcHJlYWxsb2NhdGVkIElEXG4gICAqL1xuICBwdWJsaWMgc3RvcmU8SyBleHRlbmRzIGtleW9mIEVTPihrZXk6IEssIGVudGl0eTogRW50aXR5VHlwZTxFU1tLXT4pOiBFbnRpdHlUeXBlPEVTW0tdPiB7XG4gICAgY29uc3QgY29sbDogRW50aXR5Q29sbGVjdGlvbjxhbnk+ID0gdGhpcy5zY2hlbWFba2V5XSBhcyBhbnk7XG4gICAgY29sbC5hZGQoZW50aXR5KTtcbiAgICByZXR1cm4gZW50aXR5IGFzIGFueTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgYW4gZW50aXR5IGJ5IGtleVxuICAgKi9cbiAgcHVibGljIGdldDxLIGV4dGVuZHMga2V5b2YgRVM+KGtleTogSywgaWQ6IHN0cmluZyB8IFJlZmVyZW5jZTxFbnRpdHlUeXBlPEVTW0tdPj4pOiBFbnRpdHlUeXBlPEVTW0tdPiB7XG4gICAgY29uc3QgY29sbDogRW50aXR5Q29sbGVjdGlvbjxhbnk+ID0gdGhpcy5zY2hlbWFba2V5XSBhcyBhbnk7XG4gICAgY29uc3QgcmV0ID0gY29sbC5lbnRpdGllcy5nZXQodHlwZW9mIGlkID09PSAnc3RyaW5nJyA/IGlkIDogaWQuJHJlZik7XG4gICAgaWYgKCFyZXQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgTm8gc3VjaCAke1N0cmluZyhrZXkpfTogJHtpZH1gKTtcbiAgICB9XG4gICAgcmV0dXJuIHJldDtcbiAgfVxuXG4gIC8qKlxuICAgKiBBbGwgZW50aXRpZXMgb2YgYSBnaXZlbiB0eXBlXG4gICAqL1xuICBwdWJsaWMgYWxsPEsgZXh0ZW5kcyBrZXlvZiBFUz4oa2V5OiBLKTogQXJyYXk8RW50aXR5VHlwZTxFU1tLXT4+IHtcbiAgICBjb25zdCBjb2xsOiBFbnRpdHlDb2xsZWN0aW9uPGFueT4gPSB0aGlzLnNjaGVtYVtrZXldIGFzIGFueTtcbiAgICByZXR1cm4gQXJyYXkuZnJvbShjb2xsLmVudGl0aWVzLnZhbHVlcygpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBMb29rdXAgYW4gZW50aXR5IGJ5IGluZGV4XG4gICAqL1xuICBwdWJsaWMgbG9va3VwPEsgZXh0ZW5kcyBrZXlvZiBFUywgSSBleHRlbmRzIEluZGV4TmFtZXNPZjxFU1tLXT4+KFxuICAgIGtleTogSyxcbiAgICBpbmRleDogSSxcbiAgICBsb29rdXA6IEluZGV4T2Y8RVNbS10sIEk+Wydsb29rdXBzJ10sXG4gICAgdmFsdWU6IEluZGV4T2Y8RVNbS10sIEk+Wyd2YWx1ZVR5cGUnXSxcbiAgKTogUmljaFJlYWRvbmx5QXJyYXk8RW50aXR5VHlwZTxFU1tLXT4+IHtcbiAgICBjb25zdCBjb2xsOiBFbnRpdHlDb2xsZWN0aW9uPGFueT4gPSB0aGlzLnNjaGVtYVtrZXldIGFzIGFueTtcbiAgICBjb25zdCBpZHMgPSAoY29sbC5pbmRleGVzIGFzIGFueSlbaW5kZXhdLmxvb2t1cHNbbG9va3VwXSh2YWx1ZSk7XG4gICAgcmV0dXJuIGFkZE9ubHlNZXRob2QoXG4gICAgICBpZHMubWFwKChpZDogc3RyaW5nKSA9PiBjb2xsLmVudGl0aWVzLmdldChpZCkpLFxuICAgICAgYCR7U3RyaW5nKGtleSl9IHdpdGggJHtTdHJpbmcoaW5kZXgpfSAke1N0cmluZyhsb29rdXApfSAke0pTT04uc3RyaW5naWZ5KHZhbHVlKX1gLFxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogQWxsb2NhdGUgYW4gSUQgYW5kIHN0b3JlIGlmIHRoZSBlbnRpdHkgZG9lcyBub3QgeWV0IGV4aXN0XG4gICAqL1xuICBwdWJsaWMgZmluZE9yQWxsb2NhdGU8SyBleHRlbmRzIGtleW9mIEVTLCBJIGV4dGVuZHMga2V5b2YgUGxhaW48RW50aXR5VHlwZTxFU1tLXT4+ICYgSW5kZXhOYW1lc09mPEVTW0tdPj4oXG4gICAga2V5OiBLLFxuICAgIGluZGV4OiBJLFxuICAgIGxvb2t1cDogSW5kZXhPZjxFU1tLXSwgST5bJ2xvb2t1cHMnXSxcbiAgICBlbnRpdHk6IFBsYWluPEVudGl0eVR5cGU8RVNbS10+PixcbiAgKTogRW50aXR5VHlwZTxFU1tLXT4ge1xuICAgIGNvbnN0IHJlcyA9IHRoaXMubG9va3VwKGtleSwgaW5kZXgsIGxvb2t1cCwgZW50aXR5W2luZGV4XSk7XG4gICAgaWYgKHJlcy5sZW5ndGgpIHtcbiAgICAgIHJldHVybiByZXMub25seSgpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5hbGxvY2F0ZShrZXksIGVudGl0eSk7XG4gIH1cblxuICAvKipcbiAgICogUmVjb3JkIGEgcmVsYXRpb25zaGlwIGJldHdlZW4gdHdvIGVudGl0aWVzXG4gICAqXG4gICAqIE92ZXJsb2FkIHRvIGFjY291bnQgZm9yIHdoZXRoZXIgd2UgaGF2ZSBhdHRyaWJ1dGVzIG9yIG5vdC5cbiAgICovXG4gIHB1YmxpYyBsaW5rPEsgZXh0ZW5kcyBSZWxXQXR0cnM8UlM+PihcbiAgICBrZXk6IEssXG4gICAgZnJvbTogUmVsVHlwZTxSU1tLXT5bJ2Zyb20nXSxcbiAgICB0bzogUmVsVHlwZTxSU1tLXT5bJ3RvJ10sXG4gICAgYXR0cmlidXRlczogUmVsVHlwZTxSU1tLXT5bJ2F0dHInXSxcbiAgKTogdm9pZDtcbiAgcHVibGljIGxpbms8SyBleHRlbmRzIFJlbFdvQXR0cnM8UlM+PihrZXk6IEssIGZyb206IFJlbFR5cGU8UlNbS10+Wydmcm9tJ10sIHRvOiBSZWxUeXBlPFJTW0tdPlsndG8nXSk6IHZvaWQ7XG4gIHB1YmxpYyBsaW5rPEsgZXh0ZW5kcyBrZXlvZiBSUz4oXG4gICAga2V5OiBLLFxuICAgIGZyb206IFJlbFR5cGU8UlNbS10+Wydmcm9tJ10sXG4gICAgdG86IFJlbFR5cGU8UlNbS10+Wyd0byddLFxuICAgIGF0dHJpYnV0ZXM/OiBSZWxUeXBlPFJTW0tdPlsnYXR0ciddLFxuICApIHtcbiAgICBjb25zdCBjb2w6IFJlbGF0aW9uc2hpcENvbGxlY3Rpb248YW55PiA9IHRoaXMuc2NoZW1hW2tleV0gYXMgYW55O1xuICAgIGNvbC5hZGQoZnJvbSwgdG8sIGF0dHJpYnV0ZXMpO1xuICB9XG5cbiAgLyoqXG4gICAqIEZvbGxvdyBhIGxpbmtcbiAgICovXG4gIHB1YmxpYyBmb2xsb3c8SyBleHRlbmRzIGtleW9mIFJTPihcbiAgICBrZXk6IEssXG4gICAgZnJvbTogUmVsVHlwZTxSU1tLXT5bJ2Zyb20nXSxcbiAgKTogUmljaFJlYWRvbmx5QXJyYXk8TGluazxSZWxUeXBlPFJTW0tdPlsndG8nXSwgUmVsVHlwZTxSU1tLXT5bJ2F0dHInXT4+IHtcbiAgICBjb25zdCBjb2w6IFJlbGF0aW9uc2hpcENvbGxlY3Rpb248YW55PiA9IHRoaXMuc2NoZW1hW2tleV0gYXMgYW55O1xuICAgIGNvbnN0IHRvTGlua3MgPSBjb2wuZm9yd2FyZC5nZXQoZnJvbS4kaWQpID8/IFtdO1xuICAgIGNvbnN0IHJldCA9IHRvTGlua3MubWFwKChpKSA9PiAoeyBlbnRpdHk6IGNvbC50b0NvbGwoaS4kaWQpLCAuLi5yZW1vdmVJZChpKSB9IGFzIGFueSkpO1xuXG4gICAgcmV0dXJuIGFkZE9ubHlNZXRob2QocmV0LCBgJHtTdHJpbmcoa2V5KX0gZnJvbSAke2Zyb219YCk7XG4gIH1cblxuICAvKipcbiAgICogRm9sbG93IGluY29taW5nIGxpbmtzIGJhY2t3YXJkc1xuICAgKi9cbiAgcHVibGljIGluY29taW5nPEsgZXh0ZW5kcyBrZXlvZiBSUz4oXG4gICAga2V5OiBLLFxuICAgIHRvOiBSZWxUeXBlPFJTW0tdPlsndG8nXSxcbiAgKTogUmljaFJlYWRvbmx5QXJyYXk8TGluazxSZWxUeXBlPFJTW0tdPlsnZnJvbSddLCBSZWxUeXBlPFJTW0tdPlsnYXR0ciddPj4ge1xuICAgIGNvbnN0IGNvbDogUmVsYXRpb25zaGlwQ29sbGVjdGlvbjxhbnk+ID0gdGhpcy5zY2hlbWFba2V5XSBhcyBhbnk7XG4gICAgY29uc3QgZnJvbUlkcyA9IGNvbC5iYWNrd2FyZC5nZXQodG8uJGlkKSA/PyBbXTtcbiAgICBjb25zdCByZXQgPSBmcm9tSWRzLm1hcCgoaSkgPT4gKHsgZW50aXR5OiBjb2wuZnJvbUNvbGwoaS4kaWQpLCAuLi5yZW1vdmVJZChpKSB9IGFzIGFueSkpO1xuXG4gICAgcmV0dXJuIGFkZE9ubHlNZXRob2QocmV0LCBgJHtTdHJpbmcoa2V5KX0gdG8gJHt0b31gKTtcbiAgfVxuXG4gIHB1YmxpYyBlPEUgZXh0ZW5kcyBFbnRpdHk+KGVudGl0eTogUGxhaW48RT4pOiBFIHtcbiAgICByZXR1cm4ge1xuICAgICAgJGlkOiB0aGlzLmlkKCksXG4gICAgICAuLi5lbnRpdHksXG4gICAgfSBhcyBhbnk7XG4gIH1cblxuICAvKipcbiAgICogVHVybiB0aGUgY3VycmVudCBkYXRhYmFzZSBjb2xsZWN0aW9uIGludG8gc29tZXRoaW5nIHRoYXQgY2FuIGJlIHN0b3JlZC5cbiAgICovXG4gIHB1YmxpYyBzYXZlKCk6IERlaHlkcmF0ZWREYXRhYmFzZSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGlkQ3RyOiB0aGlzLmlkQ3RyLFxuICAgICAgc2NoZW1hOiBkZWh5ZHJhdGUodGhpcy5zY2hlbWEpLFxuICAgIH07XG5cbiAgICBmdW5jdGlvbiBkZWh5ZHJhdGUoeDogdW5rbm93bik6IGFueSB7XG4gICAgICBpZiAoaXNFbnRpdHlDb2xsZWN0aW9uKHgpKSB7XG4gICAgICAgIHJldHVybiB4LmRlaHlkcmF0ZSgpO1xuICAgICAgfVxuICAgICAgaWYgKGlzUmVsYXRpb25zaGlwQ29sbGVjdGlvbih4KSkge1xuICAgICAgICByZXR1cm4geC5kZWh5ZHJhdGUoKTtcbiAgICAgIH1cbiAgICAgIGlmIChBcnJheS5pc0FycmF5KHgpKSB7XG4gICAgICAgIHJldHVybiB4Lm1hcChkZWh5ZHJhdGUpO1xuICAgICAgfVxuICAgICAgaWYgKCEheCAmJiB0eXBlb2YgeCA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgcmV0dXJuIE9iamVjdC5mcm9tRW50cmllcyhPYmplY3QuZW50cmllcyh4KS5tYXAoKFtrLCB2XSkgPT4gW2ssIGRlaHlkcmF0ZSh2KV0pKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB4O1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBsb2FkKGRiOiBEZWh5ZHJhdGVkRGF0YWJhc2UpIHtcbiAgICB0aGlzLmlkQ3RyID0gZGIuaWRDdHI7XG4gICAgaHlkcmF0ZSh0aGlzLnNjaGVtYSwgZGIuc2NoZW1hKTtcblxuICAgIGZ1bmN0aW9uIGh5ZHJhdGUocHJvdG86IHVua25vd24sIHg6IHVua25vd24pOiB2b2lkIHtcbiAgICAgIGlmIChpc0VudGl0eUNvbGxlY3Rpb24ocHJvdG8pKSB7XG4gICAgICAgIHByb3RvLmh5ZHJhdGVGcm9tKHgpO1xuICAgICAgfVxuICAgICAgaWYgKGlzUmVsYXRpb25zaGlwQ29sbGVjdGlvbihwcm90bykpIHtcbiAgICAgICAgcHJvdG8uaHlkcmF0ZUZyb20oeCk7XG4gICAgICB9XG4gICAgICBpZiAoQXJyYXkuaXNBcnJheSh4KSkge1xuICAgICAgICB4LmZvckVhY2goaHlkcmF0ZSk7XG4gICAgICB9XG4gICAgICBpZiAoISFwcm90byAmJiB0eXBlb2YgcHJvdG8gPT09ICdvYmplY3QnICYmICEheCAmJiB0eXBlb2YgeCA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgZm9yIChjb25zdCBbaywgdl0gb2YgT2JqZWN0LmVudHJpZXMocHJvdG8pKSB7XG4gICAgICAgICAgaHlkcmF0ZSh2LCAoeCBhcyBhbnkpW2tdKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG5pbnRlcmZhY2UgRGVoeWRyYXRlZERhdGFiYXNlIHtcbiAgcmVhZG9ubHkgaWRDdHI6IG51bWJlcjtcbiAgcmVhZG9ubHkgc2NoZW1hOiBhbnk7XG59XG5cbmZ1bmN0aW9uIHJlbW92ZUlkPEEgZXh0ZW5kcyBvYmplY3Q+KHg6IEEpOiBPbWl0PEEsICckaWQnPiB7XG4gIGNvbnN0IHJldCA9IHsgLi4ueCB9O1xuICBkZWxldGUgKHJldCBhcyBhbnkpLiRpZDtcbiAgcmV0dXJuIHJldDtcbn1cblxuZXhwb3J0IHR5cGUgTGluazxFLCBBPiA9IHsgcmVhZG9ubHkgZW50aXR5OiBFIH0gJiBBO1xuXG50eXBlIFJlbFdBdHRyczxSUz4gPSB7IFtLIGluIGtleW9mIFJTXToge30gZXh0ZW5kcyBSZWxUeXBlPFJTW0tdPlsnYXR0ciddID8gbmV2ZXIgOiBLIH1ba2V5b2YgUlNdO1xudHlwZSBSZWxXb0F0dHJzPFJTPiA9IHsgW0sgaW4ga2V5b2YgUlNdOiB7fSBleHRlbmRzIFJlbFR5cGU8UlNbS10+WydhdHRyJ10gPyBLIDogbmV2ZXIgfVtrZXlvZiBSU107XG5cbi8vIE5lY2Vzc2FyeSBiZWNhdXNlIHRoaXMgdHlwZSBtaWdodCBiZSBhIHVuaW9uXG50eXBlIEluZGV4TmFtZXNPZjxBPiA9IEEgZXh0ZW5kcyBFbnRpdHlDb2xsZWN0aW9uPGFueT4gPyBLZXlzT2ZVbmlvbjxBWydpbmRleGVzJ10+IDogbmV2ZXI7XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBwcmV0dGllci9wcmV0dGllclxudHlwZSBJbmRleE9mPEVDLCBJIGV4dGVuZHMgSW5kZXhOYW1lc09mPEVDPj4gPVxuICBFQyBleHRlbmRzIEVudGl0eUNvbGxlY3Rpb248YW55PlxuICA/IEVDWydpbmRleGVzJ11bSV0gZXh0ZW5kcyBFbnRpdHlJbmRleDxhbnksIGluZmVyIEluZGV4VHlwZT5cbiAgICA/IHtcbiAgICAgICAgdmFsdWVUeXBlOiBJbmRleFR5cGU7XG4gICAgICAgIGxvb2t1cHM6IGtleW9mIEVDWydpbmRleGVzJ11bSV1bJ2xvb2t1cHMnXTtcbiAgICAgIH1cbiAgICA6IG5ldmVyXG4gIDogbmV2ZXI7XG5cbnR5cGUgRW50aXR5VHlwZTxBPiA9IEEgZXh0ZW5kcyBFbnRpdHlDb2xsZWN0aW9uPGluZmVyIEI+ID8gQiA6IG5ldmVyO1xuXG50eXBlIFJlbFR5cGU8QT4gPSBBIGV4dGVuZHMgUmVsYXRpb25zaGlwQ29sbGVjdGlvbjxpbmZlciBSPiA/IFIgOiBuZXZlcjtcblxudHlwZSBSZXNvbHZlVW5pb248VD4gPSBUIGV4dGVuZHMgVCA/IFQgOiBuZXZlcjtcblxudHlwZSBLZXlzT2ZVbmlvbjxUPiA9IGtleW9mIFJlc29sdmVVbmlvbjxUPjtcblxuZXhwb3J0IHR5cGUgRW50aXRpZXNPZjxEQj4gPSBEQiBleHRlbmRzIERhdGFiYXNlPGluZmVyIEVTLCBhbnk+ID8geyBbayBpbiBrZXlvZiBFU106IEVudGl0eVR5cGU8RVNba10+IH0gOiB7fTtcblxuZXhwb3J0IGludGVyZmFjZSBSaWNoUmVhZG9ubHlBcnJheTxBPiBleHRlbmRzIFJlYWRvbmx5QXJyYXk8QT4ge1xuICAvKipcbiAgICogUmV0dXJuIHRoZSBmaXJzdCBhbmQgb25seSBlbGVtZW50LCB0aHJvd2luZyBpZiB0aGVyZSBhcmUgIT0gMSBlbGVtZW50c1xuICAgKi9cbiAgb25seSgpOiBBO1xufVxuXG5mdW5jdGlvbiBhZGRPbmx5TWV0aG9kPEE+KHhzOiBBW10sIGRlc2NyaXB0aW9uOiBzdHJpbmcpOiBSaWNoUmVhZG9ubHlBcnJheTxBPiB7XG4gIHJldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydGllcyh4cywge1xuICAgIG9ubHk6IHtcbiAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgdmFsdWU6ICgpID0+IHtcbiAgICAgICAgaWYgKHhzLmxlbmd0aCAhPT0gMSkge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgRXhwZWN0ZWQgZXhhY3RseSAxICR7ZGVzY3JpcHRpb259LCBmb3VuZCAke3hzLmxlbmd0aH1gKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4geHNbMF07XG4gICAgICB9LFxuICAgIH0sXG4gIH0pIGFzIGFueTtcbn1cblxuLyoqXG4gKiBSZXR1cm4gdGhlIGtleXMgb2YgYW4gb2JqZWN0IHRoYXQgbWFwIHRvIGEgcGFydGljdWxhciB0eXBlXG4gKi9cbnR5cGUgS2V5c0ZvcjxPIGV4dGVuZHMgb2JqZWN0LCBUPiA9IHsgW2sgaW4ga2V5b2YgT106IE9ba10gZXh0ZW5kcyBUID8gayA6IG5ldmVyIH1ba2V5b2YgT107XG4iXX0=","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.optionalCmp = exports.numberCmp = exports.stringCmp = exports.ref = exports.isEntityCollection = exports.calculatedIndex = exports.fieldIndex = exports.entityCollection = void 0;\nconst sorted_map_1 = require(\"./sorted-map\");\nfunction entityCollection() {\n const entities = new Map();\n const _indexes = {};\n function add(x) {\n entities.set(x.$id, x);\n for (const index of Object.values(_indexes)) {\n // FIXME: why can't we type this?\n index.add(x);\n }\n }\n return {\n type: 'entities',\n entities,\n indexes: _indexes,\n add,\n dehydrate: () => ({\n type: 'entities',\n entities: Array.from(validatePlainObjects(entities).values()),\n }),\n hydrateFrom: (x) => {\n entities.clear();\n for (const e of Object.values(x.entities)) {\n add(e);\n }\n },\n index(indexes) {\n // This limitation exists purely because I couldn't type it otherwise.\n // Declaring a return type of `EntityCollection` would make a lot\n // of our other type inspection code stop working (the union is hard to pick\n // apart). Since adding indexes in multiple goes is not really a use case,\n // the simpler solution is just to type it as if we replaced all indexes\n // and add a runtime check to make sure the types aren't lying.\n if (Object.keys(_indexes).length > 0) {\n throw new Error('You may only call .index() once on a new collection');\n }\n Object.assign(_indexes, indexes);\n return this;\n },\n };\n}\nexports.entityCollection = entityCollection;\n/**\n * An index that uses the value of an entity's field\n */\nfunction fieldIndex(propName, comparator) {\n return calculatedIndex((x) => x[propName], comparator);\n}\nexports.fieldIndex = fieldIndex;\n/**\n * An index that is calculated based on a function applied to an entity\n */\nfunction calculatedIndex(fn, comparator) {\n const index = [];\n return {\n add: (x) => sorted_map_1.sortedMap.add(index, comparator, fn(x), x.$id),\n lookups: {\n equals: (value) => sorted_map_1.sortedMap.findAll(index, comparator, value),\n },\n index,\n };\n}\nexports.calculatedIndex = calculatedIndex;\nfunction isEntityCollection(x) {\n return typeof x === 'object' && !!x && x.type === 'entities';\n}\nexports.isEntityCollection = isEntityCollection;\nfunction validatePlainObjects(xs) {\n for (const x of xs.values()) {\n if (x.constructor !== Object) {\n throw new Error(`Entities should be plain-text objects, got instance of ${x.constructor}`);\n }\n }\n return xs;\n}\nfunction ref(x) {\n return typeof x === 'string' ? { $ref: x } : { $ref: x.$id };\n}\nexports.ref = ref;\n/**\n * Determines whether two strings are equivalent in the current or specified locale.\n */\nfunction stringCmp(a, b) {\n return a.localeCompare(b);\n}\nexports.stringCmp = stringCmp;\n/**\n * Determines whether two numbers are equivalent.\n */\nfunction numberCmp(a, b) {\n return a - b;\n}\nexports.numberCmp = numberCmp;\n/**\n * Creates a comparator to determine equivalent of two values, using a given comparator, but allows values to be optional.\n *\n * @param frontOrder If `true`, returns so that undefined values are ordered at the front. If `false`, undefined values are ordered at the back.\n */\nfunction optionalCmp(cmp, frontOrder = true) {\n return (a, b) => {\n if (a == undefined && b != undefined) {\n return frontOrder ? -1 : 1;\n }\n if (a != undefined && b == undefined) {\n return frontOrder ? 1 : -1;\n }\n if (a == undefined && b == undefined) {\n return 0;\n }\n return cmp(a, b);\n };\n}\nexports.optionalCmp = optionalCmp;\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW50aXR5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2VudGl0eS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSw2Q0FBeUQ7QUE0RXpELFNBQWdCLGdCQUFnQjtJQUM5QixNQUFNLFFBQVEsR0FBRyxJQUFJLEdBQUcsRUFBYSxDQUFDO0lBQ3RDLE1BQU0sUUFBUSxHQUFHLEVBQUUsQ0FBQztJQUVwQixTQUFTLEdBQUcsQ0FBQyxDQUFJO1FBQ2YsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ3ZCLEtBQUssTUFBTSxLQUFLLElBQUksTUFBTSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsRUFBRTtZQUMzQyxpQ0FBaUM7WUFDaEMsS0FBYSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUN2QjtJQUNILENBQUM7SUFFRCxPQUFPO1FBQ0wsSUFBSSxFQUFFLFVBQVU7UUFDaEIsUUFBUTtRQUNSLE9BQU8sRUFBRSxRQUFlO1FBQ3hCLEdBQUc7UUFDSCxTQUFTLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQztZQUNoQixJQUFJLEVBQUUsVUFBVTtZQUNoQixRQUFRLEVBQUUsS0FBSyxDQUFDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxRQUFRLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQztTQUM5RCxDQUFDO1FBQ0YsV0FBVyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUU7WUFDakIsUUFBUSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ2pCLEtBQUssTUFBTSxDQUFDLElBQUksTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEVBQUU7Z0JBQ3pDLEdBQUcsQ0FBQyxDQUFRLENBQUMsQ0FBQzthQUNmO1FBQ0gsQ0FBQztRQUNELEtBQUssQ0FBQyxPQUFPO1lBQ1gsc0VBQXNFO1lBQ3RFLDRFQUE0RTtZQUM1RSw0RUFBNEU7WUFDNUUsMEVBQTBFO1lB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U0FBUyxFQUFFO1lBQ3BDLE9BQU8sVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQzVCO1FBQ0QsSUFBSSxDQUFDLElBQUksU0FBUyxJQUFJLENBQUMsSUFBSSxTQUFTLEVBQUU7WUFDcEMsT0FBTyxDQUFDLENBQUM7U0FDVjtRQUVELE9BQU8sR0FBRyxDQUFDLENBQUUsRUFBRSxDQUFFLENBQUMsQ0FBQztJQUNyQixDQUFDLENBQUM7QUFDSixDQUFDO0FBZEQsa0NBY0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBzb3J0ZWRNYXAsIFNvcnRlZE11bHRpTWFwIH0gZnJvbSAnLi9zb3J0ZWQtbWFwJztcblxuZXhwb3J0IGludGVyZmFjZSBFbnRpdHkge1xuICByZWFkb25seSAkaWQ6IHN0cmluZztcbn1cblxuZXhwb3J0IHR5cGUgUGxhaW48RSBleHRlbmRzIEVudGl0eT4gPSBPbWl0PEUsICckaWQnPjtcblxudHlwZSBJbmRleGVzPEEgZXh0ZW5kcyBFbnRpdHk+ID0geyBbSyBpbiBQcm9wZXJ0eUtleV06IEVudGl0eUluZGV4PEEsIGFueT4gfTtcblxuZXhwb3J0IGludGVyZmFjZSBFbnRpdHlDb2xsZWN0aW9uPEEgZXh0ZW5kcyBFbnRpdHksIEkgZXh0ZW5kcyBJbmRleGVzPEVudGl0eT4gPSB7fT4ge1xuICByZWFkb25seSB0eXBlOiAnZW50aXRpZXMnO1xuICByZWFkb25seSBlbnRpdGllczogTWFwPHN0cmluZywgQT47XG4gIHJlYWRvbmx5IGluZGV4ZXM6IEk7XG5cbiAgYWRkKHg6IEEpOiB2b2lkO1xuICBkZWh5ZHJhdGUoKTogYW55O1xuICBoeWRyYXRlRnJvbSh4OiBhbnkpOiB2b2lkO1xuXG4gIC8qKlxuICAgKiBBZGQgaW5kZXhlcyB0byB0aGlzIGNvbGxlY3Rpb25cbiAgICpcbiAgICogQ3JlYXRpbmcgYW4gaW5kZXhlZCBjb2xsZWN0aW9uIGlzIGEgdHdvLXN0ZXAgb3BlcmF0aW9uIHNvIHRoYXQgd2UgY2FuIHNwZWNpZnkgdGhlXG4gICAqIEVudGl0eSB0eXBlLCBidXQgaW5mZXIgdGhlIGluZGV4IHR5cGVzIChUeXBlU2NyaXB0IGRvZXMgbm90IGFsbG93IGJvdGggc3BlY2lmeWluZyBBTkRcbiAgICogaW5mZXJyaW5nIGdlbmVyaWMgYXJndW1lbnRzIGluIGEgc2luZ2xlIGNhbGwpLlxuICAgKi9cbiAgaW5kZXg8SUkgZXh0ZW5kcyBJbmRleGVzPEE+PihpbmRleGVzOiBJSSk6IEVudGl0eUNvbGxlY3Rpb248QSwgSUk+O1xufVxuXG4vKipcbiAqIEludGVyZmFjZSBmb3IgaW5kZXggb2JqZWN0c1xuICovXG5leHBvcnQgaW50ZXJmYWNlIEVudGl0eUluZGV4PEEgZXh0ZW5kcyBFbnRpdHksIEluZGV4VHlwZT4ge1xuICAvKipcbiAgICogVGhlIGxvb2t1cHMgdGhhdCB0aGUgaW5kZXhlZCBmaWVsZCB0eXBlIGFmZm9yZHNcbiAgICpcbiAgICogRm9yIGV4YW1wbGUsICdlcXVhbHMnLCAnbGVzc1RoYW4nLCAncHJlZml4JywgZXRjLlxuICAgKi9cbiAgcmVhZG9ubHkgbG9va3VwczogSW5kZXhMb29rdXBzPEluZGV4VHlwZT47XG5cbiAgLyoqXG4gICAqIFRoZSBpbmRleCBkYXRhIHN0b3JlXG4gICAqL1xuICByZWFkb25seSBpbmRleDogU29ydGVkTXVsdGlNYXA8SW5kZXhUeXBlLCBzdHJpbmc+O1xuXG4gIC8qKlxuICAgKiBBZGQgYW4gZW50aXR5IHRvIHRoZSBpbmRleFxuICAgKi9cbiAgYWRkKHg6IEEpOiB2b2lkO1xufVxuXG4vKipcbiAqIE1hcCBhIHR5cGUgdGhlIHR5cGVzIG9mIGxvb2t1cHMgd2UgY2FuIGRvIG9uIHRoYXQgdHlwZVxuICovXG5leHBvcnQgdHlwZSBJbmRleExvb2t1cHM8UD4gPSBbUF0gZXh0ZW5kcyBbc3RyaW5nXVxuICA/IFN0cmluZ0luZGV4TG9va3Vwc1xuICA6IFtQXSBleHRlbmRzIFtzdHJpbmcgfCB1bmRlZmluZWRdXG4gID8gT3B0aW9uYWxTdHJpbmdJbmRleExvb2t1cHNcbiAgOiB7fTtcblxuLyoqXG4gKiBBbGwgdGhlIGxvb2t1cHMgb24gJ3N0cmluZycgdHlwZXNcbiAqXG4gKiBXZSBjdXJyZW50bHkgb25seSBoYXZlICdlcXVhbHMnIGJ1dCB3ZSBjb3VsZCBoYXZlIG1vcmUgOilcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTdHJpbmdJbmRleExvb2t1cHMge1xuICBlcXVhbHMoeDogc3RyaW5nKTogc3RyaW5nW107XG59XG5cbi8qKlxuICogQWxsIHRoZSBsb29rdXBzIG9uICdzdHJpbmcgfCB1bmRlZmluZWQnIHR5cGVzXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgT3B0aW9uYWxTdHJpbmdJbmRleExvb2t1cHMge1xuICBlcXVhbHMoeDogc3RyaW5nIHwgdW5kZWZpbmVkKTogc3RyaW5nW107XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBlbnRpdHlDb2xsZWN0aW9uPEEgZXh0ZW5kcyBFbnRpdHk+KCk6IEVudGl0eUNvbGxlY3Rpb248QSwge30+IHtcbiAgY29uc3QgZW50aXRpZXMgPSBuZXcgTWFwPHN0cmluZywgQT4oKTtcbiAgY29uc3QgX2luZGV4ZXMgPSB7fTtcblxuICBmdW5jdGlvbiBhZGQoeDogQSkge1xuICAgIGVudGl0aWVzLnNldCh4LiRpZCwgeCk7XG4gICAgZm9yIChjb25zdCBpbmRleCBvZiBPYmplY3QudmFsdWVzKF9pbmRleGVzKSkge1xuICAgICAgLy8gRklYTUU6IHdoeSBjYW4ndCB3ZSB0eXBlIHRoaXM/XG4gICAgICAoaW5kZXggYXMgYW55KS5hZGQoeCk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHtcbiAgICB0eXBlOiAnZW50aXRpZXMnLFxuICAgIGVudGl0aWVzLFxuICAgIGluZGV4ZXM6IF9pbmRleGVzIGFzIGFueSxcbiAgICBhZGQsXG4gICAgZGVoeWRyYXRlOiAoKSA9PiAoe1xuICAgICAgdHlwZTogJ2VudGl0aWVzJyxcbiAgICAgIGVudGl0aWVzOiBBcnJheS5mcm9tKHZhbGlkYXRlUGxhaW5PYmplY3RzKGVudGl0aWVzKS52YWx1ZXMoKSksXG4gICAgfSksXG4gICAgaHlkcmF0ZUZyb206ICh4KSA9PiB7XG4gICAgICBlbnRpdGllcy5jbGVhcigpO1xuICAgICAgZm9yIChjb25zdCBlIG9mIE9iamVjdC52YWx1ZXMoeC5lbnRpdGllcykpIHtcbiAgICAgICAgYWRkKGUgYXMgYW55KTtcbiAgICAgIH1cbiAgICB9LFxuICAgIGluZGV4KGluZGV4ZXMpIHtcbiAgICAgIC8vIFRoaXMgbGltaXRhdGlvbiBleGlzdHMgcHVyZWx5IGJlY2F1c2UgSSBjb3VsZG4ndCB0eXBlIGl0IG90aGVyd2lzZS5cbiAgICAgIC8vIERlY2xhcmluZyBhIHJldHVybiB0eXBlIG9mIGBFbnRpdHlDb2xsZWN0aW9uPEEsIEkgfCBJST5gIHdvdWxkIG1ha2UgYSBsb3RcbiAgICAgIC8vIG9mIG91ciBvdGhlciB0eXBlIGluc3BlY3Rpb24gY29kZSBzdG9wIHdvcmtpbmcgKHRoZSB1bmlvbiBpcyBoYXJkIHRvIHBpY2tcbiAgICAgIC8vIGFwYXJ0KS4gU2luY2UgYWRkaW5nIGluZGV4ZXMgaW4gbXVsdGlwbGUgZ29lcyBpcyBub3QgcmVhbGx5IGEgdXNlIGNhc2UsXG4gICAgICAvLyB0aGUgc2ltcGxlciBzb2x1dGlvbiBpcyBqdXN0IHRvIHR5cGUgaXQgYXMgaWYgd2UgcmVwbGFjZWQgYWxsIGluZGV4ZXNcbiAgICAgIC8vIGFuZCBhZGQgYSBydW50aW1lIGNoZWNrIHRvIG1ha2Ugc3VyZSB0aGUgdHlwZXMgYXJlbid0IGx5aW5nLlxuICAgICAgaWYgKE9iamVjdC5rZXlzKF9pbmRleGVzKS5sZW5ndGggPiAwKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignWW91IG1heSBvbmx5IGNhbGwgLmluZGV4KCkgb25jZSBvbiBhIG5ldyBjb2xsZWN0aW9uJyk7XG4gICAgICB9XG4gICAgICBPYmplY3QuYXNzaWduKF9pbmRleGVzLCBpbmRleGVzKTtcbiAgICAgIHJldHVybiB0aGlzIGFzIGFueTtcbiAgICB9LFxuICB9O1xufVxuXG4vKipcbiAqIEFuIGluZGV4IHRoYXQgdXNlcyB0aGUgdmFsdWUgb2YgYW4gZW50aXR5J3MgZmllbGRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZpZWxkSW5kZXg8QSBleHRlbmRzIEVudGl0eSwgUCBleHRlbmRzIGtleW9mIEE+KFxuICBwcm9wTmFtZTogUCxcbiAgY29tcGFyYXRvcjogc29ydGVkTWFwLkNvbXBhcmF0b3I8QVtQXT4sXG4pOiBFbnRpdHlJbmRleDxBLCBBW1BdPiB7XG4gIHJldHVybiBjYWxjdWxhdGVkSW5kZXgoKHgpID0+IHhbcHJvcE5hbWVdLCBjb21wYXJhdG9yKTtcbn1cblxuLyoqXG4gKiBBbiBpbmRleCB0aGF0IGlzIGNhbGN1bGF0ZWQgYmFzZWQgb24gYSBmdW5jdGlvbiBhcHBsaWVkIHRvIGFuIGVudGl0eVxuICovXG5leHBvcnQgZnVuY3Rpb24gY2FsY3VsYXRlZEluZGV4PEEgZXh0ZW5kcyBFbnRpdHksIEI+KGZuOiAoeDogQSkgPT4gQiwgY29tcGFyYXRvcjogc29ydGVkTWFwLkNvbXBhcmF0b3I8Qj4pIHtcbiAgY29uc3QgaW5kZXg6IFNvcnRlZE11bHRpTWFwPEIsIHN0cmluZz4gPSBbXTtcbiAgcmV0dXJuIHtcbiAgICBhZGQ6ICh4OiBBKSA9PiBzb3J0ZWRNYXAuYWRkKGluZGV4LCBjb21wYXJhdG9yLCBmbih4KSwgeC4kaWQpLFxuICAgIGxvb2t1cHM6IHtcbiAgICAgIGVxdWFsczogKHZhbHVlOiBCKSA9PiBzb3J0ZWRNYXAuZmluZEFsbChpbmRleCwgY29tcGFyYXRvciwgdmFsdWUpLFxuICAgIH0gYXMgYW55LFxuICAgIGluZGV4LFxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNFbnRpdHlDb2xsZWN0aW9uKHg6IHVua25vd24pOiB4IGlzIEVudGl0eUNvbGxlY3Rpb248YW55PiB7XG4gIHJldHVybiB0eXBlb2YgeCA9PT0gJ29iamVjdCcgJiYgISF4ICYmICh4IGFzIGFueSkudHlwZSA9PT0gJ2VudGl0aWVzJztcbn1cblxuZnVuY3Rpb24gdmFsaWRhdGVQbGFpbk9iamVjdHM8QSBleHRlbmRzIG9iamVjdD4oeHM6IE1hcDxzdHJpbmcsIEE+KTogTWFwPHN0cmluZywgQT4ge1xuICBmb3IgKGNvbnN0IHggb2YgeHMudmFsdWVzKCkpIHtcbiAgICBpZiAoeC5jb25zdHJ1Y3RvciAhPT0gT2JqZWN0KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYEVudGl0aWVzIHNob3VsZCBiZSBwbGFpbi10ZXh0IG9iamVjdHMsIGdvdCBpbnN0YW5jZSBvZiAke3guY29uc3RydWN0b3J9YCk7XG4gICAgfVxuICB9XG4gIHJldHVybiB4cztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBSZWZlcmVuY2U8RSBleHRlbmRzIEVudGl0eT4ge1xuICByZWFkb25seSAkcmVmOiBFWyckaWQnXTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlZjxFIGV4dGVuZHMgRW50aXR5Pih4OiBFIHwgc3RyaW5nKTogUmVmZXJlbmNlPEU+IHtcbiAgcmV0dXJuIHR5cGVvZiB4ID09PSAnc3RyaW5nJyA/IHsgJHJlZjogeCB9IDogeyAkcmVmOiB4LiRpZCB9O1xufVxuXG4vKipcbiAqIERldGVybWluZXMgd2hldGhlciB0d28gc3RyaW5ncyBhcmUgZXF1aXZhbGVudCBpbiB0aGUgY3VycmVudCBvciBzcGVjaWZpZWQgbG9jYWxlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gc3RyaW5nQ21wKGE6IHN0cmluZywgYjogc3RyaW5nKTogbnVtYmVyIHtcbiAgcmV0dXJuIGEubG9jYWxlQ29tcGFyZShiKTtcbn1cblxuLyoqXG4gKiBEZXRlcm1pbmVzIHdoZXRoZXIgdHdvIG51bWJlcnMgYXJlIGVxdWl2YWxlbnQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBudW1iZXJDbXAoYTogbnVtYmVyLCBiOiBudW1iZXIpOiBudW1iZXIge1xuICByZXR1cm4gYSAtIGI7XG59XG5cbi8qKlxuICogQ3JlYXRlcyBhIGNvbXBhcmF0b3IgdG8gZGV0ZXJtaW5lIGVxdWl2YWxlbnQgb2YgdHdvIHZhbHVlcywgdXNpbmcgYSBnaXZlbiBjb21wYXJhdG9yLCBidXQgYWxsb3dzIHZhbHVlcyB0byBiZSBvcHRpb25hbC5cbiAqXG4gKiBAcGFyYW0gZnJvbnRPcmRlciBJZiBgdHJ1ZWAsIHJldHVybnMgc28gdGhhdCB1bmRlZmluZWQgdmFsdWVzIGFyZSBvcmRlcmVkIGF0IHRoZSBmcm9udC4gSWYgYGZhbHNlYCwgdW5kZWZpbmVkIHZhbHVlcyBhcmUgb3JkZXJlZCBhdCB0aGUgYmFjay5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG9wdGlvbmFsQ21wPEE+KGNtcDogKGE6IEEsIGI6IEEpID0+IG51bWJlciwgZnJvbnRPcmRlciA9IHRydWUpIHtcbiAgcmV0dXJuIChhOiBBIHwgdW5kZWZpbmVkLCBiOiBBIHwgdW5kZWZpbmVkKSA9PiB7XG4gICAgaWYgKGEgPT0gdW5kZWZpbmVkICYmIGIgIT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gZnJvbnRPcmRlciA/IC0xIDogMTtcbiAgICB9XG4gICAgaWYgKGEgIT0gdW5kZWZpbmVkICYmIGIgPT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gZnJvbnRPcmRlciA/IDEgOiAtMTtcbiAgICB9XG4gICAgaWYgKGEgPT0gdW5kZWZpbmVkICYmIGIgPT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gMDtcbiAgICB9XG5cbiAgICByZXR1cm4gY21wKGEhLCBiISk7XG4gIH07XG59XG4iXX0=","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./entity\"), exports);\n__exportStar(require(\"./relationship\"), exports);\n__exportStar(require(\"./database\"), exports);\n__exportStar(require(\"./invariant\"), exports);\n__exportStar(require(\"./result\"), exports);\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLDJDQUF5QjtBQUN6QixpREFBK0I7QUFDL0IsNkNBQTJCO0FBQzNCLDhDQUE0QjtBQUM1QiwyQ0FBeUIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2VudGl0eSc7XG5leHBvcnQgKiBmcm9tICcuL3JlbGF0aW9uc2hpcCc7XG5leHBvcnQgKiBmcm9tICcuL2RhdGFiYXNlJztcbmV4cG9ydCAqIGZyb20gJy4vaW52YXJpYW50JztcbmV4cG9ydCAqIGZyb20gJy4vcmVzdWx0JztcbiJdfQ==","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.impliesU = exports.implies = exports.evolutionInvariant = void 0;\nfunction evolutionInvariant(description, pred) {\n // TODO: Find a way\n Array.isArray(description);\n Array.isArray(pred);\n}\nexports.evolutionInvariant = evolutionInvariant;\nfunction implies(x, y) {\n return !x || y;\n}\nexports.implies = implies;\n/**\n * Implies, but treats 'undefined' as 'false'\n */\nfunction impliesU(x, y) {\n return !x || !!y;\n}\nexports.impliesU = impliesU;\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW52YXJpYW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2ludmFyaWFudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFJQSxTQUFnQixrQkFBa0IsQ0FBSSxXQUFtQixFQUFFLElBQStCO0lBQ3hGLG1CQUFtQjtJQUNuQixLQUFLLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQzNCLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDdEIsQ0FBQztBQUpELGdEQUlDO0FBRUQsU0FBZ0IsT0FBTyxDQUFDLENBQVUsRUFBRSxDQUFVO0lBQzVDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ2pCLENBQUM7QUFGRCwwQkFFQztBQUVEOztHQUVHO0FBQ0gsU0FBZ0IsUUFBUSxDQUFDLENBQXNCLEVBQUUsQ0FBc0I7SUFDckUsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ25CLENBQUM7QUFGRCw0QkFFQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB0eXBlIEludmFyaWFudCA9IHZvaWQ7XG5cbmV4cG9ydCB0eXBlIEV2b2x1dGlvbkludmFyaWFudFByZWQ8QT4gPSAocHJldmlvdXM6IEEsIGN1cnJlbnQ6IEEpID0+IGJvb2xlYW47XG5cbmV4cG9ydCBmdW5jdGlvbiBldm9sdXRpb25JbnZhcmlhbnQ8QT4oZGVzY3JpcHRpb246IHN0cmluZywgcHJlZDogRXZvbHV0aW9uSW52YXJpYW50UHJlZDxBPik6IEludmFyaWFudCB7XG4gIC8vIFRPRE86IEZpbmQgYSB3YXlcbiAgQXJyYXkuaXNBcnJheShkZXNjcmlwdGlvbik7XG4gIEFycmF5LmlzQXJyYXkocHJlZCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpbXBsaWVzKHg6IGJvb2xlYW4sIHk6IGJvb2xlYW4pIHtcbiAgcmV0dXJuICF4IHx8IHk7XG59XG5cbi8qKlxuICogSW1wbGllcywgYnV0IHRyZWF0cyAndW5kZWZpbmVkJyBhcyAnZmFsc2UnXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpbXBsaWVzVSh4OiBib29sZWFuIHwgdW5kZWZpbmVkLCB5OiBib29sZWFuIHwgdW5kZWZpbmVkKSB7XG4gIHJldHVybiAheCB8fCAhIXk7XG59XG4iXX0=","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isRelationshipCollection = exports.relationshipCollection = exports.NO_RELATIONSHIPS = void 0;\nconst NO_RELATIONSHIPS = () => ({});\nexports.NO_RELATIONSHIPS = NO_RELATIONSHIPS;\nfunction relationshipCollection(fromField, toField) {\n const forward = new Map();\n const backward = new Map();\n function add(fromId, toId, attrs) {\n let f = forward.get(fromId);\n if (!f) {\n f = [];\n forward.set(fromId, f);\n }\n let b = backward.get(toId);\n if (!b) {\n b = [];\n backward.set(toId, b);\n }\n // Behaves like a set, only add new relationship if it is structurally distinct\n const forwardRel = { $id: toId, ...attrs };\n const forwardRelStr = JSON.stringify(forwardRel);\n const existingRelationship = f.find((x) => JSON.stringify(x) === forwardRelStr);\n if (!existingRelationship) {\n f.push(forwardRel);\n b.push({ $id: fromId, ...attrs });\n }\n }\n return {\n type: 'rel',\n fromColl: fromField,\n toColl: toField,\n forward,\n backward,\n add(from, to, attributes) {\n add(from.$id, to.$id, attributes);\n },\n dehydrate() {\n return {\n type: 'rel',\n forward: Object.fromEntries(forward.entries()),\n };\n },\n hydrateFrom(x) {\n forward.clear();\n backward.clear();\n for (const [fromId, targets] of Object.entries(x.forward)) {\n for (const target of targets) {\n add(fromId, target.$id, removeId(target));\n }\n }\n },\n };\n}\nexports.relationshipCollection = relationshipCollection;\nfunction isRelationshipCollection(x) {\n return typeof x === 'object' && !!x && x.type === 'rel';\n}\nexports.isRelationshipCollection = isRelationshipCollection;\nfunction removeId(x) {\n const ret = { ...x };\n delete ret.$id;\n return ret;\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVsYXRpb25zaGlwLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL3JlbGF0aW9uc2hpcC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUE2Qk8sTUFBTSxnQkFBZ0IsR0FBRyxHQUFHLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQTlCLFFBQUEsZ0JBQWdCLG9CQUFjO0FBRTNDLFNBQWdCLHNCQUFzQixDQUNwQyxTQUF3QixFQUN4QixPQUFvQjtJQUVwQixNQUFNLE9BQU8sR0FBRyxJQUFJLEdBQUcsRUFBMkIsQ0FBQztJQUNuRCxNQUFNLFFBQVEsR0FBRyxJQUFJLEdBQUcsRUFBMkIsQ0FBQztJQUVwRCxTQUFTLEdBQUcsQ0FBQyxNQUFjLEVBQUUsSUFBWSxFQUFFLEtBQVU7UUFDbkQsSUFBSSxDQUFDLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUM1QixJQUFJLENBQUMsQ0FBQyxFQUFFO1lBQ04sQ0FBQyxHQUFHLEVBQUUsQ0FBQztZQUNQLE9BQU8sQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDO1NBQ3hCO1FBQ0QsSUFBSSxDQUFDLEdBQUcsUUFBUSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMzQixJQUFJLENBQUMsQ0FBQyxFQUFFO1lBQ04sQ0FBQyxHQUFHLEVBQUUsQ0FBQztZQUNQLFFBQVEsQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO1NBQ3ZCO1FBRUQsK0VBQStFO1FBQy9FLE1BQU0sVUFBVSxHQUFHLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxHQUFHLEtBQUssRUFBRSxDQUFDO1FBQzNDLE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDakQsTUFBTSxvQkFBb0IsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxLQUFLLGFBQWEsQ0FBQyxDQUFDO1FBRWhGLElBQUksQ0FBQyxvQkFBb0IsRUFBRTtZQUN6QixDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBQ25CLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLEdBQUcsS0FBSyxFQUFFLENBQUMsQ0FBQztTQUNuQztJQUNILENBQUM7SUFFRCxPQUFPO1FBQ0wsSUFBSSxFQUFFLEtBQUs7UUFDWCxRQUFRLEVBQUUsU0FBUztRQUNuQixNQUFNLEVBQUUsT0FBTztRQUNmLE9BQU87UUFDUCxRQUFRO1FBQ1IsR0FBRyxDQUFDLElBQVksRUFBRSxFQUFVLEVBQUUsVUFBZTtZQUMzQyxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsR0FBRyxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBQ3BDLENBQUM7UUFDRCxTQUFTO1lBQ1AsT0FBTztnQkFDTCxJQUFJLEVBQUUsS0FBSztnQkFDWCxPQUFPLEVBQUUsTUFBTSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUM7YUFDL0MsQ0FBQztRQUNKLENBQUM7UUFDRCxXQUFXLENBQUMsQ0FBTTtZQUNoQixPQUFPLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDaEIsUUFBUSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBRWpCLEtBQUssTUFBTSxDQUFDLE1BQU0sRUFBRSxPQUFPLENBQUMsSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsRUFBRTtnQkFDekQsS0FBSyxNQUFNLE1BQU0sSUFBSSxPQUEwQixFQUFFO29CQUMvQyxHQUFHLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxHQUFHLEVBQUUsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7aUJBQzNDO2FBQ0Y7UUFDSCxDQUFDO0tBQ0YsQ0FBQztBQUNKLENBQUM7QUF4REQsd0RBd0RDO0FBRUQsU0FBZ0Isd0JBQXdCLENBQUMsQ0FBVTtJQUNqRCxPQUFPLE9BQU8sQ0FBQyxLQUFLLFFBQVEsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFLLENBQVMsQ0FBQyxJQUFJLEtBQUssS0FBSyxDQUFDO0FBQ25FLENBQUM7QUFGRCw0REFFQztBQUVELFNBQVMsUUFBUSxDQUFtQixDQUFJO0lBQ3RDLE1BQU0sR0FBRyxHQUFHLEVBQUUsR0FBRyxDQUFDLEVBQUUsQ0FBQztJQUNyQixPQUFRLEdBQVcsQ0FBQyxHQUFHLENBQUM7SUFDeEIsT0FBTyxHQUFHLENBQUM7QUFDYixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRW50aXR5LCBFbnRpdHlDb2xsZWN0aW9uIH0gZnJvbSAnLi9lbnRpdHknO1xuXG5leHBvcnQgaW50ZXJmYWNlIFJlbGF0aW9uc2hpcDxGcm9tIGV4dGVuZHMgRW50aXR5LCBUbyBleHRlbmRzIEVudGl0eSwgQXR0cmlidXRlcyA9IHt9PiB7XG4gIHJlYWRvbmx5IGZyb206IEZyb207XG4gIHJlYWRvbmx5IHRvOiBUbztcbiAgcmVhZG9ubHkgYXR0cjogQXR0cmlidXRlcztcbn1cblxudHlwZSBGcm9tR2V0dGVyPFIgZXh0ZW5kcyBSZWxhdGlvbnNoaXA8YW55LCBhbnksIGFueT4+ID0gKGlkOiBzdHJpbmcpID0+IFJbJ2Zyb20nXTtcbnR5cGUgVG9HZXR0ZXI8UiBleHRlbmRzIFJlbGF0aW9uc2hpcDxhbnksIGFueSwgYW55Pj4gPSAoaWQ6IHN0cmluZykgPT4gUlsndG8nXTtcblxuZXhwb3J0IGludGVyZmFjZSBSZWxhdGlvbnNoaXBDb2xsZWN0aW9uPFIgZXh0ZW5kcyBSZWxhdGlvbnNoaXA8YW55LCBhbnksIGFueT4+IHtcbiAgcmVhZG9ubHkgdHlwZTogJ3JlbCc7XG4gIHJlYWRvbmx5IGZyb21Db2xsOiBGcm9tR2V0dGVyPFI+O1xuICByZWFkb25seSB0b0NvbGw6IFRvR2V0dGVyPFI+O1xuICByZWFkb25seSBmb3J3YXJkOiBNYXA8c3RyaW5nLCBSZWw8UlsnYXR0ciddPltdPjtcbiAgcmVhZG9ubHkgYmFja3dhcmQ6IE1hcDxzdHJpbmcsIFJlbDxSWydhdHRyJ10+W10+O1xuXG4gIGFkZChmcm9tOiBSWydmcm9tJ10sIHRvOiBSWyd0byddLCBhdHRyaWJ1dGVzOiBSWydhdHRyJ10pOiB2b2lkO1xuICBkZWh5ZHJhdGUoKTogYW55O1xuICBoeWRyYXRlRnJvbSh4OiBhbnkpOiB2b2lkO1xufVxuXG5leHBvcnQgdHlwZSBSZWw8QXR0cmlidXRlcz4gPSB7IHJlYWRvbmx5ICRpZDogc3RyaW5nIH0gJiBBdHRyaWJ1dGVzO1xuXG5leHBvcnQgdHlwZSBLZXlGb3JFbnRpdHlDb2xsZWN0aW9uPFMsIEUgZXh0ZW5kcyBFbnRpdHk+ID0ge1xuICBbSyBpbiBrZXlvZiBTXTogU1tLXSBleHRlbmRzIEVudGl0eUNvbGxlY3Rpb248RT4gPyBLIDogbmV2ZXI7XG59W2tleW9mIFNdO1xuXG5leHBvcnQgY29uc3QgTk9fUkVMQVRJT05TSElQUyA9ICgpID0+ICh7fSk7XG5cbmV4cG9ydCBmdW5jdGlvbiByZWxhdGlvbnNoaXBDb2xsZWN0aW9uPFIgZXh0ZW5kcyBSZWxhdGlvbnNoaXA8YW55LCBhbnksIGFueT4+KFxuICBmcm9tRmllbGQ6IEZyb21HZXR0ZXI8Uj4sXG4gIHRvRmllbGQ6IFRvR2V0dGVyPFI+LFxuKTogUmVsYXRpb25zaGlwQ29sbGVjdGlvbjxSPiB7XG4gIGNvbnN0IGZvcndhcmQgPSBuZXcgTWFwPHN0cmluZywgQXJyYXk8UmVsPGFueT4+PigpO1xuICBjb25zdCBiYWNrd2FyZCA9IG5ldyBNYXA8c3RyaW5nLCBBcnJheTxSZWw8YW55Pj4+KCk7XG5cbiAgZnVuY3Rpb24gYWRkKGZyb21JZDogc3RyaW5nLCB0b0lkOiBzdHJpbmcsIGF0dHJzOiBhbnkpIHtcbiAgICBsZXQgZiA9IGZvcndhcmQuZ2V0KGZyb21JZCk7XG4gICAgaWYgKCFmKSB7XG4gICAgICBmID0gW107XG4gICAgICBmb3J3YXJkLnNldChmcm9tSWQsIGYpO1xuICAgIH1cbiAgICBsZXQgYiA9IGJhY2t3YXJkLmdldCh0b0lkKTtcbiAgICBpZiAoIWIpIHtcbiAgICAgIGIgPSBbXTtcbiAgICAgIGJhY2t3YXJkLnNldCh0b0lkLCBiKTtcbiAgICB9XG5cbiAgICAvLyBCZWhhdmVzIGxpa2UgYSBzZXQsIG9ubHkgYWRkIG5ldyByZWxhdGlvbnNoaXAgaWYgaXQgaXMgc3RydWN0dXJhbGx5IGRpc3RpbmN0XG4gICAgY29uc3QgZm9yd2FyZFJlbCA9IHsgJGlkOiB0b0lkLCAuLi5hdHRycyB9O1xuICAgIGNvbnN0IGZvcndhcmRSZWxTdHIgPSBKU09OLnN0cmluZ2lmeShmb3J3YXJkUmVsKTtcbiAgICBjb25zdCBleGlzdGluZ1JlbGF0aW9uc2hpcCA9IGYuZmluZCgoeCkgPT4gSlNPTi5zdHJpbmdpZnkoeCkgPT09IGZvcndhcmRSZWxTdHIpO1xuXG4gICAgaWYgKCFleGlzdGluZ1JlbGF0aW9uc2hpcCkge1xuICAgICAgZi5wdXNoKGZvcndhcmRSZWwpO1xuICAgICAgYi5wdXNoKHsgJGlkOiBmcm9tSWQsIC4uLmF0dHJzIH0pO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB7XG4gICAgdHlwZTogJ3JlbCcsXG4gICAgZnJvbUNvbGw6IGZyb21GaWVsZCxcbiAgICB0b0NvbGw6IHRvRmllbGQsXG4gICAgZm9yd2FyZCxcbiAgICBiYWNrd2FyZCxcbiAgICBhZGQoZnJvbTogRW50aXR5LCB0bzogRW50aXR5LCBhdHRyaWJ1dGVzOiBhbnkpIHtcbiAgICAgIGFkZChmcm9tLiRpZCwgdG8uJGlkLCBhdHRyaWJ1dGVzKTtcbiAgICB9LFxuICAgIGRlaHlkcmF0ZSgpOiBhbnkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZTogJ3JlbCcsXG4gICAgICAgIGZvcndhcmQ6IE9iamVjdC5mcm9tRW50cmllcyhmb3J3YXJkLmVudHJpZXMoKSksXG4gICAgICB9O1xuICAgIH0sXG4gICAgaHlkcmF0ZUZyb20oeDogYW55KTogdm9pZCB7XG4gICAgICBmb3J3YXJkLmNsZWFyKCk7XG4gICAgICBiYWNrd2FyZC5jbGVhcigpO1xuXG4gICAgICBmb3IgKGNvbnN0IFtmcm9tSWQsIHRhcmdldHNdIG9mIE9iamVjdC5lbnRyaWVzKHguZm9yd2FyZCkpIHtcbiAgICAgICAgZm9yIChjb25zdCB0YXJnZXQgb2YgdGFyZ2V0cyBhcyBBcnJheTxSZWw8YW55Pj4pIHtcbiAgICAgICAgICBhZGQoZnJvbUlkLCB0YXJnZXQuJGlkLCByZW1vdmVJZCh0YXJnZXQpKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sXG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc1JlbGF0aW9uc2hpcENvbGxlY3Rpb24oeDogdW5rbm93bik6IHggaXMgUmVsYXRpb25zaGlwQ29sbGVjdGlvbjxhbnk+IHtcbiAgcmV0dXJuIHR5cGVvZiB4ID09PSAnb2JqZWN0JyAmJiAhIXggJiYgKHggYXMgYW55KS50eXBlID09PSAncmVsJztcbn1cblxuZnVuY3Rpb24gcmVtb3ZlSWQ8QSBleHRlbmRzIG9iamVjdD4oeDogQSk6IE9taXQ8QSwgJyRpZCc+IHtcbiAgY29uc3QgcmV0ID0geyAuLi54IH07XG4gIGRlbGV0ZSAocmV0IGFzIGFueSkuJGlkO1xuICByZXR1cm4gcmV0O1xufVxuIl19","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.liftUndefined = exports.liftResult = exports.locateFailure = exports.chain = exports.using = exports.tryCatch = exports.assertSuccess = exports.errorFrom = exports.errorMessage = exports.unpackOr = exports.unpack = exports.isSuccess = exports.isFailure = exports.failure = void 0;\n// Ensures you must use `fail()` to construct an instance of type Failure\nconst errorSym = Symbol('error');\nfunction mkLocate(prefix) {\n const ret = (error) => failure(`${prefix}: ${error}`);\n ret.in = (prefix2) => mkLocate(`${prefix}: ${prefix2}`);\n ret.locate = locateFailure(prefix);\n return ret;\n}\nfunction failure(error) {\n return { [errorSym]: error };\n}\nexports.failure = failure;\nfailure.in = (prefix) => mkLocate(prefix);\nfailure.locate = (x) => x;\nfunction isFailure(x) {\n return !!x && typeof x === 'object' && x[errorSym];\n}\nexports.isFailure = isFailure;\nfunction isSuccess(x) {\n return !isFailure(x);\n}\nexports.isSuccess = isSuccess;\nfunction unpack(x) {\n if (isFailure(x)) {\n throw new Error(`unpack: ${x[errorSym]}`);\n }\n return x;\n}\nexports.unpack = unpack;\nfunction unpackOr(x, def) {\n return (isFailure(x) ? def : x);\n}\nexports.unpackOr = unpackOr;\nfunction errorMessage(x) {\n return x[errorSym];\n}\nexports.errorMessage = errorMessage;\nfunction errorFrom(x) {\n return new Error(errorMessage(x));\n}\nexports.errorFrom = errorFrom;\nfunction assertSuccess(x) {\n if (isFailure(x)) {\n throw errorFrom(x);\n }\n}\nexports.assertSuccess = assertSuccess;\nfunction tryCatch(failOrBlock, maybeBlock) {\n const block = (maybeBlock !== null && maybeBlock !== void 0 ? maybeBlock : failOrBlock);\n const f = (maybeBlock ? failOrBlock : failure);\n try {\n return block();\n }\n catch (e) {\n return f(`Error: ${e.message}\\n${e.stack}`);\n }\n}\nexports.tryCatch = tryCatch;\nfunction using(value, block) {\n if (isFailure(value)) {\n return value;\n }\n return block(value);\n}\nexports.using = using;\nfunction chain(value, ...fns) {\n for (const fn of fns) {\n if (isFailure(value)) {\n return value;\n }\n value = fn(value);\n }\n return value;\n}\nexports.chain = chain;\n/* eslint-enable prettier/prettier */\n/**\n * Make a function that will prepend a prefix to error messages\n *\n * This is one way to be specific about the location where errors originate, by prefixing\n * errors as the call stack unwinds.\n *\n * A different method is to pass in a modified failure function using `failure.in(...)`,\n * to build the error message as the call stack deepens.\n */\nfunction locateFailure(prefix) {\n return (x) => (isFailure(x) ? failure(`${prefix}: ${x[errorSym]}`) : x);\n}\nexports.locateFailure = locateFailure;\nfunction liftResult(xs) {\n const failures = Array.isArray(xs) ? xs.filter(isFailure) : Object.values(xs).filter(isFailure);\n if (failures.length > 0) {\n return failure(failures.map(errorMessage).join(', '));\n }\n return xs;\n}\nexports.liftResult = liftResult;\nfunction liftUndefined(valueOrFunction) {\n if (typeof valueOrFunction === 'function') {\n return (...args) => {\n const value = valueOrFunction(...args);\n return value !== undefined ? value : failure('value is undefined');\n };\n }\n return valueOrFunction !== undefined ? valueOrFunction : failure('value is undefined');\n}\nexports.liftUndefined = liftUndefined;\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzdWx0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL3Jlc3VsdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSx5RUFBeUU7QUFDekUsTUFBTSxRQUFRLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBYWpDLFNBQVMsUUFBUSxDQUFDLE1BQWM7SUFDOUIsTUFBTSxHQUFHLEdBQVMsQ0FBQyxLQUFhLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxHQUFHLE1BQU0sS0FBSyxLQUFLLEVBQUUsQ0FBQyxDQUFDO0lBQ3BFLEdBQUcsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxPQUFlLEVBQUUsRUFBRSxDQUFDLFFBQVEsQ0FBQyxHQUFHLE1BQU0sS0FBSyxPQUFPLEVBQUUsQ0FBQyxDQUFDO0lBQ2hFLEdBQUcsQ0FBQyxNQUFNLEdBQUcsYUFBYSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ25DLE9BQU8sR0FBRyxDQUFDO0FBQ2IsQ0FBQztBQUlELFNBQWdCLE9BQU8sQ0FBQyxLQUFhO0lBQ25DLE9BQU8sRUFBRSxDQUFDLFFBQVEsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDO0FBQy9CLENBQUM7QUFGRCwwQkFFQztBQUNELE9BQU8sQ0FBQyxFQUFFLEdBQUcsQ0FBQyxNQUFjLEVBQUUsRUFBRSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUNsRCxPQUFPLENBQUMsTUFBTSxHQUFHLENBQUksQ0FBWSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFFeEMsU0FBZ0IsU0FBUyxDQUFJLENBQVk7SUFDdkMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLE9BQU8sQ0FBQyxLQUFLLFFBQVEsSUFBSyxDQUFTLENBQUMsUUFBUSxDQUFDLENBQUM7QUFDOUQsQ0FBQztBQUZELDhCQUVDO0FBRUQsU0FBZ0IsU0FBUyxDQUFJLENBQVk7SUFDdkMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUN2QixDQUFD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LENBQUMsU0FBUyxDQUFDLENBQUM7SUFDaEcsSUFBSSxRQUFRLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtRQUN2QixPQUFPLE9BQU8sQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0tBQ3ZEO0lBQ0QsT0FBTyxFQUFTLENBQUM7QUFDbkIsQ0FBQztBQVJELGdDQVFDO0FBT0QsU0FBZ0IsYUFBYSxDQUFDLGVBQW9CO0lBQ2hELElBQUksT0FBTyxlQUFlLEtBQUssVUFBVSxFQUFFO1FBQ3pDLE9BQU8sQ0FBQyxHQUFHLElBQVcsRUFBRSxFQUFFO1lBQ3hCLE1BQU0sS0FBSyxHQUFHLGVBQWUsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDO1lBQ3ZDLE9BQU8sS0FBSyxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsb0JBQW9CLENBQUMsQ0FBQztRQUNyRSxDQUFDLENBQUM7S0FDSDtJQUNELE9BQU8sZUFBZSxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsb0JBQW9CLENBQUMsQ0FBQztBQUN6RixDQUFDO0FBUkQsc0NBUUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBFbnN1cmVzIHlvdSBtdXN0IHVzZSBgZmFpbCgpYCB0byBjb25zdHJ1Y3QgYW4gaW5zdGFuY2Ugb2YgdHlwZSBGYWlsdXJlXG5jb25zdCBlcnJvclN5bSA9IFN5bWJvbCgnZXJyb3InKTtcblxuZXhwb3J0IHR5cGUgUmVzdWx0PEE+ID0gQSB8IEZhaWx1cmU7XG5leHBvcnQgaW50ZXJmYWNlIEZhaWx1cmUge1xuICByZWFkb25seSBbZXJyb3JTeW1dOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRmFpbCB7XG4gIChlcnJvcjogc3RyaW5nKTogRmFpbHVyZTtcbiAgaW4ocHJlZml4OiBzdHJpbmcpOiBGYWlsO1xuICBsb2NhdGU8QT4oeDogUmVzdWx0PEE+KTogUmVzdWx0PEE+O1xufVxuXG5mdW5jdGlvbiBta0xvY2F0ZShwcmVmaXg6IHN0cmluZyk6IEZhaWwge1xuICBjb25zdCByZXQ6IEZhaWwgPSAoZXJyb3I6IHN0cmluZykgPT4gZmFpbHVyZShgJHtwcmVmaXh9OiAke2Vycm9yfWApO1xuICByZXQuaW4gPSAocHJlZml4Mjogc3RyaW5nKSA9PiBta0xvY2F0ZShgJHtwcmVmaXh9OiAke3ByZWZpeDJ9YCk7XG4gIHJldC5sb2NhdGUgPSBsb2NhdGVGYWlsdXJlKHByZWZpeCk7XG4gIHJldHVybiByZXQ7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgZmFpbHVyZSBleHRlbmRzIEZhaWwge31cblxuZXhwb3J0IGZ1bmN0aW9uIGZhaWx1cmUoZXJyb3I6IHN0cmluZyk6IEZhaWx1cmUge1xuICByZXR1cm4geyBbZXJyb3JTeW1dOiBlcnJvciB9O1xufVxuZmFpbHVyZS5pbiA9IChwcmVmaXg6IHN0cmluZykgPT4gbWtMb2NhdGUocHJlZml4KTtcbmZhaWx1cmUubG9jYXRlID0gPEE+KHg6IFJlc3VsdDxBPikgPT4geDtcblxuZXhwb3J0IGZ1bmN0aW9uIGlzRmFpbHVyZTxBPih4OiBSZXN1bHQ8QT4pOiB4IGlzIEZhaWx1cmUge1xuICByZXR1cm4gISF4ICYmIHR5cGVvZiB4ID09PSAnb2JqZWN0JyAmJiAoeCBhcyBhbnkpW2Vycm9yU3ltXTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzU3VjY2VzczxBPih4OiBSZXN1bHQ8QT4pOiB4IGlzIEEge1xuICByZXR1cm4gIWlzRmFpbHVyZSh4KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHVucGFjazxBPih4OiBSZXN1bHQ8QT4pOiBBIHtcbiAgaWYgKGlzRmFpbHVyZSh4KSkge1xuICAgIHRocm93IG5ldyBFcnJvcihgdW5wYWNrOiAke3hbZXJyb3JTeW1dfWApO1xuICB9XG4gIHJldHVybiB4O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdW5wYWNrT3I8QSwgQj4oeDogUmVzdWx0PEE+LCBkZWY6IEIpOiBCIGV4dGVuZHMgQSA/IEEgOiBBIHwgQiB7XG4gIHJldHVybiAoaXNGYWlsdXJlKHgpID8gZGVmIDogeCkgYXMgYW55O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZXJyb3JNZXNzYWdlKHg6IEZhaWx1cmUpOiBzdHJpbmcge1xuICByZXR1cm4geFtlcnJvclN5bV07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBlcnJvckZyb20oeDogRmFpbHVyZSk6IEVycm9yIHtcbiAgcmV0dXJuIG5ldyBFcnJvcihlcnJvck1lc3NhZ2UoeCkpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYXNzZXJ0U3VjY2VzczxBPih4OiBSZXN1bHQ8QT4pOiBhc3NlcnRzIHggaXMgQTtcbmV4cG9ydCBmdW5jdGlvbiBhc3NlcnRTdWNjZXNzKHg6IEZhaWx1cmUpOiBuZXZlcjtcbmV4cG9ydCBmdW5jdGlvbiBhc3NlcnRTdWNjZXNzKHg6IEZhaWx1cmUpOiB2b2lkIHtcbiAgaWYgKGlzRmFpbHVyZSh4KSkge1xuICAgIHRocm93IGVycm9yRnJvbSh4KTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gdHJ5Q2F0Y2g8QT4oYmxvY2s6ICgpID0+IEEpOiBSZXN1bHQ8QT47XG5leHBvcnQgZnVuY3Rpb24gdHJ5Q2F0Y2g8QT4oZmFpbEZuOiBGYWlsLCBibG9jazogKCkgPT4gQSk6IFJlc3VsdDxBPjtcbmV4cG9ydCBmdW5jdGlvbiB0cnlDYXRjaDxBPihmYWlsT3JCbG9jazogRmFpbCB8ICgoKSA9PiBBKSwgbWF5YmVCbG9jaz86ICgpID0+IEEpOiBSZXN1bHQ8QT4ge1xuICBjb25zdCBibG9jazogKCkgPT4gQSA9IChtYXliZUJsb2NrID8/IGZhaWxPckJsb2NrKSBhcyBhbnk7XG4gIGNvbnN0IGY6IEZhaWwgPSAobWF5YmVCbG9jayA/IGZhaWxPckJsb2NrIDogZmFpbHVyZSkgYXMgYW55O1xuXG4gIHRyeSB7XG4gICAgcmV0dXJuIGJsb2NrKCk7XG4gIH0gY2F0Y2ggKGU6IGFueSkge1xuICAgIHJldHVybiBmKGBFcnJvcjogJHtlLm1lc3NhZ2V9XFxuJHtlLnN0YWNrfWApO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB1c2luZzxBLCBCPih2YWx1ZTogUmVzdWx0PEE+LCBibG9jazogKHg6IEEpID0+IFJlc3VsdDxCPik6IFJlc3VsdDxCPiB7XG4gIGlmIChpc0ZhaWx1cmUodmFsdWUpKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG4gIHJldHVybiBibG9jayh2YWx1ZSk7XG59XG5cbi8qKlxuICogTGlrZSAndXNpbmcnLCBidXQgY2FuIHRha2UgYW55IG51bWJlciBvZiBmdW5jdGlvbnNcbiAqL1xuLyogZXNsaW50LWRpc2FibGUgcHJldHRpZXIvcHJldHRpZXIgKi9cbmV4cG9ydCBmdW5jdGlvbiBjaGFpbjxBLCBCPih2YWx1ZTogUmVzdWx0PEE+LCBiMDogKHg6IEEpID0+IFJlc3VsdDxCPik6IFJlc3VsdDxCPjtcbmV4cG9ydCBmdW5jdGlvbiBjaGFpbjxBLCBCLCBDPih2YWx1ZTogUmVzdWx0PEE+LCBiMDogKHg6IEEpID0+IFJlc3VsdDxCPiwgYjE6ICh4OiBCKSA9PiBSZXN1bHQ8Qz4pOiBSZXN1bHQ8Qz47XG5leHBvcnQgZnVuY3Rpb24gY2hhaW48QSwgQiwgQywgRD4odmFsdWU6IFJlc3VsdDxBPiwgYjA6ICh4OiBBKSA9PiBSZXN1bHQ8Qj4sIGIxOiAoeDogQikgPT4gUmVzdWx0PEM+LCBiMjogKHg6IEMpID0+IFJlc3VsdDxEPik6IFJlc3VsdDxEPjtcbmV4cG9ydCBmdW5jdGlvbiBjaGFpbjxBLCBCLCBDLCBELCBFPih2YWx1ZTogUmVzdWx0PEE+LCBiMDogKHg6IEEpID0+IFJlc3VsdDxCPiwgYjE6ICh4OiBCKSA9PiBSZXN1bHQ8Qz4sIGIyOiAoeDogQykgPT4gUmVzdWx0PEQ+LCBiMzogKHg6IEQpID0+IFJlc3VsdDxFPik6IFJlc3VsdDxFPjtcbmV4cG9ydCBmdW5jdGlvbiBjaGFpbjxBLCBCLCBDLCBELCBFLCBGPih2YWx1ZTogUmVzdWx0PEE+LCBiMDogKHg6IEEpID0+IFJlc3VsdDxCPiwgYjE6ICh4OiBCKSA9PiBSZXN1bHQ8Qz4sIGIyOiAoeDogQykgPT4gUmVzdWx0PEQ+LCBiMzogKHg6IEQpID0+IFJlc3VsdDxFPiwgYjQ6ICh4OiBFKSA9PiBSZXN1bHQ8Rj4pOiBSZXN1bHQ8Rj47XG5leHBvcnQgZnVuY3Rpb24gY2hhaW48QSwgQiwgQywgRCwgRSwgRiwgRz4odmFsdWU6IFJlc3VsdDxBPiwgYjA6ICh4OiBBKSA9PiBSZXN1bHQ8Qj4sIGIxOiAoeDogQikgPT4gUmVzdWx0PEM+LCBiMjogKHg6IEMpID0+IFJlc3VsdDxEPiwgYjM6ICh4OiBEKSA9PiBSZXN1bHQ8RT4sIGI0OiAoeDogRSkgPT4gUmVzdWx0PEY+LCBiNTogKHg6IEYpID0+IFJlc3VsdDxHPik6IFJlc3VsdDxHPjtcbmV4cG9ydCBmdW5jdGlvbiBjaGFpbih2YWx1ZTogUmVzdWx0PGFueT4sIC4uLmZuczogQXJyYXk8KHg6IGFueSkgPT4gUmVzdWx0PGFueT4+KTogUmVzdWx0PGFueT4ge1xuICBmb3IgKGNvbnN0IGZuIG9mIGZucykge1xuICAgIGlmIChpc0ZhaWx1cmUodmFsdWUpKSB7XG4gICAgICByZXR1cm4gdmFsdWU7XG4gICAgfVxuICAgIHZhbHVlID0gZm4odmFsdWUpO1xuICB9XG4gIHJldHVybiB2YWx1ZTtcbn1cbi8qIGVzbGludC1lbmFibGUgcHJldHRpZXIvcHJldHRpZXIgKi9cblxuLyoqXG4gKiBNYWtlIGEgZnVuY3Rpb24gdGhhdCB3aWxsIHByZXBlbmQgYSBwcmVmaXggdG8gZXJyb3IgbWVzc2FnZXNcbiAqXG4gKiBUaGlzIGlzIG9uZSB3YXkgdG8gYmUgc3BlY2lmaWMgYWJvdXQgdGhlIGxvY2F0aW9uIHdoZXJlIGVycm9ycyBvcmlnaW5hdGUsIGJ5IHByZWZpeGluZ1xuICogZXJyb3JzIGFzIHRoZSBjYWxsIHN0YWNrIHVud2luZHMuXG4gKlxuICogQSBkaWZmZXJlbnQgbWV0aG9kIGlzIHRvIHBhc3MgaW4gYSBtb2RpZmllZCBmYWlsdXJlIGZ1bmN0aW9uIHVzaW5nIGBmYWlsdXJlLmluKC4uLilgLFxuICogdG8gYnVpbGQgdGhlIGVycm9yIG1lc3NhZ2UgYXMgdGhlIGNhbGwgc3RhY2sgZGVlcGVucy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGxvY2F0ZUZhaWx1cmUocHJlZml4OiBzdHJpbmcpIHtcbiAgcmV0dXJuIDxBPih4OiBSZXN1bHQ8QT4pOiBSZXN1bHQ8QT4gPT4gKGlzRmFpbHVyZSh4KSA/IGZhaWx1cmUoYCR7cHJlZml4fTogJHt4W2Vycm9yU3ltXX1gKSA6IHgpO1xufVxuXG5leHBvcnQgdHlwZSBGYWlsdXJlcyA9IEFycmF5PEZhaWx1cmU+O1xuXG5leHBvcnQgZnVuY3Rpb24gbGlmdFJlc3VsdDxBPih4czogUmVjb3JkPHN0cmluZywgUmVzdWx0PEE+Pik6IFJlc3VsdDxSZWNvcmQ8c3RyaW5nLCBBPj47XG5leHBvcnQgZnVuY3Rpb24gbGlmdFJlc3VsdDxBPih4czogQXJyYXk8UmVzdWx0PEE+Pik6IFJlc3VsdDxBcnJheTxBPj47XG5leHBvcnQgZnVuY3Rpb24gbGlmdFJlc3VsdDxBPihcbiAgeHM6IFJlY29yZDxzdHJpbmcsIFJlc3VsdDxBPj4gfCBBcnJheTxSZXN1bHQ8QT4+LFxuKTogUmVzdWx0PFJlY29yZDxzdHJpbmcsIEE+PiB8IFJlc3VsdDxBcnJheTxBPj4ge1xuICBjb25zdCBmYWlsdXJlcyA9IEFycmF5LmlzQXJyYXkoeHMpID8geHMuZmlsdGVyKGlzRmFpbHVyZSkgOiBPYmplY3QudmFsdWVzKHhzKS5maWx0ZXIoaXNGYWlsdXJlKTtcbiAgaWYgKGZhaWx1cmVzLmxlbmd0aCA+IDApIHtcbiAgICByZXR1cm4gZmFpbHVyZShmYWlsdXJlcy5tYXAoZXJyb3JNZXNzYWdlKS5qb2luKCcsICcpKTtcbiAgfVxuICByZXR1cm4geHMgYXMgYW55O1xufVxuXG4vKipcbiAqIExpZnQgYSB2YWx1ZSB0aGF0IGNhbiBiZSAndW5kZWZpbmVkJyB0byBhIHJlc3VsdCwgb3IgYSBmdW5jdGlvbiB0aGF0IGNhbiByZXR1cm4gdW5kZWZpbmVkLlxuICovXG5leHBvcnQgZnVuY3Rpb24gbGlmdFVuZGVmaW5lZDxBPih2OiBBIHwgdW5kZWZpbmVkKTogUmVzdWx0PE5vbk51bGxhYmxlPEE+PjtcbmV4cG9ydCBmdW5jdGlvbiBsaWZ0VW5kZWZpbmVkPEEsIEYgZXh0ZW5kcyAoLi4uYXJnczogYW55W10pID0+IEE+KHY6IEYpOiAoeDogUGFyYW1ldGVyczxGPikgPT4gUmVzdWx0PE5vbk51bGxhYmxlPEE+PjtcbmV4cG9ydCBmdW5jdGlvbiBsaWZ0VW5kZWZpbmVkKHZhbHVlT3JGdW5jdGlvbjogYW55KTogYW55IHtcbiAgaWYgKHR5cGVvZiB2YWx1ZU9yRnVuY3Rpb24gPT09ICdmdW5jdGlvbicpIHtcbiAgICByZXR1cm4gKC4uLmFyZ3M6IGFueVtdKSA9PiB7XG4gICAgICBjb25zdCB2YWx1ZSA9IHZhbHVlT3JGdW5jdGlvbiguLi5hcmdzKTtcbiAgICAgIHJldHVybiB2YWx1ZSAhPT0gdW5kZWZpbmVkID8gdmFsdWUgOiBmYWlsdXJlKCd2YWx1ZSBpcyB1bmRlZmluZWQnKTtcbiAgICB9O1xuICB9XG4gIHJldHVybiB2YWx1ZU9yRnVuY3Rpb24gIT09IHVuZGVmaW5lZCA/IHZhbHVlT3JGdW5jdGlvbiA6IGZhaWx1cmUoJ3ZhbHVlIGlzIHVuZGVmaW5lZCcpO1xufVxuIl19","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.sortedMap = void 0;\n/**\n * A sorted map that may contain the same key multiple times\n *\n * Stored as a sorted array of [key, value] pairs, using binary search to locate\n * entries.\n */\nvar sortedMap;\n(function (sortedMap) {\n function add(map, cmp, key, value) {\n const i = lowerBound(map, cmp, key);\n map.splice(i, 0, [key, value]);\n }\n sortedMap.add = add;\n function find(map, cmp, key) {\n const i = lowerBound(map, cmp, key);\n if (i === map.length) {\n return undefined;\n }\n const [foundKey, value] = map[i];\n return cmp(foundKey, key) === 0 ? value : undefined;\n }\n sortedMap.find = find;\n function findAll(map, cmp, key) {\n let i = lowerBound(map, cmp, key);\n const ret = [];\n while (i < map.length && cmp(map[i][0], key) === 0) {\n ret.push(map[i][1]);\n i += 1;\n }\n return ret;\n }\n sortedMap.findAll = findAll;\n /**\n * Return the index to the first element in the the sorted map\n *\n * @see https://en.cppreference.com/w/cpp/algorithm/lower_bound#Version_2\n */\n function lowerBound(map, cmp, key) {\n let first = 0;\n let count = map.length;\n while (count > 0) {\n let it = first;\n let step = Math.floor(count / 2);\n it += step;\n if (cmp(map[it][0], key) < 0) {\n first = ++it;\n count -= step + 1;\n }\n else {\n count = step;\n }\n }\n return first;\n }\n})(sortedMap = exports.sortedMap || (exports.sortedMap = {}));\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic29ydGVkLW1hcC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9zb3J0ZWQtbWFwLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUVBOzs7OztHQUtHO0FBQ0gsSUFBaUIsU0FBUyxDQXNEekI7QUF0REQsV0FBaUIsU0FBUztJQUd4QixTQUFnQixHQUFHLENBQU8sR0FBeUIsRUFBRSxHQUFrQixFQUFFLEdBQU0sRUFBRSxLQUFRO1FBQ3ZGLE1BQU0sQ0FBQyxHQUFHLFVBQVUsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQ3BDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQ2pDLENBQUM7SUFIZSxhQUFHLE1BR2xCLENBQUE7SUFFRCxTQUFnQixJQUFJLENBQU8sR0FBeUIsRUFBRSxHQUFrQixFQUFFLEdBQU07UUFDOUUsTUFBTSxDQUFDLEdBQUcsVUFBVSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDcEMsSUFBSSxDQUFDLEtBQUssR0FBRyxDQUFDLE1BQU0sRUFBRTtZQUNwQixPQUFPLFNBQVMsQ0FBQztTQUNsQjtRQUVELE1BQU0sQ0FBQyxRQUFRLEVBQUUsS0FBSyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ2pDLE9BQU8sR0FBRyxDQUFDLFFBQVEsRUFBRSxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO0lBQ3RELENBQUM7SUFSZSxjQUFJLE9BUW5CLENBQUE7SUFFRCxTQUFnQixPQUFPLENBQU8sR0FBeUIsRUFBRSxHQUFrQixFQUFFLEdBQU07UUFDakYsSUFBSSxDQUFDLEdBQUcsVUFBVSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFFbEMsTUFBTSxHQUFHLEdBQUcsRUFBRSxDQUFDO1FBQ2YsT0FBTyxDQUFDLEdBQUcsR0FBRyxDQUFDLE1BQU0sSUFBSSxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUNsRCxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3BCLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDUjtRQUVELE9BQU8sR0FBRyxDQUFDO0lBQ2IsQ0FBQztJQVZlLGlCQUFPLFVBVXRCLENBQUE7SUFFRDs7OztPQUlHO0lBQ0gsU0FBUyxVQUFVLENBQU8sR0FBeUIsRUFBRSxHQUFrQixFQUFFLEdBQU07UUFDN0UsSUFBSSxLQUFLLEdBQUcsQ0FBQyxDQUFDO1FBQ2QsSUFBSSxLQUFLLEdBQUcsR0FBRyxDQUFDLE1BQU0sQ0FBQztRQUV2QixPQUFPLEtBQUssR0FBRyxDQUFDLEVBQUU7WUFDaEIsSUFBSSxFQUFFLEdBQUcsS0FBSyxDQUFDO1lBQ2YsSUFBSSxJQUFJLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUM7WUFDakMsRUFBRSxJQUFJLElBQUksQ0FBQztZQUVYLElBQUksR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUU7Z0JBQzVCLEtBQUssR0FBRyxFQUFFLEVBQUUsQ0FBQztnQkFDYixLQUFLLElBQUksSUFBSSxHQUFHLENBQUMsQ0FBQzthQUNuQjtpQkFBTTtnQkFDTCxLQUFLLEdBQUcsSUFBSSxDQUFDO2FBQ2Q7U0FDRjtRQUVELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztBQUNILENBQUMsRUF0RGdCLFNBQVMsR0FBVCxpQkFBUyxLQUFULGlCQUFTLFFBc0R6QiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB0eXBlIFNvcnRlZE11bHRpTWFwPEEsIEI+ID0gQXJyYXk8W0EsIEJdPjtcblxuLyoqXG4gKiBBIHNvcnRlZCBtYXAgdGhhdCBtYXkgY29udGFpbiB0aGUgc2FtZSBrZXkgbXVsdGlwbGUgdGltZXNcbiAqXG4gKiBTdG9yZWQgYXMgYSBzb3J0ZWQgYXJyYXkgb2YgW2tleSwgdmFsdWVdIHBhaXJzLCB1c2luZyBiaW5hcnkgc2VhcmNoIHRvIGxvY2F0ZVxuICogZW50cmllcy5cbiAqL1xuZXhwb3J0IG5hbWVzcGFjZSBzb3J0ZWRNYXAge1xuICBleHBvcnQgdHlwZSBDb21wYXJhdG9yPEE+ID0gKGE6IEEsIGI6IEEpID0+IG51bWJlcjtcblxuICBleHBvcnQgZnVuY3Rpb24gYWRkPEEsIEI+KG1hcDogU29ydGVkTXVsdGlNYXA8QSwgQj4sIGNtcDogQ29tcGFyYXRvcjxBPiwga2V5OiBBLCB2YWx1ZTogQikge1xuICAgIGNvbnN0IGkgPSBsb3dlckJvdW5kKG1hcCwgY21wLCBrZXkpO1xuICAgIG1hcC5zcGxpY2UoaSwgMCwgW2tleSwgdmFsdWVdKTtcbiAgfVxuXG4gIGV4cG9ydCBmdW5jdGlvbiBmaW5kPEEsIEI+KG1hcDogU29ydGVkTXVsdGlNYXA8QSwgQj4sIGNtcDogQ29tcGFyYXRvcjxBPiwga2V5OiBBKTogQiB8IHVuZGVmaW5lZCB7XG4gICAgY29uc3QgaSA9IGxvd2VyQm91bmQobWFwLCBjbXAsIGtleSk7XG4gICAgaWYgKGkgPT09IG1hcC5sZW5ndGgpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgY29uc3QgW2ZvdW5kS2V5LCB2YWx1ZV0gPSBtYXBbaV07XG4gICAgcmV0dXJuIGNtcChmb3VuZEtleSwga2V5KSA9PT0gMCA/IHZhbHVlIDogdW5kZWZpbmVkO1xuICB9XG5cbiAgZXhwb3J0IGZ1bmN0aW9uIGZpbmRBbGw8QSwgQj4obWFwOiBTb3J0ZWRNdWx0aU1hcDxBLCBCPiwgY21wOiBDb21wYXJhdG9yPEE+LCBrZXk6IEEpOiBCW10ge1xuICAgIGxldCBpID0gbG93ZXJCb3VuZChtYXAsIGNtcCwga2V5KTtcblxuICAgIGNvbnN0IHJldCA9IFtdO1xuICAgIHdoaWxlIChpIDwgbWFwLmxlbmd0aCAmJiBjbXAobWFwW2ldWzBdLCBrZXkpID09PSAwKSB7XG4gICAgICByZXQucHVzaChtYXBbaV1bMV0pO1xuICAgICAgaSArPSAxO1xuICAgIH1cblxuICAgIHJldHVybiByZXQ7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJuIHRoZSBpbmRleCB0byB0aGUgZmlyc3QgZWxlbWVudCBpbiB0aGUgdGhlIHNvcnRlZCBtYXBcbiAgICpcbiAgICogQHNlZSBodHRwczovL2VuLmNwcHJlZmVyZW5jZS5jb20vdy9jcHAvYWxnb3JpdGhtL2xvd2VyX2JvdW5kI1ZlcnNpb25fMlxuICAgKi9cbiAgZnVuY3Rpb24gbG93ZXJCb3VuZDxBLCBCPihtYXA6IFNvcnRlZE11bHRpTWFwPEEsIEI+LCBjbXA6IENvbXBhcmF0b3I8QT4sIGtleTogQSk6IG51bWJlciB7XG4gICAgbGV0IGZpcnN0ID0gMDtcbiAgICBsZXQgY291bnQgPSBtYXAubGVuZ3RoO1xuXG4gICAgd2hpbGUgKGNvdW50ID4gMCkge1xuICAgICAgbGV0IGl0ID0gZmlyc3Q7XG4gICAgICBsZXQgc3RlcCA9IE1hdGguZmxvb3IoY291bnQgLyAyKTtcbiAgICAgIGl0ICs9IHN0ZXA7XG5cbiAgICAgIGlmIChjbXAobWFwW2l0XVswXSwga2V5KSA8IDApIHtcbiAgICAgICAgZmlyc3QgPSArK2l0O1xuICAgICAgICBjb3VudCAtPSBzdGVwICsgMTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvdW50ID0gc3RlcDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gZmlyc3Q7XG4gIH1cbn1cbiJdfQ==","\"use strict\";\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// pkg/dist-src/index.js\nvar dist_src_exports = {};\n__export(dist_src_exports, {\n createTokenAuth: () => createTokenAuth\n});\nmodule.exports = __toCommonJS(dist_src_exports);\n\n// pkg/dist-src/auth.js\nvar REGEX_IS_INSTALLATION_LEGACY = /^v1\\./;\nvar REGEX_IS_INSTALLATION = /^ghs_/;\nvar REGEX_IS_USER_TO_SERVER = /^ghu_/;\nasync function auth(token) {\n const isApp = token.split(/\\./).length === 3;\n const isInstallation = REGEX_IS_INSTALLATION_LEGACY.test(token) || REGEX_IS_INSTALLATION.test(token);\n const isUserToServer = REGEX_IS_USER_TO_SERVER.test(token);\n const tokenType = isApp ? \"app\" : isInstallation ? \"installation\" : isUserToServer ? \"user-to-server\" : \"oauth\";\n return {\n type: \"token\",\n token,\n tokenType\n };\n}\n\n// pkg/dist-src/with-authorization-prefix.js\nfunction withAuthorizationPrefix(token) {\n if (token.split(/\\./).length === 3) {\n return `bearer ${token}`;\n }\n return `token ${token}`;\n}\n\n// pkg/dist-src/hook.js\nasync function hook(token, request, route, parameters) {\n const endpoint = request.endpoint.merge(\n route,\n parameters\n );\n endpoint.headers.authorization = withAuthorizationPrefix(token);\n return request(endpoint);\n}\n\n// pkg/dist-src/index.js\nvar createTokenAuth = function createTokenAuth2(token) {\n if (!token) {\n throw new Error(\"[@octokit/auth-token] No token passed to createTokenAuth\");\n }\n if (typeof token !== \"string\") {\n throw new Error(\n \"[@octokit/auth-token] Token passed to createTokenAuth is not a string\"\n );\n }\n token = token.replace(/^(token|bearer) +/i, \"\");\n return Object.assign(auth.bind(null, token), {\n hook: hook.bind(null, token)\n });\n};\n// Annotate the CommonJS export names for ESM import in node:\n0 && (module.exports = {\n createTokenAuth\n});\n","\"use strict\";\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// pkg/dist-src/index.js\nvar dist_src_exports = {};\n__export(dist_src_exports, {\n Octokit: () => Octokit\n});\nmodule.exports = __toCommonJS(dist_src_exports);\nvar import_universal_user_agent = require(\"universal-user-agent\");\nvar import_before_after_hook = require(\"before-after-hook\");\nvar import_request = require(\"@octokit/request\");\nvar import_graphql = require(\"@octokit/graphql\");\nvar import_auth_token = require(\"@octokit/auth-token\");\n\n// pkg/dist-src/version.js\nvar VERSION = \"5.2.0\";\n\n// pkg/dist-src/index.js\nvar noop = () => {\n};\nvar consoleWarn = console.warn.bind(console);\nvar consoleError = console.error.bind(console);\nvar userAgentTrail = `octokit-core.js/${VERSION} ${(0, import_universal_user_agent.getUserAgent)()}`;\nvar Octokit = class {\n static {\n this.VERSION = VERSION;\n }\n static defaults(defaults) {\n const OctokitWithDefaults = class extends this {\n constructor(...args) {\n const options = args[0] || {};\n if (typeof defaults === \"function\") {\n super(defaults(options));\n return;\n }\n super(\n Object.assign(\n {},\n defaults,\n options,\n options.userAgent && defaults.userAgent ? {\n userAgent: `${options.userAgent} ${defaults.userAgent}`\n } : null\n )\n );\n }\n };\n return OctokitWithDefaults;\n }\n static {\n this.plugins = [];\n }\n /**\n * Attach a plugin (or many) to your Octokit instance.\n *\n * @example\n * const API = Octokit.plugin(plugin1, plugin2, plugin3, ...)\n */\n static plugin(...newPlugins) {\n const currentPlugins = this.plugins;\n const NewOctokit = class extends this {\n static {\n this.plugins = currentPlugins.concat(\n newPlugins.filter((plugin) => !currentPlugins.includes(plugin))\n );\n }\n };\n return NewOctokit;\n }\n constructor(options = {}) {\n const hook = new import_before_after_hook.Collection();\n const requestDefaults = {\n baseUrl: import_request.request.endpoint.DEFAULTS.baseUrl,\n headers: {},\n request: Object.assign({}, options.request, {\n // @ts-ignore internal usage only, no need to type\n hook: hook.bind(null, \"request\")\n }),\n mediaType: {\n previews: [],\n format: \"\"\n }\n };\n requestDefaults.headers[\"user-agent\"] = options.userAgent ? `${options.userAgent} ${userAgentTrail}` : userAgentTrail;\n if (options.baseUrl) {\n requestDefaults.baseUrl = options.baseUrl;\n }\n if (options.previews) {\n requestDefaults.mediaType.previews = options.previews;\n }\n if (options.timeZone) {\n requestDefaults.headers[\"time-zone\"] = options.timeZone;\n }\n this.request = import_request.request.defaults(requestDefaults);\n this.graphql = (0, import_graphql.withCustomRequest)(this.request).defaults(requestDefaults);\n this.log = Object.assign(\n {\n debug: noop,\n info: noop,\n warn: consoleWarn,\n error: consoleError\n },\n options.log\n );\n this.hook = hook;\n if (!options.authStrategy) {\n if (!options.auth) {\n this.auth = async () => ({\n type: \"unauthenticated\"\n });\n } else {\n const auth = (0, import_auth_token.createTokenAuth)(options.auth);\n hook.wrap(\"request\", auth.hook);\n this.auth = auth;\n }\n } else {\n const { authStrategy, ...otherOptions } = options;\n const auth = authStrategy(\n Object.assign(\n {\n request: this.request,\n log: this.log,\n // we pass the current octokit instance as well as its constructor options\n // to allow for authentication strategies that return a new octokit instance\n // that shares the same internal state as the current one. The original\n // requirement for this was the \"event-octokit\" authentication strategy\n // of https://github.com/probot/octokit-auth-probot.\n octokit: this,\n octokitOptions: otherOptions\n },\n options.auth\n )\n );\n hook.wrap(\"request\", auth.hook);\n this.auth = auth;\n }\n const classConstructor = this.constructor;\n for (let i = 0; i < classConstructor.plugins.length; ++i) {\n Object.assign(this, classConstructor.plugins[i](this, options));\n }\n }\n};\n// Annotate the CommonJS export names for ESM import in node:\n0 && (module.exports = {\n Octokit\n});\n","\"use strict\";\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// pkg/dist-src/index.js\nvar dist_src_exports = {};\n__export(dist_src_exports, {\n endpoint: () => endpoint\n});\nmodule.exports = __toCommonJS(dist_src_exports);\n\n// pkg/dist-src/defaults.js\nvar import_universal_user_agent = require(\"universal-user-agent\");\n\n// pkg/dist-src/version.js\nvar VERSION = \"9.0.5\";\n\n// pkg/dist-src/defaults.js\nvar userAgent = `octokit-endpoint.js/${VERSION} ${(0, import_universal_user_agent.getUserAgent)()}`;\nvar DEFAULTS = {\n method: \"GET\",\n baseUrl: \"https://api.github.com\",\n headers: {\n accept: \"application/vnd.github.v3+json\",\n \"user-agent\": userAgent\n },\n mediaType: {\n format: \"\"\n }\n};\n\n// pkg/dist-src/util/lowercase-keys.js\nfunction lowercaseKeys(object) {\n if (!object) {\n return {};\n }\n return Object.keys(object).reduce((newObj, key) => {\n newObj[key.toLowerCase()] = object[key];\n return newObj;\n }, {});\n}\n\n// pkg/dist-src/util/is-plain-object.js\nfunction isPlainObject(value) {\n if (typeof value !== \"object\" || value === null)\n return false;\n if (Object.prototype.toString.call(value) !== \"[object Object]\")\n return false;\n const proto = Object.getPrototypeOf(value);\n if (proto === null)\n return true;\n const Ctor = Object.prototype.hasOwnProperty.call(proto, \"constructor\") && proto.constructor;\n return typeof Ctor === \"function\" && Ctor instanceof Ctor && Function.prototype.call(Ctor) === Function.prototype.call(value);\n}\n\n// pkg/dist-src/util/merge-deep.js\nfunction mergeDeep(defaults, options) {\n const result = Object.assign({}, defaults);\n Object.keys(options).forEach((key) => {\n if (isPlainObject(options[key])) {\n if (!(key in defaults))\n Object.assign(result, { [key]: options[key] });\n else\n result[key] = mergeDeep(defaults[key], options[key]);\n } else {\n Object.assign(result, { [key]: options[key] });\n }\n });\n return result;\n}\n\n// pkg/dist-src/util/remove-undefined-properties.js\nfunction removeUndefinedProperties(obj) {\n for (const key in obj) {\n if (obj[key] === void 0) {\n delete obj[key];\n }\n }\n return obj;\n}\n\n// pkg/dist-src/merge.js\nfunction merge(defaults, route, options) {\n if (typeof route === \"string\") {\n let [method, url] = route.split(\" \");\n options = Object.assign(url ? { method, url } : { url: method }, options);\n } else {\n options = Object.assign({}, route);\n }\n options.headers = lowercaseKeys(options.headers);\n removeUndefinedProperties(options);\n removeUndefinedProperties(options.headers);\n const mergedOptions = mergeDeep(defaults || {}, options);\n if (options.url === \"/graphql\") {\n if (defaults && defaults.mediaType.previews?.length) {\n mergedOptions.mediaType.previews = defaults.mediaType.previews.filter(\n (preview) => !mergedOptions.mediaType.previews.includes(preview)\n ).concat(mergedOptions.mediaType.previews);\n }\n mergedOptions.mediaType.previews = (mergedOptions.mediaType.previews || []).map((preview) => preview.replace(/-preview/, \"\"));\n }\n return mergedOptions;\n}\n\n// pkg/dist-src/util/add-query-parameters.js\nfunction addQueryParameters(url, parameters) {\n const separator = /\\?/.test(url) ? \"&\" : \"?\";\n const names = Object.keys(parameters);\n if (names.length === 0) {\n return url;\n }\n return url + separator + names.map((name) => {\n if (name === \"q\") {\n return \"q=\" + parameters.q.split(\"+\").map(encodeURIComponent).join(\"+\");\n }\n return `${name}=${encodeURIComponent(parameters[name])}`;\n }).join(\"&\");\n}\n\n// pkg/dist-src/util/extract-url-variable-names.js\nvar urlVariableRegex = /\\{[^}]+\\}/g;\nfunction removeNonChars(variableName) {\n return variableName.replace(/^\\W+|\\W+$/g, \"\").split(/,/);\n}\nfunction extractUrlVariableNames(url) {\n const matches = url.match(urlVariableRegex);\n if (!matches) {\n return [];\n }\n return matches.map(removeNonChars).reduce((a, b) => a.concat(b), []);\n}\n\n// pkg/dist-src/util/omit.js\nfunction omit(object, keysToOmit) {\n const result = { __proto__: null };\n for (const key of Object.keys(object)) {\n if (keysToOmit.indexOf(key) === -1) {\n result[key] = object[key];\n }\n }\n return result;\n}\n\n// pkg/dist-src/util/url-template.js\nfunction encodeReserved(str) {\n return str.split(/(%[0-9A-Fa-f]{2})/g).map(function(part) {\n if (!/%[0-9A-Fa-f]/.test(part)) {\n part = encodeURI(part).replace(/%5B/g, \"[\").replace(/%5D/g, \"]\");\n }\n return part;\n }).join(\"\");\n}\nfunction encodeUnreserved(str) {\n return encodeURIComponent(str).replace(/[!'()*]/g, function(c) {\n return \"%\" + c.charCodeAt(0).toString(16).toUpperCase();\n });\n}\nfunction encodeValue(operator, value, key) {\n value = operator === \"+\" || operator === \"#\" ? encodeReserved(value) : encodeUnreserved(value);\n if (key) {\n return encodeUnreserved(key) + \"=\" + value;\n } else {\n return value;\n }\n}\nfunction isDefined(value) {\n return value !== void 0 && value !== null;\n}\nfunction isKeyOperator(operator) {\n return operator === \";\" || operator === \"&\" || operator === \"?\";\n}\nfunction getValues(context, operator, key, modifier) {\n var value = context[key], result = [];\n if (isDefined(value) && value !== \"\") {\n if (typeof value === \"string\" || typeof value === \"number\" || typeof value === \"boolean\") {\n value = value.toString();\n if (modifier && modifier !== \"*\") {\n value = value.substring(0, parseInt(modifier, 10));\n }\n result.push(\n encodeValue(operator, value, isKeyOperator(operator) ? key : \"\")\n );\n } else {\n if (modifier === \"*\") {\n if (Array.isArray(value)) {\n value.filter(isDefined).forEach(function(value2) {\n result.push(\n encodeValue(operator, value2, isKeyOperator(operator) ? key : \"\")\n );\n });\n } else {\n Object.keys(value).forEach(function(k) {\n if (isDefined(value[k])) {\n result.push(encodeValue(operator, value[k], k));\n }\n });\n }\n } else {\n const tmp = [];\n if (Array.isArray(value)) {\n value.filter(isDefined).forEach(function(value2) {\n tmp.push(encodeValue(operator, value2));\n });\n } else {\n Object.keys(value).forEach(function(k) {\n if (isDefined(value[k])) {\n tmp.push(encodeUnreserved(k));\n tmp.push(encodeValue(operator, value[k].toString()));\n }\n });\n }\n if (isKeyOperator(operator)) {\n result.push(encodeUnreserved(key) + \"=\" + tmp.join(\",\"));\n } else if (tmp.length !== 0) {\n result.push(tmp.join(\",\"));\n }\n }\n }\n } else {\n if (operator === \";\") {\n if (isDefined(value)) {\n result.push(encodeUnreserved(key));\n }\n } else if (value === \"\" && (operator === \"&\" || operator === \"?\")) {\n result.push(encodeUnreserved(key) + \"=\");\n } else if (value === \"\") {\n result.push(\"\");\n }\n }\n return result;\n}\nfunction parseUrl(template) {\n return {\n expand: expand.bind(null, template)\n };\n}\nfunction expand(template, context) {\n var operators = [\"+\", \"#\", \".\", \"/\", \";\", \"?\", \"&\"];\n template = template.replace(\n /\\{([^\\{\\}]+)\\}|([^\\{\\}]+)/g,\n function(_, expression, literal) {\n if (expression) {\n let operator = \"\";\n const values = [];\n if (operators.indexOf(expression.charAt(0)) !== -1) {\n operator = expression.charAt(0);\n expression = expression.substr(1);\n }\n expression.split(/,/g).forEach(function(variable) {\n var tmp = /([^:\\*]*)(?::(\\d+)|(\\*))?/.exec(variable);\n values.push(getValues(context, operator, tmp[1], tmp[2] || tmp[3]));\n });\n if (operator && operator !== \"+\") {\n var separator = \",\";\n if (operator === \"?\") {\n separator = \"&\";\n } else if (operator !== \"#\") {\n separator = operator;\n }\n return (values.length !== 0 ? operator : \"\") + values.join(separator);\n } else {\n return values.join(\",\");\n }\n } else {\n return encodeReserved(literal);\n }\n }\n );\n if (template === \"/\") {\n return template;\n } else {\n return template.replace(/\\/$/, \"\");\n }\n}\n\n// pkg/dist-src/parse.js\nfunction parse(options) {\n let method = options.method.toUpperCase();\n let url = (options.url || \"/\").replace(/:([a-z]\\w+)/g, \"{$1}\");\n let headers = Object.assign({}, options.headers);\n let body;\n let parameters = omit(options, [\n \"method\",\n \"baseUrl\",\n \"url\",\n \"headers\",\n \"request\",\n \"mediaType\"\n ]);\n const urlVariableNames = extractUrlVariableNames(url);\n url = parseUrl(url).expand(parameters);\n if (!/^http/.test(url)) {\n url = options.baseUrl + url;\n }\n const omittedParameters = Object.keys(options).filter((option) => urlVariableNames.includes(option)).concat(\"baseUrl\");\n const remainingParameters = omit(parameters, omittedParameters);\n const isBinaryRequest = /application\\/octet-stream/i.test(headers.accept);\n if (!isBinaryRequest) {\n if (options.mediaType.format) {\n headers.accept = headers.accept.split(/,/).map(\n (format) => format.replace(\n /application\\/vnd(\\.\\w+)(\\.v3)?(\\.\\w+)?(\\+json)?$/,\n `application/vnd$1$2.${options.mediaType.format}`\n )\n ).join(\",\");\n }\n if (url.endsWith(\"/graphql\")) {\n if (options.mediaType.previews?.length) {\n const previewsFromAcceptHeader = headers.accept.match(/[\\w-]+(?=-preview)/g) || [];\n headers.accept = previewsFromAcceptHeader.concat(options.mediaType.previews).map((preview) => {\n const format = options.mediaType.format ? `.${options.mediaType.format}` : \"+json\";\n return `application/vnd.github.${preview}-preview${format}`;\n }).join(\",\");\n }\n }\n }\n if ([\"GET\", \"HEAD\"].includes(method)) {\n url = addQueryParameters(url, remainingParameters);\n } else {\n if (\"data\" in remainingParameters) {\n body = remainingParameters.data;\n } else {\n if (Object.keys(remainingParameters).length) {\n body = remainingParameters;\n }\n }\n }\n if (!headers[\"content-type\"] && typeof body !== \"undefined\") {\n headers[\"content-type\"] = \"application/json; charset=utf-8\";\n }\n if ([\"PATCH\", \"PUT\"].includes(method) && typeof body === \"undefined\") {\n body = \"\";\n }\n return Object.assign(\n { method, url, headers },\n typeof body !== \"undefined\" ? { body } : null,\n options.request ? { request: options.request } : null\n );\n}\n\n// pkg/dist-src/endpoint-with-defaults.js\nfunction endpointWithDefaults(defaults, route, options) {\n return parse(merge(defaults, route, options));\n}\n\n// pkg/dist-src/with-defaults.js\nfunction withDefaults(oldDefaults, newDefaults) {\n const DEFAULTS2 = merge(oldDefaults, newDefaults);\n const endpoint2 = endpointWithDefaults.bind(null, DEFAULTS2);\n return Object.assign(endpoint2, {\n DEFAULTS: DEFAULTS2,\n defaults: withDefaults.bind(null, DEFAULTS2),\n merge: merge.bind(null, DEFAULTS2),\n parse\n });\n}\n\n// pkg/dist-src/index.js\nvar endpoint = withDefaults(null, DEFAULTS);\n// Annotate the CommonJS export names for ESM import in node:\n0 && (module.exports = {\n endpoint\n});\n","\"use strict\";\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// pkg/dist-src/index.js\nvar dist_src_exports = {};\n__export(dist_src_exports, {\n GraphqlResponseError: () => GraphqlResponseError,\n graphql: () => graphql2,\n withCustomRequest: () => withCustomRequest\n});\nmodule.exports = __toCommonJS(dist_src_exports);\nvar import_request3 = require(\"@octokit/request\");\nvar import_universal_user_agent = require(\"universal-user-agent\");\n\n// pkg/dist-src/version.js\nvar VERSION = \"7.1.0\";\n\n// pkg/dist-src/with-defaults.js\nvar import_request2 = require(\"@octokit/request\");\n\n// pkg/dist-src/graphql.js\nvar import_request = require(\"@octokit/request\");\n\n// pkg/dist-src/error.js\nfunction _buildMessageForResponseErrors(data) {\n return `Request failed due to following response errors:\n` + data.errors.map((e) => ` - ${e.message}`).join(\"\\n\");\n}\nvar GraphqlResponseError = class extends Error {\n constructor(request2, headers, response) {\n super(_buildMessageForResponseErrors(response));\n this.request = request2;\n this.headers = headers;\n this.response = response;\n this.name = \"GraphqlResponseError\";\n this.errors = response.errors;\n this.data = response.data;\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, this.constructor);\n }\n }\n};\n\n// pkg/dist-src/graphql.js\nvar NON_VARIABLE_OPTIONS = [\n \"method\",\n \"baseUrl\",\n \"url\",\n \"headers\",\n \"request\",\n \"query\",\n \"mediaType\"\n];\nvar FORBIDDEN_VARIABLE_OPTIONS = [\"query\", \"method\", \"url\"];\nvar GHES_V3_SUFFIX_REGEX = /\\/api\\/v3\\/?$/;\nfunction graphql(request2, query, options) {\n if (options) {\n if (typeof query === \"string\" && \"query\" in options) {\n return Promise.reject(\n new Error(`[@octokit/graphql] \"query\" cannot be used as variable name`)\n );\n }\n for (const key in options) {\n if (!FORBIDDEN_VARIABLE_OPTIONS.includes(key))\n continue;\n return Promise.reject(\n new Error(\n `[@octokit/graphql] \"${key}\" cannot be used as variable name`\n )\n );\n }\n }\n const parsedOptions = typeof query === \"string\" ? Object.assign({ query }, options) : query;\n const requestOptions = Object.keys(\n parsedOptions\n ).reduce((result, key) => {\n if (NON_VARIABLE_OPTIONS.includes(key)) {\n result[key] = parsedOptions[key];\n return result;\n }\n if (!result.variables) {\n result.variables = {};\n }\n result.variables[key] = parsedOptions[key];\n return result;\n }, {});\n const baseUrl = parsedOptions.baseUrl || request2.endpoint.DEFAULTS.baseUrl;\n if (GHES_V3_SUFFIX_REGEX.test(baseUrl)) {\n requestOptions.url = baseUrl.replace(GHES_V3_SUFFIX_REGEX, \"/api/graphql\");\n }\n return request2(requestOptions).then((response) => {\n if (response.data.errors) {\n const headers = {};\n for (const key of Object.keys(response.headers)) {\n headers[key] = response.headers[key];\n }\n throw new GraphqlResponseError(\n requestOptions,\n headers,\n response.data\n );\n }\n return response.data.data;\n });\n}\n\n// pkg/dist-src/with-defaults.js\nfunction withDefaults(request2, newDefaults) {\n const newRequest = request2.defaults(newDefaults);\n const newApi = (query, options) => {\n return graphql(newRequest, query, options);\n };\n return Object.assign(newApi, {\n defaults: withDefaults.bind(null, newRequest),\n endpoint: newRequest.endpoint\n });\n}\n\n// pkg/dist-src/index.js\nvar graphql2 = withDefaults(import_request3.request, {\n headers: {\n \"user-agent\": `octokit-graphql.js/${VERSION} ${(0, import_universal_user_agent.getUserAgent)()}`\n },\n method: \"POST\",\n url: \"/graphql\"\n});\nfunction withCustomRequest(customRequest) {\n return withDefaults(customRequest, {\n method: \"POST\",\n url: \"/graphql\"\n });\n}\n// Annotate the CommonJS export names for ESM import in node:\n0 && (module.exports = {\n GraphqlResponseError,\n graphql,\n withCustomRequest\n});\n","\"use strict\";\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// pkg/dist-src/index.js\nvar dist_src_exports = {};\n__export(dist_src_exports, {\n composePaginateRest: () => composePaginateRest,\n isPaginatingEndpoint: () => isPaginatingEndpoint,\n paginateRest: () => paginateRest,\n paginatingEndpoints: () => paginatingEndpoints\n});\nmodule.exports = __toCommonJS(dist_src_exports);\n\n// pkg/dist-src/version.js\nvar VERSION = \"9.2.1\";\n\n// pkg/dist-src/normalize-paginated-list-response.js\nfunction normalizePaginatedListResponse(response) {\n if (!response.data) {\n return {\n ...response,\n data: []\n };\n }\n const responseNeedsNormalization = \"total_count\" in response.data && !(\"url\" in response.data);\n if (!responseNeedsNormalization)\n return response;\n const incompleteResults = response.data.incomplete_results;\n const repositorySelection = response.data.repository_selection;\n const totalCount = response.data.total_count;\n delete response.data.incomplete_results;\n delete response.data.repository_selection;\n delete response.data.total_count;\n const namespaceKey = Object.keys(response.data)[0];\n const data = response.data[namespaceKey];\n response.data = data;\n if (typeof incompleteResults !== \"undefined\") {\n response.data.incomplete_results = incompleteResults;\n }\n if (typeof repositorySelection !== \"undefined\") {\n response.data.repository_selection = repositorySelection;\n }\n response.data.total_count = totalCount;\n return response;\n}\n\n// pkg/dist-src/iterator.js\nfunction iterator(octokit, route, parameters) {\n const options = typeof route === \"function\" ? route.endpoint(parameters) : octokit.request.endpoint(route, parameters);\n const requestMethod = typeof route === \"function\" ? route : octokit.request;\n const method = options.method;\n const headers = options.headers;\n let url = options.url;\n return {\n [Symbol.asyncIterator]: () => ({\n async next() {\n if (!url)\n return { done: true };\n try {\n const response = await requestMethod({ method, url, headers });\n const normalizedResponse = normalizePaginatedListResponse(response);\n url = ((normalizedResponse.headers.link || \"\").match(\n /<([^>]+)>;\\s*rel=\"next\"/\n ) || [])[1];\n return { value: normalizedResponse };\n } catch (error) {\n if (error.status !== 409)\n throw error;\n url = \"\";\n return {\n value: {\n status: 200,\n headers: {},\n data: []\n }\n };\n }\n }\n })\n };\n}\n\n// pkg/dist-src/paginate.js\nfunction paginate(octokit, route, parameters, mapFn) {\n if (typeof parameters === \"function\") {\n mapFn = parameters;\n parameters = void 0;\n }\n return gather(\n octokit,\n [],\n iterator(octokit, route, parameters)[Symbol.asyncIterator](),\n mapFn\n );\n}\nfunction gather(octokit, results, iterator2, mapFn) {\n return iterator2.next().then((result) => {\n if (result.done) {\n return results;\n }\n let earlyExit = false;\n function done() {\n earlyExit = true;\n }\n results = results.concat(\n mapFn ? mapFn(result.value, done) : result.value.data\n );\n if (earlyExit) {\n return results;\n }\n return gather(octokit, results, iterator2, mapFn);\n });\n}\n\n// pkg/dist-src/compose-paginate.js\nvar composePaginateRest = Object.assign(paginate, {\n iterator\n});\n\n// pkg/dist-src/generated/paginating-endpoints.js\nvar paginatingEndpoints = [\n \"GET /advisories\",\n \"GET /app/hook/deliveries\",\n \"GET /app/installation-requests\",\n \"GET /app/installations\",\n \"GET /assignments/{assignment_id}/accepted_assignments\",\n \"GET /classrooms\",\n \"GET /classrooms/{classroom_id}/assignments\",\n \"GET /enterprises/{enterprise}/dependabot/alerts\",\n \"GET /enterprises/{enterprise}/secret-scanning/alerts\",\n \"GET /events\",\n \"GET /gists\",\n \"GET /gists/public\",\n \"GET /gists/starred\",\n \"GET /gists/{gist_id}/comments\",\n \"GET /gists/{gist_id}/commits\",\n \"GET /gists/{gist_id}/forks\",\n \"GET /installation/repositories\",\n \"GET /issues\",\n \"GET /licenses\",\n \"GET /marketplace_listing/plans\",\n \"GET /marketplace_listing/plans/{plan_id}/accounts\",\n \"GET /marketplace_listing/stubbed/plans\",\n \"GET /marketplace_listing/stubbed/plans/{plan_id}/accounts\",\n \"GET /networks/{owner}/{repo}/events\",\n \"GET /notifications\",\n \"GET /organizations\",\n \"GET /orgs/{org}/actions/cache/usage-by-repository\",\n \"GET /orgs/{org}/actions/permissions/repositories\",\n \"GET /orgs/{org}/actions/runners\",\n \"GET /orgs/{org}/actions/secrets\",\n \"GET /orgs/{org}/actions/secrets/{secret_name}/repositories\",\n \"GET /orgs/{org}/actions/variables\",\n \"GET /orgs/{org}/actions/variables/{name}/repositories\",\n \"GET /orgs/{org}/blocks\",\n \"GET /orgs/{org}/code-scanning/alerts\",\n \"GET /orgs/{org}/codespaces\",\n \"GET /orgs/{org}/codespaces/secrets\",\n \"GET /orgs/{org}/codespaces/secrets/{secret_name}/repositories\",\n \"GET /orgs/{org}/copilot/billing/seats\",\n \"GET /orgs/{org}/dependabot/alerts\",\n \"GET /orgs/{org}/dependabot/secrets\",\n \"GET /orgs/{org}/dependabot/secrets/{secret_name}/repositories\",\n \"GET /orgs/{org}/events\",\n \"GET /orgs/{org}/failed_invitations\",\n \"GET /orgs/{org}/hooks\",\n \"GET /orgs/{org}/hooks/{hook_id}/deliveries\",\n \"GET /orgs/{org}/installations\",\n \"GET /orgs/{org}/invitations\",\n \"GET /orgs/{org}/invitations/{invitation_id}/teams\",\n \"GET /orgs/{org}/issues\",\n \"GET /orgs/{org}/members\",\n \"GET /orgs/{org}/members/{username}/codespaces\",\n \"GET /orgs/{org}/migrations\",\n \"GET /orgs/{org}/migrations/{migration_id}/repositories\",\n \"GET /orgs/{org}/organization-roles/{role_id}/teams\",\n \"GET /orgs/{org}/organization-roles/{role_id}/users\",\n \"GET /orgs/{org}/outside_collaborators\",\n \"GET /orgs/{org}/packages\",\n \"GET /orgs/{org}/packages/{package_type}/{package_name}/versions\",\n \"GET /orgs/{org}/personal-access-token-requests\",\n \"GET /orgs/{org}/personal-access-token-requests/{pat_request_id}/repositories\",\n \"GET /orgs/{org}/personal-access-tokens\",\n \"GET /orgs/{org}/personal-access-tokens/{pat_id}/repositories\",\n \"GET /orgs/{org}/projects\",\n \"GET /orgs/{org}/properties/values\",\n \"GET /orgs/{org}/public_members\",\n \"GET /orgs/{org}/repos\",\n \"GET /orgs/{org}/rulesets\",\n \"GET /orgs/{org}/rulesets/rule-suites\",\n \"GET /orgs/{org}/secret-scanning/alerts\",\n \"GET /orgs/{org}/security-advisories\",\n \"GET /orgs/{org}/teams\",\n \"GET /orgs/{org}/teams/{team_slug}/discussions\",\n \"GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments\",\n \"GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}/reactions\",\n \"GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/reactions\",\n \"GET /orgs/{org}/teams/{team_slug}/invitations\",\n \"GET /orgs/{org}/teams/{team_slug}/members\",\n \"GET /orgs/{org}/teams/{team_slug}/projects\",\n \"GET /orgs/{org}/teams/{team_slug}/repos\",\n \"GET /orgs/{org}/teams/{team_slug}/teams\",\n \"GET /projects/columns/{column_id}/cards\",\n \"GET /projects/{project_id}/collaborators\",\n \"GET /projects/{project_id}/columns\",\n \"GET /repos/{owner}/{repo}/actions/artifacts\",\n \"GET /repos/{owner}/{repo}/actions/caches\",\n \"GET /repos/{owner}/{repo}/actions/organization-secrets\",\n \"GET /repos/{owner}/{repo}/actions/organization-variables\",\n \"GET /repos/{owner}/{repo}/actions/runners\",\n \"GET /repos/{owner}/{repo}/actions/runs\",\n \"GET /repos/{owner}/{repo}/actions/runs/{run_id}/artifacts\",\n \"GET /repos/{owner}/{repo}/actions/runs/{run_id}/attempts/{attempt_number}/jobs\",\n \"GET /repos/{owner}/{repo}/actions/runs/{run_id}/jobs\",\n \"GET /repos/{owner}/{repo}/actions/secrets\",\n \"GET /repos/{owner}/{repo}/actions/variables\",\n \"GET /repos/{owner}/{repo}/actions/workflows\",\n \"GET /repos/{owner}/{repo}/actions/workflows/{workflow_id}/runs\",\n \"GET /repos/{owner}/{repo}/activity\",\n \"GET /repos/{owner}/{repo}/assignees\",\n \"GET /repos/{owner}/{repo}/branches\",\n \"GET /repos/{owner}/{repo}/check-runs/{check_run_id}/annotations\",\n \"GET /repos/{owner}/{repo}/check-suites/{check_suite_id}/check-runs\",\n \"GET /repos/{owner}/{repo}/code-scanning/alerts\",\n \"GET /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}/instances\",\n \"GET /repos/{owner}/{repo}/code-scanning/analyses\",\n \"GET /repos/{owner}/{repo}/codespaces\",\n \"GET /repos/{owner}/{repo}/codespaces/devcontainers\",\n \"GET /repos/{owner}/{repo}/codespaces/secrets\",\n \"GET /repos/{owner}/{repo}/collaborators\",\n \"GET /repos/{owner}/{repo}/comments\",\n \"GET /repos/{owner}/{repo}/comments/{comment_id}/reactions\",\n \"GET /repos/{owner}/{repo}/commits\",\n \"GET /repos/{owner}/{repo}/commits/{commit_sha}/comments\",\n \"GET /repos/{owner}/{repo}/commits/{commit_sha}/pulls\",\n \"GET /repos/{owner}/{repo}/commits/{ref}/check-runs\",\n \"GET /repos/{owner}/{repo}/commits/{ref}/check-suites\",\n \"GET /repos/{owner}/{repo}/commits/{ref}/status\",\n \"GET /repos/{owner}/{repo}/commits/{ref}/statuses\",\n \"GET /repos/{owner}/{repo}/contributors\",\n \"GET /repos/{owner}/{repo}/dependabot/alerts\",\n \"GET /repos/{owner}/{repo}/dependabot/secrets\",\n \"GET /repos/{owner}/{repo}/deployments\",\n \"GET /repos/{owner}/{repo}/deployments/{deployment_id}/statuses\",\n \"GET /repos/{owner}/{repo}/environments\",\n \"GET /repos/{owner}/{repo}/environments/{environment_name}/deployment-branch-policies\",\n \"GET /repos/{owner}/{repo}/environments/{environment_name}/deployment_protection_rules/apps\",\n \"GET /repos/{owner}/{repo}/events\",\n \"GET /repos/{owner}/{repo}/forks\",\n \"GET /repos/{owner}/{repo}/hooks\",\n \"GET /repos/{owner}/{repo}/hooks/{hook_id}/deliveries\",\n \"GET /repos/{owner}/{repo}/invitations\",\n \"GET /repos/{owner}/{repo}/issues\",\n \"GET /repos/{owner}/{repo}/issues/comments\",\n \"GET /repos/{owner}/{repo}/issues/comments/{comment_id}/reactions\",\n \"GET /repos/{owner}/{repo}/issues/events\",\n \"GET /repos/{owner}/{repo}/issues/{issue_number}/comments\",\n \"GET /repos/{owner}/{repo}/issues/{issue_number}/events\",\n \"GET /repos/{owner}/{repo}/issues/{issue_number}/labels\",\n \"GET /repos/{owner}/{repo}/issues/{issue_number}/reactions\",\n \"GET /repos/{owner}/{repo}/issues/{issue_number}/timeline\",\n \"GET /repos/{owner}/{repo}/keys\",\n \"GET /repos/{owner}/{repo}/labels\",\n \"GET /repos/{owner}/{repo}/milestones\",\n \"GET /repos/{owner}/{repo}/milestones/{milestone_number}/labels\",\n \"GET /repos/{owner}/{repo}/notifications\",\n \"GET /repos/{owner}/{repo}/pages/builds\",\n \"GET /repos/{owner}/{repo}/projects\",\n \"GET /repos/{owner}/{repo}/pulls\",\n \"GET /repos/{owner}/{repo}/pulls/comments\",\n \"GET /repos/{owner}/{repo}/pulls/comments/{comment_id}/reactions\",\n \"GET /repos/{owner}/{repo}/pulls/{pull_number}/comments\",\n \"GET /repos/{owner}/{repo}/pulls/{pull_number}/commits\",\n \"GET /repos/{owner}/{repo}/pulls/{pull_number}/files\",\n \"GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews\",\n \"GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/comments\",\n \"GET /repos/{owner}/{repo}/releases\",\n \"GET /repos/{owner}/{repo}/releases/{release_id}/assets\",\n \"GET /repos/{owner}/{repo}/releases/{release_id}/reactions\",\n \"GET /repos/{owner}/{repo}/rules/branches/{branch}\",\n \"GET /repos/{owner}/{repo}/rulesets\",\n \"GET /repos/{owner}/{repo}/rulesets/rule-suites\",\n \"GET /repos/{owner}/{repo}/secret-scanning/alerts\",\n \"GET /repos/{owner}/{repo}/secret-scanning/alerts/{alert_number}/locations\",\n \"GET /repos/{owner}/{repo}/security-advisories\",\n \"GET /repos/{owner}/{repo}/stargazers\",\n \"GET /repos/{owner}/{repo}/subscribers\",\n \"GET /repos/{owner}/{repo}/tags\",\n \"GET /repos/{owner}/{repo}/teams\",\n \"GET /repos/{owner}/{repo}/topics\",\n \"GET /repositories\",\n \"GET /repositories/{repository_id}/environments/{environment_name}/secrets\",\n \"GET /repositories/{repository_id}/environments/{environment_name}/variables\",\n \"GET /search/code\",\n \"GET /search/commits\",\n \"GET /search/issues\",\n \"GET /search/labels\",\n \"GET /search/repositories\",\n \"GET /search/topics\",\n \"GET /search/users\",\n \"GET /teams/{team_id}/discussions\",\n \"GET /teams/{team_id}/discussions/{discussion_number}/comments\",\n \"GET /teams/{team_id}/discussions/{discussion_number}/comments/{comment_number}/reactions\",\n \"GET /teams/{team_id}/discussions/{discussion_number}/reactions\",\n \"GET /teams/{team_id}/invitations\",\n \"GET /teams/{team_id}/members\",\n \"GET /teams/{team_id}/projects\",\n \"GET /teams/{team_id}/repos\",\n \"GET /teams/{team_id}/teams\",\n \"GET /user/blocks\",\n \"GET /user/codespaces\",\n \"GET /user/codespaces/secrets\",\n \"GET /user/emails\",\n \"GET /user/followers\",\n \"GET /user/following\",\n \"GET /user/gpg_keys\",\n \"GET /user/installations\",\n \"GET /user/installations/{installation_id}/repositories\",\n \"GET /user/issues\",\n \"GET /user/keys\",\n \"GET /user/marketplace_purchases\",\n \"GET /user/marketplace_purchases/stubbed\",\n \"GET /user/memberships/orgs\",\n \"GET /user/migrations\",\n \"GET /user/migrations/{migration_id}/repositories\",\n \"GET /user/orgs\",\n \"GET /user/packages\",\n \"GET /user/packages/{package_type}/{package_name}/versions\",\n \"GET /user/public_emails\",\n \"GET /user/repos\",\n \"GET /user/repository_invitations\",\n \"GET /user/social_accounts\",\n \"GET /user/ssh_signing_keys\",\n \"GET /user/starred\",\n \"GET /user/subscriptions\",\n \"GET /user/teams\",\n \"GET /users\",\n \"GET /users/{username}/events\",\n \"GET /users/{username}/events/orgs/{org}\",\n \"GET /users/{username}/events/public\",\n \"GET /users/{username}/followers\",\n \"GET /users/{username}/following\",\n \"GET /users/{username}/gists\",\n \"GET /users/{username}/gpg_keys\",\n \"GET /users/{username}/keys\",\n \"GET /users/{username}/orgs\",\n \"GET /users/{username}/packages\",\n \"GET /users/{username}/projects\",\n \"GET /users/{username}/received_events\",\n \"GET /users/{username}/received_events/public\",\n \"GET /users/{username}/repos\",\n \"GET /users/{username}/social_accounts\",\n \"GET /users/{username}/ssh_signing_keys\",\n \"GET /users/{username}/starred\",\n \"GET /users/{username}/subscriptions\"\n];\n\n// pkg/dist-src/paginating-endpoints.js\nfunction isPaginatingEndpoint(arg) {\n if (typeof arg === \"string\") {\n return paginatingEndpoints.includes(arg);\n } else {\n return false;\n }\n}\n\n// pkg/dist-src/index.js\nfunction paginateRest(octokit) {\n return {\n paginate: Object.assign(paginate.bind(null, octokit), {\n iterator: iterator.bind(null, octokit)\n })\n };\n}\npaginateRest.VERSION = VERSION;\n// Annotate the CommonJS export names for ESM import in node:\n0 && (module.exports = {\n composePaginateRest,\n isPaginatingEndpoint,\n paginateRest,\n paginatingEndpoints\n});\n","\"use strict\";\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// pkg/dist-src/index.js\nvar dist_src_exports = {};\n__export(dist_src_exports, {\n legacyRestEndpointMethods: () => legacyRestEndpointMethods,\n restEndpointMethods: () => restEndpointMethods\n});\nmodule.exports = __toCommonJS(dist_src_exports);\n\n// pkg/dist-src/version.js\nvar VERSION = \"10.4.1\";\n\n// pkg/dist-src/generated/endpoints.js\nvar Endpoints = {\n actions: {\n addCustomLabelsToSelfHostedRunnerForOrg: [\n \"POST /orgs/{org}/actions/runners/{runner_id}/labels\"\n ],\n addCustomLabelsToSelfHostedRunnerForRepo: [\n \"POST /repos/{owner}/{repo}/actions/runners/{runner_id}/labels\"\n ],\n addSelectedRepoToOrgSecret: [\n \"PUT /orgs/{org}/actions/secrets/{secret_name}/repositories/{repository_id}\"\n ],\n addSelectedRepoToOrgVariable: [\n \"PUT /orgs/{org}/actions/variables/{name}/repositories/{repository_id}\"\n ],\n approveWorkflowRun: [\n \"POST /repos/{owner}/{repo}/actions/runs/{run_id}/approve\"\n ],\n cancelWorkflowRun: [\n \"POST /repos/{owner}/{repo}/actions/runs/{run_id}/cancel\"\n ],\n createEnvironmentVariable: [\n \"POST /repositories/{repository_id}/environments/{environment_name}/variables\"\n ],\n createOrUpdateEnvironmentSecret: [\n \"PUT /repositories/{repository_id}/environments/{environment_name}/secrets/{secret_name}\"\n ],\n createOrUpdateOrgSecret: [\"PUT /orgs/{org}/actions/secrets/{secret_name}\"],\n createOrUpdateRepoSecret: [\n \"PUT /repos/{owner}/{repo}/actions/secrets/{secret_name}\"\n ],\n createOrgVariable: [\"POST /orgs/{org}/actions/variables\"],\n createRegistrationTokenForOrg: [\n \"POST /orgs/{org}/actions/runners/registration-token\"\n ],\n createRegistrationTokenForRepo: [\n \"POST /repos/{owner}/{repo}/actions/runners/registration-token\"\n ],\n createRemoveTokenForOrg: [\"POST /orgs/{org}/actions/runners/remove-token\"],\n createRemoveTokenForRepo: [\n \"POST /repos/{owner}/{repo}/actions/runners/remove-token\"\n ],\n createRepoVariable: [\"POST /repos/{owner}/{repo}/actions/variables\"],\n createWorkflowDispatch: [\n \"POST /repos/{owner}/{repo}/actions/workflows/{workflow_id}/dispatches\"\n ],\n deleteActionsCacheById: [\n \"DELETE /repos/{owner}/{repo}/actions/caches/{cache_id}\"\n ],\n deleteActionsCacheByKey: [\n \"DELETE /repos/{owner}/{repo}/actions/caches{?key,ref}\"\n ],\n deleteArtifact: [\n \"DELETE /repos/{owner}/{repo}/actions/artifacts/{artifact_id}\"\n ],\n deleteEnvironmentSecret: [\n \"DELETE /repositories/{repository_id}/environments/{environment_name}/secrets/{secret_name}\"\n ],\n deleteEnvironmentVariable: [\n \"DELETE /repositories/{repository_id}/environments/{environment_name}/variables/{name}\"\n ],\n deleteOrgSecret: [\"DELETE /orgs/{org}/actions/secrets/{secret_name}\"],\n deleteOrgVariable: [\"DELETE /orgs/{org}/actions/variables/{name}\"],\n deleteRepoSecret: [\n \"DELETE /repos/{owner}/{repo}/actions/secrets/{secret_name}\"\n ],\n deleteRepoVariable: [\n \"DELETE /repos/{owner}/{repo}/actions/variables/{name}\"\n ],\n deleteSelfHostedRunnerFromOrg: [\n \"DELETE /orgs/{org}/actions/runners/{runner_id}\"\n ],\n deleteSelfHostedRunnerFromRepo: [\n \"DELETE /repos/{owner}/{repo}/actions/runners/{runner_id}\"\n ],\n deleteWorkflowRun: [\"DELETE /repos/{owner}/{repo}/actions/runs/{run_id}\"],\n deleteWorkflowRunLogs: [\n \"DELETE /repos/{owner}/{repo}/actions/runs/{run_id}/logs\"\n ],\n disableSelectedRepositoryGithubActionsOrganization: [\n \"DELETE /orgs/{org}/actions/permissions/repositories/{repository_id}\"\n ],\n disableWorkflow: [\n \"PUT /repos/{owner}/{repo}/actions/workflows/{workflow_id}/disable\"\n ],\n downloadArtifact: [\n \"GET /repos/{owner}/{repo}/actions/artifacts/{artifact_id}/{archive_format}\"\n ],\n downloadJobLogsForWorkflowRun: [\n \"GET /repos/{owner}/{repo}/actions/jobs/{job_id}/logs\"\n ],\n downloadWorkflowRunAttemptLogs: [\n \"GET /repos/{owner}/{repo}/actions/runs/{run_id}/attempts/{attempt_number}/logs\"\n ],\n downloadWorkflowRunLogs: [\n \"GET /repos/{owner}/{repo}/actions/runs/{run_id}/logs\"\n ],\n enableSelectedRepositoryGithubActionsOrganization: [\n \"PUT /orgs/{org}/actions/permissions/repositories/{repository_id}\"\n ],\n enableWorkflow: [\n \"PUT /repos/{owner}/{repo}/actions/workflows/{workflow_id}/enable\"\n ],\n forceCancelWorkflowRun: [\n \"POST /repos/{owner}/{repo}/actions/runs/{run_id}/force-cancel\"\n ],\n generateRunnerJitconfigForOrg: [\n \"POST /orgs/{org}/actions/runners/generate-jitconfig\"\n ],\n generateRunnerJitconfigForRepo: [\n \"POST /repos/{owner}/{repo}/actions/runners/generate-jitconfig\"\n ],\n getActionsCacheList: [\"GET /repos/{owner}/{repo}/actions/caches\"],\n getActionsCacheUsage: [\"GET /repos/{owner}/{repo}/actions/cache/usage\"],\n getActionsCacheUsageByRepoForOrg: [\n \"GET /orgs/{org}/actions/cache/usage-by-repository\"\n ],\n getActionsCacheUsageForOrg: [\"GET /orgs/{org}/actions/cache/usage\"],\n getAllowedActionsOrganization: [\n \"GET /orgs/{org}/actions/permissions/selected-actions\"\n ],\n getAllowedActionsRepository: [\n \"GET /repos/{owner}/{repo}/actions/permissions/selected-actions\"\n ],\n getArtifact: [\"GET /repos/{owner}/{repo}/actions/artifacts/{artifact_id}\"],\n getCustomOidcSubClaimForRepo: [\n \"GET /repos/{owner}/{repo}/actions/oidc/customization/sub\"\n ],\n getEnvironmentPublicKey: [\n \"GET /repositories/{repository_id}/environments/{environment_name}/secrets/public-key\"\n ],\n getEnvironmentSecret: [\n \"GET /repositories/{repository_id}/environments/{environment_name}/secrets/{secret_name}\"\n ],\n getEnvironmentVariable: [\n \"GET /repositories/{repository_id}/environments/{environment_name}/variables/{name}\"\n ],\n getGithubActionsDefaultWorkflowPermissionsOrganization: [\n \"GET /orgs/{org}/actions/permissions/workflow\"\n ],\n getGithubActionsDefaultWorkflowPermissionsRepository: [\n \"GET /repos/{owner}/{repo}/actions/permissions/workflow\"\n ],\n getGithubActionsPermissionsOrganization: [\n \"GET /orgs/{org}/actions/permissions\"\n ],\n getGithubActionsPermissionsRepository: [\n \"GET /repos/{owner}/{repo}/actions/permissions\"\n ],\n getJobForWorkflowRun: [\"GET /repos/{owner}/{repo}/actions/jobs/{job_id}\"],\n getOrgPublicKey: [\"GET /orgs/{org}/actions/secrets/public-key\"],\n getOrgSecret: [\"GET /orgs/{org}/actions/secrets/{secret_name}\"],\n getOrgVariable: [\"GET /orgs/{org}/actions/variables/{name}\"],\n getPendingDeploymentsForRun: [\n \"GET /repos/{owner}/{repo}/actions/runs/{run_id}/pending_deployments\"\n ],\n getRepoPermissions: [\n \"GET /repos/{owner}/{repo}/actions/permissions\",\n {},\n { renamed: [\"actions\", \"getGithubActionsPermissionsRepository\"] }\n ],\n getRepoPublicKey: [\"GET /repos/{owner}/{repo}/actions/secrets/public-key\"],\n getRepoSecret: [\"GET /repos/{owner}/{repo}/actions/secrets/{secret_name}\"],\n getRepoVariable: [\"GET /repos/{owner}/{repo}/actions/variables/{name}\"],\n getReviewsForRun: [\n \"GET /repos/{owner}/{repo}/actions/runs/{run_id}/approvals\"\n ],\n getSelfHostedRunnerForOrg: [\"GET /orgs/{org}/actions/runners/{runner_id}\"],\n getSelfHostedRunnerForRepo: [\n \"GET /repos/{owner}/{repo}/actions/runners/{runner_id}\"\n ],\n getWorkflow: [\"GET /repos/{owner}/{repo}/actions/workflows/{workflow_id}\"],\n getWorkflowAccessToRepository: [\n \"GET /repos/{owner}/{repo}/actions/permissions/access\"\n ],\n getWorkflowRun: [\"GET /repos/{owner}/{repo}/actions/runs/{run_id}\"],\n getWorkflowRunAttempt: [\n \"GET /repos/{owner}/{repo}/actions/runs/{run_id}/attempts/{attempt_number}\"\n ],\n getWorkflowRunUsage: [\n \"GET /repos/{owner}/{repo}/actions/runs/{run_id}/timing\"\n ],\n getWorkflowUsage: [\n \"GET /repos/{owner}/{repo}/actions/workflows/{workflow_id}/timing\"\n ],\n listArtifactsForRepo: [\"GET /repos/{owner}/{repo}/actions/artifacts\"],\n listEnvironmentSecrets: [\n \"GET /repositories/{repository_id}/environments/{environment_name}/secrets\"\n ],\n listEnvironmentVariables: [\n \"GET /repositories/{repository_id}/environments/{environment_name}/variables\"\n ],\n listJobsForWorkflowRun: [\n \"GET /repos/{owner}/{repo}/actions/runs/{run_id}/jobs\"\n ],\n listJobsForWorkflowRunAttempt: [\n \"GET /repos/{owner}/{repo}/actions/runs/{run_id}/attempts/{attempt_number}/jobs\"\n ],\n listLabelsForSelfHostedRunnerForOrg: [\n \"GET /orgs/{org}/actions/runners/{runner_id}/labels\"\n ],\n listLabelsForSelfHostedRunnerForRepo: [\n \"GET /repos/{owner}/{repo}/actions/runners/{runner_id}/labels\"\n ],\n listOrgSecrets: [\"GET /orgs/{org}/actions/secrets\"],\n listOrgVariables: [\"GET /orgs/{org}/actions/variables\"],\n listRepoOrganizationSecrets: [\n \"GET /repos/{owner}/{repo}/actions/organization-secrets\"\n ],\n listRepoOrganizationVariables: [\n \"GET /repos/{owner}/{repo}/actions/organization-variables\"\n ],\n listRepoSecrets: [\"GET /repos/{owner}/{repo}/actions/secrets\"],\n listRepoVariables: [\"GET /repos/{owner}/{repo}/actions/variables\"],\n listRepoWorkflows: [\"GET /repos/{owner}/{repo}/actions/workflows\"],\n listRunnerApplicationsForOrg: [\"GET /orgs/{org}/actions/runners/downloads\"],\n listRunnerApplicationsForRepo: [\n \"GET /repos/{owner}/{repo}/actions/runners/downloads\"\n ],\n listSelectedReposForOrgSecret: [\n \"GET /orgs/{org}/actions/secrets/{secret_name}/repositories\"\n ],\n listSelectedReposForOrgVariable: [\n \"GET /orgs/{org}/actions/variables/{name}/repositories\"\n ],\n listSelectedRepositoriesEnabledGithubActionsOrganization: [\n \"GET /orgs/{org}/actions/permissions/repositories\"\n ],\n listSelfHostedRunnersForOrg: [\"GET /orgs/{org}/actions/runners\"],\n listSelfHostedRunnersForRepo: [\"GET /repos/{owner}/{repo}/actions/runners\"],\n listWorkflowRunArtifacts: [\n \"GET /repos/{owner}/{repo}/actions/runs/{run_id}/artifacts\"\n ],\n listWorkflowRuns: [\n \"GET /repos/{owner}/{repo}/actions/workflows/{workflow_id}/runs\"\n ],\n listWorkflowRunsForRepo: [\"GET /repos/{owner}/{repo}/actions/runs\"],\n reRunJobForWorkflowRun: [\n \"POST /repos/{owner}/{repo}/actions/jobs/{job_id}/rerun\"\n ],\n reRunWorkflow: [\"POST /repos/{owner}/{repo}/actions/runs/{run_id}/rerun\"],\n reRunWorkflowFailedJobs: [\n \"POST /repos/{owner}/{repo}/actions/runs/{run_id}/rerun-failed-jobs\"\n ],\n removeAllCustomLabelsFromSelfHostedRunnerForOrg: [\n \"DELETE /orgs/{org}/actions/runners/{runner_id}/labels\"\n ],\n removeAllCustomLabelsFromSelfHostedRunnerForRepo: [\n \"DELETE /repos/{owner}/{repo}/actions/runners/{runner_id}/labels\"\n ],\n removeCustomLabelFromSelfHostedRunnerForOrg: [\n \"DELETE /orgs/{org}/actions/runners/{runner_id}/labels/{name}\"\n ],\n removeCustomLabelFromSelfHostedRunnerForRepo: [\n \"DELETE /repos/{owner}/{repo}/actions/runners/{runner_id}/labels/{name}\"\n ],\n removeSelectedRepoFromOrgSecret: [\n \"DELETE /orgs/{org}/actions/secrets/{secret_name}/repositories/{repository_id}\"\n ],\n removeSelectedRepoFromOrgVariable: [\n \"DELETE /orgs/{org}/actions/variables/{name}/repositories/{repository_id}\"\n ],\n reviewCustomGatesForRun: [\n \"POST /repos/{owner}/{repo}/actions/runs/{run_id}/deployment_protection_rule\"\n ],\n reviewPendingDeploymentsForRun: [\n \"POST /repos/{owner}/{repo}/actions/runs/{run_id}/pending_deployments\"\n ],\n setAllowedActionsOrganization: [\n \"PUT /orgs/{org}/actions/permissions/selected-actions\"\n ],\n setAllowedActionsRepository: [\n \"PUT /repos/{owner}/{repo}/actions/permissions/selected-actions\"\n ],\n setCustomLabelsForSelfHostedRunnerForOrg: [\n \"PUT /orgs/{org}/actions/runners/{runner_id}/labels\"\n ],\n setCustomLabelsForSelfHostedRunnerForRepo: [\n \"PUT /repos/{owner}/{repo}/actions/runners/{runner_id}/labels\"\n ],\n setCustomOidcSubClaimForRepo: [\n \"PUT /repos/{owner}/{repo}/actions/oidc/customization/sub\"\n ],\n setGithubActionsDefaultWorkflowPermissionsOrganization: [\n \"PUT /orgs/{org}/actions/permissions/workflow\"\n ],\n setGithubActionsDefaultWorkflowPermissionsRepository: [\n \"PUT /repos/{owner}/{repo}/actions/permissions/workflow\"\n ],\n setGithubActionsPermissionsOrganization: [\n \"PUT /orgs/{org}/actions/permissions\"\n ],\n setGithubActionsPermissionsRepository: [\n \"PUT /repos/{owner}/{repo}/actions/permissions\"\n ],\n setSelectedReposForOrgSecret: [\n \"PUT /orgs/{org}/actions/secrets/{secret_name}/repositories\"\n ],\n setSelectedReposForOrgVariable: [\n \"PUT /orgs/{org}/actions/variables/{name}/repositories\"\n ],\n setSelectedRepositoriesEnabledGithubActionsOrganization: [\n \"PUT /orgs/{org}/actions/permissions/repositories\"\n ],\n setWorkflowAccessToRepository: [\n \"PUT /repos/{owner}/{repo}/actions/permissions/access\"\n ],\n updateEnvironmentVariable: [\n \"PATCH /repositories/{repository_id}/environments/{environment_name}/variables/{name}\"\n ],\n updateOrgVariable: [\"PATCH /orgs/{org}/actions/variables/{name}\"],\n updateRepoVariable: [\n \"PATCH /repos/{owner}/{repo}/actions/variables/{name}\"\n ]\n },\n activity: {\n checkRepoIsStarredByAuthenticatedUser: [\"GET /user/starred/{owner}/{repo}\"],\n deleteRepoSubscription: [\"DELETE /repos/{owner}/{repo}/subscription\"],\n deleteThreadSubscription: [\n \"DELETE /notifications/threads/{thread_id}/subscription\"\n ],\n getFeeds: [\"GET /feeds\"],\n getRepoSubscription: [\"GET /repos/{owner}/{repo}/subscription\"],\n getThread: [\"GET /notifications/threads/{thread_id}\"],\n getThreadSubscriptionForAuthenticatedUser: [\n \"GET /notifications/threads/{thread_id}/subscription\"\n ],\n listEventsForAuthenticatedUser: [\"GET /users/{username}/events\"],\n listNotificationsForAuthenticatedUser: [\"GET /notifications\"],\n listOrgEventsForAuthenticatedUser: [\n \"GET /users/{username}/events/orgs/{org}\"\n ],\n listPublicEvents: [\"GET /events\"],\n listPublicEventsForRepoNetwork: [\"GET /networks/{owner}/{repo}/events\"],\n listPublicEventsForUser: [\"GET /users/{username}/events/public\"],\n listPublicOrgEvents: [\"GET /orgs/{org}/events\"],\n listReceivedEventsForUser: [\"GET /users/{username}/received_events\"],\n listReceivedPublicEventsForUser: [\n \"GET /users/{username}/received_events/public\"\n ],\n listRepoEvents: [\"GET /repos/{owner}/{repo}/events\"],\n listRepoNotificationsForAuthenticatedUser: [\n \"GET /repos/{owner}/{repo}/notifications\"\n ],\n listReposStarredByAuthenticatedUser: [\"GET /user/starred\"],\n listReposStarredByUser: [\"GET /users/{username}/starred\"],\n listReposWatchedByUser: [\"GET /users/{username}/subscriptions\"],\n listStargazersForRepo: [\"GET /repos/{owner}/{repo}/stargazers\"],\n listWatchedReposForAuthenticatedUser: [\"GET /user/subscriptions\"],\n listWatchersForRepo: [\"GET /repos/{owner}/{repo}/subscribers\"],\n markNotificationsAsRead: [\"PUT /notifications\"],\n markRepoNotificationsAsRead: [\"PUT /repos/{owner}/{repo}/notifications\"],\n markThreadAsDone: [\"DELETE /notifications/threads/{thread_id}\"],\n markThreadAsRead: [\"PATCH /notifications/threads/{thread_id}\"],\n setRepoSubscription: [\"PUT /repos/{owner}/{repo}/subscription\"],\n setThreadSubscription: [\n \"PUT /notifications/threads/{thread_id}/subscription\"\n ],\n starRepoForAuthenticatedUser: [\"PUT /user/starred/{owner}/{repo}\"],\n unstarRepoForAuthenticatedUser: [\"DELETE /user/starred/{owner}/{repo}\"]\n },\n apps: {\n addRepoToInstallation: [\n \"PUT /user/installations/{installation_id}/repositories/{repository_id}\",\n {},\n { renamed: [\"apps\", \"addRepoToInstallationForAuthenticatedUser\"] }\n ],\n addRepoToInstallationForAuthenticatedUser: [\n \"PUT /user/installations/{installation_id}/repositories/{repository_id}\"\n ],\n checkToken: [\"POST /applications/{client_id}/token\"],\n createFromManifest: [\"POST /app-manifests/{code}/conversions\"],\n createInstallationAccessToken: [\n \"POST /app/installations/{installation_id}/access_tokens\"\n ],\n deleteAuthorization: [\"DELETE /applications/{client_id}/grant\"],\n deleteInstallation: [\"DELETE /app/installations/{installation_id}\"],\n deleteToken: [\"DELETE /applications/{client_id}/token\"],\n getAuthenticated: [\"GET /app\"],\n getBySlug: [\"GET /apps/{app_slug}\"],\n getInstallation: [\"GET /app/installations/{installation_id}\"],\n getOrgInstallation: [\"GET /orgs/{org}/installation\"],\n getRepoInstallation: [\"GET /repos/{owner}/{repo}/installation\"],\n getSubscriptionPlanForAccount: [\n \"GET /marketplace_listing/accounts/{account_id}\"\n ],\n getSubscriptionPlanForAccountStubbed: [\n \"GET /marketplace_listing/stubbed/accounts/{account_id}\"\n ],\n getUserInstallation: [\"GET /users/{username}/installation\"],\n getWebhookConfigForApp: [\"GET /app/hook/config\"],\n getWebhookDelivery: [\"GET /app/hook/deliveries/{delivery_id}\"],\n listAccountsForPlan: [\"GET /marketplace_listing/plans/{plan_id}/accounts\"],\n listAccountsForPlanStubbed: [\n \"GET /marketplace_listing/stubbed/plans/{plan_id}/accounts\"\n ],\n listInstallationReposForAuthenticatedUser: [\n \"GET /user/installations/{installation_id}/repositories\"\n ],\n listInstallationRequestsForAuthenticatedApp: [\n \"GET /app/installation-requests\"\n ],\n listInstallations: [\"GET /app/installations\"],\n listInstallationsForAuthenticatedUser: [\"GET /user/installations\"],\n listPlans: [\"GET /marketplace_listing/plans\"],\n listPlansStubbed: [\"GET /marketplace_listing/stubbed/plans\"],\n listReposAccessibleToInstallation: [\"GET /installation/repositories\"],\n listSubscriptionsForAuthenticatedUser: [\"GET /user/marketplace_purchases\"],\n listSubscriptionsForAuthenticatedUserStubbed: [\n \"GET /user/marketplace_purchases/stubbed\"\n ],\n listWebhookDeliveries: [\"GET /app/hook/deliveries\"],\n redeliverWebhookDelivery: [\n \"POST /app/hook/deliveries/{delivery_id}/attempts\"\n ],\n removeRepoFromInstallation: [\n \"DELETE /user/installations/{installation_id}/repositories/{repository_id}\",\n {},\n { renamed: [\"apps\", \"removeRepoFromInstallationForAuthenticatedUser\"] }\n ],\n removeRepoFromInstallationForAuthenticatedUser: [\n \"DELETE /user/installations/{installation_id}/repositories/{repository_id}\"\n ],\n resetToken: [\"PATCH /applications/{client_id}/token\"],\n revokeInstallationAccessToken: [\"DELETE /installation/token\"],\n scopeToken: [\"POST /applications/{client_id}/token/scoped\"],\n suspendInstallation: [\"PUT /app/installations/{installation_id}/suspended\"],\n unsuspendInstallation: [\n \"DELETE /app/installations/{installation_id}/suspended\"\n ],\n updateWebhookConfigForApp: [\"PATCH /app/hook/config\"]\n },\n billing: {\n getGithubActionsBillingOrg: [\"GET /orgs/{org}/settings/billing/actions\"],\n getGithubActionsBillingUser: [\n \"GET /users/{username}/settings/billing/actions\"\n ],\n getGithubPackagesBillingOrg: [\"GET /orgs/{org}/settings/billing/packages\"],\n getGithubPackagesBillingUser: [\n \"GET /users/{username}/settings/billing/packages\"\n ],\n getSharedStorageBillingOrg: [\n \"GET /orgs/{org}/settings/billing/shared-storage\"\n ],\n getSharedStorageBillingUser: [\n \"GET /users/{username}/settings/billing/shared-storage\"\n ]\n },\n checks: {\n create: [\"POST /repos/{owner}/{repo}/check-runs\"],\n createSuite: [\"POST /repos/{owner}/{repo}/check-suites\"],\n get: [\"GET /repos/{owner}/{repo}/check-runs/{check_run_id}\"],\n getSuite: [\"GET /repos/{owner}/{repo}/check-suites/{check_suite_id}\"],\n listAnnotations: [\n \"GET /repos/{owner}/{repo}/check-runs/{check_run_id}/annotations\"\n ],\n listForRef: [\"GET /repos/{owner}/{repo}/commits/{ref}/check-runs\"],\n listForSuite: [\n \"GET /repos/{owner}/{repo}/check-suites/{check_suite_id}/check-runs\"\n ],\n listSuitesForRef: [\"GET /repos/{owner}/{repo}/commits/{ref}/check-suites\"],\n rerequestRun: [\n \"POST /repos/{owner}/{repo}/check-runs/{check_run_id}/rerequest\"\n ],\n rerequestSuite: [\n \"POST /repos/{owner}/{repo}/check-suites/{check_suite_id}/rerequest\"\n ],\n setSuitesPreferences: [\n \"PATCH /repos/{owner}/{repo}/check-suites/preferences\"\n ],\n update: [\"PATCH /repos/{owner}/{repo}/check-runs/{check_run_id}\"]\n },\n codeScanning: {\n deleteAnalysis: [\n \"DELETE /repos/{owner}/{repo}/code-scanning/analyses/{analysis_id}{?confirm_delete}\"\n ],\n getAlert: [\n \"GET /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}\",\n {},\n { renamedParameters: { alert_id: \"alert_number\" } }\n ],\n getAnalysis: [\n \"GET /repos/{owner}/{repo}/code-scanning/analyses/{analysis_id}\"\n ],\n getCodeqlDatabase: [\n \"GET /repos/{owner}/{repo}/code-scanning/codeql/databases/{language}\"\n ],\n getDefaultSetup: [\"GET /repos/{owner}/{repo}/code-scanning/default-setup\"],\n getSarif: [\"GET /repos/{owner}/{repo}/code-scanning/sarifs/{sarif_id}\"],\n listAlertInstances: [\n \"GET /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}/instances\"\n ],\n listAlertsForOrg: [\"GET /orgs/{org}/code-scanning/alerts\"],\n listAlertsForRepo: [\"GET /repos/{owner}/{repo}/code-scanning/alerts\"],\n listAlertsInstances: [\n \"GET /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}/instances\",\n {},\n { renamed: [\"codeScanning\", \"listAlertInstances\"] }\n ],\n listCodeqlDatabases: [\n \"GET /repos/{owner}/{repo}/code-scanning/codeql/databases\"\n ],\n listRecentAnalyses: [\"GET /repos/{owner}/{repo}/code-scanning/analyses\"],\n updateAlert: [\n \"PATCH /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}\"\n ],\n updateDefaultSetup: [\n \"PATCH /repos/{owner}/{repo}/code-scanning/default-setup\"\n ],\n uploadSarif: [\"POST /repos/{owner}/{repo}/code-scanning/sarifs\"]\n },\n codesOfConduct: {\n getAllCodesOfConduct: [\"GET /codes_of_conduct\"],\n getConductCode: [\"GET /codes_of_conduct/{key}\"]\n },\n codespaces: {\n addRepositoryForSecretForAuthenticatedUser: [\n \"PUT /user/codespaces/secrets/{secret_name}/repositories/{repository_id}\"\n ],\n addSelectedRepoToOrgSecret: [\n \"PUT /orgs/{org}/codespaces/secrets/{secret_name}/repositories/{repository_id}\"\n ],\n checkPermissionsForDevcontainer: [\n \"GET /repos/{owner}/{repo}/codespaces/permissions_check\"\n ],\n codespaceMachinesForAuthenticatedUser: [\n \"GET /user/codespaces/{codespace_name}/machines\"\n ],\n createForAuthenticatedUser: [\"POST /user/codespaces\"],\n createOrUpdateOrgSecret: [\n \"PUT /orgs/{org}/codespaces/secrets/{secret_name}\"\n ],\n createOrUpdateRepoSecret: [\n \"PUT /repos/{owner}/{repo}/codespaces/secrets/{secret_name}\"\n ],\n createOrUpdateSecretForAuthenticatedUser: [\n \"PUT /user/codespaces/secrets/{secret_name}\"\n ],\n createWithPrForAuthenticatedUser: [\n \"POST /repos/{owner}/{repo}/pulls/{pull_number}/codespaces\"\n ],\n createWithRepoForAuthenticatedUser: [\n \"POST /repos/{owner}/{repo}/codespaces\"\n ],\n deleteForAuthenticatedUser: [\"DELETE /user/codespaces/{codespace_name}\"],\n deleteFromOrganization: [\n \"DELETE /orgs/{org}/members/{username}/codespaces/{codespace_name}\"\n ],\n deleteOrgSecret: [\"DELETE /orgs/{org}/codespaces/secrets/{secret_name}\"],\n deleteRepoSecret: [\n \"DELETE /repos/{owner}/{repo}/codespaces/secrets/{secret_name}\"\n ],\n deleteSecretForAuthenticatedUser: [\n \"DELETE /user/codespaces/secrets/{secret_name}\"\n ],\n exportForAuthenticatedUser: [\n \"POST /user/codespaces/{codespace_name}/exports\"\n ],\n getCodespacesForUserInOrg: [\n \"GET /orgs/{org}/members/{username}/codespaces\"\n ],\n getExportDetailsForAuthenticatedUser: [\n \"GET /user/codespaces/{codespace_name}/exports/{export_id}\"\n ],\n getForAuthenticatedUser: [\"GET /user/codespaces/{codespace_name}\"],\n getOrgPublicKey: [\"GET /orgs/{org}/codespaces/secrets/public-key\"],\n getOrgSecret: [\"GET /orgs/{org}/codespaces/secrets/{secret_name}\"],\n getPublicKeyForAuthenticatedUser: [\n \"GET /user/codespaces/secrets/public-key\"\n ],\n getRepoPublicKey: [\n \"GET /repos/{owner}/{repo}/codespaces/secrets/public-key\"\n ],\n getRepoSecret: [\n \"GET /repos/{owner}/{repo}/codespaces/secrets/{secret_name}\"\n ],\n getSecretForAuthenticatedUser: [\n \"GET /user/codespaces/secrets/{secret_name}\"\n ],\n listDevcontainersInRepositoryForAuthenticatedUser: [\n \"GET /repos/{owner}/{repo}/codespaces/devcontainers\"\n ],\n listForAuthenticatedUser: [\"GET /user/codespaces\"],\n listInOrganization: [\n \"GET /orgs/{org}/codespaces\",\n {},\n { renamedParameters: { org_id: \"org\" } }\n ],\n listInRepositoryForAuthenticatedUser: [\n \"GET /repos/{owner}/{repo}/codespaces\"\n ],\n listOrgSecrets: [\"GET /orgs/{org}/codespaces/secrets\"],\n listRepoSecrets: [\"GET /repos/{owner}/{repo}/codespaces/secrets\"],\n listRepositoriesForSecretForAuthenticatedUser: [\n \"GET /user/codespaces/secrets/{secret_name}/repositories\"\n ],\n listSecretsForAuthenticatedUser: [\"GET /user/codespaces/secrets\"],\n listSelectedReposForOrgSecret: [\n \"GET /orgs/{org}/codespaces/secrets/{secret_name}/repositories\"\n ],\n preFlightWithRepoForAuthenticatedUser: [\n \"GET /repos/{owner}/{repo}/codespaces/new\"\n ],\n publishForAuthenticatedUser: [\n \"POST /user/codespaces/{codespace_name}/publish\"\n ],\n removeRepositoryForSecretForAuthenticatedUser: [\n \"DELETE /user/codespaces/secrets/{secret_name}/repositories/{repository_id}\"\n ],\n removeSelectedRepoFromOrgSecret: [\n \"DELETE /orgs/{org}/codespaces/secrets/{secret_name}/repositories/{repository_id}\"\n ],\n repoMachinesForAuthenticatedUser: [\n \"GET /repos/{owner}/{repo}/codespaces/machines\"\n ],\n setRepositoriesForSecretForAuthenticatedUser: [\n \"PUT /user/codespaces/secrets/{secret_name}/repositories\"\n ],\n setSelectedReposForOrgSecret: [\n \"PUT /orgs/{org}/codespaces/secrets/{secret_name}/repositories\"\n ],\n startForAuthenticatedUser: [\"POST /user/codespaces/{codespace_name}/start\"],\n stopForAuthenticatedUser: [\"POST /user/codespaces/{codespace_name}/stop\"],\n stopInOrganization: [\n \"POST /orgs/{org}/members/{username}/codespaces/{codespace_name}/stop\"\n ],\n updateForAuthenticatedUser: [\"PATCH /user/codespaces/{codespace_name}\"]\n },\n copilot: {\n addCopilotSeatsForTeams: [\n \"POST /orgs/{org}/copilot/billing/selected_teams\"\n ],\n addCopilotSeatsForUsers: [\n \"POST /orgs/{org}/copilot/billing/selected_users\"\n ],\n cancelCopilotSeatAssignmentForTeams: [\n \"DELETE /orgs/{org}/copilot/billing/selected_teams\"\n ],\n cancelCopilotSeatAssignmentForUsers: [\n \"DELETE /orgs/{org}/copilot/billing/selected_users\"\n ],\n getCopilotOrganizationDetails: [\"GET /orgs/{org}/copilot/billing\"],\n getCopilotSeatDetailsForUser: [\n \"GET /orgs/{org}/members/{username}/copilot\"\n ],\n listCopilotSeats: [\"GET /orgs/{org}/copilot/billing/seats\"]\n },\n dependabot: {\n addSelectedRepoToOrgSecret: [\n \"PUT /orgs/{org}/dependabot/secrets/{secret_name}/repositories/{repository_id}\"\n ],\n createOrUpdateOrgSecret: [\n \"PUT /orgs/{org}/dependabot/secrets/{secret_name}\"\n ],\n createOrUpdateRepoSecret: [\n \"PUT /repos/{owner}/{repo}/dependabot/secrets/{secret_name}\"\n ],\n deleteOrgSecret: [\"DELETE /orgs/{org}/dependabot/secrets/{secret_name}\"],\n deleteRepoSecret: [\n \"DELETE /repos/{owner}/{repo}/dependabot/secrets/{secret_name}\"\n ],\n getAlert: [\"GET /repos/{owner}/{repo}/dependabot/alerts/{alert_number}\"],\n getOrgPublicKey: [\"GET /orgs/{org}/dependabot/secrets/public-key\"],\n getOrgSecret: [\"GET /orgs/{org}/dependabot/secrets/{secret_name}\"],\n getRepoPublicKey: [\n \"GET /repos/{owner}/{repo}/dependabot/secrets/public-key\"\n ],\n getRepoSecret: [\n \"GET /repos/{owner}/{repo}/dependabot/secrets/{secret_name}\"\n ],\n listAlertsForEnterprise: [\n \"GET /enterprises/{enterprise}/dependabot/alerts\"\n ],\n listAlertsForOrg: [\"GET /orgs/{org}/dependabot/alerts\"],\n listAlertsForRepo: [\"GET /repos/{owner}/{repo}/dependabot/alerts\"],\n listOrgSecrets: [\"GET /orgs/{org}/dependabot/secrets\"],\n listRepoSecrets: [\"GET /repos/{owner}/{repo}/dependabot/secrets\"],\n listSelectedReposForOrgSecret: [\n \"GET /orgs/{org}/dependabot/secrets/{secret_name}/repositories\"\n ],\n removeSelectedRepoFromOrgSecret: [\n \"DELETE /orgs/{org}/dependabot/secrets/{secret_name}/repositories/{repository_id}\"\n ],\n setSelectedReposForOrgSecret: [\n \"PUT /orgs/{org}/dependabot/secrets/{secret_name}/repositories\"\n ],\n updateAlert: [\n \"PATCH /repos/{owner}/{repo}/dependabot/alerts/{alert_number}\"\n ]\n },\n dependencyGraph: {\n createRepositorySnapshot: [\n \"POST /repos/{owner}/{repo}/dependency-graph/snapshots\"\n ],\n diffRange: [\n \"GET /repos/{owner}/{repo}/dependency-graph/compare/{basehead}\"\n ],\n exportSbom: [\"GET /repos/{owner}/{repo}/dependency-graph/sbom\"]\n },\n emojis: { get: [\"GET /emojis\"] },\n gists: {\n checkIsStarred: [\"GET /gists/{gist_id}/star\"],\n create: [\"POST /gists\"],\n createComment: [\"POST /gists/{gist_id}/comments\"],\n delete: [\"DELETE /gists/{gist_id}\"],\n deleteComment: [\"DELETE /gists/{gist_id}/comments/{comment_id}\"],\n fork: [\"POST /gists/{gist_id}/forks\"],\n get: [\"GET /gists/{gist_id}\"],\n getComment: [\"GET /gists/{gist_id}/comments/{comment_id}\"],\n getRevision: [\"GET /gists/{gist_id}/{sha}\"],\n list: [\"GET /gists\"],\n listComments: [\"GET /gists/{gist_id}/comments\"],\n listCommits: [\"GET /gists/{gist_id}/commits\"],\n listForUser: [\"GET /users/{username}/gists\"],\n listForks: [\"GET /gists/{gist_id}/forks\"],\n listPublic: [\"GET /gists/public\"],\n listStarred: [\"GET /gists/starred\"],\n star: [\"PUT /gists/{gist_id}/star\"],\n unstar: [\"DELETE /gists/{gist_id}/star\"],\n update: [\"PATCH /gists/{gist_id}\"],\n updateComment: [\"PATCH /gists/{gist_id}/comments/{comment_id}\"]\n },\n git: {\n createBlob: [\"POST /repos/{owner}/{repo}/git/blobs\"],\n createCommit: [\"POST /repos/{owner}/{repo}/git/commits\"],\n createRef: [\"POST /repos/{owner}/{repo}/git/refs\"],\n createTag: [\"POST /repos/{owner}/{repo}/git/tags\"],\n createTree: [\"POST /repos/{owner}/{repo}/git/trees\"],\n deleteRef: [\"DELETE /repos/{owner}/{repo}/git/refs/{ref}\"],\n getBlob: [\"GET /repos/{owner}/{repo}/git/blobs/{file_sha}\"],\n getCommit: [\"GET /repos/{owner}/{repo}/git/commits/{commit_sha}\"],\n getRef: [\"GET /repos/{owner}/{repo}/git/ref/{ref}\"],\n getTag: [\"GET /repos/{owner}/{repo}/git/tags/{tag_sha}\"],\n getTree: [\"GET /repos/{owner}/{repo}/git/trees/{tree_sha}\"],\n listMatchingRefs: [\"GET /repos/{owner}/{repo}/git/matching-refs/{ref}\"],\n updateRef: [\"PATCH /repos/{owner}/{repo}/git/refs/{ref}\"]\n },\n gitignore: {\n getAllTemplates: [\"GET /gitignore/templates\"],\n getTemplate: [\"GET /gitignore/templates/{name}\"]\n },\n interactions: {\n getRestrictionsForAuthenticatedUser: [\"GET /user/interaction-limits\"],\n getRestrictionsForOrg: [\"GET /orgs/{org}/interaction-limits\"],\n getRestrictionsForRepo: [\"GET /repos/{owner}/{repo}/interaction-limits\"],\n getRestrictionsForYourPublicRepos: [\n \"GET /user/interaction-limits\",\n {},\n { renamed: [\"interactions\", \"getRestrictionsForAuthenticatedUser\"] }\n ],\n removeRestrictionsForAuthenticatedUser: [\"DELETE /user/interaction-limits\"],\n removeRestrictionsForOrg: [\"DELETE /orgs/{org}/interaction-limits\"],\n removeRestrictionsForRepo: [\n \"DELETE /repos/{owner}/{repo}/interaction-limits\"\n ],\n removeRestrictionsForYourPublicRepos: [\n \"DELETE /user/interaction-limits\",\n {},\n { renamed: [\"interactions\", \"removeRestrictionsForAuthenticatedUser\"] }\n ],\n setRestrictionsForAuthenticatedUser: [\"PUT /user/interaction-limits\"],\n setRestrictionsForOrg: [\"PUT /orgs/{org}/interaction-limits\"],\n setRestrictionsForRepo: [\"PUT /repos/{owner}/{repo}/interaction-limits\"],\n setRestrictionsForYourPublicRepos: [\n \"PUT /user/interaction-limits\",\n {},\n { renamed: [\"interactions\", \"setRestrictionsForAuthenticatedUser\"] }\n ]\n },\n issues: {\n addAssignees: [\n \"POST /repos/{owner}/{repo}/issues/{issue_number}/assignees\"\n ],\n addLabels: [\"POST /repos/{owner}/{repo}/issues/{issue_number}/labels\"],\n checkUserCanBeAssigned: [\"GET /repos/{owner}/{repo}/assignees/{assignee}\"],\n checkUserCanBeAssignedToIssue: [\n \"GET /repos/{owner}/{repo}/issues/{issue_number}/assignees/{assignee}\"\n ],\n create: [\"POST /repos/{owner}/{repo}/issues\"],\n createComment: [\n \"POST /repos/{owner}/{repo}/issues/{issue_number}/comments\"\n ],\n createLabel: [\"POST /repos/{owner}/{repo}/labels\"],\n createMilestone: [\"POST /repos/{owner}/{repo}/milestones\"],\n deleteComment: [\n \"DELETE /repos/{owner}/{repo}/issues/comments/{comment_id}\"\n ],\n deleteLabel: [\"DELETE /repos/{owner}/{repo}/labels/{name}\"],\n deleteMilestone: [\n \"DELETE /repos/{owner}/{repo}/milestones/{milestone_number}\"\n ],\n get: [\"GET /repos/{owner}/{repo}/issues/{issue_number}\"],\n getComment: [\"GET /repos/{owner}/{repo}/issues/comments/{comment_id}\"],\n getEvent: [\"GET /repos/{owner}/{repo}/issues/events/{event_id}\"],\n getLabel: [\"GET /repos/{owner}/{repo}/labels/{name}\"],\n getMilestone: [\"GET /repos/{owner}/{repo}/milestones/{milestone_number}\"],\n list: [\"GET /issues\"],\n listAssignees: [\"GET /repos/{owner}/{repo}/assignees\"],\n listComments: [\"GET /repos/{owner}/{repo}/issues/{issue_number}/comments\"],\n listCommentsForRepo: [\"GET /repos/{owner}/{repo}/issues/comments\"],\n listEvents: [\"GET /repos/{owner}/{repo}/issues/{issue_number}/events\"],\n listEventsForRepo: [\"GET /repos/{owner}/{repo}/issues/events\"],\n listEventsForTimeline: [\n \"GET /repos/{owner}/{repo}/issues/{issue_number}/timeline\"\n ],\n listForAuthenticatedUser: [\"GET /user/issues\"],\n listForOrg: [\"GET /orgs/{org}/issues\"],\n listForRepo: [\"GET /repos/{owner}/{repo}/issues\"],\n listLabelsForMilestone: [\n \"GET /repos/{owner}/{repo}/milestones/{milestone_number}/labels\"\n ],\n listLabelsForRepo: [\"GET /repos/{owner}/{repo}/labels\"],\n listLabelsOnIssue: [\n \"GET /repos/{owner}/{repo}/issues/{issue_number}/labels\"\n ],\n listMilestones: [\"GET /repos/{owner}/{repo}/milestones\"],\n lock: [\"PUT /repos/{owner}/{repo}/issues/{issue_number}/lock\"],\n removeAllLabels: [\n \"DELETE /repos/{owner}/{repo}/issues/{issue_number}/labels\"\n ],\n removeAssignees: [\n \"DELETE /repos/{owner}/{repo}/issues/{issue_number}/assignees\"\n ],\n removeLabel: [\n \"DELETE /repos/{owner}/{repo}/issues/{issue_number}/labels/{name}\"\n ],\n setLabels: [\"PUT /repos/{owner}/{repo}/issues/{issue_number}/labels\"],\n unlock: [\"DELETE /repos/{owner}/{repo}/issues/{issue_number}/lock\"],\n update: [\"PATCH /repos/{owner}/{repo}/issues/{issue_number}\"],\n updateComment: [\"PATCH /repos/{owner}/{repo}/issues/comments/{comment_id}\"],\n updateLabel: [\"PATCH /repos/{owner}/{repo}/labels/{name}\"],\n updateMilestone: [\n \"PATCH /repos/{owner}/{repo}/milestones/{milestone_number}\"\n ]\n },\n licenses: {\n get: [\"GET /licenses/{license}\"],\n getAllCommonlyUsed: [\"GET /licenses\"],\n getForRepo: [\"GET /repos/{owner}/{repo}/license\"]\n },\n markdown: {\n render: [\"POST /markdown\"],\n renderRaw: [\n \"POST /markdown/raw\",\n { headers: { \"content-type\": \"text/plain; charset=utf-8\" } }\n ]\n },\n meta: {\n get: [\"GET /meta\"],\n getAllVersions: [\"GET /versions\"],\n getOctocat: [\"GET /octocat\"],\n getZen: [\"GET /zen\"],\n root: [\"GET /\"]\n },\n migrations: {\n cancelImport: [\n \"DELETE /repos/{owner}/{repo}/import\",\n {},\n {\n deprecated: \"octokit.rest.migrations.cancelImport() is deprecated, see https://docs.github.com/rest/migrations/source-imports#cancel-an-import\"\n }\n ],\n deleteArchiveForAuthenticatedUser: [\n \"DELETE /user/migrations/{migration_id}/archive\"\n ],\n deleteArchiveForOrg: [\n \"DELETE /orgs/{org}/migrations/{migration_id}/archive\"\n ],\n downloadArchiveForOrg: [\n \"GET /orgs/{org}/migrations/{migration_id}/archive\"\n ],\n getArchiveForAuthenticatedUser: [\n \"GET /user/migrations/{migration_id}/archive\"\n ],\n getCommitAuthors: [\n \"GET /repos/{owner}/{repo}/import/authors\",\n {},\n {\n deprecated: \"octokit.rest.migrations.getCommitAuthors() is deprecated, see https://docs.github.com/rest/migrations/source-imports#get-commit-authors\"\n }\n ],\n getImportStatus: [\n \"GET /repos/{owner}/{repo}/import\",\n {},\n {\n deprecated: \"octokit.rest.migrations.getImportStatus() is deprecated, see https://docs.github.com/rest/migrations/source-imports#get-an-import-status\"\n }\n ],\n getLargeFiles: [\n \"GET /repos/{owner}/{repo}/import/large_files\",\n {},\n {\n deprecated: \"octokit.rest.migrations.getLargeFiles() is deprecated, see https://docs.github.com/rest/migrations/source-imports#get-large-files\"\n }\n ],\n getStatusForAuthenticatedUser: [\"GET /user/migrations/{migration_id}\"],\n getStatusForOrg: [\"GET /orgs/{org}/migrations/{migration_id}\"],\n listForAuthenticatedUser: [\"GET /user/migrations\"],\n listForOrg: [\"GET /orgs/{org}/migrations\"],\n listReposForAuthenticatedUser: [\n \"GET /user/migrations/{migration_id}/repositories\"\n ],\n listReposForOrg: [\"GET /orgs/{org}/migrations/{migration_id}/repositories\"],\n listReposForUser: [\n \"GET /user/migrations/{migration_id}/repositories\",\n {},\n { renamed: [\"migrations\", \"listReposForAuthenticatedUser\"] }\n ],\n mapCommitAuthor: [\n \"PATCH /repos/{owner}/{repo}/import/authors/{author_id}\",\n {},\n {\n deprecated: \"octokit.rest.migrations.mapCommitAuthor() is deprecated, see https://docs.github.com/rest/migrations/source-imports#map-a-commit-author\"\n }\n ],\n setLfsPreference: [\n \"PATCH /repos/{owner}/{repo}/import/lfs\",\n {},\n {\n deprecated: \"octokit.rest.migrations.setLfsPreference() is deprecated, see https://docs.github.com/rest/migrations/source-imports#update-git-lfs-preference\"\n }\n ],\n startForAuthenticatedUser: [\"POST /user/migrations\"],\n startForOrg: [\"POST /orgs/{org}/migrations\"],\n startImport: [\n \"PUT /repos/{owner}/{repo}/import\",\n {},\n {\n deprecated: \"octokit.rest.migrations.startImport() is deprecated, see https://docs.github.com/rest/migrations/source-imports#start-an-import\"\n }\n ],\n unlockRepoForAuthenticatedUser: [\n \"DELETE /user/migrations/{migration_id}/repos/{repo_name}/lock\"\n ],\n unlockRepoForOrg: [\n \"DELETE /orgs/{org}/migrations/{migration_id}/repos/{repo_name}/lock\"\n ],\n updateImport: [\n \"PATCH /repos/{owner}/{repo}/import\",\n {},\n {\n deprecated: \"octokit.rest.migrations.updateImport() is deprecated, see https://docs.github.com/rest/migrations/source-imports#update-an-import\"\n }\n ]\n },\n oidc: {\n getOidcCustomSubTemplateForOrg: [\n \"GET /orgs/{org}/actions/oidc/customization/sub\"\n ],\n updateOidcCustomSubTemplateForOrg: [\n \"PUT /orgs/{org}/actions/oidc/customization/sub\"\n ]\n },\n orgs: {\n addSecurityManagerTeam: [\n \"PUT /orgs/{org}/security-managers/teams/{team_slug}\"\n ],\n assignTeamToOrgRole: [\n \"PUT /orgs/{org}/organization-roles/teams/{team_slug}/{role_id}\"\n ],\n assignUserToOrgRole: [\n \"PUT /orgs/{org}/organization-roles/users/{username}/{role_id}\"\n ],\n blockUser: [\"PUT /orgs/{org}/blocks/{username}\"],\n cancelInvitation: [\"DELETE /orgs/{org}/invitations/{invitation_id}\"],\n checkBlockedUser: [\"GET /orgs/{org}/blocks/{username}\"],\n checkMembershipForUser: [\"GET /orgs/{org}/members/{username}\"],\n checkPublicMembershipForUser: [\"GET /orgs/{org}/public_members/{username}\"],\n convertMemberToOutsideCollaborator: [\n \"PUT /orgs/{org}/outside_collaborators/{username}\"\n ],\n createCustomOrganizationRole: [\"POST /orgs/{org}/organization-roles\"],\n createInvitation: [\"POST /orgs/{org}/invitations\"],\n createOrUpdateCustomProperties: [\"PATCH /orgs/{org}/properties/schema\"],\n createOrUpdateCustomPropertiesValuesForRepos: [\n \"PATCH /orgs/{org}/properties/values\"\n ],\n createOrUpdateCustomProperty: [\n \"PUT /orgs/{org}/properties/schema/{custom_property_name}\"\n ],\n createWebhook: [\"POST /orgs/{org}/hooks\"],\n delete: [\"DELETE /orgs/{org}\"],\n deleteCustomOrganizationRole: [\n \"DELETE /orgs/{org}/organization-roles/{role_id}\"\n ],\n deleteWebhook: [\"DELETE /orgs/{org}/hooks/{hook_id}\"],\n enableOrDisableSecurityProductOnAllOrgRepos: [\n \"POST /orgs/{org}/{security_product}/{enablement}\"\n ],\n get: [\"GET /orgs/{org}\"],\n getAllCustomProperties: [\"GET /orgs/{org}/properties/schema\"],\n getCustomProperty: [\n \"GET /orgs/{org}/properties/schema/{custom_property_name}\"\n ],\n getMembershipForAuthenticatedUser: [\"GET /user/memberships/orgs/{org}\"],\n getMembershipForUser: [\"GET /orgs/{org}/memberships/{username}\"],\n getOrgRole: [\"GET /orgs/{org}/organization-roles/{role_id}\"],\n getWebhook: [\"GET /orgs/{org}/hooks/{hook_id}\"],\n getWebhookConfigForOrg: [\"GET /orgs/{org}/hooks/{hook_id}/config\"],\n getWebhookDelivery: [\n \"GET /orgs/{org}/hooks/{hook_id}/deliveries/{delivery_id}\"\n ],\n list: [\"GET /organizations\"],\n listAppInstallations: [\"GET /orgs/{org}/installations\"],\n listBlockedUsers: [\"GET /orgs/{org}/blocks\"],\n listCustomPropertiesValuesForRepos: [\"GET /orgs/{org}/properties/values\"],\n listFailedInvitations: [\"GET /orgs/{org}/failed_invitations\"],\n listForAuthenticatedUser: [\"GET /user/orgs\"],\n listForUser: [\"GET /users/{username}/orgs\"],\n listInvitationTeams: [\"GET /orgs/{org}/invitations/{invitation_id}/teams\"],\n listMembers: [\"GET /orgs/{org}/members\"],\n listMembershipsForAuthenticatedUser: [\"GET /user/memberships/orgs\"],\n listOrgRoleTeams: [\"GET /orgs/{org}/organization-roles/{role_id}/teams\"],\n listOrgRoleUsers: [\"GET /orgs/{org}/organization-roles/{role_id}/users\"],\n listOrgRoles: [\"GET /orgs/{org}/organization-roles\"],\n listOrganizationFineGrainedPermissions: [\n \"GET /orgs/{org}/organization-fine-grained-permissions\"\n ],\n listOutsideCollaborators: [\"GET /orgs/{org}/outside_collaborators\"],\n listPatGrantRepositories: [\n \"GET /orgs/{org}/personal-access-tokens/{pat_id}/repositories\"\n ],\n listPatGrantRequestRepositories: [\n \"GET /orgs/{org}/personal-access-token-requests/{pat_request_id}/repositories\"\n ],\n listPatGrantRequests: [\"GET /orgs/{org}/personal-access-token-requests\"],\n listPatGrants: [\"GET /orgs/{org}/personal-access-tokens\"],\n listPendingInvitations: [\"GET /orgs/{org}/invitations\"],\n listPublicMembers: [\"GET /orgs/{org}/public_members\"],\n listSecurityManagerTeams: [\"GET /orgs/{org}/security-managers\"],\n listWebhookDeliveries: [\"GET /orgs/{org}/hooks/{hook_id}/deliveries\"],\n listWebhooks: [\"GET /orgs/{org}/hooks\"],\n patchCustomOrganizationRole: [\n \"PATCH /orgs/{org}/organization-roles/{role_id}\"\n ],\n pingWebhook: [\"POST /orgs/{org}/hooks/{hook_id}/pings\"],\n redeliverWebhookDelivery: [\n \"POST /orgs/{org}/hooks/{hook_id}/deliveries/{delivery_id}/attempts\"\n ],\n removeCustomProperty: [\n \"DELETE /orgs/{org}/properties/schema/{custom_property_name}\"\n ],\n removeMember: [\"DELETE /orgs/{org}/members/{username}\"],\n removeMembershipForUser: [\"DELETE /orgs/{org}/memberships/{username}\"],\n removeOutsideCollaborator: [\n \"DELETE /orgs/{org}/outside_collaborators/{username}\"\n ],\n removePublicMembershipForAuthenticatedUser: [\n \"DELETE /orgs/{org}/public_members/{username}\"\n ],\n removeSecurityManagerTeam: [\n \"DELETE /orgs/{org}/security-managers/teams/{team_slug}\"\n ],\n reviewPatGrantRequest: [\n \"POST /orgs/{org}/personal-access-token-requests/{pat_request_id}\"\n ],\n reviewPatGrantRequestsInBulk: [\n \"POST /orgs/{org}/personal-access-token-requests\"\n ],\n revokeAllOrgRolesTeam: [\n \"DELETE /orgs/{org}/organization-roles/teams/{team_slug}\"\n ],\n revokeAllOrgRolesUser: [\n \"DELETE /orgs/{org}/organization-roles/users/{username}\"\n ],\n revokeOrgRoleTeam: [\n \"DELETE /orgs/{org}/organization-roles/teams/{team_slug}/{role_id}\"\n ],\n revokeOrgRoleUser: [\n \"DELETE /orgs/{org}/organization-roles/users/{username}/{role_id}\"\n ],\n setMembershipForUser: [\"PUT /orgs/{org}/memberships/{username}\"],\n setPublicMembershipForAuthenticatedUser: [\n \"PUT /orgs/{org}/public_members/{username}\"\n ],\n unblockUser: [\"DELETE /orgs/{org}/blocks/{username}\"],\n update: [\"PATCH /orgs/{org}\"],\n updateMembershipForAuthenticatedUser: [\n \"PATCH /user/memberships/orgs/{org}\"\n ],\n updatePatAccess: [\"POST /orgs/{org}/personal-access-tokens/{pat_id}\"],\n updatePatAccesses: [\"POST /orgs/{org}/personal-access-tokens\"],\n updateWebhook: [\"PATCH /orgs/{org}/hooks/{hook_id}\"],\n updateWebhookConfigForOrg: [\"PATCH /orgs/{org}/hooks/{hook_id}/config\"]\n },\n packages: {\n deletePackageForAuthenticatedUser: [\n \"DELETE /user/packages/{package_type}/{package_name}\"\n ],\n deletePackageForOrg: [\n \"DELETE /orgs/{org}/packages/{package_type}/{package_name}\"\n ],\n deletePackageForUser: [\n \"DELETE /users/{username}/packages/{package_type}/{package_name}\"\n ],\n deletePackageVersionForAuthenticatedUser: [\n \"DELETE /user/packages/{package_type}/{package_name}/versions/{package_version_id}\"\n ],\n deletePackageVersionForOrg: [\n \"DELETE /orgs/{org}/packages/{package_type}/{package_name}/versions/{package_version_id}\"\n ],\n deletePackageVersionForUser: [\n \"DELETE /users/{username}/packages/{package_type}/{package_name}/versions/{package_version_id}\"\n ],\n getAllPackageVersionsForAPackageOwnedByAnOrg: [\n \"GET /orgs/{org}/packages/{package_type}/{package_name}/versions\",\n {},\n { renamed: [\"packages\", \"getAllPackageVersionsForPackageOwnedByOrg\"] }\n ],\n getAllPackageVersionsForAPackageOwnedByTheAuthenticatedUser: [\n \"GET /user/packages/{package_type}/{package_name}/versions\",\n {},\n {\n renamed: [\n \"packages\",\n \"getAllPackageVersionsForPackageOwnedByAuthenticatedUser\"\n ]\n }\n ],\n getAllPackageVersionsForPackageOwnedByAuthenticatedUser: [\n \"GET /user/packages/{package_type}/{package_name}/versions\"\n ],\n getAllPackageVersionsForPackageOwnedByOrg: [\n \"GET /orgs/{org}/packages/{package_type}/{package_name}/versions\"\n ],\n getAllPackageVersionsForPackageOwnedByUser: [\n \"GET /users/{username}/packages/{package_type}/{package_name}/versions\"\n ],\n getPackageForAuthenticatedUser: [\n \"GET /user/packages/{package_type}/{package_name}\"\n ],\n getPackageForOrganization: [\n \"GET /orgs/{org}/packages/{package_type}/{package_name}\"\n ],\n getPackageForUser: [\n \"GET /users/{username}/packages/{package_type}/{package_name}\"\n ],\n getPackageVersionForAuthenticatedUser: [\n \"GET /user/packages/{package_type}/{package_name}/versions/{package_version_id}\"\n ],\n getPackageVersionForOrganization: [\n \"GET /orgs/{org}/packages/{package_type}/{package_name}/versions/{package_version_id}\"\n ],\n getPackageVersionForUser: [\n \"GET /users/{username}/packages/{package_type}/{package_name}/versions/{package_version_id}\"\n ],\n listDockerMigrationConflictingPackagesForAuthenticatedUser: [\n \"GET /user/docker/conflicts\"\n ],\n listDockerMigrationConflictingPackagesForOrganization: [\n \"GET /orgs/{org}/docker/conflicts\"\n ],\n listDockerMigrationConflictingPackagesForUser: [\n \"GET /users/{username}/docker/conflicts\"\n ],\n listPackagesForAuthenticatedUser: [\"GET /user/packages\"],\n listPackagesForOrganization: [\"GET /orgs/{org}/packages\"],\n listPackagesForUser: [\"GET /users/{username}/packages\"],\n restorePackageForAuthenticatedUser: [\n \"POST /user/packages/{package_type}/{package_name}/restore{?token}\"\n ],\n restorePackageForOrg: [\n \"POST /orgs/{org}/packages/{package_type}/{package_name}/restore{?token}\"\n ],\n restorePackageForUser: [\n \"POST /users/{username}/packages/{package_type}/{package_name}/restore{?token}\"\n ],\n restorePackageVersionForAuthenticatedUser: [\n \"POST /user/packages/{package_type}/{package_name}/versions/{package_version_id}/restore\"\n ],\n restorePackageVersionForOrg: [\n \"POST /orgs/{org}/packages/{package_type}/{package_name}/versions/{package_version_id}/restore\"\n ],\n restorePackageVersionForUser: [\n \"POST /users/{username}/packages/{package_type}/{package_name}/versions/{package_version_id}/restore\"\n ]\n },\n projects: {\n addCollaborator: [\"PUT /projects/{project_id}/collaborators/{username}\"],\n createCard: [\"POST /projects/columns/{column_id}/cards\"],\n createColumn: [\"POST /projects/{project_id}/columns\"],\n createForAuthenticatedUser: [\"POST /user/projects\"],\n createForOrg: [\"POST /orgs/{org}/projects\"],\n createForRepo: [\"POST /repos/{owner}/{repo}/projects\"],\n delete: [\"DELETE /projects/{project_id}\"],\n deleteCard: [\"DELETE /projects/columns/cards/{card_id}\"],\n deleteColumn: [\"DELETE /projects/columns/{column_id}\"],\n get: [\"GET /projects/{project_id}\"],\n getCard: [\"GET /projects/columns/cards/{card_id}\"],\n getColumn: [\"GET /projects/columns/{column_id}\"],\n getPermissionForUser: [\n \"GET /projects/{project_id}/collaborators/{username}/permission\"\n ],\n listCards: [\"GET /projects/columns/{column_id}/cards\"],\n listCollaborators: [\"GET /projects/{project_id}/collaborators\"],\n listColumns: [\"GET /projects/{project_id}/columns\"],\n listForOrg: [\"GET /orgs/{org}/projects\"],\n listForRepo: [\"GET /repos/{owner}/{repo}/projects\"],\n listForUser: [\"GET /users/{username}/projects\"],\n moveCard: [\"POST /projects/columns/cards/{card_id}/moves\"],\n moveColumn: [\"POST /projects/columns/{column_id}/moves\"],\n removeCollaborator: [\n \"DELETE /projects/{project_id}/collaborators/{username}\"\n ],\n update: [\"PATCH /projects/{project_id}\"],\n updateCard: [\"PATCH /projects/columns/cards/{card_id}\"],\n updateColumn: [\"PATCH /projects/columns/{column_id}\"]\n },\n pulls: {\n checkIfMerged: [\"GET /repos/{owner}/{repo}/pulls/{pull_number}/merge\"],\n create: [\"POST /repos/{owner}/{repo}/pulls\"],\n createReplyForReviewComment: [\n \"POST /repos/{owner}/{repo}/pulls/{pull_number}/comments/{comment_id}/replies\"\n ],\n createReview: [\"POST /repos/{owner}/{repo}/pulls/{pull_number}/reviews\"],\n createReviewComment: [\n \"POST /repos/{owner}/{repo}/pulls/{pull_number}/comments\"\n ],\n deletePendingReview: [\n \"DELETE /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}\"\n ],\n deleteReviewComment: [\n \"DELETE /repos/{owner}/{repo}/pulls/comments/{comment_id}\"\n ],\n dismissReview: [\n \"PUT /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/dismissals\"\n ],\n get: [\"GET /repos/{owner}/{repo}/pulls/{pull_number}\"],\n getReview: [\n \"GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}\"\n ],\n getReviewComment: [\"GET /repos/{owner}/{repo}/pulls/comments/{comment_id}\"],\n list: [\"GET /repos/{owner}/{repo}/pulls\"],\n listCommentsForReview: [\n \"GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/comments\"\n ],\n listCommits: [\"GET /repos/{owner}/{repo}/pulls/{pull_number}/commits\"],\n listFiles: [\"GET /repos/{owner}/{repo}/pulls/{pull_number}/files\"],\n listRequestedReviewers: [\n \"GET /repos/{owner}/{repo}/pulls/{pull_number}/requested_reviewers\"\n ],\n listReviewComments: [\n \"GET /repos/{owner}/{repo}/pulls/{pull_number}/comments\"\n ],\n listReviewCommentsForRepo: [\"GET /repos/{owner}/{repo}/pulls/comments\"],\n listReviews: [\"GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews\"],\n merge: [\"PUT /repos/{owner}/{repo}/pulls/{pull_number}/merge\"],\n removeRequestedReviewers: [\n \"DELETE /repos/{owner}/{repo}/pulls/{pull_number}/requested_reviewers\"\n ],\n requestReviewers: [\n \"POST /repos/{owner}/{repo}/pulls/{pull_number}/requested_reviewers\"\n ],\n submitReview: [\n \"POST /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/events\"\n ],\n update: [\"PATCH /repos/{owner}/{repo}/pulls/{pull_number}\"],\n updateBranch: [\n \"PUT /repos/{owner}/{repo}/pulls/{pull_number}/update-branch\"\n ],\n updateReview: [\n \"PUT /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}\"\n ],\n updateReviewComment: [\n \"PATCH /repos/{owner}/{repo}/pulls/comments/{comment_id}\"\n ]\n },\n rateLimit: { get: [\"GET /rate_limit\"] },\n reactions: {\n createForCommitComment: [\n \"POST /repos/{owner}/{repo}/comments/{comment_id}/reactions\"\n ],\n createForIssue: [\n \"POST /repos/{owner}/{repo}/issues/{issue_number}/reactions\"\n ],\n createForIssueComment: [\n \"POST /repos/{owner}/{repo}/issues/comments/{comment_id}/reactions\"\n ],\n createForPullRequestReviewComment: [\n \"POST /repos/{owner}/{repo}/pulls/comments/{comment_id}/reactions\"\n ],\n createForRelease: [\n \"POST /repos/{owner}/{repo}/releases/{release_id}/reactions\"\n ],\n createForTeamDiscussionCommentInOrg: [\n \"POST /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}/reactions\"\n ],\n createForTeamDiscussionInOrg: [\n \"POST /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/reactions\"\n ],\n deleteForCommitComment: [\n \"DELETE /repos/{owner}/{repo}/comments/{comment_id}/reactions/{reaction_id}\"\n ],\n deleteForIssue: [\n \"DELETE /repos/{owner}/{repo}/issues/{issue_number}/reactions/{reaction_id}\"\n ],\n deleteForIssueComment: [\n \"DELETE /repos/{owner}/{repo}/issues/comments/{comment_id}/reactions/{reaction_id}\"\n ],\n deleteForPullRequestComment: [\n \"DELETE /repos/{owner}/{repo}/pulls/comments/{comment_id}/reactions/{reaction_id}\"\n ],\n deleteForRelease: [\n \"DELETE /repos/{owner}/{repo}/releases/{release_id}/reactions/{reaction_id}\"\n ],\n deleteForTeamDiscussion: [\n \"DELETE /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/reactions/{reaction_id}\"\n ],\n deleteForTeamDiscussionComment: [\n \"DELETE /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}/reactions/{reaction_id}\"\n ],\n listForCommitComment: [\n \"GET /repos/{owner}/{repo}/comments/{comment_id}/reactions\"\n ],\n listForIssue: [\"GET /repos/{owner}/{repo}/issues/{issue_number}/reactions\"],\n listForIssueComment: [\n \"GET /repos/{owner}/{repo}/issues/comments/{comment_id}/reactions\"\n ],\n listForPullRequestReviewComment: [\n \"GET /repos/{owner}/{repo}/pulls/comments/{comment_id}/reactions\"\n ],\n listForRelease: [\n \"GET /repos/{owner}/{repo}/releases/{release_id}/reactions\"\n ],\n listForTeamDiscussionCommentInOrg: [\n \"GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}/reactions\"\n ],\n listForTeamDiscussionInOrg: [\n \"GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/reactions\"\n ]\n },\n repos: {\n acceptInvitation: [\n \"PATCH /user/repository_invitations/{invitation_id}\",\n {},\n { renamed: [\"repos\", \"acceptInvitationForAuthenticatedUser\"] }\n ],\n acceptInvitationForAuthenticatedUser: [\n \"PATCH /user/repository_invitations/{invitation_id}\"\n ],\n addAppAccessRestrictions: [\n \"POST /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/apps\",\n {},\n { mapToData: \"apps\" }\n ],\n addCollaborator: [\"PUT /repos/{owner}/{repo}/collaborators/{username}\"],\n addStatusCheckContexts: [\n \"POST /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts\",\n {},\n { mapToData: \"contexts\" }\n ],\n addTeamAccessRestrictions: [\n \"POST /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams\",\n {},\n { mapToData: \"teams\" }\n ],\n addUserAccessRestrictions: [\n \"POST /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users\",\n {},\n { mapToData: \"users\" }\n ],\n cancelPagesDeployment: [\n \"POST /repos/{owner}/{repo}/pages/deployments/{pages_deployment_id}/cancel\"\n ],\n checkAutomatedSecurityFixes: [\n \"GET /repos/{owner}/{repo}/automated-security-fixes\"\n ],\n checkCollaborator: [\"GET /repos/{owner}/{repo}/collaborators/{username}\"],\n checkVulnerabilityAlerts: [\n \"GET /repos/{owner}/{repo}/vulnerability-alerts\"\n ],\n codeownersErrors: [\"GET /repos/{owner}/{repo}/codeowners/errors\"],\n compareCommits: [\"GET /repos/{owner}/{repo}/compare/{base}...{head}\"],\n compareCommitsWithBasehead: [\n \"GET /repos/{owner}/{repo}/compare/{basehead}\"\n ],\n createAutolink: [\"POST /repos/{owner}/{repo}/autolinks\"],\n createCommitComment: [\n \"POST /repos/{owner}/{repo}/commits/{commit_sha}/comments\"\n ],\n createCommitSignatureProtection: [\n \"POST /repos/{owner}/{repo}/branches/{branch}/protection/required_signatures\"\n ],\n createCommitStatus: [\"POST /repos/{owner}/{repo}/statuses/{sha}\"],\n createDeployKey: [\"POST /repos/{owner}/{repo}/keys\"],\n createDeployment: [\"POST /repos/{owner}/{repo}/deployments\"],\n createDeploymentBranchPolicy: [\n \"POST /repos/{owner}/{repo}/environments/{environment_name}/deployment-branch-policies\"\n ],\n createDeploymentProtectionRule: [\n \"POST /repos/{owner}/{repo}/environments/{environment_name}/deployment_protection_rules\"\n ],\n createDeploymentStatus: [\n \"POST /repos/{owner}/{repo}/deployments/{deployment_id}/statuses\"\n ],\n createDispatchEvent: [\"POST /repos/{owner}/{repo}/dispatches\"],\n createForAuthenticatedUser: [\"POST /user/repos\"],\n createFork: [\"POST /repos/{owner}/{repo}/forks\"],\n createInOrg: [\"POST /orgs/{org}/repos\"],\n createOrUpdateCustomPropertiesValues: [\n \"PATCH /repos/{owner}/{repo}/properties/values\"\n ],\n createOrUpdateEnvironment: [\n \"PUT /repos/{owner}/{repo}/environments/{environment_name}\"\n ],\n createOrUpdateFileContents: [\"PUT /repos/{owner}/{repo}/contents/{path}\"],\n createOrgRuleset: [\"POST /orgs/{org}/rulesets\"],\n createPagesDeployment: [\"POST /repos/{owner}/{repo}/pages/deployments\"],\n createPagesSite: [\"POST /repos/{owner}/{repo}/pages\"],\n createRelease: [\"POST /repos/{owner}/{repo}/releases\"],\n createRepoRuleset: [\"POST /repos/{owner}/{repo}/rulesets\"],\n createTagProtection: [\"POST /repos/{owner}/{repo}/tags/protection\"],\n createUsingTemplate: [\n \"POST /repos/{template_owner}/{template_repo}/generate\"\n ],\n createWebhook: [\"POST /repos/{owner}/{repo}/hooks\"],\n declineInvitation: [\n \"DELETE /user/repository_invitations/{invitation_id}\",\n {},\n { renamed: [\"repos\", \"declineInvitationForAuthenticatedUser\"] }\n ],\n declineInvitationForAuthenticatedUser: [\n \"DELETE /user/repository_invitations/{invitation_id}\"\n ],\n delete: [\"DELETE /repos/{owner}/{repo}\"],\n deleteAccessRestrictions: [\n \"DELETE /repos/{owner}/{repo}/branches/{branch}/protection/restrictions\"\n ],\n deleteAdminBranchProtection: [\n \"DELETE /repos/{owner}/{repo}/branches/{branch}/protection/enforce_admins\"\n ],\n deleteAnEnvironment: [\n \"DELETE /repos/{owner}/{repo}/environments/{environment_name}\"\n ],\n deleteAutolink: [\"DELETE /repos/{owner}/{repo}/autolinks/{autolink_id}\"],\n deleteBranchProtection: [\n \"DELETE /repos/{owner}/{repo}/branches/{branch}/protection\"\n ],\n deleteCommitComment: [\"DELETE /repos/{owner}/{repo}/comments/{comment_id}\"],\n deleteCommitSignatureProtection: [\n \"DELETE /repos/{owner}/{repo}/branches/{branch}/protection/required_signatures\"\n ],\n deleteDeployKey: [\"DELETE /repos/{owner}/{repo}/keys/{key_id}\"],\n deleteDeployment: [\n \"DELETE /repos/{owner}/{repo}/deployments/{deployment_id}\"\n ],\n deleteDeploymentBranchPolicy: [\n \"DELETE /repos/{owner}/{repo}/environments/{environment_name}/deployment-branch-policies/{branch_policy_id}\"\n ],\n deleteFile: [\"DELETE /repos/{owner}/{repo}/contents/{path}\"],\n deleteInvitation: [\n \"DELETE /repos/{owner}/{repo}/invitations/{invitation_id}\"\n ],\n deleteOrgRuleset: [\"DELETE /orgs/{org}/rulesets/{ruleset_id}\"],\n deletePagesSite: [\"DELETE /repos/{owner}/{repo}/pages\"],\n deletePullRequestReviewProtection: [\n \"DELETE /repos/{owner}/{repo}/branches/{branch}/protection/required_pull_request_reviews\"\n ],\n deleteRelease: [\"DELETE /repos/{owner}/{repo}/releases/{release_id}\"],\n deleteReleaseAsset: [\n \"DELETE /repos/{owner}/{repo}/releases/assets/{asset_id}\"\n ],\n deleteRepoRuleset: [\"DELETE /repos/{owner}/{repo}/rulesets/{ruleset_id}\"],\n deleteTagProtection: [\n \"DELETE /repos/{owner}/{repo}/tags/protection/{tag_protection_id}\"\n ],\n deleteWebhook: [\"DELETE /repos/{owner}/{repo}/hooks/{hook_id}\"],\n disableAutomatedSecurityFixes: [\n \"DELETE /repos/{owner}/{repo}/automated-security-fixes\"\n ],\n disableDeploymentProtectionRule: [\n \"DELETE /repos/{owner}/{repo}/environments/{environment_name}/deployment_protection_rules/{protection_rule_id}\"\n ],\n disablePrivateVulnerabilityReporting: [\n \"DELETE /repos/{owner}/{repo}/private-vulnerability-reporting\"\n ],\n disableVulnerabilityAlerts: [\n \"DELETE /repos/{owner}/{repo}/vulnerability-alerts\"\n ],\n downloadArchive: [\n \"GET /repos/{owner}/{repo}/zipball/{ref}\",\n {},\n { renamed: [\"repos\", \"downloadZipballArchive\"] }\n ],\n downloadTarballArchive: [\"GET /repos/{owner}/{repo}/tarball/{ref}\"],\n downloadZipballArchive: [\"GET /repos/{owner}/{repo}/zipball/{ref}\"],\n enableAutomatedSecurityFixes: [\n \"PUT /repos/{owner}/{repo}/automated-security-fixes\"\n ],\n enablePrivateVulnerabilityReporting: [\n \"PUT /repos/{owner}/{repo}/private-vulnerability-reporting\"\n ],\n enableVulnerabilityAlerts: [\n \"PUT /repos/{owner}/{repo}/vulnerability-alerts\"\n ],\n generateReleaseNotes: [\n \"POST /repos/{owner}/{repo}/releases/generate-notes\"\n ],\n get: [\"GET /repos/{owner}/{repo}\"],\n getAccessRestrictions: [\n \"GET /repos/{owner}/{repo}/branches/{branch}/protection/restrictions\"\n ],\n getAdminBranchProtection: [\n \"GET /repos/{owner}/{repo}/branches/{branch}/protection/enforce_admins\"\n ],\n getAllDeploymentProtectionRules: [\n \"GET /repos/{owner}/{repo}/environments/{environment_name}/deployment_protection_rules\"\n ],\n getAllEnvironments: [\"GET /repos/{owner}/{repo}/environments\"],\n getAllStatusCheckContexts: [\n \"GET /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts\"\n ],\n getAllTopics: [\"GET /repos/{owner}/{repo}/topics\"],\n getAppsWithAccessToProtectedBranch: [\n \"GET /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/apps\"\n ],\n getAutolink: [\"GET /repos/{owner}/{repo}/autolinks/{autolink_id}\"],\n getBranch: [\"GET /repos/{owner}/{repo}/branches/{branch}\"],\n getBranchProtection: [\n \"GET /repos/{owner}/{repo}/branches/{branch}/protection\"\n ],\n getBranchRules: [\"GET /repos/{owner}/{repo}/rules/branches/{branch}\"],\n getClones: [\"GET /repos/{owner}/{repo}/traffic/clones\"],\n getCodeFrequencyStats: [\"GET /repos/{owner}/{repo}/stats/code_frequency\"],\n getCollaboratorPermissionLevel: [\n \"GET /repos/{owner}/{repo}/collaborators/{username}/permission\"\n ],\n getCombinedStatusForRef: [\"GET /repos/{owner}/{repo}/commits/{ref}/status\"],\n getCommit: [\"GET /repos/{owner}/{repo}/commits/{ref}\"],\n getCommitActivityStats: [\"GET /repos/{owner}/{repo}/stats/commit_activity\"],\n getCommitComment: [\"GET /repos/{owner}/{repo}/comments/{comment_id}\"],\n getCommitSignatureProtection: [\n \"GET /repos/{owner}/{repo}/branches/{branch}/protection/required_signatures\"\n ],\n getCommunityProfileMetrics: [\"GET /repos/{owner}/{repo}/community/profile\"],\n getContent: [\"GET /repos/{owner}/{repo}/contents/{path}\"],\n getContributorsStats: [\"GET /repos/{owner}/{repo}/stats/contributors\"],\n getCustomDeploymentProtectionRule: [\n \"GET /repos/{owner}/{repo}/environments/{environment_name}/deployment_protection_rules/{protection_rule_id}\"\n ],\n getCustomPropertiesValues: [\"GET /repos/{owner}/{repo}/properties/values\"],\n getDeployKey: [\"GET /repos/{owner}/{repo}/keys/{key_id}\"],\n getDeployment: [\"GET /repos/{owner}/{repo}/deployments/{deployment_id}\"],\n getDeploymentBranchPolicy: [\n \"GET /repos/{owner}/{repo}/environments/{environment_name}/deployment-branch-policies/{branch_policy_id}\"\n ],\n getDeploymentStatus: [\n \"GET /repos/{owner}/{repo}/deployments/{deployment_id}/statuses/{status_id}\"\n ],\n getEnvironment: [\n \"GET /repos/{owner}/{repo}/environments/{environment_name}\"\n ],\n getLatestPagesBuild: [\"GET /repos/{owner}/{repo}/pages/builds/latest\"],\n getLatestRelease: [\"GET /repos/{owner}/{repo}/releases/latest\"],\n getOrgRuleSuite: [\"GET /orgs/{org}/rulesets/rule-suites/{rule_suite_id}\"],\n getOrgRuleSuites: [\"GET /orgs/{org}/rulesets/rule-suites\"],\n getOrgRuleset: [\"GET /orgs/{org}/rulesets/{ruleset_id}\"],\n getOrgRulesets: [\"GET /orgs/{org}/rulesets\"],\n getPages: [\"GET /repos/{owner}/{repo}/pages\"],\n getPagesBuild: [\"GET /repos/{owner}/{repo}/pages/builds/{build_id}\"],\n getPagesDeployment: [\n \"GET /repos/{owner}/{repo}/pages/deployments/{pages_deployment_id}\"\n ],\n getPagesHealthCheck: [\"GET /repos/{owner}/{repo}/pages/health\"],\n getParticipationStats: [\"GET /repos/{owner}/{repo}/stats/participation\"],\n getPullRequestReviewProtection: [\n \"GET /repos/{owner}/{repo}/branches/{branch}/protection/required_pull_request_reviews\"\n ],\n getPunchCardStats: [\"GET /repos/{owner}/{repo}/stats/punch_card\"],\n getReadme: [\"GET /repos/{owner}/{repo}/readme\"],\n getReadmeInDirectory: [\"GET /repos/{owner}/{repo}/readme/{dir}\"],\n getRelease: [\"GET /repos/{owner}/{repo}/releases/{release_id}\"],\n getReleaseAsset: [\"GET /repos/{owner}/{repo}/releases/assets/{asset_id}\"],\n getReleaseByTag: [\"GET /repos/{owner}/{repo}/releases/tags/{tag}\"],\n getRepoRuleSuite: [\n \"GET /repos/{owner}/{repo}/rulesets/rule-suites/{rule_suite_id}\"\n ],\n getRepoRuleSuites: [\"GET /repos/{owner}/{repo}/rulesets/rule-suites\"],\n getRepoRuleset: [\"GET /repos/{owner}/{repo}/rulesets/{ruleset_id}\"],\n getRepoRulesets: [\"GET /repos/{owner}/{repo}/rulesets\"],\n getStatusChecksProtection: [\n \"GET /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks\"\n ],\n getTeamsWithAccessToProtectedBranch: [\n \"GET /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams\"\n ],\n getTopPaths: [\"GET /repos/{owner}/{repo}/traffic/popular/paths\"],\n getTopReferrers: [\"GET /repos/{owner}/{repo}/traffic/popular/referrers\"],\n getUsersWithAccessToProtectedBranch: [\n \"GET /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users\"\n ],\n getViews: [\"GET /repos/{owner}/{repo}/traffic/views\"],\n getWebhook: [\"GET /repos/{owner}/{repo}/hooks/{hook_id}\"],\n getWebhookConfigForRepo: [\n \"GET /repos/{owner}/{repo}/hooks/{hook_id}/config\"\n ],\n getWebhookDelivery: [\n \"GET /repos/{owner}/{repo}/hooks/{hook_id}/deliveries/{delivery_id}\"\n ],\n listActivities: [\"GET /repos/{owner}/{repo}/activity\"],\n listAutolinks: [\"GET /repos/{owner}/{repo}/autolinks\"],\n listBranches: [\"GET /repos/{owner}/{repo}/branches\"],\n listBranchesForHeadCommit: [\n \"GET /repos/{owner}/{repo}/commits/{commit_sha}/branches-where-head\"\n ],\n listCollaborators: [\"GET /repos/{owner}/{repo}/collaborators\"],\n listCommentsForCommit: [\n \"GET /repos/{owner}/{repo}/commits/{commit_sha}/comments\"\n ],\n listCommitCommentsForRepo: [\"GET /repos/{owner}/{repo}/comments\"],\n listCommitStatusesForRef: [\n \"GET /repos/{owner}/{repo}/commits/{ref}/statuses\"\n ],\n listCommits: [\"GET /repos/{owner}/{repo}/commits\"],\n listContributors: [\"GET /repos/{owner}/{repo}/contributors\"],\n listCustomDeploymentRuleIntegrations: [\n \"GET /repos/{owner}/{repo}/environments/{environment_name}/deployment_protection_rules/apps\"\n ],\n listDeployKeys: [\"GET /repos/{owner}/{repo}/keys\"],\n listDeploymentBranchPolicies: [\n \"GET /repos/{owner}/{repo}/environments/{environment_name}/deployment-branch-policies\"\n ],\n listDeploymentStatuses: [\n \"GET /repos/{owner}/{repo}/deployments/{deployment_id}/statuses\"\n ],\n listDeployments: [\"GET /repos/{owner}/{repo}/deployments\"],\n listForAuthenticatedUser: [\"GET /user/repos\"],\n listForOrg: [\"GET /orgs/{org}/repos\"],\n listForUser: [\"GET /users/{username}/repos\"],\n listForks: [\"GET /repos/{owner}/{repo}/forks\"],\n listInvitations: [\"GET /repos/{owner}/{repo}/invitations\"],\n listInvitationsForAuthenticatedUser: [\"GET /user/repository_invitations\"],\n listLanguages: [\"GET /repos/{owner}/{repo}/languages\"],\n listPagesBuilds: [\"GET /repos/{owner}/{repo}/pages/builds\"],\n listPublic: [\"GET /repositories\"],\n listPullRequestsAssociatedWithCommit: [\n \"GET /repos/{owner}/{repo}/commits/{commit_sha}/pulls\"\n ],\n listReleaseAssets: [\n \"GET /repos/{owner}/{repo}/releases/{release_id}/assets\"\n ],\n listReleases: [\"GET /repos/{owner}/{repo}/releases\"],\n listTagProtection: [\"GET /repos/{owner}/{repo}/tags/protection\"],\n listTags: [\"GET /repos/{owner}/{repo}/tags\"],\n listTeams: [\"GET /repos/{owner}/{repo}/teams\"],\n listWebhookDeliveries: [\n \"GET /repos/{owner}/{repo}/hooks/{hook_id}/deliveries\"\n ],\n listWebhooks: [\"GET /repos/{owner}/{repo}/hooks\"],\n merge: [\"POST /repos/{owner}/{repo}/merges\"],\n mergeUpstream: [\"POST /repos/{owner}/{repo}/merge-upstream\"],\n pingWebhook: [\"POST /repos/{owner}/{repo}/hooks/{hook_id}/pings\"],\n redeliverWebhookDelivery: [\n \"POST /repos/{owner}/{repo}/hooks/{hook_id}/deliveries/{delivery_id}/attempts\"\n ],\n removeAppAccessRestrictions: [\n \"DELETE /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/apps\",\n {},\n { mapToData: \"apps\" }\n ],\n removeCollaborator: [\n \"DELETE /repos/{owner}/{repo}/collaborators/{username}\"\n ],\n removeStatusCheckContexts: [\n \"DELETE /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts\",\n {},\n { mapToData: \"contexts\" }\n ],\n removeStatusCheckProtection: [\n \"DELETE /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks\"\n ],\n removeTeamAccessRestrictions: [\n \"DELETE /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams\",\n {},\n { mapToData: \"teams\" }\n ],\n removeUserAccessRestrictions: [\n \"DELETE /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users\",\n {},\n { mapToData: \"users\" }\n ],\n renameBranch: [\"POST /repos/{owner}/{repo}/branches/{branch}/rename\"],\n replaceAllTopics: [\"PUT /repos/{owner}/{repo}/topics\"],\n requestPagesBuild: [\"POST /repos/{owner}/{repo}/pages/builds\"],\n setAdminBranchProtection: [\n \"POST /repos/{owner}/{repo}/branches/{branch}/protection/enforce_admins\"\n ],\n setAppAccessRestrictions: [\n \"PUT /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/apps\",\n {},\n { mapToData: \"apps\" }\n ],\n setStatusCheckContexts: [\n \"PUT /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts\",\n {},\n { mapToData: \"contexts\" }\n ],\n setTeamAccessRestrictions: [\n \"PUT /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams\",\n {},\n { mapToData: \"teams\" }\n ],\n setUserAccessRestrictions: [\n \"PUT /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users\",\n {},\n { mapToData: \"users\" }\n ],\n testPushWebhook: [\"POST /repos/{owner}/{repo}/hooks/{hook_id}/tests\"],\n transfer: [\"POST /repos/{owner}/{repo}/transfer\"],\n update: [\"PATCH /repos/{owner}/{repo}\"],\n updateBranchProtection: [\n \"PUT /repos/{owner}/{repo}/branches/{branch}/protection\"\n ],\n updateCommitComment: [\"PATCH /repos/{owner}/{repo}/comments/{comment_id}\"],\n updateDeploymentBranchPolicy: [\n \"PUT /repos/{owner}/{repo}/environments/{environment_name}/deployment-branch-policies/{branch_policy_id}\"\n ],\n updateInformationAboutPagesSite: [\"PUT /repos/{owner}/{repo}/pages\"],\n updateInvitation: [\n \"PATCH /repos/{owner}/{repo}/invitations/{invitation_id}\"\n ],\n updateOrgRuleset: [\"PUT /orgs/{org}/rulesets/{ruleset_id}\"],\n updatePullRequestReviewProtection: [\n \"PATCH /repos/{owner}/{repo}/branches/{branch}/protection/required_pull_request_reviews\"\n ],\n updateRelease: [\"PATCH /repos/{owner}/{repo}/releases/{release_id}\"],\n updateReleaseAsset: [\n \"PATCH /repos/{owner}/{repo}/releases/assets/{asset_id}\"\n ],\n updateRepoRuleset: [\"PUT /repos/{owner}/{repo}/rulesets/{ruleset_id}\"],\n updateStatusCheckPotection: [\n \"PATCH /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks\",\n {},\n { renamed: [\"repos\", \"updateStatusCheckProtection\"] }\n ],\n updateStatusCheckProtection: [\n \"PATCH /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks\"\n ],\n updateWebhook: [\"PATCH /repos/{owner}/{repo}/hooks/{hook_id}\"],\n updateWebhookConfigForRepo: [\n \"PATCH /repos/{owner}/{repo}/hooks/{hook_id}/config\"\n ],\n uploadReleaseAsset: [\n \"POST /repos/{owner}/{repo}/releases/{release_id}/assets{?name,label}\",\n { baseUrl: \"https://uploads.github.com\" }\n ]\n },\n search: {\n code: [\"GET /search/code\"],\n commits: [\"GET /search/commits\"],\n issuesAndPullRequests: [\"GET /search/issues\"],\n labels: [\"GET /search/labels\"],\n repos: [\"GET /search/repositories\"],\n topics: [\"GET /search/topics\"],\n users: [\"GET /search/users\"]\n },\n secretScanning: {\n getAlert: [\n \"GET /repos/{owner}/{repo}/secret-scanning/alerts/{alert_number}\"\n ],\n listAlertsForEnterprise: [\n \"GET /enterprises/{enterprise}/secret-scanning/alerts\"\n ],\n listAlertsForOrg: [\"GET /orgs/{org}/secret-scanning/alerts\"],\n listAlertsForRepo: [\"GET /repos/{owner}/{repo}/secret-scanning/alerts\"],\n listLocationsForAlert: [\n \"GET /repos/{owner}/{repo}/secret-scanning/alerts/{alert_number}/locations\"\n ],\n updateAlert: [\n \"PATCH /repos/{owner}/{repo}/secret-scanning/alerts/{alert_number}\"\n ]\n },\n securityAdvisories: {\n createFork: [\n \"POST /repos/{owner}/{repo}/security-advisories/{ghsa_id}/forks\"\n ],\n createPrivateVulnerabilityReport: [\n \"POST /repos/{owner}/{repo}/security-advisories/reports\"\n ],\n createRepositoryAdvisory: [\n \"POST /repos/{owner}/{repo}/security-advisories\"\n ],\n createRepositoryAdvisoryCveRequest: [\n \"POST /repos/{owner}/{repo}/security-advisories/{ghsa_id}/cve\"\n ],\n getGlobalAdvisory: [\"GET /advisories/{ghsa_id}\"],\n getRepositoryAdvisory: [\n \"GET /repos/{owner}/{repo}/security-advisories/{ghsa_id}\"\n ],\n listGlobalAdvisories: [\"GET /advisories\"],\n listOrgRepositoryAdvisories: [\"GET /orgs/{org}/security-advisories\"],\n listRepositoryAdvisories: [\"GET /repos/{owner}/{repo}/security-advisories\"],\n updateRepositoryAdvisory: [\n \"PATCH /repos/{owner}/{repo}/security-advisories/{ghsa_id}\"\n ]\n },\n teams: {\n addOrUpdateMembershipForUserInOrg: [\n \"PUT /orgs/{org}/teams/{team_slug}/memberships/{username}\"\n ],\n addOrUpdateProjectPermissionsInOrg: [\n \"PUT /orgs/{org}/teams/{team_slug}/projects/{project_id}\"\n ],\n addOrUpdateRepoPermissionsInOrg: [\n \"PUT /orgs/{org}/teams/{team_slug}/repos/{owner}/{repo}\"\n ],\n checkPermissionsForProjectInOrg: [\n \"GET /orgs/{org}/teams/{team_slug}/projects/{project_id}\"\n ],\n checkPermissionsForRepoInOrg: [\n \"GET /orgs/{org}/teams/{team_slug}/repos/{owner}/{repo}\"\n ],\n create: [\"POST /orgs/{org}/teams\"],\n createDiscussionCommentInOrg: [\n \"POST /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments\"\n ],\n createDiscussionInOrg: [\"POST /orgs/{org}/teams/{team_slug}/discussions\"],\n deleteDiscussionCommentInOrg: [\n \"DELETE /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}\"\n ],\n deleteDiscussionInOrg: [\n \"DELETE /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}\"\n ],\n deleteInOrg: [\"DELETE /orgs/{org}/teams/{team_slug}\"],\n getByName: [\"GET /orgs/{org}/teams/{team_slug}\"],\n getDiscussionCommentInOrg: [\n \"GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}\"\n ],\n getDiscussionInOrg: [\n \"GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}\"\n ],\n getMembershipForUserInOrg: [\n \"GET /orgs/{org}/teams/{team_slug}/memberships/{username}\"\n ],\n list: [\"GET /orgs/{org}/teams\"],\n listChildInOrg: [\"GET /orgs/{org}/teams/{team_slug}/teams\"],\n listDiscussionCommentsInOrg: [\n \"GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments\"\n ],\n listDiscussionsInOrg: [\"GET /orgs/{org}/teams/{team_slug}/discussions\"],\n listForAuthenticatedUser: [\"GET /user/teams\"],\n listMembersInOrg: [\"GET /orgs/{org}/teams/{team_slug}/members\"],\n listPendingInvitationsInOrg: [\n \"GET /orgs/{org}/teams/{team_slug}/invitations\"\n ],\n listProjectsInOrg: [\"GET /orgs/{org}/teams/{team_slug}/projects\"],\n listReposInOrg: [\"GET /orgs/{org}/teams/{team_slug}/repos\"],\n removeMembershipForUserInOrg: [\n \"DELETE /orgs/{org}/teams/{team_slug}/memberships/{username}\"\n ],\n removeProjectInOrg: [\n \"DELETE /orgs/{org}/teams/{team_slug}/projects/{project_id}\"\n ],\n removeRepoInOrg: [\n \"DELETE /orgs/{org}/teams/{team_slug}/repos/{owner}/{repo}\"\n ],\n updateDiscussionCommentInOrg: [\n \"PATCH /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}\"\n ],\n updateDiscussionInOrg: [\n \"PATCH /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}\"\n ],\n updateInOrg: [\"PATCH /orgs/{org}/teams/{team_slug}\"]\n },\n users: {\n addEmailForAuthenticated: [\n \"POST /user/emails\",\n {},\n { renamed: [\"users\", \"addEmailForAuthenticatedUser\"] }\n ],\n addEmailForAuthenticatedUser: [\"POST /user/emails\"],\n addSocialAccountForAuthenticatedUser: [\"POST /user/social_accounts\"],\n block: [\"PUT /user/blocks/{username}\"],\n checkBlocked: [\"GET /user/blocks/{username}\"],\n checkFollowingForUser: [\"GET /users/{username}/following/{target_user}\"],\n checkPersonIsFollowedByAuthenticated: [\"GET /user/following/{username}\"],\n createGpgKeyForAuthenticated: [\n \"POST /user/gpg_keys\",\n {},\n { renamed: [\"users\", \"createGpgKeyForAuthenticatedUser\"] }\n ],\n createGpgKeyForAuthenticatedUser: [\"POST /user/gpg_keys\"],\n createPublicSshKeyForAuthenticated: [\n \"POST /user/keys\",\n {},\n { renamed: [\"users\", \"createPublicSshKeyForAuthenticatedUser\"] }\n ],\n createPublicSshKeyForAuthenticatedUser: [\"POST /user/keys\"],\n createSshSigningKeyForAuthenticatedUser: [\"POST /user/ssh_signing_keys\"],\n deleteEmailForAuthenticated: [\n \"DELETE /user/emails\",\n {},\n { renamed: [\"users\", \"deleteEmailForAuthenticatedUser\"] }\n ],\n deleteEmailForAuthenticatedUser: [\"DELETE /user/emails\"],\n deleteGpgKeyForAuthenticated: [\n \"DELETE /user/gpg_keys/{gpg_key_id}\",\n {},\n { renamed: [\"users\", \"deleteGpgKeyForAuthenticatedUser\"] }\n ],\n deleteGpgKeyForAuthenticatedUser: [\"DELETE /user/gpg_keys/{gpg_key_id}\"],\n deletePublicSshKeyForAuthenticated: [\n \"DELETE /user/keys/{key_id}\",\n {},\n { renamed: [\"users\", \"deletePublicSshKeyForAuthenticatedUser\"] }\n ],\n deletePublicSshKeyForAuthenticatedUser: [\"DELETE /user/keys/{key_id}\"],\n deleteSocialAccountForAuthenticatedUser: [\"DELETE /user/social_accounts\"],\n deleteSshSigningKeyForAuthenticatedUser: [\n \"DELETE /user/ssh_signing_keys/{ssh_signing_key_id}\"\n ],\n follow: [\"PUT /user/following/{username}\"],\n getAuthenticated: [\"GET /user\"],\n getByUsername: [\"GET /users/{username}\"],\n getContextForUser: [\"GET /users/{username}/hovercard\"],\n getGpgKeyForAuthenticated: [\n \"GET /user/gpg_keys/{gpg_key_id}\",\n {},\n { renamed: [\"users\", \"getGpgKeyForAuthenticatedUser\"] }\n ],\n getGpgKeyForAuthenticatedUser: [\"GET /user/gpg_keys/{gpg_key_id}\"],\n getPublicSshKeyForAuthenticated: [\n \"GET /user/keys/{key_id}\",\n {},\n { renamed: [\"users\", \"getPublicSshKeyForAuthenticatedUser\"] }\n ],\n getPublicSshKeyForAuthenticatedUser: [\"GET /user/keys/{key_id}\"],\n getSshSigningKeyForAuthenticatedUser: [\n \"GET /user/ssh_signing_keys/{ssh_signing_key_id}\"\n ],\n list: [\"GET /users\"],\n listBlockedByAuthenticated: [\n \"GET /user/blocks\",\n {},\n { renamed: [\"users\", \"listBlockedByAuthenticatedUser\"] }\n ],\n listBlockedByAuthenticatedUser: [\"GET /user/blocks\"],\n listEmailsForAuthenticated: [\n \"GET /user/emails\",\n {},\n { renamed: [\"users\", \"listEmailsForAuthenticatedUser\"] }\n ],\n listEmailsForAuthenticatedUser: [\"GET /user/emails\"],\n listFollowedByAuthenticated: [\n \"GET /user/following\",\n {},\n { renamed: [\"users\", \"listFollowedByAuthenticatedUser\"] }\n ],\n listFollowedByAuthenticatedUser: [\"GET /user/following\"],\n listFollowersForAuthenticatedUser: [\"GET /user/followers\"],\n listFollowersForUser: [\"GET /users/{username}/followers\"],\n listFollowingForUser: [\"GET /users/{username}/following\"],\n listGpgKeysForAuthenticated: [\n \"GET /user/gpg_keys\",\n {},\n { renamed: [\"users\", \"listGpgKeysForAuthenticatedUser\"] }\n ],\n listGpgKeysForAuthenticatedUser: [\"GET /user/gpg_keys\"],\n listGpgKeysForUser: [\"GET /users/{username}/gpg_keys\"],\n listPublicEmailsForAuthenticated: [\n \"GET /user/public_emails\",\n {},\n { renamed: [\"users\", \"listPublicEmailsForAuthenticatedUser\"] }\n ],\n listPublicEmailsForAuthenticatedUser: [\"GET /user/public_emails\"],\n listPublicKeysForUser: [\"GET /users/{username}/keys\"],\n listPublicSshKeysForAuthenticated: [\n \"GET /user/keys\",\n {},\n { renamed: [\"users\", \"listPublicSshKeysForAuthenticatedUser\"] }\n ],\n listPublicSshKeysForAuthenticatedUser: [\"GET /user/keys\"],\n listSocialAccountsForAuthenticatedUser: [\"GET /user/social_accounts\"],\n listSocialAccountsForUser: [\"GET /users/{username}/social_accounts\"],\n listSshSigningKeysForAuthenticatedUser: [\"GET /user/ssh_signing_keys\"],\n listSshSigningKeysForUser: [\"GET /users/{username}/ssh_signing_keys\"],\n setPrimaryEmailVisibilityForAuthenticated: [\n \"PATCH /user/email/visibility\",\n {},\n { renamed: [\"users\", \"setPrimaryEmailVisibilityForAuthenticatedUser\"] }\n ],\n setPrimaryEmailVisibilityForAuthenticatedUser: [\n \"PATCH /user/email/visibility\"\n ],\n unblock: [\"DELETE /user/blocks/{username}\"],\n unfollow: [\"DELETE /user/following/{username}\"],\n updateAuthenticated: [\"PATCH /user\"]\n }\n};\nvar endpoints_default = Endpoints;\n\n// pkg/dist-src/endpoints-to-methods.js\nvar endpointMethodsMap = /* @__PURE__ */ new Map();\nfor (const [scope, endpoints] of Object.entries(endpoints_default)) {\n for (const [methodName, endpoint] of Object.entries(endpoints)) {\n const [route, defaults, decorations] = endpoint;\n const [method, url] = route.split(/ /);\n const endpointDefaults = Object.assign(\n {\n method,\n url\n },\n defaults\n );\n if (!endpointMethodsMap.has(scope)) {\n endpointMethodsMap.set(scope, /* @__PURE__ */ new Map());\n }\n endpointMethodsMap.get(scope).set(methodName, {\n scope,\n methodName,\n endpointDefaults,\n decorations\n });\n }\n}\nvar handler = {\n has({ scope }, methodName) {\n return endpointMethodsMap.get(scope).has(methodName);\n },\n getOwnPropertyDescriptor(target, methodName) {\n return {\n value: this.get(target, methodName),\n // ensures method is in the cache\n configurable: true,\n writable: true,\n enumerable: true\n };\n },\n defineProperty(target, methodName, descriptor) {\n Object.defineProperty(target.cache, methodName, descriptor);\n return true;\n },\n deleteProperty(target, methodName) {\n delete target.cache[methodName];\n return true;\n },\n ownKeys({ scope }) {\n return [...endpointMethodsMap.get(scope).keys()];\n },\n set(target, methodName, value) {\n return target.cache[methodName] = value;\n },\n get({ octokit, scope, cache }, methodName) {\n if (cache[methodName]) {\n return cache[methodName];\n }\n const method = endpointMethodsMap.get(scope).get(methodName);\n if (!method) {\n return void 0;\n }\n const { endpointDefaults, decorations } = method;\n if (decorations) {\n cache[methodName] = decorate(\n octokit,\n scope,\n methodName,\n endpointDefaults,\n decorations\n );\n } else {\n cache[methodName] = octokit.request.defaults(endpointDefaults);\n }\n return cache[methodName];\n }\n};\nfunction endpointsToMethods(octokit) {\n const newMethods = {};\n for (const scope of endpointMethodsMap.keys()) {\n newMethods[scope] = new Proxy({ octokit, scope, cache: {} }, handler);\n }\n return newMethods;\n}\nfunction decorate(octokit, scope, methodName, defaults, decorations) {\n const requestWithDefaults = octokit.request.defaults(defaults);\n function withDecorations(...args) {\n let options = requestWithDefaults.endpoint.merge(...args);\n if (decorations.mapToData) {\n options = Object.assign({}, options, {\n data: options[decorations.mapToData],\n [decorations.mapToData]: void 0\n });\n return requestWithDefaults(options);\n }\n if (decorations.renamed) {\n const [newScope, newMethodName] = decorations.renamed;\n octokit.log.warn(\n `octokit.${scope}.${methodName}() has been renamed to octokit.${newScope}.${newMethodName}()`\n );\n }\n if (decorations.deprecated) {\n octokit.log.warn(decorations.deprecated);\n }\n if (decorations.renamedParameters) {\n const options2 = requestWithDefaults.endpoint.merge(...args);\n for (const [name, alias] of Object.entries(\n decorations.renamedParameters\n )) {\n if (name in options2) {\n octokit.log.warn(\n `\"${name}\" parameter is deprecated for \"octokit.${scope}.${methodName}()\". Use \"${alias}\" instead`\n );\n if (!(alias in options2)) {\n options2[alias] = options2[name];\n }\n delete options2[name];\n }\n }\n return requestWithDefaults(options2);\n }\n return requestWithDefaults(...args);\n }\n return Object.assign(withDecorations, requestWithDefaults);\n}\n\n// pkg/dist-src/index.js\nfunction restEndpointMethods(octokit) {\n const api = endpointsToMethods(octokit);\n return {\n rest: api\n };\n}\nrestEndpointMethods.VERSION = VERSION;\nfunction legacyRestEndpointMethods(octokit) {\n const api = endpointsToMethods(octokit);\n return {\n ...api,\n rest: api\n };\n}\nlegacyRestEndpointMethods.VERSION = VERSION;\n// Annotate the CommonJS export names for ESM import in node:\n0 && (module.exports = {\n legacyRestEndpointMethods,\n restEndpointMethods\n});\n","\"use strict\";\nvar __create = Object.create;\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __getProtoOf = Object.getPrototypeOf;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(\n // If the importer is in node compatibility mode or this is not an ESM\n // file that has been converted to a CommonJS file using a Babel-\n // compatible transform (i.e. \"__esModule\" has not been set), then set\n // \"default\" to the CommonJS \"module.exports\" for node compatibility.\n isNodeMode || !mod || !mod.__esModule ? __defProp(target, \"default\", { value: mod, enumerable: true }) : target,\n mod\n));\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// pkg/dist-src/index.js\nvar dist_src_exports = {};\n__export(dist_src_exports, {\n RequestError: () => RequestError\n});\nmodule.exports = __toCommonJS(dist_src_exports);\nvar import_deprecation = require(\"deprecation\");\nvar import_once = __toESM(require(\"once\"));\nvar logOnceCode = (0, import_once.default)((deprecation) => console.warn(deprecation));\nvar logOnceHeaders = (0, import_once.default)((deprecation) => console.warn(deprecation));\nvar RequestError = class extends Error {\n constructor(message, statusCode, options) {\n super(message);\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, this.constructor);\n }\n this.name = \"HttpError\";\n this.status = statusCode;\n let headers;\n if (\"headers\" in options && typeof options.headers !== \"undefined\") {\n headers = options.headers;\n }\n if (\"response\" in options) {\n this.response = options.response;\n headers = options.response.headers;\n }\n const requestCopy = Object.assign({}, options.request);\n if (options.request.headers.authorization) {\n requestCopy.headers = Object.assign({}, options.request.headers, {\n authorization: options.request.headers.authorization.replace(\n / .*$/,\n \" [REDACTED]\"\n )\n });\n }\n requestCopy.url = requestCopy.url.replace(/\\bclient_secret=\\w+/g, \"client_secret=[REDACTED]\").replace(/\\baccess_token=\\w+/g, \"access_token=[REDACTED]\");\n this.request = requestCopy;\n Object.defineProperty(this, \"code\", {\n get() {\n logOnceCode(\n new import_deprecation.Deprecation(\n \"[@octokit/request-error] `error.code` is deprecated, use `error.status`.\"\n )\n );\n return statusCode;\n }\n });\n Object.defineProperty(this, \"headers\", {\n get() {\n logOnceHeaders(\n new import_deprecation.Deprecation(\n \"[@octokit/request-error] `error.headers` is deprecated, use `error.response.headers`.\"\n )\n );\n return headers || {};\n }\n });\n }\n};\n// Annotate the CommonJS export names for ESM import in node:\n0 && (module.exports = {\n RequestError\n});\n","\"use strict\";\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// pkg/dist-src/index.js\nvar dist_src_exports = {};\n__export(dist_src_exports, {\n request: () => request\n});\nmodule.exports = __toCommonJS(dist_src_exports);\nvar import_endpoint = require(\"@octokit/endpoint\");\nvar import_universal_user_agent = require(\"universal-user-agent\");\n\n// pkg/dist-src/version.js\nvar VERSION = \"8.4.0\";\n\n// pkg/dist-src/is-plain-object.js\nfunction isPlainObject(value) {\n if (typeof value !== \"object\" || value === null)\n return false;\n if (Object.prototype.toString.call(value) !== \"[object Object]\")\n return false;\n const proto = Object.getPrototypeOf(value);\n if (proto === null)\n return true;\n const Ctor = Object.prototype.hasOwnProperty.call(proto, \"constructor\") && proto.constructor;\n return typeof Ctor === \"function\" && Ctor instanceof Ctor && Function.prototype.call(Ctor) === Function.prototype.call(value);\n}\n\n// pkg/dist-src/fetch-wrapper.js\nvar import_request_error = require(\"@octokit/request-error\");\n\n// pkg/dist-src/get-buffer-response.js\nfunction getBufferResponse(response) {\n return response.arrayBuffer();\n}\n\n// pkg/dist-src/fetch-wrapper.js\nfunction fetchWrapper(requestOptions) {\n var _a, _b, _c, _d;\n const log = requestOptions.request && requestOptions.request.log ? requestOptions.request.log : console;\n const parseSuccessResponseBody = ((_a = requestOptions.request) == null ? void 0 : _a.parseSuccessResponseBody) !== false;\n if (isPlainObject(requestOptions.body) || Array.isArray(requestOptions.body)) {\n requestOptions.body = JSON.stringify(requestOptions.body);\n }\n let headers = {};\n let status;\n let url;\n let { fetch } = globalThis;\n if ((_b = requestOptions.request) == null ? void 0 : _b.fetch) {\n fetch = requestOptions.request.fetch;\n }\n if (!fetch) {\n throw new Error(\n \"fetch is not set. Please pass a fetch implementation as new Octokit({ request: { fetch }}). Learn more at https://github.com/octokit/octokit.js/#fetch-missing\"\n );\n }\n return fetch(requestOptions.url, {\n method: requestOptions.method,\n body: requestOptions.body,\n redirect: (_c = requestOptions.request) == null ? void 0 : _c.redirect,\n headers: requestOptions.headers,\n signal: (_d = requestOptions.request) == null ? void 0 : _d.signal,\n // duplex must be set if request.body is ReadableStream or Async Iterables.\n // See https://fetch.spec.whatwg.org/#dom-requestinit-duplex.\n ...requestOptions.body && { duplex: \"half\" }\n }).then(async (response) => {\n url = response.url;\n status = response.status;\n for (const keyAndValue of response.headers) {\n headers[keyAndValue[0]] = keyAndValue[1];\n }\n if (\"deprecation\" in headers) {\n const matches = headers.link && headers.link.match(/<([^>]+)>; rel=\"deprecation\"/);\n const deprecationLink = matches && matches.pop();\n log.warn(\n `[@octokit/request] \"${requestOptions.method} ${requestOptions.url}\" is deprecated. It is scheduled to be removed on ${headers.sunset}${deprecationLink ? `. See ${deprecationLink}` : \"\"}`\n );\n }\n if (status === 204 || status === 205) {\n return;\n }\n if (requestOptions.method === \"HEAD\") {\n if (status < 400) {\n return;\n }\n throw new import_request_error.RequestError(response.statusText, status, {\n response: {\n url,\n status,\n headers,\n data: void 0\n },\n request: requestOptions\n });\n }\n if (status === 304) {\n throw new import_request_error.RequestError(\"Not modified\", status, {\n response: {\n url,\n status,\n headers,\n data: await getResponseData(response)\n },\n request: requestOptions\n });\n }\n if (status >= 400) {\n const data = await getResponseData(response);\n const error = new import_request_error.RequestError(toErrorMessage(data), status, {\n response: {\n url,\n status,\n headers,\n data\n },\n request: requestOptions\n });\n throw error;\n }\n return parseSuccessResponseBody ? await getResponseData(response) : response.body;\n }).then((data) => {\n return {\n status,\n url,\n headers,\n data\n };\n }).catch((error) => {\n if (error instanceof import_request_error.RequestError)\n throw error;\n else if (error.name === \"AbortError\")\n throw error;\n let message = error.message;\n if (error.name === \"TypeError\" && \"cause\" in error) {\n if (error.cause instanceof Error) {\n message = error.cause.message;\n } else if (typeof error.cause === \"string\") {\n message = error.cause;\n }\n }\n throw new import_request_error.RequestError(message, 500, {\n request: requestOptions\n });\n });\n}\nasync function getResponseData(response) {\n const contentType = response.headers.get(\"content-type\");\n if (/application\\/json/.test(contentType)) {\n return response.json().catch(() => response.text()).catch(() => \"\");\n }\n if (!contentType || /^text\\/|charset=utf-8$/.test(contentType)) {\n return response.text();\n }\n return getBufferResponse(response);\n}\nfunction toErrorMessage(data) {\n if (typeof data === \"string\")\n return data;\n let suffix;\n if (\"documentation_url\" in data) {\n suffix = ` - ${data.documentation_url}`;\n } else {\n suffix = \"\";\n }\n if (\"message\" in data) {\n if (Array.isArray(data.errors)) {\n return `${data.message}: ${data.errors.map(JSON.stringify).join(\", \")}${suffix}`;\n }\n return `${data.message}${suffix}`;\n }\n return `Unknown error: ${JSON.stringify(data)}`;\n}\n\n// pkg/dist-src/with-defaults.js\nfunction withDefaults(oldEndpoint, newDefaults) {\n const endpoint2 = oldEndpoint.defaults(newDefaults);\n const newApi = function(route, parameters) {\n const endpointOptions = endpoint2.merge(route, parameters);\n if (!endpointOptions.request || !endpointOptions.request.hook) {\n return fetchWrapper(endpoint2.parse(endpointOptions));\n }\n const request2 = (route2, parameters2) => {\n return fetchWrapper(\n endpoint2.parse(endpoint2.merge(route2, parameters2))\n );\n };\n Object.assign(request2, {\n endpoint: endpoint2,\n defaults: withDefaults.bind(null, endpoint2)\n });\n return endpointOptions.request.hook(request2, endpointOptions);\n };\n return Object.assign(newApi, {\n endpoint: endpoint2,\n defaults: withDefaults.bind(null, endpoint2)\n });\n}\n\n// pkg/dist-src/index.js\nvar request = withDefaults(import_endpoint.endpoint, {\n headers: {\n \"user-agent\": `octokit-request.js/${VERSION} ${(0, import_universal_user_agent.getUserAgent)()}`\n }\n});\n// Annotate the CommonJS export names for ESM import in node:\n0 && (module.exports = {\n request\n});\n","var __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/index.ts\nvar src_exports = {};\n__export(src_exports, {\n CONFIG_USE_DUALSTACK_ENDPOINT: () => CONFIG_USE_DUALSTACK_ENDPOINT,\n CONFIG_USE_FIPS_ENDPOINT: () => CONFIG_USE_FIPS_ENDPOINT,\n DEFAULT_USE_DUALSTACK_ENDPOINT: () => DEFAULT_USE_DUALSTACK_ENDPOINT,\n DEFAULT_USE_FIPS_ENDPOINT: () => DEFAULT_USE_FIPS_ENDPOINT,\n ENV_USE_DUALSTACK_ENDPOINT: () => ENV_USE_DUALSTACK_ENDPOINT,\n ENV_USE_FIPS_ENDPOINT: () => ENV_USE_FIPS_ENDPOINT,\n NODE_REGION_CONFIG_FILE_OPTIONS: () => NODE_REGION_CONFIG_FILE_OPTIONS,\n NODE_REGION_CONFIG_OPTIONS: () => NODE_REGION_CONFIG_OPTIONS,\n NODE_USE_DUALSTACK_ENDPOINT_CONFIG_OPTIONS: () => NODE_USE_DUALSTACK_ENDPOINT_CONFIG_OPTIONS,\n NODE_USE_FIPS_ENDPOINT_CONFIG_OPTIONS: () => NODE_USE_FIPS_ENDPOINT_CONFIG_OPTIONS,\n REGION_ENV_NAME: () => REGION_ENV_NAME,\n REGION_INI_NAME: () => REGION_INI_NAME,\n getRegionInfo: () => getRegionInfo,\n resolveCustomEndpointsConfig: () => resolveCustomEndpointsConfig,\n resolveEndpointsConfig: () => resolveEndpointsConfig,\n resolveRegionConfig: () => resolveRegionConfig\n});\nmodule.exports = __toCommonJS(src_exports);\n\n// src/endpointsConfig/NodeUseDualstackEndpointConfigOptions.ts\nvar import_util_config_provider = require(\"@smithy/util-config-provider\");\nvar ENV_USE_DUALSTACK_ENDPOINT = \"AWS_USE_DUALSTACK_ENDPOINT\";\nvar CONFIG_USE_DUALSTACK_ENDPOINT = \"use_dualstack_endpoint\";\nvar DEFAULT_USE_DUALSTACK_ENDPOINT = false;\nvar NODE_USE_DUALSTACK_ENDPOINT_CONFIG_OPTIONS = {\n environmentVariableSelector: (env) => (0, import_util_config_provider.booleanSelector)(env, ENV_USE_DUALSTACK_ENDPOINT, import_util_config_provider.SelectorType.ENV),\n configFileSelector: (profile) => (0, import_util_config_provider.booleanSelector)(profile, CONFIG_USE_DUALSTACK_ENDPOINT, import_util_config_provider.SelectorType.CONFIG),\n default: false\n};\n\n// src/endpointsConfig/NodeUseFipsEndpointConfigOptions.ts\n\nvar ENV_USE_FIPS_ENDPOINT = \"AWS_USE_FIPS_ENDPOINT\";\nvar CONFIG_USE_FIPS_ENDPOINT = \"use_fips_endpoint\";\nvar DEFAULT_USE_FIPS_ENDPOINT = false;\nvar NODE_USE_FIPS_ENDPOINT_CONFIG_OPTIONS = {\n environmentVariableSelector: (env) => (0, import_util_config_provider.booleanSelector)(env, ENV_USE_FIPS_ENDPOINT, import_util_config_provider.SelectorType.ENV),\n configFileSelector: (profile) => (0, import_util_config_provider.booleanSelector)(profile, CONFIG_USE_FIPS_ENDPOINT, import_util_config_provider.SelectorType.CONFIG),\n default: false\n};\n\n// src/endpointsConfig/resolveCustomEndpointsConfig.ts\nvar import_util_middleware = require(\"@smithy/util-middleware\");\nvar resolveCustomEndpointsConfig = /* @__PURE__ */ __name((input) => {\n const { endpoint, urlParser } = input;\n return {\n ...input,\n tls: input.tls ?? true,\n endpoint: (0, import_util_middleware.normalizeProvider)(typeof endpoint === \"string\" ? urlParser(endpoint) : endpoint),\n isCustomEndpoint: true,\n useDualstackEndpoint: (0, import_util_middleware.normalizeProvider)(input.useDualstackEndpoint ?? false)\n };\n}, \"resolveCustomEndpointsConfig\");\n\n// src/endpointsConfig/resolveEndpointsConfig.ts\n\n\n// src/endpointsConfig/utils/getEndpointFromRegion.ts\nvar getEndpointFromRegion = /* @__PURE__ */ __name(async (input) => {\n const { tls = true } = input;\n const region = await input.region();\n const dnsHostRegex = new RegExp(/^([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9-]{0,61}[a-zA-Z0-9])$/);\n if (!dnsHostRegex.test(region)) {\n throw new Error(\"Invalid region in client config\");\n }\n const useDualstackEndpoint = await input.useDualstackEndpoint();\n const useFipsEndpoint = await input.useFipsEndpoint();\n const { hostname } = await input.regionInfoProvider(region, { useDualstackEndpoint, useFipsEndpoint }) ?? {};\n if (!hostname) {\n throw new Error(\"Cannot resolve hostname from client config\");\n }\n return input.urlParser(`${tls ? \"https:\" : \"http:\"}//${hostname}`);\n}, \"getEndpointFromRegion\");\n\n// src/endpointsConfig/resolveEndpointsConfig.ts\nvar resolveEndpointsConfig = /* @__PURE__ */ __name((input) => {\n const useDualstackEndpoint = (0, import_util_middleware.normalizeProvider)(input.useDualstackEndpoint ?? false);\n const { endpoint, useFipsEndpoint, urlParser } = input;\n return {\n ...input,\n tls: input.tls ?? true,\n endpoint: endpoint ? (0, import_util_middleware.normalizeProvider)(typeof endpoint === \"string\" ? urlParser(endpoint) : endpoint) : () => getEndpointFromRegion({ ...input, useDualstackEndpoint, useFipsEndpoint }),\n isCustomEndpoint: !!endpoint,\n useDualstackEndpoint\n };\n}, \"resolveEndpointsConfig\");\n\n// src/regionConfig/config.ts\nvar REGION_ENV_NAME = \"AWS_REGION\";\nvar REGION_INI_NAME = \"region\";\nvar NODE_REGION_CONFIG_OPTIONS = {\n environmentVariableSelector: (env) => env[REGION_ENV_NAME],\n configFileSelector: (profile) => profile[REGION_INI_NAME],\n default: () => {\n throw new Error(\"Region is missing\");\n }\n};\nvar NODE_REGION_CONFIG_FILE_OPTIONS = {\n preferredFile: \"credentials\"\n};\n\n// src/regionConfig/isFipsRegion.ts\nvar isFipsRegion = /* @__PURE__ */ __name((region) => typeof region === \"string\" && (region.startsWith(\"fips-\") || region.endsWith(\"-fips\")), \"isFipsRegion\");\n\n// src/regionConfig/getRealRegion.ts\nvar getRealRegion = /* @__PURE__ */ __name((region) => isFipsRegion(region) ? [\"fips-aws-global\", \"aws-fips\"].includes(region) ? \"us-east-1\" : region.replace(/fips-(dkr-|prod-)?|-fips/, \"\") : region, \"getRealRegion\");\n\n// src/regionConfig/resolveRegionConfig.ts\nvar resolveRegionConfig = /* @__PURE__ */ __name((input) => {\n const { region, useFipsEndpoint } = input;\n if (!region) {\n throw new Error(\"Region is missing\");\n }\n return {\n ...input,\n region: async () => {\n if (typeof region === \"string\") {\n return getRealRegion(region);\n }\n const providedRegion = await region();\n return getRealRegion(providedRegion);\n },\n useFipsEndpoint: async () => {\n const providedRegion = typeof region === \"string\" ? region : await region();\n if (isFipsRegion(providedRegion)) {\n return true;\n }\n return typeof useFipsEndpoint !== \"function\" ? Promise.resolve(!!useFipsEndpoint) : useFipsEndpoint();\n }\n };\n}, \"resolveRegionConfig\");\n\n// src/regionInfo/getHostnameFromVariants.ts\nvar getHostnameFromVariants = /* @__PURE__ */ __name((variants = [], { useFipsEndpoint, useDualstackEndpoint }) => {\n var _a;\n return (_a = variants.find(\n ({ tags }) => useFipsEndpoint === tags.includes(\"fips\") && useDualstackEndpoint === tags.includes(\"dualstack\")\n )) == null ? void 0 : _a.hostname;\n}, \"getHostnameFromVariants\");\n\n// src/regionInfo/getResolvedHostname.ts\nvar getResolvedHostname = /* @__PURE__ */ __name((resolvedRegion, { regionHostname, partitionHostname }) => regionHostname ? regionHostname : partitionHostname ? partitionHostname.replace(\"{region}\", resolvedRegion) : void 0, \"getResolvedHostname\");\n\n// src/regionInfo/getResolvedPartition.ts\nvar getResolvedPartition = /* @__PURE__ */ __name((region, { partitionHash }) => Object.keys(partitionHash || {}).find((key) => partitionHash[key].regions.includes(region)) ?? \"aws\", \"getResolvedPartition\");\n\n// src/regionInfo/getResolvedSigningRegion.ts\nvar getResolvedSigningRegion = /* @__PURE__ */ __name((hostname, { signingRegion, regionRegex, useFipsEndpoint }) => {\n if (signingRegion) {\n return signingRegion;\n } else if (useFipsEndpoint) {\n const regionRegexJs = regionRegex.replace(\"\\\\\\\\\", \"\\\\\").replace(/^\\^/g, \"\\\\.\").replace(/\\$$/g, \"\\\\.\");\n const regionRegexmatchArray = hostname.match(regionRegexJs);\n if (regionRegexmatchArray) {\n return regionRegexmatchArray[0].slice(1, -1);\n }\n }\n}, \"getResolvedSigningRegion\");\n\n// src/regionInfo/getRegionInfo.ts\nvar getRegionInfo = /* @__PURE__ */ __name((region, {\n useFipsEndpoint = false,\n useDualstackEndpoint = false,\n signingService,\n regionHash,\n partitionHash\n}) => {\n var _a, _b, _c, _d, _e;\n const partition = getResolvedPartition(region, { partitionHash });\n const resolvedRegion = region in regionHash ? region : ((_a = partitionHash[partition]) == null ? void 0 : _a.endpoint) ?? region;\n const hostnameOptions = { useFipsEndpoint, useDualstackEndpoint };\n const regionHostname = getHostnameFromVariants((_b = regionHash[resolvedRegion]) == null ? void 0 : _b.variants, hostnameOptions);\n const partitionHostname = getHostnameFromVariants((_c = partitionHash[partition]) == null ? void 0 : _c.variants, hostnameOptions);\n const hostname = getResolvedHostname(resolvedRegion, { regionHostname, partitionHostname });\n if (hostname === void 0) {\n throw new Error(`Endpoint resolution failed for: ${{ resolvedRegion, useFipsEndpoint, useDualstackEndpoint }}`);\n }\n const signingRegion = getResolvedSigningRegion(hostname, {\n signingRegion: (_d = regionHash[resolvedRegion]) == null ? void 0 : _d.signingRegion,\n regionRegex: partitionHash[partition].regionRegex,\n useFipsEndpoint\n });\n return {\n partition,\n signingService,\n hostname,\n ...signingRegion && { signingRegion },\n ...((_e = regionHash[resolvedRegion]) == null ? void 0 : _e.signingService) && {\n signingService: regionHash[resolvedRegion].signingService\n }\n };\n}, \"getRegionInfo\");\n// Annotate the CommonJS export names for ESM import in node:\n\n0 && (module.exports = {\n ENV_USE_DUALSTACK_ENDPOINT,\n CONFIG_USE_DUALSTACK_ENDPOINT,\n DEFAULT_USE_DUALSTACK_ENDPOINT,\n NODE_USE_DUALSTACK_ENDPOINT_CONFIG_OPTIONS,\n ENV_USE_FIPS_ENDPOINT,\n CONFIG_USE_FIPS_ENDPOINT,\n DEFAULT_USE_FIPS_ENDPOINT,\n NODE_USE_FIPS_ENDPOINT_CONFIG_OPTIONS,\n resolveCustomEndpointsConfig,\n resolveEndpointsConfig,\n REGION_ENV_NAME,\n REGION_INI_NAME,\n NODE_REGION_CONFIG_OPTIONS,\n NODE_REGION_CONFIG_FILE_OPTIONS,\n resolveRegionConfig,\n getRegionInfo\n});\n\n","var __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/index.ts\nvar src_exports = {};\n__export(src_exports, {\n DefaultIdentityProviderConfig: () => DefaultIdentityProviderConfig,\n EXPIRATION_MS: () => EXPIRATION_MS,\n HttpApiKeyAuthSigner: () => HttpApiKeyAuthSigner,\n HttpBearerAuthSigner: () => HttpBearerAuthSigner,\n NoAuthSigner: () => NoAuthSigner,\n RequestBuilder: () => RequestBuilder,\n createIsIdentityExpiredFunction: () => createIsIdentityExpiredFunction,\n createPaginator: () => createPaginator,\n doesIdentityRequireRefresh: () => doesIdentityRequireRefresh,\n getHttpAuthSchemeEndpointRuleSetPlugin: () => getHttpAuthSchemeEndpointRuleSetPlugin,\n getHttpAuthSchemePlugin: () => getHttpAuthSchemePlugin,\n getHttpSigningPlugin: () => getHttpSigningPlugin,\n getSmithyContext: () => getSmithyContext3,\n httpAuthSchemeEndpointRuleSetMiddlewareOptions: () => httpAuthSchemeEndpointRuleSetMiddlewareOptions,\n httpAuthSchemeMiddleware: () => httpAuthSchemeMiddleware,\n httpAuthSchemeMiddlewareOptions: () => httpAuthSchemeMiddlewareOptions,\n httpSigningMiddleware: () => httpSigningMiddleware,\n httpSigningMiddlewareOptions: () => httpSigningMiddlewareOptions,\n isIdentityExpired: () => isIdentityExpired,\n memoizeIdentityProvider: () => memoizeIdentityProvider,\n normalizeProvider: () => normalizeProvider,\n requestBuilder: () => requestBuilder\n});\nmodule.exports = __toCommonJS(src_exports);\n\n// src/middleware-http-auth-scheme/httpAuthSchemeMiddleware.ts\nvar import_util_middleware = require(\"@smithy/util-middleware\");\nfunction convertHttpAuthSchemesToMap(httpAuthSchemes) {\n const map = /* @__PURE__ */ new Map();\n for (const scheme of httpAuthSchemes) {\n map.set(scheme.schemeId, scheme);\n }\n return map;\n}\n__name(convertHttpAuthSchemesToMap, \"convertHttpAuthSchemesToMap\");\nvar httpAuthSchemeMiddleware = /* @__PURE__ */ __name((config, mwOptions) => (next, context) => async (args) => {\n var _a;\n const options = config.httpAuthSchemeProvider(\n await mwOptions.httpAuthSchemeParametersProvider(config, context, args.input)\n );\n const authSchemes = convertHttpAuthSchemesToMap(config.httpAuthSchemes);\n const smithyContext = (0, import_util_middleware.getSmithyContext)(context);\n const failureReasons = [];\n for (const option of options) {\n const scheme = authSchemes.get(option.schemeId);\n if (!scheme) {\n failureReasons.push(`HttpAuthScheme \\`${option.schemeId}\\` was not enabled for this service.`);\n continue;\n }\n const identityProvider = scheme.identityProvider(await mwOptions.identityProviderConfigProvider(config));\n if (!identityProvider) {\n failureReasons.push(`HttpAuthScheme \\`${option.schemeId}\\` did not have an IdentityProvider configured.`);\n continue;\n }\n const { identityProperties = {}, signingProperties = {} } = ((_a = option.propertiesExtractor) == null ? void 0 : _a.call(option, config, context)) || {};\n option.identityProperties = Object.assign(option.identityProperties || {}, identityProperties);\n option.signingProperties = Object.assign(option.signingProperties || {}, signingProperties);\n smithyContext.selectedHttpAuthScheme = {\n httpAuthOption: option,\n identity: await identityProvider(option.identityProperties),\n signer: scheme.signer\n };\n break;\n }\n if (!smithyContext.selectedHttpAuthScheme) {\n throw new Error(failureReasons.join(\"\\n\"));\n }\n return next(args);\n}, \"httpAuthSchemeMiddleware\");\n\n// src/middleware-http-auth-scheme/getHttpAuthSchemeEndpointRuleSetPlugin.ts\nvar import_middleware_endpoint = require(\"@smithy/middleware-endpoint\");\nvar httpAuthSchemeEndpointRuleSetMiddlewareOptions = {\n step: \"serialize\",\n tags: [\"HTTP_AUTH_SCHEME\"],\n name: \"httpAuthSchemeMiddleware\",\n override: true,\n relation: \"before\",\n toMiddleware: import_middleware_endpoint.endpointMiddlewareOptions.name\n};\nvar getHttpAuthSchemeEndpointRuleSetPlugin = /* @__PURE__ */ __name((config, {\n httpAuthSchemeParametersProvider,\n identityProviderConfigProvider\n}) => ({\n applyToStack: (clientStack) => {\n clientStack.addRelativeTo(\n httpAuthSchemeMiddleware(config, {\n httpAuthSchemeParametersProvider,\n identityProviderConfigProvider\n }),\n httpAuthSchemeEndpointRuleSetMiddlewareOptions\n );\n }\n}), \"getHttpAuthSchemeEndpointRuleSetPlugin\");\n\n// src/middleware-http-auth-scheme/getHttpAuthSchemePlugin.ts\nvar import_middleware_serde = require(\"@smithy/middleware-serde\");\nvar httpAuthSchemeMiddlewareOptions = {\n step: \"serialize\",\n tags: [\"HTTP_AUTH_SCHEME\"],\n name: \"httpAuthSchemeMiddleware\",\n override: true,\n relation: \"before\",\n toMiddleware: import_middleware_serde.serializerMiddlewareOption.name\n};\nvar getHttpAuthSchemePlugin = /* @__PURE__ */ __name((config, {\n httpAuthSchemeParametersProvider,\n identityProviderConfigProvider\n}) => ({\n applyToStack: (clientStack) => {\n clientStack.addRelativeTo(\n httpAuthSchemeMiddleware(config, {\n httpAuthSchemeParametersProvider,\n identityProviderConfigProvider\n }),\n httpAuthSchemeMiddlewareOptions\n );\n }\n}), \"getHttpAuthSchemePlugin\");\n\n// src/middleware-http-signing/httpSigningMiddleware.ts\nvar import_protocol_http = require(\"@smithy/protocol-http\");\n\nvar defaultErrorHandler = /* @__PURE__ */ __name((signingProperties) => (error) => {\n throw error;\n}, \"defaultErrorHandler\");\nvar defaultSuccessHandler = /* @__PURE__ */ __name((httpResponse, signingProperties) => {\n}, \"defaultSuccessHandler\");\nvar httpSigningMiddleware = /* @__PURE__ */ __name((config) => (next, context) => async (args) => {\n if (!import_protocol_http.HttpRequest.isInstance(args.request)) {\n return next(args);\n }\n const smithyContext = (0, import_util_middleware.getSmithyContext)(context);\n const scheme = smithyContext.selectedHttpAuthScheme;\n if (!scheme) {\n throw new Error(`No HttpAuthScheme was selected: unable to sign request`);\n }\n const {\n httpAuthOption: { signingProperties = {} },\n identity,\n signer\n } = scheme;\n const output = await next({\n ...args,\n request: await signer.sign(args.request, identity, signingProperties)\n }).catch((signer.errorHandler || defaultErrorHandler)(signingProperties));\n (signer.successHandler || defaultSuccessHandler)(output.response, signingProperties);\n return output;\n}, \"httpSigningMiddleware\");\n\n// src/middleware-http-signing/getHttpSigningMiddleware.ts\nvar import_middleware_retry = require(\"@smithy/middleware-retry\");\nvar httpSigningMiddlewareOptions = {\n step: \"finalizeRequest\",\n tags: [\"HTTP_SIGNING\"],\n name: \"httpSigningMiddleware\",\n aliases: [\"apiKeyMiddleware\", \"tokenMiddleware\", \"awsAuthMiddleware\"],\n override: true,\n relation: \"after\",\n toMiddleware: import_middleware_retry.retryMiddlewareOptions.name\n};\nvar getHttpSigningPlugin = /* @__PURE__ */ __name((config) => ({\n applyToStack: (clientStack) => {\n clientStack.addRelativeTo(httpSigningMiddleware(config), httpSigningMiddlewareOptions);\n }\n}), \"getHttpSigningPlugin\");\n\n// src/util-identity-and-auth/DefaultIdentityProviderConfig.ts\nvar _DefaultIdentityProviderConfig = class _DefaultIdentityProviderConfig {\n /**\n * Creates an IdentityProviderConfig with a record of scheme IDs to identity providers.\n *\n * @param config scheme IDs and identity providers to configure\n */\n constructor(config) {\n this.authSchemes = /* @__PURE__ */ new Map();\n for (const [key, value] of Object.entries(config)) {\n if (value !== void 0) {\n this.authSchemes.set(key, value);\n }\n }\n }\n getIdentityProvider(schemeId) {\n return this.authSchemes.get(schemeId);\n }\n};\n__name(_DefaultIdentityProviderConfig, \"DefaultIdentityProviderConfig\");\nvar DefaultIdentityProviderConfig = _DefaultIdentityProviderConfig;\n\n// src/util-identity-and-auth/httpAuthSchemes/httpApiKeyAuth.ts\n\nvar import_types = require(\"@smithy/types\");\nvar _HttpApiKeyAuthSigner = class _HttpApiKeyAuthSigner {\n async sign(httpRequest, identity, signingProperties) {\n if (!signingProperties) {\n throw new Error(\n \"request could not be signed with `apiKey` since the `name` and `in` signer properties are missing\"\n );\n }\n if (!signingProperties.name) {\n throw new Error(\"request could not be signed with `apiKey` since the `name` signer property is missing\");\n }\n if (!signingProperties.in) {\n throw new Error(\"request could not be signed with `apiKey` since the `in` signer property is missing\");\n }\n if (!identity.apiKey) {\n throw new Error(\"request could not be signed with `apiKey` since the `apiKey` is not defined\");\n }\n const clonedRequest = import_protocol_http.HttpRequest.clone(httpRequest);\n if (signingProperties.in === import_types.HttpApiKeyAuthLocation.QUERY) {\n clonedRequest.query[signingProperties.name] = identity.apiKey;\n } else if (signingProperties.in === import_types.HttpApiKeyAuthLocation.HEADER) {\n clonedRequest.headers[signingProperties.name] = signingProperties.scheme ? `${signingProperties.scheme} ${identity.apiKey}` : identity.apiKey;\n } else {\n throw new Error(\n \"request can only be signed with `apiKey` locations `query` or `header`, but found: `\" + signingProperties.in + \"`\"\n );\n }\n return clonedRequest;\n }\n};\n__name(_HttpApiKeyAuthSigner, \"HttpApiKeyAuthSigner\");\nvar HttpApiKeyAuthSigner = _HttpApiKeyAuthSigner;\n\n// src/util-identity-and-auth/httpAuthSchemes/httpBearerAuth.ts\n\nvar _HttpBearerAuthSigner = class _HttpBearerAuthSigner {\n async sign(httpRequest, identity, signingProperties) {\n const clonedRequest = import_protocol_http.HttpRequest.clone(httpRequest);\n if (!identity.token) {\n throw new Error(\"request could not be signed with `token` since the `token` is not defined\");\n }\n clonedRequest.headers[\"Authorization\"] = `Bearer ${identity.token}`;\n return clonedRequest;\n }\n};\n__name(_HttpBearerAuthSigner, \"HttpBearerAuthSigner\");\nvar HttpBearerAuthSigner = _HttpBearerAuthSigner;\n\n// src/util-identity-and-auth/httpAuthSchemes/noAuth.ts\nvar _NoAuthSigner = class _NoAuthSigner {\n async sign(httpRequest, identity, signingProperties) {\n return httpRequest;\n }\n};\n__name(_NoAuthSigner, \"NoAuthSigner\");\nvar NoAuthSigner = _NoAuthSigner;\n\n// src/util-identity-and-auth/memoizeIdentityProvider.ts\nvar createIsIdentityExpiredFunction = /* @__PURE__ */ __name((expirationMs) => (identity) => doesIdentityRequireRefresh(identity) && identity.expiration.getTime() - Date.now() < expirationMs, \"createIsIdentityExpiredFunction\");\nvar EXPIRATION_MS = 3e5;\nvar isIdentityExpired = createIsIdentityExpiredFunction(EXPIRATION_MS);\nvar doesIdentityRequireRefresh = /* @__PURE__ */ __name((identity) => identity.expiration !== void 0, \"doesIdentityRequireRefresh\");\nvar memoizeIdentityProvider = /* @__PURE__ */ __name((provider, isExpired, requiresRefresh) => {\n if (provider === void 0) {\n return void 0;\n }\n const normalizedProvider = typeof provider !== \"function\" ? async () => Promise.resolve(provider) : provider;\n let resolved;\n let pending;\n let hasResult;\n let isConstant = false;\n const coalesceProvider = /* @__PURE__ */ __name(async (options) => {\n if (!pending) {\n pending = normalizedProvider(options);\n }\n try {\n resolved = await pending;\n hasResult = true;\n isConstant = false;\n } finally {\n pending = void 0;\n }\n return resolved;\n }, \"coalesceProvider\");\n if (isExpired === void 0) {\n return async (options) => {\n if (!hasResult || (options == null ? void 0 : options.forceRefresh)) {\n resolved = await coalesceProvider(options);\n }\n return resolved;\n };\n }\n return async (options) => {\n if (!hasResult || (options == null ? void 0 : options.forceRefresh)) {\n resolved = await coalesceProvider(options);\n }\n if (isConstant) {\n return resolved;\n }\n if (!requiresRefresh(resolved)) {\n isConstant = true;\n return resolved;\n }\n if (isExpired(resolved)) {\n await coalesceProvider(options);\n return resolved;\n }\n return resolved;\n };\n}, \"memoizeIdentityProvider\");\n\n// src/getSmithyContext.ts\n\nvar getSmithyContext3 = /* @__PURE__ */ __name((context) => context[import_types.SMITHY_CONTEXT_KEY] || (context[import_types.SMITHY_CONTEXT_KEY] = {}), \"getSmithyContext\");\n\n// src/normalizeProvider.ts\nvar normalizeProvider = /* @__PURE__ */ __name((input) => {\n if (typeof input === \"function\")\n return input;\n const promisified = Promise.resolve(input);\n return () => promisified;\n}, \"normalizeProvider\");\n\n// src/protocols/requestBuilder.ts\n\nvar import_smithy_client = require(\"@smithy/smithy-client\");\nfunction requestBuilder(input, context) {\n return new RequestBuilder(input, context);\n}\n__name(requestBuilder, \"requestBuilder\");\nvar _RequestBuilder = class _RequestBuilder {\n constructor(input, context) {\n this.input = input;\n this.context = context;\n this.query = {};\n this.method = \"\";\n this.headers = {};\n this.path = \"\";\n this.body = null;\n this.hostname = \"\";\n this.resolvePathStack = [];\n }\n async build() {\n const { hostname, protocol = \"https\", port, path: basePath } = await this.context.endpoint();\n this.path = basePath;\n for (const resolvePath of this.resolvePathStack) {\n resolvePath(this.path);\n }\n return new import_protocol_http.HttpRequest({\n protocol,\n hostname: this.hostname || hostname,\n port,\n method: this.method,\n path: this.path,\n query: this.query,\n body: this.body,\n headers: this.headers\n });\n }\n /**\n * Brevity setter for \"hostname\".\n */\n hn(hostname) {\n this.hostname = hostname;\n return this;\n }\n /**\n * Brevity initial builder for \"basepath\".\n */\n bp(uriLabel) {\n this.resolvePathStack.push((basePath) => {\n this.path = `${(basePath == null ? void 0 : basePath.endsWith(\"/\")) ? basePath.slice(0, -1) : basePath || \"\"}` + uriLabel;\n });\n return this;\n }\n /**\n * Brevity incremental builder for \"path\".\n */\n p(memberName, labelValueProvider, uriLabel, isGreedyLabel) {\n this.resolvePathStack.push((path) => {\n this.path = (0, import_smithy_client.resolvedPath)(path, this.input, memberName, labelValueProvider, uriLabel, isGreedyLabel);\n });\n return this;\n }\n /**\n * Brevity setter for \"headers\".\n */\n h(headers) {\n this.headers = headers;\n return this;\n }\n /**\n * Brevity setter for \"query\".\n */\n q(query) {\n this.query = query;\n return this;\n }\n /**\n * Brevity setter for \"body\".\n */\n b(body) {\n this.body = body;\n return this;\n }\n /**\n * Brevity setter for \"method\".\n */\n m(method) {\n this.method = method;\n return this;\n }\n};\n__name(_RequestBuilder, \"RequestBuilder\");\nvar RequestBuilder = _RequestBuilder;\n\n// src/pagination/createPaginator.ts\nvar makePagedClientRequest = /* @__PURE__ */ __name(async (CommandCtor, client, input, ...args) => {\n return await client.send(new CommandCtor(input), ...args);\n}, \"makePagedClientRequest\");\nfunction createPaginator(ClientCtor, CommandCtor, inputTokenName, outputTokenName, pageSizeTokenName) {\n return /* @__PURE__ */ __name(async function* paginateOperation(config, input, ...additionalArguments) {\n let token = config.startingToken || void 0;\n let hasNext = true;\n let page;\n while (hasNext) {\n input[inputTokenName] = token;\n if (pageSizeTokenName) {\n input[pageSizeTokenName] = input[pageSizeTokenName] ?? config.pageSize;\n }\n if (config.client instanceof ClientCtor) {\n page = await makePagedClientRequest(CommandCtor, config.client, input, ...additionalArguments);\n } else {\n throw new Error(`Invalid client, expected instance of ${ClientCtor.name}`);\n }\n yield page;\n const prevToken = token;\n token = get(page, outputTokenName);\n hasNext = !!(token && (!config.stopOnSameToken || token !== prevToken));\n }\n return void 0;\n }, \"paginateOperation\");\n}\n__name(createPaginator, \"createPaginator\");\nvar get = /* @__PURE__ */ __name((fromObject, path) => {\n let cursor = fromObject;\n const pathComponents = path.split(\".\");\n for (const step of pathComponents) {\n if (!cursor || typeof cursor !== \"object\") {\n return void 0;\n }\n cursor = cursor[step];\n }\n return cursor;\n}, \"get\");\n// Annotate the CommonJS export names for ESM import in node:\n\n0 && (module.exports = {\n createPaginator,\n httpAuthSchemeMiddleware,\n httpAuthSchemeEndpointRuleSetMiddlewareOptions,\n getHttpAuthSchemeEndpointRuleSetPlugin,\n httpAuthSchemeMiddlewareOptions,\n getHttpAuthSchemePlugin,\n httpSigningMiddleware,\n httpSigningMiddlewareOptions,\n getHttpSigningPlugin,\n DefaultIdentityProviderConfig,\n HttpApiKeyAuthSigner,\n HttpBearerAuthSigner,\n NoAuthSigner,\n createIsIdentityExpiredFunction,\n EXPIRATION_MS,\n isIdentityExpired,\n doesIdentityRequireRefresh,\n memoizeIdentityProvider,\n getSmithyContext,\n normalizeProvider,\n requestBuilder,\n RequestBuilder\n});\n\n","var __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/index.ts\nvar src_exports = {};\n__export(src_exports, {\n AlgorithmId: () => AlgorithmId,\n EndpointURLScheme: () => EndpointURLScheme,\n FieldPosition: () => FieldPosition,\n HttpApiKeyAuthLocation: () => HttpApiKeyAuthLocation,\n HttpAuthLocation: () => HttpAuthLocation,\n IniSectionType: () => IniSectionType,\n RequestHandlerProtocol: () => RequestHandlerProtocol,\n SMITHY_CONTEXT_KEY: () => SMITHY_CONTEXT_KEY,\n getDefaultClientConfiguration: () => getDefaultClientConfiguration,\n resolveDefaultRuntimeConfig: () => resolveDefaultRuntimeConfig\n});\nmodule.exports = __toCommonJS(src_exports);\n\n// src/auth/auth.ts\nvar HttpAuthLocation = /* @__PURE__ */ ((HttpAuthLocation2) => {\n HttpAuthLocation2[\"HEADER\"] = \"header\";\n HttpAuthLocation2[\"QUERY\"] = \"query\";\n return HttpAuthLocation2;\n})(HttpAuthLocation || {});\n\n// src/auth/HttpApiKeyAuth.ts\nvar HttpApiKeyAuthLocation = /* @__PURE__ */ ((HttpApiKeyAuthLocation2) => {\n HttpApiKeyAuthLocation2[\"HEADER\"] = \"header\";\n HttpApiKeyAuthLocation2[\"QUERY\"] = \"query\";\n return HttpApiKeyAuthLocation2;\n})(HttpApiKeyAuthLocation || {});\n\n// src/endpoint.ts\nvar EndpointURLScheme = /* @__PURE__ */ ((EndpointURLScheme2) => {\n EndpointURLScheme2[\"HTTP\"] = \"http\";\n EndpointURLScheme2[\"HTTPS\"] = \"https\";\n return EndpointURLScheme2;\n})(EndpointURLScheme || {});\n\n// src/extensions/checksum.ts\nvar AlgorithmId = /* @__PURE__ */ ((AlgorithmId2) => {\n AlgorithmId2[\"MD5\"] = \"md5\";\n AlgorithmId2[\"CRC32\"] = \"crc32\";\n AlgorithmId2[\"CRC32C\"] = \"crc32c\";\n AlgorithmId2[\"SHA1\"] = \"sha1\";\n AlgorithmId2[\"SHA256\"] = \"sha256\";\n return AlgorithmId2;\n})(AlgorithmId || {});\nvar getChecksumConfiguration = /* @__PURE__ */ __name((runtimeConfig) => {\n const checksumAlgorithms = [];\n if (runtimeConfig.sha256 !== void 0) {\n checksumAlgorithms.push({\n algorithmId: () => \"sha256\" /* SHA256 */,\n checksumConstructor: () => runtimeConfig.sha256\n });\n }\n if (runtimeConfig.md5 != void 0) {\n checksumAlgorithms.push({\n algorithmId: () => \"md5\" /* MD5 */,\n checksumConstructor: () => runtimeConfig.md5\n });\n }\n return {\n _checksumAlgorithms: checksumAlgorithms,\n addChecksumAlgorithm(algo) {\n this._checksumAlgorithms.push(algo);\n },\n checksumAlgorithms() {\n return this._checksumAlgorithms;\n }\n };\n}, \"getChecksumConfiguration\");\nvar resolveChecksumRuntimeConfig = /* @__PURE__ */ __name((clientConfig) => {\n const runtimeConfig = {};\n clientConfig.checksumAlgorithms().forEach((checksumAlgorithm) => {\n runtimeConfig[checksumAlgorithm.algorithmId()] = checksumAlgorithm.checksumConstructor();\n });\n return runtimeConfig;\n}, \"resolveChecksumRuntimeConfig\");\n\n// src/extensions/defaultClientConfiguration.ts\nvar getDefaultClientConfiguration = /* @__PURE__ */ __name((runtimeConfig) => {\n return {\n ...getChecksumConfiguration(runtimeConfig)\n };\n}, \"getDefaultClientConfiguration\");\nvar resolveDefaultRuntimeConfig = /* @__PURE__ */ __name((config) => {\n return {\n ...resolveChecksumRuntimeConfig(config)\n };\n}, \"resolveDefaultRuntimeConfig\");\n\n// src/http.ts\nvar FieldPosition = /* @__PURE__ */ ((FieldPosition2) => {\n FieldPosition2[FieldPosition2[\"HEADER\"] = 0] = \"HEADER\";\n FieldPosition2[FieldPosition2[\"TRAILER\"] = 1] = \"TRAILER\";\n return FieldPosition2;\n})(FieldPosition || {});\n\n// src/middleware.ts\nvar SMITHY_CONTEXT_KEY = \"__smithy_context\";\n\n// src/profile.ts\nvar IniSectionType = /* @__PURE__ */ ((IniSectionType2) => {\n IniSectionType2[\"PROFILE\"] = \"profile\";\n IniSectionType2[\"SSO_SESSION\"] = \"sso-session\";\n IniSectionType2[\"SERVICES\"] = \"services\";\n return IniSectionType2;\n})(IniSectionType || {});\n\n// src/transfer.ts\nvar RequestHandlerProtocol = /* @__PURE__ */ ((RequestHandlerProtocol2) => {\n RequestHandlerProtocol2[\"HTTP_0_9\"] = \"http/0.9\";\n RequestHandlerProtocol2[\"HTTP_1_0\"] = \"http/1.0\";\n RequestHandlerProtocol2[\"TDS_8_0\"] = \"tds/8.0\";\n return RequestHandlerProtocol2;\n})(RequestHandlerProtocol || {});\n// Annotate the CommonJS export names for ESM import in node:\n\n0 && (module.exports = {\n HttpAuthLocation,\n HttpApiKeyAuthLocation,\n EndpointURLScheme,\n AlgorithmId,\n getDefaultClientConfiguration,\n resolveDefaultRuntimeConfig,\n FieldPosition,\n SMITHY_CONTEXT_KEY,\n IniSectionType,\n RequestHandlerProtocol\n});\n\n","var __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/index.ts\nvar src_exports = {};\n__export(src_exports, {\n DEFAULT_MAX_RETRIES: () => DEFAULT_MAX_RETRIES,\n DEFAULT_TIMEOUT: () => DEFAULT_TIMEOUT,\n ENV_CMDS_AUTH_TOKEN: () => ENV_CMDS_AUTH_TOKEN,\n ENV_CMDS_FULL_URI: () => ENV_CMDS_FULL_URI,\n ENV_CMDS_RELATIVE_URI: () => ENV_CMDS_RELATIVE_URI,\n Endpoint: () => Endpoint,\n fromContainerMetadata: () => fromContainerMetadata,\n fromInstanceMetadata: () => fromInstanceMetadata,\n getInstanceMetadataEndpoint: () => getInstanceMetadataEndpoint,\n httpRequest: () => httpRequest,\n providerConfigFromInit: () => providerConfigFromInit\n});\nmodule.exports = __toCommonJS(src_exports);\n\n// src/fromContainerMetadata.ts\n\nvar import_url = require(\"url\");\n\n// src/remoteProvider/httpRequest.ts\nvar import_property_provider = require(\"@smithy/property-provider\");\nvar import_buffer = require(\"buffer\");\nvar import_http = require(\"http\");\nfunction httpRequest(options) {\n return new Promise((resolve, reject) => {\n var _a;\n const req = (0, import_http.request)({\n method: \"GET\",\n ...options,\n // Node.js http module doesn't accept hostname with square brackets\n // Refs: https://github.com/nodejs/node/issues/39738\n hostname: (_a = options.hostname) == null ? void 0 : _a.replace(/^\\[(.+)\\]$/, \"$1\")\n });\n req.on(\"error\", (err) => {\n reject(Object.assign(new import_property_provider.ProviderError(\"Unable to connect to instance metadata service\"), err));\n req.destroy();\n });\n req.on(\"timeout\", () => {\n reject(new import_property_provider.ProviderError(\"TimeoutError from instance metadata service\"));\n req.destroy();\n });\n req.on(\"response\", (res) => {\n const { statusCode = 400 } = res;\n if (statusCode < 200 || 300 <= statusCode) {\n reject(\n Object.assign(new import_property_provider.ProviderError(\"Error response received from instance metadata service\"), { statusCode })\n );\n req.destroy();\n }\n const chunks = [];\n res.on(\"data\", (chunk) => {\n chunks.push(chunk);\n });\n res.on(\"end\", () => {\n resolve(import_buffer.Buffer.concat(chunks));\n req.destroy();\n });\n });\n req.end();\n });\n}\n__name(httpRequest, \"httpRequest\");\n\n// src/remoteProvider/ImdsCredentials.ts\nvar isImdsCredentials = /* @__PURE__ */ __name((arg) => Boolean(arg) && typeof arg === \"object\" && typeof arg.AccessKeyId === \"string\" && typeof arg.SecretAccessKey === \"string\" && typeof arg.Token === \"string\" && typeof arg.Expiration === \"string\", \"isImdsCredentials\");\nvar fromImdsCredentials = /* @__PURE__ */ __name((creds) => ({\n accessKeyId: creds.AccessKeyId,\n secretAccessKey: creds.SecretAccessKey,\n sessionToken: creds.Token,\n expiration: new Date(creds.Expiration),\n ...creds.AccountId && { accountId: creds.AccountId }\n}), \"fromImdsCredentials\");\n\n// src/remoteProvider/RemoteProviderInit.ts\nvar DEFAULT_TIMEOUT = 1e3;\nvar DEFAULT_MAX_RETRIES = 0;\nvar providerConfigFromInit = /* @__PURE__ */ __name(({\n maxRetries = DEFAULT_MAX_RETRIES,\n timeout = DEFAULT_TIMEOUT\n}) => ({ maxRetries, timeout }), \"providerConfigFromInit\");\n\n// src/remoteProvider/retry.ts\nvar retry = /* @__PURE__ */ __name((toRetry, maxRetries) => {\n let promise = toRetry();\n for (let i = 0; i < maxRetries; i++) {\n promise = promise.catch(toRetry);\n }\n return promise;\n}, \"retry\");\n\n// src/fromContainerMetadata.ts\nvar ENV_CMDS_FULL_URI = \"AWS_CONTAINER_CREDENTIALS_FULL_URI\";\nvar ENV_CMDS_RELATIVE_URI = \"AWS_CONTAINER_CREDENTIALS_RELATIVE_URI\";\nvar ENV_CMDS_AUTH_TOKEN = \"AWS_CONTAINER_AUTHORIZATION_TOKEN\";\nvar fromContainerMetadata = /* @__PURE__ */ __name((init = {}) => {\n const { timeout, maxRetries } = providerConfigFromInit(init);\n return () => retry(async () => {\n const requestOptions = await getCmdsUri({ logger: init.logger });\n const credsResponse = JSON.parse(await requestFromEcsImds(timeout, requestOptions));\n if (!isImdsCredentials(credsResponse)) {\n throw new import_property_provider.CredentialsProviderError(\"Invalid response received from instance metadata service.\", {\n logger: init.logger\n });\n }\n return fromImdsCredentials(credsResponse);\n }, maxRetries);\n}, \"fromContainerMetadata\");\nvar requestFromEcsImds = /* @__PURE__ */ __name(async (timeout, options) => {\n if (process.env[ENV_CMDS_AUTH_TOKEN]) {\n options.headers = {\n ...options.headers,\n Authorization: process.env[ENV_CMDS_AUTH_TOKEN]\n };\n }\n const buffer = await httpRequest({\n ...options,\n timeout\n });\n return buffer.toString();\n}, \"requestFromEcsImds\");\nvar CMDS_IP = \"169.254.170.2\";\nvar GREENGRASS_HOSTS = {\n localhost: true,\n \"127.0.0.1\": true\n};\nvar GREENGRASS_PROTOCOLS = {\n \"http:\": true,\n \"https:\": true\n};\nvar getCmdsUri = /* @__PURE__ */ __name(async ({ logger }) => {\n if (process.env[ENV_CMDS_RELATIVE_URI]) {\n return {\n hostname: CMDS_IP,\n path: process.env[ENV_CMDS_RELATIVE_URI]\n };\n }\n if (process.env[ENV_CMDS_FULL_URI]) {\n const parsed = (0, import_url.parse)(process.env[ENV_CMDS_FULL_URI]);\n if (!parsed.hostname || !(parsed.hostname in GREENGRASS_HOSTS)) {\n throw new import_property_provider.CredentialsProviderError(`${parsed.hostname} is not a valid container metadata service hostname`, {\n tryNextLink: false,\n logger\n });\n }\n if (!parsed.protocol || !(parsed.protocol in GREENGRASS_PROTOCOLS)) {\n throw new import_property_provider.CredentialsProviderError(`${parsed.protocol} is not a valid container metadata service protocol`, {\n tryNextLink: false,\n logger\n });\n }\n return {\n ...parsed,\n port: parsed.port ? parseInt(parsed.port, 10) : void 0\n };\n }\n throw new import_property_provider.CredentialsProviderError(\n `The container metadata credential provider cannot be used unless the ${ENV_CMDS_RELATIVE_URI} or ${ENV_CMDS_FULL_URI} environment variable is set`,\n {\n tryNextLink: false,\n logger\n }\n );\n}, \"getCmdsUri\");\n\n// src/fromInstanceMetadata.ts\n\n\n\n// src/error/InstanceMetadataV1FallbackError.ts\n\nvar _InstanceMetadataV1FallbackError = class _InstanceMetadataV1FallbackError extends import_property_provider.CredentialsProviderError {\n constructor(message, tryNextLink = true) {\n super(message, tryNextLink);\n this.tryNextLink = tryNextLink;\n this.name = \"InstanceMetadataV1FallbackError\";\n Object.setPrototypeOf(this, _InstanceMetadataV1FallbackError.prototype);\n }\n};\n__name(_InstanceMetadataV1FallbackError, \"InstanceMetadataV1FallbackError\");\nvar InstanceMetadataV1FallbackError = _InstanceMetadataV1FallbackError;\n\n// src/utils/getInstanceMetadataEndpoint.ts\nvar import_node_config_provider = require(\"@smithy/node-config-provider\");\nvar import_url_parser = require(\"@smithy/url-parser\");\n\n// src/config/Endpoint.ts\nvar Endpoint = /* @__PURE__ */ ((Endpoint2) => {\n Endpoint2[\"IPv4\"] = \"http://169.254.169.254\";\n Endpoint2[\"IPv6\"] = \"http://[fd00:ec2::254]\";\n return Endpoint2;\n})(Endpoint || {});\n\n// src/config/EndpointConfigOptions.ts\nvar ENV_ENDPOINT_NAME = \"AWS_EC2_METADATA_SERVICE_ENDPOINT\";\nvar CONFIG_ENDPOINT_NAME = \"ec2_metadata_service_endpoint\";\nvar ENDPOINT_CONFIG_OPTIONS = {\n environmentVariableSelector: (env) => env[ENV_ENDPOINT_NAME],\n configFileSelector: (profile) => profile[CONFIG_ENDPOINT_NAME],\n default: void 0\n};\n\n// src/config/EndpointMode.ts\nvar EndpointMode = /* @__PURE__ */ ((EndpointMode2) => {\n EndpointMode2[\"IPv4\"] = \"IPv4\";\n EndpointMode2[\"IPv6\"] = \"IPv6\";\n return EndpointMode2;\n})(EndpointMode || {});\n\n// src/config/EndpointModeConfigOptions.ts\nvar ENV_ENDPOINT_MODE_NAME = \"AWS_EC2_METADATA_SERVICE_ENDPOINT_MODE\";\nvar CONFIG_ENDPOINT_MODE_NAME = \"ec2_metadata_service_endpoint_mode\";\nvar ENDPOINT_MODE_CONFIG_OPTIONS = {\n environmentVariableSelector: (env) => env[ENV_ENDPOINT_MODE_NAME],\n configFileSelector: (profile) => profile[CONFIG_ENDPOINT_MODE_NAME],\n default: \"IPv4\" /* IPv4 */\n};\n\n// src/utils/getInstanceMetadataEndpoint.ts\nvar getInstanceMetadataEndpoint = /* @__PURE__ */ __name(async () => (0, import_url_parser.parseUrl)(await getFromEndpointConfig() || await getFromEndpointModeConfig()), \"getInstanceMetadataEndpoint\");\nvar getFromEndpointConfig = /* @__PURE__ */ __name(async () => (0, import_node_config_provider.loadConfig)(ENDPOINT_CONFIG_OPTIONS)(), \"getFromEndpointConfig\");\nvar getFromEndpointModeConfig = /* @__PURE__ */ __name(async () => {\n const endpointMode = await (0, import_node_config_provider.loadConfig)(ENDPOINT_MODE_CONFIG_OPTIONS)();\n switch (endpointMode) {\n case \"IPv4\" /* IPv4 */:\n return \"http://169.254.169.254\" /* IPv4 */;\n case \"IPv6\" /* IPv6 */:\n return \"http://[fd00:ec2::254]\" /* IPv6 */;\n default:\n throw new Error(`Unsupported endpoint mode: ${endpointMode}. Select from ${Object.values(EndpointMode)}`);\n }\n}, \"getFromEndpointModeConfig\");\n\n// src/utils/getExtendedInstanceMetadataCredentials.ts\nvar STATIC_STABILITY_REFRESH_INTERVAL_SECONDS = 5 * 60;\nvar STATIC_STABILITY_REFRESH_INTERVAL_JITTER_WINDOW_SECONDS = 5 * 60;\nvar STATIC_STABILITY_DOC_URL = \"https://docs.aws.amazon.com/sdkref/latest/guide/feature-static-credentials.html\";\nvar getExtendedInstanceMetadataCredentials = /* @__PURE__ */ __name((credentials, logger) => {\n const refreshInterval = STATIC_STABILITY_REFRESH_INTERVAL_SECONDS + Math.floor(Math.random() * STATIC_STABILITY_REFRESH_INTERVAL_JITTER_WINDOW_SECONDS);\n const newExpiration = new Date(Date.now() + refreshInterval * 1e3);\n logger.warn(\n `Attempting credential expiration extension due to a credential service availability issue. A refresh of these credentials will be attempted after ${new Date(newExpiration)}.\nFor more information, please visit: ` + STATIC_STABILITY_DOC_URL\n );\n const originalExpiration = credentials.originalExpiration ?? credentials.expiration;\n return {\n ...credentials,\n ...originalExpiration ? { originalExpiration } : {},\n expiration: newExpiration\n };\n}, \"getExtendedInstanceMetadataCredentials\");\n\n// src/utils/staticStabilityProvider.ts\nvar staticStabilityProvider = /* @__PURE__ */ __name((provider, options = {}) => {\n const logger = (options == null ? void 0 : options.logger) || console;\n let pastCredentials;\n return async () => {\n let credentials;\n try {\n credentials = await provider();\n if (credentials.expiration && credentials.expiration.getTime() < Date.now()) {\n credentials = getExtendedInstanceMetadataCredentials(credentials, logger);\n }\n } catch (e) {\n if (pastCredentials) {\n logger.warn(\"Credential renew failed: \", e);\n credentials = getExtendedInstanceMetadataCredentials(pastCredentials, logger);\n } else {\n throw e;\n }\n }\n pastCredentials = credentials;\n return credentials;\n };\n}, \"staticStabilityProvider\");\n\n// src/fromInstanceMetadata.ts\nvar IMDS_PATH = \"/latest/meta-data/iam/security-credentials/\";\nvar IMDS_TOKEN_PATH = \"/latest/api/token\";\nvar AWS_EC2_METADATA_V1_DISABLED = \"AWS_EC2_METADATA_V1_DISABLED\";\nvar PROFILE_AWS_EC2_METADATA_V1_DISABLED = \"ec2_metadata_v1_disabled\";\nvar X_AWS_EC2_METADATA_TOKEN = \"x-aws-ec2-metadata-token\";\nvar fromInstanceMetadata = /* @__PURE__ */ __name((init = {}) => staticStabilityProvider(getInstanceMetadataProvider(init), { logger: init.logger }), \"fromInstanceMetadata\");\nvar getInstanceMetadataProvider = /* @__PURE__ */ __name((init = {}) => {\n let disableFetchToken = false;\n const { logger, profile } = init;\n const { timeout, maxRetries } = providerConfigFromInit(init);\n const getCredentials = /* @__PURE__ */ __name(async (maxRetries2, options) => {\n var _a;\n const isImdsV1Fallback = disableFetchToken || ((_a = options.headers) == null ? void 0 : _a[X_AWS_EC2_METADATA_TOKEN]) == null;\n if (isImdsV1Fallback) {\n let fallbackBlockedFromProfile = false;\n let fallbackBlockedFromProcessEnv = false;\n const configValue = await (0, import_node_config_provider.loadConfig)(\n {\n environmentVariableSelector: (env) => {\n const envValue = env[AWS_EC2_METADATA_V1_DISABLED];\n fallbackBlockedFromProcessEnv = !!envValue && envValue !== \"false\";\n if (envValue === void 0) {\n throw new import_property_provider.CredentialsProviderError(\n `${AWS_EC2_METADATA_V1_DISABLED} not set in env, checking config file next.`,\n { logger: init.logger }\n );\n }\n return fallbackBlockedFromProcessEnv;\n },\n configFileSelector: (profile2) => {\n const profileValue = profile2[PROFILE_AWS_EC2_METADATA_V1_DISABLED];\n fallbackBlockedFromProfile = !!profileValue && profileValue !== \"false\";\n return fallbackBlockedFromProfile;\n },\n default: false\n },\n {\n profile\n }\n )();\n if (init.ec2MetadataV1Disabled || configValue) {\n const causes = [];\n if (init.ec2MetadataV1Disabled)\n causes.push(\"credential provider initialization (runtime option ec2MetadataV1Disabled)\");\n if (fallbackBlockedFromProfile)\n causes.push(`config file profile (${PROFILE_AWS_EC2_METADATA_V1_DISABLED})`);\n if (fallbackBlockedFromProcessEnv)\n causes.push(`process environment variable (${AWS_EC2_METADATA_V1_DISABLED})`);\n throw new InstanceMetadataV1FallbackError(\n `AWS EC2 Metadata v1 fallback has been blocked by AWS SDK configuration in the following: [${causes.join(\n \", \"\n )}].`\n );\n }\n }\n const imdsProfile = (await retry(async () => {\n let profile2;\n try {\n profile2 = await getProfile(options);\n } catch (err) {\n if (err.statusCode === 401) {\n disableFetchToken = false;\n }\n throw err;\n }\n return profile2;\n }, maxRetries2)).trim();\n return retry(async () => {\n let creds;\n try {\n creds = await getCredentialsFromProfile(imdsProfile, options, init);\n } catch (err) {\n if (err.statusCode === 401) {\n disableFetchToken = false;\n }\n throw err;\n }\n return creds;\n }, maxRetries2);\n }, \"getCredentials\");\n return async () => {\n const endpoint = await getInstanceMetadataEndpoint();\n if (disableFetchToken) {\n logger == null ? void 0 : logger.debug(\"AWS SDK Instance Metadata\", \"using v1 fallback (no token fetch)\");\n return getCredentials(maxRetries, { ...endpoint, timeout });\n } else {\n let token;\n try {\n token = (await getMetadataToken({ ...endpoint, timeout })).toString();\n } catch (error) {\n if ((error == null ? void 0 : error.statusCode) === 400) {\n throw Object.assign(error, {\n message: \"EC2 Metadata token request returned error\"\n });\n } else if (error.message === \"TimeoutError\" || [403, 404, 405].includes(error.statusCode)) {\n disableFetchToken = true;\n }\n logger == null ? void 0 : logger.debug(\"AWS SDK Instance Metadata\", \"using v1 fallback (initial)\");\n return getCredentials(maxRetries, { ...endpoint, timeout });\n }\n return getCredentials(maxRetries, {\n ...endpoint,\n headers: {\n [X_AWS_EC2_METADATA_TOKEN]: token\n },\n timeout\n });\n }\n };\n}, \"getInstanceMetadataProvider\");\nvar getMetadataToken = /* @__PURE__ */ __name(async (options) => httpRequest({\n ...options,\n path: IMDS_TOKEN_PATH,\n method: \"PUT\",\n headers: {\n \"x-aws-ec2-metadata-token-ttl-seconds\": \"21600\"\n }\n}), \"getMetadataToken\");\nvar getProfile = /* @__PURE__ */ __name(async (options) => (await httpRequest({ ...options, path: IMDS_PATH })).toString(), \"getProfile\");\nvar getCredentialsFromProfile = /* @__PURE__ */ __name(async (profile, options, init) => {\n const credentialsResponse = JSON.parse(\n (await httpRequest({\n ...options,\n path: IMDS_PATH + profile\n })).toString()\n );\n if (!isImdsCredentials(credentialsResponse)) {\n throw new import_property_provider.CredentialsProviderError(\"Invalid response received from instance metadata service.\", {\n logger: init.logger\n });\n }\n return fromImdsCredentials(credentialsResponse);\n}, \"getCredentialsFromProfile\");\n// Annotate the CommonJS export names for ESM import in node:\n\n0 && (module.exports = {\n httpRequest,\n getInstanceMetadataEndpoint,\n Endpoint,\n ENV_CMDS_FULL_URI,\n ENV_CMDS_RELATIVE_URI,\n ENV_CMDS_AUTH_TOKEN,\n fromContainerMetadata,\n fromInstanceMetadata,\n DEFAULT_TIMEOUT,\n DEFAULT_MAX_RETRIES,\n providerConfigFromInit\n});\n\n","var __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/index.ts\nvar src_exports = {};\n__export(src_exports, {\n FetchHttpHandler: () => FetchHttpHandler,\n keepAliveSupport: () => keepAliveSupport,\n streamCollector: () => streamCollector\n});\nmodule.exports = __toCommonJS(src_exports);\n\n// src/fetch-http-handler.ts\nvar import_protocol_http = require(\"@smithy/protocol-http\");\nvar import_querystring_builder = require(\"@smithy/querystring-builder\");\n\n// src/request-timeout.ts\nfunction requestTimeout(timeoutInMs = 0) {\n return new Promise((resolve, reject) => {\n if (timeoutInMs) {\n setTimeout(() => {\n const timeoutError = new Error(`Request did not complete within ${timeoutInMs} ms`);\n timeoutError.name = \"TimeoutError\";\n reject(timeoutError);\n }, timeoutInMs);\n }\n });\n}\n__name(requestTimeout, \"requestTimeout\");\n\n// src/fetch-http-handler.ts\nvar keepAliveSupport = {\n supported: void 0\n};\nvar _FetchHttpHandler = class _FetchHttpHandler {\n /**\n * @returns the input if it is an HttpHandler of any class,\n * or instantiates a new instance of this handler.\n */\n static create(instanceOrOptions) {\n if (typeof (instanceOrOptions == null ? void 0 : instanceOrOptions.handle) === \"function\") {\n return instanceOrOptions;\n }\n return new _FetchHttpHandler(instanceOrOptions);\n }\n constructor(options) {\n if (typeof options === \"function\") {\n this.configProvider = options().then((opts) => opts || {});\n } else {\n this.config = options ?? {};\n this.configProvider = Promise.resolve(this.config);\n }\n if (keepAliveSupport.supported === void 0) {\n keepAliveSupport.supported = Boolean(\n typeof Request !== \"undefined\" && \"keepalive\" in new Request(\"https://[::1]\")\n );\n }\n }\n destroy() {\n }\n async handle(request, { abortSignal } = {}) {\n var _a;\n if (!this.config) {\n this.config = await this.configProvider;\n }\n const requestTimeoutInMs = this.config.requestTimeout;\n const keepAlive = this.config.keepAlive === true;\n const credentials = this.config.credentials;\n if (abortSignal == null ? void 0 : abortSignal.aborted) {\n const abortError = new Error(\"Request aborted\");\n abortError.name = \"AbortError\";\n return Promise.reject(abortError);\n }\n let path = request.path;\n const queryString = (0, import_querystring_builder.buildQueryString)(request.query || {});\n if (queryString) {\n path += `?${queryString}`;\n }\n if (request.fragment) {\n path += `#${request.fragment}`;\n }\n let auth = \"\";\n if (request.username != null || request.password != null) {\n const username = request.username ?? \"\";\n const password = request.password ?? \"\";\n auth = `${username}:${password}@`;\n }\n const { port, method } = request;\n const url = `${request.protocol}//${auth}${request.hostname}${port ? `:${port}` : \"\"}${path}`;\n const body = method === \"GET\" || method === \"HEAD\" ? void 0 : request.body;\n const requestOptions = {\n body,\n headers: new Headers(request.headers),\n method,\n credentials\n };\n if ((_a = this.config) == null ? void 0 : _a.cache) {\n requestOptions.cache = this.config.cache;\n }\n if (body) {\n requestOptions.duplex = \"half\";\n }\n if (typeof AbortController !== \"undefined\") {\n requestOptions.signal = abortSignal;\n }\n if (keepAliveSupport.supported) {\n requestOptions.keepalive = keepAlive;\n }\n if (typeof this.config.requestInit === \"function\") {\n Object.assign(requestOptions, this.config.requestInit(request));\n }\n let removeSignalEventListener = /* @__PURE__ */ __name(() => {\n }, \"removeSignalEventListener\");\n const fetchRequest = new Request(url, requestOptions);\n const raceOfPromises = [\n fetch(fetchRequest).then((response) => {\n const fetchHeaders = response.headers;\n const transformedHeaders = {};\n for (const pair of fetchHeaders.entries()) {\n transformedHeaders[pair[0]] = pair[1];\n }\n const hasReadableStream = response.body != void 0;\n if (!hasReadableStream) {\n return response.blob().then((body2) => ({\n response: new import_protocol_http.HttpResponse({\n headers: transformedHeaders,\n reason: response.statusText,\n statusCode: response.status,\n body: body2\n })\n }));\n }\n return {\n response: new import_protocol_http.HttpResponse({\n headers: transformedHeaders,\n reason: response.statusText,\n statusCode: response.status,\n body: response.body\n })\n };\n }),\n requestTimeout(requestTimeoutInMs)\n ];\n if (abortSignal) {\n raceOfPromises.push(\n new Promise((resolve, reject) => {\n const onAbort = /* @__PURE__ */ __name(() => {\n const abortError = new Error(\"Request aborted\");\n abortError.name = \"AbortError\";\n reject(abortError);\n }, \"onAbort\");\n if (typeof abortSignal.addEventListener === \"function\") {\n const signal = abortSignal;\n signal.addEventListener(\"abort\", onAbort, { once: true });\n removeSignalEventListener = /* @__PURE__ */ __name(() => signal.removeEventListener(\"abort\", onAbort), \"removeSignalEventListener\");\n } else {\n abortSignal.onabort = onAbort;\n }\n })\n );\n }\n return Promise.race(raceOfPromises).finally(removeSignalEventListener);\n }\n updateHttpClientConfig(key, value) {\n this.config = void 0;\n this.configProvider = this.configProvider.then((config) => {\n config[key] = value;\n return config;\n });\n }\n httpHandlerConfigs() {\n return this.config ?? {};\n }\n};\n__name(_FetchHttpHandler, \"FetchHttpHandler\");\nvar FetchHttpHandler = _FetchHttpHandler;\n\n// src/stream-collector.ts\nvar import_util_base64 = require(\"@smithy/util-base64\");\nvar streamCollector = /* @__PURE__ */ __name((stream) => {\n if (typeof Blob === \"function\" && stream instanceof Blob) {\n return collectBlob(stream);\n }\n return collectStream(stream);\n}, \"streamCollector\");\nasync function collectBlob(blob) {\n const base64 = await readToBase64(blob);\n const arrayBuffer = (0, import_util_base64.fromBase64)(base64);\n return new Uint8Array(arrayBuffer);\n}\n__name(collectBlob, \"collectBlob\");\nasync function collectStream(stream) {\n const chunks = [];\n const reader = stream.getReader();\n let isDone = false;\n let length = 0;\n while (!isDone) {\n const { done, value } = await reader.read();\n if (value) {\n chunks.push(value);\n length += value.length;\n }\n isDone = done;\n }\n const collected = new Uint8Array(length);\n let offset = 0;\n for (const chunk of chunks) {\n collected.set(chunk, offset);\n offset += chunk.length;\n }\n return collected;\n}\n__name(collectStream, \"collectStream\");\nfunction readToBase64(blob) {\n return new Promise((resolve, reject) => {\n const reader = new FileReader();\n reader.onloadend = () => {\n if (reader.readyState !== 2) {\n return reject(new Error(\"Reader aborted too early\"));\n }\n const result = reader.result ?? \"\";\n const commaIndex = result.indexOf(\",\");\n const dataOffset = commaIndex > -1 ? commaIndex + 1 : result.length;\n resolve(result.substring(dataOffset));\n };\n reader.onabort = () => reject(new Error(\"Read aborted\"));\n reader.onerror = () => reject(reader.error);\n reader.readAsDataURL(blob);\n });\n}\n__name(readToBase64, \"readToBase64\");\n// Annotate the CommonJS export names for ESM import in node:\n\n0 && (module.exports = {\n keepAliveSupport,\n FetchHttpHandler,\n streamCollector\n});\n\n","var __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/index.ts\nvar src_exports = {};\n__export(src_exports, {\n Hash: () => Hash\n});\nmodule.exports = __toCommonJS(src_exports);\nvar import_util_buffer_from = require(\"@smithy/util-buffer-from\");\nvar import_util_utf8 = require(\"@smithy/util-utf8\");\nvar import_buffer = require(\"buffer\");\nvar import_crypto = require(\"crypto\");\nvar _Hash = class _Hash {\n constructor(algorithmIdentifier, secret) {\n this.algorithmIdentifier = algorithmIdentifier;\n this.secret = secret;\n this.reset();\n }\n update(toHash, encoding) {\n this.hash.update((0, import_util_utf8.toUint8Array)(castSourceData(toHash, encoding)));\n }\n digest() {\n return Promise.resolve(this.hash.digest());\n }\n reset() {\n this.hash = this.secret ? (0, import_crypto.createHmac)(this.algorithmIdentifier, castSourceData(this.secret)) : (0, import_crypto.createHash)(this.algorithmIdentifier);\n }\n};\n__name(_Hash, \"Hash\");\nvar Hash = _Hash;\nfunction castSourceData(toCast, encoding) {\n if (import_buffer.Buffer.isBuffer(toCast)) {\n return toCast;\n }\n if (typeof toCast === \"string\") {\n return (0, import_util_buffer_from.fromString)(toCast, encoding);\n }\n if (ArrayBuffer.isView(toCast)) {\n return (0, import_util_buffer_from.fromArrayBuffer)(toCast.buffer, toCast.byteOffset, toCast.byteLength);\n }\n return (0, import_util_buffer_from.fromArrayBuffer)(toCast);\n}\n__name(castSourceData, \"castSourceData\");\n// Annotate the CommonJS export names for ESM import in node:\n\n0 && (module.exports = {\n Hash\n});\n\n","var __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/index.ts\nvar src_exports = {};\n__export(src_exports, {\n isArrayBuffer: () => isArrayBuffer\n});\nmodule.exports = __toCommonJS(src_exports);\nvar isArrayBuffer = /* @__PURE__ */ __name((arg) => typeof ArrayBuffer === \"function\" && arg instanceof ArrayBuffer || Object.prototype.toString.call(arg) === \"[object ArrayBuffer]\", \"isArrayBuffer\");\n// Annotate the CommonJS export names for ESM import in node:\n\n0 && (module.exports = {\n isArrayBuffer\n});\n\n","var __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/index.ts\nvar src_exports = {};\n__export(src_exports, {\n contentLengthMiddleware: () => contentLengthMiddleware,\n contentLengthMiddlewareOptions: () => contentLengthMiddlewareOptions,\n getContentLengthPlugin: () => getContentLengthPlugin\n});\nmodule.exports = __toCommonJS(src_exports);\nvar import_protocol_http = require(\"@smithy/protocol-http\");\nvar CONTENT_LENGTH_HEADER = \"content-length\";\nfunction contentLengthMiddleware(bodyLengthChecker) {\n return (next) => async (args) => {\n const request = args.request;\n if (import_protocol_http.HttpRequest.isInstance(request)) {\n const { body, headers } = request;\n if (body && Object.keys(headers).map((str) => str.toLowerCase()).indexOf(CONTENT_LENGTH_HEADER) === -1) {\n try {\n const length = bodyLengthChecker(body);\n request.headers = {\n ...request.headers,\n [CONTENT_LENGTH_HEADER]: String(length)\n };\n } catch (error) {\n }\n }\n }\n return next({\n ...args,\n request\n });\n };\n}\n__name(contentLengthMiddleware, \"contentLengthMiddleware\");\nvar contentLengthMiddlewareOptions = {\n step: \"build\",\n tags: [\"SET_CONTENT_LENGTH\", \"CONTENT_LENGTH\"],\n name: \"contentLengthMiddleware\",\n override: true\n};\nvar getContentLengthPlugin = /* @__PURE__ */ __name((options) => ({\n applyToStack: (clientStack) => {\n clientStack.add(contentLengthMiddleware(options.bodyLengthChecker), contentLengthMiddlewareOptions);\n }\n}), \"getContentLengthPlugin\");\n// Annotate the CommonJS export names for ESM import in node:\n\n0 && (module.exports = {\n contentLengthMiddleware,\n contentLengthMiddlewareOptions,\n getContentLengthPlugin\n});\n\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getEndpointFromConfig = void 0;\nconst node_config_provider_1 = require(\"@smithy/node-config-provider\");\nconst getEndpointUrlConfig_1 = require(\"./getEndpointUrlConfig\");\nconst getEndpointFromConfig = async (serviceId) => (0, node_config_provider_1.loadConfig)((0, getEndpointUrlConfig_1.getEndpointUrlConfig)(serviceId !== null && serviceId !== void 0 ? serviceId : \"\"))();\nexports.getEndpointFromConfig = getEndpointFromConfig;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getEndpointUrlConfig = void 0;\nconst shared_ini_file_loader_1 = require(\"@smithy/shared-ini-file-loader\");\nconst ENV_ENDPOINT_URL = \"AWS_ENDPOINT_URL\";\nconst CONFIG_ENDPOINT_URL = \"endpoint_url\";\nconst getEndpointUrlConfig = (serviceId) => ({\n environmentVariableSelector: (env) => {\n const serviceSuffixParts = serviceId.split(\" \").map((w) => w.toUpperCase());\n const serviceEndpointUrl = env[[ENV_ENDPOINT_URL, ...serviceSuffixParts].join(\"_\")];\n if (serviceEndpointUrl)\n return serviceEndpointUrl;\n const endpointUrl = env[ENV_ENDPOINT_URL];\n if (endpointUrl)\n return endpointUrl;\n return undefined;\n },\n configFileSelector: (profile, config) => {\n if (config && profile.services) {\n const servicesSection = config[[\"services\", profile.services].join(shared_ini_file_loader_1.CONFIG_PREFIX_SEPARATOR)];\n if (servicesSection) {\n const servicePrefixParts = serviceId.split(\" \").map((w) => w.toLowerCase());\n const endpointUrl = servicesSection[[servicePrefixParts.join(\"_\"), CONFIG_ENDPOINT_URL].join(shared_ini_file_loader_1.CONFIG_PREFIX_SEPARATOR)];\n if (endpointUrl)\n return endpointUrl;\n }\n }\n const endpointUrl = profile[CONFIG_ENDPOINT_URL];\n if (endpointUrl)\n return endpointUrl;\n return undefined;\n },\n default: undefined,\n});\nexports.getEndpointUrlConfig = getEndpointUrlConfig;\n","var __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/index.ts\nvar src_exports = {};\n__export(src_exports, {\n endpointMiddleware: () => endpointMiddleware,\n endpointMiddlewareOptions: () => endpointMiddlewareOptions,\n getEndpointFromInstructions: () => getEndpointFromInstructions,\n getEndpointPlugin: () => getEndpointPlugin,\n resolveEndpointConfig: () => resolveEndpointConfig,\n resolveParams: () => resolveParams,\n toEndpointV1: () => toEndpointV1\n});\nmodule.exports = __toCommonJS(src_exports);\n\n// src/service-customizations/s3.ts\nvar resolveParamsForS3 = /* @__PURE__ */ __name(async (endpointParams) => {\n const bucket = (endpointParams == null ? void 0 : endpointParams.Bucket) || \"\";\n if (typeof endpointParams.Bucket === \"string\") {\n endpointParams.Bucket = bucket.replace(/#/g, encodeURIComponent(\"#\")).replace(/\\?/g, encodeURIComponent(\"?\"));\n }\n if (isArnBucketName(bucket)) {\n if (endpointParams.ForcePathStyle === true) {\n throw new Error(\"Path-style addressing cannot be used with ARN buckets\");\n }\n } else if (!isDnsCompatibleBucketName(bucket) || bucket.indexOf(\".\") !== -1 && !String(endpointParams.Endpoint).startsWith(\"http:\") || bucket.toLowerCase() !== bucket || bucket.length < 3) {\n endpointParams.ForcePathStyle = true;\n }\n if (endpointParams.DisableMultiRegionAccessPoints) {\n endpointParams.disableMultiRegionAccessPoints = true;\n endpointParams.DisableMRAP = true;\n }\n return endpointParams;\n}, \"resolveParamsForS3\");\nvar DOMAIN_PATTERN = /^[a-z0-9][a-z0-9\\.\\-]{1,61}[a-z0-9]$/;\nvar IP_ADDRESS_PATTERN = /(\\d+\\.){3}\\d+/;\nvar DOTS_PATTERN = /\\.\\./;\nvar isDnsCompatibleBucketName = /* @__PURE__ */ __name((bucketName) => DOMAIN_PATTERN.test(bucketName) && !IP_ADDRESS_PATTERN.test(bucketName) && !DOTS_PATTERN.test(bucketName), \"isDnsCompatibleBucketName\");\nvar isArnBucketName = /* @__PURE__ */ __name((bucketName) => {\n const [arn, partition, service, , , bucket] = bucketName.split(\":\");\n const isArn = arn === \"arn\" && bucketName.split(\":\").length >= 6;\n const isValidArn = Boolean(isArn && partition && service && bucket);\n if (isArn && !isValidArn) {\n throw new Error(`Invalid ARN: ${bucketName} was an invalid ARN.`);\n }\n return isValidArn;\n}, \"isArnBucketName\");\n\n// src/adaptors/createConfigValueProvider.ts\nvar createConfigValueProvider = /* @__PURE__ */ __name((configKey, canonicalEndpointParamKey, config) => {\n const configProvider = /* @__PURE__ */ __name(async () => {\n const configValue = config[configKey] ?? config[canonicalEndpointParamKey];\n if (typeof configValue === \"function\") {\n return configValue();\n }\n return configValue;\n }, \"configProvider\");\n if (configKey === \"credentialScope\" || canonicalEndpointParamKey === \"CredentialScope\") {\n return async () => {\n const credentials = typeof config.credentials === \"function\" ? await config.credentials() : config.credentials;\n const configValue = (credentials == null ? void 0 : credentials.credentialScope) ?? (credentials == null ? void 0 : credentials.CredentialScope);\n return configValue;\n };\n }\n if (configKey === \"accountId\" || canonicalEndpointParamKey === \"AccountId\") {\n return async () => {\n const credentials = typeof config.credentials === \"function\" ? await config.credentials() : config.credentials;\n const configValue = (credentials == null ? void 0 : credentials.accountId) ?? (credentials == null ? void 0 : credentials.AccountId);\n return configValue;\n };\n }\n if (configKey === \"endpoint\" || canonicalEndpointParamKey === \"endpoint\") {\n return async () => {\n const endpoint = await configProvider();\n if (endpoint && typeof endpoint === \"object\") {\n if (\"url\" in endpoint) {\n return endpoint.url.href;\n }\n if (\"hostname\" in endpoint) {\n const { protocol, hostname, port, path } = endpoint;\n return `${protocol}//${hostname}${port ? \":\" + port : \"\"}${path}`;\n }\n }\n return endpoint;\n };\n }\n return configProvider;\n}, \"createConfigValueProvider\");\n\n// src/adaptors/getEndpointFromInstructions.ts\nvar import_getEndpointFromConfig = require(\"./adaptors/getEndpointFromConfig\");\n\n// src/adaptors/toEndpointV1.ts\nvar import_url_parser = require(\"@smithy/url-parser\");\nvar toEndpointV1 = /* @__PURE__ */ __name((endpoint) => {\n if (typeof endpoint === \"object\") {\n if (\"url\" in endpoint) {\n return (0, import_url_parser.parseUrl)(endpoint.url);\n }\n return endpoint;\n }\n return (0, import_url_parser.parseUrl)(endpoint);\n}, \"toEndpointV1\");\n\n// src/adaptors/getEndpointFromInstructions.ts\nvar getEndpointFromInstructions = /* @__PURE__ */ __name(async (commandInput, instructionsSupplier, clientConfig, context) => {\n if (!clientConfig.endpoint) {\n let endpointFromConfig;\n if (clientConfig.serviceConfiguredEndpoint) {\n endpointFromConfig = await clientConfig.serviceConfiguredEndpoint();\n } else {\n endpointFromConfig = await (0, import_getEndpointFromConfig.getEndpointFromConfig)(clientConfig.serviceId);\n }\n if (endpointFromConfig) {\n clientConfig.endpoint = () => Promise.resolve(toEndpointV1(endpointFromConfig));\n }\n }\n const endpointParams = await resolveParams(commandInput, instructionsSupplier, clientConfig);\n if (typeof clientConfig.endpointProvider !== \"function\") {\n throw new Error(\"config.endpointProvider is not set.\");\n }\n const endpoint = clientConfig.endpointProvider(endpointParams, context);\n return endpoint;\n}, \"getEndpointFromInstructions\");\nvar resolveParams = /* @__PURE__ */ __name(async (commandInput, instructionsSupplier, clientConfig) => {\n var _a;\n const endpointParams = {};\n const instructions = ((_a = instructionsSupplier == null ? void 0 : instructionsSupplier.getEndpointParameterInstructions) == null ? void 0 : _a.call(instructionsSupplier)) || {};\n for (const [name, instruction] of Object.entries(instructions)) {\n switch (instruction.type) {\n case \"staticContextParams\":\n endpointParams[name] = instruction.value;\n break;\n case \"contextParams\":\n endpointParams[name] = commandInput[instruction.name];\n break;\n case \"clientContextParams\":\n case \"builtInParams\":\n endpointParams[name] = await createConfigValueProvider(instruction.name, name, clientConfig)();\n break;\n default:\n throw new Error(\"Unrecognized endpoint parameter instruction: \" + JSON.stringify(instruction));\n }\n }\n if (Object.keys(instructions).length === 0) {\n Object.assign(endpointParams, clientConfig);\n }\n if (String(clientConfig.serviceId).toLowerCase() === \"s3\") {\n await resolveParamsForS3(endpointParams);\n }\n return endpointParams;\n}, \"resolveParams\");\n\n// src/endpointMiddleware.ts\nvar import_util_middleware = require(\"@smithy/util-middleware\");\nvar endpointMiddleware = /* @__PURE__ */ __name(({\n config,\n instructions\n}) => {\n return (next, context) => async (args) => {\n var _a, _b, _c;\n const endpoint = await getEndpointFromInstructions(\n args.input,\n {\n getEndpointParameterInstructions() {\n return instructions;\n }\n },\n { ...config },\n context\n );\n context.endpointV2 = endpoint;\n context.authSchemes = (_a = endpoint.properties) == null ? void 0 : _a.authSchemes;\n const authScheme = (_b = context.authSchemes) == null ? void 0 : _b[0];\n if (authScheme) {\n context[\"signing_region\"] = authScheme.signingRegion;\n context[\"signing_service\"] = authScheme.signingName;\n const smithyContext = (0, import_util_middleware.getSmithyContext)(context);\n const httpAuthOption = (_c = smithyContext == null ? void 0 : smithyContext.selectedHttpAuthScheme) == null ? void 0 : _c.httpAuthOption;\n if (httpAuthOption) {\n httpAuthOption.signingProperties = Object.assign(\n httpAuthOption.signingProperties || {},\n {\n signing_region: authScheme.signingRegion,\n signingRegion: authScheme.signingRegion,\n signing_service: authScheme.signingName,\n signingName: authScheme.signingName,\n signingRegionSet: authScheme.signingRegionSet\n },\n authScheme.properties\n );\n }\n }\n return next({\n ...args\n });\n };\n}, \"endpointMiddleware\");\n\n// src/getEndpointPlugin.ts\nvar import_middleware_serde = require(\"@smithy/middleware-serde\");\nvar endpointMiddlewareOptions = {\n step: \"serialize\",\n tags: [\"ENDPOINT_PARAMETERS\", \"ENDPOINT_V2\", \"ENDPOINT\"],\n name: \"endpointV2Middleware\",\n override: true,\n relation: \"before\",\n toMiddleware: import_middleware_serde.serializerMiddlewareOption.name\n};\nvar getEndpointPlugin = /* @__PURE__ */ __name((config, instructions) => ({\n applyToStack: (clientStack) => {\n clientStack.addRelativeTo(\n endpointMiddleware({\n config,\n instructions\n }),\n endpointMiddlewareOptions\n );\n }\n}), \"getEndpointPlugin\");\n\n// src/resolveEndpointConfig.ts\n\nvar import_getEndpointFromConfig2 = require(\"./adaptors/getEndpointFromConfig\");\nvar resolveEndpointConfig = /* @__PURE__ */ __name((input) => {\n const tls = input.tls ?? true;\n const { endpoint } = input;\n const customEndpointProvider = endpoint != null ? async () => toEndpointV1(await (0, import_util_middleware.normalizeProvider)(endpoint)()) : void 0;\n const isCustomEndpoint = !!endpoint;\n const resolvedConfig = {\n ...input,\n endpoint: customEndpointProvider,\n tls,\n isCustomEndpoint,\n useDualstackEndpoint: (0, import_util_middleware.normalizeProvider)(input.useDualstackEndpoint ?? false),\n useFipsEndpoint: (0, import_util_middleware.normalizeProvider)(input.useFipsEndpoint ?? false)\n };\n let configuredEndpointPromise = void 0;\n resolvedConfig.serviceConfiguredEndpoint = async () => {\n if (input.serviceId && !configuredEndpointPromise) {\n configuredEndpointPromise = (0, import_getEndpointFromConfig2.getEndpointFromConfig)(input.serviceId);\n }\n return configuredEndpointPromise;\n };\n return resolvedConfig;\n}, \"resolveEndpointConfig\");\n// Annotate the CommonJS export names for ESM import in node:\n\n0 && (module.exports = {\n getEndpointFromInstructions,\n resolveParams,\n toEndpointV1,\n endpointMiddleware,\n endpointMiddlewareOptions,\n getEndpointPlugin,\n resolveEndpointConfig\n});\n\n","var __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/index.ts\nvar src_exports = {};\n__export(src_exports, {\n AdaptiveRetryStrategy: () => AdaptiveRetryStrategy,\n CONFIG_MAX_ATTEMPTS: () => CONFIG_MAX_ATTEMPTS,\n CONFIG_RETRY_MODE: () => CONFIG_RETRY_MODE,\n ENV_MAX_ATTEMPTS: () => ENV_MAX_ATTEMPTS,\n ENV_RETRY_MODE: () => ENV_RETRY_MODE,\n NODE_MAX_ATTEMPT_CONFIG_OPTIONS: () => NODE_MAX_ATTEMPT_CONFIG_OPTIONS,\n NODE_RETRY_MODE_CONFIG_OPTIONS: () => NODE_RETRY_MODE_CONFIG_OPTIONS,\n StandardRetryStrategy: () => StandardRetryStrategy,\n defaultDelayDecider: () => defaultDelayDecider,\n defaultRetryDecider: () => defaultRetryDecider,\n getOmitRetryHeadersPlugin: () => getOmitRetryHeadersPlugin,\n getRetryAfterHint: () => getRetryAfterHint,\n getRetryPlugin: () => getRetryPlugin,\n omitRetryHeadersMiddleware: () => omitRetryHeadersMiddleware,\n omitRetryHeadersMiddlewareOptions: () => omitRetryHeadersMiddlewareOptions,\n resolveRetryConfig: () => resolveRetryConfig,\n retryMiddleware: () => retryMiddleware,\n retryMiddlewareOptions: () => retryMiddlewareOptions\n});\nmodule.exports = __toCommonJS(src_exports);\n\n// src/AdaptiveRetryStrategy.ts\n\n\n// src/StandardRetryStrategy.ts\nvar import_protocol_http = require(\"@smithy/protocol-http\");\n\n\nvar import_uuid = require(\"uuid\");\n\n// src/defaultRetryQuota.ts\nvar import_util_retry = require(\"@smithy/util-retry\");\nvar getDefaultRetryQuota = /* @__PURE__ */ __name((initialRetryTokens, options) => {\n const MAX_CAPACITY = initialRetryTokens;\n const noRetryIncrement = (options == null ? void 0 : options.noRetryIncrement) ?? import_util_retry.NO_RETRY_INCREMENT;\n const retryCost = (options == null ? void 0 : options.retryCost) ?? import_util_retry.RETRY_COST;\n const timeoutRetryCost = (options == null ? void 0 : options.timeoutRetryCost) ?? import_util_retry.TIMEOUT_RETRY_COST;\n let availableCapacity = initialRetryTokens;\n const getCapacityAmount = /* @__PURE__ */ __name((error) => error.name === \"TimeoutError\" ? timeoutRetryCost : retryCost, \"getCapacityAmount\");\n const hasRetryTokens = /* @__PURE__ */ __name((error) => getCapacityAmount(error) <= availableCapacity, \"hasRetryTokens\");\n const retrieveRetryTokens = /* @__PURE__ */ __name((error) => {\n if (!hasRetryTokens(error)) {\n throw new Error(\"No retry token available\");\n }\n const capacityAmount = getCapacityAmount(error);\n availableCapacity -= capacityAmount;\n return capacityAmount;\n }, \"retrieveRetryTokens\");\n const releaseRetryTokens = /* @__PURE__ */ __name((capacityReleaseAmount) => {\n availableCapacity += capacityReleaseAmount ?? noRetryIncrement;\n availableCapacity = Math.min(availableCapacity, MAX_CAPACITY);\n }, \"releaseRetryTokens\");\n return Object.freeze({\n hasRetryTokens,\n retrieveRetryTokens,\n releaseRetryTokens\n });\n}, \"getDefaultRetryQuota\");\n\n// src/delayDecider.ts\n\nvar defaultDelayDecider = /* @__PURE__ */ __name((delayBase, attempts) => Math.floor(Math.min(import_util_retry.MAXIMUM_RETRY_DELAY, Math.random() * 2 ** attempts * delayBase)), \"defaultDelayDecider\");\n\n// src/retryDecider.ts\nvar import_service_error_classification = require(\"@smithy/service-error-classification\");\nvar defaultRetryDecider = /* @__PURE__ */ __name((error) => {\n if (!error) {\n return false;\n }\n return (0, import_service_error_classification.isRetryableByTrait)(error) || (0, import_service_error_classification.isClockSkewError)(error) || (0, import_service_error_classification.isThrottlingError)(error) || (0, import_service_error_classification.isTransientError)(error);\n}, \"defaultRetryDecider\");\n\n// src/util.ts\nvar asSdkError = /* @__PURE__ */ __name((error) => {\n if (error instanceof Error)\n return error;\n if (error instanceof Object)\n return Object.assign(new Error(), error);\n if (typeof error === \"string\")\n return new Error(error);\n return new Error(`AWS SDK error wrapper for ${error}`);\n}, \"asSdkError\");\n\n// src/StandardRetryStrategy.ts\nvar _StandardRetryStrategy = class _StandardRetryStrategy {\n constructor(maxAttemptsProvider, options) {\n this.maxAttemptsProvider = maxAttemptsProvider;\n this.mode = import_util_retry.RETRY_MODES.STANDARD;\n this.retryDecider = (options == null ? void 0 : options.retryDecider) ?? defaultRetryDecider;\n this.delayDecider = (options == null ? void 0 : options.delayDecider) ?? defaultDelayDecider;\n this.retryQuota = (options == null ? void 0 : options.retryQuota) ?? getDefaultRetryQuota(import_util_retry.INITIAL_RETRY_TOKENS);\n }\n shouldRetry(error, attempts, maxAttempts) {\n return attempts < maxAttempts && this.retryDecider(error) && this.retryQuota.hasRetryTokens(error);\n }\n async getMaxAttempts() {\n let maxAttempts;\n try {\n maxAttempts = await this.maxAttemptsProvider();\n } catch (error) {\n maxAttempts = import_util_retry.DEFAULT_MAX_ATTEMPTS;\n }\n return maxAttempts;\n }\n async retry(next, args, options) {\n let retryTokenAmount;\n let attempts = 0;\n let totalDelay = 0;\n const maxAttempts = await this.getMaxAttempts();\n const { request } = args;\n if (import_protocol_http.HttpRequest.isInstance(request)) {\n request.headers[import_util_retry.INVOCATION_ID_HEADER] = (0, import_uuid.v4)();\n }\n while (true) {\n try {\n if (import_protocol_http.HttpRequest.isInstance(request)) {\n request.headers[import_util_retry.REQUEST_HEADER] = `attempt=${attempts + 1}; max=${maxAttempts}`;\n }\n if (options == null ? void 0 : options.beforeRequest) {\n await options.beforeRequest();\n }\n const { response, output } = await next(args);\n if (options == null ? void 0 : options.afterRequest) {\n options.afterRequest(response);\n }\n this.retryQuota.releaseRetryTokens(retryTokenAmount);\n output.$metadata.attempts = attempts + 1;\n output.$metadata.totalRetryDelay = totalDelay;\n return { response, output };\n } catch (e) {\n const err = asSdkError(e);\n attempts++;\n if (this.shouldRetry(err, attempts, maxAttempts)) {\n retryTokenAmount = this.retryQuota.retrieveRetryTokens(err);\n const delayFromDecider = this.delayDecider(\n (0, import_service_error_classification.isThrottlingError)(err) ? import_util_retry.THROTTLING_RETRY_DELAY_BASE : import_util_retry.DEFAULT_RETRY_DELAY_BASE,\n attempts\n );\n const delayFromResponse = getDelayFromRetryAfterHeader(err.$response);\n const delay = Math.max(delayFromResponse || 0, delayFromDecider);\n totalDelay += delay;\n await new Promise((resolve) => setTimeout(resolve, delay));\n continue;\n }\n if (!err.$metadata) {\n err.$metadata = {};\n }\n err.$metadata.attempts = attempts;\n err.$metadata.totalRetryDelay = totalDelay;\n throw err;\n }\n }\n }\n};\n__name(_StandardRetryStrategy, \"StandardRetryStrategy\");\nvar StandardRetryStrategy = _StandardRetryStrategy;\nvar getDelayFromRetryAfterHeader = /* @__PURE__ */ __name((response) => {\n if (!import_protocol_http.HttpResponse.isInstance(response))\n return;\n const retryAfterHeaderName = Object.keys(response.headers).find((key) => key.toLowerCase() === \"retry-after\");\n if (!retryAfterHeaderName)\n return;\n const retryAfter = response.headers[retryAfterHeaderName];\n const retryAfterSeconds = Number(retryAfter);\n if (!Number.isNaN(retryAfterSeconds))\n return retryAfterSeconds * 1e3;\n const retryAfterDate = new Date(retryAfter);\n return retryAfterDate.getTime() - Date.now();\n}, \"getDelayFromRetryAfterHeader\");\n\n// src/AdaptiveRetryStrategy.ts\nvar _AdaptiveRetryStrategy = class _AdaptiveRetryStrategy extends StandardRetryStrategy {\n constructor(maxAttemptsProvider, options) {\n const { rateLimiter, ...superOptions } = options ?? {};\n super(maxAttemptsProvider, superOptions);\n this.rateLimiter = rateLimiter ?? new import_util_retry.DefaultRateLimiter();\n this.mode = import_util_retry.RETRY_MODES.ADAPTIVE;\n }\n async retry(next, args) {\n return super.retry(next, args, {\n beforeRequest: async () => {\n return this.rateLimiter.getSendToken();\n },\n afterRequest: (response) => {\n this.rateLimiter.updateClientSendingRate(response);\n }\n });\n }\n};\n__name(_AdaptiveRetryStrategy, \"AdaptiveRetryStrategy\");\nvar AdaptiveRetryStrategy = _AdaptiveRetryStrategy;\n\n// src/configurations.ts\nvar import_util_middleware = require(\"@smithy/util-middleware\");\n\nvar ENV_MAX_ATTEMPTS = \"AWS_MAX_ATTEMPTS\";\nvar CONFIG_MAX_ATTEMPTS = \"max_attempts\";\nvar NODE_MAX_ATTEMPT_CONFIG_OPTIONS = {\n environmentVariableSelector: (env) => {\n const value = env[ENV_MAX_ATTEMPTS];\n if (!value)\n return void 0;\n const maxAttempt = parseInt(value);\n if (Number.isNaN(maxAttempt)) {\n throw new Error(`Environment variable ${ENV_MAX_ATTEMPTS} mast be a number, got \"${value}\"`);\n }\n return maxAttempt;\n },\n configFileSelector: (profile) => {\n const value = profile[CONFIG_MAX_ATTEMPTS];\n if (!value)\n return void 0;\n const maxAttempt = parseInt(value);\n if (Number.isNaN(maxAttempt)) {\n throw new Error(`Shared config file entry ${CONFIG_MAX_ATTEMPTS} mast be a number, got \"${value}\"`);\n }\n return maxAttempt;\n },\n default: import_util_retry.DEFAULT_MAX_ATTEMPTS\n};\nvar resolveRetryConfig = /* @__PURE__ */ __name((input) => {\n const { retryStrategy } = input;\n const maxAttempts = (0, import_util_middleware.normalizeProvider)(input.maxAttempts ?? import_util_retry.DEFAULT_MAX_ATTEMPTS);\n return {\n ...input,\n maxAttempts,\n retryStrategy: async () => {\n if (retryStrategy) {\n return retryStrategy;\n }\n const retryMode = await (0, import_util_middleware.normalizeProvider)(input.retryMode)();\n if (retryMode === import_util_retry.RETRY_MODES.ADAPTIVE) {\n return new import_util_retry.AdaptiveRetryStrategy(maxAttempts);\n }\n return new import_util_retry.StandardRetryStrategy(maxAttempts);\n }\n };\n}, \"resolveRetryConfig\");\nvar ENV_RETRY_MODE = \"AWS_RETRY_MODE\";\nvar CONFIG_RETRY_MODE = \"retry_mode\";\nvar NODE_RETRY_MODE_CONFIG_OPTIONS = {\n environmentVariableSelector: (env) => env[ENV_RETRY_MODE],\n configFileSelector: (profile) => profile[CONFIG_RETRY_MODE],\n default: import_util_retry.DEFAULT_RETRY_MODE\n};\n\n// src/omitRetryHeadersMiddleware.ts\n\n\nvar omitRetryHeadersMiddleware = /* @__PURE__ */ __name(() => (next) => async (args) => {\n const { request } = args;\n if (import_protocol_http.HttpRequest.isInstance(request)) {\n delete request.headers[import_util_retry.INVOCATION_ID_HEADER];\n delete request.headers[import_util_retry.REQUEST_HEADER];\n }\n return next(args);\n}, \"omitRetryHeadersMiddleware\");\nvar omitRetryHeadersMiddlewareOptions = {\n name: \"omitRetryHeadersMiddleware\",\n tags: [\"RETRY\", \"HEADERS\", \"OMIT_RETRY_HEADERS\"],\n relation: \"before\",\n toMiddleware: \"awsAuthMiddleware\",\n override: true\n};\nvar getOmitRetryHeadersPlugin = /* @__PURE__ */ __name((options) => ({\n applyToStack: (clientStack) => {\n clientStack.addRelativeTo(omitRetryHeadersMiddleware(), omitRetryHeadersMiddlewareOptions);\n }\n}), \"getOmitRetryHeadersPlugin\");\n\n// src/retryMiddleware.ts\n\n\nvar import_smithy_client = require(\"@smithy/smithy-client\");\n\n\nvar import_isStreamingPayload = require(\"./isStreamingPayload/isStreamingPayload\");\nvar retryMiddleware = /* @__PURE__ */ __name((options) => (next, context) => async (args) => {\n var _a;\n let retryStrategy = await options.retryStrategy();\n const maxAttempts = await options.maxAttempts();\n if (isRetryStrategyV2(retryStrategy)) {\n retryStrategy = retryStrategy;\n let retryToken = await retryStrategy.acquireInitialRetryToken(context[\"partition_id\"]);\n let lastError = new Error();\n let attempts = 0;\n let totalRetryDelay = 0;\n const { request } = args;\n const isRequest = import_protocol_http.HttpRequest.isInstance(request);\n if (isRequest) {\n request.headers[import_util_retry.INVOCATION_ID_HEADER] = (0, import_uuid.v4)();\n }\n while (true) {\n try {\n if (isRequest) {\n request.headers[import_util_retry.REQUEST_HEADER] = `attempt=${attempts + 1}; max=${maxAttempts}`;\n }\n const { response, output } = await next(args);\n retryStrategy.recordSuccess(retryToken);\n output.$metadata.attempts = attempts + 1;\n output.$metadata.totalRetryDelay = totalRetryDelay;\n return { response, output };\n } catch (e) {\n const retryErrorInfo = getRetryErrorInfo(e);\n lastError = asSdkError(e);\n if (isRequest && (0, import_isStreamingPayload.isStreamingPayload)(request)) {\n (_a = context.logger instanceof import_smithy_client.NoOpLogger ? console : context.logger) == null ? void 0 : _a.warn(\n \"An error was encountered in a non-retryable streaming request.\"\n );\n throw lastError;\n }\n try {\n retryToken = await retryStrategy.refreshRetryTokenForRetry(retryToken, retryErrorInfo);\n } catch (refreshError) {\n if (!lastError.$metadata) {\n lastError.$metadata = {};\n }\n lastError.$metadata.attempts = attempts + 1;\n lastError.$metadata.totalRetryDelay = totalRetryDelay;\n throw lastError;\n }\n attempts = retryToken.getRetryCount();\n const delay = retryToken.getRetryDelay();\n totalRetryDelay += delay;\n await new Promise((resolve) => setTimeout(resolve, delay));\n }\n }\n } else {\n retryStrategy = retryStrategy;\n if (retryStrategy == null ? void 0 : retryStrategy.mode)\n context.userAgent = [...context.userAgent || [], [\"cfg/retry-mode\", retryStrategy.mode]];\n return retryStrategy.retry(next, args);\n }\n}, \"retryMiddleware\");\nvar isRetryStrategyV2 = /* @__PURE__ */ __name((retryStrategy) => typeof retryStrategy.acquireInitialRetryToken !== \"undefined\" && typeof retryStrategy.refreshRetryTokenForRetry !== \"undefined\" && typeof retryStrategy.recordSuccess !== \"undefined\", \"isRetryStrategyV2\");\nvar getRetryErrorInfo = /* @__PURE__ */ __name((error) => {\n const errorInfo = {\n error,\n errorType: getRetryErrorType(error)\n };\n const retryAfterHint = getRetryAfterHint(error.$response);\n if (retryAfterHint) {\n errorInfo.retryAfterHint = retryAfterHint;\n }\n return errorInfo;\n}, \"getRetryErrorInfo\");\nvar getRetryErrorType = /* @__PURE__ */ __name((error) => {\n if ((0, import_service_error_classification.isThrottlingError)(error))\n return \"THROTTLING\";\n if ((0, import_service_error_classification.isTransientError)(error))\n return \"TRANSIENT\";\n if ((0, import_service_error_classification.isServerError)(error))\n return \"SERVER_ERROR\";\n return \"CLIENT_ERROR\";\n}, \"getRetryErrorType\");\nvar retryMiddlewareOptions = {\n name: \"retryMiddleware\",\n tags: [\"RETRY\"],\n step: \"finalizeRequest\",\n priority: \"high\",\n override: true\n};\nvar getRetryPlugin = /* @__PURE__ */ __name((options) => ({\n applyToStack: (clientStack) => {\n clientStack.add(retryMiddleware(options), retryMiddlewareOptions);\n }\n}), \"getRetryPlugin\");\nvar getRetryAfterHint = /* @__PURE__ */ __name((response) => {\n if (!import_protocol_http.HttpResponse.isInstance(response))\n return;\n const retryAfterHeaderName = Object.keys(response.headers).find((key) => key.toLowerCase() === \"retry-after\");\n if (!retryAfterHeaderName)\n return;\n const retryAfter = response.headers[retryAfterHeaderName];\n const retryAfterSeconds = Number(retryAfter);\n if (!Number.isNaN(retryAfterSeconds))\n return new Date(retryAfterSeconds * 1e3);\n const retryAfterDate = new Date(retryAfter);\n return retryAfterDate;\n}, \"getRetryAfterHint\");\n// Annotate the CommonJS export names for ESM import in node:\n\n0 && (module.exports = {\n AdaptiveRetryStrategy,\n StandardRetryStrategy,\n ENV_MAX_ATTEMPTS,\n CONFIG_MAX_ATTEMPTS,\n NODE_MAX_ATTEMPT_CONFIG_OPTIONS,\n resolveRetryConfig,\n ENV_RETRY_MODE,\n CONFIG_RETRY_MODE,\n NODE_RETRY_MODE_CONFIG_OPTIONS,\n defaultDelayDecider,\n omitRetryHeadersMiddleware,\n omitRetryHeadersMiddlewareOptions,\n getOmitRetryHeadersPlugin,\n defaultRetryDecider,\n retryMiddleware,\n retryMiddlewareOptions,\n getRetryPlugin,\n getRetryAfterHint\n});\n\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isStreamingPayload = void 0;\nconst stream_1 = require(\"stream\");\nconst isStreamingPayload = (request) => (request === null || request === void 0 ? void 0 : request.body) instanceof stream_1.Readable ||\n (typeof ReadableStream !== \"undefined\" && (request === null || request === void 0 ? void 0 : request.body) instanceof ReadableStream);\nexports.isStreamingPayload = isStreamingPayload;\n","var __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/index.ts\nvar src_exports = {};\n__export(src_exports, {\n deserializerMiddleware: () => deserializerMiddleware,\n deserializerMiddlewareOption: () => deserializerMiddlewareOption,\n getSerdePlugin: () => getSerdePlugin,\n serializerMiddleware: () => serializerMiddleware,\n serializerMiddlewareOption: () => serializerMiddlewareOption\n});\nmodule.exports = __toCommonJS(src_exports);\n\n// src/deserializerMiddleware.ts\nvar deserializerMiddleware = /* @__PURE__ */ __name((options, deserializer) => (next) => async (args) => {\n const { response } = await next(args);\n try {\n const parsed = await deserializer(response, options);\n return {\n response,\n output: parsed\n };\n } catch (error) {\n Object.defineProperty(error, \"$response\", {\n value: response\n });\n if (!(\"$metadata\" in error)) {\n const hint = `Deserialization error: to see the raw response, inspect the hidden field {error}.$response on this object.`;\n error.message += \"\\n \" + hint;\n if (typeof error.$responseBodyText !== \"undefined\") {\n if (error.$response) {\n error.$response.body = error.$responseBodyText;\n }\n }\n }\n throw error;\n }\n}, \"deserializerMiddleware\");\n\n// src/serializerMiddleware.ts\nvar serializerMiddleware = /* @__PURE__ */ __name((options, serializer) => (next, context) => async (args) => {\n var _a;\n const endpoint = ((_a = context.endpointV2) == null ? void 0 : _a.url) && options.urlParser ? async () => options.urlParser(context.endpointV2.url) : options.endpoint;\n if (!endpoint) {\n throw new Error(\"No valid endpoint provider available.\");\n }\n const request = await serializer(args.input, { ...options, endpoint });\n return next({\n ...args,\n request\n });\n}, \"serializerMiddleware\");\n\n// src/serdePlugin.ts\nvar deserializerMiddlewareOption = {\n name: \"deserializerMiddleware\",\n step: \"deserialize\",\n tags: [\"DESERIALIZER\"],\n override: true\n};\nvar serializerMiddlewareOption = {\n name: \"serializerMiddleware\",\n step: \"serialize\",\n tags: [\"SERIALIZER\"],\n override: true\n};\nfunction getSerdePlugin(config, serializer, deserializer) {\n return {\n applyToStack: (commandStack) => {\n commandStack.add(deserializerMiddleware(config, deserializer), deserializerMiddlewareOption);\n commandStack.add(serializerMiddleware(config, serializer), serializerMiddlewareOption);\n }\n };\n}\n__name(getSerdePlugin, \"getSerdePlugin\");\n// Annotate the CommonJS export names for ESM import in node:\n\n0 && (module.exports = {\n deserializerMiddleware,\n deserializerMiddlewareOption,\n serializerMiddlewareOption,\n getSerdePlugin,\n serializerMiddleware\n});\n\n","var __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/index.ts\nvar src_exports = {};\n__export(src_exports, {\n constructStack: () => constructStack\n});\nmodule.exports = __toCommonJS(src_exports);\n\n// src/MiddlewareStack.ts\nvar getAllAliases = /* @__PURE__ */ __name((name, aliases) => {\n const _aliases = [];\n if (name) {\n _aliases.push(name);\n }\n if (aliases) {\n for (const alias of aliases) {\n _aliases.push(alias);\n }\n }\n return _aliases;\n}, \"getAllAliases\");\nvar getMiddlewareNameWithAliases = /* @__PURE__ */ __name((name, aliases) => {\n return `${name || \"anonymous\"}${aliases && aliases.length > 0 ? ` (a.k.a. ${aliases.join(\",\")})` : \"\"}`;\n}, \"getMiddlewareNameWithAliases\");\nvar constructStack = /* @__PURE__ */ __name(() => {\n let absoluteEntries = [];\n let relativeEntries = [];\n let identifyOnResolve = false;\n const entriesNameSet = /* @__PURE__ */ new Set();\n const sort = /* @__PURE__ */ __name((entries) => entries.sort(\n (a, b) => stepWeights[b.step] - stepWeights[a.step] || priorityWeights[b.priority || \"normal\"] - priorityWeights[a.priority || \"normal\"]\n ), \"sort\");\n const removeByName = /* @__PURE__ */ __name((toRemove) => {\n let isRemoved = false;\n const filterCb = /* @__PURE__ */ __name((entry) => {\n const aliases = getAllAliases(entry.name, entry.aliases);\n if (aliases.includes(toRemove)) {\n isRemoved = true;\n for (const alias of aliases) {\n entriesNameSet.delete(alias);\n }\n return false;\n }\n return true;\n }, \"filterCb\");\n absoluteEntries = absoluteEntries.filter(filterCb);\n relativeEntries = relativeEntries.filter(filterCb);\n return isRemoved;\n }, \"removeByName\");\n const removeByReference = /* @__PURE__ */ __name((toRemove) => {\n let isRemoved = false;\n const filterCb = /* @__PURE__ */ __name((entry) => {\n if (entry.middleware === toRemove) {\n isRemoved = true;\n for (const alias of getAllAliases(entry.name, entry.aliases)) {\n entriesNameSet.delete(alias);\n }\n return false;\n }\n return true;\n }, \"filterCb\");\n absoluteEntries = absoluteEntries.filter(filterCb);\n relativeEntries = relativeEntries.filter(filterCb);\n return isRemoved;\n }, \"removeByReference\");\n const cloneTo = /* @__PURE__ */ __name((toStack) => {\n var _a;\n absoluteEntries.forEach((entry) => {\n toStack.add(entry.middleware, { ...entry });\n });\n relativeEntries.forEach((entry) => {\n toStack.addRelativeTo(entry.middleware, { ...entry });\n });\n (_a = toStack.identifyOnResolve) == null ? void 0 : _a.call(toStack, stack.identifyOnResolve());\n return toStack;\n }, \"cloneTo\");\n const expandRelativeMiddlewareList = /* @__PURE__ */ __name((from) => {\n const expandedMiddlewareList = [];\n from.before.forEach((entry) => {\n if (entry.before.length === 0 && entry.after.length === 0) {\n expandedMiddlewareList.push(entry);\n } else {\n expandedMiddlewareList.push(...expandRelativeMiddlewareList(entry));\n }\n });\n expandedMiddlewareList.push(from);\n from.after.reverse().forEach((entry) => {\n if (entry.before.length === 0 && entry.after.length === 0) {\n expandedMiddlewareList.push(entry);\n } else {\n expandedMiddlewareList.push(...expandRelativeMiddlewareList(entry));\n }\n });\n return expandedMiddlewareList;\n }, \"expandRelativeMiddlewareList\");\n const getMiddlewareList = /* @__PURE__ */ __name((debug = false) => {\n const normalizedAbsoluteEntries = [];\n const normalizedRelativeEntries = [];\n const normalizedEntriesNameMap = {};\n absoluteEntries.forEach((entry) => {\n const normalizedEntry = {\n ...entry,\n before: [],\n after: []\n };\n for (const alias of getAllAliases(normalizedEntry.name, normalizedEntry.aliases)) {\n normalizedEntriesNameMap[alias] = normalizedEntry;\n }\n normalizedAbsoluteEntries.push(normalizedEntry);\n });\n relativeEntries.forEach((entry) => {\n const normalizedEntry = {\n ...entry,\n before: [],\n after: []\n };\n for (const alias of getAllAliases(normalizedEntry.name, normalizedEntry.aliases)) {\n normalizedEntriesNameMap[alias] = normalizedEntry;\n }\n normalizedRelativeEntries.push(normalizedEntry);\n });\n normalizedRelativeEntries.forEach((entry) => {\n if (entry.toMiddleware) {\n const toMiddleware = normalizedEntriesNameMap[entry.toMiddleware];\n if (toMiddleware === void 0) {\n if (debug) {\n return;\n }\n throw new Error(\n `${entry.toMiddleware} is not found when adding ${getMiddlewareNameWithAliases(entry.name, entry.aliases)} middleware ${entry.relation} ${entry.toMiddleware}`\n );\n }\n if (entry.relation === \"after\") {\n toMiddleware.after.push(entry);\n }\n if (entry.relation === \"before\") {\n toMiddleware.before.push(entry);\n }\n }\n });\n const mainChain = sort(normalizedAbsoluteEntries).map(expandRelativeMiddlewareList).reduce(\n (wholeList, expandedMiddlewareList) => {\n wholeList.push(...expandedMiddlewareList);\n return wholeList;\n },\n []\n );\n return mainChain;\n }, \"getMiddlewareList\");\n const stack = {\n add: (middleware, options = {}) => {\n const { name, override, aliases: _aliases } = options;\n const entry = {\n step: \"initialize\",\n priority: \"normal\",\n middleware,\n ...options\n };\n const aliases = getAllAliases(name, _aliases);\n if (aliases.length > 0) {\n if (aliases.some((alias) => entriesNameSet.has(alias))) {\n if (!override)\n throw new Error(`Duplicate middleware name '${getMiddlewareNameWithAliases(name, _aliases)}'`);\n for (const alias of aliases) {\n const toOverrideIndex = absoluteEntries.findIndex(\n (entry2) => {\n var _a;\n return entry2.name === alias || ((_a = entry2.aliases) == null ? void 0 : _a.some((a) => a === alias));\n }\n );\n if (toOverrideIndex === -1) {\n continue;\n }\n const toOverride = absoluteEntries[toOverrideIndex];\n if (toOverride.step !== entry.step || entry.priority !== toOverride.priority) {\n throw new Error(\n `\"${getMiddlewareNameWithAliases(toOverride.name, toOverride.aliases)}\" middleware with ${toOverride.priority} priority in ${toOverride.step} step cannot be overridden by \"${getMiddlewareNameWithAliases(name, _aliases)}\" middleware with ${entry.priority} priority in ${entry.step} step.`\n );\n }\n absoluteEntries.splice(toOverrideIndex, 1);\n }\n }\n for (const alias of aliases) {\n entriesNameSet.add(alias);\n }\n }\n absoluteEntries.push(entry);\n },\n addRelativeTo: (middleware, options) => {\n const { name, override, aliases: _aliases } = options;\n const entry = {\n middleware,\n ...options\n };\n const aliases = getAllAliases(name, _aliases);\n if (aliases.length > 0) {\n if (aliases.some((alias) => entriesNameSet.has(alias))) {\n if (!override)\n throw new Error(`Duplicate middleware name '${getMiddlewareNameWithAliases(name, _aliases)}'`);\n for (const alias of aliases) {\n const toOverrideIndex = relativeEntries.findIndex(\n (entry2) => {\n var _a;\n return entry2.name === alias || ((_a = entry2.aliases) == null ? void 0 : _a.some((a) => a === alias));\n }\n );\n if (toOverrideIndex === -1) {\n continue;\n }\n const toOverride = relativeEntries[toOverrideIndex];\n if (toOverride.toMiddleware !== entry.toMiddleware || toOverride.relation !== entry.relation) {\n throw new Error(\n `\"${getMiddlewareNameWithAliases(toOverride.name, toOverride.aliases)}\" middleware ${toOverride.relation} \"${toOverride.toMiddleware}\" middleware cannot be overridden by \"${getMiddlewareNameWithAliases(name, _aliases)}\" middleware ${entry.relation} \"${entry.toMiddleware}\" middleware.`\n );\n }\n relativeEntries.splice(toOverrideIndex, 1);\n }\n }\n for (const alias of aliases) {\n entriesNameSet.add(alias);\n }\n }\n relativeEntries.push(entry);\n },\n clone: () => cloneTo(constructStack()),\n use: (plugin) => {\n plugin.applyToStack(stack);\n },\n remove: (toRemove) => {\n if (typeof toRemove === \"string\")\n return removeByName(toRemove);\n else\n return removeByReference(toRemove);\n },\n removeByTag: (toRemove) => {\n let isRemoved = false;\n const filterCb = /* @__PURE__ */ __name((entry) => {\n const { tags, name, aliases: _aliases } = entry;\n if (tags && tags.includes(toRemove)) {\n const aliases = getAllAliases(name, _aliases);\n for (const alias of aliases) {\n entriesNameSet.delete(alias);\n }\n isRemoved = true;\n return false;\n }\n return true;\n }, \"filterCb\");\n absoluteEntries = absoluteEntries.filter(filterCb);\n relativeEntries = relativeEntries.filter(filterCb);\n return isRemoved;\n },\n concat: (from) => {\n var _a;\n const cloned = cloneTo(constructStack());\n cloned.use(from);\n cloned.identifyOnResolve(\n identifyOnResolve || cloned.identifyOnResolve() || (((_a = from.identifyOnResolve) == null ? void 0 : _a.call(from)) ?? false)\n );\n return cloned;\n },\n applyToStack: cloneTo,\n identify: () => {\n return getMiddlewareList(true).map((mw) => {\n const step = mw.step ?? mw.relation + \" \" + mw.toMiddleware;\n return getMiddlewareNameWithAliases(mw.name, mw.aliases) + \" - \" + step;\n });\n },\n identifyOnResolve(toggle) {\n if (typeof toggle === \"boolean\")\n identifyOnResolve = toggle;\n return identifyOnResolve;\n },\n resolve: (handler, context) => {\n for (const middleware of getMiddlewareList().map((entry) => entry.middleware).reverse()) {\n handler = middleware(handler, context);\n }\n if (identifyOnResolve) {\n console.log(stack.identify());\n }\n return handler;\n }\n };\n return stack;\n}, \"constructStack\");\nvar stepWeights = {\n initialize: 5,\n serialize: 4,\n build: 3,\n finalizeRequest: 2,\n deserialize: 1\n};\nvar priorityWeights = {\n high: 3,\n normal: 2,\n low: 1\n};\n// Annotate the CommonJS export names for ESM import in node:\n\n0 && (module.exports = {\n constructStack\n});\n\n","var __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/index.ts\nvar src_exports = {};\n__export(src_exports, {\n loadConfig: () => loadConfig\n});\nmodule.exports = __toCommonJS(src_exports);\n\n// src/configLoader.ts\n\n\n// src/fromEnv.ts\nvar import_property_provider = require(\"@smithy/property-provider\");\n\n// src/getSelectorName.ts\nfunction getSelectorName(functionString) {\n try {\n const constants = new Set(Array.from(functionString.match(/([A-Z_]){3,}/g) ?? []));\n constants.delete(\"CONFIG\");\n constants.delete(\"CONFIG_PREFIX_SEPARATOR\");\n constants.delete(\"ENV\");\n return [...constants].join(\", \");\n } catch (e) {\n return functionString;\n }\n}\n__name(getSelectorName, \"getSelectorName\");\n\n// src/fromEnv.ts\nvar fromEnv = /* @__PURE__ */ __name((envVarSelector, logger) => async () => {\n try {\n const config = envVarSelector(process.env);\n if (config === void 0) {\n throw new Error();\n }\n return config;\n } catch (e) {\n throw new import_property_provider.CredentialsProviderError(\n e.message || `Not found in ENV: ${getSelectorName(envVarSelector.toString())}`,\n { logger }\n );\n }\n}, \"fromEnv\");\n\n// src/fromSharedConfigFiles.ts\n\nvar import_shared_ini_file_loader = require(\"@smithy/shared-ini-file-loader\");\nvar fromSharedConfigFiles = /* @__PURE__ */ __name((configSelector, { preferredFile = \"config\", ...init } = {}) => async () => {\n const profile = (0, import_shared_ini_file_loader.getProfileName)(init);\n const { configFile, credentialsFile } = await (0, import_shared_ini_file_loader.loadSharedConfigFiles)(init);\n const profileFromCredentials = credentialsFile[profile] || {};\n const profileFromConfig = configFile[profile] || {};\n const mergedProfile = preferredFile === \"config\" ? { ...profileFromCredentials, ...profileFromConfig } : { ...profileFromConfig, ...profileFromCredentials };\n try {\n const cfgFile = preferredFile === \"config\" ? configFile : credentialsFile;\n const configValue = configSelector(mergedProfile, cfgFile);\n if (configValue === void 0) {\n throw new Error();\n }\n return configValue;\n } catch (e) {\n throw new import_property_provider.CredentialsProviderError(\n e.message || `Not found in config files w/ profile [${profile}]: ${getSelectorName(configSelector.toString())}`,\n { logger: init.logger }\n );\n }\n}, \"fromSharedConfigFiles\");\n\n// src/fromStatic.ts\n\nvar isFunction = /* @__PURE__ */ __name((func) => typeof func === \"function\", \"isFunction\");\nvar fromStatic = /* @__PURE__ */ __name((defaultValue) => isFunction(defaultValue) ? async () => await defaultValue() : (0, import_property_provider.fromStatic)(defaultValue), \"fromStatic\");\n\n// src/configLoader.ts\nvar loadConfig = /* @__PURE__ */ __name(({ environmentVariableSelector, configFileSelector, default: defaultValue }, configuration = {}) => (0, import_property_provider.memoize)(\n (0, import_property_provider.chain)(\n fromEnv(environmentVariableSelector),\n fromSharedConfigFiles(configFileSelector, configuration),\n fromStatic(defaultValue)\n )\n), \"loadConfig\");\n// Annotate the CommonJS export names for ESM import in node:\n\n0 && (module.exports = {\n loadConfig\n});\n\n","var __create = Object.create;\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __getProtoOf = Object.getPrototypeOf;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(\n // If the importer is in node compatibility mode or this is not an ESM\n // file that has been converted to a CommonJS file using a Babel-\n // compatible transform (i.e. \"__esModule\" has not been set), then set\n // \"default\" to the CommonJS \"module.exports\" for node compatibility.\n isNodeMode || !mod || !mod.__esModule ? __defProp(target, \"default\", { value: mod, enumerable: true }) : target,\n mod\n));\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/index.ts\nvar src_exports = {};\n__export(src_exports, {\n DEFAULT_REQUEST_TIMEOUT: () => DEFAULT_REQUEST_TIMEOUT,\n NodeHttp2Handler: () => NodeHttp2Handler,\n NodeHttpHandler: () => NodeHttpHandler,\n streamCollector: () => streamCollector\n});\nmodule.exports = __toCommonJS(src_exports);\n\n// src/node-http-handler.ts\nvar import_protocol_http = require(\"@smithy/protocol-http\");\nvar import_querystring_builder = require(\"@smithy/querystring-builder\");\nvar import_http = require(\"http\");\nvar import_https = require(\"https\");\n\n// src/constants.ts\nvar NODEJS_TIMEOUT_ERROR_CODES = [\"ECONNRESET\", \"EPIPE\", \"ETIMEDOUT\"];\n\n// src/get-transformed-headers.ts\nvar getTransformedHeaders = /* @__PURE__ */ __name((headers) => {\n const transformedHeaders = {};\n for (const name of Object.keys(headers)) {\n const headerValues = headers[name];\n transformedHeaders[name] = Array.isArray(headerValues) ? headerValues.join(\",\") : headerValues;\n }\n return transformedHeaders;\n}, \"getTransformedHeaders\");\n\n// src/set-connection-timeout.ts\nvar DEFER_EVENT_LISTENER_TIME = 1e3;\nvar setConnectionTimeout = /* @__PURE__ */ __name((request, reject, timeoutInMs = 0) => {\n if (!timeoutInMs) {\n return -1;\n }\n const registerTimeout = /* @__PURE__ */ __name((offset) => {\n const timeoutId = setTimeout(() => {\n request.destroy();\n reject(\n Object.assign(new Error(`Socket timed out without establishing a connection within ${timeoutInMs} ms`), {\n name: \"TimeoutError\"\n })\n );\n }, timeoutInMs - offset);\n const doWithSocket = /* @__PURE__ */ __name((socket) => {\n if (socket == null ? void 0 : socket.connecting) {\n socket.on(\"connect\", () => {\n clearTimeout(timeoutId);\n });\n } else {\n clearTimeout(timeoutId);\n }\n }, \"doWithSocket\");\n if (request.socket) {\n doWithSocket(request.socket);\n } else {\n request.on(\"socket\", doWithSocket);\n }\n }, \"registerTimeout\");\n if (timeoutInMs < 2e3) {\n registerTimeout(0);\n return 0;\n }\n return setTimeout(registerTimeout.bind(null, DEFER_EVENT_LISTENER_TIME), DEFER_EVENT_LISTENER_TIME);\n}, \"setConnectionTimeout\");\n\n// src/set-socket-keep-alive.ts\nvar DEFER_EVENT_LISTENER_TIME2 = 3e3;\nvar setSocketKeepAlive = /* @__PURE__ */ __name((request, { keepAlive, keepAliveMsecs }, deferTimeMs = DEFER_EVENT_LISTENER_TIME2) => {\n if (keepAlive !== true) {\n return -1;\n }\n const registerListener = /* @__PURE__ */ __name(() => {\n if (request.socket) {\n request.socket.setKeepAlive(keepAlive, keepAliveMsecs || 0);\n } else {\n request.on(\"socket\", (socket) => {\n socket.setKeepAlive(keepAlive, keepAliveMsecs || 0);\n });\n }\n }, \"registerListener\");\n if (deferTimeMs === 0) {\n registerListener();\n return 0;\n }\n return setTimeout(registerListener, deferTimeMs);\n}, \"setSocketKeepAlive\");\n\n// src/set-socket-timeout.ts\nvar DEFER_EVENT_LISTENER_TIME3 = 3e3;\nvar setSocketTimeout = /* @__PURE__ */ __name((request, reject, timeoutInMs = 0) => {\n const registerTimeout = /* @__PURE__ */ __name((offset) => {\n request.setTimeout(timeoutInMs - offset, () => {\n request.destroy();\n reject(Object.assign(new Error(`Connection timed out after ${timeoutInMs} ms`), { name: \"TimeoutError\" }));\n });\n }, \"registerTimeout\");\n if (0 < timeoutInMs && timeoutInMs < 6e3) {\n registerTimeout(0);\n return 0;\n }\n return setTimeout(\n registerTimeout.bind(null, timeoutInMs === 0 ? 0 : DEFER_EVENT_LISTENER_TIME3),\n DEFER_EVENT_LISTENER_TIME3\n );\n}, \"setSocketTimeout\");\n\n// src/write-request-body.ts\nvar import_stream = require(\"stream\");\nvar MIN_WAIT_TIME = 1e3;\nasync function writeRequestBody(httpRequest, request, maxContinueTimeoutMs = MIN_WAIT_TIME) {\n const headers = request.headers ?? {};\n const expect = headers[\"Expect\"] || headers[\"expect\"];\n let timeoutId = -1;\n let hasError = false;\n if (expect === \"100-continue\") {\n await Promise.race([\n new Promise((resolve) => {\n timeoutId = Number(setTimeout(resolve, Math.max(MIN_WAIT_TIME, maxContinueTimeoutMs)));\n }),\n new Promise((resolve) => {\n httpRequest.on(\"continue\", () => {\n clearTimeout(timeoutId);\n resolve();\n });\n httpRequest.on(\"error\", () => {\n hasError = true;\n clearTimeout(timeoutId);\n resolve();\n });\n })\n ]);\n }\n if (!hasError) {\n writeBody(httpRequest, request.body);\n }\n}\n__name(writeRequestBody, \"writeRequestBody\");\nfunction writeBody(httpRequest, body) {\n if (body instanceof import_stream.Readable) {\n body.pipe(httpRequest);\n return;\n }\n if (body) {\n if (Buffer.isBuffer(body) || typeof body === \"string\") {\n httpRequest.end(body);\n return;\n }\n const uint8 = body;\n if (typeof uint8 === \"object\" && uint8.buffer && typeof uint8.byteOffset === \"number\" && typeof uint8.byteLength === \"number\") {\n httpRequest.end(Buffer.from(uint8.buffer, uint8.byteOffset, uint8.byteLength));\n return;\n }\n httpRequest.end(Buffer.from(body));\n return;\n }\n httpRequest.end();\n}\n__name(writeBody, \"writeBody\");\n\n// src/node-http-handler.ts\nvar DEFAULT_REQUEST_TIMEOUT = 0;\nvar _NodeHttpHandler = class _NodeHttpHandler {\n constructor(options) {\n this.socketWarningTimestamp = 0;\n // Node http handler is hard-coded to http/1.1: https://github.com/nodejs/node/blob/ff5664b83b89c55e4ab5d5f60068fb457f1f5872/lib/_http_server.js#L286\n this.metadata = { handlerProtocol: \"http/1.1\" };\n this.configProvider = new Promise((resolve, reject) => {\n if (typeof options === \"function\") {\n options().then((_options) => {\n resolve(this.resolveDefaultConfig(_options));\n }).catch(reject);\n } else {\n resolve(this.resolveDefaultConfig(options));\n }\n });\n }\n /**\n * @returns the input if it is an HttpHandler of any class,\n * or instantiates a new instance of this handler.\n */\n static create(instanceOrOptions) {\n if (typeof (instanceOrOptions == null ? void 0 : instanceOrOptions.handle) === \"function\") {\n return instanceOrOptions;\n }\n return new _NodeHttpHandler(instanceOrOptions);\n }\n /**\n * @internal\n *\n * @param agent - http(s) agent in use by the NodeHttpHandler instance.\n * @param socketWarningTimestamp - last socket usage check timestamp.\n * @param logger - channel for the warning.\n * @returns timestamp of last emitted warning.\n */\n static checkSocketUsage(agent, socketWarningTimestamp, logger = console) {\n var _a, _b, _c;\n const { sockets, requests, maxSockets } = agent;\n if (typeof maxSockets !== \"number\" || maxSockets === Infinity) {\n return socketWarningTimestamp;\n }\n const interval = 15e3;\n if (Date.now() - interval < socketWarningTimestamp) {\n return socketWarningTimestamp;\n }\n if (sockets && requests) {\n for (const origin in sockets) {\n const socketsInUse = ((_a = sockets[origin]) == null ? void 0 : _a.length) ?? 0;\n const requestsEnqueued = ((_b = requests[origin]) == null ? void 0 : _b.length) ?? 0;\n if (socketsInUse >= maxSockets && requestsEnqueued >= 2 * maxSockets) {\n (_c = logger == null ? void 0 : logger.warn) == null ? void 0 : _c.call(\n logger,\n `@smithy/node-http-handler:WARN - socket usage at capacity=${socketsInUse} and ${requestsEnqueued} additional requests are enqueued.\nSee https://docs.aws.amazon.com/sdk-for-javascript/v3/developer-guide/node-configuring-maxsockets.html\nor increase socketAcquisitionWarningTimeout=(millis) in the NodeHttpHandler config.`\n );\n return Date.now();\n }\n }\n }\n return socketWarningTimestamp;\n }\n resolveDefaultConfig(options) {\n const { requestTimeout, connectionTimeout, socketTimeout, httpAgent, httpsAgent } = options || {};\n const keepAlive = true;\n const maxSockets = 50;\n return {\n connectionTimeout,\n requestTimeout: requestTimeout ?? socketTimeout,\n httpAgent: (() => {\n if (httpAgent instanceof import_http.Agent || typeof (httpAgent == null ? void 0 : httpAgent.destroy) === \"function\") {\n return httpAgent;\n }\n return new import_http.Agent({ keepAlive, maxSockets, ...httpAgent });\n })(),\n httpsAgent: (() => {\n if (httpsAgent instanceof import_https.Agent || typeof (httpsAgent == null ? void 0 : httpsAgent.destroy) === \"function\") {\n return httpsAgent;\n }\n return new import_https.Agent({ keepAlive, maxSockets, ...httpsAgent });\n })(),\n logger: console\n };\n }\n destroy() {\n var _a, _b, _c, _d;\n (_b = (_a = this.config) == null ? void 0 : _a.httpAgent) == null ? void 0 : _b.destroy();\n (_d = (_c = this.config) == null ? void 0 : _c.httpsAgent) == null ? void 0 : _d.destroy();\n }\n async handle(request, { abortSignal } = {}) {\n if (!this.config) {\n this.config = await this.configProvider;\n }\n return new Promise((_resolve, _reject) => {\n let writeRequestBodyPromise = void 0;\n const timeouts = [];\n const resolve = /* @__PURE__ */ __name(async (arg) => {\n await writeRequestBodyPromise;\n timeouts.forEach(clearTimeout);\n _resolve(arg);\n }, \"resolve\");\n const reject = /* @__PURE__ */ __name(async (arg) => {\n await writeRequestBodyPromise;\n timeouts.forEach(clearTimeout);\n _reject(arg);\n }, \"reject\");\n if (!this.config) {\n throw new Error(\"Node HTTP request handler config is not resolved\");\n }\n if (abortSignal == null ? void 0 : abortSignal.aborted) {\n const abortError = new Error(\"Request aborted\");\n abortError.name = \"AbortError\";\n reject(abortError);\n return;\n }\n const isSSL = request.protocol === \"https:\";\n const agent = isSSL ? this.config.httpsAgent : this.config.httpAgent;\n timeouts.push(\n setTimeout(\n () => {\n this.socketWarningTimestamp = _NodeHttpHandler.checkSocketUsage(\n agent,\n this.socketWarningTimestamp,\n this.config.logger\n );\n },\n this.config.socketAcquisitionWarningTimeout ?? (this.config.requestTimeout ?? 2e3) + (this.config.connectionTimeout ?? 1e3)\n )\n );\n const queryString = (0, import_querystring_builder.buildQueryString)(request.query || {});\n let auth = void 0;\n if (request.username != null || request.password != null) {\n const username = request.username ?? \"\";\n const password = request.password ?? \"\";\n auth = `${username}:${password}`;\n }\n let path = request.path;\n if (queryString) {\n path += `?${queryString}`;\n }\n if (request.fragment) {\n path += `#${request.fragment}`;\n }\n let hostname = request.hostname ?? \"\";\n if (hostname[0] === \"[\" && hostname.endsWith(\"]\")) {\n hostname = request.hostname.slice(1, -1);\n } else {\n hostname = request.hostname;\n }\n const nodeHttpsOptions = {\n headers: request.headers,\n host: hostname,\n method: request.method,\n path,\n port: request.port,\n agent,\n auth\n };\n const requestFunc = isSSL ? import_https.request : import_http.request;\n const req = requestFunc(nodeHttpsOptions, (res) => {\n const httpResponse = new import_protocol_http.HttpResponse({\n statusCode: res.statusCode || -1,\n reason: res.statusMessage,\n headers: getTransformedHeaders(res.headers),\n body: res\n });\n resolve({ response: httpResponse });\n });\n req.on(\"error\", (err) => {\n if (NODEJS_TIMEOUT_ERROR_CODES.includes(err.code)) {\n reject(Object.assign(err, { name: \"TimeoutError\" }));\n } else {\n reject(err);\n }\n });\n if (abortSignal) {\n const onAbort = /* @__PURE__ */ __name(() => {\n req.destroy();\n const abortError = new Error(\"Request aborted\");\n abortError.name = \"AbortError\";\n reject(abortError);\n }, \"onAbort\");\n if (typeof abortSignal.addEventListener === \"function\") {\n const signal = abortSignal;\n signal.addEventListener(\"abort\", onAbort, { once: true });\n req.once(\"close\", () => signal.removeEventListener(\"abort\", onAbort));\n } else {\n abortSignal.onabort = onAbort;\n }\n }\n timeouts.push(setConnectionTimeout(req, reject, this.config.connectionTimeout));\n timeouts.push(setSocketTimeout(req, reject, this.config.requestTimeout));\n const httpAgent = nodeHttpsOptions.agent;\n if (typeof httpAgent === \"object\" && \"keepAlive\" in httpAgent) {\n timeouts.push(\n setSocketKeepAlive(req, {\n // @ts-expect-error keepAlive is not public on httpAgent.\n keepAlive: httpAgent.keepAlive,\n // @ts-expect-error keepAliveMsecs is not public on httpAgent.\n keepAliveMsecs: httpAgent.keepAliveMsecs\n })\n );\n }\n writeRequestBodyPromise = writeRequestBody(req, request, this.config.requestTimeout).catch((e) => {\n timeouts.forEach(clearTimeout);\n return _reject(e);\n });\n });\n }\n updateHttpClientConfig(key, value) {\n this.config = void 0;\n this.configProvider = this.configProvider.then((config) => {\n return {\n ...config,\n [key]: value\n };\n });\n }\n httpHandlerConfigs() {\n return this.config ?? {};\n }\n};\n__name(_NodeHttpHandler, \"NodeHttpHandler\");\nvar NodeHttpHandler = _NodeHttpHandler;\n\n// src/node-http2-handler.ts\n\n\nvar import_http22 = require(\"http2\");\n\n// src/node-http2-connection-manager.ts\nvar import_http2 = __toESM(require(\"http2\"));\n\n// src/node-http2-connection-pool.ts\nvar _NodeHttp2ConnectionPool = class _NodeHttp2ConnectionPool {\n constructor(sessions) {\n this.sessions = [];\n this.sessions = sessions ?? [];\n }\n poll() {\n if (this.sessions.length > 0) {\n return this.sessions.shift();\n }\n }\n offerLast(session) {\n this.sessions.push(session);\n }\n contains(session) {\n return this.sessions.includes(session);\n }\n remove(session) {\n this.sessions = this.sessions.filter((s) => s !== session);\n }\n [Symbol.iterator]() {\n return this.sessions[Symbol.iterator]();\n }\n destroy(connection) {\n for (const session of this.sessions) {\n if (session === connection) {\n if (!session.destroyed) {\n session.destroy();\n }\n }\n }\n }\n};\n__name(_NodeHttp2ConnectionPool, \"NodeHttp2ConnectionPool\");\nvar NodeHttp2ConnectionPool = _NodeHttp2ConnectionPool;\n\n// src/node-http2-connection-manager.ts\nvar _NodeHttp2ConnectionManager = class _NodeHttp2ConnectionManager {\n constructor(config) {\n this.sessionCache = /* @__PURE__ */ new Map();\n this.config = config;\n if (this.config.maxConcurrency && this.config.maxConcurrency <= 0) {\n throw new RangeError(\"maxConcurrency must be greater than zero.\");\n }\n }\n lease(requestContext, connectionConfiguration) {\n const url = this.getUrlString(requestContext);\n const existingPool = this.sessionCache.get(url);\n if (existingPool) {\n const existingSession = existingPool.poll();\n if (existingSession && !this.config.disableConcurrency) {\n return existingSession;\n }\n }\n const session = import_http2.default.connect(url);\n if (this.config.maxConcurrency) {\n session.settings({ maxConcurrentStreams: this.config.maxConcurrency }, (err) => {\n if (err) {\n throw new Error(\n \"Fail to set maxConcurrentStreams to \" + this.config.maxConcurrency + \"when creating new session for \" + requestContext.destination.toString()\n );\n }\n });\n }\n session.unref();\n const destroySessionCb = /* @__PURE__ */ __name(() => {\n session.destroy();\n this.deleteSession(url, session);\n }, \"destroySessionCb\");\n session.on(\"goaway\", destroySessionCb);\n session.on(\"error\", destroySessionCb);\n session.on(\"frameError\", destroySessionCb);\n session.on(\"close\", () => this.deleteSession(url, session));\n if (connectionConfiguration.requestTimeout) {\n session.setTimeout(connectionConfiguration.requestTimeout, destroySessionCb);\n }\n const connectionPool = this.sessionCache.get(url) || new NodeHttp2ConnectionPool();\n connectionPool.offerLast(session);\n this.sessionCache.set(url, connectionPool);\n return session;\n }\n /**\n * Delete a session from the connection pool.\n * @param authority The authority of the session to delete.\n * @param session The session to delete.\n */\n deleteSession(authority, session) {\n const existingConnectionPool = this.sessionCache.get(authority);\n if (!existingConnectionPool) {\n return;\n }\n if (!existingConnectionPool.contains(session)) {\n return;\n }\n existingConnectionPool.remove(session);\n this.sessionCache.set(authority, existingConnectionPool);\n }\n release(requestContext, session) {\n var _a;\n const cacheKey = this.getUrlString(requestContext);\n (_a = this.sessionCache.get(cacheKey)) == null ? void 0 : _a.offerLast(session);\n }\n destroy() {\n for (const [key, connectionPool] of this.sessionCache) {\n for (const session of connectionPool) {\n if (!session.destroyed) {\n session.destroy();\n }\n connectionPool.remove(session);\n }\n this.sessionCache.delete(key);\n }\n }\n setMaxConcurrentStreams(maxConcurrentStreams) {\n if (this.config.maxConcurrency && this.config.maxConcurrency <= 0) {\n throw new RangeError(\"maxConcurrentStreams must be greater than zero.\");\n }\n this.config.maxConcurrency = maxConcurrentStreams;\n }\n setDisableConcurrentStreams(disableConcurrentStreams) {\n this.config.disableConcurrency = disableConcurrentStreams;\n }\n getUrlString(request) {\n return request.destination.toString();\n }\n};\n__name(_NodeHttp2ConnectionManager, \"NodeHttp2ConnectionManager\");\nvar NodeHttp2ConnectionManager = _NodeHttp2ConnectionManager;\n\n// src/node-http2-handler.ts\nvar _NodeHttp2Handler = class _NodeHttp2Handler {\n constructor(options) {\n this.metadata = { handlerProtocol: \"h2\" };\n this.connectionManager = new NodeHttp2ConnectionManager({});\n this.configProvider = new Promise((resolve, reject) => {\n if (typeof options === \"function\") {\n options().then((opts) => {\n resolve(opts || {});\n }).catch(reject);\n } else {\n resolve(options || {});\n }\n });\n }\n /**\n * @returns the input if it is an HttpHandler of any class,\n * or instantiates a new instance of this handler.\n */\n static create(instanceOrOptions) {\n if (typeof (instanceOrOptions == null ? void 0 : instanceOrOptions.handle) === \"function\") {\n return instanceOrOptions;\n }\n return new _NodeHttp2Handler(instanceOrOptions);\n }\n destroy() {\n this.connectionManager.destroy();\n }\n async handle(request, { abortSignal } = {}) {\n if (!this.config) {\n this.config = await this.configProvider;\n this.connectionManager.setDisableConcurrentStreams(this.config.disableConcurrentStreams || false);\n if (this.config.maxConcurrentStreams) {\n this.connectionManager.setMaxConcurrentStreams(this.config.maxConcurrentStreams);\n }\n }\n const { requestTimeout, disableConcurrentStreams } = this.config;\n return new Promise((_resolve, _reject) => {\n var _a;\n let fulfilled = false;\n let writeRequestBodyPromise = void 0;\n const resolve = /* @__PURE__ */ __name(async (arg) => {\n await writeRequestBodyPromise;\n _resolve(arg);\n }, \"resolve\");\n const reject = /* @__PURE__ */ __name(async (arg) => {\n await writeRequestBodyPromise;\n _reject(arg);\n }, \"reject\");\n if (abortSignal == null ? void 0 : abortSignal.aborted) {\n fulfilled = true;\n const abortError = new Error(\"Request aborted\");\n abortError.name = \"AbortError\";\n reject(abortError);\n return;\n }\n const { hostname, method, port, protocol, query } = request;\n let auth = \"\";\n if (request.username != null || request.password != null) {\n const username = request.username ?? \"\";\n const password = request.password ?? \"\";\n auth = `${username}:${password}@`;\n }\n const authority = `${protocol}//${auth}${hostname}${port ? `:${port}` : \"\"}`;\n const requestContext = { destination: new URL(authority) };\n const session = this.connectionManager.lease(requestContext, {\n requestTimeout: (_a = this.config) == null ? void 0 : _a.sessionTimeout,\n disableConcurrentStreams: disableConcurrentStreams || false\n });\n const rejectWithDestroy = /* @__PURE__ */ __name((err) => {\n if (disableConcurrentStreams) {\n this.destroySession(session);\n }\n fulfilled = true;\n reject(err);\n }, \"rejectWithDestroy\");\n const queryString = (0, import_querystring_builder.buildQueryString)(query || {});\n let path = request.path;\n if (queryString) {\n path += `?${queryString}`;\n }\n if (request.fragment) {\n path += `#${request.fragment}`;\n }\n const req = session.request({\n ...request.headers,\n [import_http22.constants.HTTP2_HEADER_PATH]: path,\n [import_http22.constants.HTTP2_HEADER_METHOD]: method\n });\n session.ref();\n req.on(\"response\", (headers) => {\n const httpResponse = new import_protocol_http.HttpResponse({\n statusCode: headers[\":status\"] || -1,\n headers: getTransformedHeaders(headers),\n body: req\n });\n fulfilled = true;\n resolve({ response: httpResponse });\n if (disableConcurrentStreams) {\n session.close();\n this.connectionManager.deleteSession(authority, session);\n }\n });\n if (requestTimeout) {\n req.setTimeout(requestTimeout, () => {\n req.close();\n const timeoutError = new Error(`Stream timed out because of no activity for ${requestTimeout} ms`);\n timeoutError.name = \"TimeoutError\";\n rejectWithDestroy(timeoutError);\n });\n }\n if (abortSignal) {\n const onAbort = /* @__PURE__ */ __name(() => {\n req.close();\n const abortError = new Error(\"Request aborted\");\n abortError.name = \"AbortError\";\n rejectWithDestroy(abortError);\n }, \"onAbort\");\n if (typeof abortSignal.addEventListener === \"function\") {\n const signal = abortSignal;\n signal.addEventListener(\"abort\", onAbort, { once: true });\n req.once(\"close\", () => signal.removeEventListener(\"abort\", onAbort));\n } else {\n abortSignal.onabort = onAbort;\n }\n }\n req.on(\"frameError\", (type, code, id) => {\n rejectWithDestroy(new Error(`Frame type id ${type} in stream id ${id} has failed with code ${code}.`));\n });\n req.on(\"error\", rejectWithDestroy);\n req.on(\"aborted\", () => {\n rejectWithDestroy(\n new Error(`HTTP/2 stream is abnormally aborted in mid-communication with result code ${req.rstCode}.`)\n );\n });\n req.on(\"close\", () => {\n session.unref();\n if (disableConcurrentStreams) {\n session.destroy();\n }\n if (!fulfilled) {\n rejectWithDestroy(new Error(\"Unexpected error: http2 request did not get a response\"));\n }\n });\n writeRequestBodyPromise = writeRequestBody(req, request, requestTimeout);\n });\n }\n updateHttpClientConfig(key, value) {\n this.config = void 0;\n this.configProvider = this.configProvider.then((config) => {\n return {\n ...config,\n [key]: value\n };\n });\n }\n httpHandlerConfigs() {\n return this.config ?? {};\n }\n /**\n * Destroys a session.\n * @param session The session to destroy.\n */\n destroySession(session) {\n if (!session.destroyed) {\n session.destroy();\n }\n }\n};\n__name(_NodeHttp2Handler, \"NodeHttp2Handler\");\nvar NodeHttp2Handler = _NodeHttp2Handler;\n\n// src/stream-collector/collector.ts\n\nvar _Collector = class _Collector extends import_stream.Writable {\n constructor() {\n super(...arguments);\n this.bufferedBytes = [];\n }\n _write(chunk, encoding, callback) {\n this.bufferedBytes.push(chunk);\n callback();\n }\n};\n__name(_Collector, \"Collector\");\nvar Collector = _Collector;\n\n// src/stream-collector/index.ts\nvar streamCollector = /* @__PURE__ */ __name((stream) => {\n if (isReadableStreamInstance(stream)) {\n return collectReadableStream(stream);\n }\n return new Promise((resolve, reject) => {\n const collector = new Collector();\n stream.pipe(collector);\n stream.on(\"error\", (err) => {\n collector.end();\n reject(err);\n });\n collector.on(\"error\", reject);\n collector.on(\"finish\", function() {\n const bytes = new Uint8Array(Buffer.concat(this.bufferedBytes));\n resolve(bytes);\n });\n });\n}, \"streamCollector\");\nvar isReadableStreamInstance = /* @__PURE__ */ __name((stream) => typeof ReadableStream === \"function\" && stream instanceof ReadableStream, \"isReadableStreamInstance\");\nasync function collectReadableStream(stream) {\n const chunks = [];\n const reader = stream.getReader();\n let isDone = false;\n let length = 0;\n while (!isDone) {\n const { done, value } = await reader.read();\n if (value) {\n chunks.push(value);\n length += value.length;\n }\n isDone = done;\n }\n const collected = new Uint8Array(length);\n let offset = 0;\n for (const chunk of chunks) {\n collected.set(chunk, offset);\n offset += chunk.length;\n }\n return collected;\n}\n__name(collectReadableStream, \"collectReadableStream\");\n// Annotate the CommonJS export names for ESM import in node:\n\n0 && (module.exports = {\n DEFAULT_REQUEST_TIMEOUT,\n NodeHttpHandler,\n NodeHttp2Handler,\n streamCollector\n});\n\n","var __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/index.ts\nvar src_exports = {};\n__export(src_exports, {\n CredentialsProviderError: () => CredentialsProviderError,\n ProviderError: () => ProviderError,\n TokenProviderError: () => TokenProviderError,\n chain: () => chain,\n fromStatic: () => fromStatic,\n memoize: () => memoize\n});\nmodule.exports = __toCommonJS(src_exports);\n\n// src/ProviderError.ts\nvar _ProviderError = class _ProviderError extends Error {\n constructor(message, options = true) {\n var _a;\n let logger;\n let tryNextLink = true;\n if (typeof options === \"boolean\") {\n logger = void 0;\n tryNextLink = options;\n } else if (options != null && typeof options === \"object\") {\n logger = options.logger;\n tryNextLink = options.tryNextLink ?? true;\n }\n super(message);\n this.name = \"ProviderError\";\n this.tryNextLink = tryNextLink;\n Object.setPrototypeOf(this, _ProviderError.prototype);\n (_a = logger == null ? void 0 : logger.debug) == null ? void 0 : _a.call(logger, `@smithy/property-provider ${tryNextLink ? \"->\" : \"(!)\"} ${message}`);\n }\n /**\n * @deprecated use new operator.\n */\n static from(error, options = true) {\n return Object.assign(new this(error.message, options), error);\n }\n};\n__name(_ProviderError, \"ProviderError\");\nvar ProviderError = _ProviderError;\n\n// src/CredentialsProviderError.ts\nvar _CredentialsProviderError = class _CredentialsProviderError extends ProviderError {\n /**\n * @override\n */\n constructor(message, options = true) {\n super(message, options);\n this.name = \"CredentialsProviderError\";\n Object.setPrototypeOf(this, _CredentialsProviderError.prototype);\n }\n};\n__name(_CredentialsProviderError, \"CredentialsProviderError\");\nvar CredentialsProviderError = _CredentialsProviderError;\n\n// src/TokenProviderError.ts\nvar _TokenProviderError = class _TokenProviderError extends ProviderError {\n /**\n * @override\n */\n constructor(message, options = true) {\n super(message, options);\n this.name = \"TokenProviderError\";\n Object.setPrototypeOf(this, _TokenProviderError.prototype);\n }\n};\n__name(_TokenProviderError, \"TokenProviderError\");\nvar TokenProviderError = _TokenProviderError;\n\n// src/chain.ts\nvar chain = /* @__PURE__ */ __name((...providers) => async () => {\n if (providers.length === 0) {\n throw new ProviderError(\"No providers in chain\");\n }\n let lastProviderError;\n for (const provider of providers) {\n try {\n const credentials = await provider();\n return credentials;\n } catch (err) {\n lastProviderError = err;\n if (err == null ? void 0 : err.tryNextLink) {\n continue;\n }\n throw err;\n }\n }\n throw lastProviderError;\n}, \"chain\");\n\n// src/fromStatic.ts\nvar fromStatic = /* @__PURE__ */ __name((staticValue) => () => Promise.resolve(staticValue), \"fromStatic\");\n\n// src/memoize.ts\nvar memoize = /* @__PURE__ */ __name((provider, isExpired, requiresRefresh) => {\n let resolved;\n let pending;\n let hasResult;\n let isConstant = false;\n const coalesceProvider = /* @__PURE__ */ __name(async () => {\n if (!pending) {\n pending = provider();\n }\n try {\n resolved = await pending;\n hasResult = true;\n isConstant = false;\n } finally {\n pending = void 0;\n }\n return resolved;\n }, \"coalesceProvider\");\n if (isExpired === void 0) {\n return async (options) => {\n if (!hasResult || (options == null ? void 0 : options.forceRefresh)) {\n resolved = await coalesceProvider();\n }\n return resolved;\n };\n }\n return async (options) => {\n if (!hasResult || (options == null ? void 0 : options.forceRefresh)) {\n resolved = await coalesceProvider();\n }\n if (isConstant) {\n return resolved;\n }\n if (requiresRefresh && !requiresRefresh(resolved)) {\n isConstant = true;\n return resolved;\n }\n if (isExpired(resolved)) {\n await coalesceProvider();\n return resolved;\n }\n return resolved;\n };\n}, \"memoize\");\n// Annotate the CommonJS export names for ESM import in node:\n\n0 && (module.exports = {\n CredentialsProviderError,\n ProviderError,\n TokenProviderError,\n chain,\n fromStatic,\n memoize\n});\n\n","var __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/index.ts\nvar src_exports = {};\n__export(src_exports, {\n Field: () => Field,\n Fields: () => Fields,\n HttpRequest: () => HttpRequest,\n HttpResponse: () => HttpResponse,\n IHttpRequest: () => import_types.HttpRequest,\n getHttpHandlerExtensionConfiguration: () => getHttpHandlerExtensionConfiguration,\n isValidHostname: () => isValidHostname,\n resolveHttpHandlerRuntimeConfig: () => resolveHttpHandlerRuntimeConfig\n});\nmodule.exports = __toCommonJS(src_exports);\n\n// src/extensions/httpExtensionConfiguration.ts\nvar getHttpHandlerExtensionConfiguration = /* @__PURE__ */ __name((runtimeConfig) => {\n let httpHandler = runtimeConfig.httpHandler;\n return {\n setHttpHandler(handler) {\n httpHandler = handler;\n },\n httpHandler() {\n return httpHandler;\n },\n updateHttpClientConfig(key, value) {\n httpHandler.updateHttpClientConfig(key, value);\n },\n httpHandlerConfigs() {\n return httpHandler.httpHandlerConfigs();\n }\n };\n}, \"getHttpHandlerExtensionConfiguration\");\nvar resolveHttpHandlerRuntimeConfig = /* @__PURE__ */ __name((httpHandlerExtensionConfiguration) => {\n return {\n httpHandler: httpHandlerExtensionConfiguration.httpHandler()\n };\n}, \"resolveHttpHandlerRuntimeConfig\");\n\n// src/Field.ts\nvar import_types = require(\"@smithy/types\");\nvar _Field = class _Field {\n constructor({ name, kind = import_types.FieldPosition.HEADER, values = [] }) {\n this.name = name;\n this.kind = kind;\n this.values = values;\n }\n /**\n * Appends a value to the field.\n *\n * @param value The value to append.\n */\n add(value) {\n this.values.push(value);\n }\n /**\n * Overwrite existing field values.\n *\n * @param values The new field values.\n */\n set(values) {\n this.values = values;\n }\n /**\n * Remove all matching entries from list.\n *\n * @param value Value to remove.\n */\n remove(value) {\n this.values = this.values.filter((v) => v !== value);\n }\n /**\n * Get comma-delimited string.\n *\n * @returns String representation of {@link Field}.\n */\n toString() {\n return this.values.map((v) => v.includes(\",\") || v.includes(\" \") ? `\"${v}\"` : v).join(\", \");\n }\n /**\n * Get string values as a list\n *\n * @returns Values in {@link Field} as a list.\n */\n get() {\n return this.values;\n }\n};\n__name(_Field, \"Field\");\nvar Field = _Field;\n\n// src/Fields.ts\nvar _Fields = class _Fields {\n constructor({ fields = [], encoding = \"utf-8\" }) {\n this.entries = {};\n fields.forEach(this.setField.bind(this));\n this.encoding = encoding;\n }\n /**\n * Set entry for a {@link Field} name. The `name`\n * attribute will be used to key the collection.\n *\n * @param field The {@link Field} to set.\n */\n setField(field) {\n this.entries[field.name.toLowerCase()] = field;\n }\n /**\n * Retrieve {@link Field} entry by name.\n *\n * @param name The name of the {@link Field} entry\n * to retrieve\n * @returns The {@link Field} if it exists.\n */\n getField(name) {\n return this.entries[name.toLowerCase()];\n }\n /**\n * Delete entry from collection.\n *\n * @param name Name of the entry to delete.\n */\n removeField(name) {\n delete this.entries[name.toLowerCase()];\n }\n /**\n * Helper function for retrieving specific types of fields.\n * Used to grab all headers or all trailers.\n *\n * @param kind {@link FieldPosition} of entries to retrieve.\n * @returns The {@link Field} entries with the specified\n * {@link FieldPosition}.\n */\n getByType(kind) {\n return Object.values(this.entries).filter((field) => field.kind === kind);\n }\n};\n__name(_Fields, \"Fields\");\nvar Fields = _Fields;\n\n// src/httpRequest.ts\n\nvar _HttpRequest = class _HttpRequest {\n constructor(options) {\n this.method = options.method || \"GET\";\n this.hostname = options.hostname || \"localhost\";\n this.port = options.port;\n this.query = options.query || {};\n this.headers = options.headers || {};\n this.body = options.body;\n this.protocol = options.protocol ? options.protocol.slice(-1) !== \":\" ? `${options.protocol}:` : options.protocol : \"https:\";\n this.path = options.path ? options.path.charAt(0) !== \"/\" ? `/${options.path}` : options.path : \"/\";\n this.username = options.username;\n this.password = options.password;\n this.fragment = options.fragment;\n }\n /**\n * Note: this does not deep-clone the body.\n */\n static clone(request) {\n const cloned = new _HttpRequest({\n ...request,\n headers: { ...request.headers }\n });\n if (cloned.query) {\n cloned.query = cloneQuery(cloned.query);\n }\n return cloned;\n }\n /**\n * This method only actually asserts that request is the interface {@link IHttpRequest},\n * and not necessarily this concrete class. Left in place for API stability.\n *\n * Do not call instance methods on the input of this function, and\n * do not assume it has the HttpRequest prototype.\n */\n static isInstance(request) {\n if (!request) {\n return false;\n }\n const req = request;\n return \"method\" in req && \"protocol\" in req && \"hostname\" in req && \"path\" in req && typeof req[\"query\"] === \"object\" && typeof req[\"headers\"] === \"object\";\n }\n /**\n * @deprecated use static HttpRequest.clone(request) instead. It's not safe to call\n * this method because {@link HttpRequest.isInstance} incorrectly\n * asserts that IHttpRequest (interface) objects are of type HttpRequest (class).\n */\n clone() {\n return _HttpRequest.clone(this);\n }\n};\n__name(_HttpRequest, \"HttpRequest\");\nvar HttpRequest = _HttpRequest;\nfunction cloneQuery(query) {\n return Object.keys(query).reduce((carry, paramName) => {\n const param = query[paramName];\n return {\n ...carry,\n [paramName]: Array.isArray(param) ? [...param] : param\n };\n }, {});\n}\n__name(cloneQuery, \"cloneQuery\");\n\n// src/httpResponse.ts\nvar _HttpResponse = class _HttpResponse {\n constructor(options) {\n this.statusCode = options.statusCode;\n this.reason = options.reason;\n this.headers = options.headers || {};\n this.body = options.body;\n }\n static isInstance(response) {\n if (!response)\n return false;\n const resp = response;\n return typeof resp.statusCode === \"number\" && typeof resp.headers === \"object\";\n }\n};\n__name(_HttpResponse, \"HttpResponse\");\nvar HttpResponse = _HttpResponse;\n\n// src/isValidHostname.ts\nfunction isValidHostname(hostname) {\n const hostPattern = /^[a-z0-9][a-z0-9\\.\\-]*[a-z0-9]$/;\n return hostPattern.test(hostname);\n}\n__name(isValidHostname, \"isValidHostname\");\n// Annotate the CommonJS export names for ESM import in node:\n\n0 && (module.exports = {\n getHttpHandlerExtensionConfiguration,\n resolveHttpHandlerRuntimeConfig,\n Field,\n Fields,\n HttpRequest,\n HttpResponse,\n isValidHostname\n});\n\n","var __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/index.ts\nvar src_exports = {};\n__export(src_exports, {\n AlgorithmId: () => AlgorithmId,\n EndpointURLScheme: () => EndpointURLScheme,\n FieldPosition: () => FieldPosition,\n HttpApiKeyAuthLocation: () => HttpApiKeyAuthLocation,\n HttpAuthLocation: () => HttpAuthLocation,\n IniSectionType: () => IniSectionType,\n RequestHandlerProtocol: () => RequestHandlerProtocol,\n SMITHY_CONTEXT_KEY: () => SMITHY_CONTEXT_KEY,\n getDefaultClientConfiguration: () => getDefaultClientConfiguration,\n resolveDefaultRuntimeConfig: () => resolveDefaultRuntimeConfig\n});\nmodule.exports = __toCommonJS(src_exports);\n\n// src/auth/auth.ts\nvar HttpAuthLocation = /* @__PURE__ */ ((HttpAuthLocation2) => {\n HttpAuthLocation2[\"HEADER\"] = \"header\";\n HttpAuthLocation2[\"QUERY\"] = \"query\";\n return HttpAuthLocation2;\n})(HttpAuthLocation || {});\n\n// src/auth/HttpApiKeyAuth.ts\nvar HttpApiKeyAuthLocation = /* @__PURE__ */ ((HttpApiKeyAuthLocation2) => {\n HttpApiKeyAuthLocation2[\"HEADER\"] = \"header\";\n HttpApiKeyAuthLocation2[\"QUERY\"] = \"query\";\n return HttpApiKeyAuthLocation2;\n})(HttpApiKeyAuthLocation || {});\n\n// src/endpoint.ts\nvar EndpointURLScheme = /* @__PURE__ */ ((EndpointURLScheme2) => {\n EndpointURLScheme2[\"HTTP\"] = \"http\";\n EndpointURLScheme2[\"HTTPS\"] = \"https\";\n return EndpointURLScheme2;\n})(EndpointURLScheme || {});\n\n// src/extensions/checksum.ts\nvar AlgorithmId = /* @__PURE__ */ ((AlgorithmId2) => {\n AlgorithmId2[\"MD5\"] = \"md5\";\n AlgorithmId2[\"CRC32\"] = \"crc32\";\n AlgorithmId2[\"CRC32C\"] = \"crc32c\";\n AlgorithmId2[\"SHA1\"] = \"sha1\";\n AlgorithmId2[\"SHA256\"] = \"sha256\";\n return AlgorithmId2;\n})(AlgorithmId || {});\nvar getChecksumConfiguration = /* @__PURE__ */ __name((runtimeConfig) => {\n const checksumAlgorithms = [];\n if (runtimeConfig.sha256 !== void 0) {\n checksumAlgorithms.push({\n algorithmId: () => \"sha256\" /* SHA256 */,\n checksumConstructor: () => runtimeConfig.sha256\n });\n }\n if (runtimeConfig.md5 != void 0) {\n checksumAlgorithms.push({\n algorithmId: () => \"md5\" /* MD5 */,\n checksumConstructor: () => runtimeConfig.md5\n });\n }\n return {\n _checksumAlgorithms: checksumAlgorithms,\n addChecksumAlgorithm(algo) {\n this._checksumAlgorithms.push(algo);\n },\n checksumAlgorithms() {\n return this._checksumAlgorithms;\n }\n };\n}, \"getChecksumConfiguration\");\nvar resolveChecksumRuntimeConfig = /* @__PURE__ */ __name((clientConfig) => {\n const runtimeConfig = {};\n clientConfig.checksumAlgorithms().forEach((checksumAlgorithm) => {\n runtimeConfig[checksumAlgorithm.algorithmId()] = checksumAlgorithm.checksumConstructor();\n });\n return runtimeConfig;\n}, \"resolveChecksumRuntimeConfig\");\n\n// src/extensions/defaultClientConfiguration.ts\nvar getDefaultClientConfiguration = /* @__PURE__ */ __name((runtimeConfig) => {\n return {\n ...getChecksumConfiguration(runtimeConfig)\n };\n}, \"getDefaultClientConfiguration\");\nvar resolveDefaultRuntimeConfig = /* @__PURE__ */ __name((config) => {\n return {\n ...resolveChecksumRuntimeConfig(config)\n };\n}, \"resolveDefaultRuntimeConfig\");\n\n// src/http.ts\nvar FieldPosition = /* @__PURE__ */ ((FieldPosition2) => {\n FieldPosition2[FieldPosition2[\"HEADER\"] = 0] = \"HEADER\";\n FieldPosition2[FieldPosition2[\"TRAILER\"] = 1] = \"TRAILER\";\n return FieldPosition2;\n})(FieldPosition || {});\n\n// src/middleware.ts\nvar SMITHY_CONTEXT_KEY = \"__smithy_context\";\n\n// src/profile.ts\nvar IniSectionType = /* @__PURE__ */ ((IniSectionType2) => {\n IniSectionType2[\"PROFILE\"] = \"profile\";\n IniSectionType2[\"SSO_SESSION\"] = \"sso-session\";\n IniSectionType2[\"SERVICES\"] = \"services\";\n return IniSectionType2;\n})(IniSectionType || {});\n\n// src/transfer.ts\nvar RequestHandlerProtocol = /* @__PURE__ */ ((RequestHandlerProtocol2) => {\n RequestHandlerProtocol2[\"HTTP_0_9\"] = \"http/0.9\";\n RequestHandlerProtocol2[\"HTTP_1_0\"] = \"http/1.0\";\n RequestHandlerProtocol2[\"TDS_8_0\"] = \"tds/8.0\";\n return RequestHandlerProtocol2;\n})(RequestHandlerProtocol || {});\n// Annotate the CommonJS export names for ESM import in node:\n\n0 && (module.exports = {\n HttpAuthLocation,\n HttpApiKeyAuthLocation,\n EndpointURLScheme,\n AlgorithmId,\n getDefaultClientConfiguration,\n resolveDefaultRuntimeConfig,\n FieldPosition,\n SMITHY_CONTEXT_KEY,\n IniSectionType,\n RequestHandlerProtocol\n});\n\n","var __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/index.ts\nvar src_exports = {};\n__export(src_exports, {\n buildQueryString: () => buildQueryString\n});\nmodule.exports = __toCommonJS(src_exports);\nvar import_util_uri_escape = require(\"@smithy/util-uri-escape\");\nfunction buildQueryString(query) {\n const parts = [];\n for (let key of Object.keys(query).sort()) {\n const value = query[key];\n key = (0, import_util_uri_escape.escapeUri)(key);\n if (Array.isArray(value)) {\n for (let i = 0, iLen = value.length; i < iLen; i++) {\n parts.push(`${key}=${(0, import_util_uri_escape.escapeUri)(value[i])}`);\n }\n } else {\n let qsEntry = key;\n if (value || typeof value === \"string\") {\n qsEntry += `=${(0, import_util_uri_escape.escapeUri)(value)}`;\n }\n parts.push(qsEntry);\n }\n }\n return parts.join(\"&\");\n}\n__name(buildQueryString, \"buildQueryString\");\n// Annotate the CommonJS export names for ESM import in node:\n\n0 && (module.exports = {\n buildQueryString\n});\n\n","var __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/index.ts\nvar src_exports = {};\n__export(src_exports, {\n parseQueryString: () => parseQueryString\n});\nmodule.exports = __toCommonJS(src_exports);\nfunction parseQueryString(querystring) {\n const query = {};\n querystring = querystring.replace(/^\\?/, \"\");\n if (querystring) {\n for (const pair of querystring.split(\"&\")) {\n let [key, value = null] = pair.split(\"=\");\n key = decodeURIComponent(key);\n if (value) {\n value = decodeURIComponent(value);\n }\n if (!(key in query)) {\n query[key] = value;\n } else if (Array.isArray(query[key])) {\n query[key].push(value);\n } else {\n query[key] = [query[key], value];\n }\n }\n }\n return query;\n}\n__name(parseQueryString, \"parseQueryString\");\n// Annotate the CommonJS export names for ESM import in node:\n\n0 && (module.exports = {\n parseQueryString\n});\n\n","var __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/index.ts\nvar src_exports = {};\n__export(src_exports, {\n isClockSkewCorrectedError: () => isClockSkewCorrectedError,\n isClockSkewError: () => isClockSkewError,\n isRetryableByTrait: () => isRetryableByTrait,\n isServerError: () => isServerError,\n isThrottlingError: () => isThrottlingError,\n isTransientError: () => isTransientError\n});\nmodule.exports = __toCommonJS(src_exports);\n\n// src/constants.ts\nvar CLOCK_SKEW_ERROR_CODES = [\n \"AuthFailure\",\n \"InvalidSignatureException\",\n \"RequestExpired\",\n \"RequestInTheFuture\",\n \"RequestTimeTooSkewed\",\n \"SignatureDoesNotMatch\"\n];\nvar THROTTLING_ERROR_CODES = [\n \"BandwidthLimitExceeded\",\n \"EC2ThrottledException\",\n \"LimitExceededException\",\n \"PriorRequestNotComplete\",\n \"ProvisionedThroughputExceededException\",\n \"RequestLimitExceeded\",\n \"RequestThrottled\",\n \"RequestThrottledException\",\n \"SlowDown\",\n \"ThrottledException\",\n \"Throttling\",\n \"ThrottlingException\",\n \"TooManyRequestsException\",\n \"TransactionInProgressException\"\n // DynamoDB\n];\nvar TRANSIENT_ERROR_CODES = [\"TimeoutError\", \"RequestTimeout\", \"RequestTimeoutException\"];\nvar TRANSIENT_ERROR_STATUS_CODES = [500, 502, 503, 504];\nvar NODEJS_TIMEOUT_ERROR_CODES = [\"ECONNRESET\", \"ECONNREFUSED\", \"EPIPE\", \"ETIMEDOUT\"];\n\n// src/index.ts\nvar isRetryableByTrait = /* @__PURE__ */ __name((error) => error.$retryable !== void 0, \"isRetryableByTrait\");\nvar isClockSkewError = /* @__PURE__ */ __name((error) => CLOCK_SKEW_ERROR_CODES.includes(error.name), \"isClockSkewError\");\nvar isClockSkewCorrectedError = /* @__PURE__ */ __name((error) => {\n var _a;\n return (_a = error.$metadata) == null ? void 0 : _a.clockSkewCorrected;\n}, \"isClockSkewCorrectedError\");\nvar isThrottlingError = /* @__PURE__ */ __name((error) => {\n var _a, _b;\n return ((_a = error.$metadata) == null ? void 0 : _a.httpStatusCode) === 429 || THROTTLING_ERROR_CODES.includes(error.name) || ((_b = error.$retryable) == null ? void 0 : _b.throttling) == true;\n}, \"isThrottlingError\");\nvar isTransientError = /* @__PURE__ */ __name((error) => {\n var _a;\n return isClockSkewCorrectedError(error) || TRANSIENT_ERROR_CODES.includes(error.name) || NODEJS_TIMEOUT_ERROR_CODES.includes((error == null ? void 0 : error.code) || \"\") || TRANSIENT_ERROR_STATUS_CODES.includes(((_a = error.$metadata) == null ? void 0 : _a.httpStatusCode) || 0);\n}, \"isTransientError\");\nvar isServerError = /* @__PURE__ */ __name((error) => {\n var _a;\n if (((_a = error.$metadata) == null ? void 0 : _a.httpStatusCode) !== void 0) {\n const statusCode = error.$metadata.httpStatusCode;\n if (500 <= statusCode && statusCode <= 599 && !isTransientError(error)) {\n return true;\n }\n return false;\n }\n return false;\n}, \"isServerError\");\n// Annotate the CommonJS export names for ESM import in node:\n\n0 && (module.exports = {\n isRetryableByTrait,\n isClockSkewError,\n isClockSkewCorrectedError,\n isThrottlingError,\n isTransientError,\n isServerError\n});\n\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getHomeDir = void 0;\nconst os_1 = require(\"os\");\nconst path_1 = require(\"path\");\nconst homeDirCache = {};\nconst getHomeDirCacheKey = () => {\n if (process && process.geteuid) {\n return `${process.geteuid()}`;\n }\n return \"DEFAULT\";\n};\nconst getHomeDir = () => {\n const { HOME, USERPROFILE, HOMEPATH, HOMEDRIVE = `C:${path_1.sep}` } = process.env;\n if (HOME)\n return HOME;\n if (USERPROFILE)\n return USERPROFILE;\n if (HOMEPATH)\n return `${HOMEDRIVE}${HOMEPATH}`;\n const homeDirCacheKey = getHomeDirCacheKey();\n if (!homeDirCache[homeDirCacheKey])\n homeDirCache[homeDirCacheKey] = (0, os_1.homedir)();\n return homeDirCache[homeDirCacheKey];\n};\nexports.getHomeDir = getHomeDir;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getSSOTokenFilepath = void 0;\nconst crypto_1 = require(\"crypto\");\nconst path_1 = require(\"path\");\nconst getHomeDir_1 = require(\"./getHomeDir\");\nconst getSSOTokenFilepath = (id) => {\n const hasher = (0, crypto_1.createHash)(\"sha1\");\n const cacheName = hasher.update(id).digest(\"hex\");\n return (0, path_1.join)((0, getHomeDir_1.getHomeDir)(), \".aws\", \"sso\", \"cache\", `${cacheName}.json`);\n};\nexports.getSSOTokenFilepath = getSSOTokenFilepath;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getSSOTokenFromFile = void 0;\nconst fs_1 = require(\"fs\");\nconst getSSOTokenFilepath_1 = require(\"./getSSOTokenFilepath\");\nconst { readFile } = fs_1.promises;\nconst getSSOTokenFromFile = async (id) => {\n const ssoTokenFilepath = (0, getSSOTokenFilepath_1.getSSOTokenFilepath)(id);\n const ssoTokenText = await readFile(ssoTokenFilepath, \"utf8\");\n return JSON.parse(ssoTokenText);\n};\nexports.getSSOTokenFromFile = getSSOTokenFromFile;\n","var __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, \"default\"), secondTarget && __copyProps(secondTarget, mod, \"default\"));\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/index.ts\nvar src_exports = {};\n__export(src_exports, {\n CONFIG_PREFIX_SEPARATOR: () => CONFIG_PREFIX_SEPARATOR,\n DEFAULT_PROFILE: () => DEFAULT_PROFILE,\n ENV_PROFILE: () => ENV_PROFILE,\n getProfileName: () => getProfileName,\n loadSharedConfigFiles: () => loadSharedConfigFiles,\n loadSsoSessionData: () => loadSsoSessionData,\n parseKnownFiles: () => parseKnownFiles\n});\nmodule.exports = __toCommonJS(src_exports);\n__reExport(src_exports, require(\"././getHomeDir\"), module.exports);\n\n// src/getProfileName.ts\nvar ENV_PROFILE = \"AWS_PROFILE\";\nvar DEFAULT_PROFILE = \"default\";\nvar getProfileName = /* @__PURE__ */ __name((init) => init.profile || process.env[ENV_PROFILE] || DEFAULT_PROFILE, \"getProfileName\");\n\n// src/index.ts\n__reExport(src_exports, require(\"././getSSOTokenFilepath\"), module.exports);\n__reExport(src_exports, require(\"././getSSOTokenFromFile\"), module.exports);\n\n// src/loadSharedConfigFiles.ts\n\n\n// src/getConfigData.ts\nvar import_types = require(\"@smithy/types\");\nvar getConfigData = /* @__PURE__ */ __name((data) => Object.entries(data).filter(([key]) => {\n const indexOfSeparator = key.indexOf(CONFIG_PREFIX_SEPARATOR);\n if (indexOfSeparator === -1) {\n return false;\n }\n return Object.values(import_types.IniSectionType).includes(key.substring(0, indexOfSeparator));\n}).reduce(\n (acc, [key, value]) => {\n const indexOfSeparator = key.indexOf(CONFIG_PREFIX_SEPARATOR);\n const updatedKey = key.substring(0, indexOfSeparator) === import_types.IniSectionType.PROFILE ? key.substring(indexOfSeparator + 1) : key;\n acc[updatedKey] = value;\n return acc;\n },\n {\n // Populate default profile, if present.\n ...data.default && { default: data.default }\n }\n), \"getConfigData\");\n\n// src/getConfigFilepath.ts\nvar import_path = require(\"path\");\nvar import_getHomeDir = require(\"././getHomeDir\");\nvar ENV_CONFIG_PATH = \"AWS_CONFIG_FILE\";\nvar getConfigFilepath = /* @__PURE__ */ __name(() => process.env[ENV_CONFIG_PATH] || (0, import_path.join)((0, import_getHomeDir.getHomeDir)(), \".aws\", \"config\"), \"getConfigFilepath\");\n\n// src/getCredentialsFilepath.ts\n\nvar import_getHomeDir2 = require(\"././getHomeDir\");\nvar ENV_CREDENTIALS_PATH = \"AWS_SHARED_CREDENTIALS_FILE\";\nvar getCredentialsFilepath = /* @__PURE__ */ __name(() => process.env[ENV_CREDENTIALS_PATH] || (0, import_path.join)((0, import_getHomeDir2.getHomeDir)(), \".aws\", \"credentials\"), \"getCredentialsFilepath\");\n\n// src/loadSharedConfigFiles.ts\nvar import_getHomeDir3 = require(\"././getHomeDir\");\n\n// src/parseIni.ts\n\nvar prefixKeyRegex = /^([\\w-]+)\\s([\"'])?([\\w-@\\+\\.%:/]+)\\2$/;\nvar profileNameBlockList = [\"__proto__\", \"profile __proto__\"];\nvar parseIni = /* @__PURE__ */ __name((iniData) => {\n const map = {};\n let currentSection;\n let currentSubSection;\n for (const iniLine of iniData.split(/\\r?\\n/)) {\n const trimmedLine = iniLine.split(/(^|\\s)[;#]/)[0].trim();\n const isSection = trimmedLine[0] === \"[\" && trimmedLine[trimmedLine.length - 1] === \"]\";\n if (isSection) {\n currentSection = void 0;\n currentSubSection = void 0;\n const sectionName = trimmedLine.substring(1, trimmedLine.length - 1);\n const matches = prefixKeyRegex.exec(sectionName);\n if (matches) {\n const [, prefix, , name] = matches;\n if (Object.values(import_types.IniSectionType).includes(prefix)) {\n currentSection = [prefix, name].join(CONFIG_PREFIX_SEPARATOR);\n }\n } else {\n currentSection = sectionName;\n }\n if (profileNameBlockList.includes(sectionName)) {\n throw new Error(`Found invalid profile name \"${sectionName}\"`);\n }\n } else if (currentSection) {\n const indexOfEqualsSign = trimmedLine.indexOf(\"=\");\n if (![0, -1].includes(indexOfEqualsSign)) {\n const [name, value] = [\n trimmedLine.substring(0, indexOfEqualsSign).trim(),\n trimmedLine.substring(indexOfEqualsSign + 1).trim()\n ];\n if (value === \"\") {\n currentSubSection = name;\n } else {\n if (currentSubSection && iniLine.trimStart() === iniLine) {\n currentSubSection = void 0;\n }\n map[currentSection] = map[currentSection] || {};\n const key = currentSubSection ? [currentSubSection, name].join(CONFIG_PREFIX_SEPARATOR) : name;\n map[currentSection][key] = value;\n }\n }\n }\n }\n return map;\n}, \"parseIni\");\n\n// src/loadSharedConfigFiles.ts\nvar import_slurpFile = require(\"././slurpFile\");\nvar swallowError = /* @__PURE__ */ __name(() => ({}), \"swallowError\");\nvar CONFIG_PREFIX_SEPARATOR = \".\";\nvar loadSharedConfigFiles = /* @__PURE__ */ __name(async (init = {}) => {\n const { filepath = getCredentialsFilepath(), configFilepath = getConfigFilepath() } = init;\n const homeDir = (0, import_getHomeDir3.getHomeDir)();\n const relativeHomeDirPrefix = \"~/\";\n let resolvedFilepath = filepath;\n if (filepath.startsWith(relativeHomeDirPrefix)) {\n resolvedFilepath = (0, import_path.join)(homeDir, filepath.slice(2));\n }\n let resolvedConfigFilepath = configFilepath;\n if (configFilepath.startsWith(relativeHomeDirPrefix)) {\n resolvedConfigFilepath = (0, import_path.join)(homeDir, configFilepath.slice(2));\n }\n const parsedFiles = await Promise.all([\n (0, import_slurpFile.slurpFile)(resolvedConfigFilepath, {\n ignoreCache: init.ignoreCache\n }).then(parseIni).then(getConfigData).catch(swallowError),\n (0, import_slurpFile.slurpFile)(resolvedFilepath, {\n ignoreCache: init.ignoreCache\n }).then(parseIni).catch(swallowError)\n ]);\n return {\n configFile: parsedFiles[0],\n credentialsFile: parsedFiles[1]\n };\n}, \"loadSharedConfigFiles\");\n\n// src/getSsoSessionData.ts\n\nvar getSsoSessionData = /* @__PURE__ */ __name((data) => Object.entries(data).filter(([key]) => key.startsWith(import_types.IniSectionType.SSO_SESSION + CONFIG_PREFIX_SEPARATOR)).reduce((acc, [key, value]) => ({ ...acc, [key.substring(key.indexOf(CONFIG_PREFIX_SEPARATOR) + 1)]: value }), {}), \"getSsoSessionData\");\n\n// src/loadSsoSessionData.ts\nvar import_slurpFile2 = require(\"././slurpFile\");\nvar swallowError2 = /* @__PURE__ */ __name(() => ({}), \"swallowError\");\nvar loadSsoSessionData = /* @__PURE__ */ __name(async (init = {}) => (0, import_slurpFile2.slurpFile)(init.configFilepath ?? getConfigFilepath()).then(parseIni).then(getSsoSessionData).catch(swallowError2), \"loadSsoSessionData\");\n\n// src/mergeConfigFiles.ts\nvar mergeConfigFiles = /* @__PURE__ */ __name((...files) => {\n const merged = {};\n for (const file of files) {\n for (const [key, values] of Object.entries(file)) {\n if (merged[key] !== void 0) {\n Object.assign(merged[key], values);\n } else {\n merged[key] = values;\n }\n }\n }\n return merged;\n}, \"mergeConfigFiles\");\n\n// src/parseKnownFiles.ts\nvar parseKnownFiles = /* @__PURE__ */ __name(async (init) => {\n const parsedFiles = await loadSharedConfigFiles(init);\n return mergeConfigFiles(parsedFiles.configFile, parsedFiles.credentialsFile);\n}, \"parseKnownFiles\");\n// Annotate the CommonJS export names for ESM import in node:\n\n0 && (module.exports = {\n getHomeDir,\n ENV_PROFILE,\n DEFAULT_PROFILE,\n getProfileName,\n getSSOTokenFilepath,\n getSSOTokenFromFile,\n CONFIG_PREFIX_SEPARATOR,\n loadSharedConfigFiles,\n loadSsoSessionData,\n parseKnownFiles\n});\n\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.slurpFile = void 0;\nconst fs_1 = require(\"fs\");\nconst { readFile } = fs_1.promises;\nconst filePromisesHash = {};\nconst slurpFile = (path, options) => {\n if (!filePromisesHash[path] || (options === null || options === void 0 ? void 0 : options.ignoreCache)) {\n filePromisesHash[path] = readFile(path, \"utf8\");\n }\n return filePromisesHash[path];\n};\nexports.slurpFile = slurpFile;\n","var __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/index.ts\nvar src_exports = {};\n__export(src_exports, {\n AlgorithmId: () => AlgorithmId,\n EndpointURLScheme: () => EndpointURLScheme,\n FieldPosition: () => FieldPosition,\n HttpApiKeyAuthLocation: () => HttpApiKeyAuthLocation,\n HttpAuthLocation: () => HttpAuthLocation,\n IniSectionType: () => IniSectionType,\n RequestHandlerProtocol: () => RequestHandlerProtocol,\n SMITHY_CONTEXT_KEY: () => SMITHY_CONTEXT_KEY,\n getDefaultClientConfiguration: () => getDefaultClientConfiguration,\n resolveDefaultRuntimeConfig: () => resolveDefaultRuntimeConfig\n});\nmodule.exports = __toCommonJS(src_exports);\n\n// src/auth/auth.ts\nvar HttpAuthLocation = /* @__PURE__ */ ((HttpAuthLocation2) => {\n HttpAuthLocation2[\"HEADER\"] = \"header\";\n HttpAuthLocation2[\"QUERY\"] = \"query\";\n return HttpAuthLocation2;\n})(HttpAuthLocation || {});\n\n// src/auth/HttpApiKeyAuth.ts\nvar HttpApiKeyAuthLocation = /* @__PURE__ */ ((HttpApiKeyAuthLocation2) => {\n HttpApiKeyAuthLocation2[\"HEADER\"] = \"header\";\n HttpApiKeyAuthLocation2[\"QUERY\"] = \"query\";\n return HttpApiKeyAuthLocation2;\n})(HttpApiKeyAuthLocation || {});\n\n// src/endpoint.ts\nvar EndpointURLScheme = /* @__PURE__ */ ((EndpointURLScheme2) => {\n EndpointURLScheme2[\"HTTP\"] = \"http\";\n EndpointURLScheme2[\"HTTPS\"] = \"https\";\n return EndpointURLScheme2;\n})(EndpointURLScheme || {});\n\n// src/extensions/checksum.ts\nvar AlgorithmId = /* @__PURE__ */ ((AlgorithmId2) => {\n AlgorithmId2[\"MD5\"] = \"md5\";\n AlgorithmId2[\"CRC32\"] = \"crc32\";\n AlgorithmId2[\"CRC32C\"] = \"crc32c\";\n AlgorithmId2[\"SHA1\"] = \"sha1\";\n AlgorithmId2[\"SHA256\"] = \"sha256\";\n return AlgorithmId2;\n})(AlgorithmId || {});\nvar getChecksumConfiguration = /* @__PURE__ */ __name((runtimeConfig) => {\n const checksumAlgorithms = [];\n if (runtimeConfig.sha256 !== void 0) {\n checksumAlgorithms.push({\n algorithmId: () => \"sha256\" /* SHA256 */,\n checksumConstructor: () => runtimeConfig.sha256\n });\n }\n if (runtimeConfig.md5 != void 0) {\n checksumAlgorithms.push({\n algorithmId: () => \"md5\" /* MD5 */,\n checksumConstructor: () => runtimeConfig.md5\n });\n }\n return {\n _checksumAlgorithms: checksumAlgorithms,\n addChecksumAlgorithm(algo) {\n this._checksumAlgorithms.push(algo);\n },\n checksumAlgorithms() {\n return this._checksumAlgorithms;\n }\n };\n}, \"getChecksumConfiguration\");\nvar resolveChecksumRuntimeConfig = /* @__PURE__ */ __name((clientConfig) => {\n const runtimeConfig = {};\n clientConfig.checksumAlgorithms().forEach((checksumAlgorithm) => {\n runtimeConfig[checksumAlgorithm.algorithmId()] = checksumAlgorithm.checksumConstructor();\n });\n return runtimeConfig;\n}, \"resolveChecksumRuntimeConfig\");\n\n// src/extensions/defaultClientConfiguration.ts\nvar getDefaultClientConfiguration = /* @__PURE__ */ __name((runtimeConfig) => {\n return {\n ...getChecksumConfiguration(runtimeConfig)\n };\n}, \"getDefaultClientConfiguration\");\nvar resolveDefaultRuntimeConfig = /* @__PURE__ */ __name((config) => {\n return {\n ...resolveChecksumRuntimeConfig(config)\n };\n}, \"resolveDefaultRuntimeConfig\");\n\n// src/http.ts\nvar FieldPosition = /* @__PURE__ */ ((FieldPosition2) => {\n FieldPosition2[FieldPosition2[\"HEADER\"] = 0] = \"HEADER\";\n FieldPosition2[FieldPosition2[\"TRAILER\"] = 1] = \"TRAILER\";\n return FieldPosition2;\n})(FieldPosition || {});\n\n// src/middleware.ts\nvar SMITHY_CONTEXT_KEY = \"__smithy_context\";\n\n// src/profile.ts\nvar IniSectionType = /* @__PURE__ */ ((IniSectionType2) => {\n IniSectionType2[\"PROFILE\"] = \"profile\";\n IniSectionType2[\"SSO_SESSION\"] = \"sso-session\";\n IniSectionType2[\"SERVICES\"] = \"services\";\n return IniSectionType2;\n})(IniSectionType || {});\n\n// src/transfer.ts\nvar RequestHandlerProtocol = /* @__PURE__ */ ((RequestHandlerProtocol2) => {\n RequestHandlerProtocol2[\"HTTP_0_9\"] = \"http/0.9\";\n RequestHandlerProtocol2[\"HTTP_1_0\"] = \"http/1.0\";\n RequestHandlerProtocol2[\"TDS_8_0\"] = \"tds/8.0\";\n return RequestHandlerProtocol2;\n})(RequestHandlerProtocol || {});\n// Annotate the CommonJS export names for ESM import in node:\n\n0 && (module.exports = {\n HttpAuthLocation,\n HttpApiKeyAuthLocation,\n EndpointURLScheme,\n AlgorithmId,\n getDefaultClientConfiguration,\n resolveDefaultRuntimeConfig,\n FieldPosition,\n SMITHY_CONTEXT_KEY,\n IniSectionType,\n RequestHandlerProtocol\n});\n\n","var __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/index.ts\nvar src_exports = {};\n__export(src_exports, {\n SignatureV4: () => SignatureV4,\n clearCredentialCache: () => clearCredentialCache,\n createScope: () => createScope,\n getCanonicalHeaders: () => getCanonicalHeaders,\n getCanonicalQuery: () => getCanonicalQuery,\n getPayloadHash: () => getPayloadHash,\n getSigningKey: () => getSigningKey,\n moveHeadersToQuery: () => moveHeadersToQuery,\n prepareRequest: () => prepareRequest\n});\nmodule.exports = __toCommonJS(src_exports);\n\n// src/SignatureV4.ts\n\nvar import_util_middleware = require(\"@smithy/util-middleware\");\n\nvar import_util_utf84 = require(\"@smithy/util-utf8\");\n\n// src/constants.ts\nvar ALGORITHM_QUERY_PARAM = \"X-Amz-Algorithm\";\nvar CREDENTIAL_QUERY_PARAM = \"X-Amz-Credential\";\nvar AMZ_DATE_QUERY_PARAM = \"X-Amz-Date\";\nvar SIGNED_HEADERS_QUERY_PARAM = \"X-Amz-SignedHeaders\";\nvar EXPIRES_QUERY_PARAM = \"X-Amz-Expires\";\nvar SIGNATURE_QUERY_PARAM = \"X-Amz-Signature\";\nvar TOKEN_QUERY_PARAM = \"X-Amz-Security-Token\";\nvar AUTH_HEADER = \"authorization\";\nvar AMZ_DATE_HEADER = AMZ_DATE_QUERY_PARAM.toLowerCase();\nvar DATE_HEADER = \"date\";\nvar GENERATED_HEADERS = [AUTH_HEADER, AMZ_DATE_HEADER, DATE_HEADER];\nvar SIGNATURE_HEADER = SIGNATURE_QUERY_PARAM.toLowerCase();\nvar SHA256_HEADER = \"x-amz-content-sha256\";\nvar TOKEN_HEADER = TOKEN_QUERY_PARAM.toLowerCase();\nvar ALWAYS_UNSIGNABLE_HEADERS = {\n authorization: true,\n \"cache-control\": true,\n connection: true,\n expect: true,\n from: true,\n \"keep-alive\": true,\n \"max-forwards\": true,\n pragma: true,\n referer: true,\n te: true,\n trailer: true,\n \"transfer-encoding\": true,\n upgrade: true,\n \"user-agent\": true,\n \"x-amzn-trace-id\": true\n};\nvar PROXY_HEADER_PATTERN = /^proxy-/;\nvar SEC_HEADER_PATTERN = /^sec-/;\nvar ALGORITHM_IDENTIFIER = \"AWS4-HMAC-SHA256\";\nvar EVENT_ALGORITHM_IDENTIFIER = \"AWS4-HMAC-SHA256-PAYLOAD\";\nvar UNSIGNED_PAYLOAD = \"UNSIGNED-PAYLOAD\";\nvar MAX_CACHE_SIZE = 50;\nvar KEY_TYPE_IDENTIFIER = \"aws4_request\";\nvar MAX_PRESIGNED_TTL = 60 * 60 * 24 * 7;\n\n// src/credentialDerivation.ts\nvar import_util_hex_encoding = require(\"@smithy/util-hex-encoding\");\nvar import_util_utf8 = require(\"@smithy/util-utf8\");\nvar signingKeyCache = {};\nvar cacheQueue = [];\nvar createScope = /* @__PURE__ */ __name((shortDate, region, service) => `${shortDate}/${region}/${service}/${KEY_TYPE_IDENTIFIER}`, \"createScope\");\nvar getSigningKey = /* @__PURE__ */ __name(async (sha256Constructor, credentials, shortDate, region, service) => {\n const credsHash = await hmac(sha256Constructor, credentials.secretAccessKey, credentials.accessKeyId);\n const cacheKey = `${shortDate}:${region}:${service}:${(0, import_util_hex_encoding.toHex)(credsHash)}:${credentials.sessionToken}`;\n if (cacheKey in signingKeyCache) {\n return signingKeyCache[cacheKey];\n }\n cacheQueue.push(cacheKey);\n while (cacheQueue.length > MAX_CACHE_SIZE) {\n delete signingKeyCache[cacheQueue.shift()];\n }\n let key = `AWS4${credentials.secretAccessKey}`;\n for (const signable of [shortDate, region, service, KEY_TYPE_IDENTIFIER]) {\n key = await hmac(sha256Constructor, key, signable);\n }\n return signingKeyCache[cacheKey] = key;\n}, \"getSigningKey\");\nvar clearCredentialCache = /* @__PURE__ */ __name(() => {\n cacheQueue.length = 0;\n Object.keys(signingKeyCache).forEach((cacheKey) => {\n delete signingKeyCache[cacheKey];\n });\n}, \"clearCredentialCache\");\nvar hmac = /* @__PURE__ */ __name((ctor, secret, data) => {\n const hash = new ctor(secret);\n hash.update((0, import_util_utf8.toUint8Array)(data));\n return hash.digest();\n}, \"hmac\");\n\n// src/getCanonicalHeaders.ts\nvar getCanonicalHeaders = /* @__PURE__ */ __name(({ headers }, unsignableHeaders, signableHeaders) => {\n const canonical = {};\n for (const headerName of Object.keys(headers).sort()) {\n if (headers[headerName] == void 0) {\n continue;\n }\n const canonicalHeaderName = headerName.toLowerCase();\n if (canonicalHeaderName in ALWAYS_UNSIGNABLE_HEADERS || (unsignableHeaders == null ? void 0 : unsignableHeaders.has(canonicalHeaderName)) || PROXY_HEADER_PATTERN.test(canonicalHeaderName) || SEC_HEADER_PATTERN.test(canonicalHeaderName)) {\n if (!signableHeaders || signableHeaders && !signableHeaders.has(canonicalHeaderName)) {\n continue;\n }\n }\n canonical[canonicalHeaderName] = headers[headerName].trim().replace(/\\s+/g, \" \");\n }\n return canonical;\n}, \"getCanonicalHeaders\");\n\n// src/getCanonicalQuery.ts\nvar import_util_uri_escape = require(\"@smithy/util-uri-escape\");\nvar getCanonicalQuery = /* @__PURE__ */ __name(({ query = {} }) => {\n const keys = [];\n const serialized = {};\n for (const key of Object.keys(query)) {\n if (key.toLowerCase() === SIGNATURE_HEADER) {\n continue;\n }\n const encodedKey = (0, import_util_uri_escape.escapeUri)(key);\n keys.push(encodedKey);\n const value = query[key];\n if (typeof value === \"string\") {\n serialized[encodedKey] = `${encodedKey}=${(0, import_util_uri_escape.escapeUri)(value)}`;\n } else if (Array.isArray(value)) {\n serialized[encodedKey] = value.slice(0).reduce((encoded, value2) => encoded.concat([`${encodedKey}=${(0, import_util_uri_escape.escapeUri)(value2)}`]), []).sort().join(\"&\");\n }\n }\n return keys.sort().map((key) => serialized[key]).filter((serialized2) => serialized2).join(\"&\");\n}, \"getCanonicalQuery\");\n\n// src/getPayloadHash.ts\nvar import_is_array_buffer = require(\"@smithy/is-array-buffer\");\n\nvar import_util_utf82 = require(\"@smithy/util-utf8\");\nvar getPayloadHash = /* @__PURE__ */ __name(async ({ headers, body }, hashConstructor) => {\n for (const headerName of Object.keys(headers)) {\n if (headerName.toLowerCase() === SHA256_HEADER) {\n return headers[headerName];\n }\n }\n if (body == void 0) {\n return \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\";\n } else if (typeof body === \"string\" || ArrayBuffer.isView(body) || (0, import_is_array_buffer.isArrayBuffer)(body)) {\n const hashCtor = new hashConstructor();\n hashCtor.update((0, import_util_utf82.toUint8Array)(body));\n return (0, import_util_hex_encoding.toHex)(await hashCtor.digest());\n }\n return UNSIGNED_PAYLOAD;\n}, \"getPayloadHash\");\n\n// src/HeaderFormatter.ts\n\nvar import_util_utf83 = require(\"@smithy/util-utf8\");\nvar _HeaderFormatter = class _HeaderFormatter {\n format(headers) {\n const chunks = [];\n for (const headerName of Object.keys(headers)) {\n const bytes = (0, import_util_utf83.fromUtf8)(headerName);\n chunks.push(Uint8Array.from([bytes.byteLength]), bytes, this.formatHeaderValue(headers[headerName]));\n }\n const out = new Uint8Array(chunks.reduce((carry, bytes) => carry + bytes.byteLength, 0));\n let position = 0;\n for (const chunk of chunks) {\n out.set(chunk, position);\n position += chunk.byteLength;\n }\n return out;\n }\n formatHeaderValue(header) {\n switch (header.type) {\n case \"boolean\":\n return Uint8Array.from([header.value ? 0 /* boolTrue */ : 1 /* boolFalse */]);\n case \"byte\":\n return Uint8Array.from([2 /* byte */, header.value]);\n case \"short\":\n const shortView = new DataView(new ArrayBuffer(3));\n shortView.setUint8(0, 3 /* short */);\n shortView.setInt16(1, header.value, false);\n return new Uint8Array(shortView.buffer);\n case \"integer\":\n const intView = new DataView(new ArrayBuffer(5));\n intView.setUint8(0, 4 /* integer */);\n intView.setInt32(1, header.value, false);\n return new Uint8Array(intView.buffer);\n case \"long\":\n const longBytes = new Uint8Array(9);\n longBytes[0] = 5 /* long */;\n longBytes.set(header.value.bytes, 1);\n return longBytes;\n case \"binary\":\n const binView = new DataView(new ArrayBuffer(3 + header.value.byteLength));\n binView.setUint8(0, 6 /* byteArray */);\n binView.setUint16(1, header.value.byteLength, false);\n const binBytes = new Uint8Array(binView.buffer);\n binBytes.set(header.value, 3);\n return binBytes;\n case \"string\":\n const utf8Bytes = (0, import_util_utf83.fromUtf8)(header.value);\n const strView = new DataView(new ArrayBuffer(3 + utf8Bytes.byteLength));\n strView.setUint8(0, 7 /* string */);\n strView.setUint16(1, utf8Bytes.byteLength, false);\n const strBytes = new Uint8Array(strView.buffer);\n strBytes.set(utf8Bytes, 3);\n return strBytes;\n case \"timestamp\":\n const tsBytes = new Uint8Array(9);\n tsBytes[0] = 8 /* timestamp */;\n tsBytes.set(Int64.fromNumber(header.value.valueOf()).bytes, 1);\n return tsBytes;\n case \"uuid\":\n if (!UUID_PATTERN.test(header.value)) {\n throw new Error(`Invalid UUID received: ${header.value}`);\n }\n const uuidBytes = new Uint8Array(17);\n uuidBytes[0] = 9 /* uuid */;\n uuidBytes.set((0, import_util_hex_encoding.fromHex)(header.value.replace(/\\-/g, \"\")), 1);\n return uuidBytes;\n }\n }\n};\n__name(_HeaderFormatter, \"HeaderFormatter\");\nvar HeaderFormatter = _HeaderFormatter;\nvar UUID_PATTERN = /^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$/;\nvar _Int64 = class _Int64 {\n constructor(bytes) {\n this.bytes = bytes;\n if (bytes.byteLength !== 8) {\n throw new Error(\"Int64 buffers must be exactly 8 bytes\");\n }\n }\n static fromNumber(number) {\n if (number > 9223372036854776e3 || number < -9223372036854776e3) {\n throw new Error(`${number} is too large (or, if negative, too small) to represent as an Int64`);\n }\n const bytes = new Uint8Array(8);\n for (let i = 7, remaining = Math.abs(Math.round(number)); i > -1 && remaining > 0; i--, remaining /= 256) {\n bytes[i] = remaining;\n }\n if (number < 0) {\n negate(bytes);\n }\n return new _Int64(bytes);\n }\n /**\n * Called implicitly by infix arithmetic operators.\n */\n valueOf() {\n const bytes = this.bytes.slice(0);\n const negative = bytes[0] & 128;\n if (negative) {\n negate(bytes);\n }\n return parseInt((0, import_util_hex_encoding.toHex)(bytes), 16) * (negative ? -1 : 1);\n }\n toString() {\n return String(this.valueOf());\n }\n};\n__name(_Int64, \"Int64\");\nvar Int64 = _Int64;\nfunction negate(bytes) {\n for (let i = 0; i < 8; i++) {\n bytes[i] ^= 255;\n }\n for (let i = 7; i > -1; i--) {\n bytes[i]++;\n if (bytes[i] !== 0)\n break;\n }\n}\n__name(negate, \"negate\");\n\n// src/headerUtil.ts\nvar hasHeader = /* @__PURE__ */ __name((soughtHeader, headers) => {\n soughtHeader = soughtHeader.toLowerCase();\n for (const headerName of Object.keys(headers)) {\n if (soughtHeader === headerName.toLowerCase()) {\n return true;\n }\n }\n return false;\n}, \"hasHeader\");\n\n// src/moveHeadersToQuery.ts\nvar import_protocol_http = require(\"@smithy/protocol-http\");\nvar moveHeadersToQuery = /* @__PURE__ */ __name((request, options = {}) => {\n var _a, _b;\n const { headers, query = {} } = import_protocol_http.HttpRequest.clone(request);\n for (const name of Object.keys(headers)) {\n const lname = name.toLowerCase();\n if (lname.slice(0, 6) === \"x-amz-\" && !((_a = options.unhoistableHeaders) == null ? void 0 : _a.has(lname)) || ((_b = options.hoistableHeaders) == null ? void 0 : _b.has(lname))) {\n query[name] = headers[name];\n delete headers[name];\n }\n }\n return {\n ...request,\n headers,\n query\n };\n}, \"moveHeadersToQuery\");\n\n// src/prepareRequest.ts\n\nvar prepareRequest = /* @__PURE__ */ __name((request) => {\n request = import_protocol_http.HttpRequest.clone(request);\n for (const headerName of Object.keys(request.headers)) {\n if (GENERATED_HEADERS.indexOf(headerName.toLowerCase()) > -1) {\n delete request.headers[headerName];\n }\n }\n return request;\n}, \"prepareRequest\");\n\n// src/utilDate.ts\nvar iso8601 = /* @__PURE__ */ __name((time) => toDate(time).toISOString().replace(/\\.\\d{3}Z$/, \"Z\"), \"iso8601\");\nvar toDate = /* @__PURE__ */ __name((time) => {\n if (typeof time === \"number\") {\n return new Date(time * 1e3);\n }\n if (typeof time === \"string\") {\n if (Number(time)) {\n return new Date(Number(time) * 1e3);\n }\n return new Date(time);\n }\n return time;\n}, \"toDate\");\n\n// src/SignatureV4.ts\nvar _SignatureV4 = class _SignatureV4 {\n constructor({\n applyChecksum,\n credentials,\n region,\n service,\n sha256,\n uriEscapePath = true\n }) {\n this.headerFormatter = new HeaderFormatter();\n this.service = service;\n this.sha256 = sha256;\n this.uriEscapePath = uriEscapePath;\n this.applyChecksum = typeof applyChecksum === \"boolean\" ? applyChecksum : true;\n this.regionProvider = (0, import_util_middleware.normalizeProvider)(region);\n this.credentialProvider = (0, import_util_middleware.normalizeProvider)(credentials);\n }\n async presign(originalRequest, options = {}) {\n const {\n signingDate = /* @__PURE__ */ new Date(),\n expiresIn = 3600,\n unsignableHeaders,\n unhoistableHeaders,\n signableHeaders,\n hoistableHeaders,\n signingRegion,\n signingService\n } = options;\n const credentials = await this.credentialProvider();\n this.validateResolvedCredentials(credentials);\n const region = signingRegion ?? await this.regionProvider();\n const { longDate, shortDate } = formatDate(signingDate);\n if (expiresIn > MAX_PRESIGNED_TTL) {\n return Promise.reject(\n \"Signature version 4 presigned URLs must have an expiration date less than one week in the future\"\n );\n }\n const scope = createScope(shortDate, region, signingService ?? this.service);\n const request = moveHeadersToQuery(prepareRequest(originalRequest), { unhoistableHeaders, hoistableHeaders });\n if (credentials.sessionToken) {\n request.query[TOKEN_QUERY_PARAM] = credentials.sessionToken;\n }\n request.query[ALGORITHM_QUERY_PARAM] = ALGORITHM_IDENTIFIER;\n request.query[CREDENTIAL_QUERY_PARAM] = `${credentials.accessKeyId}/${scope}`;\n request.query[AMZ_DATE_QUERY_PARAM] = longDate;\n request.query[EXPIRES_QUERY_PARAM] = expiresIn.toString(10);\n const canonicalHeaders = getCanonicalHeaders(request, unsignableHeaders, signableHeaders);\n request.query[SIGNED_HEADERS_QUERY_PARAM] = getCanonicalHeaderList(canonicalHeaders);\n request.query[SIGNATURE_QUERY_PARAM] = await this.getSignature(\n longDate,\n scope,\n this.getSigningKey(credentials, region, shortDate, signingService),\n this.createCanonicalRequest(request, canonicalHeaders, await getPayloadHash(originalRequest, this.sha256))\n );\n return request;\n }\n async sign(toSign, options) {\n if (typeof toSign === \"string\") {\n return this.signString(toSign, options);\n } else if (toSign.headers && toSign.payload) {\n return this.signEvent(toSign, options);\n } else if (toSign.message) {\n return this.signMessage(toSign, options);\n } else {\n return this.signRequest(toSign, options);\n }\n }\n async signEvent({ headers, payload }, { signingDate = /* @__PURE__ */ new Date(), priorSignature, signingRegion, signingService }) {\n const region = signingRegion ?? await this.regionProvider();\n const { shortDate, longDate } = formatDate(signingDate);\n const scope = createScope(shortDate, region, signingService ?? this.service);\n const hashedPayload = await getPayloadHash({ headers: {}, body: payload }, this.sha256);\n const hash = new this.sha256();\n hash.update(headers);\n const hashedHeaders = (0, import_util_hex_encoding.toHex)(await hash.digest());\n const stringToSign = [\n EVENT_ALGORITHM_IDENTIFIER,\n longDate,\n scope,\n priorSignature,\n hashedHeaders,\n hashedPayload\n ].join(\"\\n\");\n return this.signString(stringToSign, { signingDate, signingRegion: region, signingService });\n }\n async signMessage(signableMessage, { signingDate = /* @__PURE__ */ new Date(), signingRegion, signingService }) {\n const promise = this.signEvent(\n {\n headers: this.headerFormatter.format(signableMessage.message.headers),\n payload: signableMessage.message.body\n },\n {\n signingDate,\n signingRegion,\n signingService,\n priorSignature: signableMessage.priorSignature\n }\n );\n return promise.then((signature) => {\n return { message: signableMessage.message, signature };\n });\n }\n async signString(stringToSign, { signingDate = /* @__PURE__ */ new Date(), signingRegion, signingService } = {}) {\n const credentials = await this.credentialProvider();\n this.validateResolvedCredentials(credentials);\n const region = signingRegion ?? await this.regionProvider();\n const { shortDate } = formatDate(signingDate);\n const hash = new this.sha256(await this.getSigningKey(credentials, region, shortDate, signingService));\n hash.update((0, import_util_utf84.toUint8Array)(stringToSign));\n return (0, import_util_hex_encoding.toHex)(await hash.digest());\n }\n async signRequest(requestToSign, {\n signingDate = /* @__PURE__ */ new Date(),\n signableHeaders,\n unsignableHeaders,\n signingRegion,\n signingService\n } = {}) {\n const credentials = await this.credentialProvider();\n this.validateResolvedCredentials(credentials);\n const region = signingRegion ?? await this.regionProvider();\n const request = prepareRequest(requestToSign);\n const { longDate, shortDate } = formatDate(signingDate);\n const scope = createScope(shortDate, region, signingService ?? this.service);\n request.headers[AMZ_DATE_HEADER] = longDate;\n if (credentials.sessionToken) {\n request.headers[TOKEN_HEADER] = credentials.sessionToken;\n }\n const payloadHash = await getPayloadHash(request, this.sha256);\n if (!hasHeader(SHA256_HEADER, request.headers) && this.applyChecksum) {\n request.headers[SHA256_HEADER] = payloadHash;\n }\n const canonicalHeaders = getCanonicalHeaders(request, unsignableHeaders, signableHeaders);\n const signature = await this.getSignature(\n longDate,\n scope,\n this.getSigningKey(credentials, region, shortDate, signingService),\n this.createCanonicalRequest(request, canonicalHeaders, payloadHash)\n );\n request.headers[AUTH_HEADER] = `${ALGORITHM_IDENTIFIER} Credential=${credentials.accessKeyId}/${scope}, SignedHeaders=${getCanonicalHeaderList(canonicalHeaders)}, Signature=${signature}`;\n return request;\n }\n createCanonicalRequest(request, canonicalHeaders, payloadHash) {\n const sortedHeaders = Object.keys(canonicalHeaders).sort();\n return `${request.method}\n${this.getCanonicalPath(request)}\n${getCanonicalQuery(request)}\n${sortedHeaders.map((name) => `${name}:${canonicalHeaders[name]}`).join(\"\\n\")}\n\n${sortedHeaders.join(\";\")}\n${payloadHash}`;\n }\n async createStringToSign(longDate, credentialScope, canonicalRequest) {\n const hash = new this.sha256();\n hash.update((0, import_util_utf84.toUint8Array)(canonicalRequest));\n const hashedRequest = await hash.digest();\n return `${ALGORITHM_IDENTIFIER}\n${longDate}\n${credentialScope}\n${(0, import_util_hex_encoding.toHex)(hashedRequest)}`;\n }\n getCanonicalPath({ path }) {\n if (this.uriEscapePath) {\n const normalizedPathSegments = [];\n for (const pathSegment of path.split(\"/\")) {\n if ((pathSegment == null ? void 0 : pathSegment.length) === 0)\n continue;\n if (pathSegment === \".\")\n continue;\n if (pathSegment === \"..\") {\n normalizedPathSegments.pop();\n } else {\n normalizedPathSegments.push(pathSegment);\n }\n }\n const normalizedPath = `${(path == null ? void 0 : path.startsWith(\"/\")) ? \"/\" : \"\"}${normalizedPathSegments.join(\"/\")}${normalizedPathSegments.length > 0 && (path == null ? void 0 : path.endsWith(\"/\")) ? \"/\" : \"\"}`;\n const doubleEncoded = (0, import_util_uri_escape.escapeUri)(normalizedPath);\n return doubleEncoded.replace(/%2F/g, \"/\");\n }\n return path;\n }\n async getSignature(longDate, credentialScope, keyPromise, canonicalRequest) {\n const stringToSign = await this.createStringToSign(longDate, credentialScope, canonicalRequest);\n const hash = new this.sha256(await keyPromise);\n hash.update((0, import_util_utf84.toUint8Array)(stringToSign));\n return (0, import_util_hex_encoding.toHex)(await hash.digest());\n }\n getSigningKey(credentials, region, shortDate, service) {\n return getSigningKey(this.sha256, credentials, shortDate, region, service || this.service);\n }\n validateResolvedCredentials(credentials) {\n if (typeof credentials !== \"object\" || // @ts-expect-error: Property 'accessKeyId' does not exist on type 'object'.ts(2339)\n typeof credentials.accessKeyId !== \"string\" || // @ts-expect-error: Property 'secretAccessKey' does not exist on type 'object'.ts(2339)\n typeof credentials.secretAccessKey !== \"string\") {\n throw new Error(\"Resolved credential object is not valid\");\n }\n }\n};\n__name(_SignatureV4, \"SignatureV4\");\nvar SignatureV4 = _SignatureV4;\nvar formatDate = /* @__PURE__ */ __name((now) => {\n const longDate = iso8601(now).replace(/[\\-:]/g, \"\");\n return {\n longDate,\n shortDate: longDate.slice(0, 8)\n };\n}, \"formatDate\");\nvar getCanonicalHeaderList = /* @__PURE__ */ __name((headers) => Object.keys(headers).sort().join(\";\"), \"getCanonicalHeaderList\");\n// Annotate the CommonJS export names for ESM import in node:\n\n0 && (module.exports = {\n getCanonicalHeaders,\n getCanonicalQuery,\n getPayloadHash,\n moveHeadersToQuery,\n prepareRequest,\n SignatureV4,\n createScope,\n getSigningKey,\n clearCredentialCache\n});\n\n","var __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/index.ts\nvar src_exports = {};\n__export(src_exports, {\n Client: () => Client,\n Command: () => Command,\n LazyJsonString: () => LazyJsonString,\n NoOpLogger: () => NoOpLogger,\n SENSITIVE_STRING: () => SENSITIVE_STRING,\n ServiceException: () => ServiceException,\n StringWrapper: () => StringWrapper,\n _json: () => _json,\n collectBody: () => collectBody,\n convertMap: () => convertMap,\n createAggregatedClient: () => createAggregatedClient,\n dateToUtcString: () => dateToUtcString,\n decorateServiceException: () => decorateServiceException,\n emitWarningIfUnsupportedVersion: () => emitWarningIfUnsupportedVersion,\n expectBoolean: () => expectBoolean,\n expectByte: () => expectByte,\n expectFloat32: () => expectFloat32,\n expectInt: () => expectInt,\n expectInt32: () => expectInt32,\n expectLong: () => expectLong,\n expectNonNull: () => expectNonNull,\n expectNumber: () => expectNumber,\n expectObject: () => expectObject,\n expectShort: () => expectShort,\n expectString: () => expectString,\n expectUnion: () => expectUnion,\n extendedEncodeURIComponent: () => extendedEncodeURIComponent,\n getArrayIfSingleItem: () => getArrayIfSingleItem,\n getDefaultClientConfiguration: () => getDefaultClientConfiguration,\n getDefaultExtensionConfiguration: () => getDefaultExtensionConfiguration,\n getValueFromTextNode: () => getValueFromTextNode,\n handleFloat: () => handleFloat,\n isSerializableHeaderValue: () => isSerializableHeaderValue,\n limitedParseDouble: () => limitedParseDouble,\n limitedParseFloat: () => limitedParseFloat,\n limitedParseFloat32: () => limitedParseFloat32,\n loadConfigsForDefaultMode: () => loadConfigsForDefaultMode,\n logger: () => logger,\n map: () => map,\n parseBoolean: () => parseBoolean,\n parseEpochTimestamp: () => parseEpochTimestamp,\n parseRfc3339DateTime: () => parseRfc3339DateTime,\n parseRfc3339DateTimeWithOffset: () => parseRfc3339DateTimeWithOffset,\n parseRfc7231DateTime: () => parseRfc7231DateTime,\n quoteHeader: () => quoteHeader,\n resolveDefaultRuntimeConfig: () => resolveDefaultRuntimeConfig,\n resolvedPath: () => resolvedPath,\n serializeDateTime: () => serializeDateTime,\n serializeFloat: () => serializeFloat,\n splitEvery: () => splitEvery,\n splitHeader: () => splitHeader,\n strictParseByte: () => strictParseByte,\n strictParseDouble: () => strictParseDouble,\n strictParseFloat: () => strictParseFloat,\n strictParseFloat32: () => strictParseFloat32,\n strictParseInt: () => strictParseInt,\n strictParseInt32: () => strictParseInt32,\n strictParseLong: () => strictParseLong,\n strictParseShort: () => strictParseShort,\n take: () => take,\n throwDefaultError: () => throwDefaultError,\n withBaseException: () => withBaseException\n});\nmodule.exports = __toCommonJS(src_exports);\n\n// src/client.ts\nvar import_middleware_stack = require(\"@smithy/middleware-stack\");\nvar _Client = class _Client {\n constructor(config) {\n this.config = config;\n this.middlewareStack = (0, import_middleware_stack.constructStack)();\n }\n send(command, optionsOrCb, cb) {\n const options = typeof optionsOrCb !== \"function\" ? optionsOrCb : void 0;\n const callback = typeof optionsOrCb === \"function\" ? optionsOrCb : cb;\n const useHandlerCache = options === void 0 && this.config.cacheMiddleware === true;\n let handler;\n if (useHandlerCache) {\n if (!this.handlers) {\n this.handlers = /* @__PURE__ */ new WeakMap();\n }\n const handlers = this.handlers;\n if (handlers.has(command.constructor)) {\n handler = handlers.get(command.constructor);\n } else {\n handler = command.resolveMiddleware(this.middlewareStack, this.config, options);\n handlers.set(command.constructor, handler);\n }\n } else {\n delete this.handlers;\n handler = command.resolveMiddleware(this.middlewareStack, this.config, options);\n }\n if (callback) {\n handler(command).then(\n (result) => callback(null, result.output),\n (err) => callback(err)\n ).catch(\n // prevent any errors thrown in the callback from triggering an\n // unhandled promise rejection\n () => {\n }\n );\n } else {\n return handler(command).then((result) => result.output);\n }\n }\n destroy() {\n var _a, _b, _c;\n (_c = (_b = (_a = this.config) == null ? void 0 : _a.requestHandler) == null ? void 0 : _b.destroy) == null ? void 0 : _c.call(_b);\n delete this.handlers;\n }\n};\n__name(_Client, \"Client\");\nvar Client = _Client;\n\n// src/collect-stream-body.ts\nvar import_util_stream = require(\"@smithy/util-stream\");\nvar collectBody = /* @__PURE__ */ __name(async (streamBody = new Uint8Array(), context) => {\n if (streamBody instanceof Uint8Array) {\n return import_util_stream.Uint8ArrayBlobAdapter.mutate(streamBody);\n }\n if (!streamBody) {\n return import_util_stream.Uint8ArrayBlobAdapter.mutate(new Uint8Array());\n }\n const fromContext = context.streamCollector(streamBody);\n return import_util_stream.Uint8ArrayBlobAdapter.mutate(await fromContext);\n}, \"collectBody\");\n\n// src/command.ts\n\nvar import_types = require(\"@smithy/types\");\nvar _Command = class _Command {\n constructor() {\n this.middlewareStack = (0, import_middleware_stack.constructStack)();\n }\n /**\n * Factory for Command ClassBuilder.\n * @internal\n */\n static classBuilder() {\n return new ClassBuilder();\n }\n /**\n * @internal\n */\n resolveMiddlewareWithContext(clientStack, configuration, options, {\n middlewareFn,\n clientName,\n commandName,\n inputFilterSensitiveLog,\n outputFilterSensitiveLog,\n smithyContext,\n additionalContext,\n CommandCtor\n }) {\n for (const mw of middlewareFn.bind(this)(CommandCtor, clientStack, configuration, options)) {\n this.middlewareStack.use(mw);\n }\n const stack = clientStack.concat(this.middlewareStack);\n const { logger: logger2 } = configuration;\n const handlerExecutionContext = {\n logger: logger2,\n clientName,\n commandName,\n inputFilterSensitiveLog,\n outputFilterSensitiveLog,\n [import_types.SMITHY_CONTEXT_KEY]: {\n commandInstance: this,\n ...smithyContext\n },\n ...additionalContext\n };\n const { requestHandler } = configuration;\n return stack.resolve(\n (request) => requestHandler.handle(request.request, options || {}),\n handlerExecutionContext\n );\n }\n};\n__name(_Command, \"Command\");\nvar Command = _Command;\nvar _ClassBuilder = class _ClassBuilder {\n constructor() {\n this._init = () => {\n };\n this._ep = {};\n this._middlewareFn = () => [];\n this._commandName = \"\";\n this._clientName = \"\";\n this._additionalContext = {};\n this._smithyContext = {};\n this._inputFilterSensitiveLog = (_) => _;\n this._outputFilterSensitiveLog = (_) => _;\n this._serializer = null;\n this._deserializer = null;\n }\n /**\n * Optional init callback.\n */\n init(cb) {\n this._init = cb;\n }\n /**\n * Set the endpoint parameter instructions.\n */\n ep(endpointParameterInstructions) {\n this._ep = endpointParameterInstructions;\n return this;\n }\n /**\n * Add any number of middleware.\n */\n m(middlewareSupplier) {\n this._middlewareFn = middlewareSupplier;\n return this;\n }\n /**\n * Set the initial handler execution context Smithy field.\n */\n s(service, operation, smithyContext = {}) {\n this._smithyContext = {\n service,\n operation,\n ...smithyContext\n };\n return this;\n }\n /**\n * Set the initial handler execution context.\n */\n c(additionalContext = {}) {\n this._additionalContext = additionalContext;\n return this;\n }\n /**\n * Set constant string identifiers for the operation.\n */\n n(clientName, commandName) {\n this._clientName = clientName;\n this._commandName = commandName;\n return this;\n }\n /**\n * Set the input and output sensistive log filters.\n */\n f(inputFilter = (_) => _, outputFilter = (_) => _) {\n this._inputFilterSensitiveLog = inputFilter;\n this._outputFilterSensitiveLog = outputFilter;\n return this;\n }\n /**\n * Sets the serializer.\n */\n ser(serializer) {\n this._serializer = serializer;\n return this;\n }\n /**\n * Sets the deserializer.\n */\n de(deserializer) {\n this._deserializer = deserializer;\n return this;\n }\n /**\n * @returns a Command class with the classBuilder properties.\n */\n build() {\n var _a;\n const closure = this;\n let CommandRef;\n return CommandRef = (_a = class extends Command {\n /**\n * @public\n */\n constructor(...[input]) {\n super();\n /**\n * @internal\n */\n // @ts-ignore used in middlewareFn closure.\n this.serialize = closure._serializer;\n /**\n * @internal\n */\n // @ts-ignore used in middlewareFn closure.\n this.deserialize = closure._deserializer;\n this.input = input ?? {};\n closure._init(this);\n }\n /**\n * @public\n */\n static getEndpointParameterInstructions() {\n return closure._ep;\n }\n /**\n * @internal\n */\n resolveMiddleware(stack, configuration, options) {\n return this.resolveMiddlewareWithContext(stack, configuration, options, {\n CommandCtor: CommandRef,\n middlewareFn: closure._middlewareFn,\n clientName: closure._clientName,\n commandName: closure._commandName,\n inputFilterSensitiveLog: closure._inputFilterSensitiveLog,\n outputFilterSensitiveLog: closure._outputFilterSensitiveLog,\n smithyContext: closure._smithyContext,\n additionalContext: closure._additionalContext\n });\n }\n }, __name(_a, \"CommandRef\"), _a);\n }\n};\n__name(_ClassBuilder, \"ClassBuilder\");\nvar ClassBuilder = _ClassBuilder;\n\n// src/constants.ts\nvar SENSITIVE_STRING = \"***SensitiveInformation***\";\n\n// src/create-aggregated-client.ts\nvar createAggregatedClient = /* @__PURE__ */ __name((commands, Client2) => {\n for (const command of Object.keys(commands)) {\n const CommandCtor = commands[command];\n const methodImpl = /* @__PURE__ */ __name(async function(args, optionsOrCb, cb) {\n const command2 = new CommandCtor(args);\n if (typeof optionsOrCb === \"function\") {\n this.send(command2, optionsOrCb);\n } else if (typeof cb === \"function\") {\n if (typeof optionsOrCb !== \"object\")\n throw new Error(`Expected http options but got ${typeof optionsOrCb}`);\n this.send(command2, optionsOrCb || {}, cb);\n } else {\n return this.send(command2, optionsOrCb);\n }\n }, \"methodImpl\");\n const methodName = (command[0].toLowerCase() + command.slice(1)).replace(/Command$/, \"\");\n Client2.prototype[methodName] = methodImpl;\n }\n}, \"createAggregatedClient\");\n\n// src/parse-utils.ts\nvar parseBoolean = /* @__PURE__ */ __name((value) => {\n switch (value) {\n case \"true\":\n return true;\n case \"false\":\n return false;\n default:\n throw new Error(`Unable to parse boolean value \"${value}\"`);\n }\n}, \"parseBoolean\");\nvar expectBoolean = /* @__PURE__ */ __name((value) => {\n if (value === null || value === void 0) {\n return void 0;\n }\n if (typeof value === \"number\") {\n if (value === 0 || value === 1) {\n logger.warn(stackTraceWarning(`Expected boolean, got ${typeof value}: ${value}`));\n }\n if (value === 0) {\n return false;\n }\n if (value === 1) {\n return true;\n }\n }\n if (typeof value === \"string\") {\n const lower = value.toLowerCase();\n if (lower === \"false\" || lower === \"true\") {\n logger.warn(stackTraceWarning(`Expected boolean, got ${typeof value}: ${value}`));\n }\n if (lower === \"false\") {\n return false;\n }\n if (lower === \"true\") {\n return true;\n }\n }\n if (typeof value === \"boolean\") {\n return value;\n }\n throw new TypeError(`Expected boolean, got ${typeof value}: ${value}`);\n}, \"expectBoolean\");\nvar expectNumber = /* @__PURE__ */ __name((value) => {\n if (value === null || value === void 0) {\n return void 0;\n }\n if (typeof value === \"string\") {\n const parsed = parseFloat(value);\n if (!Number.isNaN(parsed)) {\n if (String(parsed) !== String(value)) {\n logger.warn(stackTraceWarning(`Expected number but observed string: ${value}`));\n }\n return parsed;\n }\n }\n if (typeof value === \"number\") {\n return value;\n }\n throw new TypeError(`Expected number, got ${typeof value}: ${value}`);\n}, \"expectNumber\");\nvar MAX_FLOAT = Math.ceil(2 ** 127 * (2 - 2 ** -23));\nvar expectFloat32 = /* @__PURE__ */ __name((value) => {\n const expected = expectNumber(value);\n if (expected !== void 0 && !Number.isNaN(expected) && expected !== Infinity && expected !== -Infinity) {\n if (Math.abs(expected) > MAX_FLOAT) {\n throw new TypeError(`Expected 32-bit float, got ${value}`);\n }\n }\n return expected;\n}, \"expectFloat32\");\nvar expectLong = /* @__PURE__ */ __name((value) => {\n if (value === null || value === void 0) {\n return void 0;\n }\n if (Number.isInteger(value) && !Number.isNaN(value)) {\n return value;\n }\n throw new TypeError(`Expected integer, got ${typeof value}: ${value}`);\n}, \"expectLong\");\nvar expectInt = expectLong;\nvar expectInt32 = /* @__PURE__ */ __name((value) => expectSizedInt(value, 32), \"expectInt32\");\nvar expectShort = /* @__PURE__ */ __name((value) => expectSizedInt(value, 16), \"expectShort\");\nvar expectByte = /* @__PURE__ */ __name((value) => expectSizedInt(value, 8), \"expectByte\");\nvar expectSizedInt = /* @__PURE__ */ __name((value, size) => {\n const expected = expectLong(value);\n if (expected !== void 0 && castInt(expected, size) !== expected) {\n throw new TypeError(`Expected ${size}-bit integer, got ${value}`);\n }\n return expected;\n}, \"expectSizedInt\");\nvar castInt = /* @__PURE__ */ __name((value, size) => {\n switch (size) {\n case 32:\n return Int32Array.of(value)[0];\n case 16:\n return Int16Array.of(value)[0];\n case 8:\n return Int8Array.of(value)[0];\n }\n}, \"castInt\");\nvar expectNonNull = /* @__PURE__ */ __name((value, location) => {\n if (value === null || value === void 0) {\n if (location) {\n throw new TypeError(`Expected a non-null value for ${location}`);\n }\n throw new TypeError(\"Expected a non-null value\");\n }\n return value;\n}, \"expectNonNull\");\nvar expectObject = /* @__PURE__ */ __name((value) => {\n if (value === null || value === void 0) {\n return void 0;\n }\n if (typeof value === \"object\" && !Array.isArray(value)) {\n return value;\n }\n const receivedType = Array.isArray(value) ? \"array\" : typeof value;\n throw new TypeError(`Expected object, got ${receivedType}: ${value}`);\n}, \"expectObject\");\nvar expectString = /* @__PURE__ */ __name((value) => {\n if (value === null || value === void 0) {\n return void 0;\n }\n if (typeof value === \"string\") {\n return value;\n }\n if ([\"boolean\", \"number\", \"bigint\"].includes(typeof value)) {\n logger.warn(stackTraceWarning(`Expected string, got ${typeof value}: ${value}`));\n return String(value);\n }\n throw new TypeError(`Expected string, got ${typeof value}: ${value}`);\n}, \"expectString\");\nvar expectUnion = /* @__PURE__ */ __name((value) => {\n if (value === null || value === void 0) {\n return void 0;\n }\n const asObject = expectObject(value);\n const setKeys = Object.entries(asObject).filter(([, v]) => v != null).map(([k]) => k);\n if (setKeys.length === 0) {\n throw new TypeError(`Unions must have exactly one non-null member. None were found.`);\n }\n if (setKeys.length > 1) {\n throw new TypeError(`Unions must have exactly one non-null member. Keys ${setKeys} were not null.`);\n }\n return asObject;\n}, \"expectUnion\");\nvar strictParseDouble = /* @__PURE__ */ __name((value) => {\n if (typeof value == \"string\") {\n return expectNumber(parseNumber(value));\n }\n return expectNumber(value);\n}, \"strictParseDouble\");\nvar strictParseFloat = strictParseDouble;\nvar strictParseFloat32 = /* @__PURE__ */ __name((value) => {\n if (typeof value == \"string\") {\n return expectFloat32(parseNumber(value));\n }\n return expectFloat32(value);\n}, \"strictParseFloat32\");\nvar NUMBER_REGEX = /(-?(?:0|[1-9]\\d*)(?:\\.\\d+)?(?:[eE][+-]?\\d+)?)|(-?Infinity)|(NaN)/g;\nvar parseNumber = /* @__PURE__ */ __name((value) => {\n const matches = value.match(NUMBER_REGEX);\n if (matches === null || matches[0].length !== value.length) {\n throw new TypeError(`Expected real number, got implicit NaN`);\n }\n return parseFloat(value);\n}, \"parseNumber\");\nvar limitedParseDouble = /* @__PURE__ */ __name((value) => {\n if (typeof value == \"string\") {\n return parseFloatString(value);\n }\n return expectNumber(value);\n}, \"limitedParseDouble\");\nvar handleFloat = limitedParseDouble;\nvar limitedParseFloat = limitedParseDouble;\nvar limitedParseFloat32 = /* @__PURE__ */ __name((value) => {\n if (typeof value == \"string\") {\n return parseFloatString(value);\n }\n return expectFloat32(value);\n}, \"limitedParseFloat32\");\nvar parseFloatString = /* @__PURE__ */ __name((value) => {\n switch (value) {\n case \"NaN\":\n return NaN;\n case \"Infinity\":\n return Infinity;\n case \"-Infinity\":\n return -Infinity;\n default:\n throw new Error(`Unable to parse float value: ${value}`);\n }\n}, \"parseFloatString\");\nvar strictParseLong = /* @__PURE__ */ __name((value) => {\n if (typeof value === \"string\") {\n return expectLong(parseNumber(value));\n }\n return expectLong(value);\n}, \"strictParseLong\");\nvar strictParseInt = strictParseLong;\nvar strictParseInt32 = /* @__PURE__ */ __name((value) => {\n if (typeof value === \"string\") {\n return expectInt32(parseNumber(value));\n }\n return expectInt32(value);\n}, \"strictParseInt32\");\nvar strictParseShort = /* @__PURE__ */ __name((value) => {\n if (typeof value === \"string\") {\n return expectShort(parseNumber(value));\n }\n return expectShort(value);\n}, \"strictParseShort\");\nvar strictParseByte = /* @__PURE__ */ __name((value) => {\n if (typeof value === \"string\") {\n return expectByte(parseNumber(value));\n }\n return expectByte(value);\n}, \"strictParseByte\");\nvar stackTraceWarning = /* @__PURE__ */ __name((message) => {\n return String(new TypeError(message).stack || message).split(\"\\n\").slice(0, 5).filter((s) => !s.includes(\"stackTraceWarning\")).join(\"\\n\");\n}, \"stackTraceWarning\");\nvar logger = {\n warn: console.warn\n};\n\n// src/date-utils.ts\nvar DAYS = [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"];\nvar MONTHS = [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"];\nfunction dateToUtcString(date) {\n const year = date.getUTCFullYear();\n const month = date.getUTCMonth();\n const dayOfWeek = date.getUTCDay();\n const dayOfMonthInt = date.getUTCDate();\n const hoursInt = date.getUTCHours();\n const minutesInt = date.getUTCMinutes();\n const secondsInt = date.getUTCSeconds();\n const dayOfMonthString = dayOfMonthInt < 10 ? `0${dayOfMonthInt}` : `${dayOfMonthInt}`;\n const hoursString = hoursInt < 10 ? `0${hoursInt}` : `${hoursInt}`;\n const minutesString = minutesInt < 10 ? `0${minutesInt}` : `${minutesInt}`;\n const secondsString = secondsInt < 10 ? `0${secondsInt}` : `${secondsInt}`;\n return `${DAYS[dayOfWeek]}, ${dayOfMonthString} ${MONTHS[month]} ${year} ${hoursString}:${minutesString}:${secondsString} GMT`;\n}\n__name(dateToUtcString, \"dateToUtcString\");\nvar RFC3339 = new RegExp(/^(\\d{4})-(\\d{2})-(\\d{2})[tT](\\d{2}):(\\d{2}):(\\d{2})(?:\\.(\\d+))?[zZ]$/);\nvar parseRfc3339DateTime = /* @__PURE__ */ __name((value) => {\n if (value === null || value === void 0) {\n return void 0;\n }\n if (typeof value !== \"string\") {\n throw new TypeError(\"RFC-3339 date-times must be expressed as strings\");\n }\n const match = RFC3339.exec(value);\n if (!match) {\n throw new TypeError(\"Invalid RFC-3339 date-time value\");\n }\n const [_, yearStr, monthStr, dayStr, hours, minutes, seconds, fractionalMilliseconds] = match;\n const year = strictParseShort(stripLeadingZeroes(yearStr));\n const month = parseDateValue(monthStr, \"month\", 1, 12);\n const day = parseDateValue(dayStr, \"day\", 1, 31);\n return buildDate(year, month, day, { hours, minutes, seconds, fractionalMilliseconds });\n}, \"parseRfc3339DateTime\");\nvar RFC3339_WITH_OFFSET = new RegExp(\n /^(\\d{4})-(\\d{2})-(\\d{2})[tT](\\d{2}):(\\d{2}):(\\d{2})(?:\\.(\\d+))?(([-+]\\d{2}\\:\\d{2})|[zZ])$/\n);\nvar parseRfc3339DateTimeWithOffset = /* @__PURE__ */ __name((value) => {\n if (value === null || value === void 0) {\n return void 0;\n }\n if (typeof value !== \"string\") {\n throw new TypeError(\"RFC-3339 date-times must be expressed as strings\");\n }\n const match = RFC3339_WITH_OFFSET.exec(value);\n if (!match) {\n throw new TypeError(\"Invalid RFC-3339 date-time value\");\n }\n const [_, yearStr, monthStr, dayStr, hours, minutes, seconds, fractionalMilliseconds, offsetStr] = match;\n const year = strictParseShort(stripLeadingZeroes(yearStr));\n const month = parseDateValue(monthStr, \"month\", 1, 12);\n const day = parseDateValue(dayStr, \"day\", 1, 31);\n const date = buildDate(year, month, day, { hours, minutes, seconds, fractionalMilliseconds });\n if (offsetStr.toUpperCase() != \"Z\") {\n date.setTime(date.getTime() - parseOffsetToMilliseconds(offsetStr));\n }\n return date;\n}, \"parseRfc3339DateTimeWithOffset\");\nvar IMF_FIXDATE = new RegExp(\n /^(?:Mon|Tue|Wed|Thu|Fri|Sat|Sun), (\\d{2}) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) (\\d{4}) (\\d{1,2}):(\\d{2}):(\\d{2})(?:\\.(\\d+))? GMT$/\n);\nvar RFC_850_DATE = new RegExp(\n /^(?:Monday|Tuesday|Wednesday|Thursday|Friday|Saturday|Sunday), (\\d{2})-(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)-(\\d{2}) (\\d{1,2}):(\\d{2}):(\\d{2})(?:\\.(\\d+))? GMT$/\n);\nvar ASC_TIME = new RegExp(\n /^(?:Mon|Tue|Wed|Thu|Fri|Sat|Sun) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) ( [1-9]|\\d{2}) (\\d{1,2}):(\\d{2}):(\\d{2})(?:\\.(\\d+))? (\\d{4})$/\n);\nvar parseRfc7231DateTime = /* @__PURE__ */ __name((value) => {\n if (value === null || value === void 0) {\n return void 0;\n }\n if (typeof value !== \"string\") {\n throw new TypeError(\"RFC-7231 date-times must be expressed as strings\");\n }\n let match = IMF_FIXDATE.exec(value);\n if (match) {\n const [_, dayStr, monthStr, yearStr, hours, minutes, seconds, fractionalMilliseconds] = match;\n return buildDate(\n strictParseShort(stripLeadingZeroes(yearStr)),\n parseMonthByShortName(monthStr),\n parseDateValue(dayStr, \"day\", 1, 31),\n { hours, minutes, seconds, fractionalMilliseconds }\n );\n }\n match = RFC_850_DATE.exec(value);\n if (match) {\n const [_, dayStr, monthStr, yearStr, hours, minutes, seconds, fractionalMilliseconds] = match;\n return adjustRfc850Year(\n buildDate(parseTwoDigitYear(yearStr), parseMonthByShortName(monthStr), parseDateValue(dayStr, \"day\", 1, 31), {\n hours,\n minutes,\n seconds,\n fractionalMilliseconds\n })\n );\n }\n match = ASC_TIME.exec(value);\n if (match) {\n const [_, monthStr, dayStr, hours, minutes, seconds, fractionalMilliseconds, yearStr] = match;\n return buildDate(\n strictParseShort(stripLeadingZeroes(yearStr)),\n parseMonthByShortName(monthStr),\n parseDateValue(dayStr.trimLeft(), \"day\", 1, 31),\n { hours, minutes, seconds, fractionalMilliseconds }\n );\n }\n throw new TypeError(\"Invalid RFC-7231 date-time value\");\n}, \"parseRfc7231DateTime\");\nvar parseEpochTimestamp = /* @__PURE__ */ __name((value) => {\n if (value === null || value === void 0) {\n return void 0;\n }\n let valueAsDouble;\n if (typeof value === \"number\") {\n valueAsDouble = value;\n } else if (typeof value === \"string\") {\n valueAsDouble = strictParseDouble(value);\n } else if (typeof value === \"object\" && value.tag === 1) {\n valueAsDouble = value.value;\n } else {\n throw new TypeError(\"Epoch timestamps must be expressed as floating point numbers or their string representation\");\n }\n if (Number.isNaN(valueAsDouble) || valueAsDouble === Infinity || valueAsDouble === -Infinity) {\n throw new TypeError(\"Epoch timestamps must be valid, non-Infinite, non-NaN numerics\");\n }\n return new Date(Math.round(valueAsDouble * 1e3));\n}, \"parseEpochTimestamp\");\nvar buildDate = /* @__PURE__ */ __name((year, month, day, time) => {\n const adjustedMonth = month - 1;\n validateDayOfMonth(year, adjustedMonth, day);\n return new Date(\n Date.UTC(\n year,\n adjustedMonth,\n day,\n parseDateValue(time.hours, \"hour\", 0, 23),\n parseDateValue(time.minutes, \"minute\", 0, 59),\n // seconds can go up to 60 for leap seconds\n parseDateValue(time.seconds, \"seconds\", 0, 60),\n parseMilliseconds(time.fractionalMilliseconds)\n )\n );\n}, \"buildDate\");\nvar parseTwoDigitYear = /* @__PURE__ */ __name((value) => {\n const thisYear = (/* @__PURE__ */ new Date()).getUTCFullYear();\n const valueInThisCentury = Math.floor(thisYear / 100) * 100 + strictParseShort(stripLeadingZeroes(value));\n if (valueInThisCentury < thisYear) {\n return valueInThisCentury + 100;\n }\n return valueInThisCentury;\n}, \"parseTwoDigitYear\");\nvar FIFTY_YEARS_IN_MILLIS = 50 * 365 * 24 * 60 * 60 * 1e3;\nvar adjustRfc850Year = /* @__PURE__ */ __name((input) => {\n if (input.getTime() - (/* @__PURE__ */ new Date()).getTime() > FIFTY_YEARS_IN_MILLIS) {\n return new Date(\n Date.UTC(\n input.getUTCFullYear() - 100,\n input.getUTCMonth(),\n input.getUTCDate(),\n input.getUTCHours(),\n input.getUTCMinutes(),\n input.getUTCSeconds(),\n input.getUTCMilliseconds()\n )\n );\n }\n return input;\n}, \"adjustRfc850Year\");\nvar parseMonthByShortName = /* @__PURE__ */ __name((value) => {\n const monthIdx = MONTHS.indexOf(value);\n if (monthIdx < 0) {\n throw new TypeError(`Invalid month: ${value}`);\n }\n return monthIdx + 1;\n}, \"parseMonthByShortName\");\nvar DAYS_IN_MONTH = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\nvar validateDayOfMonth = /* @__PURE__ */ __name((year, month, day) => {\n let maxDays = DAYS_IN_MONTH[month];\n if (month === 1 && isLeapYear(year)) {\n maxDays = 29;\n }\n if (day > maxDays) {\n throw new TypeError(`Invalid day for ${MONTHS[month]} in ${year}: ${day}`);\n }\n}, \"validateDayOfMonth\");\nvar isLeapYear = /* @__PURE__ */ __name((year) => {\n return year % 4 === 0 && (year % 100 !== 0 || year % 400 === 0);\n}, \"isLeapYear\");\nvar parseDateValue = /* @__PURE__ */ __name((value, type, lower, upper) => {\n const dateVal = strictParseByte(stripLeadingZeroes(value));\n if (dateVal < lower || dateVal > upper) {\n throw new TypeError(`${type} must be between ${lower} and ${upper}, inclusive`);\n }\n return dateVal;\n}, \"parseDateValue\");\nvar parseMilliseconds = /* @__PURE__ */ __name((value) => {\n if (value === null || value === void 0) {\n return 0;\n }\n return strictParseFloat32(\"0.\" + value) * 1e3;\n}, \"parseMilliseconds\");\nvar parseOffsetToMilliseconds = /* @__PURE__ */ __name((value) => {\n const directionStr = value[0];\n let direction = 1;\n if (directionStr == \"+\") {\n direction = 1;\n } else if (directionStr == \"-\") {\n direction = -1;\n } else {\n throw new TypeError(`Offset direction, ${directionStr}, must be \"+\" or \"-\"`);\n }\n const hour = Number(value.substring(1, 3));\n const minute = Number(value.substring(4, 6));\n return direction * (hour * 60 + minute) * 60 * 1e3;\n}, \"parseOffsetToMilliseconds\");\nvar stripLeadingZeroes = /* @__PURE__ */ __name((value) => {\n let idx = 0;\n while (idx < value.length - 1 && value.charAt(idx) === \"0\") {\n idx++;\n }\n if (idx === 0) {\n return value;\n }\n return value.slice(idx);\n}, \"stripLeadingZeroes\");\n\n// src/exceptions.ts\nvar _ServiceException = class _ServiceException extends Error {\n constructor(options) {\n super(options.message);\n Object.setPrototypeOf(this, _ServiceException.prototype);\n this.name = options.name;\n this.$fault = options.$fault;\n this.$metadata = options.$metadata;\n }\n};\n__name(_ServiceException, \"ServiceException\");\nvar ServiceException = _ServiceException;\nvar decorateServiceException = /* @__PURE__ */ __name((exception, additions = {}) => {\n Object.entries(additions).filter(([, v]) => v !== void 0).forEach(([k, v]) => {\n if (exception[k] == void 0 || exception[k] === \"\") {\n exception[k] = v;\n }\n });\n const message = exception.message || exception.Message || \"UnknownError\";\n exception.message = message;\n delete exception.Message;\n return exception;\n}, \"decorateServiceException\");\n\n// src/default-error-handler.ts\nvar throwDefaultError = /* @__PURE__ */ __name(({ output, parsedBody, exceptionCtor, errorCode }) => {\n const $metadata = deserializeMetadata(output);\n const statusCode = $metadata.httpStatusCode ? $metadata.httpStatusCode + \"\" : void 0;\n const response = new exceptionCtor({\n name: (parsedBody == null ? void 0 : parsedBody.code) || (parsedBody == null ? void 0 : parsedBody.Code) || errorCode || statusCode || \"UnknownError\",\n $fault: \"client\",\n $metadata\n });\n throw decorateServiceException(response, parsedBody);\n}, \"throwDefaultError\");\nvar withBaseException = /* @__PURE__ */ __name((ExceptionCtor) => {\n return ({ output, parsedBody, errorCode }) => {\n throwDefaultError({ output, parsedBody, exceptionCtor: ExceptionCtor, errorCode });\n };\n}, \"withBaseException\");\nvar deserializeMetadata = /* @__PURE__ */ __name((output) => ({\n httpStatusCode: output.statusCode,\n requestId: output.headers[\"x-amzn-requestid\"] ?? output.headers[\"x-amzn-request-id\"] ?? output.headers[\"x-amz-request-id\"],\n extendedRequestId: output.headers[\"x-amz-id-2\"],\n cfId: output.headers[\"x-amz-cf-id\"]\n}), \"deserializeMetadata\");\n\n// src/defaults-mode.ts\nvar loadConfigsForDefaultMode = /* @__PURE__ */ __name((mode) => {\n switch (mode) {\n case \"standard\":\n return {\n retryMode: \"standard\",\n connectionTimeout: 3100\n };\n case \"in-region\":\n return {\n retryMode: \"standard\",\n connectionTimeout: 1100\n };\n case \"cross-region\":\n return {\n retryMode: \"standard\",\n connectionTimeout: 3100\n };\n case \"mobile\":\n return {\n retryMode: \"standard\",\n connectionTimeout: 3e4\n };\n default:\n return {};\n }\n}, \"loadConfigsForDefaultMode\");\n\n// src/emitWarningIfUnsupportedVersion.ts\nvar warningEmitted = false;\nvar emitWarningIfUnsupportedVersion = /* @__PURE__ */ __name((version) => {\n if (version && !warningEmitted && parseInt(version.substring(1, version.indexOf(\".\"))) < 16) {\n warningEmitted = true;\n }\n}, \"emitWarningIfUnsupportedVersion\");\n\n// src/extended-encode-uri-component.ts\nfunction extendedEncodeURIComponent(str) {\n return encodeURIComponent(str).replace(/[!'()*]/g, function(c) {\n return \"%\" + c.charCodeAt(0).toString(16).toUpperCase();\n });\n}\n__name(extendedEncodeURIComponent, \"extendedEncodeURIComponent\");\n\n// src/extensions/checksum.ts\n\nvar getChecksumConfiguration = /* @__PURE__ */ __name((runtimeConfig) => {\n const checksumAlgorithms = [];\n for (const id in import_types.AlgorithmId) {\n const algorithmId = import_types.AlgorithmId[id];\n if (runtimeConfig[algorithmId] === void 0) {\n continue;\n }\n checksumAlgorithms.push({\n algorithmId: () => algorithmId,\n checksumConstructor: () => runtimeConfig[algorithmId]\n });\n }\n return {\n _checksumAlgorithms: checksumAlgorithms,\n addChecksumAlgorithm(algo) {\n this._checksumAlgorithms.push(algo);\n },\n checksumAlgorithms() {\n return this._checksumAlgorithms;\n }\n };\n}, \"getChecksumConfiguration\");\nvar resolveChecksumRuntimeConfig = /* @__PURE__ */ __name((clientConfig) => {\n const runtimeConfig = {};\n clientConfig.checksumAlgorithms().forEach((checksumAlgorithm) => {\n runtimeConfig[checksumAlgorithm.algorithmId()] = checksumAlgorithm.checksumConstructor();\n });\n return runtimeConfig;\n}, \"resolveChecksumRuntimeConfig\");\n\n// src/extensions/retry.ts\nvar getRetryConfiguration = /* @__PURE__ */ __name((runtimeConfig) => {\n let _retryStrategy = runtimeConfig.retryStrategy;\n return {\n setRetryStrategy(retryStrategy) {\n _retryStrategy = retryStrategy;\n },\n retryStrategy() {\n return _retryStrategy;\n }\n };\n}, \"getRetryConfiguration\");\nvar resolveRetryRuntimeConfig = /* @__PURE__ */ __name((retryStrategyConfiguration) => {\n const runtimeConfig = {};\n runtimeConfig.retryStrategy = retryStrategyConfiguration.retryStrategy();\n return runtimeConfig;\n}, \"resolveRetryRuntimeConfig\");\n\n// src/extensions/defaultExtensionConfiguration.ts\nvar getDefaultExtensionConfiguration = /* @__PURE__ */ __name((runtimeConfig) => {\n return {\n ...getChecksumConfiguration(runtimeConfig),\n ...getRetryConfiguration(runtimeConfig)\n };\n}, \"getDefaultExtensionConfiguration\");\nvar getDefaultClientConfiguration = getDefaultExtensionConfiguration;\nvar resolveDefaultRuntimeConfig = /* @__PURE__ */ __name((config) => {\n return {\n ...resolveChecksumRuntimeConfig(config),\n ...resolveRetryRuntimeConfig(config)\n };\n}, \"resolveDefaultRuntimeConfig\");\n\n// src/get-array-if-single-item.ts\nvar getArrayIfSingleItem = /* @__PURE__ */ __name((mayBeArray) => Array.isArray(mayBeArray) ? mayBeArray : [mayBeArray], \"getArrayIfSingleItem\");\n\n// src/get-value-from-text-node.ts\nvar getValueFromTextNode = /* @__PURE__ */ __name((obj) => {\n const textNodeName = \"#text\";\n for (const key in obj) {\n if (obj.hasOwnProperty(key) && obj[key][textNodeName] !== void 0) {\n obj[key] = obj[key][textNodeName];\n } else if (typeof obj[key] === \"object\" && obj[key] !== null) {\n obj[key] = getValueFromTextNode(obj[key]);\n }\n }\n return obj;\n}, \"getValueFromTextNode\");\n\n// src/is-serializable-header-value.ts\nvar isSerializableHeaderValue = /* @__PURE__ */ __name((value) => {\n return value != null;\n}, \"isSerializableHeaderValue\");\n\n// src/lazy-json.ts\nvar StringWrapper = /* @__PURE__ */ __name(function() {\n const Class = Object.getPrototypeOf(this).constructor;\n const Constructor = Function.bind.apply(String, [null, ...arguments]);\n const instance = new Constructor();\n Object.setPrototypeOf(instance, Class.prototype);\n return instance;\n}, \"StringWrapper\");\nStringWrapper.prototype = Object.create(String.prototype, {\n constructor: {\n value: StringWrapper,\n enumerable: false,\n writable: true,\n configurable: true\n }\n});\nObject.setPrototypeOf(StringWrapper, String);\nvar _LazyJsonString = class _LazyJsonString extends StringWrapper {\n deserializeJSON() {\n return JSON.parse(super.toString());\n }\n toJSON() {\n return super.toString();\n }\n static fromObject(object) {\n if (object instanceof _LazyJsonString) {\n return object;\n } else if (object instanceof String || typeof object === \"string\") {\n return new _LazyJsonString(object);\n }\n return new _LazyJsonString(JSON.stringify(object));\n }\n};\n__name(_LazyJsonString, \"LazyJsonString\");\nvar LazyJsonString = _LazyJsonString;\n\n// src/NoOpLogger.ts\nvar _NoOpLogger = class _NoOpLogger {\n trace() {\n }\n debug() {\n }\n info() {\n }\n warn() {\n }\n error() {\n }\n};\n__name(_NoOpLogger, \"NoOpLogger\");\nvar NoOpLogger = _NoOpLogger;\n\n// src/object-mapping.ts\nfunction map(arg0, arg1, arg2) {\n let target;\n let filter;\n let instructions;\n if (typeof arg1 === \"undefined\" && typeof arg2 === \"undefined\") {\n target = {};\n instructions = arg0;\n } else {\n target = arg0;\n if (typeof arg1 === \"function\") {\n filter = arg1;\n instructions = arg2;\n return mapWithFilter(target, filter, instructions);\n } else {\n instructions = arg1;\n }\n }\n for (const key of Object.keys(instructions)) {\n if (!Array.isArray(instructions[key])) {\n target[key] = instructions[key];\n continue;\n }\n applyInstruction(target, null, instructions, key);\n }\n return target;\n}\n__name(map, \"map\");\nvar convertMap = /* @__PURE__ */ __name((target) => {\n const output = {};\n for (const [k, v] of Object.entries(target || {})) {\n output[k] = [, v];\n }\n return output;\n}, \"convertMap\");\nvar take = /* @__PURE__ */ __name((source, instructions) => {\n const out = {};\n for (const key in instructions) {\n applyInstruction(out, source, instructions, key);\n }\n return out;\n}, \"take\");\nvar mapWithFilter = /* @__PURE__ */ __name((target, filter, instructions) => {\n return map(\n target,\n Object.entries(instructions).reduce(\n (_instructions, [key, value]) => {\n if (Array.isArray(value)) {\n _instructions[key] = value;\n } else {\n if (typeof value === \"function\") {\n _instructions[key] = [filter, value()];\n } else {\n _instructions[key] = [filter, value];\n }\n }\n return _instructions;\n },\n {}\n )\n );\n}, \"mapWithFilter\");\nvar applyInstruction = /* @__PURE__ */ __name((target, source, instructions, targetKey) => {\n if (source !== null) {\n let instruction = instructions[targetKey];\n if (typeof instruction === \"function\") {\n instruction = [, instruction];\n }\n const [filter2 = nonNullish, valueFn = pass, sourceKey = targetKey] = instruction;\n if (typeof filter2 === \"function\" && filter2(source[sourceKey]) || typeof filter2 !== \"function\" && !!filter2) {\n target[targetKey] = valueFn(source[sourceKey]);\n }\n return;\n }\n let [filter, value] = instructions[targetKey];\n if (typeof value === \"function\") {\n let _value;\n const defaultFilterPassed = filter === void 0 && (_value = value()) != null;\n const customFilterPassed = typeof filter === \"function\" && !!filter(void 0) || typeof filter !== \"function\" && !!filter;\n if (defaultFilterPassed) {\n target[targetKey] = _value;\n } else if (customFilterPassed) {\n target[targetKey] = value();\n }\n } else {\n const defaultFilterPassed = filter === void 0 && value != null;\n const customFilterPassed = typeof filter === \"function\" && !!filter(value) || typeof filter !== \"function\" && !!filter;\n if (defaultFilterPassed || customFilterPassed) {\n target[targetKey] = value;\n }\n }\n}, \"applyInstruction\");\nvar nonNullish = /* @__PURE__ */ __name((_) => _ != null, \"nonNullish\");\nvar pass = /* @__PURE__ */ __name((_) => _, \"pass\");\n\n// src/quote-header.ts\nfunction quoteHeader(part) {\n if (part.includes(\",\") || part.includes('\"')) {\n part = `\"${part.replace(/\"/g, '\\\\\"')}\"`;\n }\n return part;\n}\n__name(quoteHeader, \"quoteHeader\");\n\n// src/resolve-path.ts\nvar resolvedPath = /* @__PURE__ */ __name((resolvedPath2, input, memberName, labelValueProvider, uriLabel, isGreedyLabel) => {\n if (input != null && input[memberName] !== void 0) {\n const labelValue = labelValueProvider();\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: \" + memberName + \".\");\n }\n resolvedPath2 = resolvedPath2.replace(\n uriLabel,\n isGreedyLabel ? labelValue.split(\"/\").map((segment) => extendedEncodeURIComponent(segment)).join(\"/\") : extendedEncodeURIComponent(labelValue)\n );\n } else {\n throw new Error(\"No value provided for input HTTP label: \" + memberName + \".\");\n }\n return resolvedPath2;\n}, \"resolvedPath\");\n\n// src/ser-utils.ts\nvar serializeFloat = /* @__PURE__ */ __name((value) => {\n if (value !== value) {\n return \"NaN\";\n }\n switch (value) {\n case Infinity:\n return \"Infinity\";\n case -Infinity:\n return \"-Infinity\";\n default:\n return value;\n }\n}, \"serializeFloat\");\nvar serializeDateTime = /* @__PURE__ */ __name((date) => date.toISOString().replace(\".000Z\", \"Z\"), \"serializeDateTime\");\n\n// src/serde-json.ts\nvar _json = /* @__PURE__ */ __name((obj) => {\n if (obj == null) {\n return {};\n }\n if (Array.isArray(obj)) {\n return obj.filter((_) => _ != null).map(_json);\n }\n if (typeof obj === \"object\") {\n const target = {};\n for (const key of Object.keys(obj)) {\n if (obj[key] == null) {\n continue;\n }\n target[key] = _json(obj[key]);\n }\n return target;\n }\n return obj;\n}, \"_json\");\n\n// src/split-every.ts\nfunction splitEvery(value, delimiter, numDelimiters) {\n if (numDelimiters <= 0 || !Number.isInteger(numDelimiters)) {\n throw new Error(\"Invalid number of delimiters (\" + numDelimiters + \") for splitEvery.\");\n }\n const segments = value.split(delimiter);\n if (numDelimiters === 1) {\n return segments;\n }\n const compoundSegments = [];\n let currentSegment = \"\";\n for (let i = 0; i < segments.length; i++) {\n if (currentSegment === \"\") {\n currentSegment = segments[i];\n } else {\n currentSegment += delimiter + segments[i];\n }\n if ((i + 1) % numDelimiters === 0) {\n compoundSegments.push(currentSegment);\n currentSegment = \"\";\n }\n }\n if (currentSegment !== \"\") {\n compoundSegments.push(currentSegment);\n }\n return compoundSegments;\n}\n__name(splitEvery, \"splitEvery\");\n\n// src/split-header.ts\nvar splitHeader = /* @__PURE__ */ __name((value) => {\n const z = value.length;\n const values = [];\n let withinQuotes = false;\n let prevChar = void 0;\n let anchor = 0;\n for (let i = 0; i < z; ++i) {\n const char = value[i];\n switch (char) {\n case `\"`:\n if (prevChar !== \"\\\\\") {\n withinQuotes = !withinQuotes;\n }\n break;\n case \",\":\n if (!withinQuotes) {\n values.push(value.slice(anchor, i));\n anchor = i + 1;\n }\n break;\n default:\n }\n prevChar = char;\n }\n values.push(value.slice(anchor));\n return values.map((v) => {\n v = v.trim();\n const z2 = v.length;\n if (z2 < 2) {\n return v;\n }\n if (v[0] === `\"` && v[z2 - 1] === `\"`) {\n v = v.slice(1, z2 - 1);\n }\n return v.replace(/\\\\\"/g, '\"');\n });\n}, \"splitHeader\");\n// Annotate the CommonJS export names for ESM import in node:\n\n0 && (module.exports = {\n Client,\n collectBody,\n Command,\n SENSITIVE_STRING,\n createAggregatedClient,\n dateToUtcString,\n parseRfc3339DateTime,\n parseRfc3339DateTimeWithOffset,\n parseRfc7231DateTime,\n parseEpochTimestamp,\n throwDefaultError,\n withBaseException,\n loadConfigsForDefaultMode,\n emitWarningIfUnsupportedVersion,\n ServiceException,\n decorateServiceException,\n extendedEncodeURIComponent,\n getDefaultExtensionConfiguration,\n getDefaultClientConfiguration,\n resolveDefaultRuntimeConfig,\n getArrayIfSingleItem,\n getValueFromTextNode,\n isSerializableHeaderValue,\n StringWrapper,\n LazyJsonString,\n NoOpLogger,\n map,\n convertMap,\n take,\n parseBoolean,\n expectBoolean,\n expectNumber,\n expectFloat32,\n expectLong,\n expectInt,\n expectInt32,\n expectShort,\n expectByte,\n expectNonNull,\n expectObject,\n expectString,\n expectUnion,\n strictParseDouble,\n strictParseFloat,\n strictParseFloat32,\n limitedParseDouble,\n handleFloat,\n limitedParseFloat,\n limitedParseFloat32,\n strictParseLong,\n strictParseInt,\n strictParseInt32,\n strictParseShort,\n strictParseByte,\n logger,\n quoteHeader,\n resolvedPath,\n serializeFloat,\n serializeDateTime,\n _json,\n splitEvery,\n splitHeader\n});\n\n","var __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/index.ts\nvar src_exports = {};\n__export(src_exports, {\n AlgorithmId: () => AlgorithmId,\n EndpointURLScheme: () => EndpointURLScheme,\n FieldPosition: () => FieldPosition,\n HttpApiKeyAuthLocation: () => HttpApiKeyAuthLocation,\n HttpAuthLocation: () => HttpAuthLocation,\n IniSectionType: () => IniSectionType,\n RequestHandlerProtocol: () => RequestHandlerProtocol,\n SMITHY_CONTEXT_KEY: () => SMITHY_CONTEXT_KEY,\n getDefaultClientConfiguration: () => getDefaultClientConfiguration,\n resolveDefaultRuntimeConfig: () => resolveDefaultRuntimeConfig\n});\nmodule.exports = __toCommonJS(src_exports);\n\n// src/auth/auth.ts\nvar HttpAuthLocation = /* @__PURE__ */ ((HttpAuthLocation2) => {\n HttpAuthLocation2[\"HEADER\"] = \"header\";\n HttpAuthLocation2[\"QUERY\"] = \"query\";\n return HttpAuthLocation2;\n})(HttpAuthLocation || {});\n\n// src/auth/HttpApiKeyAuth.ts\nvar HttpApiKeyAuthLocation = /* @__PURE__ */ ((HttpApiKeyAuthLocation2) => {\n HttpApiKeyAuthLocation2[\"HEADER\"] = \"header\";\n HttpApiKeyAuthLocation2[\"QUERY\"] = \"query\";\n return HttpApiKeyAuthLocation2;\n})(HttpApiKeyAuthLocation || {});\n\n// src/endpoint.ts\nvar EndpointURLScheme = /* @__PURE__ */ ((EndpointURLScheme2) => {\n EndpointURLScheme2[\"HTTP\"] = \"http\";\n EndpointURLScheme2[\"HTTPS\"] = \"https\";\n return EndpointURLScheme2;\n})(EndpointURLScheme || {});\n\n// src/extensions/checksum.ts\nvar AlgorithmId = /* @__PURE__ */ ((AlgorithmId2) => {\n AlgorithmId2[\"MD5\"] = \"md5\";\n AlgorithmId2[\"CRC32\"] = \"crc32\";\n AlgorithmId2[\"CRC32C\"] = \"crc32c\";\n AlgorithmId2[\"SHA1\"] = \"sha1\";\n AlgorithmId2[\"SHA256\"] = \"sha256\";\n return AlgorithmId2;\n})(AlgorithmId || {});\nvar getChecksumConfiguration = /* @__PURE__ */ __name((runtimeConfig) => {\n const checksumAlgorithms = [];\n if (runtimeConfig.sha256 !== void 0) {\n checksumAlgorithms.push({\n algorithmId: () => \"sha256\" /* SHA256 */,\n checksumConstructor: () => runtimeConfig.sha256\n });\n }\n if (runtimeConfig.md5 != void 0) {\n checksumAlgorithms.push({\n algorithmId: () => \"md5\" /* MD5 */,\n checksumConstructor: () => runtimeConfig.md5\n });\n }\n return {\n _checksumAlgorithms: checksumAlgorithms,\n addChecksumAlgorithm(algo) {\n this._checksumAlgorithms.push(algo);\n },\n checksumAlgorithms() {\n return this._checksumAlgorithms;\n }\n };\n}, \"getChecksumConfiguration\");\nvar resolveChecksumRuntimeConfig = /* @__PURE__ */ __name((clientConfig) => {\n const runtimeConfig = {};\n clientConfig.checksumAlgorithms().forEach((checksumAlgorithm) => {\n runtimeConfig[checksumAlgorithm.algorithmId()] = checksumAlgorithm.checksumConstructor();\n });\n return runtimeConfig;\n}, \"resolveChecksumRuntimeConfig\");\n\n// src/extensions/defaultClientConfiguration.ts\nvar getDefaultClientConfiguration = /* @__PURE__ */ __name((runtimeConfig) => {\n return {\n ...getChecksumConfiguration(runtimeConfig)\n };\n}, \"getDefaultClientConfiguration\");\nvar resolveDefaultRuntimeConfig = /* @__PURE__ */ __name((config) => {\n return {\n ...resolveChecksumRuntimeConfig(config)\n };\n}, \"resolveDefaultRuntimeConfig\");\n\n// src/http.ts\nvar FieldPosition = /* @__PURE__ */ ((FieldPosition2) => {\n FieldPosition2[FieldPosition2[\"HEADER\"] = 0] = \"HEADER\";\n FieldPosition2[FieldPosition2[\"TRAILER\"] = 1] = \"TRAILER\";\n return FieldPosition2;\n})(FieldPosition || {});\n\n// src/middleware.ts\nvar SMITHY_CONTEXT_KEY = \"__smithy_context\";\n\n// src/profile.ts\nvar IniSectionType = /* @__PURE__ */ ((IniSectionType2) => {\n IniSectionType2[\"PROFILE\"] = \"profile\";\n IniSectionType2[\"SSO_SESSION\"] = \"sso-session\";\n IniSectionType2[\"SERVICES\"] = \"services\";\n return IniSectionType2;\n})(IniSectionType || {});\n\n// src/transfer.ts\nvar RequestHandlerProtocol = /* @__PURE__ */ ((RequestHandlerProtocol2) => {\n RequestHandlerProtocol2[\"HTTP_0_9\"] = \"http/0.9\";\n RequestHandlerProtocol2[\"HTTP_1_0\"] = \"http/1.0\";\n RequestHandlerProtocol2[\"TDS_8_0\"] = \"tds/8.0\";\n return RequestHandlerProtocol2;\n})(RequestHandlerProtocol || {});\n// Annotate the CommonJS export names for ESM import in node:\n\n0 && (module.exports = {\n HttpAuthLocation,\n HttpApiKeyAuthLocation,\n EndpointURLScheme,\n AlgorithmId,\n getDefaultClientConfiguration,\n resolveDefaultRuntimeConfig,\n FieldPosition,\n SMITHY_CONTEXT_KEY,\n IniSectionType,\n RequestHandlerProtocol\n});\n\n","var __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/index.ts\nvar src_exports = {};\n__export(src_exports, {\n parseUrl: () => parseUrl\n});\nmodule.exports = __toCommonJS(src_exports);\nvar import_querystring_parser = require(\"@smithy/querystring-parser\");\nvar parseUrl = /* @__PURE__ */ __name((url) => {\n if (typeof url === \"string\") {\n return parseUrl(new URL(url));\n }\n const { hostname, pathname, port, protocol, search } = url;\n let query;\n if (search) {\n query = (0, import_querystring_parser.parseQueryString)(search);\n }\n return {\n hostname,\n port: port ? parseInt(port) : void 0,\n protocol,\n path: pathname,\n query\n };\n}, \"parseUrl\");\n// Annotate the CommonJS export names for ESM import in node:\n\n0 && (module.exports = {\n parseUrl\n});\n\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.fromBase64 = void 0;\nconst util_buffer_from_1 = require(\"@smithy/util-buffer-from\");\nconst BASE64_REGEX = /^[A-Za-z0-9+/]*={0,2}$/;\nconst fromBase64 = (input) => {\n if ((input.length * 3) % 4 !== 0) {\n throw new TypeError(`Incorrect padding on base64 string.`);\n }\n if (!BASE64_REGEX.exec(input)) {\n throw new TypeError(`Invalid base64 string.`);\n }\n const buffer = (0, util_buffer_from_1.fromString)(input, \"base64\");\n return new Uint8Array(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n};\nexports.fromBase64 = fromBase64;\n","var __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, \"default\"), secondTarget && __copyProps(secondTarget, mod, \"default\"));\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/index.ts\nvar src_exports = {};\nmodule.exports = __toCommonJS(src_exports);\n__reExport(src_exports, require(\"././fromBase64\"), module.exports);\n__reExport(src_exports, require(\"././toBase64\"), module.exports);\n// Annotate the CommonJS export names for ESM import in node:\n\n0 && (module.exports = {\n fromBase64,\n toBase64\n});\n\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.toBase64 = void 0;\nconst util_buffer_from_1 = require(\"@smithy/util-buffer-from\");\nconst util_utf8_1 = require(\"@smithy/util-utf8\");\nconst toBase64 = (_input) => {\n let input;\n if (typeof _input === \"string\") {\n input = (0, util_utf8_1.fromUtf8)(_input);\n }\n else {\n input = _input;\n }\n if (typeof input !== \"object\" || typeof input.byteOffset !== \"number\" || typeof input.byteLength !== \"number\") {\n throw new Error(\"@smithy/util-base64: toBase64 encoder function only accepts string | Uint8Array.\");\n }\n return (0, util_buffer_from_1.fromArrayBuffer)(input.buffer, input.byteOffset, input.byteLength).toString(\"base64\");\n};\nexports.toBase64 = toBase64;\n","var __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/index.ts\nvar src_exports = {};\n__export(src_exports, {\n calculateBodyLength: () => calculateBodyLength\n});\nmodule.exports = __toCommonJS(src_exports);\n\n// src/calculateBodyLength.ts\nvar import_fs = require(\"fs\");\nvar calculateBodyLength = /* @__PURE__ */ __name((body) => {\n if (!body) {\n return 0;\n }\n if (typeof body === \"string\") {\n return Buffer.byteLength(body);\n } else if (typeof body.byteLength === \"number\") {\n return body.byteLength;\n } else if (typeof body.size === \"number\") {\n return body.size;\n } else if (typeof body.start === \"number\" && typeof body.end === \"number\") {\n return body.end + 1 - body.start;\n } else if (typeof body.path === \"string\" || Buffer.isBuffer(body.path)) {\n return (0, import_fs.lstatSync)(body.path).size;\n } else if (typeof body.fd === \"number\") {\n return (0, import_fs.fstatSync)(body.fd).size;\n }\n throw new Error(`Body Length computation failed for ${body}`);\n}, \"calculateBodyLength\");\n// Annotate the CommonJS export names for ESM import in node:\n\n0 && (module.exports = {\n calculateBodyLength\n});\n\n","var __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/index.ts\nvar src_exports = {};\n__export(src_exports, {\n fromArrayBuffer: () => fromArrayBuffer,\n fromString: () => fromString\n});\nmodule.exports = __toCommonJS(src_exports);\nvar import_is_array_buffer = require(\"@smithy/is-array-buffer\");\nvar import_buffer = require(\"buffer\");\nvar fromArrayBuffer = /* @__PURE__ */ __name((input, offset = 0, length = input.byteLength - offset) => {\n if (!(0, import_is_array_buffer.isArrayBuffer)(input)) {\n throw new TypeError(`The \"input\" argument must be ArrayBuffer. Received type ${typeof input} (${input})`);\n }\n return import_buffer.Buffer.from(input, offset, length);\n}, \"fromArrayBuffer\");\nvar fromString = /* @__PURE__ */ __name((input, encoding) => {\n if (typeof input !== \"string\") {\n throw new TypeError(`The \"input\" argument must be of type string. Received type ${typeof input} (${input})`);\n }\n return encoding ? import_buffer.Buffer.from(input, encoding) : import_buffer.Buffer.from(input);\n}, \"fromString\");\n// Annotate the CommonJS export names for ESM import in node:\n\n0 && (module.exports = {\n fromArrayBuffer,\n fromString\n});\n\n","var __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/index.ts\nvar src_exports = {};\n__export(src_exports, {\n SelectorType: () => SelectorType,\n booleanSelector: () => booleanSelector,\n numberSelector: () => numberSelector\n});\nmodule.exports = __toCommonJS(src_exports);\n\n// src/booleanSelector.ts\nvar booleanSelector = /* @__PURE__ */ __name((obj, key, type) => {\n if (!(key in obj))\n return void 0;\n if (obj[key] === \"true\")\n return true;\n if (obj[key] === \"false\")\n return false;\n throw new Error(`Cannot load ${type} \"${key}\". Expected \"true\" or \"false\", got ${obj[key]}.`);\n}, \"booleanSelector\");\n\n// src/numberSelector.ts\nvar numberSelector = /* @__PURE__ */ __name((obj, key, type) => {\n if (!(key in obj))\n return void 0;\n const numberValue = parseInt(obj[key], 10);\n if (Number.isNaN(numberValue)) {\n throw new TypeError(`Cannot load ${type} '${key}'. Expected number, got '${obj[key]}'.`);\n }\n return numberValue;\n}, \"numberSelector\");\n\n// src/types.ts\nvar SelectorType = /* @__PURE__ */ ((SelectorType2) => {\n SelectorType2[\"ENV\"] = \"env\";\n SelectorType2[\"CONFIG\"] = \"shared config entry\";\n return SelectorType2;\n})(SelectorType || {});\n// Annotate the CommonJS export names for ESM import in node:\n\n0 && (module.exports = {\n booleanSelector,\n numberSelector,\n SelectorType\n});\n\n","var __create = Object.create;\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __getProtoOf = Object.getPrototypeOf;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(\n // If the importer is in node compatibility mode or this is not an ESM\n // file that has been converted to a CommonJS file using a Babel-\n // compatible transform (i.e. \"__esModule\" has not been set), then set\n // \"default\" to the CommonJS \"module.exports\" for node compatibility.\n isNodeMode || !mod || !mod.__esModule ? __defProp(target, \"default\", { value: mod, enumerable: true }) : target,\n mod\n));\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/index.ts\nvar src_exports = {};\n__export(src_exports, {\n resolveDefaultsModeConfig: () => resolveDefaultsModeConfig\n});\nmodule.exports = __toCommonJS(src_exports);\n\n// src/resolveDefaultsModeConfig.ts\nvar import_config_resolver = require(\"@smithy/config-resolver\");\nvar import_node_config_provider = require(\"@smithy/node-config-provider\");\nvar import_property_provider = require(\"@smithy/property-provider\");\n\n// src/constants.ts\nvar AWS_EXECUTION_ENV = \"AWS_EXECUTION_ENV\";\nvar AWS_REGION_ENV = \"AWS_REGION\";\nvar AWS_DEFAULT_REGION_ENV = \"AWS_DEFAULT_REGION\";\nvar ENV_IMDS_DISABLED = \"AWS_EC2_METADATA_DISABLED\";\nvar DEFAULTS_MODE_OPTIONS = [\"in-region\", \"cross-region\", \"mobile\", \"standard\", \"legacy\"];\nvar IMDS_REGION_PATH = \"/latest/meta-data/placement/region\";\n\n// src/defaultsModeConfig.ts\nvar AWS_DEFAULTS_MODE_ENV = \"AWS_DEFAULTS_MODE\";\nvar AWS_DEFAULTS_MODE_CONFIG = \"defaults_mode\";\nvar NODE_DEFAULTS_MODE_CONFIG_OPTIONS = {\n environmentVariableSelector: (env) => {\n return env[AWS_DEFAULTS_MODE_ENV];\n },\n configFileSelector: (profile) => {\n return profile[AWS_DEFAULTS_MODE_CONFIG];\n },\n default: \"legacy\"\n};\n\n// src/resolveDefaultsModeConfig.ts\nvar resolveDefaultsModeConfig = /* @__PURE__ */ __name(({\n region = (0, import_node_config_provider.loadConfig)(import_config_resolver.NODE_REGION_CONFIG_OPTIONS),\n defaultsMode = (0, import_node_config_provider.loadConfig)(NODE_DEFAULTS_MODE_CONFIG_OPTIONS)\n} = {}) => (0, import_property_provider.memoize)(async () => {\n const mode = typeof defaultsMode === \"function\" ? await defaultsMode() : defaultsMode;\n switch (mode == null ? void 0 : mode.toLowerCase()) {\n case \"auto\":\n return resolveNodeDefaultsModeAuto(region);\n case \"in-region\":\n case \"cross-region\":\n case \"mobile\":\n case \"standard\":\n case \"legacy\":\n return Promise.resolve(mode == null ? void 0 : mode.toLocaleLowerCase());\n case void 0:\n return Promise.resolve(\"legacy\");\n default:\n throw new Error(\n `Invalid parameter for \"defaultsMode\", expect ${DEFAULTS_MODE_OPTIONS.join(\", \")}, got ${mode}`\n );\n }\n}), \"resolveDefaultsModeConfig\");\nvar resolveNodeDefaultsModeAuto = /* @__PURE__ */ __name(async (clientRegion) => {\n if (clientRegion) {\n const resolvedRegion = typeof clientRegion === \"function\" ? await clientRegion() : clientRegion;\n const inferredRegion = await inferPhysicalRegion();\n if (!inferredRegion) {\n return \"standard\";\n }\n if (resolvedRegion === inferredRegion) {\n return \"in-region\";\n } else {\n return \"cross-region\";\n }\n }\n return \"standard\";\n}, \"resolveNodeDefaultsModeAuto\");\nvar inferPhysicalRegion = /* @__PURE__ */ __name(async () => {\n if (process.env[AWS_EXECUTION_ENV] && (process.env[AWS_REGION_ENV] || process.env[AWS_DEFAULT_REGION_ENV])) {\n return process.env[AWS_REGION_ENV] ?? process.env[AWS_DEFAULT_REGION_ENV];\n }\n if (!process.env[ENV_IMDS_DISABLED]) {\n try {\n const { getInstanceMetadataEndpoint, httpRequest } = await Promise.resolve().then(() => __toESM(require(\"@smithy/credential-provider-imds\")));\n const endpoint = await getInstanceMetadataEndpoint();\n return (await httpRequest({ ...endpoint, path: IMDS_REGION_PATH })).toString();\n } catch (e) {\n }\n }\n}, \"inferPhysicalRegion\");\n// Annotate the CommonJS export names for ESM import in node:\n\n0 && (module.exports = {\n resolveDefaultsModeConfig\n});\n\n","var __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/index.ts\nvar src_exports = {};\n__export(src_exports, {\n EndpointCache: () => EndpointCache,\n EndpointError: () => EndpointError,\n customEndpointFunctions: () => customEndpointFunctions,\n isIpAddress: () => isIpAddress,\n isValidHostLabel: () => isValidHostLabel,\n resolveEndpoint: () => resolveEndpoint\n});\nmodule.exports = __toCommonJS(src_exports);\n\n// src/cache/EndpointCache.ts\nvar _EndpointCache = class _EndpointCache {\n /**\n * @param [size] - desired average maximum capacity. A buffer of 10 additional keys will be allowed\n * before keys are dropped.\n * @param [params] - list of params to consider as part of the cache key.\n *\n * If the params list is not populated, no caching will happen.\n * This may be out of order depending on how the object is created and arrives to this class.\n */\n constructor({ size, params }) {\n this.data = /* @__PURE__ */ new Map();\n this.parameters = [];\n this.capacity = size ?? 50;\n if (params) {\n this.parameters = params;\n }\n }\n /**\n * @param endpointParams - query for endpoint.\n * @param resolver - provider of the value if not present.\n * @returns endpoint corresponding to the query.\n */\n get(endpointParams, resolver) {\n const key = this.hash(endpointParams);\n if (key === false) {\n return resolver();\n }\n if (!this.data.has(key)) {\n if (this.data.size > this.capacity + 10) {\n const keys = this.data.keys();\n let i = 0;\n while (true) {\n const { value, done } = keys.next();\n this.data.delete(value);\n if (done || ++i > 10) {\n break;\n }\n }\n }\n this.data.set(key, resolver());\n }\n return this.data.get(key);\n }\n size() {\n return this.data.size;\n }\n /**\n * @returns cache key or false if not cachable.\n */\n hash(endpointParams) {\n let buffer = \"\";\n const { parameters } = this;\n if (parameters.length === 0) {\n return false;\n }\n for (const param of parameters) {\n const val = String(endpointParams[param] ?? \"\");\n if (val.includes(\"|;\")) {\n return false;\n }\n buffer += val + \"|;\";\n }\n return buffer;\n }\n};\n__name(_EndpointCache, \"EndpointCache\");\nvar EndpointCache = _EndpointCache;\n\n// src/lib/isIpAddress.ts\nvar IP_V4_REGEX = new RegExp(\n `^(?:25[0-5]|2[0-4]\\\\d|1\\\\d\\\\d|[1-9]\\\\d|\\\\d)(?:\\\\.(?:25[0-5]|2[0-4]\\\\d|1\\\\d\\\\d|[1-9]\\\\d|\\\\d)){3}$`\n);\nvar isIpAddress = /* @__PURE__ */ __name((value) => IP_V4_REGEX.test(value) || value.startsWith(\"[\") && value.endsWith(\"]\"), \"isIpAddress\");\n\n// src/lib/isValidHostLabel.ts\nvar VALID_HOST_LABEL_REGEX = new RegExp(`^(?!.*-$)(?!-)[a-zA-Z0-9-]{1,63}$`);\nvar isValidHostLabel = /* @__PURE__ */ __name((value, allowSubDomains = false) => {\n if (!allowSubDomains) {\n return VALID_HOST_LABEL_REGEX.test(value);\n }\n const labels = value.split(\".\");\n for (const label of labels) {\n if (!isValidHostLabel(label)) {\n return false;\n }\n }\n return true;\n}, \"isValidHostLabel\");\n\n// src/utils/customEndpointFunctions.ts\nvar customEndpointFunctions = {};\n\n// src/debug/debugId.ts\nvar debugId = \"endpoints\";\n\n// src/debug/toDebugString.ts\nfunction toDebugString(input) {\n if (typeof input !== \"object\" || input == null) {\n return input;\n }\n if (\"ref\" in input) {\n return `$${toDebugString(input.ref)}`;\n }\n if (\"fn\" in input) {\n return `${input.fn}(${(input.argv || []).map(toDebugString).join(\", \")})`;\n }\n return JSON.stringify(input, null, 2);\n}\n__name(toDebugString, \"toDebugString\");\n\n// src/types/EndpointError.ts\nvar _EndpointError = class _EndpointError extends Error {\n constructor(message) {\n super(message);\n this.name = \"EndpointError\";\n }\n};\n__name(_EndpointError, \"EndpointError\");\nvar EndpointError = _EndpointError;\n\n// src/lib/booleanEquals.ts\nvar booleanEquals = /* @__PURE__ */ __name((value1, value2) => value1 === value2, \"booleanEquals\");\n\n// src/lib/getAttrPathList.ts\nvar getAttrPathList = /* @__PURE__ */ __name((path) => {\n const parts = path.split(\".\");\n const pathList = [];\n for (const part of parts) {\n const squareBracketIndex = part.indexOf(\"[\");\n if (squareBracketIndex !== -1) {\n if (part.indexOf(\"]\") !== part.length - 1) {\n throw new EndpointError(`Path: '${path}' does not end with ']'`);\n }\n const arrayIndex = part.slice(squareBracketIndex + 1, -1);\n if (Number.isNaN(parseInt(arrayIndex))) {\n throw new EndpointError(`Invalid array index: '${arrayIndex}' in path: '${path}'`);\n }\n if (squareBracketIndex !== 0) {\n pathList.push(part.slice(0, squareBracketIndex));\n }\n pathList.push(arrayIndex);\n } else {\n pathList.push(part);\n }\n }\n return pathList;\n}, \"getAttrPathList\");\n\n// src/lib/getAttr.ts\nvar getAttr = /* @__PURE__ */ __name((value, path) => getAttrPathList(path).reduce((acc, index) => {\n if (typeof acc !== \"object\") {\n throw new EndpointError(`Index '${index}' in '${path}' not found in '${JSON.stringify(value)}'`);\n } else if (Array.isArray(acc)) {\n return acc[parseInt(index)];\n }\n return acc[index];\n}, value), \"getAttr\");\n\n// src/lib/isSet.ts\nvar isSet = /* @__PURE__ */ __name((value) => value != null, \"isSet\");\n\n// src/lib/not.ts\nvar not = /* @__PURE__ */ __name((value) => !value, \"not\");\n\n// src/lib/parseURL.ts\nvar import_types3 = require(\"@smithy/types\");\nvar DEFAULT_PORTS = {\n [import_types3.EndpointURLScheme.HTTP]: 80,\n [import_types3.EndpointURLScheme.HTTPS]: 443\n};\nvar parseURL = /* @__PURE__ */ __name((value) => {\n const whatwgURL = (() => {\n try {\n if (value instanceof URL) {\n return value;\n }\n if (typeof value === \"object\" && \"hostname\" in value) {\n const { hostname: hostname2, port, protocol: protocol2 = \"\", path = \"\", query = {} } = value;\n const url = new URL(`${protocol2}//${hostname2}${port ? `:${port}` : \"\"}${path}`);\n url.search = Object.entries(query).map(([k, v]) => `${k}=${v}`).join(\"&\");\n return url;\n }\n return new URL(value);\n } catch (error) {\n return null;\n }\n })();\n if (!whatwgURL) {\n console.error(`Unable to parse ${JSON.stringify(value)} as a whatwg URL.`);\n return null;\n }\n const urlString = whatwgURL.href;\n const { host, hostname, pathname, protocol, search } = whatwgURL;\n if (search) {\n return null;\n }\n const scheme = protocol.slice(0, -1);\n if (!Object.values(import_types3.EndpointURLScheme).includes(scheme)) {\n return null;\n }\n const isIp = isIpAddress(hostname);\n const inputContainsDefaultPort = urlString.includes(`${host}:${DEFAULT_PORTS[scheme]}`) || typeof value === \"string\" && value.includes(`${host}:${DEFAULT_PORTS[scheme]}`);\n const authority = `${host}${inputContainsDefaultPort ? `:${DEFAULT_PORTS[scheme]}` : ``}`;\n return {\n scheme,\n authority,\n path: pathname,\n normalizedPath: pathname.endsWith(\"/\") ? pathname : `${pathname}/`,\n isIp\n };\n}, \"parseURL\");\n\n// src/lib/stringEquals.ts\nvar stringEquals = /* @__PURE__ */ __name((value1, value2) => value1 === value2, \"stringEquals\");\n\n// src/lib/substring.ts\nvar substring = /* @__PURE__ */ __name((input, start, stop, reverse) => {\n if (start >= stop || input.length < stop) {\n return null;\n }\n if (!reverse) {\n return input.substring(start, stop);\n }\n return input.substring(input.length - stop, input.length - start);\n}, \"substring\");\n\n// src/lib/uriEncode.ts\nvar uriEncode = /* @__PURE__ */ __name((value) => encodeURIComponent(value).replace(/[!*'()]/g, (c) => `%${c.charCodeAt(0).toString(16).toUpperCase()}`), \"uriEncode\");\n\n// src/utils/endpointFunctions.ts\nvar endpointFunctions = {\n booleanEquals,\n getAttr,\n isSet,\n isValidHostLabel,\n not,\n parseURL,\n stringEquals,\n substring,\n uriEncode\n};\n\n// src/utils/evaluateTemplate.ts\nvar evaluateTemplate = /* @__PURE__ */ __name((template, options) => {\n const evaluatedTemplateArr = [];\n const templateContext = {\n ...options.endpointParams,\n ...options.referenceRecord\n };\n let currentIndex = 0;\n while (currentIndex < template.length) {\n const openingBraceIndex = template.indexOf(\"{\", currentIndex);\n if (openingBraceIndex === -1) {\n evaluatedTemplateArr.push(template.slice(currentIndex));\n break;\n }\n evaluatedTemplateArr.push(template.slice(currentIndex, openingBraceIndex));\n const closingBraceIndex = template.indexOf(\"}\", openingBraceIndex);\n if (closingBraceIndex === -1) {\n evaluatedTemplateArr.push(template.slice(openingBraceIndex));\n break;\n }\n if (template[openingBraceIndex + 1] === \"{\" && template[closingBraceIndex + 1] === \"}\") {\n evaluatedTemplateArr.push(template.slice(openingBraceIndex + 1, closingBraceIndex));\n currentIndex = closingBraceIndex + 2;\n }\n const parameterName = template.substring(openingBraceIndex + 1, closingBraceIndex);\n if (parameterName.includes(\"#\")) {\n const [refName, attrName] = parameterName.split(\"#\");\n evaluatedTemplateArr.push(getAttr(templateContext[refName], attrName));\n } else {\n evaluatedTemplateArr.push(templateContext[parameterName]);\n }\n currentIndex = closingBraceIndex + 1;\n }\n return evaluatedTemplateArr.join(\"\");\n}, \"evaluateTemplate\");\n\n// src/utils/getReferenceValue.ts\nvar getReferenceValue = /* @__PURE__ */ __name(({ ref }, options) => {\n const referenceRecord = {\n ...options.endpointParams,\n ...options.referenceRecord\n };\n return referenceRecord[ref];\n}, \"getReferenceValue\");\n\n// src/utils/evaluateExpression.ts\nvar evaluateExpression = /* @__PURE__ */ __name((obj, keyName, options) => {\n if (typeof obj === \"string\") {\n return evaluateTemplate(obj, options);\n } else if (obj[\"fn\"]) {\n return callFunction(obj, options);\n } else if (obj[\"ref\"]) {\n return getReferenceValue(obj, options);\n }\n throw new EndpointError(`'${keyName}': ${String(obj)} is not a string, function or reference.`);\n}, \"evaluateExpression\");\n\n// src/utils/callFunction.ts\nvar callFunction = /* @__PURE__ */ __name(({ fn, argv }, options) => {\n const evaluatedArgs = argv.map(\n (arg) => [\"boolean\", \"number\"].includes(typeof arg) ? arg : evaluateExpression(arg, \"arg\", options)\n );\n const fnSegments = fn.split(\".\");\n if (fnSegments[0] in customEndpointFunctions && fnSegments[1] != null) {\n return customEndpointFunctions[fnSegments[0]][fnSegments[1]](...evaluatedArgs);\n }\n return endpointFunctions[fn](...evaluatedArgs);\n}, \"callFunction\");\n\n// src/utils/evaluateCondition.ts\nvar evaluateCondition = /* @__PURE__ */ __name(({ assign, ...fnArgs }, options) => {\n var _a, _b;\n if (assign && assign in options.referenceRecord) {\n throw new EndpointError(`'${assign}' is already defined in Reference Record.`);\n }\n const value = callFunction(fnArgs, options);\n (_b = (_a = options.logger) == null ? void 0 : _a.debug) == null ? void 0 : _b.call(_a, `${debugId} evaluateCondition: ${toDebugString(fnArgs)} = ${toDebugString(value)}`);\n return {\n result: value === \"\" ? true : !!value,\n ...assign != null && { toAssign: { name: assign, value } }\n };\n}, \"evaluateCondition\");\n\n// src/utils/evaluateConditions.ts\nvar evaluateConditions = /* @__PURE__ */ __name((conditions = [], options) => {\n var _a, _b;\n const conditionsReferenceRecord = {};\n for (const condition of conditions) {\n const { result, toAssign } = evaluateCondition(condition, {\n ...options,\n referenceRecord: {\n ...options.referenceRecord,\n ...conditionsReferenceRecord\n }\n });\n if (!result) {\n return { result };\n }\n if (toAssign) {\n conditionsReferenceRecord[toAssign.name] = toAssign.value;\n (_b = (_a = options.logger) == null ? void 0 : _a.debug) == null ? void 0 : _b.call(_a, `${debugId} assign: ${toAssign.name} := ${toDebugString(toAssign.value)}`);\n }\n }\n return { result: true, referenceRecord: conditionsReferenceRecord };\n}, \"evaluateConditions\");\n\n// src/utils/getEndpointHeaders.ts\nvar getEndpointHeaders = /* @__PURE__ */ __name((headers, options) => Object.entries(headers).reduce(\n (acc, [headerKey, headerVal]) => ({\n ...acc,\n [headerKey]: headerVal.map((headerValEntry) => {\n const processedExpr = evaluateExpression(headerValEntry, \"Header value entry\", options);\n if (typeof processedExpr !== \"string\") {\n throw new EndpointError(`Header '${headerKey}' value '${processedExpr}' is not a string`);\n }\n return processedExpr;\n })\n }),\n {}\n), \"getEndpointHeaders\");\n\n// src/utils/getEndpointProperty.ts\nvar getEndpointProperty = /* @__PURE__ */ __name((property, options) => {\n if (Array.isArray(property)) {\n return property.map((propertyEntry) => getEndpointProperty(propertyEntry, options));\n }\n switch (typeof property) {\n case \"string\":\n return evaluateTemplate(property, options);\n case \"object\":\n if (property === null) {\n throw new EndpointError(`Unexpected endpoint property: ${property}`);\n }\n return getEndpointProperties(property, options);\n case \"boolean\":\n return property;\n default:\n throw new EndpointError(`Unexpected endpoint property type: ${typeof property}`);\n }\n}, \"getEndpointProperty\");\n\n// src/utils/getEndpointProperties.ts\nvar getEndpointProperties = /* @__PURE__ */ __name((properties, options) => Object.entries(properties).reduce(\n (acc, [propertyKey, propertyVal]) => ({\n ...acc,\n [propertyKey]: getEndpointProperty(propertyVal, options)\n }),\n {}\n), \"getEndpointProperties\");\n\n// src/utils/getEndpointUrl.ts\nvar getEndpointUrl = /* @__PURE__ */ __name((endpointUrl, options) => {\n const expression = evaluateExpression(endpointUrl, \"Endpoint URL\", options);\n if (typeof expression === \"string\") {\n try {\n return new URL(expression);\n } catch (error) {\n console.error(`Failed to construct URL with ${expression}`, error);\n throw error;\n }\n }\n throw new EndpointError(`Endpoint URL must be a string, got ${typeof expression}`);\n}, \"getEndpointUrl\");\n\n// src/utils/evaluateEndpointRule.ts\nvar evaluateEndpointRule = /* @__PURE__ */ __name((endpointRule, options) => {\n var _a, _b;\n const { conditions, endpoint } = endpointRule;\n const { result, referenceRecord } = evaluateConditions(conditions, options);\n if (!result) {\n return;\n }\n const endpointRuleOptions = {\n ...options,\n referenceRecord: { ...options.referenceRecord, ...referenceRecord }\n };\n const { url, properties, headers } = endpoint;\n (_b = (_a = options.logger) == null ? void 0 : _a.debug) == null ? void 0 : _b.call(_a, `${debugId} Resolving endpoint from template: ${toDebugString(endpoint)}`);\n return {\n ...headers != void 0 && {\n headers: getEndpointHeaders(headers, endpointRuleOptions)\n },\n ...properties != void 0 && {\n properties: getEndpointProperties(properties, endpointRuleOptions)\n },\n url: getEndpointUrl(url, endpointRuleOptions)\n };\n}, \"evaluateEndpointRule\");\n\n// src/utils/evaluateErrorRule.ts\nvar evaluateErrorRule = /* @__PURE__ */ __name((errorRule, options) => {\n const { conditions, error } = errorRule;\n const { result, referenceRecord } = evaluateConditions(conditions, options);\n if (!result) {\n return;\n }\n throw new EndpointError(\n evaluateExpression(error, \"Error\", {\n ...options,\n referenceRecord: { ...options.referenceRecord, ...referenceRecord }\n })\n );\n}, \"evaluateErrorRule\");\n\n// src/utils/evaluateTreeRule.ts\nvar evaluateTreeRule = /* @__PURE__ */ __name((treeRule, options) => {\n const { conditions, rules } = treeRule;\n const { result, referenceRecord } = evaluateConditions(conditions, options);\n if (!result) {\n return;\n }\n return evaluateRules(rules, {\n ...options,\n referenceRecord: { ...options.referenceRecord, ...referenceRecord }\n });\n}, \"evaluateTreeRule\");\n\n// src/utils/evaluateRules.ts\nvar evaluateRules = /* @__PURE__ */ __name((rules, options) => {\n for (const rule of rules) {\n if (rule.type === \"endpoint\") {\n const endpointOrUndefined = evaluateEndpointRule(rule, options);\n if (endpointOrUndefined) {\n return endpointOrUndefined;\n }\n } else if (rule.type === \"error\") {\n evaluateErrorRule(rule, options);\n } else if (rule.type === \"tree\") {\n const endpointOrUndefined = evaluateTreeRule(rule, options);\n if (endpointOrUndefined) {\n return endpointOrUndefined;\n }\n } else {\n throw new EndpointError(`Unknown endpoint rule: ${rule}`);\n }\n }\n throw new EndpointError(`Rules evaluation failed`);\n}, \"evaluateRules\");\n\n// src/resolveEndpoint.ts\nvar resolveEndpoint = /* @__PURE__ */ __name((ruleSetObject, options) => {\n var _a, _b, _c, _d;\n const { endpointParams, logger } = options;\n const { parameters, rules } = ruleSetObject;\n (_b = (_a = options.logger) == null ? void 0 : _a.debug) == null ? void 0 : _b.call(_a, `${debugId} Initial EndpointParams: ${toDebugString(endpointParams)}`);\n const paramsWithDefault = Object.entries(parameters).filter(([, v]) => v.default != null).map(([k, v]) => [k, v.default]);\n if (paramsWithDefault.length > 0) {\n for (const [paramKey, paramDefaultValue] of paramsWithDefault) {\n endpointParams[paramKey] = endpointParams[paramKey] ?? paramDefaultValue;\n }\n }\n const requiredParams = Object.entries(parameters).filter(([, v]) => v.required).map(([k]) => k);\n for (const requiredParam of requiredParams) {\n if (endpointParams[requiredParam] == null) {\n throw new EndpointError(`Missing required parameter: '${requiredParam}'`);\n }\n }\n const endpoint = evaluateRules(rules, { endpointParams, logger, referenceRecord: {} });\n (_d = (_c = options.logger) == null ? void 0 : _c.debug) == null ? void 0 : _d.call(_c, `${debugId} Resolved endpoint: ${toDebugString(endpoint)}`);\n return endpoint;\n}, \"resolveEndpoint\");\n// Annotate the CommonJS export names for ESM import in node:\n\n0 && (module.exports = {\n EndpointCache,\n isIpAddress,\n isValidHostLabel,\n customEndpointFunctions,\n resolveEndpoint,\n EndpointError\n});\n\n","var __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/index.ts\nvar src_exports = {};\n__export(src_exports, {\n AlgorithmId: () => AlgorithmId,\n EndpointURLScheme: () => EndpointURLScheme,\n FieldPosition: () => FieldPosition,\n HttpApiKeyAuthLocation: () => HttpApiKeyAuthLocation,\n HttpAuthLocation: () => HttpAuthLocation,\n IniSectionType: () => IniSectionType,\n RequestHandlerProtocol: () => RequestHandlerProtocol,\n SMITHY_CONTEXT_KEY: () => SMITHY_CONTEXT_KEY,\n getDefaultClientConfiguration: () => getDefaultClientConfiguration,\n resolveDefaultRuntimeConfig: () => resolveDefaultRuntimeConfig\n});\nmodule.exports = __toCommonJS(src_exports);\n\n// src/auth/auth.ts\nvar HttpAuthLocation = /* @__PURE__ */ ((HttpAuthLocation2) => {\n HttpAuthLocation2[\"HEADER\"] = \"header\";\n HttpAuthLocation2[\"QUERY\"] = \"query\";\n return HttpAuthLocation2;\n})(HttpAuthLocation || {});\n\n// src/auth/HttpApiKeyAuth.ts\nvar HttpApiKeyAuthLocation = /* @__PURE__ */ ((HttpApiKeyAuthLocation2) => {\n HttpApiKeyAuthLocation2[\"HEADER\"] = \"header\";\n HttpApiKeyAuthLocation2[\"QUERY\"] = \"query\";\n return HttpApiKeyAuthLocation2;\n})(HttpApiKeyAuthLocation || {});\n\n// src/endpoint.ts\nvar EndpointURLScheme = /* @__PURE__ */ ((EndpointURLScheme2) => {\n EndpointURLScheme2[\"HTTP\"] = \"http\";\n EndpointURLScheme2[\"HTTPS\"] = \"https\";\n return EndpointURLScheme2;\n})(EndpointURLScheme || {});\n\n// src/extensions/checksum.ts\nvar AlgorithmId = /* @__PURE__ */ ((AlgorithmId2) => {\n AlgorithmId2[\"MD5\"] = \"md5\";\n AlgorithmId2[\"CRC32\"] = \"crc32\";\n AlgorithmId2[\"CRC32C\"] = \"crc32c\";\n AlgorithmId2[\"SHA1\"] = \"sha1\";\n AlgorithmId2[\"SHA256\"] = \"sha256\";\n return AlgorithmId2;\n})(AlgorithmId || {});\nvar getChecksumConfiguration = /* @__PURE__ */ __name((runtimeConfig) => {\n const checksumAlgorithms = [];\n if (runtimeConfig.sha256 !== void 0) {\n checksumAlgorithms.push({\n algorithmId: () => \"sha256\" /* SHA256 */,\n checksumConstructor: () => runtimeConfig.sha256\n });\n }\n if (runtimeConfig.md5 != void 0) {\n checksumAlgorithms.push({\n algorithmId: () => \"md5\" /* MD5 */,\n checksumConstructor: () => runtimeConfig.md5\n });\n }\n return {\n _checksumAlgorithms: checksumAlgorithms,\n addChecksumAlgorithm(algo) {\n this._checksumAlgorithms.push(algo);\n },\n checksumAlgorithms() {\n return this._checksumAlgorithms;\n }\n };\n}, \"getChecksumConfiguration\");\nvar resolveChecksumRuntimeConfig = /* @__PURE__ */ __name((clientConfig) => {\n const runtimeConfig = {};\n clientConfig.checksumAlgorithms().forEach((checksumAlgorithm) => {\n runtimeConfig[checksumAlgorithm.algorithmId()] = checksumAlgorithm.checksumConstructor();\n });\n return runtimeConfig;\n}, \"resolveChecksumRuntimeConfig\");\n\n// src/extensions/defaultClientConfiguration.ts\nvar getDefaultClientConfiguration = /* @__PURE__ */ __name((runtimeConfig) => {\n return {\n ...getChecksumConfiguration(runtimeConfig)\n };\n}, \"getDefaultClientConfiguration\");\nvar resolveDefaultRuntimeConfig = /* @__PURE__ */ __name((config) => {\n return {\n ...resolveChecksumRuntimeConfig(config)\n };\n}, \"resolveDefaultRuntimeConfig\");\n\n// src/http.ts\nvar FieldPosition = /* @__PURE__ */ ((FieldPosition2) => {\n FieldPosition2[FieldPosition2[\"HEADER\"] = 0] = \"HEADER\";\n FieldPosition2[FieldPosition2[\"TRAILER\"] = 1] = \"TRAILER\";\n return FieldPosition2;\n})(FieldPosition || {});\n\n// src/middleware.ts\nvar SMITHY_CONTEXT_KEY = \"__smithy_context\";\n\n// src/profile.ts\nvar IniSectionType = /* @__PURE__ */ ((IniSectionType2) => {\n IniSectionType2[\"PROFILE\"] = \"profile\";\n IniSectionType2[\"SSO_SESSION\"] = \"sso-session\";\n IniSectionType2[\"SERVICES\"] = \"services\";\n return IniSectionType2;\n})(IniSectionType || {});\n\n// src/transfer.ts\nvar RequestHandlerProtocol = /* @__PURE__ */ ((RequestHandlerProtocol2) => {\n RequestHandlerProtocol2[\"HTTP_0_9\"] = \"http/0.9\";\n RequestHandlerProtocol2[\"HTTP_1_0\"] = \"http/1.0\";\n RequestHandlerProtocol2[\"TDS_8_0\"] = \"tds/8.0\";\n return RequestHandlerProtocol2;\n})(RequestHandlerProtocol || {});\n// Annotate the CommonJS export names for ESM import in node:\n\n0 && (module.exports = {\n HttpAuthLocation,\n HttpApiKeyAuthLocation,\n EndpointURLScheme,\n AlgorithmId,\n getDefaultClientConfiguration,\n resolveDefaultRuntimeConfig,\n FieldPosition,\n SMITHY_CONTEXT_KEY,\n IniSectionType,\n RequestHandlerProtocol\n});\n\n","var __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/index.ts\nvar src_exports = {};\n__export(src_exports, {\n fromHex: () => fromHex,\n toHex: () => toHex\n});\nmodule.exports = __toCommonJS(src_exports);\nvar SHORT_TO_HEX = {};\nvar HEX_TO_SHORT = {};\nfor (let i = 0; i < 256; i++) {\n let encodedByte = i.toString(16).toLowerCase();\n if (encodedByte.length === 1) {\n encodedByte = `0${encodedByte}`;\n }\n SHORT_TO_HEX[i] = encodedByte;\n HEX_TO_SHORT[encodedByte] = i;\n}\nfunction fromHex(encoded) {\n if (encoded.length % 2 !== 0) {\n throw new Error(\"Hex encoded strings must have an even number length\");\n }\n const out = new Uint8Array(encoded.length / 2);\n for (let i = 0; i < encoded.length; i += 2) {\n const encodedByte = encoded.slice(i, i + 2).toLowerCase();\n if (encodedByte in HEX_TO_SHORT) {\n out[i / 2] = HEX_TO_SHORT[encodedByte];\n } else {\n throw new Error(`Cannot decode unrecognized sequence ${encodedByte} as hexadecimal`);\n }\n }\n return out;\n}\n__name(fromHex, \"fromHex\");\nfunction toHex(bytes) {\n let out = \"\";\n for (let i = 0; i < bytes.byteLength; i++) {\n out += SHORT_TO_HEX[bytes[i]];\n }\n return out;\n}\n__name(toHex, \"toHex\");\n// Annotate the CommonJS export names for ESM import in node:\n\n0 && (module.exports = {\n fromHex,\n toHex\n});\n\n","var __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/index.ts\nvar src_exports = {};\n__export(src_exports, {\n getSmithyContext: () => getSmithyContext,\n normalizeProvider: () => normalizeProvider\n});\nmodule.exports = __toCommonJS(src_exports);\n\n// src/getSmithyContext.ts\nvar import_types = require(\"@smithy/types\");\nvar getSmithyContext = /* @__PURE__ */ __name((context) => context[import_types.SMITHY_CONTEXT_KEY] || (context[import_types.SMITHY_CONTEXT_KEY] = {}), \"getSmithyContext\");\n\n// src/normalizeProvider.ts\nvar normalizeProvider = /* @__PURE__ */ __name((input) => {\n if (typeof input === \"function\")\n return input;\n const promisified = Promise.resolve(input);\n return () => promisified;\n}, \"normalizeProvider\");\n// Annotate the CommonJS export names for ESM import in node:\n\n0 && (module.exports = {\n getSmithyContext,\n normalizeProvider\n});\n\n","var __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/index.ts\nvar src_exports = {};\n__export(src_exports, {\n AlgorithmId: () => AlgorithmId,\n EndpointURLScheme: () => EndpointURLScheme,\n FieldPosition: () => FieldPosition,\n HttpApiKeyAuthLocation: () => HttpApiKeyAuthLocation,\n HttpAuthLocation: () => HttpAuthLocation,\n IniSectionType: () => IniSectionType,\n RequestHandlerProtocol: () => RequestHandlerProtocol,\n SMITHY_CONTEXT_KEY: () => SMITHY_CONTEXT_KEY,\n getDefaultClientConfiguration: () => getDefaultClientConfiguration,\n resolveDefaultRuntimeConfig: () => resolveDefaultRuntimeConfig\n});\nmodule.exports = __toCommonJS(src_exports);\n\n// src/auth/auth.ts\nvar HttpAuthLocation = /* @__PURE__ */ ((HttpAuthLocation2) => {\n HttpAuthLocation2[\"HEADER\"] = \"header\";\n HttpAuthLocation2[\"QUERY\"] = \"query\";\n return HttpAuthLocation2;\n})(HttpAuthLocation || {});\n\n// src/auth/HttpApiKeyAuth.ts\nvar HttpApiKeyAuthLocation = /* @__PURE__ */ ((HttpApiKeyAuthLocation2) => {\n HttpApiKeyAuthLocation2[\"HEADER\"] = \"header\";\n HttpApiKeyAuthLocation2[\"QUERY\"] = \"query\";\n return HttpApiKeyAuthLocation2;\n})(HttpApiKeyAuthLocation || {});\n\n// src/endpoint.ts\nvar EndpointURLScheme = /* @__PURE__ */ ((EndpointURLScheme2) => {\n EndpointURLScheme2[\"HTTP\"] = \"http\";\n EndpointURLScheme2[\"HTTPS\"] = \"https\";\n return EndpointURLScheme2;\n})(EndpointURLScheme || {});\n\n// src/extensions/checksum.ts\nvar AlgorithmId = /* @__PURE__ */ ((AlgorithmId2) => {\n AlgorithmId2[\"MD5\"] = \"md5\";\n AlgorithmId2[\"CRC32\"] = \"crc32\";\n AlgorithmId2[\"CRC32C\"] = \"crc32c\";\n AlgorithmId2[\"SHA1\"] = \"sha1\";\n AlgorithmId2[\"SHA256\"] = \"sha256\";\n return AlgorithmId2;\n})(AlgorithmId || {});\nvar getChecksumConfiguration = /* @__PURE__ */ __name((runtimeConfig) => {\n const checksumAlgorithms = [];\n if (runtimeConfig.sha256 !== void 0) {\n checksumAlgorithms.push({\n algorithmId: () => \"sha256\" /* SHA256 */,\n checksumConstructor: () => runtimeConfig.sha256\n });\n }\n if (runtimeConfig.md5 != void 0) {\n checksumAlgorithms.push({\n algorithmId: () => \"md5\" /* MD5 */,\n checksumConstructor: () => runtimeConfig.md5\n });\n }\n return {\n _checksumAlgorithms: checksumAlgorithms,\n addChecksumAlgorithm(algo) {\n this._checksumAlgorithms.push(algo);\n },\n checksumAlgorithms() {\n return this._checksumAlgorithms;\n }\n };\n}, \"getChecksumConfiguration\");\nvar resolveChecksumRuntimeConfig = /* @__PURE__ */ __name((clientConfig) => {\n const runtimeConfig = {};\n clientConfig.checksumAlgorithms().forEach((checksumAlgorithm) => {\n runtimeConfig[checksumAlgorithm.algorithmId()] = checksumAlgorithm.checksumConstructor();\n });\n return runtimeConfig;\n}, \"resolveChecksumRuntimeConfig\");\n\n// src/extensions/defaultClientConfiguration.ts\nvar getDefaultClientConfiguration = /* @__PURE__ */ __name((runtimeConfig) => {\n return {\n ...getChecksumConfiguration(runtimeConfig)\n };\n}, \"getDefaultClientConfiguration\");\nvar resolveDefaultRuntimeConfig = /* @__PURE__ */ __name((config) => {\n return {\n ...resolveChecksumRuntimeConfig(config)\n };\n}, \"resolveDefaultRuntimeConfig\");\n\n// src/http.ts\nvar FieldPosition = /* @__PURE__ */ ((FieldPosition2) => {\n FieldPosition2[FieldPosition2[\"HEADER\"] = 0] = \"HEADER\";\n FieldPosition2[FieldPosition2[\"TRAILER\"] = 1] = \"TRAILER\";\n return FieldPosition2;\n})(FieldPosition || {});\n\n// src/middleware.ts\nvar SMITHY_CONTEXT_KEY = \"__smithy_context\";\n\n// src/profile.ts\nvar IniSectionType = /* @__PURE__ */ ((IniSectionType2) => {\n IniSectionType2[\"PROFILE\"] = \"profile\";\n IniSectionType2[\"SSO_SESSION\"] = \"sso-session\";\n IniSectionType2[\"SERVICES\"] = \"services\";\n return IniSectionType2;\n})(IniSectionType || {});\n\n// src/transfer.ts\nvar RequestHandlerProtocol = /* @__PURE__ */ ((RequestHandlerProtocol2) => {\n RequestHandlerProtocol2[\"HTTP_0_9\"] = \"http/0.9\";\n RequestHandlerProtocol2[\"HTTP_1_0\"] = \"http/1.0\";\n RequestHandlerProtocol2[\"TDS_8_0\"] = \"tds/8.0\";\n return RequestHandlerProtocol2;\n})(RequestHandlerProtocol || {});\n// Annotate the CommonJS export names for ESM import in node:\n\n0 && (module.exports = {\n HttpAuthLocation,\n HttpApiKeyAuthLocation,\n EndpointURLScheme,\n AlgorithmId,\n getDefaultClientConfiguration,\n resolveDefaultRuntimeConfig,\n FieldPosition,\n SMITHY_CONTEXT_KEY,\n IniSectionType,\n RequestHandlerProtocol\n});\n\n","var __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/index.ts\nvar src_exports = {};\n__export(src_exports, {\n AdaptiveRetryStrategy: () => AdaptiveRetryStrategy,\n ConfiguredRetryStrategy: () => ConfiguredRetryStrategy,\n DEFAULT_MAX_ATTEMPTS: () => DEFAULT_MAX_ATTEMPTS,\n DEFAULT_RETRY_DELAY_BASE: () => DEFAULT_RETRY_DELAY_BASE,\n DEFAULT_RETRY_MODE: () => DEFAULT_RETRY_MODE,\n DefaultRateLimiter: () => DefaultRateLimiter,\n INITIAL_RETRY_TOKENS: () => INITIAL_RETRY_TOKENS,\n INVOCATION_ID_HEADER: () => INVOCATION_ID_HEADER,\n MAXIMUM_RETRY_DELAY: () => MAXIMUM_RETRY_DELAY,\n NO_RETRY_INCREMENT: () => NO_RETRY_INCREMENT,\n REQUEST_HEADER: () => REQUEST_HEADER,\n RETRY_COST: () => RETRY_COST,\n RETRY_MODES: () => RETRY_MODES,\n StandardRetryStrategy: () => StandardRetryStrategy,\n THROTTLING_RETRY_DELAY_BASE: () => THROTTLING_RETRY_DELAY_BASE,\n TIMEOUT_RETRY_COST: () => TIMEOUT_RETRY_COST\n});\nmodule.exports = __toCommonJS(src_exports);\n\n// src/config.ts\nvar RETRY_MODES = /* @__PURE__ */ ((RETRY_MODES2) => {\n RETRY_MODES2[\"STANDARD\"] = \"standard\";\n RETRY_MODES2[\"ADAPTIVE\"] = \"adaptive\";\n return RETRY_MODES2;\n})(RETRY_MODES || {});\nvar DEFAULT_MAX_ATTEMPTS = 3;\nvar DEFAULT_RETRY_MODE = \"standard\" /* STANDARD */;\n\n// src/DefaultRateLimiter.ts\nvar import_service_error_classification = require(\"@smithy/service-error-classification\");\nvar _DefaultRateLimiter = class _DefaultRateLimiter {\n constructor(options) {\n // Pre-set state variables\n this.currentCapacity = 0;\n this.enabled = false;\n this.lastMaxRate = 0;\n this.measuredTxRate = 0;\n this.requestCount = 0;\n this.lastTimestamp = 0;\n this.timeWindow = 0;\n this.beta = (options == null ? void 0 : options.beta) ?? 0.7;\n this.minCapacity = (options == null ? void 0 : options.minCapacity) ?? 1;\n this.minFillRate = (options == null ? void 0 : options.minFillRate) ?? 0.5;\n this.scaleConstant = (options == null ? void 0 : options.scaleConstant) ?? 0.4;\n this.smooth = (options == null ? void 0 : options.smooth) ?? 0.8;\n const currentTimeInSeconds = this.getCurrentTimeInSeconds();\n this.lastThrottleTime = currentTimeInSeconds;\n this.lastTxRateBucket = Math.floor(this.getCurrentTimeInSeconds());\n this.fillRate = this.minFillRate;\n this.maxCapacity = this.minCapacity;\n }\n getCurrentTimeInSeconds() {\n return Date.now() / 1e3;\n }\n async getSendToken() {\n return this.acquireTokenBucket(1);\n }\n async acquireTokenBucket(amount) {\n if (!this.enabled) {\n return;\n }\n this.refillTokenBucket();\n if (amount > this.currentCapacity) {\n const delay = (amount - this.currentCapacity) / this.fillRate * 1e3;\n await new Promise((resolve) => setTimeout(resolve, delay));\n }\n this.currentCapacity = this.currentCapacity - amount;\n }\n refillTokenBucket() {\n const timestamp = this.getCurrentTimeInSeconds();\n if (!this.lastTimestamp) {\n this.lastTimestamp = timestamp;\n return;\n }\n const fillAmount = (timestamp - this.lastTimestamp) * this.fillRate;\n this.currentCapacity = Math.min(this.maxCapacity, this.currentCapacity + fillAmount);\n this.lastTimestamp = timestamp;\n }\n updateClientSendingRate(response) {\n let calculatedRate;\n this.updateMeasuredRate();\n if ((0, import_service_error_classification.isThrottlingError)(response)) {\n const rateToUse = !this.enabled ? this.measuredTxRate : Math.min(this.measuredTxRate, this.fillRate);\n this.lastMaxRate = rateToUse;\n this.calculateTimeWindow();\n this.lastThrottleTime = this.getCurrentTimeInSeconds();\n calculatedRate = this.cubicThrottle(rateToUse);\n this.enableTokenBucket();\n } else {\n this.calculateTimeWindow();\n calculatedRate = this.cubicSuccess(this.getCurrentTimeInSeconds());\n }\n const newRate = Math.min(calculatedRate, 2 * this.measuredTxRate);\n this.updateTokenBucketRate(newRate);\n }\n calculateTimeWindow() {\n this.timeWindow = this.getPrecise(Math.pow(this.lastMaxRate * (1 - this.beta) / this.scaleConstant, 1 / 3));\n }\n cubicThrottle(rateToUse) {\n return this.getPrecise(rateToUse * this.beta);\n }\n cubicSuccess(timestamp) {\n return this.getPrecise(\n this.scaleConstant * Math.pow(timestamp - this.lastThrottleTime - this.timeWindow, 3) + this.lastMaxRate\n );\n }\n enableTokenBucket() {\n this.enabled = true;\n }\n updateTokenBucketRate(newRate) {\n this.refillTokenBucket();\n this.fillRate = Math.max(newRate, this.minFillRate);\n this.maxCapacity = Math.max(newRate, this.minCapacity);\n this.currentCapacity = Math.min(this.currentCapacity, this.maxCapacity);\n }\n updateMeasuredRate() {\n const t = this.getCurrentTimeInSeconds();\n const timeBucket = Math.floor(t * 2) / 2;\n this.requestCount++;\n if (timeBucket > this.lastTxRateBucket) {\n const currentRate = this.requestCount / (timeBucket - this.lastTxRateBucket);\n this.measuredTxRate = this.getPrecise(currentRate * this.smooth + this.measuredTxRate * (1 - this.smooth));\n this.requestCount = 0;\n this.lastTxRateBucket = timeBucket;\n }\n }\n getPrecise(num) {\n return parseFloat(num.toFixed(8));\n }\n};\n__name(_DefaultRateLimiter, \"DefaultRateLimiter\");\nvar DefaultRateLimiter = _DefaultRateLimiter;\n\n// src/constants.ts\nvar DEFAULT_RETRY_DELAY_BASE = 100;\nvar MAXIMUM_RETRY_DELAY = 20 * 1e3;\nvar THROTTLING_RETRY_DELAY_BASE = 500;\nvar INITIAL_RETRY_TOKENS = 500;\nvar RETRY_COST = 5;\nvar TIMEOUT_RETRY_COST = 10;\nvar NO_RETRY_INCREMENT = 1;\nvar INVOCATION_ID_HEADER = \"amz-sdk-invocation-id\";\nvar REQUEST_HEADER = \"amz-sdk-request\";\n\n// src/defaultRetryBackoffStrategy.ts\nvar getDefaultRetryBackoffStrategy = /* @__PURE__ */ __name(() => {\n let delayBase = DEFAULT_RETRY_DELAY_BASE;\n const computeNextBackoffDelay = /* @__PURE__ */ __name((attempts) => {\n return Math.floor(Math.min(MAXIMUM_RETRY_DELAY, Math.random() * 2 ** attempts * delayBase));\n }, \"computeNextBackoffDelay\");\n const setDelayBase = /* @__PURE__ */ __name((delay) => {\n delayBase = delay;\n }, \"setDelayBase\");\n return {\n computeNextBackoffDelay,\n setDelayBase\n };\n}, \"getDefaultRetryBackoffStrategy\");\n\n// src/defaultRetryToken.ts\nvar createDefaultRetryToken = /* @__PURE__ */ __name(({\n retryDelay,\n retryCount,\n retryCost\n}) => {\n const getRetryCount = /* @__PURE__ */ __name(() => retryCount, \"getRetryCount\");\n const getRetryDelay = /* @__PURE__ */ __name(() => Math.min(MAXIMUM_RETRY_DELAY, retryDelay), \"getRetryDelay\");\n const getRetryCost = /* @__PURE__ */ __name(() => retryCost, \"getRetryCost\");\n return {\n getRetryCount,\n getRetryDelay,\n getRetryCost\n };\n}, \"createDefaultRetryToken\");\n\n// src/StandardRetryStrategy.ts\nvar _StandardRetryStrategy = class _StandardRetryStrategy {\n constructor(maxAttempts) {\n this.maxAttempts = maxAttempts;\n this.mode = \"standard\" /* STANDARD */;\n this.capacity = INITIAL_RETRY_TOKENS;\n this.retryBackoffStrategy = getDefaultRetryBackoffStrategy();\n this.maxAttemptsProvider = typeof maxAttempts === \"function\" ? maxAttempts : async () => maxAttempts;\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n async acquireInitialRetryToken(retryTokenScope) {\n return createDefaultRetryToken({\n retryDelay: DEFAULT_RETRY_DELAY_BASE,\n retryCount: 0\n });\n }\n async refreshRetryTokenForRetry(token, errorInfo) {\n const maxAttempts = await this.getMaxAttempts();\n if (this.shouldRetry(token, errorInfo, maxAttempts)) {\n const errorType = errorInfo.errorType;\n this.retryBackoffStrategy.setDelayBase(\n errorType === \"THROTTLING\" ? THROTTLING_RETRY_DELAY_BASE : DEFAULT_RETRY_DELAY_BASE\n );\n const delayFromErrorType = this.retryBackoffStrategy.computeNextBackoffDelay(token.getRetryCount());\n const retryDelay = errorInfo.retryAfterHint ? Math.max(errorInfo.retryAfterHint.getTime() - Date.now() || 0, delayFromErrorType) : delayFromErrorType;\n const capacityCost = this.getCapacityCost(errorType);\n this.capacity -= capacityCost;\n return createDefaultRetryToken({\n retryDelay,\n retryCount: token.getRetryCount() + 1,\n retryCost: capacityCost\n });\n }\n throw new Error(\"No retry token available\");\n }\n recordSuccess(token) {\n this.capacity = Math.max(INITIAL_RETRY_TOKENS, this.capacity + (token.getRetryCost() ?? NO_RETRY_INCREMENT));\n }\n /**\n * @returns the current available retry capacity.\n *\n * This number decreases when retries are executed and refills when requests or retries succeed.\n */\n getCapacity() {\n return this.capacity;\n }\n async getMaxAttempts() {\n try {\n return await this.maxAttemptsProvider();\n } catch (error) {\n console.warn(`Max attempts provider could not resolve. Using default of ${DEFAULT_MAX_ATTEMPTS}`);\n return DEFAULT_MAX_ATTEMPTS;\n }\n }\n shouldRetry(tokenToRenew, errorInfo, maxAttempts) {\n const attempts = tokenToRenew.getRetryCount() + 1;\n return attempts < maxAttempts && this.capacity >= this.getCapacityCost(errorInfo.errorType) && this.isRetryableError(errorInfo.errorType);\n }\n getCapacityCost(errorType) {\n return errorType === \"TRANSIENT\" ? TIMEOUT_RETRY_COST : RETRY_COST;\n }\n isRetryableError(errorType) {\n return errorType === \"THROTTLING\" || errorType === \"TRANSIENT\";\n }\n};\n__name(_StandardRetryStrategy, \"StandardRetryStrategy\");\nvar StandardRetryStrategy = _StandardRetryStrategy;\n\n// src/AdaptiveRetryStrategy.ts\nvar _AdaptiveRetryStrategy = class _AdaptiveRetryStrategy {\n constructor(maxAttemptsProvider, options) {\n this.maxAttemptsProvider = maxAttemptsProvider;\n this.mode = \"adaptive\" /* ADAPTIVE */;\n const { rateLimiter } = options ?? {};\n this.rateLimiter = rateLimiter ?? new DefaultRateLimiter();\n this.standardRetryStrategy = new StandardRetryStrategy(maxAttemptsProvider);\n }\n async acquireInitialRetryToken(retryTokenScope) {\n await this.rateLimiter.getSendToken();\n return this.standardRetryStrategy.acquireInitialRetryToken(retryTokenScope);\n }\n async refreshRetryTokenForRetry(tokenToRenew, errorInfo) {\n this.rateLimiter.updateClientSendingRate(errorInfo);\n return this.standardRetryStrategy.refreshRetryTokenForRetry(tokenToRenew, errorInfo);\n }\n recordSuccess(token) {\n this.rateLimiter.updateClientSendingRate({});\n this.standardRetryStrategy.recordSuccess(token);\n }\n};\n__name(_AdaptiveRetryStrategy, \"AdaptiveRetryStrategy\");\nvar AdaptiveRetryStrategy = _AdaptiveRetryStrategy;\n\n// src/ConfiguredRetryStrategy.ts\nvar _ConfiguredRetryStrategy = class _ConfiguredRetryStrategy extends StandardRetryStrategy {\n /**\n * @param maxAttempts - the maximum number of retry attempts allowed.\n * e.g., if set to 3, then 4 total requests are possible.\n * @param computeNextBackoffDelay - a millisecond delay for each retry or a function that takes the retry attempt\n * and returns the delay.\n *\n * @example exponential backoff.\n * ```js\n * new Client({\n * retryStrategy: new ConfiguredRetryStrategy(3, (attempt) => attempt ** 2)\n * });\n * ```\n * @example constant delay.\n * ```js\n * new Client({\n * retryStrategy: new ConfiguredRetryStrategy(3, 2000)\n * });\n * ```\n */\n constructor(maxAttempts, computeNextBackoffDelay = DEFAULT_RETRY_DELAY_BASE) {\n super(typeof maxAttempts === \"function\" ? maxAttempts : async () => maxAttempts);\n if (typeof computeNextBackoffDelay === \"number\") {\n this.computeNextBackoffDelay = () => computeNextBackoffDelay;\n } else {\n this.computeNextBackoffDelay = computeNextBackoffDelay;\n }\n }\n async refreshRetryTokenForRetry(tokenToRenew, errorInfo) {\n const token = await super.refreshRetryTokenForRetry(tokenToRenew, errorInfo);\n token.getRetryDelay = () => this.computeNextBackoffDelay(token.getRetryCount());\n return token;\n }\n};\n__name(_ConfiguredRetryStrategy, \"ConfiguredRetryStrategy\");\nvar ConfiguredRetryStrategy = _ConfiguredRetryStrategy;\n// Annotate the CommonJS export names for ESM import in node:\n\n0 && (module.exports = {\n AdaptiveRetryStrategy,\n ConfiguredRetryStrategy,\n DefaultRateLimiter,\n StandardRetryStrategy,\n RETRY_MODES,\n DEFAULT_MAX_ATTEMPTS,\n DEFAULT_RETRY_MODE,\n DEFAULT_RETRY_DELAY_BASE,\n MAXIMUM_RETRY_DELAY,\n THROTTLING_RETRY_DELAY_BASE,\n INITIAL_RETRY_TOKENS,\n RETRY_COST,\n TIMEOUT_RETRY_COST,\n NO_RETRY_INCREMENT,\n INVOCATION_ID_HEADER,\n REQUEST_HEADER\n});\n\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getAwsChunkedEncodingStream = void 0;\nconst stream_1 = require(\"stream\");\nconst getAwsChunkedEncodingStream = (readableStream, options) => {\n const { base64Encoder, bodyLengthChecker, checksumAlgorithmFn, checksumLocationName, streamHasher } = options;\n const checksumRequired = base64Encoder !== undefined &&\n checksumAlgorithmFn !== undefined &&\n checksumLocationName !== undefined &&\n streamHasher !== undefined;\n const digest = checksumRequired ? streamHasher(checksumAlgorithmFn, readableStream) : undefined;\n const awsChunkedEncodingStream = new stream_1.Readable({ read: () => { } });\n readableStream.on(\"data\", (data) => {\n const length = bodyLengthChecker(data) || 0;\n awsChunkedEncodingStream.push(`${length.toString(16)}\\r\\n`);\n awsChunkedEncodingStream.push(data);\n awsChunkedEncodingStream.push(\"\\r\\n\");\n });\n readableStream.on(\"end\", async () => {\n awsChunkedEncodingStream.push(`0\\r\\n`);\n if (checksumRequired) {\n const checksum = base64Encoder(await digest);\n awsChunkedEncodingStream.push(`${checksumLocationName}:${checksum}\\r\\n`);\n awsChunkedEncodingStream.push(`\\r\\n`);\n }\n awsChunkedEncodingStream.push(null);\n });\n return awsChunkedEncodingStream;\n};\nexports.getAwsChunkedEncodingStream = getAwsChunkedEncodingStream;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.headStream = void 0;\nasync function headStream(stream, bytes) {\n var _a;\n let byteLengthCounter = 0;\n const chunks = [];\n const reader = stream.getReader();\n let isDone = false;\n while (!isDone) {\n const { done, value } = await reader.read();\n if (value) {\n chunks.push(value);\n byteLengthCounter += (_a = value === null || value === void 0 ? void 0 : value.byteLength) !== null && _a !== void 0 ? _a : 0;\n }\n if (byteLengthCounter >= bytes) {\n break;\n }\n isDone = done;\n }\n reader.releaseLock();\n const collected = new Uint8Array(Math.min(bytes, byteLengthCounter));\n let offset = 0;\n for (const chunk of chunks) {\n if (chunk.byteLength > collected.byteLength - offset) {\n collected.set(chunk.subarray(0, collected.byteLength - offset), offset);\n break;\n }\n else {\n collected.set(chunk, offset);\n }\n offset += chunk.length;\n }\n return collected;\n}\nexports.headStream = headStream;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.headStream = void 0;\nconst stream_1 = require(\"stream\");\nconst headStream_browser_1 = require(\"./headStream.browser\");\nconst stream_type_check_1 = require(\"./stream-type-check\");\nconst headStream = (stream, bytes) => {\n if ((0, stream_type_check_1.isReadableStream)(stream)) {\n return (0, headStream_browser_1.headStream)(stream, bytes);\n }\n return new Promise((resolve, reject) => {\n const collector = new Collector();\n collector.limit = bytes;\n stream.pipe(collector);\n stream.on(\"error\", (err) => {\n collector.end();\n reject(err);\n });\n collector.on(\"error\", reject);\n collector.on(\"finish\", function () {\n const bytes = new Uint8Array(Buffer.concat(this.buffers));\n resolve(bytes);\n });\n });\n};\nexports.headStream = headStream;\nclass Collector extends stream_1.Writable {\n constructor() {\n super(...arguments);\n this.buffers = [];\n this.limit = Infinity;\n this.bytesBuffered = 0;\n }\n _write(chunk, encoding, callback) {\n var _a;\n this.buffers.push(chunk);\n this.bytesBuffered += (_a = chunk.byteLength) !== null && _a !== void 0 ? _a : 0;\n if (this.bytesBuffered >= this.limit) {\n const excess = this.bytesBuffered - this.limit;\n const tailBuffer = this.buffers[this.buffers.length - 1];\n this.buffers[this.buffers.length - 1] = tailBuffer.subarray(0, tailBuffer.byteLength - excess);\n this.emit(\"finish\");\n }\n callback();\n }\n}\n","var __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, \"default\"), secondTarget && __copyProps(secondTarget, mod, \"default\"));\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/index.ts\nvar src_exports = {};\n__export(src_exports, {\n Uint8ArrayBlobAdapter: () => Uint8ArrayBlobAdapter\n});\nmodule.exports = __toCommonJS(src_exports);\n\n// src/blob/transforms.ts\nvar import_util_base64 = require(\"@smithy/util-base64\");\nvar import_util_utf8 = require(\"@smithy/util-utf8\");\nfunction transformToString(payload, encoding = \"utf-8\") {\n if (encoding === \"base64\") {\n return (0, import_util_base64.toBase64)(payload);\n }\n return (0, import_util_utf8.toUtf8)(payload);\n}\n__name(transformToString, \"transformToString\");\nfunction transformFromString(str, encoding) {\n if (encoding === \"base64\") {\n return Uint8ArrayBlobAdapter.mutate((0, import_util_base64.fromBase64)(str));\n }\n return Uint8ArrayBlobAdapter.mutate((0, import_util_utf8.fromUtf8)(str));\n}\n__name(transformFromString, \"transformFromString\");\n\n// src/blob/Uint8ArrayBlobAdapter.ts\nvar _Uint8ArrayBlobAdapter = class _Uint8ArrayBlobAdapter extends Uint8Array {\n /**\n * @param source - such as a string or Stream.\n * @returns a new Uint8ArrayBlobAdapter extending Uint8Array.\n */\n static fromString(source, encoding = \"utf-8\") {\n switch (typeof source) {\n case \"string\":\n return transformFromString(source, encoding);\n default:\n throw new Error(`Unsupported conversion from ${typeof source} to Uint8ArrayBlobAdapter.`);\n }\n }\n /**\n * @param source - Uint8Array to be mutated.\n * @returns the same Uint8Array but with prototype switched to Uint8ArrayBlobAdapter.\n */\n static mutate(source) {\n Object.setPrototypeOf(source, _Uint8ArrayBlobAdapter.prototype);\n return source;\n }\n /**\n * @param encoding - default 'utf-8'.\n * @returns the blob as string.\n */\n transformToString(encoding = \"utf-8\") {\n return transformToString(this, encoding);\n }\n};\n__name(_Uint8ArrayBlobAdapter, \"Uint8ArrayBlobAdapter\");\nvar Uint8ArrayBlobAdapter = _Uint8ArrayBlobAdapter;\n\n// src/index.ts\n__reExport(src_exports, require(\"././getAwsChunkedEncodingStream\"), module.exports);\n__reExport(src_exports, require(\"././sdk-stream-mixin\"), module.exports);\n__reExport(src_exports, require(\"././splitStream\"), module.exports);\n__reExport(src_exports, require(\"././headStream\"), module.exports);\n__reExport(src_exports, require(\"././stream-type-check\"), module.exports);\n// Annotate the CommonJS export names for ESM import in node:\n\n0 && (module.exports = {\n Uint8ArrayBlobAdapter,\n getAwsChunkedEncodingStream,\n sdkStreamMixin,\n splitStream,\n headStream,\n isReadableStream\n});\n\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.sdkStreamMixin = void 0;\nconst fetch_http_handler_1 = require(\"@smithy/fetch-http-handler\");\nconst util_base64_1 = require(\"@smithy/util-base64\");\nconst util_hex_encoding_1 = require(\"@smithy/util-hex-encoding\");\nconst util_utf8_1 = require(\"@smithy/util-utf8\");\nconst stream_type_check_1 = require(\"./stream-type-check\");\nconst ERR_MSG_STREAM_HAS_BEEN_TRANSFORMED = \"The stream has already been transformed.\";\nconst sdkStreamMixin = (stream) => {\n var _a, _b;\n if (!isBlobInstance(stream) && !(0, stream_type_check_1.isReadableStream)(stream)) {\n const name = ((_b = (_a = stream === null || stream === void 0 ? void 0 : stream.__proto__) === null || _a === void 0 ? void 0 : _a.constructor) === null || _b === void 0 ? void 0 : _b.name) || stream;\n throw new Error(`Unexpected stream implementation, expect Blob or ReadableStream, got ${name}`);\n }\n let transformed = false;\n const transformToByteArray = async () => {\n if (transformed) {\n throw new Error(ERR_MSG_STREAM_HAS_BEEN_TRANSFORMED);\n }\n transformed = true;\n return await (0, fetch_http_handler_1.streamCollector)(stream);\n };\n const blobToWebStream = (blob) => {\n if (typeof blob.stream !== \"function\") {\n throw new Error(\"Cannot transform payload Blob to web stream. Please make sure the Blob.stream() is polyfilled.\\n\" +\n \"If you are using React Native, this API is not yet supported, see: https://react-native.canny.io/feature-requests/p/fetch-streaming-body\");\n }\n return blob.stream();\n };\n return Object.assign(stream, {\n transformToByteArray: transformToByteArray,\n transformToString: async (encoding) => {\n const buf = await transformToByteArray();\n if (encoding === \"base64\") {\n return (0, util_base64_1.toBase64)(buf);\n }\n else if (encoding === \"hex\") {\n return (0, util_hex_encoding_1.toHex)(buf);\n }\n else if (encoding === undefined || encoding === \"utf8\" || encoding === \"utf-8\") {\n return (0, util_utf8_1.toUtf8)(buf);\n }\n else if (typeof TextDecoder === \"function\") {\n return new TextDecoder(encoding).decode(buf);\n }\n else {\n throw new Error(\"TextDecoder is not available, please make sure polyfill is provided.\");\n }\n },\n transformToWebStream: () => {\n if (transformed) {\n throw new Error(ERR_MSG_STREAM_HAS_BEEN_TRANSFORMED);\n }\n transformed = true;\n if (isBlobInstance(stream)) {\n return blobToWebStream(stream);\n }\n else if ((0, stream_type_check_1.isReadableStream)(stream)) {\n return stream;\n }\n else {\n throw new Error(`Cannot transform payload to web stream, got ${stream}`);\n }\n },\n });\n};\nexports.sdkStreamMixin = sdkStreamMixin;\nconst isBlobInstance = (stream) => typeof Blob === \"function\" && stream instanceof Blob;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.sdkStreamMixin = void 0;\nconst node_http_handler_1 = require(\"@smithy/node-http-handler\");\nconst util_buffer_from_1 = require(\"@smithy/util-buffer-from\");\nconst stream_1 = require(\"stream\");\nconst util_1 = require(\"util\");\nconst sdk_stream_mixin_browser_1 = require(\"./sdk-stream-mixin.browser\");\nconst ERR_MSG_STREAM_HAS_BEEN_TRANSFORMED = \"The stream has already been transformed.\";\nconst sdkStreamMixin = (stream) => {\n var _a, _b;\n if (!(stream instanceof stream_1.Readable)) {\n try {\n return (0, sdk_stream_mixin_browser_1.sdkStreamMixin)(stream);\n }\n catch (e) {\n const name = ((_b = (_a = stream === null || stream === void 0 ? void 0 : stream.__proto__) === null || _a === void 0 ? void 0 : _a.constructor) === null || _b === void 0 ? void 0 : _b.name) || stream;\n throw new Error(`Unexpected stream implementation, expect Stream.Readable instance, got ${name}`);\n }\n }\n let transformed = false;\n const transformToByteArray = async () => {\n if (transformed) {\n throw new Error(ERR_MSG_STREAM_HAS_BEEN_TRANSFORMED);\n }\n transformed = true;\n return await (0, node_http_handler_1.streamCollector)(stream);\n };\n return Object.assign(stream, {\n transformToByteArray,\n transformToString: async (encoding) => {\n const buf = await transformToByteArray();\n if (encoding === undefined || Buffer.isEncoding(encoding)) {\n return (0, util_buffer_from_1.fromArrayBuffer)(buf.buffer, buf.byteOffset, buf.byteLength).toString(encoding);\n }\n else {\n const decoder = new util_1.TextDecoder(encoding);\n return decoder.decode(buf);\n }\n },\n transformToWebStream: () => {\n if (transformed) {\n throw new Error(ERR_MSG_STREAM_HAS_BEEN_TRANSFORMED);\n }\n if (stream.readableFlowing !== null) {\n throw new Error(\"The stream has been consumed by other callbacks.\");\n }\n if (typeof stream_1.Readable.toWeb !== \"function\") {\n throw new Error(\"Readable.toWeb() is not supported. Please make sure you are using Node.js >= 17.0.0, or polyfill is available.\");\n }\n transformed = true;\n return stream_1.Readable.toWeb(stream);\n },\n });\n};\nexports.sdkStreamMixin = sdkStreamMixin;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.splitStream = void 0;\nasync function splitStream(stream) {\n if (typeof stream.stream === \"function\") {\n stream = stream.stream();\n }\n const readableStream = stream;\n return readableStream.tee();\n}\nexports.splitStream = splitStream;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.splitStream = void 0;\nconst stream_1 = require(\"stream\");\nconst splitStream_browser_1 = require(\"./splitStream.browser\");\nconst stream_type_check_1 = require(\"./stream-type-check\");\nasync function splitStream(stream) {\n if ((0, stream_type_check_1.isReadableStream)(stream)) {\n return (0, splitStream_browser_1.splitStream)(stream);\n }\n const stream1 = new stream_1.PassThrough();\n const stream2 = new stream_1.PassThrough();\n stream.pipe(stream1);\n stream.pipe(stream2);\n return [stream1, stream2];\n}\nexports.splitStream = splitStream;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isReadableStream = void 0;\nconst isReadableStream = (stream) => {\n var _a;\n return typeof ReadableStream === \"function\" &&\n (((_a = stream === null || stream === void 0 ? void 0 : stream.constructor) === null || _a === void 0 ? void 0 : _a.name) === ReadableStream.name || stream instanceof ReadableStream);\n};\nexports.isReadableStream = isReadableStream;\n","var __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/index.ts\nvar src_exports = {};\n__export(src_exports, {\n escapeUri: () => escapeUri,\n escapeUriPath: () => escapeUriPath\n});\nmodule.exports = __toCommonJS(src_exports);\n\n// src/escape-uri.ts\nvar escapeUri = /* @__PURE__ */ __name((uri) => (\n // AWS percent-encodes some extra non-standard characters in a URI\n encodeURIComponent(uri).replace(/[!'()*]/g, hexEncode)\n), \"escapeUri\");\nvar hexEncode = /* @__PURE__ */ __name((c) => `%${c.charCodeAt(0).toString(16).toUpperCase()}`, \"hexEncode\");\n\n// src/escape-uri-path.ts\nvar escapeUriPath = /* @__PURE__ */ __name((uri) => uri.split(\"/\").map(escapeUri).join(\"/\"), \"escapeUriPath\");\n// Annotate the CommonJS export names for ESM import in node:\n\n0 && (module.exports = {\n escapeUri,\n escapeUriPath\n});\n\n","var __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/index.ts\nvar src_exports = {};\n__export(src_exports, {\n fromUtf8: () => fromUtf8,\n toUint8Array: () => toUint8Array,\n toUtf8: () => toUtf8\n});\nmodule.exports = __toCommonJS(src_exports);\n\n// src/fromUtf8.ts\nvar import_util_buffer_from = require(\"@smithy/util-buffer-from\");\nvar fromUtf8 = /* @__PURE__ */ __name((input) => {\n const buf = (0, import_util_buffer_from.fromString)(input, \"utf8\");\n return new Uint8Array(buf.buffer, buf.byteOffset, buf.byteLength / Uint8Array.BYTES_PER_ELEMENT);\n}, \"fromUtf8\");\n\n// src/toUint8Array.ts\nvar toUint8Array = /* @__PURE__ */ __name((data) => {\n if (typeof data === \"string\") {\n return fromUtf8(data);\n }\n if (ArrayBuffer.isView(data)) {\n return new Uint8Array(data.buffer, data.byteOffset, data.byteLength / Uint8Array.BYTES_PER_ELEMENT);\n }\n return new Uint8Array(data);\n}, \"toUint8Array\");\n\n// src/toUtf8.ts\n\nvar toUtf8 = /* @__PURE__ */ __name((input) => {\n if (typeof input === \"string\") {\n return input;\n }\n if (typeof input !== \"object\" || typeof input.byteOffset !== \"number\" || typeof input.byteLength !== \"number\") {\n throw new Error(\"@smithy/util-utf8: toUtf8 encoder function only accepts string | Uint8Array.\");\n }\n return (0, import_util_buffer_from.fromArrayBuffer)(input.buffer, input.byteOffset, input.byteLength).toString(\"utf8\");\n}, \"toUtf8\");\n// Annotate the CommonJS export names for ESM import in node:\n\n0 && (module.exports = {\n fromUtf8,\n toUint8Array,\n toUtf8\n});\n\n","var __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/index.ts\nvar src_exports = {};\n__export(src_exports, {\n WaiterState: () => WaiterState,\n checkExceptions: () => checkExceptions,\n createWaiter: () => createWaiter,\n waiterServiceDefaults: () => waiterServiceDefaults\n});\nmodule.exports = __toCommonJS(src_exports);\n\n// src/utils/sleep.ts\nvar sleep = /* @__PURE__ */ __name((seconds) => {\n return new Promise((resolve) => setTimeout(resolve, seconds * 1e3));\n}, \"sleep\");\n\n// src/waiter.ts\nvar waiterServiceDefaults = {\n minDelay: 2,\n maxDelay: 120\n};\nvar WaiterState = /* @__PURE__ */ ((WaiterState2) => {\n WaiterState2[\"ABORTED\"] = \"ABORTED\";\n WaiterState2[\"FAILURE\"] = \"FAILURE\";\n WaiterState2[\"SUCCESS\"] = \"SUCCESS\";\n WaiterState2[\"RETRY\"] = \"RETRY\";\n WaiterState2[\"TIMEOUT\"] = \"TIMEOUT\";\n return WaiterState2;\n})(WaiterState || {});\nvar checkExceptions = /* @__PURE__ */ __name((result) => {\n if (result.state === \"ABORTED\" /* ABORTED */) {\n const abortError = new Error(\n `${JSON.stringify({\n ...result,\n reason: \"Request was aborted\"\n })}`\n );\n abortError.name = \"AbortError\";\n throw abortError;\n } else if (result.state === \"TIMEOUT\" /* TIMEOUT */) {\n const timeoutError = new Error(\n `${JSON.stringify({\n ...result,\n reason: \"Waiter has timed out\"\n })}`\n );\n timeoutError.name = \"TimeoutError\";\n throw timeoutError;\n } else if (result.state !== \"SUCCESS\" /* SUCCESS */) {\n throw new Error(`${JSON.stringify(result)}`);\n }\n return result;\n}, \"checkExceptions\");\n\n// src/poller.ts\nvar exponentialBackoffWithJitter = /* @__PURE__ */ __name((minDelay, maxDelay, attemptCeiling, attempt) => {\n if (attempt > attemptCeiling)\n return maxDelay;\n const delay = minDelay * 2 ** (attempt - 1);\n return randomInRange(minDelay, delay);\n}, \"exponentialBackoffWithJitter\");\nvar randomInRange = /* @__PURE__ */ __name((min, max) => min + Math.random() * (max - min), \"randomInRange\");\nvar runPolling = /* @__PURE__ */ __name(async ({ minDelay, maxDelay, maxWaitTime, abortController, client, abortSignal }, input, acceptorChecks) => {\n var _a;\n const { state, reason } = await acceptorChecks(client, input);\n if (state !== \"RETRY\" /* RETRY */) {\n return { state, reason };\n }\n let currentAttempt = 1;\n const waitUntil = Date.now() + maxWaitTime * 1e3;\n const attemptCeiling = Math.log(maxDelay / minDelay) / Math.log(2) + 1;\n while (true) {\n if (((_a = abortController == null ? void 0 : abortController.signal) == null ? void 0 : _a.aborted) || (abortSignal == null ? void 0 : abortSignal.aborted)) {\n return { state: \"ABORTED\" /* ABORTED */ };\n }\n const delay = exponentialBackoffWithJitter(minDelay, maxDelay, attemptCeiling, currentAttempt);\n if (Date.now() + delay * 1e3 > waitUntil) {\n return { state: \"TIMEOUT\" /* TIMEOUT */ };\n }\n await sleep(delay);\n const { state: state2, reason: reason2 } = await acceptorChecks(client, input);\n if (state2 !== \"RETRY\" /* RETRY */) {\n return { state: state2, reason: reason2 };\n }\n currentAttempt += 1;\n }\n}, \"runPolling\");\n\n// src/utils/validate.ts\nvar validateWaiterOptions = /* @__PURE__ */ __name((options) => {\n if (options.maxWaitTime < 1) {\n throw new Error(`WaiterConfiguration.maxWaitTime must be greater than 0`);\n } else if (options.minDelay < 1) {\n throw new Error(`WaiterConfiguration.minDelay must be greater than 0`);\n } else if (options.maxDelay < 1) {\n throw new Error(`WaiterConfiguration.maxDelay must be greater than 0`);\n } else if (options.maxWaitTime <= options.minDelay) {\n throw new Error(\n `WaiterConfiguration.maxWaitTime [${options.maxWaitTime}] must be greater than WaiterConfiguration.minDelay [${options.minDelay}] for this waiter`\n );\n } else if (options.maxDelay < options.minDelay) {\n throw new Error(\n `WaiterConfiguration.maxDelay [${options.maxDelay}] must be greater than WaiterConfiguration.minDelay [${options.minDelay}] for this waiter`\n );\n }\n}, \"validateWaiterOptions\");\n\n// src/createWaiter.ts\nvar abortTimeout = /* @__PURE__ */ __name(async (abortSignal) => {\n return new Promise((resolve) => {\n const onAbort = /* @__PURE__ */ __name(() => resolve({ state: \"ABORTED\" /* ABORTED */ }), \"onAbort\");\n if (typeof abortSignal.addEventListener === \"function\") {\n abortSignal.addEventListener(\"abort\", onAbort);\n } else {\n abortSignal.onabort = onAbort;\n }\n });\n}, \"abortTimeout\");\nvar createWaiter = /* @__PURE__ */ __name(async (options, input, acceptorChecks) => {\n const params = {\n ...waiterServiceDefaults,\n ...options\n };\n validateWaiterOptions(params);\n const exitConditions = [runPolling(params, input, acceptorChecks)];\n if (options.abortController) {\n exitConditions.push(abortTimeout(options.abortController.signal));\n }\n if (options.abortSignal) {\n exitConditions.push(abortTimeout(options.abortSignal));\n }\n return Promise.race(exitConditions);\n}, \"createWaiter\");\n// Annotate the CommonJS export names for ESM import in node:\n\n0 && (module.exports = {\n createWaiter,\n waiterServiceDefaults,\n WaiterState,\n checkExceptions\n});\n\n","'use strict';\n\nmodule.exports = ({onlyFirst = false} = {}) => {\n\tconst pattern = [\n\t\t'[\\\\u001B\\\\u009B][[\\\\]()#;?]*(?:(?:(?:(?:;[-a-zA-Z\\\\d\\\\/#&.:=?%@~_]+)*|[a-zA-Z\\\\d]+(?:;[-a-zA-Z\\\\d\\\\/#&.:=?%@~_]*)*)?\\\\u0007)',\n\t\t'(?:(?:\\\\d{1,4}(?:;\\\\d{0,4})*)?[\\\\dA-PR-TZcf-ntqry=><~]))'\n\t].join('|');\n\n\treturn new RegExp(pattern, onlyFirst ? undefined : 'g');\n};\n","'use strict';\n\nconst wrapAnsi16 = (fn, offset) => (...args) => {\n\tconst code = fn(...args);\n\treturn `\\u001B[${code + offset}m`;\n};\n\nconst wrapAnsi256 = (fn, offset) => (...args) => {\n\tconst code = fn(...args);\n\treturn `\\u001B[${38 + offset};5;${code}m`;\n};\n\nconst wrapAnsi16m = (fn, offset) => (...args) => {\n\tconst rgb = fn(...args);\n\treturn `\\u001B[${38 + offset};2;${rgb[0]};${rgb[1]};${rgb[2]}m`;\n};\n\nconst ansi2ansi = n => n;\nconst rgb2rgb = (r, g, b) => [r, g, b];\n\nconst setLazyProperty = (object, property, get) => {\n\tObject.defineProperty(object, property, {\n\t\tget: () => {\n\t\t\tconst value = get();\n\n\t\t\tObject.defineProperty(object, property, {\n\t\t\t\tvalue,\n\t\t\t\tenumerable: true,\n\t\t\t\tconfigurable: true\n\t\t\t});\n\n\t\t\treturn value;\n\t\t},\n\t\tenumerable: true,\n\t\tconfigurable: true\n\t});\n};\n\n/** @type {typeof import('color-convert')} */\nlet colorConvert;\nconst makeDynamicStyles = (wrap, targetSpace, identity, isBackground) => {\n\tif (colorConvert === undefined) {\n\t\tcolorConvert = require('color-convert');\n\t}\n\n\tconst offset = isBackground ? 10 : 0;\n\tconst styles = {};\n\n\tfor (const [sourceSpace, suite] of Object.entries(colorConvert)) {\n\t\tconst name = sourceSpace === 'ansi16' ? 'ansi' : sourceSpace;\n\t\tif (sourceSpace === targetSpace) {\n\t\t\tstyles[name] = wrap(identity, offset);\n\t\t} else if (typeof suite === 'object') {\n\t\t\tstyles[name] = wrap(suite[targetSpace], offset);\n\t\t}\n\t}\n\n\treturn styles;\n};\n\nfunction assembleStyles() {\n\tconst codes = new Map();\n\tconst styles = {\n\t\tmodifier: {\n\t\t\treset: [0, 0],\n\t\t\t// 21 isn't widely supported and 22 does the same thing\n\t\t\tbold: [1, 22],\n\t\t\tdim: [2, 22],\n\t\t\titalic: [3, 23],\n\t\t\tunderline: [4, 24],\n\t\t\tinverse: [7, 27],\n\t\t\thidden: [8, 28],\n\t\t\tstrikethrough: [9, 29]\n\t\t},\n\t\tcolor: {\n\t\t\tblack: [30, 39],\n\t\t\tred: [31, 39],\n\t\t\tgreen: [32, 39],\n\t\t\tyellow: [33, 39],\n\t\t\tblue: [34, 39],\n\t\t\tmagenta: [35, 39],\n\t\t\tcyan: [36, 39],\n\t\t\twhite: [37, 39],\n\n\t\t\t// Bright color\n\t\t\tblackBright: [90, 39],\n\t\t\tredBright: [91, 39],\n\t\t\tgreenBright: [92, 39],\n\t\t\tyellowBright: [93, 39],\n\t\t\tblueBright: [94, 39],\n\t\t\tmagentaBright: [95, 39],\n\t\t\tcyanBright: [96, 39],\n\t\t\twhiteBright: [97, 39]\n\t\t},\n\t\tbgColor: {\n\t\t\tbgBlack: [40, 49],\n\t\t\tbgRed: [41, 49],\n\t\t\tbgGreen: [42, 49],\n\t\t\tbgYellow: [43, 49],\n\t\t\tbgBlue: [44, 49],\n\t\t\tbgMagenta: [45, 49],\n\t\t\tbgCyan: [46, 49],\n\t\t\tbgWhite: [47, 49],\n\n\t\t\t// Bright color\n\t\t\tbgBlackBright: [100, 49],\n\t\t\tbgRedBright: [101, 49],\n\t\t\tbgGreenBright: [102, 49],\n\t\t\tbgYellowBright: [103, 49],\n\t\t\tbgBlueBright: [104, 49],\n\t\t\tbgMagentaBright: [105, 49],\n\t\t\tbgCyanBright: [106, 49],\n\t\t\tbgWhiteBright: [107, 49]\n\t\t}\n\t};\n\n\t// Alias bright black as gray (and grey)\n\tstyles.color.gray = styles.color.blackBright;\n\tstyles.bgColor.bgGray = styles.bgColor.bgBlackBright;\n\tstyles.color.grey = styles.color.blackBright;\n\tstyles.bgColor.bgGrey = styles.bgColor.bgBlackBright;\n\n\tfor (const [groupName, group] of Object.entries(styles)) {\n\t\tfor (const [styleName, style] of Object.entries(group)) {\n\t\t\tstyles[styleName] = {\n\t\t\t\topen: `\\u001B[${style[0]}m`,\n\t\t\t\tclose: `\\u001B[${style[1]}m`\n\t\t\t};\n\n\t\t\tgroup[styleName] = styles[styleName];\n\n\t\t\tcodes.set(style[0], style[1]);\n\t\t}\n\n\t\tObject.defineProperty(styles, groupName, {\n\t\t\tvalue: group,\n\t\t\tenumerable: false\n\t\t});\n\t}\n\n\tObject.defineProperty(styles, 'codes', {\n\t\tvalue: codes,\n\t\tenumerable: false\n\t});\n\n\tstyles.color.close = '\\u001B[39m';\n\tstyles.bgColor.close = '\\u001B[49m';\n\n\tsetLazyProperty(styles.color, 'ansi', () => makeDynamicStyles(wrapAnsi16, 'ansi16', ansi2ansi, false));\n\tsetLazyProperty(styles.color, 'ansi256', () => makeDynamicStyles(wrapAnsi256, 'ansi256', ansi2ansi, false));\n\tsetLazyProperty(styles.color, 'ansi16m', () => makeDynamicStyles(wrapAnsi16m, 'rgb', rgb2rgb, false));\n\tsetLazyProperty(styles.bgColor, 'ansi', () => makeDynamicStyles(wrapAnsi16, 'ansi16', ansi2ansi, true));\n\tsetLazyProperty(styles.bgColor, 'ansi256', () => makeDynamicStyles(wrapAnsi256, 'ansi256', ansi2ansi, true));\n\tsetLazyProperty(styles.bgColor, 'ansi16m', () => makeDynamicStyles(wrapAnsi16m, 'rgb', rgb2rgb, true));\n\n\treturn styles;\n}\n\n// Make the export immutable\nObject.defineProperty(module, 'exports', {\n\tenumerable: true,\n\tget: assembleStyles\n});\n","'use strict';\nconst regex = '[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]';\n\nconst astralRegex = options => options && options.exact ? new RegExp(`^${regex}$`) : new RegExp(regex, 'g');\n\nmodule.exports = astralRegex;\n","var register = require(\"./lib/register\");\nvar addHook = require(\"./lib/add\");\nvar removeHook = require(\"./lib/remove\");\n\n// bind with array of arguments: https://stackoverflow.com/a/21792913\nvar bind = Function.bind;\nvar bindable = bind.bind(bind);\n\nfunction bindApi(hook, state, name) {\n var removeHookRef = bindable(removeHook, null).apply(\n null,\n name ? [state, name] : [state]\n );\n hook.api = { remove: removeHookRef };\n hook.remove = removeHookRef;\n [\"before\", \"error\", \"after\", \"wrap\"].forEach(function (kind) {\n var args = name ? [state, kind, name] : [state, kind];\n hook[kind] = hook.api[kind] = bindable(addHook, null).apply(null, args);\n });\n}\n\nfunction HookSingular() {\n var singularHookName = \"h\";\n var singularHookState = {\n registry: {},\n };\n var singularHook = register.bind(null, singularHookState, singularHookName);\n bindApi(singularHook, singularHookState, singularHookName);\n return singularHook;\n}\n\nfunction HookCollection() {\n var state = {\n registry: {},\n };\n\n var hook = register.bind(null, state);\n bindApi(hook, state);\n\n return hook;\n}\n\nvar collectionHookDeprecationMessageDisplayed = false;\nfunction Hook() {\n if (!collectionHookDeprecationMessageDisplayed) {\n console.warn(\n '[before-after-hook]: \"Hook()\" repurposing warning, use \"Hook.Collection()\". Read more: https://git.io/upgrade-before-after-hook-to-1.4'\n );\n collectionHookDeprecationMessageDisplayed = true;\n }\n return HookCollection();\n}\n\nHook.Singular = HookSingular.bind();\nHook.Collection = HookCollection.bind();\n\nmodule.exports = Hook;\n// expose constructors as a named property for TypeScript\nmodule.exports.Hook = Hook;\nmodule.exports.Singular = Hook.Singular;\nmodule.exports.Collection = Hook.Collection;\n","module.exports = addHook;\n\nfunction addHook(state, kind, name, hook) {\n var orig = hook;\n if (!state.registry[name]) {\n state.registry[name] = [];\n }\n\n if (kind === \"before\") {\n hook = function (method, options) {\n return Promise.resolve()\n .then(orig.bind(null, options))\n .then(method.bind(null, options));\n };\n }\n\n if (kind === \"after\") {\n hook = function (method, options) {\n var result;\n return Promise.resolve()\n .then(method.bind(null, options))\n .then(function (result_) {\n result = result_;\n return orig(result, options);\n })\n .then(function () {\n return result;\n });\n };\n }\n\n if (kind === \"error\") {\n hook = function (method, options) {\n return Promise.resolve()\n .then(method.bind(null, options))\n .catch(function (error) {\n return orig(error, options);\n });\n };\n }\n\n state.registry[name].push({\n hook: hook,\n orig: orig,\n });\n}\n","module.exports = register;\n\nfunction register(state, name, method, options) {\n if (typeof method !== \"function\") {\n throw new Error(\"method for before hook must be a function\");\n }\n\n if (!options) {\n options = {};\n }\n\n if (Array.isArray(name)) {\n return name.reverse().reduce(function (callback, name) {\n return register.bind(null, state, name, callback, options);\n }, method)();\n }\n\n return Promise.resolve().then(function () {\n if (!state.registry[name]) {\n return method(options);\n }\n\n return state.registry[name].reduce(function (method, registered) {\n return registered.hook.bind(null, method, options);\n }, method)();\n });\n}\n","module.exports = removeHook;\n\nfunction removeHook(state, name, method) {\n if (!state.registry[name]) {\n return;\n }\n\n var index = state.registry[name]\n .map(function (registered) {\n return registered.orig;\n })\n .indexOf(method);\n\n if (index === -1) {\n return;\n }\n\n state.registry[name].splice(index, 1);\n}\n","'use strict';\nconst ansiStyles = require('ansi-styles');\nconst {stdout: stdoutColor, stderr: stderrColor} = require('supports-color');\nconst {\n\tstringReplaceAll,\n\tstringEncaseCRLFWithFirstIndex\n} = require('./util');\n\nconst {isArray} = Array;\n\n// `supportsColor.level` → `ansiStyles.color[name]` mapping\nconst levelMapping = [\n\t'ansi',\n\t'ansi',\n\t'ansi256',\n\t'ansi16m'\n];\n\nconst styles = Object.create(null);\n\nconst applyOptions = (object, options = {}) => {\n\tif (options.level && !(Number.isInteger(options.level) && options.level >= 0 && options.level <= 3)) {\n\t\tthrow new Error('The `level` option should be an integer from 0 to 3');\n\t}\n\n\t// Detect level if not set manually\n\tconst colorLevel = stdoutColor ? stdoutColor.level : 0;\n\tobject.level = options.level === undefined ? colorLevel : options.level;\n};\n\nclass ChalkClass {\n\tconstructor(options) {\n\t\t// eslint-disable-next-line no-constructor-return\n\t\treturn chalkFactory(options);\n\t}\n}\n\nconst chalkFactory = options => {\n\tconst chalk = {};\n\tapplyOptions(chalk, options);\n\n\tchalk.template = (...arguments_) => chalkTag(chalk.template, ...arguments_);\n\n\tObject.setPrototypeOf(chalk, Chalk.prototype);\n\tObject.setPrototypeOf(chalk.template, chalk);\n\n\tchalk.template.constructor = () => {\n\t\tthrow new Error('`chalk.constructor()` is deprecated. Use `new chalk.Instance()` instead.');\n\t};\n\n\tchalk.template.Instance = ChalkClass;\n\n\treturn chalk.template;\n};\n\nfunction Chalk(options) {\n\treturn chalkFactory(options);\n}\n\nfor (const [styleName, style] of Object.entries(ansiStyles)) {\n\tstyles[styleName] = {\n\t\tget() {\n\t\t\tconst builder = createBuilder(this, createStyler(style.open, style.close, this._styler), this._isEmpty);\n\t\t\tObject.defineProperty(this, styleName, {value: builder});\n\t\t\treturn builder;\n\t\t}\n\t};\n}\n\nstyles.visible = {\n\tget() {\n\t\tconst builder = createBuilder(this, this._styler, true);\n\t\tObject.defineProperty(this, 'visible', {value: builder});\n\t\treturn builder;\n\t}\n};\n\nconst usedModels = ['rgb', 'hex', 'keyword', 'hsl', 'hsv', 'hwb', 'ansi', 'ansi256'];\n\nfor (const model of usedModels) {\n\tstyles[model] = {\n\t\tget() {\n\t\t\tconst {level} = this;\n\t\t\treturn function (...arguments_) {\n\t\t\t\tconst styler = createStyler(ansiStyles.color[levelMapping[level]][model](...arguments_), ansiStyles.color.close, this._styler);\n\t\t\t\treturn createBuilder(this, styler, this._isEmpty);\n\t\t\t};\n\t\t}\n\t};\n}\n\nfor (const model of usedModels) {\n\tconst bgModel = 'bg' + model[0].toUpperCase() + model.slice(1);\n\tstyles[bgModel] = {\n\t\tget() {\n\t\t\tconst {level} = this;\n\t\t\treturn function (...arguments_) {\n\t\t\t\tconst styler = createStyler(ansiStyles.bgColor[levelMapping[level]][model](...arguments_), ansiStyles.bgColor.close, this._styler);\n\t\t\t\treturn createBuilder(this, styler, this._isEmpty);\n\t\t\t};\n\t\t}\n\t};\n}\n\nconst proto = Object.defineProperties(() => {}, {\n\t...styles,\n\tlevel: {\n\t\tenumerable: true,\n\t\tget() {\n\t\t\treturn this._generator.level;\n\t\t},\n\t\tset(level) {\n\t\t\tthis._generator.level = level;\n\t\t}\n\t}\n});\n\nconst createStyler = (open, close, parent) => {\n\tlet openAll;\n\tlet closeAll;\n\tif (parent === undefined) {\n\t\topenAll = open;\n\t\tcloseAll = close;\n\t} else {\n\t\topenAll = parent.openAll + open;\n\t\tcloseAll = close + parent.closeAll;\n\t}\n\n\treturn {\n\t\topen,\n\t\tclose,\n\t\topenAll,\n\t\tcloseAll,\n\t\tparent\n\t};\n};\n\nconst createBuilder = (self, _styler, _isEmpty) => {\n\tconst builder = (...arguments_) => {\n\t\tif (isArray(arguments_[0]) && isArray(arguments_[0].raw)) {\n\t\t\t// Called as a template literal, for example: chalk.red`2 + 3 = {bold ${2+3}}`\n\t\t\treturn applyStyle(builder, chalkTag(builder, ...arguments_));\n\t\t}\n\n\t\t// Single argument is hot path, implicit coercion is faster than anything\n\t\t// eslint-disable-next-line no-implicit-coercion\n\t\treturn applyStyle(builder, (arguments_.length === 1) ? ('' + arguments_[0]) : arguments_.join(' '));\n\t};\n\n\t// We alter the prototype because we must return a function, but there is\n\t// no way to create a function with a different prototype\n\tObject.setPrototypeOf(builder, proto);\n\n\tbuilder._generator = self;\n\tbuilder._styler = _styler;\n\tbuilder._isEmpty = _isEmpty;\n\n\treturn builder;\n};\n\nconst applyStyle = (self, string) => {\n\tif (self.level <= 0 || !string) {\n\t\treturn self._isEmpty ? '' : string;\n\t}\n\n\tlet styler = self._styler;\n\n\tif (styler === undefined) {\n\t\treturn string;\n\t}\n\n\tconst {openAll, closeAll} = styler;\n\tif (string.indexOf('\\u001B') !== -1) {\n\t\twhile (styler !== undefined) {\n\t\t\t// Replace any instances already present with a re-opening code\n\t\t\t// otherwise only the part of the string until said closing code\n\t\t\t// will be colored, and the rest will simply be 'plain'.\n\t\t\tstring = stringReplaceAll(string, styler.close, styler.open);\n\n\t\t\tstyler = styler.parent;\n\t\t}\n\t}\n\n\t// We can move both next actions out of loop, because remaining actions in loop won't have\n\t// any/visible effect on parts we add here. Close the styling before a linebreak and reopen\n\t// after next line to fix a bleed issue on macOS: https://github.com/chalk/chalk/pull/92\n\tconst lfIndex = string.indexOf('\\n');\n\tif (lfIndex !== -1) {\n\t\tstring = stringEncaseCRLFWithFirstIndex(string, closeAll, openAll, lfIndex);\n\t}\n\n\treturn openAll + string + closeAll;\n};\n\nlet template;\nconst chalkTag = (chalk, ...strings) => {\n\tconst [firstString] = strings;\n\n\tif (!isArray(firstString) || !isArray(firstString.raw)) {\n\t\t// If chalk() was called by itself or with a string,\n\t\t// return the string itself as a string.\n\t\treturn strings.join(' ');\n\t}\n\n\tconst arguments_ = strings.slice(1);\n\tconst parts = [firstString.raw[0]];\n\n\tfor (let i = 1; i < firstString.length; i++) {\n\t\tparts.push(\n\t\t\tString(arguments_[i - 1]).replace(/[{}\\\\]/g, '\\\\$&'),\n\t\t\tString(firstString.raw[i])\n\t\t);\n\t}\n\n\tif (template === undefined) {\n\t\ttemplate = require('./templates');\n\t}\n\n\treturn template(chalk, parts.join(''));\n};\n\nObject.defineProperties(Chalk.prototype, styles);\n\nconst chalk = Chalk(); // eslint-disable-line new-cap\nchalk.supportsColor = stdoutColor;\nchalk.stderr = Chalk({level: stderrColor ? stderrColor.level : 0}); // eslint-disable-line new-cap\nchalk.stderr.supportsColor = stderrColor;\n\nmodule.exports = chalk;\n","'use strict';\nconst TEMPLATE_REGEX = /(?:\\\\(u(?:[a-f\\d]{4}|\\{[a-f\\d]{1,6}\\})|x[a-f\\d]{2}|.))|(?:\\{(~)?(\\w+(?:\\([^)]*\\))?(?:\\.\\w+(?:\\([^)]*\\))?)*)(?:[ \\t]|(?=\\r?\\n)))|(\\})|((?:.|[\\r\\n\\f])+?)/gi;\nconst STYLE_REGEX = /(?:^|\\.)(\\w+)(?:\\(([^)]*)\\))?/g;\nconst STRING_REGEX = /^(['\"])((?:\\\\.|(?!\\1)[^\\\\])*)\\1$/;\nconst ESCAPE_REGEX = /\\\\(u(?:[a-f\\d]{4}|{[a-f\\d]{1,6}})|x[a-f\\d]{2}|.)|([^\\\\])/gi;\n\nconst ESCAPES = new Map([\n\t['n', '\\n'],\n\t['r', '\\r'],\n\t['t', '\\t'],\n\t['b', '\\b'],\n\t['f', '\\f'],\n\t['v', '\\v'],\n\t['0', '\\0'],\n\t['\\\\', '\\\\'],\n\t['e', '\\u001B'],\n\t['a', '\\u0007']\n]);\n\nfunction unescape(c) {\n\tconst u = c[0] === 'u';\n\tconst bracket = c[1] === '{';\n\n\tif ((u && !bracket && c.length === 5) || (c[0] === 'x' && c.length === 3)) {\n\t\treturn String.fromCharCode(parseInt(c.slice(1), 16));\n\t}\n\n\tif (u && bracket) {\n\t\treturn String.fromCodePoint(parseInt(c.slice(2, -1), 16));\n\t}\n\n\treturn ESCAPES.get(c) || c;\n}\n\nfunction parseArguments(name, arguments_) {\n\tconst results = [];\n\tconst chunks = arguments_.trim().split(/\\s*,\\s*/g);\n\tlet matches;\n\n\tfor (const chunk of chunks) {\n\t\tconst number = Number(chunk);\n\t\tif (!Number.isNaN(number)) {\n\t\t\tresults.push(number);\n\t\t} else if ((matches = chunk.match(STRING_REGEX))) {\n\t\t\tresults.push(matches[2].replace(ESCAPE_REGEX, (m, escape, character) => escape ? unescape(escape) : character));\n\t\t} else {\n\t\t\tthrow new Error(`Invalid Chalk template style argument: ${chunk} (in style '${name}')`);\n\t\t}\n\t}\n\n\treturn results;\n}\n\nfunction parseStyle(style) {\n\tSTYLE_REGEX.lastIndex = 0;\n\n\tconst results = [];\n\tlet matches;\n\n\twhile ((matches = STYLE_REGEX.exec(style)) !== null) {\n\t\tconst name = matches[1];\n\n\t\tif (matches[2]) {\n\t\t\tconst args = parseArguments(name, matches[2]);\n\t\t\tresults.push([name].concat(args));\n\t\t} else {\n\t\t\tresults.push([name]);\n\t\t}\n\t}\n\n\treturn results;\n}\n\nfunction buildStyle(chalk, styles) {\n\tconst enabled = {};\n\n\tfor (const layer of styles) {\n\t\tfor (const style of layer.styles) {\n\t\t\tenabled[style[0]] = layer.inverse ? null : style.slice(1);\n\t\t}\n\t}\n\n\tlet current = chalk;\n\tfor (const [styleName, styles] of Object.entries(enabled)) {\n\t\tif (!Array.isArray(styles)) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (!(styleName in current)) {\n\t\t\tthrow new Error(`Unknown Chalk style: ${styleName}`);\n\t\t}\n\n\t\tcurrent = styles.length > 0 ? current[styleName](...styles) : current[styleName];\n\t}\n\n\treturn current;\n}\n\nmodule.exports = (chalk, temporary) => {\n\tconst styles = [];\n\tconst chunks = [];\n\tlet chunk = [];\n\n\t// eslint-disable-next-line max-params\n\ttemporary.replace(TEMPLATE_REGEX, (m, escapeCharacter, inverse, style, close, character) => {\n\t\tif (escapeCharacter) {\n\t\t\tchunk.push(unescape(escapeCharacter));\n\t\t} else if (style) {\n\t\t\tconst string = chunk.join('');\n\t\t\tchunk = [];\n\t\t\tchunks.push(styles.length === 0 ? string : buildStyle(chalk, styles)(string));\n\t\t\tstyles.push({inverse, styles: parseStyle(style)});\n\t\t} else if (close) {\n\t\t\tif (styles.length === 0) {\n\t\t\t\tthrow new Error('Found extraneous } in Chalk template literal');\n\t\t\t}\n\n\t\t\tchunks.push(buildStyle(chalk, styles)(chunk.join('')));\n\t\t\tchunk = [];\n\t\t\tstyles.pop();\n\t\t} else {\n\t\t\tchunk.push(character);\n\t\t}\n\t});\n\n\tchunks.push(chunk.join(''));\n\n\tif (styles.length > 0) {\n\t\tconst errMessage = `Chalk template literal is missing ${styles.length} closing bracket${styles.length === 1 ? '' : 's'} (\\`}\\`)`;\n\t\tthrow new Error(errMessage);\n\t}\n\n\treturn chunks.join('');\n};\n","'use strict';\n\nconst stringReplaceAll = (string, substring, replacer) => {\n\tlet index = string.indexOf(substring);\n\tif (index === -1) {\n\t\treturn string;\n\t}\n\n\tconst substringLength = substring.length;\n\tlet endIndex = 0;\n\tlet returnValue = '';\n\tdo {\n\t\treturnValue += string.substr(endIndex, index - endIndex) + substring + replacer;\n\t\tendIndex = index + substringLength;\n\t\tindex = string.indexOf(substring, endIndex);\n\t} while (index !== -1);\n\n\treturnValue += string.substr(endIndex);\n\treturn returnValue;\n};\n\nconst stringEncaseCRLFWithFirstIndex = (string, prefix, postfix, index) => {\n\tlet endIndex = 0;\n\tlet returnValue = '';\n\tdo {\n\t\tconst gotCR = string[index - 1] === '\\r';\n\t\treturnValue += string.substr(endIndex, (gotCR ? index - 1 : index) - endIndex) + prefix + (gotCR ? '\\r\\n' : '\\n') + postfix;\n\t\tendIndex = index + 1;\n\t\tindex = string.indexOf('\\n', endIndex);\n\t} while (index !== -1);\n\n\treturnValue += string.substr(endIndex);\n\treturn returnValue;\n};\n\nmodule.exports = {\n\tstringReplaceAll,\n\tstringEncaseCRLFWithFirstIndex\n};\n","/* MIT license */\n/* eslint-disable no-mixed-operators */\nconst cssKeywords = require('color-name');\n\n// NOTE: conversions should only return primitive values (i.e. arrays, or\n// values that give correct `typeof` results).\n// do not use box values types (i.e. Number(), String(), etc.)\n\nconst reverseKeywords = {};\nfor (const key of Object.keys(cssKeywords)) {\n\treverseKeywords[cssKeywords[key]] = key;\n}\n\nconst convert = {\n\trgb: {channels: 3, labels: 'rgb'},\n\thsl: {channels: 3, labels: 'hsl'},\n\thsv: {channels: 3, labels: 'hsv'},\n\thwb: {channels: 3, labels: 'hwb'},\n\tcmyk: {channels: 4, labels: 'cmyk'},\n\txyz: {channels: 3, labels: 'xyz'},\n\tlab: {channels: 3, labels: 'lab'},\n\tlch: {channels: 3, labels: 'lch'},\n\thex: {channels: 1, labels: ['hex']},\n\tkeyword: {channels: 1, labels: ['keyword']},\n\tansi16: {channels: 1, labels: ['ansi16']},\n\tansi256: {channels: 1, labels: ['ansi256']},\n\thcg: {channels: 3, labels: ['h', 'c', 'g']},\n\tapple: {channels: 3, labels: ['r16', 'g16', 'b16']},\n\tgray: {channels: 1, labels: ['gray']}\n};\n\nmodule.exports = convert;\n\n// Hide .channels and .labels properties\nfor (const model of Object.keys(convert)) {\n\tif (!('channels' in convert[model])) {\n\t\tthrow new Error('missing channels property: ' + model);\n\t}\n\n\tif (!('labels' in convert[model])) {\n\t\tthrow new Error('missing channel labels property: ' + model);\n\t}\n\n\tif (convert[model].labels.length !== convert[model].channels) {\n\t\tthrow new Error('channel and label counts mismatch: ' + model);\n\t}\n\n\tconst {channels, labels} = convert[model];\n\tdelete convert[model].channels;\n\tdelete convert[model].labels;\n\tObject.defineProperty(convert[model], 'channels', {value: channels});\n\tObject.defineProperty(convert[model], 'labels', {value: labels});\n}\n\nconvert.rgb.hsl = function (rgb) {\n\tconst r = rgb[0] / 255;\n\tconst g = rgb[1] / 255;\n\tconst b = rgb[2] / 255;\n\tconst min = Math.min(r, g, b);\n\tconst max = Math.max(r, g, b);\n\tconst delta = max - min;\n\tlet h;\n\tlet s;\n\n\tif (max === min) {\n\t\th = 0;\n\t} else if (r === max) {\n\t\th = (g - b) / delta;\n\t} else if (g === max) {\n\t\th = 2 + (b - r) / delta;\n\t} else if (b === max) {\n\t\th = 4 + (r - g) / delta;\n\t}\n\n\th = Math.min(h * 60, 360);\n\n\tif (h < 0) {\n\t\th += 360;\n\t}\n\n\tconst l = (min + max) / 2;\n\n\tif (max === min) {\n\t\ts = 0;\n\t} else if (l <= 0.5) {\n\t\ts = delta / (max + min);\n\t} else {\n\t\ts = delta / (2 - max - min);\n\t}\n\n\treturn [h, s * 100, l * 100];\n};\n\nconvert.rgb.hsv = function (rgb) {\n\tlet rdif;\n\tlet gdif;\n\tlet bdif;\n\tlet h;\n\tlet s;\n\n\tconst r = rgb[0] / 255;\n\tconst g = rgb[1] / 255;\n\tconst b = rgb[2] / 255;\n\tconst v = Math.max(r, g, b);\n\tconst diff = v - Math.min(r, g, b);\n\tconst diffc = function (c) {\n\t\treturn (v - c) / 6 / diff + 1 / 2;\n\t};\n\n\tif (diff === 0) {\n\t\th = 0;\n\t\ts = 0;\n\t} else {\n\t\ts = diff / v;\n\t\trdif = diffc(r);\n\t\tgdif = diffc(g);\n\t\tbdif = diffc(b);\n\n\t\tif (r === v) {\n\t\t\th = bdif - gdif;\n\t\t} else if (g === v) {\n\t\t\th = (1 / 3) + rdif - bdif;\n\t\t} else if (b === v) {\n\t\t\th = (2 / 3) + gdif - rdif;\n\t\t}\n\n\t\tif (h < 0) {\n\t\t\th += 1;\n\t\t} else if (h > 1) {\n\t\t\th -= 1;\n\t\t}\n\t}\n\n\treturn [\n\t\th * 360,\n\t\ts * 100,\n\t\tv * 100\n\t];\n};\n\nconvert.rgb.hwb = function (rgb) {\n\tconst r = rgb[0];\n\tconst g = rgb[1];\n\tlet b = rgb[2];\n\tconst h = convert.rgb.hsl(rgb)[0];\n\tconst w = 1 / 255 * Math.min(r, Math.min(g, b));\n\n\tb = 1 - 1 / 255 * Math.max(r, Math.max(g, b));\n\n\treturn [h, w * 100, b * 100];\n};\n\nconvert.rgb.cmyk = function (rgb) {\n\tconst r = rgb[0] / 255;\n\tconst g = rgb[1] / 255;\n\tconst b = rgb[2] / 255;\n\n\tconst k = Math.min(1 - r, 1 - g, 1 - b);\n\tconst c = (1 - r - k) / (1 - k) || 0;\n\tconst m = (1 - g - k) / (1 - k) || 0;\n\tconst y = (1 - b - k) / (1 - k) || 0;\n\n\treturn [c * 100, m * 100, y * 100, k * 100];\n};\n\nfunction comparativeDistance(x, y) {\n\t/*\n\t\tSee https://en.m.wikipedia.org/wiki/Euclidean_distance#Squared_Euclidean_distance\n\t*/\n\treturn (\n\t\t((x[0] - y[0]) ** 2) +\n\t\t((x[1] - y[1]) ** 2) +\n\t\t((x[2] - y[2]) ** 2)\n\t);\n}\n\nconvert.rgb.keyword = function (rgb) {\n\tconst reversed = reverseKeywords[rgb];\n\tif (reversed) {\n\t\treturn reversed;\n\t}\n\n\tlet currentClosestDistance = Infinity;\n\tlet currentClosestKeyword;\n\n\tfor (const keyword of Object.keys(cssKeywords)) {\n\t\tconst value = cssKeywords[keyword];\n\n\t\t// Compute comparative distance\n\t\tconst distance = comparativeDistance(rgb, value);\n\n\t\t// Check if its less, if so set as closest\n\t\tif (distance < currentClosestDistance) {\n\t\t\tcurrentClosestDistance = distance;\n\t\t\tcurrentClosestKeyword = keyword;\n\t\t}\n\t}\n\n\treturn currentClosestKeyword;\n};\n\nconvert.keyword.rgb = function (keyword) {\n\treturn cssKeywords[keyword];\n};\n\nconvert.rgb.xyz = function (rgb) {\n\tlet r = rgb[0] / 255;\n\tlet g = rgb[1] / 255;\n\tlet b = rgb[2] / 255;\n\n\t// Assume sRGB\n\tr = r > 0.04045 ? (((r + 0.055) / 1.055) ** 2.4) : (r / 12.92);\n\tg = g > 0.04045 ? (((g + 0.055) / 1.055) ** 2.4) : (g / 12.92);\n\tb = b > 0.04045 ? (((b + 0.055) / 1.055) ** 2.4) : (b / 12.92);\n\n\tconst x = (r * 0.4124) + (g * 0.3576) + (b * 0.1805);\n\tconst y = (r * 0.2126) + (g * 0.7152) + (b * 0.0722);\n\tconst z = (r * 0.0193) + (g * 0.1192) + (b * 0.9505);\n\n\treturn [x * 100, y * 100, z * 100];\n};\n\nconvert.rgb.lab = function (rgb) {\n\tconst xyz = convert.rgb.xyz(rgb);\n\tlet x = xyz[0];\n\tlet y = xyz[1];\n\tlet z = xyz[2];\n\n\tx /= 95.047;\n\ty /= 100;\n\tz /= 108.883;\n\n\tx = x > 0.008856 ? (x ** (1 / 3)) : (7.787 * x) + (16 / 116);\n\ty = y > 0.008856 ? (y ** (1 / 3)) : (7.787 * y) + (16 / 116);\n\tz = z > 0.008856 ? (z ** (1 / 3)) : (7.787 * z) + (16 / 116);\n\n\tconst l = (116 * y) - 16;\n\tconst a = 500 * (x - y);\n\tconst b = 200 * (y - z);\n\n\treturn [l, a, b];\n};\n\nconvert.hsl.rgb = function (hsl) {\n\tconst h = hsl[0] / 360;\n\tconst s = hsl[1] / 100;\n\tconst l = hsl[2] / 100;\n\tlet t2;\n\tlet t3;\n\tlet val;\n\n\tif (s === 0) {\n\t\tval = l * 255;\n\t\treturn [val, val, val];\n\t}\n\n\tif (l < 0.5) {\n\t\tt2 = l * (1 + s);\n\t} else {\n\t\tt2 = l + s - l * s;\n\t}\n\n\tconst t1 = 2 * l - t2;\n\n\tconst rgb = [0, 0, 0];\n\tfor (let i = 0; i < 3; i++) {\n\t\tt3 = h + 1 / 3 * -(i - 1);\n\t\tif (t3 < 0) {\n\t\t\tt3++;\n\t\t}\n\n\t\tif (t3 > 1) {\n\t\t\tt3--;\n\t\t}\n\n\t\tif (6 * t3 < 1) {\n\t\t\tval = t1 + (t2 - t1) * 6 * t3;\n\t\t} else if (2 * t3 < 1) {\n\t\t\tval = t2;\n\t\t} else if (3 * t3 < 2) {\n\t\t\tval = t1 + (t2 - t1) * (2 / 3 - t3) * 6;\n\t\t} else {\n\t\t\tval = t1;\n\t\t}\n\n\t\trgb[i] = val * 255;\n\t}\n\n\treturn rgb;\n};\n\nconvert.hsl.hsv = function (hsl) {\n\tconst h = hsl[0];\n\tlet s = hsl[1] / 100;\n\tlet l = hsl[2] / 100;\n\tlet smin = s;\n\tconst lmin = Math.max(l, 0.01);\n\n\tl *= 2;\n\ts *= (l <= 1) ? l : 2 - l;\n\tsmin *= lmin <= 1 ? lmin : 2 - lmin;\n\tconst v = (l + s) / 2;\n\tconst sv = l === 0 ? (2 * smin) / (lmin + smin) : (2 * s) / (l + s);\n\n\treturn [h, sv * 100, v * 100];\n};\n\nconvert.hsv.rgb = function (hsv) {\n\tconst h = hsv[0] / 60;\n\tconst s = hsv[1] / 100;\n\tlet v = hsv[2] / 100;\n\tconst hi = Math.floor(h) % 6;\n\n\tconst f = h - Math.floor(h);\n\tconst p = 255 * v * (1 - s);\n\tconst q = 255 * v * (1 - (s * f));\n\tconst t = 255 * v * (1 - (s * (1 - f)));\n\tv *= 255;\n\n\tswitch (hi) {\n\t\tcase 0:\n\t\t\treturn [v, t, p];\n\t\tcase 1:\n\t\t\treturn [q, v, p];\n\t\tcase 2:\n\t\t\treturn [p, v, t];\n\t\tcase 3:\n\t\t\treturn [p, q, v];\n\t\tcase 4:\n\t\t\treturn [t, p, v];\n\t\tcase 5:\n\t\t\treturn [v, p, q];\n\t}\n};\n\nconvert.hsv.hsl = function (hsv) {\n\tconst h = hsv[0];\n\tconst s = hsv[1] / 100;\n\tconst v = hsv[2] / 100;\n\tconst vmin = Math.max(v, 0.01);\n\tlet sl;\n\tlet l;\n\n\tl = (2 - s) * v;\n\tconst lmin = (2 - s) * vmin;\n\tsl = s * vmin;\n\tsl /= (lmin <= 1) ? lmin : 2 - lmin;\n\tsl = sl || 0;\n\tl /= 2;\n\n\treturn [h, sl * 100, l * 100];\n};\n\n// http://dev.w3.org/csswg/css-color/#hwb-to-rgb\nconvert.hwb.rgb = function (hwb) {\n\tconst h = hwb[0] / 360;\n\tlet wh = hwb[1] / 100;\n\tlet bl = hwb[2] / 100;\n\tconst ratio = wh + bl;\n\tlet f;\n\n\t// Wh + bl cant be > 1\n\tif (ratio > 1) {\n\t\twh /= ratio;\n\t\tbl /= ratio;\n\t}\n\n\tconst i = Math.floor(6 * h);\n\tconst v = 1 - bl;\n\tf = 6 * h - i;\n\n\tif ((i & 0x01) !== 0) {\n\t\tf = 1 - f;\n\t}\n\n\tconst n = wh + f * (v - wh); // Linear interpolation\n\n\tlet r;\n\tlet g;\n\tlet b;\n\t/* eslint-disable max-statements-per-line,no-multi-spaces */\n\tswitch (i) {\n\t\tdefault:\n\t\tcase 6:\n\t\tcase 0: r = v; g = n; b = wh; break;\n\t\tcase 1: r = n; g = v; b = wh; break;\n\t\tcase 2: r = wh; g = v; b = n; break;\n\t\tcase 3: r = wh; g = n; b = v; break;\n\t\tcase 4: r = n; g = wh; b = v; break;\n\t\tcase 5: r = v; g = wh; b = n; break;\n\t}\n\t/* eslint-enable max-statements-per-line,no-multi-spaces */\n\n\treturn [r * 255, g * 255, b * 255];\n};\n\nconvert.cmyk.rgb = function (cmyk) {\n\tconst c = cmyk[0] / 100;\n\tconst m = cmyk[1] / 100;\n\tconst y = cmyk[2] / 100;\n\tconst k = cmyk[3] / 100;\n\n\tconst r = 1 - Math.min(1, c * (1 - k) + k);\n\tconst g = 1 - Math.min(1, m * (1 - k) + k);\n\tconst b = 1 - Math.min(1, y * (1 - k) + k);\n\n\treturn [r * 255, g * 255, b * 255];\n};\n\nconvert.xyz.rgb = function (xyz) {\n\tconst x = xyz[0] / 100;\n\tconst y = xyz[1] / 100;\n\tconst z = xyz[2] / 100;\n\tlet r;\n\tlet g;\n\tlet b;\n\n\tr = (x * 3.2406) + (y * -1.5372) + (z * -0.4986);\n\tg = (x * -0.9689) + (y * 1.8758) + (z * 0.0415);\n\tb = (x * 0.0557) + (y * -0.2040) + (z * 1.0570);\n\n\t// Assume sRGB\n\tr = r > 0.0031308\n\t\t? ((1.055 * (r ** (1.0 / 2.4))) - 0.055)\n\t\t: r * 12.92;\n\n\tg = g > 0.0031308\n\t\t? ((1.055 * (g ** (1.0 / 2.4))) - 0.055)\n\t\t: g * 12.92;\n\n\tb = b > 0.0031308\n\t\t? ((1.055 * (b ** (1.0 / 2.4))) - 0.055)\n\t\t: b * 12.92;\n\n\tr = Math.min(Math.max(0, r), 1);\n\tg = Math.min(Math.max(0, g), 1);\n\tb = Math.min(Math.max(0, b), 1);\n\n\treturn [r * 255, g * 255, b * 255];\n};\n\nconvert.xyz.lab = function (xyz) {\n\tlet x = xyz[0];\n\tlet y = xyz[1];\n\tlet z = xyz[2];\n\n\tx /= 95.047;\n\ty /= 100;\n\tz /= 108.883;\n\n\tx = x > 0.008856 ? (x ** (1 / 3)) : (7.787 * x) + (16 / 116);\n\ty = y > 0.008856 ? (y ** (1 / 3)) : (7.787 * y) + (16 / 116);\n\tz = z > 0.008856 ? (z ** (1 / 3)) : (7.787 * z) + (16 / 116);\n\n\tconst l = (116 * y) - 16;\n\tconst a = 500 * (x - y);\n\tconst b = 200 * (y - z);\n\n\treturn [l, a, b];\n};\n\nconvert.lab.xyz = function (lab) {\n\tconst l = lab[0];\n\tconst a = lab[1];\n\tconst b = lab[2];\n\tlet x;\n\tlet y;\n\tlet z;\n\n\ty = (l + 16) / 116;\n\tx = a / 500 + y;\n\tz = y - b / 200;\n\n\tconst y2 = y ** 3;\n\tconst x2 = x ** 3;\n\tconst z2 = z ** 3;\n\ty = y2 > 0.008856 ? y2 : (y - 16 / 116) / 7.787;\n\tx = x2 > 0.008856 ? x2 : (x - 16 / 116) / 7.787;\n\tz = z2 > 0.008856 ? z2 : (z - 16 / 116) / 7.787;\n\n\tx *= 95.047;\n\ty *= 100;\n\tz *= 108.883;\n\n\treturn [x, y, z];\n};\n\nconvert.lab.lch = function (lab) {\n\tconst l = lab[0];\n\tconst a = lab[1];\n\tconst b = lab[2];\n\tlet h;\n\n\tconst hr = Math.atan2(b, a);\n\th = hr * 360 / 2 / Math.PI;\n\n\tif (h < 0) {\n\t\th += 360;\n\t}\n\n\tconst c = Math.sqrt(a * a + b * b);\n\n\treturn [l, c, h];\n};\n\nconvert.lch.lab = function (lch) {\n\tconst l = lch[0];\n\tconst c = lch[1];\n\tconst h = lch[2];\n\n\tconst hr = h / 360 * 2 * Math.PI;\n\tconst a = c * Math.cos(hr);\n\tconst b = c * Math.sin(hr);\n\n\treturn [l, a, b];\n};\n\nconvert.rgb.ansi16 = function (args, saturation = null) {\n\tconst [r, g, b] = args;\n\tlet value = saturation === null ? convert.rgb.hsv(args)[2] : saturation; // Hsv -> ansi16 optimization\n\n\tvalue = Math.round(value / 50);\n\n\tif (value === 0) {\n\t\treturn 30;\n\t}\n\n\tlet ansi = 30\n\t\t+ ((Math.round(b / 255) << 2)\n\t\t| (Math.round(g / 255) << 1)\n\t\t| Math.round(r / 255));\n\n\tif (value === 2) {\n\t\tansi += 60;\n\t}\n\n\treturn ansi;\n};\n\nconvert.hsv.ansi16 = function (args) {\n\t// Optimization here; we already know the value and don't need to get\n\t// it converted for us.\n\treturn convert.rgb.ansi16(convert.hsv.rgb(args), args[2]);\n};\n\nconvert.rgb.ansi256 = function (args) {\n\tconst r = args[0];\n\tconst g = args[1];\n\tconst b = args[2];\n\n\t// We use the extended greyscale palette here, with the exception of\n\t// black and white. normal palette only has 4 greyscale shades.\n\tif (r === g && g === b) {\n\t\tif (r < 8) {\n\t\t\treturn 16;\n\t\t}\n\n\t\tif (r > 248) {\n\t\t\treturn 231;\n\t\t}\n\n\t\treturn Math.round(((r - 8) / 247) * 24) + 232;\n\t}\n\n\tconst ansi = 16\n\t\t+ (36 * Math.round(r / 255 * 5))\n\t\t+ (6 * Math.round(g / 255 * 5))\n\t\t+ Math.round(b / 255 * 5);\n\n\treturn ansi;\n};\n\nconvert.ansi16.rgb = function (args) {\n\tlet color = args % 10;\n\n\t// Handle greyscale\n\tif (color === 0 || color === 7) {\n\t\tif (args > 50) {\n\t\t\tcolor += 3.5;\n\t\t}\n\n\t\tcolor = color / 10.5 * 255;\n\n\t\treturn [color, color, color];\n\t}\n\n\tconst mult = (~~(args > 50) + 1) * 0.5;\n\tconst r = ((color & 1) * mult) * 255;\n\tconst g = (((color >> 1) & 1) * mult) * 255;\n\tconst b = (((color >> 2) & 1) * mult) * 255;\n\n\treturn [r, g, b];\n};\n\nconvert.ansi256.rgb = function (args) {\n\t// Handle greyscale\n\tif (args >= 232) {\n\t\tconst c = (args - 232) * 10 + 8;\n\t\treturn [c, c, c];\n\t}\n\n\targs -= 16;\n\n\tlet rem;\n\tconst r = Math.floor(args / 36) / 5 * 255;\n\tconst g = Math.floor((rem = args % 36) / 6) / 5 * 255;\n\tconst b = (rem % 6) / 5 * 255;\n\n\treturn [r, g, b];\n};\n\nconvert.rgb.hex = function (args) {\n\tconst integer = ((Math.round(args[0]) & 0xFF) << 16)\n\t\t+ ((Math.round(args[1]) & 0xFF) << 8)\n\t\t+ (Math.round(args[2]) & 0xFF);\n\n\tconst string = integer.toString(16).toUpperCase();\n\treturn '000000'.substring(string.length) + string;\n};\n\nconvert.hex.rgb = function (args) {\n\tconst match = args.toString(16).match(/[a-f0-9]{6}|[a-f0-9]{3}/i);\n\tif (!match) {\n\t\treturn [0, 0, 0];\n\t}\n\n\tlet colorString = match[0];\n\n\tif (match[0].length === 3) {\n\t\tcolorString = colorString.split('').map(char => {\n\t\t\treturn char + char;\n\t\t}).join('');\n\t}\n\n\tconst integer = parseInt(colorString, 16);\n\tconst r = (integer >> 16) & 0xFF;\n\tconst g = (integer >> 8) & 0xFF;\n\tconst b = integer & 0xFF;\n\n\treturn [r, g, b];\n};\n\nconvert.rgb.hcg = function (rgb) {\n\tconst r = rgb[0] / 255;\n\tconst g = rgb[1] / 255;\n\tconst b = rgb[2] / 255;\n\tconst max = Math.max(Math.max(r, g), b);\n\tconst min = Math.min(Math.min(r, g), b);\n\tconst chroma = (max - min);\n\tlet grayscale;\n\tlet hue;\n\n\tif (chroma < 1) {\n\t\tgrayscale = min / (1 - chroma);\n\t} else {\n\t\tgrayscale = 0;\n\t}\n\n\tif (chroma <= 0) {\n\t\thue = 0;\n\t} else\n\tif (max === r) {\n\t\thue = ((g - b) / chroma) % 6;\n\t} else\n\tif (max === g) {\n\t\thue = 2 + (b - r) / chroma;\n\t} else {\n\t\thue = 4 + (r - g) / chroma;\n\t}\n\n\thue /= 6;\n\thue %= 1;\n\n\treturn [hue * 360, chroma * 100, grayscale * 100];\n};\n\nconvert.hsl.hcg = function (hsl) {\n\tconst s = hsl[1] / 100;\n\tconst l = hsl[2] / 100;\n\n\tconst c = l < 0.5 ? (2.0 * s * l) : (2.0 * s * (1.0 - l));\n\n\tlet f = 0;\n\tif (c < 1.0) {\n\t\tf = (l - 0.5 * c) / (1.0 - c);\n\t}\n\n\treturn [hsl[0], c * 100, f * 100];\n};\n\nconvert.hsv.hcg = function (hsv) {\n\tconst s = hsv[1] / 100;\n\tconst v = hsv[2] / 100;\n\n\tconst c = s * v;\n\tlet f = 0;\n\n\tif (c < 1.0) {\n\t\tf = (v - c) / (1 - c);\n\t}\n\n\treturn [hsv[0], c * 100, f * 100];\n};\n\nconvert.hcg.rgb = function (hcg) {\n\tconst h = hcg[0] / 360;\n\tconst c = hcg[1] / 100;\n\tconst g = hcg[2] / 100;\n\n\tif (c === 0.0) {\n\t\treturn [g * 255, g * 255, g * 255];\n\t}\n\n\tconst pure = [0, 0, 0];\n\tconst hi = (h % 1) * 6;\n\tconst v = hi % 1;\n\tconst w = 1 - v;\n\tlet mg = 0;\n\n\t/* eslint-disable max-statements-per-line */\n\tswitch (Math.floor(hi)) {\n\t\tcase 0:\n\t\t\tpure[0] = 1; pure[1] = v; pure[2] = 0; break;\n\t\tcase 1:\n\t\t\tpure[0] = w; pure[1] = 1; pure[2] = 0; break;\n\t\tcase 2:\n\t\t\tpure[0] = 0; pure[1] = 1; pure[2] = v; break;\n\t\tcase 3:\n\t\t\tpure[0] = 0; pure[1] = w; pure[2] = 1; break;\n\t\tcase 4:\n\t\t\tpure[0] = v; pure[1] = 0; pure[2] = 1; break;\n\t\tdefault:\n\t\t\tpure[0] = 1; pure[1] = 0; pure[2] = w;\n\t}\n\t/* eslint-enable max-statements-per-line */\n\n\tmg = (1.0 - c) * g;\n\n\treturn [\n\t\t(c * pure[0] + mg) * 255,\n\t\t(c * pure[1] + mg) * 255,\n\t\t(c * pure[2] + mg) * 255\n\t];\n};\n\nconvert.hcg.hsv = function (hcg) {\n\tconst c = hcg[1] / 100;\n\tconst g = hcg[2] / 100;\n\n\tconst v = c + g * (1.0 - c);\n\tlet f = 0;\n\n\tif (v > 0.0) {\n\t\tf = c / v;\n\t}\n\n\treturn [hcg[0], f * 100, v * 100];\n};\n\nconvert.hcg.hsl = function (hcg) {\n\tconst c = hcg[1] / 100;\n\tconst g = hcg[2] / 100;\n\n\tconst l = g * (1.0 - c) + 0.5 * c;\n\tlet s = 0;\n\n\tif (l > 0.0 && l < 0.5) {\n\t\ts = c / (2 * l);\n\t} else\n\tif (l >= 0.5 && l < 1.0) {\n\t\ts = c / (2 * (1 - l));\n\t}\n\n\treturn [hcg[0], s * 100, l * 100];\n};\n\nconvert.hcg.hwb = function (hcg) {\n\tconst c = hcg[1] / 100;\n\tconst g = hcg[2] / 100;\n\tconst v = c + g * (1.0 - c);\n\treturn [hcg[0], (v - c) * 100, (1 - v) * 100];\n};\n\nconvert.hwb.hcg = function (hwb) {\n\tconst w = hwb[1] / 100;\n\tconst b = hwb[2] / 100;\n\tconst v = 1 - b;\n\tconst c = v - w;\n\tlet g = 0;\n\n\tif (c < 1) {\n\t\tg = (v - c) / (1 - c);\n\t}\n\n\treturn [hwb[0], c * 100, g * 100];\n};\n\nconvert.apple.rgb = function (apple) {\n\treturn [(apple[0] / 65535) * 255, (apple[1] / 65535) * 255, (apple[2] / 65535) * 255];\n};\n\nconvert.rgb.apple = function (rgb) {\n\treturn [(rgb[0] / 255) * 65535, (rgb[1] / 255) * 65535, (rgb[2] / 255) * 65535];\n};\n\nconvert.gray.rgb = function (args) {\n\treturn [args[0] / 100 * 255, args[0] / 100 * 255, args[0] / 100 * 255];\n};\n\nconvert.gray.hsl = function (args) {\n\treturn [0, 0, args[0]];\n};\n\nconvert.gray.hsv = convert.gray.hsl;\n\nconvert.gray.hwb = function (gray) {\n\treturn [0, 100, gray[0]];\n};\n\nconvert.gray.cmyk = function (gray) {\n\treturn [0, 0, 0, gray[0]];\n};\n\nconvert.gray.lab = function (gray) {\n\treturn [gray[0], 0, 0];\n};\n\nconvert.gray.hex = function (gray) {\n\tconst val = Math.round(gray[0] / 100 * 255) & 0xFF;\n\tconst integer = (val << 16) + (val << 8) + val;\n\n\tconst string = integer.toString(16).toUpperCase();\n\treturn '000000'.substring(string.length) + string;\n};\n\nconvert.rgb.gray = function (rgb) {\n\tconst val = (rgb[0] + rgb[1] + rgb[2]) / 3;\n\treturn [val / 255 * 100];\n};\n","const conversions = require('./conversions');\nconst route = require('./route');\n\nconst convert = {};\n\nconst models = Object.keys(conversions);\n\nfunction wrapRaw(fn) {\n\tconst wrappedFn = function (...args) {\n\t\tconst arg0 = args[0];\n\t\tif (arg0 === undefined || arg0 === null) {\n\t\t\treturn arg0;\n\t\t}\n\n\t\tif (arg0.length > 1) {\n\t\t\targs = arg0;\n\t\t}\n\n\t\treturn fn(args);\n\t};\n\n\t// Preserve .conversion property if there is one\n\tif ('conversion' in fn) {\n\t\twrappedFn.conversion = fn.conversion;\n\t}\n\n\treturn wrappedFn;\n}\n\nfunction wrapRounded(fn) {\n\tconst wrappedFn = function (...args) {\n\t\tconst arg0 = args[0];\n\n\t\tif (arg0 === undefined || arg0 === null) {\n\t\t\treturn arg0;\n\t\t}\n\n\t\tif (arg0.length > 1) {\n\t\t\targs = arg0;\n\t\t}\n\n\t\tconst result = fn(args);\n\n\t\t// We're assuming the result is an array here.\n\t\t// see notice in conversions.js; don't use box types\n\t\t// in conversion functions.\n\t\tif (typeof result === 'object') {\n\t\t\tfor (let len = result.length, i = 0; i < len; i++) {\n\t\t\t\tresult[i] = Math.round(result[i]);\n\t\t\t}\n\t\t}\n\n\t\treturn result;\n\t};\n\n\t// Preserve .conversion property if there is one\n\tif ('conversion' in fn) {\n\t\twrappedFn.conversion = fn.conversion;\n\t}\n\n\treturn wrappedFn;\n}\n\nmodels.forEach(fromModel => {\n\tconvert[fromModel] = {};\n\n\tObject.defineProperty(convert[fromModel], 'channels', {value: conversions[fromModel].channels});\n\tObject.defineProperty(convert[fromModel], 'labels', {value: conversions[fromModel].labels});\n\n\tconst routes = route(fromModel);\n\tconst routeModels = Object.keys(routes);\n\n\trouteModels.forEach(toModel => {\n\t\tconst fn = routes[toModel];\n\n\t\tconvert[fromModel][toModel] = wrapRounded(fn);\n\t\tconvert[fromModel][toModel].raw = wrapRaw(fn);\n\t});\n});\n\nmodule.exports = convert;\n","const conversions = require('./conversions');\n\n/*\n\tThis function routes a model to all other models.\n\n\tall functions that are routed have a property `.conversion` attached\n\tto the returned synthetic function. This property is an array\n\tof strings, each with the steps in between the 'from' and 'to'\n\tcolor models (inclusive).\n\n\tconversions that are not possible simply are not included.\n*/\n\nfunction buildGraph() {\n\tconst graph = {};\n\t// https://jsperf.com/object-keys-vs-for-in-with-closure/3\n\tconst models = Object.keys(conversions);\n\n\tfor (let len = models.length, i = 0; i < len; i++) {\n\t\tgraph[models[i]] = {\n\t\t\t// http://jsperf.com/1-vs-infinity\n\t\t\t// micro-opt, but this is simple.\n\t\t\tdistance: -1,\n\t\t\tparent: null\n\t\t};\n\t}\n\n\treturn graph;\n}\n\n// https://en.wikipedia.org/wiki/Breadth-first_search\nfunction deriveBFS(fromModel) {\n\tconst graph = buildGraph();\n\tconst queue = [fromModel]; // Unshift -> queue -> pop\n\n\tgraph[fromModel].distance = 0;\n\n\twhile (queue.length) {\n\t\tconst current = queue.pop();\n\t\tconst adjacents = Object.keys(conversions[current]);\n\n\t\tfor (let len = adjacents.length, i = 0; i < len; i++) {\n\t\t\tconst adjacent = adjacents[i];\n\t\t\tconst node = graph[adjacent];\n\n\t\t\tif (node.distance === -1) {\n\t\t\t\tnode.distance = graph[current].distance + 1;\n\t\t\t\tnode.parent = current;\n\t\t\t\tqueue.unshift(adjacent);\n\t\t\t}\n\t\t}\n\t}\n\n\treturn graph;\n}\n\nfunction link(from, to) {\n\treturn function (args) {\n\t\treturn to(from(args));\n\t};\n}\n\nfunction wrapConversion(toModel, graph) {\n\tconst path = [graph[toModel].parent, toModel];\n\tlet fn = conversions[graph[toModel].parent][toModel];\n\n\tlet cur = graph[toModel].parent;\n\twhile (graph[cur].parent) {\n\t\tpath.unshift(graph[cur].parent);\n\t\tfn = link(conversions[graph[cur].parent][cur], fn);\n\t\tcur = graph[cur].parent;\n\t}\n\n\tfn.conversion = path;\n\treturn fn;\n}\n\nmodule.exports = function (fromModel) {\n\tconst graph = deriveBFS(fromModel);\n\tconst conversion = {};\n\n\tconst models = Object.keys(graph);\n\tfor (let len = models.length, i = 0; i < len; i++) {\n\t\tconst toModel = models[i];\n\t\tconst node = graph[toModel];\n\n\t\tif (node.parent === null) {\n\t\t\t// No possible conversion, or this node is the source model.\n\t\t\tcontinue;\n\t\t}\n\n\t\tconversion[toModel] = wrapConversion(toModel, graph);\n\t}\n\n\treturn conversion;\n};\n\n","'use strict'\r\n\r\nmodule.exports = {\r\n\t\"aliceblue\": [240, 248, 255],\r\n\t\"antiquewhite\": [250, 235, 215],\r\n\t\"aqua\": [0, 255, 255],\r\n\t\"aquamarine\": [127, 255, 212],\r\n\t\"azure\": [240, 255, 255],\r\n\t\"beige\": [245, 245, 220],\r\n\t\"bisque\": [255, 228, 196],\r\n\t\"black\": [0, 0, 0],\r\n\t\"blanchedalmond\": [255, 235, 205],\r\n\t\"blue\": [0, 0, 255],\r\n\t\"blueviolet\": [138, 43, 226],\r\n\t\"brown\": [165, 42, 42],\r\n\t\"burlywood\": [222, 184, 135],\r\n\t\"cadetblue\": [95, 158, 160],\r\n\t\"chartreuse\": [127, 255, 0],\r\n\t\"chocolate\": [210, 105, 30],\r\n\t\"coral\": [255, 127, 80],\r\n\t\"cornflowerblue\": [100, 149, 237],\r\n\t\"cornsilk\": [255, 248, 220],\r\n\t\"crimson\": [220, 20, 60],\r\n\t\"cyan\": [0, 255, 255],\r\n\t\"darkblue\": [0, 0, 139],\r\n\t\"darkcyan\": [0, 139, 139],\r\n\t\"darkgoldenrod\": [184, 134, 11],\r\n\t\"darkgray\": [169, 169, 169],\r\n\t\"darkgreen\": [0, 100, 0],\r\n\t\"darkgrey\": [169, 169, 169],\r\n\t\"darkkhaki\": [189, 183, 107],\r\n\t\"darkmagenta\": [139, 0, 139],\r\n\t\"darkolivegreen\": [85, 107, 47],\r\n\t\"darkorange\": [255, 140, 0],\r\n\t\"darkorchid\": [153, 50, 204],\r\n\t\"darkred\": [139, 0, 0],\r\n\t\"darksalmon\": [233, 150, 122],\r\n\t\"darkseagreen\": [143, 188, 143],\r\n\t\"darkslateblue\": [72, 61, 139],\r\n\t\"darkslategray\": [47, 79, 79],\r\n\t\"darkslategrey\": [47, 79, 79],\r\n\t\"darkturquoise\": [0, 206, 209],\r\n\t\"darkviolet\": [148, 0, 211],\r\n\t\"deeppink\": [255, 20, 147],\r\n\t\"deepskyblue\": [0, 191, 255],\r\n\t\"dimgray\": [105, 105, 105],\r\n\t\"dimgrey\": [105, 105, 105],\r\n\t\"dodgerblue\": [30, 144, 255],\r\n\t\"firebrick\": [178, 34, 34],\r\n\t\"floralwhite\": [255, 250, 240],\r\n\t\"forestgreen\": [34, 139, 34],\r\n\t\"fuchsia\": [255, 0, 255],\r\n\t\"gainsboro\": [220, 220, 220],\r\n\t\"ghostwhite\": [248, 248, 255],\r\n\t\"gold\": [255, 215, 0],\r\n\t\"goldenrod\": [218, 165, 32],\r\n\t\"gray\": [128, 128, 128],\r\n\t\"green\": [0, 128, 0],\r\n\t\"greenyellow\": [173, 255, 47],\r\n\t\"grey\": [128, 128, 128],\r\n\t\"honeydew\": [240, 255, 240],\r\n\t\"hotpink\": [255, 105, 180],\r\n\t\"indianred\": [205, 92, 92],\r\n\t\"indigo\": [75, 0, 130],\r\n\t\"ivory\": [255, 255, 240],\r\n\t\"khaki\": [240, 230, 140],\r\n\t\"lavender\": [230, 230, 250],\r\n\t\"lavenderblush\": [255, 240, 245],\r\n\t\"lawngreen\": [124, 252, 0],\r\n\t\"lemonchiffon\": [255, 250, 205],\r\n\t\"lightblue\": [173, 216, 230],\r\n\t\"lightcoral\": [240, 128, 128],\r\n\t\"lightcyan\": [224, 255, 255],\r\n\t\"lightgoldenrodyellow\": [250, 250, 210],\r\n\t\"lightgray\": [211, 211, 211],\r\n\t\"lightgreen\": [144, 238, 144],\r\n\t\"lightgrey\": [211, 211, 211],\r\n\t\"lightpink\": [255, 182, 193],\r\n\t\"lightsalmon\": [255, 160, 122],\r\n\t\"lightseagreen\": [32, 178, 170],\r\n\t\"lightskyblue\": [135, 206, 250],\r\n\t\"lightslategray\": [119, 136, 153],\r\n\t\"lightslategrey\": [119, 136, 153],\r\n\t\"lightsteelblue\": [176, 196, 222],\r\n\t\"lightyellow\": [255, 255, 224],\r\n\t\"lime\": [0, 255, 0],\r\n\t\"limegreen\": [50, 205, 50],\r\n\t\"linen\": [250, 240, 230],\r\n\t\"magenta\": [255, 0, 255],\r\n\t\"maroon\": [128, 0, 0],\r\n\t\"mediumaquamarine\": [102, 205, 170],\r\n\t\"mediumblue\": [0, 0, 205],\r\n\t\"mediumorchid\": [186, 85, 211],\r\n\t\"mediumpurple\": [147, 112, 219],\r\n\t\"mediumseagreen\": [60, 179, 113],\r\n\t\"mediumslateblue\": [123, 104, 238],\r\n\t\"mediumspringgreen\": [0, 250, 154],\r\n\t\"mediumturquoise\": [72, 209, 204],\r\n\t\"mediumvioletred\": [199, 21, 133],\r\n\t\"midnightblue\": [25, 25, 112],\r\n\t\"mintcream\": [245, 255, 250],\r\n\t\"mistyrose\": [255, 228, 225],\r\n\t\"moccasin\": [255, 228, 181],\r\n\t\"navajowhite\": [255, 222, 173],\r\n\t\"navy\": [0, 0, 128],\r\n\t\"oldlace\": [253, 245, 230],\r\n\t\"olive\": [128, 128, 0],\r\n\t\"olivedrab\": [107, 142, 35],\r\n\t\"orange\": [255, 165, 0],\r\n\t\"orangered\": [255, 69, 0],\r\n\t\"orchid\": [218, 112, 214],\r\n\t\"palegoldenrod\": [238, 232, 170],\r\n\t\"palegreen\": [152, 251, 152],\r\n\t\"paleturquoise\": [175, 238, 238],\r\n\t\"palevioletred\": [219, 112, 147],\r\n\t\"papayawhip\": [255, 239, 213],\r\n\t\"peachpuff\": [255, 218, 185],\r\n\t\"peru\": [205, 133, 63],\r\n\t\"pink\": [255, 192, 203],\r\n\t\"plum\": [221, 160, 221],\r\n\t\"powderblue\": [176, 224, 230],\r\n\t\"purple\": [128, 0, 128],\r\n\t\"rebeccapurple\": [102, 51, 153],\r\n\t\"red\": [255, 0, 0],\r\n\t\"rosybrown\": [188, 143, 143],\r\n\t\"royalblue\": [65, 105, 225],\r\n\t\"saddlebrown\": [139, 69, 19],\r\n\t\"salmon\": [250, 128, 114],\r\n\t\"sandybrown\": [244, 164, 96],\r\n\t\"seagreen\": [46, 139, 87],\r\n\t\"seashell\": [255, 245, 238],\r\n\t\"sienna\": [160, 82, 45],\r\n\t\"silver\": [192, 192, 192],\r\n\t\"skyblue\": [135, 206, 235],\r\n\t\"slateblue\": [106, 90, 205],\r\n\t\"slategray\": [112, 128, 144],\r\n\t\"slategrey\": [112, 128, 144],\r\n\t\"snow\": [255, 250, 250],\r\n\t\"springgreen\": [0, 255, 127],\r\n\t\"steelblue\": [70, 130, 180],\r\n\t\"tan\": [210, 180, 140],\r\n\t\"teal\": [0, 128, 128],\r\n\t\"thistle\": [216, 191, 216],\r\n\t\"tomato\": [255, 99, 71],\r\n\t\"turquoise\": [64, 224, 208],\r\n\t\"violet\": [238, 130, 238],\r\n\t\"wheat\": [245, 222, 179],\r\n\t\"white\": [255, 255, 255],\r\n\t\"whitesmoke\": [245, 245, 245],\r\n\t\"yellow\": [255, 255, 0],\r\n\t\"yellowgreen\": [154, 205, 50]\r\n};\r\n","'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\nclass Deprecation extends Error {\n constructor(message) {\n super(message); // Maintains proper stack trace (only available on V8)\n\n /* istanbul ignore next */\n\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, this.constructor);\n }\n\n this.name = 'Deprecation';\n }\n\n}\n\nexports.Deprecation = Deprecation;\n","/*istanbul ignore start*/\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.convertChangesToDMP = convertChangesToDMP;\n\n/*istanbul ignore end*/\n// See: http://code.google.com/p/google-diff-match-patch/wiki/API\nfunction convertChangesToDMP(changes) {\n var ret = [],\n change,\n operation;\n\n for (var i = 0; i < changes.length; i++) {\n change = changes[i];\n\n if (change.added) {\n operation = 1;\n } else if (change.removed) {\n operation = -1;\n } else {\n operation = 0;\n }\n\n ret.push([operation, change.value]);\n }\n\n return ret;\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb252ZXJ0L2RtcC5qcyJdLCJuYW1lcyI6WyJjb252ZXJ0Q2hhbmdlc1RvRE1QIiwiY2hhbmdlcyIsInJldCIsImNoYW5nZSIsIm9wZXJhdGlvbiIsImkiLCJsZW5ndGgiLCJhZGRlZCIsInJlbW92ZWQiLCJwdXNoIiwidmFsdWUiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFBO0FBQ08sU0FBU0EsbUJBQVQsQ0FBNkJDLE9BQTdCLEVBQXNDO0FBQzNDLE1BQUlDLEdBQUcsR0FBRyxFQUFWO0FBQUEsTUFDSUMsTUFESjtBQUFBLE1BRUlDLFNBRko7O0FBR0EsT0FBSyxJQUFJQyxDQUFDLEdBQUcsQ0FBYixFQUFnQkEsQ0FBQyxHQUFHSixPQUFPLENBQUNLLE1BQTVCLEVBQW9DRCxDQUFDLEVBQXJDLEVBQXlDO0FBQ3ZDRixJQUFBQSxNQUFNLEdBQUdGLE9BQU8sQ0FBQ0ksQ0FBRCxDQUFoQjs7QUFDQSxRQUFJRixNQUFNLENBQUNJLEtBQVgsRUFBa0I7QUFDaEJILE1BQUFBLFNBQVMsR0FBRyxDQUFaO0FBQ0QsS0FGRCxNQUVPLElBQUlELE1BQU0sQ0FBQ0ssT0FBWCxFQUFvQjtBQUN6QkosTUFBQUEsU0FBUyxHQUFHLENBQUMsQ0FBYjtBQUNELEtBRk0sTUFFQTtBQUNMQSxNQUFBQSxTQUFTLEdBQUcsQ0FBWjtBQUNEOztBQUVERixJQUFBQSxHQUFHLENBQUNPLElBQUosQ0FBUyxDQUFDTCxTQUFELEVBQVlELE1BQU0sQ0FBQ08sS0FBbkIsQ0FBVDtBQUNEOztBQUNELFNBQU9SLEdBQVA7QUFDRCIsInNvdXJjZXNDb250ZW50IjpbIi8vIFNlZTogaHR0cDovL2NvZGUuZ29vZ2xlLmNvbS9wL2dvb2dsZS1kaWZmLW1hdGNoLXBhdGNoL3dpa2kvQVBJXG5leHBvcnQgZnVuY3Rpb24gY29udmVydENoYW5nZXNUb0RNUChjaGFuZ2VzKSB7XG4gIGxldCByZXQgPSBbXSxcbiAgICAgIGNoYW5nZSxcbiAgICAgIG9wZXJhdGlvbjtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBjaGFuZ2VzLmxlbmd0aDsgaSsrKSB7XG4gICAgY2hhbmdlID0gY2hhbmdlc1tpXTtcbiAgICBpZiAoY2hhbmdlLmFkZGVkKSB7XG4gICAgICBvcGVyYXRpb24gPSAxO1xuICAgIH0gZWxzZSBpZiAoY2hhbmdlLnJlbW92ZWQpIHtcbiAgICAgIG9wZXJhdGlvbiA9IC0xO1xuICAgIH0gZWxzZSB7XG4gICAgICBvcGVyYXRpb24gPSAwO1xuICAgIH1cblxuICAgIHJldC5wdXNoKFtvcGVyYXRpb24sIGNoYW5nZS52YWx1ZV0pO1xuICB9XG4gIHJldHVybiByZXQ7XG59XG4iXX0=\n","/*istanbul ignore start*/\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.convertChangesToXML = convertChangesToXML;\n\n/*istanbul ignore end*/\nfunction convertChangesToXML(changes) {\n var ret = [];\n\n for (var i = 0; i < changes.length; i++) {\n var change = changes[i];\n\n if (change.added) {\n ret.push('');\n } else if (change.removed) {\n ret.push('');\n }\n\n ret.push(escapeHTML(change.value));\n\n if (change.added) {\n ret.push('');\n } else if (change.removed) {\n ret.push('');\n }\n }\n\n return ret.join('');\n}\n\nfunction escapeHTML(s) {\n var n = s;\n n = n.replace(/&/g, '&');\n n = n.replace(//g, '>');\n n = n.replace(/\"/g, '"');\n return n;\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb252ZXJ0L3htbC5qcyJdLCJuYW1lcyI6WyJjb252ZXJ0Q2hhbmdlc1RvWE1MIiwiY2hhbmdlcyIsInJldCIsImkiLCJsZW5ndGgiLCJjaGFuZ2UiLCJhZGRlZCIsInB1c2giLCJyZW1vdmVkIiwiZXNjYXBlSFRNTCIsInZhbHVlIiwiam9pbiIsInMiLCJuIiwicmVwbGFjZSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQU8sU0FBU0EsbUJBQVQsQ0FBNkJDLE9BQTdCLEVBQXNDO0FBQzNDLE1BQUlDLEdBQUcsR0FBRyxFQUFWOztBQUNBLE9BQUssSUFBSUMsQ0FBQyxHQUFHLENBQWIsRUFBZ0JBLENBQUMsR0FBR0YsT0FBTyxDQUFDRyxNQUE1QixFQUFvQ0QsQ0FBQyxFQUFyQyxFQUF5QztBQUN2QyxRQUFJRSxNQUFNLEdBQUdKLE9BQU8sQ0FBQ0UsQ0FBRCxDQUFwQjs7QUFDQSxRQUFJRSxNQUFNLENBQUNDLEtBQVgsRUFBa0I7QUFDaEJKLE1BQUFBLEdBQUcsQ0FBQ0ssSUFBSixDQUFTLE9BQVQ7QUFDRCxLQUZELE1BRU8sSUFBSUYsTUFBTSxDQUFDRyxPQUFYLEVBQW9CO0FBQ3pCTixNQUFBQSxHQUFHLENBQUNLLElBQUosQ0FBUyxPQUFUO0FBQ0Q7O0FBRURMLElBQUFBLEdBQUcsQ0FBQ0ssSUFBSixDQUFTRSxVQUFVLENBQUNKLE1BQU0sQ0FBQ0ssS0FBUixDQUFuQjs7QUFFQSxRQUFJTCxNQUFNLENBQUNDLEtBQVgsRUFBa0I7QUFDaEJKLE1BQUFBLEdBQUcsQ0FBQ0ssSUFBSixDQUFTLFFBQVQ7QUFDRCxLQUZELE1BRU8sSUFBSUYsTUFBTSxDQUFDRyxPQUFYLEVBQW9CO0FBQ3pCTixNQUFBQSxHQUFHLENBQUNLLElBQUosQ0FBUyxRQUFUO0FBQ0Q7QUFDRjs7QUFDRCxTQUFPTCxHQUFHLENBQUNTLElBQUosQ0FBUyxFQUFULENBQVA7QUFDRDs7QUFFRCxTQUFTRixVQUFULENBQW9CRyxDQUFwQixFQUF1QjtBQUNyQixNQUFJQyxDQUFDLEdBQUdELENBQVI7QUFDQUMsRUFBQUEsQ0FBQyxHQUFHQSxDQUFDLENBQUNDLE9BQUYsQ0FBVSxJQUFWLEVBQWdCLE9BQWhCLENBQUo7QUFDQUQsRUFBQUEsQ0FBQyxHQUFHQSxDQUFDLENBQUNDLE9BQUYsQ0FBVSxJQUFWLEVBQWdCLE1BQWhCLENBQUo7QUFDQUQsRUFBQUEsQ0FBQyxHQUFHQSxDQUFDLENBQUNDLE9BQUYsQ0FBVSxJQUFWLEVBQWdCLE1BQWhCLENBQUo7QUFDQUQsRUFBQUEsQ0FBQyxHQUFHQSxDQUFDLENBQUNDLE9BQUYsQ0FBVSxJQUFWLEVBQWdCLFFBQWhCLENBQUo7QUFFQSxTQUFPRCxDQUFQO0FBQ0QiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZnVuY3Rpb24gY29udmVydENoYW5nZXNUb1hNTChjaGFuZ2VzKSB7XG4gIGxldCByZXQgPSBbXTtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBjaGFuZ2VzLmxlbmd0aDsgaSsrKSB7XG4gICAgbGV0IGNoYW5nZSA9IGNoYW5nZXNbaV07XG4gICAgaWYgKGNoYW5nZS5hZGRlZCkge1xuICAgICAgcmV0LnB1c2goJzxpbnM+Jyk7XG4gICAgfSBlbHNlIGlmIChjaGFuZ2UucmVtb3ZlZCkge1xuICAgICAgcmV0LnB1c2goJzxkZWw+Jyk7XG4gICAgfVxuXG4gICAgcmV0LnB1c2goZXNjYXBlSFRNTChjaGFuZ2UudmFsdWUpKTtcblxuICAgIGlmIChjaGFuZ2UuYWRkZWQpIHtcbiAgICAgIHJldC5wdXNoKCc8L2lucz4nKTtcbiAgICB9IGVsc2UgaWYgKGNoYW5nZS5yZW1vdmVkKSB7XG4gICAgICByZXQucHVzaCgnPC9kZWw+Jyk7XG4gICAgfVxuICB9XG4gIHJldHVybiByZXQuam9pbignJyk7XG59XG5cbmZ1bmN0aW9uIGVzY2FwZUhUTUwocykge1xuICBsZXQgbiA9IHM7XG4gIG4gPSBuLnJlcGxhY2UoLyYvZywgJyZhbXA7Jyk7XG4gIG4gPSBuLnJlcGxhY2UoLzwvZywgJyZsdDsnKTtcbiAgbiA9IG4ucmVwbGFjZSgvPi9nLCAnJmd0OycpO1xuICBuID0gbi5yZXBsYWNlKC9cIi9nLCAnJnF1b3Q7Jyk7XG5cbiAgcmV0dXJuIG47XG59XG4iXX0=\n","/*istanbul ignore start*/\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.diffArrays = diffArrays;\nexports.arrayDiff = void 0;\n\n/*istanbul ignore end*/\nvar\n/*istanbul ignore start*/\n_base = _interopRequireDefault(require(\"./base\"))\n/*istanbul ignore end*/\n;\n\n/*istanbul ignore start*/ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\n/*istanbul ignore end*/\nvar arrayDiff = new\n/*istanbul ignore start*/\n_base\n/*istanbul ignore end*/\n[\n/*istanbul ignore start*/\n\"default\"\n/*istanbul ignore end*/\n]();\n\n/*istanbul ignore start*/\nexports.arrayDiff = arrayDiff;\n\n/*istanbul ignore end*/\narrayDiff.tokenize = function (value) {\n return value.slice();\n};\n\narrayDiff.join = arrayDiff.removeEmpty = function (value) {\n return value;\n};\n\nfunction diffArrays(oldArr, newArr, callback) {\n return arrayDiff.diff(oldArr, newArr, callback);\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kaWZmL2FycmF5LmpzIl0sIm5hbWVzIjpbImFycmF5RGlmZiIsIkRpZmYiLCJ0b2tlbml6ZSIsInZhbHVlIiwic2xpY2UiLCJqb2luIiwicmVtb3ZlRW1wdHkiLCJkaWZmQXJyYXlzIiwib2xkQXJyIiwibmV3QXJyIiwiY2FsbGJhY2siLCJkaWZmIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTs7Ozs7QUFFTyxJQUFNQSxTQUFTLEdBQUc7QUFBSUM7QUFBQUE7QUFBQUE7QUFBQUE7QUFBQUE7QUFBQUE7QUFBQUE7QUFBQUEsQ0FBSixFQUFsQjs7Ozs7O0FBQ1BELFNBQVMsQ0FBQ0UsUUFBVixHQUFxQixVQUFTQyxLQUFULEVBQWdCO0FBQ25DLFNBQU9BLEtBQUssQ0FBQ0MsS0FBTixFQUFQO0FBQ0QsQ0FGRDs7QUFHQUosU0FBUyxDQUFDSyxJQUFWLEdBQWlCTCxTQUFTLENBQUNNLFdBQVYsR0FBd0IsVUFBU0gsS0FBVCxFQUFnQjtBQUN2RCxTQUFPQSxLQUFQO0FBQ0QsQ0FGRDs7QUFJTyxTQUFTSSxVQUFULENBQW9CQyxNQUFwQixFQUE0QkMsTUFBNUIsRUFBb0NDLFFBQXBDLEVBQThDO0FBQUUsU0FBT1YsU0FBUyxDQUFDVyxJQUFWLENBQWVILE1BQWYsRUFBdUJDLE1BQXZCLEVBQStCQyxRQUEvQixDQUFQO0FBQWtEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IERpZmYgZnJvbSAnLi9iYXNlJztcblxuZXhwb3J0IGNvbnN0IGFycmF5RGlmZiA9IG5ldyBEaWZmKCk7XG5hcnJheURpZmYudG9rZW5pemUgPSBmdW5jdGlvbih2YWx1ZSkge1xuICByZXR1cm4gdmFsdWUuc2xpY2UoKTtcbn07XG5hcnJheURpZmYuam9pbiA9IGFycmF5RGlmZi5yZW1vdmVFbXB0eSA9IGZ1bmN0aW9uKHZhbHVlKSB7XG4gIHJldHVybiB2YWx1ZTtcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBkaWZmQXJyYXlzKG9sZEFyciwgbmV3QXJyLCBjYWxsYmFjaykgeyByZXR1cm4gYXJyYXlEaWZmLmRpZmYob2xkQXJyLCBuZXdBcnIsIGNhbGxiYWNrKTsgfVxuIl19\n","/*istanbul ignore start*/\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = Diff;\n\n/*istanbul ignore end*/\nfunction Diff() {}\n\nDiff.prototype = {\n /*istanbul ignore start*/\n\n /*istanbul ignore end*/\n diff: function diff(oldString, newString) {\n /*istanbul ignore start*/\n var _options$timeout;\n\n var\n /*istanbul ignore end*/\n options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var callback = options.callback;\n\n if (typeof options === 'function') {\n callback = options;\n options = {};\n }\n\n this.options = options;\n var self = this;\n\n function done(value) {\n if (callback) {\n setTimeout(function () {\n callback(undefined, value);\n }, 0);\n return true;\n } else {\n return value;\n }\n } // Allow subclasses to massage the input prior to running\n\n\n oldString = this.castInput(oldString);\n newString = this.castInput(newString);\n oldString = this.removeEmpty(this.tokenize(oldString));\n newString = this.removeEmpty(this.tokenize(newString));\n var newLen = newString.length,\n oldLen = oldString.length;\n var editLength = 1;\n var maxEditLength = newLen + oldLen;\n\n if (options.maxEditLength) {\n maxEditLength = Math.min(maxEditLength, options.maxEditLength);\n }\n\n var maxExecutionTime =\n /*istanbul ignore start*/\n (_options$timeout =\n /*istanbul ignore end*/\n options.timeout) !== null && _options$timeout !== void 0 ? _options$timeout : Infinity;\n var abortAfterTimestamp = Date.now() + maxExecutionTime;\n var bestPath = [{\n oldPos: -1,\n lastComponent: undefined\n }]; // Seed editLength = 0, i.e. the content starts with the same values\n\n var newPos = this.extractCommon(bestPath[0], newString, oldString, 0);\n\n if (bestPath[0].oldPos + 1 >= oldLen && newPos + 1 >= newLen) {\n // Identity per the equality and tokenizer\n return done([{\n value: this.join(newString),\n count: newString.length\n }]);\n } // Once we hit the right edge of the edit graph on some diagonal k, we can\n // definitely reach the end of the edit graph in no more than k edits, so\n // there's no point in considering any moves to diagonal k+1 any more (from\n // which we're guaranteed to need at least k+1 more edits).\n // Similarly, once we've reached the bottom of the edit graph, there's no\n // point considering moves to lower diagonals.\n // We record this fact by setting minDiagonalToConsider and\n // maxDiagonalToConsider to some finite value once we've hit the edge of\n // the edit graph.\n // This optimization is not faithful to the original algorithm presented in\n // Myers's paper, which instead pointlessly extends D-paths off the end of\n // the edit graph - see page 7 of Myers's paper which notes this point\n // explicitly and illustrates it with a diagram. This has major performance\n // implications for some common scenarios. For instance, to compute a diff\n // where the new text simply appends d characters on the end of the\n // original text of length n, the true Myers algorithm will take O(n+d^2)\n // time while this optimization needs only O(n+d) time.\n\n\n var minDiagonalToConsider = -Infinity,\n maxDiagonalToConsider = Infinity; // Main worker method. checks all permutations of a given edit length for acceptance.\n\n function execEditLength() {\n for (var diagonalPath = Math.max(minDiagonalToConsider, -editLength); diagonalPath <= Math.min(maxDiagonalToConsider, editLength); diagonalPath += 2) {\n var basePath =\n /*istanbul ignore start*/\n void 0\n /*istanbul ignore end*/\n ;\n var removePath = bestPath[diagonalPath - 1],\n addPath = bestPath[diagonalPath + 1];\n\n if (removePath) {\n // No one else is going to attempt to use this value, clear it\n bestPath[diagonalPath - 1] = undefined;\n }\n\n var canAdd = false;\n\n if (addPath) {\n // what newPos will be after we do an insertion:\n var addPathNewPos = addPath.oldPos - diagonalPath;\n canAdd = addPath && 0 <= addPathNewPos && addPathNewPos < newLen;\n }\n\n var canRemove = removePath && removePath.oldPos + 1 < oldLen;\n\n if (!canAdd && !canRemove) {\n // If this path is a terminal then prune\n bestPath[diagonalPath] = undefined;\n continue;\n } // Select the diagonal that we want to branch from. We select the prior\n // path whose position in the old string is the farthest from the origin\n // and does not pass the bounds of the diff graph\n // TODO: Remove the `+ 1` here to make behavior match Myers algorithm\n // and prefer to order removals before insertions.\n\n\n if (!canRemove || canAdd && removePath.oldPos + 1 < addPath.oldPos) {\n basePath = self.addToPath(addPath, true, undefined, 0);\n } else {\n basePath = self.addToPath(removePath, undefined, true, 1);\n }\n\n newPos = self.extractCommon(basePath, newString, oldString, diagonalPath);\n\n if (basePath.oldPos + 1 >= oldLen && newPos + 1 >= newLen) {\n // If we have hit the end of both strings, then we are done\n return done(buildValues(self, basePath.lastComponent, newString, oldString, self.useLongestToken));\n } else {\n bestPath[diagonalPath] = basePath;\n\n if (basePath.oldPos + 1 >= oldLen) {\n maxDiagonalToConsider = Math.min(maxDiagonalToConsider, diagonalPath - 1);\n }\n\n if (newPos + 1 >= newLen) {\n minDiagonalToConsider = Math.max(minDiagonalToConsider, diagonalPath + 1);\n }\n }\n }\n\n editLength++;\n } // Performs the length of edit iteration. Is a bit fugly as this has to support the\n // sync and async mode which is never fun. Loops over execEditLength until a value\n // is produced, or until the edit length exceeds options.maxEditLength (if given),\n // in which case it will return undefined.\n\n\n if (callback) {\n (function exec() {\n setTimeout(function () {\n if (editLength > maxEditLength || Date.now() > abortAfterTimestamp) {\n return callback();\n }\n\n if (!execEditLength()) {\n exec();\n }\n }, 0);\n })();\n } else {\n while (editLength <= maxEditLength && Date.now() <= abortAfterTimestamp) {\n var ret = execEditLength();\n\n if (ret) {\n return ret;\n }\n }\n }\n },\n\n /*istanbul ignore start*/\n\n /*istanbul ignore end*/\n addToPath: function addToPath(path, added, removed, oldPosInc) {\n var last = path.lastComponent;\n\n if (last && last.added === added && last.removed === removed) {\n return {\n oldPos: path.oldPos + oldPosInc,\n lastComponent: {\n count: last.count + 1,\n added: added,\n removed: removed,\n previousComponent: last.previousComponent\n }\n };\n } else {\n return {\n oldPos: path.oldPos + oldPosInc,\n lastComponent: {\n count: 1,\n added: added,\n removed: removed,\n previousComponent: last\n }\n };\n }\n },\n\n /*istanbul ignore start*/\n\n /*istanbul ignore end*/\n extractCommon: function extractCommon(basePath, newString, oldString, diagonalPath) {\n var newLen = newString.length,\n oldLen = oldString.length,\n oldPos = basePath.oldPos,\n newPos = oldPos - diagonalPath,\n commonCount = 0;\n\n while (newPos + 1 < newLen && oldPos + 1 < oldLen && this.equals(newString[newPos + 1], oldString[oldPos + 1])) {\n newPos++;\n oldPos++;\n commonCount++;\n }\n\n if (commonCount) {\n basePath.lastComponent = {\n count: commonCount,\n previousComponent: basePath.lastComponent\n };\n }\n\n basePath.oldPos = oldPos;\n return newPos;\n },\n\n /*istanbul ignore start*/\n\n /*istanbul ignore end*/\n equals: function equals(left, right) {\n if (this.options.comparator) {\n return this.options.comparator(left, right);\n } else {\n return left === right || this.options.ignoreCase && left.toLowerCase() === right.toLowerCase();\n }\n },\n\n /*istanbul ignore start*/\n\n /*istanbul ignore end*/\n removeEmpty: function removeEmpty(array) {\n var ret = [];\n\n for (var i = 0; i < array.length; i++) {\n if (array[i]) {\n ret.push(array[i]);\n }\n }\n\n return ret;\n },\n\n /*istanbul ignore start*/\n\n /*istanbul ignore end*/\n castInput: function castInput(value) {\n return value;\n },\n\n /*istanbul ignore start*/\n\n /*istanbul ignore end*/\n tokenize: function tokenize(value) {\n return value.split('');\n },\n\n /*istanbul ignore start*/\n\n /*istanbul ignore end*/\n join: function join(chars) {\n return chars.join('');\n }\n};\n\nfunction buildValues(diff, lastComponent, newString, oldString, useLongestToken) {\n // First we convert our linked list of components in reverse order to an\n // array in the right order:\n var components = [];\n var nextComponent;\n\n while (lastComponent) {\n components.push(lastComponent);\n nextComponent = lastComponent.previousComponent;\n delete lastComponent.previousComponent;\n lastComponent = nextComponent;\n }\n\n components.reverse();\n var componentPos = 0,\n componentLen = components.length,\n newPos = 0,\n oldPos = 0;\n\n for (; componentPos < componentLen; componentPos++) {\n var component = components[componentPos];\n\n if (!component.removed) {\n if (!component.added && useLongestToken) {\n var value = newString.slice(newPos, newPos + component.count);\n value = value.map(function (value, i) {\n var oldValue = oldString[oldPos + i];\n return oldValue.length > value.length ? oldValue : value;\n });\n component.value = diff.join(value);\n } else {\n component.value = diff.join(newString.slice(newPos, newPos + component.count));\n }\n\n newPos += component.count; // Common case\n\n if (!component.added) {\n oldPos += component.count;\n }\n } else {\n component.value = diff.join(oldString.slice(oldPos, oldPos + component.count));\n oldPos += component.count; // Reverse add and remove so removes are output first to match common convention\n // The diffing algorithm is tied to add then remove output and this is the simplest\n // route to get the desired output with minimal overhead.\n\n if (componentPos && components[componentPos - 1].added) {\n var tmp = components[componentPos - 1];\n components[componentPos - 1] = components[componentPos];\n components[componentPos] = tmp;\n }\n }\n } // Special case handle for when one terminal is ignored (i.e. whitespace).\n // For this case we merge the terminal into the prior string and drop the change.\n // This is only available for string mode.\n\n\n var finalComponent = components[componentLen - 1];\n\n if (componentLen > 1 && typeof finalComponent.value === 'string' && (finalComponent.added || finalComponent.removed) && diff.equals('', finalComponent.value)) {\n components[componentLen - 2].value += finalComponent.value;\n components.pop();\n }\n\n return components;\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kaWZmL2Jhc2UuanMiXSwibmFtZXMiOlsiRGlmZiIsInByb3RvdHlwZSIsImRpZmYiLCJvbGRTdHJpbmciLCJuZXdTdHJpbmciLCJvcHRpb25zIiwiY2FsbGJhY2siLCJzZWxmIiwiZG9uZSIsInZhbHVlIiwic2V0VGltZW91dCIsInVuZGVmaW5lZCIsImNhc3RJbnB1dCIsInJlbW92ZUVtcHR5IiwidG9rZW5pemUiLCJuZXdMZW4iLCJsZW5ndGgiLCJvbGRMZW4iLCJlZGl0TGVuZ3RoIiwibWF4RWRpdExlbmd0aCIsIk1hdGgiLCJtaW4iLCJtYXhFeGVjdXRpb25UaW1lIiwidGltZW91dCIsIkluZmluaXR5IiwiYWJvcnRBZnRlclRpbWVzdGFtcCIsIkRhdGUiLCJub3ciLCJiZXN0UGF0aCIsIm9sZFBvcyIsImxhc3RDb21wb25lbnQiLCJuZXdQb3MiLCJleHRyYWN0Q29tbW9uIiwiam9pbiIsImNvdW50IiwibWluRGlhZ29uYWxUb0NvbnNpZGVyIiwibWF4RGlhZ29uYWxUb0NvbnNpZGVyIiwiZXhlY0VkaXRMZW5ndGgiLCJkaWFnb25hbFBhdGgiLCJtYXgiLCJiYXNlUGF0aCIsInJlbW92ZVBhdGgiLCJhZGRQYXRoIiwiY2FuQWRkIiwiYWRkUGF0aE5ld1BvcyIsImNhblJlbW92ZSIsImFkZFRvUGF0aCIsImJ1aWxkVmFsdWVzIiwidXNlTG9uZ2VzdFRva2VuIiwiZXhlYyIsInJldCIsInBhdGgiLCJhZGRlZCIsInJlbW92ZWQiLCJvbGRQb3NJbmMiLCJsYXN0IiwicHJldmlvdXNDb21wb25lbnQiLCJjb21tb25Db3VudCIsImVxdWFscyIsImxlZnQiLCJyaWdodCIsImNvbXBhcmF0b3IiLCJpZ25vcmVDYXNlIiwidG9Mb3dlckNhc2UiLCJhcnJheSIsImkiLCJwdXNoIiwic3BsaXQiLCJjaGFycyIsImNvbXBvbmVudHMiLCJuZXh0Q29tcG9uZW50IiwicmV2ZXJzZSIsImNvbXBvbmVudFBvcyIsImNvbXBvbmVudExlbiIsImNvbXBv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IERpZmYoKSB7fVxuXG5EaWZmLnByb3RvdHlwZSA9IHtcbiAgZGlmZihvbGRTdHJpbmcsIG5ld1N0cmluZywgb3B0aW9ucyA9IHt9KSB7XG4gICAgbGV0IGNhbGxiYWNrID0gb3B0aW9ucy5jYWxsYmFjaztcbiAgICBpZiAodHlwZW9mIG9wdGlvbnMgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIGNhbGxiYWNrID0gb3B0aW9ucztcbiAgICAgIG9wdGlvbnMgPSB7fTtcbiAgICB9XG4gICAgdGhpcy5vcHRpb25zID0gb3B0aW9ucztcblxuICAgIGxldCBzZWxmID0gdGhpcztcblxuICAgIGZ1bmN0aW9uIGRvbmUodmFsdWUpIHtcbiAgICAgIGlmIChjYWxsYmFjaykge1xuICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBjYWxsYmFjayh1bmRlZmluZWQsIHZhbHVlKTsgfSwgMCk7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIEFsbG93IHN1YmNsYXNzZXMgdG8gbWFzc2FnZSB0aGUgaW5wdXQgcHJpb3IgdG8gcnVubmluZ1xuICAgIG9sZFN0cmluZyA9IHRoaXMuY2FzdElucHV0KG9sZFN0cmluZyk7XG4gICAgbmV3U3RyaW5nID0gdGhpcy5jYXN0SW5wdXQobmV3U3RyaW5nKTtcblxuICAgIG9sZFN0cmluZyA9IHRoaXMucmVtb3ZlRW1wdHkodGhpcy50b2tlbml6ZShvbGRTdHJpbmcpKTtcbiAgICBuZXdTdHJpbmcgPSB0aGlzLnJlbW92ZUVtcHR5KHRoaXMudG9rZW5pemUobmV3U3RyaW5nKSk7XG5cbiAgICBsZXQgbmV3TGVuID0gbmV3U3RyaW5nLmxlbmd0aCwgb2xkTGVuID0gb2xkU3RyaW5nLmxlbmd0aDtcbiAgICBsZXQgZWRpdExlbmd0aCA9IDE7XG4gICAgbGV0IG1heEVkaXRMZW5ndGggPSBuZXdMZW4gKyBvbGRMZW47XG4gICAgaWYob3B0aW9ucy5tYXhFZGl0TGVuZ3RoKSB7XG4gICAgICBtYXhFZGl0TGVuZ3RoID0gTWF0aC5taW4obWF4RWRpdExlbmd0aCwgb3B0aW9ucy5tYXhFZGl0TGVuZ3RoKTtcbiAgICB9XG4gICAgY29uc3QgbWF4RXhlY3V0aW9uVGltZSA9IG9wdGlvbnMudGltZW91dCA/PyBJbmZpbml0eTtcbiAgICBjb25zdCBhYm9ydEFmdGVyVGltZXN0YW1wID0gRGF0ZS5ub3coKSArIG1heEV4ZWN1dGlvblRpbWU7XG5cbiAgICBsZXQgYmVzdFBhdGggPSBbeyBvbGRQb3M6IC0xLCBsYXN0Q29tcG9uZW50OiB1bmRlZmluZWQgfV07XG5cbiAgICAvLyBTZWVkIGVkaXRMZW5ndGggPSAwLCBpLmUuIHRoZSBjb250ZW50IHN0YXJ0cyB3aXRoIHRoZSBzYW1lIHZhbHVlc1xuICAgIGxldCBuZXdQb3MgPSB0aGlzLmV4dHJhY3RDb21tb24oYmVzdFBhdGhbMF0sIG5ld1N0cmluZywgb2xkU3RyaW5nLCAwKTtcbiAgICBpZiAoYmVzdFBhdGhbMF0ub2xkUG9zICsgMSA+PSBvbGRMZW4gJiYgbmV3UG9zICsgMSA+PSBuZXdMZW4pIHtcbiAgICAgIC8vIElkZW50aXR5IHBlciB0aGUgZXF1YWxpdHkgYW5kIHRva2VuaXplclxuICAgICAgcmV0dXJuIGRvbmUoW3t2YWx1ZTogdGhpcy5qb2luKG5ld1N0cmluZyksIGNvdW50OiBuZXdTdHJpbmcubGVuZ3RofV0pO1xuICAgIH1cblxuICAgIC8vIE9uY2Ugd2UgaGl0IHRoZSByaWdodCBlZGdlIG9mIHRoZSBlZGl0IGdyYXBoIG9uIHNvbWUgZGlhZ29uYWwgaywgd2UgY2FuXG4gICAgLy8gZGVmaW5pdGVseSByZWFjaCB0aGUgZW5kIG9mIHRoZSBlZGl0IGdyYXBoIGluIG5vIG1vcmUgdGhhbiBrIGVkaXRzLCBzb1xuICAgIC8vIHRoZXJlJ3Mgbm8gcG9pbnQgaW4gY29uc2lkZXJpbmcgYW55IG1vdmVzIHRvIGRpYWdvbmFsIGsrMSBhbnkgbW9yZSAoZnJvbVxuICAgIC8vIHdoaWNoIHdlJ3JlIGd1YXJhbnRlZWQgdG8gbmVlZCBhdCBsZWFzdCBrKzEgbW9yZSBlZGl0cykuXG4gICAgLy8gU2ltaWxhcmx5LCBvbmNlIHdlJ3ZlIHJlYWNoZWQgdGhlIGJvdHRvbSBvZiB0aGUgZWRpdCBncmFwaCwgdGhlcmUncyBub1xuICAgIC8vIHBvaW50IGNvbnNpZGVyaW5nIG1vdmVzIHRvIGxvd2VyIGRpYWdvbmFscy5cbiAgICAvLyBXZSByZWNvcmQgdGhpcyBmYWN0IGJ5IHNldHRpbmcgbWluRGlhZ29uYWxUb0NvbnNpZGVyIGFuZFxuICAgIC8vIG1heERpYWdvbmFsVG9Db25zaWRlciB0byBzb21lIGZpbml0ZSB2YWx1ZSBvbmNlIHdlJ3ZlIGhpdCB0aGUgZWRnZSBvZlxuICAgIC8vIHRoZSBlZGl0IGdyYXBoLlxuICAgIC8vIFRoaXMgb3B0aW1pemF0aW9uIGlzIG5vdCBmYWl0aGZ1bCB0byB0aGUgb3JpZ2luYWwgYWxnb3JpdGhtIHByZXNlbnRlZCBpblxuICAgIC8vIE15ZXJzJ3MgcGFwZXIsIHdoaWNoIGluc3RlYWQgcG9pbnRsZXNzbHkgZXh0ZW5kcyBELXBhdGhzIG9mZiB0aGUgZW5kIG9mXG4gICAgLy8gdGhlIGVkaXQgZ3JhcGggLSBzZWUgcGFnZSA3IG9mIE15ZXJzJ3MgcGFwZXIgd2hpY2ggbm90ZXMgdGhpcyBwb2ludFxuICAgIC8vIGV4cGxpY2l0bHkgYW5kIGlsbHVzdHJhdGVzIGl0IHdpdGggYSBkaWFncmFtLiBUaGlzIGhhcyBtYWpvciBwZXJmb3JtYW5jZVxuICAgIC8vIGltcGxpY2F0aW9ucyBmb3Igc29tZSBjb21tb24gc2NlbmFyaW9zLiBGb3IgaW5zdGFuY2UsIHRvIGNvbXB1dGUgYSBkaWZmXG4gICAgLy8gd2hlcmUgdGhlIG5ldyB0ZXh0IHNpbXBseSBhcHBlbmRzIGQgY2hhcmFjdGVycyBvbiB0aGUgZW5kIG9mIHRoZVxuICAgIC8vIG9yaWdpbmFsIHRleHQgb2YgbGVuZ3RoIG4sIHRoZSB0cnVlIE15ZXJzIGFsZ29yaXRobSB3aWxsIHRha2UgTyhuK2ReMilcbiAgICAvLyB0aW1lIHdoaWxlIHRoaXMgb3B0aW1pemF0aW9uIG5lZWRzIG9ubHkgTyhuK2QpIHRpbWUuXG4gICAgbGV0IG1pbkRpYWdvbmFsVG9Db25zaWRlciA9IC1JbmZpbml0eSwgbWF4RGlhZ29uYWxUb0NvbnNpZGVyID0gSW5maW5pdHk7XG5cbiAgICAvLyBNYWluIHdvcmtlciBtZXRob2QuIGNoZWNrcyBhbGwgcGVybXV0YXRpb25zIG9mIGEgZ2l2ZW4gZWRpdCBsZW5ndGggZm9yIGFjY2VwdGFuY2UuXG4gICAgZnVuY3Rpb24gZXhlY0VkaXRMZW5ndGgoKSB7XG4gICAgICBmb3IgKFxuICAgICAgICBsZXQgZGlhZ29uYWxQYXRoID0gTWF0aC5tYXgobWluRGlhZ29uYWxUb0NvbnNpZGVyLCAtZWRpdExlbmd0aCk7XG4gICAgICAgIGRpYWdvbmFsUGF0aCA8PSBNYXRoLm1pbihtYXhEaWFnb25hbFRvQ29uc2lkZXIsIGVkaXRMZW5ndGgpO1xuICAgICAgICBkaWFnb25hbFBhdGggKz0gMlxuICAgICAgKSB7XG4gICAgICAgIGxldCBiYXNlUGF0aDtcbiAgICAgICAgbGV0IHJlbW92ZVBhdGggPSBiZXN0UGF0aFtkaWFnb25hbFBhdGggLSAxXSxcbiAgICAgICAgICAgIGFkZFBhdGggPSBiZXN0UGF0aFtkaWFnb25hbFBhdGggKyAxXTtcbiAgICAgICAgaWYgKHJlbW92ZVBhdGgpIHtcbiAgICAgICAgICAvLyBObyBvbmUgZWxzZSBpcyBnb2luZyB0byBhdHRlbXB0IHRvIHVzZSB0aGlzIHZhbHVlLCBjbGVhciBpdFxuICAgICAgICAgIGJlc3RQYXRoW2RpYWdvbmFsUGF0aCAtIDFdID0gdW5kZWZpbmVkO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IGNhbkFkZCA9IGZhbHNlO1xuICAgICAgICBpZiAoYWRkUGF0aCkge1xuICAgICAgICAgIC8vIHdoYXQgbmV3UG9zIHdpbGwgYmUgYWZ0ZXIgd2UgZG8gYW4gaW5zZXJ0aW9uOlxuICAgICAgICAgIGNvbnN0IGFkZFBhdGhOZXdQb3MgPSBhZGRQYXRoLm9sZFBvcyAtIGRpYWdvbmFsUGF0aDtcbiAgICAgICAgICBjYW5BZGQgPSBhZGRQYXRoICYmIDAgPD0gYWRkUGF0aE5ld1BvcyAmJiBhZGRQYXRoTmV3UG9zIDwgbmV3TGVuO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IGNhblJlbW92ZSA9IHJlbW92ZVBhdGggJiYgcmVtb3ZlUGF0aC5vbGRQb3MgKyAxIDwgb2xkTGVuO1xuICAgICAgICBpZiAoIWNhbkFkZCAmJiAhY2FuUmVtb3ZlKSB7XG4gICAgICAgICAgLy8gSWYgdGhpcyBwYXRoIGlzIGEgdGVybWluYWwgdGhlbiBwcnVuZVxuICAgICAgICAgIGJlc3RQYXRoW2RpYWdvbmFsUGF0aF0gPSB1bmRlZmluZWQ7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBTZWxlY3QgdGhlIGRpYWdvbmFsIHRoYXQgd2Ugd2FudCB0byBicmFuY2ggZnJvbS4gV2Ugc2VsZWN0IHRoZSBwcmlvclxuICAgICAgICAvLyBwYXRoIHdob3NlIHBvc2l0aW9uIGluIHRoZSBvbGQgc3RyaW5nIGlzIHRoZSBmYXJ0aGVzdCBmcm9tIHRoZSBvcmlnaW5cbiAgICAgICAgLy8gYW5kIGRvZXMgbm90IHBhc3MgdGhlIGJvdW5kcyBvZiB0aGUgZGlmZiBncmFwaFxuICAgICAgICAvLyBUT0RPOiBSZW1vdmUgdGhlIGArIDFgIGhlcmUgdG8gbWFrZSBiZWhhdmlvciBtYXRjaCBNeWVycyBhbGdvcml0aG1cbiAgICAgICAgLy8gICAgICAgYW5kIHByZWZlciB0byBvcmRlciByZW1vdmFscyBiZWZvcmUgaW5zZXJ0aW9ucy5cbiAgICAgICAgaWYgKCFjYW5SZW1vdmUgfHwgKGNhbkFkZCAmJiByZW1vdmVQYXRoLm9sZFBvcyArIDEgPCBhZGRQYXRoLm9sZFBvcykpIHtcbiAgICAgICAgICBiYXNlUGF0aCA9IHNlbGYuYWRkVG9QYXRoKGFkZFBhdGgsIHRydWUsIHVuZGVmaW5lZCwgMCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgYmFzZVBhdGggPSBzZWxmLmFkZFRvUGF0aChyZW1vdmVQYXRoLCB1bmRlZmluZWQsIHRydWUsIDEpO1xuICAgICAgICB9XG5cbiAgICAgICAgbmV3UG9zID0gc2VsZi5leHRyYWN0Q29tbW9uKGJhc2VQYXRoLCBuZXdTdHJpbmcsIG9sZFN0cmluZywgZGlhZ29uYWxQYXRoKTtcblxuICAgICAgICBpZiAoYmFzZVBhdGgub2xkUG9zICsgMSA+PSBvbGRMZW4gJiYgbmV3UG9zICsgMSA+PSBuZXdMZW4pIHtcbiAgICAgICAgICAvLyBJZiB3ZSBoYXZlIGhpdCB0aGUgZW5kIG9mIGJvdGggc3RyaW5ncywgdGhlbiB3ZSBhcmUgZG9uZVxuICAgICAgICAgIHJldHVybiBkb25lKGJ1aWxkVmFsdWVzKHNlbGYsIGJhc2VQYXRoLmxhc3RDb21wb25lbnQsIG5ld1N0cmluZywgb2xkU3RyaW5nLCBzZWxmLnVzZUxvbmdlc3RUb2tlbikpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGJlc3RQYXRoW2RpYWdvbmFsUGF0aF0gPSBiYXNlUGF0aDtcbiAgICAgICAgICBpZiAoYmFzZVBhdGgub2xkUG9zICsgMSA+PSBvbGRMZW4pIHtcbiAgICAgICAgICAgIG1heERpYWdvbmFsVG9Db25zaWRlciA9IE1hdGgubWluKG1heERpYWdvbmFsVG9Db25zaWRlciwgZGlhZ29uYWxQYXRoIC0gMSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChuZXdQb3MgKyAxID49IG5ld0xlbikge1xuICAgICAgICAgICAgbWluRGlhZ29uYWxUb0NvbnNpZGVyID0gTWF0aC5tYXgobWluRGlhZ29uYWxUb0NvbnNpZGVyLCBkaWFnb25hbFBhdGggKyAxKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgZWRpdExlbmd0aCsrO1xuICAgIH1cblxuICAgIC8vIFBlcmZvcm1zIHRoZSBsZW5ndGggb2YgZWRpdCBpdGVyYXRpb24uIElzIGEgYml0IGZ1Z2x5IGFzIHRoaXMgaGFzIHRvIHN1cHBvcnQgdGhlXG4gICAgLy8gc3luYyBhbmQgYXN5bmMgbW9kZSB3aGljaCBpcyBuZXZlciBmdW4uIExvb3BzIG92ZXIgZXhlY0VkaXRMZW5ndGggdW50aWwgYSB2YWx1ZVxuICAgIC8vIGlzIHByb2R1Y2VkLCBvciB1bnRpbCB0aGUgZWRpdCBsZW5ndGggZXhjZWVkcyBvcHRpb25zLm1heEVkaXRMZW5ndGggKGlmIGdpdmVuKSxcbiAgICAvLyBpbiB3aGljaCBjYXNlIGl0IHdpbGwgcmV0dXJuIHVuZGVmaW5lZC5cbiAgICBpZiAoY2FsbGJhY2spIHtcbiAgICAgIChmdW5jdGlvbiBleGVjKCkge1xuICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkge1xuICAgICAgICAgIGlmIChlZGl0TGVuZ3RoID4gbWF4RWRpdExlbmd0aCB8fCBEYXRlLm5vdygpID4gYWJvcnRBZnRlclRpbWVzdGFtcCkge1xuICAgICAgICAgICAgcmV0dXJuIGNhbGxiYWNrKCk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKCFleGVjRWRpdExlbmd0aCgpKSB7XG4gICAgICAgICAgICBleGVjKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9LCAwKTtcbiAgICAgIH0oKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHdoaWxlIChlZGl0TGVuZ3RoIDw9IG1heEVkaXRMZW5ndGggJiYgRGF0ZS5ub3coKSA8PSBhYm9ydEFmdGVyVGltZXN0YW1wKSB7XG4gICAgICAgIGxldCByZXQgPSBleGVjRWRpdExlbmd0aCgpO1xuICAgICAgICBpZiAocmV0KSB7XG4gICAgICAgICAgcmV0dXJuIHJldDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfSxcblxuICBhZGRUb1BhdGgocGF0aCwgYWRkZWQsIHJlbW92ZWQsIG9sZFBvc0luYykge1xuICAgIGxldCBsYXN0ID0gcGF0aC5sYXN0Q29tcG9uZW50O1xuICAgIGlmIChsYXN0ICYmIGxhc3QuYWRkZWQgPT09IGFkZGVkICYmIGxhc3QucmVtb3ZlZCA9PT0gcmVtb3ZlZCkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgb2xkUG9zOiBwYXRoLm9sZFBvcyArIG9sZFBvc0luYyxcbiAgICAgICAgbGFzdENvbXBvbmVudDoge2NvdW50OiBsYXN0LmNvdW50ICsgMSwgYWRkZWQ6IGFkZGVkLCByZW1vdmVkOiByZW1vdmVkLCBwcmV2aW91c0NvbXBvbmVudDogbGFzdC5wcmV2aW91c0NvbXBvbmVudCB9XG4gICAgICB9O1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBvbGRQb3M6IHBhdGgub2xkUG9zICsgb2xkUG9zSW5jLFxuICAgICAgICBsYXN0Q29tcG9uZW50OiB7Y291bnQ6IDEsIGFkZGVkOiBhZGRlZCwgcmVtb3ZlZDogcmVtb3ZlZCwgcHJldmlvdXNDb21wb25lbnQ6IGxhc3QgfVxuICAgICAgfTtcbiAgICB9XG4gIH0sXG4gIGV4dHJhY3RDb21tb24oYmFzZVBhdGgsIG5ld1N0cmluZywgb2xkU3RyaW5nLCBkaWFnb25hbFBhdGgpIHtcbiAgICBsZXQgbmV3TGVuID0gbmV3U3RyaW5nLmxlbmd0aCxcbiAgICAgICAgb2xkTGVuID0gb2xkU3RyaW5nLmxlbmd0aCxcbiAgICAgICAgb2xkUG9zID0gYmFzZVBhdGgub2xkUG9zLFxuICAgICAgICBuZXdQb3MgPSBvbGRQb3MgLSBkaWFnb25hbFBhdGgsXG5cbiAgICAgICAgY29tbW9uQ291bnQgPSAwO1xuICAgIHdoaWxlIChuZXdQb3MgKyAxIDwgbmV3TGVuICYmIG9sZFBvcyArIDEgPCBvbGRMZW4gJiYgdGhpcy5lcXVhbHMobmV3U3RyaW5nW25ld1BvcyArIDFdLCBvbGRTdHJpbmdbb2xkUG9zICsgMV0pKSB7XG4gICAgICBuZXdQb3MrKztcbiAgICAgIG9sZFBvcysrO1xuICAgICAgY29tbW9uQ291bnQrKztcbiAgICB9XG5cbiAgICBpZiAoY29tbW9uQ291bnQpIHtcbiAgICAgIGJhc2VQYXRoLmxhc3RDb21wb25lbnQgPSB7Y291bnQ6IGNvbW1vbkNvdW50LCBwcmV2aW91c0NvbXBvbmVudDogYmFzZVBhdGgubGFzdENvbXBvbmVudH07XG4gICAgfVxuXG4gICAgYmFzZVBhdGgub2xkUG9zID0gb2xkUG9zO1xuICAgIHJldHVybiBuZXdQb3M7XG4gIH0sXG5cbiAgZXF1YWxzKGxlZnQsIHJpZ2h0KSB7XG4gICAgaWYgKHRoaXMub3B0aW9ucy5jb21wYXJhdG9yKSB7XG4gICAgICByZXR1cm4gdGhpcy5vcHRpb25zLmNvbXBhcmF0b3IobGVmdCwgcmlnaHQpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gbGVmdCA9PT0gcmlnaHRcbiAgICAgICAgfHwgKHRoaXMub3B0aW9ucy5pZ25vcmVDYXNlICYmIGxlZnQudG9Mb3dlckNhc2UoKSA9PT0gcmlnaHQudG9Mb3dlckNhc2UoKSk7XG4gICAgfVxuICB9LFxuICByZW1vdmVFbXB0eShhcnJheSkge1xuICAgIGxldCByZXQgPSBbXTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGFycmF5Lmxlbmd0aDsgaSsrKSB7XG4gICAgICBpZiAoYXJyYXlbaV0pIHtcbiAgICAgICAgcmV0LnB1c2goYXJyYXlbaV0pO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcmV0O1xuICB9LFxuICBjYXN0SW5wdXQodmFsdWUpIHtcbiAgICByZXR1cm4gdmFsdWU7XG4gIH0sXG4gIHRva2VuaXplKHZhbHVlKSB7XG4gICAgcmV0dXJuIHZhbHVlLnNwbGl0KCcnKTtcbiAgfSxcbiAgam9pbihjaGFycykge1xuICAgIHJldHVybiBjaGFycy5qb2luKCcnKTtcbiAgfVxufTtcblxuZnVuY3Rpb24gYnVpbGRWYWx1ZXMoZGlmZiwgbGFzdENvbXBvbmVudCwgbmV3U3RyaW5nLCBvbGRTdHJpbmcsIHVzZUxvbmdlc3RUb2tlbikge1xuICAvLyBGaXJzdCB3ZSBjb252ZXJ0IG91ciBsaW5rZWQgbGlzdCBvZiBjb21wb25lbnRzIGluIHJldmVyc2Ugb3JkZXIgdG8gYW5cbiAgLy8gYXJyYXkgaW4gdGhlIHJpZ2h0IG9yZGVyOlxuICBjb25zdCBjb21wb25lbnRzID0gW107XG4gIGxldCBuZXh0Q29tcG9uZW50O1xuICB3aGlsZSAobGFzdENvbXBvbmVudCkge1xuICAgIGNvbXBvbmVudHMucHVzaChsYXN0Q29tcG9uZW50KTtcbiAgICBuZXh0Q29tcG9uZW50ID0gbGFzdENvbXBvbmVudC5wcmV2aW91c0NvbXBvbmVudDtcbiAgICBkZWxldGUgbGFzdENvbXBvbmVudC5wcmV2aW91c0NvbXBvbmVudDtcbiAgICBsYXN0Q29tcG9uZW50ID0gbmV4dENvbXBvbmVudDtcbiAgfVxuICBjb21wb25lbnRzLnJldmVyc2UoKTtcblxuICBsZXQgY29tcG9uZW50UG9zID0gMCxcbiAgICAgIGNvbXBvbmVudExlbiA9IGNvbXBvbmVudHMubGVuZ3RoLFxuICAgICAgbmV3UG9zID0gMCxcbiAgICAgIG9sZFBvcyA9IDA7XG5cbiAgZm9yICg7IGNvbXBvbmVudFBvcyA8IGNvbXBvbmVudExlbjsgY29tcG9uZW50UG9zKyspIHtcbiAgICBsZXQgY29tcG9uZW50ID0gY29tcG9uZW50c1tjb21wb25lbnRQb3NdO1xuICAgIGlmICghY29tcG9uZW50LnJlbW92ZWQpIHtcbiAgICAgIGlmICghY29tcG9uZW50LmFkZGVkICYmIHVzZUxvbmdlc3RUb2tlbikge1xuICAgICAgICBsZXQgdmFsdWUgPSBuZXdTdHJpbmcuc2xpY2UobmV3UG9zLCBuZXdQb3MgKyBjb21wb25lbnQuY291bnQpO1xuICAgICAgICB2YWx1ZSA9IHZhbHVlLm1hcChmdW5jdGlvbih2YWx1ZSwgaSkge1xuICAgICAgICAgIGxldCBvbGRWYWx1ZSA9IG9sZFN0cmluZ1tvbGRQb3MgKyBpXTtcbiAgICAgICAgICByZXR1cm4gb2xkVmFsdWUubGVuZ3RoID4gdmFsdWUubGVuZ3RoID8gb2xkVmFsdWUgOiB2YWx1ZTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgY29tcG9uZW50LnZhbHVlID0gZGlmZi5qb2luKHZhbHVlKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbXBvbmVudC52YWx1ZSA9IGRpZmYuam9pbihuZXdTdHJpbmcuc2xpY2UobmV3UG9zLCBuZXdQb3MgKyBjb21wb25lbnQuY291bnQpKTtcbiAgICAgIH1cbiAgICAgIG5ld1BvcyArPSBjb21wb25lbnQuY291bnQ7XG5cbiAgICAgIC8vIENvbW1vbiBjYXNlXG4gICAgICBpZiAoIWNvbXBvbmVudC5hZGRlZCkge1xuICAgICAgICBvbGRQb3MgKz0gY29tcG9uZW50LmNvdW50O1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBjb21wb25lbnQudmFsdWUgPSBkaWZmLmpvaW4ob2xkU3RyaW5nLnNsaWNlKG9sZFBvcywgb2xkUG9zICsgY29tcG9uZW50LmNvdW50KSk7XG4gICAgICBvbGRQb3MgKz0gY29tcG9uZW50LmNvdW50O1xuXG4gICAgICAvLyBSZXZlcnNlIGFkZCBhbmQgcmVtb3ZlIHNvIHJlbW92ZXMgYXJlIG91dHB1dCBmaXJzdCB0byBtYXRjaCBjb21tb24gY29udmVudGlvblxuICAgICAgLy8gVGhlIGRpZmZpbmcgYWxnb3JpdGhtIGlzIHRpZWQgdG8gYWRkIHRoZW4gcmVtb3ZlIG91dHB1dCBhbmQgdGhpcyBpcyB0aGUgc2ltcGxlc3RcbiAgICAgIC8vIHJvdXRlIHRvIGdldCB0aGUgZGVzaXJlZCBvdXRwdXQgd2l0aCBtaW5pbWFsIG92ZXJoZWFkLlxuICAgICAgaWYgKGNvbXBvbmVudFBvcyAmJiBjb21wb25lbnRzW2NvbXBvbmVudFBvcyAtIDFdLmFkZGVkKSB7XG4gICAgICAgIGxldCB0bXAgPSBjb21wb25lbnRzW2NvbXBvbmVudFBvcyAtIDFdO1xuICAgICAgICBjb21wb25lbnRzW2NvbXBvbmVudFBvcyAtIDFdID0gY29tcG9uZW50c1tjb21wb25lbnRQb3NdO1xuICAgICAgICBjb21wb25lbnRzW2NvbXBvbmVudFBvc10gPSB0bXA7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLy8gU3BlY2lhbCBjYXNlIGhhbmRsZSBmb3Igd2hlbiBvbmUgdGVybWluYWwgaXMgaWdub3JlZCAoaS5lLiB3aGl0ZXNwYWNlKS5cbiAgLy8gRm9yIHRoaXMgY2FzZSB3ZSBtZXJnZSB0aGUgdGVybWluYWwgaW50byB0aGUgcHJpb3Igc3RyaW5nIGFuZCBkcm9wIHRoZSBjaGFuZ2UuXG4gIC8vIFRoaXMgaXMgb25seSBhdmFpbGFibGUgZm9yIHN0cmluZyBtb2RlLlxuICBsZXQgZmluYWxDb21wb25lbnQgPSBjb21wb25lbnRzW2NvbXBvbmVudExlbiAtIDFdO1xuICBpZiAoY29tcG9uZW50TGVuID4gMVxuICAgICAgJiYgdHlwZW9mIGZpbmFsQ29tcG9uZW50LnZhbHVlID09PSAnc3RyaW5nJ1xuICAgICAgJiYgKGZpbmFsQ29tcG9uZW50LmFkZGVkIHx8IGZpbmFsQ29tcG9uZW50LnJlbW92ZWQpXG4gICAgICAmJiBkaWZmLmVxdWFscygnJywgZmluYWxDb21wb25lbnQudmFsdWUpKSB7XG4gICAgY29tcG9uZW50c1tjb21wb25lbnRMZW4gLSAyXS52YWx1ZSArPSBmaW5hbENvbXBvbmVudC52YWx1ZTtcbiAgICBjb21wb25lbnRzLnBvcCgpO1xuICB9XG5cbiAgcmV0dXJuIGNvbXBvbmVudHM7XG59XG4iXX0=\n","/*istanbul ignore start*/\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.diffChars = diffChars;\nexports.characterDiff = void 0;\n\n/*istanbul ignore end*/\nvar\n/*istanbul ignore start*/\n_base = _interopRequireDefault(require(\"./base\"))\n/*istanbul ignore end*/\n;\n\n/*istanbul ignore start*/ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\n/*istanbul ignore end*/\nvar characterDiff = new\n/*istanbul ignore start*/\n_base\n/*istanbul ignore end*/\n[\n/*istanbul ignore start*/\n\"default\"\n/*istanbul ignore end*/\n]();\n\n/*istanbul ignore start*/\nexports.characterDiff = characterDiff;\n\n/*istanbul ignore end*/\nfunction diffChars(oldStr, newStr, options) {\n return characterDiff.diff(oldStr, newStr, options);\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kaWZmL2NoYXJhY3Rlci5qcyJdLCJuYW1lcyI6WyJjaGFyYWN0ZXJEaWZmIiwiRGlmZiIsImRpZmZDaGFycyIsIm9sZFN0ciIsIm5ld1N0ciIsIm9wdGlvbnMiLCJkaWZmIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTs7Ozs7QUFFTyxJQUFNQSxhQUFhLEdBQUc7QUFBSUM7QUFBQUE7QUFBQUE7QUFBQUE7QUFBQUE7QUFBQUE7QUFBQUE7QUFBQUEsQ0FBSixFQUF0Qjs7Ozs7O0FBQ0EsU0FBU0MsU0FBVCxDQUFtQkMsTUFBbkIsRUFBMkJDLE1BQTNCLEVBQW1DQyxPQUFuQyxFQUE0QztBQUFFLFNBQU9MLGFBQWEsQ0FBQ00sSUFBZCxDQUFtQkgsTUFBbkIsRUFBMkJDLE1BQTNCLEVBQW1DQyxPQUFuQyxDQUFQO0FBQXFEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IERpZmYgZnJvbSAnLi9iYXNlJztcblxuZXhwb3J0IGNvbnN0IGNoYXJhY3RlckRpZmYgPSBuZXcgRGlmZigpO1xuZXhwb3J0IGZ1bmN0aW9uIGRpZmZDaGFycyhvbGRTdHIsIG5ld1N0ciwgb3B0aW9ucykgeyByZXR1cm4gY2hhcmFjdGVyRGlmZi5kaWZmKG9sZFN0ciwgbmV3U3RyLCBvcHRpb25zKTsgfVxuIl19\n","/*istanbul ignore start*/\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.diffCss = diffCss;\nexports.cssDiff = void 0;\n\n/*istanbul ignore end*/\nvar\n/*istanbul ignore start*/\n_base = _interopRequireDefault(require(\"./base\"))\n/*istanbul ignore end*/\n;\n\n/*istanbul ignore start*/ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\n/*istanbul ignore end*/\nvar cssDiff = new\n/*istanbul ignore start*/\n_base\n/*istanbul ignore end*/\n[\n/*istanbul ignore start*/\n\"default\"\n/*istanbul ignore end*/\n]();\n\n/*istanbul ignore start*/\nexports.cssDiff = cssDiff;\n\n/*istanbul ignore end*/\ncssDiff.tokenize = function (value) {\n return value.split(/([{}:;,]|\\s+)/);\n};\n\nfunction diffCss(oldStr, newStr, callback) {\n return cssDiff.diff(oldStr, newStr, callback);\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kaWZmL2Nzcy5qcyJdLCJuYW1lcyI6WyJjc3NEaWZmIiwiRGlmZiIsInRva2VuaXplIiwidmFsdWUiLCJzcGxpdCIsImRpZmZDc3MiLCJvbGRTdHIiLCJuZXdTdHIiLCJjYWxsYmFjayIsImRpZmYiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBOzs7OztBQUVPLElBQU1BLE9BQU8sR0FBRztBQUFJQztBQUFBQTtBQUFBQTtBQUFBQTtBQUFBQTtBQUFBQTtBQUFBQTtBQUFBQSxDQUFKLEVBQWhCOzs7Ozs7QUFDUEQsT0FBTyxDQUFDRSxRQUFSLEdBQW1CLFVBQVNDLEtBQVQsRUFBZ0I7QUFDakMsU0FBT0EsS0FBSyxDQUFDQyxLQUFOLENBQVksZUFBWixDQUFQO0FBQ0QsQ0FGRDs7QUFJTyxTQUFTQyxPQUFULENBQWlCQyxNQUFqQixFQUF5QkMsTUFBekIsRUFBaUNDLFFBQWpDLEVBQTJDO0FBQUUsU0FBT1IsT0FBTyxDQUFDUyxJQUFSLENBQWFILE1BQWIsRUFBcUJDLE1BQXJCLEVBQTZCQyxRQUE3QixDQUFQO0FBQWdEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IERpZmYgZnJvbSAnLi9iYXNlJztcblxuZXhwb3J0IGNvbnN0IGNzc0RpZmYgPSBuZXcgRGlmZigpO1xuY3NzRGlmZi50b2tlbml6ZSA9IGZ1bmN0aW9uKHZhbHVlKSB7XG4gIHJldHVybiB2YWx1ZS5zcGxpdCgvKFt7fTo7LF18XFxzKykvKTtcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBkaWZmQ3NzKG9sZFN0ciwgbmV3U3RyLCBjYWxsYmFjaykgeyByZXR1cm4gY3NzRGlmZi5kaWZmKG9sZFN0ciwgbmV3U3RyLCBjYWxsYmFjayk7IH1cbiJdfQ==\n","/*istanbul ignore start*/\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.diffJson = diffJson;\nexports.canonicalize = canonicalize;\nexports.jsonDiff = void 0;\n\n/*istanbul ignore end*/\nvar\n/*istanbul ignore start*/\n_base = _interopRequireDefault(require(\"./base\"))\n/*istanbul ignore end*/\n;\n\nvar\n/*istanbul ignore start*/\n_line = require(\"./line\")\n/*istanbul ignore end*/\n;\n\n/*istanbul ignore start*/ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\n/*istanbul ignore end*/\nvar objectPrototypeToString = Object.prototype.toString;\nvar jsonDiff = new\n/*istanbul ignore start*/\n_base\n/*istanbul ignore end*/\n[\n/*istanbul ignore start*/\n\"default\"\n/*istanbul ignore end*/\n](); // Discriminate between two lines of pretty-printed, serialized JSON where one of them has a\n// dangling comma and the other doesn't. Turns out including the dangling comma yields the nicest output:\n\n/*istanbul ignore start*/\nexports.jsonDiff = jsonDiff;\n\n/*istanbul ignore end*/\njsonDiff.useLongestToken = true;\njsonDiff.tokenize =\n/*istanbul ignore start*/\n_line\n/*istanbul ignore end*/\n.\n/*istanbul ignore start*/\nlineDiff\n/*istanbul ignore end*/\n.tokenize;\n\njsonDiff.castInput = function (value) {\n /*istanbul ignore start*/\n var _this$options =\n /*istanbul ignore end*/\n this.options,\n undefinedReplacement = _this$options.undefinedReplacement,\n _this$options$stringi = _this$options.stringifyReplacer,\n stringifyReplacer = _this$options$stringi === void 0 ? function (k, v)\n /*istanbul ignore start*/\n {\n return (\n /*istanbul ignore end*/\n typeof v === 'undefined' ? undefinedReplacement : v\n );\n } : _this$options$stringi;\n return typeof value === 'string' ? value : JSON.stringify(canonicalize(value, null, null, stringifyReplacer), stringifyReplacer, ' ');\n};\n\njsonDiff.equals = function (left, right) {\n return (\n /*istanbul ignore start*/\n _base\n /*istanbul ignore end*/\n [\n /*istanbul ignore start*/\n \"default\"\n /*istanbul ignore end*/\n ].prototype.equals.call(jsonDiff, left.replace(/,([\\r\\n])/g, '$1'), right.replace(/,([\\r\\n])/g, '$1'))\n );\n};\n\nfunction diffJson(oldObj, newObj, options) {\n return jsonDiff.diff(oldObj, newObj, options);\n} // This function handles the presence of circular references by bailing out when encountering an\n// object that is already on the \"stack\" of items being processed. Accepts an optional replacer\n\n\nfunction canonicalize(obj, stack, replacementStack, replacer, key) {\n stack = stack || [];\n replacementStack = replacementStack || [];\n\n if (replacer) {\n obj = replacer(key, obj);\n }\n\n var i;\n\n for (i = 0; i < stack.length; i += 1) {\n if (stack[i] === obj) {\n return replacementStack[i];\n }\n }\n\n var canonicalizedObj;\n\n if ('[object Array]' === objectPrototypeToString.call(obj)) {\n stack.push(obj);\n canonicalizedObj = new Array(obj.length);\n replacementStack.push(canonicalizedObj);\n\n for (i = 0; i < obj.length; i += 1) {\n canonicalizedObj[i] = canonicalize(obj[i], stack, replacementStack, replacer, key);\n }\n\n stack.pop();\n replacementStack.pop();\n return canonicalizedObj;\n }\n\n if (obj && obj.toJSON) {\n obj = obj.toJSON();\n }\n\n if (\n /*istanbul ignore start*/\n _typeof(\n /*istanbul ignore end*/\n obj) === 'object' && obj !== null) {\n stack.push(obj);\n canonicalizedObj = {};\n replacementStack.push(canonicalizedObj);\n\n var sortedKeys = [],\n _key;\n\n for (_key in obj) {\n /* istanbul ignore else */\n if (obj.hasOwnProperty(_key)) {\n sortedKeys.push(_key);\n }\n }\n\n sortedKeys.sort();\n\n for (i = 0; i < sortedKeys.length; i += 1) {\n _key = sortedKeys[i];\n canonicalizedObj[_key] = canonicalize(obj[_key], stack, replacementStack, replacer, _key);\n }\n\n stack.pop();\n replacementStack.pop();\n } else {\n canonicalizedObj = obj;\n }\n\n return canonicalizedObj;\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kaWZmL2pzb24uanMiXSwibmFtZXMiOlsib2JqZWN0UHJvdG90eXBlVG9TdHJpbmciLCJPYmplY3QiLCJwcm90b3R5cGUiLCJ0b1N0cmluZyIsImpzb25EaWZmIiwiRGlmZiIsInVzZUxvbmdlc3RUb2tlbiIsInRva2VuaXplIiwibGluZURpZmYiLCJjYXN0SW5wdXQiLCJ2YWx1ZSIsIm9wdGlvbnMiLCJ1bmRlZmluZWRSZXBsYWNlbWVudCIsInN0cmluZ2lmeVJlcGxhY2VyIiwiayIsInYiLCJKU09OIiwic3RyaW5naWZ5IiwiY2Fub25pY2FsaXplIiwiZXF1YWxzIiwibGVmdCIsInJpZ2h0IiwiY2FsbCIsInJlcGxhY2UiLCJkaWZmSnNvbiIsIm9sZE9iaiIsIm5ld09iaiIsImRpZmYiLCJvYmoiLCJzdGFjayIsInJlcGxhY2VtZW50U3RhY2siLCJyZXBsYWNlciIsImtleSIsImkiLCJsZW5ndGgiLCJjYW5vbmljYWxpemVkT2JqIiwicHVzaCIsIkFycmF5IiwicG9wIiwidG9KU09OIiwic29ydGVkS2V5cyIsImhhc093blByb3BlcnR5Iiwic29ydCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBOztBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7Ozs7Ozs7QUFFQSxJQUFNQSx1QkFBdUIsR0FBR0MsTUFBTSxDQUFDQyxTQUFQLENBQWlCQyxRQUFqRDtBQUdPLElBQU1DLFFBQVEsR0FBRztBQUFJQztBQUFBQTtBQUFBQTtBQUFBQTtBQUFBQTtBQUFBQTtBQUFBQTtBQUFBQSxDQUFKLEVBQWpCLEMsQ0FDUDtBQUNBOzs7Ozs7QUFDQUQsUUFBUSxDQUFDRSxlQUFULEdBQTJCLElBQTNCO0FBRUFGLFFBQVEsQ0FBQ0csUUFBVDtBQUFvQkM7QUFBQUE7QUFBQUE7QUFBQUE7QUFBQUE7QUFBQUE7QUFBQTtBQUFBLENBQVNELFFBQTdCOztBQUNBSCxRQUFRLENBQUNLLFNBQVQsR0FBcUIsVUFBU0MsS0FBVCxFQUFnQjtBQUFBO0FBQUE7QUFBQTtBQUMrRSxPQUFLQyxPQURwRjtBQUFBLE1BQzVCQyxvQkFENEIsaUJBQzVCQSxvQkFENEI7QUFBQSw0Q0FDTkMsaUJBRE07QUFBQSxNQUNOQSxpQkFETSxzQ0FDYyxVQUFDQyxDQUFELEVBQUlDLENBQUo7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFVLGFBQU9BLENBQVAsS0FBYSxXQUFiLEdBQTJCSCxvQkFBM0IsR0FBa0RHO0FBQTVEO0FBQUEsR0FEZDtBQUduQyxTQUFPLE9BQU9MLEtBQVAsS0FBaUIsUUFBakIsR0FBNEJBLEtBQTVCLEdBQW9DTSxJQUFJLENBQUNDLFNBQUwsQ0FBZUMsWUFBWSxDQUFDUixLQUFELEVBQVEsSUFBUixFQUFjLElBQWQsRUFBb0JHLGlCQUFwQixDQUEzQixFQUFtRUEsaUJBQW5FLEVBQXNGLElBQXRGLENBQTNDO0FBQ0QsQ0FKRDs7QUFLQVQsUUFBUSxDQUFDZSxNQUFULEdBQWtCLFVBQVNDLElBQVQsRUFBZUMsS0FBZixFQUFzQjtBQUN0QyxTQUFPaEI7QUFBQUE7QUFBQUE7QUFBQUE7QUFBQUE7QUFBQUE7QUFBQUE7QUFBQUE7QUFBQUEsTUFBS0gsU0FBTCxDQUFlaUIsTUFBZixDQUFzQkcsSUFBdEIsQ0FBMkJsQixRQUEzQixFQUFxQ2dCLElBQUksQ0FBQ0csT0FBTCxDQUFhLFlBQWIsRUFBMkIsSUFBM0IsQ0FBckMsRUFBdUVGLEtBQUssQ0FBQ0UsT0FBTixDQUFjLFlBQWQsRUFBNEIsSUFBNUIsQ0FBdkU7QUFBUDtBQUNELENBRkQ7O0FBSU8sU0FBU0MsUUFBVCxDQUFrQkMsTUFBbEIsRUFBMEJDLE1BQTFCLEVBQWtDZixPQUFsQyxFQUEyQztBQUFFLFNBQU9QLFFBQVEsQ0FBQ3VCLElBQVQsQ0FBY0YsTUFBZCxFQUFzQkMsTUFBdEIsRUFBOEJmLE9BQTlCLENBQVA7QUFBZ0QsQyxDQUVwRztBQUNBOzs7QUFDTyxTQUFTTyxZQUFULENBQXNCVSxHQUF0QixFQUEyQkMsS0FBM0IsRUFBa0NDLGdCQUFsQyxFQUFvREMsUUFBcEQsRUFBOERDLEdBQTlELEVBQW1FO0FBQ3hFSCxFQUFBQSxLQUFLLEdBQUdBLEtBQUssSUFBSSxFQUFqQjtBQUNBQyxFQUFBQSxnQkFBZ0IsR0FBR0EsZ0JBQWdCLElBQUksRUFBdkM7O0FBRUEsTUFBSUMsUUFBSixFQUFjO0FBQ1pILElBQUFBLEdBQUcsR0FBR0csUUFBUSxDQUFDQyxHQUFELEVBQU1KLEdBQU4sQ0FBZDtBQUNEOztBQUVELE1BQUlLLENBQUo7O0FBRUEsT0FBS0EsQ0FBQyxHQUFHLENBQVQsRUFBWUEsQ0FBQyxHQUFHSixLQUFLLENBQUNLLE1BQXRCLEVBQThCRCxDQUFDLElBQUksQ0FBbkMsRUFBc0M7QUFDcEMsUUFBSUosS0FBSyxDQUFDSSxDQUFELENBQUwsS0FBYUwsR0FBakIsRUFBc0I7QUFDcEIsYUFBT0UsZ0JBQWdCLENBQUNHLENBQUQsQ0FBdkI7QUFDRDtBQUNGOztBQUVELE1BQUlFLGdCQUFKOztBQUVBLE1BQUkscUJBQXFCbkMsdUJBQXVCLENBQUNzQixJQUF4QixDQUE2Qk0sR0FBN0IsQ0FBekIsRUFBNEQ7QUFDMURDLElBQUFBLEtBQUssQ0FBQ08sSUFBTixDQUFXUixHQUFYO0FBQ0FPLElBQUFBLGdCQUFnQixHQUFHLElBQUlFLEtBQUosQ0FBVVQsR0FBRyxDQUFDTSxNQUFkLENBQW5CO0FBQ0FKLElBQUFBLGdCQUFnQixDQUFDTSxJQUFqQixDQUFzQkQsZ0JBQXRCOztBQUNBLFNBQUtGLENBQUMsR0FBRyxDQUFULEVBQVlBLENBQUMsR0FBR0wsR0FBRyxDQUFDTSxNQUFwQixFQUE0QkQsQ0FBQyxJQUFJLENBQWpDLEVBQW9DO0FBQ2xDRSxNQUFBQSxnQkFBZ0IsQ0FBQ0YsQ0FBRCxDQUFoQixHQUFzQmYsWUFBWSxDQUFDVSxHQUFHLENBQUNLLENBQUQsQ0FBSixFQUFTSixLQUFULEVBQWdCQyxnQkFBaEIsRUFBa0NDLFFBQWxDLEVBQTRDQyxHQUE1QyxDQUFsQztBQUNEOztBQUNESCxJQUFBQSxLQUFLLENBQUNTLEdBQU47QUFDQVIsSUFBQUEsZ0JBQWdCLENBQUNRLEdBQWpCO0FBQ0EsV0FBT0gsZ0JBQVA7QUFDRDs7QUFFRCxNQUFJUCxHQUFHLElBQUlBLEdBQUcsQ0FBQ1csTUFBZixFQUF1QjtBQUNyQlgsSUFBQUEsR0FBRyxHQUFHQSxHQUFHLENBQUNXLE1BQUosRUFBTjtBQUNEOztBQUVEO0FBQUk7QUFBQTtBQUFBO0FBQU9YLEVBQUFBLEdBQVAsTUFBZSxRQUFmLElBQTJCQSxHQUFHLEtBQUssSUFBdkMsRUFBNkM7QUFDM0NDLElBQUFBLEtBQUssQ0FBQ08sSUFBTixDQUFXUixHQUFYO0FBQ0FPLElBQUFBLGdCQUFnQixHQUFHLEVBQW5CO0FBQ0FMLElBQUFBLGdCQUFnQixDQUFDTSxJQUFqQixDQUFzQkQsZ0JBQXRCOztBQUNBLFFBQUlLLFVBQVUsR0FBRyxFQUFqQjtBQUFBLFFBQ0lSLElBREo7O0FBRUEsU0FBS0EsSUFBTCxJQUFZSixHQUFaLEVBQWlCO0FBQ2Y7QUFDQSxVQUFJQSxHQUFHLENBQUNhLGNBQUosQ0FBbUJULElBQW5CLENBQUosRUFBNkI7QUFDM0JRLFFBQUFBLFVBQVUsQ0FBQ0osSUFBWCxDQUFnQkosSUFBaEI7QUFDRDtBQUNGOztBQUNEUSxJQUFBQSxVQUFVLENBQUNFLElBQVg7O0FBQ0EsU0FBS1QsQ0FBQyxHQUFHLENBQVQsRUFBWUEsQ0FBQyxHQUFHTyxVQUFVLENBQUNOLE1BQTNCLEVBQW1DRCxDQUFDLElBQUksQ0FBeEMsRUFBMkM7QUFDekNELE1BQUFBLElBQUcsR0FBR1EsVUFBVSxDQUFDUCxDQUFELENBQWhCO0FBQ0FFLE1BQUFBLGdCQUFnQixDQUFDSCxJQUFELENBQWhCLEdBQXdCZCxZQUFZLENBQUNVLEdBQUcsQ0FBQ0ksSUFBRCxDQUFKLEVBQVdILEtBQVgsRUFBa0JDLGdCQUFsQixFQUFvQ0MsUUFBcEMsRUFBOENDLElBQTlDLENBQXBDO0FBQ0Q7O0FBQ0RILElBQUFBLEtBQUssQ0FBQ1MsR0FBTjtBQUNBUixJQUFBQSxnQkFBZ0IsQ0FBQ1EsR0FBakI7QUFDRCxHQW5CRCxNQW1CTztBQUNMSCxJQUFBQSxnQkFBZ0IsR0FBR1AsR0FBbkI7QUFDRDs7QUFDRCxTQUFPTyxnQkFBUDtBQUNEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IERpZmYgZnJvbSAnLi9iYXNlJztcbmltcG9ydCB7bGluZURpZmZ9IGZyb20gJy4vbGluZSc7XG5cbmNvbnN0IG9iamVjdFByb3RvdHlwZVRvU3RyaW5nID0gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZztcblxuXG5leHBvcnQgY29uc3QganNvbkRpZmYgPSBuZXcgRGlmZigpO1xuLy8gRGlzY3JpbWluYXRlIGJldHdlZW4gdHdvIGxpbmVzIG9mIHByZXR0eS1wcmludGVkLCBzZXJpYWxpemVkIEpTT04gd2hlcmUgb25lIG9mIHRoZW0gaGFzIGFcbi8vIGRhbmdsaW5nIGNvbW1hIGFuZCB0aGUgb3RoZXIgZG9lc24ndC4gVHVybnMgb3V0IGluY2x1ZGluZyB0aGUgZGFuZ2xpbmcgY29tbWEgeWllbGRzIHRoZSBuaWNlc3Qgb3V0cHV0OlxuanNvbkRpZmYudXNlTG9uZ2VzdFRva2VuID0gdHJ1ZTtcblxuanNvbkRpZmYudG9rZW5pemUgPSBsaW5lRGlmZi50b2tlbml6ZTtcbmpzb25EaWZmLmNhc3RJbnB1dCA9IGZ1bmN0aW9uKHZhbHVlKSB7XG4gIGNvbnN0IHt1bmRlZmluZWRSZXBsYWNlbWVudCwgc3RyaW5naWZ5UmVwbGFjZXIgPSAoaywgdikgPT4gdHlwZW9mIHYgPT09ICd1bmRlZmluZWQnID8gdW5kZWZpbmVkUmVwbGFjZW1lbnQgOiB2fSA9IHRoaXMub3B0aW9ucztcblxuICByZXR1cm4gdHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJyA/IHZhbHVlIDogSlNPTi5zdHJpbmdpZnkoY2Fub25pY2FsaXplKHZhbHVlLCBudWxsLCBudWxsLCBzdHJpbmdpZnlSZXBsYWNlciksIHN0cmluZ2lmeVJlcGxhY2VyLCAnICAnKTtcbn07XG5qc29uRGlmZi5lcXVhbHMgPSBmdW5jdGlvbihsZWZ0LCByaWdodCkge1xuICByZXR1cm4gRGlmZi5wcm90b3R5cGUuZXF1YWxzLmNhbGwoanNvbkRpZmYsIGxlZnQucmVwbGFjZSgvLChbXFxyXFxuXSkvZywgJyQxJyksIHJpZ2h0LnJlcGxhY2UoLywoW1xcclxcbl0pL2csICckMScpKTtcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBkaWZmSnNvbihvbGRPYmosIG5ld09iaiwgb3B0aW9ucykgeyByZXR1cm4ganNvbkRpZmYuZGlmZihvbGRPYmosIG5ld09iaiwgb3B0aW9ucyk7IH1cblxuLy8gVGhpcyBmdW5jdGlvbiBoYW5kbGVzIHRoZSBwcmVzZW5jZSBvZiBjaXJjdWxhciByZWZlcmVuY2VzIGJ5IGJhaWxpbmcgb3V0IHdoZW4gZW5jb3VudGVyaW5nIGFuXG4vLyBvYmplY3QgdGhhdCBpcyBhbHJlYWR5IG9uIHRoZSBcInN0YWNrXCIgb2YgaXRlbXMgYmVpbmcgcHJvY2Vzc2VkLiBBY2NlcHRzIGFuIG9wdGlvbmFsIHJlcGxhY2VyXG5leHBvcnQgZnVuY3Rpb24gY2Fub25pY2FsaXplKG9iaiwgc3RhY2ssIHJlcGxhY2VtZW50U3RhY2ssIHJlcGxhY2VyLCBrZXkpIHtcbiAgc3RhY2sgPSBzdGFjayB8fCBbXTtcbiAgcmVwbGFjZW1lbnRTdGFjayA9IHJlcGxhY2VtZW50U3RhY2sgfHwgW107XG5cbiAgaWYgKHJlcGxhY2VyKSB7XG4gICAgb2JqID0gcmVwbGFjZXIoa2V5LCBvYmopO1xuICB9XG5cbiAgbGV0IGk7XG5cbiAgZm9yIChpID0gMDsgaSA8IHN0YWNrLmxlbmd0aDsgaSArPSAxKSB7XG4gICAgaWYgKHN0YWNrW2ldID09PSBvYmopIHtcbiAgICAgIHJldHVybiByZXBsYWNlbWVudFN0YWNrW2ldO1xuICAgIH1cbiAgfVxuXG4gIGxldCBjYW5vbmljYWxpemVkT2JqO1xuXG4gIGlmICgnW29iamVjdCBBcnJheV0nID09PSBvYmplY3RQcm90b3R5cGVUb1N0cmluZy5jYWxsKG9iaikpIHtcbiAgICBzdGFjay5wdXNoKG9iaik7XG4gICAgY2Fub25pY2FsaXplZE9iaiA9IG5ldyBBcnJheShvYmoubGVuZ3RoKTtcbiAgICByZXBsYWNlbWVudFN0YWNrLnB1c2goY2Fub25pY2FsaXplZE9iaik7XG4gICAgZm9yIChpID0gMDsgaSA8IG9iai5sZW5ndGg7IGkgKz0gMSkge1xuICAgICAgY2Fub25pY2FsaXplZE9ialtpXSA9IGNhbm9uaWNhbGl6ZShvYmpbaV0sIHN0YWNrLCByZXBsYWNlbWVudFN0YWNrLCByZXBsYWNlciwga2V5KTtcbiAgICB9XG4gICAgc3RhY2sucG9wKCk7XG4gICAgcmVwbGFjZW1lbnRTdGFjay5wb3AoKTtcbiAgICByZXR1cm4gY2Fub25pY2FsaXplZE9iajtcbiAgfVxuXG4gIGlmIChvYmogJiYgb2JqLnRvSlNPTikge1xuICAgIG9iaiA9IG9iai50b0pTT04oKTtcbiAgfVxuXG4gIGlmICh0eXBlb2Ygb2JqID09PSAnb2JqZWN0JyAmJiBvYmogIT09IG51bGwpIHtcbiAgICBzdGFjay5wdXNoKG9iaik7XG4gICAgY2Fub25pY2FsaXplZE9iaiA9IHt9O1xuICAgIHJlcGxhY2VtZW50U3RhY2sucHVzaChjYW5vbmljYWxpemVkT2JqKTtcbiAgICBsZXQgc29ydGVkS2V5cyA9IFtdLFxuICAgICAgICBrZXk7XG4gICAgZm9yIChrZXkgaW4gb2JqKSB7XG4gICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgICAgaWYgKG9iai5oYXNPd25Qcm9wZXJ0eShrZXkpKSB7XG4gICAgICAgIHNvcnRlZEtleXMucHVzaChrZXkpO1xuICAgICAgfVxuICAgIH1cbiAgICBzb3J0ZWRLZXlzLnNvcnQoKTtcbiAgICBmb3IgKGkgPSAwOyBpIDwgc29ydGVkS2V5cy5sZW5ndGg7IGkgKz0gMSkge1xuICAgICAga2V5ID0gc29ydGVkS2V5c1tpXTtcbiAgICAgIGNhbm9uaWNhbGl6ZWRPYmpba2V5XSA9IGNhbm9uaWNhbGl6ZShvYmpba2V5XSwgc3RhY2ssIHJlcGxhY2VtZW50U3RhY2ssIHJlcGxhY2VyLCBrZXkpO1xuICAgIH1cbiAgICBzdGFjay5wb3AoKTtcbiAgICByZXBsYWNlbWVudFN0YWNrLnBvcCgpO1xuICB9IGVsc2Uge1xuICAgIGNhbm9uaWNhbGl6ZWRPYmogPSBvYmo7XG4gIH1cbiAgcmV0dXJuIGNhbm9uaWNhbGl6ZWRPYmo7XG59XG4iXX0=\n","/*istanbul ignore start*/\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.diffLines = diffLines;\nexports.diffTrimmedLines = diffTrimmedLines;\nexports.lineDiff = void 0;\n\n/*istanbul ignore end*/\nvar\n/*istanbul ignore start*/\n_base = _interopRequireDefault(require(\"./base\"))\n/*istanbul ignore end*/\n;\n\nvar\n/*istanbul ignore start*/\n_params = require(\"../util/params\")\n/*istanbul ignore end*/\n;\n\n/*istanbul ignore start*/ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\n/*istanbul ignore end*/\nvar lineDiff = new\n/*istanbul ignore start*/\n_base\n/*istanbul ignore end*/\n[\n/*istanbul ignore start*/\n\"default\"\n/*istanbul ignore end*/\n]();\n\n/*istanbul ignore start*/\nexports.lineDiff = lineDiff;\n\n/*istanbul ignore end*/\nlineDiff.tokenize = function (value) {\n if (this.options.stripTrailingCr) {\n // remove one \\r before \\n to match GNU diff's --strip-trailing-cr behavior\n value = value.replace(/\\r\\n/g, '\\n');\n }\n\n var retLines = [],\n linesAndNewlines = value.split(/(\\n|\\r\\n)/); // Ignore the final empty token that occurs if the string ends with a new line\n\n if (!linesAndNewlines[linesAndNewlines.length - 1]) {\n linesAndNewlines.pop();\n } // Merge the content and line separators into single tokens\n\n\n for (var i = 0; i < linesAndNewlines.length; i++) {\n var line = linesAndNewlines[i];\n\n if (i % 2 && !this.options.newlineIsToken) {\n retLines[retLines.length - 1] += line;\n } else {\n if (this.options.ignoreWhitespace) {\n line = line.trim();\n }\n\n retLines.push(line);\n }\n }\n\n return retLines;\n};\n\nfunction diffLines(oldStr, newStr, callback) {\n return lineDiff.diff(oldStr, newStr, callback);\n}\n\nfunction diffTrimmedLines(oldStr, newStr, callback) {\n var options =\n /*istanbul ignore start*/\n (0,\n /*istanbul ignore end*/\n\n /*istanbul ignore start*/\n _params\n /*istanbul ignore end*/\n .\n /*istanbul ignore start*/\n generateOptions)\n /*istanbul ignore end*/\n (callback, {\n ignoreWhitespace: true\n });\n return lineDiff.diff(oldStr, newStr, options);\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kaWZmL2xpbmUuanMiXSwibmFtZXMiOlsibGluZURpZmYiLCJEaWZmIiwidG9rZW5pemUiLCJ2YWx1ZSIsIm9wdGlvbnMiLCJzdHJpcFRyYWlsaW5nQ3IiLCJyZXBsYWNlIiwicmV0TGluZXMiLCJsaW5lc0FuZE5ld2xpbmVzIiwic3BsaXQiLCJsZW5ndGgiLCJwb3AiLCJpIiwibGluZSIsIm5ld2xpbmVJc1Rva2VuIiwiaWdub3JlV2hpdGVzcGFjZSIsInRyaW0iLCJwdXNoIiwiZGlmZkxpbmVzIiwib2xkU3RyIiwibmV3U3RyIiwiY2FsbGJhY2siLCJkaWZmIiwiZGlmZlRyaW1tZWRMaW5lcyIsImdlbmVyYXRlT3B0aW9ucyJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBOztBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7Ozs7O0FBRU8sSUFBTUEsUUFBUSxHQUFHO0FBQUlDO0FBQUFBO0FBQUFBO0FBQUFBO0FBQUFBO0FBQUFBO0FBQUFBO0FBQUFBLENBQUosRUFBakI7Ozs7OztBQUNQRCxRQUFRLENBQUNFLFFBQVQsR0FBb0IsVUFBU0MsS0FBVCxFQUFnQjtBQUNsQyxNQUFHLEtBQUtDLE9BQUwsQ0FBYUMsZUFBaEIsRUFBaUM7QUFDL0I7QUFDQUYsSUFBQUEsS0FBSyxHQUFHQSxLQUFLLENBQUNHLE9BQU4sQ0FBYyxPQUFkLEVBQXVCLElBQXZCLENBQVI7QUFDRDs7QUFFRCxNQUFJQyxRQUFRLEdBQUcsRUFBZjtBQUFBLE1BQ0lDLGdCQUFnQixHQUFHTCxLQUFLLENBQUNNLEtBQU4sQ0FBWSxXQUFaLENBRHZCLENBTmtDLENBU2xDOztBQUNBLE1BQUksQ0FBQ0QsZ0JBQWdCLENBQUNBLGdCQUFnQixDQUFDRSxNQUFqQixHQUEwQixDQUEzQixDQUFyQixFQUFvRDtBQUNsREYsSUFBQUEsZ0JBQWdCLENBQUNHLEdBQWpCO0FBQ0QsR0FaaUMsQ0FjbEM7OztBQUNBLE9BQUssSUFBSUMsQ0FBQyxHQUFHLENBQWIsRUFBZ0JBLENBQUMsR0FBR0osZ0JBQWdCLENBQUNFLE1BQXJDLEVBQTZDRSxDQUFDLEVBQTlDLEVBQWtEO0FBQ2hELFFBQUlDLElBQUksR0FBR0wsZ0JBQWdCLENBQUNJLENBQUQsQ0FBM0I7O0FBRUEsUUFBSUEsQ0FBQyxHQUFHLENBQUosSUFBUyxDQUFDLEtBQUtSLE9BQUwsQ0FBYVUsY0FBM0IsRUFBMkM7QUFDekNQLE1BQUFBLFFBQVEsQ0FBQ0EsUUFBUSxDQUFDRyxNQUFULEdBQWtCLENBQW5CLENBQVIsSUFBaUNHLElBQWpDO0FBQ0QsS0FGRCxNQUVPO0FBQ0wsVUFBSSxLQUFLVCxPQUFMLENBQWFXLGdCQUFqQixFQUFtQztBQUNqQ0YsUUFBQUEsSUFBSSxHQUFHQSxJQUFJLENBQUNHLElBQUwsRUFBUDtBQUNEOztBQUNEVCxNQUFBQSxRQUFRLENBQUNVLElBQVQsQ0FBY0osSUFBZDtBQUNEO0FBQ0Y7O0FBRUQsU0FBT04sUUFBUDtBQUNELENBN0JEOztBQStCTyxTQUFTVyxTQUFULENBQW1CQyxNQUFuQixFQUEyQkMsTUFBM0IsRUFBbUNDLFFBQW5DLEVBQTZDO0FBQUUsU0FBT3JCLFFBQVEsQ0FBQ3NCLElBQVQsQ0FBY0gsTUFBZCxFQUFzQkMsTUFBdEIsRUFBOEJDLFFBQTlCLENBQVA7QUFBaUQ7O0FBQ2hHLFNBQVNFLGdCQUFULENBQTBCSixNQUExQixFQUFrQ0MsTUFBbEMsRUFBMENDLFFBQTFDLEVBQW9EO0FBQ3pELE1BQUlqQixPQUFPO0FBQUc7QUFBQTtBQUFBOztBQUFBb0I7QUFBQUE7QUFBQUE7QUFBQUE7QUFBQUE7QUFBQUE7QUFBQTtBQUFBLEdBQWdCSCxRQUFoQixFQUEwQjtBQUFDTixJQUFBQSxnQkFBZ0IsRUFBRTtBQUFuQixHQUExQixDQUFkO0FBQ0EsU0FBT2YsUUFBUSxDQUFDc0IsSUFBVCxDQUFjSCxNQUFkLEVBQXNCQyxNQUF0QixFQUE4QmhCLE9BQTlCLENBQVA7QUFDRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBEaWZmIGZyb20gJy4vYmFzZSc7XG5pbXBvcnQge2dlbmVyYXRlT3B0aW9uc30gZnJvbSAnLi4vdXRpbC9wYXJhbXMnO1xuXG5leHBvcnQgY29uc3QgbGluZURpZmYgPSBuZXcgRGlmZigpO1xubGluZURpZmYudG9rZW5pemUgPSBmdW5jdGlvbih2YWx1ZSkge1xuICBpZih0aGlzLm9wdGlvbnMuc3RyaXBUcmFpbGluZ0NyKSB7XG4gICAgLy8gcmVtb3ZlIG9uZSBcXHIgYmVmb3JlIFxcbiB0byBtYXRjaCBHTlUgZGlmZidzIC0tc3RyaXAtdHJhaWxpbmctY3IgYmVoYXZpb3JcbiAgICB2YWx1ZSA9IHZhbHVlLnJlcGxhY2UoL1xcclxcbi9nLCAnXFxuJyk7XG4gIH1cblxuICBsZXQgcmV0TGluZXMgPSBbXSxcbiAgICAgIGxpbmVzQW5kTmV3bGluZXMgPSB2YWx1ZS5zcGxpdCgvKFxcbnxcXHJcXG4pLyk7XG5cbiAgLy8gSWdub3JlIHRoZSBmaW5hbCBlbXB0eSB0b2tlbiB0aGF0IG9jY3VycyBpZiB0aGUgc3RyaW5nIGVuZHMgd2l0aCBhIG5ldyBsaW5lXG4gIGlmICghbGluZXNBbmROZXdsaW5lc1tsaW5lc0FuZE5ld2xpbmVzLmxlbmd0aCAtIDFdKSB7XG4gICAgbGluZXNBbmROZXdsaW5lcy5wb3AoKTtcbiAgfVxuXG4gIC8vIE1lcmdlIHRoZSBjb250ZW50IGFuZCBsaW5lIHNlcGFyYXRvcnMgaW50byBzaW5nbGUgdG9rZW5zXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgbGluZXNBbmROZXdsaW5lcy5sZW5ndGg7IGkrKykge1xuICAgIGxldCBsaW5lID0gbGluZXNBbmROZXdsaW5lc1tpXTtcblxuICAgIGlmIChpICUgMiAmJiAhdGhpcy5vcHRpb25zLm5ld2xpbmVJc1Rva2VuKSB7XG4gICAgICByZXRMaW5lc1tyZXRMaW5lcy5sZW5ndGggLSAxXSArPSBsaW5lO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAodGhpcy5vcHRpb25zLmlnbm9yZVdoaXRlc3BhY2UpIHtcbiAgICAgICAgbGluZSA9IGxpbmUudHJpbSgpO1xuICAgICAgfVxuICAgICAgcmV0TGluZXMucHVzaChsaW5lKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gcmV0TGluZXM7XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gZGlmZkxpbmVzKG9sZFN0ciwgbmV3U3RyLCBjYWxsYmFjaykgeyByZXR1cm4gbGluZURpZmYuZGlmZihvbGRTdHIsIG5ld1N0ciwgY2FsbGJhY2spOyB9XG5leHBvcnQgZnVuY3Rpb24gZGlmZlRyaW1tZWRMaW5lcyhvbGRTdHIsIG5ld1N0ciwgY2FsbGJhY2spIHtcbiAgbGV0IG9wdGlvbnMgPSBnZW5lcmF0ZU9wdGlvbnMoY2FsbGJhY2ssIHtpZ25vcmVXaGl0ZXNwYWNlOiB0cnVlfSk7XG4gIHJldHVybiBsaW5lRGlmZi5kaWZmKG9sZFN0ciwgbmV3U3RyLCBvcHRpb25zKTtcbn1cbiJdfQ==\n","/*istanbul ignore start*/\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.diffSentences = diffSentences;\nexports.sentenceDiff = void 0;\n\n/*istanbul ignore end*/\nvar\n/*istanbul ignore start*/\n_base = _interopRequireDefault(require(\"./base\"))\n/*istanbul ignore end*/\n;\n\n/*istanbul ignore start*/ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\n/*istanbul ignore end*/\nvar sentenceDiff = new\n/*istanbul ignore start*/\n_base\n/*istanbul ignore end*/\n[\n/*istanbul ignore start*/\n\"default\"\n/*istanbul ignore end*/\n]();\n\n/*istanbul ignore start*/\nexports.sentenceDiff = sentenceDiff;\n\n/*istanbul ignore end*/\nsentenceDiff.tokenize = function (value) {\n return value.split(/(\\S.+?[.!?])(?=\\s+|$)/);\n};\n\nfunction diffSentences(oldStr, newStr, callback) {\n return sentenceDiff.diff(oldStr, newStr, callback);\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kaWZmL3NlbnRlbmNlLmpzIl0sIm5hbWVzIjpbInNlbnRlbmNlRGlmZiIsIkRpZmYiLCJ0b2tlbml6ZSIsInZhbHVlIiwic3BsaXQiLCJkaWZmU2VudGVuY2VzIiwib2xkU3RyIiwibmV3U3RyIiwiY2FsbGJhY2siLCJkaWZmIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTs7Ozs7QUFHTyxJQUFNQSxZQUFZLEdBQUc7QUFBSUM7QUFBQUE7QUFBQUE7QUFBQUE7QUFBQUE7QUFBQUE7QUFBQUE7QUFBQUEsQ0FBSixFQUFyQjs7Ozs7O0FBQ1BELFlBQVksQ0FBQ0UsUUFBYixHQUF3QixVQUFTQyxLQUFULEVBQWdCO0FBQ3RDLFNBQU9BLEtBQUssQ0FBQ0MsS0FBTixDQUFZLHVCQUFaLENBQVA7QUFDRCxDQUZEOztBQUlPLFNBQVNDLGFBQVQsQ0FBdUJDLE1BQXZCLEVBQStCQyxNQUEvQixFQUF1Q0MsUUFBdkMsRUFBaUQ7QUFBRSxTQUFPUixZQUFZLENBQUNTLElBQWIsQ0FBa0JILE1BQWxCLEVBQTBCQyxNQUExQixFQUFrQ0MsUUFBbEMsQ0FBUDtBQUFxRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBEaWZmIGZyb20gJy4vYmFzZSc7XG5cblxuZXhwb3J0IGNvbnN0IHNlbnRlbmNlRGlmZiA9IG5ldyBEaWZmKCk7XG5zZW50ZW5jZURpZmYudG9rZW5pemUgPSBmdW5jdGlvbih2YWx1ZSkge1xuICByZXR1cm4gdmFsdWUuc3BsaXQoLyhcXFMuKz9bLiE/XSkoPz1cXHMrfCQpLyk7XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gZGlmZlNlbnRlbmNlcyhvbGRTdHIsIG5ld1N0ciwgY2FsbGJhY2spIHsgcmV0dXJuIHNlbnRlbmNlRGlmZi5kaWZmKG9sZFN0ciwgbmV3U3RyLCBjYWxsYmFjayk7IH1cbiJdfQ==\n","/*istanbul ignore start*/\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.diffWords = diffWords;\nexports.diffWordsWithSpace = diffWordsWithSpace;\nexports.wordDiff = void 0;\n\n/*istanbul ignore end*/\nvar\n/*istanbul ignore start*/\n_base = _interopRequireDefault(require(\"./base\"))\n/*istanbul ignore end*/\n;\n\nvar\n/*istanbul ignore start*/\n_params = require(\"../util/params\")\n/*istanbul ignore end*/\n;\n\n/*istanbul ignore start*/ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\n/*istanbul ignore end*/\n// Based on https://en.wikipedia.org/wiki/Latin_script_in_Unicode\n//\n// Ranges and exceptions:\n// Latin-1 Supplement, 0080–00FF\n// - U+00D7 × Multiplication sign\n// - U+00F7 ÷ Division sign\n// Latin Extended-A, 0100–017F\n// Latin Extended-B, 0180–024F\n// IPA Extensions, 0250–02AF\n// Spacing Modifier Letters, 02B0–02FF\n// - U+02C7 ˇ ˇ Caron\n// - U+02D8 ˘ ˘ Breve\n// - U+02D9 ˙ ˙ Dot Above\n// - U+02DA ˚ ˚ Ring Above\n// - U+02DB ˛ ˛ Ogonek\n// - U+02DC ˜ ˜ Small Tilde\n// - U+02DD ˝ ˝ Double Acute Accent\n// Latin Extended Additional, 1E00–1EFF\nvar extendedWordChars = /^[A-Za-z\\xC0-\\u02C6\\u02C8-\\u02D7\\u02DE-\\u02FF\\u1E00-\\u1EFF]+$/;\nvar reWhitespace = /\\S/;\nvar wordDiff = new\n/*istanbul ignore start*/\n_base\n/*istanbul ignore end*/\n[\n/*istanbul ignore start*/\n\"default\"\n/*istanbul ignore end*/\n]();\n\n/*istanbul ignore start*/\nexports.wordDiff = wordDiff;\n\n/*istanbul ignore end*/\nwordDiff.equals = function (left, right) {\n if (this.options.ignoreCase) {\n left = left.toLowerCase();\n right = right.toLowerCase();\n }\n\n return left === right || this.options.ignoreWhitespace && !reWhitespace.test(left) && !reWhitespace.test(right);\n};\n\nwordDiff.tokenize = function (value) {\n // All whitespace symbols except newline group into one token, each newline - in separate token\n var tokens = value.split(/([^\\S\\r\\n]+|[()[\\]{}'\"\\r\\n]|\\b)/); // Join the boundary splits that we do not consider to be boundaries. This is primarily the extended Latin character set.\n\n for (var i = 0; i < tokens.length - 1; i++) {\n // If we have an empty string in the next field and we have only word chars before and after, merge\n if (!tokens[i + 1] && tokens[i + 2] && extendedWordChars.test(tokens[i]) && extendedWordChars.test(tokens[i + 2])) {\n tokens[i] += tokens[i + 2];\n tokens.splice(i + 1, 2);\n i--;\n }\n }\n\n return tokens;\n};\n\nfunction diffWords(oldStr, newStr, options) {\n options =\n /*istanbul ignore start*/\n (0,\n /*istanbul ignore end*/\n\n /*istanbul ignore start*/\n _params\n /*istanbul ignore end*/\n .\n /*istanbul ignore start*/\n generateOptions)\n /*istanbul ignore end*/\n (options, {\n ignoreWhitespace: true\n });\n return wordDiff.diff(oldStr, newStr, options);\n}\n\nfunction diffWordsWithSpace(oldStr, newStr, options) {\n return wordDiff.diff(oldStr, newStr, options);\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kaWZmL3dvcmQuanMiXSwibmFtZXMiOlsiZXh0ZW5kZWRXb3JkQ2hhcnMiLCJyZVdoaXRlc3BhY2UiLCJ3b3JkRGlmZiIsIkRpZmYiLCJlcXVhbHMiLCJsZWZ0IiwicmlnaHQiLCJvcHRpb25zIiwiaWdub3JlQ2FzZSIsInRvTG93ZXJDYXNlIiwiaWdub3JlV2hpdGVzcGFjZSIsInRlc3QiLCJ0b2tlbml6ZSIsInZhbHVlIiwidG9rZW5zIiwic3BsaXQiLCJpIiwibGVuZ3RoIiwic3BsaWNlIiwiZGlmZldvcmRzIiwib2xkU3RyIiwibmV3U3RyIiwiZ2VuZXJhdGVPcHRpb25zIiwiZGlmZiIsImRpZmZXb3Jkc1dpdGhTcGFjZSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBOztBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7Ozs7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBTUEsaUJBQWlCLEdBQUcsK0RBQTFCO0FBRUEsSUFBTUMsWUFBWSxHQUFHLElBQXJCO0FBRU8sSUFBTUMsUUFBUSxHQUFHO0FBQUlDO0FBQUFBO0FBQUFBO0FBQUFBO0FBQUFBO0FBQUFBO0FBQUFBO0FBQUFBLENBQUosRUFBakI7Ozs7OztBQUNQRCxRQUFRLENBQUNFLE1BQVQsR0FBa0IsVUFBU0MsSUFBVCxFQUFlQyxLQUFmLEVBQXNCO0FBQ3RDLE1BQUksS0FBS0MsT0FBTCxDQUFhQyxVQUFqQixFQUE2QjtBQUMzQkgsSUFBQUEsSUFBSSxHQUFHQSxJQUFJLENBQUNJLFdBQUwsRUFBUDtBQUNBSCxJQUFBQSxLQUFLLEdBQUdBLEtBQUssQ0FBQ0csV0FBTixFQUFSO0FBQ0Q7O0FBQ0QsU0FBT0osSUFBSSxLQUFLQyxLQUFULElBQW1CLEtBQUtDLE9BQUwsQ0FBYUcsZ0JBQWIsSUFBaUMsQ0FBQ1QsWUFBWSxDQUFDVSxJQUFiLENBQWtCTixJQUFsQixDQUFsQyxJQUE2RCxDQUFDSixZQUFZLENBQUNVLElBQWIsQ0FBa0JMLEtBQWxCLENBQXhGO0FBQ0QsQ0FORDs7QUFPQUosUUFBUSxDQUFDVSxRQUFULEdBQW9CLFVBQVNDLEtBQVQsRUFBZ0I7QUFDbEM7QUFDQSxNQUFJQyxNQUFNLEdBQUdELEtBQUssQ0FBQ0UsS0FBTixDQUFZLGlDQUFaLENBQWIsQ0FGa0MsQ0FJbEM7O0FBQ0EsT0FBSyxJQUFJQyxDQUFDLEdBQUcsQ0FBYixFQUFnQkEsQ0FBQyxHQUFHRixNQUFNLENBQUNHLE1BQVAsR0FBZ0IsQ0FBcEMsRUFBdUNELENBQUMsRUFBeEMsRUFBNEM7QUFDMUM7QUFDQSxRQUFJLENBQUNGLE1BQU0sQ0FBQ0UsQ0FBQyxHQUFHLENBQUwsQ0FBUCxJQUFrQkYsTUFBTSxDQUFDRSxDQUFDLEdBQUcsQ0FBTCxDQUF4QixJQUNLaEIsaUJBQWlCLENBQUNXLElBQWxCLENBQXVCRyxNQUFNLENBQUNFLENBQUQsQ0FBN0IsQ0FETCxJQUVLaEIsaUJBQWlCLENBQUNXLElBQWxCLENBQXVCRyxNQUFNLENBQUNFLENBQUMsR0FBRyxDQUFMLENBQTdCLENBRlQsRUFFZ0Q7QUFDOUNGLE1BQUFBLE1BQU0sQ0FBQ0UsQ0FBRCxDQUFOLElBQWFGLE1BQU0sQ0FBQ0UsQ0FBQyxHQUFHLENBQUwsQ0FBbkI7QUFDQUYsTUFBQUEsTUFBTSxDQUFDSSxNQUFQLENBQWNGLENBQUMsR0FBRyxDQUFsQixFQUFxQixDQUFyQjtBQUNBQSxNQUFBQSxDQUFDO0FBQ0Y7QUFDRjs7QUFFRCxTQUFPRixNQUFQO0FBQ0QsQ0FqQkQ7O0FBbUJPLFNBQVNLLFNBQVQsQ0FBbUJDLE1BQW5CLEVBQTJCQyxNQUEzQixFQUFtQ2QsT0FBbkMsRUFBNEM7QUFDakRBLEVBQUFBLE9BQU87QUFBRztBQUFBO0FBQUE7O0FBQUFlO0FBQUFBO0FBQUFBO0FBQUFBO0FBQUFBO0FBQUFBO0FBQUE7QUFBQSxHQUFnQmYsT0FBaEIsRUFBeUI7QUFBQ0csSUFBQUEsZ0JBQWdCLEVBQUU7QUFBbkIsR0FBekIsQ0FBVjtBQUNBLFNBQU9SLFFBQVEsQ0FBQ3FCLElBQVQsQ0FBY0gsTUFBZCxFQUFzQkMsTUFBdEIsRUFBOEJkLE9BQTlCLENBQVA7QUFDRDs7QUFFTSxTQUFTaUIsa0JBQVQsQ0FBNEJKLE1BQTVCLEVBQW9DQyxNQUFwQyxFQUE0Q2QsT0FBNUMsRUFBcUQ7QUFDMUQsU0FBT0wsUUFBUSxDQUFDcUIsSUFBVCxDQUFjSCxNQUFkLEVBQXNCQyxNQUF0QixFQUE4QmQsT0FBOUIsQ0FBUDtBQUNEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IERpZmYgZnJvbSAnLi9iYXNlJztcbmltcG9ydCB7Z2VuZXJhdGVPcHRpb25zfSBmcm9tICcuLi91dGlsL3BhcmFtcyc7XG5cbi8vIEJhc2VkIG9uIGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0xhdGluX3NjcmlwdF9pbl9Vbmljb2RlXG4vL1xuLy8gUmFuZ2VzIGFuZCBleGNlcHRpb25zOlxuLy8gTGF0aW4tMSBTdXBwbGVtZW50LCAwMDgw4oCTMDBGRlxuLy8gIC0gVSswMEQ3ICDDlyBNdWx0aXBsaWNhdGlvbiBzaWduXG4vLyAgLSBVKzAwRjcgIMO3IERpdmlzaW9uIHNpZ25cbi8vIExhdGluIEV4dGVuZGVkLUEsIDAxMDDigJMwMTdGXG4vLyBMYXRpbiBFeHRlbmRlZC1CLCAwMTgw4oCTMDI0RlxuLy8gSVBBIEV4dGVuc2lvbnMsIDAyNTDigJMwMkFGXG4vLyBTcGFjaW5nIE1vZGlmaWVyIExldHRlcnMsIDAyQjDigJMwMkZGXG4vLyAgLSBVKzAyQzcgIMuHICYjNzExOyAgQ2Fyb25cbi8vICAtIFUrMDJEOCAgy5ggJiM3Mjg7ICBCcmV2ZVxuLy8gIC0gVSswMkQ5ICDLmSAmIzcyOTsgIERvdCBBYm92ZVxuLy8gIC0gVSswMkRBICDLmiAmIzczMDsgIFJpbmcgQWJvdmVcbi8vICAtIFUrMDJEQiAgy5sgJiM3MzE7ICBPZ29uZWtcbi8vICAtIFUrMDJEQyAgy5wgJiM3MzI7ICBTbWFsbCBUaWxkZVxuLy8gIC0gVSswMkREICDLnSAmIzczMzsgIERvdWJsZSBBY3V0ZSBBY2NlbnRcbi8vIExhdGluIEV4dGVuZGVkIEFkZGl0aW9uYWwsIDFFMDDigJMxRUZGXG5jb25zdCBleHRlbmRlZFdvcmRDaGFycyA9IC9eW2EtekEtWlxcdXtDMH0tXFx1e0ZGfVxcdXtEOH0tXFx1e0Y2fVxcdXtGOH0tXFx1ezJDNn1cXHV7MkM4fS1cXHV7MkQ3fVxcdXsyREV9LVxcdXsyRkZ9XFx1ezFFMDB9LVxcdXsxRUZGfV0rJC91O1xuXG5jb25zdCByZVdoaXRlc3BhY2UgPSAvXFxTLztcblxuZXhwb3J0IGNvbnN0IHdvcmREaWZmID0gbmV3IERpZmYoKTtcbndvcmREaWZmLmVxdWFscyA9IGZ1bmN0aW9uKGxlZnQsIHJpZ2h0KSB7XG4gIGlmICh0aGlzLm9wdGlvbnMuaWdub3JlQ2FzZSkge1xuICAgIGxlZnQgPSBsZWZ0LnRvTG93ZXJDYXNlKCk7XG4gICAgcmlnaHQgPSByaWdodC50b0xvd2VyQ2FzZSgpO1xuICB9XG4gIHJldHVybiBsZWZ0ID09PSByaWdodCB8fCAodGhpcy5vcHRpb25zLmlnbm9yZVdoaXRlc3BhY2UgJiYgIXJlV2hpdGVzcGFjZS50ZXN0KGxlZnQpICYmICFyZVdoaXRlc3BhY2UudGVzdChyaWdodCkpO1xufTtcbndvcmREaWZmLnRva2VuaXplID0gZnVuY3Rpb24odmFsdWUpIHtcbiAgLy8gQWxsIHdoaXRlc3BhY2Ugc3ltYm9scyBleGNlcHQgbmV3bGluZSBncm91cCBpbnRvIG9uZSB0b2tlbiwgZWFjaCBuZXdsaW5lIC0gaW4gc2VwYXJhdGUgdG9rZW5cbiAgbGV0IHRva2VucyA9IHZhbHVlLnNwbGl0KC8oW15cXFNcXHJcXG5dK3xbKClbXFxde30nXCJcXHJcXG5dfFxcYikvKTtcblxuICAvLyBKb2luIHRoZSBib3VuZGFyeSBzcGxpdHMgdGhhdCB3ZSBkbyBub3QgY29uc2lkZXIgdG8gYmUgYm91bmRhcmllcy4gVGhpcyBpcyBwcmltYXJpbHkgdGhlIGV4dGVuZGVkIExhdGluIGNoYXJhY3RlciBzZXQuXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgdG9rZW5zLmxlbmd0aCAtIDE7IGkrKykge1xuICAgIC8vIElmIHdlIGhhdmUgYW4gZW1wdHkgc3RyaW5nIGluIHRoZSBuZXh0IGZpZWxkIGFuZCB3ZSBoYXZlIG9ubHkgd29yZCBjaGFycyBiZWZvcmUgYW5kIGFmdGVyLCBtZXJnZVxuICAgIGlmICghdG9rZW5zW2kgKyAxXSAmJiB0b2tlbnNbaSArIDJdXG4gICAgICAgICAgJiYgZXh0ZW5kZWRXb3JkQ2hhcnMudGVzdCh0b2tlbnNbaV0pXG4gICAgICAgICAgJiYgZXh0ZW5kZWRXb3JkQ2hhcnMudGVzdCh0b2tlbnNbaSArIDJdKSkge1xuICAgICAgdG9rZW5zW2ldICs9IHRva2Vuc1tpICsgMl07XG4gICAgICB0b2tlbnMuc3BsaWNlKGkgKyAxLCAyKTtcbiAgICAgIGktLTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gdG9rZW5zO1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIGRpZmZXb3JkcyhvbGRTdHIsIG5ld1N0ciwgb3B0aW9ucykge1xuICBvcHRpb25zID0gZ2VuZXJhdGVPcHRpb25zKG9wdGlvbnMsIHtpZ25vcmVXaGl0ZXNwYWNlOiB0cnVlfSk7XG4gIHJldHVybiB3b3JkRGlmZi5kaWZmKG9sZFN0ciwgbmV3U3RyLCBvcHRpb25zKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRpZmZXb3Jkc1dpdGhTcGFjZShvbGRTdHIsIG5ld1N0ciwgb3B0aW9ucykge1xuICByZXR1cm4gd29yZERpZmYuZGlmZihvbGRTdHIsIG5ld1N0ciwgb3B0aW9ucyk7XG59XG4iXX0=\n","/*istanbul ignore start*/\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"Diff\", {\n enumerable: true,\n get: function get() {\n return _base[\"default\"];\n }\n});\nObject.defineProperty(exports, \"diffChars\", {\n enumerable: true,\n get: function get() {\n return _character.diffChars;\n }\n});\nObject.defineProperty(exports, \"diffWords\", {\n enumerable: true,\n get: function get() {\n return _word.diffWords;\n }\n});\nObject.defineProperty(exports, \"diffWordsWithSpace\", {\n enumerable: true,\n get: function get() {\n return _word.diffWordsWithSpace;\n }\n});\nObject.defineProperty(exports, \"diffLines\", {\n enumerable: true,\n get: function get() {\n return _line.diffLines;\n }\n});\nObject.defineProperty(exports, \"diffTrimmedLines\", {\n enumerable: true,\n get: function get() {\n return _line.diffTrimmedLines;\n }\n});\nObject.defineProperty(exports, \"diffSentences\", {\n enumerable: true,\n get: function get() {\n return _sentence.diffSentences;\n }\n});\nObject.defineProperty(exports, \"diffCss\", {\n enumerable: true,\n get: function get() {\n return _css.diffCss;\n }\n});\nObject.defineProperty(exports, \"diffJson\", {\n enumerable: true,\n get: function get() {\n return _json.diffJson;\n }\n});\nObject.defineProperty(exports, \"canonicalize\", {\n enumerable: true,\n get: function get() {\n return _json.canonicalize;\n }\n});\nObject.defineProperty(exports, \"diffArrays\", {\n enumerable: true,\n get: function get() {\n return _array.diffArrays;\n }\n});\nObject.defineProperty(exports, \"applyPatch\", {\n enumerable: true,\n get: function get() {\n return _apply.applyPatch;\n }\n});\nObject.defineProperty(exports, \"applyPatches\", {\n enumerable: true,\n get: function get() {\n return _apply.applyPatches;\n }\n});\nObject.defineProperty(exports, \"parsePatch\", {\n enumerable: true,\n get: function get() {\n return _parse.parsePatch;\n }\n});\nObject.defineProperty(exports, \"merge\", {\n enumerable: true,\n get: function get() {\n return _merge.merge;\n }\n});\nObject.defineProperty(exports, \"reversePatch\", {\n enumerable: true,\n get: function get() {\n return _reverse.reversePatch;\n }\n});\nObject.defineProperty(exports, \"structuredPatch\", {\n enumerable: true,\n get: function get() {\n return _create.structuredPatch;\n }\n});\nObject.defineProperty(exports, \"createTwoFilesPatch\", {\n enumerable: true,\n get: function get() {\n return _create.createTwoFilesPatch;\n }\n});\nObject.defineProperty(exports, \"createPatch\", {\n enumerable: true,\n get: function get() {\n return _create.createPatch;\n }\n});\nObject.defineProperty(exports, \"formatPatch\", {\n enumerable: true,\n get: function get() {\n return _create.formatPatch;\n }\n});\nObject.defineProperty(exports, \"convertChangesToDMP\", {\n enumerable: true,\n get: function get() {\n return _dmp.convertChangesToDMP;\n }\n});\nObject.defineProperty(exports, \"convertChangesToXML\", {\n enumerable: true,\n get: function get() {\n return _xml.convertChangesToXML;\n }\n});\n\n/*istanbul ignore end*/\nvar\n/*istanbul ignore start*/\n_base = _interopRequireDefault(require(\"./diff/base\"))\n/*istanbul ignore end*/\n;\n\nvar\n/*istanbul ignore start*/\n_character = require(\"./diff/character\")\n/*istanbul ignore end*/\n;\n\nvar\n/*istanbul ignore start*/\n_word = require(\"./diff/word\")\n/*istanbul ignore end*/\n;\n\nvar\n/*istanbul ignore start*/\n_line = require(\"./diff/line\")\n/*istanbul ignore end*/\n;\n\nvar\n/*istanbul ignore start*/\n_sentence = require(\"./diff/sentence\")\n/*istanbul ignore end*/\n;\n\nvar\n/*istanbul ignore start*/\n_css = require(\"./diff/css\")\n/*istanbul ignore end*/\n;\n\nvar\n/*istanbul ignore start*/\n_json = require(\"./diff/json\")\n/*istanbul ignore end*/\n;\n\nvar\n/*istanbul ignore start*/\n_array = require(\"./diff/array\")\n/*istanbul ignore end*/\n;\n\nvar\n/*istanbul ignore start*/\n_apply = require(\"./patch/apply\")\n/*istanbul ignore end*/\n;\n\nvar\n/*istanbul ignore start*/\n_parse = require(\"./patch/parse\")\n/*istanbul ignore end*/\n;\n\nvar\n/*istanbul ignore start*/\n_merge = require(\"./patch/merge\")\n/*istanbul ignore end*/\n;\n\nvar\n/*istanbul ignore start*/\n_reverse = require(\"./patch/reverse\")\n/*istanbul ignore end*/\n;\n\nvar\n/*istanbul ignore start*/\n_create = require(\"./patch/create\")\n/*istanbul ignore end*/\n;\n\nvar\n/*istanbul ignore start*/\n_dmp = require(\"./convert/dmp\")\n/*istanbul ignore end*/\n;\n\nvar\n/*istanbul ignore start*/\n_xml = require(\"./convert/xml\")\n/*istanbul ignore end*/\n;\n\n/*istanbul ignore start*/ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\n/*istanbul ignore end*/\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9pbmRleC5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQWdCQTtBQUFBO0FBQUE7QUFBQTtBQUFBOztBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7O0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTs7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBOztBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7O0FBRUE7QUFBQTtBQUFBO0FBQUE7QUFBQTs7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBOztBQUVBO0FBQUE7QUFBQTtBQUFBO0FBQUE7O0FBRUE7QUFBQTtBQUFBO0FBQUE7QUFBQTs7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBOztBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7O0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTs7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBOztBQUVBO0FBQUE7QUFBQTtBQUFBO0FBQUE7O0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQSIsInNvdXJjZXNDb250ZW50IjpbIi8qIFNlZSBMSUNFTlNFIGZpbGUgZm9yIHRlcm1zIG9mIHVzZSAqL1xuXG4vKlxuICogVGV4dCBkaWZmIGltcGxlbWVudGF0aW9uLlxuICpcbiAqIFRoaXMgbGlicmFyeSBzdXBwb3J0cyB0aGUgZm9sbG93aW5nIEFQSXM6XG4gKiBEaWZmLmRpZmZDaGFyczogQ2hhcmFjdGVyIGJ5IGNoYXJhY3RlciBkaWZmXG4gKiBEaWZmLmRpZmZXb3JkczogV29yZCAoYXMgZGVmaW5lZCBieSBcXGIgcmVnZXgpIGRpZmYgd2hpY2ggaWdub3JlcyB3aGl0ZXNwYWNlXG4gKiBEaWZmLmRpZmZMaW5lczogTGluZSBiYXNlZCBkaWZmXG4gKlxuICogRGlmZi5kaWZmQ3NzOiBEaWZmIHRhcmdldGVkIGF0IENTUyBjb250ZW50XG4gKlxuICogVGhlc2UgbWV0aG9kcyBhcmUgYmFzZWQgb24gdGhlIGltcGxlbWVudGF0aW9uIHByb3Bvc2VkIGluXG4gKiBcIkFuIE8oTkQpIERpZmZlcmVuY2UgQWxnb3JpdGhtIGFuZCBpdHMgVmFyaWF0aW9uc1wiIChNeWVycywgMTk4NikuXG4gKiBodHRwOi8vY2l0ZXNlZXJ4LmlzdC5wc3UuZWR1L3ZpZXdkb2Mvc3VtbWFyeT9kb2k9MTAuMS4xLjQuNjkyN1xuICovXG5pbXBvcnQgRGlmZiBmcm9tICcuL2RpZmYvYmFzZSc7XG5pbXBvcnQge2RpZmZDaGFyc30gZnJvbSAnLi9kaWZmL2NoYXJhY3Rlcic7XG5pbXBvcnQge2RpZmZXb3JkcywgZGlmZldvcmRzV2l0aFNwYWNlfSBmcm9tICcuL2RpZmYvd29yZCc7XG5pbXBvcnQge2RpZmZMaW5lcywgZGlmZlRyaW1tZWRMaW5lc30gZnJvbSAnLi9kaWZmL2xpbmUnO1xuaW1wb3J0IHtkaWZmU2VudGVuY2VzfSBmcm9tICcuL2RpZmYvc2VudGVuY2UnO1xuXG5pbXBvcnQge2RpZmZDc3N9IGZyb20gJy4vZGlmZi9jc3MnO1xuaW1wb3J0IHtkaWZmSnNvbiwgY2Fub25pY2FsaXplfSBmcm9tICcuL2RpZmYvanNvbic7XG5cbmltcG9ydCB7ZGlmZkFycmF5c30gZnJvbSAnLi9kaWZmL2FycmF5JztcblxuaW1wb3J0IHthcHBseVBhdGNoLCBhcHBseVBhdGNoZXN9IGZyb20gJy4vcGF0Y2gvYXBwbHknO1xuaW1wb3J0IHtwYXJzZVBhdGNofSBmcm9tICcuL3BhdGNoL3BhcnNlJztcbmltcG9ydCB7bWVyZ2V9IGZyb20gJy4vcGF0Y2gvbWVyZ2UnO1xuaW1wb3J0IHtyZXZlcnNlUGF0Y2h9IGZyb20gJy4vcGF0Y2gvcmV2ZXJzZSc7XG5pbXBvcnQge3N0cnVjdHVyZWRQYXRjaCwgY3JlYXRlVHdvRmlsZXNQYXRjaCwgY3JlYXRlUGF0Y2gsIGZvcm1hdFBhdGNofSBmcm9tICcuL3BhdGNoL2NyZWF0ZSc7XG5cbmltcG9ydCB7Y29udmVydENoYW5nZXNUb0RNUH0gZnJvbSAnLi9jb252ZXJ0L2RtcCc7XG5pbXBvcnQge2NvbnZlcnRDaGFuZ2VzVG9YTUx9IGZyb20gJy4vY29udmVydC94bWwnO1xuXG5leHBvcnQge1xuICBEaWZmLFxuXG4gIGRpZmZDaGFycyxcbiAgZGlmZldvcmRzLFxuICBkaWZmV29yZHNXaXRoU3BhY2UsXG4gIGRpZmZMaW5lcyxcbiAgZGlmZlRyaW1tZWRMaW5lcyxcbiAgZGlmZlNlbnRlbmNlcyxcblxuICBkaWZmQ3NzLFxuICBkaWZmSnNvbixcblxuICBkaWZmQXJyYXlzLFxuXG4gIHN0cnVjdHVyZWRQYXRjaCxcbiAgY3JlYXRlVHdvRmlsZXNQYXRjaCxcbiAgY3JlYXRlUGF0Y2gsXG4gIGZvcm1hdFBhdGNoLFxuICBhcHBseVBhdGNoLFxuICBhcHBseVBhdGNoZXMsXG4gIHBhcnNlUGF0Y2gsXG4gIG1lcmdlLFxuICByZXZlcnNlUGF0Y2gsXG4gIGNvbnZlcnRDaGFuZ2VzVG9ETVAsXG4gIGNvbnZlcnRDaGFuZ2VzVG9YTUwsXG4gIGNhbm9uaWNhbGl6ZVxufTtcbiJdfQ==\n","/*istanbul ignore start*/\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.applyPatch = applyPatch;\nexports.applyPatches = applyPatches;\n\n/*istanbul ignore end*/\nvar\n/*istanbul ignore start*/\n_parse = require(\"./parse\")\n/*istanbul ignore end*/\n;\n\nvar\n/*istanbul ignore start*/\n_distanceIterator = _interopRequireDefault(require(\"../util/distance-iterator\"))\n/*istanbul ignore end*/\n;\n\n/*istanbul ignore start*/ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\n/*istanbul ignore end*/\nfunction applyPatch(source, uniDiff) {\n /*istanbul ignore start*/\n var\n /*istanbul ignore end*/\n options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n\n if (typeof uniDiff === 'string') {\n uniDiff =\n /*istanbul ignore start*/\n (0,\n /*istanbul ignore end*/\n\n /*istanbul ignore start*/\n _parse\n /*istanbul ignore end*/\n .\n /*istanbul ignore start*/\n parsePatch)\n /*istanbul ignore end*/\n (uniDiff);\n }\n\n if (Array.isArray(uniDiff)) {\n if (uniDiff.length > 1) {\n throw new Error('applyPatch only works with a single input.');\n }\n\n uniDiff = uniDiff[0];\n } // Apply the diff to the input\n\n\n var lines = source.split(/\\r\\n|[\\n\\v\\f\\r\\x85]/),\n delimiters = source.match(/\\r\\n|[\\n\\v\\f\\r\\x85]/g) || [],\n hunks = uniDiff.hunks,\n compareLine = options.compareLine || function (lineNumber, line, operation, patchContent)\n /*istanbul ignore start*/\n {\n return (\n /*istanbul ignore end*/\n line === patchContent\n );\n },\n errorCount = 0,\n fuzzFactor = options.fuzzFactor || 0,\n minLine = 0,\n offset = 0,\n removeEOFNL,\n addEOFNL;\n /**\n * Checks if the hunk exactly fits on the provided location\n */\n\n\n function hunkFits(hunk, toPos) {\n for (var j = 0; j < hunk.lines.length; j++) {\n var line = hunk.lines[j],\n operation = line.length > 0 ? line[0] : ' ',\n content = line.length > 0 ? line.substr(1) : line;\n\n if (operation === ' ' || operation === '-') {\n // Context sanity check\n if (!compareLine(toPos + 1, lines[toPos], operation, content)) {\n errorCount++;\n\n if (errorCount > fuzzFactor) {\n return false;\n }\n }\n\n toPos++;\n }\n }\n\n return true;\n } // Search best fit offsets for each hunk based on the previous ones\n\n\n for (var i = 0; i < hunks.length; i++) {\n var hunk = hunks[i],\n maxLine = lines.length - hunk.oldLines,\n localOffset = 0,\n toPos = offset + hunk.oldStart - 1;\n var iterator =\n /*istanbul ignore start*/\n (0,\n /*istanbul ignore end*/\n\n /*istanbul ignore start*/\n _distanceIterator\n /*istanbul ignore end*/\n [\n /*istanbul ignore start*/\n \"default\"\n /*istanbul ignore end*/\n ])(toPos, minLine, maxLine);\n\n for (; localOffset !== undefined; localOffset = iterator()) {\n if (hunkFits(hunk, toPos + localOffset)) {\n hunk.offset = offset += localOffset;\n break;\n }\n }\n\n if (localOffset === undefined) {\n return false;\n } // Set lower text limit to end of the current hunk, so next ones don't try\n // to fit over already patched text\n\n\n minLine = hunk.offset + hunk.oldStart + hunk.oldLines;\n } // Apply patch hunks\n\n\n var diffOffset = 0;\n\n for (var _i = 0; _i < hunks.length; _i++) {\n var _hunk = hunks[_i],\n _toPos = _hunk.oldStart + _hunk.offset + diffOffset - 1;\n\n diffOffset += _hunk.newLines - _hunk.oldLines;\n\n for (var j = 0; j < _hunk.lines.length; j++) {\n var line = _hunk.lines[j],\n operation = line.length > 0 ? line[0] : ' ',\n content = line.length > 0 ? line.substr(1) : line,\n delimiter = _hunk.linedelimiters && _hunk.linedelimiters[j] || '\\n';\n\n if (operation === ' ') {\n _toPos++;\n } else if (operation === '-') {\n lines.splice(_toPos, 1);\n delimiters.splice(_toPos, 1);\n /* istanbul ignore else */\n } else if (operation === '+') {\n lines.splice(_toPos, 0, content);\n delimiters.splice(_toPos, 0, delimiter);\n _toPos++;\n } else if (operation === '\\\\') {\n var previousOperation = _hunk.lines[j - 1] ? _hunk.lines[j - 1][0] : null;\n\n if (previousOperation === '+') {\n removeEOFNL = true;\n } else if (previousOperation === '-') {\n addEOFNL = true;\n }\n }\n }\n } // Handle EOFNL insertion/removal\n\n\n if (removeEOFNL) {\n while (!lines[lines.length - 1]) {\n lines.pop();\n delimiters.pop();\n }\n } else if (addEOFNL) {\n lines.push('');\n delimiters.push('\\n');\n }\n\n for (var _k = 0; _k < lines.length - 1; _k++) {\n lines[_k] = lines[_k] + delimiters[_k];\n }\n\n return lines.join('');\n} // Wrapper that supports multiple file patches via callbacks.\n\n\nfunction applyPatches(uniDiff, options) {\n if (typeof uniDiff === 'string') {\n uniDiff =\n /*istanbul ignore start*/\n (0,\n /*istanbul ignore end*/\n\n /*istanbul ignore start*/\n _parse\n /*istanbul ignore end*/\n .\n /*istanbul ignore start*/\n parsePatch)\n /*istanbul ignore end*/\n (uniDiff);\n }\n\n var currentIndex = 0;\n\n function processIndex() {\n var index = uniDiff[currentIndex++];\n\n if (!index) {\n return options.complete();\n }\n\n options.loadFile(index, function (err, data) {\n if (err) {\n return options.complete(err);\n }\n\n var updatedContent = applyPatch(data, index, options);\n options.patched(index, updatedContent, function (err) {\n if (err) {\n return options.complete(err);\n }\n\n processIndex();\n });\n });\n }\n\n processIndex();\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wYXRjaC9hcHBseS5qcyJdLCJuYW1lcyI6WyJhcHBseVBhdGNoIiwic291cmNlIiwidW5pRGlmZiIsIm9wdGlvbnMiLCJwYXJzZVBhdGNoIiwiQXJyYXkiLCJpc0FycmF5IiwibGVuZ3RoIiwiRXJyb3IiLCJsaW5lcyIsInNwbGl0IiwiZGVsaW1pdGVycyIsIm1hdGNoIiwiaHVua3MiLCJjb21wYXJlTGluZSIsImxpbmVOdW1iZXIiLCJsaW5lIiwib3BlcmF0aW9uIiwicGF0Y2hDb250ZW50IiwiZXJyb3JDb3VudCIsImZ1enpGYWN0b3IiLCJtaW5MaW5lIiwib2Zmc2V0IiwicmVtb3ZlRU9GTkwiLCJhZGRFT0ZOTCIsImh1bmtGaXRzIiwiaHVuayIsInRvUG9zIiwiaiIsImNvbnRlbnQiLCJzdWJzdHIiLCJpIiwibWF4TGluZSIsIm9sZExpbmVzIiwibG9jYWxPZmZzZXQiLCJvbGRTdGFydCIsIml0ZXJhdG9yIiwiZGlzdGFuY2VJdGVyYXRvciIsInVuZGVmaW5lZCIsImRpZmZPZmZzZXQiLCJuZXdMaW5lcyIsImRlbGltaXRlciIsImxpbmVkZWxpbWl0ZXJzIiwic3BsaWNlIiwicHJldmlvdXNPcGVyYXRpb24iLCJwb3AiLCJwdXNoIiwiX2siLCJqb2luIiwiYXBwbHlQYXRjaGVzIiwiY3VycmVudEluZGV4IiwicHJvY2Vzc0luZGV4IiwiaW5kZXgiLCJjb21wbGV0ZSIsImxvYWRGaWxlIiwiZXJyIiwiZGF0YSIsInVwZGF0ZWRDb250ZW50IiwicGF0Y2hlZCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7O0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTs7Ozs7QUFFTyxTQUFTQSxVQUFULENBQW9CQyxNQUFwQixFQUE0QkMsT0FBNUIsRUFBbUQ7QUFBQTtBQUFBO0FBQUE7QUFBZEMsRUFBQUEsT0FBYyx1RUFBSixFQUFJOztBQUN4RCxNQUFJLE9BQU9ELE9BQVAsS0FBbUIsUUFBdkIsRUFBaUM7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QUFBO0FBQUFBO0FBQUE7QUFBQSxLQUFXRixPQUFYLENBQVY7QUFDRDs7QUFFRCxNQUFJZ0QsWUFBWSxHQUFHLENBQW5COztBQUNBLFdBQVNDLFlBQVQsR0FBd0I7QUFDdEIsUUFBSUMsS0FBSyxHQUFHbEQsT0FBTyxDQUFDZ0QsWUFBWSxFQUFiLENBQW5COztBQUNBLFFBQUksQ0FBQ0UsS0FBTCxFQUFZO0FBQ1YsYUFBT2pELE9BQU8sQ0FBQ2tELFFBQVIsRUFBUDtBQUNEOztBQUVEbEQsSUFBQUEsT0FBTyxDQUFDbUQsUUFBUixDQUFpQkYsS0FBakIsRUFBd0IsVUFBU0csR0FBVCxFQUFjQyxJQUFkLEVBQW9CO0FBQzFDLFVBQUlELEdBQUosRUFBUztBQUNQLGVBQU9wRCxPQUFPLENBQUNrRCxRQUFSLENBQWlCRSxHQUFqQixDQUFQO0FBQ0Q7O0FBRUQsVUFBSUUsY0FBYyxHQUFHekQsVUFBVSxDQUFDd0QsSUFBRCxFQUFPSixLQUFQLEVBQWNqRCxPQUFkLENBQS9CO0FBQ0FBLE1BQUFBLE9BQU8sQ0FBQ3VELE9BQVIsQ0FBZ0JOLEtBQWhCLEVBQXVCSyxjQUF2QixFQUF1QyxVQUFTRixHQUFULEVBQWM7QUFDbkQsWUFBSUEsR0FBSixFQUFTO0FBQ1AsaUJBQU9wRCxPQUFPLENBQUNrRCxRQUFSLENBQWlCRSxHQUFqQixDQUFQO0FBQ0Q7O0FBRURKLFFBQUFBLFlBQVk7QUFDYixPQU5EO0FBT0QsS0FiRDtBQWNEOztBQUNEQSxFQUFBQSxZQUFZO0FBQ2IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge3BhcnNlUGF0Y2h9IGZyb20gJy4vcGFyc2UnO1xuaW1wb3J0IGRpc3RhbmNlSXRlcmF0b3IgZnJvbSAnLi4vdXRpbC9kaXN0YW5jZS1pdGVyYXRvcic7XG5cbmV4cG9ydCBmdW5jdGlvbiBhcHBseVBhdGNoKHNvdXJjZSwgdW5pRGlmZiwgb3B0aW9ucyA9IHt9KSB7XG4gIGlmICh0eXBlb2YgdW5pRGlmZiA9PT0gJ3N0cmluZycpIHtcbiAgICB1bmlEaWZmID0gcGFyc2VQYXRjaCh1bmlEaWZmKTtcbiAgfVxuXG4gIGlmIChBcnJheS5pc0FycmF5KHVuaURpZmYpKSB7XG4gICAgaWYgKHVuaURpZmYubGVuZ3RoID4gMSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdhcHBseVBhdGNoIG9ubHkgd29ya3Mgd2l0aCBhIHNpbmdsZSBpbnB1dC4nKTtcbiAgICB9XG5cbiAgICB1bmlEaWZmID0gdW5pRGlmZlswXTtcbiAgfVxuXG4gIC8vIEFwcGx5IHRoZSBkaWZmIHRvIHRoZSBpbnB1dFxuICBsZXQgbGluZXMgPSBzb3VyY2Uuc3BsaXQoL1xcclxcbnxbXFxuXFx2XFxmXFxyXFx4ODVdLyksXG4gICAgICBkZWxpbWl0ZXJzID0gc291cmNlLm1hdGNoKC9cXHJcXG58W1xcblxcdlxcZlxcclxceDg1XS9nKSB8fCBbXSxcbiAgICAgIGh1bmtzID0gdW5pRGlmZi5odW5rcyxcblxuICAgICAgY29tcGFyZUxpbmUgPSBvcHRpb25zLmNvbXBhcmVMaW5lIHx8ICgobGluZU51bWJlciwgbGluZSwgb3BlcmF0aW9uLCBwYXRjaENvbnRlbnQpID0+IGxpbmUgPT09IHBhdGNoQ29udGVudCksXG4gICAgICBlcnJvckNvdW50ID0gMCxcbiAgICAgIGZ1enpGYWN0b3IgPSBvcHRpb25zLmZ1enpGYWN0b3IgfHwgMCxcbiAgICAgIG1pbkxpbmUgPSAwLFxuICAgICAgb2Zmc2V0ID0gMCxcblxuICAgICAgcmVtb3ZlRU9GTkwsXG4gICAgICBhZGRFT0ZOTDtcblxuICAvKipcbiAgICogQ2hlY2tzIGlmIHRoZSBodW5rIGV4YWN0bHkgZml0cyBvbiB0aGUgcHJvdmlkZWQgbG9jYXRpb25cbiAgICovXG4gIGZ1bmN0aW9uIGh1bmtGaXRzKGh1bmssIHRvUG9zKSB7XG4gICAgZm9yIChsZXQgaiA9IDA7IGogPCBodW5rLmxpbmVzLmxlbmd0aDsgaisrKSB7XG4gICAgICBsZXQgbGluZSA9IGh1bmsubGluZXNbal0sXG4gICAgICAgICAgb3BlcmF0aW9uID0gKGxpbmUubGVuZ3RoID4gMCA/IGxpbmVbMF0gOiAnICcpLFxuICAgICAgICAgIGNvbnRlbnQgPSAobGluZS5sZW5ndGggPiAwID8gbGluZS5zdWJzdHIoMSkgOiBsaW5lKTtcblxuICAgICAgaWYgKG9wZXJhdGlvbiA9PT0gJyAnIHx8IG9wZXJhdGlvbiA9PT0gJy0nKSB7XG4gICAgICAgIC8vIENvbnRleHQgc2FuaXR5IGNoZWNrXG4gICAgICAgIGlmICghY29tcGFyZUxpbmUodG9Qb3MgKyAxLCBsaW5lc1t0b1Bvc10sIG9wZXJhdGlvbiwgY29udGVudCkpIHtcbiAgICAgICAgICBlcnJvckNvdW50Kys7XG5cbiAgICAgICAgICBpZiAoZXJyb3JDb3VudCA+IGZ1enpGYWN0b3IpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdG9Qb3MrKztcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIC8vIFNlYXJjaCBiZXN0IGZpdCBvZmZzZXRzIGZvciBlYWNoIGh1bmsgYmFzZWQgb24gdGhlIHByZXZpb3VzIG9uZXNcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBodW5rcy5sZW5ndGg7IGkrKykge1xuICAgIGxldCBodW5rID0gaHVua3NbaV0sXG4gICAgICAgIG1heExpbmUgPSBsaW5lcy5sZW5ndGggLSBodW5rLm9sZExpbmVzLFxuICAgICAgICBsb2NhbE9mZnNldCA9IDAsXG4gICAgICAgIHRvUG9zID0gb2Zmc2V0ICsgaHVuay5vbGRTdGFydCAtIDE7XG5cbiAgICBsZXQgaXRlcmF0b3IgPSBkaXN0YW5jZUl0ZXJhdG9yKHRvUG9zLCBtaW5MaW5lLCBtYXhMaW5lKTtcblxuICAgIGZvciAoOyBsb2NhbE9mZnNldCAhPT0gdW5kZWZpbmVkOyBsb2NhbE9mZnNldCA9IGl0ZXJhdG9yKCkpIHtcbiAgICAgIGlmIChodW5rRml0cyhodW5rLCB0b1BvcyArIGxvY2FsT2Zmc2V0KSkge1xuICAgICAgICBodW5rLm9mZnNldCA9IG9mZnNldCArPSBsb2NhbE9mZnNldDtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGxvY2FsT2Zmc2V0ID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICAvLyBTZXQgbG93ZXIgdGV4dCBsaW1pdCB0byBlbmQgb2YgdGhlIGN1cnJlbnQgaHVuaywgc28gbmV4dCBvbmVzIGRvbid0IHRyeVxuICAgIC8vIHRvIGZpdCBvdmVyIGFscmVhZHkgcGF0Y2hlZCB0ZXh0XG4gICAgbWluTGluZSA9IGh1bmsub2Zmc2V0ICsgaHVuay5vbGRTdGFydCArIGh1bmsub2xkTGluZXM7XG4gIH1cblxuICAvLyBBcHBseSBwYXRjaCBodW5rc1xuICBsZXQgZGlmZk9mZnNldCA9IDA7XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgaHVua3MubGVuZ3RoOyBpKyspIHtcbiAgICBsZXQgaHVuayA9IGh1bmtzW2ldLFxuICAgICAgICB0b1BvcyA9IGh1bmsub2xkU3RhcnQgKyBodW5rLm9mZnNldCArIGRpZmZPZmZzZXQgLSAxO1xuICAgIGRpZmZPZmZzZXQgKz0gaHVuay5uZXdMaW5lcyAtIGh1bmsub2xkTGluZXM7XG5cbiAgICBmb3IgKGxldCBqID0gMDsgaiA8IGh1bmsubGluZXMubGVuZ3RoOyBqKyspIHtcbiAgICAgIGxldCBsaW5lID0gaHVuay5saW5lc1tqXSxcbiAgICAgICAgICBvcGVyYXRpb24gPSAobGluZS5sZW5ndGggPiAwID8gbGluZVswXSA6ICcgJyksXG4gICAgICAgICAgY29udGVudCA9IChsaW5lLmxlbmd0aCA+IDAgPyBsaW5lLnN1YnN0cigxKSA6IGxpbmUpLFxuICAgICAgICAgIGRlbGltaXRlciA9IGh1bmsubGluZWRlbGltaXRlcnMgJiYgaHVuay5saW5lZGVsaW1pdGVyc1tqXSB8fCAnXFxuJztcblxuICAgICAgaWYgKG9wZXJhdGlvbiA9PT0gJyAnKSB7XG4gICAgICAgIHRvUG9zKys7XG4gICAgICB9IGVsc2UgaWYgKG9wZXJhdGlvbiA9PT0gJy0nKSB7XG4gICAgICAgIGxpbmVzLnNwbGljZSh0b1BvcywgMSk7XG4gICAgICAgIGRlbGltaXRlcnMuc3BsaWNlKHRvUG9zLCAxKTtcbiAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgICB9IGVsc2UgaWYgKG9wZXJhdGlvbiA9PT0gJysnKSB7XG4gICAgICAgIGxpbmVzLnNwbGljZSh0b1BvcywgMCwgY29udGVudCk7XG4gICAgICAgIGRlbGltaXRlcnMuc3BsaWNlKHRvUG9zLCAwLCBkZWxpbWl0ZXIpO1xuICAgICAgICB0b1BvcysrO1xuICAgICAgfSBlbHNlIGlmIChvcGVyYXRpb24gPT09ICdcXFxcJykge1xuICAgICAgICBsZXQgcHJldmlvdXNPcGVyYXRpb24gPSBodW5rLmxpbmVzW2ogLSAxXSA/IGh1bmsubGluZXNbaiAtIDFdWzBdIDogbnVsbDtcbiAgICAgICAgaWYgKHByZXZpb3VzT3BlcmF0aW9uID09PSAnKycpIHtcbiAgICAgICAgICByZW1vdmVFT0ZOTCA9IHRydWU7XG4gICAgICAgIH0gZWxzZSBpZiAocHJldmlvdXNPcGVyYXRpb24gPT09ICctJykge1xuICAgICAgICAgIGFkZEVPRk5MID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vIEhhbmRsZSBFT0ZOTCBpbnNlcnRpb24vcmVtb3ZhbFxuICBpZiAocmVtb3ZlRU9GTkwpIHtcbiAgICB3aGlsZSAoIWxpbmVzW2xpbmVzLmxlbmd0aCAtIDFdKSB7XG4gICAgICBsaW5lcy5wb3AoKTtcbiAgICAgIGRlbGltaXRlcnMucG9wKCk7XG4gICAgfVxuICB9IGVsc2UgaWYgKGFkZEVPRk5MKSB7XG4gICAgbGluZXMucHVzaCgnJyk7XG4gICAgZGVsaW1pdGVycy5wdXNoKCdcXG4nKTtcbiAgfVxuICBmb3IgKGxldCBfayA9IDA7IF9rIDwgbGluZXMubGVuZ3RoIC0gMTsgX2srKykge1xuICAgIGxpbmVzW19rXSA9IGxpbmVzW19rXSArIGRlbGltaXRlcnNbX2tdO1xuICB9XG4gIHJldHVybiBsaW5lcy5qb2luKCcnKTtcbn1cblxuLy8gV3JhcHBlciB0aGF0IHN1cHBvcnRzIG11bHRpcGxlIGZpbGUgcGF0Y2hlcyB2aWEgY2FsbGJhY2tzLlxuZXhwb3J0IGZ1bmN0aW9uIGFwcGx5UGF0Y2hlcyh1bmlEaWZmLCBvcHRpb25zKSB7XG4gIGlmICh0eXBlb2YgdW5pRGlmZiA9PT0gJ3N0cmluZycpIHtcbiAgICB1bmlEaWZmID0gcGFyc2VQYXRjaCh1bmlEaWZmKTtcbiAgfVxuXG4gIGxldCBjdXJyZW50SW5kZXggPSAwO1xuICBmdW5jdGlvbiBwcm9jZXNzSW5kZXgoKSB7XG4gICAgbGV0IGluZGV4ID0gdW5pRGlmZltjdXJyZW50SW5kZXgrK107XG4gICAgaWYgKCFpbmRleCkge1xuICAgICAgcmV0dXJuIG9wdGlvbnMuY29tcGxldGUoKTtcbiAgICB9XG5cbiAgICBvcHRpb25zLmxvYWRGaWxlKGluZGV4LCBmdW5jdGlvbihlcnIsIGRhdGEpIHtcbiAgICAgIGlmIChlcnIpIHtcbiAgICAgICAgcmV0dXJuIG9wdGlvbnMuY29tcGxldGUoZXJyKTtcbiAgICAgIH1cblxuICAgICAgbGV0IHVwZGF0ZWRDb250ZW50ID0gYXBwbHlQYXRjaChkYXRhLCBpbmRleCwgb3B0aW9ucyk7XG4gICAgICBvcHRpb25zLnBhdGNoZWQoaW5kZXgsIHVwZGF0ZWRDb250ZW50LCBmdW5jdGlvbihlcnIpIHtcbiAgICAgICAgaWYgKGVycikge1xuICAgICAgICAgIHJldHVybiBvcHRpb25zLmNvbXBsZXRlKGVycik7XG4gICAgICAgIH1cblxuICAgICAgICBwcm9jZXNzSW5kZXgoKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG4gIHByb2Nlc3NJbmRleCgpO1xufVxuIl19\n","/*istanbul ignore start*/\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.structuredPatch = structuredPatch;\nexports.formatPatch = formatPatch;\nexports.createTwoFilesPatch = createTwoFilesPatch;\nexports.createPatch = createPatch;\n\n/*istanbul ignore end*/\nvar\n/*istanbul ignore start*/\n_line = require(\"../diff/line\")\n/*istanbul ignore end*/\n;\n\n/*istanbul ignore start*/ function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && Symbol.iterator in Object(iter)) return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\n/*istanbul ignore end*/\nfunction structuredPatch(oldFileName, newFileName, oldStr, newStr, oldHeader, newHeader, options) {\n if (!options) {\n options = {};\n }\n\n if (typeof options.context === 'undefined') {\n options.context = 4;\n }\n\n var diff =\n /*istanbul ignore start*/\n (0,\n /*istanbul ignore end*/\n\n /*istanbul ignore start*/\n _line\n /*istanbul ignore end*/\n .\n /*istanbul ignore start*/\n diffLines)\n /*istanbul ignore end*/\n (oldStr, newStr, options);\n\n if (!diff) {\n return;\n }\n\n diff.push({\n value: '',\n lines: []\n }); // Append an empty value to make cleanup easier\n\n function contextLines(lines) {\n return lines.map(function (entry) {\n return ' ' + entry;\n });\n }\n\n var hunks = [];\n var oldRangeStart = 0,\n newRangeStart = 0,\n curRange = [],\n oldLine = 1,\n newLine = 1;\n\n /*istanbul ignore start*/\n var _loop = function _loop(\n /*istanbul ignore end*/\n i) {\n var current = diff[i],\n lines = current.lines || current.value.replace(/\\n$/, '').split('\\n');\n current.lines = lines;\n\n if (current.added || current.removed) {\n /*istanbul ignore start*/\n var _curRange;\n\n /*istanbul ignore end*/\n // If we have previous context, start with that\n if (!oldRangeStart) {\n var prev = diff[i - 1];\n oldRangeStart = oldLine;\n newRangeStart = newLine;\n\n if (prev) {\n curRange = options.context > 0 ? contextLines(prev.lines.slice(-options.context)) : [];\n oldRangeStart -= curRange.length;\n newRangeStart -= curRange.length;\n }\n } // Output our changes\n\n\n /*istanbul ignore start*/\n\n /*istanbul ignore end*/\n\n /*istanbul ignore start*/\n (_curRange =\n /*istanbul ignore end*/\n curRange).push.apply(\n /*istanbul ignore start*/\n _curRange\n /*istanbul ignore end*/\n ,\n /*istanbul ignore start*/\n _toConsumableArray(\n /*istanbul ignore end*/\n lines.map(function (entry) {\n return (current.added ? '+' : '-') + entry;\n }))); // Track the updated file position\n\n\n if (current.added) {\n newLine += lines.length;\n } else {\n oldLine += lines.length;\n }\n } else {\n // Identical context lines. Track line changes\n if (oldRangeStart) {\n // Close out any changes that have been output (or join overlapping)\n if (lines.length <= options.context * 2 && i < diff.length - 2) {\n /*istanbul ignore start*/\n var _curRange2;\n\n /*istanbul ignore end*/\n // Overlapping\n\n /*istanbul ignore start*/\n\n /*istanbul ignore end*/\n\n /*istanbul ignore start*/\n (_curRange2 =\n /*istanbul ignore end*/\n curRange).push.apply(\n /*istanbul ignore start*/\n _curRange2\n /*istanbul ignore end*/\n ,\n /*istanbul ignore start*/\n _toConsumableArray(\n /*istanbul ignore end*/\n contextLines(lines)));\n } else {\n /*istanbul ignore start*/\n var _curRange3;\n\n /*istanbul ignore end*/\n // end the range and output\n var contextSize = Math.min(lines.length, options.context);\n\n /*istanbul ignore start*/\n\n /*istanbul ignore end*/\n\n /*istanbul ignore start*/\n (_curRange3 =\n /*istanbul ignore end*/\n curRange).push.apply(\n /*istanbul ignore start*/\n _curRange3\n /*istanbul ignore end*/\n ,\n /*istanbul ignore start*/\n _toConsumableArray(\n /*istanbul ignore end*/\n contextLines(lines.slice(0, contextSize))));\n\n var hunk = {\n oldStart: oldRangeStart,\n oldLines: oldLine - oldRangeStart + contextSize,\n newStart: newRangeStart,\n newLines: newLine - newRangeStart + contextSize,\n lines: curRange\n };\n\n if (i >= diff.length - 2 && lines.length <= options.context) {\n // EOF is inside this hunk\n var oldEOFNewline = /\\n$/.test(oldStr);\n var newEOFNewline = /\\n$/.test(newStr);\n var noNlBeforeAdds = lines.length == 0 && curRange.length > hunk.oldLines;\n\n if (!oldEOFNewline && noNlBeforeAdds && oldStr.length > 0) {\n // special case: old has no eol and no trailing context; no-nl can end up before adds\n // however, if the old file is empty, do not output the no-nl line\n curRange.splice(hunk.oldLines, 0, '\\\\ No newline at end of file');\n }\n\n if (!oldEOFNewline && !noNlBeforeAdds || !newEOFNewline) {\n curRange.push('\\\\ No newline at end of file');\n }\n }\n\n hunks.push(hunk);\n oldRangeStart = 0;\n newRangeStart = 0;\n curRange = [];\n }\n }\n\n oldLine += lines.length;\n newLine += lines.length;\n }\n };\n\n for (var i = 0; i < diff.length; i++) {\n /*istanbul ignore start*/\n _loop(\n /*istanbul ignore end*/\n i);\n }\n\n return {\n oldFileName: oldFileName,\n newFileName: newFileName,\n oldHeader: oldHeader,\n newHeader: newHeader,\n hunks: hunks\n };\n}\n\nfunction formatPatch(diff) {\n if (Array.isArray(diff)) {\n return diff.map(formatPatch).join('\\n');\n }\n\n var ret = [];\n\n if (diff.oldFileName == diff.newFileName) {\n ret.push('Index: ' + diff.oldFileName);\n }\n\n ret.push('===================================================================');\n ret.push('--- ' + diff.oldFileName + (typeof diff.oldHeader === 'undefined' ? '' : '\\t' + diff.oldHeader));\n ret.push('+++ ' + diff.newFileName + (typeof diff.newHeader === 'undefined' ? '' : '\\t' + diff.newHeader));\n\n for (var i = 0; i < diff.hunks.length; i++) {\n var hunk = diff.hunks[i]; // Unified Diff Format quirk: If the chunk size is 0,\n // the first number is one lower than one would expect.\n // https://www.artima.com/weblogs/viewpost.jsp?thread=164293\n\n if (hunk.oldLines === 0) {\n hunk.oldStart -= 1;\n }\n\n if (hunk.newLines === 0) {\n hunk.newStart -= 1;\n }\n\n ret.push('@@ -' + hunk.oldStart + ',' + hunk.oldLines + ' +' + hunk.newStart + ',' + hunk.newLines + ' @@');\n ret.push.apply(ret, hunk.lines);\n }\n\n return ret.join('\\n') + '\\n';\n}\n\nfunction createTwoFilesPatch(oldFileName, newFileName, oldStr, newStr, oldHeader, newHeader, options) {\n return formatPatch(structuredPatch(oldFileName, newFileName, oldStr, newStr, oldHeader, newHeader, options));\n}\n\nfunction createPatch(fileName, oldStr, newStr, oldHeader, newHeader, options) {\n return createTwoFilesPatch(fileName, fileName, oldStr, newStr, oldHeader, newHeader, options);\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wYXRjaC9jcmVhdGUuanMiXSwibmFtZXMiOlsic3RydWN0dXJlZFBhdGNoIiwib2xkRmlsZU5hbWUiLCJuZXdGaWxlTmFtZSIsIm9sZFN0ciIsIm5ld1N0ciIsIm9sZEhlYWRlciIsIm5ld0hlYWRlciIsIm9wdGlvbnMiLCJjb250ZXh0IiwiZGlmZiIsImRpZmZMaW5lcyIsInB1c2giLCJ2YWx1ZSIsImxpbmVzIiwiY29udGV4dExpbmVzIiwibWFwIiwiZW50cnkiLCJodW5rcyIsIm9sZFJhbmdlU3RhcnQiLCJuZXdSYW5nZVN0YXJ0IiwiY3VyUmFuZ2UiLCJvbGRMaW5lIiwibmV3TGluZSIsImkiLCJjdXJyZW50IiwicmVwbGFjZSIsInNwbGl0IiwiYWRkZWQiLCJyZW1vdmVkIiwicHJldiIsInNsaWNlIiwibGVuZ3RoIiwiY29udGV4dFNpemUiLCJNYXRoIiwibWluIiwiaHVuayIsIm9sZFN0YXJ0Iiwib2xkTGluZXMiLCJuZXdTdGFydCIsIm5ld0xpbmVzIiwib2xkRU9GTmV3bGluZSIsInRlc3QiLCJuZXdFT0ZOZXdsaW5lIiwibm9ObEJlZm9yZUFkZHMiLCJzcGxpY2UiLCJmb3JtYXRQYXRjaCIsIkFycmF5IiwiaXNBcnJheSIsImpvaW4iLCJyZXQiLCJhcHBseSIsImNyZWF0ZVR3b0ZpbGVzUGF0Y2giLCJjcmVhdGVQYXRjaCIsImZpbGVOYW1lIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBOzs7Ozs7Ozs7Ozs7Ozs7QUFFTyxTQUFTQSxlQUFULENBQXlCQyxXQUF6QixFQUFzQ0MsV0FBdEMsRUFBbURDLE1BQW5ELEVBQTJEQyxNQUEzRCxFQUFtRUMsU0FBbkUsRUFBOEVDLFNBQTlFLEVBQXlGQyxPQUF6RixFQUFrRztBQUN2RyxNQUFJLENBQUNBLE9BQUwsRUFBYztBQUNaQSxJQUFBQSxPQUFPLEdBQUcsRUFBVjtBQUNEOztBQUNELE1BQUksT0FBT0EsT0FBTyxDQUFDQyxPQUFmLEtB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QUNuRixTQUFPNEMsbUJBQW1CLENBQUNFLFFBQUQsRUFBV0EsUUFBWCxFQUFxQmxELE1BQXJCLEVBQTZCQyxNQUE3QixFQUFxQ0MsU0FBckMsRUFBZ0RDLFNBQWhELEVBQTJEQyxPQUEzRCxDQUExQjtBQUNEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtkaWZmTGluZXN9IGZyb20gJy4uL2RpZmYvbGluZSc7XG5cbmV4cG9ydCBmdW5jdGlvbiBzdHJ1Y3R1cmVkUGF0Y2gob2xkRmlsZU5hbWUsIG5ld0ZpbGVOYW1lLCBvbGRTdHIsIG5ld1N0ciwgb2xkSGVhZGVyLCBuZXdIZWFkZXIsIG9wdGlvbnMpIHtcbiAgaWYgKCFvcHRpb25zKSB7XG4gICAgb3B0aW9ucyA9IHt9O1xuICB9XG4gIGlmICh0eXBlb2Ygb3B0aW9ucy5jb250ZXh0ID09PSAndW5kZWZpbmVkJykge1xuICAgIG9wdGlvbnMuY29udGV4dCA9IDQ7XG4gIH1cblxuICBjb25zdCBkaWZmID0gZGlmZkxpbmVzKG9sZFN0ciwgbmV3U3RyLCBvcHRpb25zKTtcbiAgaWYoIWRpZmYpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBkaWZmLnB1c2goe3ZhbHVlOiAnJywgbGluZXM6IFtdfSk7IC8vIEFwcGVuZCBhbiBlbXB0eSB2YWx1ZSB0byBtYWtlIGNsZWFudXAgZWFzaWVyXG5cbiAgZnVuY3Rpb24gY29udGV4dExpbmVzKGxpbmVzKSB7XG4gICAgcmV0dXJuIGxpbmVzLm1hcChmdW5jdGlvbihlbnRyeSkgeyByZXR1cm4gJyAnICsgZW50cnk7IH0pO1xuICB9XG5cbiAgbGV0IGh1bmtzID0gW107XG4gIGxldCBvbGRSYW5nZVN0YXJ0ID0gMCwgbmV3UmFuZ2VTdGFydCA9IDAsIGN1clJhbmdlID0gW10sXG4gICAgICBvbGRMaW5lID0gMSwgbmV3TGluZSA9IDE7XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgZGlmZi5sZW5ndGg7IGkrKykge1xuICAgIGNvbnN0IGN1cnJlbnQgPSBkaWZmW2ldLFxuICAgICAgICAgIGxpbmVzID0gY3VycmVudC5saW5lcyB8fCBjdXJyZW50LnZhbHVlLnJlcGxhY2UoL1xcbiQvLCAnJykuc3BsaXQoJ1xcbicpO1xuICAgIGN1cnJlbnQubGluZXMgPSBsaW5lcztcblxuICAgIGlmIChjdXJyZW50LmFkZGVkIHx8IGN1cnJlbnQucmVtb3ZlZCkge1xuICAgICAgLy8gSWYgd2UgaGF2ZSBwcmV2aW91cyBjb250ZXh0LCBzdGFydCB3aXRoIHRoYXRcbiAgICAgIGlmICghb2xkUmFuZ2VTdGFydCkge1xuICAgICAgICBjb25zdCBwcmV2ID0gZGlmZltpIC0gMV07XG4gICAgICAgIG9sZFJhbmdlU3RhcnQgPSBvbGRMaW5lO1xuICAgICAgICBuZXdSYW5nZVN0YXJ0ID0gbmV3TGluZTtcblxuICAgICAgICBpZiAocHJldikge1xuICAgICAgICAgIGN1clJhbmdlID0gb3B0aW9ucy5jb250ZXh0ID4gMCA/IGNvbnRleHRMaW5lcyhwcmV2LmxpbmVzLnNsaWNlKC1vcHRpb25zLmNvbnRleHQpKSA6IFtdO1xuICAgICAgICAgIG9sZFJhbmdlU3RhcnQgLT0gY3VyUmFuZ2UubGVuZ3RoO1xuICAgICAgICAgIG5ld1JhbmdlU3RhcnQgLT0gY3VyUmFuZ2UubGVuZ3RoO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC8vIE91dHB1dCBvdXIgY2hhbmdlc1xuICAgICAgY3VyUmFuZ2UucHVzaCguLi4gbGluZXMubWFwKGZ1bmN0aW9uKGVudHJ5KSB7XG4gICAgICAgIHJldHVybiAoY3VycmVudC5hZGRlZCA/ICcrJyA6ICctJykgKyBlbnRyeTtcbiAgICAgIH0pKTtcblxuICAgICAgLy8gVHJhY2sgdGhlIHVwZGF0ZWQgZmlsZSBwb3NpdGlvblxuICAgICAgaWYgKGN1cnJlbnQuYWRkZWQpIHtcbiAgICAgICAgbmV3TGluZSArPSBsaW5lcy5sZW5ndGg7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBvbGRMaW5lICs9IGxpbmVzLmxlbmd0aDtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgLy8gSWRlbnRpY2FsIGNvbnRleHQgbGluZXMuIFRyYWNrIGxpbmUgY2hhbmdlc1xuICAgICAgaWYgKG9sZFJhbmdlU3RhcnQpIHtcbiAgICAgICAgLy8gQ2xvc2Ugb3V0IGFueSBjaGFuZ2VzIHRoYXQgaGF2ZSBiZWVuIG91dHB1dCAob3Igam9pbiBvdmVybGFwcGluZylcbiAgICAgICAgaWYgKGxpbmVzLmxlbmd0aCA8PSBvcHRpb25zLmNvbnRleHQgKiAyICYmIGkgPCBkaWZmLmxlbmd0aCAtIDIpIHtcbiAgICAgICAgICAvLyBPdmVybGFwcGluZ1xuICAgICAgICAgIGN1clJhbmdlLnB1c2goLi4uIGNvbnRleHRMaW5lcyhsaW5lcykpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIC8vIGVuZCB0aGUgcmFuZ2UgYW5kIG91dHB1dFxuICAgICAgICAgIGxldCBjb250ZXh0U2l6ZSA9IE1hdGgubWluKGxpbmVzLmxlbmd0aCwgb3B0aW9ucy5jb250ZXh0KTtcbiAgICAgICAgICBjdXJSYW5nZS5wdXNoKC4uLiBjb250ZXh0TGluZXMobGluZXMuc2xpY2UoMCwgY29udGV4dFNpemUpKSk7XG5cbiAgICAgICAgICBsZXQgaHVuayA9IHtcbiAgICAgICAgICAgIG9sZFN0YXJ0OiBvbGRSYW5nZVN0YXJ0LFxuICAgICAgICAgICAgb2xkTGluZXM6IChvbGRMaW5lIC0gb2xkUmFuZ2VTdGFydCArIGNvbnRleHRTaXplKSxcbiAgICAgICAgICAgIG5ld1N0YXJ0OiBuZXdSYW5nZVN0YXJ0LFxuICAgICAgICAgICAgbmV3TGluZXM6IChuZXdMaW5lIC0gbmV3UmFuZ2VTdGFydCArIGNvbnRleHRTaXplKSxcbiAgICAgICAgICAgIGxpbmVzOiBjdXJSYW5nZVxuICAgICAgICAgIH07XG4gICAgICAgICAgaWYgKGkgPj0gZGlmZi5sZW5ndGggLSAyICYmIGxpbmVzLmxlbmd0aCA8PSBvcHRpb25zLmNvbnRleHQpIHtcbiAgICAgICAgICAgIC8vIEVPRiBpcyBpbnNpZGUgdGhpcyBodW5rXG4gICAgICAgICAgICBsZXQgb2xkRU9GTmV3bGluZSA9ICgoL1xcbiQvKS50ZXN0KG9sZFN0cikpO1xuICAgICAgICAgICAgbGV0IG5ld0VPRk5ld2xpbmUgPSAoKC9cXG4kLykudGVzdChuZXdTdHIpKTtcbiAgICAgICAgICAgIGxldCBub05sQmVmb3JlQWRkcyA9IGxpbmVzLmxlbmd0aCA9PSAwICYmIGN1clJhbmdlLmxlbmd0aCA+IGh1bmsub2xkTGluZXM7XG4gICAgICAgICAgICBpZiAoIW9sZEVPRk5ld2xpbmUgJiYgbm9ObEJlZm9yZUFkZHMgJiYgb2xkU3RyLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgLy8gc3BlY2lhbCBjYXNlOiBvbGQgaGFzIG5vIGVvbCBhbmQgbm8gdHJhaWxpbmcgY29udGV4dDsgbm8tbmwgY2FuIGVuZCB1cCBiZWZvcmUgYWRkc1xuICAgICAgICAgICAgICAvLyBob3dldmVyLCBpZiB0aGUgb2xkIGZpbGUgaXMgZW1wdHksIGRvIG5vdCBvdXRwdXQgdGhlIG5vLW5sIGxpbmVcbiAgICAgICAgICAgICAgY3VyUmFuZ2Uuc3BsaWNlKGh1bmsub2xkTGluZXMsIDAsICdcXFxcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICgoIW9sZEVPRk5ld2xpbmUgJiYgIW5vTmxCZWZvcmVBZGRzKSB8fCAhbmV3RU9GTmV3bGluZSkge1xuICAgICAgICAgICAgICBjdXJSYW5nZS5wdXNoKCdcXFxcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgaHVua3MucHVzaChodW5rKTtcblxuICAgICAgICAgIG9sZFJhbmdlU3RhcnQgPSAwO1xuICAgICAgICAgIG5ld1JhbmdlU3RhcnQgPSAwO1xuICAgICAgICAgIGN1clJhbmdlID0gW107XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIG9sZExpbmUgKz0gbGluZXMubGVuZ3RoO1xuICAgICAgbmV3TGluZSArPSBsaW5lcy5sZW5ndGg7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBvbGRGaWxlTmFtZTogb2xkRmlsZU5hbWUsIG5ld0ZpbGVOYW1lOiBuZXdGaWxlTmFtZSxcbiAgICBvbGRIZWFkZXI6IG9sZEhlYWRlciwgbmV3SGVhZGVyOiBuZXdIZWFkZXIsXG4gICAgaHVua3M6IGh1bmtzXG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmb3JtYXRQYXRjaChkaWZmKSB7XG4gIGlmIChBcnJheS5pc0FycmF5KGRpZmYpKSB7XG4gICAgcmV0dXJuIGRpZmYubWFwKGZvcm1hdFBhdGNoKS5qb2luKCdcXG4nKTtcbiAgfVxuXG4gIGNvbnN0IHJldCA9IFtdO1xuICBpZiAoZGlmZi5vbGRGaWxlTmFtZSA9PSBkaWZmLm5ld0ZpbGVOYW1lKSB7XG4gICAgcmV0LnB1c2goJ0luZGV4OiAnICsgZGlmZi5vbGRGaWxlTmFtZSk7XG4gIH1cbiAgcmV0LnB1c2goJz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0nKTtcbiAgcmV0LnB1c2goJy0tLSAnICsgZGlmZi5vbGRGaWxlTmFtZSArICh0eXBlb2YgZGlmZi5vbGRIZWFkZXIgPT09ICd1bmRlZmluZWQnID8gJycgOiAnXFx0JyArIGRpZmYub2xkSGVhZGVyKSk7XG4gIHJldC5wdXNoKCcrKysgJyArIGRpZmYubmV3RmlsZU5hbWUgKyAodHlwZW9mIGRpZmYubmV3SGVhZGVyID09PSAndW5kZWZpbmVkJyA/ICcnIDogJ1xcdCcgKyBkaWZmLm5ld0hlYWRlcikpO1xuXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgZGlmZi5odW5rcy5sZW5ndGg7IGkrKykge1xuICAgIGNvbnN0IGh1bmsgPSBkaWZmLmh1bmtzW2ldO1xuICAgIC8vIFVuaWZpZWQgRGlmZiBGb3JtYXQgcXVpcms6IElmIHRoZSBjaHVuayBzaXplIGlzIDAsXG4gICAgLy8gdGhlIGZpcnN0IG51bWJlciBpcyBvbmUgbG93ZXIgdGhhbiBvbmUgd291bGQgZXhwZWN0LlxuICAgIC8vIGh0dHBzOi8vd3d3LmFydGltYS5jb20vd2VibG9ncy92aWV3cG9zdC5qc3A/dGhyZWFkPTE2NDI5M1xuICAgIGlmIChodW5rLm9sZExpbmVzID09PSAwKSB7XG4gICAgICBodW5rLm9sZFN0YXJ0IC09IDE7XG4gICAgfVxuICAgIGlmIChodW5rLm5ld0xpbmVzID09PSAwKSB7XG4gICAgICBodW5rLm5ld1N0YXJ0IC09IDE7XG4gICAgfVxuICAgIHJldC5wdXNoKFxuICAgICAgJ0BAIC0nICsgaHVuay5vbGRTdGFydCArICcsJyArIGh1bmsub2xkTGluZXNcbiAgICAgICsgJyArJyArIGh1bmsubmV3U3RhcnQgKyAnLCcgKyBodW5rLm5ld0xpbmVzXG4gICAgICArICcgQEAnXG4gICAgKTtcbiAgICByZXQucHVzaC5hcHBseShyZXQsIGh1bmsubGluZXMpO1xuICB9XG5cbiAgcmV0dXJuIHJldC5qb2luKCdcXG4nKSArICdcXG4nO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlVHdvRmlsZXNQYXRjaChvbGRGaWxlTmFtZSwgbmV3RmlsZU5hbWUsIG9sZFN0ciwgbmV3U3RyLCBvbGRIZWFkZXIsIG5ld0hlYWRlciwgb3B0aW9ucykge1xuICByZXR1cm4gZm9ybWF0UGF0Y2goc3RydWN0dXJlZFBhdGNoKG9sZEZpbGVOYW1lLCBuZXdGaWxlTmFtZSwgb2xkU3RyLCBuZXdTdHIsIG9sZEhlYWRlciwgbmV3SGVhZGVyLCBvcHRpb25zKSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVQYXRjaChmaWxlTmFtZSwgb2xkU3RyLCBuZXdTdHIsIG9sZEhlYWRlciwgbmV3SGVhZGVyLCBvcHRpb25zKSB7XG4gIHJldHVybiBjcmVhdGVUd29GaWxlc1BhdGNoKGZpbGVOYW1lLCBmaWxlTmFtZSwgb2xkU3RyLCBuZXdTdHIsIG9sZEhlYWRlciwgbmV3SGVhZGVyLCBvcHRpb25zKTtcbn1cbiJdfQ==\n","/*istanbul ignore start*/\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.calcLineCount = calcLineCount;\nexports.merge = merge;\n\n/*istanbul ignore end*/\nvar\n/*istanbul ignore start*/\n_create = require(\"./create\")\n/*istanbul ignore end*/\n;\n\nvar\n/*istanbul ignore start*/\n_parse = require(\"./parse\")\n/*istanbul ignore end*/\n;\n\nvar\n/*istanbul ignore start*/\n_array = require(\"../util/array\")\n/*istanbul ignore end*/\n;\n\n/*istanbul ignore start*/ function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && Symbol.iterator in Object(iter)) return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\n/*istanbul ignore end*/\nfunction calcLineCount(hunk) {\n /*istanbul ignore start*/\n var _calcOldNewLineCount =\n /*istanbul ignore end*/\n calcOldNewLineCount(hunk.lines),\n oldLines = _calcOldNewLineCount.oldLines,\n newLines = _calcOldNewLineCount.newLines;\n\n if (oldLines !== undefined) {\n hunk.oldLines = oldLines;\n } else {\n delete hunk.oldLines;\n }\n\n if (newLines !== undefined) {\n hunk.newLines = newLines;\n } else {\n delete hunk.newLines;\n }\n}\n\nfunction merge(mine, theirs, base) {\n mine = loadPatch(mine, base);\n theirs = loadPatch(theirs, base);\n var ret = {}; // For index we just let it pass through as it doesn't have any necessary meaning.\n // Leaving sanity checks on this to the API consumer that may know more about the\n // meaning in their own context.\n\n if (mine.index || theirs.index) {\n ret.index = mine.index || theirs.index;\n }\n\n if (mine.newFileName || theirs.newFileName) {\n if (!fileNameChanged(mine)) {\n // No header or no change in ours, use theirs (and ours if theirs does not exist)\n ret.oldFileName = theirs.oldFileName || mine.oldFileName;\n ret.newFileName = theirs.newFileName || mine.newFileName;\n ret.oldHeader = theirs.oldHeader || mine.oldHeader;\n ret.newHeader = theirs.newHeader || mine.newHeader;\n } else if (!fileNameChanged(theirs)) {\n // No header or no change in theirs, use ours\n ret.oldFileName = mine.oldFileName;\n ret.newFileName = mine.newFileName;\n ret.oldHeader = mine.oldHeader;\n ret.newHeader = mine.newHeader;\n } else {\n // Both changed... figure it out\n ret.oldFileName = selectField(ret, mine.oldFileName, theirs.oldFileName);\n ret.newFileName = selectField(ret, mine.newFileName, theirs.newFileName);\n ret.oldHeader = selectField(ret, mine.oldHeader, theirs.oldHeader);\n ret.newHeader = selectField(ret, mine.newHeader, theirs.newHeader);\n }\n }\n\n ret.hunks = [];\n var mineIndex = 0,\n theirsIndex = 0,\n mineOffset = 0,\n theirsOffset = 0;\n\n while (mineIndex < mine.hunks.length || theirsIndex < theirs.hunks.length) {\n var mineCurrent = mine.hunks[mineIndex] || {\n oldStart: Infinity\n },\n theirsCurrent = theirs.hunks[theirsIndex] || {\n oldStart: Infinity\n };\n\n if (hunkBefore(mineCurrent, theirsCurrent)) {\n // This patch does not overlap with any of the others, yay.\n ret.hunks.push(cloneHunk(mineCurrent, mineOffset));\n mineIndex++;\n theirsOffset += mineCurrent.newLines - mineCurrent.oldLines;\n } else if (hunkBefore(theirsCurrent, mineCurrent)) {\n // This patch does not overlap with any of the others, yay.\n ret.hunks.push(cloneHunk(theirsCurrent, theirsOffset));\n theirsIndex++;\n mineOffset += theirsCurrent.newLines - theirsCurrent.oldLines;\n } else {\n // Overlap, merge as best we can\n var mergedHunk = {\n oldStart: Math.min(mineCurrent.oldStart, theirsCurrent.oldStart),\n oldLines: 0,\n newStart: Math.min(mineCurrent.newStart + mineOffset, theirsCurrent.oldStart + theirsOffset),\n newLines: 0,\n lines: []\n };\n mergeLines(mergedHunk, mineCurrent.oldStart, mineCurrent.lines, theirsCurrent.oldStart, theirsCurrent.lines);\n theirsIndex++;\n mineIndex++;\n ret.hunks.push(mergedHunk);\n }\n }\n\n return ret;\n}\n\nfunction loadPatch(param, base) {\n if (typeof param === 'string') {\n if (/^@@/m.test(param) || /^Index:/m.test(param)) {\n return (\n /*istanbul ignore start*/\n (0,\n /*istanbul ignore end*/\n\n /*istanbul ignore start*/\n _parse\n /*istanbul ignore end*/\n .\n /*istanbul ignore start*/\n parsePatch)\n /*istanbul ignore end*/\n (param)[0]\n );\n }\n\n if (!base) {\n throw new Error('Must provide a base reference or pass in a patch');\n }\n\n return (\n /*istanbul ignore start*/\n (0,\n /*istanbul ignore end*/\n\n /*istanbul ignore start*/\n _create\n /*istanbul ignore end*/\n .\n /*istanbul ignore start*/\n structuredPatch)\n /*istanbul ignore end*/\n (undefined, undefined, base, param)\n );\n }\n\n return param;\n}\n\nfunction fileNameChanged(patch) {\n return patch.newFileName && patch.newFileName !== patch.oldFileName;\n}\n\nfunction selectField(index, mine, theirs) {\n if (mine === theirs) {\n return mine;\n } else {\n index.conflict = true;\n return {\n mine: mine,\n theirs: theirs\n };\n }\n}\n\nfunction hunkBefore(test, check) {\n return test.oldStart < check.oldStart && test.oldStart + test.oldLines < check.oldStart;\n}\n\nfunction cloneHunk(hunk, offset) {\n return {\n oldStart: hunk.oldStart,\n oldLines: hunk.oldLines,\n newStart: hunk.newStart + offset,\n newLines: hunk.newLines,\n lines: hunk.lines\n };\n}\n\nfunction mergeLines(hunk, mineOffset, mineLines, theirOffset, theirLines) {\n // This will generally result in a conflicted hunk, but there are cases where the context\n // is the only overlap where we can successfully merge the content here.\n var mine = {\n offset: mineOffset,\n lines: mineLines,\n index: 0\n },\n their = {\n offset: theirOffset,\n lines: theirLines,\n index: 0\n }; // Handle any leading content\n\n insertLeading(hunk, mine, their);\n insertLeading(hunk, their, mine); // Now in the overlap content. Scan through and select the best changes from each.\n\n while (mine.index < mine.lines.length && their.index < their.lines.length) {\n var mineCurrent = mine.lines[mine.index],\n theirCurrent = their.lines[their.index];\n\n if ((mineCurrent[0] === '-' || mineCurrent[0] === '+') && (theirCurrent[0] === '-' || theirCurrent[0] === '+')) {\n // Both modified ...\n mutualChange(hunk, mine, their);\n } else if (mineCurrent[0] === '+' && theirCurrent[0] === ' ') {\n /*istanbul ignore start*/\n var _hunk$lines;\n\n /*istanbul ignore end*/\n // Mine inserted\n\n /*istanbul ignore start*/\n\n /*istanbul ignore end*/\n\n /*istanbul ignore start*/\n (_hunk$lines =\n /*istanbul ignore end*/\n hunk.lines).push.apply(\n /*istanbul ignore start*/\n _hunk$lines\n /*istanbul ignore end*/\n ,\n /*istanbul ignore start*/\n _toConsumableArray(\n /*istanbul ignore end*/\n collectChange(mine)));\n } else if (theirCurrent[0] === '+' && mineCurrent[0] === ' ') {\n /*istanbul ignore start*/\n var _hunk$lines2;\n\n /*istanbul ignore end*/\n // Theirs inserted\n\n /*istanbul ignore start*/\n\n /*istanbul ignore end*/\n\n /*istanbul ignore start*/\n (_hunk$lines2 =\n /*istanbul ignore end*/\n hunk.lines).push.apply(\n /*istanbul ignore start*/\n _hunk$lines2\n /*istanbul ignore end*/\n ,\n /*istanbul ignore start*/\n _toConsumableArray(\n /*istanbul ignore end*/\n collectChange(their)));\n } else if (mineCurrent[0] === '-' && theirCurrent[0] === ' ') {\n // Mine removed or edited\n removal(hunk, mine, their);\n } else if (theirCurrent[0] === '-' && mineCurrent[0] === ' ') {\n // Their removed or edited\n removal(hunk, their, mine, true);\n } else if (mineCurrent === theirCurrent) {\n // Context identity\n hunk.lines.push(mineCurrent);\n mine.index++;\n their.index++;\n } else {\n // Context mismatch\n conflict(hunk, collectChange(mine), collectChange(their));\n }\n } // Now push anything that may be remaining\n\n\n insertTrailing(hunk, mine);\n insertTrailing(hunk, their);\n calcLineCount(hunk);\n}\n\nfunction mutualChange(hunk, mine, their) {\n var myChanges = collectChange(mine),\n theirChanges = collectChange(their);\n\n if (allRemoves(myChanges) && allRemoves(theirChanges)) {\n // Special case for remove changes that are supersets of one another\n if (\n /*istanbul ignore start*/\n (0,\n /*istanbul ignore end*/\n\n /*istanbul ignore start*/\n _array\n /*istanbul ignore end*/\n .\n /*istanbul ignore start*/\n arrayStartsWith)\n /*istanbul ignore end*/\n (myChanges, theirChanges) && skipRemoveSuperset(their, myChanges, myChanges.length - theirChanges.length)) {\n /*istanbul ignore start*/\n var _hunk$lines3;\n\n /*istanbul ignore end*/\n\n /*istanbul ignore start*/\n\n /*istanbul ignore end*/\n\n /*istanbul ignore start*/\n (_hunk$lines3 =\n /*istanbul ignore end*/\n hunk.lines).push.apply(\n /*istanbul ignore start*/\n _hunk$lines3\n /*istanbul ignore end*/\n ,\n /*istanbul ignore start*/\n _toConsumableArray(\n /*istanbul ignore end*/\n myChanges));\n\n return;\n } else if (\n /*istanbul ignore start*/\n (0,\n /*istanbul ignore end*/\n\n /*istanbul ignore start*/\n _array\n /*istanbul ignore end*/\n .\n /*istanbul ignore start*/\n arrayStartsWith)\n /*istanbul ignore end*/\n (theirChanges, myChanges) && skipRemoveSuperset(mine, theirChanges, theirChanges.length - myChanges.length)) {\n /*istanbul ignore start*/\n var _hunk$lines4;\n\n /*istanbul ignore end*/\n\n /*istanbul ignore start*/\n\n /*istanbul ignore end*/\n\n /*istanbul ignore start*/\n (_hunk$lines4 =\n /*istanbul ignore end*/\n hunk.lines).push.apply(\n /*istanbul ignore start*/\n _hunk$lines4\n /*istanbul ignore end*/\n ,\n /*istanbul ignore start*/\n _toConsumableArray(\n /*istanbul ignore end*/\n theirChanges));\n\n return;\n }\n } else if (\n /*istanbul ignore start*/\n (0,\n /*istanbul ignore end*/\n\n /*istanbul ignore start*/\n _array\n /*istanbul ignore end*/\n .\n /*istanbul ignore start*/\n arrayEqual)\n /*istanbul ignore end*/\n (myChanges, theirChanges)) {\n /*istanbul ignore start*/\n var _hunk$lines5;\n\n /*istanbul ignore end*/\n\n /*istanbul ignore start*/\n\n /*istanbul ignore end*/\n\n /*istanbul ignore start*/\n (_hunk$lines5 =\n /*istanbul ignore end*/\n hunk.lines).push.apply(\n /*istanbul ignore start*/\n _hunk$lines5\n /*istanbul ignore end*/\n ,\n /*istanbul ignore start*/\n _toConsumableArray(\n /*istanbul ignore end*/\n myChanges));\n\n return;\n }\n\n conflict(hunk, myChanges, theirChanges);\n}\n\nfunction removal(hunk, mine, their, swap) {\n var myChanges = collectChange(mine),\n theirChanges = collectContext(their, myChanges);\n\n if (theirChanges.merged) {\n /*istanbul ignore start*/\n var _hunk$lines6;\n\n /*istanbul ignore end*/\n\n /*istanbul ignore start*/\n\n /*istanbul ignore end*/\n\n /*istanbul ignore start*/\n (_hunk$lines6 =\n /*istanbul ignore end*/\n hunk.lines).push.apply(\n /*istanbul ignore start*/\n _hunk$lines6\n /*istanbul ignore end*/\n ,\n /*istanbul ignore start*/\n _toConsumableArray(\n /*istanbul ignore end*/\n theirChanges.merged));\n } else {\n conflict(hunk, swap ? theirChanges : myChanges, swap ? myChanges : theirChanges);\n }\n}\n\nfunction conflict(hunk, mine, their) {\n hunk.conflict = true;\n hunk.lines.push({\n conflict: true,\n mine: mine,\n theirs: their\n });\n}\n\nfunction insertLeading(hunk, insert, their) {\n while (insert.offset < their.offset && insert.index < insert.lines.length) {\n var line = insert.lines[insert.index++];\n hunk.lines.push(line);\n insert.offset++;\n }\n}\n\nfunction insertTrailing(hunk, insert) {\n while (insert.index < insert.lines.length) {\n var line = insert.lines[insert.index++];\n hunk.lines.push(line);\n }\n}\n\nfunction collectChange(state) {\n var ret = [],\n operation = state.lines[state.index][0];\n\n while (state.index < state.lines.length) {\n var line = state.lines[state.index]; // Group additions that are immediately after subtractions and treat them as one \"atomic\" modify change.\n\n if (operation === '-' && line[0] === '+') {\n operation = '+';\n }\n\n if (operation === line[0]) {\n ret.push(line);\n state.index++;\n } else {\n break;\n }\n }\n\n return ret;\n}\n\nfunction collectContext(state, matchChanges) {\n var changes = [],\n merged = [],\n matchIndex = 0,\n contextChanges = false,\n conflicted = false;\n\n while (matchIndex < matchChanges.length && state.index < state.lines.length) {\n var change = state.lines[state.index],\n match = matchChanges[matchIndex]; // Once we've hit our add, then we are done\n\n if (match[0] === '+') {\n break;\n }\n\n contextChanges = contextChanges || change[0] !== ' ';\n merged.push(match);\n matchIndex++; // Consume any additions in the other block as a conflict to attempt\n // to pull in the remaining context after this\n\n if (change[0] === '+') {\n conflicted = true;\n\n while (change[0] === '+') {\n changes.push(change);\n change = state.lines[++state.index];\n }\n }\n\n if (match.substr(1) === change.substr(1)) {\n changes.push(change);\n state.index++;\n } else {\n conflicted = true;\n }\n }\n\n if ((matchChanges[matchIndex] || '')[0] === '+' && contextChanges) {\n conflicted = true;\n }\n\n if (conflicted) {\n return changes;\n }\n\n while (matchIndex < matchChanges.length) {\n merged.push(matchChanges[matchIndex++]);\n }\n\n return {\n merged: merged,\n changes: changes\n };\n}\n\nfunction allRemoves(changes) {\n return changes.reduce(function (prev, change) {\n return prev && change[0] === '-';\n }, true);\n}\n\nfunction skipRemoveSuperset(state, removeChanges, delta) {\n for (var i = 0; i < delta; i++) {\n var changeContent = removeChanges[removeChanges.length - delta + i].substr(1);\n\n if (state.lines[state.index + i] !== ' ' + changeContent) {\n return false;\n }\n }\n\n state.index += delta;\n return true;\n}\n\nfunction calcOldNewLineCount(lines) {\n var oldLines = 0;\n var newLines = 0;\n lines.forEach(function (line) {\n if (typeof line !== 'string') {\n var myCount = calcOldNewLineCount(line.mine);\n var theirCount = calcOldNewLineCount(line.theirs);\n\n if (oldLines !== undefined) {\n if (myCount.oldLines === theirCount.oldLines) {\n oldLines += myCount.oldLines;\n } else {\n oldLines = undefined;\n }\n }\n\n if (newLines !== undefined) {\n if (myCount.newLines === theirCount.newLines) {\n newLines += myCount.newLines;\n } else {\n newLines = undefined;\n }\n }\n } else {\n if (newLines !== undefined && (line[0] === '+' || line[0] === ' ')) {\n newLines++;\n }\n\n if (oldLines !== undefined && (line[0] === '-' || line[0] === ' ')) {\n oldLines++;\n }\n }\n });\n return {\n oldLines: oldLines,\n newLines: newLines\n };\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wYXRjaC9tZXJnZS5qcyJdLCJuYW1lcyI6WyJjYWxjTGluZUNvdW50IiwiaHVuayIsImNhbGNPbGROZXdMaW5lQ291bnQiLCJsaW5lcyIsIm9sZExpbmVzIiwibmV3TGluZXMiLCJ1bmRlZmluZWQiLCJtZXJnZSIsIm1pbmUiLCJ0aGVpcnMiLCJiYXNlIiwibG9hZFBhdGNoIiwicmV0IiwiaW5kZXgiLCJuZXdGaWxlTmFtZSIsImZpbGVOYW1lQ2hhbmdlZCIsIm9sZEZpbGVOYW1lIiwib2xkSGVhZGVyIiwibmV3SGVhZGVyIiwic2VsZWN0RmllbGQiLCJodW5rcyIsIm1pbmVJbmRleCIsInRoZWlyc0luZGV4IiwibWluZU9mZnNldCIsInRoZWlyc09mZnNldCIsImxlbmd0aCIsIm1pbmVDdXJyZW50Iiwib2xkU3RhcnQiLCJJbmZpbml0eSIsInRoZWlyc0N1cnJlbnQiLCJodW5rQmVmb3JlIiwicHVzaCIsImNsb25lSHVuayIsIm1lcmdlZEh1bmsiLCJNYXRoIiwibWluIiwibmV3U3RhcnQiLCJtZXJnZUxpbmVzIiwicGFyYW0iLCJ0ZXN0IiwicGFyc2VQYXRjaCIsIkVycm9yIiwic3RydWN0dXJlZFBhdGNoIiwicGF0Y2giLCJjb25mbGljdCIsImNoZWNrIiwib2Zmc2V0IiwibWluZUxpbmVzIiwidGhlaXJPZmZzZXQiLCJ0aGVpckxpbmVzIiwidGhlaXIiLCJpbnNlcnRMZWFkaW5nIiwidGhlaXJDdXJyZW50IiwibXV0dWFsQ2hhbmdlIiwiY29sbGVjdENoYW5nZSIsInJlbW92YWwiLCJpbnNlcnRUcmFpbGluZyIsIm15Q2hhbmdlcyIsInRoZWlyQ2hhbmdlcyIsImFsbFJlbW92ZXMiLCJhcnJheVN0YXJ0c1dpdGgiLCJza2lwUmVtb3ZlU3VwZXJzZXQiLCJhcnJheUVxdWFsIiwic3dhcCIsImNvbGxlY3RDb250ZXh0IiwibWVyZ2VkIiwiaW5zZXJ0IiwibGluZSIsInN0YXRlIiwib3BlcmF0aW9uIiwibWF0Y2hDaGFuZ2VzIiwiY2hhbmdlcyIsIm1hdGNoSW5kZXgiLCJjb250ZXh0Q2hhbmdlcyIsImNvbmZsaWN0ZWQiLCJjaGFuZ2UiLCJtYXRjaCIsInN1YnN0ciIsInJlZHVjZSIsInByZXYiLCJyZW1vdmVDaGFuZ2VzIiwiZGVsdGEiLCJpIiwiY2hhbmdlQ29udGVudCIsImZvckVhY2giLCJteUNvdW50IiwidGhlaXJDb3VudCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7O0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTs7QUFFQTtBQUFBO0FBQUE7QUFBQTtBQUFBOzs7Ozs7Ozs7Ozs7Ozs7QUFFTyxTQUFTQSxhQUFULENBQXVCQyxJQUF2QixFQUE2QjtBQUFBO0FBQUE7QUFBQTtBQUNMQyxFQUFBQSxtQkFBbUIsQ0FBQ0QsSUFBSSxDQUFDRSxLQUFOLENBRGQ7QUFBQSxNQUMzQkMsUUFEMkIsd0JBQzNCQSxRQUQyQjtBQUFBLE1BQ2pCQyxRQURpQix3QkFDakJBLFFBRGlCOztBQUdsQyxNQUFJRCxRQUFRLEtBQUtFLFNBQWpCLEVBQTRCO0FBQzFCTCxJQUFBQSxJQUFJLENBQUNHLFFBQUwsR0FBZ0JBLFFBQWhCO0FBQ0QsR0FGRCxNQUVPO0FBQ0wsV0FBT0gsSUFBSSxDQUFDRyxRQUFaO0FBQ0Q7O0FBRUQsTUFBSUMsUUFBUSxLQUFLQyxTQUFqQixFQUE0QjtBQUMxQkwsSUFBQUEsSUFBSSxDQUFDSSxRQUFMLEdBQWdCQSxRQUFoQjtBQUNELEdBRkQsTUFFTztBQUNMLFdBQU9KLElBQUksQ0FBQ0ksUUFBWjtBQUNEO0FBQ0Y7O0FBRU0sU0FBU0UsS0FBVCxDQUFlQyxJQUFmLEVBQXFCQyxNQUFyQixFQUE2QkMsSUFBN0IsRUFBbUM7QUFDeENGLEVBQUFBLElBQUksR0FBR0csU0FBUyxDQUFDSCxJQUFELEVBQU9FLElBQVAsQ0FBaEI7QUFDQUQsRUFBQUEsTUFBTSxHQUFHRSxTQUFTLENBQUNGLE1BQUQsRUFBU0MsSUFBVCxDQUFsQjtBQUVBLE1BQUlFLEdBQUcsR0FBRyxFQUFWLENBSndD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QUFKLEVBQW9FO0FBQ2xFL0QsUUFBQUEsUUFBUTtBQUNUO0FBQ0Y7QUFDRixHQTVCRDtBQThCQSxTQUFPO0FBQUNBLElBQUFBLFFBQVEsRUFBUkEsUUFBRDtBQUFXQyxJQUFBQSxRQUFRLEVBQVJBO0FBQVgsR0FBUDtBQUNEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtzdHJ1Y3R1cmVkUGF0Y2h9IGZyb20gJy4vY3JlYXRlJztcbmltcG9ydCB7cGFyc2VQYXRjaH0gZnJvbSAnLi9wYXJzZSc7XG5cbmltcG9ydCB7YXJyYXlFcXVhbCwgYXJyYXlTdGFydHNXaXRofSBmcm9tICcuLi91dGlsL2FycmF5JztcblxuZXhwb3J0IGZ1bmN0aW9uIGNhbGNMaW5lQ291bnQoaHVuaykge1xuICBjb25zdCB7b2xkTGluZXMsIG5ld0xpbmVzfSA9IGNhbGNPbGROZXdMaW5lQ291bnQoaHVuay5saW5lcyk7XG5cbiAgaWYgKG9sZExpbmVzICE9PSB1bmRlZmluZWQpIHtcbiAgICBodW5rLm9sZExpbmVzID0gb2xkTGluZXM7XG4gIH0gZWxzZSB7XG4gICAgZGVsZXRlIGh1bmsub2xkTGluZXM7XG4gIH1cblxuICBpZiAobmV3TGluZXMgIT09IHVuZGVmaW5lZCkge1xuICAgIGh1bmsubmV3TGluZXMgPSBuZXdMaW5lcztcbiAgfSBlbHNlIHtcbiAgICBkZWxldGUgaHVuay5uZXdMaW5lcztcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gbWVyZ2UobWluZSwgdGhlaXJzLCBiYXNlKSB7XG4gIG1pbmUgPSBsb2FkUGF0Y2gobWluZSwgYmFzZSk7XG4gIHRoZWlycyA9IGxvYWRQYXRjaCh0aGVpcnMsIGJhc2UpO1xuXG4gIGxldCByZXQgPSB7fTtcblxuICAvLyBGb3IgaW5kZXggd2UganVzdCBsZXQgaXQgcGFzcyB0aHJvdWdoIGFzIGl0IGRvZXNuJ3QgaGF2ZSBhbnkgbmVjZXNzYXJ5IG1lYW5pbmcuXG4gIC8vIExlYXZpbmcgc2FuaXR5IGNoZWNrcyBvbiB0aGlzIHRvIHRoZSBBUEkgY29uc3VtZXIgdGhhdCBtYXkga25vdyBtb3JlIGFib3V0IHRoZVxuICAvLyBtZWFuaW5nIGluIHRoZWlyIG93biBjb250ZXh0LlxuICBpZiAobWluZS5pbmRleCB8fCB0aGVpcnMuaW5kZXgpIHtcbiAgICByZXQuaW5kZXggPSBtaW5lLmluZGV4IHx8IHRoZWlycy5pbmRleDtcbiAgfVxuXG4gIGlmIChtaW5lLm5ld0ZpbGVOYW1lIHx8IHRoZWlycy5uZXdGaWxlTmFtZSkge1xuICAgIGlmICghZmlsZU5hbWVDaGFuZ2VkKG1pbmUpKSB7XG4gICAgICAvLyBObyBoZWFkZXIgb3Igbm8gY2hhbmdlIGluIG91cnMsIHVzZSB0aGVpcnMgKGFuZCBvdXJzIGlmIHRoZWlycyBkb2VzIG5vdCBleGlzdClcbiAgICAgIHJldC5vbGRGaWxlTmFtZSA9IHRoZWlycy5vbGRGaWxlTmFtZSB8fCBtaW5lLm9sZEZpbGVOYW1lO1xuICAgICAgcmV0Lm5ld0ZpbGVOYW1lID0gdGhlaXJzLm5ld0ZpbGVOYW1lIHx8IG1pbmUubmV3RmlsZU5hbWU7XG4gICAgICByZXQub2xkSGVhZGVyID0gdGhlaXJzLm9sZEhlYWRlciB8fCBtaW5lLm9sZEhlYWRlcjtcbiAgICAgIHJldC5uZXdIZWFkZXIgPSB0aGVpcnMubmV3SGVhZGVyIHx8IG1pbmUubmV3SGVhZGVyO1xuICAgIH0gZWxzZSBpZiAoIWZpbGVOYW1lQ2hhbmdlZCh0aGVpcnMpKSB7XG4gICAgICAvLyBObyBoZWFkZXIgb3Igbm8gY2hhbmdlIGluIHRoZWlycywgdXNlIG91cnNcbiAgICAgIHJldC5vbGRGaWxlTmFtZSA9IG1pbmUub2xkRmlsZU5hbWU7XG4gICAgICByZXQubmV3RmlsZU5hbWUgPSBtaW5lLm5ld0ZpbGVOYW1lO1xuICAgICAgcmV0Lm9sZEhlYWRlciA9IG1pbmUub2xkSGVhZGVyO1xuICAgICAgcmV0Lm5ld0hlYWRlciA9IG1pbmUubmV3SGVhZGVyO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBCb3RoIGNoYW5nZWQuLi4gZmlndXJlIGl0IG91dFxuICAgICAgcmV0Lm9sZEZpbGVOYW1lID0gc2VsZWN0RmllbGQocmV0LCBtaW5lLm9sZEZpbGVOYW1lLCB0aGVpcnMub2xkRmlsZU5hbWUpO1xuICAgICAgcmV0Lm5ld0ZpbGVOYW1lID0gc2VsZWN0RmllbGQocmV0LCBtaW5lLm5ld0ZpbGVOYW1lLCB0aGVpcnMubmV3RmlsZU5hbWUpO1xuICAgICAgcmV0Lm9sZEhlYWRlciA9IHNlbGVjdEZpZWxkKHJldCwgbWluZS5vbGRIZWFkZXIsIHRoZWlycy5vbGRIZWFkZXIpO1xuICAgICAgcmV0Lm5ld0hlYWRlciA9IHNlbGVjdEZpZWxkKHJldCwgbWluZS5uZXdIZWFkZXIsIHRoZWlycy5uZXdIZWFkZXIpO1xuICAgIH1cbiAgfVxuXG4gIHJldC5odW5rcyA9IFtdO1xuXG4gIGxldCBtaW5lSW5kZXggPSAwLFxuICAgICAgdGhlaXJzSW5kZXggPSAwLFxuICAgICAgbWluZU9mZnNldCA9IDAsXG4gICAgICB0aGVpcnNPZmZzZXQgPSAwO1xuXG4gIHdoaWxlIChtaW5lSW5kZXggPCBtaW5lLmh1bmtzLmxlbmd0aCB8fCB0aGVpcnNJbmRleCA8IHRoZWlycy5odW5rcy5sZW5ndGgpIHtcbiAgICBsZXQgbWluZUN1cnJlbnQgPSBtaW5lLmh1bmtzW21pbmVJbmRleF0gfHwge29sZFN0YXJ0OiBJbmZpbml0eX0sXG4gICAgICAgIHRoZWlyc0N1cnJlbnQgPSB0aGVpcnMuaHVua3NbdGhlaXJzSW5kZXhdIHx8IHtvbGRTdGFydDogSW5maW5pdHl9O1xuXG4gICAgaWYgKGh1bmtCZWZvcmUobWluZUN1cnJlbnQsIHRoZWlyc0N1cnJlbnQpKSB7XG4gICAgICAvLyBUaGlzIHBhdGNoIGRvZXMgbm90IG92ZXJsYXAgd2l0aCBhbnkgb2YgdGhlIG90aGVycywgeWF5LlxuICAgICAgcmV0Lmh1bmtzLnB1c2goY2xvbmVIdW5rKG1pbmVDdXJyZW50LCBtaW5lT2Zmc2V0KSk7XG4gICAgICBtaW5lSW5kZXgrKztcbiAgICAgIHRoZWlyc09mZnNldCArPSBtaW5lQ3VycmVudC5uZXdMaW5lcyAtIG1pbmVDdXJyZW50Lm9sZExpbmVzO1xuICAgIH0gZWxzZSBpZiAoaHVua0JlZm9yZSh0aGVpcnNDdXJyZW50LCBtaW5lQ3VycmVudCkpIHtcbiAgICAgIC8vIFRoaXMgcGF0Y2ggZG9lcyBub3Qgb3ZlcmxhcCB3aXRoIGFueSBvZiB0aGUgb3RoZXJzLCB5YXkuXG4gICAgICByZXQuaHVua3MucHVzaChjbG9uZUh1bmsodGhlaXJzQ3VycmVudCwgdGhlaXJzT2Zmc2V0KSk7XG4gICAgICB0aGVpcnNJbmRleCsrO1xuICAgICAgbWluZU9mZnNldCArPSB0aGVpcnNDdXJyZW50Lm5ld0xpbmVzIC0gdGhlaXJzQ3VycmVudC5vbGRMaW5lcztcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gT3ZlcmxhcCwgbWVyZ2UgYXMgYmVzdCB3ZSBjYW5cbiAgICAgIGxldCBtZXJnZWRIdW5rID0ge1xuICAgICAgICBvbGRTdGFydDogTWF0aC5taW4obWluZUN1cnJlbnQub2xkU3RhcnQsIHRoZWlyc0N1cnJlbnQub2xkU3RhcnQpLFxuICAgICAgICBvbGRMaW5lczogMCxcbiAgICAgICAgbmV3U3RhcnQ6IE1hdGgubWluKG1pbmVDdXJyZW50Lm5ld1N0YXJ0ICsgbWluZU9mZnNldCwgdGhlaXJzQ3VycmVudC5vbGRTdGFydCArIHRoZWlyc09mZnNldCksXG4gICAgICAgIG5ld0xpbmVzOiAwLFxuICAgICAgICBsaW5lczogW11cbiAgICAgIH07XG4gICAgICBtZXJnZUxpbmVzKG1lcmdlZEh1bmssIG1pbmVDdXJyZW50Lm9sZFN0YXJ0LCBtaW5lQ3VycmVudC5saW5lcywgdGhlaXJzQ3VycmVudC5vbGRTdGFydCwgdGhlaXJzQ3VycmVudC5saW5lcyk7XG4gICAgICB0aGVpcnNJbmRleCsrO1xuICAgICAgbWluZUluZGV4Kys7XG5cbiAgICAgIHJldC5odW5rcy5wdXNoKG1lcmdlZEh1bmspO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiByZXQ7XG59XG5cbmZ1bmN0aW9uIGxvYWRQYXRjaChwYXJhbSwgYmFzZSkge1xuICBpZiAodHlwZW9mIHBhcmFtID09PSAnc3RyaW5nJykge1xuICAgIGlmICgoL15AQC9tKS50ZXN0KHBhcmFtKSB8fCAoKC9eSW5kZXg6L20pLnRlc3QocGFyYW0pKSkge1xuICAgICAgcmV0dXJuIHBhcnNlUGF0Y2gocGFyYW0pWzBdO1xuICAgIH1cblxuICAgIGlmICghYmFzZSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdNdXN0IHByb3ZpZGUgYSBiYXNlIHJlZmVyZW5jZSBvciBwYXNzIGluIGEgcGF0Y2gnKTtcbiAgICB9XG4gICAgcmV0dXJuIHN0cnVjdHVyZWRQYXRjaCh1bmRlZmluZWQsIHVuZGVmaW5lZCwgYmFzZSwgcGFyYW0pO1xuICB9XG5cbiAgcmV0dXJuIHBhcmFtO1xufVxuXG5mdW5jdGlvbiBmaWxlTmFtZUNoYW5nZWQocGF0Y2gpIHtcbiAgcmV0dXJuIHBhdGNoLm5ld0ZpbGVOYW1lICYmIHBhdGNoLm5ld0ZpbGVOYW1lICE9PSBwYXRjaC5vbGRGaWxlTmFtZTtcbn1cblxuZnVuY3Rpb24gc2VsZWN0RmllbGQoaW5kZXgsIG1pbmUsIHRoZWlycykge1xuICBpZiAobWluZSA9PT0gdGhlaXJzKSB7XG4gICAgcmV0dXJuIG1pbmU7XG4gIH0gZWxzZSB7XG4gICAgaW5kZXguY29uZmxpY3QgPSB0cnVlO1xuICAgIHJldHVybiB7bWluZSwgdGhlaXJzfTtcbiAgfVxufVxuXG5mdW5jdGlvbiBodW5rQmVmb3JlKHRlc3QsIGNoZWNrKSB7XG4gIHJldHVybiB0ZXN0Lm9sZFN0YXJ0IDwgY2hlY2sub2xkU3RhcnRcbiAgICAmJiAodGVzdC5vbGRTdGFydCArIHRlc3Qub2xkTGluZXMpIDwgY2hlY2sub2xkU3RhcnQ7XG59XG5cbmZ1bmN0aW9uIGNsb25lSHVuayhodW5rLCBvZmZzZXQpIHtcbiAgcmV0dXJuIHtcbiAgICBvbGRTdGFydDogaHVuay5vbGRTdGFydCwgb2xkTGluZXM6IGh1bmsub2xkTGluZXMsXG4gICAgbmV3U3RhcnQ6IGh1bmsubmV3U3RhcnQgKyBvZmZzZXQsIG5ld0xpbmVzOiBodW5rLm5ld0xpbmVzLFxuICAgIGxpbmVzOiBodW5rLmxpbmVzXG4gIH07XG59XG5cbmZ1bmN0aW9uIG1lcmdlTGluZXMoaHVuaywgbWluZU9mZnNldCwgbWluZUxpbmVzLCB0aGVpck9mZnNldCwgdGhlaXJMaW5lcykge1xuICAvLyBUaGlzIHdpbGwgZ2VuZXJhbGx5IHJlc3VsdCBpbiBhIGNvbmZsaWN0ZWQgaHVuaywgYnV0IHRoZXJlIGFyZSBjYXNlcyB3aGVyZSB0aGUgY29udGV4dFxuICAvLyBpcyB0aGUgb25seSBvdmVybGFwIHdoZXJlIHdlIGNhbiBzdWNjZXNzZnVsbHkgbWVyZ2UgdGhlIGNvbnRlbnQgaGVyZS5cbiAgbGV0IG1pbmUgPSB7b2Zmc2V0OiBtaW5lT2Zmc2V0LCBsaW5lczogbWluZUxpbmVzLCBpbmRleDogMH0sXG4gICAgICB0aGVpciA9IHtvZmZzZXQ6IHRoZWlyT2Zmc2V0LCBsaW5lczogdGhlaXJMaW5lcywgaW5kZXg6IDB9O1xuXG4gIC8vIEhhbmRsZSBhbnkgbGVhZGluZyBjb250ZW50XG4gIGluc2VydExlYWRpbmcoaHVuaywgbWluZSwgdGhlaXIpO1xuICBpbnNlcnRMZWFkaW5nKGh1bmssIHRoZWlyLCBtaW5lKTtcblxuICAvLyBOb3cgaW4gdGhlIG92ZXJsYXAgY29udGVudC4gU2NhbiB0aHJvdWdoIGFuZCBzZWxlY3QgdGhlIGJlc3QgY2hhbmdlcyBmcm9tIGVhY2guXG4gIHdoaWxlIChtaW5lLmluZGV4IDwgbWluZS5saW5lcy5sZW5ndGggJiYgdGhlaXIuaW5kZXggPCB0aGVpci5saW5lcy5sZW5ndGgpIHtcbiAgICBsZXQgbWluZUN1cnJlbnQgPSBtaW5lLmxpbmVzW21pbmUuaW5kZXhdLFxuICAgICAgICB0aGVpckN1cnJlbnQgPSB0aGVpci5saW5lc1t0aGVpci5pbmRleF07XG5cbiAgICBpZiAoKG1pbmVDdXJyZW50WzBdID09PSAnLScgfHwgbWluZUN1cnJlbnRbMF0gPT09ICcrJylcbiAgICAgICAgJiYgKHRoZWlyQ3VycmVudFswXSA9PT0gJy0nIHx8IHRoZWlyQ3VycmVudFswXSA9PT0gJysnKSkge1xuICAgICAgLy8gQm90aCBtb2RpZmllZCAuLi5cbiAgICAgIG11dHVhbENoYW5nZShodW5rLCBtaW5lLCB0aGVpcik7XG4gICAgfSBlbHNlIGlmIChtaW5lQ3VycmVudFswXSA9PT0gJysnICYmIHRoZWlyQ3VycmVudFswXSA9PT0gJyAnKSB7XG4gICAgICAvLyBNaW5lIGluc2VydGVkXG4gICAgICBodW5rLmxpbmVzLnB1c2goLi4uIGNvbGxlY3RDaGFuZ2UobWluZSkpO1xuICAgIH0gZWxzZSBpZiAodGhlaXJDdXJyZW50WzBdID09PSAnKycgJiYgbWluZUN1cnJlbnRbMF0gPT09ICcgJykge1xuICAgICAgLy8gVGhlaXJzIGluc2VydGVkXG4gICAgICBodW5rLmxpbmVzLnB1c2goLi4uIGNvbGxlY3RDaGFuZ2UodGhlaXIpKTtcbiAgICB9IGVsc2UgaWYgKG1pbmVDdXJyZW50WzBdID09PSAnLScgJiYgdGhlaXJDdXJyZW50WzBdID09PSAnICcpIHtcbiAgICAgIC8vIE1pbmUgcmVtb3ZlZCBvciBlZGl0ZWRcbiAgICAgIHJlbW92YWwoaHVuaywgbWluZSwgdGhlaXIpO1xuICAgIH0gZWxzZSBpZiAodGhlaXJDdXJyZW50WzBdID09PSAnLScgJiYgbWluZUN1cnJlbnRbMF0gPT09ICcgJykge1xuICAgICAgLy8gVGhlaXIgcmVtb3ZlZCBvciBlZGl0ZWRcbiAgICAgIHJlbW92YWwoaHVuaywgdGhlaXIsIG1pbmUsIHRydWUpO1xuICAgIH0gZWxzZSBpZiAobWluZUN1cnJlbnQgPT09IHRoZWlyQ3VycmVudCkge1xuICAgICAgLy8gQ29udGV4dCBpZGVudGl0eVxuICAgICAgaHVuay5saW5lcy5wdXNoKG1pbmVDdXJyZW50KTtcbiAgICAgIG1pbmUuaW5kZXgrKztcbiAgICAgIHRoZWlyLmluZGV4Kys7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIENvbnRleHQgbWlzbWF0Y2hcbiAgICAgIGNvbmZsaWN0KGh1bmssIGNvbGxlY3RDaGFuZ2UobWluZSksIGNvbGxlY3RDaGFuZ2UodGhlaXIpKTtcbiAgICB9XG4gIH1cblxuICAvLyBOb3cgcHVzaCBhbnl0aGluZyB0aGF0IG1heSBiZSByZW1haW5pbmdcbiAgaW5zZXJ0VHJhaWxpbmcoaHVuaywgbWluZSk7XG4gIGluc2VydFRyYWlsaW5nKGh1bmssIHRoZWlyKTtcblxuICBjYWxjTGluZUNvdW50KGh1bmspO1xufVxuXG5mdW5jdGlvbiBtdXR1YWxDaGFuZ2UoaHVuaywgbWluZSwgdGhlaXIpIHtcbiAgbGV0IG15Q2hhbmdlcyA9IGNvbGxlY3RDaGFuZ2UobWluZSksXG4gICAgICB0aGVpckNoYW5nZXMgPSBjb2xsZWN0Q2hhbmdlKHRoZWlyKTtcblxuICBpZiAoYWxsUmVtb3ZlcyhteUNoYW5nZXMpICYmIGFsbFJlbW92ZXModGhlaXJDaGFuZ2VzKSkge1xuICAgIC8vIFNwZWNpYWwgY2FzZSBmb3IgcmVtb3ZlIGNoYW5nZXMgdGhhdCBhcmUgc3VwZXJzZXRzIG9mIG9uZSBhbm90aGVyXG4gICAgaWYgKGFycmF5U3RhcnRzV2l0aChteUNoYW5nZXMsIHRoZWlyQ2hhbmdlcylcbiAgICAgICAgJiYgc2tpcFJlbW92ZVN1cGVyc2V0KHRoZWlyLCBteUNoYW5nZXMsIG15Q2hhbmdlcy5sZW5ndGggLSB0aGVpckNoYW5nZXMubGVuZ3RoKSkge1xuICAgICAgaHVuay5saW5lcy5wdXNoKC4uLiBteUNoYW5nZXMpO1xuICAgICAgcmV0dXJuO1xuICAgIH0gZWxzZSBpZiAoYXJyYXlTdGFydHNXaXRoKHRoZWlyQ2hhbmdlcywgbXlDaGFuZ2VzKVxuICAgICAgICAmJiBza2lwUmVtb3ZlU3VwZXJzZXQobWluZSwgdGhlaXJDaGFuZ2VzLCB0aGVpckNoYW5nZXMubGVuZ3RoIC0gbXlDaGFuZ2VzLmxlbmd0aCkpIHtcbiAgICAgIGh1bmsubGluZXMucHVzaCguLi4gdGhlaXJDaGFuZ2VzKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gIH0gZWxzZSBpZiAoYXJyYXlFcXVhbChteUNoYW5nZXMsIHRoZWlyQ2hhbmdlcykpIHtcbiAgICBodW5rLmxpbmVzLnB1c2goLi4uIG15Q2hhbmdlcyk7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29uZmxpY3QoaHVuaywgbXlDaGFuZ2VzLCB0aGVpckNoYW5nZXMpO1xufVxuXG5mdW5jdGlvbiByZW1vdmFsKGh1bmssIG1pbmUsIHRoZWlyLCBzd2FwKSB7XG4gIGxldCBteUNoYW5nZXMgPSBjb2xsZWN0Q2hhbmdlKG1pbmUpLFxuICAgICAgdGhlaXJDaGFuZ2VzID0gY29sbGVjdENvbnRleHQodGhlaXIsIG15Q2hhbmdlcyk7XG4gIGlmICh0aGVpckNoYW5nZXMubWVyZ2VkKSB7XG4gICAgaHVuay5saW5lcy5wdXNoKC4uLiB0aGVpckNoYW5nZXMubWVyZ2VkKTtcbiAgfSBlbHNlIHtcbiAgICBjb25mbGljdChodW5rLCBzd2FwID8gdGhlaXJDaGFuZ2VzIDogbXlDaGFuZ2VzLCBzd2FwID8gbXlDaGFuZ2VzIDogdGhlaXJDaGFuZ2VzKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBjb25mbGljdChodW5rLCBtaW5lLCB0aGVpcikge1xuICBodW5rLmNvbmZsaWN0ID0gdHJ1ZTtcbiAgaHVuay5saW5lcy5wdXNoKHtcbiAgICBjb25mbGljdDogdHJ1ZSxcbiAgICBtaW5lOiBtaW5lLFxuICAgIHRoZWlyczogdGhlaXJcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIGluc2VydExlYWRpbmcoaHVuaywgaW5zZXJ0LCB0aGVpcikge1xuICB3aGlsZSAoaW5zZXJ0Lm9mZnNldCA8IHRoZWlyLm9mZnNldCAmJiBpbnNlcnQuaW5kZXggPCBpbnNlcnQubGluZXMubGVuZ3RoKSB7XG4gICAgbGV0IGxpbmUgPSBpbnNlcnQubGluZXNbaW5zZXJ0LmluZGV4KytdO1xuICAgIGh1bmsubGluZXMucHVzaChsaW5lKTtcbiAgICBpbnNlcnQub2Zmc2V0Kys7XG4gIH1cbn1cbmZ1bmN0aW9uIGluc2VydFRyYWlsaW5nKGh1bmssIGluc2VydCkge1xuICB3aGlsZSAoaW5zZXJ0LmluZGV4IDwgaW5zZXJ0LmxpbmVzLmxlbmd0aCkge1xuICAgIGxldCBsaW5lID0gaW5zZXJ0LmxpbmVzW2luc2VydC5pbmRleCsrXTtcbiAgICBodW5rLmxpbmVzLnB1c2gobGluZSk7XG4gIH1cbn1cblxuZnVuY3Rpb24gY29sbGVjdENoYW5nZShzdGF0ZSkge1xuICBsZXQgcmV0ID0gW10sXG4gICAgICBvcGVyYXRpb24gPSBzdGF0ZS5saW5lc1tzdGF0ZS5pbmRleF1bMF07XG4gIHdoaWxlIChzdGF0ZS5pbmRleCA8IHN0YXRlLmxpbmVzLmxlbmd0aCkge1xuICAgIGxldCBsaW5lID0gc3RhdGUubGluZXNbc3RhdGUuaW5kZXhdO1xuXG4gICAgLy8gR3JvdXAgYWRkaXRpb25zIHRoYXQgYXJlIGltbWVkaWF0ZWx5IGFmdGVyIHN1YnRyYWN0aW9ucyBhbmQgdHJlYXQgdGhlbSBhcyBvbmUgXCJhdG9taWNcIiBtb2RpZnkgY2hhbmdlLlxuICAgIGlmIChvcGVyYXRpb24gPT09ICctJyAmJiBsaW5lWzBdID09PSAnKycpIHtcbiAgICAgIG9wZXJhdGlvbiA9ICcrJztcbiAgICB9XG5cbiAgICBpZiAob3BlcmF0aW9uID09PSBsaW5lWzBdKSB7XG4gICAgICByZXQucHVzaChsaW5lKTtcbiAgICAgIHN0YXRlLmluZGV4Kys7XG4gICAgfSBlbHNlIHtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiByZXQ7XG59XG5mdW5jdGlvbiBjb2xsZWN0Q29udGV4dChzdGF0ZSwgbWF0Y2hDaGFuZ2VzKSB7XG4gIGxldCBjaGFuZ2VzID0gW10sXG4gICAgICBtZXJnZWQgPSBbXSxcbiAgICAgIG1hdGNoSW5kZXggPSAwLFxuICAgICAgY29udGV4dENoYW5nZXMgPSBmYWxzZSxcbiAgICAgIGNvbmZsaWN0ZWQgPSBmYWxzZTtcbiAgd2hpbGUgKG1hdGNoSW5kZXggPCBtYXRjaENoYW5nZXMubGVuZ3RoXG4gICAgICAgICYmIHN0YXRlLmluZGV4IDwgc3RhdGUubGluZXMubGVuZ3RoKSB7XG4gICAgbGV0IGNoYW5nZSA9IHN0YXRlLmxpbmVzW3N0YXRlLmluZGV4XSxcbiAgICAgICAgbWF0Y2ggPSBtYXRjaENoYW5nZXNbbWF0Y2hJbmRleF07XG5cbiAgICAvLyBPbmNlIHdlJ3ZlIGhpdCBvdXIgYWRkLCB0aGVuIHdlIGFyZSBkb25lXG4gICAgaWYgKG1hdGNoWzBdID09PSAnKycpIHtcbiAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIGNvbnRleHRDaGFuZ2VzID0gY29udGV4dENoYW5nZXMgfHwgY2hhbmdlWzBdICE9PSAnICc7XG5cbiAgICBtZXJnZWQucHVzaChtYXRjaCk7XG4gICAgbWF0Y2hJbmRleCsrO1xuXG4gICAgLy8gQ29uc3VtZSBhbnkgYWRkaXRpb25zIGluIHRoZSBvdGhlciBibG9jayBhcyBhIGNvbmZsaWN0IHRvIGF0dGVtcHRcbiAgICAvLyB0byBwdWxsIGluIHRoZSByZW1haW5pbmcgY29udGV4dCBhZnRlciB0aGlzXG4gICAgaWYgKGNoYW5nZVswXSA9PT0gJysnKSB7XG4gICAgICBjb25mbGljdGVkID0gdHJ1ZTtcblxuICAgICAgd2hpbGUgKGNoYW5nZVswXSA9PT0gJysnKSB7XG4gICAgICAgIGNoYW5nZXMucHVzaChjaGFuZ2UpO1xuICAgICAgICBjaGFuZ2UgPSBzdGF0ZS5saW5lc1srK3N0YXRlLmluZGV4XTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAobWF0Y2guc3Vic3RyKDEpID09PSBjaGFuZ2Uuc3Vic3RyKDEpKSB7XG4gICAgICBjaGFuZ2VzLnB1c2goY2hhbmdlKTtcbiAgICAgIHN0YXRlLmluZGV4Kys7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbmZsaWN0ZWQgPSB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIGlmICgobWF0Y2hDaGFuZ2VzW21hdGNoSW5kZXhdIHx8ICcnKVswXSA9PT0gJysnXG4gICAgICAmJiBjb250ZXh0Q2hhbmdlcykge1xuICAgIGNvbmZsaWN0ZWQgPSB0cnVlO1xuICB9XG5cbiAgaWYgKGNvbmZsaWN0ZWQpIHtcbiAgICByZXR1cm4gY2hhbmdlcztcbiAgfVxuXG4gIHdoaWxlIChtYXRjaEluZGV4IDwgbWF0Y2hDaGFuZ2VzLmxlbmd0aCkge1xuICAgIG1lcmdlZC5wdXNoKG1hdGNoQ2hhbmdlc1ttYXRjaEluZGV4KytdKTtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgbWVyZ2VkLFxuICAgIGNoYW5nZXNcbiAgfTtcbn1cblxuZnVuY3Rpb24gYWxsUmVtb3ZlcyhjaGFuZ2VzKSB7XG4gIHJldHVybiBjaGFuZ2VzLnJlZHVjZShmdW5jdGlvbihwcmV2LCBjaGFuZ2UpIHtcbiAgICByZXR1cm4gcHJldiAmJiBjaGFuZ2VbMF0gPT09ICctJztcbiAgfSwgdHJ1ZSk7XG59XG5mdW5jdGlvbiBza2lwUmVtb3ZlU3VwZXJzZXQoc3RhdGUsIHJlbW92ZUNoYW5nZXMsIGRlbHRhKSB7XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgZGVsdGE7IGkrKykge1xuICAgIGxldCBjaGFuZ2VDb250ZW50ID0gcmVtb3ZlQ2hhbmdlc1tyZW1vdmVDaGFuZ2VzLmxlbmd0aCAtIGRlbHRhICsgaV0uc3Vic3RyKDEpO1xuICAgIGlmIChzdGF0ZS5saW5lc1tzdGF0ZS5pbmRleCArIGldICE9PSAnICcgKyBjaGFuZ2VDb250ZW50KSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgc3RhdGUuaW5kZXggKz0gZGVsdGE7XG4gIHJldHVybiB0cnVlO1xufVxuXG5mdW5jdGlvbiBjYWxjT2xkTmV3TGluZUNvdW50KGxpbmVzKSB7XG4gIGxldCBvbGRMaW5lcyA9IDA7XG4gIGxldCBuZXdMaW5lcyA9IDA7XG5cbiAgbGluZXMuZm9yRWFjaChmdW5jdGlvbihsaW5lKSB7XG4gICAgaWYgKHR5cGVvZiBsaW5lICE9PSAnc3RyaW5nJykge1xuICAgICAgbGV0IG15Q291bnQgPSBjYWxjT2xkTmV3TGluZUNvdW50KGxpbmUubWluZSk7XG4gICAgICBsZXQgdGhlaXJDb3VudCA9IGNhbGNPbGROZXdMaW5lQ291bnQobGluZS50aGVpcnMpO1xuXG4gICAgICBpZiAob2xkTGluZXMgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBpZiAobXlDb3VudC5vbGRMaW5lcyA9PT0gdGhlaXJDb3VudC5vbGRMaW5lcykge1xuICAgICAgICAgIG9sZExpbmVzICs9IG15Q291bnQub2xkTGluZXM7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgb2xkTGluZXMgPSB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKG5ld0xpbmVzICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgaWYgKG15Q291bnQubmV3TGluZXMgPT09IHRoZWlyQ291bnQubmV3TGluZXMpIHtcbiAgICAgICAgICBuZXdMaW5lcyArPSBteUNvdW50Lm5ld0xpbmVzO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIG5ld0xpbmVzID0gdW5kZWZpbmVkO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChuZXdMaW5lcyAhPT0gdW5kZWZpbmVkICYmIChsaW5lWzBdID09PSAnKycgfHwgbGluZVswXSA9PT0gJyAnKSkge1xuICAgICAgICBuZXdMaW5lcysrO1xuICAgICAgfVxuICAgICAgaWYgKG9sZExpbmVzICE9PSB1bmRlZmluZWQgJiYgKGxpbmVbMF0gPT09ICctJyB8fCBsaW5lWzBdID09PSAnICcpKSB7XG4gICAgICAgIG9sZExpbmVzKys7XG4gICAgICB9XG4gICAgfVxuICB9KTtcblxuICByZXR1cm4ge29sZExpbmVzLCBuZXdMaW5lc307XG59XG4iXX0=\n","/*istanbul ignore start*/\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.parsePatch = parsePatch;\n\n/*istanbul ignore end*/\nfunction parsePatch(uniDiff) {\n /*istanbul ignore start*/\n var\n /*istanbul ignore end*/\n options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var diffstr = uniDiff.split(/\\r\\n|[\\n\\v\\f\\r\\x85]/),\n delimiters = uniDiff.match(/\\r\\n|[\\n\\v\\f\\r\\x85]/g) || [],\n list = [],\n i = 0;\n\n function parseIndex() {\n var index = {};\n list.push(index); // Parse diff metadata\n\n while (i < diffstr.length) {\n var line = diffstr[i]; // File header found, end parsing diff metadata\n\n if (/^(\\-\\-\\-|\\+\\+\\+|@@)\\s/.test(line)) {\n break;\n } // Diff index\n\n\n var header = /^(?:Index:|diff(?: -r \\w+)+)\\s+(.+?)\\s*$/.exec(line);\n\n if (header) {\n index.index = header[1];\n }\n\n i++;\n } // Parse file headers if they are defined. Unified diff requires them, but\n // there's no technical issues to have an isolated hunk without file header\n\n\n parseFileHeader(index);\n parseFileHeader(index); // Parse hunks\n\n index.hunks = [];\n\n while (i < diffstr.length) {\n var _line = diffstr[i];\n\n if (/^(Index:|diff|\\-\\-\\-|\\+\\+\\+)\\s/.test(_line)) {\n break;\n } else if (/^@@/.test(_line)) {\n index.hunks.push(parseHunk());\n } else if (_line && options.strict) {\n // Ignore unexpected content unless in strict mode\n throw new Error('Unknown line ' + (i + 1) + ' ' + JSON.stringify(_line));\n } else {\n i++;\n }\n }\n } // Parses the --- and +++ headers, if none are found, no lines\n // are consumed.\n\n\n function parseFileHeader(index) {\n var fileHeader = /^(---|\\+\\+\\+)\\s+(.*)$/.exec(diffstr[i]);\n\n if (fileHeader) {\n var keyPrefix = fileHeader[1] === '---' ? 'old' : 'new';\n var data = fileHeader[2].split('\\t', 2);\n var fileName = data[0].replace(/\\\\\\\\/g, '\\\\');\n\n if (/^\".*\"$/.test(fileName)) {\n fileName = fileName.substr(1, fileName.length - 2);\n }\n\n index[keyPrefix + 'FileName'] = fileName;\n index[keyPrefix + 'Header'] = (data[1] || '').trim();\n i++;\n }\n } // Parses a hunk\n // This assumes that we are at the start of a hunk.\n\n\n function parseHunk() {\n var chunkHeaderIndex = i,\n chunkHeaderLine = diffstr[i++],\n chunkHeader = chunkHeaderLine.split(/@@ -(\\d+)(?:,(\\d+))? \\+(\\d+)(?:,(\\d+))? @@/);\n var hunk = {\n oldStart: +chunkHeader[1],\n oldLines: typeof chunkHeader[2] === 'undefined' ? 1 : +chunkHeader[2],\n newStart: +chunkHeader[3],\n newLines: typeof chunkHeader[4] === 'undefined' ? 1 : +chunkHeader[4],\n lines: [],\n linedelimiters: []\n }; // Unified Diff Format quirk: If the chunk size is 0,\n // the first number is one lower than one would expect.\n // https://www.artima.com/weblogs/viewpost.jsp?thread=164293\n\n if (hunk.oldLines === 0) {\n hunk.oldStart += 1;\n }\n\n if (hunk.newLines === 0) {\n hunk.newStart += 1;\n }\n\n var addCount = 0,\n removeCount = 0;\n\n for (; i < diffstr.length; i++) {\n // Lines starting with '---' could be mistaken for the \"remove line\" operation\n // But they could be the header for the next file. Therefore prune such cases out.\n if (diffstr[i].indexOf('--- ') === 0 && i + 2 < diffstr.length && diffstr[i + 1].indexOf('+++ ') === 0 && diffstr[i + 2].indexOf('@@') === 0) {\n break;\n }\n\n var operation = diffstr[i].length == 0 && i != diffstr.length - 1 ? ' ' : diffstr[i][0];\n\n if (operation === '+' || operation === '-' || operation === ' ' || operation === '\\\\') {\n hunk.lines.push(diffstr[i]);\n hunk.linedelimiters.push(delimiters[i] || '\\n');\n\n if (operation === '+') {\n addCount++;\n } else if (operation === '-') {\n removeCount++;\n } else if (operation === ' ') {\n addCount++;\n removeCount++;\n }\n } else {\n break;\n }\n } // Handle the empty block count case\n\n\n if (!addCount && hunk.newLines === 1) {\n hunk.newLines = 0;\n }\n\n if (!removeCount && hunk.oldLines === 1) {\n hunk.oldLines = 0;\n } // Perform optional sanity checking\n\n\n if (options.strict) {\n if (addCount !== hunk.newLines) {\n throw new Error('Added line count did not match for hunk at line ' + (chunkHeaderIndex + 1));\n }\n\n if (removeCount !== hunk.oldLines) {\n throw new Error('Removed line count did not match for hunk at line ' + (chunkHeaderIndex + 1));\n }\n }\n\n return hunk;\n }\n\n while (i < diffstr.length) {\n parseIndex();\n }\n\n return list;\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wYXRjaC9wYXJzZS5qcyJdLCJuYW1lcyI6WyJwYXJzZVBhdGNoIiwidW5pRGlmZiIsIm9wdGlvbnMiLCJkaWZmc3RyIiwic3BsaXQiLCJkZWxpbWl0ZXJzIiwibWF0Y2giLCJsaXN0IiwiaSIsInBhcnNlSW5kZXgiLCJpbmRleCIsInB1c2giLCJsZW5ndGgiLCJsaW5lIiwidGVzdCIsImhlYWRlciIsImV4ZWMiLCJwYXJzZUZpbGVIZWFkZXIiLCJodW5rcyIsInBhcnNlSHVuayIsInN0cmljdCIsIkVycm9yIiwiSlNPTiIsInN0cmluZ2lmeSIsImZpbGVIZWFkZXIiLCJrZXlQcmVmaXgiLCJkYXRhIiwiZmlsZU5hbWUiLCJyZXBsYWNlIiwic3Vic3RyIiwidHJpbSIsImNodW5rSGVhZGVySW5kZXgiLCJjaHVua0hlYWRlckxpbmUiLCJjaHVua0hlYWRlciIsImh1bmsiLCJvbGRTdGFydCIsIm9sZExpbmVzIiwibmV3U3RhcnQiLCJuZXdMaW5lcyIsImxpbmVzIiwibGluZWRlbGltaXRlcnMiLCJhZGRDb3VudCIsInJlbW92ZUNvdW50IiwiaW5kZXhPZiIsIm9wZXJhdGlvbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQU8sU0FBU0EsVUFBVCxDQUFvQkMsT0FBcEIsRUFBMkM7QUFBQTtBQUFBO0FBQUE7QUFBZEMsRUFBQUEsT0FBYyx1RUFBSixFQUFJO0FBQ2hELE1BQUlDLE9BQU8sR0FBR0YsT0FBTyxDQUFDRyxLQUFSLENBQWMscUJBQWQsQ0FBZDtBQUFBLE1BQ0lDLFVBQVUsR0FBR0osT0FBTyxDQUFDSyxLQUFSLENBQWMsc0JBQWQsS0FBeUMsRUFEMUQ7QUFBQSxNQUVJQyxJQUFJLEdBQUcsRUFGWDtBQUFBLE1BR0lDLENBQUMsR0FBRyxDQUhSOztBQUtBLFdBQVNDLFVBQVQsR0FBc0I7QUFDcEIsUUFBSUMsS0FBSyxHQUFHLEVBQVo7QUFDQUgsSUFBQUEsSUFBSSxDQUFDSSxJQUFMLENBQVVELEtBQVYsRUFGb0IsQ0FJcEI7O0FB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QUwsS0FBa0IsQ0FBbkMsRUFBc0M7QUFDcENKLE1BQUFBLElBQUksQ0FBQ0ksUUFBTCxHQUFnQixDQUFoQjtBQUNEOztBQUNELFFBQUksQ0FBQ0ksV0FBRCxJQUFnQlIsSUFBSSxDQUFDRSxRQUFMLEtBQWtCLENBQXRDLEVBQXlDO0FBQ3ZDRixNQUFBQSxJQUFJLENBQUNFLFFBQUwsR0FBZ0IsQ0FBaEI7QUFDRCxLQTVEa0IsQ0E4RG5COzs7QUFDQSxRQUFJbEMsT0FBTyxDQUFDa0IsTUFBWixFQUFvQjtBQUNsQixVQUFJcUIsUUFBUSxLQUFLUCxJQUFJLENBQUNJLFFBQXRCLEVBQWdDO0FBQzlCLGNBQU0sSUFBSWpCLEtBQUosQ0FBVSxzREFBc0RVLGdCQUFnQixHQUFHLENBQXpFLENBQVYsQ0FBTjtBQUNEOztBQUNELFVBQUlXLFdBQVcsS0FBS1IsSUFBSSxDQUFDRSxRQUF6QixFQUFtQztBQUNqQyxjQUFNLElBQUlmLEtBQUosQ0FBVSx3REFBd0RVLGdCQUFnQixHQUFHLENBQTNFLENBQVYsQ0FBTjtBQUNEO0FBQ0Y7O0FBRUQsV0FBT0csSUFBUDtBQUNEOztBQUVELFNBQU8xQixDQUFDLEdBQUdMLE9BQU8sQ0FBQ1MsTUFBbkIsRUFBMkI7QUFDekJILElBQUFBLFVBQVU7QUFDWDs7QUFFRCxTQUFPRixJQUFQO0FBQ0QiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZnVuY3Rpb24gcGFyc2VQYXRjaCh1bmlEaWZmLCBvcHRpb25zID0ge30pIHtcbiAgbGV0IGRpZmZzdHIgPSB1bmlEaWZmLnNwbGl0KC9cXHJcXG58W1xcblxcdlxcZlxcclxceDg1XS8pLFxuICAgICAgZGVsaW1pdGVycyA9IHVuaURpZmYubWF0Y2goL1xcclxcbnxbXFxuXFx2XFxmXFxyXFx4ODVdL2cpIHx8IFtdLFxuICAgICAgbGlzdCA9IFtdLFxuICAgICAgaSA9IDA7XG5cbiAgZnVuY3Rpb24gcGFyc2VJbmRleCgpIHtcbiAgICBsZXQgaW5kZXggPSB7fTtcbiAgICBsaXN0LnB1c2goaW5kZXgpO1xuXG4gICAgLy8gUGFyc2UgZGlmZiBtZXRhZGF0YVxuICAgIHdoaWxlIChpIDwgZGlmZnN0ci5sZW5ndGgpIHtcbiAgICAgIGxldCBsaW5lID0gZGlmZnN0cltpXTtcblxuICAgICAgLy8gRmlsZSBoZWFkZXIgZm91bmQsIGVuZCBwYXJzaW5nIGRpZmYgbWV0YWRhdGFcbiAgICAgIGlmICgoL14oXFwtXFwtXFwtfFxcK1xcK1xcK3xAQClcXHMvKS50ZXN0KGxpbmUpKSB7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuXG4gICAgICAvLyBEaWZmIGluZGV4XG4gICAgICBsZXQgaGVhZGVyID0gKC9eKD86SW5kZXg6fGRpZmYoPzogLXIgXFx3KykrKVxccysoLis/KVxccyokLykuZXhlYyhsaW5lKTtcbiAgICAgIGlmIChoZWFkZXIpIHtcbiAgICAgICAgaW5kZXguaW5kZXggPSBoZWFkZXJbMV07XG4gICAgICB9XG5cbiAgICAgIGkrKztcbiAgICB9XG5cbiAgICAvLyBQYXJzZSBmaWxlIGhlYWRlcnMgaWYgdGhleSBhcmUgZGVmaW5lZC4gVW5pZmllZCBkaWZmIHJlcXVpcmVzIHRoZW0sIGJ1dFxuICAgIC8vIHRoZXJlJ3Mgbm8gdGVjaG5pY2FsIGlzc3VlcyB0byBoYXZlIGFuIGlzb2xhdGVkIGh1bmsgd2l0aG91dCBmaWxlIGhlYWRlclxuICAgIHBhcnNlRmlsZUhlYWRlcihpbmRleCk7XG4gICAgcGFyc2VGaWxlSGVhZGVyKGluZGV4KTtcblxuICAgIC8vIFBhcnNlIGh1bmtzXG4gICAgaW5kZXguaHVua3MgPSBbXTtcblxuICAgIHdoaWxlIChpIDwgZGlmZnN0ci5sZW5ndGgpIHtcbiAgICAgIGxldCBsaW5lID0gZGlmZnN0cltpXTtcblxuICAgICAgaWYgKCgvXihJbmRleDp8ZGlmZnxcXC1cXC1cXC18XFwrXFwrXFwrKVxccy8pLnRlc3QobGluZSkpIHtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9IGVsc2UgaWYgKCgvXkBALykudGVzdChsaW5lKSkge1xuICAgICAgICBpbmRleC5odW5rcy5wdXNoKHBhcnNlSHVuaygpKTtcbiAgICAgIH0gZWxzZSBpZiAobGluZSAmJiBvcHRpb25zLnN0cmljdCkge1xuICAgICAgICAvLyBJZ25vcmUgdW5leHBlY3RlZCBjb250ZW50IHVubGVzcyBpbiBzdHJpY3QgbW9kZVxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1Vua25vd24gbGluZSAnICsgKGkgKyAxKSArICcgJyArIEpTT04uc3RyaW5naWZ5KGxpbmUpKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGkrKztcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvLyBQYXJzZXMgdGhlIC0tLSBhbmQgKysrIGhlYWRlcnMsIGlmIG5vbmUgYXJlIGZvdW5kLCBubyBsaW5lc1xuICAvLyBhcmUgY29uc3VtZWQuXG4gIGZ1bmN0aW9uIHBhcnNlRmlsZUhlYWRlcihpbmRleCkge1xuICAgIGNvbnN0IGZpbGVIZWFkZXIgPSAoL14oLS0tfFxcK1xcK1xcKylcXHMrKC4qKSQvKS5leGVjKGRpZmZzdHJbaV0pO1xuICAgIGlmIChmaWxlSGVhZGVyKSB7XG4gICAgICBsZXQga2V5UHJlZml4ID0gZmlsZUhlYWRlclsxXSA9PT0gJy0tLScgPyAnb2xkJyA6ICduZXcnO1xuICAgICAgY29uc3QgZGF0YSA9IGZpbGVIZWFkZXJbMl0uc3BsaXQoJ1xcdCcsIDIpO1xuICAgICAgbGV0IGZpbGVOYW1lID0gZGF0YVswXS5yZXBsYWNlKC9cXFxcXFxcXC9nLCAnXFxcXCcpO1xuICAgICAgaWYgKCgvXlwiLipcIiQvKS50ZXN0KGZpbGVOYW1lKSkge1xuICAgICAgICBmaWxlTmFtZSA9IGZpbGVOYW1lLnN1YnN0cigxLCBmaWxlTmFtZS5sZW5ndGggLSAyKTtcbiAgICAgIH1cbiAgICAgIGluZGV4W2tleVByZWZpeCArICdGaWxlTmFtZSddID0gZmlsZU5hbWU7XG4gICAgICBpbmRleFtrZXlQcmVmaXggKyAnSGVhZGVyJ10gPSAoZGF0YVsxXSB8fCAnJykudHJpbSgpO1xuXG4gICAgICBpKys7XG4gICAgfVxuICB9XG5cbiAgLy8gUGFyc2VzIGEgaHVua1xuICAvLyBUaGlzIGFzc3VtZXMgdGhhdCB3ZSBhcmUgYXQgdGhlIHN0YXJ0IG9mIGEgaHVuay5cbiAgZnVuY3Rpb24gcGFyc2VIdW5rKCkge1xuICAgIGxldCBjaHVua0hlYWRlckluZGV4ID0gaSxcbiAgICAgICAgY2h1bmtIZWFkZXJMaW5lID0gZGlmZnN0cltpKytdLFxuICAgICAgICBjaHVua0hlYWRlciA9IGNodW5rSGVhZGVyTGluZS5zcGxpdCgvQEAgLShcXGQrKSg/OiwoXFxkKykpPyBcXCsoXFxkKykoPzosKFxcZCspKT8gQEAvKTtcblxuICAgIGxldCBodW5rID0ge1xuICAgICAgb2xkU3RhcnQ6ICtjaHVua0hlYWRlclsxXSxcbiAgICAgIG9sZExpbmVzOiB0eXBlb2YgY2h1bmtIZWFkZXJbMl0gPT09ICd1bmRlZmluZWQnID8gMSA6ICtjaHVua0hlYWRlclsyXSxcbiAgICAgIG5ld1N0YXJ0OiArY2h1bmtIZWFkZXJbM10sXG4gICAgICBuZXdMaW5lczogdHlwZW9mIGNodW5rSGVhZGVyWzRdID09PSAndW5kZWZpbmVkJyA/IDEgOiArY2h1bmtIZWFkZXJbNF0sXG4gICAgICBsaW5lczogW10sXG4gICAgICBsaW5lZGVsaW1pdGVyczogW11cbiAgICB9O1xuXG4gICAgLy8gVW5pZmllZCBEaWZmIEZvcm1hdCBxdWlyazogSWYgdGhlIGNodW5rIHNpemUgaXMgMCxcbiAgICAvLyB0aGUgZmlyc3QgbnVtYmVyIGlzIG9uZSBsb3dlciB0aGFuIG9uZSB3b3VsZCBleHBlY3QuXG4gICAgLy8gaHR0cHM6Ly93d3cuYXJ0aW1hLmNvbS93ZWJsb2dzL3ZpZXdwb3N0LmpzcD90aHJlYWQ9MTY0MjkzXG4gICAgaWYgKGh1bmsub2xkTGluZXMgPT09IDApIHtcbiAgICAgIGh1bmsub2xkU3RhcnQgKz0gMTtcbiAgICB9XG4gICAgaWYgKGh1bmsubmV3TGluZXMgPT09IDApIHtcbiAgICAgIGh1bmsubmV3U3RhcnQgKz0gMTtcbiAgICB9XG5cbiAgICBsZXQgYWRkQ291bnQgPSAwLFxuICAgICAgICByZW1vdmVDb3VudCA9IDA7XG4gICAgZm9yICg7IGkgPCBkaWZmc3RyLmxlbmd0aDsgaSsrKSB7XG4gICAgICAvLyBMaW5lcyBzdGFydGluZyB3aXRoICctLS0nIGNvdWxkIGJlIG1pc3Rha2VuIGZvciB0aGUgXCJyZW1vdmUgbGluZVwiIG9wZXJhdGlvblxuICAgICAgLy8gQnV0IHRoZXkgY291bGQgYmUgdGhlIGhlYWRlciBmb3IgdGhlIG5leHQgZmlsZS4gVGhlcmVmb3JlIHBydW5lIHN1Y2ggY2FzZXMgb3V0LlxuICAgICAgaWYgKGRpZmZzdHJbaV0uaW5kZXhPZignLS0tICcpID09PSAwXG4gICAgICAgICAgICAmJiAoaSArIDIgPCBkaWZmc3RyLmxlbmd0aClcbiAgICAgICAgICAgICYmIGRpZmZzdHJbaSArIDFdLmluZGV4T2YoJysrKyAnKSA9PT0gMFxuICAgICAgICAgICAgJiYgZGlmZnN0cltpICsgMl0uaW5kZXhPZignQEAnKSA9PT0gMCkge1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgbGV0IG9wZXJhdGlvbiA9IChkaWZmc3RyW2ldLmxlbmd0aCA9PSAwICYmIGkgIT0gKGRpZmZzdHIubGVuZ3RoIC0gMSkpID8gJyAnIDogZGlmZnN0cltpXVswXTtcblxuICAgICAgaWYgKG9wZXJhdGlvbiA9PT0gJysnIHx8IG9wZXJhdGlvbiA9PT0gJy0nIHx8IG9wZXJhdGlvbiA9PT0gJyAnIHx8IG9wZXJhdGlvbiA9PT0gJ1xcXFwnKSB7XG4gICAgICAgIGh1bmsubGluZXMucHVzaChkaWZmc3RyW2ldKTtcbiAgICAgICAgaHVuay5saW5lZGVsaW1pdGVycy5wdXNoKGRlbGltaXRlcnNbaV0gfHwgJ1xcbicpO1xuXG4gICAgICAgIGlmIChvcGVyYXRpb24gPT09ICcrJykge1xuICAgICAgICAgIGFkZENvdW50Kys7XG4gICAgICAgIH0gZWxzZSBpZiAob3BlcmF0aW9uID09PSAnLScpIHtcbiAgICAgICAgICByZW1vdmVDb3VudCsrO1xuICAgICAgICB9IGVsc2UgaWYgKG9wZXJhdGlvbiA9PT0gJyAnKSB7XG4gICAgICAgICAgYWRkQ291bnQrKztcbiAgICAgICAgICByZW1vdmVDb3VudCsrO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBIYW5kbGUgdGhlIGVtcHR5IGJsb2NrIGNvdW50IGNhc2VcbiAgICBpZiAoIWFkZENvdW50ICYmIGh1bmsubmV3TGluZXMgPT09IDEpIHtcbiAgICAgIGh1bmsubmV3TGluZXMgPSAwO1xuICAgIH1cbiAgICBpZiAoIXJlbW92ZUNvdW50ICYmIGh1bmsub2xkTGluZXMgPT09IDEpIHtcbiAgICAgIGh1bmsub2xkTGluZXMgPSAwO1xuICAgIH1cblxuICAgIC8vIFBlcmZvcm0gb3B0aW9uYWwgc2FuaXR5IGNoZWNraW5nXG4gICAgaWYgKG9wdGlvbnMuc3RyaWN0KSB7XG4gICAgICBpZiAoYWRkQ291bnQgIT09IGh1bmsubmV3TGluZXMpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdBZGRlZCBsaW5lIGNvdW50IGRpZCBub3QgbWF0Y2ggZm9yIGh1bmsgYXQgbGluZSAnICsgKGNodW5rSGVhZGVySW5kZXggKyAxKSk7XG4gICAgICB9XG4gICAgICBpZiAocmVtb3ZlQ291bnQgIT09IGh1bmsub2xkTGluZXMpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdSZW1vdmVkIGxpbmUgY291bnQgZGlkIG5vdCBtYXRjaCBmb3IgaHVuayBhdCBsaW5lICcgKyAoY2h1bmtIZWFkZXJJbmRleCArIDEpKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gaHVuaztcbiAgfVxuXG4gIHdoaWxlIChpIDwgZGlmZnN0ci5sZW5ndGgpIHtcbiAgICBwYXJzZUluZGV4KCk7XG4gIH1cblxuICByZXR1cm4gbGlzdDtcbn1cbiJdfQ==\n","/*istanbul ignore start*/\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.reversePatch = reversePatch;\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n/*istanbul ignore end*/\nfunction reversePatch(structuredPatch) {\n if (Array.isArray(structuredPatch)) {\n return structuredPatch.map(reversePatch).reverse();\n }\n\n return (\n /*istanbul ignore start*/\n _objectSpread(_objectSpread({},\n /*istanbul ignore end*/\n structuredPatch), {}, {\n oldFileName: structuredPatch.newFileName,\n oldHeader: structuredPatch.newHeader,\n newFileName: structuredPatch.oldFileName,\n newHeader: structuredPatch.oldHeader,\n hunks: structuredPatch.hunks.map(function (hunk) {\n return {\n oldLines: hunk.newLines,\n oldStart: hunk.newStart,\n newLines: hunk.oldLines,\n newStart: hunk.oldStart,\n linedelimiters: hunk.linedelimiters,\n lines: hunk.lines.map(function (l) {\n if (l.startsWith('-')) {\n return (\n /*istanbul ignore start*/\n \"+\".concat(\n /*istanbul ignore end*/\n l.slice(1))\n );\n }\n\n if (l.startsWith('+')) {\n return (\n /*istanbul ignore start*/\n \"-\".concat(\n /*istanbul ignore end*/\n l.slice(1))\n );\n }\n\n return l;\n })\n };\n })\n })\n );\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wYXRjaC9yZXZlcnNlLmpzIl0sIm5hbWVzIjpbInJldmVyc2VQYXRjaCIsInN0cnVjdHVyZWRQYXRjaCIsIkFycmF5IiwiaXNBcnJheSIsIm1hcCIsInJldmVyc2UiLCJvbGRGaWxlTmFtZSIsIm5ld0ZpbGVOYW1lIiwib2xkSGVhZGVyIiwibmV3SGVhZGVyIiwiaHVua3MiLCJodW5rIiwib2xkTGluZXMiLCJuZXdMaW5lcyIsIm9sZFN0YXJ0IiwibmV3U3RhcnQiLCJsaW5lZGVsaW1pdGVycyIsImxpbmVzIiwibCIsInN0YXJ0c1dpdGgiLCJzbGljZSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7O0FBQU8sU0FBU0EsWUFBVCxDQUFzQkMsZUFBdEIsRUFBdUM7QUFDNUMsTUFBSUMsS0FBSyxDQUFDQyxPQUFOLENBQWNGLGVBQWQsQ0FBSixFQUFvQztBQUNsQyxXQUFPQSxlQUFlLENBQUNHLEdBQWhCLENBQW9CSixZQUFwQixFQUFrQ0ssT0FBbEMsRUFBUDtBQUNEOztBQUVEO0FBQUE7QUFBQTtBQUFBO0FBQ0tKLElBQUFBLGVBREw7QUFFRUssTUFBQUEsV0FBVyxFQUFFTCxlQUFlLENBQUNNLFdBRi9CO0FBR0VDLE1BQUFBLFNBQVMsRUFBRVAsZUFBZSxDQUFDUSxTQUg3QjtBQUlFRixNQUFBQSxXQUFXLEVBQUVOLGVBQWUsQ0FBQ0ssV0FKL0I7QUFLRUcsTUFBQUEsU0FBUyxFQUFFUixlQUFlLENBQUNPLFNBTDdCO0FBTUVFLE1BQUFBLEtBQUssRUFBRVQsZUFBZSxDQUFDUyxLQUFoQixDQUFzQk4sR0FBdEIsQ0FBMEIsVUFBQU8sSUFBSSxFQUFJO0FBQ3ZDLGVBQU87QUFDTEMsVUFBQUEsUUFBUSxFQUFFRCxJQUFJLENBQUNFLFFBRFY7QUFFTEMsVUFBQUEsUUFBUSxFQUFFSCxJQUFJLENBQUNJLFFBRlY7QUFHTEYsVUFBQUEsUUFBUSxFQUFFRixJQUFJLENBQUNDLFFBSFY7QUFJTEcsVUFBQUEsUUFBUSxFQUFFSixJQUFJLENBQUNHLFFBSlY7QUFLTEUsVUFBQUEsY0FBYyxFQUFFTCxJQUFJLENBQUNLLGNBTGhCO0FBTUxDLFVBQUFBLEtBQUssRUFBRU4sSUFBSSxDQUFDTSxLQUFMLENBQVdiLEdBQVgsQ0FBZSxVQUFBYyxDQUFDLEVBQUk7QUFDekIsZ0JBQUlBLENBQUMsQ0FBQ0MsVUFBRixDQUFhLEdBQWIsQ0FBSixFQUF1QjtBQUFFO0FBQUE7QUFBQTtBQUFBO0FBQVdELGdCQUFBQSxDQUFDLENBQUNFLEtBQUYsQ0FBUSxDQUFSLENBQVg7QUFBQTtBQUEwQjs7QUFDbkQsZ0JBQUlGLENBQUMsQ0FBQ0MsVUFBRixDQUFhLEdBQWIsQ0FBSixFQUF1QjtBQUFFO0FBQUE7QUFBQTtBQUFBO0FBQVdELGdCQUFBQSxDQUFDLENBQUNFLEtBQUYsQ0FBUSxDQUFSLENBQVg7QUFBQTtBQUEwQjs7QUFDbkQsbUJBQU9GLENBQVA7QUFDRCxXQUpNO0FBTkYsU0FBUDtBQVlELE9BYk07QUFOVDtBQUFBO0FBcUJEIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGZ1bmN0aW9uIHJldmVyc2VQYXRjaChzdHJ1Y3R1cmVkUGF0Y2gpIHtcbiAgaWYgKEFycmF5LmlzQXJyYXkoc3RydWN0dXJlZFBhdGNoKSkge1xuICAgIHJldHVybiBzdHJ1Y3R1cmVkUGF0Y2gubWFwKHJldmVyc2VQYXRjaCkucmV2ZXJzZSgpO1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICAuLi5zdHJ1Y3R1cmVkUGF0Y2gsXG4gICAgb2xkRmlsZU5hbWU6IHN0cnVjdHVyZWRQYXRjaC5uZXdGaWxlTmFtZSxcbiAgICBvbGRIZWFkZXI6IHN0cnVjdHVyZWRQYXRjaC5uZXdIZWFkZXIsXG4gICAgbmV3RmlsZU5hbWU6IHN0cnVjdHVyZWRQYXRjaC5vbGRGaWxlTmFtZSxcbiAgICBuZXdIZWFkZXI6IHN0cnVjdHVyZWRQYXRjaC5vbGRIZWFkZXIsXG4gICAgaHVua3M6IHN0cnVjdHVyZWRQYXRjaC5odW5rcy5tYXAoaHVuayA9PiB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBvbGRMaW5lczogaHVuay5uZXdMaW5lcyxcbiAgICAgICAgb2xkU3RhcnQ6IGh1bmsubmV3U3RhcnQsXG4gICAgICAgIG5ld0xpbmVzOiBodW5rLm9sZExpbmVzLFxuICAgICAgICBuZXdTdGFydDogaHVuay5vbGRTdGFydCxcbiAgICAgICAgbGluZWRlbGltaXRlcnM6IGh1bmsubGluZWRlbGltaXRlcnMsXG4gICAgICAgIGxpbmVzOiBodW5rLmxpbmVzLm1hcChsID0+IHtcbiAgICAgICAgICBpZiAobC5zdGFydHNXaXRoKCctJykpIHsgcmV0dXJuIGArJHtsLnNsaWNlKDEpfWA7IH1cbiAgICAgICAgICBpZiAobC5zdGFydHNXaXRoKCcrJykpIHsgcmV0dXJuIGAtJHtsLnNsaWNlKDEpfWA7IH1cbiAgICAgICAgICByZXR1cm4gbDtcbiAgICAgICAgfSlcbiAgICAgIH07XG4gICAgfSlcbiAgfTtcbn1cbiJdfQ==\n","/*istanbul ignore start*/\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.arrayEqual = arrayEqual;\nexports.arrayStartsWith = arrayStartsWith;\n\n/*istanbul ignore end*/\nfunction arrayEqual(a, b) {\n if (a.length !== b.length) {\n return false;\n }\n\n return arrayStartsWith(a, b);\n}\n\nfunction arrayStartsWith(array, start) {\n if (start.length > array.length) {\n return false;\n }\n\n for (var i = 0; i < start.length; i++) {\n if (start[i] !== array[i]) {\n return false;\n }\n }\n\n return true;\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsL2FycmF5LmpzIl0sIm5hbWVzIjpbImFycmF5RXF1YWwiLCJhIiwiYiIsImxlbmd0aCIsImFycmF5U3RhcnRzV2l0aCIsImFycmF5Iiwic3RhcnQiLCJpIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O0FBQU8sU0FBU0EsVUFBVCxDQUFvQkMsQ0FBcEIsRUFBdUJDLENBQXZCLEVBQTBCO0FBQy9CLE1BQUlELENBQUMsQ0FBQ0UsTUFBRixLQUFhRCxDQUFDLENBQUNDLE1BQW5CLEVBQTJCO0FBQ3pCLFdBQU8sS0FBUDtBQUNEOztBQUVELFNBQU9DLGVBQWUsQ0FBQ0gsQ0FBRCxFQUFJQyxDQUFKLENBQXRCO0FBQ0Q7O0FBRU0sU0FBU0UsZUFBVCxDQUF5QkMsS0FBekIsRUFBZ0NDLEtBQWhDLEVBQXVDO0FBQzVDLE1BQUlBLEtBQUssQ0FBQ0gsTUFBTixHQUFlRSxLQUFLLENBQUNGLE1BQXpCLEVBQWlDO0FBQy9CLFdBQU8sS0FBUDtBQUNEOztBQUVELE9BQUssSUFBSUksQ0FBQyxHQUFHLENBQWIsRUFBZ0JBLENBQUMsR0FBR0QsS0FBSyxDQUFDSCxNQUExQixFQUFrQ0ksQ0FBQyxFQUFuQyxFQUF1QztBQUNyQyxRQUFJRCxLQUFLLENBQUNDLENBQUQsQ0FBTCxLQUFhRixLQUFLLENBQUNFLENBQUQsQ0FBdEIsRUFBMkI7QUFDekIsYUFBTyxLQUFQO0FBQ0Q7QUFDRjs7QUFFRCxTQUFPLElBQVA7QUFDRCIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBmdW5jdGlvbiBhcnJheUVxdWFsKGEsIGIpIHtcbiAgaWYgKGEubGVuZ3RoICE9PSBiLmxlbmd0aCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHJldHVybiBhcnJheVN0YXJ0c1dpdGgoYSwgYik7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhcnJheVN0YXJ0c1dpdGgoYXJyYXksIHN0YXJ0KSB7XG4gIGlmIChzdGFydC5sZW5ndGggPiBhcnJheS5sZW5ndGgpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBmb3IgKGxldCBpID0gMDsgaSA8IHN0YXJ0Lmxlbmd0aDsgaSsrKSB7XG4gICAgaWYgKHN0YXJ0W2ldICE9PSBhcnJheVtpXSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB0cnVlO1xufVxuIl19\n","/*istanbul ignore start*/\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = _default;\n\n/*istanbul ignore end*/\n// Iterator that traverses in the range of [min, max], stepping\n// by distance from a given start position. I.e. for [0, 4], with\n// start of 2, this will iterate 2, 3, 1, 4, 0.\nfunction\n/*istanbul ignore start*/\n_default\n/*istanbul ignore end*/\n(start, minLine, maxLine) {\n var wantForward = true,\n backwardExhausted = false,\n forwardExhausted = false,\n localOffset = 1;\n return function iterator() {\n if (wantForward && !forwardExhausted) {\n if (backwardExhausted) {\n localOffset++;\n } else {\n wantForward = false;\n } // Check if trying to fit beyond text length, and if not, check it fits\n // after offset location (or desired location on first iteration)\n\n\n if (start + localOffset <= maxLine) {\n return localOffset;\n }\n\n forwardExhausted = true;\n }\n\n if (!backwardExhausted) {\n if (!forwardExhausted) {\n wantForward = true;\n } // Check if trying to fit before text beginning, and if not, check it fits\n // before offset location\n\n\n if (minLine <= start - localOffset) {\n return -localOffset++;\n }\n\n backwardExhausted = true;\n return iterator();\n } // We tried to fit hunk before text beginning and beyond text length, then\n // hunk can't fit on the text. Return undefined\n\n };\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsL2Rpc3RhbmNlLWl0ZXJhdG9yLmpzIl0sIm5hbWVzIjpbInN0YXJ0IiwibWluTGluZSIsIm1heExpbmUiLCJ3YW50Rm9yd2FyZCIsImJhY2t3YXJkRXhoYXVzdGVkIiwiZm9yd2FyZEV4aGF1c3RlZCIsImxvY2FsT2Zmc2V0IiwiaXRlcmF0b3IiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQUNlO0FBQUE7QUFBQTtBQUFBO0FBQUEsQ0FBU0EsS0FBVCxFQUFnQkMsT0FBaEIsRUFBeUJDLE9BQXpCLEVBQWtDO0FBQy9DLE1BQUlDLFdBQVcsR0FBRyxJQUFsQjtBQUFBLE1BQ0lDLGlCQUFpQixHQUFHLEtBRHhCO0FBQUEsTUFFSUMsZ0JBQWdCLEdBQUcsS0FGdkI7QUFBQSxNQUdJQyxXQUFXLEdBQUcsQ0FIbEI7QUFLQSxTQUFPLFNBQVNDLFFBQVQsR0FBb0I7QUFDekIsUUFBSUosV0FBVyxJQUFJLENBQUNFLGdCQUFwQixFQUFzQztBQUNwQyxVQUFJRCxpQkFBSixFQUF1QjtBQUNyQkUsUUFBQUEsV0FBVztBQUNaLE9BRkQsTUFFTztBQUNMSCxRQUFBQSxXQUFXLEdBQUcsS0FBZDtBQUNELE9BTG1DLENBT3BDO0FBQ0E7OztBQUNBLFVBQUlILEtBQUssR0FBR00sV0FBUixJQUF1QkosT0FBM0IsRUFBb0M7QUFDbEMsZUFBT0ksV0FBUDtBQUNEOztBQUVERCxNQUFBQSxnQkFBZ0IsR0FBRyxJQUFuQjtBQUNEOztBQUVELFFBQUksQ0FBQ0QsaUJBQUwsRUFBd0I7QUFDdEIsVUFBSSxDQUFDQyxnQkFBTCxFQUF1QjtBQUNyQkYsUUFBQUEsV0FBVyxHQUFHLElBQWQ7QUFDRCxPQUhxQixDQUt0QjtBQUNBOzs7QUFDQSxVQUFJRixPQUFPLElBQUlELEtBQUssR0FBR00sV0FBdkIsRUFBb0M7QUFDbEMsZUFBTyxDQUFDQSxXQUFXLEVBQW5CO0FBQ0Q7O0FBRURGLE1BQUFBLGlCQUFpQixHQUFHLElBQXBCO0FBQ0EsYUFBT0csUUFBUSxFQUFmO0FBQ0QsS0E5QndCLENBZ0N6QjtBQUNBOztBQUNELEdBbENEO0FBbUNEIiwic291cmNlc0NvbnRlbnQiOlsiLy8gSXRlcmF0b3IgdGhhdCB0cmF2ZXJzZXMgaW4gdGhlIHJhbmdlIG9mIFttaW4sIG1heF0sIHN0ZXBwaW5nXG4vLyBieSBkaXN0YW5jZSBmcm9tIGEgZ2l2ZW4gc3RhcnQgcG9zaXRpb24uIEkuZS4gZm9yIFswLCA0XSwgd2l0aFxuLy8gc3RhcnQgb2YgMiwgdGhpcyB3aWxsIGl0ZXJhdGUgMiwgMywgMSwgNCwgMC5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKHN0YXJ0LCBtaW5MaW5lLCBtYXhMaW5lKSB7XG4gIGxldCB3YW50Rm9yd2FyZCA9IHRydWUsXG4gICAgICBiYWNrd2FyZEV4aGF1c3RlZCA9IGZhbHNlLFxuICAgICAgZm9yd2FyZEV4aGF1c3RlZCA9IGZhbHNlLFxuICAgICAgbG9jYWxPZmZzZXQgPSAxO1xuXG4gIHJldHVybiBmdW5jdGlvbiBpdGVyYXRvcigpIHtcbiAgICBpZiAod2FudEZvcndhcmQgJiYgIWZvcndhcmRFeGhhdXN0ZWQpIHtcbiAgICAgIGlmIChiYWNrd2FyZEV4aGF1c3RlZCkge1xuICAgICAgICBsb2NhbE9mZnNldCsrO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgd2FudEZvcndhcmQgPSBmYWxzZTtcbiAgICAgIH1cblxuICAgICAgLy8gQ2hlY2sgaWYgdHJ5aW5nIHRvIGZpdCBiZXlvbmQgdGV4dCBsZW5ndGgsIGFuZCBpZiBub3QsIGNoZWNrIGl0IGZpdHNcbiAgICAgIC8vIGFmdGVyIG9mZnNldCBsb2NhdGlvbiAob3IgZGVzaXJlZCBsb2NhdGlvbiBvbiBmaXJzdCBpdGVyYXRpb24pXG4gICAgICBpZiAoc3RhcnQgKyBsb2NhbE9mZnNldCA8PSBtYXhMaW5lKSB7XG4gICAgICAgIHJldHVybiBsb2NhbE9mZnNldDtcbiAgICAgIH1cblxuICAgICAgZm9yd2FyZEV4aGF1c3RlZCA9IHRydWU7XG4gICAgfVxuXG4gICAgaWYgKCFiYWNrd2FyZEV4aGF1c3RlZCkge1xuICAgICAgaWYgKCFmb3J3YXJkRXhoYXVzdGVkKSB7XG4gICAgICAgIHdhbnRGb3J3YXJkID0gdHJ1ZTtcbiAgICAgIH1cblxuICAgICAgLy8gQ2hlY2sgaWYgdHJ5aW5nIHRvIGZpdCBiZWZvcmUgdGV4dCBiZWdpbm5pbmcsIGFuZCBpZiBub3QsIGNoZWNrIGl0IGZpdHNcbiAgICAgIC8vIGJlZm9yZSBvZmZzZXQgbG9jYXRpb25cbiAgICAgIGlmIChtaW5MaW5lIDw9IHN0YXJ0IC0gbG9jYWxPZmZzZXQpIHtcbiAgICAgICAgcmV0dXJuIC1sb2NhbE9mZnNldCsrO1xuICAgICAgfVxuXG4gICAgICBiYWNrd2FyZEV4aGF1c3RlZCA9IHRydWU7XG4gICAgICByZXR1cm4gaXRlcmF0b3IoKTtcbiAgICB9XG5cbiAgICAvLyBXZSB0cmllZCB0byBmaXQgaHVuayBiZWZvcmUgdGV4dCBiZWdpbm5pbmcgYW5kIGJleW9uZCB0ZXh0IGxlbmd0aCwgdGhlblxuICAgIC8vIGh1bmsgY2FuJ3QgZml0IG9uIHRoZSB0ZXh0LiBSZXR1cm4gdW5kZWZpbmVkXG4gIH07XG59XG4iXX0=\n","/*istanbul ignore start*/\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.generateOptions = generateOptions;\n\n/*istanbul ignore end*/\nfunction generateOptions(options, defaults) {\n if (typeof options === 'function') {\n defaults.callback = options;\n } else if (options) {\n for (var name in options) {\n /* istanbul ignore else */\n if (options.hasOwnProperty(name)) {\n defaults[name] = options[name];\n }\n }\n }\n\n return defaults;\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsL3BhcmFtcy5qcyJdLCJuYW1lcyI6WyJnZW5lcmF0ZU9wdGlvbnMiLCJvcHRpb25zIiwiZGVmYXVsdHMiLCJjYWxsYmFjayIsIm5hbWUiLCJoYXNPd25Qcm9wZXJ0eSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQU8sU0FBU0EsZUFBVCxDQUF5QkMsT0FBekIsRUFBa0NDLFFBQWxDLEVBQTRDO0FBQ2pELE1BQUksT0FBT0QsT0FBUCxLQUFtQixVQUF2QixFQUFtQztBQUNqQ0MsSUFBQUEsUUFBUSxDQUFDQyxRQUFULEdBQW9CRixPQUFwQjtBQUNELEdBRkQsTUFFTyxJQUFJQSxPQUFKLEVBQWE7QUFDbEIsU0FBSyxJQUFJRyxJQUFULElBQWlCSCxPQUFqQixFQUEwQjtBQUN4QjtBQUNBLFVBQUlBLE9BQU8sQ0FBQ0ksY0FBUixDQUF1QkQsSUFBdkIsQ0FBSixFQUFrQztBQUNoQ0YsUUFBQUEsUUFBUSxDQUFDRSxJQUFELENBQVIsR0FBaUJILE9BQU8sQ0FBQ0csSUFBRCxDQUF4QjtBQUNEO0FBQ0Y7QUFDRjs7QUFDRCxTQUFPRixRQUFQO0FBQ0QiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZnVuY3Rpb24gZ2VuZXJhdGVPcHRpb25zKG9wdGlvbnMsIGRlZmF1bHRzKSB7XG4gIGlmICh0eXBlb2Ygb3B0aW9ucyA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIGRlZmF1bHRzLmNhbGxiYWNrID0gb3B0aW9ucztcbiAgfSBlbHNlIGlmIChvcHRpb25zKSB7XG4gICAgZm9yIChsZXQgbmFtZSBpbiBvcHRpb25zKSB7XG4gICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgICAgaWYgKG9wdGlvbnMuaGFzT3duUHJvcGVydHkobmFtZSkpIHtcbiAgICAgICAgZGVmYXVsdHNbbmFtZV0gPSBvcHRpb25zW25hbWVdO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICByZXR1cm4gZGVmYXVsdHM7XG59XG4iXX0=\n","\"use strict\";\n\nmodule.exports = function () {\n // https://mths.be/emoji\n return /\\uD83C\\uDFF4\\uDB40\\uDC67\\uDB40\\uDC62(?:\\uDB40\\uDC65\\uDB40\\uDC6E\\uDB40\\uDC67|\\uDB40\\uDC73\\uDB40\\uDC63\\uDB40\\uDC74|\\uDB40\\uDC77\\uDB40\\uDC6C\\uDB40\\uDC73)\\uDB40\\uDC7F|\\uD83D\\uDC68(?:\\uD83C\\uDFFC\\u200D(?:\\uD83E\\uDD1D\\u200D\\uD83D\\uDC68\\uD83C\\uDFFB|\\uD83C[\\uDF3E\\uDF73\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFF\\u200D(?:\\uD83E\\uDD1D\\u200D\\uD83D\\uDC68(?:\\uD83C[\\uDFFB-\\uDFFE])|\\uD83C[\\uDF3E\\uDF73\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFE\\u200D(?:\\uD83E\\uDD1D\\u200D\\uD83D\\uDC68(?:\\uD83C[\\uDFFB-\\uDFFD])|\\uD83C[\\uDF3E\\uDF73\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFD\\u200D(?:\\uD83E\\uDD1D\\u200D\\uD83D\\uDC68(?:\\uD83C[\\uDFFB\\uDFFC])|\\uD83C[\\uDF3E\\uDF73\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\u200D(?:\\u2764\\uFE0F\\u200D(?:\\uD83D\\uDC8B\\u200D)?\\uD83D\\uDC68|(?:\\uD83D[\\uDC68\\uDC69])\\u200D(?:\\uD83D\\uDC66\\u200D\\uD83D\\uDC66|\\uD83D\\uDC67\\u200D(?:\\uD83D[\\uDC66\\uDC67]))|\\uD83D\\uDC66\\u200D\\uD83D\\uDC66|\\uD83D\\uDC67\\u200D(?:\\uD83D[\\uDC66\\uDC67])|(?:\\uD83D[\\uDC68\\uDC69])\\u200D(?:\\uD83D[\\uDC66\\uDC67])|[\\u2695\\u2696\\u2708]\\uFE0F|\\uD83D[\\uDC66\\uDC67]|\\uD83C[\\uDF3E\\uDF73\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|(?:\\uD83C\\uDFFB\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFF\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFE\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFD\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFC\\u200D[\\u2695\\u2696\\u2708])\\uFE0F|\\uD83C\\uDFFB\\u200D(?:\\uD83C[\\uDF3E\\uDF73\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C[\\uDFFB-\\uDFFF])|(?:\\uD83E\\uDDD1\\uD83C\\uDFFB\\u200D\\uD83E\\uDD1D\\u200D\\uD83E\\uDDD1|\\uD83D\\uDC69\\uD83C\\uDFFC\\u200D\\uD83E\\uDD1D\\u200D\\uD83D\\uDC69)\\uD83C\\uDFFB|\\uD83E\\uDDD1(?:\\uD83C\\uDFFF\\u200D\\uD83E\\uDD1D\\u200D\\uD83E\\uDDD1(?:\\uD83C[\\uDFFB-\\uDFFF])|\\u200D\\uD83E\\uDD1D\\u200D\\uD83E\\uDDD1)|(?:\\uD83E\\uDDD1\\uD83C\\uDFFE\\u200D\\uD83E\\uDD1D\\u200D\\uD83E\\uDDD1|\\uD83D\\uDC69\\uD83C\\uDFFF\\u200D\\uD83E\\uDD1D\\u200D(?:\\uD83D[\\uDC68\\uDC69]))(?:\\uD83C[\\uDFFB-\\uDFFE])|(?:\\uD83E\\uDDD1\\uD83C\\uDFFC\\u200D\\uD83E\\uDD1D\\u200D\\uD83E\\uDDD1|\\uD83D\\uDC69\\uD83C\\uDFFD\\u200D\\uD83E\\uDD1D\\u200D\\uD83D\\uDC69)(?:\\uD83C[\\uDFFB\\uDFFC])|\\uD83D\\uDC69(?:\\uD83C\\uDFFE\\u200D(?:\\uD83E\\uDD1D\\u200D\\uD83D\\uDC68(?:\\uD83C[\\uDFFB-\\uDFFD\\uDFFF])|\\uD83C[\\uDF3E\\uDF73\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFC\\u200D(?:\\uD83E\\uDD1D\\u200D\\uD83D\\uDC68(?:\\uD83C[\\uDFFB\\uDFFD-\\uDFFF])|\\uD83C[\\uDF3E\\uDF73\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFB\\u200D(?:\\uD83E\\uDD1D\\u200D\\uD83D\\uDC68(?:\\uD83C[\\uDFFC-\\uDFFF])|\\uD83C[\\uDF3E\\uDF73\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFD\\u200D(?:\\uD83E\\uDD1D\\u200D\\uD83D\\uDC68(?:\\uD83C[\\uDFFB\\uDFFC\\uDFFE\\uDFFF])|\\uD83C[\\uDF3E\\uDF73\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\u200D(?:\\u2764\\uFE0F\\u200D(?:\\uD83D\\uDC8B\\u200D(?:\\uD83D[\\uDC68\\uDC69])|\\uD83D[\\uDC68\\uDC69])|\\uD83C[\\uDF3E\\uDF73\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFF\\u200D(?:\\uD83C[\\uDF3E\\uDF73\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD]))|\\uD83D\\uDC69\\u200D\\uD83D\\uDC69\\u200D(?:\\uD83D\\uDC66\\u200D\\uD83D\\uDC66|\\uD83D\\uDC67\\u200D(?:\\uD83D[\\uDC66\\uDC67]))|(?:\\uD83E\\uDDD1\\uD83C\\uDFFD\\u200D\\uD83E\\uDD1D\\u200D\\uD83E\\uDDD1|\\uD83D\\uDC69\\uD83C\\uDFFE\\u200D\\uD83E\\uDD1D\\u200D\\uD83D\\uDC69)(?:\\uD83C[\\uDFFB-\\uDFFD])|\\uD83D\\uDC69\\u200D\\uD83D\\uDC66\\u200D\\uD83D\\uDC66|\\uD83D\\uDC69\\u200D\\uD83D\\uDC69\\u200D(?:\\uD83D[\\uDC66\\uDC67])|(?:\\uD83D\\uDC41\\uFE0F\\u200D\\uD83D\\uDDE8|\\uD83D\\uDC69(?:\\uD83C\\uDFFF\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFE\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFC\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFB\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFD\\u200D[\\u2695\\u2696\\u2708]|\\u200D[\\u2695\\u2696\\u2708])|(?:(?:\\u26F9|\\uD83C[\\uDFCB\\uDFCC]|\\uD83D\\uDD75)\\uFE0F|\\uD83D\\uDC6F|\\uD83E[\\uDD3C\\uDDDE\\uDDDF])\\u200D[\\u2640\\u2642]|(?:\\u26F9|\\uD83C[\\uDFCB\\uDFCC]|\\uD83D\\uDD75)(?:\\uD83C[\\uDFFB-\\uDFFF])\\u200D[\\u2640\\u2642]|(?:\\uD83C[\\uDFC3\\uDFC4\\uDFCA]|\\uD83D[\\uDC6E\\uDC71\\uDC73\\uDC77\\uDC81\\uDC82\\uDC86\\uDC87\\uDE45-\\uDE47\\uDE4B\\uDE4D\\uDE4E\\uDEA3\\uDEB4-\\uDEB6]|\\uD83E[\\uDD26\\uDD37-\\uDD39\\uDD3D\\uDD3E\\uDDB8\\uDDB9\\uDDCD-\\uDDCF\\uDDD6-\\uDDDD])(?:(?:\\uD83C[\\uDFFB-\\uDFFF])\\u200D[\\u2640\\u2642]|\\u200D[\\u2640\\u2642])|\\uD83C\\uDFF4\\u200D\\u2620)\\uFE0F|\\uD83D\\uDC69\\u200D\\uD83D\\uDC67\\u200D(?:\\uD83D[\\uDC66\\uDC67])|\\uD83C\\uDFF3\\uFE0F\\u200D\\uD83C\\uDF08|\\uD83D\\uDC15\\u200D\\uD83E\\uDDBA|\\uD83D\\uDC69\\u200D\\uD83D\\uDC66|\\uD83D\\uDC69\\u200D\\uD83D\\uDC67|\\uD83C\\uDDFD\\uD83C\\uDDF0|\\uD83C\\uDDF4\\uD83C\\uDDF2|\\uD83C\\uDDF6\\uD83C\\uDDE6|[#\\*0-9]\\uFE0F\\u20E3|\\uD83C\\uDDE7(?:\\uD83C[\\uDDE6\\uDDE7\\uDDE9-\\uDDEF\\uDDF1-\\uDDF4\\uDDF6-\\uDDF9\\uDDFB\\uDDFC\\uDDFE\\uDDFF])|\\uD83C\\uDDF9(?:\\uD83C[\\uDDE6\\uDDE8\\uDDE9\\uDDEB-\\uDDED\\uDDEF-\\uDDF4\\uDDF7\\uDDF9\\uDDFB\\uDDFC\\uDDFF])|\\uD83C\\uDDEA(?:\\uD83C[\\uDDE6\\uDDE8\\uDDEA\\uDDEC\\uDDED\\uDDF7-\\uDDFA])|\\uD83E\\uDDD1(?:\\uD83C[\\uDFFB-\\uDFFF])|\\uD83C\\uDDF7(?:\\uD83C[\\uDDEA\\uDDF4\\uDDF8\\uDDFA\\uDDFC])|\\uD83D\\uDC69(?:\\uD83C[\\uDFFB-\\uDFFF])|\\uD83C\\uDDF2(?:\\uD83C[\\uDDE6\\uDDE8-\\uDDED\\uDDF0-\\uDDFF])|\\uD83C\\uDDE6(?:\\uD83C[\\uDDE8-\\uDDEC\\uDDEE\\uDDF1\\uDDF2\\uDDF4\\uDDF6-\\uDDFA\\uDDFC\\uDDFD\\uDDFF])|\\uD83C\\uDDF0(?:\\uD83C[\\uDDEA\\uDDEC-\\uDDEE\\uDDF2\\uDDF3\\uDDF5\\uDDF7\\uDDFC\\uDDFE\\uDDFF])|\\uD83C\\uDDED(?:\\uD83C[\\uDDF0\\uDDF2\\uDDF3\\uDDF7\\uDDF9\\uDDFA])|\\uD83C\\uDDE9(?:\\uD83C[\\uDDEA\\uDDEC\\uDDEF\\uDDF0\\uDDF2\\uDDF4\\uDDFF])|\\uD83C\\uDDFE(?:\\uD83C[\\uDDEA\\uDDF9])|\\uD83C\\uDDEC(?:\\uD83C[\\uDDE6\\uDDE7\\uDDE9-\\uDDEE\\uDDF1-\\uDDF3\\uDDF5-\\uDDFA\\uDDFC\\uDDFE])|\\uD83C\\uDDF8(?:\\uD83C[\\uDDE6-\\uDDEA\\uDDEC-\\uDDF4\\uDDF7-\\uDDF9\\uDDFB\\uDDFD-\\uDDFF])|\\uD83C\\uDDEB(?:\\uD83C[\\uDDEE-\\uDDF0\\uDDF2\\uDDF4\\uDDF7])|\\uD83C\\uDDF5(?:\\uD83C[\\uDDE6\\uDDEA-\\uDDED\\uDDF0-\\uDDF3\\uDDF7-\\uDDF9\\uDDFC\\uDDFE])|\\uD83C\\uDDFB(?:\\uD83C[\\uDDE6\\uDDE8\\uDDEA\\uDDEC\\uDDEE\\uDDF3\\uDDFA])|\\uD83C\\uDDF3(?:\\uD83C[\\uDDE6\\uDDE8\\uDDEA-\\uDDEC\\uDDEE\\uDDF1\\uDDF4\\uDDF5\\uDDF7\\uDDFA\\uDDFF])|\\uD83C\\uDDE8(?:\\uD83C[\\uDDE6\\uDDE8\\uDDE9\\uDDEB-\\uDDEE\\uDDF0-\\uDDF5\\uDDF7\\uDDFA-\\uDDFF])|\\uD83C\\uDDF1(?:\\uD83C[\\uDDE6-\\uDDE8\\uDDEE\\uDDF0\\uDDF7-\\uDDFB\\uDDFE])|\\uD83C\\uDDFF(?:\\uD83C[\\uDDE6\\uDDF2\\uDDFC])|\\uD83C\\uDDFC(?:\\uD83C[\\uDDEB\\uDDF8])|\\uD83C\\uDDFA(?:\\uD83C[\\uDDE6\\uDDEC\\uDDF2\\uDDF3\\uDDF8\\uDDFE\\uDDFF])|\\uD83C\\uDDEE(?:\\uD83C[\\uDDE8-\\uDDEA\\uDDF1-\\uDDF4\\uDDF6-\\uDDF9])|\\uD83C\\uDDEF(?:\\uD83C[\\uDDEA\\uDDF2\\uDDF4\\uDDF5])|(?:\\uD83C[\\uDFC3\\uDFC4\\uDFCA]|\\uD83D[\\uDC6E\\uDC71\\uDC73\\uDC77\\uDC81\\uDC82\\uDC86\\uDC87\\uDE45-\\uDE47\\uDE4B\\uDE4D\\uDE4E\\uDEA3\\uDEB4-\\uDEB6]|\\uD83E[\\uDD26\\uDD37-\\uDD39\\uDD3D\\uDD3E\\uDDB8\\uDDB9\\uDDCD-\\uDDCF\\uDDD6-\\uDDDD])(?:\\uD83C[\\uDFFB-\\uDFFF])|(?:\\u26F9|\\uD83C[\\uDFCB\\uDFCC]|\\uD83D\\uDD75)(?:\\uD83C[\\uDFFB-\\uDFFF])|(?:[\\u261D\\u270A-\\u270D]|\\uD83C[\\uDF85\\uDFC2\\uDFC7]|\\uD83D[\\uDC42\\uDC43\\uDC46-\\uDC50\\uDC66\\uDC67\\uDC6B-\\uDC6D\\uDC70\\uDC72\\uDC74-\\uDC76\\uDC78\\uDC7C\\uDC83\\uDC85\\uDCAA\\uDD74\\uDD7A\\uDD90\\uDD95\\uDD96\\uDE4C\\uDE4F\\uDEC0\\uDECC]|\\uD83E[\\uDD0F\\uDD18-\\uDD1C\\uDD1E\\uDD1F\\uDD30-\\uDD36\\uDDB5\\uDDB6\\uDDBB\\uDDD2-\\uDDD5])(?:\\uD83C[\\uDFFB-\\uDFFF])|(?:[\\u231A\\u231B\\u23E9-\\u23EC\\u23F0\\u23F3\\u25FD\\u25FE\\u2614\\u2615\\u2648-\\u2653\\u267F\\u2693\\u26A1\\u26AA\\u26AB\\u26BD\\u26BE\\u26C4\\u26C5\\u26CE\\u26D4\\u26EA\\u26F2\\u26F3\\u26F5\\u26FA\\u26FD\\u2705\\u270A\\u270B\\u2728\\u274C\\u274E\\u2753-\\u2755\\u2757\\u2795-\\u2797\\u27B0\\u27BF\\u2B1B\\u2B1C\\u2B50\\u2B55]|\\uD83C[\\uDC04\\uDCCF\\uDD8E\\uDD91-\\uDD9A\\uDDE6-\\uDDFF\\uDE01\\uDE1A\\uDE2F\\uDE32-\\uDE36\\uDE38-\\uDE3A\\uDE50\\uDE51\\uDF00-\\uDF20\\uDF2D-\\uDF35\\uDF37-\\uDF7C\\uDF7E-\\uDF93\\uDFA0-\\uDFCA\\uDFCF-\\uDFD3\\uDFE0-\\uDFF0\\uDFF4\\uDFF8-\\uDFFF]|\\uD83D[\\uDC00-\\uDC3E\\uDC40\\uDC42-\\uDCFC\\uDCFF-\\uDD3D\\uDD4B-\\uDD4E\\uDD50-\\uDD67\\uDD7A\\uDD95\\uDD96\\uDDA4\\uDDFB-\\uDE4F\\uDE80-\\uDEC5\\uDECC\\uDED0-\\uDED2\\uDED5\\uDEEB\\uDEEC\\uDEF4-\\uDEFA\\uDFE0-\\uDFEB]|\\uD83E[\\uDD0D-\\uDD3A\\uDD3C-\\uDD45\\uDD47-\\uDD71\\uDD73-\\uDD76\\uDD7A-\\uDDA2\\uDDA5-\\uDDAA\\uDDAE-\\uDDCA\\uDDCD-\\uDDFF\\uDE70-\\uDE73\\uDE78-\\uDE7A\\uDE80-\\uDE82\\uDE90-\\uDE95])|(?:[#\\*0-9\\xA9\\xAE\\u203C\\u2049\\u2122\\u2139\\u2194-\\u2199\\u21A9\\u21AA\\u231A\\u231B\\u2328\\u23CF\\u23E9-\\u23F3\\u23F8-\\u23FA\\u24C2\\u25AA\\u25AB\\u25B6\\u25C0\\u25FB-\\u25FE\\u2600-\\u2604\\u260E\\u2611\\u2614\\u2615\\u2618\\u261D\\u2620\\u2622\\u2623\\u2626\\u262A\\u262E\\u262F\\u2638-\\u263A\\u2640\\u2642\\u2648-\\u2653\\u265F\\u2660\\u2663\\u2665\\u2666\\u2668\\u267B\\u267E\\u267F\\u2692-\\u2697\\u2699\\u269B\\u269C\\u26A0\\u26A1\\u26AA\\u26AB\\u26B0\\u26B1\\u26BD\\u26BE\\u26C4\\u26C5\\u26C8\\u26CE\\u26CF\\u26D1\\u26D3\\u26D4\\u26E9\\u26EA\\u26F0-\\u26F5\\u26F7-\\u26FA\\u26FD\\u2702\\u2705\\u2708-\\u270D\\u270F\\u2712\\u2714\\u2716\\u271D\\u2721\\u2728\\u2733\\u2734\\u2744\\u2747\\u274C\\u274E\\u2753-\\u2755\\u2757\\u2763\\u2764\\u2795-\\u2797\\u27A1\\u27B0\\u27BF\\u2934\\u2935\\u2B05-\\u2B07\\u2B1B\\u2B1C\\u2B50\\u2B55\\u3030\\u303D\\u3297\\u3299]|\\uD83C[\\uDC04\\uDCCF\\uDD70\\uDD71\\uDD7E\\uDD7F\\uDD8E\\uDD91-\\uDD9A\\uDDE6-\\uDDFF\\uDE01\\uDE02\\uDE1A\\uDE2F\\uDE32-\\uDE3A\\uDE50\\uDE51\\uDF00-\\uDF21\\uDF24-\\uDF93\\uDF96\\uDF97\\uDF99-\\uDF9B\\uDF9E-\\uDFF0\\uDFF3-\\uDFF5\\uDFF7-\\uDFFF]|\\uD83D[\\uDC00-\\uDCFD\\uDCFF-\\uDD3D\\uDD49-\\uDD4E\\uDD50-\\uDD67\\uDD6F\\uDD70\\uDD73-\\uDD7A\\uDD87\\uDD8A-\\uDD8D\\uDD90\\uDD95\\uDD96\\uDDA4\\uDDA5\\uDDA8\\uDDB1\\uDDB2\\uDDBC\\uDDC2-\\uDDC4\\uDDD1-\\uDDD3\\uDDDC-\\uDDDE\\uDDE1\\uDDE3\\uDDE8\\uDDEF\\uDDF3\\uDDFA-\\uDE4F\\uDE80-\\uDEC5\\uDECB-\\uDED2\\uDED5\\uDEE0-\\uDEE5\\uDEE9\\uDEEB\\uDEEC\\uDEF0\\uDEF3-\\uDEFA\\uDFE0-\\uDFEB]|\\uD83E[\\uDD0D-\\uDD3A\\uDD3C-\\uDD45\\uDD47-\\uDD71\\uDD73-\\uDD76\\uDD7A-\\uDDA2\\uDDA5-\\uDDAA\\uDDAE-\\uDDCA\\uDDCD-\\uDDFF\\uDE70-\\uDE73\\uDE78-\\uDE7A\\uDE80-\\uDE82\\uDE90-\\uDE95])\\uFE0F|(?:[\\u261D\\u26F9\\u270A-\\u270D]|\\uD83C[\\uDF85\\uDFC2-\\uDFC4\\uDFC7\\uDFCA-\\uDFCC]|\\uD83D[\\uDC42\\uDC43\\uDC46-\\uDC50\\uDC66-\\uDC78\\uDC7C\\uDC81-\\uDC83\\uDC85-\\uDC87\\uDC8F\\uDC91\\uDCAA\\uDD74\\uDD75\\uDD7A\\uDD90\\uDD95\\uDD96\\uDE45-\\uDE47\\uDE4B-\\uDE4F\\uDEA3\\uDEB4-\\uDEB6\\uDEC0\\uDECC]|\\uD83E[\\uDD0F\\uDD18-\\uDD1F\\uDD26\\uDD30-\\uDD39\\uDD3C-\\uDD3E\\uDDB5\\uDDB6\\uDDB8\\uDDB9\\uDDBB\\uDDCD-\\uDDCF\\uDDD1-\\uDDDD])/g;\n};\n","'use strict';\n\n// do not edit .js files directly - edit src/index.jst\n\n\n\nmodule.exports = function equal(a, b) {\n if (a === b) return true;\n\n if (a && b && typeof a == 'object' && typeof b == 'object') {\n if (a.constructor !== b.constructor) return false;\n\n var length, i, keys;\n if (Array.isArray(a)) {\n length = a.length;\n if (length != b.length) return false;\n for (i = length; i-- !== 0;)\n if (!equal(a[i], b[i])) return false;\n return true;\n }\n\n\n\n if (a.constructor === RegExp) return a.source === b.source && a.flags === b.flags;\n if (a.valueOf !== Object.prototype.valueOf) return a.valueOf() === b.valueOf();\n if (a.toString !== Object.prototype.toString) return a.toString() === b.toString();\n\n keys = Object.keys(a);\n length = keys.length;\n if (length !== Object.keys(b).length) return false;\n\n for (i = length; i-- !== 0;)\n if (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false;\n\n for (i = length; i-- !== 0;) {\n var key = keys[i];\n\n if (!equal(a[key], b[key])) return false;\n }\n\n return true;\n }\n\n // true if both NaN, false otherwise\n return a!==a && b!==b;\n};\n","'use strict';\n\nconst validator = require('./validator');\nconst XMLParser = require('./xmlparser/XMLParser');\nconst XMLBuilder = require('./xmlbuilder/json2xml');\n\nmodule.exports = {\n XMLParser: XMLParser,\n XMLValidator: validator,\n XMLBuilder: XMLBuilder\n}","'use strict';\n\nconst nameStartChar = ':A-Za-z_\\\\u00C0-\\\\u00D6\\\\u00D8-\\\\u00F6\\\\u00F8-\\\\u02FF\\\\u0370-\\\\u037D\\\\u037F-\\\\u1FFF\\\\u200C-\\\\u200D\\\\u2070-\\\\u218F\\\\u2C00-\\\\u2FEF\\\\u3001-\\\\uD7FF\\\\uF900-\\\\uFDCF\\\\uFDF0-\\\\uFFFD';\nconst nameChar = nameStartChar + '\\\\-.\\\\d\\\\u00B7\\\\u0300-\\\\u036F\\\\u203F-\\\\u2040';\nconst nameRegexp = '[' + nameStartChar + '][' + nameChar + ']*'\nconst regexName = new RegExp('^' + nameRegexp + '$');\n\nconst getAllMatches = function(string, regex) {\n const matches = [];\n let match = regex.exec(string);\n while (match) {\n const allmatches = [];\n allmatches.startIndex = regex.lastIndex - match[0].length;\n const len = match.length;\n for (let index = 0; index < len; index++) {\n allmatches.push(match[index]);\n }\n matches.push(allmatches);\n match = regex.exec(string);\n }\n return matches;\n};\n\nconst isName = function(string) {\n const match = regexName.exec(string);\n return !(match === null || typeof match === 'undefined');\n};\n\nexports.isExist = function(v) {\n return typeof v !== 'undefined';\n};\n\nexports.isEmptyObject = function(obj) {\n return Object.keys(obj).length === 0;\n};\n\n/**\n * Copy all the properties of a into b.\n * @param {*} target\n * @param {*} a\n */\nexports.merge = function(target, a, arrayMode) {\n if (a) {\n const keys = Object.keys(a); // will return an array of own properties\n const len = keys.length; //don't make it inline\n for (let i = 0; i < len; i++) {\n if (arrayMode === 'strict') {\n target[keys[i]] = [ a[keys[i]] ];\n } else {\n target[keys[i]] = a[keys[i]];\n }\n }\n }\n};\n/* exports.merge =function (b,a){\n return Object.assign(b,a);\n} */\n\nexports.getValue = function(v) {\n if (exports.isExist(v)) {\n return v;\n } else {\n return '';\n }\n};\n\n// const fakeCall = function(a) {return a;};\n// const fakeCallNoReturn = function() {};\n\nexports.isName = isName;\nexports.getAllMatches = getAllMatches;\nexports.nameRegexp = nameRegexp;\n","'use strict';\n\nconst util = require('./util');\n\nconst defaultOptions = {\n allowBooleanAttributes: false, //A tag can have attributes without any value\n unpairedTags: []\n};\n\n//const tagsPattern = new RegExp(\"<\\\\/?([\\\\w:\\\\-_\\.]+)\\\\s*\\/?>\",\"g\");\nexports.validate = function (xmlData, options) {\n options = Object.assign({}, defaultOptions, options);\n\n //xmlData = xmlData.replace(/(\\r\\n|\\n|\\r)/gm,\"\");//make it single line\n //xmlData = xmlData.replace(/(^\\s*<\\?xml.*?\\?>)/g,\"\");//Remove XML starting tag\n //xmlData = xmlData.replace(/()/g,\"\");//Remove DOCTYPE\n const tags = [];\n let tagFound = false;\n\n //indicates that the root tag has been closed (aka. depth 0 has been reached)\n let reachedRoot = false;\n\n if (xmlData[0] === '\\ufeff') {\n // check for byte order mark (BOM)\n xmlData = xmlData.substr(1);\n }\n \n for (let i = 0; i < xmlData.length; i++) {\n\n if (xmlData[i] === '<' && xmlData[i+1] === '?') {\n i+=2;\n i = readPI(xmlData,i);\n if (i.err) return i;\n }else if (xmlData[i] === '<') {\n //starting of tag\n //read until you reach to '>' avoiding any '>' in attribute value\n let tagStartPos = i;\n i++;\n \n if (xmlData[i] === '!') {\n i = readCommentAndCDATA(xmlData, i);\n continue;\n } else {\n let closingTag = false;\n if (xmlData[i] === '/') {\n //closing tag\n closingTag = true;\n i++;\n }\n //read tagname\n let tagName = '';\n for (; i < xmlData.length &&\n xmlData[i] !== '>' &&\n xmlData[i] !== ' ' &&\n xmlData[i] !== '\\t' &&\n xmlData[i] !== '\\n' &&\n xmlData[i] !== '\\r'; i++\n ) {\n tagName += xmlData[i];\n }\n tagName = tagName.trim();\n //console.log(tagName);\n\n if (tagName[tagName.length - 1] === '/') {\n //self closing tag without attributes\n tagName = tagName.substring(0, tagName.length - 1);\n //continue;\n i--;\n }\n if (!validateTagName(tagName)) {\n let msg;\n if (tagName.trim().length === 0) {\n msg = \"Invalid space after '<'.\";\n } else {\n msg = \"Tag '\"+tagName+\"' is an invalid name.\";\n }\n return getErrorObject('InvalidTag', msg, getLineNumberForPosition(xmlData, i));\n }\n\n const result = readAttributeStr(xmlData, i);\n if (result === false) {\n return getErrorObject('InvalidAttr', \"Attributes for '\"+tagName+\"' have open quote.\", getLineNumberForPosition(xmlData, i));\n }\n let attrStr = result.value;\n i = result.index;\n\n if (attrStr[attrStr.length - 1] === '/') {\n //self closing tag\n const attrStrStart = i - attrStr.length;\n attrStr = attrStr.substring(0, attrStr.length - 1);\n const isValid = validateAttributeString(attrStr, options);\n if (isValid === true) {\n tagFound = true;\n //continue; //text may presents after self closing tag\n } else {\n //the result from the nested function returns the position of the error within the attribute\n //in order to get the 'true' error line, we need to calculate the position where the attribute begins (i - attrStr.length) and then add the position within the attribute\n //this gives us the absolute index in the entire xml, which we can use to find the line at last\n return getErrorObject(isValid.err.code, isValid.err.msg, getLineNumberForPosition(xmlData, attrStrStart + isValid.err.line));\n }\n } else if (closingTag) {\n if (!result.tagClosed) {\n return getErrorObject('InvalidTag', \"Closing tag '\"+tagName+\"' doesn't have proper closing.\", getLineNumberForPosition(xmlData, i));\n } else if (attrStr.trim().length > 0) {\n return getErrorObject('InvalidTag', \"Closing tag '\"+tagName+\"' can't have attributes or invalid starting.\", getLineNumberForPosition(xmlData, tagStartPos));\n } else if (tags.length === 0) {\n return getErrorObject('InvalidTag', \"Closing tag '\"+tagName+\"' has not been opened.\", getLineNumberForPosition(xmlData, tagStartPos));\n } else {\n const otg = tags.pop();\n if (tagName !== otg.tagName) {\n let openPos = getLineNumberForPosition(xmlData, otg.tagStartPos);\n return getErrorObject('InvalidTag',\n \"Expected closing tag '\"+otg.tagName+\"' (opened in line \"+openPos.line+\", col \"+openPos.col+\") instead of closing tag '\"+tagName+\"'.\",\n getLineNumberForPosition(xmlData, tagStartPos));\n }\n\n //when there are no more tags, we reached the root level.\n if (tags.length == 0) {\n reachedRoot = true;\n }\n }\n } else {\n const isValid = validateAttributeString(attrStr, options);\n if (isValid !== true) {\n //the result from the nested function returns the position of the error within the attribute\n //in order to get the 'true' error line, we need to calculate the position where the attribute begins (i - attrStr.length) and then add the position within the attribute\n //this gives us the absolute index in the entire xml, which we can use to find the line at last\n return getErrorObject(isValid.err.code, isValid.err.msg, getLineNumberForPosition(xmlData, i - attrStr.length + isValid.err.line));\n }\n\n //if the root level has been reached before ...\n if (reachedRoot === true) {\n return getErrorObject('InvalidXml', 'Multiple possible root nodes found.', getLineNumberForPosition(xmlData, i));\n } else if(options.unpairedTags.indexOf(tagName) !== -1){\n //don't push into stack\n } else {\n tags.push({tagName, tagStartPos});\n }\n tagFound = true;\n }\n\n //skip tag text value\n //It may include comments and CDATA value\n for (i++; i < xmlData.length; i++) {\n if (xmlData[i] === '<') {\n if (xmlData[i + 1] === '!') {\n //comment or CADATA\n i++;\n i = readCommentAndCDATA(xmlData, i);\n continue;\n } else if (xmlData[i+1] === '?') {\n i = readPI(xmlData, ++i);\n if (i.err) return i;\n } else{\n break;\n }\n } else if (xmlData[i] === '&') {\n const afterAmp = validateAmpersand(xmlData, i);\n if (afterAmp == -1)\n return getErrorObject('InvalidChar', \"char '&' is not expected.\", getLineNumberForPosition(xmlData, i));\n i = afterAmp;\n }else{\n if (reachedRoot === true && !isWhiteSpace(xmlData[i])) {\n return getErrorObject('InvalidXml', \"Extra text at the end\", getLineNumberForPosition(xmlData, i));\n }\n }\n } //end of reading tag text value\n if (xmlData[i] === '<') {\n i--;\n }\n }\n } else {\n if ( isWhiteSpace(xmlData[i])) {\n continue;\n }\n return getErrorObject('InvalidChar', \"char '\"+xmlData[i]+\"' is not expected.\", getLineNumberForPosition(xmlData, i));\n }\n }\n\n if (!tagFound) {\n return getErrorObject('InvalidXml', 'Start tag expected.', 1);\n }else if (tags.length == 1) {\n return getErrorObject('InvalidTag', \"Unclosed tag '\"+tags[0].tagName+\"'.\", getLineNumberForPosition(xmlData, tags[0].tagStartPos));\n }else if (tags.length > 0) {\n return getErrorObject('InvalidXml', \"Invalid '\"+\n JSON.stringify(tags.map(t => t.tagName), null, 4).replace(/\\r?\\n/g, '')+\n \"' found.\", {line: 1, col: 1});\n }\n\n return true;\n};\n\nfunction isWhiteSpace(char){\n return char === ' ' || char === '\\t' || char === '\\n' || char === '\\r';\n}\n/**\n * Read Processing insstructions and skip\n * @param {*} xmlData\n * @param {*} i\n */\nfunction readPI(xmlData, i) {\n const start = i;\n for (; i < xmlData.length; i++) {\n if (xmlData[i] == '?' || xmlData[i] == ' ') {\n //tagname\n const tagname = xmlData.substr(start, i - start);\n if (i > 5 && tagname === 'xml') {\n return getErrorObject('InvalidXml', 'XML declaration allowed only at the start of the document.', getLineNumberForPosition(xmlData, i));\n } else if (xmlData[i] == '?' && xmlData[i + 1] == '>') {\n //check if valid attribut string\n i++;\n break;\n } else {\n continue;\n }\n }\n }\n return i;\n}\n\nfunction readCommentAndCDATA(xmlData, i) {\n if (xmlData.length > i + 5 && xmlData[i + 1] === '-' && xmlData[i + 2] === '-') {\n //comment\n for (i += 3; i < xmlData.length; i++) {\n if (xmlData[i] === '-' && xmlData[i + 1] === '-' && xmlData[i + 2] === '>') {\n i += 2;\n break;\n }\n }\n } else if (\n xmlData.length > i + 8 &&\n xmlData[i + 1] === 'D' &&\n xmlData[i + 2] === 'O' &&\n xmlData[i + 3] === 'C' &&\n xmlData[i + 4] === 'T' &&\n xmlData[i + 5] === 'Y' &&\n xmlData[i + 6] === 'P' &&\n xmlData[i + 7] === 'E'\n ) {\n let angleBracketsCount = 1;\n for (i += 8; i < xmlData.length; i++) {\n if (xmlData[i] === '<') {\n angleBracketsCount++;\n } else if (xmlData[i] === '>') {\n angleBracketsCount--;\n if (angleBracketsCount === 0) {\n break;\n }\n }\n }\n } else if (\n xmlData.length > i + 9 &&\n xmlData[i + 1] === '[' &&\n xmlData[i + 2] === 'C' &&\n xmlData[i + 3] === 'D' &&\n xmlData[i + 4] === 'A' &&\n xmlData[i + 5] === 'T' &&\n xmlData[i + 6] === 'A' &&\n xmlData[i + 7] === '['\n ) {\n for (i += 8; i < xmlData.length; i++) {\n if (xmlData[i] === ']' && xmlData[i + 1] === ']' && xmlData[i + 2] === '>') {\n i += 2;\n break;\n }\n }\n }\n\n return i;\n}\n\nconst doubleQuote = '\"';\nconst singleQuote = \"'\";\n\n/**\n * Keep reading xmlData until '<' is found outside the attribute value.\n * @param {string} xmlData\n * @param {number} i\n */\nfunction readAttributeStr(xmlData, i) {\n let attrStr = '';\n let startChar = '';\n let tagClosed = false;\n for (; i < xmlData.length; i++) {\n if (xmlData[i] === doubleQuote || xmlData[i] === singleQuote) {\n if (startChar === '') {\n startChar = xmlData[i];\n } else if (startChar !== xmlData[i]) {\n //if vaue is enclosed with double quote then single quotes are allowed inside the value and vice versa\n } else {\n startChar = '';\n }\n } else if (xmlData[i] === '>') {\n if (startChar === '') {\n tagClosed = true;\n break;\n }\n }\n attrStr += xmlData[i];\n }\n if (startChar !== '') {\n return false;\n }\n\n return {\n value: attrStr,\n index: i,\n tagClosed: tagClosed\n };\n}\n\n/**\n * Select all the attributes whether valid or invalid.\n */\nconst validAttrStrRegxp = new RegExp('(\\\\s*)([^\\\\s=]+)(\\\\s*=)?(\\\\s*([\\'\"])(([\\\\s\\\\S])*?)\\\\5)?', 'g');\n\n//attr, =\"sd\", a=\"amit's\", a=\"sd\"b=\"saf\", ab cd=\"\"\n\nfunction validateAttributeString(attrStr, options) {\n //console.log(\"start:\"+attrStr+\":end\");\n\n //if(attrStr.trim().length === 0) return true; //empty string\n\n const matches = util.getAllMatches(attrStr, validAttrStrRegxp);\n const attrNames = {};\n\n for (let i = 0; i < matches.length; i++) {\n if (matches[i][1].length === 0) {\n //nospace before attribute name: a=\"sd\"b=\"saf\"\n return getErrorObject('InvalidAttr', \"Attribute '\"+matches[i][2]+\"' has no space in starting.\", getPositionFromMatch(matches[i]))\n } else if (matches[i][3] !== undefined && matches[i][4] === undefined) {\n return getErrorObject('InvalidAttr', \"Attribute '\"+matches[i][2]+\"' is without value.\", getPositionFromMatch(matches[i]));\n } else if (matches[i][3] === undefined && !options.allowBooleanAttributes) {\n //independent attribute: ab\n return getErrorObject('InvalidAttr', \"boolean attribute '\"+matches[i][2]+\"' is not allowed.\", getPositionFromMatch(matches[i]));\n }\n /* else if(matches[i][6] === undefined){//attribute without value: ab=\n return { err: { code:\"InvalidAttr\",msg:\"attribute \" + matches[i][2] + \" has no value assigned.\"}};\n } */\n const attrName = matches[i][2];\n if (!validateAttrName(attrName)) {\n return getErrorObject('InvalidAttr', \"Attribute '\"+attrName+\"' is an invalid name.\", getPositionFromMatch(matches[i]));\n }\n if (!attrNames.hasOwnProperty(attrName)) {\n //check for duplicate attribute.\n attrNames[attrName] = 1;\n } else {\n return getErrorObject('InvalidAttr', \"Attribute '\"+attrName+\"' is repeated.\", getPositionFromMatch(matches[i]));\n }\n }\n\n return true;\n}\n\nfunction validateNumberAmpersand(xmlData, i) {\n let re = /\\d/;\n if (xmlData[i] === 'x') {\n i++;\n re = /[\\da-fA-F]/;\n }\n for (; i < xmlData.length; i++) {\n if (xmlData[i] === ';')\n return i;\n if (!xmlData[i].match(re))\n break;\n }\n return -1;\n}\n\nfunction validateAmpersand(xmlData, i) {\n // https://www.w3.org/TR/xml/#dt-charref\n i++;\n if (xmlData[i] === ';')\n return -1;\n if (xmlData[i] === '#') {\n i++;\n return validateNumberAmpersand(xmlData, i);\n }\n let count = 0;\n for (; i < xmlData.length; i++, count++) {\n if (xmlData[i].match(/\\w/) && count < 20)\n continue;\n if (xmlData[i] === ';')\n break;\n return -1;\n }\n return i;\n}\n\nfunction getErrorObject(code, message, lineNumber) {\n return {\n err: {\n code: code,\n msg: message,\n line: lineNumber.line || lineNumber,\n col: lineNumber.col,\n },\n };\n}\n\nfunction validateAttrName(attrName) {\n return util.isName(attrName);\n}\n\n// const startsWithXML = /^xml/i;\n\nfunction validateTagName(tagname) {\n return util.isName(tagname) /* && !tagname.match(startsWithXML) */;\n}\n\n//this function returns the line number for the character at the given index\nfunction getLineNumberForPosition(xmlData, index) {\n const lines = xmlData.substring(0, index).split(/\\r?\\n/);\n return {\n line: lines.length,\n\n // column number is last line's length + 1, because column numbering starts at 1:\n col: lines[lines.length - 1].length + 1\n };\n}\n\n//this function returns the position of the first character of match within attrStr\nfunction getPositionFromMatch(match) {\n return match.startIndex + match[1].length;\n}\n","'use strict';\n//parse Empty Node as self closing node\nconst buildFromOrderedJs = require('./orderedJs2Xml');\n\nconst defaultOptions = {\n attributeNamePrefix: '@_',\n attributesGroupName: false,\n textNodeName: '#text',\n ignoreAttributes: true,\n cdataPropName: false,\n format: false,\n indentBy: ' ',\n suppressEmptyNode: false,\n suppressUnpairedNode: true,\n suppressBooleanAttributes: true,\n tagValueProcessor: function(key, a) {\n return a;\n },\n attributeValueProcessor: function(attrName, a) {\n return a;\n },\n preserveOrder: false,\n commentPropName: false,\n unpairedTags: [],\n entities: [\n { regex: new RegExp(\"&\", \"g\"), val: \"&\" },//it must be on top\n { regex: new RegExp(\">\", \"g\"), val: \">\" },\n { regex: new RegExp(\"<\", \"g\"), val: \"<\" },\n { regex: new RegExp(\"\\'\", \"g\"), val: \"'\" },\n { regex: new RegExp(\"\\\"\", \"g\"), val: \""\" }\n ],\n processEntities: true,\n stopNodes: [],\n // transformTagName: false,\n // transformAttributeName: false,\n oneListGroup: false\n};\n\nfunction Builder(options) {\n this.options = Object.assign({}, defaultOptions, options);\n if (this.options.ignoreAttributes || this.options.attributesGroupName) {\n this.isAttribute = function(/*a*/) {\n return false;\n };\n } else {\n this.attrPrefixLen = this.options.attributeNamePrefix.length;\n this.isAttribute = isAttribute;\n }\n\n this.processTextOrObjNode = processTextOrObjNode\n\n if (this.options.format) {\n this.indentate = indentate;\n this.tagEndChar = '>\\n';\n this.newLine = '\\n';\n } else {\n this.indentate = function() {\n return '';\n };\n this.tagEndChar = '>';\n this.newLine = '';\n }\n}\n\nBuilder.prototype.build = function(jObj) {\n if(this.options.preserveOrder){\n return buildFromOrderedJs(jObj, this.options);\n }else {\n if(Array.isArray(jObj) && this.options.arrayNodeName && this.options.arrayNodeName.length > 1){\n jObj = {\n [this.options.arrayNodeName] : jObj\n }\n }\n return this.j2x(jObj, 0).val;\n }\n};\n\nBuilder.prototype.j2x = function(jObj, level) {\n let attrStr = '';\n let val = '';\n for (let key in jObj) {\n if(!Object.prototype.hasOwnProperty.call(jObj, key)) continue;\n if (typeof jObj[key] === 'undefined') {\n // supress undefined node only if it is not an attribute\n if (this.isAttribute(key)) {\n val += '';\n }\n } else if (jObj[key] === null) {\n // null attribute should be ignored by the attribute list, but should not cause the tag closing\n if (this.isAttribute(key)) {\n val += '';\n } else if (key[0] === '?') {\n val += this.indentate(level) + '<' + key + '?' + this.tagEndChar;\n } else {\n val += this.indentate(level) + '<' + key + '/' + this.tagEndChar;\n }\n // val += this.indentate(level) + '<' + key + '/' + this.tagEndChar;\n } else if (jObj[key] instanceof Date) {\n val += this.buildTextValNode(jObj[key], key, '', level);\n } else if (typeof jObj[key] !== 'object') {\n //premitive type\n const attr = this.isAttribute(key);\n if (attr) {\n attrStr += this.buildAttrPairStr(attr, '' + jObj[key]);\n }else {\n //tag value\n if (key === this.options.textNodeName) {\n let newval = this.options.tagValueProcessor(key, '' + jObj[key]);\n val += this.replaceEntitiesValue(newval);\n } else {\n val += this.buildTextValNode(jObj[key], key, '', level);\n }\n }\n } else if (Array.isArray(jObj[key])) {\n //repeated nodes\n const arrLen = jObj[key].length;\n let listTagVal = \"\";\n let listTagAttr = \"\";\n for (let j = 0; j < arrLen; j++) {\n const item = jObj[key][j];\n if (typeof item === 'undefined') {\n // supress undefined node\n } else if (item === null) {\n if(key[0] === \"?\") val += this.indentate(level) + '<' + key + '?' + this.tagEndChar;\n else val += this.indentate(level) + '<' + key + '/' + this.tagEndChar;\n // val += this.indentate(level) + '<' + key + '/' + this.tagEndChar;\n } else if (typeof item === 'object') {\n if(this.options.oneListGroup){\n const result = this.j2x(item, level + 1);\n listTagVal += result.val;\n if (this.options.attributesGroupName && item.hasOwnProperty(this.options.attributesGroupName)) {\n listTagAttr += result.attrStr\n }\n }else{\n listTagVal += this.processTextOrObjNode(item, key, level)\n }\n } else {\n if (this.options.oneListGroup) {\n let textValue = this.options.tagValueProcessor(key, item);\n textValue = this.replaceEntitiesValue(textValue);\n listTagVal += textValue;\n } else {\n listTagVal += this.buildTextValNode(item, key, '', level);\n }\n }\n }\n if(this.options.oneListGroup){\n listTagVal = this.buildObjectNode(listTagVal, key, listTagAttr, level);\n }\n val += listTagVal;\n } else {\n //nested node\n if (this.options.attributesGroupName && key === this.options.attributesGroupName) {\n const Ks = Object.keys(jObj[key]);\n const L = Ks.length;\n for (let j = 0; j < L; j++) {\n attrStr += this.buildAttrPairStr(Ks[j], '' + jObj[key][Ks[j]]);\n }\n } else {\n val += this.processTextOrObjNode(jObj[key], key, level)\n }\n }\n }\n return {attrStr: attrStr, val: val};\n};\n\nBuilder.prototype.buildAttrPairStr = function(attrName, val){\n val = this.options.attributeValueProcessor(attrName, '' + val);\n val = this.replaceEntitiesValue(val);\n if (this.options.suppressBooleanAttributes && val === \"true\") {\n return ' ' + attrName;\n } else return ' ' + attrName + '=\"' + val + '\"';\n}\n\nfunction processTextOrObjNode (object, key, level) {\n const result = this.j2x(object, level + 1);\n if (object[this.options.textNodeName] !== undefined && Object.keys(object).length === 1) {\n return this.buildTextValNode(object[this.options.textNodeName], key, result.attrStr, level);\n } else {\n return this.buildObjectNode(result.val, key, result.attrStr, level);\n }\n}\n\nBuilder.prototype.buildObjectNode = function(val, key, attrStr, level) {\n if(val === \"\"){\n if(key[0] === \"?\") return this.indentate(level) + '<' + key + attrStr+ '?' + this.tagEndChar;\n else {\n return this.indentate(level) + '<' + key + attrStr + this.closeTag(key) + this.tagEndChar;\n }\n }else{\n\n let tagEndExp = '' + val + tagEndExp );\n } else if (this.options.commentPropName !== false && key === this.options.commentPropName && piClosingChar.length === 0) {\n return this.indentate(level) + `` + this.newLine;\n }else {\n return (\n this.indentate(level) + '<' + key + attrStr + piClosingChar + this.tagEndChar +\n val +\n this.indentate(level) + tagEndExp );\n }\n }\n}\n\nBuilder.prototype.closeTag = function(key){\n let closeTag = \"\";\n if(this.options.unpairedTags.indexOf(key) !== -1){ //unpaired\n if(!this.options.suppressUnpairedNode) closeTag = \"/\"\n }else if(this.options.suppressEmptyNode){ //empty\n closeTag = \"/\";\n }else{\n closeTag = `>` + this.newLine;\n }else if (this.options.commentPropName !== false && key === this.options.commentPropName) {\n return this.indentate(level) + `` + this.newLine;\n }else if(key[0] === \"?\") {//PI tag\n return this.indentate(level) + '<' + key + attrStr+ '?' + this.tagEndChar; \n }else{\n let textValue = this.options.tagValueProcessor(key, val);\n textValue = this.replaceEntitiesValue(textValue);\n \n if( textValue === ''){\n return this.indentate(level) + '<' + key + attrStr + this.closeTag(key) + this.tagEndChar;\n }else{\n return this.indentate(level) + '<' + key + attrStr + '>' +\n textValue +\n ' 0 && this.options.processEntities){\n for (let i=0; i 0) {\n indentation = EOL;\n }\n return arrToStr(jArray, options, \"\", indentation);\n}\n\nfunction arrToStr(arr, options, jPath, indentation) {\n let xmlStr = \"\";\n let isPreviousElementTag = false;\n\n for (let i = 0; i < arr.length; i++) {\n const tagObj = arr[i];\n const tagName = propName(tagObj);\n if(tagName === undefined) continue;\n\n let newJPath = \"\";\n if (jPath.length === 0) newJPath = tagName\n else newJPath = `${jPath}.${tagName}`;\n\n if (tagName === options.textNodeName) {\n let tagText = tagObj[tagName];\n if (!isStopNode(newJPath, options)) {\n tagText = options.tagValueProcessor(tagName, tagText);\n tagText = replaceEntitiesValue(tagText, options);\n }\n if (isPreviousElementTag) {\n xmlStr += indentation;\n }\n xmlStr += tagText;\n isPreviousElementTag = false;\n continue;\n } else if (tagName === options.cdataPropName) {\n if (isPreviousElementTag) {\n xmlStr += indentation;\n }\n xmlStr += ``;\n isPreviousElementTag = false;\n continue;\n } else if (tagName === options.commentPropName) {\n xmlStr += indentation + ``;\n isPreviousElementTag = true;\n continue;\n } else if (tagName[0] === \"?\") {\n const attStr = attr_to_str(tagObj[\":@\"], options);\n const tempInd = tagName === \"?xml\" ? \"\" : indentation;\n let piTextNodeName = tagObj[tagName][0][options.textNodeName];\n piTextNodeName = piTextNodeName.length !== 0 ? \" \" + piTextNodeName : \"\"; //remove extra spacing\n xmlStr += tempInd + `<${tagName}${piTextNodeName}${attStr}?>`;\n isPreviousElementTag = true;\n continue;\n }\n let newIdentation = indentation;\n if (newIdentation !== \"\") {\n newIdentation += options.indentBy;\n }\n const attStr = attr_to_str(tagObj[\":@\"], options);\n const tagStart = indentation + `<${tagName}${attStr}`;\n const tagValue = arrToStr(tagObj[tagName], options, newJPath, newIdentation);\n if (options.unpairedTags.indexOf(tagName) !== -1) {\n if (options.suppressUnpairedNode) xmlStr += tagStart + \">\";\n else xmlStr += tagStart + \"/>\";\n } else if ((!tagValue || tagValue.length === 0) && options.suppressEmptyNode) {\n xmlStr += tagStart + \"/>\";\n } else if (tagValue && tagValue.endsWith(\">\")) {\n xmlStr += tagStart + `>${tagValue}${indentation}`;\n } else {\n xmlStr += tagStart + \">\";\n if (tagValue && indentation !== \"\" && (tagValue.includes(\"/>\") || tagValue.includes(\"`;\n }\n isPreviousElementTag = true;\n }\n\n return xmlStr;\n}\n\nfunction propName(obj) {\n const keys = Object.keys(obj);\n for (let i = 0; i < keys.length; i++) {\n const key = keys[i];\n if(!obj.hasOwnProperty(key)) continue;\n if (key !== \":@\") return key;\n }\n}\n\nfunction attr_to_str(attrMap, options) {\n let attrStr = \"\";\n if (attrMap && !options.ignoreAttributes) {\n for (let attr in attrMap) {\n if(!attrMap.hasOwnProperty(attr)) continue;\n let attrVal = options.attributeValueProcessor(attr, attrMap[attr]);\n attrVal = replaceEntitiesValue(attrVal, options);\n if (attrVal === true && options.suppressBooleanAttributes) {\n attrStr += ` ${attr.substr(options.attributeNamePrefix.length)}`;\n } else {\n attrStr += ` ${attr.substr(options.attributeNamePrefix.length)}=\"${attrVal}\"`;\n }\n }\n }\n return attrStr;\n}\n\nfunction isStopNode(jPath, options) {\n jPath = jPath.substr(0, jPath.length - options.textNodeName.length - 1);\n let tagName = jPath.substr(jPath.lastIndexOf(\".\") + 1);\n for (let index in options.stopNodes) {\n if (options.stopNodes[index] === jPath || options.stopNodes[index] === \"*.\" + tagName) return true;\n }\n return false;\n}\n\nfunction replaceEntitiesValue(textValue, options) {\n if (textValue && textValue.length > 0 && options.processEntities) {\n for (let i = 0; i < options.entities.length; i++) {\n const entity = options.entities[i];\n textValue = textValue.replace(entity.regex, entity.val);\n }\n }\n return textValue;\n}\nmodule.exports = toXml;\n","const util = require('../util');\n\n//TODO: handle comments\nfunction readDocType(xmlData, i){\n \n const entities = {};\n if( xmlData[i + 3] === 'O' &&\n xmlData[i + 4] === 'C' &&\n xmlData[i + 5] === 'T' &&\n xmlData[i + 6] === 'Y' &&\n xmlData[i + 7] === 'P' &&\n xmlData[i + 8] === 'E')\n { \n i = i+9;\n let angleBracketsCount = 1;\n let hasBody = false, comment = false;\n let exp = \"\";\n for(;i') { //Read tag content\n if(comment){\n if( xmlData[i - 1] === \"-\" && xmlData[i - 2] === \"-\"){\n comment = false;\n angleBracketsCount--;\n }\n }else{\n angleBracketsCount--;\n }\n if (angleBracketsCount === 0) {\n break;\n }\n }else if( xmlData[i] === '['){\n hasBody = true;\n }else{\n exp += xmlData[i];\n }\n }\n if(angleBracketsCount !== 0){\n throw new Error(`Unclosed DOCTYPE`);\n }\n }else{\n throw new Error(`Invalid Tag instead of DOCTYPE`);\n }\n return {entities, i};\n}\n\nfunction readEntityExp(xmlData,i){\n //External entities are not supported\n // \n\n //Parameter entities are not supported\n // \n\n //Internal entities are supported\n // \n \n //read EntityName\n let entityName = \"\";\n for (; i < xmlData.length && (xmlData[i] !== \"'\" && xmlData[i] !== '\"' ); i++) {\n // if(xmlData[i] === \" \") continue;\n // else \n entityName += xmlData[i];\n }\n entityName = entityName.trim();\n if(entityName.indexOf(\" \") !== -1) throw new Error(\"External entites are not supported\");\n\n //read Entity Value\n const startChar = xmlData[i++];\n let val = \"\"\n for (; i < xmlData.length && xmlData[i] !== startChar ; i++) {\n val += xmlData[i];\n }\n return [entityName, val, i];\n}\n\nfunction isComment(xmlData, i){\n if(xmlData[i+1] === '!' &&\n xmlData[i+2] === '-' &&\n xmlData[i+3] === '-') return true\n return false\n}\nfunction isEntity(xmlData, i){\n if(xmlData[i+1] === '!' &&\n xmlData[i+2] === 'E' &&\n xmlData[i+3] === 'N' &&\n xmlData[i+4] === 'T' &&\n xmlData[i+5] === 'I' &&\n xmlData[i+6] === 'T' &&\n xmlData[i+7] === 'Y') return true\n return false\n}\nfunction isElement(xmlData, i){\n if(xmlData[i+1] === '!' &&\n xmlData[i+2] === 'E' &&\n xmlData[i+3] === 'L' &&\n xmlData[i+4] === 'E' &&\n xmlData[i+5] === 'M' &&\n xmlData[i+6] === 'E' &&\n xmlData[i+7] === 'N' &&\n xmlData[i+8] === 'T') return true\n return false\n}\n\nfunction isAttlist(xmlData, i){\n if(xmlData[i+1] === '!' &&\n xmlData[i+2] === 'A' &&\n xmlData[i+3] === 'T' &&\n xmlData[i+4] === 'T' &&\n xmlData[i+5] === 'L' &&\n xmlData[i+6] === 'I' &&\n xmlData[i+7] === 'S' &&\n xmlData[i+8] === 'T') return true\n return false\n}\nfunction isNotation(xmlData, i){\n if(xmlData[i+1] === '!' &&\n xmlData[i+2] === 'N' &&\n xmlData[i+3] === 'O' &&\n xmlData[i+4] === 'T' &&\n xmlData[i+5] === 'A' &&\n xmlData[i+6] === 'T' &&\n xmlData[i+7] === 'I' &&\n xmlData[i+8] === 'O' &&\n xmlData[i+9] === 'N') return true\n return false\n}\n\nfunction validateEntityName(name){\n if (util.isName(name))\n\treturn name;\n else\n throw new Error(`Invalid entity name ${name}`);\n}\n\nmodule.exports = readDocType;\n","\nconst defaultOptions = {\n preserveOrder: false,\n attributeNamePrefix: '@_',\n attributesGroupName: false,\n textNodeName: '#text',\n ignoreAttributes: true,\n removeNSPrefix: false, // remove NS from tag name or attribute name if true\n allowBooleanAttributes: false, //a tag can have attributes without any value\n //ignoreRootElement : false,\n parseTagValue: true,\n parseAttributeValue: false,\n trimValues: true, //Trim string values of tag and attributes\n cdataPropName: false,\n numberParseOptions: {\n hex: true,\n leadingZeros: true,\n eNotation: true\n },\n tagValueProcessor: function(tagName, val) {\n return val;\n },\n attributeValueProcessor: function(attrName, val) {\n return val;\n },\n stopNodes: [], //nested tags will not be parsed even for errors\n alwaysCreateTextNode: false,\n isArray: () => false,\n commentPropName: false,\n unpairedTags: [],\n processEntities: true,\n htmlEntities: false,\n ignoreDeclaration: false,\n ignorePiTags: false,\n transformTagName: false,\n transformAttributeName: false,\n updateTag: function(tagName, jPath, attrs){\n return tagName\n },\n // skipEmptyListItem: false\n};\n \nconst buildOptions = function(options) {\n return Object.assign({}, defaultOptions, options);\n};\n\nexports.buildOptions = buildOptions;\nexports.defaultOptions = defaultOptions;","'use strict';\n///@ts-check\n\nconst util = require('../util');\nconst xmlNode = require('./xmlNode');\nconst readDocType = require(\"./DocTypeReader\");\nconst toNumber = require(\"strnum\");\n\n// const regx =\n// '<((!\\\\[CDATA\\\\[([\\\\s\\\\S]*?)(]]>))|((NAME:)?(NAME))([^>]*)>|((\\\\/)(NAME)\\\\s*>))([^<]*)'\n// .replace(/NAME/g, util.nameRegexp);\n\n//const tagsRegx = new RegExp(\"<(\\\\/?[\\\\w:\\\\-\\._]+)([^>]*)>(\\\\s*\"+cdataRegx+\")*([^<]+)?\",\"g\");\n//const tagsRegx = new RegExp(\"<(\\\\/?)((\\\\w*:)?([\\\\w:\\\\-\\._]+))([^>]*)>([^<]*)(\"+cdataRegx+\"([^<]*))*([^<]+)?\",\"g\");\n\nclass OrderedObjParser{\n constructor(options){\n this.options = options;\n this.currentNode = null;\n this.tagsNodeStack = [];\n this.docTypeEntities = {};\n this.lastEntities = {\n \"apos\" : { regex: /&(apos|#39|#x27);/g, val : \"'\"},\n \"gt\" : { regex: /&(gt|#62|#x3E);/g, val : \">\"},\n \"lt\" : { regex: /&(lt|#60|#x3C);/g, val : \"<\"},\n \"quot\" : { regex: /&(quot|#34|#x22);/g, val : \"\\\"\"},\n };\n this.ampEntity = { regex: /&(amp|#38|#x26);/g, val : \"&\"};\n this.htmlEntities = {\n \"space\": { regex: /&(nbsp|#160);/g, val: \" \" },\n // \"lt\" : { regex: /&(lt|#60);/g, val: \"<\" },\n // \"gt\" : { regex: /&(gt|#62);/g, val: \">\" },\n // \"amp\" : { regex: /&(amp|#38);/g, val: \"&\" },\n // \"quot\" : { regex: /&(quot|#34);/g, val: \"\\\"\" },\n // \"apos\" : { regex: /&(apos|#39);/g, val: \"'\" },\n \"cent\" : { regex: /&(cent|#162);/g, val: \"¢\" },\n \"pound\" : { regex: /&(pound|#163);/g, val: \"£\" },\n \"yen\" : { regex: /&(yen|#165);/g, val: \"¥\" },\n \"euro\" : { regex: /&(euro|#8364);/g, val: \"€\" },\n \"copyright\" : { regex: /&(copy|#169);/g, val: \"©\" },\n \"reg\" : { regex: /&(reg|#174);/g, val: \"®\" },\n \"inr\" : { regex: /&(inr|#8377);/g, val: \"₹\" },\n \"num_dec\": { regex: /&#([0-9]{1,7});/g, val : (_, str) => String.fromCharCode(Number.parseInt(str, 10)) },\n \"num_hex\": { regex: /&#x([0-9a-fA-F]{1,6});/g, val : (_, str) => String.fromCharCode(Number.parseInt(str, 16)) },\n };\n this.addExternalEntities = addExternalEntities;\n this.parseXml = parseXml;\n this.parseTextData = parseTextData;\n this.resolveNameSpace = resolveNameSpace;\n this.buildAttributesMap = buildAttributesMap;\n this.isItStopNode = isItStopNode;\n this.replaceEntitiesValue = replaceEntitiesValue;\n this.readStopNodeData = readStopNodeData;\n this.saveTextToParentTag = saveTextToParentTag;\n this.addChild = addChild;\n }\n\n}\n\nfunction addExternalEntities(externalEntities){\n const entKeys = Object.keys(externalEntities);\n for (let i = 0; i < entKeys.length; i++) {\n const ent = entKeys[i];\n this.lastEntities[ent] = {\n regex: new RegExp(\"&\"+ent+\";\",\"g\"),\n val : externalEntities[ent]\n }\n }\n}\n\n/**\n * @param {string} val\n * @param {string} tagName\n * @param {string} jPath\n * @param {boolean} dontTrim\n * @param {boolean} hasAttributes\n * @param {boolean} isLeafNode\n * @param {boolean} escapeEntities\n */\nfunction parseTextData(val, tagName, jPath, dontTrim, hasAttributes, isLeafNode, escapeEntities) {\n if (val !== undefined) {\n if (this.options.trimValues && !dontTrim) {\n val = val.trim();\n }\n if(val.length > 0){\n if(!escapeEntities) val = this.replaceEntitiesValue(val);\n \n const newval = this.options.tagValueProcessor(tagName, val, jPath, hasAttributes, isLeafNode);\n if(newval === null || newval === undefined){\n //don't parse\n return val;\n }else if(typeof newval !== typeof val || newval !== val){\n //overwrite\n return newval;\n }else if(this.options.trimValues){\n return parseValue(val, this.options.parseTagValue, this.options.numberParseOptions);\n }else{\n const trimmedVal = val.trim();\n if(trimmedVal === val){\n return parseValue(val, this.options.parseTagValue, this.options.numberParseOptions);\n }else{\n return val;\n }\n }\n }\n }\n}\n\nfunction resolveNameSpace(tagname) {\n if (this.options.removeNSPrefix) {\n const tags = tagname.split(':');\n const prefix = tagname.charAt(0) === '/' ? '/' : '';\n if (tags[0] === 'xmlns') {\n return '';\n }\n if (tags.length === 2) {\n tagname = prefix + tags[1];\n }\n }\n return tagname;\n}\n\n//TODO: change regex to capture NS\n//const attrsRegx = new RegExp(\"([\\\\w\\\\-\\\\.\\\\:]+)\\\\s*=\\\\s*(['\\\"])((.|\\n)*?)\\\\2\",\"gm\");\nconst attrsRegx = new RegExp('([^\\\\s=]+)\\\\s*(=\\\\s*([\\'\"])([\\\\s\\\\S]*?)\\\\3)?', 'gm');\n\nfunction buildAttributesMap(attrStr, jPath, tagName) {\n if (!this.options.ignoreAttributes && typeof attrStr === 'string') {\n // attrStr = attrStr.replace(/\\r?\\n/g, ' ');\n //attrStr = attrStr || attrStr.trim();\n\n const matches = util.getAllMatches(attrStr, attrsRegx);\n const len = matches.length; //don't make it inline\n const attrs = {};\n for (let i = 0; i < len; i++) {\n const attrName = this.resolveNameSpace(matches[i][1]);\n let oldVal = matches[i][4];\n let aName = this.options.attributeNamePrefix + attrName;\n if (attrName.length) {\n if (this.options.transformAttributeName) {\n aName = this.options.transformAttributeName(aName);\n }\n if(aName === \"__proto__\") aName = \"#__proto__\";\n if (oldVal !== undefined) {\n if (this.options.trimValues) {\n oldVal = oldVal.trim();\n }\n oldVal = this.replaceEntitiesValue(oldVal);\n const newVal = this.options.attributeValueProcessor(attrName, oldVal, jPath);\n if(newVal === null || newVal === undefined){\n //don't parse\n attrs[aName] = oldVal;\n }else if(typeof newVal !== typeof oldVal || newVal !== oldVal){\n //overwrite\n attrs[aName] = newVal;\n }else{\n //parse\n attrs[aName] = parseValue(\n oldVal,\n this.options.parseAttributeValue,\n this.options.numberParseOptions\n );\n }\n } else if (this.options.allowBooleanAttributes) {\n attrs[aName] = true;\n }\n }\n }\n if (!Object.keys(attrs).length) {\n return;\n }\n if (this.options.attributesGroupName) {\n const attrCollection = {};\n attrCollection[this.options.attributesGroupName] = attrs;\n return attrCollection;\n }\n return attrs\n }\n}\n\nconst parseXml = function(xmlData) {\n xmlData = xmlData.replace(/\\r\\n?/g, \"\\n\"); //TODO: remove this line\n const xmlObj = new xmlNode('!xml');\n let currentNode = xmlObj;\n let textData = \"\";\n let jPath = \"\";\n for(let i=0; i< xmlData.length; i++){//for each char in XML data\n const ch = xmlData[i];\n if(ch === '<'){\n // const nextIndex = i+1;\n // const _2ndChar = xmlData[nextIndex];\n if( xmlData[i+1] === '/') {//Closing Tag\n const closeIndex = findClosingIndex(xmlData, \">\", i, \"Closing Tag is not closed.\")\n let tagName = xmlData.substring(i+2,closeIndex).trim();\n\n if(this.options.removeNSPrefix){\n const colonIndex = tagName.indexOf(\":\");\n if(colonIndex !== -1){\n tagName = tagName.substr(colonIndex+1);\n }\n }\n\n if(this.options.transformTagName) {\n tagName = this.options.transformTagName(tagName);\n }\n\n if(currentNode){\n textData = this.saveTextToParentTag(textData, currentNode, jPath);\n }\n\n //check if last tag of nested tag was unpaired tag\n const lastTagName = jPath.substring(jPath.lastIndexOf(\".\")+1);\n if(tagName && this.options.unpairedTags.indexOf(tagName) !== -1 ){\n throw new Error(`Unpaired tag can not be used as closing tag: `);\n }\n let propIndex = 0\n if(lastTagName && this.options.unpairedTags.indexOf(lastTagName) !== -1 ){\n propIndex = jPath.lastIndexOf('.', jPath.lastIndexOf('.')-1)\n this.tagsNodeStack.pop();\n }else{\n propIndex = jPath.lastIndexOf(\".\");\n }\n jPath = jPath.substring(0, propIndex);\n\n currentNode = this.tagsNodeStack.pop();//avoid recursion, set the parent tag scope\n textData = \"\";\n i = closeIndex;\n } else if( xmlData[i+1] === '?') {\n\n let tagData = readTagExp(xmlData,i, false, \"?>\");\n if(!tagData) throw new Error(\"Pi Tag is not closed.\");\n\n textData = this.saveTextToParentTag(textData, currentNode, jPath);\n if( (this.options.ignoreDeclaration && tagData.tagName === \"?xml\") || this.options.ignorePiTags){\n\n }else{\n \n const childNode = new xmlNode(tagData.tagName);\n childNode.add(this.options.textNodeName, \"\");\n \n if(tagData.tagName !== tagData.tagExp && tagData.attrExpPresent){\n childNode[\":@\"] = this.buildAttributesMap(tagData.tagExp, jPath, tagData.tagName);\n }\n this.addChild(currentNode, childNode, jPath)\n\n }\n\n\n i = tagData.closeIndex + 1;\n } else if(xmlData.substr(i + 1, 3) === '!--') {\n const endIndex = findClosingIndex(xmlData, \"-->\", i+4, \"Comment is not closed.\")\n if(this.options.commentPropName){\n const comment = xmlData.substring(i + 4, endIndex - 2);\n\n textData = this.saveTextToParentTag(textData, currentNode, jPath);\n\n currentNode.add(this.options.commentPropName, [ { [this.options.textNodeName] : comment } ]);\n }\n i = endIndex;\n } else if( xmlData.substr(i + 1, 2) === '!D') {\n const result = readDocType(xmlData, i);\n this.docTypeEntities = result.entities;\n i = result.i;\n }else if(xmlData.substr(i + 1, 2) === '![') {\n const closeIndex = findClosingIndex(xmlData, \"]]>\", i, \"CDATA is not closed.\") - 2;\n const tagExp = xmlData.substring(i + 9,closeIndex);\n\n textData = this.saveTextToParentTag(textData, currentNode, jPath);\n\n let val = this.parseTextData(tagExp, currentNode.tagname, jPath, true, false, true, true);\n if(val == undefined) val = \"\";\n\n //cdata should be set even if it is 0 length string\n if(this.options.cdataPropName){\n currentNode.add(this.options.cdataPropName, [ { [this.options.textNodeName] : tagExp } ]);\n }else{\n currentNode.add(this.options.textNodeName, val);\n }\n \n i = closeIndex + 2;\n }else {//Opening tag\n let result = readTagExp(xmlData,i, this.options.removeNSPrefix);\n let tagName= result.tagName;\n const rawTagName = result.rawTagName;\n let tagExp = result.tagExp;\n let attrExpPresent = result.attrExpPresent;\n let closeIndex = result.closeIndex;\n\n if (this.options.transformTagName) {\n tagName = this.options.transformTagName(tagName);\n }\n \n //save text as child node\n if (currentNode && textData) {\n if(currentNode.tagname !== '!xml'){\n //when nested tag is found\n textData = this.saveTextToParentTag(textData, currentNode, jPath, false);\n }\n }\n\n //check if last tag was unpaired tag\n const lastTag = currentNode;\n if(lastTag && this.options.unpairedTags.indexOf(lastTag.tagname) !== -1 ){\n currentNode = this.tagsNodeStack.pop();\n jPath = jPath.substring(0, jPath.lastIndexOf(\".\"));\n }\n if(tagName !== xmlObj.tagname){\n jPath += jPath ? \".\" + tagName : tagName;\n }\n if (this.isItStopNode(this.options.stopNodes, jPath, tagName)) {\n let tagContent = \"\";\n //self-closing tag\n if(tagExp.length > 0 && tagExp.lastIndexOf(\"/\") === tagExp.length - 1){\n if(tagName[tagName.length - 1] === \"/\"){ //remove trailing '/'\n tagName = tagName.substr(0, tagName.length - 1);\n jPath = jPath.substr(0, jPath.length - 1);\n tagExp = tagName;\n }else{\n tagExp = tagExp.substr(0, tagExp.length - 1);\n }\n i = result.closeIndex;\n }\n //unpaired tag\n else if(this.options.unpairedTags.indexOf(tagName) !== -1){\n \n i = result.closeIndex;\n }\n //normal tag\n else{\n //read until closing tag is found\n const result = this.readStopNodeData(xmlData, rawTagName, closeIndex + 1);\n if(!result) throw new Error(`Unexpected end of ${rawTagName}`);\n i = result.i;\n tagContent = result.tagContent;\n }\n\n const childNode = new xmlNode(tagName);\n if(tagName !== tagExp && attrExpPresent){\n childNode[\":@\"] = this.buildAttributesMap(tagExp, jPath, tagName);\n }\n if(tagContent) {\n tagContent = this.parseTextData(tagContent, tagName, jPath, true, attrExpPresent, true, true);\n }\n \n jPath = jPath.substr(0, jPath.lastIndexOf(\".\"));\n childNode.add(this.options.textNodeName, tagContent);\n \n this.addChild(currentNode, childNode, jPath)\n }else{\n //selfClosing tag\n if(tagExp.length > 0 && tagExp.lastIndexOf(\"/\") === tagExp.length - 1){\n if(tagName[tagName.length - 1] === \"/\"){ //remove trailing '/'\n tagName = tagName.substr(0, tagName.length - 1);\n jPath = jPath.substr(0, jPath.length - 1);\n tagExp = tagName;\n }else{\n tagExp = tagExp.substr(0, tagExp.length - 1);\n }\n \n if(this.options.transformTagName) {\n tagName = this.options.transformTagName(tagName);\n }\n\n const childNode = new xmlNode(tagName);\n if(tagName !== tagExp && attrExpPresent){\n childNode[\":@\"] = this.buildAttributesMap(tagExp, jPath, tagName);\n }\n this.addChild(currentNode, childNode, jPath)\n jPath = jPath.substr(0, jPath.lastIndexOf(\".\"));\n }\n //opening tag\n else{\n const childNode = new xmlNode( tagName);\n this.tagsNodeStack.push(currentNode);\n \n if(tagName !== tagExp && attrExpPresent){\n childNode[\":@\"] = this.buildAttributesMap(tagExp, jPath, tagName);\n }\n this.addChild(currentNode, childNode, jPath)\n currentNode = childNode;\n }\n textData = \"\";\n i = closeIndex;\n }\n }\n }else{\n textData += xmlData[i];\n }\n }\n return xmlObj.child;\n}\n\nfunction addChild(currentNode, childNode, jPath){\n const result = this.options.updateTag(childNode.tagname, jPath, childNode[\":@\"])\n if(result === false){\n }else if(typeof result === \"string\"){\n childNode.tagname = result\n currentNode.addChild(childNode);\n }else{\n currentNode.addChild(childNode);\n }\n}\n\nconst replaceEntitiesValue = function(val){\n\n if(this.options.processEntities){\n for(let entityName in this.docTypeEntities){\n const entity = this.docTypeEntities[entityName];\n val = val.replace( entity.regx, entity.val);\n }\n for(let entityName in this.lastEntities){\n const entity = this.lastEntities[entityName];\n val = val.replace( entity.regex, entity.val);\n }\n if(this.options.htmlEntities){\n for(let entityName in this.htmlEntities){\n const entity = this.htmlEntities[entityName];\n val = val.replace( entity.regex, entity.val);\n }\n }\n val = val.replace( this.ampEntity.regex, this.ampEntity.val);\n }\n return val;\n}\nfunction saveTextToParentTag(textData, currentNode, jPath, isLeafNode) {\n if (textData) { //store previously collected data as textNode\n if(isLeafNode === undefined) isLeafNode = Object.keys(currentNode.child).length === 0\n \n textData = this.parseTextData(textData,\n currentNode.tagname,\n jPath,\n false,\n currentNode[\":@\"] ? Object.keys(currentNode[\":@\"]).length !== 0 : false,\n isLeafNode);\n\n if (textData !== undefined && textData !== \"\")\n currentNode.add(this.options.textNodeName, textData);\n textData = \"\";\n }\n return textData;\n}\n\n//TODO: use jPath to simplify the logic\n/**\n * \n * @param {string[]} stopNodes \n * @param {string} jPath\n * @param {string} currentTagName \n */\nfunction isItStopNode(stopNodes, jPath, currentTagName){\n const allNodesExp = \"*.\" + currentTagName;\n for (const stopNodePath in stopNodes) {\n const stopNodeExp = stopNodes[stopNodePath];\n if( allNodesExp === stopNodeExp || jPath === stopNodeExp ) return true;\n }\n return false;\n}\n\n/**\n * Returns the tag Expression and where it is ending handling single-double quotes situation\n * @param {string} xmlData \n * @param {number} i starting index\n * @returns \n */\nfunction tagExpWithClosingIndex(xmlData, i, closingChar = \">\"){\n let attrBoundary;\n let tagExp = \"\";\n for (let index = i; index < xmlData.length; index++) {\n let ch = xmlData[index];\n if (attrBoundary) {\n if (ch === attrBoundary) attrBoundary = \"\";//reset\n } else if (ch === '\"' || ch === \"'\") {\n attrBoundary = ch;\n } else if (ch === closingChar[0]) {\n if(closingChar[1]){\n if(xmlData[index + 1] === closingChar[1]){\n return {\n data: tagExp,\n index: index\n }\n }\n }else{\n return {\n data: tagExp,\n index: index\n }\n }\n } else if (ch === '\\t') {\n ch = \" \"\n }\n tagExp += ch;\n }\n}\n\nfunction findClosingIndex(xmlData, str, i, errMsg){\n const closingIndex = xmlData.indexOf(str, i);\n if(closingIndex === -1){\n throw new Error(errMsg)\n }else{\n return closingIndex + str.length - 1;\n }\n}\n\nfunction readTagExp(xmlData,i, removeNSPrefix, closingChar = \">\"){\n const result = tagExpWithClosingIndex(xmlData, i+1, closingChar);\n if(!result) return;\n let tagExp = result.data;\n const closeIndex = result.index;\n const separatorIndex = tagExp.search(/\\s/);\n let tagName = tagExp;\n let attrExpPresent = true;\n if(separatorIndex !== -1){//separate tag name and attributes expression\n tagName = tagExp.substring(0, separatorIndex);\n tagExp = tagExp.substring(separatorIndex + 1).trimStart();\n }\n\n const rawTagName = tagName;\n if(removeNSPrefix){\n const colonIndex = tagName.indexOf(\":\");\n if(colonIndex !== -1){\n tagName = tagName.substr(colonIndex+1);\n attrExpPresent = tagName !== result.data.substr(colonIndex + 1);\n }\n }\n\n return {\n tagName: tagName,\n tagExp: tagExp,\n closeIndex: closeIndex,\n attrExpPresent: attrExpPresent,\n rawTagName: rawTagName,\n }\n}\n/**\n * find paired tag for a stop node\n * @param {string} xmlData \n * @param {string} tagName \n * @param {number} i \n */\nfunction readStopNodeData(xmlData, tagName, i){\n const startIndex = i;\n // Starting at 1 since we already have an open tag\n let openTagCount = 1;\n\n for (; i < xmlData.length; i++) {\n if( xmlData[i] === \"<\"){ \n if (xmlData[i+1] === \"/\") {//close tag\n const closeIndex = findClosingIndex(xmlData, \">\", i, `${tagName} is not closed`);\n let closeTagName = xmlData.substring(i+2,closeIndex).trim();\n if(closeTagName === tagName){\n openTagCount--;\n if (openTagCount === 0) {\n return {\n tagContent: xmlData.substring(startIndex, i),\n i : closeIndex\n }\n }\n }\n i=closeIndex;\n } else if(xmlData[i+1] === '?') { \n const closeIndex = findClosingIndex(xmlData, \"?>\", i+1, \"StopNode is not closed.\")\n i=closeIndex;\n } else if(xmlData.substr(i + 1, 3) === '!--') { \n const closeIndex = findClosingIndex(xmlData, \"-->\", i+3, \"StopNode is not closed.\")\n i=closeIndex;\n } else if(xmlData.substr(i + 1, 2) === '![') { \n const closeIndex = findClosingIndex(xmlData, \"]]>\", i, \"StopNode is not closed.\") - 2;\n i=closeIndex;\n } else {\n const tagData = readTagExp(xmlData, i, '>')\n\n if (tagData) {\n const openTagName = tagData && tagData.tagName;\n if (openTagName === tagName && tagData.tagExp[tagData.tagExp.length-1] !== \"/\") {\n openTagCount++;\n }\n i=tagData.closeIndex;\n }\n }\n }\n }//end for loop\n}\n\nfunction parseValue(val, shouldParse, options) {\n if (shouldParse && typeof val === 'string') {\n //console.log(options)\n const newval = val.trim();\n if(newval === 'true' ) return true;\n else if(newval === 'false' ) return false;\n else return toNumber(val, options);\n } else {\n if (util.isExist(val)) {\n return val;\n } else {\n return '';\n }\n }\n}\n\n\nmodule.exports = OrderedObjParser;\n","const { buildOptions} = require(\"./OptionsBuilder\");\nconst OrderedObjParser = require(\"./OrderedObjParser\");\nconst { prettify} = require(\"./node2json\");\nconst validator = require('../validator');\n\nclass XMLParser{\n \n constructor(options){\n this.externalEntities = {};\n this.options = buildOptions(options);\n \n }\n /**\n * Parse XML dats to JS object \n * @param {string|Buffer} xmlData \n * @param {boolean|Object} validationOption \n */\n parse(xmlData,validationOption){\n if(typeof xmlData === \"string\"){\n }else if( xmlData.toString){\n xmlData = xmlData.toString();\n }else{\n throw new Error(\"XML data is accepted in String or Bytes[] form.\")\n }\n if( validationOption){\n if(validationOption === true) validationOption = {}; //validate with default options\n \n const result = validator.validate(xmlData, validationOption);\n if (result !== true) {\n throw Error( `${result.err.msg}:${result.err.line}:${result.err.col}` )\n }\n }\n const orderedObjParser = new OrderedObjParser(this.options);\n orderedObjParser.addExternalEntities(this.externalEntities);\n const orderedResult = orderedObjParser.parseXml(xmlData);\n if(this.options.preserveOrder || orderedResult === undefined) return orderedResult;\n else return prettify(orderedResult, this.options);\n }\n\n /**\n * Add Entity which is not by default supported by this library\n * @param {string} key \n * @param {string} value \n */\n addEntity(key, value){\n if(value.indexOf(\"&\") !== -1){\n throw new Error(\"Entity value can't have '&'\")\n }else if(key.indexOf(\"&\") !== -1 || key.indexOf(\";\") !== -1){\n throw new Error(\"An entity must be set without '&' and ';'. Eg. use '#xD' for ' '\")\n }else if(value === \"&\"){\n throw new Error(\"An entity with value '&' is not permitted\");\n }else{\n this.externalEntities[key] = value;\n }\n }\n}\n\nmodule.exports = XMLParser;","'use strict';\n\n/**\n * \n * @param {array} node \n * @param {any} options \n * @returns \n */\nfunction prettify(node, options){\n return compress( node, options);\n}\n\n/**\n * \n * @param {array} arr \n * @param {object} options \n * @param {string} jPath \n * @returns object\n */\nfunction compress(arr, options, jPath){\n let text;\n const compressedObj = {};\n for (let i = 0; i < arr.length; i++) {\n const tagObj = arr[i];\n const property = propName(tagObj);\n let newJpath = \"\";\n if(jPath === undefined) newJpath = property;\n else newJpath = jPath + \".\" + property;\n\n if(property === options.textNodeName){\n if(text === undefined) text = tagObj[property];\n else text += \"\" + tagObj[property];\n }else if(property === undefined){\n continue;\n }else if(tagObj[property]){\n \n let val = compress(tagObj[property], options, newJpath);\n const isLeaf = isLeafTag(val, options);\n\n if(tagObj[\":@\"]){\n assignAttributes( val, tagObj[\":@\"], newJpath, options);\n }else if(Object.keys(val).length === 1 && val[options.textNodeName] !== undefined && !options.alwaysCreateTextNode){\n val = val[options.textNodeName];\n }else if(Object.keys(val).length === 0){\n if(options.alwaysCreateTextNode) val[options.textNodeName] = \"\";\n else val = \"\";\n }\n\n if(compressedObj[property] !== undefined && compressedObj.hasOwnProperty(property)) {\n if(!Array.isArray(compressedObj[property])) {\n compressedObj[property] = [ compressedObj[property] ];\n }\n compressedObj[property].push(val);\n }else{\n //TODO: if a node is not an array, then check if it should be an array\n //also determine if it is a leaf node\n if (options.isArray(property, newJpath, isLeaf )) {\n compressedObj[property] = [val];\n }else{\n compressedObj[property] = val;\n }\n }\n }\n \n }\n // if(text && text.length > 0) compressedObj[options.textNodeName] = text;\n if(typeof text === \"string\"){\n if(text.length > 0) compressedObj[options.textNodeName] = text;\n }else if(text !== undefined) compressedObj[options.textNodeName] = text;\n return compressedObj;\n}\n\nfunction propName(obj){\n const keys = Object.keys(obj);\n for (let i = 0; i < keys.length; i++) {\n const key = keys[i];\n if(key !== \":@\") return key;\n }\n}\n\nfunction assignAttributes(obj, attrMap, jpath, options){\n if (attrMap) {\n const keys = Object.keys(attrMap);\n const len = keys.length; //don't make it inline\n for (let i = 0; i < len; i++) {\n const atrrName = keys[i];\n if (options.isArray(atrrName, jpath + \".\" + atrrName, true, true)) {\n obj[atrrName] = [ attrMap[atrrName] ];\n } else {\n obj[atrrName] = attrMap[atrrName];\n }\n }\n }\n}\n\nfunction isLeafTag(obj, options){\n const { textNodeName } = options;\n const propCount = Object.keys(obj).length;\n \n if (propCount === 0) {\n return true;\n }\n\n if (\n propCount === 1 &&\n (obj[textNodeName] || typeof obj[textNodeName] === \"boolean\" || obj[textNodeName] === 0)\n ) {\n return true;\n }\n\n return false;\n}\nexports.prettify = prettify;\n","'use strict';\n\nclass XmlNode{\n constructor(tagname) {\n this.tagname = tagname;\n this.child = []; //nested tags, text, cdata, comments in order\n this[\":@\"] = {}; //attributes map\n }\n add(key,val){\n // this.child.push( {name : key, val: val, isCdata: isCdata });\n if(key === \"__proto__\") key = \"#__proto__\";\n this.child.push( {[key]: val });\n }\n addChild(node) {\n if(node.tagname === \"__proto__\") node.tagname = \"#__proto__\";\n if(node[\":@\"] && Object.keys(node[\":@\"]).length > 0){\n this.child.push( { [node.tagname]: node.child, [\":@\"]: node[\":@\"] });\n }else{\n this.child.push( { [node.tagname]: node.child });\n }\n };\n};\n\n\nmodule.exports = XmlNode;","'use strict'\n\nconst fs = require('graceful-fs')\nconst path = require('path')\nconst mkdirsSync = require('../mkdirs').mkdirsSync\nconst utimesMillisSync = require('../util/utimes').utimesMillisSync\nconst stat = require('../util/stat')\n\nfunction copySync (src, dest, opts) {\n if (typeof opts === 'function') {\n opts = { filter: opts }\n }\n\n opts = opts || {}\n opts.clobber = 'clobber' in opts ? !!opts.clobber : true // default to true for now\n opts.overwrite = 'overwrite' in opts ? !!opts.overwrite : opts.clobber // overwrite falls back to clobber\n\n // Warn about using preserveTimestamps on 32-bit node\n if (opts.preserveTimestamps && process.arch === 'ia32') {\n process.emitWarning(\n 'Using the preserveTimestamps option in 32-bit node is not recommended;\\n\\n' +\n '\\tsee https://github.com/jprichardson/node-fs-extra/issues/269',\n 'Warning', 'fs-extra-WARN0002'\n )\n }\n\n const { srcStat, destStat } = stat.checkPathsSync(src, dest, 'copy', opts)\n stat.checkParentPathsSync(src, srcStat, dest, 'copy')\n if (opts.filter && !opts.filter(src, dest)) return\n const destParent = path.dirname(dest)\n if (!fs.existsSync(destParent)) mkdirsSync(destParent)\n return getStats(destStat, src, dest, opts)\n}\n\nfunction getStats (destStat, src, dest, opts) {\n const statSync = opts.dereference ? fs.statSync : fs.lstatSync\n const srcStat = statSync(src)\n\n if (srcStat.isDirectory()) return onDir(srcStat, destStat, src, dest, opts)\n else if (srcStat.isFile() ||\n srcStat.isCharacterDevice() ||\n srcStat.isBlockDevice()) return onFile(srcStat, destStat, src, dest, opts)\n else if (srcStat.isSymbolicLink()) return onLink(destStat, src, dest, opts)\n else if (srcStat.isSocket()) throw new Error(`Cannot copy a socket file: ${src}`)\n else if (srcStat.isFIFO()) throw new Error(`Cannot copy a FIFO pipe: ${src}`)\n throw new Error(`Unknown file: ${src}`)\n}\n\nfunction onFile (srcStat, destStat, src, dest, opts) {\n if (!destStat) return copyFile(srcStat, src, dest, opts)\n return mayCopyFile(srcStat, src, dest, opts)\n}\n\nfunction mayCopyFile (srcStat, src, dest, opts) {\n if (opts.overwrite) {\n fs.unlinkSync(dest)\n return copyFile(srcStat, src, dest, opts)\n } else if (opts.errorOnExist) {\n throw new Error(`'${dest}' already exists`)\n }\n}\n\nfunction copyFile (srcStat, src, dest, opts) {\n fs.copyFileSync(src, dest)\n if (opts.preserveTimestamps) handleTimestamps(srcStat.mode, src, dest)\n return setDestMode(dest, srcStat.mode)\n}\n\nfunction handleTimestamps (srcMode, src, dest) {\n // Make sure the file is writable before setting the timestamp\n // otherwise open fails with EPERM when invoked with 'r+'\n // (through utimes call)\n if (fileIsNotWritable(srcMode)) makeFileWritable(dest, srcMode)\n return setDestTimestamps(src, dest)\n}\n\nfunction fileIsNotWritable (srcMode) {\n return (srcMode & 0o200) === 0\n}\n\nfunction makeFileWritable (dest, srcMode) {\n return setDestMode(dest, srcMode | 0o200)\n}\n\nfunction setDestMode (dest, srcMode) {\n return fs.chmodSync(dest, srcMode)\n}\n\nfunction setDestTimestamps (src, dest) {\n // The initial srcStat.atime cannot be trusted\n // because it is modified by the read(2) system call\n // (See https://nodejs.org/api/fs.html#fs_stat_time_values)\n const updatedSrcStat = fs.statSync(src)\n return utimesMillisSync(dest, updatedSrcStat.atime, updatedSrcStat.mtime)\n}\n\nfunction onDir (srcStat, destStat, src, dest, opts) {\n if (!destStat) return mkDirAndCopy(srcStat.mode, src, dest, opts)\n return copyDir(src, dest, opts)\n}\n\nfunction mkDirAndCopy (srcMode, src, dest, opts) {\n fs.mkdirSync(dest)\n copyDir(src, dest, opts)\n return setDestMode(dest, srcMode)\n}\n\nfunction copyDir (src, dest, opts) {\n fs.readdirSync(src).forEach(item => copyDirItem(item, src, dest, opts))\n}\n\nfunction copyDirItem (item, src, dest, opts) {\n const srcItem = path.join(src, item)\n const destItem = path.join(dest, item)\n if (opts.filter && !opts.filter(srcItem, destItem)) return\n const { destStat } = stat.checkPathsSync(srcItem, destItem, 'copy', opts)\n return getStats(destStat, srcItem, destItem, opts)\n}\n\nfunction onLink (destStat, src, dest, opts) {\n let resolvedSrc = fs.readlinkSync(src)\n if (opts.dereference) {\n resolvedSrc = path.resolve(process.cwd(), resolvedSrc)\n }\n\n if (!destStat) {\n return fs.symlinkSync(resolvedSrc, dest)\n } else {\n let resolvedDest\n try {\n resolvedDest = fs.readlinkSync(dest)\n } catch (err) {\n // dest exists and is a regular file or directory,\n // Windows may throw UNKNOWN error. If dest already exists,\n // fs throws error anyway, so no need to guard against it here.\n if (err.code === 'EINVAL' || err.code === 'UNKNOWN') return fs.symlinkSync(resolvedSrc, dest)\n throw err\n }\n if (opts.dereference) {\n resolvedDest = path.resolve(process.cwd(), resolvedDest)\n }\n if (stat.isSrcSubdir(resolvedSrc, resolvedDest)) {\n throw new Error(`Cannot copy '${resolvedSrc}' to a subdirectory of itself, '${resolvedDest}'.`)\n }\n\n // prevent copy if src is a subdir of dest since unlinking\n // dest in this case would result in removing src contents\n // and therefore a broken symlink would be created.\n if (stat.isSrcSubdir(resolvedDest, resolvedSrc)) {\n throw new Error(`Cannot overwrite '${resolvedDest}' with '${resolvedSrc}'.`)\n }\n return copyLink(resolvedSrc, dest)\n }\n}\n\nfunction copyLink (resolvedSrc, dest) {\n fs.unlinkSync(dest)\n return fs.symlinkSync(resolvedSrc, dest)\n}\n\nmodule.exports = copySync\n","'use strict'\n\nconst fs = require('../fs')\nconst path = require('path')\nconst { mkdirs } = require('../mkdirs')\nconst { pathExists } = require('../path-exists')\nconst { utimesMillis } = require('../util/utimes')\nconst stat = require('../util/stat')\n\nasync function copy (src, dest, opts = {}) {\n if (typeof opts === 'function') {\n opts = { filter: opts }\n }\n\n opts.clobber = 'clobber' in opts ? !!opts.clobber : true // default to true for now\n opts.overwrite = 'overwrite' in opts ? !!opts.overwrite : opts.clobber // overwrite falls back to clobber\n\n // Warn about using preserveTimestamps on 32-bit node\n if (opts.preserveTimestamps && process.arch === 'ia32') {\n process.emitWarning(\n 'Using the preserveTimestamps option in 32-bit node is not recommended;\\n\\n' +\n '\\tsee https://github.com/jprichardson/node-fs-extra/issues/269',\n 'Warning', 'fs-extra-WARN0001'\n )\n }\n\n const { srcStat, destStat } = await stat.checkPaths(src, dest, 'copy', opts)\n\n await stat.checkParentPaths(src, srcStat, dest, 'copy')\n\n const include = await runFilter(src, dest, opts)\n\n if (!include) return\n\n // check if the parent of dest exists, and create it if it doesn't exist\n const destParent = path.dirname(dest)\n const dirExists = await pathExists(destParent)\n if (!dirExists) {\n await mkdirs(destParent)\n }\n\n await getStatsAndPerformCopy(destStat, src, dest, opts)\n}\n\nasync function runFilter (src, dest, opts) {\n if (!opts.filter) return true\n return opts.filter(src, dest)\n}\n\nasync function getStatsAndPerformCopy (destStat, src, dest, opts) {\n const statFn = opts.dereference ? fs.stat : fs.lstat\n const srcStat = await statFn(src)\n\n if (srcStat.isDirectory()) return onDir(srcStat, destStat, src, dest, opts)\n\n if (\n srcStat.isFile() ||\n srcStat.isCharacterDevice() ||\n srcStat.isBlockDevice()\n ) return onFile(srcStat, destStat, src, dest, opts)\n\n if (srcStat.isSymbolicLink()) return onLink(destStat, src, dest, opts)\n if (srcStat.isSocket()) throw new Error(`Cannot copy a socket file: ${src}`)\n if (srcStat.isFIFO()) throw new Error(`Cannot copy a FIFO pipe: ${src}`)\n throw new Error(`Unknown file: ${src}`)\n}\n\nasync function onFile (srcStat, destStat, src, dest, opts) {\n if (!destStat) return copyFile(srcStat, src, dest, opts)\n\n if (opts.overwrite) {\n await fs.unlink(dest)\n return copyFile(srcStat, src, dest, opts)\n }\n if (opts.errorOnExist) {\n throw new Error(`'${dest}' already exists`)\n }\n}\n\nasync function copyFile (srcStat, src, dest, opts) {\n await fs.copyFile(src, dest)\n if (opts.preserveTimestamps) {\n // Make sure the file is writable before setting the timestamp\n // otherwise open fails with EPERM when invoked with 'r+'\n // (through utimes call)\n if (fileIsNotWritable(srcStat.mode)) {\n await makeFileWritable(dest, srcStat.mode)\n }\n\n // Set timestamps and mode correspondingly\n\n // Note that The initial srcStat.atime cannot be trusted\n // because it is modified by the read(2) system call\n // (See https://nodejs.org/api/fs.html#fs_stat_time_values)\n const updatedSrcStat = await fs.stat(src)\n await utimesMillis(dest, updatedSrcStat.atime, updatedSrcStat.mtime)\n }\n\n return fs.chmod(dest, srcStat.mode)\n}\n\nfunction fileIsNotWritable (srcMode) {\n return (srcMode & 0o200) === 0\n}\n\nfunction makeFileWritable (dest, srcMode) {\n return fs.chmod(dest, srcMode | 0o200)\n}\n\nasync function onDir (srcStat, destStat, src, dest, opts) {\n // the dest directory might not exist, create it\n if (!destStat) {\n await fs.mkdir(dest)\n }\n\n const items = await fs.readdir(src)\n\n // loop through the files in the current directory to copy everything\n await Promise.all(items.map(async item => {\n const srcItem = path.join(src, item)\n const destItem = path.join(dest, item)\n\n // skip the item if it is matches by the filter function\n const include = await runFilter(srcItem, destItem, opts)\n if (!include) return\n\n const { destStat } = await stat.checkPaths(srcItem, destItem, 'copy', opts)\n\n // If the item is a copyable file, `getStatsAndPerformCopy` will copy it\n // If the item is a directory, `getStatsAndPerformCopy` will call `onDir` recursively\n return getStatsAndPerformCopy(destStat, srcItem, destItem, opts)\n }))\n\n if (!destStat) {\n await fs.chmod(dest, srcStat.mode)\n }\n}\n\nasync function onLink (destStat, src, dest, opts) {\n let resolvedSrc = await fs.readlink(src)\n if (opts.dereference) {\n resolvedSrc = path.resolve(process.cwd(), resolvedSrc)\n }\n if (!destStat) {\n return fs.symlink(resolvedSrc, dest)\n }\n\n let resolvedDest = null\n try {\n resolvedDest = await fs.readlink(dest)\n } catch (e) {\n // dest exists and is a regular file or directory,\n // Windows may throw UNKNOWN error. If dest already exists,\n // fs throws error anyway, so no need to guard against it here.\n if (e.code === 'EINVAL' || e.code === 'UNKNOWN') return fs.symlink(resolvedSrc, dest)\n throw e\n }\n if (opts.dereference) {\n resolvedDest = path.resolve(process.cwd(), resolvedDest)\n }\n if (stat.isSrcSubdir(resolvedSrc, resolvedDest)) {\n throw new Error(`Cannot copy '${resolvedSrc}' to a subdirectory of itself, '${resolvedDest}'.`)\n }\n\n // do not copy if src is a subdir of dest since unlinking\n // dest in this case would result in removing src contents\n // and therefore a broken symlink would be created.\n if (stat.isSrcSubdir(resolvedDest, resolvedSrc)) {\n throw new Error(`Cannot overwrite '${resolvedDest}' with '${resolvedSrc}'.`)\n }\n\n // copy the link\n await fs.unlink(dest)\n return fs.symlink(resolvedSrc, dest)\n}\n\nmodule.exports = copy\n","'use strict'\n\nconst u = require('universalify').fromPromise\nmodule.exports = {\n copy: u(require('./copy')),\n copySync: require('./copy-sync')\n}\n","'use strict'\n\nconst u = require('universalify').fromPromise\nconst fs = require('../fs')\nconst path = require('path')\nconst mkdir = require('../mkdirs')\nconst remove = require('../remove')\n\nconst emptyDir = u(async function emptyDir (dir) {\n let items\n try {\n items = await fs.readdir(dir)\n } catch {\n return mkdir.mkdirs(dir)\n }\n\n return Promise.all(items.map(item => remove.remove(path.join(dir, item))))\n})\n\nfunction emptyDirSync (dir) {\n let items\n try {\n items = fs.readdirSync(dir)\n } catch {\n return mkdir.mkdirsSync(dir)\n }\n\n items.forEach(item => {\n item = path.join(dir, item)\n remove.removeSync(item)\n })\n}\n\nmodule.exports = {\n emptyDirSync,\n emptydirSync: emptyDirSync,\n emptyDir,\n emptydir: emptyDir\n}\n","'use strict'\n\nconst u = require('universalify').fromPromise\nconst path = require('path')\nconst fs = require('../fs')\nconst mkdir = require('../mkdirs')\n\nasync function createFile (file) {\n let stats\n try {\n stats = await fs.stat(file)\n } catch { }\n if (stats && stats.isFile()) return\n\n const dir = path.dirname(file)\n\n let dirStats = null\n try {\n dirStats = await fs.stat(dir)\n } catch (err) {\n // if the directory doesn't exist, make it\n if (err.code === 'ENOENT') {\n await mkdir.mkdirs(dir)\n await fs.writeFile(file, '')\n return\n } else {\n throw err\n }\n }\n\n if (dirStats.isDirectory()) {\n await fs.writeFile(file, '')\n } else {\n // parent is not a directory\n // This is just to cause an internal ENOTDIR error to be thrown\n await fs.readdir(dir)\n }\n}\n\nfunction createFileSync (file) {\n let stats\n try {\n stats = fs.statSync(file)\n } catch { }\n if (stats && stats.isFile()) return\n\n const dir = path.dirname(file)\n try {\n if (!fs.statSync(dir).isDirectory()) {\n // parent is not a directory\n // This is just to cause an internal ENOTDIR error to be thrown\n fs.readdirSync(dir)\n }\n } catch (err) {\n // If the stat call above failed because the directory doesn't exist, create it\n if (err && err.code === 'ENOENT') mkdir.mkdirsSync(dir)\n else throw err\n }\n\n fs.writeFileSync(file, '')\n}\n\nmodule.exports = {\n createFile: u(createFile),\n createFileSync\n}\n","'use strict'\n\nconst { createFile, createFileSync } = require('./file')\nconst { createLink, createLinkSync } = require('./link')\nconst { createSymlink, createSymlinkSync } = require('./symlink')\n\nmodule.exports = {\n // file\n createFile,\n createFileSync,\n ensureFile: createFile,\n ensureFileSync: createFileSync,\n // link\n createLink,\n createLinkSync,\n ensureLink: createLink,\n ensureLinkSync: createLinkSync,\n // symlink\n createSymlink,\n createSymlinkSync,\n ensureSymlink: createSymlink,\n ensureSymlinkSync: createSymlinkSync\n}\n","'use strict'\n\nconst u = require('universalify').fromPromise\nconst path = require('path')\nconst fs = require('../fs')\nconst mkdir = require('../mkdirs')\nconst { pathExists } = require('../path-exists')\nconst { areIdentical } = require('../util/stat')\n\nasync function createLink (srcpath, dstpath) {\n let dstStat\n try {\n dstStat = await fs.lstat(dstpath)\n } catch {\n // ignore error\n }\n\n let srcStat\n try {\n srcStat = await fs.lstat(srcpath)\n } catch (err) {\n err.message = err.message.replace('lstat', 'ensureLink')\n throw err\n }\n\n if (dstStat && areIdentical(srcStat, dstStat)) return\n\n const dir = path.dirname(dstpath)\n\n const dirExists = await pathExists(dir)\n\n if (!dirExists) {\n await mkdir.mkdirs(dir)\n }\n\n await fs.link(srcpath, dstpath)\n}\n\nfunction createLinkSync (srcpath, dstpath) {\n let dstStat\n try {\n dstStat = fs.lstatSync(dstpath)\n } catch {}\n\n try {\n const srcStat = fs.lstatSync(srcpath)\n if (dstStat && areIdentical(srcStat, dstStat)) return\n } catch (err) {\n err.message = err.message.replace('lstat', 'ensureLink')\n throw err\n }\n\n const dir = path.dirname(dstpath)\n const dirExists = fs.existsSync(dir)\n if (dirExists) return fs.linkSync(srcpath, dstpath)\n mkdir.mkdirsSync(dir)\n\n return fs.linkSync(srcpath, dstpath)\n}\n\nmodule.exports = {\n createLink: u(createLink),\n createLinkSync\n}\n","'use strict'\n\nconst path = require('path')\nconst fs = require('../fs')\nconst { pathExists } = require('../path-exists')\n\nconst u = require('universalify').fromPromise\n\n/**\n * Function that returns two types of paths, one relative to symlink, and one\n * relative to the current working directory. Checks if path is absolute or\n * relative. If the path is relative, this function checks if the path is\n * relative to symlink or relative to current working directory. This is an\n * initiative to find a smarter `srcpath` to supply when building symlinks.\n * This allows you to determine which path to use out of one of three possible\n * types of source paths. The first is an absolute path. This is detected by\n * `path.isAbsolute()`. When an absolute path is provided, it is checked to\n * see if it exists. If it does it's used, if not an error is returned\n * (callback)/ thrown (sync). The other two options for `srcpath` are a\n * relative url. By default Node's `fs.symlink` works by creating a symlink\n * using `dstpath` and expects the `srcpath` to be relative to the newly\n * created symlink. If you provide a `srcpath` that does not exist on the file\n * system it results in a broken symlink. To minimize this, the function\n * checks to see if the 'relative to symlink' source file exists, and if it\n * does it will use it. If it does not, it checks if there's a file that\n * exists that is relative to the current working directory, if does its used.\n * This preserves the expectations of the original fs.symlink spec and adds\n * the ability to pass in `relative to current working direcotry` paths.\n */\n\nasync function symlinkPaths (srcpath, dstpath) {\n if (path.isAbsolute(srcpath)) {\n try {\n await fs.lstat(srcpath)\n } catch (err) {\n err.message = err.message.replace('lstat', 'ensureSymlink')\n throw err\n }\n\n return {\n toCwd: srcpath,\n toDst: srcpath\n }\n }\n\n const dstdir = path.dirname(dstpath)\n const relativeToDst = path.join(dstdir, srcpath)\n\n const exists = await pathExists(relativeToDst)\n if (exists) {\n return {\n toCwd: relativeToDst,\n toDst: srcpath\n }\n }\n\n try {\n await fs.lstat(srcpath)\n } catch (err) {\n err.message = err.message.replace('lstat', 'ensureSymlink')\n throw err\n }\n\n return {\n toCwd: srcpath,\n toDst: path.relative(dstdir, srcpath)\n }\n}\n\nfunction symlinkPathsSync (srcpath, dstpath) {\n if (path.isAbsolute(srcpath)) {\n const exists = fs.existsSync(srcpath)\n if (!exists) throw new Error('absolute srcpath does not exist')\n return {\n toCwd: srcpath,\n toDst: srcpath\n }\n }\n\n const dstdir = path.dirname(dstpath)\n const relativeToDst = path.join(dstdir, srcpath)\n const exists = fs.existsSync(relativeToDst)\n if (exists) {\n return {\n toCwd: relativeToDst,\n toDst: srcpath\n }\n }\n\n const srcExists = fs.existsSync(srcpath)\n if (!srcExists) throw new Error('relative srcpath does not exist')\n return {\n toCwd: srcpath,\n toDst: path.relative(dstdir, srcpath)\n }\n}\n\nmodule.exports = {\n symlinkPaths: u(symlinkPaths),\n symlinkPathsSync\n}\n","'use strict'\n\nconst fs = require('../fs')\nconst u = require('universalify').fromPromise\n\nasync function symlinkType (srcpath, type) {\n if (type) return type\n\n let stats\n try {\n stats = await fs.lstat(srcpath)\n } catch {\n return 'file'\n }\n\n return (stats && stats.isDirectory()) ? 'dir' : 'file'\n}\n\nfunction symlinkTypeSync (srcpath, type) {\n if (type) return type\n\n let stats\n try {\n stats = fs.lstatSync(srcpath)\n } catch {\n return 'file'\n }\n return (stats && stats.isDirectory()) ? 'dir' : 'file'\n}\n\nmodule.exports = {\n symlinkType: u(symlinkType),\n symlinkTypeSync\n}\n","'use strict'\n\nconst u = require('universalify').fromPromise\nconst path = require('path')\nconst fs = require('../fs')\n\nconst { mkdirs, mkdirsSync } = require('../mkdirs')\n\nconst { symlinkPaths, symlinkPathsSync } = require('./symlink-paths')\nconst { symlinkType, symlinkTypeSync } = require('./symlink-type')\n\nconst { pathExists } = require('../path-exists')\n\nconst { areIdentical } = require('../util/stat')\n\nasync function createSymlink (srcpath, dstpath, type) {\n let stats\n try {\n stats = await fs.lstat(dstpath)\n } catch { }\n\n if (stats && stats.isSymbolicLink()) {\n const [srcStat, dstStat] = await Promise.all([\n fs.stat(srcpath),\n fs.stat(dstpath)\n ])\n\n if (areIdentical(srcStat, dstStat)) return\n }\n\n const relative = await symlinkPaths(srcpath, dstpath)\n srcpath = relative.toDst\n const toType = await symlinkType(relative.toCwd, type)\n const dir = path.dirname(dstpath)\n\n if (!(await pathExists(dir))) {\n await mkdirs(dir)\n }\n\n return fs.symlink(srcpath, dstpath, toType)\n}\n\nfunction createSymlinkSync (srcpath, dstpath, type) {\n let stats\n try {\n stats = fs.lstatSync(dstpath)\n } catch { }\n if (stats && stats.isSymbolicLink()) {\n const srcStat = fs.statSync(srcpath)\n const dstStat = fs.statSync(dstpath)\n if (areIdentical(srcStat, dstStat)) return\n }\n\n const relative = symlinkPathsSync(srcpath, dstpath)\n srcpath = relative.toDst\n type = symlinkTypeSync(relative.toCwd, type)\n const dir = path.dirname(dstpath)\n const exists = fs.existsSync(dir)\n if (exists) return fs.symlinkSync(srcpath, dstpath, type)\n mkdirsSync(dir)\n return fs.symlinkSync(srcpath, dstpath, type)\n}\n\nmodule.exports = {\n createSymlink: u(createSymlink),\n createSymlinkSync\n}\n","'use strict'\n// This is adapted from https://github.com/normalize/mz\n// Copyright (c) 2014-2016 Jonathan Ong me@jongleberry.com and Contributors\nconst u = require('universalify').fromCallback\nconst fs = require('graceful-fs')\n\nconst api = [\n 'access',\n 'appendFile',\n 'chmod',\n 'chown',\n 'close',\n 'copyFile',\n 'fchmod',\n 'fchown',\n 'fdatasync',\n 'fstat',\n 'fsync',\n 'ftruncate',\n 'futimes',\n 'lchmod',\n 'lchown',\n 'link',\n 'lstat',\n 'mkdir',\n 'mkdtemp',\n 'open',\n 'opendir',\n 'readdir',\n 'readFile',\n 'readlink',\n 'realpath',\n 'rename',\n 'rm',\n 'rmdir',\n 'stat',\n 'symlink',\n 'truncate',\n 'unlink',\n 'utimes',\n 'writeFile'\n].filter(key => {\n // Some commands are not available on some systems. Ex:\n // fs.cp was added in Node.js v16.7.0\n // fs.lchown is not available on at least some Linux\n return typeof fs[key] === 'function'\n})\n\n// Export cloned fs:\nObject.assign(exports, fs)\n\n// Universalify async methods:\napi.forEach(method => {\n exports[method] = u(fs[method])\n})\n\n// We differ from mz/fs in that we still ship the old, broken, fs.exists()\n// since we are a drop-in replacement for the native module\nexports.exists = function (filename, callback) {\n if (typeof callback === 'function') {\n return fs.exists(filename, callback)\n }\n return new Promise(resolve => {\n return fs.exists(filename, resolve)\n })\n}\n\n// fs.read(), fs.write(), fs.readv(), & fs.writev() need special treatment due to multiple callback args\n\nexports.read = function (fd, buffer, offset, length, position, callback) {\n if (typeof callback === 'function') {\n return fs.read(fd, buffer, offset, length, position, callback)\n }\n return new Promise((resolve, reject) => {\n fs.read(fd, buffer, offset, length, position, (err, bytesRead, buffer) => {\n if (err) return reject(err)\n resolve({ bytesRead, buffer })\n })\n })\n}\n\n// Function signature can be\n// fs.write(fd, buffer[, offset[, length[, position]]], callback)\n// OR\n// fs.write(fd, string[, position[, encoding]], callback)\n// We need to handle both cases, so we use ...args\nexports.write = function (fd, buffer, ...args) {\n if (typeof args[args.length - 1] === 'function') {\n return fs.write(fd, buffer, ...args)\n }\n\n return new Promise((resolve, reject) => {\n fs.write(fd, buffer, ...args, (err, bytesWritten, buffer) => {\n if (err) return reject(err)\n resolve({ bytesWritten, buffer })\n })\n })\n}\n\n// Function signature is\n// s.readv(fd, buffers[, position], callback)\n// We need to handle the optional arg, so we use ...args\nexports.readv = function (fd, buffers, ...args) {\n if (typeof args[args.length - 1] === 'function') {\n return fs.readv(fd, buffers, ...args)\n }\n\n return new Promise((resolve, reject) => {\n fs.readv(fd, buffers, ...args, (err, bytesRead, buffers) => {\n if (err) return reject(err)\n resolve({ bytesRead, buffers })\n })\n })\n}\n\n// Function signature is\n// s.writev(fd, buffers[, position], callback)\n// We need to handle the optional arg, so we use ...args\nexports.writev = function (fd, buffers, ...args) {\n if (typeof args[args.length - 1] === 'function') {\n return fs.writev(fd, buffers, ...args)\n }\n\n return new Promise((resolve, reject) => {\n fs.writev(fd, buffers, ...args, (err, bytesWritten, buffers) => {\n if (err) return reject(err)\n resolve({ bytesWritten, buffers })\n })\n })\n}\n\n// fs.realpath.native sometimes not available if fs is monkey-patched\nif (typeof fs.realpath.native === 'function') {\n exports.realpath.native = u(fs.realpath.native)\n} else {\n process.emitWarning(\n 'fs.realpath.native is not a function. Is fs being monkey-patched?',\n 'Warning', 'fs-extra-WARN0003'\n )\n}\n","'use strict'\n\nmodule.exports = {\n // Export promiseified graceful-fs:\n ...require('./fs'),\n // Export extra methods:\n ...require('./copy'),\n ...require('./empty'),\n ...require('./ensure'),\n ...require('./json'),\n ...require('./mkdirs'),\n ...require('./move'),\n ...require('./output-file'),\n ...require('./path-exists'),\n ...require('./remove')\n}\n","'use strict'\n\nconst u = require('universalify').fromPromise\nconst jsonFile = require('./jsonfile')\n\njsonFile.outputJson = u(require('./output-json'))\njsonFile.outputJsonSync = require('./output-json-sync')\n// aliases\njsonFile.outputJSON = jsonFile.outputJson\njsonFile.outputJSONSync = jsonFile.outputJsonSync\njsonFile.writeJSON = jsonFile.writeJson\njsonFile.writeJSONSync = jsonFile.writeJsonSync\njsonFile.readJSON = jsonFile.readJson\njsonFile.readJSONSync = jsonFile.readJsonSync\n\nmodule.exports = jsonFile\n","'use strict'\n\nconst jsonFile = require('jsonfile')\n\nmodule.exports = {\n // jsonfile exports\n readJson: jsonFile.readFile,\n readJsonSync: jsonFile.readFileSync,\n writeJson: jsonFile.writeFile,\n writeJsonSync: jsonFile.writeFileSync\n}\n","'use strict'\n\nconst { stringify } = require('jsonfile/utils')\nconst { outputFileSync } = require('../output-file')\n\nfunction outputJsonSync (file, data, options) {\n const str = stringify(data, options)\n\n outputFileSync(file, str, options)\n}\n\nmodule.exports = outputJsonSync\n","'use strict'\n\nconst { stringify } = require('jsonfile/utils')\nconst { outputFile } = require('../output-file')\n\nasync function outputJson (file, data, options = {}) {\n const str = stringify(data, options)\n\n await outputFile(file, str, options)\n}\n\nmodule.exports = outputJson\n","'use strict'\nconst u = require('universalify').fromPromise\nconst { makeDir: _makeDir, makeDirSync } = require('./make-dir')\nconst makeDir = u(_makeDir)\n\nmodule.exports = {\n mkdirs: makeDir,\n mkdirsSync: makeDirSync,\n // alias\n mkdirp: makeDir,\n mkdirpSync: makeDirSync,\n ensureDir: makeDir,\n ensureDirSync: makeDirSync\n}\n","'use strict'\nconst fs = require('../fs')\nconst { checkPath } = require('./utils')\n\nconst getMode = options => {\n const defaults = { mode: 0o777 }\n if (typeof options === 'number') return options\n return ({ ...defaults, ...options }).mode\n}\n\nmodule.exports.makeDir = async (dir, options) => {\n checkPath(dir)\n\n return fs.mkdir(dir, {\n mode: getMode(options),\n recursive: true\n })\n}\n\nmodule.exports.makeDirSync = (dir, options) => {\n checkPath(dir)\n\n return fs.mkdirSync(dir, {\n mode: getMode(options),\n recursive: true\n })\n}\n","// Adapted from https://github.com/sindresorhus/make-dir\n// Copyright (c) Sindre Sorhus (sindresorhus.com)\n// Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n// The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n'use strict'\nconst path = require('path')\n\n// https://github.com/nodejs/node/issues/8987\n// https://github.com/libuv/libuv/pull/1088\nmodule.exports.checkPath = function checkPath (pth) {\n if (process.platform === 'win32') {\n const pathHasInvalidWinCharacters = /[<>:\"|?*]/.test(pth.replace(path.parse(pth).root, ''))\n\n if (pathHasInvalidWinCharacters) {\n const error = new Error(`Path contains invalid characters: ${pth}`)\n error.code = 'EINVAL'\n throw error\n }\n }\n}\n","'use strict'\n\nconst u = require('universalify').fromPromise\nmodule.exports = {\n move: u(require('./move')),\n moveSync: require('./move-sync')\n}\n","'use strict'\n\nconst fs = require('graceful-fs')\nconst path = require('path')\nconst copySync = require('../copy').copySync\nconst removeSync = require('../remove').removeSync\nconst mkdirpSync = require('../mkdirs').mkdirpSync\nconst stat = require('../util/stat')\n\nfunction moveSync (src, dest, opts) {\n opts = opts || {}\n const overwrite = opts.overwrite || opts.clobber || false\n\n const { srcStat, isChangingCase = false } = stat.checkPathsSync(src, dest, 'move', opts)\n stat.checkParentPathsSync(src, srcStat, dest, 'move')\n if (!isParentRoot(dest)) mkdirpSync(path.dirname(dest))\n return doRename(src, dest, overwrite, isChangingCase)\n}\n\nfunction isParentRoot (dest) {\n const parent = path.dirname(dest)\n const parsedPath = path.parse(parent)\n return parsedPath.root === parent\n}\n\nfunction doRename (src, dest, overwrite, isChangingCase) {\n if (isChangingCase) return rename(src, dest, overwrite)\n if (overwrite) {\n removeSync(dest)\n return rename(src, dest, overwrite)\n }\n if (fs.existsSync(dest)) throw new Error('dest already exists.')\n return rename(src, dest, overwrite)\n}\n\nfunction rename (src, dest, overwrite) {\n try {\n fs.renameSync(src, dest)\n } catch (err) {\n if (err.code !== 'EXDEV') throw err\n return moveAcrossDevice(src, dest, overwrite)\n }\n}\n\nfunction moveAcrossDevice (src, dest, overwrite) {\n const opts = {\n overwrite,\n errorOnExist: true,\n preserveTimestamps: true\n }\n copySync(src, dest, opts)\n return removeSync(src)\n}\n\nmodule.exports = moveSync\n","'use strict'\n\nconst fs = require('../fs')\nconst path = require('path')\nconst { copy } = require('../copy')\nconst { remove } = require('../remove')\nconst { mkdirp } = require('../mkdirs')\nconst { pathExists } = require('../path-exists')\nconst stat = require('../util/stat')\n\nasync function move (src, dest, opts = {}) {\n const overwrite = opts.overwrite || opts.clobber || false\n\n const { srcStat, isChangingCase = false } = await stat.checkPaths(src, dest, 'move', opts)\n\n await stat.checkParentPaths(src, srcStat, dest, 'move')\n\n // If the parent of dest is not root, make sure it exists before proceeding\n const destParent = path.dirname(dest)\n const parsedParentPath = path.parse(destParent)\n if (parsedParentPath.root !== destParent) {\n await mkdirp(destParent)\n }\n\n return doRename(src, dest, overwrite, isChangingCase)\n}\n\nasync function doRename (src, dest, overwrite, isChangingCase) {\n if (!isChangingCase) {\n if (overwrite) {\n await remove(dest)\n } else if (await pathExists(dest)) {\n throw new Error('dest already exists.')\n }\n }\n\n try {\n // Try w/ rename first, and try copy + remove if EXDEV\n await fs.rename(src, dest)\n } catch (err) {\n if (err.code !== 'EXDEV') {\n throw err\n }\n await moveAcrossDevice(src, dest, overwrite)\n }\n}\n\nasync function moveAcrossDevice (src, dest, overwrite) {\n const opts = {\n overwrite,\n errorOnExist: true,\n preserveTimestamps: true\n }\n\n await copy(src, dest, opts)\n return remove(src)\n}\n\nmodule.exports = move\n","'use strict'\n\nconst u = require('universalify').fromPromise\nconst fs = require('../fs')\nconst path = require('path')\nconst mkdir = require('../mkdirs')\nconst pathExists = require('../path-exists').pathExists\n\nasync function outputFile (file, data, encoding = 'utf-8') {\n const dir = path.dirname(file)\n\n if (!(await pathExists(dir))) {\n await mkdir.mkdirs(dir)\n }\n\n return fs.writeFile(file, data, encoding)\n}\n\nfunction outputFileSync (file, ...args) {\n const dir = path.dirname(file)\n if (!fs.existsSync(dir)) {\n mkdir.mkdirsSync(dir)\n }\n\n fs.writeFileSync(file, ...args)\n}\n\nmodule.exports = {\n outputFile: u(outputFile),\n outputFileSync\n}\n","'use strict'\nconst u = require('universalify').fromPromise\nconst fs = require('../fs')\n\nfunction pathExists (path) {\n return fs.access(path).then(() => true).catch(() => false)\n}\n\nmodule.exports = {\n pathExists: u(pathExists),\n pathExistsSync: fs.existsSync\n}\n","'use strict'\n\nconst fs = require('graceful-fs')\nconst u = require('universalify').fromCallback\n\nfunction remove (path, callback) {\n fs.rm(path, { recursive: true, force: true }, callback)\n}\n\nfunction removeSync (path) {\n fs.rmSync(path, { recursive: true, force: true })\n}\n\nmodule.exports = {\n remove: u(remove),\n removeSync\n}\n","'use strict'\n\nconst fs = require('../fs')\nconst path = require('path')\nconst u = require('universalify').fromPromise\n\nfunction getStats (src, dest, opts) {\n const statFunc = opts.dereference\n ? (file) => fs.stat(file, { bigint: true })\n : (file) => fs.lstat(file, { bigint: true })\n return Promise.all([\n statFunc(src),\n statFunc(dest).catch(err => {\n if (err.code === 'ENOENT') return null\n throw err\n })\n ]).then(([srcStat, destStat]) => ({ srcStat, destStat }))\n}\n\nfunction getStatsSync (src, dest, opts) {\n let destStat\n const statFunc = opts.dereference\n ? (file) => fs.statSync(file, { bigint: true })\n : (file) => fs.lstatSync(file, { bigint: true })\n const srcStat = statFunc(src)\n try {\n destStat = statFunc(dest)\n } catch (err) {\n if (err.code === 'ENOENT') return { srcStat, destStat: null }\n throw err\n }\n return { srcStat, destStat }\n}\n\nasync function checkPaths (src, dest, funcName, opts) {\n const { srcStat, destStat } = await getStats(src, dest, opts)\n if (destStat) {\n if (areIdentical(srcStat, destStat)) {\n const srcBaseName = path.basename(src)\n const destBaseName = path.basename(dest)\n if (funcName === 'move' &&\n srcBaseName !== destBaseName &&\n srcBaseName.toLowerCase() === destBaseName.toLowerCase()) {\n return { srcStat, destStat, isChangingCase: true }\n }\n throw new Error('Source and destination must not be the same.')\n }\n if (srcStat.isDirectory() && !destStat.isDirectory()) {\n throw new Error(`Cannot overwrite non-directory '${dest}' with directory '${src}'.`)\n }\n if (!srcStat.isDirectory() && destStat.isDirectory()) {\n throw new Error(`Cannot overwrite directory '${dest}' with non-directory '${src}'.`)\n }\n }\n\n if (srcStat.isDirectory() && isSrcSubdir(src, dest)) {\n throw new Error(errMsg(src, dest, funcName))\n }\n\n return { srcStat, destStat }\n}\n\nfunction checkPathsSync (src, dest, funcName, opts) {\n const { srcStat, destStat } = getStatsSync(src, dest, opts)\n\n if (destStat) {\n if (areIdentical(srcStat, destStat)) {\n const srcBaseName = path.basename(src)\n const destBaseName = path.basename(dest)\n if (funcName === 'move' &&\n srcBaseName !== destBaseName &&\n srcBaseName.toLowerCase() === destBaseName.toLowerCase()) {\n return { srcStat, destStat, isChangingCase: true }\n }\n throw new Error('Source and destination must not be the same.')\n }\n if (srcStat.isDirectory() && !destStat.isDirectory()) {\n throw new Error(`Cannot overwrite non-directory '${dest}' with directory '${src}'.`)\n }\n if (!srcStat.isDirectory() && destStat.isDirectory()) {\n throw new Error(`Cannot overwrite directory '${dest}' with non-directory '${src}'.`)\n }\n }\n\n if (srcStat.isDirectory() && isSrcSubdir(src, dest)) {\n throw new Error(errMsg(src, dest, funcName))\n }\n return { srcStat, destStat }\n}\n\n// recursively check if dest parent is a subdirectory of src.\n// It works for all file types including symlinks since it\n// checks the src and dest inodes. It starts from the deepest\n// parent and stops once it reaches the src parent or the root path.\nasync function checkParentPaths (src, srcStat, dest, funcName) {\n const srcParent = path.resolve(path.dirname(src))\n const destParent = path.resolve(path.dirname(dest))\n if (destParent === srcParent || destParent === path.parse(destParent).root) return\n\n let destStat\n try {\n destStat = await fs.stat(destParent, { bigint: true })\n } catch (err) {\n if (err.code === 'ENOENT') return\n throw err\n }\n\n if (areIdentical(srcStat, destStat)) {\n throw new Error(errMsg(src, dest, funcName))\n }\n\n return checkParentPaths(src, srcStat, destParent, funcName)\n}\n\nfunction checkParentPathsSync (src, srcStat, dest, funcName) {\n const srcParent = path.resolve(path.dirname(src))\n const destParent = path.resolve(path.dirname(dest))\n if (destParent === srcParent || destParent === path.parse(destParent).root) return\n let destStat\n try {\n destStat = fs.statSync(destParent, { bigint: true })\n } catch (err) {\n if (err.code === 'ENOENT') return\n throw err\n }\n if (areIdentical(srcStat, destStat)) {\n throw new Error(errMsg(src, dest, funcName))\n }\n return checkParentPathsSync(src, srcStat, destParent, funcName)\n}\n\nfunction areIdentical (srcStat, destStat) {\n return destStat.ino && destStat.dev && destStat.ino === srcStat.ino && destStat.dev === srcStat.dev\n}\n\n// return true if dest is a subdir of src, otherwise false.\n// It only checks the path strings.\nfunction isSrcSubdir (src, dest) {\n const srcArr = path.resolve(src).split(path.sep).filter(i => i)\n const destArr = path.resolve(dest).split(path.sep).filter(i => i)\n return srcArr.every((cur, i) => destArr[i] === cur)\n}\n\nfunction errMsg (src, dest, funcName) {\n return `Cannot ${funcName} '${src}' to a subdirectory of itself, '${dest}'.`\n}\n\nmodule.exports = {\n // checkPaths\n checkPaths: u(checkPaths),\n checkPathsSync,\n // checkParent\n checkParentPaths: u(checkParentPaths),\n checkParentPathsSync,\n // Misc\n isSrcSubdir,\n areIdentical\n}\n","'use strict'\n\nconst fs = require('../fs')\nconst u = require('universalify').fromPromise\n\nasync function utimesMillis (path, atime, mtime) {\n // if (!HAS_MILLIS_RES) return fs.utimes(path, atime, mtime, callback)\n const fd = await fs.open(path, 'r+')\n\n let closeErr = null\n\n try {\n await fs.futimes(fd, atime, mtime)\n } finally {\n try {\n await fs.close(fd)\n } catch (e) {\n closeErr = e\n }\n }\n\n if (closeErr) {\n throw closeErr\n }\n}\n\nfunction utimesMillisSync (path, atime, mtime) {\n const fd = fs.openSync(path, 'r+')\n fs.futimesSync(fd, atime, mtime)\n return fs.closeSync(fd)\n}\n\nmodule.exports = {\n utimesMillis: u(utimesMillis),\n utimesMillisSync\n}\n","'use strict'\n\nmodule.exports = clone\n\nvar getPrototypeOf = Object.getPrototypeOf || function (obj) {\n return obj.__proto__\n}\n\nfunction clone (obj) {\n if (obj === null || typeof obj !== 'object')\n return obj\n\n if (obj instanceof Object)\n var copy = { __proto__: getPrototypeOf(obj) }\n else\n var copy = Object.create(null)\n\n Object.getOwnPropertyNames(obj).forEach(function (key) {\n Object.defineProperty(copy, key, Object.getOwnPropertyDescriptor(obj, key))\n })\n\n return copy\n}\n","var fs = require('fs')\nvar polyfills = require('./polyfills.js')\nvar legacy = require('./legacy-streams.js')\nvar clone = require('./clone.js')\n\nvar util = require('util')\n\n/* istanbul ignore next - node 0.x polyfill */\nvar gracefulQueue\nvar previousSymbol\n\n/* istanbul ignore else - node 0.x polyfill */\nif (typeof Symbol === 'function' && typeof Symbol.for === 'function') {\n gracefulQueue = Symbol.for('graceful-fs.queue')\n // This is used in testing by future versions\n previousSymbol = Symbol.for('graceful-fs.previous')\n} else {\n gracefulQueue = '___graceful-fs.queue'\n previousSymbol = '___graceful-fs.previous'\n}\n\nfunction noop () {}\n\nfunction publishQueue(context, queue) {\n Object.defineProperty(context, gracefulQueue, {\n get: function() {\n return queue\n }\n })\n}\n\nvar debug = noop\nif (util.debuglog)\n debug = util.debuglog('gfs4')\nelse if (/\\bgfs4\\b/i.test(process.env.NODE_DEBUG || ''))\n debug = function() {\n var m = util.format.apply(util, arguments)\n m = 'GFS4: ' + m.split(/\\n/).join('\\nGFS4: ')\n console.error(m)\n }\n\n// Once time initialization\nif (!fs[gracefulQueue]) {\n // This queue can be shared by multiple loaded instances\n var queue = global[gracefulQueue] || []\n publishQueue(fs, queue)\n\n // Patch fs.close/closeSync to shared queue version, because we need\n // to retry() whenever a close happens *anywhere* in the program.\n // This is essential when multiple graceful-fs instances are\n // in play at the same time.\n fs.close = (function (fs$close) {\n function close (fd, cb) {\n return fs$close.call(fs, fd, function (err) {\n // This function uses the graceful-fs shared queue\n if (!err) {\n resetQueue()\n }\n\n if (typeof cb === 'function')\n cb.apply(this, arguments)\n })\n }\n\n Object.defineProperty(close, previousSymbol, {\n value: fs$close\n })\n return close\n })(fs.close)\n\n fs.closeSync = (function (fs$closeSync) {\n function closeSync (fd) {\n // This function uses the graceful-fs shared queue\n fs$closeSync.apply(fs, arguments)\n resetQueue()\n }\n\n Object.defineProperty(closeSync, previousSymbol, {\n value: fs$closeSync\n })\n return closeSync\n })(fs.closeSync)\n\n if (/\\bgfs4\\b/i.test(process.env.NODE_DEBUG || '')) {\n process.on('exit', function() {\n debug(fs[gracefulQueue])\n require('assert').equal(fs[gracefulQueue].length, 0)\n })\n }\n}\n\nif (!global[gracefulQueue]) {\n publishQueue(global, fs[gracefulQueue]);\n}\n\nmodule.exports = patch(clone(fs))\nif (process.env.TEST_GRACEFUL_FS_GLOBAL_PATCH && !fs.__patched) {\n module.exports = patch(fs)\n fs.__patched = true;\n}\n\nfunction patch (fs) {\n // Everything that references the open() function needs to be in here\n polyfills(fs)\n fs.gracefulify = patch\n\n fs.createReadStream = createReadStream\n fs.createWriteStream = createWriteStream\n var fs$readFile = fs.readFile\n fs.readFile = readFile\n function readFile (path, options, cb) {\n if (typeof options === 'function')\n cb = options, options = null\n\n return go$readFile(path, options, cb)\n\n function go$readFile (path, options, cb, startTime) {\n return fs$readFile(path, options, function (err) {\n if (err && (err.code === 'EMFILE' || err.code === 'ENFILE'))\n enqueue([go$readFile, [path, options, cb], err, startTime || Date.now(), Date.now()])\n else {\n if (typeof cb === 'function')\n cb.apply(this, arguments)\n }\n })\n }\n }\n\n var fs$writeFile = fs.writeFile\n fs.writeFile = writeFile\n function writeFile (path, data, options, cb) {\n if (typeof options === 'function')\n cb = options, options = null\n\n return go$writeFile(path, data, options, cb)\n\n function go$writeFile (path, data, options, cb, startTime) {\n return fs$writeFile(path, data, options, function (err) {\n if (err && (err.code === 'EMFILE' || err.code === 'ENFILE'))\n enqueue([go$writeFile, [path, data, options, cb], err, startTime || Date.now(), Date.now()])\n else {\n if (typeof cb === 'function')\n cb.apply(this, arguments)\n }\n })\n }\n }\n\n var fs$appendFile = fs.appendFile\n if (fs$appendFile)\n fs.appendFile = appendFile\n function appendFile (path, data, options, cb) {\n if (typeof options === 'function')\n cb = options, options = null\n\n return go$appendFile(path, data, options, cb)\n\n function go$appendFile (path, data, options, cb, startTime) {\n return fs$appendFile(path, data, options, function (err) {\n if (err && (err.code === 'EMFILE' || err.code === 'ENFILE'))\n enqueue([go$appendFile, [path, data, options, cb], err, startTime || Date.now(), Date.now()])\n else {\n if (typeof cb === 'function')\n cb.apply(this, arguments)\n }\n })\n }\n }\n\n var fs$copyFile = fs.copyFile\n if (fs$copyFile)\n fs.copyFile = copyFile\n function copyFile (src, dest, flags, cb) {\n if (typeof flags === 'function') {\n cb = flags\n flags = 0\n }\n return go$copyFile(src, dest, flags, cb)\n\n function go$copyFile (src, dest, flags, cb, startTime) {\n return fs$copyFile(src, dest, flags, function (err) {\n if (err && (err.code === 'EMFILE' || err.code === 'ENFILE'))\n enqueue([go$copyFile, [src, dest, flags, cb], err, startTime || Date.now(), Date.now()])\n else {\n if (typeof cb === 'function')\n cb.apply(this, arguments)\n }\n })\n }\n }\n\n var fs$readdir = fs.readdir\n fs.readdir = readdir\n var noReaddirOptionVersions = /^v[0-5]\\./\n function readdir (path, options, cb) {\n if (typeof options === 'function')\n cb = options, options = null\n\n var go$readdir = noReaddirOptionVersions.test(process.version)\n ? function go$readdir (path, options, cb, startTime) {\n return fs$readdir(path, fs$readdirCallback(\n path, options, cb, startTime\n ))\n }\n : function go$readdir (path, options, cb, startTime) {\n return fs$readdir(path, options, fs$readdirCallback(\n path, options, cb, startTime\n ))\n }\n\n return go$readdir(path, options, cb)\n\n function fs$readdirCallback (path, options, cb, startTime) {\n return function (err, files) {\n if (err && (err.code === 'EMFILE' || err.code === 'ENFILE'))\n enqueue([\n go$readdir,\n [path, options, cb],\n err,\n startTime || Date.now(),\n Date.now()\n ])\n else {\n if (files && files.sort)\n files.sort()\n\n if (typeof cb === 'function')\n cb.call(this, err, files)\n }\n }\n }\n }\n\n if (process.version.substr(0, 4) === 'v0.8') {\n var legStreams = legacy(fs)\n ReadStream = legStreams.ReadStream\n WriteStream = legStreams.WriteStream\n }\n\n var fs$ReadStream = fs.ReadStream\n if (fs$ReadStream) {\n ReadStream.prototype = Object.create(fs$ReadStream.prototype)\n ReadStream.prototype.open = ReadStream$open\n }\n\n var fs$WriteStream = fs.WriteStream\n if (fs$WriteStream) {\n WriteStream.prototype = Object.create(fs$WriteStream.prototype)\n WriteStream.prototype.open = WriteStream$open\n }\n\n Object.defineProperty(fs, 'ReadStream', {\n get: function () {\n return ReadStream\n },\n set: function (val) {\n ReadStream = val\n },\n enumerable: true,\n configurable: true\n })\n Object.defineProperty(fs, 'WriteStream', {\n get: function () {\n return WriteStream\n },\n set: function (val) {\n WriteStream = val\n },\n enumerable: true,\n configurable: true\n })\n\n // legacy names\n var FileReadStream = ReadStream\n Object.defineProperty(fs, 'FileReadStream', {\n get: function () {\n return FileReadStream\n },\n set: function (val) {\n FileReadStream = val\n },\n enumerable: true,\n configurable: true\n })\n var FileWriteStream = WriteStream\n Object.defineProperty(fs, 'FileWriteStream', {\n get: function () {\n return FileWriteStream\n },\n set: function (val) {\n FileWriteStream = val\n },\n enumerable: true,\n configurable: true\n })\n\n function ReadStream (path, options) {\n if (this instanceof ReadStream)\n return fs$ReadStream.apply(this, arguments), this\n else\n return ReadStream.apply(Object.create(ReadStream.prototype), arguments)\n }\n\n function ReadStream$open () {\n var that = this\n open(that.path, that.flags, that.mode, function (err, fd) {\n if (err) {\n if (that.autoClose)\n that.destroy()\n\n that.emit('error', err)\n } else {\n that.fd = fd\n that.emit('open', fd)\n that.read()\n }\n })\n }\n\n function WriteStream (path, options) {\n if (this instanceof WriteStream)\n return fs$WriteStream.apply(this, arguments), this\n else\n return WriteStream.apply(Object.create(WriteStream.prototype), arguments)\n }\n\n function WriteStream$open () {\n var that = this\n open(that.path, that.flags, that.mode, function (err, fd) {\n if (err) {\n that.destroy()\n that.emit('error', err)\n } else {\n that.fd = fd\n that.emit('open', fd)\n }\n })\n }\n\n function createReadStream (path, options) {\n return new fs.ReadStream(path, options)\n }\n\n function createWriteStream (path, options) {\n return new fs.WriteStream(path, options)\n }\n\n var fs$open = fs.open\n fs.open = open\n function open (path, flags, mode, cb) {\n if (typeof mode === 'function')\n cb = mode, mode = null\n\n return go$open(path, flags, mode, cb)\n\n function go$open (path, flags, mode, cb, startTime) {\n return fs$open(path, flags, mode, function (err, fd) {\n if (err && (err.code === 'EMFILE' || err.code === 'ENFILE'))\n enqueue([go$open, [path, flags, mode, cb], err, startTime || Date.now(), Date.now()])\n else {\n if (typeof cb === 'function')\n cb.apply(this, arguments)\n }\n })\n }\n }\n\n return fs\n}\n\nfunction enqueue (elem) {\n debug('ENQUEUE', elem[0].name, elem[1])\n fs[gracefulQueue].push(elem)\n retry()\n}\n\n// keep track of the timeout between retry() calls\nvar retryTimer\n\n// reset the startTime and lastTime to now\n// this resets the start of the 60 second overall timeout as well as the\n// delay between attempts so that we'll retry these jobs sooner\nfunction resetQueue () {\n var now = Date.now()\n for (var i = 0; i < fs[gracefulQueue].length; ++i) {\n // entries that are only a length of 2 are from an older version, don't\n // bother modifying those since they'll be retried anyway.\n if (fs[gracefulQueue][i].length > 2) {\n fs[gracefulQueue][i][3] = now // startTime\n fs[gracefulQueue][i][4] = now // lastTime\n }\n }\n // call retry to make sure we're actively processing the queue\n retry()\n}\n\nfunction retry () {\n // clear the timer and remove it to help prevent unintended concurrency\n clearTimeout(retryTimer)\n retryTimer = undefined\n\n if (fs[gracefulQueue].length === 0)\n return\n\n var elem = fs[gracefulQueue].shift()\n var fn = elem[0]\n var args = elem[1]\n // these items may be unset if they were added by an older graceful-fs\n var err = elem[2]\n var startTime = elem[3]\n var lastTime = elem[4]\n\n // if we don't have a startTime we have no way of knowing if we've waited\n // long enough, so go ahead and retry this item now\n if (startTime === undefined) {\n debug('RETRY', fn.name, args)\n fn.apply(null, args)\n } else if (Date.now() - startTime >= 60000) {\n // it's been more than 60 seconds total, bail now\n debug('TIMEOUT', fn.name, args)\n var cb = args.pop()\n if (typeof cb === 'function')\n cb.call(null, err)\n } else {\n // the amount of time between the last attempt and right now\n var sinceAttempt = Date.now() - lastTime\n // the amount of time between when we first tried, and when we last tried\n // rounded up to at least 1\n var sinceStart = Math.max(lastTime - startTime, 1)\n // backoff. wait longer than the total time we've been retrying, but only\n // up to a maximum of 100ms\n var desiredDelay = Math.min(sinceStart * 1.2, 100)\n // it's been long enough since the last retry, do it again\n if (sinceAttempt >= desiredDelay) {\n debug('RETRY', fn.name, args)\n fn.apply(null, args.concat([startTime]))\n } else {\n // if we can't do this job yet, push it to the end of the queue\n // and let the next iteration check again\n fs[gracefulQueue].push(elem)\n }\n }\n\n // schedule our next run if one isn't already scheduled\n if (retryTimer === undefined) {\n retryTimer = setTimeout(retry, 0)\n }\n}\n","var Stream = require('stream').Stream\n\nmodule.exports = legacy\n\nfunction legacy (fs) {\n return {\n ReadStream: ReadStream,\n WriteStream: WriteStream\n }\n\n function ReadStream (path, options) {\n if (!(this instanceof ReadStream)) return new ReadStream(path, options);\n\n Stream.call(this);\n\n var self = this;\n\n this.path = path;\n this.fd = null;\n this.readable = true;\n this.paused = false;\n\n this.flags = 'r';\n this.mode = 438; /*=0666*/\n this.bufferSize = 64 * 1024;\n\n options = options || {};\n\n // Mixin options into this\n var keys = Object.keys(options);\n for (var index = 0, length = keys.length; index < length; index++) {\n var key = keys[index];\n this[key] = options[key];\n }\n\n if (this.encoding) this.setEncoding(this.encoding);\n\n if (this.start !== undefined) {\n if ('number' !== typeof this.start) {\n throw TypeError('start must be a Number');\n }\n if (this.end === undefined) {\n this.end = Infinity;\n } else if ('number' !== typeof this.end) {\n throw TypeError('end must be a Number');\n }\n\n if (this.start > this.end) {\n throw new Error('start must be <= end');\n }\n\n this.pos = this.start;\n }\n\n if (this.fd !== null) {\n process.nextTick(function() {\n self._read();\n });\n return;\n }\n\n fs.open(this.path, this.flags, this.mode, function (err, fd) {\n if (err) {\n self.emit('error', err);\n self.readable = false;\n return;\n }\n\n self.fd = fd;\n self.emit('open', fd);\n self._read();\n })\n }\n\n function WriteStream (path, options) {\n if (!(this instanceof WriteStream)) return new WriteStream(path, options);\n\n Stream.call(this);\n\n this.path = path;\n this.fd = null;\n this.writable = true;\n\n this.flags = 'w';\n this.encoding = 'binary';\n this.mode = 438; /*=0666*/\n this.bytesWritten = 0;\n\n options = options || {};\n\n // Mixin options into this\n var keys = Object.keys(options);\n for (var index = 0, length = keys.length; index < length; index++) {\n var key = keys[index];\n this[key] = options[key];\n }\n\n if (this.start !== undefined) {\n if ('number' !== typeof this.start) {\n throw TypeError('start must be a Number');\n }\n if (this.start < 0) {\n throw new Error('start must be >= zero');\n }\n\n this.pos = this.start;\n }\n\n this.busy = false;\n this._queue = [];\n\n if (this.fd === null) {\n this._open = fs.open;\n this._queue.push([this._open, this.path, this.flags, this.mode, undefined]);\n this.flush();\n }\n }\n}\n","var constants = require('constants')\n\nvar origCwd = process.cwd\nvar cwd = null\n\nvar platform = process.env.GRACEFUL_FS_PLATFORM || process.platform\n\nprocess.cwd = function() {\n if (!cwd)\n cwd = origCwd.call(process)\n return cwd\n}\ntry {\n process.cwd()\n} catch (er) {}\n\n// This check is needed until node.js 12 is required\nif (typeof process.chdir === 'function') {\n var chdir = process.chdir\n process.chdir = function (d) {\n cwd = null\n chdir.call(process, d)\n }\n if (Object.setPrototypeOf) Object.setPrototypeOf(process.chdir, chdir)\n}\n\nmodule.exports = patch\n\nfunction patch (fs) {\n // (re-)implement some things that are known busted or missing.\n\n // lchmod, broken prior to 0.6.2\n // back-port the fix here.\n if (constants.hasOwnProperty('O_SYMLINK') &&\n process.version.match(/^v0\\.6\\.[0-2]|^v0\\.5\\./)) {\n patchLchmod(fs)\n }\n\n // lutimes implementation, or no-op\n if (!fs.lutimes) {\n patchLutimes(fs)\n }\n\n // https://github.com/isaacs/node-graceful-fs/issues/4\n // Chown should not fail on einval or eperm if non-root.\n // It should not fail on enosys ever, as this just indicates\n // that a fs doesn't support the intended operation.\n\n fs.chown = chownFix(fs.chown)\n fs.fchown = chownFix(fs.fchown)\n fs.lchown = chownFix(fs.lchown)\n\n fs.chmod = chmodFix(fs.chmod)\n fs.fchmod = chmodFix(fs.fchmod)\n fs.lchmod = chmodFix(fs.lchmod)\n\n fs.chownSync = chownFixSync(fs.chownSync)\n fs.fchownSync = chownFixSync(fs.fchownSync)\n fs.lchownSync = chownFixSync(fs.lchownSync)\n\n fs.chmodSync = chmodFixSync(fs.chmodSync)\n fs.fchmodSync = chmodFixSync(fs.fchmodSync)\n fs.lchmodSync = chmodFixSync(fs.lchmodSync)\n\n fs.stat = statFix(fs.stat)\n fs.fstat = statFix(fs.fstat)\n fs.lstat = statFix(fs.lstat)\n\n fs.statSync = statFixSync(fs.statSync)\n fs.fstatSync = statFixSync(fs.fstatSync)\n fs.lstatSync = statFixSync(fs.lstatSync)\n\n // if lchmod/lchown do not exist, then make them no-ops\n if (fs.chmod && !fs.lchmod) {\n fs.lchmod = function (path, mode, cb) {\n if (cb) process.nextTick(cb)\n }\n fs.lchmodSync = function () {}\n }\n if (fs.chown && !fs.lchown) {\n fs.lchown = function (path, uid, gid, cb) {\n if (cb) process.nextTick(cb)\n }\n fs.lchownSync = function () {}\n }\n\n // on Windows, A/V software can lock the directory, causing this\n // to fail with an EACCES or EPERM if the directory contains newly\n // created files. Try again on failure, for up to 60 seconds.\n\n // Set the timeout this long because some Windows Anti-Virus, such as Parity\n // bit9, may lock files for up to a minute, causing npm package install\n // failures. Also, take care to yield the scheduler. Windows scheduling gives\n // CPU to a busy looping process, which can cause the program causing the lock\n // contention to be starved of CPU by node, so the contention doesn't resolve.\n if (platform === \"win32\") {\n fs.rename = typeof fs.rename !== 'function' ? fs.rename\n : (function (fs$rename) {\n function rename (from, to, cb) {\n var start = Date.now()\n var backoff = 0;\n fs$rename(from, to, function CB (er) {\n if (er\n && (er.code === \"EACCES\" || er.code === \"EPERM\" || er.code === \"EBUSY\")\n && Date.now() - start < 60000) {\n setTimeout(function() {\n fs.stat(to, function (stater, st) {\n if (stater && stater.code === \"ENOENT\")\n fs$rename(from, to, CB);\n else\n cb(er)\n })\n }, backoff)\n if (backoff < 100)\n backoff += 10;\n return;\n }\n if (cb) cb(er)\n })\n }\n if (Object.setPrototypeOf) Object.setPrototypeOf(rename, fs$rename)\n return rename\n })(fs.rename)\n }\n\n // if read() returns EAGAIN, then just try it again.\n fs.read = typeof fs.read !== 'function' ? fs.read\n : (function (fs$read) {\n function read (fd, buffer, offset, length, position, callback_) {\n var callback\n if (callback_ && typeof callback_ === 'function') {\n var eagCounter = 0\n callback = function (er, _, __) {\n if (er && er.code === 'EAGAIN' && eagCounter < 10) {\n eagCounter ++\n return fs$read.call(fs, fd, buffer, offset, length, position, callback)\n }\n callback_.apply(this, arguments)\n }\n }\n return fs$read.call(fs, fd, buffer, offset, length, position, callback)\n }\n\n // This ensures `util.promisify` works as it does for native `fs.read`.\n if (Object.setPrototypeOf) Object.setPrototypeOf(read, fs$read)\n return read\n })(fs.read)\n\n fs.readSync = typeof fs.readSync !== 'function' ? fs.readSync\n : (function (fs$readSync) { return function (fd, buffer, offset, length, position) {\n var eagCounter = 0\n while (true) {\n try {\n return fs$readSync.call(fs, fd, buffer, offset, length, position)\n } catch (er) {\n if (er.code === 'EAGAIN' && eagCounter < 10) {\n eagCounter ++\n continue\n }\n throw er\n }\n }\n }})(fs.readSync)\n\n function patchLchmod (fs) {\n fs.lchmod = function (path, mode, callback) {\n fs.open( path\n , constants.O_WRONLY | constants.O_SYMLINK\n , mode\n , function (err, fd) {\n if (err) {\n if (callback) callback(err)\n return\n }\n // prefer to return the chmod error, if one occurs,\n // but still try to close, and report closing errors if they occur.\n fs.fchmod(fd, mode, function (err) {\n fs.close(fd, function(err2) {\n if (callback) callback(err || err2)\n })\n })\n })\n }\n\n fs.lchmodSync = function (path, mode) {\n var fd = fs.openSync(path, constants.O_WRONLY | constants.O_SYMLINK, mode)\n\n // prefer to return the chmod error, if one occurs,\n // but still try to close, and report closing errors if they occur.\n var threw = true\n var ret\n try {\n ret = fs.fchmodSync(fd, mode)\n threw = false\n } finally {\n if (threw) {\n try {\n fs.closeSync(fd)\n } catch (er) {}\n } else {\n fs.closeSync(fd)\n }\n }\n return ret\n }\n }\n\n function patchLutimes (fs) {\n if (constants.hasOwnProperty(\"O_SYMLINK\") && fs.futimes) {\n fs.lutimes = function (path, at, mt, cb) {\n fs.open(path, constants.O_SYMLINK, function (er, fd) {\n if (er) {\n if (cb) cb(er)\n return\n }\n fs.futimes(fd, at, mt, function (er) {\n fs.close(fd, function (er2) {\n if (cb) cb(er || er2)\n })\n })\n })\n }\n\n fs.lutimesSync = function (path, at, mt) {\n var fd = fs.openSync(path, constants.O_SYMLINK)\n var ret\n var threw = true\n try {\n ret = fs.futimesSync(fd, at, mt)\n threw = false\n } finally {\n if (threw) {\n try {\n fs.closeSync(fd)\n } catch (er) {}\n } else {\n fs.closeSync(fd)\n }\n }\n return ret\n }\n\n } else if (fs.futimes) {\n fs.lutimes = function (_a, _b, _c, cb) { if (cb) process.nextTick(cb) }\n fs.lutimesSync = function () {}\n }\n }\n\n function chmodFix (orig) {\n if (!orig) return orig\n return function (target, mode, cb) {\n return orig.call(fs, target, mode, function (er) {\n if (chownErOk(er)) er = null\n if (cb) cb.apply(this, arguments)\n })\n }\n }\n\n function chmodFixSync (orig) {\n if (!orig) return orig\n return function (target, mode) {\n try {\n return orig.call(fs, target, mode)\n } catch (er) {\n if (!chownErOk(er)) throw er\n }\n }\n }\n\n\n function chownFix (orig) {\n if (!orig) return orig\n return function (target, uid, gid, cb) {\n return orig.call(fs, target, uid, gid, function (er) {\n if (chownErOk(er)) er = null\n if (cb) cb.apply(this, arguments)\n })\n }\n }\n\n function chownFixSync (orig) {\n if (!orig) return orig\n return function (target, uid, gid) {\n try {\n return orig.call(fs, target, uid, gid)\n } catch (er) {\n if (!chownErOk(er)) throw er\n }\n }\n }\n\n function statFix (orig) {\n if (!orig) return orig\n // Older versions of Node erroneously returned signed integers for\n // uid + gid.\n return function (target, options, cb) {\n if (typeof options === 'function') {\n cb = options\n options = null\n }\n function callback (er, stats) {\n if (stats) {\n if (stats.uid < 0) stats.uid += 0x100000000\n if (stats.gid < 0) stats.gid += 0x100000000\n }\n if (cb) cb.apply(this, arguments)\n }\n return options ? orig.call(fs, target, options, callback)\n : orig.call(fs, target, callback)\n }\n }\n\n function statFixSync (orig) {\n if (!orig) return orig\n // Older versions of Node erroneously returned signed integers for\n // uid + gid.\n return function (target, options) {\n var stats = options ? orig.call(fs, target, options)\n : orig.call(fs, target)\n if (stats) {\n if (stats.uid < 0) stats.uid += 0x100000000\n if (stats.gid < 0) stats.gid += 0x100000000\n }\n return stats;\n }\n }\n\n // ENOSYS means that the fs doesn't support the op. Just ignore\n // that, because it doesn't matter.\n //\n // if there's no getuid, or if getuid() is something other\n // than 0, and the error is EINVAL or EPERM, then just ignore\n // it.\n //\n // This specific case is a silent failure in cp, install, tar,\n // and most other unix tools that manage permissions.\n //\n // When running as root, or if other types of errors are\n // encountered, then it's strict.\n function chownErOk (er) {\n if (!er)\n return true\n\n if (er.code === \"ENOSYS\")\n return true\n\n var nonroot = !process.getuid || process.getuid() !== 0\n if (nonroot) {\n if (er.code === \"EINVAL\" || er.code === \"EPERM\")\n return true\n }\n\n return false\n }\n}\n","'use strict';\n\nmodule.exports = (flag, argv = process.argv) => {\n\tconst prefix = flag.startsWith('-') ? '' : (flag.length === 1 ? '-' : '--');\n\tconst position = argv.indexOf(prefix + flag);\n\tconst terminatorPosition = argv.indexOf('--');\n\treturn position !== -1 && (terminatorPosition === -1 || position < terminatorPosition);\n};\n","/* eslint-disable yoda */\n'use strict';\n\nconst isFullwidthCodePoint = codePoint => {\n\tif (Number.isNaN(codePoint)) {\n\t\treturn false;\n\t}\n\n\t// Code points are derived from:\n\t// http://www.unix.org/Public/UNIDATA/EastAsianWidth.txt\n\tif (\n\t\tcodePoint >= 0x1100 && (\n\t\t\tcodePoint <= 0x115F || // Hangul Jamo\n\t\t\tcodePoint === 0x2329 || // LEFT-POINTING ANGLE BRACKET\n\t\t\tcodePoint === 0x232A || // RIGHT-POINTING ANGLE BRACKET\n\t\t\t// CJK Radicals Supplement .. Enclosed CJK Letters and Months\n\t\t\t(0x2E80 <= codePoint && codePoint <= 0x3247 && codePoint !== 0x303F) ||\n\t\t\t// Enclosed CJK Letters and Months .. CJK Unified Ideographs Extension A\n\t\t\t(0x3250 <= codePoint && codePoint <= 0x4DBF) ||\n\t\t\t// CJK Unified Ideographs .. Yi Radicals\n\t\t\t(0x4E00 <= codePoint && codePoint <= 0xA4C6) ||\n\t\t\t// Hangul Jamo Extended-A\n\t\t\t(0xA960 <= codePoint && codePoint <= 0xA97C) ||\n\t\t\t// Hangul Syllables\n\t\t\t(0xAC00 <= codePoint && codePoint <= 0xD7A3) ||\n\t\t\t// CJK Compatibility Ideographs\n\t\t\t(0xF900 <= codePoint && codePoint <= 0xFAFF) ||\n\t\t\t// Vertical Forms\n\t\t\t(0xFE10 <= codePoint && codePoint <= 0xFE19) ||\n\t\t\t// CJK Compatibility Forms .. Small Form Variants\n\t\t\t(0xFE30 <= codePoint && codePoint <= 0xFE6B) ||\n\t\t\t// Halfwidth and Fullwidth Forms\n\t\t\t(0xFF01 <= codePoint && codePoint <= 0xFF60) ||\n\t\t\t(0xFFE0 <= codePoint && codePoint <= 0xFFE6) ||\n\t\t\t// Kana Supplement\n\t\t\t(0x1B000 <= codePoint && codePoint <= 0x1B001) ||\n\t\t\t// Enclosed Ideographic Supplement\n\t\t\t(0x1F200 <= codePoint && codePoint <= 0x1F251) ||\n\t\t\t// CJK Unified Ideographs Extension B .. Tertiary Ideographic Plane\n\t\t\t(0x20000 <= codePoint && codePoint <= 0x3FFFD)\n\t\t)\n\t) {\n\t\treturn true;\n\t}\n\n\treturn false;\n};\n\nmodule.exports = isFullwidthCodePoint;\nmodule.exports.default = isFullwidthCodePoint;\n","let _fs\ntry {\n _fs = require('graceful-fs')\n} catch (_) {\n _fs = require('fs')\n}\nconst universalify = require('universalify')\nconst { stringify, stripBom } = require('./utils')\n\nasync function _readFile (file, options = {}) {\n if (typeof options === 'string') {\n options = { encoding: options }\n }\n\n const fs = options.fs || _fs\n\n const shouldThrow = 'throws' in options ? options.throws : true\n\n let data = await universalify.fromCallback(fs.readFile)(file, options)\n\n data = stripBom(data)\n\n let obj\n try {\n obj = JSON.parse(data, options ? options.reviver : null)\n } catch (err) {\n if (shouldThrow) {\n err.message = `${file}: ${err.message}`\n throw err\n } else {\n return null\n }\n }\n\n return obj\n}\n\nconst readFile = universalify.fromPromise(_readFile)\n\nfunction readFileSync (file, options = {}) {\n if (typeof options === 'string') {\n options = { encoding: options }\n }\n\n const fs = options.fs || _fs\n\n const shouldThrow = 'throws' in options ? options.throws : true\n\n try {\n let content = fs.readFileSync(file, options)\n content = stripBom(content)\n return JSON.parse(content, options.reviver)\n } catch (err) {\n if (shouldThrow) {\n err.message = `${file}: ${err.message}`\n throw err\n } else {\n return null\n }\n }\n}\n\nasync function _writeFile (file, obj, options = {}) {\n const fs = options.fs || _fs\n\n const str = stringify(obj, options)\n\n await universalify.fromCallback(fs.writeFile)(file, str, options)\n}\n\nconst writeFile = universalify.fromPromise(_writeFile)\n\nfunction writeFileSync (file, obj, options = {}) {\n const fs = options.fs || _fs\n\n const str = stringify(obj, options)\n // not sure if fs.writeFileSync returns anything, but just in case\n return fs.writeFileSync(file, str, options)\n}\n\nconst jsonfile = {\n readFile,\n readFileSync,\n writeFile,\n writeFileSync\n}\n\nmodule.exports = jsonfile\n","function stringify (obj, { EOL = '\\n', finalEOL = true, replacer = null, spaces } = {}) {\n const EOF = finalEOL ? EOL : ''\n const str = JSON.stringify(obj, replacer, spaces)\n\n return str.replace(/\\n/g, EOL) + EOF\n}\n\nfunction stripBom (content) {\n // we do this because JSON.parse would convert it to a utf8 string if encoding wasn't specified\n if (Buffer.isBuffer(content)) content = content.toString('utf8')\n return content.replace(/^\\uFEFF/, '')\n}\n\nmodule.exports = { stringify, stripBom }\n","/**\n * lodash (Custom Build) \n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as default options for `_.truncate`. */\nvar DEFAULT_TRUNC_LENGTH = 30,\n DEFAULT_TRUNC_OMISSION = '...';\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0,\n MAX_INTEGER = 1.7976931348623157e+308,\n NAN = 0 / 0;\n\n/** `Object#toString` result references. */\nvar regexpTag = '[object RegExp]',\n symbolTag = '[object Symbol]';\n\n/** Used to match leading and trailing whitespace. */\nvar reTrim = /^\\s+|\\s+$/g;\n\n/** Used to match `RegExp` flags from their coerced string values. */\nvar reFlags = /\\w*$/;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Used to compose unicode character classes. */\nvar rsAstralRange = '\\\\ud800-\\\\udfff',\n rsComboMarksRange = '\\\\u0300-\\\\u036f\\\\ufe20-\\\\ufe23',\n rsComboSymbolsRange = '\\\\u20d0-\\\\u20f0',\n rsVarRange = '\\\\ufe0e\\\\ufe0f';\n\n/** Used to compose unicode capture groups. */\nvar rsAstral = '[' + rsAstralRange + ']',\n rsCombo = '[' + rsComboMarksRange + rsComboSymbolsRange + ']',\n rsFitz = '\\\\ud83c[\\\\udffb-\\\\udfff]',\n rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')',\n rsNonAstral = '[^' + rsAstralRange + ']',\n rsRegional = '(?:\\\\ud83c[\\\\udde6-\\\\uddff]){2}',\n rsSurrPair = '[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff]',\n rsZWJ = '\\\\u200d';\n\n/** Used to compose unicode regexes. */\nvar reOptMod = rsModifier + '?',\n rsOptVar = '[' + rsVarRange + ']?',\n rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*',\n rsSeq = rsOptVar + reOptMod + rsOptJoin,\n rsSymbol = '(?:' + [rsNonAstral + rsCombo + '?', rsCombo, rsRegional, rsSurrPair, rsAstral].join('|') + ')';\n\n/** Used to match [string symbols](https://mathiasbynens.be/notes/javascript-unicode). */\nvar reUnicode = RegExp(rsFitz + '(?=' + rsFitz + ')|' + rsSymbol + rsSeq, 'g');\n\n/** Used to detect strings with [zero-width joiners or code points from the astral planes](http://eev.ee/blog/2015/09/12/dark-corners-of-unicode/). */\nvar reHasUnicode = RegExp('[' + rsZWJ + rsAstralRange + rsComboMarksRange + rsComboSymbolsRange + rsVarRange + ']');\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n try {\n return freeProcess && freeProcess.binding('util');\n } catch (e) {}\n}());\n\n/* Node.js helper references. */\nvar nodeIsRegExp = nodeUtil && nodeUtil.isRegExp;\n\n/**\n * Gets the size of an ASCII `string`.\n *\n * @private\n * @param {string} string The string inspect.\n * @returns {number} Returns the string size.\n */\nvar asciiSize = baseProperty('length');\n\n/**\n * Converts an ASCII `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction asciiToArray(string) {\n return string.split('');\n}\n\n/**\n * The base implementation of `_.property` without support for deep paths.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction baseProperty(key) {\n return function(object) {\n return object == null ? undefined : object[key];\n };\n}\n\n/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n return function(value) {\n return func(value);\n };\n}\n\n/**\n * Checks if `string` contains Unicode symbols.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {boolean} Returns `true` if a symbol is found, else `false`.\n */\nfunction hasUnicode(string) {\n return reHasUnicode.test(string);\n}\n\n/**\n * Gets the number of symbols in `string`.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {number} Returns the string size.\n */\nfunction stringSize(string) {\n return hasUnicode(string)\n ? unicodeSize(string)\n : asciiSize(string);\n}\n\n/**\n * Converts `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction stringToArray(string) {\n return hasUnicode(string)\n ? unicodeToArray(string)\n : asciiToArray(string);\n}\n\n/**\n * Gets the size of a Unicode `string`.\n *\n * @private\n * @param {string} string The string inspect.\n * @returns {number} Returns the string size.\n */\nfunction unicodeSize(string) {\n var result = reUnicode.lastIndex = 0;\n while (reUnicode.test(string)) {\n result++;\n }\n return result;\n}\n\n/**\n * Converts a Unicode `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction unicodeToArray(string) {\n return string.match(reUnicode) || [];\n}\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n/**\n * The base implementation of `_.isRegExp` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a regexp, else `false`.\n */\nfunction baseIsRegExp(value) {\n return isObject(value) && objectToString.call(value) == regexpTag;\n}\n\n/**\n * The base implementation of `_.slice` without an iteratee call guard.\n *\n * @private\n * @param {Array} array The array to slice.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the slice of `array`.\n */\nfunction baseSlice(array, start, end) {\n var index = -1,\n length = array.length;\n\n if (start < 0) {\n start = -start > length ? 0 : (length + start);\n }\n end = end > length ? length : end;\n if (end < 0) {\n end += length;\n }\n length = start > end ? 0 : ((end - start) >>> 0);\n start >>>= 0;\n\n var result = Array(length);\n while (++index < length) {\n result[index] = array[index + start];\n }\n return result;\n}\n\n/**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\nfunction baseToString(value) {\n // Exit early for strings to avoid a performance hit in some environments.\n if (typeof value == 'string') {\n return value;\n }\n if (isSymbol(value)) {\n return symbolToString ? symbolToString.call(value) : '';\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\n/**\n * Casts `array` to a slice if it's needed.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {number} start The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the cast slice.\n */\nfunction castSlice(array, start, end) {\n var length = array.length;\n end = end === undefined ? length : end;\n return (!start && end >= length) ? array : baseSlice(array, start, end);\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return !!value && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is classified as a `RegExp` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a regexp, else `false`.\n * @example\n *\n * _.isRegExp(/abc/);\n * // => true\n *\n * _.isRegExp('/abc/');\n * // => false\n */\nvar isRegExp = nodeIsRegExp ? baseUnary(nodeIsRegExp) : baseIsRegExp;\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && objectToString.call(value) == symbolTag);\n}\n\n/**\n * Converts `value` to a finite number.\n *\n * @static\n * @memberOf _\n * @since 4.12.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted number.\n * @example\n *\n * _.toFinite(3.2);\n * // => 3.2\n *\n * _.toFinite(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toFinite(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toFinite('3.2');\n * // => 3.2\n */\nfunction toFinite(value) {\n if (!value) {\n return value === 0 ? value : 0;\n }\n value = toNumber(value);\n if (value === INFINITY || value === -INFINITY) {\n var sign = (value < 0 ? -1 : 1);\n return sign * MAX_INTEGER;\n }\n return value === value ? value : 0;\n}\n\n/**\n * Converts `value` to an integer.\n *\n * **Note:** This method is loosely based on\n * [`ToInteger`](http://www.ecma-international.org/ecma-262/7.0/#sec-tointeger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toInteger(3.2);\n * // => 3\n *\n * _.toInteger(Number.MIN_VALUE);\n * // => 0\n *\n * _.toInteger(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toInteger('3.2');\n * // => 3\n */\nfunction toInteger(value) {\n var result = toFinite(value),\n remainder = result % 1;\n\n return result === result ? (remainder ? result - remainder : result) : 0;\n}\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = value.replace(reTrim, '');\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n}\n\n/**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\nfunction toString(value) {\n return value == null ? '' : baseToString(value);\n}\n\n/**\n * Truncates `string` if it's longer than the given maximum string length.\n * The last characters of the truncated string are replaced with the omission\n * string which defaults to \"...\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to truncate.\n * @param {Object} [options={}] The options object.\n * @param {number} [options.length=30] The maximum string length.\n * @param {string} [options.omission='...'] The string to indicate text is omitted.\n * @param {RegExp|string} [options.separator] The separator pattern to truncate to.\n * @returns {string} Returns the truncated string.\n * @example\n *\n * _.truncate('hi-diddly-ho there, neighborino');\n * // => 'hi-diddly-ho there, neighbo...'\n *\n * _.truncate('hi-diddly-ho there, neighborino', {\n * 'length': 24,\n * 'separator': ' '\n * });\n * // => 'hi-diddly-ho there,...'\n *\n * _.truncate('hi-diddly-ho there, neighborino', {\n * 'length': 24,\n * 'separator': /,? +/\n * });\n * // => 'hi-diddly-ho there...'\n *\n * _.truncate('hi-diddly-ho there, neighborino', {\n * 'omission': ' [...]'\n * });\n * // => 'hi-diddly-ho there, neig [...]'\n */\nfunction truncate(string, options) {\n var length = DEFAULT_TRUNC_LENGTH,\n omission = DEFAULT_TRUNC_OMISSION;\n\n if (isObject(options)) {\n var separator = 'separator' in options ? options.separator : separator;\n length = 'length' in options ? toInteger(options.length) : length;\n omission = 'omission' in options ? baseToString(options.omission) : omission;\n }\n string = toString(string);\n\n var strLength = string.length;\n if (hasUnicode(string)) {\n var strSymbols = stringToArray(string);\n strLength = strSymbols.length;\n }\n if (length >= strLength) {\n return string;\n }\n var end = length - stringSize(omission);\n if (end < 1) {\n return omission;\n }\n var result = strSymbols\n ? castSlice(strSymbols, 0, end).join('')\n : string.slice(0, end);\n\n if (separator === undefined) {\n return result + omission;\n }\n if (strSymbols) {\n end += (result.length - end);\n }\n if (isRegExp(separator)) {\n if (string.slice(end).search(separator)) {\n var match,\n substring = result;\n\n if (!separator.global) {\n separator = RegExp(separator.source, toString(reFlags.exec(separator)) + 'g');\n }\n separator.lastIndex = 0;\n while ((match = separator.exec(substring))) {\n var newEnd = match.index;\n }\n result = result.slice(0, newEnd === undefined ? end : newEnd);\n }\n } else if (string.indexOf(baseToString(separator), end) != end) {\n var index = result.lastIndexOf(separator);\n if (index > -1) {\n result = result.slice(0, index);\n }\n }\n return result + omission;\n}\n\nmodule.exports = truncate;\n","var wrappy = require('wrappy')\nmodule.exports = wrappy(once)\nmodule.exports.strict = wrappy(onceStrict)\n\nonce.proto = once(function () {\n Object.defineProperty(Function.prototype, 'once', {\n value: function () {\n return once(this)\n },\n configurable: true\n })\n\n Object.defineProperty(Function.prototype, 'onceStrict', {\n value: function () {\n return onceStrict(this)\n },\n configurable: true\n })\n})\n\nfunction once (fn) {\n var f = function () {\n if (f.called) return f.value\n f.called = true\n return f.value = fn.apply(this, arguments)\n }\n f.called = false\n return f\n}\n\nfunction onceStrict (fn) {\n var f = function () {\n if (f.called)\n throw new Error(f.onceError)\n f.called = true\n return f.value = fn.apply(this, arguments)\n }\n var name = fn.name || 'Function wrapped with `once`'\n f.onceError = name + \" shouldn't be called more than once\"\n f.called = false\n return f\n}\n","'use strict';\nconst isFullwidthCodePoint = require('is-fullwidth-code-point');\nconst astralRegex = require('astral-regex');\nconst ansiStyles = require('ansi-styles');\n\nconst ESCAPES = [\n\t'\\u001B',\n\t'\\u009B'\n];\n\nconst wrapAnsi = code => `${ESCAPES[0]}[${code}m`;\n\nconst checkAnsi = (ansiCodes, isEscapes, endAnsiCode) => {\n\tlet output = [];\n\tansiCodes = [...ansiCodes];\n\n\tfor (let ansiCode of ansiCodes) {\n\t\tconst ansiCodeOrigin = ansiCode;\n\t\tif (ansiCode.includes(';')) {\n\t\t\tansiCode = ansiCode.split(';')[0][0] + '0';\n\t\t}\n\n\t\tconst item = ansiStyles.codes.get(Number.parseInt(ansiCode, 10));\n\t\tif (item) {\n\t\t\tconst indexEscape = ansiCodes.indexOf(item.toString());\n\t\t\tif (indexEscape === -1) {\n\t\t\t\toutput.push(wrapAnsi(isEscapes ? item : ansiCodeOrigin));\n\t\t\t} else {\n\t\t\t\tansiCodes.splice(indexEscape, 1);\n\t\t\t}\n\t\t} else if (isEscapes) {\n\t\t\toutput.push(wrapAnsi(0));\n\t\t\tbreak;\n\t\t} else {\n\t\t\toutput.push(wrapAnsi(ansiCodeOrigin));\n\t\t}\n\t}\n\n\tif (isEscapes) {\n\t\toutput = output.filter((element, index) => output.indexOf(element) === index);\n\n\t\tif (endAnsiCode !== undefined) {\n\t\t\tconst fistEscapeCode = wrapAnsi(ansiStyles.codes.get(Number.parseInt(endAnsiCode, 10)));\n\t\t\toutput = output.reduce((current, next) => next === fistEscapeCode ? [next, ...current] : [...current, next], []);\n\t\t}\n\t}\n\n\treturn output.join('');\n};\n\nmodule.exports = (string, begin, end) => {\n\tconst characters = [...string];\n\tconst ansiCodes = [];\n\n\tlet stringEnd = typeof end === 'number' ? end : characters.length;\n\tlet isInsideEscape = false;\n\tlet ansiCode;\n\tlet visible = 0;\n\tlet output = '';\n\n\tfor (const [index, character] of characters.entries()) {\n\t\tlet leftEscape = false;\n\n\t\tif (ESCAPES.includes(character)) {\n\t\t\tconst code = /\\d[^m]*/.exec(string.slice(index, index + 18));\n\t\t\tansiCode = code && code.length > 0 ? code[0] : undefined;\n\n\t\t\tif (visible < stringEnd) {\n\t\t\t\tisInsideEscape = true;\n\n\t\t\t\tif (ansiCode !== undefined) {\n\t\t\t\t\tansiCodes.push(ansiCode);\n\t\t\t\t}\n\t\t\t}\n\t\t} else if (isInsideEscape && character === 'm') {\n\t\t\tisInsideEscape = false;\n\t\t\tleftEscape = true;\n\t\t}\n\n\t\tif (!isInsideEscape && !leftEscape) {\n\t\t\tvisible++;\n\t\t}\n\n\t\tif (!astralRegex({exact: true}).test(character) && isFullwidthCodePoint(character.codePointAt())) {\n\t\t\tvisible++;\n\n\t\t\tif (typeof end !== 'number') {\n\t\t\t\tstringEnd++;\n\t\t\t}\n\t\t}\n\n\t\tif (visible > begin && visible <= stringEnd) {\n\t\t\toutput += character;\n\t\t} else if (visible === begin && !isInsideEscape && ansiCode !== undefined) {\n\t\t\toutput = checkAnsi(ansiCodes);\n\t\t} else if (visible >= stringEnd) {\n\t\t\toutput += checkAnsi(ansiCodes, true, ansiCode);\n\t\t\tbreak;\n\t\t}\n\t}\n\n\treturn output;\n};\n","'use strict';\nconst stripAnsi = require('strip-ansi');\nconst isFullwidthCodePoint = require('is-fullwidth-code-point');\nconst emojiRegex = require('emoji-regex');\n\nconst stringWidth = string => {\n\tif (typeof string !== 'string' || string.length === 0) {\n\t\treturn 0;\n\t}\n\n\tstring = stripAnsi(string);\n\n\tif (string.length === 0) {\n\t\treturn 0;\n\t}\n\n\tstring = string.replace(emojiRegex(), ' ');\n\n\tlet width = 0;\n\n\tfor (let i = 0; i < string.length; i++) {\n\t\tconst code = string.codePointAt(i);\n\n\t\t// Ignore control characters\n\t\tif (code <= 0x1F || (code >= 0x7F && code <= 0x9F)) {\n\t\t\tcontinue;\n\t\t}\n\n\t\t// Ignore combining characters\n\t\tif (code >= 0x300 && code <= 0x36F) {\n\t\t\tcontinue;\n\t\t}\n\n\t\t// Surrogates\n\t\tif (code > 0xFFFF) {\n\t\t\ti++;\n\t\t}\n\n\t\twidth += isFullwidthCodePoint(code) ? 2 : 1;\n\t}\n\n\treturn width;\n};\n\nmodule.exports = stringWidth;\n// TODO: remove this in the next major version\nmodule.exports.default = stringWidth;\n","'use strict';\nconst ansiRegex = require('ansi-regex');\n\nmodule.exports = string => typeof string === 'string' ? string.replace(ansiRegex(), '') : string;\n","const hexRegex = /^[-+]?0x[a-fA-F0-9]+$/;\nconst numRegex = /^([\\-\\+])?(0*)(\\.[0-9]+([eE]\\-?[0-9]+)?|[0-9]+(\\.[0-9]+([eE]\\-?[0-9]+)?)?)$/;\n// const octRegex = /0x[a-z0-9]+/;\n// const binRegex = /0x[a-z0-9]+/;\n\n\n//polyfill\nif (!Number.parseInt && window.parseInt) {\n Number.parseInt = window.parseInt;\n}\nif (!Number.parseFloat && window.parseFloat) {\n Number.parseFloat = window.parseFloat;\n}\n\n \nconst consider = {\n hex : true,\n leadingZeros: true,\n decimalPoint: \"\\.\",\n eNotation: true\n //skipLike: /regex/\n};\n\nfunction toNumber(str, options = {}){\n // const options = Object.assign({}, consider);\n // if(opt.leadingZeros === false){\n // options.leadingZeros = false;\n // }else if(opt.hex === false){\n // options.hex = false;\n // }\n\n options = Object.assign({}, consider, options );\n if(!str || typeof str !== \"string\" ) return str;\n \n let trimmedStr = str.trim();\n // if(trimmedStr === \"0.0\") return 0;\n // else if(trimmedStr === \"+0.0\") return 0;\n // else if(trimmedStr === \"-0.0\") return -0;\n\n if(options.skipLike !== undefined && options.skipLike.test(trimmedStr)) return str;\n else if (options.hex && hexRegex.test(trimmedStr)) {\n return Number.parseInt(trimmedStr, 16);\n // } else if (options.parseOct && octRegex.test(str)) {\n // return Number.parseInt(val, 8);\n // }else if (options.parseBin && binRegex.test(str)) {\n // return Number.parseInt(val, 2);\n }else{\n //separate negative sign, leading zeros, and rest number\n const match = numRegex.exec(trimmedStr);\n if(match){\n const sign = match[1];\n const leadingZeros = match[2];\n let numTrimmedByZeros = trimZeros(match[3]); //complete num without leading zeros\n //trim ending zeros for floating number\n \n const eNotation = match[4] || match[6];\n if(!options.leadingZeros && leadingZeros.length > 0 && sign && trimmedStr[2] !== \".\") return str; //-0123\n else if(!options.leadingZeros && leadingZeros.length > 0 && !sign && trimmedStr[1] !== \".\") return str; //0123\n else{//no leading zeros or leading zeros are allowed\n const num = Number(trimmedStr);\n const numStr = \"\" + num;\n if(numStr.search(/[eE]/) !== -1){ //given number is long and parsed to eNotation\n if(options.eNotation) return num;\n else return str;\n }else if(eNotation){ //given number has enotation\n if(options.eNotation) return num;\n else return str;\n }else if(trimmedStr.indexOf(\".\") !== -1){ //floating number\n // const decimalPart = match[5].substr(1);\n // const intPart = trimmedStr.substr(0,trimmedStr.indexOf(\".\"));\n\n \n // const p = numStr.indexOf(\".\");\n // const givenIntPart = numStr.substr(0,p);\n // const givenDecPart = numStr.substr(p+1);\n if(numStr === \"0\" && (numTrimmedByZeros === \"\") ) return num; //0.0\n else if(numStr === numTrimmedByZeros) return num; //0.456. 0.79000\n else if( sign && numStr === \"-\"+numTrimmedByZeros) return num;\n else return str;\n }\n \n if(leadingZeros){\n // if(numTrimmedByZeros === numStr){\n // if(options.leadingZeros) return num;\n // else return str;\n // }else return str;\n if(numTrimmedByZeros === numStr) return num;\n else if(sign+numTrimmedByZeros === numStr) return num;\n else return str;\n }\n\n if(trimmedStr === numStr) return num;\n else if(trimmedStr === sign+numStr) return num;\n // else{\n // //number with +/- sign\n // trimmedStr.test(/[-+][0-9]);\n\n // }\n return str;\n }\n // else if(!eNotation && trimmedStr && trimmedStr !== Number(trimmedStr) ) return str;\n \n }else{ //non-numeric string\n return str;\n }\n }\n}\n\n/**\n * \n * @param {string} numStr without leading zeros\n * @returns \n */\nfunction trimZeros(numStr){\n if(numStr && numStr.indexOf(\".\") !== -1){//float\n numStr = numStr.replace(/0+$/, \"\"); //remove ending zeros\n if(numStr === \".\") numStr = \"0\";\n else if(numStr[0] === \".\") numStr = \"0\"+numStr;\n else if(numStr[numStr.length-1] === \".\") numStr = numStr.substr(0,numStr.length-1);\n return numStr;\n }\n return numStr;\n}\nmodule.exports = toNumber\n","'use strict';\nconst os = require('os');\nconst tty = require('tty');\nconst hasFlag = require('has-flag');\n\nconst {env} = process;\n\nlet forceColor;\nif (hasFlag('no-color') ||\n\thasFlag('no-colors') ||\n\thasFlag('color=false') ||\n\thasFlag('color=never')) {\n\tforceColor = 0;\n} else if (hasFlag('color') ||\n\thasFlag('colors') ||\n\thasFlag('color=true') ||\n\thasFlag('color=always')) {\n\tforceColor = 1;\n}\n\nif ('FORCE_COLOR' in env) {\n\tif (env.FORCE_COLOR === 'true') {\n\t\tforceColor = 1;\n\t} else if (env.FORCE_COLOR === 'false') {\n\t\tforceColor = 0;\n\t} else {\n\t\tforceColor = env.FORCE_COLOR.length === 0 ? 1 : Math.min(parseInt(env.FORCE_COLOR, 10), 3);\n\t}\n}\n\nfunction translateLevel(level) {\n\tif (level === 0) {\n\t\treturn false;\n\t}\n\n\treturn {\n\t\tlevel,\n\t\thasBasic: true,\n\t\thas256: level >= 2,\n\t\thas16m: level >= 3\n\t};\n}\n\nfunction supportsColor(haveStream, streamIsTTY) {\n\tif (forceColor === 0) {\n\t\treturn 0;\n\t}\n\n\tif (hasFlag('color=16m') ||\n\t\thasFlag('color=full') ||\n\t\thasFlag('color=truecolor')) {\n\t\treturn 3;\n\t}\n\n\tif (hasFlag('color=256')) {\n\t\treturn 2;\n\t}\n\n\tif (haveStream && !streamIsTTY && forceColor === undefined) {\n\t\treturn 0;\n\t}\n\n\tconst min = forceColor || 0;\n\n\tif (env.TERM === 'dumb') {\n\t\treturn min;\n\t}\n\n\tif (process.platform === 'win32') {\n\t\t// Windows 10 build 10586 is the first Windows release that supports 256 colors.\n\t\t// Windows 10 build 14931 is the first release that supports 16m/TrueColor.\n\t\tconst osRelease = os.release().split('.');\n\t\tif (\n\t\t\tNumber(osRelease[0]) >= 10 &&\n\t\t\tNumber(osRelease[2]) >= 10586\n\t\t) {\n\t\t\treturn Number(osRelease[2]) >= 14931 ? 3 : 2;\n\t\t}\n\n\t\treturn 1;\n\t}\n\n\tif ('CI' in env) {\n\t\tif (['TRAVIS', 'CIRCLECI', 'APPVEYOR', 'GITLAB_CI', 'GITHUB_ACTIONS', 'BUILDKITE'].some(sign => sign in env) || env.CI_NAME === 'codeship') {\n\t\t\treturn 1;\n\t\t}\n\n\t\treturn min;\n\t}\n\n\tif ('TEAMCITY_VERSION' in env) {\n\t\treturn /^(9\\.(0*[1-9]\\d*)\\.|\\d{2,}\\.)/.test(env.TEAMCITY_VERSION) ? 1 : 0;\n\t}\n\n\tif (env.COLORTERM === 'truecolor') {\n\t\treturn 3;\n\t}\n\n\tif ('TERM_PROGRAM' in env) {\n\t\tconst version = parseInt((env.TERM_PROGRAM_VERSION || '').split('.')[0], 10);\n\n\t\tswitch (env.TERM_PROGRAM) {\n\t\t\tcase 'iTerm.app':\n\t\t\t\treturn version >= 3 ? 3 : 2;\n\t\t\tcase 'Apple_Terminal':\n\t\t\t\treturn 2;\n\t\t\t// No default\n\t\t}\n\t}\n\n\tif (/-256(color)?$/i.test(env.TERM)) {\n\t\treturn 2;\n\t}\n\n\tif (/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(env.TERM)) {\n\t\treturn 1;\n\t}\n\n\tif ('COLORTERM' in env) {\n\t\treturn 1;\n\t}\n\n\treturn min;\n}\n\nfunction getSupportLevel(stream) {\n\tconst level = supportsColor(stream, stream && stream.isTTY);\n\treturn translateLevel(level);\n}\n\nmodule.exports = {\n\tsupportsColor: getSupportLevel,\n\tstdout: translateLevel(supportsColor(true, tty.isatty(1))),\n\tstderr: translateLevel(supportsColor(true, tty.isatty(2)))\n};\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.alignVerticalRangeContent = exports.wrapRangeContent = void 0;\nconst string_width_1 = __importDefault(require(\"string-width\"));\nconst alignString_1 = require(\"./alignString\");\nconst mapDataUsingRowHeights_1 = require(\"./mapDataUsingRowHeights\");\nconst padTableData_1 = require(\"./padTableData\");\nconst truncateTableData_1 = require(\"./truncateTableData\");\nconst utils_1 = require(\"./utils\");\nconst wrapCell_1 = require(\"./wrapCell\");\n/**\n * Fill content into all cells in range in order to calculate total height\n */\nconst wrapRangeContent = (rangeConfig, rangeWidth, context) => {\n const { topLeft, paddingRight, paddingLeft, truncate, wrapWord, alignment } = rangeConfig;\n const originalContent = context.rows[topLeft.row][topLeft.col];\n const contentWidth = rangeWidth - paddingLeft - paddingRight;\n return (0, wrapCell_1.wrapCell)((0, truncateTableData_1.truncateString)(originalContent, truncate), contentWidth, wrapWord).map((line) => {\n const alignedLine = (0, alignString_1.alignString)(line, contentWidth, alignment);\n return (0, padTableData_1.padString)(alignedLine, paddingLeft, paddingRight);\n });\n};\nexports.wrapRangeContent = wrapRangeContent;\nconst alignVerticalRangeContent = (range, content, context) => {\n const { rows, drawHorizontalLine, rowHeights } = context;\n const { topLeft, bottomRight, verticalAlignment } = range;\n // They are empty before calculateRowHeights function run\n if (rowHeights.length === 0) {\n return [];\n }\n const totalCellHeight = (0, utils_1.sumArray)(rowHeights.slice(topLeft.row, bottomRight.row + 1));\n const totalBorderHeight = bottomRight.row - topLeft.row;\n const hiddenHorizontalBorderCount = (0, utils_1.sequence)(topLeft.row + 1, bottomRight.row).filter((horizontalBorderIndex) => {\n return !drawHorizontalLine(horizontalBorderIndex, rows.length);\n }).length;\n const availableRangeHeight = totalCellHeight + totalBorderHeight - hiddenHorizontalBorderCount;\n return (0, mapDataUsingRowHeights_1.padCellVertically)(content, availableRangeHeight, verticalAlignment).map((line) => {\n if (line.length === 0) {\n return ' '.repeat((0, string_width_1.default)(content[0]));\n }\n return line;\n });\n};\nexports.alignVerticalRangeContent = alignVerticalRangeContent;\n//# sourceMappingURL=alignSpanningCell.js.map","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.alignString = void 0;\nconst string_width_1 = __importDefault(require(\"string-width\"));\nconst utils_1 = require(\"./utils\");\nconst alignLeft = (subject, width) => {\n return subject + ' '.repeat(width);\n};\nconst alignRight = (subject, width) => {\n return ' '.repeat(width) + subject;\n};\nconst alignCenter = (subject, width) => {\n return ' '.repeat(Math.floor(width / 2)) + subject + ' '.repeat(Math.ceil(width / 2));\n};\nconst alignJustify = (subject, width) => {\n const spaceSequenceCount = (0, utils_1.countSpaceSequence)(subject);\n if (spaceSequenceCount === 0) {\n return alignLeft(subject, width);\n }\n const addingSpaces = (0, utils_1.distributeUnevenly)(width, spaceSequenceCount);\n if (Math.max(...addingSpaces) > 3) {\n return alignLeft(subject, width);\n }\n let spaceSequenceIndex = 0;\n return subject.replace(/\\s+/g, (groupSpace) => {\n return groupSpace + ' '.repeat(addingSpaces[spaceSequenceIndex++]);\n });\n};\n/**\n * Pads a string to the left and/or right to position the subject\n * text in a desired alignment within a container.\n */\nconst alignString = (subject, containerWidth, alignment) => {\n const subjectWidth = (0, string_width_1.default)(subject);\n if (subjectWidth === containerWidth) {\n return subject;\n }\n if (subjectWidth > containerWidth) {\n throw new Error('Subject parameter value width cannot be greater than the container width.');\n }\n if (subjectWidth === 0) {\n return ' '.repeat(containerWidth);\n }\n const availableWidth = containerWidth - subjectWidth;\n if (alignment === 'left') {\n return alignLeft(subject, availableWidth);\n }\n if (alignment === 'right') {\n return alignRight(subject, availableWidth);\n }\n if (alignment === 'justify') {\n return alignJustify(subject, availableWidth);\n }\n return alignCenter(subject, availableWidth);\n};\nexports.alignString = alignString;\n//# sourceMappingURL=alignString.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.alignTableData = void 0;\nconst alignString_1 = require(\"./alignString\");\nconst alignTableData = (rows, config) => {\n return rows.map((row, rowIndex) => {\n return row.map((cell, cellIndex) => {\n var _a;\n const { width, alignment } = config.columns[cellIndex];\n const containingRange = (_a = config.spanningCellManager) === null || _a === void 0 ? void 0 : _a.getContainingRange({ col: cellIndex,\n row: rowIndex }, { mapped: true });\n if (containingRange) {\n return cell;\n }\n return (0, alignString_1.alignString)(cell, width, alignment);\n });\n });\n};\nexports.alignTableData = alignTableData;\n//# sourceMappingURL=alignTableData.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.calculateCellHeight = void 0;\nconst wrapCell_1 = require(\"./wrapCell\");\n/**\n * Calculates height of cell content in regard to its width and word wrapping.\n */\nconst calculateCellHeight = (value, columnWidth, useWrapWord = false) => {\n return (0, wrapCell_1.wrapCell)(value, columnWidth, useWrapWord).length;\n};\nexports.calculateCellHeight = calculateCellHeight;\n//# sourceMappingURL=calculateCellHeight.js.map","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.calculateMaximumColumnWidths = exports.calculateMaximumCellWidth = void 0;\nconst string_width_1 = __importDefault(require(\"string-width\"));\nconst utils_1 = require(\"./utils\");\nconst calculateMaximumCellWidth = (cell) => {\n return Math.max(...cell.split('\\n').map(string_width_1.default));\n};\nexports.calculateMaximumCellWidth = calculateMaximumCellWidth;\n/**\n * Produces an array of values that describe the largest value length (width) in every column.\n */\nconst calculateMaximumColumnWidths = (rows, spanningCellConfigs = []) => {\n const columnWidths = new Array(rows[0].length).fill(0);\n const rangeCoordinates = spanningCellConfigs.map(utils_1.calculateRangeCoordinate);\n const isSpanningCell = (rowIndex, columnIndex) => {\n return rangeCoordinates.some((rangeCoordinate) => {\n return (0, utils_1.isCellInRange)({ col: columnIndex,\n row: rowIndex }, rangeCoordinate);\n });\n };\n rows.forEach((row, rowIndex) => {\n row.forEach((cell, cellIndex) => {\n if (isSpanningCell(rowIndex, cellIndex)) {\n return;\n }\n columnWidths[cellIndex] = Math.max(columnWidths[cellIndex], (0, exports.calculateMaximumCellWidth)(cell));\n });\n });\n return columnWidths;\n};\nexports.calculateMaximumColumnWidths = calculateMaximumColumnWidths;\n//# sourceMappingURL=calculateMaximumColumnWidths.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.calculateOutputColumnWidths = void 0;\nconst calculateOutputColumnWidths = (config) => {\n return config.columns.map((col) => {\n return col.paddingLeft + col.width + col.paddingRight;\n });\n};\nexports.calculateOutputColumnWidths = calculateOutputColumnWidths;\n//# sourceMappingURL=calculateOutputColumnWidths.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.calculateRowHeights = void 0;\nconst calculateCellHeight_1 = require(\"./calculateCellHeight\");\nconst utils_1 = require(\"./utils\");\n/**\n * Produces an array of values that describe the largest value length (height) in every row.\n */\nconst calculateRowHeights = (rows, config) => {\n const rowHeights = [];\n for (const [rowIndex, row] of rows.entries()) {\n let rowHeight = 1;\n row.forEach((cell, cellIndex) => {\n var _a;\n const containingRange = (_a = config.spanningCellManager) === null || _a === void 0 ? void 0 : _a.getContainingRange({ col: cellIndex,\n row: rowIndex });\n if (!containingRange) {\n const cellHeight = (0, calculateCellHeight_1.calculateCellHeight)(cell, config.columns[cellIndex].width, config.columns[cellIndex].wrapWord);\n rowHeight = Math.max(rowHeight, cellHeight);\n return;\n }\n const { topLeft, bottomRight, height } = containingRange;\n // bottom-most cell of a range needs to contain all remain lines of spanning cells\n if (rowIndex === bottomRight.row) {\n const totalOccupiedSpanningCellHeight = (0, utils_1.sumArray)(rowHeights.slice(topLeft.row));\n const totalHorizontalBorderHeight = bottomRight.row - topLeft.row;\n const totalHiddenHorizontalBorderHeight = (0, utils_1.sequence)(topLeft.row + 1, bottomRight.row).filter((horizontalBorderIndex) => {\n var _a;\n /* istanbul ignore next */\n return !((_a = config.drawHorizontalLine) === null || _a === void 0 ? void 0 : _a.call(config, horizontalBorderIndex, rows.length));\n }).length;\n const cellHeight = height - totalOccupiedSpanningCellHeight - totalHorizontalBorderHeight + totalHiddenHorizontalBorderHeight;\n rowHeight = Math.max(rowHeight, cellHeight);\n }\n // otherwise, just depend on other sibling cell heights in the row\n });\n rowHeights.push(rowHeight);\n }\n return rowHeights;\n};\nexports.calculateRowHeights = calculateRowHeights;\n//# sourceMappingURL=calculateRowHeights.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.calculateSpanningCellWidth = void 0;\nconst utils_1 = require(\"./utils\");\nconst calculateSpanningCellWidth = (rangeConfig, dependencies) => {\n const { columnsConfig, drawVerticalLine } = dependencies;\n const { topLeft, bottomRight } = rangeConfig;\n const totalWidth = (0, utils_1.sumArray)(columnsConfig.slice(topLeft.col, bottomRight.col + 1).map(({ width }) => {\n return width;\n }));\n const totalPadding = topLeft.col === bottomRight.col ?\n columnsConfig[topLeft.col].paddingRight +\n columnsConfig[bottomRight.col].paddingLeft :\n (0, utils_1.sumArray)(columnsConfig\n .slice(topLeft.col, bottomRight.col + 1)\n .map(({ paddingLeft, paddingRight }) => {\n return paddingLeft + paddingRight;\n }));\n const totalBorderWidths = bottomRight.col - topLeft.col;\n const totalHiddenVerticalBorders = (0, utils_1.sequence)(topLeft.col + 1, bottomRight.col).filter((verticalBorderIndex) => {\n return !drawVerticalLine(verticalBorderIndex, columnsConfig.length);\n }).length;\n return totalWidth + totalPadding + totalBorderWidths - totalHiddenVerticalBorders;\n};\nexports.calculateSpanningCellWidth = calculateSpanningCellWidth;\n//# sourceMappingURL=calculateSpanningCellWidth.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.createStream = void 0;\nconst alignTableData_1 = require(\"./alignTableData\");\nconst calculateRowHeights_1 = require(\"./calculateRowHeights\");\nconst drawBorder_1 = require(\"./drawBorder\");\nconst drawRow_1 = require(\"./drawRow\");\nconst makeStreamConfig_1 = require(\"./makeStreamConfig\");\nconst mapDataUsingRowHeights_1 = require(\"./mapDataUsingRowHeights\");\nconst padTableData_1 = require(\"./padTableData\");\nconst stringifyTableData_1 = require(\"./stringifyTableData\");\nconst truncateTableData_1 = require(\"./truncateTableData\");\nconst utils_1 = require(\"./utils\");\nconst prepareData = (data, config) => {\n let rows = (0, stringifyTableData_1.stringifyTableData)(data);\n rows = (0, truncateTableData_1.truncateTableData)(rows, (0, utils_1.extractTruncates)(config));\n const rowHeights = (0, calculateRowHeights_1.calculateRowHeights)(rows, config);\n rows = (0, mapDataUsingRowHeights_1.mapDataUsingRowHeights)(rows, rowHeights, config);\n rows = (0, alignTableData_1.alignTableData)(rows, config);\n rows = (0, padTableData_1.padTableData)(rows, config);\n return rows;\n};\nconst create = (row, columnWidths, config) => {\n const rows = prepareData([row], config);\n const body = rows.map((literalRow) => {\n return (0, drawRow_1.drawRow)(literalRow, config);\n }).join('');\n let output;\n output = '';\n output += (0, drawBorder_1.drawBorderTop)(columnWidths, config);\n output += body;\n output += (0, drawBorder_1.drawBorderBottom)(columnWidths, config);\n output = output.trimEnd();\n process.stdout.write(output);\n};\nconst append = (row, columnWidths, config) => {\n const rows = prepareData([row], config);\n const body = rows.map((literalRow) => {\n return (0, drawRow_1.drawRow)(literalRow, config);\n }).join('');\n let output = '';\n const bottom = (0, drawBorder_1.drawBorderBottom)(columnWidths, config);\n if (bottom !== '\\n') {\n output = '\\r\\u001B[K';\n }\n output += (0, drawBorder_1.drawBorderJoin)(columnWidths, config);\n output += body;\n output += bottom;\n output = output.trimEnd();\n process.stdout.write(output);\n};\nconst createStream = (userConfig) => {\n const config = (0, makeStreamConfig_1.makeStreamConfig)(userConfig);\n const columnWidths = Object.values(config.columns).map((column) => {\n return column.width + column.paddingLeft + column.paddingRight;\n });\n let empty = true;\n return {\n write: (row) => {\n if (row.length !== config.columnCount) {\n throw new Error('Row cell count does not match the config.columnCount.');\n }\n if (empty) {\n empty = false;\n create(row, columnWidths, config);\n }\n else {\n append(row, columnWidths, config);\n }\n },\n };\n};\nexports.createStream = createStream;\n//# sourceMappingURL=createStream.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.createTableBorderGetter = exports.drawBorderBottom = exports.drawBorderJoin = exports.drawBorderTop = exports.drawBorder = exports.createSeparatorGetter = exports.drawBorderSegments = void 0;\nconst drawContent_1 = require(\"./drawContent\");\nconst drawBorderSegments = (columnWidths, parameters) => {\n const { separator, horizontalBorderIndex, spanningCellManager } = parameters;\n return columnWidths.map((columnWidth, columnIndex) => {\n const normalSegment = separator.body.repeat(columnWidth);\n if (horizontalBorderIndex === undefined) {\n return normalSegment;\n }\n /* istanbul ignore next */\n const range = spanningCellManager === null || spanningCellManager === void 0 ? void 0 : spanningCellManager.getContainingRange({ col: columnIndex,\n row: horizontalBorderIndex });\n if (!range) {\n return normalSegment;\n }\n const { topLeft } = range;\n // draw border segments as usual for top border of spanning cell\n if (horizontalBorderIndex === topLeft.row) {\n return normalSegment;\n }\n // if for first column/row of spanning cell, just skip\n if (columnIndex !== topLeft.col) {\n return '';\n }\n return range.extractBorderContent(horizontalBorderIndex);\n });\n};\nexports.drawBorderSegments = drawBorderSegments;\nconst createSeparatorGetter = (dependencies) => {\n const { separator, spanningCellManager, horizontalBorderIndex, rowCount } = dependencies;\n // eslint-disable-next-line complexity\n return (verticalBorderIndex, columnCount) => {\n const inSameRange = spanningCellManager === null || spanningCellManager === void 0 ? void 0 : spanningCellManager.inSameRange;\n if (horizontalBorderIndex !== undefined && inSameRange) {\n const topCell = { col: verticalBorderIndex,\n row: horizontalBorderIndex - 1 };\n const leftCell = { col: verticalBorderIndex - 1,\n row: horizontalBorderIndex };\n const oppositeCell = { col: verticalBorderIndex - 1,\n row: horizontalBorderIndex - 1 };\n const currentCell = { col: verticalBorderIndex,\n row: horizontalBorderIndex };\n const pairs = [\n [oppositeCell, topCell],\n [topCell, currentCell],\n [currentCell, leftCell],\n [leftCell, oppositeCell],\n ];\n // left side of horizontal border\n if (verticalBorderIndex === 0) {\n if (inSameRange(currentCell, topCell) && separator.bodyJoinOuter) {\n return separator.bodyJoinOuter;\n }\n return separator.left;\n }\n // right side of horizontal border\n if (verticalBorderIndex === columnCount) {\n if (inSameRange(oppositeCell, leftCell) && separator.bodyJoinOuter) {\n return separator.bodyJoinOuter;\n }\n return separator.right;\n }\n // top horizontal border\n if (horizontalBorderIndex === 0) {\n if (inSameRange(currentCell, leftCell)) {\n return separator.body;\n }\n return separator.join;\n }\n // bottom horizontal border\n if (horizontalBorderIndex === rowCount) {\n if (inSameRange(topCell, oppositeCell)) {\n return separator.body;\n }\n return separator.join;\n }\n const sameRangeCount = pairs.map((pair) => {\n return inSameRange(...pair);\n }).filter(Boolean).length;\n // four cells are belongs to different spanning cells\n if (sameRangeCount === 0) {\n return separator.join;\n }\n // belong to one spanning cell\n if (sameRangeCount === 4) {\n return '';\n }\n // belongs to two spanning cell\n if (sameRangeCount === 2) {\n if (inSameRange(...pairs[1]) && inSameRange(...pairs[3]) && separator.bodyJoinInner) {\n return separator.bodyJoinInner;\n }\n return separator.body;\n }\n /* istanbul ignore next */\n if (sameRangeCount === 1) {\n if (!separator.joinRight || !separator.joinLeft || !separator.joinUp || !separator.joinDown) {\n throw new Error(`Can not get border separator for position [${horizontalBorderIndex}, ${verticalBorderIndex}]`);\n }\n if (inSameRange(...pairs[0])) {\n return separator.joinDown;\n }\n if (inSameRange(...pairs[1])) {\n return separator.joinLeft;\n }\n if (inSameRange(...pairs[2])) {\n return separator.joinUp;\n }\n return separator.joinRight;\n }\n /* istanbul ignore next */\n throw new Error('Invalid case');\n }\n if (verticalBorderIndex === 0) {\n return separator.left;\n }\n if (verticalBorderIndex === columnCount) {\n return separator.right;\n }\n return separator.join;\n };\n};\nexports.createSeparatorGetter = createSeparatorGetter;\nconst drawBorder = (columnWidths, parameters) => {\n const borderSegments = (0, exports.drawBorderSegments)(columnWidths, parameters);\n const { drawVerticalLine, horizontalBorderIndex, spanningCellManager } = parameters;\n return (0, drawContent_1.drawContent)({\n contents: borderSegments,\n drawSeparator: drawVerticalLine,\n elementType: 'border',\n rowIndex: horizontalBorderIndex,\n separatorGetter: (0, exports.createSeparatorGetter)(parameters),\n spanningCellManager,\n }) + '\\n';\n};\nexports.drawBorder = drawBorder;\nconst drawBorderTop = (columnWidths, parameters) => {\n const { border } = parameters;\n const result = (0, exports.drawBorder)(columnWidths, {\n ...parameters,\n separator: {\n body: border.topBody,\n join: border.topJoin,\n left: border.topLeft,\n right: border.topRight,\n },\n });\n if (result === '\\n') {\n return '';\n }\n return result;\n};\nexports.drawBorderTop = drawBorderTop;\nconst drawBorderJoin = (columnWidths, parameters) => {\n const { border } = parameters;\n return (0, exports.drawBorder)(columnWidths, {\n ...parameters,\n separator: {\n body: border.joinBody,\n bodyJoinInner: border.bodyJoin,\n bodyJoinOuter: border.bodyLeft,\n join: border.joinJoin,\n joinDown: border.joinMiddleDown,\n joinLeft: border.joinMiddleLeft,\n joinRight: border.joinMiddleRight,\n joinUp: border.joinMiddleUp,\n left: border.joinLeft,\n right: border.joinRight,\n },\n });\n};\nexports.drawBorderJoin = drawBorderJoin;\nconst drawBorderBottom = (columnWidths, parameters) => {\n const { border } = parameters;\n return (0, exports.drawBorder)(columnWidths, {\n ...parameters,\n separator: {\n body: border.bottomBody,\n join: border.bottomJoin,\n left: border.bottomLeft,\n right: border.bottomRight,\n },\n });\n};\nexports.drawBorderBottom = drawBorderBottom;\nconst createTableBorderGetter = (columnWidths, parameters) => {\n return (index, size) => {\n const drawBorderParameters = { ...parameters,\n horizontalBorderIndex: index };\n if (index === 0) {\n return (0, exports.drawBorderTop)(columnWidths, drawBorderParameters);\n }\n else if (index === size) {\n return (0, exports.drawBorderBottom)(columnWidths, drawBorderParameters);\n }\n return (0, exports.drawBorderJoin)(columnWidths, drawBorderParameters);\n };\n};\nexports.createTableBorderGetter = createTableBorderGetter;\n//# sourceMappingURL=drawBorder.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.drawContent = void 0;\nconst drawContent = (parameters) => {\n const { contents, separatorGetter, drawSeparator, spanningCellManager, rowIndex, elementType } = parameters;\n const contentSize = contents.length;\n const result = [];\n if (drawSeparator(0, contentSize)) {\n result.push(separatorGetter(0, contentSize));\n }\n contents.forEach((content, contentIndex) => {\n if (!elementType || elementType === 'border' || elementType === 'row') {\n result.push(content);\n }\n if (elementType === 'cell' && rowIndex === undefined) {\n result.push(content);\n }\n if (elementType === 'cell' && rowIndex !== undefined) {\n /* istanbul ignore next */\n const containingRange = spanningCellManager === null || spanningCellManager === void 0 ? void 0 : spanningCellManager.getContainingRange({ col: contentIndex,\n row: rowIndex });\n // when drawing content row, just add a cell when it is a normal cell\n // or belongs to first column of spanning cell\n if (!containingRange || contentIndex === containingRange.topLeft.col) {\n result.push(content);\n }\n }\n // Only append the middle separator if the content is not the last\n if (contentIndex + 1 < contentSize && drawSeparator(contentIndex + 1, contentSize)) {\n const separator = separatorGetter(contentIndex + 1, contentSize);\n if (elementType === 'cell' && rowIndex !== undefined) {\n const currentCell = { col: contentIndex + 1,\n row: rowIndex };\n /* istanbul ignore next */\n const containingRange = spanningCellManager === null || spanningCellManager === void 0 ? void 0 : spanningCellManager.getContainingRange(currentCell);\n if (!containingRange || containingRange.topLeft.col === currentCell.col) {\n result.push(separator);\n }\n }\n else {\n result.push(separator);\n }\n }\n });\n if (drawSeparator(contentSize, contentSize)) {\n result.push(separatorGetter(contentSize, contentSize));\n }\n return result.join('');\n};\nexports.drawContent = drawContent;\n//# sourceMappingURL=drawContent.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.drawRow = void 0;\nconst drawContent_1 = require(\"./drawContent\");\nconst drawRow = (row, config) => {\n const { border, drawVerticalLine, rowIndex, spanningCellManager } = config;\n return (0, drawContent_1.drawContent)({\n contents: row,\n drawSeparator: drawVerticalLine,\n elementType: 'cell',\n rowIndex,\n separatorGetter: (index, columnCount) => {\n if (index === 0) {\n return border.bodyLeft;\n }\n if (index === columnCount) {\n return border.bodyRight;\n }\n return border.bodyJoin;\n },\n spanningCellManager,\n }) + '\\n';\n};\nexports.drawRow = drawRow;\n//# sourceMappingURL=drawRow.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.drawTable = void 0;\nconst drawBorder_1 = require(\"./drawBorder\");\nconst drawContent_1 = require(\"./drawContent\");\nconst drawRow_1 = require(\"./drawRow\");\nconst utils_1 = require(\"./utils\");\nconst drawTable = (rows, outputColumnWidths, rowHeights, config) => {\n const { drawHorizontalLine, singleLine, } = config;\n const contents = (0, utils_1.groupBySizes)(rows, rowHeights).map((group, groupIndex) => {\n return group.map((row) => {\n return (0, drawRow_1.drawRow)(row, { ...config,\n rowIndex: groupIndex });\n }).join('');\n });\n return (0, drawContent_1.drawContent)({ contents,\n drawSeparator: (index, size) => {\n // Top/bottom border\n if (index === 0 || index === size) {\n return drawHorizontalLine(index, size);\n }\n return !singleLine && drawHorizontalLine(index, size);\n },\n elementType: 'row',\n rowIndex: -1,\n separatorGetter: (0, drawBorder_1.createTableBorderGetter)(outputColumnWidths, { ...config,\n rowCount: contents.length }),\n spanningCellManager: config.spanningCellManager });\n};\nexports.drawTable = drawTable;\n//# sourceMappingURL=drawTable.js.map","\"use strict\";\nexports[\"config.json\"] = validate43;\nconst schema13 = {\n \"$id\": \"config.json\",\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"type\": \"object\",\n \"properties\": {\n \"border\": {\n \"$ref\": \"shared.json#/definitions/borders\"\n },\n \"header\": {\n \"type\": \"object\",\n \"properties\": {\n \"content\": {\n \"type\": \"string\"\n },\n \"alignment\": {\n \"$ref\": \"shared.json#/definitions/alignment\"\n },\n \"wrapWord\": {\n \"type\": \"boolean\"\n },\n \"truncate\": {\n \"type\": \"integer\"\n },\n \"paddingLeft\": {\n \"type\": \"integer\"\n },\n \"paddingRight\": {\n \"type\": \"integer\"\n }\n },\n \"required\": [\"content\"],\n \"additionalProperties\": false\n },\n \"columns\": {\n \"$ref\": \"shared.json#/definitions/columns\"\n },\n \"columnDefault\": {\n \"$ref\": \"shared.json#/definitions/column\"\n },\n \"drawVerticalLine\": {\n \"typeof\": \"function\"\n },\n \"drawHorizontalLine\": {\n \"typeof\": \"function\"\n },\n \"singleLine\": {\n \"typeof\": \"boolean\"\n },\n \"spanningCells\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"col\": {\n \"type\": \"integer\",\n \"minimum\": 0\n },\n \"row\": {\n \"type\": \"integer\",\n \"minimum\": 0\n },\n \"colSpan\": {\n \"type\": \"integer\",\n \"minimum\": 1\n },\n \"rowSpan\": {\n \"type\": \"integer\",\n \"minimum\": 1\n },\n \"alignment\": {\n \"$ref\": \"shared.json#/definitions/alignment\"\n },\n \"verticalAlignment\": {\n \"$ref\": \"shared.json#/definitions/verticalAlignment\"\n },\n \"wrapWord\": {\n \"type\": \"boolean\"\n },\n \"truncate\": {\n \"type\": \"integer\"\n },\n \"paddingLeft\": {\n \"type\": \"integer\"\n },\n \"paddingRight\": {\n \"type\": \"integer\"\n }\n },\n \"required\": [\"row\", \"col\"],\n \"additionalProperties\": false\n }\n }\n },\n \"additionalProperties\": false\n};\nconst schema15 = {\n \"type\": \"object\",\n \"properties\": {\n \"topBody\": {\n \"$ref\": \"#/definitions/border\"\n },\n \"topJoin\": {\n \"$ref\": \"#/definitions/border\"\n },\n \"topLeft\": {\n \"$ref\": \"#/definitions/border\"\n },\n \"topRight\": {\n \"$ref\": \"#/definitions/border\"\n },\n \"bottomBody\": {\n \"$ref\": \"#/definitions/border\"\n },\n \"bottomJoin\": {\n \"$ref\": \"#/definitions/border\"\n },\n \"bottomLeft\": {\n \"$ref\": \"#/definitions/border\"\n },\n \"bottomRight\": {\n \"$ref\": \"#/definitions/border\"\n },\n \"bodyLeft\": {\n \"$ref\": \"#/definitions/border\"\n },\n \"bodyRight\": {\n \"$ref\": \"#/definitions/border\"\n },\n \"bodyJoin\": {\n \"$ref\": \"#/definitions/border\"\n },\n \"headerJoin\": {\n \"$ref\": \"#/definitions/border\"\n },\n \"joinBody\": {\n \"$ref\": \"#/definitions/border\"\n },\n \"joinLeft\": {\n \"$ref\": \"#/definitions/border\"\n },\n \"joinRight\": {\n \"$ref\": \"#/definitions/border\"\n },\n \"joinJoin\": {\n \"$ref\": \"#/definitions/border\"\n },\n \"joinMiddleUp\": {\n \"$ref\": \"#/definitions/border\"\n },\n \"joinMiddleDown\": {\n \"$ref\": \"#/definitions/border\"\n },\n \"joinMiddleLeft\": {\n \"$ref\": \"#/definitions/border\"\n },\n \"joinMiddleRight\": {\n \"$ref\": \"#/definitions/border\"\n }\n },\n \"additionalProperties\": false\n};\nconst func8 = Object.prototype.hasOwnProperty;\nconst schema16 = {\n \"type\": \"string\"\n};\nfunction validate46(data, { instancePath = \"\", parentData, parentDataProperty, rootData = data } = {}) {\n let vErrors = null;\n let errors = 0;\n if (typeof data !== \"string\") {\n const err0 = {\n instancePath,\n schemaPath: \"#/type\",\n keyword: \"type\",\n params: {\n type: \"string\"\n },\n message: \"must be string\"\n };\n if (vErrors === null) {\n vErrors = [err0];\n }\n else {\n vErrors.push(err0);\n }\n errors++;\n }\n validate46.errors = vErrors;\n return errors === 0;\n}\nfunction validate45(data, { instancePath = \"\", parentData, parentDataProperty, rootData = data } = {}) {\n let vErrors = null;\n let errors = 0;\n if (data && typeof data == \"object\" && !Array.isArray(data)) {\n for (const key0 in data) {\n if (!(func8.call(schema15.properties, key0))) {\n const err0 = {\n instancePath,\n schemaPath: \"#/additionalProperties\",\n keyword: \"additionalProperties\",\n params: {\n additionalProperty: key0\n },\n message: \"must NOT have additional properties\"\n };\n if (vErrors === null) {\n vErrors = [err0];\n }\n else {\n vErrors.push(err0);\n }\n errors++;\n }\n }\n if (data.topBody !== undefined) {\n if (!(validate46(data.topBody, {\n instancePath: instancePath + \"/topBody\",\n parentData: data,\n parentDataProperty: \"topBody\",\n rootData\n }))) {\n vErrors = vErrors === null ? validate46.errors : vErrors.concat(validate46.errors);\n errors = vErrors.length;\n }\n }\n if (data.topJoin !== undefined) {\n if (!(validate46(data.topJoin, {\n instancePath: instancePath + \"/topJoin\",\n parentData: data,\n parentDataProperty: \"topJoin\",\n rootData\n }))) {\n vErrors = vErrors === null ? validate46.errors : vErrors.concat(validate46.errors);\n errors = vErrors.length;\n }\n }\n if (data.topLeft !== undefined) {\n if (!(validate46(data.topLeft, {\n instancePath: instancePath + \"/topLeft\",\n parentData: data,\n parentDataProperty: \"topLeft\",\n rootData\n }))) {\n vErrors = vErrors === null ? validate46.errors : vErrors.concat(validate46.errors);\n errors = vErrors.length;\n }\n }\n if (data.topRight !== undefined) {\n if (!(validate46(data.topRight, {\n instancePath: instancePath + \"/topRight\",\n parentData: data,\n parentDataProperty: \"topRight\",\n rootData\n }))) {\n vErrors = vErrors === null ? validate46.errors : vErrors.concat(validate46.errors);\n errors = vErrors.length;\n }\n }\n if (data.bottomBody !== undefined) {\n if (!(validate46(data.bottomBody, {\n instancePath: instancePath + \"/bottomBody\",\n parentData: data,\n parentDataProperty: \"bottomBody\",\n rootData\n }))) {\n vErrors = vErrors === null ? validate46.errors : vErrors.concat(validate46.errors);\n errors = vErrors.length;\n }\n }\n if (data.bottomJoin !== undefined) {\n if (!(validate46(data.bottomJoin, {\n instancePath: instancePath + \"/bottomJoin\",\n parentData: data,\n parentDataProperty: \"bottomJoin\",\n rootData\n }))) {\n vErrors = vErrors === null ? validate46.errors : vErrors.concat(validate46.errors);\n errors = vErrors.length;\n }\n }\n if (data.bottomLeft !== undefined) {\n if (!(validate46(data.bottomLeft, {\n instancePath: instancePath + \"/bottomLeft\",\n parentData: data,\n parentDataProperty: \"bottomLeft\",\n rootData\n }))) {\n vErrors = vErrors === null ? validate46.errors : vErrors.concat(validate46.errors);\n errors = vErrors.length;\n }\n }\n if (data.bottomRight !== undefined) {\n if (!(validate46(data.bottomRight, {\n instancePath: instancePath + \"/bottomRight\",\n parentData: data,\n parentDataProperty: \"bottomRight\",\n rootData\n }))) {\n vErrors = vErrors === null ? validate46.errors : vErrors.concat(validate46.errors);\n errors = vErrors.length;\n }\n }\n if (data.bodyLeft !== undefined) {\n if (!(validate46(data.bodyLeft, {\n instancePath: instancePath + \"/bodyLeft\",\n parentData: data,\n parentDataProperty: \"bodyLeft\",\n rootData\n }))) {\n vErrors = vErrors === null ? validate46.errors : vErrors.concat(validate46.errors);\n errors = vErrors.length;\n }\n }\n if (data.bodyRight !== undefined) {\n if (!(validate46(data.bodyRight, {\n instancePath: instancePath + \"/bodyRight\",\n parentData: data,\n parentDataProperty: \"bodyRight\",\n rootData\n }))) {\n vErrors = vErrors === null ? validate46.errors : vErrors.concat(validate46.errors);\n errors = vErrors.length;\n }\n }\n if (data.bodyJoin !== undefined) {\n if (!(validate46(data.bodyJoin, {\n instancePath: instancePath + \"/bodyJoin\",\n parentData: data,\n parentDataProperty: \"bodyJoin\",\n rootData\n }))) {\n vErrors = vErrors === null ? validate46.errors : vErrors.concat(validate46.errors);\n errors = vErrors.length;\n }\n }\n if (data.headerJoin !== undefined) {\n if (!(validate46(data.headerJoin, {\n instancePath: instancePath + \"/headerJoin\",\n parentData: data,\n parentDataProperty: \"headerJoin\",\n rootData\n }))) {\n vErrors = vErrors === null ? validate46.errors : vErrors.concat(validate46.errors);\n errors = vErrors.length;\n }\n }\n if (data.joinBody !== undefined) {\n if (!(validate46(data.joinBody, {\n instancePath: instancePath + \"/joinBody\",\n parentData: data,\n parentDataProperty: \"joinBody\",\n rootData\n }))) {\n vErrors = vErrors === null ? validate46.errors : vErrors.concat(validate46.errors);\n errors = vErrors.length;\n }\n }\n if (data.joinLeft !== undefined) {\n if (!(validate46(data.joinLeft, {\n instancePath: instancePath + \"/joinLeft\",\n parentData: data,\n parentDataProperty: \"joinLeft\",\n rootData\n }))) {\n vErrors = vErrors === null ? validate46.errors : vErrors.concat(validate46.errors);\n errors = vErrors.length;\n }\n }\n if (data.joinRight !== undefined) {\n if (!(validate46(data.joinRight, {\n instancePath: instancePath + \"/joinRight\",\n parentData: data,\n parentDataProperty: \"joinRight\",\n rootData\n }))) {\n vErrors = vErrors === null ? validate46.errors : vErrors.concat(validate46.errors);\n errors = vErrors.length;\n }\n }\n if (data.joinJoin !== undefined) {\n if (!(validate46(data.joinJoin, {\n instancePath: instancePath + \"/joinJoin\",\n parentData: data,\n parentDataProperty: \"joinJoin\",\n rootData\n }))) {\n vErrors = vErrors === null ? validate46.errors : vErrors.concat(validate46.errors);\n errors = vErrors.length;\n }\n }\n if (data.joinMiddleUp !== undefined) {\n if (!(validate46(data.joinMiddleUp, {\n instancePath: instancePath + \"/joinMiddleUp\",\n parentData: data,\n parentDataProperty: \"joinMiddleUp\",\n rootData\n }))) {\n vErrors = vErrors === null ? validate46.errors : vErrors.concat(validate46.errors);\n errors = vErrors.length;\n }\n }\n if (data.joinMiddleDown !== undefined) {\n if (!(validate46(data.joinMiddleDown, {\n instancePath: instancePath + \"/joinMiddleDown\",\n parentData: data,\n parentDataProperty: \"joinMiddleDown\",\n rootData\n }))) {\n vErrors = vErrors === null ? validate46.errors : vErrors.concat(validate46.errors);\n errors = vErrors.length;\n }\n }\n if (data.joinMiddleLeft !== undefined) {\n if (!(validate46(data.joinMiddleLeft, {\n instancePath: instancePath + \"/joinMiddleLeft\",\n parentData: data,\n parentDataProperty: \"joinMiddleLeft\",\n rootData\n }))) {\n vErrors = vErrors === null ? validate46.errors : vErrors.concat(validate46.errors);\n errors = vErrors.length;\n }\n }\n if (data.joinMiddleRight !== undefined) {\n if (!(validate46(data.joinMiddleRight, {\n instancePath: instancePath + \"/joinMiddleRight\",\n parentData: data,\n parentDataProperty: \"joinMiddleRight\",\n rootData\n }))) {\n vErrors = vErrors === null ? validate46.errors : vErrors.concat(validate46.errors);\n errors = vErrors.length;\n }\n }\n }\n else {\n const err1 = {\n instancePath,\n schemaPath: \"#/type\",\n keyword: \"type\",\n params: {\n type: \"object\"\n },\n message: \"must be object\"\n };\n if (vErrors === null) {\n vErrors = [err1];\n }\n else {\n vErrors.push(err1);\n }\n errors++;\n }\n validate45.errors = vErrors;\n return errors === 0;\n}\nconst schema17 = {\n \"type\": \"string\",\n \"enum\": [\"left\", \"right\", \"center\", \"justify\"]\n};\nconst func0 = require(\"ajv/dist/runtime/equal\").default;\nfunction validate68(data, { instancePath = \"\", parentData, parentDataProperty, rootData = data } = {}) {\n let vErrors = null;\n let errors = 0;\n if (typeof data !== \"string\") {\n const err0 = {\n instancePath,\n schemaPath: \"#/type\",\n keyword: \"type\",\n params: {\n type: \"string\"\n },\n message: \"must be string\"\n };\n if (vErrors === null) {\n vErrors = [err0];\n }\n else {\n vErrors.push(err0);\n }\n errors++;\n }\n if (!((((data === \"left\") || (data === \"right\")) || (data === \"center\")) || (data === \"justify\"))) {\n const err1 = {\n instancePath,\n schemaPath: \"#/enum\",\n keyword: \"enum\",\n params: {\n allowedValues: schema17.enum\n },\n message: \"must be equal to one of the allowed values\"\n };\n if (vErrors === null) {\n vErrors = [err1];\n }\n else {\n vErrors.push(err1);\n }\n errors++;\n }\n validate68.errors = vErrors;\n return errors === 0;\n}\nconst schema18 = {\n \"oneOf\": [{\n \"type\": \"object\",\n \"patternProperties\": {\n \"^[0-9]+$\": {\n \"$ref\": \"#/definitions/column\"\n }\n },\n \"additionalProperties\": false\n }, {\n \"type\": \"array\",\n \"items\": {\n \"$ref\": \"#/definitions/column\"\n }\n }]\n};\nconst pattern0 = new RegExp(\"^[0-9]+$\", \"u\");\nconst schema19 = {\n \"type\": \"object\",\n \"properties\": {\n \"alignment\": {\n \"$ref\": \"#/definitions/alignment\"\n },\n \"verticalAlignment\": {\n \"$ref\": \"#/definitions/verticalAlignment\"\n },\n \"width\": {\n \"type\": \"integer\",\n \"minimum\": 1\n },\n \"wrapWord\": {\n \"type\": \"boolean\"\n },\n \"truncate\": {\n \"type\": \"integer\"\n },\n \"paddingLeft\": {\n \"type\": \"integer\"\n },\n \"paddingRight\": {\n \"type\": \"integer\"\n }\n },\n \"additionalProperties\": false\n};\nfunction validate72(data, { instancePath = \"\", parentData, parentDataProperty, rootData = data } = {}) {\n let vErrors = null;\n let errors = 0;\n if (typeof data !== \"string\") {\n const err0 = {\n instancePath,\n schemaPath: \"#/type\",\n keyword: \"type\",\n params: {\n type: \"string\"\n },\n message: \"must be string\"\n };\n if (vErrors === null) {\n vErrors = [err0];\n }\n else {\n vErrors.push(err0);\n }\n errors++;\n }\n if (!((((data === \"left\") || (data === \"right\")) || (data === \"center\")) || (data === \"justify\"))) {\n const err1 = {\n instancePath,\n schemaPath: \"#/enum\",\n keyword: \"enum\",\n params: {\n allowedValues: schema17.enum\n },\n message: \"must be equal to one of the allowed values\"\n };\n if (vErrors === null) {\n vErrors = [err1];\n }\n else {\n vErrors.push(err1);\n }\n errors++;\n }\n validate72.errors = vErrors;\n return errors === 0;\n}\nconst schema21 = {\n \"type\": \"string\",\n \"enum\": [\"top\", \"middle\", \"bottom\"]\n};\nfunction validate74(data, { instancePath = \"\", parentData, parentDataProperty, rootData = data } = {}) {\n let vErrors = null;\n let errors = 0;\n if (typeof data !== \"string\") {\n const err0 = {\n instancePath,\n schemaPath: \"#/type\",\n keyword: \"type\",\n params: {\n type: \"string\"\n },\n message: \"must be string\"\n };\n if (vErrors === null) {\n vErrors = [err0];\n }\n else {\n vErrors.push(err0);\n }\n errors++;\n }\n if (!(((data === \"top\") || (data === \"middle\")) || (data === \"bottom\"))) {\n const err1 = {\n instancePath,\n schemaPath: \"#/enum\",\n keyword: \"enum\",\n params: {\n allowedValues: schema21.enum\n },\n message: \"must be equal to one of the allowed values\"\n };\n if (vErrors === null) {\n vErrors = [err1];\n }\n else {\n vErrors.push(err1);\n }\n errors++;\n }\n validate74.errors = vErrors;\n return errors === 0;\n}\nfunction validate71(data, { instancePath = \"\", parentData, parentDataProperty, rootData = data } = {}) {\n let vErrors = null;\n let errors = 0;\n if (data && typeof data == \"object\" && !Array.isArray(data)) {\n for (const key0 in data) {\n if (!(((((((key0 === \"alignment\") || (key0 === \"verticalAlignment\")) || (key0 === \"width\")) || (key0 === \"wrapWord\")) || (key0 === \"truncate\")) || (key0 === \"paddingLeft\")) || (key0 === \"paddingRight\"))) {\n const err0 = {\n instancePath,\n schemaPath: \"#/additionalProperties\",\n keyword: \"additionalProperties\",\n params: {\n additionalProperty: key0\n },\n message: \"must NOT have additional properties\"\n };\n if (vErrors === null) {\n vErrors = [err0];\n }\n else {\n vErrors.push(err0);\n }\n errors++;\n }\n }\n if (data.alignment !== undefined) {\n if (!(validate72(data.alignment, {\n instancePath: instancePath + \"/alignment\",\n parentData: data,\n parentDataProperty: \"alignment\",\n rootData\n }))) {\n vErrors = vErrors === null ? validate72.errors : vErrors.concat(validate72.errors);\n errors = vErrors.length;\n }\n }\n if (data.verticalAlignment !== undefined) {\n if (!(validate74(data.verticalAlignment, {\n instancePath: instancePath + \"/verticalAlignment\",\n parentData: data,\n parentDataProperty: \"verticalAlignment\",\n rootData\n }))) {\n vErrors = vErrors === null ? validate74.errors : vErrors.concat(validate74.errors);\n errors = vErrors.length;\n }\n }\n if (data.width !== undefined) {\n let data2 = data.width;\n if (!(((typeof data2 == \"number\") && (!(data2 % 1) && !isNaN(data2))) && (isFinite(data2)))) {\n const err1 = {\n instancePath: instancePath + \"/width\",\n schemaPath: \"#/properties/width/type\",\n keyword: \"type\",\n params: {\n type: \"integer\"\n },\n message: \"must be integer\"\n };\n if (vErrors === null) {\n vErrors = [err1];\n }\n else {\n vErrors.push(err1);\n }\n errors++;\n }\n if ((typeof data2 == \"number\") && (isFinite(data2))) {\n if (data2 < 1 || isNaN(data2)) {\n const err2 = {\n instancePath: instancePath + \"/width\",\n schemaPath: \"#/properties/width/minimum\",\n keyword: \"minimum\",\n params: {\n comparison: \">=\",\n limit: 1\n },\n message: \"must be >= 1\"\n };\n if (vErrors === null) {\n vErrors = [err2];\n }\n else {\n vErrors.push(err2);\n }\n errors++;\n }\n }\n }\n if (data.wrapWord !== undefined) {\n if (typeof data.wrapWord !== \"boolean\") {\n const err3 = {\n instancePath: instancePath + \"/wrapWord\",\n schemaPath: \"#/properties/wrapWord/type\",\n keyword: \"type\",\n params: {\n type: \"boolean\"\n },\n message: \"must be boolean\"\n };\n if (vErrors === null) {\n vErrors = [err3];\n }\n else {\n vErrors.push(err3);\n }\n errors++;\n }\n }\n if (data.truncate !== undefined) {\n let data4 = data.truncate;\n if (!(((typeof data4 == \"number\") && (!(data4 % 1) && !isNaN(data4))) && (isFinite(data4)))) {\n const err4 = {\n instancePath: instancePath + \"/truncate\",\n schemaPath: \"#/properties/truncate/type\",\n keyword: \"type\",\n params: {\n type: \"integer\"\n },\n message: \"must be integer\"\n };\n if (vErrors === null) {\n vErrors = [err4];\n }\n else {\n vErrors.push(err4);\n }\n errors++;\n }\n }\n if (data.paddingLeft !== undefined) {\n let data5 = data.paddingLeft;\n if (!(((typeof data5 == \"number\") && (!(data5 % 1) && !isNaN(data5))) && (isFinite(data5)))) {\n const err5 = {\n instancePath: instancePath + \"/paddingLeft\",\n schemaPath: \"#/properties/paddingLeft/type\",\n keyword: \"type\",\n params: {\n type: \"integer\"\n },\n message: \"must be integer\"\n };\n if (vErrors === null) {\n vErrors = [err5];\n }\n else {\n vErrors.push(err5);\n }\n errors++;\n }\n }\n if (data.paddingRight !== undefined) {\n let data6 = data.paddingRight;\n if (!(((typeof data6 == \"number\") && (!(data6 % 1) && !isNaN(data6))) && (isFinite(data6)))) {\n const err6 = {\n instancePath: instancePath + \"/paddingRight\",\n schemaPath: \"#/properties/paddingRight/type\",\n keyword: \"type\",\n params: {\n type: \"integer\"\n },\n message: \"must be integer\"\n };\n if (vErrors === null) {\n vErrors = [err6];\n }\n else {\n vErrors.push(err6);\n }\n errors++;\n }\n }\n }\n else {\n const err7 = {\n instancePath,\n schemaPath: \"#/type\",\n keyword: \"type\",\n params: {\n type: \"object\"\n },\n message: \"must be object\"\n };\n if (vErrors === null) {\n vErrors = [err7];\n }\n else {\n vErrors.push(err7);\n }\n errors++;\n }\n validate71.errors = vErrors;\n return errors === 0;\n}\nfunction validate70(data, { instancePath = \"\", parentData, parentDataProperty, rootData = data } = {}) {\n let vErrors = null;\n let errors = 0;\n const _errs0 = errors;\n let valid0 = false;\n let passing0 = null;\n const _errs1 = errors;\n if (data && typeof data == \"object\" && !Array.isArray(data)) {\n for (const key0 in data) {\n if (!(pattern0.test(key0))) {\n const err0 = {\n instancePath,\n schemaPath: \"#/oneOf/0/additionalProperties\",\n keyword: \"additionalProperties\",\n params: {\n additionalProperty: key0\n },\n message: \"must NOT have additional properties\"\n };\n if (vErrors === null) {\n vErrors = [err0];\n }\n else {\n vErrors.push(err0);\n }\n errors++;\n }\n }\n for (const key1 in data) {\n if (pattern0.test(key1)) {\n if (!(validate71(data[key1], {\n instancePath: instancePath + \"/\" + key1.replace(/~/g, \"~0\").replace(/\\//g, \"~1\"),\n parentData: data,\n parentDataProperty: key1,\n rootData\n }))) {\n vErrors = vErrors === null ? validate71.errors : vErrors.concat(validate71.errors);\n errors = vErrors.length;\n }\n }\n }\n }\n else {\n const err1 = {\n instancePath,\n schemaPath: \"#/oneOf/0/type\",\n keyword: \"type\",\n params: {\n type: \"object\"\n },\n message: \"must be object\"\n };\n if (vErrors === null) {\n vErrors = [err1];\n }\n else {\n vErrors.push(err1);\n }\n errors++;\n }\n var _valid0 = _errs1 === errors;\n if (_valid0) {\n valid0 = true;\n passing0 = 0;\n }\n const _errs5 = errors;\n if (Array.isArray(data)) {\n const len0 = data.length;\n for (let i0 = 0; i0 < len0; i0++) {\n if (!(validate71(data[i0], {\n instancePath: instancePath + \"/\" + i0,\n parentData: data,\n parentDataProperty: i0,\n rootData\n }))) {\n vErrors = vErrors === null ? validate71.errors : vErrors.concat(validate71.errors);\n errors = vErrors.length;\n }\n }\n }\n else {\n const err2 = {\n instancePath,\n schemaPath: \"#/oneOf/1/type\",\n keyword: \"type\",\n params: {\n type: \"array\"\n },\n message: \"must be array\"\n };\n if (vErrors === null) {\n vErrors = [err2];\n }\n else {\n vErrors.push(err2);\n }\n errors++;\n }\n var _valid0 = _errs5 === errors;\n if (_valid0 && valid0) {\n valid0 = false;\n passing0 = [passing0, 1];\n }\n else {\n if (_valid0) {\n valid0 = true;\n passing0 = 1;\n }\n }\n if (!valid0) {\n const err3 = {\n instancePath,\n schemaPath: \"#/oneOf\",\n keyword: \"oneOf\",\n params: {\n passingSchemas: passing0\n },\n message: \"must match exactly one schema in oneOf\"\n };\n if (vErrors === null) {\n vErrors = [err3];\n }\n else {\n vErrors.push(err3);\n }\n errors++;\n }\n else {\n errors = _errs0;\n if (vErrors !== null) {\n if (_errs0) {\n vErrors.length = _errs0;\n }\n else {\n vErrors = null;\n }\n }\n }\n validate70.errors = vErrors;\n return errors === 0;\n}\nfunction validate79(data, { instancePath = \"\", parentData, parentDataProperty, rootData = data } = {}) {\n let vErrors = null;\n let errors = 0;\n if (data && typeof data == \"object\" && !Array.isArray(data)) {\n for (const key0 in data) {\n if (!(((((((key0 === \"alignment\") || (key0 === \"verticalAlignment\")) || (key0 === \"width\")) || (key0 === \"wrapWord\")) || (key0 === \"truncate\")) || (key0 === \"paddingLeft\")) || (key0 === \"paddingRight\"))) {\n const err0 = {\n instancePath,\n schemaPath: \"#/additionalProperties\",\n keyword: \"additionalProperties\",\n params: {\n additionalProperty: key0\n },\n message: \"must NOT have additional properties\"\n };\n if (vErrors === null) {\n vErrors = [err0];\n }\n else {\n vErrors.push(err0);\n }\n errors++;\n }\n }\n if (data.alignment !== undefined) {\n if (!(validate72(data.alignment, {\n instancePath: instancePath + \"/alignment\",\n parentData: data,\n parentDataProperty: \"alignment\",\n rootData\n }))) {\n vErrors = vErrors === null ? validate72.errors : vErrors.concat(validate72.errors);\n errors = vErrors.length;\n }\n }\n if (data.verticalAlignment !== undefined) {\n if (!(validate74(data.verticalAlignment, {\n instancePath: instancePath + \"/verticalAlignment\",\n parentData: data,\n parentDataProperty: \"verticalAlignment\",\n rootData\n }))) {\n vErrors = vErrors === null ? validate74.errors : vErrors.concat(validate74.errors);\n errors = vErrors.length;\n }\n }\n if (data.width !== undefined) {\n let data2 = data.width;\n if (!(((typeof data2 == \"number\") && (!(data2 % 1) && !isNaN(data2))) && (isFinite(data2)))) {\n const err1 = {\n instancePath: instancePath + \"/width\",\n schemaPath: \"#/properties/width/type\",\n keyword: \"type\",\n params: {\n type: \"integer\"\n },\n message: \"must be integer\"\n };\n if (vErrors === null) {\n vErrors = [err1];\n }\n else {\n vErrors.push(err1);\n }\n errors++;\n }\n if ((typeof data2 == \"number\") && (isFinite(data2))) {\n if (data2 < 1 || isNaN(data2)) {\n const err2 = {\n instancePath: instancePath + \"/width\",\n schemaPath: \"#/properties/width/minimum\",\n keyword: \"minimum\",\n params: {\n comparison: \">=\",\n limit: 1\n },\n message: \"must be >= 1\"\n };\n if (vErrors === null) {\n vErrors = [err2];\n }\n else {\n vErrors.push(err2);\n }\n errors++;\n }\n }\n }\n if (data.wrapWord !== undefined) {\n if (typeof data.wrapWord !== \"boolean\") {\n const err3 = {\n instancePath: instancePath + \"/wrapWord\",\n schemaPath: \"#/properties/wrapWord/type\",\n keyword: \"type\",\n params: {\n type: \"boolean\"\n },\n message: \"must be boolean\"\n };\n if (vErrors === null) {\n vErrors = [err3];\n }\n else {\n vErrors.push(err3);\n }\n errors++;\n }\n }\n if (data.truncate !== undefined) {\n let data4 = data.truncate;\n if (!(((typeof data4 == \"number\") && (!(data4 % 1) && !isNaN(data4))) && (isFinite(data4)))) {\n const err4 = {\n instancePath: instancePath + \"/truncate\",\n schemaPath: \"#/properties/truncate/type\",\n keyword: \"type\",\n params: {\n type: \"integer\"\n },\n message: \"must be integer\"\n };\n if (vErrors === null) {\n vErrors = [err4];\n }\n else {\n vErrors.push(err4);\n }\n errors++;\n }\n }\n if (data.paddingLeft !== undefined) {\n let data5 = data.paddingLeft;\n if (!(((typeof data5 == \"number\") && (!(data5 % 1) && !isNaN(data5))) && (isFinite(data5)))) {\n const err5 = {\n instancePath: instancePath + \"/paddingLeft\",\n schemaPath: \"#/properties/paddingLeft/type\",\n keyword: \"type\",\n params: {\n type: \"integer\"\n },\n message: \"must be integer\"\n };\n if (vErrors === null) {\n vErrors = [err5];\n }\n else {\n vErrors.push(err5);\n }\n errors++;\n }\n }\n if (data.paddingRight !== undefined) {\n let data6 = data.paddingRight;\n if (!(((typeof data6 == \"number\") && (!(data6 % 1) && !isNaN(data6))) && (isFinite(data6)))) {\n const err6 = {\n instancePath: instancePath + \"/paddingRight\",\n schemaPath: \"#/properties/paddingRight/type\",\n keyword: \"type\",\n params: {\n type: \"integer\"\n },\n message: \"must be integer\"\n };\n if (vErrors === null) {\n vErrors = [err6];\n }\n else {\n vErrors.push(err6);\n }\n errors++;\n }\n }\n }\n else {\n const err7 = {\n instancePath,\n schemaPath: \"#/type\",\n keyword: \"type\",\n params: {\n type: \"object\"\n },\n message: \"must be object\"\n };\n if (vErrors === null) {\n vErrors = [err7];\n }\n else {\n vErrors.push(err7);\n }\n errors++;\n }\n validate79.errors = vErrors;\n return errors === 0;\n}\nfunction validate84(data, { instancePath = \"\", parentData, parentDataProperty, rootData = data } = {}) {\n let vErrors = null;\n let errors = 0;\n if (typeof data !== \"string\") {\n const err0 = {\n instancePath,\n schemaPath: \"#/type\",\n keyword: \"type\",\n params: {\n type: \"string\"\n },\n message: \"must be string\"\n };\n if (vErrors === null) {\n vErrors = [err0];\n }\n else {\n vErrors.push(err0);\n }\n errors++;\n }\n if (!(((data === \"top\") || (data === \"middle\")) || (data === \"bottom\"))) {\n const err1 = {\n instancePath,\n schemaPath: \"#/enum\",\n keyword: \"enum\",\n params: {\n allowedValues: schema21.enum\n },\n message: \"must be equal to one of the allowed values\"\n };\n if (vErrors === null) {\n vErrors = [err1];\n }\n else {\n vErrors.push(err1);\n }\n errors++;\n }\n validate84.errors = vErrors;\n return errors === 0;\n}\nfunction validate43(data, { instancePath = \"\", parentData, parentDataProperty, rootData = data } = {}) {\n /*# sourceURL=\"config.json\" */ ;\n let vErrors = null;\n let errors = 0;\n if (data && typeof data == \"object\" && !Array.isArray(data)) {\n for (const key0 in data) {\n if (!((((((((key0 === \"border\") || (key0 === \"header\")) || (key0 === \"columns\")) || (key0 === \"columnDefault\")) || (key0 === \"drawVerticalLine\")) || (key0 === \"drawHorizontalLine\")) || (key0 === \"singleLine\")) || (key0 === \"spanningCells\"))) {\n const err0 = {\n instancePath,\n schemaPath: \"#/additionalProperties\",\n keyword: \"additionalProperties\",\n params: {\n additionalProperty: key0\n },\n message: \"must NOT have additional properties\"\n };\n if (vErrors === null) {\n vErrors = [err0];\n }\n else {\n vErrors.push(err0);\n }\n errors++;\n }\n }\n if (data.border !== undefined) {\n if (!(validate45(data.border, {\n instancePath: instancePath + \"/border\",\n parentData: data,\n parentDataProperty: \"border\",\n rootData\n }))) {\n vErrors = vErrors === null ? validate45.errors : vErrors.concat(validate45.errors);\n errors = vErrors.length;\n }\n }\n if (data.header !== undefined) {\n let data1 = data.header;\n if (data1 && typeof data1 == \"object\" && !Array.isArray(data1)) {\n if (data1.content === undefined) {\n const err1 = {\n instancePath: instancePath + \"/header\",\n schemaPath: \"#/properties/header/required\",\n keyword: \"required\",\n params: {\n missingProperty: \"content\"\n },\n message: \"must have required property '\" + \"content\" + \"'\"\n };\n if (vErrors === null) {\n vErrors = [err1];\n }\n else {\n vErrors.push(err1);\n }\n errors++;\n }\n for (const key1 in data1) {\n if (!((((((key1 === \"content\") || (key1 === \"alignment\")) || (key1 === \"wrapWord\")) || (key1 === \"truncate\")) || (key1 === \"paddingLeft\")) || (key1 === \"paddingRight\"))) {\n const err2 = {\n instancePath: instancePath + \"/header\",\n schemaPath: \"#/properties/header/additionalProperties\",\n keyword: \"additionalProperties\",\n params: {\n additionalProperty: key1\n },\n message: \"must NOT have additional properties\"\n };\n if (vErrors === null) {\n vErrors = [err2];\n }\n else {\n vErrors.push(err2);\n }\n errors++;\n }\n }\n if (data1.content !== undefined) {\n if (typeof data1.content !== \"string\") {\n const err3 = {\n instancePath: instancePath + \"/header/content\",\n schemaPath: \"#/properties/header/properties/content/type\",\n keyword: \"type\",\n params: {\n type: \"string\"\n },\n message: \"must be string\"\n };\n if (vErrors === null) {\n vErrors = [err3];\n }\n else {\n vErrors.push(err3);\n }\n errors++;\n }\n }\n if (data1.alignment !== undefined) {\n if (!(validate68(data1.alignment, {\n instancePath: instancePath + \"/header/alignment\",\n parentData: data1,\n parentDataProperty: \"alignment\",\n rootData\n }))) {\n vErrors = vErrors === null ? validate68.errors : vErrors.concat(validate68.errors);\n errors = vErrors.length;\n }\n }\n if (data1.wrapWord !== undefined) {\n if (typeof data1.wrapWord !== \"boolean\") {\n const err4 = {\n instancePath: instancePath + \"/header/wrapWord\",\n schemaPath: \"#/properties/header/properties/wrapWord/type\",\n keyword: \"type\",\n params: {\n type: \"boolean\"\n },\n message: \"must be boolean\"\n };\n if (vErrors === null) {\n vErrors = [err4];\n }\n else {\n vErrors.push(err4);\n }\n errors++;\n }\n }\n if (data1.truncate !== undefined) {\n let data5 = data1.truncate;\n if (!(((typeof data5 == \"number\") && (!(data5 % 1) && !isNaN(data5))) && (isFinite(data5)))) {\n const err5 = {\n instancePath: instancePath + \"/header/truncate\",\n schemaPath: \"#/properties/header/properties/truncate/type\",\n keyword: \"type\",\n params: {\n type: \"integer\"\n },\n message: \"must be integer\"\n };\n if (vErrors === null) {\n vErrors = [err5];\n }\n else {\n vErrors.push(err5);\n }\n errors++;\n }\n }\n if (data1.paddingLeft !== undefined) {\n let data6 = data1.paddingLeft;\n if (!(((typeof data6 == \"number\") && (!(data6 % 1) && !isNaN(data6))) && (isFinite(data6)))) {\n const err6 = {\n instancePath: instancePath + \"/header/paddingLeft\",\n schemaPath: \"#/properties/header/properties/paddingLeft/type\",\n keyword: \"type\",\n params: {\n type: \"integer\"\n },\n message: \"must be integer\"\n };\n if (vErrors === null) {\n vErrors = [err6];\n }\n else {\n vErrors.push(err6);\n }\n errors++;\n }\n }\n if (data1.paddingRight !== undefined) {\n let data7 = data1.paddingRight;\n if (!(((typeof data7 == \"number\") && (!(data7 % 1) && !isNaN(data7))) && (isFinite(data7)))) {\n const err7 = {\n instancePath: instancePath + \"/header/paddingRight\",\n schemaPath: \"#/properties/header/properties/paddingRight/type\",\n keyword: \"type\",\n params: {\n type: \"integer\"\n },\n message: \"must be integer\"\n };\n if (vErrors === null) {\n vErrors = [err7];\n }\n else {\n vErrors.push(err7);\n }\n errors++;\n }\n }\n }\n else {\n const err8 = {\n instancePath: instancePath + \"/header\",\n schemaPath: \"#/properties/header/type\",\n keyword: \"type\",\n params: {\n type: \"object\"\n },\n message: \"must be object\"\n };\n if (vErrors === null) {\n vErrors = [err8];\n }\n else {\n vErrors.push(err8);\n }\n errors++;\n }\n }\n if (data.columns !== undefined) {\n if (!(validate70(data.columns, {\n instancePath: instancePath + \"/columns\",\n parentData: data,\n parentDataProperty: \"columns\",\n rootData\n }))) {\n vErrors = vErrors === null ? validate70.errors : vErrors.concat(validate70.errors);\n errors = vErrors.length;\n }\n }\n if (data.columnDefault !== undefined) {\n if (!(validate79(data.columnDefault, {\n instancePath: instancePath + \"/columnDefault\",\n parentData: data,\n parentDataProperty: \"columnDefault\",\n rootData\n }))) {\n vErrors = vErrors === null ? validate79.errors : vErrors.concat(validate79.errors);\n errors = vErrors.length;\n }\n }\n if (data.drawVerticalLine !== undefined) {\n if (typeof data.drawVerticalLine != \"function\") {\n const err9 = {\n instancePath: instancePath + \"/drawVerticalLine\",\n schemaPath: \"#/properties/drawVerticalLine/typeof\",\n keyword: \"typeof\",\n params: {},\n message: \"must pass \\\"typeof\\\" keyword validation\"\n };\n if (vErrors === null) {\n vErrors = [err9];\n }\n else {\n vErrors.push(err9);\n }\n errors++;\n }\n }\n if (data.drawHorizontalLine !== undefined) {\n if (typeof data.drawHorizontalLine != \"function\") {\n const err10 = {\n instancePath: instancePath + \"/drawHorizontalLine\",\n schemaPath: \"#/properties/drawHorizontalLine/typeof\",\n keyword: \"typeof\",\n params: {},\n message: \"must pass \\\"typeof\\\" keyword validation\"\n };\n if (vErrors === null) {\n vErrors = [err10];\n }\n else {\n vErrors.push(err10);\n }\n errors++;\n }\n }\n if (data.singleLine !== undefined) {\n if (typeof data.singleLine != \"boolean\") {\n const err11 = {\n instancePath: instancePath + \"/singleLine\",\n schemaPath: \"#/properties/singleLine/typeof\",\n keyword: \"typeof\",\n params: {},\n message: \"must pass \\\"typeof\\\" keyword validation\"\n };\n if (vErrors === null) {\n vErrors = [err11];\n }\n else {\n vErrors.push(err11);\n }\n errors++;\n }\n }\n if (data.spanningCells !== undefined) {\n let data13 = data.spanningCells;\n if (Array.isArray(data13)) {\n const len0 = data13.length;\n for (let i0 = 0; i0 < len0; i0++) {\n let data14 = data13[i0];\n if (data14 && typeof data14 == \"object\" && !Array.isArray(data14)) {\n if (data14.row === undefined) {\n const err12 = {\n instancePath: instancePath + \"/spanningCells/\" + i0,\n schemaPath: \"#/properties/spanningCells/items/required\",\n keyword: \"required\",\n params: {\n missingProperty: \"row\"\n },\n message: \"must have required property '\" + \"row\" + \"'\"\n };\n if (vErrors === null) {\n vErrors = [err12];\n }\n else {\n vErrors.push(err12);\n }\n errors++;\n }\n if (data14.col === undefined) {\n const err13 = {\n instancePath: instancePath + \"/spanningCells/\" + i0,\n schemaPath: \"#/properties/spanningCells/items/required\",\n keyword: \"required\",\n params: {\n missingProperty: \"col\"\n },\n message: \"must have required property '\" + \"col\" + \"'\"\n };\n if (vErrors === null) {\n vErrors = [err13];\n }\n else {\n vErrors.push(err13);\n }\n errors++;\n }\n for (const key2 in data14) {\n if (!(func8.call(schema13.properties.spanningCells.items.properties, key2))) {\n const err14 = {\n instancePath: instancePath + \"/spanningCells/\" + i0,\n schemaPath: \"#/properties/spanningCells/items/additionalProperties\",\n keyword: \"additionalProperties\",\n params: {\n additionalProperty: key2\n },\n message: \"must NOT have additional properties\"\n };\n if (vErrors === null) {\n vErrors = [err14];\n }\n else {\n vErrors.push(err14);\n }\n errors++;\n }\n }\n if (data14.col !== undefined) {\n let data15 = data14.col;\n if (!(((typeof data15 == \"number\") && (!(data15 % 1) && !isNaN(data15))) && (isFinite(data15)))) {\n const err15 = {\n instancePath: instancePath + \"/spanningCells/\" + i0 + \"/col\",\n schemaPath: \"#/properties/spanningCells/items/properties/col/type\",\n keyword: \"type\",\n params: {\n type: \"integer\"\n },\n message: \"must be integer\"\n };\n if (vErrors === null) {\n vErrors = [err15];\n }\n else {\n vErrors.push(err15);\n }\n errors++;\n }\n if ((typeof data15 == \"number\") && (isFinite(data15))) {\n if (data15 < 0 || isNaN(data15)) {\n const err16 = {\n instancePath: instancePath + \"/spanningCells/\" + i0 + \"/col\",\n schemaPath: \"#/properties/spanningCells/items/properties/col/minimum\",\n keyword: \"minimum\",\n params: {\n comparison: \">=\",\n limit: 0\n },\n message: \"must be >= 0\"\n };\n if (vErrors === null) {\n vErrors = [err16];\n }\n else {\n vErrors.push(err16);\n }\n errors++;\n }\n }\n }\n if (data14.row !== undefined) {\n let data16 = data14.row;\n if (!(((typeof data16 == \"number\") && (!(data16 % 1) && !isNaN(data16))) && (isFinite(data16)))) {\n const err17 = {\n instancePath: instancePath + \"/spanningCells/\" + i0 + \"/row\",\n schemaPath: \"#/properties/spanningCells/items/properties/row/type\",\n keyword: \"type\",\n params: {\n type: \"integer\"\n },\n message: \"must be integer\"\n };\n if (vErrors === null) {\n vErrors = [err17];\n }\n else {\n vErrors.push(err17);\n }\n errors++;\n }\n if ((typeof data16 == \"number\") && (isFinite(data16))) {\n if (data16 < 0 || isNaN(data16)) {\n const err18 = {\n instancePath: instancePath + \"/spanningCells/\" + i0 + \"/row\",\n schemaPath: \"#/properties/spanningCells/items/properties/row/minimum\",\n keyword: \"minimum\",\n params: {\n comparison: \">=\",\n limit: 0\n },\n message: \"must be >= 0\"\n };\n if (vErrors === null) {\n vErrors = [err18];\n }\n else {\n vErrors.push(err18);\n }\n errors++;\n }\n }\n }\n if (data14.colSpan !== undefined) {\n let data17 = data14.colSpan;\n if (!(((typeof data17 == \"number\") && (!(data17 % 1) && !isNaN(data17))) && (isFinite(data17)))) {\n const err19 = {\n instancePath: instancePath + \"/spanningCells/\" + i0 + \"/colSpan\",\n schemaPath: \"#/properties/spanningCells/items/properties/colSpan/type\",\n keyword: \"type\",\n params: {\n type: \"integer\"\n },\n message: \"must be integer\"\n };\n if (vErrors === null) {\n vErrors = [err19];\n }\n else {\n vErrors.push(err19);\n }\n errors++;\n }\n if ((typeof data17 == \"number\") && (isFinite(data17))) {\n if (data17 < 1 || isNaN(data17)) {\n const err20 = {\n instancePath: instancePath + \"/spanningCells/\" + i0 + \"/colSpan\",\n schemaPath: \"#/properties/spanningCells/items/properties/colSpan/minimum\",\n keyword: \"minimum\",\n params: {\n comparison: \">=\",\n limit: 1\n },\n message: \"must be >= 1\"\n };\n if (vErrors === null) {\n vErrors = [err20];\n }\n else {\n vErrors.push(err20);\n }\n errors++;\n }\n }\n }\n if (data14.rowSpan !== undefined) {\n let data18 = data14.rowSpan;\n if (!(((typeof data18 == \"number\") && (!(data18 % 1) && !isNaN(data18))) && (isFinite(data18)))) {\n const err21 = {\n instancePath: instancePath + \"/spanningCells/\" + i0 + \"/rowSpan\",\n schemaPath: \"#/properties/spanningCells/items/properties/rowSpan/type\",\n keyword: \"type\",\n params: {\n type: \"integer\"\n },\n message: \"must be integer\"\n };\n if (vErrors === null) {\n vErrors = [err21];\n }\n else {\n vErrors.push(err21);\n }\n errors++;\n }\n if ((typeof data18 == \"number\") && (isFinite(data18))) {\n if (data18 < 1 || isNaN(data18)) {\n const err22 = {\n instancePath: instancePath + \"/spanningCells/\" + i0 + \"/rowSpan\",\n schemaPath: \"#/properties/spanningCells/items/properties/rowSpan/minimum\",\n keyword: \"minimum\",\n params: {\n comparison: \">=\",\n limit: 1\n },\n message: \"must be >= 1\"\n };\n if (vErrors === null) {\n vErrors = [err22];\n }\n else {\n vErrors.push(err22);\n }\n errors++;\n }\n }\n }\n if (data14.alignment !== undefined) {\n if (!(validate68(data14.alignment, {\n instancePath: instancePath + \"/spanningCells/\" + i0 + \"/alignment\",\n parentData: data14,\n parentDataProperty: \"alignment\",\n rootData\n }))) {\n vErrors = vErrors === null ? validate68.errors : vErrors.concat(validate68.errors);\n errors = vErrors.length;\n }\n }\n if (data14.verticalAlignment !== undefined) {\n if (!(validate84(data14.verticalAlignment, {\n instancePath: instancePath + \"/spanningCells/\" + i0 + \"/verticalAlignment\",\n parentData: data14,\n parentDataProperty: \"verticalAlignment\",\n rootData\n }))) {\n vErrors = vErrors === null ? validate84.errors : vErrors.concat(validate84.errors);\n errors = vErrors.length;\n }\n }\n if (data14.wrapWord !== undefined) {\n if (typeof data14.wrapWord !== \"boolean\") {\n const err23 = {\n instancePath: instancePath + \"/spanningCells/\" + i0 + \"/wrapWord\",\n schemaPath: \"#/properties/spanningCells/items/properties/wrapWord/type\",\n keyword: \"type\",\n params: {\n type: \"boolean\"\n },\n message: \"must be boolean\"\n };\n if (vErrors === null) {\n vErrors = [err23];\n }\n else {\n vErrors.push(err23);\n }\n errors++;\n }\n }\n if (data14.truncate !== undefined) {\n let data22 = data14.truncate;\n if (!(((typeof data22 == \"number\") && (!(data22 % 1) && !isNaN(data22))) && (isFinite(data22)))) {\n const err24 = {\n instancePath: instancePath + \"/spanningCells/\" + i0 + \"/truncate\",\n schemaPath: \"#/properties/spanningCells/items/properties/truncate/type\",\n keyword: \"type\",\n params: {\n type: \"integer\"\n },\n message: \"must be integer\"\n };\n if (vErrors === null) {\n vErrors = [err24];\n }\n else {\n vErrors.push(err24);\n }\n errors++;\n }\n }\n if (data14.paddingLeft !== undefined) {\n let data23 = data14.paddingLeft;\n if (!(((typeof data23 == \"number\") && (!(data23 % 1) && !isNaN(data23))) && (isFinite(data23)))) {\n const err25 = {\n instancePath: instancePath + \"/spanningCells/\" + i0 + \"/paddingLeft\",\n schemaPath: \"#/properties/spanningCells/items/properties/paddingLeft/type\",\n keyword: \"type\",\n params: {\n type: \"integer\"\n },\n message: \"must be integer\"\n };\n if (vErrors === null) {\n vErrors = [err25];\n }\n else {\n vErrors.push(err25);\n }\n errors++;\n }\n }\n if (data14.paddingRight !== undefined) {\n let data24 = data14.paddingRight;\n if (!(((typeof data24 == \"number\") && (!(data24 % 1) && !isNaN(data24))) && (isFinite(data24)))) {\n const err26 = {\n instancePath: instancePath + \"/spanningCells/\" + i0 + \"/paddingRight\",\n schemaPath: \"#/properties/spanningCells/items/properties/paddingRight/type\",\n keyword: \"type\",\n params: {\n type: \"integer\"\n },\n message: \"must be integer\"\n };\n if (vErrors === null) {\n vErrors = [err26];\n }\n else {\n vErrors.push(err26);\n }\n errors++;\n }\n }\n }\n else {\n const err27 = {\n instancePath: instancePath + \"/spanningCells/\" + i0,\n schemaPath: \"#/properties/spanningCells/items/type\",\n keyword: \"type\",\n params: {\n type: \"object\"\n },\n message: \"must be object\"\n };\n if (vErrors === null) {\n vErrors = [err27];\n }\n else {\n vErrors.push(err27);\n }\n errors++;\n }\n }\n }\n else {\n const err28 = {\n instancePath: instancePath + \"/spanningCells\",\n schemaPath: \"#/properties/spanningCells/type\",\n keyword: \"type\",\n params: {\n type: \"array\"\n },\n message: \"must be array\"\n };\n if (vErrors === null) {\n vErrors = [err28];\n }\n else {\n vErrors.push(err28);\n }\n errors++;\n }\n }\n }\n else {\n const err29 = {\n instancePath,\n schemaPath: \"#/type\",\n keyword: \"type\",\n params: {\n type: \"object\"\n },\n message: \"must be object\"\n };\n if (vErrors === null) {\n vErrors = [err29];\n }\n else {\n vErrors.push(err29);\n }\n errors++;\n }\n validate43.errors = vErrors;\n return errors === 0;\n}\nexports[\"streamConfig.json\"] = validate86;\nconst schema24 = {\n \"$id\": \"streamConfig.json\",\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"type\": \"object\",\n \"properties\": {\n \"border\": {\n \"$ref\": \"shared.json#/definitions/borders\"\n },\n \"columns\": {\n \"$ref\": \"shared.json#/definitions/columns\"\n },\n \"columnDefault\": {\n \"$ref\": \"shared.json#/definitions/column\"\n },\n \"columnCount\": {\n \"type\": \"integer\",\n \"minimum\": 1\n },\n \"drawVerticalLine\": {\n \"typeof\": \"function\"\n }\n },\n \"required\": [\"columnDefault\", \"columnCount\"],\n \"additionalProperties\": false\n};\nfunction validate87(data, { instancePath = \"\", parentData, parentDataProperty, rootData = data } = {}) {\n let vErrors = null;\n let errors = 0;\n if (data && typeof data == \"object\" && !Array.isArray(data)) {\n for (const key0 in data) {\n if (!(func8.call(schema15.properties, key0))) {\n const err0 = {\n instancePath,\n schemaPath: \"#/additionalProperties\",\n keyword: \"additionalProperties\",\n params: {\n additionalProperty: key0\n },\n message: \"must NOT have additional properties\"\n };\n if (vErrors === null) {\n vErrors = [err0];\n }\n else {\n vErrors.push(err0);\n }\n errors++;\n }\n }\n if (data.topBody !== undefined) {\n if (!(validate46(data.topBody, {\n instancePath: instancePath + \"/topBody\",\n parentData: data,\n parentDataProperty: \"topBody\",\n rootData\n }))) {\n vErrors = vErrors === null ? validate46.errors : vErrors.concat(validate46.errors);\n errors = vErrors.length;\n }\n }\n if (data.topJoin !== undefined) {\n if (!(validate46(data.topJoin, {\n instancePath: instancePath + \"/topJoin\",\n parentData: data,\n parentDataProperty: \"topJoin\",\n rootData\n }))) {\n vErrors = vErrors === null ? validate46.errors : vErrors.concat(validate46.errors);\n errors = vErrors.length;\n }\n }\n if (data.topLeft !== undefined) {\n if (!(validate46(data.topLeft, {\n instancePath: instancePath + \"/topLeft\",\n parentData: data,\n parentDataProperty: \"topLeft\",\n rootData\n }))) {\n vErrors = vErrors === null ? validate46.errors : vErrors.concat(validate46.errors);\n errors = vErrors.length;\n }\n }\n if (data.topRight !== undefined) {\n if (!(validate46(data.topRight, {\n instancePath: instancePath + \"/topRight\",\n parentData: data,\n parentDataProperty: \"topRight\",\n rootData\n }))) {\n vErrors = vErrors === null ? validate46.errors : vErrors.concat(validate46.errors);\n errors = vErrors.length;\n }\n }\n if (data.bottomBody !== undefined) {\n if (!(validate46(data.bottomBody, {\n instancePath: instancePath + \"/bottomBody\",\n parentData: data,\n parentDataProperty: \"bottomBody\",\n rootData\n }))) {\n vErrors = vErrors === null ? validate46.errors : vErrors.concat(validate46.errors);\n errors = vErrors.length;\n }\n }\n if (data.bottomJoin !== undefined) {\n if (!(validate46(data.bottomJoin, {\n instancePath: instancePath + \"/bottomJoin\",\n parentData: data,\n parentDataProperty: \"bottomJoin\",\n rootData\n }))) {\n vErrors = vErrors === null ? validate46.errors : vErrors.concat(validate46.errors);\n errors = vErrors.length;\n }\n }\n if (data.bottomLeft !== undefined) {\n if (!(validate46(data.bottomLeft, {\n instancePath: instancePath + \"/bottomLeft\",\n parentData: data,\n parentDataProperty: \"bottomLeft\",\n rootData\n }))) {\n vErrors = vErrors === null ? validate46.errors : vErrors.concat(validate46.errors);\n errors = vErrors.length;\n }\n }\n if (data.bottomRight !== undefined) {\n if (!(validate46(data.bottomRight, {\n instancePath: instancePath + \"/bottomRight\",\n parentData: data,\n parentDataProperty: \"bottomRight\",\n rootData\n }))) {\n vErrors = vErrors === null ? validate46.errors : vErrors.concat(validate46.errors);\n errors = vErrors.length;\n }\n }\n if (data.bodyLeft !== undefined) {\n if (!(validate46(data.bodyLeft, {\n instancePath: instancePath + \"/bodyLeft\",\n parentData: data,\n parentDataProperty: \"bodyLeft\",\n rootData\n }))) {\n vErrors = vErrors === null ? validate46.errors : vErrors.concat(validate46.errors);\n errors = vErrors.length;\n }\n }\n if (data.bodyRight !== undefined) {\n if (!(validate46(data.bodyRight, {\n instancePath: instancePath + \"/bodyRight\",\n parentData: data,\n parentDataProperty: \"bodyRight\",\n rootData\n }))) {\n vErrors = vErrors === null ? validate46.errors : vErrors.concat(validate46.errors);\n errors = vErrors.length;\n }\n }\n if (data.bodyJoin !== undefined) {\n if (!(validate46(data.bodyJoin, {\n instancePath: instancePath + \"/bodyJoin\",\n parentData: data,\n parentDataProperty: \"bodyJoin\",\n rootData\n }))) {\n vErrors = vErrors === null ? validate46.errors : vErrors.concat(validate46.errors);\n errors = vErrors.length;\n }\n }\n if (data.headerJoin !== undefined) {\n if (!(validate46(data.headerJoin, {\n instancePath: instancePath + \"/headerJoin\",\n parentData: data,\n parentDataProperty: \"headerJoin\",\n rootData\n }))) {\n vErrors = vErrors === null ? validate46.errors : vErrors.concat(validate46.errors);\n errors = vErrors.length;\n }\n }\n if (data.joinBody !== undefined) {\n if (!(validate46(data.joinBody, {\n instancePath: instancePath + \"/joinBody\",\n parentData: data,\n parentDataProperty: \"joinBody\",\n rootData\n }))) {\n vErrors = vErrors === null ? validate46.errors : vErrors.concat(validate46.errors);\n errors = vErrors.length;\n }\n }\n if (data.joinLeft !== undefined) {\n if (!(validate46(data.joinLeft, {\n instancePath: instancePath + \"/joinLeft\",\n parentData: data,\n parentDataProperty: \"joinLeft\",\n rootData\n }))) {\n vErrors = vErrors === null ? validate46.errors : vErrors.concat(validate46.errors);\n errors = vErrors.length;\n }\n }\n if (data.joinRight !== undefined) {\n if (!(validate46(data.joinRight, {\n instancePath: instancePath + \"/joinRight\",\n parentData: data,\n parentDataProperty: \"joinRight\",\n rootData\n }))) {\n vErrors = vErrors === null ? validate46.errors : vErrors.concat(validate46.errors);\n errors = vErrors.length;\n }\n }\n if (data.joinJoin !== undefined) {\n if (!(validate46(data.joinJoin, {\n instancePath: instancePath + \"/joinJoin\",\n parentData: data,\n parentDataProperty: \"joinJoin\",\n rootData\n }))) {\n vErrors = vErrors === null ? validate46.errors : vErrors.concat(validate46.errors);\n errors = vErrors.length;\n }\n }\n if (data.joinMiddleUp !== undefined) {\n if (!(validate46(data.joinMiddleUp, {\n instancePath: instancePath + \"/joinMiddleUp\",\n parentData: data,\n parentDataProperty: \"joinMiddleUp\",\n rootData\n }))) {\n vErrors = vErrors === null ? validate46.errors : vErrors.concat(validate46.errors);\n errors = vErrors.length;\n }\n }\n if (data.joinMiddleDown !== undefined) {\n if (!(validate46(data.joinMiddleDown, {\n instancePath: instancePath + \"/joinMiddleDown\",\n parentData: data,\n parentDataProperty: \"joinMiddleDown\",\n rootData\n }))) {\n vErrors = vErrors === null ? validate46.errors : vErrors.concat(validate46.errors);\n errors = vErrors.length;\n }\n }\n if (data.joinMiddleLeft !== undefined) {\n if (!(validate46(data.joinMiddleLeft, {\n instancePath: instancePath + \"/joinMiddleLeft\",\n parentData: data,\n parentDataProperty: \"joinMiddleLeft\",\n rootData\n }))) {\n vErrors = vErrors === null ? validate46.errors : vErrors.concat(validate46.errors);\n errors = vErrors.length;\n }\n }\n if (data.joinMiddleRight !== undefined) {\n if (!(validate46(data.joinMiddleRight, {\n instancePath: instancePath + \"/joinMiddleRight\",\n parentData: data,\n parentDataProperty: \"joinMiddleRight\",\n rootData\n }))) {\n vErrors = vErrors === null ? validate46.errors : vErrors.concat(validate46.errors);\n errors = vErrors.length;\n }\n }\n }\n else {\n const err1 = {\n instancePath,\n schemaPath: \"#/type\",\n keyword: \"type\",\n params: {\n type: \"object\"\n },\n message: \"must be object\"\n };\n if (vErrors === null) {\n vErrors = [err1];\n }\n else {\n vErrors.push(err1);\n }\n errors++;\n }\n validate87.errors = vErrors;\n return errors === 0;\n}\nfunction validate109(data, { instancePath = \"\", parentData, parentDataProperty, rootData = data } = {}) {\n let vErrors = null;\n let errors = 0;\n const _errs0 = errors;\n let valid0 = false;\n let passing0 = null;\n const _errs1 = errors;\n if (data && typeof data == \"object\" && !Array.isArray(data)) {\n for (const key0 in data) {\n if (!(pattern0.test(key0))) {\n const err0 = {\n instancePath,\n schemaPath: \"#/oneOf/0/additionalProperties\",\n keyword: \"additionalProperties\",\n params: {\n additionalProperty: key0\n },\n message: \"must NOT have additional properties\"\n };\n if (vErrors === null) {\n vErrors = [err0];\n }\n else {\n vErrors.push(err0);\n }\n errors++;\n }\n }\n for (const key1 in data) {\n if (pattern0.test(key1)) {\n if (!(validate71(data[key1], {\n instancePath: instancePath + \"/\" + key1.replace(/~/g, \"~0\").replace(/\\//g, \"~1\"),\n parentData: data,\n parentDataProperty: key1,\n rootData\n }))) {\n vErrors = vErrors === null ? validate71.errors : vErrors.concat(validate71.errors);\n errors = vErrors.length;\n }\n }\n }\n }\n else {\n const err1 = {\n instancePath,\n schemaPath: \"#/oneOf/0/type\",\n keyword: \"type\",\n params: {\n type: \"object\"\n },\n message: \"must be object\"\n };\n if (vErrors === null) {\n vErrors = [err1];\n }\n else {\n vErrors.push(err1);\n }\n errors++;\n }\n var _valid0 = _errs1 === errors;\n if (_valid0) {\n valid0 = true;\n passing0 = 0;\n }\n const _errs5 = errors;\n if (Array.isArray(data)) {\n const len0 = data.length;\n for (let i0 = 0; i0 < len0; i0++) {\n if (!(validate71(data[i0], {\n instancePath: instancePath + \"/\" + i0,\n parentData: data,\n parentDataProperty: i0,\n rootData\n }))) {\n vErrors = vErrors === null ? validate71.errors : vErrors.concat(validate71.errors);\n errors = vErrors.length;\n }\n }\n }\n else {\n const err2 = {\n instancePath,\n schemaPath: \"#/oneOf/1/type\",\n keyword: \"type\",\n params: {\n type: \"array\"\n },\n message: \"must be array\"\n };\n if (vErrors === null) {\n vErrors = [err2];\n }\n else {\n vErrors.push(err2);\n }\n errors++;\n }\n var _valid0 = _errs5 === errors;\n if (_valid0 && valid0) {\n valid0 = false;\n passing0 = [passing0, 1];\n }\n else {\n if (_valid0) {\n valid0 = true;\n passing0 = 1;\n }\n }\n if (!valid0) {\n const err3 = {\n instancePath,\n schemaPath: \"#/oneOf\",\n keyword: \"oneOf\",\n params: {\n passingSchemas: passing0\n },\n message: \"must match exactly one schema in oneOf\"\n };\n if (vErrors === null) {\n vErrors = [err3];\n }\n else {\n vErrors.push(err3);\n }\n errors++;\n }\n else {\n errors = _errs0;\n if (vErrors !== null) {\n if (_errs0) {\n vErrors.length = _errs0;\n }\n else {\n vErrors = null;\n }\n }\n }\n validate109.errors = vErrors;\n return errors === 0;\n}\nfunction validate113(data, { instancePath = \"\", parentData, parentDataProperty, rootData = data } = {}) {\n let vErrors = null;\n let errors = 0;\n if (data && typeof data == \"object\" && !Array.isArray(data)) {\n for (const key0 in data) {\n if (!(((((((key0 === \"alignment\") || (key0 === \"verticalAlignment\")) || (key0 === \"width\")) || (key0 === \"wrapWord\")) || (key0 === \"truncate\")) || (key0 === \"paddingLeft\")) || (key0 === \"paddingRight\"))) {\n const err0 = {\n instancePath,\n schemaPath: \"#/additionalProperties\",\n keyword: \"additionalProperties\",\n params: {\n additionalProperty: key0\n },\n message: \"must NOT have additional properties\"\n };\n if (vErrors === null) {\n vErrors = [err0];\n }\n else {\n vErrors.push(err0);\n }\n errors++;\n }\n }\n if (data.alignment !== undefined) {\n if (!(validate72(data.alignment, {\n instancePath: instancePath + \"/alignment\",\n parentData: data,\n parentDataProperty: \"alignment\",\n rootData\n }))) {\n vErrors = vErrors === null ? validate72.errors : vErrors.concat(validate72.errors);\n errors = vErrors.length;\n }\n }\n if (data.verticalAlignment !== undefined) {\n if (!(validate74(data.verticalAlignment, {\n instancePath: instancePath + \"/verticalAlignment\",\n parentData: data,\n parentDataProperty: \"verticalAlignment\",\n rootData\n }))) {\n vErrors = vErrors === null ? validate74.errors : vErrors.concat(validate74.errors);\n errors = vErrors.length;\n }\n }\n if (data.width !== undefined) {\n let data2 = data.width;\n if (!(((typeof data2 == \"number\") && (!(data2 % 1) && !isNaN(data2))) && (isFinite(data2)))) {\n const err1 = {\n instancePath: instancePath + \"/width\",\n schemaPath: \"#/properties/width/type\",\n keyword: \"type\",\n params: {\n type: \"integer\"\n },\n message: \"must be integer\"\n };\n if (vErrors === null) {\n vErrors = [err1];\n }\n else {\n vErrors.push(err1);\n }\n errors++;\n }\n if ((typeof data2 == \"number\") && (isFinite(data2))) {\n if (data2 < 1 || isNaN(data2)) {\n const err2 = {\n instancePath: instancePath + \"/width\",\n schemaPath: \"#/properties/width/minimum\",\n keyword: \"minimum\",\n params: {\n comparison: \">=\",\n limit: 1\n },\n message: \"must be >= 1\"\n };\n if (vErrors === null) {\n vErrors = [err2];\n }\n else {\n vErrors.push(err2);\n }\n errors++;\n }\n }\n }\n if (data.wrapWord !== undefined) {\n if (typeof data.wrapWord !== \"boolean\") {\n const err3 = {\n instancePath: instancePath + \"/wrapWord\",\n schemaPath: \"#/properties/wrapWord/type\",\n keyword: \"type\",\n params: {\n type: \"boolean\"\n },\n message: \"must be boolean\"\n };\n if (vErrors === null) {\n vErrors = [err3];\n }\n else {\n vErrors.push(err3);\n }\n errors++;\n }\n }\n if (data.truncate !== undefined) {\n let data4 = data.truncate;\n if (!(((typeof data4 == \"number\") && (!(data4 % 1) && !isNaN(data4))) && (isFinite(data4)))) {\n const err4 = {\n instancePath: instancePath + \"/truncate\",\n schemaPath: \"#/properties/truncate/type\",\n keyword: \"type\",\n params: {\n type: \"integer\"\n },\n message: \"must be integer\"\n };\n if (vErrors === null) {\n vErrors = [err4];\n }\n else {\n vErrors.push(err4);\n }\n errors++;\n }\n }\n if (data.paddingLeft !== undefined) {\n let data5 = data.paddingLeft;\n if (!(((typeof data5 == \"number\") && (!(data5 % 1) && !isNaN(data5))) && (isFinite(data5)))) {\n const err5 = {\n instancePath: instancePath + \"/paddingLeft\",\n schemaPath: \"#/properties/paddingLeft/type\",\n keyword: \"type\",\n params: {\n type: \"integer\"\n },\n message: \"must be integer\"\n };\n if (vErrors === null) {\n vErrors = [err5];\n }\n else {\n vErrors.push(err5);\n }\n errors++;\n }\n }\n if (data.paddingRight !== undefined) {\n let data6 = data.paddingRight;\n if (!(((typeof data6 == \"number\") && (!(data6 % 1) && !isNaN(data6))) && (isFinite(data6)))) {\n const err6 = {\n instancePath: instancePath + \"/paddingRight\",\n schemaPath: \"#/properties/paddingRight/type\",\n keyword: \"type\",\n params: {\n type: \"integer\"\n },\n message: \"must be integer\"\n };\n if (vErrors === null) {\n vErrors = [err6];\n }\n else {\n vErrors.push(err6);\n }\n errors++;\n }\n }\n }\n else {\n const err7 = {\n instancePath,\n schemaPath: \"#/type\",\n keyword: \"type\",\n params: {\n type: \"object\"\n },\n message: \"must be object\"\n };\n if (vErrors === null) {\n vErrors = [err7];\n }\n else {\n vErrors.push(err7);\n }\n errors++;\n }\n validate113.errors = vErrors;\n return errors === 0;\n}\nfunction validate86(data, { instancePath = \"\", parentData, parentDataProperty, rootData = data } = {}) {\n /*# sourceURL=\"streamConfig.json\" */ ;\n let vErrors = null;\n let errors = 0;\n if (data && typeof data == \"object\" && !Array.isArray(data)) {\n if (data.columnDefault === undefined) {\n const err0 = {\n instancePath,\n schemaPath: \"#/required\",\n keyword: \"required\",\n params: {\n missingProperty: \"columnDefault\"\n },\n message: \"must have required property '\" + \"columnDefault\" + \"'\"\n };\n if (vErrors === null) {\n vErrors = [err0];\n }\n else {\n vErrors.push(err0);\n }\n errors++;\n }\n if (data.columnCount === undefined) {\n const err1 = {\n instancePath,\n schemaPath: \"#/required\",\n keyword: \"required\",\n params: {\n missingProperty: \"columnCount\"\n },\n message: \"must have required property '\" + \"columnCount\" + \"'\"\n };\n if (vErrors === null) {\n vErrors = [err1];\n }\n else {\n vErrors.push(err1);\n }\n errors++;\n }\n for (const key0 in data) {\n if (!(((((key0 === \"border\") || (key0 === \"columns\")) || (key0 === \"columnDefault\")) || (key0 === \"columnCount\")) || (key0 === \"drawVerticalLine\"))) {\n const err2 = {\n instancePath,\n schemaPath: \"#/additionalProperties\",\n keyword: \"additionalProperties\",\n params: {\n additionalProperty: key0\n },\n message: \"must NOT have additional properties\"\n };\n if (vErrors === null) {\n vErrors = [err2];\n }\n else {\n vErrors.push(err2);\n }\n errors++;\n }\n }\n if (data.border !== undefined) {\n if (!(validate87(data.border, {\n instancePath: instancePath + \"/border\",\n parentData: data,\n parentDataProperty: \"border\",\n rootData\n }))) {\n vErrors = vErrors === null ? validate87.errors : vErrors.concat(validate87.errors);\n errors = vErrors.length;\n }\n }\n if (data.columns !== undefined) {\n if (!(validate109(data.columns, {\n instancePath: instancePath + \"/columns\",\n parentData: data,\n parentDataProperty: \"columns\",\n rootData\n }))) {\n vErrors = vErrors === null ? validate109.errors : vErrors.concat(validate109.errors);\n errors = vErrors.length;\n }\n }\n if (data.columnDefault !== undefined) {\n if (!(validate113(data.columnDefault, {\n instancePath: instancePath + \"/columnDefault\",\n parentData: data,\n parentDataProperty: \"columnDefault\",\n rootData\n }))) {\n vErrors = vErrors === null ? validate113.errors : vErrors.concat(validate113.errors);\n errors = vErrors.length;\n }\n }\n if (data.columnCount !== undefined) {\n let data3 = data.columnCount;\n if (!(((typeof data3 == \"number\") && (!(data3 % 1) && !isNaN(data3))) && (isFinite(data3)))) {\n const err3 = {\n instancePath: instancePath + \"/columnCount\",\n schemaPath: \"#/properties/columnCount/type\",\n keyword: \"type\",\n params: {\n type: \"integer\"\n },\n message: \"must be integer\"\n };\n if (vErrors === null) {\n vErrors = [err3];\n }\n else {\n vErrors.push(err3);\n }\n errors++;\n }\n if ((typeof data3 == \"number\") && (isFinite(data3))) {\n if (data3 < 1 || isNaN(data3)) {\n const err4 = {\n instancePath: instancePath + \"/columnCount\",\n schemaPath: \"#/properties/columnCount/minimum\",\n keyword: \"minimum\",\n params: {\n comparison: \">=\",\n limit: 1\n },\n message: \"must be >= 1\"\n };\n if (vErrors === null) {\n vErrors = [err4];\n }\n else {\n vErrors.push(err4);\n }\n errors++;\n }\n }\n }\n if (data.drawVerticalLine !== undefined) {\n if (typeof data.drawVerticalLine != \"function\") {\n const err5 = {\n instancePath: instancePath + \"/drawVerticalLine\",\n schemaPath: \"#/properties/drawVerticalLine/typeof\",\n keyword: \"typeof\",\n params: {},\n message: \"must pass \\\"typeof\\\" keyword validation\"\n };\n if (vErrors === null) {\n vErrors = [err5];\n }\n else {\n vErrors.push(err5);\n }\n errors++;\n }\n }\n }\n else {\n const err6 = {\n instancePath,\n schemaPath: \"#/type\",\n keyword: \"type\",\n params: {\n type: \"object\"\n },\n message: \"must be object\"\n };\n if (vErrors === null) {\n vErrors = [err6];\n }\n else {\n vErrors.push(err6);\n }\n errors++;\n }\n validate86.errors = vErrors;\n return errors === 0;\n}\n//# sourceMappingURL=validators.js.map","\"use strict\";\n/* eslint-disable sort-keys-fix/sort-keys-fix */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getBorderCharacters = void 0;\nconst getBorderCharacters = (name) => {\n if (name === 'honeywell') {\n return {\n topBody: '═',\n topJoin: '╤',\n topLeft: '╔',\n topRight: '╗',\n bottomBody: '═',\n bottomJoin: '╧',\n bottomLeft: '╚',\n bottomRight: '╝',\n bodyLeft: '║',\n bodyRight: '║',\n bodyJoin: '│',\n headerJoin: '┬',\n joinBody: '─',\n joinLeft: '╟',\n joinRight: '╢',\n joinJoin: '┼',\n joinMiddleDown: '┬',\n joinMiddleUp: '┴',\n joinMiddleLeft: '┤',\n joinMiddleRight: '├',\n };\n }\n if (name === 'norc') {\n return {\n topBody: '─',\n topJoin: '┬',\n topLeft: '┌',\n topRight: '┐',\n bottomBody: '─',\n bottomJoin: '┴',\n bottomLeft: '└',\n bottomRight: '┘',\n bodyLeft: '│',\n bodyRight: '│',\n bodyJoin: '│',\n headerJoin: '┬',\n joinBody: '─',\n joinLeft: '├',\n joinRight: '┤',\n joinJoin: '┼',\n joinMiddleDown: '┬',\n joinMiddleUp: '┴',\n joinMiddleLeft: '┤',\n joinMiddleRight: '├',\n };\n }\n if (name === 'ramac') {\n return {\n topBody: '-',\n topJoin: '+',\n topLeft: '+',\n topRight: '+',\n bottomBody: '-',\n bottomJoin: '+',\n bottomLeft: '+',\n bottomRight: '+',\n bodyLeft: '|',\n bodyRight: '|',\n bodyJoin: '|',\n headerJoin: '+',\n joinBody: '-',\n joinLeft: '|',\n joinRight: '|',\n joinJoin: '|',\n joinMiddleDown: '+',\n joinMiddleUp: '+',\n joinMiddleLeft: '+',\n joinMiddleRight: '+',\n };\n }\n if (name === 'void') {\n return {\n topBody: '',\n topJoin: '',\n topLeft: '',\n topRight: '',\n bottomBody: '',\n bottomJoin: '',\n bottomLeft: '',\n bottomRight: '',\n bodyLeft: '',\n bodyRight: '',\n bodyJoin: '',\n headerJoin: '',\n joinBody: '',\n joinLeft: '',\n joinRight: '',\n joinJoin: '',\n joinMiddleDown: '',\n joinMiddleUp: '',\n joinMiddleLeft: '',\n joinMiddleRight: '',\n };\n }\n throw new Error('Unknown border template \"' + name + '\".');\n};\nexports.getBorderCharacters = getBorderCharacters;\n//# sourceMappingURL=getBorderCharacters.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getBorderCharacters = exports.createStream = exports.table = void 0;\nconst createStream_1 = require(\"./createStream\");\nObject.defineProperty(exports, \"createStream\", { enumerable: true, get: function () { return createStream_1.createStream; } });\nconst getBorderCharacters_1 = require(\"./getBorderCharacters\");\nObject.defineProperty(exports, \"getBorderCharacters\", { enumerable: true, get: function () { return getBorderCharacters_1.getBorderCharacters; } });\nconst table_1 = require(\"./table\");\nObject.defineProperty(exports, \"table\", { enumerable: true, get: function () { return table_1.table; } });\n__exportStar(require(\"./types/api\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.injectHeaderConfig = void 0;\nconst injectHeaderConfig = (rows, config) => {\n var _a;\n let spanningCellConfig = (_a = config.spanningCells) !== null && _a !== void 0 ? _a : [];\n const headerConfig = config.header;\n const adjustedRows = [...rows];\n if (headerConfig) {\n spanningCellConfig = spanningCellConfig.map(({ row, ...rest }) => {\n return { ...rest,\n row: row + 1 };\n });\n const { content, ...headerStyles } = headerConfig;\n spanningCellConfig.unshift({ alignment: 'center',\n col: 0,\n colSpan: rows[0].length,\n paddingLeft: 1,\n paddingRight: 1,\n row: 0,\n wrapWord: false,\n ...headerStyles });\n adjustedRows.unshift([content, ...Array.from({ length: rows[0].length - 1 }).fill('')]);\n }\n return [adjustedRows,\n spanningCellConfig];\n};\nexports.injectHeaderConfig = injectHeaderConfig;\n//# sourceMappingURL=injectHeaderConfig.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.makeRangeConfig = void 0;\nconst utils_1 = require(\"./utils\");\nconst makeRangeConfig = (spanningCellConfig, columnsConfig) => {\n var _a;\n const { topLeft, bottomRight } = (0, utils_1.calculateRangeCoordinate)(spanningCellConfig);\n const cellConfig = {\n ...columnsConfig[topLeft.col],\n ...spanningCellConfig,\n paddingRight: (_a = spanningCellConfig.paddingRight) !== null && _a !== void 0 ? _a : columnsConfig[bottomRight.col].paddingRight,\n };\n return { ...cellConfig,\n bottomRight,\n topLeft };\n};\nexports.makeRangeConfig = makeRangeConfig;\n//# sourceMappingURL=makeRangeConfig.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.makeStreamConfig = void 0;\nconst utils_1 = require(\"./utils\");\nconst validateConfig_1 = require(\"./validateConfig\");\n/**\n * Creates a configuration for every column using default\n * values for the missing configuration properties.\n */\nconst makeColumnsConfig = (columnCount, columns = {}, columnDefault) => {\n return Array.from({ length: columnCount }).map((_, index) => {\n return {\n alignment: 'left',\n paddingLeft: 1,\n paddingRight: 1,\n truncate: Number.POSITIVE_INFINITY,\n verticalAlignment: 'top',\n wrapWord: false,\n ...columnDefault,\n ...columns[index],\n };\n });\n};\n/**\n * Makes a new configuration object out of the userConfig object\n * using default values for the missing configuration properties.\n */\nconst makeStreamConfig = (config) => {\n (0, validateConfig_1.validateConfig)('streamConfig.json', config);\n if (config.columnDefault.width === undefined) {\n throw new Error('Must provide config.columnDefault.width when creating a stream.');\n }\n return {\n drawVerticalLine: () => {\n return true;\n },\n ...config,\n border: (0, utils_1.makeBorderConfig)(config.border),\n columns: makeColumnsConfig(config.columnCount, config.columns, config.columnDefault),\n };\n};\nexports.makeStreamConfig = makeStreamConfig;\n//# sourceMappingURL=makeStreamConfig.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.makeTableConfig = void 0;\nconst calculateMaximumColumnWidths_1 = require(\"./calculateMaximumColumnWidths\");\nconst spanningCellManager_1 = require(\"./spanningCellManager\");\nconst utils_1 = require(\"./utils\");\nconst validateConfig_1 = require(\"./validateConfig\");\nconst validateSpanningCellConfig_1 = require(\"./validateSpanningCellConfig\");\n/**\n * Creates a configuration for every column using default\n * values for the missing configuration properties.\n */\nconst makeColumnsConfig = (rows, columns, columnDefault, spanningCellConfigs) => {\n const columnWidths = (0, calculateMaximumColumnWidths_1.calculateMaximumColumnWidths)(rows, spanningCellConfigs);\n return rows[0].map((_, columnIndex) => {\n return {\n alignment: 'left',\n paddingLeft: 1,\n paddingRight: 1,\n truncate: Number.POSITIVE_INFINITY,\n verticalAlignment: 'top',\n width: columnWidths[columnIndex],\n wrapWord: false,\n ...columnDefault,\n ...columns === null || columns === void 0 ? void 0 : columns[columnIndex],\n };\n });\n};\n/**\n * Makes a new configuration object out of the userConfig object\n * using default values for the missing configuration properties.\n */\nconst makeTableConfig = (rows, config = {}, injectedSpanningCellConfig) => {\n var _a, _b, _c, _d, _e;\n (0, validateConfig_1.validateConfig)('config.json', config);\n (0, validateSpanningCellConfig_1.validateSpanningCellConfig)(rows, (_a = config.spanningCells) !== null && _a !== void 0 ? _a : []);\n const spanningCellConfigs = (_b = injectedSpanningCellConfig !== null && injectedSpanningCellConfig !== void 0 ? injectedSpanningCellConfig : config.spanningCells) !== null && _b !== void 0 ? _b : [];\n const columnsConfig = makeColumnsConfig(rows, config.columns, config.columnDefault, spanningCellConfigs);\n const drawVerticalLine = (_c = config.drawVerticalLine) !== null && _c !== void 0 ? _c : (() => {\n return true;\n });\n const drawHorizontalLine = (_d = config.drawHorizontalLine) !== null && _d !== void 0 ? _d : (() => {\n return true;\n });\n return {\n ...config,\n border: (0, utils_1.makeBorderConfig)(config.border),\n columns: columnsConfig,\n drawHorizontalLine,\n drawVerticalLine,\n singleLine: (_e = config.singleLine) !== null && _e !== void 0 ? _e : false,\n spanningCellManager: (0, spanningCellManager_1.createSpanningCellManager)({\n columnsConfig,\n drawHorizontalLine,\n drawVerticalLine,\n rows,\n spanningCellConfigs,\n }),\n };\n};\nexports.makeTableConfig = makeTableConfig;\n//# sourceMappingURL=makeTableConfig.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.mapDataUsingRowHeights = exports.padCellVertically = void 0;\nconst utils_1 = require(\"./utils\");\nconst wrapCell_1 = require(\"./wrapCell\");\nconst createEmptyStrings = (length) => {\n return new Array(length).fill('');\n};\nconst padCellVertically = (lines, rowHeight, verticalAlignment) => {\n const availableLines = rowHeight - lines.length;\n if (verticalAlignment === 'top') {\n return [...lines, ...createEmptyStrings(availableLines)];\n }\n if (verticalAlignment === 'bottom') {\n return [...createEmptyStrings(availableLines), ...lines];\n }\n return [\n ...createEmptyStrings(Math.floor(availableLines / 2)),\n ...lines,\n ...createEmptyStrings(Math.ceil(availableLines / 2)),\n ];\n};\nexports.padCellVertically = padCellVertically;\nconst mapDataUsingRowHeights = (unmappedRows, rowHeights, config) => {\n const nColumns = unmappedRows[0].length;\n const mappedRows = unmappedRows.map((unmappedRow, unmappedRowIndex) => {\n const outputRowHeight = rowHeights[unmappedRowIndex];\n const outputRow = Array.from({ length: outputRowHeight }, () => {\n return new Array(nColumns).fill('');\n });\n unmappedRow.forEach((cell, cellIndex) => {\n var _a;\n const containingRange = (_a = config.spanningCellManager) === null || _a === void 0 ? void 0 : _a.getContainingRange({ col: cellIndex,\n row: unmappedRowIndex });\n if (containingRange) {\n containingRange.extractCellContent(unmappedRowIndex).forEach((cellLine, cellLineIndex) => {\n outputRow[cellLineIndex][cellIndex] = cellLine;\n });\n return;\n }\n const cellLines = (0, wrapCell_1.wrapCell)(cell, config.columns[cellIndex].width, config.columns[cellIndex].wrapWord);\n const paddedCellLines = (0, exports.padCellVertically)(cellLines, outputRowHeight, config.columns[cellIndex].verticalAlignment);\n paddedCellLines.forEach((cellLine, cellLineIndex) => {\n outputRow[cellLineIndex][cellIndex] = cellLine;\n });\n });\n return outputRow;\n });\n return (0, utils_1.flatten)(mappedRows);\n};\nexports.mapDataUsingRowHeights = mapDataUsingRowHeights;\n//# sourceMappingURL=mapDataUsingRowHeights.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.padTableData = exports.padString = void 0;\nconst padString = (input, paddingLeft, paddingRight) => {\n return ' '.repeat(paddingLeft) + input + ' '.repeat(paddingRight);\n};\nexports.padString = padString;\nconst padTableData = (rows, config) => {\n return rows.map((cells, rowIndex) => {\n return cells.map((cell, cellIndex) => {\n var _a;\n const containingRange = (_a = config.spanningCellManager) === null || _a === void 0 ? void 0 : _a.getContainingRange({ col: cellIndex,\n row: rowIndex }, { mapped: true });\n if (containingRange) {\n return cell;\n }\n const { paddingLeft, paddingRight } = config.columns[cellIndex];\n return (0, exports.padString)(cell, paddingLeft, paddingRight);\n });\n });\n};\nexports.padTableData = padTableData;\n//# sourceMappingURL=padTableData.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.createSpanningCellManager = void 0;\nconst alignSpanningCell_1 = require(\"./alignSpanningCell\");\nconst calculateSpanningCellWidth_1 = require(\"./calculateSpanningCellWidth\");\nconst makeRangeConfig_1 = require(\"./makeRangeConfig\");\nconst utils_1 = require(\"./utils\");\nconst findRangeConfig = (cell, rangeConfigs) => {\n return rangeConfigs.find((rangeCoordinate) => {\n return (0, utils_1.isCellInRange)(cell, rangeCoordinate);\n });\n};\nconst getContainingRange = (rangeConfig, context) => {\n const width = (0, calculateSpanningCellWidth_1.calculateSpanningCellWidth)(rangeConfig, context);\n const wrappedContent = (0, alignSpanningCell_1.wrapRangeContent)(rangeConfig, width, context);\n const alignedContent = (0, alignSpanningCell_1.alignVerticalRangeContent)(rangeConfig, wrappedContent, context);\n const getCellContent = (rowIndex) => {\n const { topLeft } = rangeConfig;\n const { drawHorizontalLine, rowHeights } = context;\n const totalWithinHorizontalBorderHeight = rowIndex - topLeft.row;\n const totalHiddenHorizontalBorderHeight = (0, utils_1.sequence)(topLeft.row + 1, rowIndex).filter((index) => {\n /* istanbul ignore next */\n return !(drawHorizontalLine === null || drawHorizontalLine === void 0 ? void 0 : drawHorizontalLine(index, rowHeights.length));\n }).length;\n const offset = (0, utils_1.sumArray)(rowHeights.slice(topLeft.row, rowIndex)) + totalWithinHorizontalBorderHeight - totalHiddenHorizontalBorderHeight;\n return alignedContent.slice(offset, offset + rowHeights[rowIndex]);\n };\n const getBorderContent = (borderIndex) => {\n const { topLeft } = rangeConfig;\n const offset = (0, utils_1.sumArray)(context.rowHeights.slice(topLeft.row, borderIndex)) + (borderIndex - topLeft.row - 1);\n return alignedContent[offset];\n };\n return {\n ...rangeConfig,\n extractBorderContent: getBorderContent,\n extractCellContent: getCellContent,\n height: wrappedContent.length,\n width,\n };\n};\nconst inSameRange = (cell1, cell2, ranges) => {\n const range1 = findRangeConfig(cell1, ranges);\n const range2 = findRangeConfig(cell2, ranges);\n if (range1 && range2) {\n return (0, utils_1.areCellEqual)(range1.topLeft, range2.topLeft);\n }\n return false;\n};\nconst hashRange = (range) => {\n const { row, col } = range.topLeft;\n return `${row}/${col}`;\n};\nconst createSpanningCellManager = (parameters) => {\n const { spanningCellConfigs, columnsConfig } = parameters;\n const ranges = spanningCellConfigs.map((config) => {\n return (0, makeRangeConfig_1.makeRangeConfig)(config, columnsConfig);\n });\n const rangeCache = {};\n let rowHeights = [];\n let rowIndexMapping = [];\n return { getContainingRange: (cell, options) => {\n var _a;\n const originalRow = (options === null || options === void 0 ? void 0 : options.mapped) ? rowIndexMapping[cell.row] : cell.row;\n const range = findRangeConfig({ ...cell,\n row: originalRow }, ranges);\n if (!range) {\n return undefined;\n }\n if (rowHeights.length === 0) {\n return getContainingRange(range, { ...parameters,\n rowHeights });\n }\n const hash = hashRange(range);\n (_a = rangeCache[hash]) !== null && _a !== void 0 ? _a : (rangeCache[hash] = getContainingRange(range, { ...parameters,\n rowHeights }));\n return rangeCache[hash];\n },\n inSameRange: (cell1, cell2) => {\n return inSameRange(cell1, cell2, ranges);\n },\n rowHeights,\n rowIndexMapping,\n setRowHeights: (_rowHeights) => {\n rowHeights = _rowHeights;\n },\n setRowIndexMapping: (mappedRowHeights) => {\n rowIndexMapping = (0, utils_1.flatten)(mappedRowHeights.map((height, index) => {\n return Array.from({ length: height }, () => {\n return index;\n });\n }));\n } };\n};\nexports.createSpanningCellManager = createSpanningCellManager;\n//# sourceMappingURL=spanningCellManager.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.stringifyTableData = void 0;\nconst utils_1 = require(\"./utils\");\nconst stringifyTableData = (rows) => {\n return rows.map((cells) => {\n return cells.map((cell) => {\n return (0, utils_1.normalizeString)(String(cell));\n });\n });\n};\nexports.stringifyTableData = stringifyTableData;\n//# sourceMappingURL=stringifyTableData.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.table = void 0;\nconst alignTableData_1 = require(\"./alignTableData\");\nconst calculateOutputColumnWidths_1 = require(\"./calculateOutputColumnWidths\");\nconst calculateRowHeights_1 = require(\"./calculateRowHeights\");\nconst drawTable_1 = require(\"./drawTable\");\nconst injectHeaderConfig_1 = require(\"./injectHeaderConfig\");\nconst makeTableConfig_1 = require(\"./makeTableConfig\");\nconst mapDataUsingRowHeights_1 = require(\"./mapDataUsingRowHeights\");\nconst padTableData_1 = require(\"./padTableData\");\nconst stringifyTableData_1 = require(\"./stringifyTableData\");\nconst truncateTableData_1 = require(\"./truncateTableData\");\nconst utils_1 = require(\"./utils\");\nconst validateTableData_1 = require(\"./validateTableData\");\nconst table = (data, userConfig = {}) => {\n (0, validateTableData_1.validateTableData)(data);\n let rows = (0, stringifyTableData_1.stringifyTableData)(data);\n const [injectedRows, injectedSpanningCellConfig] = (0, injectHeaderConfig_1.injectHeaderConfig)(rows, userConfig);\n const config = (0, makeTableConfig_1.makeTableConfig)(injectedRows, userConfig, injectedSpanningCellConfig);\n rows = (0, truncateTableData_1.truncateTableData)(injectedRows, (0, utils_1.extractTruncates)(config));\n const rowHeights = (0, calculateRowHeights_1.calculateRowHeights)(rows, config);\n config.spanningCellManager.setRowHeights(rowHeights);\n config.spanningCellManager.setRowIndexMapping(rowHeights);\n rows = (0, mapDataUsingRowHeights_1.mapDataUsingRowHeights)(rows, rowHeights, config);\n rows = (0, alignTableData_1.alignTableData)(rows, config);\n rows = (0, padTableData_1.padTableData)(rows, config);\n const outputColumnWidths = (0, calculateOutputColumnWidths_1.calculateOutputColumnWidths)(config);\n return (0, drawTable_1.drawTable)(rows, outputColumnWidths, rowHeights, config);\n};\nexports.table = table;\n//# sourceMappingURL=table.js.map","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.truncateTableData = exports.truncateString = void 0;\nconst lodash_truncate_1 = __importDefault(require(\"lodash.truncate\"));\nconst truncateString = (input, length) => {\n return (0, lodash_truncate_1.default)(input, { length,\n omission: '…' });\n};\nexports.truncateString = truncateString;\n/**\n * @todo Make it work with ASCII content.\n */\nconst truncateTableData = (rows, truncates) => {\n return rows.map((cells) => {\n return cells.map((cell, cellIndex) => {\n return (0, exports.truncateString)(cell, truncates[cellIndex]);\n });\n });\n};\nexports.truncateTableData = truncateTableData;\n//# sourceMappingURL=truncateTableData.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//# sourceMappingURL=api.js.map","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isCellInRange = exports.areCellEqual = exports.calculateRangeCoordinate = exports.flatten = exports.extractTruncates = exports.sumArray = exports.sequence = exports.distributeUnevenly = exports.countSpaceSequence = exports.groupBySizes = exports.makeBorderConfig = exports.splitAnsi = exports.normalizeString = void 0;\nconst slice_ansi_1 = __importDefault(require(\"slice-ansi\"));\nconst string_width_1 = __importDefault(require(\"string-width\"));\nconst strip_ansi_1 = __importDefault(require(\"strip-ansi\"));\nconst getBorderCharacters_1 = require(\"./getBorderCharacters\");\n/**\n * Converts Windows-style newline to Unix-style\n *\n * @internal\n */\nconst normalizeString = (input) => {\n return input.replace(/\\r\\n/g, '\\n');\n};\nexports.normalizeString = normalizeString;\n/**\n * Splits ansi string by newlines\n *\n * @internal\n */\nconst splitAnsi = (input) => {\n const lengths = (0, strip_ansi_1.default)(input).split('\\n').map(string_width_1.default);\n const result = [];\n let startIndex = 0;\n lengths.forEach((length) => {\n result.push(length === 0 ? '' : (0, slice_ansi_1.default)(input, startIndex, startIndex + length));\n // Plus 1 for the newline character itself\n startIndex += length + 1;\n });\n return result;\n};\nexports.splitAnsi = splitAnsi;\n/**\n * Merges user provided border characters with the default border (\"honeywell\") characters.\n *\n * @internal\n */\nconst makeBorderConfig = (border) => {\n return {\n ...(0, getBorderCharacters_1.getBorderCharacters)('honeywell'),\n ...border,\n };\n};\nexports.makeBorderConfig = makeBorderConfig;\n/**\n * Groups the array into sub-arrays by sizes.\n *\n * @internal\n * @example\n * groupBySizes(['a', 'b', 'c', 'd', 'e'], [2, 1, 2]) = [ ['a', 'b'], ['c'], ['d', 'e'] ]\n */\nconst groupBySizes = (array, sizes) => {\n let startIndex = 0;\n return sizes.map((size) => {\n const group = array.slice(startIndex, startIndex + size);\n startIndex += size;\n return group;\n });\n};\nexports.groupBySizes = groupBySizes;\n/**\n * Counts the number of continuous spaces in a string\n *\n * @internal\n * @example\n * countGroupSpaces('a bc de f') = 3\n */\nconst countSpaceSequence = (input) => {\n var _a, _b;\n return (_b = (_a = input.match(/\\s+/g)) === null || _a === void 0 ? void 0 : _a.length) !== null && _b !== void 0 ? _b : 0;\n};\nexports.countSpaceSequence = countSpaceSequence;\n/**\n * Creates the non-increasing number array given sum and length\n * whose the difference between maximum and minimum is not greater than 1\n *\n * @internal\n * @example\n * distributeUnevenly(6, 3) = [2, 2, 2]\n * distributeUnevenly(8, 3) = [3, 3, 2]\n */\nconst distributeUnevenly = (sum, length) => {\n const result = Array.from({ length }).fill(Math.floor(sum / length));\n return result.map((element, index) => {\n return element + (index < sum % length ? 1 : 0);\n });\n};\nexports.distributeUnevenly = distributeUnevenly;\nconst sequence = (start, end) => {\n return Array.from({ length: end - start + 1 }, (_, index) => {\n return index + start;\n });\n};\nexports.sequence = sequence;\nconst sumArray = (array) => {\n return array.reduce((accumulator, element) => {\n return accumulator + element;\n }, 0);\n};\nexports.sumArray = sumArray;\nconst extractTruncates = (config) => {\n return config.columns.map(({ truncate }) => {\n return truncate;\n });\n};\nexports.extractTruncates = extractTruncates;\nconst flatten = (array) => {\n return [].concat(...array);\n};\nexports.flatten = flatten;\nconst calculateRangeCoordinate = (spanningCellConfig) => {\n const { row, col, colSpan = 1, rowSpan = 1 } = spanningCellConfig;\n return { bottomRight: { col: col + colSpan - 1,\n row: row + rowSpan - 1 },\n topLeft: { col,\n row } };\n};\nexports.calculateRangeCoordinate = calculateRangeCoordinate;\nconst areCellEqual = (cell1, cell2) => {\n return cell1.row === cell2.row && cell1.col === cell2.col;\n};\nexports.areCellEqual = areCellEqual;\nconst isCellInRange = (cell, { topLeft, bottomRight }) => {\n return (topLeft.row <= cell.row &&\n cell.row <= bottomRight.row &&\n topLeft.col <= cell.col &&\n cell.col <= bottomRight.col);\n};\nexports.isCellInRange = isCellInRange;\n//# sourceMappingURL=utils.js.map","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.validateConfig = void 0;\nconst validators_1 = __importDefault(require(\"./generated/validators\"));\nconst validateConfig = (schemaId, config) => {\n const validate = validators_1.default[schemaId];\n if (!validate(config) && validate.errors) {\n // eslint-disable-next-line promise/prefer-await-to-callbacks\n const errors = validate.errors.map((error) => {\n return {\n message: error.message,\n params: error.params,\n schemaPath: error.schemaPath,\n };\n });\n /* eslint-disable no-console */\n console.log('config', config);\n console.log('errors', errors);\n /* eslint-enable no-console */\n throw new Error('Invalid config.');\n }\n};\nexports.validateConfig = validateConfig;\n//# sourceMappingURL=validateConfig.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.validateSpanningCellConfig = void 0;\nconst utils_1 = require(\"./utils\");\nconst inRange = (start, end, value) => {\n return start <= value && value <= end;\n};\nconst validateSpanningCellConfig = (rows, configs) => {\n const [nRow, nCol] = [rows.length, rows[0].length];\n configs.forEach((config, configIndex) => {\n const { colSpan, rowSpan } = config;\n if (colSpan === undefined && rowSpan === undefined) {\n throw new Error(`Expect at least colSpan or rowSpan is provided in config.spanningCells[${configIndex}]`);\n }\n if (colSpan !== undefined && colSpan < 1) {\n throw new Error(`Expect colSpan is not equal zero, instead got: ${colSpan} in config.spanningCells[${configIndex}]`);\n }\n if (rowSpan !== undefined && rowSpan < 1) {\n throw new Error(`Expect rowSpan is not equal zero, instead got: ${rowSpan} in config.spanningCells[${configIndex}]`);\n }\n });\n const rangeCoordinates = configs.map(utils_1.calculateRangeCoordinate);\n rangeCoordinates.forEach(({ topLeft, bottomRight }, rangeIndex) => {\n if (!inRange(0, nCol - 1, topLeft.col) ||\n !inRange(0, nRow - 1, topLeft.row) ||\n !inRange(0, nCol - 1, bottomRight.col) ||\n !inRange(0, nRow - 1, bottomRight.row)) {\n throw new Error(`Some cells in config.spanningCells[${rangeIndex}] are out of the table`);\n }\n });\n const configOccupy = Array.from({ length: nRow }, () => {\n return Array.from({ length: nCol });\n });\n rangeCoordinates.forEach(({ topLeft, bottomRight }, rangeIndex) => {\n (0, utils_1.sequence)(topLeft.row, bottomRight.row).forEach((row) => {\n (0, utils_1.sequence)(topLeft.col, bottomRight.col).forEach((col) => {\n if (configOccupy[row][col] !== undefined) {\n throw new Error(`Spanning cells in config.spanningCells[${configOccupy[row][col]}] and config.spanningCells[${rangeIndex}] are overlap each other`);\n }\n configOccupy[row][col] = rangeIndex;\n });\n });\n });\n};\nexports.validateSpanningCellConfig = validateSpanningCellConfig;\n//# sourceMappingURL=validateSpanningCellConfig.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.validateTableData = void 0;\nconst utils_1 = require(\"./utils\");\nconst validateTableData = (rows) => {\n if (!Array.isArray(rows)) {\n throw new TypeError('Table data must be an array.');\n }\n if (rows.length === 0) {\n throw new Error('Table must define at least one row.');\n }\n if (rows[0].length === 0) {\n throw new Error('Table must define at least one column.');\n }\n const columnNumber = rows[0].length;\n for (const row of rows) {\n if (!Array.isArray(row)) {\n throw new TypeError('Table row data must be an array.');\n }\n if (row.length !== columnNumber) {\n throw new Error('Table must have a consistent number of cells.');\n }\n for (const cell of row) {\n // eslint-disable-next-line no-control-regex\n if (/[\\u0001-\\u0006\\u0008\\u0009\\u000B-\\u001A]/.test((0, utils_1.normalizeString)(String(cell)))) {\n throw new Error('Table data must not contain control characters.');\n }\n }\n }\n};\nexports.validateTableData = validateTableData;\n//# sourceMappingURL=validateTableData.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.wrapCell = void 0;\nconst utils_1 = require(\"./utils\");\nconst wrapString_1 = require(\"./wrapString\");\nconst wrapWord_1 = require(\"./wrapWord\");\n/**\n * Wrap a single cell value into a list of lines\n *\n * Always wraps on newlines, for the remainder uses either word or string wrapping\n * depending on user configuration.\n *\n */\nconst wrapCell = (cellValue, cellWidth, useWrapWord) => {\n // First split on literal newlines\n const cellLines = (0, utils_1.splitAnsi)(cellValue);\n // Then iterate over the list and word-wrap every remaining line if necessary.\n for (let lineNr = 0; lineNr < cellLines.length;) {\n let lineChunks;\n if (useWrapWord) {\n lineChunks = (0, wrapWord_1.wrapWord)(cellLines[lineNr], cellWidth);\n }\n else {\n lineChunks = (0, wrapString_1.wrapString)(cellLines[lineNr], cellWidth);\n }\n // Replace our original array element with whatever the wrapping returned\n cellLines.splice(lineNr, 1, ...lineChunks);\n lineNr += lineChunks.length;\n }\n return cellLines;\n};\nexports.wrapCell = wrapCell;\n//# sourceMappingURL=wrapCell.js.map","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.wrapString = void 0;\nconst slice_ansi_1 = __importDefault(require(\"slice-ansi\"));\nconst string_width_1 = __importDefault(require(\"string-width\"));\n/**\n * Creates an array of strings split into groups the length of size.\n * This function works with strings that contain ASCII characters.\n *\n * wrapText is different from would-be \"chunk\" implementation\n * in that whitespace characters that occur on a chunk size limit are trimmed.\n *\n */\nconst wrapString = (subject, size) => {\n let subjectSlice = subject;\n const chunks = [];\n do {\n chunks.push((0, slice_ansi_1.default)(subjectSlice, 0, size));\n subjectSlice = (0, slice_ansi_1.default)(subjectSlice, size).trim();\n } while ((0, string_width_1.default)(subjectSlice));\n return chunks;\n};\nexports.wrapString = wrapString;\n//# sourceMappingURL=wrapString.js.map","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.wrapWord = void 0;\nconst slice_ansi_1 = __importDefault(require(\"slice-ansi\"));\nconst strip_ansi_1 = __importDefault(require(\"strip-ansi\"));\nconst calculateStringLengths = (input, size) => {\n let subject = (0, strip_ansi_1.default)(input);\n const chunks = [];\n // https://regex101.com/r/gY5kZ1/1\n const re = new RegExp('(^.{1,' + String(Math.max(size, 1)) + '}(\\\\s+|$))|(^.{1,' + String(Math.max(size - 1, 1)) + '}(\\\\\\\\|/|_|\\\\.|,|;|-))');\n do {\n let chunk;\n const match = re.exec(subject);\n if (match) {\n chunk = match[0];\n subject = subject.slice(chunk.length);\n const trimmedLength = chunk.trim().length;\n const offset = chunk.length - trimmedLength;\n chunks.push([trimmedLength, offset]);\n }\n else {\n chunk = subject.slice(0, size);\n subject = subject.slice(size);\n chunks.push([chunk.length, 0]);\n }\n } while (subject.length);\n return chunks;\n};\nconst wrapWord = (input, size) => {\n const result = [];\n let startIndex = 0;\n calculateStringLengths(input, size).forEach(([length, offset]) => {\n result.push((0, slice_ansi_1.default)(input, startIndex, startIndex + length));\n startIndex += length + offset;\n });\n return result;\n};\nexports.wrapWord = wrapWord;\n//# sourceMappingURL=wrapWord.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n// https://github.com/ajv-validator/ajv/issues/889\nconst equal = require(\"fast-deep-equal\");\nequal.code = 'require(\"ajv/dist/runtime/equal\").default';\nexports.default = equal;\n//# sourceMappingURL=equal.js.map","/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global global, define, Symbol, Reflect, Promise, SuppressedError, Iterator */\r\nvar __extends;\r\nvar __assign;\r\nvar __rest;\r\nvar __decorate;\r\nvar __param;\r\nvar __esDecorate;\r\nvar __runInitializers;\r\nvar __propKey;\r\nvar __setFunctionName;\r\nvar __metadata;\r\nvar __awaiter;\r\nvar __generator;\r\nvar __exportStar;\r\nvar __values;\r\nvar __read;\r\nvar __spread;\r\nvar __spreadArrays;\r\nvar __spreadArray;\r\nvar __await;\r\nvar __asyncGenerator;\r\nvar __asyncDelegator;\r\nvar __asyncValues;\r\nvar __makeTemplateObject;\r\nvar __importStar;\r\nvar __importDefault;\r\nvar __classPrivateFieldGet;\r\nvar __classPrivateFieldSet;\r\nvar __classPrivateFieldIn;\r\nvar __createBinding;\r\nvar __addDisposableResource;\r\nvar __disposeResources;\r\n(function (factory) {\r\n var root = typeof global === \"object\" ? global : typeof self === \"object\" ? self : typeof this === \"object\" ? this : {};\r\n if (typeof define === \"function\" && define.amd) {\r\n define(\"tslib\", [\"exports\"], function (exports) { factory(createExporter(root, createExporter(exports))); });\r\n }\r\n else if (typeof module === \"object\" && typeof module.exports === \"object\") {\r\n factory(createExporter(root, createExporter(module.exports)));\r\n }\r\n else {\r\n factory(createExporter(root));\r\n }\r\n function createExporter(exports, previous) {\r\n if (exports !== root) {\r\n if (typeof Object.create === \"function\") {\r\n Object.defineProperty(exports, \"__esModule\", { value: true });\r\n }\r\n else {\r\n exports.__esModule = true;\r\n }\r\n }\r\n return function (id, v) { return exports[id] = previous ? previous(id, v) : v; };\r\n }\r\n})\r\n(function (exporter) {\r\n var extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n\r\n __extends = function (d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n\r\n __assign = Object.assign || function (t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n };\r\n\r\n __rest = function (s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n };\r\n\r\n __decorate = function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n };\r\n\r\n __param = function (paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n };\r\n\r\n __esDecorate = function (ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\r\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\r\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\r\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\r\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\r\n var _, done = false;\r\n for (var i = decorators.length - 1; i >= 0; i--) {\r\n var context = {};\r\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\r\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\r\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\r\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\r\n if (kind === \"accessor\") {\r\n if (result === void 0) continue;\r\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\r\n if (_ = accept(result.get)) descriptor.get = _;\r\n if (_ = accept(result.set)) descriptor.set = _;\r\n if (_ = accept(result.init)) initializers.unshift(_);\r\n }\r\n else if (_ = accept(result)) {\r\n if (kind === \"field\") initializers.unshift(_);\r\n else descriptor[key] = _;\r\n }\r\n }\r\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\r\n done = true;\r\n };\r\n\r\n __runInitializers = function (thisArg, initializers, value) {\r\n var useValue = arguments.length > 2;\r\n for (var i = 0; i < initializers.length; i++) {\r\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\r\n }\r\n return useValue ? value : void 0;\r\n };\r\n\r\n __propKey = function (x) {\r\n return typeof x === \"symbol\" ? x : \"\".concat(x);\r\n };\r\n\r\n __setFunctionName = function (f, name, prefix) {\r\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\r\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\r\n };\r\n\r\n __metadata = function (metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n };\r\n\r\n __awaiter = function (thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n };\r\n\r\n __generator = function (thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\r\n return g.next = verb(0), g[\"throw\"] = verb(1), g[\"return\"] = verb(2), typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n };\r\n\r\n __exportStar = function(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n };\r\n\r\n __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n var desc = Object.getOwnPropertyDescriptor(m, k);\r\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\r\n desc = { enumerable: true, get: function() { return m[k]; } };\r\n }\r\n Object.defineProperty(o, k2, desc);\r\n }) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n });\r\n\r\n __values = function (o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n };\r\n\r\n __read = function (o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n };\r\n\r\n /** @deprecated */\r\n __spread = function () {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n };\r\n\r\n /** @deprecated */\r\n __spreadArrays = function () {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n };\r\n\r\n __spreadArray = function (to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n };\r\n\r\n __await = function (v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n };\r\n\r\n __asyncGenerator = function (thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = Object.create((typeof AsyncIterator === \"function\" ? AsyncIterator : Object).prototype), verb(\"next\"), verb(\"throw\"), verb(\"return\", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }\r\n function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n };\r\n\r\n __asyncDelegator = function (o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\r\n };\r\n\r\n __asyncValues = function (o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n };\r\n\r\n __makeTemplateObject = function (cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n };\r\n\r\n var __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n }) : function(o, v) {\r\n o[\"default\"] = v;\r\n };\r\n\r\n __importStar = function (mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n };\r\n\r\n __importDefault = function (mod) {\r\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\r\n };\r\n\r\n __classPrivateFieldGet = function (receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n };\r\n\r\n __classPrivateFieldSet = function (receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n };\r\n\r\n __classPrivateFieldIn = function (state, receiver) {\r\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\r\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\r\n };\r\n\r\n __addDisposableResource = function (env, value, async) {\r\n if (value !== null && value !== void 0) {\r\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\r\n var dispose, inner;\r\n if (async) {\r\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\r\n dispose = value[Symbol.asyncDispose];\r\n }\r\n if (dispose === void 0) {\r\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\r\n dispose = value[Symbol.dispose];\r\n if (async) inner = dispose;\r\n }\r\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\r\n if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\r\n env.stack.push({ value: value, dispose: dispose, async: async });\r\n }\r\n else if (async) {\r\n env.stack.push({ async: true });\r\n }\r\n return value;\r\n };\r\n\r\n var _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\r\n var e = new Error(message);\r\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\r\n };\r\n\r\n __disposeResources = function (env) {\r\n function fail(e) {\r\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\r\n env.hasError = true;\r\n }\r\n var r, s = 0;\r\n function next() {\r\n while (r = env.stack.pop()) {\r\n try {\r\n if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);\r\n if (r.dispose) {\r\n var result = r.dispose.call(r.value);\r\n if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\r\n }\r\n else s |= 1;\r\n }\r\n catch (e) {\r\n fail(e);\r\n }\r\n }\r\n if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();\r\n if (env.hasError) throw env.error;\r\n }\r\n return next();\r\n };\r\n\r\n exporter(\"__extends\", __extends);\r\n exporter(\"__assign\", __assign);\r\n exporter(\"__rest\", __rest);\r\n exporter(\"__decorate\", __decorate);\r\n exporter(\"__param\", __param);\r\n exporter(\"__esDecorate\", __esDecorate);\r\n exporter(\"__runInitializers\", __runInitializers);\r\n exporter(\"__propKey\", __propKey);\r\n exporter(\"__setFunctionName\", __setFunctionName);\r\n exporter(\"__metadata\", __metadata);\r\n exporter(\"__awaiter\", __awaiter);\r\n exporter(\"__generator\", __generator);\r\n exporter(\"__exportStar\", __exportStar);\r\n exporter(\"__createBinding\", __createBinding);\r\n exporter(\"__values\", __values);\r\n exporter(\"__read\", __read);\r\n exporter(\"__spread\", __spread);\r\n exporter(\"__spreadArrays\", __spreadArrays);\r\n exporter(\"__spreadArray\", __spreadArray);\r\n exporter(\"__await\", __await);\r\n exporter(\"__asyncGenerator\", __asyncGenerator);\r\n exporter(\"__asyncDelegator\", __asyncDelegator);\r\n exporter(\"__asyncValues\", __asyncValues);\r\n exporter(\"__makeTemplateObject\", __makeTemplateObject);\r\n exporter(\"__importStar\", __importStar);\r\n exporter(\"__importDefault\", __importDefault);\r\n exporter(\"__classPrivateFieldGet\", __classPrivateFieldGet);\r\n exporter(\"__classPrivateFieldSet\", __classPrivateFieldSet);\r\n exporter(\"__classPrivateFieldIn\", __classPrivateFieldIn);\r\n exporter(\"__addDisposableResource\", __addDisposableResource);\r\n exporter(\"__disposeResources\", __disposeResources);\r\n});\r\n","module.exports = require('./lib/tunnel');\n","'use strict';\n\nvar net = require('net');\nvar tls = require('tls');\nvar http = require('http');\nvar https = require('https');\nvar events = require('events');\nvar assert = require('assert');\nvar util = require('util');\n\n\nexports.httpOverHttp = httpOverHttp;\nexports.httpsOverHttp = httpsOverHttp;\nexports.httpOverHttps = httpOverHttps;\nexports.httpsOverHttps = httpsOverHttps;\n\n\nfunction httpOverHttp(options) {\n var agent = new TunnelingAgent(options);\n agent.request = http.request;\n return agent;\n}\n\nfunction httpsOverHttp(options) {\n var agent = new TunnelingAgent(options);\n agent.request = http.request;\n agent.createSocket = createSecureSocket;\n agent.defaultPort = 443;\n return agent;\n}\n\nfunction httpOverHttps(options) {\n var agent = new TunnelingAgent(options);\n agent.request = https.request;\n return agent;\n}\n\nfunction httpsOverHttps(options) {\n var agent = new TunnelingAgent(options);\n agent.request = https.request;\n agent.createSocket = createSecureSocket;\n agent.defaultPort = 443;\n return agent;\n}\n\n\nfunction TunnelingAgent(options) {\n var self = this;\n self.options = options || {};\n self.proxyOptions = self.options.proxy || {};\n self.maxSockets = self.options.maxSockets || http.Agent.defaultMaxSockets;\n self.requests = [];\n self.sockets = [];\n\n self.on('free', function onFree(socket, host, port, localAddress) {\n var options = toOptions(host, port, localAddress);\n for (var i = 0, len = self.requests.length; i < len; ++i) {\n var pending = self.requests[i];\n if (pending.host === options.host && pending.port === options.port) {\n // Detect the request to connect same origin server,\n // reuse the connection.\n self.requests.splice(i, 1);\n pending.request.onSocket(socket);\n return;\n }\n }\n socket.destroy();\n self.removeSocket(socket);\n });\n}\nutil.inherits(TunnelingAgent, events.EventEmitter);\n\nTunnelingAgent.prototype.addRequest = function addRequest(req, host, port, localAddress) {\n var self = this;\n var options = mergeOptions({request: req}, self.options, toOptions(host, port, localAddress));\n\n if (self.sockets.length >= this.maxSockets) {\n // We are over limit so we'll add it to the queue.\n self.requests.push(options);\n return;\n }\n\n // If we are under maxSockets create a new one.\n self.createSocket(options, function(socket) {\n socket.on('free', onFree);\n socket.on('close', onCloseOrRemove);\n socket.on('agentRemove', onCloseOrRemove);\n req.onSocket(socket);\n\n function onFree() {\n self.emit('free', socket, options);\n }\n\n function onCloseOrRemove(err) {\n self.removeSocket(socket);\n socket.removeListener('free', onFree);\n socket.removeListener('close', onCloseOrRemove);\n socket.removeListener('agentRemove', onCloseOrRemove);\n }\n });\n};\n\nTunnelingAgent.prototype.createSocket = function createSocket(options, cb) {\n var self = this;\n var placeholder = {};\n self.sockets.push(placeholder);\n\n var connectOptions = mergeOptions({}, self.proxyOptions, {\n method: 'CONNECT',\n path: options.host + ':' + options.port,\n agent: false,\n headers: {\n host: options.host + ':' + options.port\n }\n });\n if (options.localAddress) {\n connectOptions.localAddress = options.localAddress;\n }\n if (connectOptions.proxyAuth) {\n connectOptions.headers = connectOptions.headers || {};\n connectOptions.headers['Proxy-Authorization'] = 'Basic ' +\n new Buffer(connectOptions.proxyAuth).toString('base64');\n }\n\n debug('making CONNECT request');\n var connectReq = self.request(connectOptions);\n connectReq.useChunkedEncodingByDefault = false; // for v0.6\n connectReq.once('response', onResponse); // for v0.6\n connectReq.once('upgrade', onUpgrade); // for v0.6\n connectReq.once('connect', onConnect); // for v0.7 or later\n connectReq.once('error', onError);\n connectReq.end();\n\n function onResponse(res) {\n // Very hacky. This is necessary to avoid http-parser leaks.\n res.upgrade = true;\n }\n\n function onUpgrade(res, socket, head) {\n // Hacky.\n process.nextTick(function() {\n onConnect(res, socket, head);\n });\n }\n\n function onConnect(res, socket, head) {\n connectReq.removeAllListeners();\n socket.removeAllListeners();\n\n if (res.statusCode !== 200) {\n debug('tunneling socket could not be established, statusCode=%d',\n res.statusCode);\n socket.destroy();\n var error = new Error('tunneling socket could not be established, ' +\n 'statusCode=' + res.statusCode);\n error.code = 'ECONNRESET';\n options.request.emit('error', error);\n self.removeSocket(placeholder);\n return;\n }\n if (head.length > 0) {\n debug('got illegal response body from proxy');\n socket.destroy();\n var error = new Error('got illegal response body from proxy');\n error.code = 'ECONNRESET';\n options.request.emit('error', error);\n self.removeSocket(placeholder);\n return;\n }\n debug('tunneling connection has established');\n self.sockets[self.sockets.indexOf(placeholder)] = socket;\n return cb(socket);\n }\n\n function onError(cause) {\n connectReq.removeAllListeners();\n\n debug('tunneling socket could not be established, cause=%s\\n',\n cause.message, cause.stack);\n var error = new Error('tunneling socket could not be established, ' +\n 'cause=' + cause.message);\n error.code = 'ECONNRESET';\n options.request.emit('error', error);\n self.removeSocket(placeholder);\n }\n};\n\nTunnelingAgent.prototype.removeSocket = function removeSocket(socket) {\n var pos = this.sockets.indexOf(socket)\n if (pos === -1) {\n return;\n }\n this.sockets.splice(pos, 1);\n\n var pending = this.requests.shift();\n if (pending) {\n // If we have pending requests and a socket gets closed a new one\n // needs to be created to take over in the pool for the one that closed.\n this.createSocket(pending, function(socket) {\n pending.request.onSocket(socket);\n });\n }\n};\n\nfunction createSecureSocket(options, cb) {\n var self = this;\n TunnelingAgent.prototype.createSocket.call(self, options, function(socket) {\n var hostHeader = options.request.getHeader('host');\n var tlsOptions = mergeOptions({}, self.options, {\n socket: socket,\n servername: hostHeader ? hostHeader.replace(/:.*$/, '') : options.host\n });\n\n // 0 is dummy port for v0.6\n var secureSocket = tls.connect(0, tlsOptions);\n self.sockets[self.sockets.indexOf(socket)] = secureSocket;\n cb(secureSocket);\n });\n}\n\n\nfunction toOptions(host, port, localAddress) {\n if (typeof host === 'string') { // since v0.10\n return {\n host: host,\n port: port,\n localAddress: localAddress\n };\n }\n return host; // for v0.11 or later\n}\n\nfunction mergeOptions(target) {\n for (var i = 1, len = arguments.length; i < len; ++i) {\n var overrides = arguments[i];\n if (typeof overrides === 'object') {\n var keys = Object.keys(overrides);\n for (var j = 0, keyLen = keys.length; j < keyLen; ++j) {\n var k = keys[j];\n if (overrides[k] !== undefined) {\n target[k] = overrides[k];\n }\n }\n }\n }\n return target;\n}\n\n\nvar debug;\nif (process.env.NODE_DEBUG && /\\btunnel\\b/.test(process.env.NODE_DEBUG)) {\n debug = function() {\n var args = Array.prototype.slice.call(arguments);\n if (typeof args[0] === 'string') {\n args[0] = 'TUNNEL: ' + args[0];\n } else {\n args.unshift('TUNNEL:');\n }\n console.error.apply(console, args);\n }\n} else {\n debug = function() {};\n}\nexports.debug = debug; // for test\n","'use strict'\n\nconst Client = require('./lib/client')\nconst Dispatcher = require('./lib/dispatcher')\nconst errors = require('./lib/core/errors')\nconst Pool = require('./lib/pool')\nconst BalancedPool = require('./lib/balanced-pool')\nconst Agent = require('./lib/agent')\nconst util = require('./lib/core/util')\nconst { InvalidArgumentError } = errors\nconst api = require('./lib/api')\nconst buildConnector = require('./lib/core/connect')\nconst MockClient = require('./lib/mock/mock-client')\nconst MockAgent = require('./lib/mock/mock-agent')\nconst MockPool = require('./lib/mock/mock-pool')\nconst mockErrors = require('./lib/mock/mock-errors')\nconst ProxyAgent = require('./lib/proxy-agent')\nconst RetryHandler = require('./lib/handler/RetryHandler')\nconst { getGlobalDispatcher, setGlobalDispatcher } = require('./lib/global')\nconst DecoratorHandler = require('./lib/handler/DecoratorHandler')\nconst RedirectHandler = require('./lib/handler/RedirectHandler')\nconst createRedirectInterceptor = require('./lib/interceptor/redirectInterceptor')\n\nlet hasCrypto\ntry {\n require('crypto')\n hasCrypto = true\n} catch {\n hasCrypto = false\n}\n\nObject.assign(Dispatcher.prototype, api)\n\nmodule.exports.Dispatcher = Dispatcher\nmodule.exports.Client = Client\nmodule.exports.Pool = Pool\nmodule.exports.BalancedPool = BalancedPool\nmodule.exports.Agent = Agent\nmodule.exports.ProxyAgent = ProxyAgent\nmodule.exports.RetryHandler = RetryHandler\n\nmodule.exports.DecoratorHandler = DecoratorHandler\nmodule.exports.RedirectHandler = RedirectHandler\nmodule.exports.createRedirectInterceptor = createRedirectInterceptor\n\nmodule.exports.buildConnector = buildConnector\nmodule.exports.errors = errors\n\nfunction makeDispatcher (fn) {\n return (url, opts, handler) => {\n if (typeof opts === 'function') {\n handler = opts\n opts = null\n }\n\n if (!url || (typeof url !== 'string' && typeof url !== 'object' && !(url instanceof URL))) {\n throw new InvalidArgumentError('invalid url')\n }\n\n if (opts != null && typeof opts !== 'object') {\n throw new InvalidArgumentError('invalid opts')\n }\n\n if (opts && opts.path != null) {\n if (typeof opts.path !== 'string') {\n throw new InvalidArgumentError('invalid opts.path')\n }\n\n let path = opts.path\n if (!opts.path.startsWith('/')) {\n path = `/${path}`\n }\n\n url = new URL(util.parseOrigin(url).origin + path)\n } else {\n if (!opts) {\n opts = typeof url === 'object' ? url : {}\n }\n\n url = util.parseURL(url)\n }\n\n const { agent, dispatcher = getGlobalDispatcher() } = opts\n\n if (agent) {\n throw new InvalidArgumentError('unsupported opts.agent. Did you mean opts.client?')\n }\n\n return fn.call(dispatcher, {\n ...opts,\n origin: url.origin,\n path: url.search ? `${url.pathname}${url.search}` : url.pathname,\n method: opts.method || (opts.body ? 'PUT' : 'GET')\n }, handler)\n }\n}\n\nmodule.exports.setGlobalDispatcher = setGlobalDispatcher\nmodule.exports.getGlobalDispatcher = getGlobalDispatcher\n\nif (util.nodeMajor > 16 || (util.nodeMajor === 16 && util.nodeMinor >= 8)) {\n let fetchImpl = null\n module.exports.fetch = async function fetch (resource) {\n if (!fetchImpl) {\n fetchImpl = require('./lib/fetch').fetch\n }\n\n try {\n return await fetchImpl(...arguments)\n } catch (err) {\n if (typeof err === 'object') {\n Error.captureStackTrace(err, this)\n }\n\n throw err\n }\n }\n module.exports.Headers = require('./lib/fetch/headers').Headers\n module.exports.Response = require('./lib/fetch/response').Response\n module.exports.Request = require('./lib/fetch/request').Request\n module.exports.FormData = require('./lib/fetch/formdata').FormData\n module.exports.File = require('./lib/fetch/file').File\n module.exports.FileReader = require('./lib/fileapi/filereader').FileReader\n\n const { setGlobalOrigin, getGlobalOrigin } = require('./lib/fetch/global')\n\n module.exports.setGlobalOrigin = setGlobalOrigin\n module.exports.getGlobalOrigin = getGlobalOrigin\n\n const { CacheStorage } = require('./lib/cache/cachestorage')\n const { kConstruct } = require('./lib/cache/symbols')\n\n // Cache & CacheStorage are tightly coupled with fetch. Even if it may run\n // in an older version of Node, it doesn't have any use without fetch.\n module.exports.caches = new CacheStorage(kConstruct)\n}\n\nif (util.nodeMajor >= 16) {\n const { deleteCookie, getCookies, getSetCookies, setCookie } = require('./lib/cookies')\n\n module.exports.deleteCookie = deleteCookie\n module.exports.getCookies = getCookies\n module.exports.getSetCookies = getSetCookies\n module.exports.setCookie = setCookie\n\n const { parseMIMEType, serializeAMimeType } = require('./lib/fetch/dataURL')\n\n module.exports.parseMIMEType = parseMIMEType\n module.exports.serializeAMimeType = serializeAMimeType\n}\n\nif (util.nodeMajor >= 18 && hasCrypto) {\n const { WebSocket } = require('./lib/websocket/websocket')\n\n module.exports.WebSocket = WebSocket\n}\n\nmodule.exports.request = makeDispatcher(api.request)\nmodule.exports.stream = makeDispatcher(api.stream)\nmodule.exports.pipeline = makeDispatcher(api.pipeline)\nmodule.exports.connect = makeDispatcher(api.connect)\nmodule.exports.upgrade = makeDispatcher(api.upgrade)\n\nmodule.exports.MockClient = MockClient\nmodule.exports.MockPool = MockPool\nmodule.exports.MockAgent = MockAgent\nmodule.exports.mockErrors = mockErrors\n","'use strict'\n\nconst { InvalidArgumentError } = require('./core/errors')\nconst { kClients, kRunning, kClose, kDestroy, kDispatch, kInterceptors } = require('./core/symbols')\nconst DispatcherBase = require('./dispatcher-base')\nconst Pool = require('./pool')\nconst Client = require('./client')\nconst util = require('./core/util')\nconst createRedirectInterceptor = require('./interceptor/redirectInterceptor')\nconst { WeakRef, FinalizationRegistry } = require('./compat/dispatcher-weakref')()\n\nconst kOnConnect = Symbol('onConnect')\nconst kOnDisconnect = Symbol('onDisconnect')\nconst kOnConnectionError = Symbol('onConnectionError')\nconst kMaxRedirections = Symbol('maxRedirections')\nconst kOnDrain = Symbol('onDrain')\nconst kFactory = Symbol('factory')\nconst kFinalizer = Symbol('finalizer')\nconst kOptions = Symbol('options')\n\nfunction defaultFactory (origin, opts) {\n return opts && opts.connections === 1\n ? new Client(origin, opts)\n : new Pool(origin, opts)\n}\n\nclass Agent extends DispatcherBase {\n constructor ({ factory = defaultFactory, maxRedirections = 0, connect, ...options } = {}) {\n super()\n\n if (typeof factory !== 'function') {\n throw new InvalidArgumentError('factory must be a function.')\n }\n\n if (connect != null && typeof connect !== 'function' && typeof connect !== 'object') {\n throw new InvalidArgumentError('connect must be a function or an object')\n }\n\n if (!Number.isInteger(maxRedirections) || maxRedirections < 0) {\n throw new InvalidArgumentError('maxRedirections must be a positive number')\n }\n\n if (connect && typeof connect !== 'function') {\n connect = { ...connect }\n }\n\n this[kInterceptors] = options.interceptors && options.interceptors.Agent && Array.isArray(options.interceptors.Agent)\n ? options.interceptors.Agent\n : [createRedirectInterceptor({ maxRedirections })]\n\n this[kOptions] = { ...util.deepClone(options), connect }\n this[kOptions].interceptors = options.interceptors\n ? { ...options.interceptors }\n : undefined\n this[kMaxRedirections] = maxRedirections\n this[kFactory] = factory\n this[kClients] = new Map()\n this[kFinalizer] = new FinalizationRegistry(/* istanbul ignore next: gc is undeterministic */ key => {\n const ref = this[kClients].get(key)\n if (ref !== undefined && ref.deref() === undefined) {\n this[kClients].delete(key)\n }\n })\n\n const agent = this\n\n this[kOnDrain] = (origin, targets) => {\n agent.emit('drain', origin, [agent, ...targets])\n }\n\n this[kOnConnect] = (origin, targets) => {\n agent.emit('connect', origin, [agent, ...targets])\n }\n\n this[kOnDisconnect] = (origin, targets, err) => {\n agent.emit('disconnect', origin, [agent, ...targets], err)\n }\n\n this[kOnConnectionError] = (origin, targets, err) => {\n agent.emit('connectionError', origin, [agent, ...targets], err)\n }\n }\n\n get [kRunning] () {\n let ret = 0\n for (const ref of this[kClients].values()) {\n const client = ref.deref()\n /* istanbul ignore next: gc is undeterministic */\n if (client) {\n ret += client[kRunning]\n }\n }\n return ret\n }\n\n [kDispatch] (opts, handler) {\n let key\n if (opts.origin && (typeof opts.origin === 'string' || opts.origin instanceof URL)) {\n key = String(opts.origin)\n } else {\n throw new InvalidArgumentError('opts.origin must be a non-empty string or URL.')\n }\n\n const ref = this[kClients].get(key)\n\n let dispatcher = ref ? ref.deref() : null\n if (!dispatcher) {\n dispatcher = this[kFactory](opts.origin, this[kOptions])\n .on('drain', this[kOnDrain])\n .on('connect', this[kOnConnect])\n .on('disconnect', this[kOnDisconnect])\n .on('connectionError', this[kOnConnectionError])\n\n this[kClients].set(key, new WeakRef(dispatcher))\n this[kFinalizer].register(dispatcher, key)\n }\n\n return dispatcher.dispatch(opts, handler)\n }\n\n async [kClose] () {\n const closePromises = []\n for (const ref of this[kClients].values()) {\n const client = ref.deref()\n /* istanbul ignore else: gc is undeterministic */\n if (client) {\n closePromises.push(client.close())\n }\n }\n\n await Promise.all(closePromises)\n }\n\n async [kDestroy] (err) {\n const destroyPromises = []\n for (const ref of this[kClients].values()) {\n const client = ref.deref()\n /* istanbul ignore else: gc is undeterministic */\n if (client) {\n destroyPromises.push(client.destroy(err))\n }\n }\n\n await Promise.all(destroyPromises)\n }\n}\n\nmodule.exports = Agent\n","const { addAbortListener } = require('../core/util')\nconst { RequestAbortedError } = require('../core/errors')\n\nconst kListener = Symbol('kListener')\nconst kSignal = Symbol('kSignal')\n\nfunction abort (self) {\n if (self.abort) {\n self.abort()\n } else {\n self.onError(new RequestAbortedError())\n }\n}\n\nfunction addSignal (self, signal) {\n self[kSignal] = null\n self[kListener] = null\n\n if (!signal) {\n return\n }\n\n if (signal.aborted) {\n abort(self)\n return\n }\n\n self[kSignal] = signal\n self[kListener] = () => {\n abort(self)\n }\n\n addAbortListener(self[kSignal], self[kListener])\n}\n\nfunction removeSignal (self) {\n if (!self[kSignal]) {\n return\n }\n\n if ('removeEventListener' in self[kSignal]) {\n self[kSignal].removeEventListener('abort', self[kListener])\n } else {\n self[kSignal].removeListener('abort', self[kListener])\n }\n\n self[kSignal] = null\n self[kListener] = null\n}\n\nmodule.exports = {\n addSignal,\n removeSignal\n}\n","'use strict'\n\nconst { AsyncResource } = require('async_hooks')\nconst { InvalidArgumentError, RequestAbortedError, SocketError } = require('../core/errors')\nconst util = require('../core/util')\nconst { addSignal, removeSignal } = require('./abort-signal')\n\nclass ConnectHandler extends AsyncResource {\n constructor (opts, callback) {\n if (!opts || typeof opts !== 'object') {\n throw new InvalidArgumentError('invalid opts')\n }\n\n if (typeof callback !== 'function') {\n throw new InvalidArgumentError('invalid callback')\n }\n\n const { signal, opaque, responseHeaders } = opts\n\n if (signal && typeof signal.on !== 'function' && typeof signal.addEventListener !== 'function') {\n throw new InvalidArgumentError('signal must be an EventEmitter or EventTarget')\n }\n\n super('UNDICI_CONNECT')\n\n this.opaque = opaque || null\n this.responseHeaders = responseHeaders || null\n this.callback = callback\n this.abort = null\n\n addSignal(this, signal)\n }\n\n onConnect (abort, context) {\n if (!this.callback) {\n throw new RequestAbortedError()\n }\n\n this.abort = abort\n this.context = context\n }\n\n onHeaders () {\n throw new SocketError('bad connect', null)\n }\n\n onUpgrade (statusCode, rawHeaders, socket) {\n const { callback, opaque, context } = this\n\n removeSignal(this)\n\n this.callback = null\n\n let headers = rawHeaders\n // Indicates is an HTTP2Session\n if (headers != null) {\n headers = this.responseHeaders === 'raw' ? util.parseRawHeaders(rawHeaders) : util.parseHeaders(rawHeaders)\n }\n\n this.runInAsyncScope(callback, null, null, {\n statusCode,\n headers,\n socket,\n opaque,\n context\n })\n }\n\n onError (err) {\n const { callback, opaque } = this\n\n removeSignal(this)\n\n if (callback) {\n this.callback = null\n queueMicrotask(() => {\n this.runInAsyncScope(callback, null, err, { opaque })\n })\n }\n }\n}\n\nfunction connect (opts, callback) {\n if (callback === undefined) {\n return new Promise((resolve, reject) => {\n connect.call(this, opts, (err, data) => {\n return err ? reject(err) : resolve(data)\n })\n })\n }\n\n try {\n const connectHandler = new ConnectHandler(opts, callback)\n this.dispatch({ ...opts, method: 'CONNECT' }, connectHandler)\n } catch (err) {\n if (typeof callback !== 'function') {\n throw err\n }\n const opaque = opts && opts.opaque\n queueMicrotask(() => callback(err, { opaque }))\n }\n}\n\nmodule.exports = connect\n","'use strict'\n\nconst {\n Readable,\n Duplex,\n PassThrough\n} = require('stream')\nconst {\n InvalidArgumentError,\n InvalidReturnValueError,\n RequestAbortedError\n} = require('../core/errors')\nconst util = require('../core/util')\nconst { AsyncResource } = require('async_hooks')\nconst { addSignal, removeSignal } = require('./abort-signal')\nconst assert = require('assert')\n\nconst kResume = Symbol('resume')\n\nclass PipelineRequest extends Readable {\n constructor () {\n super({ autoDestroy: true })\n\n this[kResume] = null\n }\n\n _read () {\n const { [kResume]: resume } = this\n\n if (resume) {\n this[kResume] = null\n resume()\n }\n }\n\n _destroy (err, callback) {\n this._read()\n\n callback(err)\n }\n}\n\nclass PipelineResponse extends Readable {\n constructor (resume) {\n super({ autoDestroy: true })\n this[kResume] = resume\n }\n\n _read () {\n this[kResume]()\n }\n\n _destroy (err, callback) {\n if (!err && !this._readableState.endEmitted) {\n err = new RequestAbortedError()\n }\n\n callback(err)\n }\n}\n\nclass PipelineHandler extends AsyncResource {\n constructor (opts, handler) {\n if (!opts || typeof opts !== 'object') {\n throw new InvalidArgumentError('invalid opts')\n }\n\n if (typeof handler !== 'function') {\n throw new InvalidArgumentError('invalid handler')\n }\n\n const { signal, method, opaque, onInfo, responseHeaders } = opts\n\n if (signal && typeof signal.on !== 'function' && typeof signal.addEventListener !== 'function') {\n throw new InvalidArgumentError('signal must be an EventEmitter or EventTarget')\n }\n\n if (method === 'CONNECT') {\n throw new InvalidArgumentError('invalid method')\n }\n\n if (onInfo && typeof onInfo !== 'function') {\n throw new InvalidArgumentError('invalid onInfo callback')\n }\n\n super('UNDICI_PIPELINE')\n\n this.opaque = opaque || null\n this.responseHeaders = responseHeaders || null\n this.handler = handler\n this.abort = null\n this.context = null\n this.onInfo = onInfo || null\n\n this.req = new PipelineRequest().on('error', util.nop)\n\n this.ret = new Duplex({\n readableObjectMode: opts.objectMode,\n autoDestroy: true,\n read: () => {\n const { body } = this\n\n if (body && body.resume) {\n body.resume()\n }\n },\n write: (chunk, encoding, callback) => {\n const { req } = this\n\n if (req.push(chunk, encoding) || req._readableState.destroyed) {\n callback()\n } else {\n req[kResume] = callback\n }\n },\n destroy: (err, callback) => {\n const { body, req, res, ret, abort } = this\n\n if (!err && !ret._readableState.endEmitted) {\n err = new RequestAbortedError()\n }\n\n if (abort && err) {\n abort()\n }\n\n util.destroy(body, err)\n util.destroy(req, err)\n util.destroy(res, err)\n\n removeSignal(this)\n\n callback(err)\n }\n }).on('prefinish', () => {\n const { req } = this\n\n // Node < 15 does not call _final in same tick.\n req.push(null)\n })\n\n this.res = null\n\n addSignal(this, signal)\n }\n\n onConnect (abort, context) {\n const { ret, res } = this\n\n assert(!res, 'pipeline cannot be retried')\n\n if (ret.destroyed) {\n throw new RequestAbortedError()\n }\n\n this.abort = abort\n this.context = context\n }\n\n onHeaders (statusCode, rawHeaders, resume) {\n const { opaque, handler, context } = this\n\n if (statusCode < 200) {\n if (this.onInfo) {\n const headers = this.responseHeaders === 'raw' ? util.parseRawHeaders(rawHeaders) : util.parseHeaders(rawHeaders)\n this.onInfo({ statusCode, headers })\n }\n return\n }\n\n this.res = new PipelineResponse(resume)\n\n let body\n try {\n this.handler = null\n const headers = this.responseHeaders === 'raw' ? util.parseRawHeaders(rawHeaders) : util.parseHeaders(rawHeaders)\n body = this.runInAsyncScope(handler, null, {\n statusCode,\n headers,\n opaque,\n body: this.res,\n context\n })\n } catch (err) {\n this.res.on('error', util.nop)\n throw err\n }\n\n if (!body || typeof body.on !== 'function') {\n throw new InvalidReturnValueError('expected Readable')\n }\n\n body\n .on('data', (chunk) => {\n const { ret, body } = this\n\n if (!ret.push(chunk) && body.pause) {\n body.pause()\n }\n })\n .on('error', (err) => {\n const { ret } = this\n\n util.destroy(ret, err)\n })\n .on('end', () => {\n const { ret } = this\n\n ret.push(null)\n })\n .on('close', () => {\n const { ret } = this\n\n if (!ret._readableState.ended) {\n util.destroy(ret, new RequestAbortedError())\n }\n })\n\n this.body = body\n }\n\n onData (chunk) {\n const { res } = this\n return res.push(chunk)\n }\n\n onComplete (trailers) {\n const { res } = this\n res.push(null)\n }\n\n onError (err) {\n const { ret } = this\n this.handler = null\n util.destroy(ret, err)\n }\n}\n\nfunction pipeline (opts, handler) {\n try {\n const pipelineHandler = new PipelineHandler(opts, handler)\n this.dispatch({ ...opts, body: pipelineHandler.req }, pipelineHandler)\n return pipelineHandler.ret\n } catch (err) {\n return new PassThrough().destroy(err)\n }\n}\n\nmodule.exports = pipeline\n","'use strict'\n\nconst Readable = require('./readable')\nconst {\n InvalidArgumentError,\n RequestAbortedError\n} = require('../core/errors')\nconst util = require('../core/util')\nconst { getResolveErrorBodyCallback } = require('./util')\nconst { AsyncResource } = require('async_hooks')\nconst { addSignal, removeSignal } = require('./abort-signal')\n\nclass RequestHandler extends AsyncResource {\n constructor (opts, callback) {\n if (!opts || typeof opts !== 'object') {\n throw new InvalidArgumentError('invalid opts')\n }\n\n const { signal, method, opaque, body, onInfo, responseHeaders, throwOnError, highWaterMark } = opts\n\n try {\n if (typeof callback !== 'function') {\n throw new InvalidArgumentError('invalid callback')\n }\n\n if (highWaterMark && (typeof highWaterMark !== 'number' || highWaterMark < 0)) {\n throw new InvalidArgumentError('invalid highWaterMark')\n }\n\n if (signal && typeof signal.on !== 'function' && typeof signal.addEventListener !== 'function') {\n throw new InvalidArgumentError('signal must be an EventEmitter or EventTarget')\n }\n\n if (method === 'CONNECT') {\n throw new InvalidArgumentError('invalid method')\n }\n\n if (onInfo && typeof onInfo !== 'function') {\n throw new InvalidArgumentError('invalid onInfo callback')\n }\n\n super('UNDICI_REQUEST')\n } catch (err) {\n if (util.isStream(body)) {\n util.destroy(body.on('error', util.nop), err)\n }\n throw err\n }\n\n this.responseHeaders = responseHeaders || null\n this.opaque = opaque || null\n this.callback = callback\n this.res = null\n this.abort = null\n this.body = body\n this.trailers = {}\n this.context = null\n this.onInfo = onInfo || null\n this.throwOnError = throwOnError\n this.highWaterMark = highWaterMark\n\n if (util.isStream(body)) {\n body.on('error', (err) => {\n this.onError(err)\n })\n }\n\n addSignal(this, signal)\n }\n\n onConnect (abort, context) {\n if (!this.callback) {\n throw new RequestAbortedError()\n }\n\n this.abort = abort\n this.context = context\n }\n\n onHeaders (statusCode, rawHeaders, resume, statusMessage) {\n const { callback, opaque, abort, context, responseHeaders, highWaterMark } = this\n\n const headers = responseHeaders === 'raw' ? util.parseRawHeaders(rawHeaders) : util.parseHeaders(rawHeaders)\n\n if (statusCode < 200) {\n if (this.onInfo) {\n this.onInfo({ statusCode, headers })\n }\n return\n }\n\n const parsedHeaders = responseHeaders === 'raw' ? util.parseHeaders(rawHeaders) : headers\n const contentType = parsedHeaders['content-type']\n const body = new Readable({ resume, abort, contentType, highWaterMark })\n\n this.callback = null\n this.res = body\n if (callback !== null) {\n if (this.throwOnError && statusCode >= 400) {\n this.runInAsyncScope(getResolveErrorBodyCallback, null,\n { callback, body, contentType, statusCode, statusMessage, headers }\n )\n } else {\n this.runInAsyncScope(callback, null, null, {\n statusCode,\n headers,\n trailers: this.trailers,\n opaque,\n body,\n context\n })\n }\n }\n }\n\n onData (chunk) {\n const { res } = this\n return res.push(chunk)\n }\n\n onComplete (trailers) {\n const { res } = this\n\n removeSignal(this)\n\n util.parseHeaders(trailers, this.trailers)\n\n res.push(null)\n }\n\n onError (err) {\n const { res, callback, body, opaque } = this\n\n removeSignal(this)\n\n if (callback) {\n // TODO: Does this need queueMicrotask?\n this.callback = null\n queueMicrotask(() => {\n this.runInAsyncScope(callback, null, err, { opaque })\n })\n }\n\n if (res) {\n this.res = null\n // Ensure all queued handlers are invoked before destroying res.\n queueMicrotask(() => {\n util.destroy(res, err)\n })\n }\n\n if (body) {\n this.body = null\n util.destroy(body, err)\n }\n }\n}\n\nfunction request (opts, callback) {\n if (callback === undefined) {\n return new Promise((resolve, reject) => {\n request.call(this, opts, (err, data) => {\n return err ? reject(err) : resolve(data)\n })\n })\n }\n\n try {\n this.dispatch(opts, new RequestHandler(opts, callback))\n } catch (err) {\n if (typeof callback !== 'function') {\n throw err\n }\n const opaque = opts && opts.opaque\n queueMicrotask(() => callback(err, { opaque }))\n }\n}\n\nmodule.exports = request\nmodule.exports.RequestHandler = RequestHandler\n","'use strict'\n\nconst { finished, PassThrough } = require('stream')\nconst {\n InvalidArgumentError,\n InvalidReturnValueError,\n RequestAbortedError\n} = require('../core/errors')\nconst util = require('../core/util')\nconst { getResolveErrorBodyCallback } = require('./util')\nconst { AsyncResource } = require('async_hooks')\nconst { addSignal, removeSignal } = require('./abort-signal')\n\nclass StreamHandler extends AsyncResource {\n constructor (opts, factory, callback) {\n if (!opts || typeof opts !== 'object') {\n throw new InvalidArgumentError('invalid opts')\n }\n\n const { signal, method, opaque, body, onInfo, responseHeaders, throwOnError } = opts\n\n try {\n if (typeof callback !== 'function') {\n throw new InvalidArgumentError('invalid callback')\n }\n\n if (typeof factory !== 'function') {\n throw new InvalidArgumentError('invalid factory')\n }\n\n if (signal && typeof signal.on !== 'function' && typeof signal.addEventListener !== 'function') {\n throw new InvalidArgumentError('signal must be an EventEmitter or EventTarget')\n }\n\n if (method === 'CONNECT') {\n throw new InvalidArgumentError('invalid method')\n }\n\n if (onInfo && typeof onInfo !== 'function') {\n throw new InvalidArgumentError('invalid onInfo callback')\n }\n\n super('UNDICI_STREAM')\n } catch (err) {\n if (util.isStream(body)) {\n util.destroy(body.on('error', util.nop), err)\n }\n throw err\n }\n\n this.responseHeaders = responseHeaders || null\n this.opaque = opaque || null\n this.factory = factory\n this.callback = callback\n this.res = null\n this.abort = null\n this.context = null\n this.trailers = null\n this.body = body\n this.onInfo = onInfo || null\n this.throwOnError = throwOnError || false\n\n if (util.isStream(body)) {\n body.on('error', (err) => {\n this.onError(err)\n })\n }\n\n addSignal(this, signal)\n }\n\n onConnect (abort, context) {\n if (!this.callback) {\n throw new RequestAbortedError()\n }\n\n this.abort = abort\n this.context = context\n }\n\n onHeaders (statusCode, rawHeaders, resume, statusMessage) {\n const { factory, opaque, context, callback, responseHeaders } = this\n\n const headers = responseHeaders === 'raw' ? util.parseRawHeaders(rawHeaders) : util.parseHeaders(rawHeaders)\n\n if (statusCode < 200) {\n if (this.onInfo) {\n this.onInfo({ statusCode, headers })\n }\n return\n }\n\n this.factory = null\n\n let res\n\n if (this.throwOnError && statusCode >= 400) {\n const parsedHeaders = responseHeaders === 'raw' ? util.parseHeaders(rawHeaders) : headers\n const contentType = parsedHeaders['content-type']\n res = new PassThrough()\n\n this.callback = null\n this.runInAsyncScope(getResolveErrorBodyCallback, null,\n { callback, body: res, contentType, statusCode, statusMessage, headers }\n )\n } else {\n if (factory === null) {\n return\n }\n\n res = this.runInAsyncScope(factory, null, {\n statusCode,\n headers,\n opaque,\n context\n })\n\n if (\n !res ||\n typeof res.write !== 'function' ||\n typeof res.end !== 'function' ||\n typeof res.on !== 'function'\n ) {\n throw new InvalidReturnValueError('expected Writable')\n }\n\n // TODO: Avoid finished. It registers an unnecessary amount of listeners.\n finished(res, { readable: false }, (err) => {\n const { callback, res, opaque, trailers, abort } = this\n\n this.res = null\n if (err || !res.readable) {\n util.destroy(res, err)\n }\n\n this.callback = null\n this.runInAsyncScope(callback, null, err || null, { opaque, trailers })\n\n if (err) {\n abort()\n }\n })\n }\n\n res.on('drain', resume)\n\n this.res = res\n\n const needDrain = res.writableNeedDrain !== undefined\n ? res.writableNeedDrain\n : res._writableState && res._writableState.needDrain\n\n return needDrain !== true\n }\n\n onData (chunk) {\n const { res } = this\n\n return res ? res.write(chunk) : true\n }\n\n onComplete (trailers) {\n const { res } = this\n\n removeSignal(this)\n\n if (!res) {\n return\n }\n\n this.trailers = util.parseHeaders(trailers)\n\n res.end()\n }\n\n onError (err) {\n const { res, callback, opaque, body } = this\n\n removeSignal(this)\n\n this.factory = null\n\n if (res) {\n this.res = null\n util.destroy(res, err)\n } else if (callback) {\n this.callback = null\n queueMicrotask(() => {\n this.runInAsyncScope(callback, null, err, { opaque })\n })\n }\n\n if (body) {\n this.body = null\n util.destroy(body, err)\n }\n }\n}\n\nfunction stream (opts, factory, callback) {\n if (callback === undefined) {\n return new Promise((resolve, reject) => {\n stream.call(this, opts, factory, (err, data) => {\n return err ? reject(err) : resolve(data)\n })\n })\n }\n\n try {\n this.dispatch(opts, new StreamHandler(opts, factory, callback))\n } catch (err) {\n if (typeof callback !== 'function') {\n throw err\n }\n const opaque = opts && opts.opaque\n queueMicrotask(() => callback(err, { opaque }))\n }\n}\n\nmodule.exports = stream\n","'use strict'\n\nconst { InvalidArgumentError, RequestAbortedError, SocketError } = require('../core/errors')\nconst { AsyncResource } = require('async_hooks')\nconst util = require('../core/util')\nconst { addSignal, removeSignal } = require('./abort-signal')\nconst assert = require('assert')\n\nclass UpgradeHandler extends AsyncResource {\n constructor (opts, callback) {\n if (!opts || typeof opts !== 'object') {\n throw new InvalidArgumentError('invalid opts')\n }\n\n if (typeof callback !== 'function') {\n throw new InvalidArgumentError('invalid callback')\n }\n\n const { signal, opaque, responseHeaders } = opts\n\n if (signal && typeof signal.on !== 'function' && typeof signal.addEventListener !== 'function') {\n throw new InvalidArgumentError('signal must be an EventEmitter or EventTarget')\n }\n\n super('UNDICI_UPGRADE')\n\n this.responseHeaders = responseHeaders || null\n this.opaque = opaque || null\n this.callback = callback\n this.abort = null\n this.context = null\n\n addSignal(this, signal)\n }\n\n onConnect (abort, context) {\n if (!this.callback) {\n throw new RequestAbortedError()\n }\n\n this.abort = abort\n this.context = null\n }\n\n onHeaders () {\n throw new SocketError('bad upgrade', null)\n }\n\n onUpgrade (statusCode, rawHeaders, socket) {\n const { callback, opaque, context } = this\n\n assert.strictEqual(statusCode, 101)\n\n removeSignal(this)\n\n this.callback = null\n const headers = this.responseHeaders === 'raw' ? util.parseRawHeaders(rawHeaders) : util.parseHeaders(rawHeaders)\n this.runInAsyncScope(callback, null, null, {\n headers,\n socket,\n opaque,\n context\n })\n }\n\n onError (err) {\n const { callback, opaque } = this\n\n removeSignal(this)\n\n if (callback) {\n this.callback = null\n queueMicrotask(() => {\n this.runInAsyncScope(callback, null, err, { opaque })\n })\n }\n }\n}\n\nfunction upgrade (opts, callback) {\n if (callback === undefined) {\n return new Promise((resolve, reject) => {\n upgrade.call(this, opts, (err, data) => {\n return err ? reject(err) : resolve(data)\n })\n })\n }\n\n try {\n const upgradeHandler = new UpgradeHandler(opts, callback)\n this.dispatch({\n ...opts,\n method: opts.method || 'GET',\n upgrade: opts.protocol || 'Websocket'\n }, upgradeHandler)\n } catch (err) {\n if (typeof callback !== 'function') {\n throw err\n }\n const opaque = opts && opts.opaque\n queueMicrotask(() => callback(err, { opaque }))\n }\n}\n\nmodule.exports = upgrade\n","'use strict'\n\nmodule.exports.request = require('./api-request')\nmodule.exports.stream = require('./api-stream')\nmodule.exports.pipeline = require('./api-pipeline')\nmodule.exports.upgrade = require('./api-upgrade')\nmodule.exports.connect = require('./api-connect')\n","// Ported from https://github.com/nodejs/undici/pull/907\n\n'use strict'\n\nconst assert = require('assert')\nconst { Readable } = require('stream')\nconst { RequestAbortedError, NotSupportedError, InvalidArgumentError } = require('../core/errors')\nconst util = require('../core/util')\nconst { ReadableStreamFrom, toUSVString } = require('../core/util')\n\nlet Blob\n\nconst kConsume = Symbol('kConsume')\nconst kReading = Symbol('kReading')\nconst kBody = Symbol('kBody')\nconst kAbort = Symbol('abort')\nconst kContentType = Symbol('kContentType')\n\nconst noop = () => {}\n\nmodule.exports = class BodyReadable extends Readable {\n constructor ({\n resume,\n abort,\n contentType = '',\n highWaterMark = 64 * 1024 // Same as nodejs fs streams.\n }) {\n super({\n autoDestroy: true,\n read: resume,\n highWaterMark\n })\n\n this._readableState.dataEmitted = false\n\n this[kAbort] = abort\n this[kConsume] = null\n this[kBody] = null\n this[kContentType] = contentType\n\n // Is stream being consumed through Readable API?\n // This is an optimization so that we avoid checking\n // for 'data' and 'readable' listeners in the hot path\n // inside push().\n this[kReading] = false\n }\n\n destroy (err) {\n if (this.destroyed) {\n // Node < 16\n return this\n }\n\n if (!err && !this._readableState.endEmitted) {\n err = new RequestAbortedError()\n }\n\n if (err) {\n this[kAbort]()\n }\n\n return super.destroy(err)\n }\n\n emit (ev, ...args) {\n if (ev === 'data') {\n // Node < 16.7\n this._readableState.dataEmitted = true\n } else if (ev === 'error') {\n // Node < 16\n this._readableState.errorEmitted = true\n }\n return super.emit(ev, ...args)\n }\n\n on (ev, ...args) {\n if (ev === 'data' || ev === 'readable') {\n this[kReading] = true\n }\n return super.on(ev, ...args)\n }\n\n addListener (ev, ...args) {\n return this.on(ev, ...args)\n }\n\n off (ev, ...args) {\n const ret = super.off(ev, ...args)\n if (ev === 'data' || ev === 'readable') {\n this[kReading] = (\n this.listenerCount('data') > 0 ||\n this.listenerCount('readable') > 0\n )\n }\n return ret\n }\n\n removeListener (ev, ...args) {\n return this.off(ev, ...args)\n }\n\n push (chunk) {\n if (this[kConsume] && chunk !== null && this.readableLength === 0) {\n consumePush(this[kConsume], chunk)\n return this[kReading] ? super.push(chunk) : true\n }\n return super.push(chunk)\n }\n\n // https://fetch.spec.whatwg.org/#dom-body-text\n async text () {\n return consume(this, 'text')\n }\n\n // https://fetch.spec.whatwg.org/#dom-body-json\n async json () {\n return consume(this, 'json')\n }\n\n // https://fetch.spec.whatwg.org/#dom-body-blob\n async blob () {\n return consume(this, 'blob')\n }\n\n // https://fetch.spec.whatwg.org/#dom-body-arraybuffer\n async arrayBuffer () {\n return consume(this, 'arrayBuffer')\n }\n\n // https://fetch.spec.whatwg.org/#dom-body-formdata\n async formData () {\n // TODO: Implement.\n throw new NotSupportedError()\n }\n\n // https://fetch.spec.whatwg.org/#dom-body-bodyused\n get bodyUsed () {\n return util.isDisturbed(this)\n }\n\n // https://fetch.spec.whatwg.org/#dom-body-body\n get body () {\n if (!this[kBody]) {\n this[kBody] = ReadableStreamFrom(this)\n if (this[kConsume]) {\n // TODO: Is this the best way to force a lock?\n this[kBody].getReader() // Ensure stream is locked.\n assert(this[kBody].locked)\n }\n }\n return this[kBody]\n }\n\n dump (opts) {\n let limit = opts && Number.isFinite(opts.limit) ? opts.limit : 262144\n const signal = opts && opts.signal\n\n if (signal) {\n try {\n if (typeof signal !== 'object' || !('aborted' in signal)) {\n throw new InvalidArgumentError('signal must be an AbortSignal')\n }\n util.throwIfAborted(signal)\n } catch (err) {\n return Promise.reject(err)\n }\n }\n\n if (this.closed) {\n return Promise.resolve(null)\n }\n\n return new Promise((resolve, reject) => {\n const signalListenerCleanup = signal\n ? util.addAbortListener(signal, () => {\n this.destroy()\n })\n : noop\n\n this\n .on('close', function () {\n signalListenerCleanup()\n if (signal && signal.aborted) {\n reject(signal.reason || Object.assign(new Error('The operation was aborted'), { name: 'AbortError' }))\n } else {\n resolve(null)\n }\n })\n .on('error', noop)\n .on('data', function (chunk) {\n limit -= chunk.length\n if (limit <= 0) {\n this.destroy()\n }\n })\n .resume()\n })\n }\n}\n\n// https://streams.spec.whatwg.org/#readablestream-locked\nfunction isLocked (self) {\n // Consume is an implicit lock.\n return (self[kBody] && self[kBody].locked === true) || self[kConsume]\n}\n\n// https://fetch.spec.whatwg.org/#body-unusable\nfunction isUnusable (self) {\n return util.isDisturbed(self) || isLocked(self)\n}\n\nasync function consume (stream, type) {\n if (isUnusable(stream)) {\n throw new TypeError('unusable')\n }\n\n assert(!stream[kConsume])\n\n return new Promise((resolve, reject) => {\n stream[kConsume] = {\n type,\n stream,\n resolve,\n reject,\n length: 0,\n body: []\n }\n\n stream\n .on('error', function (err) {\n consumeFinish(this[kConsume], err)\n })\n .on('close', function () {\n if (this[kConsume].body !== null) {\n consumeFinish(this[kConsume], new RequestAbortedError())\n }\n })\n\n process.nextTick(consumeStart, stream[kConsume])\n })\n}\n\nfunction consumeStart (consume) {\n if (consume.body === null) {\n return\n }\n\n const { _readableState: state } = consume.stream\n\n for (const chunk of state.buffer) {\n consumePush(consume, chunk)\n }\n\n if (state.endEmitted) {\n consumeEnd(this[kConsume])\n } else {\n consume.stream.on('end', function () {\n consumeEnd(this[kConsume])\n })\n }\n\n consume.stream.resume()\n\n while (consume.stream.read() != null) {\n // Loop\n }\n}\n\nfunction consumeEnd (consume) {\n const { type, body, resolve, stream, length } = consume\n\n try {\n if (type === 'text') {\n resolve(toUSVString(Buffer.concat(body)))\n } else if (type === 'json') {\n resolve(JSON.parse(Buffer.concat(body)))\n } else if (type === 'arrayBuffer') {\n const dst = new Uint8Array(length)\n\n let pos = 0\n for (const buf of body) {\n dst.set(buf, pos)\n pos += buf.byteLength\n }\n\n resolve(dst.buffer)\n } else if (type === 'blob') {\n if (!Blob) {\n Blob = require('buffer').Blob\n }\n resolve(new Blob(body, { type: stream[kContentType] }))\n }\n\n consumeFinish(consume)\n } catch (err) {\n stream.destroy(err)\n }\n}\n\nfunction consumePush (consume, chunk) {\n consume.length += chunk.length\n consume.body.push(chunk)\n}\n\nfunction consumeFinish (consume, err) {\n if (consume.body === null) {\n return\n }\n\n if (err) {\n consume.reject(err)\n } else {\n consume.resolve()\n }\n\n consume.type = null\n consume.stream = null\n consume.resolve = null\n consume.reject = null\n consume.length = 0\n consume.body = null\n}\n","const assert = require('assert')\nconst {\n ResponseStatusCodeError\n} = require('../core/errors')\nconst { toUSVString } = require('../core/util')\n\nasync function getResolveErrorBodyCallback ({ callback, body, contentType, statusCode, statusMessage, headers }) {\n assert(body)\n\n let chunks = []\n let limit = 0\n\n for await (const chunk of body) {\n chunks.push(chunk)\n limit += chunk.length\n if (limit > 128 * 1024) {\n chunks = null\n break\n }\n }\n\n if (statusCode === 204 || !contentType || !chunks) {\n process.nextTick(callback, new ResponseStatusCodeError(`Response status code ${statusCode}${statusMessage ? `: ${statusMessage}` : ''}`, statusCode, headers))\n return\n }\n\n try {\n if (contentType.startsWith('application/json')) {\n const payload = JSON.parse(toUSVString(Buffer.concat(chunks)))\n process.nextTick(callback, new ResponseStatusCodeError(`Response status code ${statusCode}${statusMessage ? `: ${statusMessage}` : ''}`, statusCode, headers, payload))\n return\n }\n\n if (contentType.startsWith('text/')) {\n const payload = toUSVString(Buffer.concat(chunks))\n process.nextTick(callback, new ResponseStatusCodeError(`Response status code ${statusCode}${statusMessage ? `: ${statusMessage}` : ''}`, statusCode, headers, payload))\n return\n }\n } catch (err) {\n // Process in a fallback if error\n }\n\n process.nextTick(callback, new ResponseStatusCodeError(`Response status code ${statusCode}${statusMessage ? `: ${statusMessage}` : ''}`, statusCode, headers))\n}\n\nmodule.exports = { getResolveErrorBodyCallback }\n","'use strict'\n\nconst {\n BalancedPoolMissingUpstreamError,\n InvalidArgumentError\n} = require('./core/errors')\nconst {\n PoolBase,\n kClients,\n kNeedDrain,\n kAddClient,\n kRemoveClient,\n kGetDispatcher\n} = require('./pool-base')\nconst Pool = require('./pool')\nconst { kUrl, kInterceptors } = require('./core/symbols')\nconst { parseOrigin } = require('./core/util')\nconst kFactory = Symbol('factory')\n\nconst kOptions = Symbol('options')\nconst kGreatestCommonDivisor = Symbol('kGreatestCommonDivisor')\nconst kCurrentWeight = Symbol('kCurrentWeight')\nconst kIndex = Symbol('kIndex')\nconst kWeight = Symbol('kWeight')\nconst kMaxWeightPerServer = Symbol('kMaxWeightPerServer')\nconst kErrorPenalty = Symbol('kErrorPenalty')\n\nfunction getGreatestCommonDivisor (a, b) {\n if (b === 0) return a\n return getGreatestCommonDivisor(b, a % b)\n}\n\nfunction defaultFactory (origin, opts) {\n return new Pool(origin, opts)\n}\n\nclass BalancedPool extends PoolBase {\n constructor (upstreams = [], { factory = defaultFactory, ...opts } = {}) {\n super()\n\n this[kOptions] = opts\n this[kIndex] = -1\n this[kCurrentWeight] = 0\n\n this[kMaxWeightPerServer] = this[kOptions].maxWeightPerServer || 100\n this[kErrorPenalty] = this[kOptions].errorPenalty || 15\n\n if (!Array.isArray(upstreams)) {\n upstreams = [upstreams]\n }\n\n if (typeof factory !== 'function') {\n throw new InvalidArgumentError('factory must be a function.')\n }\n\n this[kInterceptors] = opts.interceptors && opts.interceptors.BalancedPool && Array.isArray(opts.interceptors.BalancedPool)\n ? opts.interceptors.BalancedPool\n : []\n this[kFactory] = factory\n\n for (const upstream of upstreams) {\n this.addUpstream(upstream)\n }\n this._updateBalancedPoolStats()\n }\n\n addUpstream (upstream) {\n const upstreamOrigin = parseOrigin(upstream).origin\n\n if (this[kClients].find((pool) => (\n pool[kUrl].origin === upstreamOrigin &&\n pool.closed !== true &&\n pool.destroyed !== true\n ))) {\n return this\n }\n const pool = this[kFactory](upstreamOrigin, Object.assign({}, this[kOptions]))\n\n this[kAddClient](pool)\n pool.on('connect', () => {\n pool[kWeight] = Math.min(this[kMaxWeightPerServer], pool[kWeight] + this[kErrorPenalty])\n })\n\n pool.on('connectionError', () => {\n pool[kWeight] = Math.max(1, pool[kWeight] - this[kErrorPenalty])\n this._updateBalancedPoolStats()\n })\n\n pool.on('disconnect', (...args) => {\n const err = args[2]\n if (err && err.code === 'UND_ERR_SOCKET') {\n // decrease the weight of the pool.\n pool[kWeight] = Math.max(1, pool[kWeight] - this[kErrorPenalty])\n this._updateBalancedPoolStats()\n }\n })\n\n for (const client of this[kClients]) {\n client[kWeight] = this[kMaxWeightPerServer]\n }\n\n this._updateBalancedPoolStats()\n\n return this\n }\n\n _updateBalancedPoolStats () {\n this[kGreatestCommonDivisor] = this[kClients].map(p => p[kWeight]).reduce(getGreatestCommonDivisor, 0)\n }\n\n removeUpstream (upstream) {\n const upstreamOrigin = parseOrigin(upstream).origin\n\n const pool = this[kClients].find((pool) => (\n pool[kUrl].origin === upstreamOrigin &&\n pool.closed !== true &&\n pool.destroyed !== true\n ))\n\n if (pool) {\n this[kRemoveClient](pool)\n }\n\n return this\n }\n\n get upstreams () {\n return this[kClients]\n .filter(dispatcher => dispatcher.closed !== true && dispatcher.destroyed !== true)\n .map((p) => p[kUrl].origin)\n }\n\n [kGetDispatcher] () {\n // We validate that pools is greater than 0,\n // otherwise we would have to wait until an upstream\n // is added, which might never happen.\n if (this[kClients].length === 0) {\n throw new BalancedPoolMissingUpstreamError()\n }\n\n const dispatcher = this[kClients].find(dispatcher => (\n !dispatcher[kNeedDrain] &&\n dispatcher.closed !== true &&\n dispatcher.destroyed !== true\n ))\n\n if (!dispatcher) {\n return\n }\n\n const allClientsBusy = this[kClients].map(pool => pool[kNeedDrain]).reduce((a, b) => a && b, true)\n\n if (allClientsBusy) {\n return\n }\n\n let counter = 0\n\n let maxWeightIndex = this[kClients].findIndex(pool => !pool[kNeedDrain])\n\n while (counter++ < this[kClients].length) {\n this[kIndex] = (this[kIndex] + 1) % this[kClients].length\n const pool = this[kClients][this[kIndex]]\n\n // find pool index with the largest weight\n if (pool[kWeight] > this[kClients][maxWeightIndex][kWeight] && !pool[kNeedDrain]) {\n maxWeightIndex = this[kIndex]\n }\n\n // decrease the current weight every `this[kClients].length`.\n if (this[kIndex] === 0) {\n // Set the current weight to the next lower weight.\n this[kCurrentWeight] = this[kCurrentWeight] - this[kGreatestCommonDivisor]\n\n if (this[kCurrentWeight] <= 0) {\n this[kCurrentWeight] = this[kMaxWeightPerServer]\n }\n }\n if (pool[kWeight] >= this[kCurrentWeight] && (!pool[kNeedDrain])) {\n return pool\n }\n }\n\n this[kCurrentWeight] = this[kClients][maxWeightIndex][kWeight]\n this[kIndex] = maxWeightIndex\n return this[kClients][maxWeightIndex]\n }\n}\n\nmodule.exports = BalancedPool\n","'use strict'\n\nconst { kConstruct } = require('./symbols')\nconst { urlEquals, fieldValues: getFieldValues } = require('./util')\nconst { kEnumerableProperty, isDisturbed } = require('../core/util')\nconst { kHeadersList } = require('../core/symbols')\nconst { webidl } = require('../fetch/webidl')\nconst { Response, cloneResponse } = require('../fetch/response')\nconst { Request } = require('../fetch/request')\nconst { kState, kHeaders, kGuard, kRealm } = require('../fetch/symbols')\nconst { fetching } = require('../fetch/index')\nconst { urlIsHttpHttpsScheme, createDeferredPromise, readAllBytes } = require('../fetch/util')\nconst assert = require('assert')\nconst { getGlobalDispatcher } = require('../global')\n\n/**\n * @see https://w3c.github.io/ServiceWorker/#dfn-cache-batch-operation\n * @typedef {Object} CacheBatchOperation\n * @property {'delete' | 'put'} type\n * @property {any} request\n * @property {any} response\n * @property {import('../../types/cache').CacheQueryOptions} options\n */\n\n/**\n * @see https://w3c.github.io/ServiceWorker/#dfn-request-response-list\n * @typedef {[any, any][]} requestResponseList\n */\n\nclass Cache {\n /**\n * @see https://w3c.github.io/ServiceWorker/#dfn-relevant-request-response-list\n * @type {requestResponseList}\n */\n #relevantRequestResponseList\n\n constructor () {\n if (arguments[0] !== kConstruct) {\n webidl.illegalConstructor()\n }\n\n this.#relevantRequestResponseList = arguments[1]\n }\n\n async match (request, options = {}) {\n webidl.brandCheck(this, Cache)\n webidl.argumentLengthCheck(arguments, 1, { header: 'Cache.match' })\n\n request = webidl.converters.RequestInfo(request)\n options = webidl.converters.CacheQueryOptions(options)\n\n const p = await this.matchAll(request, options)\n\n if (p.length === 0) {\n return\n }\n\n return p[0]\n }\n\n async matchAll (request = undefined, options = {}) {\n webidl.brandCheck(this, Cache)\n\n if (request !== undefined) request = webidl.converters.RequestInfo(request)\n options = webidl.converters.CacheQueryOptions(options)\n\n // 1.\n let r = null\n\n // 2.\n if (request !== undefined) {\n if (request instanceof Request) {\n // 2.1.1\n r = request[kState]\n\n // 2.1.2\n if (r.method !== 'GET' && !options.ignoreMethod) {\n return []\n }\n } else if (typeof request === 'string') {\n // 2.2.1\n r = new Request(request)[kState]\n }\n }\n\n // 5.\n // 5.1\n const responses = []\n\n // 5.2\n if (request === undefined) {\n // 5.2.1\n for (const requestResponse of this.#relevantRequestResponseList) {\n responses.push(requestResponse[1])\n }\n } else { // 5.3\n // 5.3.1\n const requestResponses = this.#queryCache(r, options)\n\n // 5.3.2\n for (const requestResponse of requestResponses) {\n responses.push(requestResponse[1])\n }\n }\n\n // 5.4\n // We don't implement CORs so we don't need to loop over the responses, yay!\n\n // 5.5.1\n const responseList = []\n\n // 5.5.2\n for (const response of responses) {\n // 5.5.2.1\n const responseObject = new Response(response.body?.source ?? null)\n const body = responseObject[kState].body\n responseObject[kState] = response\n responseObject[kState].body = body\n responseObject[kHeaders][kHeadersList] = response.headersList\n responseObject[kHeaders][kGuard] = 'immutable'\n\n responseList.push(responseObject)\n }\n\n // 6.\n return Object.freeze(responseList)\n }\n\n async add (request) {\n webidl.brandCheck(this, Cache)\n webidl.argumentLengthCheck(arguments, 1, { header: 'Cache.add' })\n\n request = webidl.converters.RequestInfo(request)\n\n // 1.\n const requests = [request]\n\n // 2.\n const responseArrayPromise = this.addAll(requests)\n\n // 3.\n return await responseArrayPromise\n }\n\n async addAll (requests) {\n webidl.brandCheck(this, Cache)\n webidl.argumentLengthCheck(arguments, 1, { header: 'Cache.addAll' })\n\n requests = webidl.converters['sequence'](requests)\n\n // 1.\n const responsePromises = []\n\n // 2.\n const requestList = []\n\n // 3.\n for (const request of requests) {\n if (typeof request === 'string') {\n continue\n }\n\n // 3.1\n const r = request[kState]\n\n // 3.2\n if (!urlIsHttpHttpsScheme(r.url) || r.method !== 'GET') {\n throw webidl.errors.exception({\n header: 'Cache.addAll',\n message: 'Expected http/s scheme when method is not GET.'\n })\n }\n }\n\n // 4.\n /** @type {ReturnType[]} */\n const fetchControllers = []\n\n // 5.\n for (const request of requests) {\n // 5.1\n const r = new Request(request)[kState]\n\n // 5.2\n if (!urlIsHttpHttpsScheme(r.url)) {\n throw webidl.errors.exception({\n header: 'Cache.addAll',\n message: 'Expected http/s scheme.'\n })\n }\n\n // 5.4\n r.initiator = 'fetch'\n r.destination = 'subresource'\n\n // 5.5\n requestList.push(r)\n\n // 5.6\n const responsePromise = createDeferredPromise()\n\n // 5.7\n fetchControllers.push(fetching({\n request: r,\n dispatcher: getGlobalDispatcher(),\n processResponse (response) {\n // 1.\n if (response.type === 'error' || response.status === 206 || response.status < 200 || response.status > 299) {\n responsePromise.reject(webidl.errors.exception({\n header: 'Cache.addAll',\n message: 'Received an invalid status code or the request failed.'\n }))\n } else if (response.headersList.contains('vary')) { // 2.\n // 2.1\n const fieldValues = getFieldValues(response.headersList.get('vary'))\n\n // 2.2\n for (const fieldValue of fieldValues) {\n // 2.2.1\n if (fieldValue === '*') {\n responsePromise.reject(webidl.errors.exception({\n header: 'Cache.addAll',\n message: 'invalid vary field value'\n }))\n\n for (const controller of fetchControllers) {\n controller.abort()\n }\n\n return\n }\n }\n }\n },\n processResponseEndOfBody (response) {\n // 1.\n if (response.aborted) {\n responsePromise.reject(new DOMException('aborted', 'AbortError'))\n return\n }\n\n // 2.\n responsePromise.resolve(response)\n }\n }))\n\n // 5.8\n responsePromises.push(responsePromise.promise)\n }\n\n // 6.\n const p = Promise.all(responsePromises)\n\n // 7.\n const responses = await p\n\n // 7.1\n const operations = []\n\n // 7.2\n let index = 0\n\n // 7.3\n for (const response of responses) {\n // 7.3.1\n /** @type {CacheBatchOperation} */\n const operation = {\n type: 'put', // 7.3.2\n request: requestList[index], // 7.3.3\n response // 7.3.4\n }\n\n operations.push(operation) // 7.3.5\n\n index++ // 7.3.6\n }\n\n // 7.5\n const cacheJobPromise = createDeferredPromise()\n\n // 7.6.1\n let errorData = null\n\n // 7.6.2\n try {\n this.#batchCacheOperations(operations)\n } catch (e) {\n errorData = e\n }\n\n // 7.6.3\n queueMicrotask(() => {\n // 7.6.3.1\n if (errorData === null) {\n cacheJobPromise.resolve(undefined)\n } else {\n // 7.6.3.2\n cacheJobPromise.reject(errorData)\n }\n })\n\n // 7.7\n return cacheJobPromise.promise\n }\n\n async put (request, response) {\n webidl.brandCheck(this, Cache)\n webidl.argumentLengthCheck(arguments, 2, { header: 'Cache.put' })\n\n request = webidl.converters.RequestInfo(request)\n response = webidl.converters.Response(response)\n\n // 1.\n let innerRequest = null\n\n // 2.\n if (request instanceof Request) {\n innerRequest = request[kState]\n } else { // 3.\n innerRequest = new Request(request)[kState]\n }\n\n // 4.\n if (!urlIsHttpHttpsScheme(innerRequest.url) || innerRequest.method !== 'GET') {\n throw webidl.errors.exception({\n header: 'Cache.put',\n message: 'Expected an http/s scheme when method is not GET'\n })\n }\n\n // 5.\n const innerResponse = response[kState]\n\n // 6.\n if (innerResponse.status === 206) {\n throw webidl.errors.exception({\n header: 'Cache.put',\n message: 'Got 206 status'\n })\n }\n\n // 7.\n if (innerResponse.headersList.contains('vary')) {\n // 7.1.\n const fieldValues = getFieldValues(innerResponse.headersList.get('vary'))\n\n // 7.2.\n for (const fieldValue of fieldValues) {\n // 7.2.1\n if (fieldValue === '*') {\n throw webidl.errors.exception({\n header: 'Cache.put',\n message: 'Got * vary field value'\n })\n }\n }\n }\n\n // 8.\n if (innerResponse.body && (isDisturbed(innerResponse.body.stream) || innerResponse.body.stream.locked)) {\n throw webidl.errors.exception({\n header: 'Cache.put',\n message: 'Response body is locked or disturbed'\n })\n }\n\n // 9.\n const clonedResponse = cloneResponse(innerResponse)\n\n // 10.\n const bodyReadPromise = createDeferredPromise()\n\n // 11.\n if (innerResponse.body != null) {\n // 11.1\n const stream = innerResponse.body.stream\n\n // 11.2\n const reader = stream.getReader()\n\n // 11.3\n readAllBytes(reader).then(bodyReadPromise.resolve, bodyReadPromise.reject)\n } else {\n bodyReadPromise.resolve(undefined)\n }\n\n // 12.\n /** @type {CacheBatchOperation[]} */\n const operations = []\n\n // 13.\n /** @type {CacheBatchOperation} */\n const operation = {\n type: 'put', // 14.\n request: innerRequest, // 15.\n response: clonedResponse // 16.\n }\n\n // 17.\n operations.push(operation)\n\n // 19.\n const bytes = await bodyReadPromise.promise\n\n if (clonedResponse.body != null) {\n clonedResponse.body.source = bytes\n }\n\n // 19.1\n const cacheJobPromise = createDeferredPromise()\n\n // 19.2.1\n let errorData = null\n\n // 19.2.2\n try {\n this.#batchCacheOperations(operations)\n } catch (e) {\n errorData = e\n }\n\n // 19.2.3\n queueMicrotask(() => {\n // 19.2.3.1\n if (errorData === null) {\n cacheJobPromise.resolve()\n } else { // 19.2.3.2\n cacheJobPromise.reject(errorData)\n }\n })\n\n return cacheJobPromise.promise\n }\n\n async delete (request, options = {}) {\n webidl.brandCheck(this, Cache)\n webidl.argumentLengthCheck(arguments, 1, { header: 'Cache.delete' })\n\n request = webidl.converters.RequestInfo(request)\n options = webidl.converters.CacheQueryOptions(options)\n\n /**\n * @type {Request}\n */\n let r = null\n\n if (request instanceof Request) {\n r = request[kState]\n\n if (r.method !== 'GET' && !options.ignoreMethod) {\n return false\n }\n } else {\n assert(typeof request === 'string')\n\n r = new Request(request)[kState]\n }\n\n /** @type {CacheBatchOperation[]} */\n const operations = []\n\n /** @type {CacheBatchOperation} */\n const operation = {\n type: 'delete',\n request: r,\n options\n }\n\n operations.push(operation)\n\n const cacheJobPromise = createDeferredPromise()\n\n let errorData = null\n let requestResponses\n\n try {\n requestResponses = this.#batchCacheOperations(operations)\n } catch (e) {\n errorData = e\n }\n\n queueMicrotask(() => {\n if (errorData === null) {\n cacheJobPromise.resolve(!!requestResponses?.length)\n } else {\n cacheJobPromise.reject(errorData)\n }\n })\n\n return cacheJobPromise.promise\n }\n\n /**\n * @see https://w3c.github.io/ServiceWorker/#dom-cache-keys\n * @param {any} request\n * @param {import('../../types/cache').CacheQueryOptions} options\n * @returns {readonly Request[]}\n */\n async keys (request = undefined, options = {}) {\n webidl.brandCheck(this, Cache)\n\n if (request !== undefined) request = webidl.converters.RequestInfo(request)\n options = webidl.converters.CacheQueryOptions(options)\n\n // 1.\n let r = null\n\n // 2.\n if (request !== undefined) {\n // 2.1\n if (request instanceof Request) {\n // 2.1.1\n r = request[kState]\n\n // 2.1.2\n if (r.method !== 'GET' && !options.ignoreMethod) {\n return []\n }\n } else if (typeof request === 'string') { // 2.2\n r = new Request(request)[kState]\n }\n }\n\n // 4.\n const promise = createDeferredPromise()\n\n // 5.\n // 5.1\n const requests = []\n\n // 5.2\n if (request === undefined) {\n // 5.2.1\n for (const requestResponse of this.#relevantRequestResponseList) {\n // 5.2.1.1\n requests.push(requestResponse[0])\n }\n } else { // 5.3\n // 5.3.1\n const requestResponses = this.#queryCache(r, options)\n\n // 5.3.2\n for (const requestResponse of requestResponses) {\n // 5.3.2.1\n requests.push(requestResponse[0])\n }\n }\n\n // 5.4\n queueMicrotask(() => {\n // 5.4.1\n const requestList = []\n\n // 5.4.2\n for (const request of requests) {\n const requestObject = new Request('https://a')\n requestObject[kState] = request\n requestObject[kHeaders][kHeadersList] = request.headersList\n requestObject[kHeaders][kGuard] = 'immutable'\n requestObject[kRealm] = request.client\n\n // 5.4.2.1\n requestList.push(requestObject)\n }\n\n // 5.4.3\n promise.resolve(Object.freeze(requestList))\n })\n\n return promise.promise\n }\n\n /**\n * @see https://w3c.github.io/ServiceWorker/#batch-cache-operations-algorithm\n * @param {CacheBatchOperation[]} operations\n * @returns {requestResponseList}\n */\n #batchCacheOperations (operations) {\n // 1.\n const cache = this.#relevantRequestResponseList\n\n // 2.\n const backupCache = [...cache]\n\n // 3.\n const addedItems = []\n\n // 4.1\n const resultList = []\n\n try {\n // 4.2\n for (const operation of operations) {\n // 4.2.1\n if (operation.type !== 'delete' && operation.type !== 'put') {\n throw webidl.errors.exception({\n header: 'Cache.#batchCacheOperations',\n message: 'operation type does not match \"delete\" or \"put\"'\n })\n }\n\n // 4.2.2\n if (operation.type === 'delete' && operation.response != null) {\n throw webidl.errors.exception({\n header: 'Cache.#batchCacheOperations',\n message: 'delete operation should not have an associated response'\n })\n }\n\n // 4.2.3\n if (this.#queryCache(operation.request, operation.options, addedItems).length) {\n throw new DOMException('???', 'InvalidStateError')\n }\n\n // 4.2.4\n let requestResponses\n\n // 4.2.5\n if (operation.type === 'delete') {\n // 4.2.5.1\n requestResponses = this.#queryCache(operation.request, operation.options)\n\n // TODO: the spec is wrong, this is needed to pass WPTs\n if (requestResponses.length === 0) {\n return []\n }\n\n // 4.2.5.2\n for (const requestResponse of requestResponses) {\n const idx = cache.indexOf(requestResponse)\n assert(idx !== -1)\n\n // 4.2.5.2.1\n cache.splice(idx, 1)\n }\n } else if (operation.type === 'put') { // 4.2.6\n // 4.2.6.1\n if (operation.response == null) {\n throw webidl.errors.exception({\n header: 'Cache.#batchCacheOperations',\n message: 'put operation should have an associated response'\n })\n }\n\n // 4.2.6.2\n const r = operation.request\n\n // 4.2.6.3\n if (!urlIsHttpHttpsScheme(r.url)) {\n throw webidl.errors.exception({\n header: 'Cache.#batchCacheOperations',\n message: 'expected http or https scheme'\n })\n }\n\n // 4.2.6.4\n if (r.method !== 'GET') {\n throw webidl.errors.exception({\n header: 'Cache.#batchCacheOperations',\n message: 'not get method'\n })\n }\n\n // 4.2.6.5\n if (operation.options != null) {\n throw webidl.errors.exception({\n header: 'Cache.#batchCacheOperations',\n message: 'options must not be defined'\n })\n }\n\n // 4.2.6.6\n requestResponses = this.#queryCache(operation.request)\n\n // 4.2.6.7\n for (const requestResponse of requestResponses) {\n const idx = cache.indexOf(requestResponse)\n assert(idx !== -1)\n\n // 4.2.6.7.1\n cache.splice(idx, 1)\n }\n\n // 4.2.6.8\n cache.push([operation.request, operation.response])\n\n // 4.2.6.10\n addedItems.push([operation.request, operation.response])\n }\n\n // 4.2.7\n resultList.push([operation.request, operation.response])\n }\n\n // 4.3\n return resultList\n } catch (e) { // 5.\n // 5.1\n this.#relevantRequestResponseList.length = 0\n\n // 5.2\n this.#relevantRequestResponseList = backupCache\n\n // 5.3\n throw e\n }\n }\n\n /**\n * @see https://w3c.github.io/ServiceWorker/#query-cache\n * @param {any} requestQuery\n * @param {import('../../types/cache').CacheQueryOptions} options\n * @param {requestResponseList} targetStorage\n * @returns {requestResponseList}\n */\n #queryCache (requestQuery, options, targetStorage) {\n /** @type {requestResponseList} */\n const resultList = []\n\n const storage = targetStorage ?? this.#relevantRequestResponseList\n\n for (const requestResponse of storage) {\n const [cachedRequest, cachedResponse] = requestResponse\n if (this.#requestMatchesCachedItem(requestQuery, cachedRequest, cachedResponse, options)) {\n resultList.push(requestResponse)\n }\n }\n\n return resultList\n }\n\n /**\n * @see https://w3c.github.io/ServiceWorker/#request-matches-cached-item-algorithm\n * @param {any} requestQuery\n * @param {any} request\n * @param {any | null} response\n * @param {import('../../types/cache').CacheQueryOptions | undefined} options\n * @returns {boolean}\n */\n #requestMatchesCachedItem (requestQuery, request, response = null, options) {\n // if (options?.ignoreMethod === false && request.method === 'GET') {\n // return false\n // }\n\n const queryURL = new URL(requestQuery.url)\n\n const cachedURL = new URL(request.url)\n\n if (options?.ignoreSearch) {\n cachedURL.search = ''\n\n queryURL.search = ''\n }\n\n if (!urlEquals(queryURL, cachedURL, true)) {\n return false\n }\n\n if (\n response == null ||\n options?.ignoreVary ||\n !response.headersList.contains('vary')\n ) {\n return true\n }\n\n const fieldValues = getFieldValues(response.headersList.get('vary'))\n\n for (const fieldValue of fieldValues) {\n if (fieldValue === '*') {\n return false\n }\n\n const requestValue = request.headersList.get(fieldValue)\n const queryValue = requestQuery.headersList.get(fieldValue)\n\n // If one has the header and the other doesn't, or one has\n // a different value than the other, return false\n if (requestValue !== queryValue) {\n return false\n }\n }\n\n return true\n }\n}\n\nObject.defineProperties(Cache.prototype, {\n [Symbol.toStringTag]: {\n value: 'Cache',\n configurable: true\n },\n match: kEnumerableProperty,\n matchAll: kEnumerableProperty,\n add: kEnumerableProperty,\n addAll: kEnumerableProperty,\n put: kEnumerableProperty,\n delete: kEnumerableProperty,\n keys: kEnumerableProperty\n})\n\nconst cacheQueryOptionConverters = [\n {\n key: 'ignoreSearch',\n converter: webidl.converters.boolean,\n defaultValue: false\n },\n {\n key: 'ignoreMethod',\n converter: webidl.converters.boolean,\n defaultValue: false\n },\n {\n key: 'ignoreVary',\n converter: webidl.converters.boolean,\n defaultValue: false\n }\n]\n\nwebidl.converters.CacheQueryOptions = webidl.dictionaryConverter(cacheQueryOptionConverters)\n\nwebidl.converters.MultiCacheQueryOptions = webidl.dictionaryConverter([\n ...cacheQueryOptionConverters,\n {\n key: 'cacheName',\n converter: webidl.converters.DOMString\n }\n])\n\nwebidl.converters.Response = webidl.interfaceConverter(Response)\n\nwebidl.converters['sequence'] = webidl.sequenceConverter(\n webidl.converters.RequestInfo\n)\n\nmodule.exports = {\n Cache\n}\n","'use strict'\n\nconst { kConstruct } = require('./symbols')\nconst { Cache } = require('./cache')\nconst { webidl } = require('../fetch/webidl')\nconst { kEnumerableProperty } = require('../core/util')\n\nclass CacheStorage {\n /**\n * @see https://w3c.github.io/ServiceWorker/#dfn-relevant-name-to-cache-map\n * @type {Map}\n */\n async has (cacheName) {\n webidl.brandCheck(this, CacheStorage)\n webidl.argumentLengthCheck(arguments, 1, { header: 'CacheStorage.has' })\n\n cacheName = webidl.converters.DOMString(cacheName)\n\n // 2.1.1\n // 2.2\n return this.#caches.has(cacheName)\n }\n\n /**\n * @see https://w3c.github.io/ServiceWorker/#dom-cachestorage-open\n * @param {string} cacheName\n * @returns {Promise}\n */\n async open (cacheName) {\n webidl.brandCheck(this, CacheStorage)\n webidl.argumentLengthCheck(arguments, 1, { header: 'CacheStorage.open' })\n\n cacheName = webidl.converters.DOMString(cacheName)\n\n // 2.1\n if (this.#caches.has(cacheName)) {\n // await caches.open('v1') !== await caches.open('v1')\n\n // 2.1.1\n const cache = this.#caches.get(cacheName)\n\n // 2.1.1.1\n return new Cache(kConstruct, cache)\n }\n\n // 2.2\n const cache = []\n\n // 2.3\n this.#caches.set(cacheName, cache)\n\n // 2.4\n return new Cache(kConstruct, cache)\n }\n\n /**\n * @see https://w3c.github.io/ServiceWorker/#cache-storage-delete\n * @param {string} cacheName\n * @returns {Promise}\n */\n async delete (cacheName) {\n webidl.brandCheck(this, CacheStorage)\n webidl.argumentLengthCheck(arguments, 1, { header: 'CacheStorage.delete' })\n\n cacheName = webidl.converters.DOMString(cacheName)\n\n return this.#caches.delete(cacheName)\n }\n\n /**\n * @see https://w3c.github.io/ServiceWorker/#cache-storage-keys\n * @returns {string[]}\n */\n async keys () {\n webidl.brandCheck(this, CacheStorage)\n\n // 2.1\n const keys = this.#caches.keys()\n\n // 2.2\n return [...keys]\n }\n}\n\nObject.defineProperties(CacheStorage.prototype, {\n [Symbol.toStringTag]: {\n value: 'CacheStorage',\n configurable: true\n },\n match: kEnumerableProperty,\n has: kEnumerableProperty,\n open: kEnumerableProperty,\n delete: kEnumerableProperty,\n keys: kEnumerableProperty\n})\n\nmodule.exports = {\n CacheStorage\n}\n","'use strict'\n\nmodule.exports = {\n kConstruct: require('../core/symbols').kConstruct\n}\n","'use strict'\n\nconst assert = require('assert')\nconst { URLSerializer } = require('../fetch/dataURL')\nconst { isValidHeaderName } = require('../fetch/util')\n\n/**\n * @see https://url.spec.whatwg.org/#concept-url-equals\n * @param {URL} A\n * @param {URL} B\n * @param {boolean | undefined} excludeFragment\n * @returns {boolean}\n */\nfunction urlEquals (A, B, excludeFragment = false) {\n const serializedA = URLSerializer(A, excludeFragment)\n\n const serializedB = URLSerializer(B, excludeFragment)\n\n return serializedA === serializedB\n}\n\n/**\n * @see https://github.com/chromium/chromium/blob/694d20d134cb553d8d89e5500b9148012b1ba299/content/browser/cache_storage/cache_storage_cache.cc#L260-L262\n * @param {string} header\n */\nfunction fieldValues (header) {\n assert(header !== null)\n\n const values = []\n\n for (let value of header.split(',')) {\n value = value.trim()\n\n if (!value.length) {\n continue\n } else if (!isValidHeaderName(value)) {\n continue\n }\n\n values.push(value)\n }\n\n return values\n}\n\nmodule.exports = {\n urlEquals,\n fieldValues\n}\n","// @ts-check\n\n'use strict'\n\n/* global WebAssembly */\n\nconst assert = require('assert')\nconst net = require('net')\nconst http = require('http')\nconst { pipeline } = require('stream')\nconst util = require('./core/util')\nconst timers = require('./timers')\nconst Request = require('./core/request')\nconst DispatcherBase = require('./dispatcher-base')\nconst {\n RequestContentLengthMismatchError,\n ResponseContentLengthMismatchError,\n InvalidArgumentError,\n RequestAbortedError,\n HeadersTimeoutError,\n HeadersOverflowError,\n SocketError,\n InformationalError,\n BodyTimeoutError,\n HTTPParserError,\n ResponseExceededMaxSizeError,\n ClientDestroyedError\n} = require('./core/errors')\nconst buildConnector = require('./core/connect')\nconst {\n kUrl,\n kReset,\n kServerName,\n kClient,\n kBusy,\n kParser,\n kConnect,\n kBlocking,\n kResuming,\n kRunning,\n kPending,\n kSize,\n kWriting,\n kQueue,\n kConnected,\n kConnecting,\n kNeedDrain,\n kNoRef,\n kKeepAliveDefaultTimeout,\n kHostHeader,\n kPendingIdx,\n kRunningIdx,\n kError,\n kPipelining,\n kSocket,\n kKeepAliveTimeoutValue,\n kMaxHeadersSize,\n kKeepAliveMaxTimeout,\n kKeepAliveTimeoutThreshold,\n kHeadersTimeout,\n kBodyTimeout,\n kStrictContentLength,\n kConnector,\n kMaxRedirections,\n kMaxRequests,\n kCounter,\n kClose,\n kDestroy,\n kDispatch,\n kInterceptors,\n kLocalAddress,\n kMaxResponseSize,\n kHTTPConnVersion,\n // HTTP2\n kHost,\n kHTTP2Session,\n kHTTP2SessionState,\n kHTTP2BuildRequest,\n kHTTP2CopyHeaders,\n kHTTP1BuildRequest\n} = require('./core/symbols')\n\n/** @type {import('http2')} */\nlet http2\ntry {\n http2 = require('http2')\n} catch {\n // @ts-ignore\n http2 = { constants: {} }\n}\n\nconst {\n constants: {\n HTTP2_HEADER_AUTHORITY,\n HTTP2_HEADER_METHOD,\n HTTP2_HEADER_PATH,\n HTTP2_HEADER_SCHEME,\n HTTP2_HEADER_CONTENT_LENGTH,\n HTTP2_HEADER_EXPECT,\n HTTP2_HEADER_STATUS\n }\n} = http2\n\n// Experimental\nlet h2ExperimentalWarned = false\n\nconst FastBuffer = Buffer[Symbol.species]\n\nconst kClosedResolve = Symbol('kClosedResolve')\n\nconst channels = {}\n\ntry {\n const diagnosticsChannel = require('diagnostics_channel')\n channels.sendHeaders = diagnosticsChannel.channel('undici:client:sendHeaders')\n channels.beforeConnect = diagnosticsChannel.channel('undici:client:beforeConnect')\n channels.connectError = diagnosticsChannel.channel('undici:client:connectError')\n channels.connected = diagnosticsChannel.channel('undici:client:connected')\n} catch {\n channels.sendHeaders = { hasSubscribers: false }\n channels.beforeConnect = { hasSubscribers: false }\n channels.connectError = { hasSubscribers: false }\n channels.connected = { hasSubscribers: false }\n}\n\n/**\n * @type {import('../types/client').default}\n */\nclass Client extends DispatcherBase {\n /**\n *\n * @param {string|URL} url\n * @param {import('../types/client').Client.Options} options\n */\n constructor (url, {\n interceptors,\n maxHeaderSize,\n headersTimeout,\n socketTimeout,\n requestTimeout,\n connectTimeout,\n bodyTimeout,\n idleTimeout,\n keepAlive,\n keepAliveTimeout,\n maxKeepAliveTimeout,\n keepAliveMaxTimeout,\n keepAliveTimeoutThreshold,\n socketPath,\n pipelining,\n tls,\n strictContentLength,\n maxCachedSessions,\n maxRedirections,\n connect,\n maxRequestsPerClient,\n localAddress,\n maxResponseSize,\n autoSelectFamily,\n autoSelectFamilyAttemptTimeout,\n // h2\n allowH2,\n maxConcurrentStreams\n } = {}) {\n super()\n\n if (keepAlive !== undefined) {\n throw new InvalidArgumentError('unsupported keepAlive, use pipelining=0 instead')\n }\n\n if (socketTimeout !== undefined) {\n throw new InvalidArgumentError('unsupported socketTimeout, use headersTimeout & bodyTimeout instead')\n }\n\n if (requestTimeout !== undefined) {\n throw new InvalidArgumentError('unsupported requestTimeout, use headersTimeout & bodyTimeout instead')\n }\n\n if (idleTimeout !== undefined) {\n throw new InvalidArgumentError('unsupported idleTimeout, use keepAliveTimeout instead')\n }\n\n if (maxKeepAliveTimeout !== undefined) {\n throw new InvalidArgumentError('unsupported maxKeepAliveTimeout, use keepAliveMaxTimeout instead')\n }\n\n if (maxHeaderSize != null && !Number.isFinite(maxHeaderSize)) {\n throw new InvalidArgumentError('invalid maxHeaderSize')\n }\n\n if (socketPath != null && typeof socketPath !== 'string') {\n throw new InvalidArgumentError('invalid socketPath')\n }\n\n if (connectTimeout != null && (!Number.isFinite(connectTimeout) || connectTimeout < 0)) {\n throw new InvalidArgumentError('invalid connectTimeout')\n }\n\n if (keepAliveTimeout != null && (!Number.isFinite(keepAliveTimeout) || keepAliveTimeout <= 0)) {\n throw new InvalidArgumentError('invalid keepAliveTimeout')\n }\n\n if (keepAliveMaxTimeout != null && (!Number.isFinite(keepAliveMaxTimeout) || keepAliveMaxTimeout <= 0)) {\n throw new InvalidArgumentError('invalid keepAliveMaxTimeout')\n }\n\n if (keepAliveTimeoutThreshold != null && !Number.isFinite(keepAliveTimeoutThreshold)) {\n throw new InvalidArgumentError('invalid keepAliveTimeoutThreshold')\n }\n\n if (headersTimeout != null && (!Number.isInteger(headersTimeout) || headersTimeout < 0)) {\n throw new InvalidArgumentError('headersTimeout must be a positive integer or zero')\n }\n\n if (bodyTimeout != null && (!Number.isInteger(bodyTimeout) || bodyTimeout < 0)) {\n throw new InvalidArgumentError('bodyTimeout must be a positive integer or zero')\n }\n\n if (connect != null && typeof connect !== 'function' && typeof connect !== 'object') {\n throw new InvalidArgumentError('connect must be a function or an object')\n }\n\n if (maxRedirections != null && (!Number.isInteger(maxRedirections) || maxRedirections < 0)) {\n throw new InvalidArgumentError('maxRedirections must be a positive number')\n }\n\n if (maxRequestsPerClient != null && (!Number.isInteger(maxRequestsPerClient) || maxRequestsPerClient < 0)) {\n throw new InvalidArgumentError('maxRequestsPerClient must be a positive number')\n }\n\n if (localAddress != null && (typeof localAddress !== 'string' || net.isIP(localAddress) === 0)) {\n throw new InvalidArgumentError('localAddress must be valid string IP address')\n }\n\n if (maxResponseSize != null && (!Number.isInteger(maxResponseSize) || maxResponseSize < -1)) {\n throw new InvalidArgumentError('maxResponseSize must be a positive number')\n }\n\n if (\n autoSelectFamilyAttemptTimeout != null &&\n (!Number.isInteger(autoSelectFamilyAttemptTimeout) || autoSelectFamilyAttemptTimeout < -1)\n ) {\n throw new InvalidArgumentError('autoSelectFamilyAttemptTimeout must be a positive number')\n }\n\n // h2\n if (allowH2 != null && typeof allowH2 !== 'boolean') {\n throw new InvalidArgumentError('allowH2 must be a valid boolean value')\n }\n\n if (maxConcurrentStreams != null && (typeof maxConcurrentStreams !== 'number' || maxConcurrentStreams < 1)) {\n throw new InvalidArgumentError('maxConcurrentStreams must be a possitive integer, greater than 0')\n }\n\n if (typeof connect !== 'function') {\n connect = buildConnector({\n ...tls,\n maxCachedSessions,\n allowH2,\n socketPath,\n timeout: connectTimeout,\n ...(util.nodeHasAutoSelectFamily && autoSelectFamily ? { autoSelectFamily, autoSelectFamilyAttemptTimeout } : undefined),\n ...connect\n })\n }\n\n this[kInterceptors] = interceptors && interceptors.Client && Array.isArray(interceptors.Client)\n ? interceptors.Client\n : [createRedirectInterceptor({ maxRedirections })]\n this[kUrl] = util.parseOrigin(url)\n this[kConnector] = connect\n this[kSocket] = null\n this[kPipelining] = pipelining != null ? pipelining : 1\n this[kMaxHeadersSize] = maxHeaderSize || http.maxHeaderSize\n this[kKeepAliveDefaultTimeout] = keepAliveTimeout == null ? 4e3 : keepAliveTimeout\n this[kKeepAliveMaxTimeout] = keepAliveMaxTimeout == null ? 600e3 : keepAliveMaxTimeout\n this[kKeepAliveTimeoutThreshold] = keepAliveTimeoutThreshold == null ? 1e3 : keepAliveTimeoutThreshold\n this[kKeepAliveTimeoutValue] = this[kKeepAliveDefaultTimeout]\n this[kServerName] = null\n this[kLocalAddress] = localAddress != null ? localAddress : null\n this[kResuming] = 0 // 0, idle, 1, scheduled, 2 resuming\n this[kNeedDrain] = 0 // 0, idle, 1, scheduled, 2 resuming\n this[kHostHeader] = `host: ${this[kUrl].hostname}${this[kUrl].port ? `:${this[kUrl].port}` : ''}\\r\\n`\n this[kBodyTimeout] = bodyTimeout != null ? bodyTimeout : 300e3\n this[kHeadersTimeout] = headersTimeout != null ? headersTimeout : 300e3\n this[kStrictContentLength] = strictContentLength == null ? true : strictContentLength\n this[kMaxRedirections] = maxRedirections\n this[kMaxRequests] = maxRequestsPerClient\n this[kClosedResolve] = null\n this[kMaxResponseSize] = maxResponseSize > -1 ? maxResponseSize : -1\n this[kHTTPConnVersion] = 'h1'\n\n // HTTP/2\n this[kHTTP2Session] = null\n this[kHTTP2SessionState] = !allowH2\n ? null\n : {\n // streams: null, // Fixed queue of streams - For future support of `push`\n openStreams: 0, // Keep track of them to decide wether or not unref the session\n maxConcurrentStreams: maxConcurrentStreams != null ? maxConcurrentStreams : 100 // Max peerConcurrentStreams for a Node h2 server\n }\n this[kHost] = `${this[kUrl].hostname}${this[kUrl].port ? `:${this[kUrl].port}` : ''}`\n\n // kQueue is built up of 3 sections separated by\n // the kRunningIdx and kPendingIdx indices.\n // | complete | running | pending |\n // ^ kRunningIdx ^ kPendingIdx ^ kQueue.length\n // kRunningIdx points to the first running element.\n // kPendingIdx points to the first pending element.\n // This implements a fast queue with an amortized\n // time of O(1).\n\n this[kQueue] = []\n this[kRunningIdx] = 0\n this[kPendingIdx] = 0\n }\n\n get pipelining () {\n return this[kPipelining]\n }\n\n set pipelining (value) {\n this[kPipelining] = value\n resume(this, true)\n }\n\n get [kPending] () {\n return this[kQueue].length - this[kPendingIdx]\n }\n\n get [kRunning] () {\n return this[kPendingIdx] - this[kRunningIdx]\n }\n\n get [kSize] () {\n return this[kQueue].length - this[kRunningIdx]\n }\n\n get [kConnected] () {\n return !!this[kSocket] && !this[kConnecting] && !this[kSocket].destroyed\n }\n\n get [kBusy] () {\n const socket = this[kSocket]\n return (\n (socket && (socket[kReset] || socket[kWriting] || socket[kBlocking])) ||\n (this[kSize] >= (this[kPipelining] || 1)) ||\n this[kPending] > 0\n )\n }\n\n /* istanbul ignore: only used for test */\n [kConnect] (cb) {\n connect(this)\n this.once('connect', cb)\n }\n\n [kDispatch] (opts, handler) {\n const origin = opts.origin || this[kUrl].origin\n\n const request = this[kHTTPConnVersion] === 'h2'\n ? Request[kHTTP2BuildRequest](origin, opts, handler)\n : Request[kHTTP1BuildRequest](origin, opts, handler)\n\n this[kQueue].push(request)\n if (this[kResuming]) {\n // Do nothing.\n } else if (util.bodyLength(request.body) == null && util.isIterable(request.body)) {\n // Wait a tick in case stream/iterator is ended in the same tick.\n this[kResuming] = 1\n process.nextTick(resume, this)\n } else {\n resume(this, true)\n }\n\n if (this[kResuming] && this[kNeedDrain] !== 2 && this[kBusy]) {\n this[kNeedDrain] = 2\n }\n\n return this[kNeedDrain] < 2\n }\n\n async [kClose] () {\n // TODO: for H2 we need to gracefully flush the remaining enqueued\n // request and close each stream.\n return new Promise((resolve) => {\n if (!this[kSize]) {\n resolve(null)\n } else {\n this[kClosedResolve] = resolve\n }\n })\n }\n\n async [kDestroy] (err) {\n return new Promise((resolve) => {\n const requests = this[kQueue].splice(this[kPendingIdx])\n for (let i = 0; i < requests.length; i++) {\n const request = requests[i]\n errorRequest(this, request, err)\n }\n\n const callback = () => {\n if (this[kClosedResolve]) {\n // TODO (fix): Should we error here with ClientDestroyedError?\n this[kClosedResolve]()\n this[kClosedResolve] = null\n }\n resolve()\n }\n\n if (this[kHTTP2Session] != null) {\n util.destroy(this[kHTTP2Session], err)\n this[kHTTP2Session] = null\n this[kHTTP2SessionState] = null\n }\n\n if (!this[kSocket]) {\n queueMicrotask(callback)\n } else {\n util.destroy(this[kSocket].on('close', callback), err)\n }\n\n resume(this)\n })\n }\n}\n\nfunction onHttp2SessionError (err) {\n assert(err.code !== 'ERR_TLS_CERT_ALTNAME_INVALID')\n\n this[kSocket][kError] = err\n\n onError(this[kClient], err)\n}\n\nfunction onHttp2FrameError (type, code, id) {\n const err = new InformationalError(`HTTP/2: \"frameError\" received - type ${type}, code ${code}`)\n\n if (id === 0) {\n this[kSocket][kError] = err\n onError(this[kClient], err)\n }\n}\n\nfunction onHttp2SessionEnd () {\n util.destroy(this, new SocketError('other side closed'))\n util.destroy(this[kSocket], new SocketError('other side closed'))\n}\n\nfunction onHTTP2GoAway (code) {\n const client = this[kClient]\n const err = new InformationalError(`HTTP/2: \"GOAWAY\" frame received with code ${code}`)\n client[kSocket] = null\n client[kHTTP2Session] = null\n\n if (client.destroyed) {\n assert(this[kPending] === 0)\n\n // Fail entire queue.\n const requests = client[kQueue].splice(client[kRunningIdx])\n for (let i = 0; i < requests.length; i++) {\n const request = requests[i]\n errorRequest(this, request, err)\n }\n } else if (client[kRunning] > 0) {\n // Fail head of pipeline.\n const request = client[kQueue][client[kRunningIdx]]\n client[kQueue][client[kRunningIdx]++] = null\n\n errorRequest(client, request, err)\n }\n\n client[kPendingIdx] = client[kRunningIdx]\n\n assert(client[kRunning] === 0)\n\n client.emit('disconnect',\n client[kUrl],\n [client],\n err\n )\n\n resume(client)\n}\n\nconst constants = require('./llhttp/constants')\nconst createRedirectInterceptor = require('./interceptor/redirectInterceptor')\nconst EMPTY_BUF = Buffer.alloc(0)\n\nasync function lazyllhttp () {\n const llhttpWasmData = process.env.JEST_WORKER_ID ? require('./llhttp/llhttp-wasm.js') : undefined\n\n let mod\n try {\n mod = await WebAssembly.compile(Buffer.from(require('./llhttp/llhttp_simd-wasm.js'), 'base64'))\n } catch (e) {\n /* istanbul ignore next */\n\n // We could check if the error was caused by the simd option not\n // being enabled, but the occurring of this other error\n // * https://github.com/emscripten-core/emscripten/issues/11495\n // got me to remove that check to avoid breaking Node 12.\n mod = await WebAssembly.compile(Buffer.from(llhttpWasmData || require('./llhttp/llhttp-wasm.js'), 'base64'))\n }\n\n return await WebAssembly.instantiate(mod, {\n env: {\n /* eslint-disable camelcase */\n\n wasm_on_url: (p, at, len) => {\n /* istanbul ignore next */\n return 0\n },\n wasm_on_status: (p, at, len) => {\n assert.strictEqual(currentParser.ptr, p)\n const start = at - currentBufferPtr + currentBufferRef.byteOffset\n return currentParser.onStatus(new FastBuffer(currentBufferRef.buffer, start, len)) || 0\n },\n wasm_on_message_begin: (p) => {\n assert.strictEqual(currentParser.ptr, p)\n return currentParser.onMessageBegin() || 0\n },\n wasm_on_header_field: (p, at, len) => {\n assert.strictEqual(currentParser.ptr, p)\n const start = at - currentBufferPtr + currentBufferRef.byteOffset\n return currentParser.onHeaderField(new FastBuffer(currentBufferRef.buffer, start, len)) || 0\n },\n wasm_on_header_value: (p, at, len) => {\n assert.strictEqual(currentParser.ptr, p)\n const start = at - currentBufferPtr + currentBufferRef.byteOffset\n return currentParser.onHeaderValue(new FastBuffer(currentBufferRef.buffer, start, len)) || 0\n },\n wasm_on_headers_complete: (p, statusCode, upgrade, shouldKeepAlive) => {\n assert.strictEqual(currentParser.ptr, p)\n return currentParser.onHeadersComplete(statusCode, Boolean(upgrade), Boolean(shouldKeepAlive)) || 0\n },\n wasm_on_body: (p, at, len) => {\n assert.strictEqual(currentParser.ptr, p)\n const start = at - currentBufferPtr + currentBufferRef.byteOffset\n return currentParser.onBody(new FastBuffer(currentBufferRef.buffer, start, len)) || 0\n },\n wasm_on_message_complete: (p) => {\n assert.strictEqual(currentParser.ptr, p)\n return currentParser.onMessageComplete() || 0\n }\n\n /* eslint-enable camelcase */\n }\n })\n}\n\nlet llhttpInstance = null\nlet llhttpPromise = lazyllhttp()\nllhttpPromise.catch()\n\nlet currentParser = null\nlet currentBufferRef = null\nlet currentBufferSize = 0\nlet currentBufferPtr = null\n\nconst TIMEOUT_HEADERS = 1\nconst TIMEOUT_BODY = 2\nconst TIMEOUT_IDLE = 3\n\nclass Parser {\n constructor (client, socket, { exports }) {\n assert(Number.isFinite(client[kMaxHeadersSize]) && client[kMaxHeadersSize] > 0)\n\n this.llhttp = exports\n this.ptr = this.llhttp.llhttp_alloc(constants.TYPE.RESPONSE)\n this.client = client\n this.socket = socket\n this.timeout = null\n this.timeoutValue = null\n this.timeoutType = null\n this.statusCode = null\n this.statusText = ''\n this.upgrade = false\n this.headers = []\n this.headersSize = 0\n this.headersMaxSize = client[kMaxHeadersSize]\n this.shouldKeepAlive = false\n this.paused = false\n this.resume = this.resume.bind(this)\n\n this.bytesRead = 0\n\n this.keepAlive = ''\n this.contentLength = ''\n this.connection = ''\n this.maxResponseSize = client[kMaxResponseSize]\n }\n\n setTimeout (value, type) {\n this.timeoutType = type\n if (value !== this.timeoutValue) {\n timers.clearTimeout(this.timeout)\n if (value) {\n this.timeout = timers.setTimeout(onParserTimeout, value, this)\n // istanbul ignore else: only for jest\n if (this.timeout.unref) {\n this.timeout.unref()\n }\n } else {\n this.timeout = null\n }\n this.timeoutValue = value\n } else if (this.timeout) {\n // istanbul ignore else: only for jest\n if (this.timeout.refresh) {\n this.timeout.refresh()\n }\n }\n }\n\n resume () {\n if (this.socket.destroyed || !this.paused) {\n return\n }\n\n assert(this.ptr != null)\n assert(currentParser == null)\n\n this.llhttp.llhttp_resume(this.ptr)\n\n assert(this.timeoutType === TIMEOUT_BODY)\n if (this.timeout) {\n // istanbul ignore else: only for jest\n if (this.timeout.refresh) {\n this.timeout.refresh()\n }\n }\n\n this.paused = false\n this.execute(this.socket.read() || EMPTY_BUF) // Flush parser.\n this.readMore()\n }\n\n readMore () {\n while (!this.paused && this.ptr) {\n const chunk = this.socket.read()\n if (chunk === null) {\n break\n }\n this.execute(chunk)\n }\n }\n\n execute (data) {\n assert(this.ptr != null)\n assert(currentParser == null)\n assert(!this.paused)\n\n const { socket, llhttp } = this\n\n if (data.length > currentBufferSize) {\n if (currentBufferPtr) {\n llhttp.free(currentBufferPtr)\n }\n currentBufferSize = Math.ceil(data.length / 4096) * 4096\n currentBufferPtr = llhttp.malloc(currentBufferSize)\n }\n\n new Uint8Array(llhttp.memory.buffer, currentBufferPtr, currentBufferSize).set(data)\n\n // Call `execute` on the wasm parser.\n // We pass the `llhttp_parser` pointer address, the pointer address of buffer view data,\n // and finally the length of bytes to parse.\n // The return value is an error code or `constants.ERROR.OK`.\n try {\n let ret\n\n try {\n currentBufferRef = data\n currentParser = this\n ret = llhttp.llhttp_execute(this.ptr, currentBufferPtr, data.length)\n /* eslint-disable-next-line no-useless-catch */\n } catch (err) {\n /* istanbul ignore next: difficult to make a test case for */\n throw err\n } finally {\n currentParser = null\n currentBufferRef = null\n }\n\n const offset = llhttp.llhttp_get_error_pos(this.ptr) - currentBufferPtr\n\n if (ret === constants.ERROR.PAUSED_UPGRADE) {\n this.onUpgrade(data.slice(offset))\n } else if (ret === constants.ERROR.PAUSED) {\n this.paused = true\n socket.unshift(data.slice(offset))\n } else if (ret !== constants.ERROR.OK) {\n const ptr = llhttp.llhttp_get_error_reason(this.ptr)\n let message = ''\n /* istanbul ignore else: difficult to make a test case for */\n if (ptr) {\n const len = new Uint8Array(llhttp.memory.buffer, ptr).indexOf(0)\n message =\n 'Response does not match the HTTP/1.1 protocol (' +\n Buffer.from(llhttp.memory.buffer, ptr, len).toString() +\n ')'\n }\n throw new HTTPParserError(message, constants.ERROR[ret], data.slice(offset))\n }\n } catch (err) {\n util.destroy(socket, err)\n }\n }\n\n destroy () {\n assert(this.ptr != null)\n assert(currentParser == null)\n\n this.llhttp.llhttp_free(this.ptr)\n this.ptr = null\n\n timers.clearTimeout(this.timeout)\n this.timeout = null\n this.timeoutValue = null\n this.timeoutType = null\n\n this.paused = false\n }\n\n onStatus (buf) {\n this.statusText = buf.toString()\n }\n\n onMessageBegin () {\n const { socket, client } = this\n\n /* istanbul ignore next: difficult to make a test case for */\n if (socket.destroyed) {\n return -1\n }\n\n const request = client[kQueue][client[kRunningIdx]]\n if (!request) {\n return -1\n }\n }\n\n onHeaderField (buf) {\n const len = this.headers.length\n\n if ((len & 1) === 0) {\n this.headers.push(buf)\n } else {\n this.headers[len - 1] = Buffer.concat([this.headers[len - 1], buf])\n }\n\n this.trackHeader(buf.length)\n }\n\n onHeaderValue (buf) {\n let len = this.headers.length\n\n if ((len & 1) === 1) {\n this.headers.push(buf)\n len += 1\n } else {\n this.headers[len - 1] = Buffer.concat([this.headers[len - 1], buf])\n }\n\n const key = this.headers[len - 2]\n if (key.length === 10 && key.toString().toLowerCase() === 'keep-alive') {\n this.keepAlive += buf.toString()\n } else if (key.length === 10 && key.toString().toLowerCase() === 'connection') {\n this.connection += buf.toString()\n } else if (key.length === 14 && key.toString().toLowerCase() === 'content-length') {\n this.contentLength += buf.toString()\n }\n\n this.trackHeader(buf.length)\n }\n\n trackHeader (len) {\n this.headersSize += len\n if (this.headersSize >= this.headersMaxSize) {\n util.destroy(this.socket, new HeadersOverflowError())\n }\n }\n\n onUpgrade (head) {\n const { upgrade, client, socket, headers, statusCode } = this\n\n assert(upgrade)\n\n const request = client[kQueue][client[kRunningIdx]]\n assert(request)\n\n assert(!socket.destroyed)\n assert(socket === client[kSocket])\n assert(!this.paused)\n assert(request.upgrade || request.method === 'CONNECT')\n\n this.statusCode = null\n this.statusText = ''\n this.shouldKeepAlive = null\n\n assert(this.headers.length % 2 === 0)\n this.headers = []\n this.headersSize = 0\n\n socket.unshift(head)\n\n socket[kParser].destroy()\n socket[kParser] = null\n\n socket[kClient] = null\n socket[kError] = null\n socket\n .removeListener('error', onSocketError)\n .removeListener('readable', onSocketReadable)\n .removeListener('end', onSocketEnd)\n .removeListener('close', onSocketClose)\n\n client[kSocket] = null\n client[kQueue][client[kRunningIdx]++] = null\n client.emit('disconnect', client[kUrl], [client], new InformationalError('upgrade'))\n\n try {\n request.onUpgrade(statusCode, headers, socket)\n } catch (err) {\n util.destroy(socket, err)\n }\n\n resume(client)\n }\n\n onHeadersComplete (statusCode, upgrade, shouldKeepAlive) {\n const { client, socket, headers, statusText } = this\n\n /* istanbul ignore next: difficult to make a test case for */\n if (socket.destroyed) {\n return -1\n }\n\n const request = client[kQueue][client[kRunningIdx]]\n\n /* istanbul ignore next: difficult to make a test case for */\n if (!request) {\n return -1\n }\n\n assert(!this.upgrade)\n assert(this.statusCode < 200)\n\n if (statusCode === 100) {\n util.destroy(socket, new SocketError('bad response', util.getSocketInfo(socket)))\n return -1\n }\n\n /* this can only happen if server is misbehaving */\n if (upgrade && !request.upgrade) {\n util.destroy(socket, new SocketError('bad upgrade', util.getSocketInfo(socket)))\n return -1\n }\n\n assert.strictEqual(this.timeoutType, TIMEOUT_HEADERS)\n\n this.statusCode = statusCode\n this.shouldKeepAlive = (\n shouldKeepAlive ||\n // Override llhttp value which does not allow keepAlive for HEAD.\n (request.method === 'HEAD' && !socket[kReset] && this.connection.toLowerCase() === 'keep-alive')\n )\n\n if (this.statusCode >= 200) {\n const bodyTimeout = request.bodyTimeout != null\n ? request.bodyTimeout\n : client[kBodyTimeout]\n this.setTimeout(bodyTimeout, TIMEOUT_BODY)\n } else if (this.timeout) {\n // istanbul ignore else: only for jest\n if (this.timeout.refresh) {\n this.timeout.refresh()\n }\n }\n\n if (request.method === 'CONNECT') {\n assert(client[kRunning] === 1)\n this.upgrade = true\n return 2\n }\n\n if (upgrade) {\n assert(client[kRunning] === 1)\n this.upgrade = true\n return 2\n }\n\n assert(this.headers.length % 2 === 0)\n this.headers = []\n this.headersSize = 0\n\n if (this.shouldKeepAlive && client[kPipelining]) {\n const keepAliveTimeout = this.keepAlive ? util.parseKeepAliveTimeout(this.keepAlive) : null\n\n if (keepAliveTimeout != null) {\n const timeout = Math.min(\n keepAliveTimeout - client[kKeepAliveTimeoutThreshold],\n client[kKeepAliveMaxTimeout]\n )\n if (timeout <= 0) {\n socket[kReset] = true\n } else {\n client[kKeepAliveTimeoutValue] = timeout\n }\n } else {\n client[kKeepAliveTimeoutValue] = client[kKeepAliveDefaultTimeout]\n }\n } else {\n // Stop more requests from being dispatched.\n socket[kReset] = true\n }\n\n const pause = request.onHeaders(statusCode, headers, this.resume, statusText) === false\n\n if (request.aborted) {\n return -1\n }\n\n if (request.method === 'HEAD') {\n return 1\n }\n\n if (statusCode < 200) {\n return 1\n }\n\n if (socket[kBlocking]) {\n socket[kBlocking] = false\n resume(client)\n }\n\n return pause ? constants.ERROR.PAUSED : 0\n }\n\n onBody (buf) {\n const { client, socket, statusCode, maxResponseSize } = this\n\n if (socket.destroyed) {\n return -1\n }\n\n const request = client[kQueue][client[kRunningIdx]]\n assert(request)\n\n assert.strictEqual(this.timeoutType, TIMEOUT_BODY)\n if (this.timeout) {\n // istanbul ignore else: only for jest\n if (this.timeout.refresh) {\n this.timeout.refresh()\n }\n }\n\n assert(statusCode >= 200)\n\n if (maxResponseSize > -1 && this.bytesRead + buf.length > maxResponseSize) {\n util.destroy(socket, new ResponseExceededMaxSizeError())\n return -1\n }\n\n this.bytesRead += buf.length\n\n if (request.onData(buf) === false) {\n return constants.ERROR.PAUSED\n }\n }\n\n onMessageComplete () {\n const { client, socket, statusCode, upgrade, headers, contentLength, bytesRead, shouldKeepAlive } = this\n\n if (socket.destroyed && (!statusCode || shouldKeepAlive)) {\n return -1\n }\n\n if (upgrade) {\n return\n }\n\n const request = client[kQueue][client[kRunningIdx]]\n assert(request)\n\n assert(statusCode >= 100)\n\n this.statusCode = null\n this.statusText = ''\n this.bytesRead = 0\n this.contentLength = ''\n this.keepAlive = ''\n this.connection = ''\n\n assert(this.headers.length % 2 === 0)\n this.headers = []\n this.headersSize = 0\n\n if (statusCode < 200) {\n return\n }\n\n /* istanbul ignore next: should be handled by llhttp? */\n if (request.method !== 'HEAD' && contentLength && bytesRead !== parseInt(contentLength, 10)) {\n util.destroy(socket, new ResponseContentLengthMismatchError())\n return -1\n }\n\n request.onComplete(headers)\n\n client[kQueue][client[kRunningIdx]++] = null\n\n if (socket[kWriting]) {\n assert.strictEqual(client[kRunning], 0)\n // Response completed before request.\n util.destroy(socket, new InformationalError('reset'))\n return constants.ERROR.PAUSED\n } else if (!shouldKeepAlive) {\n util.destroy(socket, new InformationalError('reset'))\n return constants.ERROR.PAUSED\n } else if (socket[kReset] && client[kRunning] === 0) {\n // Destroy socket once all requests have completed.\n // The request at the tail of the pipeline is the one\n // that requested reset and no further requests should\n // have been queued since then.\n util.destroy(socket, new InformationalError('reset'))\n return constants.ERROR.PAUSED\n } else if (client[kPipelining] === 1) {\n // We must wait a full event loop cycle to reuse this socket to make sure\n // that non-spec compliant servers are not closing the connection even if they\n // said they won't.\n setImmediate(resume, client)\n } else {\n resume(client)\n }\n }\n}\n\nfunction onParserTimeout (parser) {\n const { socket, timeoutType, client } = parser\n\n /* istanbul ignore else */\n if (timeoutType === TIMEOUT_HEADERS) {\n if (!socket[kWriting] || socket.writableNeedDrain || client[kRunning] > 1) {\n assert(!parser.paused, 'cannot be paused while waiting for headers')\n util.destroy(socket, new HeadersTimeoutError())\n }\n } else if (timeoutType === TIMEOUT_BODY) {\n if (!parser.paused) {\n util.destroy(socket, new BodyTimeoutError())\n }\n } else if (timeoutType === TIMEOUT_IDLE) {\n assert(client[kRunning] === 0 && client[kKeepAliveTimeoutValue])\n util.destroy(socket, new InformationalError('socket idle timeout'))\n }\n}\n\nfunction onSocketReadable () {\n const { [kParser]: parser } = this\n if (parser) {\n parser.readMore()\n }\n}\n\nfunction onSocketError (err) {\n const { [kClient]: client, [kParser]: parser } = this\n\n assert(err.code !== 'ERR_TLS_CERT_ALTNAME_INVALID')\n\n if (client[kHTTPConnVersion] !== 'h2') {\n // On Mac OS, we get an ECONNRESET even if there is a full body to be forwarded\n // to the user.\n if (err.code === 'ECONNRESET' && parser.statusCode && !parser.shouldKeepAlive) {\n // We treat all incoming data so for as a valid response.\n parser.onMessageComplete()\n return\n }\n }\n\n this[kError] = err\n\n onError(this[kClient], err)\n}\n\nfunction onError (client, err) {\n if (\n client[kRunning] === 0 &&\n err.code !== 'UND_ERR_INFO' &&\n err.code !== 'UND_ERR_SOCKET'\n ) {\n // Error is not caused by running request and not a recoverable\n // socket error.\n\n assert(client[kPendingIdx] === client[kRunningIdx])\n\n const requests = client[kQueue].splice(client[kRunningIdx])\n for (let i = 0; i < requests.length; i++) {\n const request = requests[i]\n errorRequest(client, request, err)\n }\n assert(client[kSize] === 0)\n }\n}\n\nfunction onSocketEnd () {\n const { [kParser]: parser, [kClient]: client } = this\n\n if (client[kHTTPConnVersion] !== 'h2') {\n if (parser.statusCode && !parser.shouldKeepAlive) {\n // We treat all incoming data so far as a valid response.\n parser.onMessageComplete()\n return\n }\n }\n\n util.destroy(this, new SocketError('other side closed', util.getSocketInfo(this)))\n}\n\nfunction onSocketClose () {\n const { [kClient]: client, [kParser]: parser } = this\n\n if (client[kHTTPConnVersion] === 'h1' && parser) {\n if (!this[kError] && parser.statusCode && !parser.shouldKeepAlive) {\n // We treat all incoming data so far as a valid response.\n parser.onMessageComplete()\n }\n\n this[kParser].destroy()\n this[kParser] = null\n }\n\n const err = this[kError] || new SocketError('closed', util.getSocketInfo(this))\n\n client[kSocket] = null\n\n if (client.destroyed) {\n assert(client[kPending] === 0)\n\n // Fail entire queue.\n const requests = client[kQueue].splice(client[kRunningIdx])\n for (let i = 0; i < requests.length; i++) {\n const request = requests[i]\n errorRequest(client, request, err)\n }\n } else if (client[kRunning] > 0 && err.code !== 'UND_ERR_INFO') {\n // Fail head of pipeline.\n const request = client[kQueue][client[kRunningIdx]]\n client[kQueue][client[kRunningIdx]++] = null\n\n errorRequest(client, request, err)\n }\n\n client[kPendingIdx] = client[kRunningIdx]\n\n assert(client[kRunning] === 0)\n\n client.emit('disconnect', client[kUrl], [client], err)\n\n resume(client)\n}\n\nasync function connect (client) {\n assert(!client[kConnecting])\n assert(!client[kSocket])\n\n let { host, hostname, protocol, port } = client[kUrl]\n\n // Resolve ipv6\n if (hostname[0] === '[') {\n const idx = hostname.indexOf(']')\n\n assert(idx !== -1)\n const ip = hostname.substring(1, idx)\n\n assert(net.isIP(ip))\n hostname = ip\n }\n\n client[kConnecting] = true\n\n if (channels.beforeConnect.hasSubscribers) {\n channels.beforeConnect.publish({\n connectParams: {\n host,\n hostname,\n protocol,\n port,\n servername: client[kServerName],\n localAddress: client[kLocalAddress]\n },\n connector: client[kConnector]\n })\n }\n\n try {\n const socket = await new Promise((resolve, reject) => {\n client[kConnector]({\n host,\n hostname,\n protocol,\n port,\n servername: client[kServerName],\n localAddress: client[kLocalAddress]\n }, (err, socket) => {\n if (err) {\n reject(err)\n } else {\n resolve(socket)\n }\n })\n })\n\n if (client.destroyed) {\n util.destroy(socket.on('error', () => {}), new ClientDestroyedError())\n return\n }\n\n client[kConnecting] = false\n\n assert(socket)\n\n const isH2 = socket.alpnProtocol === 'h2'\n if (isH2) {\n if (!h2ExperimentalWarned) {\n h2ExperimentalWarned = true\n process.emitWarning('H2 support is experimental, expect them to change at any time.', {\n code: 'UNDICI-H2'\n })\n }\n\n const session = http2.connect(client[kUrl], {\n createConnection: () => socket,\n peerMaxConcurrentStreams: client[kHTTP2SessionState].maxConcurrentStreams\n })\n\n client[kHTTPConnVersion] = 'h2'\n session[kClient] = client\n session[kSocket] = socket\n session.on('error', onHttp2SessionError)\n session.on('frameError', onHttp2FrameError)\n session.on('end', onHttp2SessionEnd)\n session.on('goaway', onHTTP2GoAway)\n session.on('close', onSocketClose)\n session.unref()\n\n client[kHTTP2Session] = session\n socket[kHTTP2Session] = session\n } else {\n if (!llhttpInstance) {\n llhttpInstance = await llhttpPromise\n llhttpPromise = null\n }\n\n socket[kNoRef] = false\n socket[kWriting] = false\n socket[kReset] = false\n socket[kBlocking] = false\n socket[kParser] = new Parser(client, socket, llhttpInstance)\n }\n\n socket[kCounter] = 0\n socket[kMaxRequests] = client[kMaxRequests]\n socket[kClient] = client\n socket[kError] = null\n\n socket\n .on('error', onSocketError)\n .on('readable', onSocketReadable)\n .on('end', onSocketEnd)\n .on('close', onSocketClose)\n\n client[kSocket] = socket\n\n if (channels.connected.hasSubscribers) {\n channels.connected.publish({\n connectParams: {\n host,\n hostname,\n protocol,\n port,\n servername: client[kServerName],\n localAddress: client[kLocalAddress]\n },\n connector: client[kConnector],\n socket\n })\n }\n client.emit('connect', client[kUrl], [client])\n } catch (err) {\n if (client.destroyed) {\n return\n }\n\n client[kConnecting] = false\n\n if (channels.connectError.hasSubscribers) {\n channels.connectError.publish({\n connectParams: {\n host,\n hostname,\n protocol,\n port,\n servername: client[kServerName],\n localAddress: client[kLocalAddress]\n },\n connector: client[kConnector],\n error: err\n })\n }\n\n if (err.code === 'ERR_TLS_CERT_ALTNAME_INVALID') {\n assert(client[kRunning] === 0)\n while (client[kPending] > 0 && client[kQueue][client[kPendingIdx]].servername === client[kServerName]) {\n const request = client[kQueue][client[kPendingIdx]++]\n errorRequest(client, request, err)\n }\n } else {\n onError(client, err)\n }\n\n client.emit('connectionError', client[kUrl], [client], err)\n }\n\n resume(client)\n}\n\nfunction emitDrain (client) {\n client[kNeedDrain] = 0\n client.emit('drain', client[kUrl], [client])\n}\n\nfunction resume (client, sync) {\n if (client[kResuming] === 2) {\n return\n }\n\n client[kResuming] = 2\n\n _resume(client, sync)\n client[kResuming] = 0\n\n if (client[kRunningIdx] > 256) {\n client[kQueue].splice(0, client[kRunningIdx])\n client[kPendingIdx] -= client[kRunningIdx]\n client[kRunningIdx] = 0\n }\n}\n\nfunction _resume (client, sync) {\n while (true) {\n if (client.destroyed) {\n assert(client[kPending] === 0)\n return\n }\n\n if (client[kClosedResolve] && !client[kSize]) {\n client[kClosedResolve]()\n client[kClosedResolve] = null\n return\n }\n\n const socket = client[kSocket]\n\n if (socket && !socket.destroyed && socket.alpnProtocol !== 'h2') {\n if (client[kSize] === 0) {\n if (!socket[kNoRef] && socket.unref) {\n socket.unref()\n socket[kNoRef] = true\n }\n } else if (socket[kNoRef] && socket.ref) {\n socket.ref()\n socket[kNoRef] = false\n }\n\n if (client[kSize] === 0) {\n if (socket[kParser].timeoutType !== TIMEOUT_IDLE) {\n socket[kParser].setTimeout(client[kKeepAliveTimeoutValue], TIMEOUT_IDLE)\n }\n } else if (client[kRunning] > 0 && socket[kParser].statusCode < 200) {\n if (socket[kParser].timeoutType !== TIMEOUT_HEADERS) {\n const request = client[kQueue][client[kRunningIdx]]\n const headersTimeout = request.headersTimeout != null\n ? request.headersTimeout\n : client[kHeadersTimeout]\n socket[kParser].setTimeout(headersTimeout, TIMEOUT_HEADERS)\n }\n }\n }\n\n if (client[kBusy]) {\n client[kNeedDrain] = 2\n } else if (client[kNeedDrain] === 2) {\n if (sync) {\n client[kNeedDrain] = 1\n process.nextTick(emitDrain, client)\n } else {\n emitDrain(client)\n }\n continue\n }\n\n if (client[kPending] === 0) {\n return\n }\n\n if (client[kRunning] >= (client[kPipelining] || 1)) {\n return\n }\n\n const request = client[kQueue][client[kPendingIdx]]\n\n if (client[kUrl].protocol === 'https:' && client[kServerName] !== request.servername) {\n if (client[kRunning] > 0) {\n return\n }\n\n client[kServerName] = request.servername\n\n if (socket && socket.servername !== request.servername) {\n util.destroy(socket, new InformationalError('servername changed'))\n return\n }\n }\n\n if (client[kConnecting]) {\n return\n }\n\n if (!socket && !client[kHTTP2Session]) {\n connect(client)\n return\n }\n\n if (socket.destroyed || socket[kWriting] || socket[kReset] || socket[kBlocking]) {\n return\n }\n\n if (client[kRunning] > 0 && !request.idempotent) {\n // Non-idempotent request cannot be retried.\n // Ensure that no other requests are inflight and\n // could cause failure.\n return\n }\n\n if (client[kRunning] > 0 && (request.upgrade || request.method === 'CONNECT')) {\n // Don't dispatch an upgrade until all preceding requests have completed.\n // A misbehaving server might upgrade the connection before all pipelined\n // request has completed.\n return\n }\n\n if (client[kRunning] > 0 && util.bodyLength(request.body) !== 0 &&\n (util.isStream(request.body) || util.isAsyncIterable(request.body))) {\n // Request with stream or iterator body can error while other requests\n // are inflight and indirectly error those as well.\n // Ensure this doesn't happen by waiting for inflight\n // to complete before dispatching.\n\n // Request with stream or iterator body cannot be retried.\n // Ensure that no other requests are inflight and\n // could cause failure.\n return\n }\n\n if (!request.aborted && write(client, request)) {\n client[kPendingIdx]++\n } else {\n client[kQueue].splice(client[kPendingIdx], 1)\n }\n }\n}\n\n// https://www.rfc-editor.org/rfc/rfc7230#section-3.3.2\nfunction shouldSendContentLength (method) {\n return method !== 'GET' && method !== 'HEAD' && method !== 'OPTIONS' && method !== 'TRACE' && method !== 'CONNECT'\n}\n\nfunction write (client, request) {\n if (client[kHTTPConnVersion] === 'h2') {\n writeH2(client, client[kHTTP2Session], request)\n return\n }\n\n const { body, method, path, host, upgrade, headers, blocking, reset } = request\n\n // https://tools.ietf.org/html/rfc7231#section-4.3.1\n // https://tools.ietf.org/html/rfc7231#section-4.3.2\n // https://tools.ietf.org/html/rfc7231#section-4.3.5\n\n // Sending a payload body on a request that does not\n // expect it can cause undefined behavior on some\n // servers and corrupt connection state. Do not\n // re-use the connection for further requests.\n\n const expectsPayload = (\n method === 'PUT' ||\n method === 'POST' ||\n method === 'PATCH'\n )\n\n if (body && typeof body.read === 'function') {\n // Try to read EOF in order to get length.\n body.read(0)\n }\n\n const bodyLength = util.bodyLength(body)\n\n let contentLength = bodyLength\n\n if (contentLength === null) {\n contentLength = request.contentLength\n }\n\n if (contentLength === 0 && !expectsPayload) {\n // https://tools.ietf.org/html/rfc7230#section-3.3.2\n // A user agent SHOULD NOT send a Content-Length header field when\n // the request message does not contain a payload body and the method\n // semantics do not anticipate such a body.\n\n contentLength = null\n }\n\n // https://github.com/nodejs/undici/issues/2046\n // A user agent may send a Content-Length header with 0 value, this should be allowed.\n if (shouldSendContentLength(method) && contentLength > 0 && request.contentLength !== null && request.contentLength !== contentLength) {\n if (client[kStrictContentLength]) {\n errorRequest(client, request, new RequestContentLengthMismatchError())\n return false\n }\n\n process.emitWarning(new RequestContentLengthMismatchError())\n }\n\n const socket = client[kSocket]\n\n try {\n request.onConnect((err) => {\n if (request.aborted || request.completed) {\n return\n }\n\n errorRequest(client, request, err || new RequestAbortedError())\n\n util.destroy(socket, new InformationalError('aborted'))\n })\n } catch (err) {\n errorRequest(client, request, err)\n }\n\n if (request.aborted) {\n return false\n }\n\n if (method === 'HEAD') {\n // https://github.com/mcollina/undici/issues/258\n // Close after a HEAD request to interop with misbehaving servers\n // that may send a body in the response.\n\n socket[kReset] = true\n }\n\n if (upgrade || method === 'CONNECT') {\n // On CONNECT or upgrade, block pipeline from dispatching further\n // requests on this connection.\n\n socket[kReset] = true\n }\n\n if (reset != null) {\n socket[kReset] = reset\n }\n\n if (client[kMaxRequests] && socket[kCounter]++ >= client[kMaxRequests]) {\n socket[kReset] = true\n }\n\n if (blocking) {\n socket[kBlocking] = true\n }\n\n let header = `${method} ${path} HTTP/1.1\\r\\n`\n\n if (typeof host === 'string') {\n header += `host: ${host}\\r\\n`\n } else {\n header += client[kHostHeader]\n }\n\n if (upgrade) {\n header += `connection: upgrade\\r\\nupgrade: ${upgrade}\\r\\n`\n } else if (client[kPipelining] && !socket[kReset]) {\n header += 'connection: keep-alive\\r\\n'\n } else {\n header += 'connection: close\\r\\n'\n }\n\n if (headers) {\n header += headers\n }\n\n if (channels.sendHeaders.hasSubscribers) {\n channels.sendHeaders.publish({ request, headers: header, socket })\n }\n\n /* istanbul ignore else: assertion */\n if (!body || bodyLength === 0) {\n if (contentLength === 0) {\n socket.write(`${header}content-length: 0\\r\\n\\r\\n`, 'latin1')\n } else {\n assert(contentLength === null, 'no body must not have content length')\n socket.write(`${header}\\r\\n`, 'latin1')\n }\n request.onRequestSent()\n } else if (util.isBuffer(body)) {\n assert(contentLength === body.byteLength, 'buffer body must have content length')\n\n socket.cork()\n socket.write(`${header}content-length: ${contentLength}\\r\\n\\r\\n`, 'latin1')\n socket.write(body)\n socket.uncork()\n request.onBodySent(body)\n request.onRequestSent()\n if (!expectsPayload) {\n socket[kReset] = true\n }\n } else if (util.isBlobLike(body)) {\n if (typeof body.stream === 'function') {\n writeIterable({ body: body.stream(), client, request, socket, contentLength, header, expectsPayload })\n } else {\n writeBlob({ body, client, request, socket, contentLength, header, expectsPayload })\n }\n } else if (util.isStream(body)) {\n writeStream({ body, client, request, socket, contentLength, header, expectsPayload })\n } else if (util.isIterable(body)) {\n writeIterable({ body, client, request, socket, contentLength, header, expectsPayload })\n } else {\n assert(false)\n }\n\n return true\n}\n\nfunction writeH2 (client, session, request) {\n const { body, method, path, host, upgrade, expectContinue, signal, headers: reqHeaders } = request\n\n let headers\n if (typeof reqHeaders === 'string') headers = Request[kHTTP2CopyHeaders](reqHeaders.trim())\n else headers = reqHeaders\n\n if (upgrade) {\n errorRequest(client, request, new Error('Upgrade not supported for H2'))\n return false\n }\n\n try {\n // TODO(HTTP/2): Should we call onConnect immediately or on stream ready event?\n request.onConnect((err) => {\n if (request.aborted || request.completed) {\n return\n }\n\n errorRequest(client, request, err || new RequestAbortedError())\n })\n } catch (err) {\n errorRequest(client, request, err)\n }\n\n if (request.aborted) {\n return false\n }\n\n /** @type {import('node:http2').ClientHttp2Stream} */\n let stream\n const h2State = client[kHTTP2SessionState]\n\n headers[HTTP2_HEADER_AUTHORITY] = host || client[kHost]\n headers[HTTP2_HEADER_METHOD] = method\n\n if (method === 'CONNECT') {\n session.ref()\n // we are already connected, streams are pending, first request\n // will create a new stream. We trigger a request to create the stream and wait until\n // `ready` event is triggered\n // We disabled endStream to allow the user to write to the stream\n stream = session.request(headers, { endStream: false, signal })\n\n if (stream.id && !stream.pending) {\n request.onUpgrade(null, null, stream)\n ++h2State.openStreams\n } else {\n stream.once('ready', () => {\n request.onUpgrade(null, null, stream)\n ++h2State.openStreams\n })\n }\n\n stream.once('close', () => {\n h2State.openStreams -= 1\n // TODO(HTTP/2): unref only if current streams count is 0\n if (h2State.openStreams === 0) session.unref()\n })\n\n return true\n }\n\n // https://tools.ietf.org/html/rfc7540#section-8.3\n // :path and :scheme headers must be omited when sending CONNECT\n\n headers[HTTP2_HEADER_PATH] = path\n headers[HTTP2_HEADER_SCHEME] = 'https'\n\n // https://tools.ietf.org/html/rfc7231#section-4.3.1\n // https://tools.ietf.org/html/rfc7231#section-4.3.2\n // https://tools.ietf.org/html/rfc7231#section-4.3.5\n\n // Sending a payload body on a request that does not\n // expect it can cause undefined behavior on some\n // servers and corrupt connection state. Do not\n // re-use the connection for further requests.\n\n const expectsPayload = (\n method === 'PUT' ||\n method === 'POST' ||\n method === 'PATCH'\n )\n\n if (body && typeof body.read === 'function') {\n // Try to read EOF in order to get length.\n body.read(0)\n }\n\n let contentLength = util.bodyLength(body)\n\n if (contentLength == null) {\n contentLength = request.contentLength\n }\n\n if (contentLength === 0 || !expectsPayload) {\n // https://tools.ietf.org/html/rfc7230#section-3.3.2\n // A user agent SHOULD NOT send a Content-Length header field when\n // the request message does not contain a payload body and the method\n // semantics do not anticipate such a body.\n\n contentLength = null\n }\n\n // https://github.com/nodejs/undici/issues/2046\n // A user agent may send a Content-Length header with 0 value, this should be allowed.\n if (shouldSendContentLength(method) && contentLength > 0 && request.contentLength != null && request.contentLength !== contentLength) {\n if (client[kStrictContentLength]) {\n errorRequest(client, request, new RequestContentLengthMismatchError())\n return false\n }\n\n process.emitWarning(new RequestContentLengthMismatchError())\n }\n\n if (contentLength != null) {\n assert(body, 'no body must not have content length')\n headers[HTTP2_HEADER_CONTENT_LENGTH] = `${contentLength}`\n }\n\n session.ref()\n\n const shouldEndStream = method === 'GET' || method === 'HEAD'\n if (expectContinue) {\n headers[HTTP2_HEADER_EXPECT] = '100-continue'\n stream = session.request(headers, { endStream: shouldEndStream, signal })\n\n stream.once('continue', writeBodyH2)\n } else {\n stream = session.request(headers, {\n endStream: shouldEndStream,\n signal\n })\n writeBodyH2()\n }\n\n // Increment counter as we have new several streams open\n ++h2State.openStreams\n\n stream.once('response', headers => {\n const { [HTTP2_HEADER_STATUS]: statusCode, ...realHeaders } = headers\n\n if (request.onHeaders(Number(statusCode), realHeaders, stream.resume.bind(stream), '') === false) {\n stream.pause()\n }\n })\n\n stream.once('end', () => {\n request.onComplete([])\n })\n\n stream.on('data', (chunk) => {\n if (request.onData(chunk) === false) {\n stream.pause()\n }\n })\n\n stream.once('close', () => {\n h2State.openStreams -= 1\n // TODO(HTTP/2): unref only if current streams count is 0\n if (h2State.openStreams === 0) {\n session.unref()\n }\n })\n\n stream.once('error', function (err) {\n if (client[kHTTP2Session] && !client[kHTTP2Session].destroyed && !this.closed && !this.destroyed) {\n h2State.streams -= 1\n util.destroy(stream, err)\n }\n })\n\n stream.once('frameError', (type, code) => {\n const err = new InformationalError(`HTTP/2: \"frameError\" received - type ${type}, code ${code}`)\n errorRequest(client, request, err)\n\n if (client[kHTTP2Session] && !client[kHTTP2Session].destroyed && !this.closed && !this.destroyed) {\n h2State.streams -= 1\n util.destroy(stream, err)\n }\n })\n\n // stream.on('aborted', () => {\n // // TODO(HTTP/2): Support aborted\n // })\n\n // stream.on('timeout', () => {\n // // TODO(HTTP/2): Support timeout\n // })\n\n // stream.on('push', headers => {\n // // TODO(HTTP/2): Suppor push\n // })\n\n // stream.on('trailers', headers => {\n // // TODO(HTTP/2): Support trailers\n // })\n\n return true\n\n function writeBodyH2 () {\n /* istanbul ignore else: assertion */\n if (!body) {\n request.onRequestSent()\n } else if (util.isBuffer(body)) {\n assert(contentLength === body.byteLength, 'buffer body must have content length')\n stream.cork()\n stream.write(body)\n stream.uncork()\n stream.end()\n request.onBodySent(body)\n request.onRequestSent()\n } else if (util.isBlobLike(body)) {\n if (typeof body.stream === 'function') {\n writeIterable({\n client,\n request,\n contentLength,\n h2stream: stream,\n expectsPayload,\n body: body.stream(),\n socket: client[kSocket],\n header: ''\n })\n } else {\n writeBlob({\n body,\n client,\n request,\n contentLength,\n expectsPayload,\n h2stream: stream,\n header: '',\n socket: client[kSocket]\n })\n }\n } else if (util.isStream(body)) {\n writeStream({\n body,\n client,\n request,\n contentLength,\n expectsPayload,\n socket: client[kSocket],\n h2stream: stream,\n header: ''\n })\n } else if (util.isIterable(body)) {\n writeIterable({\n body,\n client,\n request,\n contentLength,\n expectsPayload,\n header: '',\n h2stream: stream,\n socket: client[kSocket]\n })\n } else {\n assert(false)\n }\n }\n}\n\nfunction writeStream ({ h2stream, body, client, request, socket, contentLength, header, expectsPayload }) {\n assert(contentLength !== 0 || client[kRunning] === 0, 'stream body cannot be pipelined')\n\n if (client[kHTTPConnVersion] === 'h2') {\n // For HTTP/2, is enough to pipe the stream\n const pipe = pipeline(\n body,\n h2stream,\n (err) => {\n if (err) {\n util.destroy(body, err)\n util.destroy(h2stream, err)\n } else {\n request.onRequestSent()\n }\n }\n )\n\n pipe.on('data', onPipeData)\n pipe.once('end', () => {\n pipe.removeListener('data', onPipeData)\n util.destroy(pipe)\n })\n\n function onPipeData (chunk) {\n request.onBodySent(chunk)\n }\n\n return\n }\n\n let finished = false\n\n const writer = new AsyncWriter({ socket, request, contentLength, client, expectsPayload, header })\n\n const onData = function (chunk) {\n if (finished) {\n return\n }\n\n try {\n if (!writer.write(chunk) && this.pause) {\n this.pause()\n }\n } catch (err) {\n util.destroy(this, err)\n }\n }\n const onDrain = function () {\n if (finished) {\n return\n }\n\n if (body.resume) {\n body.resume()\n }\n }\n const onAbort = function () {\n if (finished) {\n return\n }\n const err = new RequestAbortedError()\n queueMicrotask(() => onFinished(err))\n }\n const onFinished = function (err) {\n if (finished) {\n return\n }\n\n finished = true\n\n assert(socket.destroyed || (socket[kWriting] && client[kRunning] <= 1))\n\n socket\n .off('drain', onDrain)\n .off('error', onFinished)\n\n body\n .removeListener('data', onData)\n .removeListener('end', onFinished)\n .removeListener('error', onFinished)\n .removeListener('close', onAbort)\n\n if (!err) {\n try {\n writer.end()\n } catch (er) {\n err = er\n }\n }\n\n writer.destroy(err)\n\n if (err && (err.code !== 'UND_ERR_INFO' || err.message !== 'reset')) {\n util.destroy(body, err)\n } else {\n util.destroy(body)\n }\n }\n\n body\n .on('data', onData)\n .on('end', onFinished)\n .on('error', onFinished)\n .on('close', onAbort)\n\n if (body.resume) {\n body.resume()\n }\n\n socket\n .on('drain', onDrain)\n .on('error', onFinished)\n}\n\nasync function writeBlob ({ h2stream, body, client, request, socket, contentLength, header, expectsPayload }) {\n assert(contentLength === body.size, 'blob body must have content length')\n\n const isH2 = client[kHTTPConnVersion] === 'h2'\n try {\n if (contentLength != null && contentLength !== body.size) {\n throw new RequestContentLengthMismatchError()\n }\n\n const buffer = Buffer.from(await body.arrayBuffer())\n\n if (isH2) {\n h2stream.cork()\n h2stream.write(buffer)\n h2stream.uncork()\n } else {\n socket.cork()\n socket.write(`${header}content-length: ${contentLength}\\r\\n\\r\\n`, 'latin1')\n socket.write(buffer)\n socket.uncork()\n }\n\n request.onBodySent(buffer)\n request.onRequestSent()\n\n if (!expectsPayload) {\n socket[kReset] = true\n }\n\n resume(client)\n } catch (err) {\n util.destroy(isH2 ? h2stream : socket, err)\n }\n}\n\nasync function writeIterable ({ h2stream, body, client, request, socket, contentLength, header, expectsPayload }) {\n assert(contentLength !== 0 || client[kRunning] === 0, 'iterator body cannot be pipelined')\n\n let callback = null\n function onDrain () {\n if (callback) {\n const cb = callback\n callback = null\n cb()\n }\n }\n\n const waitForDrain = () => new Promise((resolve, reject) => {\n assert(callback === null)\n\n if (socket[kError]) {\n reject(socket[kError])\n } else {\n callback = resolve\n }\n })\n\n if (client[kHTTPConnVersion] === 'h2') {\n h2stream\n .on('close', onDrain)\n .on('drain', onDrain)\n\n try {\n // It's up to the user to somehow abort the async iterable.\n for await (const chunk of body) {\n if (socket[kError]) {\n throw socket[kError]\n }\n\n const res = h2stream.write(chunk)\n request.onBodySent(chunk)\n if (!res) {\n await waitForDrain()\n }\n }\n } catch (err) {\n h2stream.destroy(err)\n } finally {\n request.onRequestSent()\n h2stream.end()\n h2stream\n .off('close', onDrain)\n .off('drain', onDrain)\n }\n\n return\n }\n\n socket\n .on('close', onDrain)\n .on('drain', onDrain)\n\n const writer = new AsyncWriter({ socket, request, contentLength, client, expectsPayload, header })\n try {\n // It's up to the user to somehow abort the async iterable.\n for await (const chunk of body) {\n if (socket[kError]) {\n throw socket[kError]\n }\n\n if (!writer.write(chunk)) {\n await waitForDrain()\n }\n }\n\n writer.end()\n } catch (err) {\n writer.destroy(err)\n } finally {\n socket\n .off('close', onDrain)\n .off('drain', onDrain)\n }\n}\n\nclass AsyncWriter {\n constructor ({ socket, request, contentLength, client, expectsPayload, header }) {\n this.socket = socket\n this.request = request\n this.contentLength = contentLength\n this.client = client\n this.bytesWritten = 0\n this.expectsPayload = expectsPayload\n this.header = header\n\n socket[kWriting] = true\n }\n\n write (chunk) {\n const { socket, request, contentLength, client, bytesWritten, expectsPayload, header } = this\n\n if (socket[kError]) {\n throw socket[kError]\n }\n\n if (socket.destroyed) {\n return false\n }\n\n const len = Buffer.byteLength(chunk)\n if (!len) {\n return true\n }\n\n // We should defer writing chunks.\n if (contentLength !== null && bytesWritten + len > contentLength) {\n if (client[kStrictContentLength]) {\n throw new RequestContentLengthMismatchError()\n }\n\n process.emitWarning(new RequestContentLengthMismatchError())\n }\n\n socket.cork()\n\n if (bytesWritten === 0) {\n if (!expectsPayload) {\n socket[kReset] = true\n }\n\n if (contentLength === null) {\n socket.write(`${header}transfer-encoding: chunked\\r\\n`, 'latin1')\n } else {\n socket.write(`${header}content-length: ${contentLength}\\r\\n\\r\\n`, 'latin1')\n }\n }\n\n if (contentLength === null) {\n socket.write(`\\r\\n${len.toString(16)}\\r\\n`, 'latin1')\n }\n\n this.bytesWritten += len\n\n const ret = socket.write(chunk)\n\n socket.uncork()\n\n request.onBodySent(chunk)\n\n if (!ret) {\n if (socket[kParser].timeout && socket[kParser].timeoutType === TIMEOUT_HEADERS) {\n // istanbul ignore else: only for jest\n if (socket[kParser].timeout.refresh) {\n socket[kParser].timeout.refresh()\n }\n }\n }\n\n return ret\n }\n\n end () {\n const { socket, contentLength, client, bytesWritten, expectsPayload, header, request } = this\n request.onRequestSent()\n\n socket[kWriting] = false\n\n if (socket[kError]) {\n throw socket[kError]\n }\n\n if (socket.destroyed) {\n return\n }\n\n if (bytesWritten === 0) {\n if (expectsPayload) {\n // https://tools.ietf.org/html/rfc7230#section-3.3.2\n // A user agent SHOULD send a Content-Length in a request message when\n // no Transfer-Encoding is sent and the request method defines a meaning\n // for an enclosed payload body.\n\n socket.write(`${header}content-length: 0\\r\\n\\r\\n`, 'latin1')\n } else {\n socket.write(`${header}\\r\\n`, 'latin1')\n }\n } else if (contentLength === null) {\n socket.write('\\r\\n0\\r\\n\\r\\n', 'latin1')\n }\n\n if (contentLength !== null && bytesWritten !== contentLength) {\n if (client[kStrictContentLength]) {\n throw new RequestContentLengthMismatchError()\n } else {\n process.emitWarning(new RequestContentLengthMismatchError())\n }\n }\n\n if (socket[kParser].timeout && socket[kParser].timeoutType === TIMEOUT_HEADERS) {\n // istanbul ignore else: only for jest\n if (socket[kParser].timeout.refresh) {\n socket[kParser].timeout.refresh()\n }\n }\n\n resume(client)\n }\n\n destroy (err) {\n const { socket, client } = this\n\n socket[kWriting] = false\n\n if (err) {\n assert(client[kRunning] <= 1, 'pipeline should only contain this request')\n util.destroy(socket, err)\n }\n }\n}\n\nfunction errorRequest (client, request, err) {\n try {\n request.onError(err)\n assert(request.aborted)\n } catch (err) {\n client.emit('error', err)\n }\n}\n\nmodule.exports = Client\n","'use strict'\n\n/* istanbul ignore file: only for Node 12 */\n\nconst { kConnected, kSize } = require('../core/symbols')\n\nclass CompatWeakRef {\n constructor (value) {\n this.value = value\n }\n\n deref () {\n return this.value[kConnected] === 0 && this.value[kSize] === 0\n ? undefined\n : this.value\n }\n}\n\nclass CompatFinalizer {\n constructor (finalizer) {\n this.finalizer = finalizer\n }\n\n register (dispatcher, key) {\n if (dispatcher.on) {\n dispatcher.on('disconnect', () => {\n if (dispatcher[kConnected] === 0 && dispatcher[kSize] === 0) {\n this.finalizer(key)\n }\n })\n }\n }\n}\n\nmodule.exports = function () {\n // FIXME: remove workaround when the Node bug is fixed\n // https://github.com/nodejs/node/issues/49344#issuecomment-1741776308\n if (process.env.NODE_V8_COVERAGE) {\n return {\n WeakRef: CompatWeakRef,\n FinalizationRegistry: CompatFinalizer\n }\n }\n return {\n WeakRef: global.WeakRef || CompatWeakRef,\n FinalizationRegistry: global.FinalizationRegistry || CompatFinalizer\n }\n}\n","'use strict'\n\n// https://wicg.github.io/cookie-store/#cookie-maximum-attribute-value-size\nconst maxAttributeValueSize = 1024\n\n// https://wicg.github.io/cookie-store/#cookie-maximum-name-value-pair-size\nconst maxNameValuePairSize = 4096\n\nmodule.exports = {\n maxAttributeValueSize,\n maxNameValuePairSize\n}\n","'use strict'\n\nconst { parseSetCookie } = require('./parse')\nconst { stringify, getHeadersList } = require('./util')\nconst { webidl } = require('../fetch/webidl')\nconst { Headers } = require('../fetch/headers')\n\n/**\n * @typedef {Object} Cookie\n * @property {string} name\n * @property {string} value\n * @property {Date|number|undefined} expires\n * @property {number|undefined} maxAge\n * @property {string|undefined} domain\n * @property {string|undefined} path\n * @property {boolean|undefined} secure\n * @property {boolean|undefined} httpOnly\n * @property {'Strict'|'Lax'|'None'} sameSite\n * @property {string[]} unparsed\n */\n\n/**\n * @param {Headers} headers\n * @returns {Record}\n */\nfunction getCookies (headers) {\n webidl.argumentLengthCheck(arguments, 1, { header: 'getCookies' })\n\n webidl.brandCheck(headers, Headers, { strict: false })\n\n const cookie = headers.get('cookie')\n const out = {}\n\n if (!cookie) {\n return out\n }\n\n for (const piece of cookie.split(';')) {\n const [name, ...value] = piece.split('=')\n\n out[name.trim()] = value.join('=')\n }\n\n return out\n}\n\n/**\n * @param {Headers} headers\n * @param {string} name\n * @param {{ path?: string, domain?: string }|undefined} attributes\n * @returns {void}\n */\nfunction deleteCookie (headers, name, attributes) {\n webidl.argumentLengthCheck(arguments, 2, { header: 'deleteCookie' })\n\n webidl.brandCheck(headers, Headers, { strict: false })\n\n name = webidl.converters.DOMString(name)\n attributes = webidl.converters.DeleteCookieAttributes(attributes)\n\n // Matches behavior of\n // https://github.com/denoland/deno_std/blob/63827b16330b82489a04614027c33b7904e08be5/http/cookie.ts#L278\n setCookie(headers, {\n name,\n value: '',\n expires: new Date(0),\n ...attributes\n })\n}\n\n/**\n * @param {Headers} headers\n * @returns {Cookie[]}\n */\nfunction getSetCookies (headers) {\n webidl.argumentLengthCheck(arguments, 1, { header: 'getSetCookies' })\n\n webidl.brandCheck(headers, Headers, { strict: false })\n\n const cookies = getHeadersList(headers).cookies\n\n if (!cookies) {\n return []\n }\n\n // In older versions of undici, cookies is a list of name:value.\n return cookies.map((pair) => parseSetCookie(Array.isArray(pair) ? pair[1] : pair))\n}\n\n/**\n * @param {Headers} headers\n * @param {Cookie} cookie\n * @returns {void}\n */\nfunction setCookie (headers, cookie) {\n webidl.argumentLengthCheck(arguments, 2, { header: 'setCookie' })\n\n webidl.brandCheck(headers, Headers, { strict: false })\n\n cookie = webidl.converters.Cookie(cookie)\n\n const str = stringify(cookie)\n\n if (str) {\n headers.append('Set-Cookie', stringify(cookie))\n }\n}\n\nwebidl.converters.DeleteCookieAttributes = webidl.dictionaryConverter([\n {\n converter: webidl.nullableConverter(webidl.converters.DOMString),\n key: 'path',\n defaultValue: null\n },\n {\n converter: webidl.nullableConverter(webidl.converters.DOMString),\n key: 'domain',\n defaultValue: null\n }\n])\n\nwebidl.converters.Cookie = webidl.dictionaryConverter([\n {\n converter: webidl.converters.DOMString,\n key: 'name'\n },\n {\n converter: webidl.converters.DOMString,\n key: 'value'\n },\n {\n converter: webidl.nullableConverter((value) => {\n if (typeof value === 'number') {\n return webidl.converters['unsigned long long'](value)\n }\n\n return new Date(value)\n }),\n key: 'expires',\n defaultValue: null\n },\n {\n converter: webidl.nullableConverter(webidl.converters['long long']),\n key: 'maxAge',\n defaultValue: null\n },\n {\n converter: webidl.nullableConverter(webidl.converters.DOMString),\n key: 'domain',\n defaultValue: null\n },\n {\n converter: webidl.nullableConverter(webidl.converters.DOMString),\n key: 'path',\n defaultValue: null\n },\n {\n converter: webidl.nullableConverter(webidl.converters.boolean),\n key: 'secure',\n defaultValue: null\n },\n {\n converter: webidl.nullableConverter(webidl.converters.boolean),\n key: 'httpOnly',\n defaultValue: null\n },\n {\n converter: webidl.converters.USVString,\n key: 'sameSite',\n allowedValues: ['Strict', 'Lax', 'None']\n },\n {\n converter: webidl.sequenceConverter(webidl.converters.DOMString),\n key: 'unparsed',\n defaultValue: []\n }\n])\n\nmodule.exports = {\n getCookies,\n deleteCookie,\n getSetCookies,\n setCookie\n}\n","'use strict'\n\nconst { maxNameValuePairSize, maxAttributeValueSize } = require('./constants')\nconst { isCTLExcludingHtab } = require('./util')\nconst { collectASequenceOfCodePointsFast } = require('../fetch/dataURL')\nconst assert = require('assert')\n\n/**\n * @description Parses the field-value attributes of a set-cookie header string.\n * @see https://datatracker.ietf.org/doc/html/draft-ietf-httpbis-rfc6265bis#section-5.4\n * @param {string} header\n * @returns if the header is invalid, null will be returned\n */\nfunction parseSetCookie (header) {\n // 1. If the set-cookie-string contains a %x00-08 / %x0A-1F / %x7F\n // character (CTL characters excluding HTAB): Abort these steps and\n // ignore the set-cookie-string entirely.\n if (isCTLExcludingHtab(header)) {\n return null\n }\n\n let nameValuePair = ''\n let unparsedAttributes = ''\n let name = ''\n let value = ''\n\n // 2. If the set-cookie-string contains a %x3B (\";\") character:\n if (header.includes(';')) {\n // 1. The name-value-pair string consists of the characters up to,\n // but not including, the first %x3B (\";\"), and the unparsed-\n // attributes consist of the remainder of the set-cookie-string\n // (including the %x3B (\";\") in question).\n const position = { position: 0 }\n\n nameValuePair = collectASequenceOfCodePointsFast(';', header, position)\n unparsedAttributes = header.slice(position.position)\n } else {\n // Otherwise:\n\n // 1. The name-value-pair string consists of all the characters\n // contained in the set-cookie-string, and the unparsed-\n // attributes is the empty string.\n nameValuePair = header\n }\n\n // 3. If the name-value-pair string lacks a %x3D (\"=\") character, then\n // the name string is empty, and the value string is the value of\n // name-value-pair.\n if (!nameValuePair.includes('=')) {\n value = nameValuePair\n } else {\n // Otherwise, the name string consists of the characters up to, but\n // not including, the first %x3D (\"=\") character, and the (possibly\n // empty) value string consists of the characters after the first\n // %x3D (\"=\") character.\n const position = { position: 0 }\n name = collectASequenceOfCodePointsFast(\n '=',\n nameValuePair,\n position\n )\n value = nameValuePair.slice(position.position + 1)\n }\n\n // 4. Remove any leading or trailing WSP characters from the name\n // string and the value string.\n name = name.trim()\n value = value.trim()\n\n // 5. If the sum of the lengths of the name string and the value string\n // is more than 4096 octets, abort these steps and ignore the set-\n // cookie-string entirely.\n if (name.length + value.length > maxNameValuePairSize) {\n return null\n }\n\n // 6. The cookie-name is the name string, and the cookie-value is the\n // value string.\n return {\n name, value, ...parseUnparsedAttributes(unparsedAttributes)\n }\n}\n\n/**\n * Parses the remaining attributes of a set-cookie header\n * @see https://datatracker.ietf.org/doc/html/draft-ietf-httpbis-rfc6265bis#section-5.4\n * @param {string} unparsedAttributes\n * @param {[Object.]={}} cookieAttributeList\n */\nfunction parseUnparsedAttributes (unparsedAttributes, cookieAttributeList = {}) {\n // 1. If the unparsed-attributes string is empty, skip the rest of\n // these steps.\n if (unparsedAttributes.length === 0) {\n return cookieAttributeList\n }\n\n // 2. Discard the first character of the unparsed-attributes (which\n // will be a %x3B (\";\") character).\n assert(unparsedAttributes[0] === ';')\n unparsedAttributes = unparsedAttributes.slice(1)\n\n let cookieAv = ''\n\n // 3. If the remaining unparsed-attributes contains a %x3B (\";\")\n // character:\n if (unparsedAttributes.includes(';')) {\n // 1. Consume the characters of the unparsed-attributes up to, but\n // not including, the first %x3B (\";\") character.\n cookieAv = collectASequenceOfCodePointsFast(\n ';',\n unparsedAttributes,\n { position: 0 }\n )\n unparsedAttributes = unparsedAttributes.slice(cookieAv.length)\n } else {\n // Otherwise:\n\n // 1. Consume the remainder of the unparsed-attributes.\n cookieAv = unparsedAttributes\n unparsedAttributes = ''\n }\n\n // Let the cookie-av string be the characters consumed in this step.\n\n let attributeName = ''\n let attributeValue = ''\n\n // 4. If the cookie-av string contains a %x3D (\"=\") character:\n if (cookieAv.includes('=')) {\n // 1. The (possibly empty) attribute-name string consists of the\n // characters up to, but not including, the first %x3D (\"=\")\n // character, and the (possibly empty) attribute-value string\n // consists of the characters after the first %x3D (\"=\")\n // character.\n const position = { position: 0 }\n\n attributeName = collectASequenceOfCodePointsFast(\n '=',\n cookieAv,\n position\n )\n attributeValue = cookieAv.slice(position.position + 1)\n } else {\n // Otherwise:\n\n // 1. The attribute-name string consists of the entire cookie-av\n // string, and the attribute-value string is empty.\n attributeName = cookieAv\n }\n\n // 5. Remove any leading or trailing WSP characters from the attribute-\n // name string and the attribute-value string.\n attributeName = attributeName.trim()\n attributeValue = attributeValue.trim()\n\n // 6. If the attribute-value is longer than 1024 octets, ignore the\n // cookie-av string and return to Step 1 of this algorithm.\n if (attributeValue.length > maxAttributeValueSize) {\n return parseUnparsedAttributes(unparsedAttributes, cookieAttributeList)\n }\n\n // 7. Process the attribute-name and attribute-value according to the\n // requirements in the following subsections. (Notice that\n // attributes with unrecognized attribute-names are ignored.)\n const attributeNameLowercase = attributeName.toLowerCase()\n\n // https://datatracker.ietf.org/doc/html/draft-ietf-httpbis-rfc6265bis#section-5.4.1\n // If the attribute-name case-insensitively matches the string\n // \"Expires\", the user agent MUST process the cookie-av as follows.\n if (attributeNameLowercase === 'expires') {\n // 1. Let the expiry-time be the result of parsing the attribute-value\n // as cookie-date (see Section 5.1.1).\n const expiryTime = new Date(attributeValue)\n\n // 2. If the attribute-value failed to parse as a cookie date, ignore\n // the cookie-av.\n\n cookieAttributeList.expires = expiryTime\n } else if (attributeNameLowercase === 'max-age') {\n // https://datatracker.ietf.org/doc/html/draft-ietf-httpbis-rfc6265bis#section-5.4.2\n // If the attribute-name case-insensitively matches the string \"Max-\n // Age\", the user agent MUST process the cookie-av as follows.\n\n // 1. If the first character of the attribute-value is not a DIGIT or a\n // \"-\" character, ignore the cookie-av.\n const charCode = attributeValue.charCodeAt(0)\n\n if ((charCode < 48 || charCode > 57) && attributeValue[0] !== '-') {\n return parseUnparsedAttributes(unparsedAttributes, cookieAttributeList)\n }\n\n // 2. If the remainder of attribute-value contains a non-DIGIT\n // character, ignore the cookie-av.\n if (!/^\\d+$/.test(attributeValue)) {\n return parseUnparsedAttributes(unparsedAttributes, cookieAttributeList)\n }\n\n // 3. Let delta-seconds be the attribute-value converted to an integer.\n const deltaSeconds = Number(attributeValue)\n\n // 4. Let cookie-age-limit be the maximum age of the cookie (which\n // SHOULD be 400 days or less, see Section 4.1.2.2).\n\n // 5. Set delta-seconds to the smaller of its present value and cookie-\n // age-limit.\n // deltaSeconds = Math.min(deltaSeconds * 1000, maxExpiresMs)\n\n // 6. If delta-seconds is less than or equal to zero (0), let expiry-\n // time be the earliest representable date and time. Otherwise, let\n // the expiry-time be the current date and time plus delta-seconds\n // seconds.\n // const expiryTime = deltaSeconds <= 0 ? Date.now() : Date.now() + deltaSeconds\n\n // 7. Append an attribute to the cookie-attribute-list with an\n // attribute-name of Max-Age and an attribute-value of expiry-time.\n cookieAttributeList.maxAge = deltaSeconds\n } else if (attributeNameLowercase === 'domain') {\n // https://datatracker.ietf.org/doc/html/draft-ietf-httpbis-rfc6265bis#section-5.4.3\n // If the attribute-name case-insensitively matches the string \"Domain\",\n // the user agent MUST process the cookie-av as follows.\n\n // 1. Let cookie-domain be the attribute-value.\n let cookieDomain = attributeValue\n\n // 2. If cookie-domain starts with %x2E (\".\"), let cookie-domain be\n // cookie-domain without its leading %x2E (\".\").\n if (cookieDomain[0] === '.') {\n cookieDomain = cookieDomain.slice(1)\n }\n\n // 3. Convert the cookie-domain to lower case.\n cookieDomain = cookieDomain.toLowerCase()\n\n // 4. Append an attribute to the cookie-attribute-list with an\n // attribute-name of Domain and an attribute-value of cookie-domain.\n cookieAttributeList.domain = cookieDomain\n } else if (attributeNameLowercase === 'path') {\n // https://datatracker.ietf.org/doc/html/draft-ietf-httpbis-rfc6265bis#section-5.4.4\n // If the attribute-name case-insensitively matches the string \"Path\",\n // the user agent MUST process the cookie-av as follows.\n\n // 1. If the attribute-value is empty or if the first character of the\n // attribute-value is not %x2F (\"/\"):\n let cookiePath = ''\n if (attributeValue.length === 0 || attributeValue[0] !== '/') {\n // 1. Let cookie-path be the default-path.\n cookiePath = '/'\n } else {\n // Otherwise:\n\n // 1. Let cookie-path be the attribute-value.\n cookiePath = attributeValue\n }\n\n // 2. Append an attribute to the cookie-attribute-list with an\n // attribute-name of Path and an attribute-value of cookie-path.\n cookieAttributeList.path = cookiePath\n } else if (attributeNameLowercase === 'secure') {\n // https://datatracker.ietf.org/doc/html/draft-ietf-httpbis-rfc6265bis#section-5.4.5\n // If the attribute-name case-insensitively matches the string \"Secure\",\n // the user agent MUST append an attribute to the cookie-attribute-list\n // with an attribute-name of Secure and an empty attribute-value.\n\n cookieAttributeList.secure = true\n } else if (attributeNameLowercase === 'httponly') {\n // https://datatracker.ietf.org/doc/html/draft-ietf-httpbis-rfc6265bis#section-5.4.6\n // If the attribute-name case-insensitively matches the string\n // \"HttpOnly\", the user agent MUST append an attribute to the cookie-\n // attribute-list with an attribute-name of HttpOnly and an empty\n // attribute-value.\n\n cookieAttributeList.httpOnly = true\n } else if (attributeNameLowercase === 'samesite') {\n // https://datatracker.ietf.org/doc/html/draft-ietf-httpbis-rfc6265bis#section-5.4.7\n // If the attribute-name case-insensitively matches the string\n // \"SameSite\", the user agent MUST process the cookie-av as follows:\n\n // 1. Let enforcement be \"Default\".\n let enforcement = 'Default'\n\n const attributeValueLowercase = attributeValue.toLowerCase()\n // 2. If cookie-av's attribute-value is a case-insensitive match for\n // \"None\", set enforcement to \"None\".\n if (attributeValueLowercase.includes('none')) {\n enforcement = 'None'\n }\n\n // 3. If cookie-av's attribute-value is a case-insensitive match for\n // \"Strict\", set enforcement to \"Strict\".\n if (attributeValueLowercase.includes('strict')) {\n enforcement = 'Strict'\n }\n\n // 4. If cookie-av's attribute-value is a case-insensitive match for\n // \"Lax\", set enforcement to \"Lax\".\n if (attributeValueLowercase.includes('lax')) {\n enforcement = 'Lax'\n }\n\n // 5. Append an attribute to the cookie-attribute-list with an\n // attribute-name of \"SameSite\" and an attribute-value of\n // enforcement.\n cookieAttributeList.sameSite = enforcement\n } else {\n cookieAttributeList.unparsed ??= []\n\n cookieAttributeList.unparsed.push(`${attributeName}=${attributeValue}`)\n }\n\n // 8. Return to Step 1 of this algorithm.\n return parseUnparsedAttributes(unparsedAttributes, cookieAttributeList)\n}\n\nmodule.exports = {\n parseSetCookie,\n parseUnparsedAttributes\n}\n","'use strict'\n\nconst assert = require('assert')\nconst { kHeadersList } = require('../core/symbols')\n\nfunction isCTLExcludingHtab (value) {\n if (value.length === 0) {\n return false\n }\n\n for (const char of value) {\n const code = char.charCodeAt(0)\n\n if (\n (code >= 0x00 || code <= 0x08) ||\n (code >= 0x0A || code <= 0x1F) ||\n code === 0x7F\n ) {\n return false\n }\n }\n}\n\n/**\n CHAR = \n token = 1*\n separators = \"(\" | \")\" | \"<\" | \">\" | \"@\"\n | \",\" | \";\" | \":\" | \"\\\" | <\">\n | \"/\" | \"[\" | \"]\" | \"?\" | \"=\"\n | \"{\" | \"}\" | SP | HT\n * @param {string} name\n */\nfunction validateCookieName (name) {\n for (const char of name) {\n const code = char.charCodeAt(0)\n\n if (\n (code <= 0x20 || code > 0x7F) ||\n char === '(' ||\n char === ')' ||\n char === '>' ||\n char === '<' ||\n char === '@' ||\n char === ',' ||\n char === ';' ||\n char === ':' ||\n char === '\\\\' ||\n char === '\"' ||\n char === '/' ||\n char === '[' ||\n char === ']' ||\n char === '?' ||\n char === '=' ||\n char === '{' ||\n char === '}'\n ) {\n throw new Error('Invalid cookie name')\n }\n }\n}\n\n/**\n cookie-value = *cookie-octet / ( DQUOTE *cookie-octet DQUOTE )\n cookie-octet = %x21 / %x23-2B / %x2D-3A / %x3C-5B / %x5D-7E\n ; US-ASCII characters excluding CTLs,\n ; whitespace DQUOTE, comma, semicolon,\n ; and backslash\n * @param {string} value\n */\nfunction validateCookieValue (value) {\n for (const char of value) {\n const code = char.charCodeAt(0)\n\n if (\n code < 0x21 || // exclude CTLs (0-31)\n code === 0x22 ||\n code === 0x2C ||\n code === 0x3B ||\n code === 0x5C ||\n code > 0x7E // non-ascii\n ) {\n throw new Error('Invalid header value')\n }\n }\n}\n\n/**\n * path-value = \n * @param {string} path\n */\nfunction validateCookiePath (path) {\n for (const char of path) {\n const code = char.charCodeAt(0)\n\n if (code < 0x21 || char === ';') {\n throw new Error('Invalid cookie path')\n }\n }\n}\n\n/**\n * I have no idea why these values aren't allowed to be honest,\n * but Deno tests these. - Khafra\n * @param {string} domain\n */\nfunction validateCookieDomain (domain) {\n if (\n domain.startsWith('-') ||\n domain.endsWith('.') ||\n domain.endsWith('-')\n ) {\n throw new Error('Invalid cookie domain')\n }\n}\n\n/**\n * @see https://www.rfc-editor.org/rfc/rfc7231#section-7.1.1.1\n * @param {number|Date} date\n IMF-fixdate = day-name \",\" SP date1 SP time-of-day SP GMT\n ; fixed length/zone/capitalization subset of the format\n ; see Section 3.3 of [RFC5322]\n\n day-name = %x4D.6F.6E ; \"Mon\", case-sensitive\n / %x54.75.65 ; \"Tue\", case-sensitive\n / %x57.65.64 ; \"Wed\", case-sensitive\n / %x54.68.75 ; \"Thu\", case-sensitive\n / %x46.72.69 ; \"Fri\", case-sensitive\n / %x53.61.74 ; \"Sat\", case-sensitive\n / %x53.75.6E ; \"Sun\", case-sensitive\n date1 = day SP month SP year\n ; e.g., 02 Jun 1982\n\n day = 2DIGIT\n month = %x4A.61.6E ; \"Jan\", case-sensitive\n / %x46.65.62 ; \"Feb\", case-sensitive\n / %x4D.61.72 ; \"Mar\", case-sensitive\n / %x41.70.72 ; \"Apr\", case-sensitive\n / %x4D.61.79 ; \"May\", case-sensitive\n / %x4A.75.6E ; \"Jun\", case-sensitive\n / %x4A.75.6C ; \"Jul\", case-sensitive\n / %x41.75.67 ; \"Aug\", case-sensitive\n / %x53.65.70 ; \"Sep\", case-sensitive\n / %x4F.63.74 ; \"Oct\", case-sensitive\n / %x4E.6F.76 ; \"Nov\", case-sensitive\n / %x44.65.63 ; \"Dec\", case-sensitive\n year = 4DIGIT\n\n GMT = %x47.4D.54 ; \"GMT\", case-sensitive\n\n time-of-day = hour \":\" minute \":\" second\n ; 00:00:00 - 23:59:60 (leap second)\n\n hour = 2DIGIT\n minute = 2DIGIT\n second = 2DIGIT\n */\nfunction toIMFDate (date) {\n if (typeof date === 'number') {\n date = new Date(date)\n }\n\n const days = [\n 'Sun', 'Mon', 'Tue', 'Wed',\n 'Thu', 'Fri', 'Sat'\n ]\n\n const months = [\n 'Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun',\n 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'\n ]\n\n const dayName = days[date.getUTCDay()]\n const day = date.getUTCDate().toString().padStart(2, '0')\n const month = months[date.getUTCMonth()]\n const year = date.getUTCFullYear()\n const hour = date.getUTCHours().toString().padStart(2, '0')\n const minute = date.getUTCMinutes().toString().padStart(2, '0')\n const second = date.getUTCSeconds().toString().padStart(2, '0')\n\n return `${dayName}, ${day} ${month} ${year} ${hour}:${minute}:${second} GMT`\n}\n\n/**\n max-age-av = \"Max-Age=\" non-zero-digit *DIGIT\n ; In practice, both expires-av and max-age-av\n ; are limited to dates representable by the\n ; user agent.\n * @param {number} maxAge\n */\nfunction validateCookieMaxAge (maxAge) {\n if (maxAge < 0) {\n throw new Error('Invalid cookie max-age')\n }\n}\n\n/**\n * @see https://www.rfc-editor.org/rfc/rfc6265#section-4.1.1\n * @param {import('./index').Cookie} cookie\n */\nfunction stringify (cookie) {\n if (cookie.name.length === 0) {\n return null\n }\n\n validateCookieName(cookie.name)\n validateCookieValue(cookie.value)\n\n const out = [`${cookie.name}=${cookie.value}`]\n\n // https://datatracker.ietf.org/doc/html/draft-ietf-httpbis-cookie-prefixes-00#section-3.1\n // https://datatracker.ietf.org/doc/html/draft-ietf-httpbis-cookie-prefixes-00#section-3.2\n if (cookie.name.startsWith('__Secure-')) {\n cookie.secure = true\n }\n\n if (cookie.name.startsWith('__Host-')) {\n cookie.secure = true\n cookie.domain = null\n cookie.path = '/'\n }\n\n if (cookie.secure) {\n out.push('Secure')\n }\n\n if (cookie.httpOnly) {\n out.push('HttpOnly')\n }\n\n if (typeof cookie.maxAge === 'number') {\n validateCookieMaxAge(cookie.maxAge)\n out.push(`Max-Age=${cookie.maxAge}`)\n }\n\n if (cookie.domain) {\n validateCookieDomain(cookie.domain)\n out.push(`Domain=${cookie.domain}`)\n }\n\n if (cookie.path) {\n validateCookiePath(cookie.path)\n out.push(`Path=${cookie.path}`)\n }\n\n if (cookie.expires && cookie.expires.toString() !== 'Invalid Date') {\n out.push(`Expires=${toIMFDate(cookie.expires)}`)\n }\n\n if (cookie.sameSite) {\n out.push(`SameSite=${cookie.sameSite}`)\n }\n\n for (const part of cookie.unparsed) {\n if (!part.includes('=')) {\n throw new Error('Invalid unparsed')\n }\n\n const [key, ...value] = part.split('=')\n\n out.push(`${key.trim()}=${value.join('=')}`)\n }\n\n return out.join('; ')\n}\n\nlet kHeadersListNode\n\nfunction getHeadersList (headers) {\n if (headers[kHeadersList]) {\n return headers[kHeadersList]\n }\n\n if (!kHeadersListNode) {\n kHeadersListNode = Object.getOwnPropertySymbols(headers).find(\n (symbol) => symbol.description === 'headers list'\n )\n\n assert(kHeadersListNode, 'Headers cannot be parsed')\n }\n\n const headersList = headers[kHeadersListNode]\n assert(headersList)\n\n return headersList\n}\n\nmodule.exports = {\n isCTLExcludingHtab,\n stringify,\n getHeadersList\n}\n","'use strict'\n\nconst net = require('net')\nconst assert = require('assert')\nconst util = require('./util')\nconst { InvalidArgumentError, ConnectTimeoutError } = require('./errors')\n\nlet tls // include tls conditionally since it is not always available\n\n// TODO: session re-use does not wait for the first\n// connection to resolve the session and might therefore\n// resolve the same servername multiple times even when\n// re-use is enabled.\n\nlet SessionCache\n// FIXME: remove workaround when the Node bug is fixed\n// https://github.com/nodejs/node/issues/49344#issuecomment-1741776308\nif (global.FinalizationRegistry && !process.env.NODE_V8_COVERAGE) {\n SessionCache = class WeakSessionCache {\n constructor (maxCachedSessions) {\n this._maxCachedSessions = maxCachedSessions\n this._sessionCache = new Map()\n this._sessionRegistry = new global.FinalizationRegistry((key) => {\n if (this._sessionCache.size < this._maxCachedSessions) {\n return\n }\n\n const ref = this._sessionCache.get(key)\n if (ref !== undefined && ref.deref() === undefined) {\n this._sessionCache.delete(key)\n }\n })\n }\n\n get (sessionKey) {\n const ref = this._sessionCache.get(sessionKey)\n return ref ? ref.deref() : null\n }\n\n set (sessionKey, session) {\n if (this._maxCachedSessions === 0) {\n return\n }\n\n this._sessionCache.set(sessionKey, new WeakRef(session))\n this._sessionRegistry.register(session, sessionKey)\n }\n }\n} else {\n SessionCache = class SimpleSessionCache {\n constructor (maxCachedSessions) {\n this._maxCachedSessions = maxCachedSessions\n this._sessionCache = new Map()\n }\n\n get (sessionKey) {\n return this._sessionCache.get(sessionKey)\n }\n\n set (sessionKey, session) {\n if (this._maxCachedSessions === 0) {\n return\n }\n\n if (this._sessionCache.size >= this._maxCachedSessions) {\n // remove the oldest session\n const { value: oldestKey } = this._sessionCache.keys().next()\n this._sessionCache.delete(oldestKey)\n }\n\n this._sessionCache.set(sessionKey, session)\n }\n }\n}\n\nfunction buildConnector ({ allowH2, maxCachedSessions, socketPath, timeout, ...opts }) {\n if (maxCachedSessions != null && (!Number.isInteger(maxCachedSessions) || maxCachedSessions < 0)) {\n throw new InvalidArgumentError('maxCachedSessions must be a positive integer or zero')\n }\n\n const options = { path: socketPath, ...opts }\n const sessionCache = new SessionCache(maxCachedSessions == null ? 100 : maxCachedSessions)\n timeout = timeout == null ? 10e3 : timeout\n allowH2 = allowH2 != null ? allowH2 : false\n return function connect ({ hostname, host, protocol, port, servername, localAddress, httpSocket }, callback) {\n let socket\n if (protocol === 'https:') {\n if (!tls) {\n tls = require('tls')\n }\n servername = servername || options.servername || util.getServerName(host) || null\n\n const sessionKey = servername || hostname\n const session = sessionCache.get(sessionKey) || null\n\n assert(sessionKey)\n\n socket = tls.connect({\n highWaterMark: 16384, // TLS in node can't have bigger HWM anyway...\n ...options,\n servername,\n session,\n localAddress,\n // TODO(HTTP/2): Add support for h2c\n ALPNProtocols: allowH2 ? ['http/1.1', 'h2'] : ['http/1.1'],\n socket: httpSocket, // upgrade socket connection\n port: port || 443,\n host: hostname\n })\n\n socket\n .on('session', function (session) {\n // TODO (fix): Can a session become invalid once established? Don't think so?\n sessionCache.set(sessionKey, session)\n })\n } else {\n assert(!httpSocket, 'httpSocket can only be sent on TLS update')\n socket = net.connect({\n highWaterMark: 64 * 1024, // Same as nodejs fs streams.\n ...options,\n localAddress,\n port: port || 80,\n host: hostname\n })\n }\n\n // Set TCP keep alive options on the socket here instead of in connect() for the case of assigning the socket\n if (options.keepAlive == null || options.keepAlive) {\n const keepAliveInitialDelay = options.keepAliveInitialDelay === undefined ? 60e3 : options.keepAliveInitialDelay\n socket.setKeepAlive(true, keepAliveInitialDelay)\n }\n\n const cancelTimeout = setupTimeout(() => onConnectTimeout(socket), timeout)\n\n socket\n .setNoDelay(true)\n .once(protocol === 'https:' ? 'secureConnect' : 'connect', function () {\n cancelTimeout()\n\n if (callback) {\n const cb = callback\n callback = null\n cb(null, this)\n }\n })\n .on('error', function (err) {\n cancelTimeout()\n\n if (callback) {\n const cb = callback\n callback = null\n cb(err)\n }\n })\n\n return socket\n }\n}\n\nfunction setupTimeout (onConnectTimeout, timeout) {\n if (!timeout) {\n return () => {}\n }\n\n let s1 = null\n let s2 = null\n const timeoutId = setTimeout(() => {\n // setImmediate is added to make sure that we priotorise socket error events over timeouts\n s1 = setImmediate(() => {\n if (process.platform === 'win32') {\n // Windows needs an extra setImmediate probably due to implementation differences in the socket logic\n s2 = setImmediate(() => onConnectTimeout())\n } else {\n onConnectTimeout()\n }\n })\n }, timeout)\n return () => {\n clearTimeout(timeoutId)\n clearImmediate(s1)\n clearImmediate(s2)\n }\n}\n\nfunction onConnectTimeout (socket) {\n util.destroy(socket, new ConnectTimeoutError())\n}\n\nmodule.exports = buildConnector\n","'use strict'\n\n/** @type {Record} */\nconst headerNameLowerCasedRecord = {}\n\n// https://developer.mozilla.org/docs/Web/HTTP/Headers\nconst wellknownHeaderNames = [\n 'Accept',\n 'Accept-Encoding',\n 'Accept-Language',\n 'Accept-Ranges',\n 'Access-Control-Allow-Credentials',\n 'Access-Control-Allow-Headers',\n 'Access-Control-Allow-Methods',\n 'Access-Control-Allow-Origin',\n 'Access-Control-Expose-Headers',\n 'Access-Control-Max-Age',\n 'Access-Control-Request-Headers',\n 'Access-Control-Request-Method',\n 'Age',\n 'Allow',\n 'Alt-Svc',\n 'Alt-Used',\n 'Authorization',\n 'Cache-Control',\n 'Clear-Site-Data',\n 'Connection',\n 'Content-Disposition',\n 'Content-Encoding',\n 'Content-Language',\n 'Content-Length',\n 'Content-Location',\n 'Content-Range',\n 'Content-Security-Policy',\n 'Content-Security-Policy-Report-Only',\n 'Content-Type',\n 'Cookie',\n 'Cross-Origin-Embedder-Policy',\n 'Cross-Origin-Opener-Policy',\n 'Cross-Origin-Resource-Policy',\n 'Date',\n 'Device-Memory',\n 'Downlink',\n 'ECT',\n 'ETag',\n 'Expect',\n 'Expect-CT',\n 'Expires',\n 'Forwarded',\n 'From',\n 'Host',\n 'If-Match',\n 'If-Modified-Since',\n 'If-None-Match',\n 'If-Range',\n 'If-Unmodified-Since',\n 'Keep-Alive',\n 'Last-Modified',\n 'Link',\n 'Location',\n 'Max-Forwards',\n 'Origin',\n 'Permissions-Policy',\n 'Pragma',\n 'Proxy-Authenticate',\n 'Proxy-Authorization',\n 'RTT',\n 'Range',\n 'Referer',\n 'Referrer-Policy',\n 'Refresh',\n 'Retry-After',\n 'Sec-WebSocket-Accept',\n 'Sec-WebSocket-Extensions',\n 'Sec-WebSocket-Key',\n 'Sec-WebSocket-Protocol',\n 'Sec-WebSocket-Version',\n 'Server',\n 'Server-Timing',\n 'Service-Worker-Allowed',\n 'Service-Worker-Navigation-Preload',\n 'Set-Cookie',\n 'SourceMap',\n 'Strict-Transport-Security',\n 'Supports-Loading-Mode',\n 'TE',\n 'Timing-Allow-Origin',\n 'Trailer',\n 'Transfer-Encoding',\n 'Upgrade',\n 'Upgrade-Insecure-Requests',\n 'User-Agent',\n 'Vary',\n 'Via',\n 'WWW-Authenticate',\n 'X-Content-Type-Options',\n 'X-DNS-Prefetch-Control',\n 'X-Frame-Options',\n 'X-Permitted-Cross-Domain-Policies',\n 'X-Powered-By',\n 'X-Requested-With',\n 'X-XSS-Protection'\n]\n\nfor (let i = 0; i < wellknownHeaderNames.length; ++i) {\n const key = wellknownHeaderNames[i]\n const lowerCasedKey = key.toLowerCase()\n headerNameLowerCasedRecord[key] = headerNameLowerCasedRecord[lowerCasedKey] =\n lowerCasedKey\n}\n\n// Note: object prototypes should not be able to be referenced. e.g. `Object#hasOwnProperty`.\nObject.setPrototypeOf(headerNameLowerCasedRecord, null)\n\nmodule.exports = {\n wellknownHeaderNames,\n headerNameLowerCasedRecord\n}\n","'use strict'\n\nclass UndiciError extends Error {\n constructor (message) {\n super(message)\n this.name = 'UndiciError'\n this.code = 'UND_ERR'\n }\n}\n\nclass ConnectTimeoutError extends UndiciError {\n constructor (message) {\n super(message)\n Error.captureStackTrace(this, ConnectTimeoutError)\n this.name = 'ConnectTimeoutError'\n this.message = message || 'Connect Timeout Error'\n this.code = 'UND_ERR_CONNECT_TIMEOUT'\n }\n}\n\nclass HeadersTimeoutError extends UndiciError {\n constructor (message) {\n super(message)\n Error.captureStackTrace(this, HeadersTimeoutError)\n this.name = 'HeadersTimeoutError'\n this.message = message || 'Headers Timeout Error'\n this.code = 'UND_ERR_HEADERS_TIMEOUT'\n }\n}\n\nclass HeadersOverflowError extends UndiciError {\n constructor (message) {\n super(message)\n Error.captureStackTrace(this, HeadersOverflowError)\n this.name = 'HeadersOverflowError'\n this.message = message || 'Headers Overflow Error'\n this.code = 'UND_ERR_HEADERS_OVERFLOW'\n }\n}\n\nclass BodyTimeoutError extends UndiciError {\n constructor (message) {\n super(message)\n Error.captureStackTrace(this, BodyTimeoutError)\n this.name = 'BodyTimeoutError'\n this.message = message || 'Body Timeout Error'\n this.code = 'UND_ERR_BODY_TIMEOUT'\n }\n}\n\nclass ResponseStatusCodeError extends UndiciError {\n constructor (message, statusCode, headers, body) {\n super(message)\n Error.captureStackTrace(this, ResponseStatusCodeError)\n this.name = 'ResponseStatusCodeError'\n this.message = message || 'Response Status Code Error'\n this.code = 'UND_ERR_RESPONSE_STATUS_CODE'\n this.body = body\n this.status = statusCode\n this.statusCode = statusCode\n this.headers = headers\n }\n}\n\nclass InvalidArgumentError extends UndiciError {\n constructor (message) {\n super(message)\n Error.captureStackTrace(this, InvalidArgumentError)\n this.name = 'InvalidArgumentError'\n this.message = message || 'Invalid Argument Error'\n this.code = 'UND_ERR_INVALID_ARG'\n }\n}\n\nclass InvalidReturnValueError extends UndiciError {\n constructor (message) {\n super(message)\n Error.captureStackTrace(this, InvalidReturnValueError)\n this.name = 'InvalidReturnValueError'\n this.message = message || 'Invalid Return Value Error'\n this.code = 'UND_ERR_INVALID_RETURN_VALUE'\n }\n}\n\nclass RequestAbortedError extends UndiciError {\n constructor (message) {\n super(message)\n Error.captureStackTrace(this, RequestAbortedError)\n this.name = 'AbortError'\n this.message = message || 'Request aborted'\n this.code = 'UND_ERR_ABORTED'\n }\n}\n\nclass InformationalError extends UndiciError {\n constructor (message) {\n super(message)\n Error.captureStackTrace(this, InformationalError)\n this.name = 'InformationalError'\n this.message = message || 'Request information'\n this.code = 'UND_ERR_INFO'\n }\n}\n\nclass RequestContentLengthMismatchError extends UndiciError {\n constructor (message) {\n super(message)\n Error.captureStackTrace(this, RequestContentLengthMismatchError)\n this.name = 'RequestContentLengthMismatchError'\n this.message = message || 'Request body length does not match content-length header'\n this.code = 'UND_ERR_REQ_CONTENT_LENGTH_MISMATCH'\n }\n}\n\nclass ResponseContentLengthMismatchError extends UndiciError {\n constructor (message) {\n super(message)\n Error.captureStackTrace(this, ResponseContentLengthMismatchError)\n this.name = 'ResponseContentLengthMismatchError'\n this.message = message || 'Response body length does not match content-length header'\n this.code = 'UND_ERR_RES_CONTENT_LENGTH_MISMATCH'\n }\n}\n\nclass ClientDestroyedError extends UndiciError {\n constructor (message) {\n super(message)\n Error.captureStackTrace(this, ClientDestroyedError)\n this.name = 'ClientDestroyedError'\n this.message = message || 'The client is destroyed'\n this.code = 'UND_ERR_DESTROYED'\n }\n}\n\nclass ClientClosedError extends UndiciError {\n constructor (message) {\n super(message)\n Error.captureStackTrace(this, ClientClosedError)\n this.name = 'ClientClosedError'\n this.message = message || 'The client is closed'\n this.code = 'UND_ERR_CLOSED'\n }\n}\n\nclass SocketError extends UndiciError {\n constructor (message, socket) {\n super(message)\n Error.captureStackTrace(this, SocketError)\n this.name = 'SocketError'\n this.message = message || 'Socket error'\n this.code = 'UND_ERR_SOCKET'\n this.socket = socket\n }\n}\n\nclass NotSupportedError extends UndiciError {\n constructor (message) {\n super(message)\n Error.captureStackTrace(this, NotSupportedError)\n this.name = 'NotSupportedError'\n this.message = message || 'Not supported error'\n this.code = 'UND_ERR_NOT_SUPPORTED'\n }\n}\n\nclass BalancedPoolMissingUpstreamError extends UndiciError {\n constructor (message) {\n super(message)\n Error.captureStackTrace(this, NotSupportedError)\n this.name = 'MissingUpstreamError'\n this.message = message || 'No upstream has been added to the BalancedPool'\n this.code = 'UND_ERR_BPL_MISSING_UPSTREAM'\n }\n}\n\nclass HTTPParserError extends Error {\n constructor (message, code, data) {\n super(message)\n Error.captureStackTrace(this, HTTPParserError)\n this.name = 'HTTPParserError'\n this.code = code ? `HPE_${code}` : undefined\n this.data = data ? data.toString() : undefined\n }\n}\n\nclass ResponseExceededMaxSizeError extends UndiciError {\n constructor (message) {\n super(message)\n Error.captureStackTrace(this, ResponseExceededMaxSizeError)\n this.name = 'ResponseExceededMaxSizeError'\n this.message = message || 'Response content exceeded max size'\n this.code = 'UND_ERR_RES_EXCEEDED_MAX_SIZE'\n }\n}\n\nclass RequestRetryError extends UndiciError {\n constructor (message, code, { headers, data }) {\n super(message)\n Error.captureStackTrace(this, RequestRetryError)\n this.name = 'RequestRetryError'\n this.message = message || 'Request retry error'\n this.code = 'UND_ERR_REQ_RETRY'\n this.statusCode = code\n this.data = data\n this.headers = headers\n }\n}\n\nmodule.exports = {\n HTTPParserError,\n UndiciError,\n HeadersTimeoutError,\n HeadersOverflowError,\n BodyTimeoutError,\n RequestContentLengthMismatchError,\n ConnectTimeoutError,\n ResponseStatusCodeError,\n InvalidArgumentError,\n InvalidReturnValueError,\n RequestAbortedError,\n ClientDestroyedError,\n ClientClosedError,\n InformationalError,\n SocketError,\n NotSupportedError,\n ResponseContentLengthMismatchError,\n BalancedPoolMissingUpstreamError,\n ResponseExceededMaxSizeError,\n RequestRetryError\n}\n","'use strict'\n\nconst {\n InvalidArgumentError,\n NotSupportedError\n} = require('./errors')\nconst assert = require('assert')\nconst { kHTTP2BuildRequest, kHTTP2CopyHeaders, kHTTP1BuildRequest } = require('./symbols')\nconst util = require('./util')\n\n// tokenRegExp and headerCharRegex have been lifted from\n// https://github.com/nodejs/node/blob/main/lib/_http_common.js\n\n/**\n * Verifies that the given val is a valid HTTP token\n * per the rules defined in RFC 7230\n * See https://tools.ietf.org/html/rfc7230#section-3.2.6\n */\nconst tokenRegExp = /^[\\^_`a-zA-Z\\-0-9!#$%&'*+.|~]+$/\n\n/**\n * Matches if val contains an invalid field-vchar\n * field-value = *( field-content / obs-fold )\n * field-content = field-vchar [ 1*( SP / HTAB ) field-vchar ]\n * field-vchar = VCHAR / obs-text\n */\nconst headerCharRegex = /[^\\t\\x20-\\x7e\\x80-\\xff]/\n\n// Verifies that a given path is valid does not contain control chars \\x00 to \\x20\nconst invalidPathRegex = /[^\\u0021-\\u00ff]/\n\nconst kHandler = Symbol('handler')\n\nconst channels = {}\n\nlet extractBody\n\ntry {\n const diagnosticsChannel = require('diagnostics_channel')\n channels.create = diagnosticsChannel.channel('undici:request:create')\n channels.bodySent = diagnosticsChannel.channel('undici:request:bodySent')\n channels.headers = diagnosticsChannel.channel('undici:request:headers')\n channels.trailers = diagnosticsChannel.channel('undici:request:trailers')\n channels.error = diagnosticsChannel.channel('undici:request:error')\n} catch {\n channels.create = { hasSubscribers: false }\n channels.bodySent = { hasSubscribers: false }\n channels.headers = { hasSubscribers: false }\n channels.trailers = { hasSubscribers: false }\n channels.error = { hasSubscribers: false }\n}\n\nclass Request {\n constructor (origin, {\n path,\n method,\n body,\n headers,\n query,\n idempotent,\n blocking,\n upgrade,\n headersTimeout,\n bodyTimeout,\n reset,\n throwOnError,\n expectContinue\n }, handler) {\n if (typeof path !== 'string') {\n throw new InvalidArgumentError('path must be a string')\n } else if (\n path[0] !== '/' &&\n !(path.startsWith('http://') || path.startsWith('https://')) &&\n method !== 'CONNECT'\n ) {\n throw new InvalidArgumentError('path must be an absolute URL or start with a slash')\n } else if (invalidPathRegex.exec(path) !== null) {\n throw new InvalidArgumentError('invalid request path')\n }\n\n if (typeof method !== 'string') {\n throw new InvalidArgumentError('method must be a string')\n } else if (tokenRegExp.exec(method) === null) {\n throw new InvalidArgumentError('invalid request method')\n }\n\n if (upgrade && typeof upgrade !== 'string') {\n throw new InvalidArgumentError('upgrade must be a string')\n }\n\n if (headersTimeout != null && (!Number.isFinite(headersTimeout) || headersTimeout < 0)) {\n throw new InvalidArgumentError('invalid headersTimeout')\n }\n\n if (bodyTimeout != null && (!Number.isFinite(bodyTimeout) || bodyTimeout < 0)) {\n throw new InvalidArgumentError('invalid bodyTimeout')\n }\n\n if (reset != null && typeof reset !== 'boolean') {\n throw new InvalidArgumentError('invalid reset')\n }\n\n if (expectContinue != null && typeof expectContinue !== 'boolean') {\n throw new InvalidArgumentError('invalid expectContinue')\n }\n\n this.headersTimeout = headersTimeout\n\n this.bodyTimeout = bodyTimeout\n\n this.throwOnError = throwOnError === true\n\n this.method = method\n\n this.abort = null\n\n if (body == null) {\n this.body = null\n } else if (util.isStream(body)) {\n this.body = body\n\n const rState = this.body._readableState\n if (!rState || !rState.autoDestroy) {\n this.endHandler = function autoDestroy () {\n util.destroy(this)\n }\n this.body.on('end', this.endHandler)\n }\n\n this.errorHandler = err => {\n if (this.abort) {\n this.abort(err)\n } else {\n this.error = err\n }\n }\n this.body.on('error', this.errorHandler)\n } else if (util.isBuffer(body)) {\n this.body = body.byteLength ? body : null\n } else if (ArrayBuffer.isView(body)) {\n this.body = body.buffer.byteLength ? Buffer.from(body.buffer, body.byteOffset, body.byteLength) : null\n } else if (body instanceof ArrayBuffer) {\n this.body = body.byteLength ? Buffer.from(body) : null\n } else if (typeof body === 'string') {\n this.body = body.length ? Buffer.from(body) : null\n } else if (util.isFormDataLike(body) || util.isIterable(body) || util.isBlobLike(body)) {\n this.body = body\n } else {\n throw new InvalidArgumentError('body must be a string, a Buffer, a Readable stream, an iterable, or an async iterable')\n }\n\n this.completed = false\n\n this.aborted = false\n\n this.upgrade = upgrade || null\n\n this.path = query ? util.buildURL(path, query) : path\n\n this.origin = origin\n\n this.idempotent = idempotent == null\n ? method === 'HEAD' || method === 'GET'\n : idempotent\n\n this.blocking = blocking == null ? false : blocking\n\n this.reset = reset == null ? null : reset\n\n this.host = null\n\n this.contentLength = null\n\n this.contentType = null\n\n this.headers = ''\n\n // Only for H2\n this.expectContinue = expectContinue != null ? expectContinue : false\n\n if (Array.isArray(headers)) {\n if (headers.length % 2 !== 0) {\n throw new InvalidArgumentError('headers array must be even')\n }\n for (let i = 0; i < headers.length; i += 2) {\n processHeader(this, headers[i], headers[i + 1])\n }\n } else if (headers && typeof headers === 'object') {\n const keys = Object.keys(headers)\n for (let i = 0; i < keys.length; i++) {\n const key = keys[i]\n processHeader(this, key, headers[key])\n }\n } else if (headers != null) {\n throw new InvalidArgumentError('headers must be an object or an array')\n }\n\n if (util.isFormDataLike(this.body)) {\n if (util.nodeMajor < 16 || (util.nodeMajor === 16 && util.nodeMinor < 8)) {\n throw new InvalidArgumentError('Form-Data bodies are only supported in node v16.8 and newer.')\n }\n\n if (!extractBody) {\n extractBody = require('../fetch/body.js').extractBody\n }\n\n const [bodyStream, contentType] = extractBody(body)\n if (this.contentType == null) {\n this.contentType = contentType\n this.headers += `content-type: ${contentType}\\r\\n`\n }\n this.body = bodyStream.stream\n this.contentLength = bodyStream.length\n } else if (util.isBlobLike(body) && this.contentType == null && body.type) {\n this.contentType = body.type\n this.headers += `content-type: ${body.type}\\r\\n`\n }\n\n util.validateHandler(handler, method, upgrade)\n\n this.servername = util.getServerName(this.host)\n\n this[kHandler] = handler\n\n if (channels.create.hasSubscribers) {\n channels.create.publish({ request: this })\n }\n }\n\n onBodySent (chunk) {\n if (this[kHandler].onBodySent) {\n try {\n return this[kHandler].onBodySent(chunk)\n } catch (err) {\n this.abort(err)\n }\n }\n }\n\n onRequestSent () {\n if (channels.bodySent.hasSubscribers) {\n channels.bodySent.publish({ request: this })\n }\n\n if (this[kHandler].onRequestSent) {\n try {\n return this[kHandler].onRequestSent()\n } catch (err) {\n this.abort(err)\n }\n }\n }\n\n onConnect (abort) {\n assert(!this.aborted)\n assert(!this.completed)\n\n if (this.error) {\n abort(this.error)\n } else {\n this.abort = abort\n return this[kHandler].onConnect(abort)\n }\n }\n\n onHeaders (statusCode, headers, resume, statusText) {\n assert(!this.aborted)\n assert(!this.completed)\n\n if (channels.headers.hasSubscribers) {\n channels.headers.publish({ request: this, response: { statusCode, headers, statusText } })\n }\n\n try {\n return this[kHandler].onHeaders(statusCode, headers, resume, statusText)\n } catch (err) {\n this.abort(err)\n }\n }\n\n onData (chunk) {\n assert(!this.aborted)\n assert(!this.completed)\n\n try {\n return this[kHandler].onData(chunk)\n } catch (err) {\n this.abort(err)\n return false\n }\n }\n\n onUpgrade (statusCode, headers, socket) {\n assert(!this.aborted)\n assert(!this.completed)\n\n return this[kHandler].onUpgrade(statusCode, headers, socket)\n }\n\n onComplete (trailers) {\n this.onFinally()\n\n assert(!this.aborted)\n\n this.completed = true\n if (channels.trailers.hasSubscribers) {\n channels.trailers.publish({ request: this, trailers })\n }\n\n try {\n return this[kHandler].onComplete(trailers)\n } catch (err) {\n // TODO (fix): This might be a bad idea?\n this.onError(err)\n }\n }\n\n onError (error) {\n this.onFinally()\n\n if (channels.error.hasSubscribers) {\n channels.error.publish({ request: this, error })\n }\n\n if (this.aborted) {\n return\n }\n this.aborted = true\n\n return this[kHandler].onError(error)\n }\n\n onFinally () {\n if (this.errorHandler) {\n this.body.off('error', this.errorHandler)\n this.errorHandler = null\n }\n\n if (this.endHandler) {\n this.body.off('end', this.endHandler)\n this.endHandler = null\n }\n }\n\n // TODO: adjust to support H2\n addHeader (key, value) {\n processHeader(this, key, value)\n return this\n }\n\n static [kHTTP1BuildRequest] (origin, opts, handler) {\n // TODO: Migrate header parsing here, to make Requests\n // HTTP agnostic\n return new Request(origin, opts, handler)\n }\n\n static [kHTTP2BuildRequest] (origin, opts, handler) {\n const headers = opts.headers\n opts = { ...opts, headers: null }\n\n const request = new Request(origin, opts, handler)\n\n request.headers = {}\n\n if (Array.isArray(headers)) {\n if (headers.length % 2 !== 0) {\n throw new InvalidArgumentError('headers array must be even')\n }\n for (let i = 0; i < headers.length; i += 2) {\n processHeader(request, headers[i], headers[i + 1], true)\n }\n } else if (headers && typeof headers === 'object') {\n const keys = Object.keys(headers)\n for (let i = 0; i < keys.length; i++) {\n const key = keys[i]\n processHeader(request, key, headers[key], true)\n }\n } else if (headers != null) {\n throw new InvalidArgumentError('headers must be an object or an array')\n }\n\n return request\n }\n\n static [kHTTP2CopyHeaders] (raw) {\n const rawHeaders = raw.split('\\r\\n')\n const headers = {}\n\n for (const header of rawHeaders) {\n const [key, value] = header.split(': ')\n\n if (value == null || value.length === 0) continue\n\n if (headers[key]) headers[key] += `,${value}`\n else headers[key] = value\n }\n\n return headers\n }\n}\n\nfunction processHeaderValue (key, val, skipAppend) {\n if (val && typeof val === 'object') {\n throw new InvalidArgumentError(`invalid ${key} header`)\n }\n\n val = val != null ? `${val}` : ''\n\n if (headerCharRegex.exec(val) !== null) {\n throw new InvalidArgumentError(`invalid ${key} header`)\n }\n\n return skipAppend ? val : `${key}: ${val}\\r\\n`\n}\n\nfunction processHeader (request, key, val, skipAppend = false) {\n if (val && (typeof val === 'object' && !Array.isArray(val))) {\n throw new InvalidArgumentError(`invalid ${key} header`)\n } else if (val === undefined) {\n return\n }\n\n if (\n request.host === null &&\n key.length === 4 &&\n key.toLowerCase() === 'host'\n ) {\n if (headerCharRegex.exec(val) !== null) {\n throw new InvalidArgumentError(`invalid ${key} header`)\n }\n // Consumed by Client\n request.host = val\n } else if (\n request.contentLength === null &&\n key.length === 14 &&\n key.toLowerCase() === 'content-length'\n ) {\n request.contentLength = parseInt(val, 10)\n if (!Number.isFinite(request.contentLength)) {\n throw new InvalidArgumentError('invalid content-length header')\n }\n } else if (\n request.contentType === null &&\n key.length === 12 &&\n key.toLowerCase() === 'content-type'\n ) {\n request.contentType = val\n if (skipAppend) request.headers[key] = processHeaderValue(key, val, skipAppend)\n else request.headers += processHeaderValue(key, val)\n } else if (\n key.length === 17 &&\n key.toLowerCase() === 'transfer-encoding'\n ) {\n throw new InvalidArgumentError('invalid transfer-encoding header')\n } else if (\n key.length === 10 &&\n key.toLowerCase() === 'connection'\n ) {\n const value = typeof val === 'string' ? val.toLowerCase() : null\n if (value !== 'close' && value !== 'keep-alive') {\n throw new InvalidArgumentError('invalid connection header')\n } else if (value === 'close') {\n request.reset = true\n }\n } else if (\n key.length === 10 &&\n key.toLowerCase() === 'keep-alive'\n ) {\n throw new InvalidArgumentError('invalid keep-alive header')\n } else if (\n key.length === 7 &&\n key.toLowerCase() === 'upgrade'\n ) {\n throw new InvalidArgumentError('invalid upgrade header')\n } else if (\n key.length === 6 &&\n key.toLowerCase() === 'expect'\n ) {\n throw new NotSupportedError('expect header not supported')\n } else if (tokenRegExp.exec(key) === null) {\n throw new InvalidArgumentError('invalid header key')\n } else {\n if (Array.isArray(val)) {\n for (let i = 0; i < val.length; i++) {\n if (skipAppend) {\n if (request.headers[key]) request.headers[key] += `,${processHeaderValue(key, val[i], skipAppend)}`\n else request.headers[key] = processHeaderValue(key, val[i], skipAppend)\n } else {\n request.headers += processHeaderValue(key, val[i])\n }\n }\n } else {\n if (skipAppend) request.headers[key] = processHeaderValue(key, val, skipAppend)\n else request.headers += processHeaderValue(key, val)\n }\n }\n}\n\nmodule.exports = Request\n","module.exports = {\n kClose: Symbol('close'),\n kDestroy: Symbol('destroy'),\n kDispatch: Symbol('dispatch'),\n kUrl: Symbol('url'),\n kWriting: Symbol('writing'),\n kResuming: Symbol('resuming'),\n kQueue: Symbol('queue'),\n kConnect: Symbol('connect'),\n kConnecting: Symbol('connecting'),\n kHeadersList: Symbol('headers list'),\n kKeepAliveDefaultTimeout: Symbol('default keep alive timeout'),\n kKeepAliveMaxTimeout: Symbol('max keep alive timeout'),\n kKeepAliveTimeoutThreshold: Symbol('keep alive timeout threshold'),\n kKeepAliveTimeoutValue: Symbol('keep alive timeout'),\n kKeepAlive: Symbol('keep alive'),\n kHeadersTimeout: Symbol('headers timeout'),\n kBodyTimeout: Symbol('body timeout'),\n kServerName: Symbol('server name'),\n kLocalAddress: Symbol('local address'),\n kHost: Symbol('host'),\n kNoRef: Symbol('no ref'),\n kBodyUsed: Symbol('used'),\n kRunning: Symbol('running'),\n kBlocking: Symbol('blocking'),\n kPending: Symbol('pending'),\n kSize: Symbol('size'),\n kBusy: Symbol('busy'),\n kQueued: Symbol('queued'),\n kFree: Symbol('free'),\n kConnected: Symbol('connected'),\n kClosed: Symbol('closed'),\n kNeedDrain: Symbol('need drain'),\n kReset: Symbol('reset'),\n kDestroyed: Symbol.for('nodejs.stream.destroyed'),\n kMaxHeadersSize: Symbol('max headers size'),\n kRunningIdx: Symbol('running index'),\n kPendingIdx: Symbol('pending index'),\n kError: Symbol('error'),\n kClients: Symbol('clients'),\n kClient: Symbol('client'),\n kParser: Symbol('parser'),\n kOnDestroyed: Symbol('destroy callbacks'),\n kPipelining: Symbol('pipelining'),\n kSocket: Symbol('socket'),\n kHostHeader: Symbol('host header'),\n kConnector: Symbol('connector'),\n kStrictContentLength: Symbol('strict content length'),\n kMaxRedirections: Symbol('maxRedirections'),\n kMaxRequests: Symbol('maxRequestsPerClient'),\n kProxy: Symbol('proxy agent options'),\n kCounter: Symbol('socket request counter'),\n kInterceptors: Symbol('dispatch interceptors'),\n kMaxResponseSize: Symbol('max response size'),\n kHTTP2Session: Symbol('http2Session'),\n kHTTP2SessionState: Symbol('http2Session state'),\n kHTTP2BuildRequest: Symbol('http2 build request'),\n kHTTP1BuildRequest: Symbol('http1 build request'),\n kHTTP2CopyHeaders: Symbol('http2 copy headers'),\n kHTTPConnVersion: Symbol('http connection version'),\n kRetryHandlerDefaultRetry: Symbol('retry agent default retry'),\n kConstruct: Symbol('constructable')\n}\n","'use strict'\n\nconst assert = require('assert')\nconst { kDestroyed, kBodyUsed } = require('./symbols')\nconst { IncomingMessage } = require('http')\nconst stream = require('stream')\nconst net = require('net')\nconst { InvalidArgumentError } = require('./errors')\nconst { Blob } = require('buffer')\nconst nodeUtil = require('util')\nconst { stringify } = require('querystring')\nconst { headerNameLowerCasedRecord } = require('./constants')\n\nconst [nodeMajor, nodeMinor] = process.versions.node.split('.').map(v => Number(v))\n\nfunction nop () {}\n\nfunction isStream (obj) {\n return obj && typeof obj === 'object' && typeof obj.pipe === 'function' && typeof obj.on === 'function'\n}\n\n// based on https://github.com/node-fetch/fetch-blob/blob/8ab587d34080de94140b54f07168451e7d0b655e/index.js#L229-L241 (MIT License)\nfunction isBlobLike (object) {\n return (Blob && object instanceof Blob) || (\n object &&\n typeof object === 'object' &&\n (typeof object.stream === 'function' ||\n typeof object.arrayBuffer === 'function') &&\n /^(Blob|File)$/.test(object[Symbol.toStringTag])\n )\n}\n\nfunction buildURL (url, queryParams) {\n if (url.includes('?') || url.includes('#')) {\n throw new Error('Query params cannot be passed when url already contains \"?\" or \"#\".')\n }\n\n const stringified = stringify(queryParams)\n\n if (stringified) {\n url += '?' + stringified\n }\n\n return url\n}\n\nfunction parseURL (url) {\n if (typeof url === 'string') {\n url = new URL(url)\n\n if (!/^https?:/.test(url.origin || url.protocol)) {\n throw new InvalidArgumentError('Invalid URL protocol: the URL must start with `http:` or `https:`.')\n }\n\n return url\n }\n\n if (!url || typeof url !== 'object') {\n throw new InvalidArgumentError('Invalid URL: The URL argument must be a non-null object.')\n }\n\n if (!/^https?:/.test(url.origin || url.protocol)) {\n throw new InvalidArgumentError('Invalid URL protocol: the URL must start with `http:` or `https:`.')\n }\n\n if (!(url instanceof URL)) {\n if (url.port != null && url.port !== '' && !Number.isFinite(parseInt(url.port))) {\n throw new InvalidArgumentError('Invalid URL: port must be a valid integer or a string representation of an integer.')\n }\n\n if (url.path != null && typeof url.path !== 'string') {\n throw new InvalidArgumentError('Invalid URL path: the path must be a string or null/undefined.')\n }\n\n if (url.pathname != null && typeof url.pathname !== 'string') {\n throw new InvalidArgumentError('Invalid URL pathname: the pathname must be a string or null/undefined.')\n }\n\n if (url.hostname != null && typeof url.hostname !== 'string') {\n throw new InvalidArgumentError('Invalid URL hostname: the hostname must be a string or null/undefined.')\n }\n\n if (url.origin != null && typeof url.origin !== 'string') {\n throw new InvalidArgumentError('Invalid URL origin: the origin must be a string or null/undefined.')\n }\n\n const port = url.port != null\n ? url.port\n : (url.protocol === 'https:' ? 443 : 80)\n let origin = url.origin != null\n ? url.origin\n : `${url.protocol}//${url.hostname}:${port}`\n let path = url.path != null\n ? url.path\n : `${url.pathname || ''}${url.search || ''}`\n\n if (origin.endsWith('/')) {\n origin = origin.substring(0, origin.length - 1)\n }\n\n if (path && !path.startsWith('/')) {\n path = `/${path}`\n }\n // new URL(path, origin) is unsafe when `path` contains an absolute URL\n // From https://developer.mozilla.org/en-US/docs/Web/API/URL/URL:\n // If first parameter is a relative URL, second param is required, and will be used as the base URL.\n // If first parameter is an absolute URL, a given second param will be ignored.\n url = new URL(origin + path)\n }\n\n return url\n}\n\nfunction parseOrigin (url) {\n url = parseURL(url)\n\n if (url.pathname !== '/' || url.search || url.hash) {\n throw new InvalidArgumentError('invalid url')\n }\n\n return url\n}\n\nfunction getHostname (host) {\n if (host[0] === '[') {\n const idx = host.indexOf(']')\n\n assert(idx !== -1)\n return host.substring(1, idx)\n }\n\n const idx = host.indexOf(':')\n if (idx === -1) return host\n\n return host.substring(0, idx)\n}\n\n// IP addresses are not valid server names per RFC6066\n// > Currently, the only server names supported are DNS hostnames\nfunction getServerName (host) {\n if (!host) {\n return null\n }\n\n assert.strictEqual(typeof host, 'string')\n\n const servername = getHostname(host)\n if (net.isIP(servername)) {\n return ''\n }\n\n return servername\n}\n\nfunction deepClone (obj) {\n return JSON.parse(JSON.stringify(obj))\n}\n\nfunction isAsyncIterable (obj) {\n return !!(obj != null && typeof obj[Symbol.asyncIterator] === 'function')\n}\n\nfunction isIterable (obj) {\n return !!(obj != null && (typeof obj[Symbol.iterator] === 'function' || typeof obj[Symbol.asyncIterator] === 'function'))\n}\n\nfunction bodyLength (body) {\n if (body == null) {\n return 0\n } else if (isStream(body)) {\n const state = body._readableState\n return state && state.objectMode === false && state.ended === true && Number.isFinite(state.length)\n ? state.length\n : null\n } else if (isBlobLike(body)) {\n return body.size != null ? body.size : null\n } else if (isBuffer(body)) {\n return body.byteLength\n }\n\n return null\n}\n\nfunction isDestroyed (stream) {\n return !stream || !!(stream.destroyed || stream[kDestroyed])\n}\n\nfunction isReadableAborted (stream) {\n const state = stream && stream._readableState\n return isDestroyed(stream) && state && !state.endEmitted\n}\n\nfunction destroy (stream, err) {\n if (stream == null || !isStream(stream) || isDestroyed(stream)) {\n return\n }\n\n if (typeof stream.destroy === 'function') {\n if (Object.getPrototypeOf(stream).constructor === IncomingMessage) {\n // See: https://github.com/nodejs/node/pull/38505/files\n stream.socket = null\n }\n\n stream.destroy(err)\n } else if (err) {\n process.nextTick((stream, err) => {\n stream.emit('error', err)\n }, stream, err)\n }\n\n if (stream.destroyed !== true) {\n stream[kDestroyed] = true\n }\n}\n\nconst KEEPALIVE_TIMEOUT_EXPR = /timeout=(\\d+)/\nfunction parseKeepAliveTimeout (val) {\n const m = val.toString().match(KEEPALIVE_TIMEOUT_EXPR)\n return m ? parseInt(m[1], 10) * 1000 : null\n}\n\n/**\n * Retrieves a header name and returns its lowercase value.\n * @param {string | Buffer} value Header name\n * @returns {string}\n */\nfunction headerNameToString (value) {\n return headerNameLowerCasedRecord[value] || value.toLowerCase()\n}\n\nfunction parseHeaders (headers, obj = {}) {\n // For H2 support\n if (!Array.isArray(headers)) return headers\n\n for (let i = 0; i < headers.length; i += 2) {\n const key = headers[i].toString().toLowerCase()\n let val = obj[key]\n\n if (!val) {\n if (Array.isArray(headers[i + 1])) {\n obj[key] = headers[i + 1].map(x => x.toString('utf8'))\n } else {\n obj[key] = headers[i + 1].toString('utf8')\n }\n } else {\n if (!Array.isArray(val)) {\n val = [val]\n obj[key] = val\n }\n val.push(headers[i + 1].toString('utf8'))\n }\n }\n\n // See https://github.com/nodejs/node/pull/46528\n if ('content-length' in obj && 'content-disposition' in obj) {\n obj['content-disposition'] = Buffer.from(obj['content-disposition']).toString('latin1')\n }\n\n return obj\n}\n\nfunction parseRawHeaders (headers) {\n const ret = []\n let hasContentLength = false\n let contentDispositionIdx = -1\n\n for (let n = 0; n < headers.length; n += 2) {\n const key = headers[n + 0].toString()\n const val = headers[n + 1].toString('utf8')\n\n if (key.length === 14 && (key === 'content-length' || key.toLowerCase() === 'content-length')) {\n ret.push(key, val)\n hasContentLength = true\n } else if (key.length === 19 && (key === 'content-disposition' || key.toLowerCase() === 'content-disposition')) {\n contentDispositionIdx = ret.push(key, val) - 1\n } else {\n ret.push(key, val)\n }\n }\n\n // See https://github.com/nodejs/node/pull/46528\n if (hasContentLength && contentDispositionIdx !== -1) {\n ret[contentDispositionIdx] = Buffer.from(ret[contentDispositionIdx]).toString('latin1')\n }\n\n return ret\n}\n\nfunction isBuffer (buffer) {\n // See, https://github.com/mcollina/undici/pull/319\n return buffer instanceof Uint8Array || Buffer.isBuffer(buffer)\n}\n\nfunction validateHandler (handler, method, upgrade) {\n if (!handler || typeof handler !== 'object') {\n throw new InvalidArgumentError('handler must be an object')\n }\n\n if (typeof handler.onConnect !== 'function') {\n throw new InvalidArgumentError('invalid onConnect method')\n }\n\n if (typeof handler.onError !== 'function') {\n throw new InvalidArgumentError('invalid onError method')\n }\n\n if (typeof handler.onBodySent !== 'function' && handler.onBodySent !== undefined) {\n throw new InvalidArgumentError('invalid onBodySent method')\n }\n\n if (upgrade || method === 'CONNECT') {\n if (typeof handler.onUpgrade !== 'function') {\n throw new InvalidArgumentError('invalid onUpgrade method')\n }\n } else {\n if (typeof handler.onHeaders !== 'function') {\n throw new InvalidArgumentError('invalid onHeaders method')\n }\n\n if (typeof handler.onData !== 'function') {\n throw new InvalidArgumentError('invalid onData method')\n }\n\n if (typeof handler.onComplete !== 'function') {\n throw new InvalidArgumentError('invalid onComplete method')\n }\n }\n}\n\n// A body is disturbed if it has been read from and it cannot\n// be re-used without losing state or data.\nfunction isDisturbed (body) {\n return !!(body && (\n stream.isDisturbed\n ? stream.isDisturbed(body) || body[kBodyUsed] // TODO (fix): Why is body[kBodyUsed] needed?\n : body[kBodyUsed] ||\n body.readableDidRead ||\n (body._readableState && body._readableState.dataEmitted) ||\n isReadableAborted(body)\n ))\n}\n\nfunction isErrored (body) {\n return !!(body && (\n stream.isErrored\n ? stream.isErrored(body)\n : /state: 'errored'/.test(nodeUtil.inspect(body)\n )))\n}\n\nfunction isReadable (body) {\n return !!(body && (\n stream.isReadable\n ? stream.isReadable(body)\n : /state: 'readable'/.test(nodeUtil.inspect(body)\n )))\n}\n\nfunction getSocketInfo (socket) {\n return {\n localAddress: socket.localAddress,\n localPort: socket.localPort,\n remoteAddress: socket.remoteAddress,\n remotePort: socket.remotePort,\n remoteFamily: socket.remoteFamily,\n timeout: socket.timeout,\n bytesWritten: socket.bytesWritten,\n bytesRead: socket.bytesRead\n }\n}\n\nasync function * convertIterableToBuffer (iterable) {\n for await (const chunk of iterable) {\n yield Buffer.isBuffer(chunk) ? chunk : Buffer.from(chunk)\n }\n}\n\nlet ReadableStream\nfunction ReadableStreamFrom (iterable) {\n if (!ReadableStream) {\n ReadableStream = require('stream/web').ReadableStream\n }\n\n if (ReadableStream.from) {\n return ReadableStream.from(convertIterableToBuffer(iterable))\n }\n\n let iterator\n return new ReadableStream(\n {\n async start () {\n iterator = iterable[Symbol.asyncIterator]()\n },\n async pull (controller) {\n const { done, value } = await iterator.next()\n if (done) {\n queueMicrotask(() => {\n controller.close()\n })\n } else {\n const buf = Buffer.isBuffer(value) ? value : Buffer.from(value)\n controller.enqueue(new Uint8Array(buf))\n }\n return controller.desiredSize > 0\n },\n async cancel (reason) {\n await iterator.return()\n }\n },\n 0\n )\n}\n\n// The chunk should be a FormData instance and contains\n// all the required methods.\nfunction isFormDataLike (object) {\n return (\n object &&\n typeof object === 'object' &&\n typeof object.append === 'function' &&\n typeof object.delete === 'function' &&\n typeof object.get === 'function' &&\n typeof object.getAll === 'function' &&\n typeof object.has === 'function' &&\n typeof object.set === 'function' &&\n object[Symbol.toStringTag] === 'FormData'\n )\n}\n\nfunction throwIfAborted (signal) {\n if (!signal) { return }\n if (typeof signal.throwIfAborted === 'function') {\n signal.throwIfAborted()\n } else {\n if (signal.aborted) {\n // DOMException not available < v17.0.0\n const err = new Error('The operation was aborted')\n err.name = 'AbortError'\n throw err\n }\n }\n}\n\nfunction addAbortListener (signal, listener) {\n if ('addEventListener' in signal) {\n signal.addEventListener('abort', listener, { once: true })\n return () => signal.removeEventListener('abort', listener)\n }\n signal.addListener('abort', listener)\n return () => signal.removeListener('abort', listener)\n}\n\nconst hasToWellFormed = !!String.prototype.toWellFormed\n\n/**\n * @param {string} val\n */\nfunction toUSVString (val) {\n if (hasToWellFormed) {\n return `${val}`.toWellFormed()\n } else if (nodeUtil.toUSVString) {\n return nodeUtil.toUSVString(val)\n }\n\n return `${val}`\n}\n\n// Parsed accordingly to RFC 9110\n// https://www.rfc-editor.org/rfc/rfc9110#field.content-range\nfunction parseRangeHeader (range) {\n if (range == null || range === '') return { start: 0, end: null, size: null }\n\n const m = range ? range.match(/^bytes (\\d+)-(\\d+)\\/(\\d+)?$/) : null\n return m\n ? {\n start: parseInt(m[1]),\n end: m[2] ? parseInt(m[2]) : null,\n size: m[3] ? parseInt(m[3]) : null\n }\n : null\n}\n\nconst kEnumerableProperty = Object.create(null)\nkEnumerableProperty.enumerable = true\n\nmodule.exports = {\n kEnumerableProperty,\n nop,\n isDisturbed,\n isErrored,\n isReadable,\n toUSVString,\n isReadableAborted,\n isBlobLike,\n parseOrigin,\n parseURL,\n getServerName,\n isStream,\n isIterable,\n isAsyncIterable,\n isDestroyed,\n headerNameToString,\n parseRawHeaders,\n parseHeaders,\n parseKeepAliveTimeout,\n destroy,\n bodyLength,\n deepClone,\n ReadableStreamFrom,\n isBuffer,\n validateHandler,\n getSocketInfo,\n isFormDataLike,\n buildURL,\n throwIfAborted,\n addAbortListener,\n parseRangeHeader,\n nodeMajor,\n nodeMinor,\n nodeHasAutoSelectFamily: nodeMajor > 18 || (nodeMajor === 18 && nodeMinor >= 13),\n safeHTTPMethods: ['GET', 'HEAD', 'OPTIONS', 'TRACE']\n}\n","'use strict'\n\nconst Dispatcher = require('./dispatcher')\nconst {\n ClientDestroyedError,\n ClientClosedError,\n InvalidArgumentError\n} = require('./core/errors')\nconst { kDestroy, kClose, kDispatch, kInterceptors } = require('./core/symbols')\n\nconst kDestroyed = Symbol('destroyed')\nconst kClosed = Symbol('closed')\nconst kOnDestroyed = Symbol('onDestroyed')\nconst kOnClosed = Symbol('onClosed')\nconst kInterceptedDispatch = Symbol('Intercepted Dispatch')\n\nclass DispatcherBase extends Dispatcher {\n constructor () {\n super()\n\n this[kDestroyed] = false\n this[kOnDestroyed] = null\n this[kClosed] = false\n this[kOnClosed] = []\n }\n\n get destroyed () {\n return this[kDestroyed]\n }\n\n get closed () {\n return this[kClosed]\n }\n\n get interceptors () {\n return this[kInterceptors]\n }\n\n set interceptors (newInterceptors) {\n if (newInterceptors) {\n for (let i = newInterceptors.length - 1; i >= 0; i--) {\n const interceptor = this[kInterceptors][i]\n if (typeof interceptor !== 'function') {\n throw new InvalidArgumentError('interceptor must be an function')\n }\n }\n }\n\n this[kInterceptors] = newInterceptors\n }\n\n close (callback) {\n if (callback === undefined) {\n return new Promise((resolve, reject) => {\n this.close((err, data) => {\n return err ? reject(err) : resolve(data)\n })\n })\n }\n\n if (typeof callback !== 'function') {\n throw new InvalidArgumentError('invalid callback')\n }\n\n if (this[kDestroyed]) {\n queueMicrotask(() => callback(new ClientDestroyedError(), null))\n return\n }\n\n if (this[kClosed]) {\n if (this[kOnClosed]) {\n this[kOnClosed].push(callback)\n } else {\n queueMicrotask(() => callback(null, null))\n }\n return\n }\n\n this[kClosed] = true\n this[kOnClosed].push(callback)\n\n const onClosed = () => {\n const callbacks = this[kOnClosed]\n this[kOnClosed] = null\n for (let i = 0; i < callbacks.length; i++) {\n callbacks[i](null, null)\n }\n }\n\n // Should not error.\n this[kClose]()\n .then(() => this.destroy())\n .then(() => {\n queueMicrotask(onClosed)\n })\n }\n\n destroy (err, callback) {\n if (typeof err === 'function') {\n callback = err\n err = null\n }\n\n if (callback === undefined) {\n return new Promise((resolve, reject) => {\n this.destroy(err, (err, data) => {\n return err ? /* istanbul ignore next: should never error */ reject(err) : resolve(data)\n })\n })\n }\n\n if (typeof callback !== 'function') {\n throw new InvalidArgumentError('invalid callback')\n }\n\n if (this[kDestroyed]) {\n if (this[kOnDestroyed]) {\n this[kOnDestroyed].push(callback)\n } else {\n queueMicrotask(() => callback(null, null))\n }\n return\n }\n\n if (!err) {\n err = new ClientDestroyedError()\n }\n\n this[kDestroyed] = true\n this[kOnDestroyed] = this[kOnDestroyed] || []\n this[kOnDestroyed].push(callback)\n\n const onDestroyed = () => {\n const callbacks = this[kOnDestroyed]\n this[kOnDestroyed] = null\n for (let i = 0; i < callbacks.length; i++) {\n callbacks[i](null, null)\n }\n }\n\n // Should not error.\n this[kDestroy](err).then(() => {\n queueMicrotask(onDestroyed)\n })\n }\n\n [kInterceptedDispatch] (opts, handler) {\n if (!this[kInterceptors] || this[kInterceptors].length === 0) {\n this[kInterceptedDispatch] = this[kDispatch]\n return this[kDispatch](opts, handler)\n }\n\n let dispatch = this[kDispatch].bind(this)\n for (let i = this[kInterceptors].length - 1; i >= 0; i--) {\n dispatch = this[kInterceptors][i](dispatch)\n }\n this[kInterceptedDispatch] = dispatch\n return dispatch(opts, handler)\n }\n\n dispatch (opts, handler) {\n if (!handler || typeof handler !== 'object') {\n throw new InvalidArgumentError('handler must be an object')\n }\n\n try {\n if (!opts || typeof opts !== 'object') {\n throw new InvalidArgumentError('opts must be an object.')\n }\n\n if (this[kDestroyed] || this[kOnDestroyed]) {\n throw new ClientDestroyedError()\n }\n\n if (this[kClosed]) {\n throw new ClientClosedError()\n }\n\n return this[kInterceptedDispatch](opts, handler)\n } catch (err) {\n if (typeof handler.onError !== 'function') {\n throw new InvalidArgumentError('invalid onError method')\n }\n\n handler.onError(err)\n\n return false\n }\n }\n}\n\nmodule.exports = DispatcherBase\n","'use strict'\n\nconst EventEmitter = require('events')\n\nclass Dispatcher extends EventEmitter {\n dispatch () {\n throw new Error('not implemented')\n }\n\n close () {\n throw new Error('not implemented')\n }\n\n destroy () {\n throw new Error('not implemented')\n }\n}\n\nmodule.exports = Dispatcher\n","'use strict'\n\nconst Busboy = require('@fastify/busboy')\nconst util = require('../core/util')\nconst {\n ReadableStreamFrom,\n isBlobLike,\n isReadableStreamLike,\n readableStreamClose,\n createDeferredPromise,\n fullyReadBody\n} = require('./util')\nconst { FormData } = require('./formdata')\nconst { kState } = require('./symbols')\nconst { webidl } = require('./webidl')\nconst { DOMException, structuredClone } = require('./constants')\nconst { Blob, File: NativeFile } = require('buffer')\nconst { kBodyUsed } = require('../core/symbols')\nconst assert = require('assert')\nconst { isErrored } = require('../core/util')\nconst { isUint8Array, isArrayBuffer } = require('util/types')\nconst { File: UndiciFile } = require('./file')\nconst { parseMIMEType, serializeAMimeType } = require('./dataURL')\n\nlet ReadableStream = globalThis.ReadableStream\n\n/** @type {globalThis['File']} */\nconst File = NativeFile ?? UndiciFile\nconst textEncoder = new TextEncoder()\nconst textDecoder = new TextDecoder()\n\n// https://fetch.spec.whatwg.org/#concept-bodyinit-extract\nfunction extractBody (object, keepalive = false) {\n if (!ReadableStream) {\n ReadableStream = require('stream/web').ReadableStream\n }\n\n // 1. Let stream be null.\n let stream = null\n\n // 2. If object is a ReadableStream object, then set stream to object.\n if (object instanceof ReadableStream) {\n stream = object\n } else if (isBlobLike(object)) {\n // 3. Otherwise, if object is a Blob object, set stream to the\n // result of running object’s get stream.\n stream = object.stream()\n } else {\n // 4. Otherwise, set stream to a new ReadableStream object, and set\n // up stream.\n stream = new ReadableStream({\n async pull (controller) {\n controller.enqueue(\n typeof source === 'string' ? textEncoder.encode(source) : source\n )\n queueMicrotask(() => readableStreamClose(controller))\n },\n start () {},\n type: undefined\n })\n }\n\n // 5. Assert: stream is a ReadableStream object.\n assert(isReadableStreamLike(stream))\n\n // 6. Let action be null.\n let action = null\n\n // 7. Let source be null.\n let source = null\n\n // 8. Let length be null.\n let length = null\n\n // 9. Let type be null.\n let type = null\n\n // 10. Switch on object:\n if (typeof object === 'string') {\n // Set source to the UTF-8 encoding of object.\n // Note: setting source to a Uint8Array here breaks some mocking assumptions.\n source = object\n\n // Set type to `text/plain;charset=UTF-8`.\n type = 'text/plain;charset=UTF-8'\n } else if (object instanceof URLSearchParams) {\n // URLSearchParams\n\n // spec says to run application/x-www-form-urlencoded on body.list\n // this is implemented in Node.js as apart of an URLSearchParams instance toString method\n // See: https://github.com/nodejs/node/blob/e46c680bf2b211bbd52cf959ca17ee98c7f657f5/lib/internal/url.js#L490\n // and https://github.com/nodejs/node/blob/e46c680bf2b211bbd52cf959ca17ee98c7f657f5/lib/internal/url.js#L1100\n\n // Set source to the result of running the application/x-www-form-urlencoded serializer with object’s list.\n source = object.toString()\n\n // Set type to `application/x-www-form-urlencoded;charset=UTF-8`.\n type = 'application/x-www-form-urlencoded;charset=UTF-8'\n } else if (isArrayBuffer(object)) {\n // BufferSource/ArrayBuffer\n\n // Set source to a copy of the bytes held by object.\n source = new Uint8Array(object.slice())\n } else if (ArrayBuffer.isView(object)) {\n // BufferSource/ArrayBufferView\n\n // Set source to a copy of the bytes held by object.\n source = new Uint8Array(object.buffer.slice(object.byteOffset, object.byteOffset + object.byteLength))\n } else if (util.isFormDataLike(object)) {\n const boundary = `----formdata-undici-0${`${Math.floor(Math.random() * 1e11)}`.padStart(11, '0')}`\n const prefix = `--${boundary}\\r\\nContent-Disposition: form-data`\n\n /*! formdata-polyfill. MIT License. Jimmy Wärting */\n const escape = (str) =>\n str.replace(/\\n/g, '%0A').replace(/\\r/g, '%0D').replace(/\"/g, '%22')\n const normalizeLinefeeds = (value) => value.replace(/\\r?\\n|\\r/g, '\\r\\n')\n\n // Set action to this step: run the multipart/form-data\n // encoding algorithm, with object’s entry list and UTF-8.\n // - This ensures that the body is immutable and can't be changed afterwords\n // - That the content-length is calculated in advance.\n // - And that all parts are pre-encoded and ready to be sent.\n\n const blobParts = []\n const rn = new Uint8Array([13, 10]) // '\\r\\n'\n length = 0\n let hasUnknownSizeValue = false\n\n for (const [name, value] of object) {\n if (typeof value === 'string') {\n const chunk = textEncoder.encode(prefix +\n `; name=\"${escape(normalizeLinefeeds(name))}\"` +\n `\\r\\n\\r\\n${normalizeLinefeeds(value)}\\r\\n`)\n blobParts.push(chunk)\n length += chunk.byteLength\n } else {\n const chunk = textEncoder.encode(`${prefix}; name=\"${escape(normalizeLinefeeds(name))}\"` +\n (value.name ? `; filename=\"${escape(value.name)}\"` : '') + '\\r\\n' +\n `Content-Type: ${\n value.type || 'application/octet-stream'\n }\\r\\n\\r\\n`)\n blobParts.push(chunk, value, rn)\n if (typeof value.size === 'number') {\n length += chunk.byteLength + value.size + rn.byteLength\n } else {\n hasUnknownSizeValue = true\n }\n }\n }\n\n const chunk = textEncoder.encode(`--${boundary}--`)\n blobParts.push(chunk)\n length += chunk.byteLength\n if (hasUnknownSizeValue) {\n length = null\n }\n\n // Set source to object.\n source = object\n\n action = async function * () {\n for (const part of blobParts) {\n if (part.stream) {\n yield * part.stream()\n } else {\n yield part\n }\n }\n }\n\n // Set type to `multipart/form-data; boundary=`,\n // followed by the multipart/form-data boundary string generated\n // by the multipart/form-data encoding algorithm.\n type = 'multipart/form-data; boundary=' + boundary\n } else if (isBlobLike(object)) {\n // Blob\n\n // Set source to object.\n source = object\n\n // Set length to object’s size.\n length = object.size\n\n // If object’s type attribute is not the empty byte sequence, set\n // type to its value.\n if (object.type) {\n type = object.type\n }\n } else if (typeof object[Symbol.asyncIterator] === 'function') {\n // If keepalive is true, then throw a TypeError.\n if (keepalive) {\n throw new TypeError('keepalive')\n }\n\n // If object is disturbed or locked, then throw a TypeError.\n if (util.isDisturbed(object) || object.locked) {\n throw new TypeError(\n 'Response body object should not be disturbed or locked'\n )\n }\n\n stream =\n object instanceof ReadableStream ? object : ReadableStreamFrom(object)\n }\n\n // 11. If source is a byte sequence, then set action to a\n // step that returns source and length to source’s length.\n if (typeof source === 'string' || util.isBuffer(source)) {\n length = Buffer.byteLength(source)\n }\n\n // 12. If action is non-null, then run these steps in in parallel:\n if (action != null) {\n // Run action.\n let iterator\n stream = new ReadableStream({\n async start () {\n iterator = action(object)[Symbol.asyncIterator]()\n },\n async pull (controller) {\n const { value, done } = await iterator.next()\n if (done) {\n // When running action is done, close stream.\n queueMicrotask(() => {\n controller.close()\n })\n } else {\n // Whenever one or more bytes are available and stream is not errored,\n // enqueue a Uint8Array wrapping an ArrayBuffer containing the available\n // bytes into stream.\n if (!isErrored(stream)) {\n controller.enqueue(new Uint8Array(value))\n }\n }\n return controller.desiredSize > 0\n },\n async cancel (reason) {\n await iterator.return()\n },\n type: undefined\n })\n }\n\n // 13. Let body be a body whose stream is stream, source is source,\n // and length is length.\n const body = { stream, source, length }\n\n // 14. Return (body, type).\n return [body, type]\n}\n\n// https://fetch.spec.whatwg.org/#bodyinit-safely-extract\nfunction safelyExtractBody (object, keepalive = false) {\n if (!ReadableStream) {\n // istanbul ignore next\n ReadableStream = require('stream/web').ReadableStream\n }\n\n // To safely extract a body and a `Content-Type` value from\n // a byte sequence or BodyInit object object, run these steps:\n\n // 1. If object is a ReadableStream object, then:\n if (object instanceof ReadableStream) {\n // Assert: object is neither disturbed nor locked.\n // istanbul ignore next\n assert(!util.isDisturbed(object), 'The body has already been consumed.')\n // istanbul ignore next\n assert(!object.locked, 'The stream is locked.')\n }\n\n // 2. Return the results of extracting object.\n return extractBody(object, keepalive)\n}\n\nfunction cloneBody (body) {\n // To clone a body body, run these steps:\n\n // https://fetch.spec.whatwg.org/#concept-body-clone\n\n // 1. Let « out1, out2 » be the result of teeing body’s stream.\n const [out1, out2] = body.stream.tee()\n const out2Clone = structuredClone(out2, { transfer: [out2] })\n // This, for whatever reasons, unrefs out2Clone which allows\n // the process to exit by itself.\n const [, finalClone] = out2Clone.tee()\n\n // 2. Set body’s stream to out1.\n body.stream = out1\n\n // 3. Return a body whose stream is out2 and other members are copied from body.\n return {\n stream: finalClone,\n length: body.length,\n source: body.source\n }\n}\n\nasync function * consumeBody (body) {\n if (body) {\n if (isUint8Array(body)) {\n yield body\n } else {\n const stream = body.stream\n\n if (util.isDisturbed(stream)) {\n throw new TypeError('The body has already been consumed.')\n }\n\n if (stream.locked) {\n throw new TypeError('The stream is locked.')\n }\n\n // Compat.\n stream[kBodyUsed] = true\n\n yield * stream\n }\n }\n}\n\nfunction throwIfAborted (state) {\n if (state.aborted) {\n throw new DOMException('The operation was aborted.', 'AbortError')\n }\n}\n\nfunction bodyMixinMethods (instance) {\n const methods = {\n blob () {\n // The blob() method steps are to return the result of\n // running consume body with this and the following step\n // given a byte sequence bytes: return a Blob whose\n // contents are bytes and whose type attribute is this’s\n // MIME type.\n return specConsumeBody(this, (bytes) => {\n let mimeType = bodyMimeType(this)\n\n if (mimeType === 'failure') {\n mimeType = ''\n } else if (mimeType) {\n mimeType = serializeAMimeType(mimeType)\n }\n\n // Return a Blob whose contents are bytes and type attribute\n // is mimeType.\n return new Blob([bytes], { type: mimeType })\n }, instance)\n },\n\n arrayBuffer () {\n // The arrayBuffer() method steps are to return the result\n // of running consume body with this and the following step\n // given a byte sequence bytes: return a new ArrayBuffer\n // whose contents are bytes.\n return specConsumeBody(this, (bytes) => {\n return new Uint8Array(bytes).buffer\n }, instance)\n },\n\n text () {\n // The text() method steps are to return the result of running\n // consume body with this and UTF-8 decode.\n return specConsumeBody(this, utf8DecodeBytes, instance)\n },\n\n json () {\n // The json() method steps are to return the result of running\n // consume body with this and parse JSON from bytes.\n return specConsumeBody(this, parseJSONFromBytes, instance)\n },\n\n async formData () {\n webidl.brandCheck(this, instance)\n\n throwIfAborted(this[kState])\n\n const contentType = this.headers.get('Content-Type')\n\n // If mimeType’s essence is \"multipart/form-data\", then:\n if (/multipart\\/form-data/.test(contentType)) {\n const headers = {}\n for (const [key, value] of this.headers) headers[key.toLowerCase()] = value\n\n const responseFormData = new FormData()\n\n let busboy\n\n try {\n busboy = new Busboy({\n headers,\n preservePath: true\n })\n } catch (err) {\n throw new DOMException(`${err}`, 'AbortError')\n }\n\n busboy.on('field', (name, value) => {\n responseFormData.append(name, value)\n })\n busboy.on('file', (name, value, filename, encoding, mimeType) => {\n const chunks = []\n\n if (encoding === 'base64' || encoding.toLowerCase() === 'base64') {\n let base64chunk = ''\n\n value.on('data', (chunk) => {\n base64chunk += chunk.toString().replace(/[\\r\\n]/gm, '')\n\n const end = base64chunk.length - base64chunk.length % 4\n chunks.push(Buffer.from(base64chunk.slice(0, end), 'base64'))\n\n base64chunk = base64chunk.slice(end)\n })\n value.on('end', () => {\n chunks.push(Buffer.from(base64chunk, 'base64'))\n responseFormData.append(name, new File(chunks, filename, { type: mimeType }))\n })\n } else {\n value.on('data', (chunk) => {\n chunks.push(chunk)\n })\n value.on('end', () => {\n responseFormData.append(name, new File(chunks, filename, { type: mimeType }))\n })\n }\n })\n\n const busboyResolve = new Promise((resolve, reject) => {\n busboy.on('finish', resolve)\n busboy.on('error', (err) => reject(new TypeError(err)))\n })\n\n if (this.body !== null) for await (const chunk of consumeBody(this[kState].body)) busboy.write(chunk)\n busboy.end()\n await busboyResolve\n\n return responseFormData\n } else if (/application\\/x-www-form-urlencoded/.test(contentType)) {\n // Otherwise, if mimeType’s essence is \"application/x-www-form-urlencoded\", then:\n\n // 1. Let entries be the result of parsing bytes.\n let entries\n try {\n let text = ''\n // application/x-www-form-urlencoded parser will keep the BOM.\n // https://url.spec.whatwg.org/#concept-urlencoded-parser\n // Note that streaming decoder is stateful and cannot be reused\n const streamingDecoder = new TextDecoder('utf-8', { ignoreBOM: true })\n\n for await (const chunk of consumeBody(this[kState].body)) {\n if (!isUint8Array(chunk)) {\n throw new TypeError('Expected Uint8Array chunk')\n }\n text += streamingDecoder.decode(chunk, { stream: true })\n }\n text += streamingDecoder.decode()\n entries = new URLSearchParams(text)\n } catch (err) {\n // istanbul ignore next: Unclear when new URLSearchParams can fail on a string.\n // 2. If entries is failure, then throw a TypeError.\n throw Object.assign(new TypeError(), { cause: err })\n }\n\n // 3. Return a new FormData object whose entries are entries.\n const formData = new FormData()\n for (const [name, value] of entries) {\n formData.append(name, value)\n }\n return formData\n } else {\n // Wait a tick before checking if the request has been aborted.\n // Otherwise, a TypeError can be thrown when an AbortError should.\n await Promise.resolve()\n\n throwIfAborted(this[kState])\n\n // Otherwise, throw a TypeError.\n throw webidl.errors.exception({\n header: `${instance.name}.formData`,\n message: 'Could not parse content as FormData.'\n })\n }\n }\n }\n\n return methods\n}\n\nfunction mixinBody (prototype) {\n Object.assign(prototype.prototype, bodyMixinMethods(prototype))\n}\n\n/**\n * @see https://fetch.spec.whatwg.org/#concept-body-consume-body\n * @param {Response|Request} object\n * @param {(value: unknown) => unknown} convertBytesToJSValue\n * @param {Response|Request} instance\n */\nasync function specConsumeBody (object, convertBytesToJSValue, instance) {\n webidl.brandCheck(object, instance)\n\n throwIfAborted(object[kState])\n\n // 1. If object is unusable, then return a promise rejected\n // with a TypeError.\n if (bodyUnusable(object[kState].body)) {\n throw new TypeError('Body is unusable')\n }\n\n // 2. Let promise be a new promise.\n const promise = createDeferredPromise()\n\n // 3. Let errorSteps given error be to reject promise with error.\n const errorSteps = (error) => promise.reject(error)\n\n // 4. Let successSteps given a byte sequence data be to resolve\n // promise with the result of running convertBytesToJSValue\n // with data. If that threw an exception, then run errorSteps\n // with that exception.\n const successSteps = (data) => {\n try {\n promise.resolve(convertBytesToJSValue(data))\n } catch (e) {\n errorSteps(e)\n }\n }\n\n // 5. If object’s body is null, then run successSteps with an\n // empty byte sequence.\n if (object[kState].body == null) {\n successSteps(new Uint8Array())\n return promise.promise\n }\n\n // 6. Otherwise, fully read object’s body given successSteps,\n // errorSteps, and object’s relevant global object.\n await fullyReadBody(object[kState].body, successSteps, errorSteps)\n\n // 7. Return promise.\n return promise.promise\n}\n\n// https://fetch.spec.whatwg.org/#body-unusable\nfunction bodyUnusable (body) {\n // An object including the Body interface mixin is\n // said to be unusable if its body is non-null and\n // its body’s stream is disturbed or locked.\n return body != null && (body.stream.locked || util.isDisturbed(body.stream))\n}\n\n/**\n * @see https://encoding.spec.whatwg.org/#utf-8-decode\n * @param {Buffer} buffer\n */\nfunction utf8DecodeBytes (buffer) {\n if (buffer.length === 0) {\n return ''\n }\n\n // 1. Let buffer be the result of peeking three bytes from\n // ioQueue, converted to a byte sequence.\n\n // 2. If buffer is 0xEF 0xBB 0xBF, then read three\n // bytes from ioQueue. (Do nothing with those bytes.)\n if (buffer[0] === 0xEF && buffer[1] === 0xBB && buffer[2] === 0xBF) {\n buffer = buffer.subarray(3)\n }\n\n // 3. Process a queue with an instance of UTF-8’s\n // decoder, ioQueue, output, and \"replacement\".\n const output = textDecoder.decode(buffer)\n\n // 4. Return output.\n return output\n}\n\n/**\n * @see https://infra.spec.whatwg.org/#parse-json-bytes-to-a-javascript-value\n * @param {Uint8Array} bytes\n */\nfunction parseJSONFromBytes (bytes) {\n return JSON.parse(utf8DecodeBytes(bytes))\n}\n\n/**\n * @see https://fetch.spec.whatwg.org/#concept-body-mime-type\n * @param {import('./response').Response|import('./request').Request} object\n */\nfunction bodyMimeType (object) {\n const { headersList } = object[kState]\n const contentType = headersList.get('content-type')\n\n if (contentType === null) {\n return 'failure'\n }\n\n return parseMIMEType(contentType)\n}\n\nmodule.exports = {\n extractBody,\n safelyExtractBody,\n cloneBody,\n mixinBody\n}\n","'use strict'\n\nconst { MessageChannel, receiveMessageOnPort } = require('worker_threads')\n\nconst corsSafeListedMethods = ['GET', 'HEAD', 'POST']\nconst corsSafeListedMethodsSet = new Set(corsSafeListedMethods)\n\nconst nullBodyStatus = [101, 204, 205, 304]\n\nconst redirectStatus = [301, 302, 303, 307, 308]\nconst redirectStatusSet = new Set(redirectStatus)\n\n// https://fetch.spec.whatwg.org/#block-bad-port\nconst badPorts = [\n '1', '7', '9', '11', '13', '15', '17', '19', '20', '21', '22', '23', '25', '37', '42', '43', '53', '69', '77', '79',\n '87', '95', '101', '102', '103', '104', '109', '110', '111', '113', '115', '117', '119', '123', '135', '137',\n '139', '143', '161', '179', '389', '427', '465', '512', '513', '514', '515', '526', '530', '531', '532',\n '540', '548', '554', '556', '563', '587', '601', '636', '989', '990', '993', '995', '1719', '1720', '1723',\n '2049', '3659', '4045', '5060', '5061', '6000', '6566', '6665', '6666', '6667', '6668', '6669', '6697',\n '10080'\n]\n\nconst badPortsSet = new Set(badPorts)\n\n// https://w3c.github.io/webappsec-referrer-policy/#referrer-policies\nconst referrerPolicy = [\n '',\n 'no-referrer',\n 'no-referrer-when-downgrade',\n 'same-origin',\n 'origin',\n 'strict-origin',\n 'origin-when-cross-origin',\n 'strict-origin-when-cross-origin',\n 'unsafe-url'\n]\nconst referrerPolicySet = new Set(referrerPolicy)\n\nconst requestRedirect = ['follow', 'manual', 'error']\n\nconst safeMethods = ['GET', 'HEAD', 'OPTIONS', 'TRACE']\nconst safeMethodsSet = new Set(safeMethods)\n\nconst requestMode = ['navigate', 'same-origin', 'no-cors', 'cors']\n\nconst requestCredentials = ['omit', 'same-origin', 'include']\n\nconst requestCache = [\n 'default',\n 'no-store',\n 'reload',\n 'no-cache',\n 'force-cache',\n 'only-if-cached'\n]\n\n// https://fetch.spec.whatwg.org/#request-body-header-name\nconst requestBodyHeader = [\n 'content-encoding',\n 'content-language',\n 'content-location',\n 'content-type',\n // See https://github.com/nodejs/undici/issues/2021\n // 'Content-Length' is a forbidden header name, which is typically\n // removed in the Headers implementation. However, undici doesn't\n // filter out headers, so we add it here.\n 'content-length'\n]\n\n// https://fetch.spec.whatwg.org/#enumdef-requestduplex\nconst requestDuplex = [\n 'half'\n]\n\n// http://fetch.spec.whatwg.org/#forbidden-method\nconst forbiddenMethods = ['CONNECT', 'TRACE', 'TRACK']\nconst forbiddenMethodsSet = new Set(forbiddenMethods)\n\nconst subresource = [\n 'audio',\n 'audioworklet',\n 'font',\n 'image',\n 'manifest',\n 'paintworklet',\n 'script',\n 'style',\n 'track',\n 'video',\n 'xslt',\n ''\n]\nconst subresourceSet = new Set(subresource)\n\n/** @type {globalThis['DOMException']} */\nconst DOMException = globalThis.DOMException ?? (() => {\n // DOMException was only made a global in Node v17.0.0,\n // but fetch supports >= v16.8.\n try {\n atob('~')\n } catch (err) {\n return Object.getPrototypeOf(err).constructor\n }\n})()\n\nlet channel\n\n/** @type {globalThis['structuredClone']} */\nconst structuredClone =\n globalThis.structuredClone ??\n // https://github.com/nodejs/node/blob/b27ae24dcc4251bad726d9d84baf678d1f707fed/lib/internal/structured_clone.js\n // structuredClone was added in v17.0.0, but fetch supports v16.8\n function structuredClone (value, options = undefined) {\n if (arguments.length === 0) {\n throw new TypeError('missing argument')\n }\n\n if (!channel) {\n channel = new MessageChannel()\n }\n channel.port1.unref()\n channel.port2.unref()\n channel.port1.postMessage(value, options?.transfer)\n return receiveMessageOnPort(channel.port2).message\n }\n\nmodule.exports = {\n DOMException,\n structuredClone,\n subresource,\n forbiddenMethods,\n requestBodyHeader,\n referrerPolicy,\n requestRedirect,\n requestMode,\n requestCredentials,\n requestCache,\n redirectStatus,\n corsSafeListedMethods,\n nullBodyStatus,\n safeMethods,\n badPorts,\n requestDuplex,\n subresourceSet,\n badPortsSet,\n redirectStatusSet,\n corsSafeListedMethodsSet,\n safeMethodsSet,\n forbiddenMethodsSet,\n referrerPolicySet\n}\n","const assert = require('assert')\nconst { atob } = require('buffer')\nconst { isomorphicDecode } = require('./util')\n\nconst encoder = new TextEncoder()\n\n/**\n * @see https://mimesniff.spec.whatwg.org/#http-token-code-point\n */\nconst HTTP_TOKEN_CODEPOINTS = /^[!#$%&'*+-.^_|~A-Za-z0-9]+$/\nconst HTTP_WHITESPACE_REGEX = /(\\u000A|\\u000D|\\u0009|\\u0020)/ // eslint-disable-line\n/**\n * @see https://mimesniff.spec.whatwg.org/#http-quoted-string-token-code-point\n */\nconst HTTP_QUOTED_STRING_TOKENS = /[\\u0009|\\u0020-\\u007E|\\u0080-\\u00FF]/ // eslint-disable-line\n\n// https://fetch.spec.whatwg.org/#data-url-processor\n/** @param {URL} dataURL */\nfunction dataURLProcessor (dataURL) {\n // 1. Assert: dataURL’s scheme is \"data\".\n assert(dataURL.protocol === 'data:')\n\n // 2. Let input be the result of running the URL\n // serializer on dataURL with exclude fragment\n // set to true.\n let input = URLSerializer(dataURL, true)\n\n // 3. Remove the leading \"data:\" string from input.\n input = input.slice(5)\n\n // 4. Let position point at the start of input.\n const position = { position: 0 }\n\n // 5. Let mimeType be the result of collecting a\n // sequence of code points that are not equal\n // to U+002C (,), given position.\n let mimeType = collectASequenceOfCodePointsFast(\n ',',\n input,\n position\n )\n\n // 6. Strip leading and trailing ASCII whitespace\n // from mimeType.\n // Undici implementation note: we need to store the\n // length because if the mimetype has spaces removed,\n // the wrong amount will be sliced from the input in\n // step #9\n const mimeTypeLength = mimeType.length\n mimeType = removeASCIIWhitespace(mimeType, true, true)\n\n // 7. If position is past the end of input, then\n // return failure\n if (position.position >= input.length) {\n return 'failure'\n }\n\n // 8. Advance position by 1.\n position.position++\n\n // 9. Let encodedBody be the remainder of input.\n const encodedBody = input.slice(mimeTypeLength + 1)\n\n // 10. Let body be the percent-decoding of encodedBody.\n let body = stringPercentDecode(encodedBody)\n\n // 11. If mimeType ends with U+003B (;), followed by\n // zero or more U+0020 SPACE, followed by an ASCII\n // case-insensitive match for \"base64\", then:\n if (/;(\\u0020){0,}base64$/i.test(mimeType)) {\n // 1. Let stringBody be the isomorphic decode of body.\n const stringBody = isomorphicDecode(body)\n\n // 2. Set body to the forgiving-base64 decode of\n // stringBody.\n body = forgivingBase64(stringBody)\n\n // 3. If body is failure, then return failure.\n if (body === 'failure') {\n return 'failure'\n }\n\n // 4. Remove the last 6 code points from mimeType.\n mimeType = mimeType.slice(0, -6)\n\n // 5. Remove trailing U+0020 SPACE code points from mimeType,\n // if any.\n mimeType = mimeType.replace(/(\\u0020)+$/, '')\n\n // 6. Remove the last U+003B (;) code point from mimeType.\n mimeType = mimeType.slice(0, -1)\n }\n\n // 12. If mimeType starts with U+003B (;), then prepend\n // \"text/plain\" to mimeType.\n if (mimeType.startsWith(';')) {\n mimeType = 'text/plain' + mimeType\n }\n\n // 13. Let mimeTypeRecord be the result of parsing\n // mimeType.\n let mimeTypeRecord = parseMIMEType(mimeType)\n\n // 14. If mimeTypeRecord is failure, then set\n // mimeTypeRecord to text/plain;charset=US-ASCII.\n if (mimeTypeRecord === 'failure') {\n mimeTypeRecord = parseMIMEType('text/plain;charset=US-ASCII')\n }\n\n // 15. Return a new data: URL struct whose MIME\n // type is mimeTypeRecord and body is body.\n // https://fetch.spec.whatwg.org/#data-url-struct\n return { mimeType: mimeTypeRecord, body }\n}\n\n// https://url.spec.whatwg.org/#concept-url-serializer\n/**\n * @param {URL} url\n * @param {boolean} excludeFragment\n */\nfunction URLSerializer (url, excludeFragment = false) {\n if (!excludeFragment) {\n return url.href\n }\n\n const href = url.href\n const hashLength = url.hash.length\n\n return hashLength === 0 ? href : href.substring(0, href.length - hashLength)\n}\n\n// https://infra.spec.whatwg.org/#collect-a-sequence-of-code-points\n/**\n * @param {(char: string) => boolean} condition\n * @param {string} input\n * @param {{ position: number }} position\n */\nfunction collectASequenceOfCodePoints (condition, input, position) {\n // 1. Let result be the empty string.\n let result = ''\n\n // 2. While position doesn’t point past the end of input and the\n // code point at position within input meets the condition condition:\n while (position.position < input.length && condition(input[position.position])) {\n // 1. Append that code point to the end of result.\n result += input[position.position]\n\n // 2. Advance position by 1.\n position.position++\n }\n\n // 3. Return result.\n return result\n}\n\n/**\n * A faster collectASequenceOfCodePoints that only works when comparing a single character.\n * @param {string} char\n * @param {string} input\n * @param {{ position: number }} position\n */\nfunction collectASequenceOfCodePointsFast (char, input, position) {\n const idx = input.indexOf(char, position.position)\n const start = position.position\n\n if (idx === -1) {\n position.position = input.length\n return input.slice(start)\n }\n\n position.position = idx\n return input.slice(start, position.position)\n}\n\n// https://url.spec.whatwg.org/#string-percent-decode\n/** @param {string} input */\nfunction stringPercentDecode (input) {\n // 1. Let bytes be the UTF-8 encoding of input.\n const bytes = encoder.encode(input)\n\n // 2. Return the percent-decoding of bytes.\n return percentDecode(bytes)\n}\n\n// https://url.spec.whatwg.org/#percent-decode\n/** @param {Uint8Array} input */\nfunction percentDecode (input) {\n // 1. Let output be an empty byte sequence.\n /** @type {number[]} */\n const output = []\n\n // 2. For each byte byte in input:\n for (let i = 0; i < input.length; i++) {\n const byte = input[i]\n\n // 1. If byte is not 0x25 (%), then append byte to output.\n if (byte !== 0x25) {\n output.push(byte)\n\n // 2. Otherwise, if byte is 0x25 (%) and the next two bytes\n // after byte in input are not in the ranges\n // 0x30 (0) to 0x39 (9), 0x41 (A) to 0x46 (F),\n // and 0x61 (a) to 0x66 (f), all inclusive, append byte\n // to output.\n } else if (\n byte === 0x25 &&\n !/^[0-9A-Fa-f]{2}$/i.test(String.fromCharCode(input[i + 1], input[i + 2]))\n ) {\n output.push(0x25)\n\n // 3. Otherwise:\n } else {\n // 1. Let bytePoint be the two bytes after byte in input,\n // decoded, and then interpreted as hexadecimal number.\n const nextTwoBytes = String.fromCharCode(input[i + 1], input[i + 2])\n const bytePoint = Number.parseInt(nextTwoBytes, 16)\n\n // 2. Append a byte whose value is bytePoint to output.\n output.push(bytePoint)\n\n // 3. Skip the next two bytes in input.\n i += 2\n }\n }\n\n // 3. Return output.\n return Uint8Array.from(output)\n}\n\n// https://mimesniff.spec.whatwg.org/#parse-a-mime-type\n/** @param {string} input */\nfunction parseMIMEType (input) {\n // 1. Remove any leading and trailing HTTP whitespace\n // from input.\n input = removeHTTPWhitespace(input, true, true)\n\n // 2. Let position be a position variable for input,\n // initially pointing at the start of input.\n const position = { position: 0 }\n\n // 3. Let type be the result of collecting a sequence\n // of code points that are not U+002F (/) from\n // input, given position.\n const type = collectASequenceOfCodePointsFast(\n '/',\n input,\n position\n )\n\n // 4. If type is the empty string or does not solely\n // contain HTTP token code points, then return failure.\n // https://mimesniff.spec.whatwg.org/#http-token-code-point\n if (type.length === 0 || !HTTP_TOKEN_CODEPOINTS.test(type)) {\n return 'failure'\n }\n\n // 5. If position is past the end of input, then return\n // failure\n if (position.position > input.length) {\n return 'failure'\n }\n\n // 6. Advance position by 1. (This skips past U+002F (/).)\n position.position++\n\n // 7. Let subtype be the result of collecting a sequence of\n // code points that are not U+003B (;) from input, given\n // position.\n let subtype = collectASequenceOfCodePointsFast(\n ';',\n input,\n position\n )\n\n // 8. Remove any trailing HTTP whitespace from subtype.\n subtype = removeHTTPWhitespace(subtype, false, true)\n\n // 9. If subtype is the empty string or does not solely\n // contain HTTP token code points, then return failure.\n if (subtype.length === 0 || !HTTP_TOKEN_CODEPOINTS.test(subtype)) {\n return 'failure'\n }\n\n const typeLowercase = type.toLowerCase()\n const subtypeLowercase = subtype.toLowerCase()\n\n // 10. Let mimeType be a new MIME type record whose type\n // is type, in ASCII lowercase, and subtype is subtype,\n // in ASCII lowercase.\n // https://mimesniff.spec.whatwg.org/#mime-type\n const mimeType = {\n type: typeLowercase,\n subtype: subtypeLowercase,\n /** @type {Map} */\n parameters: new Map(),\n // https://mimesniff.spec.whatwg.org/#mime-type-essence\n essence: `${typeLowercase}/${subtypeLowercase}`\n }\n\n // 11. While position is not past the end of input:\n while (position.position < input.length) {\n // 1. Advance position by 1. (This skips past U+003B (;).)\n position.position++\n\n // 2. Collect a sequence of code points that are HTTP\n // whitespace from input given position.\n collectASequenceOfCodePoints(\n // https://fetch.spec.whatwg.org/#http-whitespace\n char => HTTP_WHITESPACE_REGEX.test(char),\n input,\n position\n )\n\n // 3. Let parameterName be the result of collecting a\n // sequence of code points that are not U+003B (;)\n // or U+003D (=) from input, given position.\n let parameterName = collectASequenceOfCodePoints(\n (char) => char !== ';' && char !== '=',\n input,\n position\n )\n\n // 4. Set parameterName to parameterName, in ASCII\n // lowercase.\n parameterName = parameterName.toLowerCase()\n\n // 5. If position is not past the end of input, then:\n if (position.position < input.length) {\n // 1. If the code point at position within input is\n // U+003B (;), then continue.\n if (input[position.position] === ';') {\n continue\n }\n\n // 2. Advance position by 1. (This skips past U+003D (=).)\n position.position++\n }\n\n // 6. If position is past the end of input, then break.\n if (position.position > input.length) {\n break\n }\n\n // 7. Let parameterValue be null.\n let parameterValue = null\n\n // 8. If the code point at position within input is\n // U+0022 (\"), then:\n if (input[position.position] === '\"') {\n // 1. Set parameterValue to the result of collecting\n // an HTTP quoted string from input, given position\n // and the extract-value flag.\n parameterValue = collectAnHTTPQuotedString(input, position, true)\n\n // 2. Collect a sequence of code points that are not\n // U+003B (;) from input, given position.\n collectASequenceOfCodePointsFast(\n ';',\n input,\n position\n )\n\n // 9. Otherwise:\n } else {\n // 1. Set parameterValue to the result of collecting\n // a sequence of code points that are not U+003B (;)\n // from input, given position.\n parameterValue = collectASequenceOfCodePointsFast(\n ';',\n input,\n position\n )\n\n // 2. Remove any trailing HTTP whitespace from parameterValue.\n parameterValue = removeHTTPWhitespace(parameterValue, false, true)\n\n // 3. If parameterValue is the empty string, then continue.\n if (parameterValue.length === 0) {\n continue\n }\n }\n\n // 10. If all of the following are true\n // - parameterName is not the empty string\n // - parameterName solely contains HTTP token code points\n // - parameterValue solely contains HTTP quoted-string token code points\n // - mimeType’s parameters[parameterName] does not exist\n // then set mimeType’s parameters[parameterName] to parameterValue.\n if (\n parameterName.length !== 0 &&\n HTTP_TOKEN_CODEPOINTS.test(parameterName) &&\n (parameterValue.length === 0 || HTTP_QUOTED_STRING_TOKENS.test(parameterValue)) &&\n !mimeType.parameters.has(parameterName)\n ) {\n mimeType.parameters.set(parameterName, parameterValue)\n }\n }\n\n // 12. Return mimeType.\n return mimeType\n}\n\n// https://infra.spec.whatwg.org/#forgiving-base64-decode\n/** @param {string} data */\nfunction forgivingBase64 (data) {\n // 1. Remove all ASCII whitespace from data.\n data = data.replace(/[\\u0009\\u000A\\u000C\\u000D\\u0020]/g, '') // eslint-disable-line\n\n // 2. If data’s code point length divides by 4 leaving\n // no remainder, then:\n if (data.length % 4 === 0) {\n // 1. If data ends with one or two U+003D (=) code points,\n // then remove them from data.\n data = data.replace(/=?=$/, '')\n }\n\n // 3. If data’s code point length divides by 4 leaving\n // a remainder of 1, then return failure.\n if (data.length % 4 === 1) {\n return 'failure'\n }\n\n // 4. If data contains a code point that is not one of\n // U+002B (+)\n // U+002F (/)\n // ASCII alphanumeric\n // then return failure.\n if (/[^+/0-9A-Za-z]/.test(data)) {\n return 'failure'\n }\n\n const binary = atob(data)\n const bytes = new Uint8Array(binary.length)\n\n for (let byte = 0; byte < binary.length; byte++) {\n bytes[byte] = binary.charCodeAt(byte)\n }\n\n return bytes\n}\n\n// https://fetch.spec.whatwg.org/#collect-an-http-quoted-string\n// tests: https://fetch.spec.whatwg.org/#example-http-quoted-string\n/**\n * @param {string} input\n * @param {{ position: number }} position\n * @param {boolean?} extractValue\n */\nfunction collectAnHTTPQuotedString (input, position, extractValue) {\n // 1. Let positionStart be position.\n const positionStart = position.position\n\n // 2. Let value be the empty string.\n let value = ''\n\n // 3. Assert: the code point at position within input\n // is U+0022 (\").\n assert(input[position.position] === '\"')\n\n // 4. Advance position by 1.\n position.position++\n\n // 5. While true:\n while (true) {\n // 1. Append the result of collecting a sequence of code points\n // that are not U+0022 (\") or U+005C (\\) from input, given\n // position, to value.\n value += collectASequenceOfCodePoints(\n (char) => char !== '\"' && char !== '\\\\',\n input,\n position\n )\n\n // 2. If position is past the end of input, then break.\n if (position.position >= input.length) {\n break\n }\n\n // 3. Let quoteOrBackslash be the code point at position within\n // input.\n const quoteOrBackslash = input[position.position]\n\n // 4. Advance position by 1.\n position.position++\n\n // 5. If quoteOrBackslash is U+005C (\\), then:\n if (quoteOrBackslash === '\\\\') {\n // 1. If position is past the end of input, then append\n // U+005C (\\) to value and break.\n if (position.position >= input.length) {\n value += '\\\\'\n break\n }\n\n // 2. Append the code point at position within input to value.\n value += input[position.position]\n\n // 3. Advance position by 1.\n position.position++\n\n // 6. Otherwise:\n } else {\n // 1. Assert: quoteOrBackslash is U+0022 (\").\n assert(quoteOrBackslash === '\"')\n\n // 2. Break.\n break\n }\n }\n\n // 6. If the extract-value flag is set, then return value.\n if (extractValue) {\n return value\n }\n\n // 7. Return the code points from positionStart to position,\n // inclusive, within input.\n return input.slice(positionStart, position.position)\n}\n\n/**\n * @see https://mimesniff.spec.whatwg.org/#serialize-a-mime-type\n */\nfunction serializeAMimeType (mimeType) {\n assert(mimeType !== 'failure')\n const { parameters, essence } = mimeType\n\n // 1. Let serialization be the concatenation of mimeType’s\n // type, U+002F (/), and mimeType’s subtype.\n let serialization = essence\n\n // 2. For each name → value of mimeType’s parameters:\n for (let [name, value] of parameters.entries()) {\n // 1. Append U+003B (;) to serialization.\n serialization += ';'\n\n // 2. Append name to serialization.\n serialization += name\n\n // 3. Append U+003D (=) to serialization.\n serialization += '='\n\n // 4. If value does not solely contain HTTP token code\n // points or value is the empty string, then:\n if (!HTTP_TOKEN_CODEPOINTS.test(value)) {\n // 1. Precede each occurence of U+0022 (\") or\n // U+005C (\\) in value with U+005C (\\).\n value = value.replace(/(\\\\|\")/g, '\\\\$1')\n\n // 2. Prepend U+0022 (\") to value.\n value = '\"' + value\n\n // 3. Append U+0022 (\") to value.\n value += '\"'\n }\n\n // 5. Append value to serialization.\n serialization += value\n }\n\n // 3. Return serialization.\n return serialization\n}\n\n/**\n * @see https://fetch.spec.whatwg.org/#http-whitespace\n * @param {string} char\n */\nfunction isHTTPWhiteSpace (char) {\n return char === '\\r' || char === '\\n' || char === '\\t' || char === ' '\n}\n\n/**\n * @see https://fetch.spec.whatwg.org/#http-whitespace\n * @param {string} str\n */\nfunction removeHTTPWhitespace (str, leading = true, trailing = true) {\n let lead = 0\n let trail = str.length - 1\n\n if (leading) {\n for (; lead < str.length && isHTTPWhiteSpace(str[lead]); lead++);\n }\n\n if (trailing) {\n for (; trail > 0 && isHTTPWhiteSpace(str[trail]); trail--);\n }\n\n return str.slice(lead, trail + 1)\n}\n\n/**\n * @see https://infra.spec.whatwg.org/#ascii-whitespace\n * @param {string} char\n */\nfunction isASCIIWhitespace (char) {\n return char === '\\r' || char === '\\n' || char === '\\t' || char === '\\f' || char === ' '\n}\n\n/**\n * @see https://infra.spec.whatwg.org/#strip-leading-and-trailing-ascii-whitespace\n */\nfunction removeASCIIWhitespace (str, leading = true, trailing = true) {\n let lead = 0\n let trail = str.length - 1\n\n if (leading) {\n for (; lead < str.length && isASCIIWhitespace(str[lead]); lead++);\n }\n\n if (trailing) {\n for (; trail > 0 && isASCIIWhitespace(str[trail]); trail--);\n }\n\n return str.slice(lead, trail + 1)\n}\n\nmodule.exports = {\n dataURLProcessor,\n URLSerializer,\n collectASequenceOfCodePoints,\n collectASequenceOfCodePointsFast,\n stringPercentDecode,\n parseMIMEType,\n collectAnHTTPQuotedString,\n serializeAMimeType\n}\n","'use strict'\n\nconst { Blob, File: NativeFile } = require('buffer')\nconst { types } = require('util')\nconst { kState } = require('./symbols')\nconst { isBlobLike } = require('./util')\nconst { webidl } = require('./webidl')\nconst { parseMIMEType, serializeAMimeType } = require('./dataURL')\nconst { kEnumerableProperty } = require('../core/util')\nconst encoder = new TextEncoder()\n\nclass File extends Blob {\n constructor (fileBits, fileName, options = {}) {\n // The File constructor is invoked with two or three parameters, depending\n // on whether the optional dictionary parameter is used. When the File()\n // constructor is invoked, user agents must run the following steps:\n webidl.argumentLengthCheck(arguments, 2, { header: 'File constructor' })\n\n fileBits = webidl.converters['sequence'](fileBits)\n fileName = webidl.converters.USVString(fileName)\n options = webidl.converters.FilePropertyBag(options)\n\n // 1. Let bytes be the result of processing blob parts given fileBits and\n // options.\n // Note: Blob handles this for us\n\n // 2. Let n be the fileName argument to the constructor.\n const n = fileName\n\n // 3. Process FilePropertyBag dictionary argument by running the following\n // substeps:\n\n // 1. If the type member is provided and is not the empty string, let t\n // be set to the type dictionary member. If t contains any characters\n // outside the range U+0020 to U+007E, then set t to the empty string\n // and return from these substeps.\n // 2. Convert every character in t to ASCII lowercase.\n let t = options.type\n let d\n\n // eslint-disable-next-line no-labels\n substep: {\n if (t) {\n t = parseMIMEType(t)\n\n if (t === 'failure') {\n t = ''\n // eslint-disable-next-line no-labels\n break substep\n }\n\n t = serializeAMimeType(t).toLowerCase()\n }\n\n // 3. If the lastModified member is provided, let d be set to the\n // lastModified dictionary member. If it is not provided, set d to the\n // current date and time represented as the number of milliseconds since\n // the Unix Epoch (which is the equivalent of Date.now() [ECMA-262]).\n d = options.lastModified\n }\n\n // 4. Return a new File object F such that:\n // F refers to the bytes byte sequence.\n // F.size is set to the number of total bytes in bytes.\n // F.name is set to n.\n // F.type is set to t.\n // F.lastModified is set to d.\n\n super(processBlobParts(fileBits, options), { type: t })\n this[kState] = {\n name: n,\n lastModified: d,\n type: t\n }\n }\n\n get name () {\n webidl.brandCheck(this, File)\n\n return this[kState].name\n }\n\n get lastModified () {\n webidl.brandCheck(this, File)\n\n return this[kState].lastModified\n }\n\n get type () {\n webidl.brandCheck(this, File)\n\n return this[kState].type\n }\n}\n\nclass FileLike {\n constructor (blobLike, fileName, options = {}) {\n // TODO: argument idl type check\n\n // The File constructor is invoked with two or three parameters, depending\n // on whether the optional dictionary parameter is used. When the File()\n // constructor is invoked, user agents must run the following steps:\n\n // 1. Let bytes be the result of processing blob parts given fileBits and\n // options.\n\n // 2. Let n be the fileName argument to the constructor.\n const n = fileName\n\n // 3. Process FilePropertyBag dictionary argument by running the following\n // substeps:\n\n // 1. If the type member is provided and is not the empty string, let t\n // be set to the type dictionary member. If t contains any characters\n // outside the range U+0020 to U+007E, then set t to the empty string\n // and return from these substeps.\n // TODO\n const t = options.type\n\n // 2. Convert every character in t to ASCII lowercase.\n // TODO\n\n // 3. If the lastModified member is provided, let d be set to the\n // lastModified dictionary member. If it is not provided, set d to the\n // current date and time represented as the number of milliseconds since\n // the Unix Epoch (which is the equivalent of Date.now() [ECMA-262]).\n const d = options.lastModified ?? Date.now()\n\n // 4. Return a new File object F such that:\n // F refers to the bytes byte sequence.\n // F.size is set to the number of total bytes in bytes.\n // F.name is set to n.\n // F.type is set to t.\n // F.lastModified is set to d.\n\n this[kState] = {\n blobLike,\n name: n,\n type: t,\n lastModified: d\n }\n }\n\n stream (...args) {\n webidl.brandCheck(this, FileLike)\n\n return this[kState].blobLike.stream(...args)\n }\n\n arrayBuffer (...args) {\n webidl.brandCheck(this, FileLike)\n\n return this[kState].blobLike.arrayBuffer(...args)\n }\n\n slice (...args) {\n webidl.brandCheck(this, FileLike)\n\n return this[kState].blobLike.slice(...args)\n }\n\n text (...args) {\n webidl.brandCheck(this, FileLike)\n\n return this[kState].blobLike.text(...args)\n }\n\n get size () {\n webidl.brandCheck(this, FileLike)\n\n return this[kState].blobLike.size\n }\n\n get type () {\n webidl.brandCheck(this, FileLike)\n\n return this[kState].blobLike.type\n }\n\n get name () {\n webidl.brandCheck(this, FileLike)\n\n return this[kState].name\n }\n\n get lastModified () {\n webidl.brandCheck(this, FileLike)\n\n return this[kState].lastModified\n }\n\n get [Symbol.toStringTag] () {\n return 'File'\n }\n}\n\nObject.defineProperties(File.prototype, {\n [Symbol.toStringTag]: {\n value: 'File',\n configurable: true\n },\n name: kEnumerableProperty,\n lastModified: kEnumerableProperty\n})\n\nwebidl.converters.Blob = webidl.interfaceConverter(Blob)\n\nwebidl.converters.BlobPart = function (V, opts) {\n if (webidl.util.Type(V) === 'Object') {\n if (isBlobLike(V)) {\n return webidl.converters.Blob(V, { strict: false })\n }\n\n if (\n ArrayBuffer.isView(V) ||\n types.isAnyArrayBuffer(V)\n ) {\n return webidl.converters.BufferSource(V, opts)\n }\n }\n\n return webidl.converters.USVString(V, opts)\n}\n\nwebidl.converters['sequence'] = webidl.sequenceConverter(\n webidl.converters.BlobPart\n)\n\n// https://www.w3.org/TR/FileAPI/#dfn-FilePropertyBag\nwebidl.converters.FilePropertyBag = webidl.dictionaryConverter([\n {\n key: 'lastModified',\n converter: webidl.converters['long long'],\n get defaultValue () {\n return Date.now()\n }\n },\n {\n key: 'type',\n converter: webidl.converters.DOMString,\n defaultValue: ''\n },\n {\n key: 'endings',\n converter: (value) => {\n value = webidl.converters.DOMString(value)\n value = value.toLowerCase()\n\n if (value !== 'native') {\n value = 'transparent'\n }\n\n return value\n },\n defaultValue: 'transparent'\n }\n])\n\n/**\n * @see https://www.w3.org/TR/FileAPI/#process-blob-parts\n * @param {(NodeJS.TypedArray|Blob|string)[]} parts\n * @param {{ type: string, endings: string }} options\n */\nfunction processBlobParts (parts, options) {\n // 1. Let bytes be an empty sequence of bytes.\n /** @type {NodeJS.TypedArray[]} */\n const bytes = []\n\n // 2. For each element in parts:\n for (const element of parts) {\n // 1. If element is a USVString, run the following substeps:\n if (typeof element === 'string') {\n // 1. Let s be element.\n let s = element\n\n // 2. If the endings member of options is \"native\", set s\n // to the result of converting line endings to native\n // of element.\n if (options.endings === 'native') {\n s = convertLineEndingsNative(s)\n }\n\n // 3. Append the result of UTF-8 encoding s to bytes.\n bytes.push(encoder.encode(s))\n } else if (\n types.isAnyArrayBuffer(element) ||\n types.isTypedArray(element)\n ) {\n // 2. If element is a BufferSource, get a copy of the\n // bytes held by the buffer source, and append those\n // bytes to bytes.\n if (!element.buffer) { // ArrayBuffer\n bytes.push(new Uint8Array(element))\n } else {\n bytes.push(\n new Uint8Array(element.buffer, element.byteOffset, element.byteLength)\n )\n }\n } else if (isBlobLike(element)) {\n // 3. If element is a Blob, append the bytes it represents\n // to bytes.\n bytes.push(element)\n }\n }\n\n // 3. Return bytes.\n return bytes\n}\n\n/**\n * @see https://www.w3.org/TR/FileAPI/#convert-line-endings-to-native\n * @param {string} s\n */\nfunction convertLineEndingsNative (s) {\n // 1. Let native line ending be be the code point U+000A LF.\n let nativeLineEnding = '\\n'\n\n // 2. If the underlying platform’s conventions are to\n // represent newlines as a carriage return and line feed\n // sequence, set native line ending to the code point\n // U+000D CR followed by the code point U+000A LF.\n if (process.platform === 'win32') {\n nativeLineEnding = '\\r\\n'\n }\n\n return s.replace(/\\r?\\n/g, nativeLineEnding)\n}\n\n// If this function is moved to ./util.js, some tools (such as\n// rollup) will warn about circular dependencies. See:\n// https://github.com/nodejs/undici/issues/1629\nfunction isFileLike (object) {\n return (\n (NativeFile && object instanceof NativeFile) ||\n object instanceof File || (\n object &&\n (typeof object.stream === 'function' ||\n typeof object.arrayBuffer === 'function') &&\n object[Symbol.toStringTag] === 'File'\n )\n )\n}\n\nmodule.exports = { File, FileLike, isFileLike }\n","'use strict'\n\nconst { isBlobLike, toUSVString, makeIterator } = require('./util')\nconst { kState } = require('./symbols')\nconst { File: UndiciFile, FileLike, isFileLike } = require('./file')\nconst { webidl } = require('./webidl')\nconst { Blob, File: NativeFile } = require('buffer')\n\n/** @type {globalThis['File']} */\nconst File = NativeFile ?? UndiciFile\n\n// https://xhr.spec.whatwg.org/#formdata\nclass FormData {\n constructor (form) {\n if (form !== undefined) {\n throw webidl.errors.conversionFailed({\n prefix: 'FormData constructor',\n argument: 'Argument 1',\n types: ['undefined']\n })\n }\n\n this[kState] = []\n }\n\n append (name, value, filename = undefined) {\n webidl.brandCheck(this, FormData)\n\n webidl.argumentLengthCheck(arguments, 2, { header: 'FormData.append' })\n\n if (arguments.length === 3 && !isBlobLike(value)) {\n throw new TypeError(\n \"Failed to execute 'append' on 'FormData': parameter 2 is not of type 'Blob'\"\n )\n }\n\n // 1. Let value be value if given; otherwise blobValue.\n\n name = webidl.converters.USVString(name)\n value = isBlobLike(value)\n ? webidl.converters.Blob(value, { strict: false })\n : webidl.converters.USVString(value)\n filename = arguments.length === 3\n ? webidl.converters.USVString(filename)\n : undefined\n\n // 2. Let entry be the result of creating an entry with\n // name, value, and filename if given.\n const entry = makeEntry(name, value, filename)\n\n // 3. Append entry to this’s entry list.\n this[kState].push(entry)\n }\n\n delete (name) {\n webidl.brandCheck(this, FormData)\n\n webidl.argumentLengthCheck(arguments, 1, { header: 'FormData.delete' })\n\n name = webidl.converters.USVString(name)\n\n // The delete(name) method steps are to remove all entries whose name\n // is name from this’s entry list.\n this[kState] = this[kState].filter(entry => entry.name !== name)\n }\n\n get (name) {\n webidl.brandCheck(this, FormData)\n\n webidl.argumentLengthCheck(arguments, 1, { header: 'FormData.get' })\n\n name = webidl.converters.USVString(name)\n\n // 1. If there is no entry whose name is name in this’s entry list,\n // then return null.\n const idx = this[kState].findIndex((entry) => entry.name === name)\n if (idx === -1) {\n return null\n }\n\n // 2. Return the value of the first entry whose name is name from\n // this’s entry list.\n return this[kState][idx].value\n }\n\n getAll (name) {\n webidl.brandCheck(this, FormData)\n\n webidl.argumentLengthCheck(arguments, 1, { header: 'FormData.getAll' })\n\n name = webidl.converters.USVString(name)\n\n // 1. If there is no entry whose name is name in this’s entry list,\n // then return the empty list.\n // 2. Return the values of all entries whose name is name, in order,\n // from this’s entry list.\n return this[kState]\n .filter((entry) => entry.name === name)\n .map((entry) => entry.value)\n }\n\n has (name) {\n webidl.brandCheck(this, FormData)\n\n webidl.argumentLengthCheck(arguments, 1, { header: 'FormData.has' })\n\n name = webidl.converters.USVString(name)\n\n // The has(name) method steps are to return true if there is an entry\n // whose name is name in this’s entry list; otherwise false.\n return this[kState].findIndex((entry) => entry.name === name) !== -1\n }\n\n set (name, value, filename = undefined) {\n webidl.brandCheck(this, FormData)\n\n webidl.argumentLengthCheck(arguments, 2, { header: 'FormData.set' })\n\n if (arguments.length === 3 && !isBlobLike(value)) {\n throw new TypeError(\n \"Failed to execute 'set' on 'FormData': parameter 2 is not of type 'Blob'\"\n )\n }\n\n // The set(name, value) and set(name, blobValue, filename) method steps\n // are:\n\n // 1. Let value be value if given; otherwise blobValue.\n\n name = webidl.converters.USVString(name)\n value = isBlobLike(value)\n ? webidl.converters.Blob(value, { strict: false })\n : webidl.converters.USVString(value)\n filename = arguments.length === 3\n ? toUSVString(filename)\n : undefined\n\n // 2. Let entry be the result of creating an entry with name, value, and\n // filename if given.\n const entry = makeEntry(name, value, filename)\n\n // 3. If there are entries in this’s entry list whose name is name, then\n // replace the first such entry with entry and remove the others.\n const idx = this[kState].findIndex((entry) => entry.name === name)\n if (idx !== -1) {\n this[kState] = [\n ...this[kState].slice(0, idx),\n entry,\n ...this[kState].slice(idx + 1).filter((entry) => entry.name !== name)\n ]\n } else {\n // 4. Otherwise, append entry to this’s entry list.\n this[kState].push(entry)\n }\n }\n\n entries () {\n webidl.brandCheck(this, FormData)\n\n return makeIterator(\n () => this[kState].map(pair => [pair.name, pair.value]),\n 'FormData',\n 'key+value'\n )\n }\n\n keys () {\n webidl.brandCheck(this, FormData)\n\n return makeIterator(\n () => this[kState].map(pair => [pair.name, pair.value]),\n 'FormData',\n 'key'\n )\n }\n\n values () {\n webidl.brandCheck(this, FormData)\n\n return makeIterator(\n () => this[kState].map(pair => [pair.name, pair.value]),\n 'FormData',\n 'value'\n )\n }\n\n /**\n * @param {(value: string, key: string, self: FormData) => void} callbackFn\n * @param {unknown} thisArg\n */\n forEach (callbackFn, thisArg = globalThis) {\n webidl.brandCheck(this, FormData)\n\n webidl.argumentLengthCheck(arguments, 1, { header: 'FormData.forEach' })\n\n if (typeof callbackFn !== 'function') {\n throw new TypeError(\n \"Failed to execute 'forEach' on 'FormData': parameter 1 is not of type 'Function'.\"\n )\n }\n\n for (const [key, value] of this) {\n callbackFn.apply(thisArg, [value, key, this])\n }\n }\n}\n\nFormData.prototype[Symbol.iterator] = FormData.prototype.entries\n\nObject.defineProperties(FormData.prototype, {\n [Symbol.toStringTag]: {\n value: 'FormData',\n configurable: true\n }\n})\n\n/**\n * @see https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#create-an-entry\n * @param {string} name\n * @param {string|Blob} value\n * @param {?string} filename\n * @returns\n */\nfunction makeEntry (name, value, filename) {\n // 1. Set name to the result of converting name into a scalar value string.\n // \"To convert a string into a scalar value string, replace any surrogates\n // with U+FFFD.\"\n // see: https://nodejs.org/dist/latest-v18.x/docs/api/buffer.html#buftostringencoding-start-end\n name = Buffer.from(name).toString('utf8')\n\n // 2. If value is a string, then set value to the result of converting\n // value into a scalar value string.\n if (typeof value === 'string') {\n value = Buffer.from(value).toString('utf8')\n } else {\n // 3. Otherwise:\n\n // 1. If value is not a File object, then set value to a new File object,\n // representing the same bytes, whose name attribute value is \"blob\"\n if (!isFileLike(value)) {\n value = value instanceof Blob\n ? new File([value], 'blob', { type: value.type })\n : new FileLike(value, 'blob', { type: value.type })\n }\n\n // 2. If filename is given, then set value to a new File object,\n // representing the same bytes, whose name attribute is filename.\n if (filename !== undefined) {\n /** @type {FilePropertyBag} */\n const options = {\n type: value.type,\n lastModified: value.lastModified\n }\n\n value = (NativeFile && value instanceof NativeFile) || value instanceof UndiciFile\n ? new File([value], filename, options)\n : new FileLike(value, filename, options)\n }\n }\n\n // 4. Return an entry whose name is name and whose value is value.\n return { name, value }\n}\n\nmodule.exports = { FormData }\n","'use strict'\n\n// In case of breaking changes, increase the version\n// number to avoid conflicts.\nconst globalOrigin = Symbol.for('undici.globalOrigin.1')\n\nfunction getGlobalOrigin () {\n return globalThis[globalOrigin]\n}\n\nfunction setGlobalOrigin (newOrigin) {\n if (newOrigin === undefined) {\n Object.defineProperty(globalThis, globalOrigin, {\n value: undefined,\n writable: true,\n enumerable: false,\n configurable: false\n })\n\n return\n }\n\n const parsedURL = new URL(newOrigin)\n\n if (parsedURL.protocol !== 'http:' && parsedURL.protocol !== 'https:') {\n throw new TypeError(`Only http & https urls are allowed, received ${parsedURL.protocol}`)\n }\n\n Object.defineProperty(globalThis, globalOrigin, {\n value: parsedURL,\n writable: true,\n enumerable: false,\n configurable: false\n })\n}\n\nmodule.exports = {\n getGlobalOrigin,\n setGlobalOrigin\n}\n","// https://github.com/Ethan-Arrowood/undici-fetch\n\n'use strict'\n\nconst { kHeadersList, kConstruct } = require('../core/symbols')\nconst { kGuard } = require('./symbols')\nconst { kEnumerableProperty } = require('../core/util')\nconst {\n makeIterator,\n isValidHeaderName,\n isValidHeaderValue\n} = require('./util')\nconst { webidl } = require('./webidl')\nconst assert = require('assert')\n\nconst kHeadersMap = Symbol('headers map')\nconst kHeadersSortedMap = Symbol('headers map sorted')\n\n/**\n * @param {number} code\n */\nfunction isHTTPWhiteSpaceCharCode (code) {\n return code === 0x00a || code === 0x00d || code === 0x009 || code === 0x020\n}\n\n/**\n * @see https://fetch.spec.whatwg.org/#concept-header-value-normalize\n * @param {string} potentialValue\n */\nfunction headerValueNormalize (potentialValue) {\n // To normalize a byte sequence potentialValue, remove\n // any leading and trailing HTTP whitespace bytes from\n // potentialValue.\n let i = 0; let j = potentialValue.length\n\n while (j > i && isHTTPWhiteSpaceCharCode(potentialValue.charCodeAt(j - 1))) --j\n while (j > i && isHTTPWhiteSpaceCharCode(potentialValue.charCodeAt(i))) ++i\n\n return i === 0 && j === potentialValue.length ? potentialValue : potentialValue.substring(i, j)\n}\n\nfunction fill (headers, object) {\n // To fill a Headers object headers with a given object object, run these steps:\n\n // 1. If object is a sequence, then for each header in object:\n // Note: webidl conversion to array has already been done.\n if (Array.isArray(object)) {\n for (let i = 0; i < object.length; ++i) {\n const header = object[i]\n // 1. If header does not contain exactly two items, then throw a TypeError.\n if (header.length !== 2) {\n throw webidl.errors.exception({\n header: 'Headers constructor',\n message: `expected name/value pair to be length 2, found ${header.length}.`\n })\n }\n\n // 2. Append (header’s first item, header’s second item) to headers.\n appendHeader(headers, header[0], header[1])\n }\n } else if (typeof object === 'object' && object !== null) {\n // Note: null should throw\n\n // 2. Otherwise, object is a record, then for each key → value in object,\n // append (key, value) to headers\n const keys = Object.keys(object)\n for (let i = 0; i < keys.length; ++i) {\n appendHeader(headers, keys[i], object[keys[i]])\n }\n } else {\n throw webidl.errors.conversionFailed({\n prefix: 'Headers constructor',\n argument: 'Argument 1',\n types: ['sequence>', 'record']\n })\n }\n}\n\n/**\n * @see https://fetch.spec.whatwg.org/#concept-headers-append\n */\nfunction appendHeader (headers, name, value) {\n // 1. Normalize value.\n value = headerValueNormalize(value)\n\n // 2. If name is not a header name or value is not a\n // header value, then throw a TypeError.\n if (!isValidHeaderName(name)) {\n throw webidl.errors.invalidArgument({\n prefix: 'Headers.append',\n value: name,\n type: 'header name'\n })\n } else if (!isValidHeaderValue(value)) {\n throw webidl.errors.invalidArgument({\n prefix: 'Headers.append',\n value,\n type: 'header value'\n })\n }\n\n // 3. If headers’s guard is \"immutable\", then throw a TypeError.\n // 4. Otherwise, if headers’s guard is \"request\" and name is a\n // forbidden header name, return.\n // Note: undici does not implement forbidden header names\n if (headers[kGuard] === 'immutable') {\n throw new TypeError('immutable')\n } else if (headers[kGuard] === 'request-no-cors') {\n // 5. Otherwise, if headers’s guard is \"request-no-cors\":\n // TODO\n }\n\n // 6. Otherwise, if headers’s guard is \"response\" and name is a\n // forbidden response-header name, return.\n\n // 7. Append (name, value) to headers’s header list.\n return headers[kHeadersList].append(name, value)\n\n // 8. If headers’s guard is \"request-no-cors\", then remove\n // privileged no-CORS request headers from headers\n}\n\nclass HeadersList {\n /** @type {[string, string][]|null} */\n cookies = null\n\n constructor (init) {\n if (init instanceof HeadersList) {\n this[kHeadersMap] = new Map(init[kHeadersMap])\n this[kHeadersSortedMap] = init[kHeadersSortedMap]\n this.cookies = init.cookies === null ? null : [...init.cookies]\n } else {\n this[kHeadersMap] = new Map(init)\n this[kHeadersSortedMap] = null\n }\n }\n\n // https://fetch.spec.whatwg.org/#header-list-contains\n contains (name) {\n // A header list list contains a header name name if list\n // contains a header whose name is a byte-case-insensitive\n // match for name.\n name = name.toLowerCase()\n\n return this[kHeadersMap].has(name)\n }\n\n clear () {\n this[kHeadersMap].clear()\n this[kHeadersSortedMap] = null\n this.cookies = null\n }\n\n // https://fetch.spec.whatwg.org/#concept-header-list-append\n append (name, value) {\n this[kHeadersSortedMap] = null\n\n // 1. If list contains name, then set name to the first such\n // header’s name.\n const lowercaseName = name.toLowerCase()\n const exists = this[kHeadersMap].get(lowercaseName)\n\n // 2. Append (name, value) to list.\n if (exists) {\n const delimiter = lowercaseName === 'cookie' ? '; ' : ', '\n this[kHeadersMap].set(lowercaseName, {\n name: exists.name,\n value: `${exists.value}${delimiter}${value}`\n })\n } else {\n this[kHeadersMap].set(lowercaseName, { name, value })\n }\n\n if (lowercaseName === 'set-cookie') {\n this.cookies ??= []\n this.cookies.push(value)\n }\n }\n\n // https://fetch.spec.whatwg.org/#concept-header-list-set\n set (name, value) {\n this[kHeadersSortedMap] = null\n const lowercaseName = name.toLowerCase()\n\n if (lowercaseName === 'set-cookie') {\n this.cookies = [value]\n }\n\n // 1. If list contains name, then set the value of\n // the first such header to value and remove the\n // others.\n // 2. Otherwise, append header (name, value) to list.\n this[kHeadersMap].set(lowercaseName, { name, value })\n }\n\n // https://fetch.spec.whatwg.org/#concept-header-list-delete\n delete (name) {\n this[kHeadersSortedMap] = null\n\n name = name.toLowerCase()\n\n if (name === 'set-cookie') {\n this.cookies = null\n }\n\n this[kHeadersMap].delete(name)\n }\n\n // https://fetch.spec.whatwg.org/#concept-header-list-get\n get (name) {\n const value = this[kHeadersMap].get(name.toLowerCase())\n\n // 1. If list does not contain name, then return null.\n // 2. Return the values of all headers in list whose name\n // is a byte-case-insensitive match for name,\n // separated from each other by 0x2C 0x20, in order.\n return value === undefined ? null : value.value\n }\n\n * [Symbol.iterator] () {\n // use the lowercased name\n for (const [name, { value }] of this[kHeadersMap]) {\n yield [name, value]\n }\n }\n\n get entries () {\n const headers = {}\n\n if (this[kHeadersMap].size) {\n for (const { name, value } of this[kHeadersMap].values()) {\n headers[name] = value\n }\n }\n\n return headers\n }\n}\n\n// https://fetch.spec.whatwg.org/#headers-class\nclass Headers {\n constructor (init = undefined) {\n if (init === kConstruct) {\n return\n }\n this[kHeadersList] = new HeadersList()\n\n // The new Headers(init) constructor steps are:\n\n // 1. Set this’s guard to \"none\".\n this[kGuard] = 'none'\n\n // 2. If init is given, then fill this with init.\n if (init !== undefined) {\n init = webidl.converters.HeadersInit(init)\n fill(this, init)\n }\n }\n\n // https://fetch.spec.whatwg.org/#dom-headers-append\n append (name, value) {\n webidl.brandCheck(this, Headers)\n\n webidl.argumentLengthCheck(arguments, 2, { header: 'Headers.append' })\n\n name = webidl.converters.ByteString(name)\n value = webidl.converters.ByteString(value)\n\n return appendHeader(this, name, value)\n }\n\n // https://fetch.spec.whatwg.org/#dom-headers-delete\n delete (name) {\n webidl.brandCheck(this, Headers)\n\n webidl.argumentLengthCheck(arguments, 1, { header: 'Headers.delete' })\n\n name = webidl.converters.ByteString(name)\n\n // 1. If name is not a header name, then throw a TypeError.\n if (!isValidHeaderName(name)) {\n throw webidl.errors.invalidArgument({\n prefix: 'Headers.delete',\n value: name,\n type: 'header name'\n })\n }\n\n // 2. If this’s guard is \"immutable\", then throw a TypeError.\n // 3. Otherwise, if this’s guard is \"request\" and name is a\n // forbidden header name, return.\n // 4. Otherwise, if this’s guard is \"request-no-cors\", name\n // is not a no-CORS-safelisted request-header name, and\n // name is not a privileged no-CORS request-header name,\n // return.\n // 5. Otherwise, if this’s guard is \"response\" and name is\n // a forbidden response-header name, return.\n // Note: undici does not implement forbidden header names\n if (this[kGuard] === 'immutable') {\n throw new TypeError('immutable')\n } else if (this[kGuard] === 'request-no-cors') {\n // TODO\n }\n\n // 6. If this’s header list does not contain name, then\n // return.\n if (!this[kHeadersList].contains(name)) {\n return\n }\n\n // 7. Delete name from this’s header list.\n // 8. If this’s guard is \"request-no-cors\", then remove\n // privileged no-CORS request headers from this.\n this[kHeadersList].delete(name)\n }\n\n // https://fetch.spec.whatwg.org/#dom-headers-get\n get (name) {\n webidl.brandCheck(this, Headers)\n\n webidl.argumentLengthCheck(arguments, 1, { header: 'Headers.get' })\n\n name = webidl.converters.ByteString(name)\n\n // 1. If name is not a header name, then throw a TypeError.\n if (!isValidHeaderName(name)) {\n throw webidl.errors.invalidArgument({\n prefix: 'Headers.get',\n value: name,\n type: 'header name'\n })\n }\n\n // 2. Return the result of getting name from this’s header\n // list.\n return this[kHeadersList].get(name)\n }\n\n // https://fetch.spec.whatwg.org/#dom-headers-has\n has (name) {\n webidl.brandCheck(this, Headers)\n\n webidl.argumentLengthCheck(arguments, 1, { header: 'Headers.has' })\n\n name = webidl.converters.ByteString(name)\n\n // 1. If name is not a header name, then throw a TypeError.\n if (!isValidHeaderName(name)) {\n throw webidl.errors.invalidArgument({\n prefix: 'Headers.has',\n value: name,\n type: 'header name'\n })\n }\n\n // 2. Return true if this’s header list contains name;\n // otherwise false.\n return this[kHeadersList].contains(name)\n }\n\n // https://fetch.spec.whatwg.org/#dom-headers-set\n set (name, value) {\n webidl.brandCheck(this, Headers)\n\n webidl.argumentLengthCheck(arguments, 2, { header: 'Headers.set' })\n\n name = webidl.converters.ByteString(name)\n value = webidl.converters.ByteString(value)\n\n // 1. Normalize value.\n value = headerValueNormalize(value)\n\n // 2. If name is not a header name or value is not a\n // header value, then throw a TypeError.\n if (!isValidHeaderName(name)) {\n throw webidl.errors.invalidArgument({\n prefix: 'Headers.set',\n value: name,\n type: 'header name'\n })\n } else if (!isValidHeaderValue(value)) {\n throw webidl.errors.invalidArgument({\n prefix: 'Headers.set',\n value,\n type: 'header value'\n })\n }\n\n // 3. If this’s guard is \"immutable\", then throw a TypeError.\n // 4. Otherwise, if this’s guard is \"request\" and name is a\n // forbidden header name, return.\n // 5. Otherwise, if this’s guard is \"request-no-cors\" and\n // name/value is not a no-CORS-safelisted request-header,\n // return.\n // 6. Otherwise, if this’s guard is \"response\" and name is a\n // forbidden response-header name, return.\n // Note: undici does not implement forbidden header names\n if (this[kGuard] === 'immutable') {\n throw new TypeError('immutable')\n } else if (this[kGuard] === 'request-no-cors') {\n // TODO\n }\n\n // 7. Set (name, value) in this’s header list.\n // 8. If this’s guard is \"request-no-cors\", then remove\n // privileged no-CORS request headers from this\n this[kHeadersList].set(name, value)\n }\n\n // https://fetch.spec.whatwg.org/#dom-headers-getsetcookie\n getSetCookie () {\n webidl.brandCheck(this, Headers)\n\n // 1. If this’s header list does not contain `Set-Cookie`, then return « ».\n // 2. Return the values of all headers in this’s header list whose name is\n // a byte-case-insensitive match for `Set-Cookie`, in order.\n\n const list = this[kHeadersList].cookies\n\n if (list) {\n return [...list]\n }\n\n return []\n }\n\n // https://fetch.spec.whatwg.org/#concept-header-list-sort-and-combine\n get [kHeadersSortedMap] () {\n if (this[kHeadersList][kHeadersSortedMap]) {\n return this[kHeadersList][kHeadersSortedMap]\n }\n\n // 1. Let headers be an empty list of headers with the key being the name\n // and value the value.\n const headers = []\n\n // 2. Let names be the result of convert header names to a sorted-lowercase\n // set with all the names of the headers in list.\n const names = [...this[kHeadersList]].sort((a, b) => a[0] < b[0] ? -1 : 1)\n const cookies = this[kHeadersList].cookies\n\n // 3. For each name of names:\n for (let i = 0; i < names.length; ++i) {\n const [name, value] = names[i]\n // 1. If name is `set-cookie`, then:\n if (name === 'set-cookie') {\n // 1. Let values be a list of all values of headers in list whose name\n // is a byte-case-insensitive match for name, in order.\n\n // 2. For each value of values:\n // 1. Append (name, value) to headers.\n for (let j = 0; j < cookies.length; ++j) {\n headers.push([name, cookies[j]])\n }\n } else {\n // 2. Otherwise:\n\n // 1. Let value be the result of getting name from list.\n\n // 2. Assert: value is non-null.\n assert(value !== null)\n\n // 3. Append (name, value) to headers.\n headers.push([name, value])\n }\n }\n\n this[kHeadersList][kHeadersSortedMap] = headers\n\n // 4. Return headers.\n return headers\n }\n\n keys () {\n webidl.brandCheck(this, Headers)\n\n if (this[kGuard] === 'immutable') {\n const value = this[kHeadersSortedMap]\n return makeIterator(() => value, 'Headers',\n 'key')\n }\n\n return makeIterator(\n () => [...this[kHeadersSortedMap].values()],\n 'Headers',\n 'key'\n )\n }\n\n values () {\n webidl.brandCheck(this, Headers)\n\n if (this[kGuard] === 'immutable') {\n const value = this[kHeadersSortedMap]\n return makeIterator(() => value, 'Headers',\n 'value')\n }\n\n return makeIterator(\n () => [...this[kHeadersSortedMap].values()],\n 'Headers',\n 'value'\n )\n }\n\n entries () {\n webidl.brandCheck(this, Headers)\n\n if (this[kGuard] === 'immutable') {\n const value = this[kHeadersSortedMap]\n return makeIterator(() => value, 'Headers',\n 'key+value')\n }\n\n return makeIterator(\n () => [...this[kHeadersSortedMap].values()],\n 'Headers',\n 'key+value'\n )\n }\n\n /**\n * @param {(value: string, key: string, self: Headers) => void} callbackFn\n * @param {unknown} thisArg\n */\n forEach (callbackFn, thisArg = globalThis) {\n webidl.brandCheck(this, Headers)\n\n webidl.argumentLengthCheck(arguments, 1, { header: 'Headers.forEach' })\n\n if (typeof callbackFn !== 'function') {\n throw new TypeError(\n \"Failed to execute 'forEach' on 'Headers': parameter 1 is not of type 'Function'.\"\n )\n }\n\n for (const [key, value] of this) {\n callbackFn.apply(thisArg, [value, key, this])\n }\n }\n\n [Symbol.for('nodejs.util.inspect.custom')] () {\n webidl.brandCheck(this, Headers)\n\n return this[kHeadersList]\n }\n}\n\nHeaders.prototype[Symbol.iterator] = Headers.prototype.entries\n\nObject.defineProperties(Headers.prototype, {\n append: kEnumerableProperty,\n delete: kEnumerableProperty,\n get: kEnumerableProperty,\n has: kEnumerableProperty,\n set: kEnumerableProperty,\n getSetCookie: kEnumerableProperty,\n keys: kEnumerableProperty,\n values: kEnumerableProperty,\n entries: kEnumerableProperty,\n forEach: kEnumerableProperty,\n [Symbol.iterator]: { enumerable: false },\n [Symbol.toStringTag]: {\n value: 'Headers',\n configurable: true\n }\n})\n\nwebidl.converters.HeadersInit = function (V) {\n if (webidl.util.Type(V) === 'Object') {\n if (V[Symbol.iterator]) {\n return webidl.converters['sequence>'](V)\n }\n\n return webidl.converters['record'](V)\n }\n\n throw webidl.errors.conversionFailed({\n prefix: 'Headers constructor',\n argument: 'Argument 1',\n types: ['sequence>', 'record']\n })\n}\n\nmodule.exports = {\n fill,\n Headers,\n HeadersList\n}\n","// https://github.com/Ethan-Arrowood/undici-fetch\n\n'use strict'\n\nconst {\n Response,\n makeNetworkError,\n makeAppropriateNetworkError,\n filterResponse,\n makeResponse\n} = require('./response')\nconst { Headers } = require('./headers')\nconst { Request, makeRequest } = require('./request')\nconst zlib = require('zlib')\nconst {\n bytesMatch,\n makePolicyContainer,\n clonePolicyContainer,\n requestBadPort,\n TAOCheck,\n appendRequestOriginHeader,\n responseLocationURL,\n requestCurrentURL,\n setRequestReferrerPolicyOnRedirect,\n tryUpgradeRequestToAPotentiallyTrustworthyURL,\n createOpaqueTimingInfo,\n appendFetchMetadata,\n corsCheck,\n crossOriginResourcePolicyCheck,\n determineRequestsReferrer,\n coarsenedSharedCurrentTime,\n createDeferredPromise,\n isBlobLike,\n sameOrigin,\n isCancelled,\n isAborted,\n isErrorLike,\n fullyReadBody,\n readableStreamClose,\n isomorphicEncode,\n urlIsLocal,\n urlIsHttpHttpsScheme,\n urlHasHttpsScheme\n} = require('./util')\nconst { kState, kHeaders, kGuard, kRealm } = require('./symbols')\nconst assert = require('assert')\nconst { safelyExtractBody } = require('./body')\nconst {\n redirectStatusSet,\n nullBodyStatus,\n safeMethodsSet,\n requestBodyHeader,\n subresourceSet,\n DOMException\n} = require('./constants')\nconst { kHeadersList } = require('../core/symbols')\nconst EE = require('events')\nconst { Readable, pipeline } = require('stream')\nconst { addAbortListener, isErrored, isReadable, nodeMajor, nodeMinor } = require('../core/util')\nconst { dataURLProcessor, serializeAMimeType } = require('./dataURL')\nconst { TransformStream } = require('stream/web')\nconst { getGlobalDispatcher } = require('../global')\nconst { webidl } = require('./webidl')\nconst { STATUS_CODES } = require('http')\nconst GET_OR_HEAD = ['GET', 'HEAD']\n\n/** @type {import('buffer').resolveObjectURL} */\nlet resolveObjectURL\nlet ReadableStream = globalThis.ReadableStream\n\nclass Fetch extends EE {\n constructor (dispatcher) {\n super()\n\n this.dispatcher = dispatcher\n this.connection = null\n this.dump = false\n this.state = 'ongoing'\n // 2 terminated listeners get added per request,\n // but only 1 gets removed. If there are 20 redirects,\n // 21 listeners will be added.\n // See https://github.com/nodejs/undici/issues/1711\n // TODO (fix): Find and fix root cause for leaked listener.\n this.setMaxListeners(21)\n }\n\n terminate (reason) {\n if (this.state !== 'ongoing') {\n return\n }\n\n this.state = 'terminated'\n this.connection?.destroy(reason)\n this.emit('terminated', reason)\n }\n\n // https://fetch.spec.whatwg.org/#fetch-controller-abort\n abort (error) {\n if (this.state !== 'ongoing') {\n return\n }\n\n // 1. Set controller’s state to \"aborted\".\n this.state = 'aborted'\n\n // 2. Let fallbackError be an \"AbortError\" DOMException.\n // 3. Set error to fallbackError if it is not given.\n if (!error) {\n error = new DOMException('The operation was aborted.', 'AbortError')\n }\n\n // 4. Let serializedError be StructuredSerialize(error).\n // If that threw an exception, catch it, and let\n // serializedError be StructuredSerialize(fallbackError).\n\n // 5. Set controller’s serialized abort reason to serializedError.\n this.serializedAbortReason = error\n\n this.connection?.destroy(error)\n this.emit('terminated', error)\n }\n}\n\n// https://fetch.spec.whatwg.org/#fetch-method\nfunction fetch (input, init = {}) {\n webidl.argumentLengthCheck(arguments, 1, { header: 'globalThis.fetch' })\n\n // 1. Let p be a new promise.\n const p = createDeferredPromise()\n\n // 2. Let requestObject be the result of invoking the initial value of\n // Request as constructor with input and init as arguments. If this throws\n // an exception, reject p with it and return p.\n let requestObject\n\n try {\n requestObject = new Request(input, init)\n } catch (e) {\n p.reject(e)\n return p.promise\n }\n\n // 3. Let request be requestObject’s request.\n const request = requestObject[kState]\n\n // 4. If requestObject’s signal’s aborted flag is set, then:\n if (requestObject.signal.aborted) {\n // 1. Abort the fetch() call with p, request, null, and\n // requestObject’s signal’s abort reason.\n abortFetch(p, request, null, requestObject.signal.reason)\n\n // 2. Return p.\n return p.promise\n }\n\n // 5. Let globalObject be request’s client’s global object.\n const globalObject = request.client.globalObject\n\n // 6. If globalObject is a ServiceWorkerGlobalScope object, then set\n // request’s service-workers mode to \"none\".\n if (globalObject?.constructor?.name === 'ServiceWorkerGlobalScope') {\n request.serviceWorkers = 'none'\n }\n\n // 7. Let responseObject be null.\n let responseObject = null\n\n // 8. Let relevantRealm be this’s relevant Realm.\n const relevantRealm = null\n\n // 9. Let locallyAborted be false.\n let locallyAborted = false\n\n // 10. Let controller be null.\n let controller = null\n\n // 11. Add the following abort steps to requestObject’s signal:\n addAbortListener(\n requestObject.signal,\n () => {\n // 1. Set locallyAborted to true.\n locallyAborted = true\n\n // 2. Assert: controller is non-null.\n assert(controller != null)\n\n // 3. Abort controller with requestObject’s signal’s abort reason.\n controller.abort(requestObject.signal.reason)\n\n // 4. Abort the fetch() call with p, request, responseObject,\n // and requestObject’s signal’s abort reason.\n abortFetch(p, request, responseObject, requestObject.signal.reason)\n }\n )\n\n // 12. Let handleFetchDone given response response be to finalize and\n // report timing with response, globalObject, and \"fetch\".\n const handleFetchDone = (response) =>\n finalizeAndReportTiming(response, 'fetch')\n\n // 13. Set controller to the result of calling fetch given request,\n // with processResponseEndOfBody set to handleFetchDone, and processResponse\n // given response being these substeps:\n\n const processResponse = (response) => {\n // 1. If locallyAborted is true, terminate these substeps.\n if (locallyAborted) {\n return Promise.resolve()\n }\n\n // 2. If response’s aborted flag is set, then:\n if (response.aborted) {\n // 1. Let deserializedError be the result of deserialize a serialized\n // abort reason given controller’s serialized abort reason and\n // relevantRealm.\n\n // 2. Abort the fetch() call with p, request, responseObject, and\n // deserializedError.\n\n abortFetch(p, request, responseObject, controller.serializedAbortReason)\n return Promise.resolve()\n }\n\n // 3. If response is a network error, then reject p with a TypeError\n // and terminate these substeps.\n if (response.type === 'error') {\n p.reject(\n Object.assign(new TypeError('fetch failed'), { cause: response.error })\n )\n return Promise.resolve()\n }\n\n // 4. Set responseObject to the result of creating a Response object,\n // given response, \"immutable\", and relevantRealm.\n responseObject = new Response()\n responseObject[kState] = response\n responseObject[kRealm] = relevantRealm\n responseObject[kHeaders][kHeadersList] = response.headersList\n responseObject[kHeaders][kGuard] = 'immutable'\n responseObject[kHeaders][kRealm] = relevantRealm\n\n // 5. Resolve p with responseObject.\n p.resolve(responseObject)\n }\n\n controller = fetching({\n request,\n processResponseEndOfBody: handleFetchDone,\n processResponse,\n dispatcher: init.dispatcher ?? getGlobalDispatcher() // undici\n })\n\n // 14. Return p.\n return p.promise\n}\n\n// https://fetch.spec.whatwg.org/#finalize-and-report-timing\nfunction finalizeAndReportTiming (response, initiatorType = 'other') {\n // 1. If response is an aborted network error, then return.\n if (response.type === 'error' && response.aborted) {\n return\n }\n\n // 2. If response’s URL list is null or empty, then return.\n if (!response.urlList?.length) {\n return\n }\n\n // 3. Let originalURL be response’s URL list[0].\n const originalURL = response.urlList[0]\n\n // 4. Let timingInfo be response’s timing info.\n let timingInfo = response.timingInfo\n\n // 5. Let cacheState be response’s cache state.\n let cacheState = response.cacheState\n\n // 6. If originalURL’s scheme is not an HTTP(S) scheme, then return.\n if (!urlIsHttpHttpsScheme(originalURL)) {\n return\n }\n\n // 7. If timingInfo is null, then return.\n if (timingInfo === null) {\n return\n }\n\n // 8. If response’s timing allow passed flag is not set, then:\n if (!response.timingAllowPassed) {\n // 1. Set timingInfo to a the result of creating an opaque timing info for timingInfo.\n timingInfo = createOpaqueTimingInfo({\n startTime: timingInfo.startTime\n })\n\n // 2. Set cacheState to the empty string.\n cacheState = ''\n }\n\n // 9. Set timingInfo’s end time to the coarsened shared current time\n // given global’s relevant settings object’s cross-origin isolated\n // capability.\n // TODO: given global’s relevant settings object’s cross-origin isolated\n // capability?\n timingInfo.endTime = coarsenedSharedCurrentTime()\n\n // 10. Set response’s timing info to timingInfo.\n response.timingInfo = timingInfo\n\n // 11. Mark resource timing for timingInfo, originalURL, initiatorType,\n // global, and cacheState.\n markResourceTiming(\n timingInfo,\n originalURL,\n initiatorType,\n globalThis,\n cacheState\n )\n}\n\n// https://w3c.github.io/resource-timing/#dfn-mark-resource-timing\nfunction markResourceTiming (timingInfo, originalURL, initiatorType, globalThis, cacheState) {\n if (nodeMajor > 18 || (nodeMajor === 18 && nodeMinor >= 2)) {\n performance.markResourceTiming(timingInfo, originalURL.href, initiatorType, globalThis, cacheState)\n }\n}\n\n// https://fetch.spec.whatwg.org/#abort-fetch\nfunction abortFetch (p, request, responseObject, error) {\n // Note: AbortSignal.reason was added in node v17.2.0\n // which would give us an undefined error to reject with.\n // Remove this once node v16 is no longer supported.\n if (!error) {\n error = new DOMException('The operation was aborted.', 'AbortError')\n }\n\n // 1. Reject promise with error.\n p.reject(error)\n\n // 2. If request’s body is not null and is readable, then cancel request’s\n // body with error.\n if (request.body != null && isReadable(request.body?.stream)) {\n request.body.stream.cancel(error).catch((err) => {\n if (err.code === 'ERR_INVALID_STATE') {\n // Node bug?\n return\n }\n throw err\n })\n }\n\n // 3. If responseObject is null, then return.\n if (responseObject == null) {\n return\n }\n\n // 4. Let response be responseObject’s response.\n const response = responseObject[kState]\n\n // 5. If response’s body is not null and is readable, then error response’s\n // body with error.\n if (response.body != null && isReadable(response.body?.stream)) {\n response.body.stream.cancel(error).catch((err) => {\n if (err.code === 'ERR_INVALID_STATE') {\n // Node bug?\n return\n }\n throw err\n })\n }\n}\n\n// https://fetch.spec.whatwg.org/#fetching\nfunction fetching ({\n request,\n processRequestBodyChunkLength,\n processRequestEndOfBody,\n processResponse,\n processResponseEndOfBody,\n processResponseConsumeBody,\n useParallelQueue = false,\n dispatcher // undici\n}) {\n // 1. Let taskDestination be null.\n let taskDestination = null\n\n // 2. Let crossOriginIsolatedCapability be false.\n let crossOriginIsolatedCapability = false\n\n // 3. If request’s client is non-null, then:\n if (request.client != null) {\n // 1. Set taskDestination to request’s client’s global object.\n taskDestination = request.client.globalObject\n\n // 2. Set crossOriginIsolatedCapability to request’s client’s cross-origin\n // isolated capability.\n crossOriginIsolatedCapability =\n request.client.crossOriginIsolatedCapability\n }\n\n // 4. If useParallelQueue is true, then set taskDestination to the result of\n // starting a new parallel queue.\n // TODO\n\n // 5. Let timingInfo be a new fetch timing info whose start time and\n // post-redirect start time are the coarsened shared current time given\n // crossOriginIsolatedCapability.\n const currenTime = coarsenedSharedCurrentTime(crossOriginIsolatedCapability)\n const timingInfo = createOpaqueTimingInfo({\n startTime: currenTime\n })\n\n // 6. Let fetchParams be a new fetch params whose\n // request is request,\n // timing info is timingInfo,\n // process request body chunk length is processRequestBodyChunkLength,\n // process request end-of-body is processRequestEndOfBody,\n // process response is processResponse,\n // process response consume body is processResponseConsumeBody,\n // process response end-of-body is processResponseEndOfBody,\n // task destination is taskDestination,\n // and cross-origin isolated capability is crossOriginIsolatedCapability.\n const fetchParams = {\n controller: new Fetch(dispatcher),\n request,\n timingInfo,\n processRequestBodyChunkLength,\n processRequestEndOfBody,\n processResponse,\n processResponseConsumeBody,\n processResponseEndOfBody,\n taskDestination,\n crossOriginIsolatedCapability\n }\n\n // 7. If request’s body is a byte sequence, then set request’s body to\n // request’s body as a body.\n // NOTE: Since fetching is only called from fetch, body should already be\n // extracted.\n assert(!request.body || request.body.stream)\n\n // 8. If request’s window is \"client\", then set request’s window to request’s\n // client, if request’s client’s global object is a Window object; otherwise\n // \"no-window\".\n if (request.window === 'client') {\n // TODO: What if request.client is null?\n request.window =\n request.client?.globalObject?.constructor?.name === 'Window'\n ? request.client\n : 'no-window'\n }\n\n // 9. If request’s origin is \"client\", then set request’s origin to request’s\n // client’s origin.\n if (request.origin === 'client') {\n // TODO: What if request.client is null?\n request.origin = request.client?.origin\n }\n\n // 10. If all of the following conditions are true:\n // TODO\n\n // 11. If request’s policy container is \"client\", then:\n if (request.policyContainer === 'client') {\n // 1. If request’s client is non-null, then set request’s policy\n // container to a clone of request’s client’s policy container. [HTML]\n if (request.client != null) {\n request.policyContainer = clonePolicyContainer(\n request.client.policyContainer\n )\n } else {\n // 2. Otherwise, set request’s policy container to a new policy\n // container.\n request.policyContainer = makePolicyContainer()\n }\n }\n\n // 12. If request’s header list does not contain `Accept`, then:\n if (!request.headersList.contains('accept')) {\n // 1. Let value be `*/*`.\n const value = '*/*'\n\n // 2. A user agent should set value to the first matching statement, if\n // any, switching on request’s destination:\n // \"document\"\n // \"frame\"\n // \"iframe\"\n // `text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8`\n // \"image\"\n // `image/png,image/svg+xml,image/*;q=0.8,*/*;q=0.5`\n // \"style\"\n // `text/css,*/*;q=0.1`\n // TODO\n\n // 3. Append `Accept`/value to request’s header list.\n request.headersList.append('accept', value)\n }\n\n // 13. If request’s header list does not contain `Accept-Language`, then\n // user agents should append `Accept-Language`/an appropriate value to\n // request’s header list.\n if (!request.headersList.contains('accept-language')) {\n request.headersList.append('accept-language', '*')\n }\n\n // 14. If request’s priority is null, then use request’s initiator and\n // destination appropriately in setting request’s priority to a\n // user-agent-defined object.\n if (request.priority === null) {\n // TODO\n }\n\n // 15. If request is a subresource request, then:\n if (subresourceSet.has(request.destination)) {\n // TODO\n }\n\n // 16. Run main fetch given fetchParams.\n mainFetch(fetchParams)\n .catch(err => {\n fetchParams.controller.terminate(err)\n })\n\n // 17. Return fetchParam's controller\n return fetchParams.controller\n}\n\n// https://fetch.spec.whatwg.org/#concept-main-fetch\nasync function mainFetch (fetchParams, recursive = false) {\n // 1. Let request be fetchParams’s request.\n const request = fetchParams.request\n\n // 2. Let response be null.\n let response = null\n\n // 3. If request’s local-URLs-only flag is set and request’s current URL is\n // not local, then set response to a network error.\n if (request.localURLsOnly && !urlIsLocal(requestCurrentURL(request))) {\n response = makeNetworkError('local URLs only')\n }\n\n // 4. Run report Content Security Policy violations for request.\n // TODO\n\n // 5. Upgrade request to a potentially trustworthy URL, if appropriate.\n tryUpgradeRequestToAPotentiallyTrustworthyURL(request)\n\n // 6. If should request be blocked due to a bad port, should fetching request\n // be blocked as mixed content, or should request be blocked by Content\n // Security Policy returns blocked, then set response to a network error.\n if (requestBadPort(request) === 'blocked') {\n response = makeNetworkError('bad port')\n }\n // TODO: should fetching request be blocked as mixed content?\n // TODO: should request be blocked by Content Security Policy?\n\n // 7. If request’s referrer policy is the empty string, then set request’s\n // referrer policy to request’s policy container’s referrer policy.\n if (request.referrerPolicy === '') {\n request.referrerPolicy = request.policyContainer.referrerPolicy\n }\n\n // 8. If request’s referrer is not \"no-referrer\", then set request’s\n // referrer to the result of invoking determine request’s referrer.\n if (request.referrer !== 'no-referrer') {\n request.referrer = determineRequestsReferrer(request)\n }\n\n // 9. Set request’s current URL’s scheme to \"https\" if all of the following\n // conditions are true:\n // - request’s current URL’s scheme is \"http\"\n // - request’s current URL’s host is a domain\n // - Matching request’s current URL’s host per Known HSTS Host Domain Name\n // Matching results in either a superdomain match with an asserted\n // includeSubDomains directive or a congruent match (with or without an\n // asserted includeSubDomains directive). [HSTS]\n // TODO\n\n // 10. If recursive is false, then run the remaining steps in parallel.\n // TODO\n\n // 11. If response is null, then set response to the result of running\n // the steps corresponding to the first matching statement:\n if (response === null) {\n response = await (async () => {\n const currentURL = requestCurrentURL(request)\n\n if (\n // - request’s current URL’s origin is same origin with request’s origin,\n // and request’s response tainting is \"basic\"\n (sameOrigin(currentURL, request.url) && request.responseTainting === 'basic') ||\n // request’s current URL’s scheme is \"data\"\n (currentURL.protocol === 'data:') ||\n // - request’s mode is \"navigate\" or \"websocket\"\n (request.mode === 'navigate' || request.mode === 'websocket')\n ) {\n // 1. Set request’s response tainting to \"basic\".\n request.responseTainting = 'basic'\n\n // 2. Return the result of running scheme fetch given fetchParams.\n return await schemeFetch(fetchParams)\n }\n\n // request’s mode is \"same-origin\"\n if (request.mode === 'same-origin') {\n // 1. Return a network error.\n return makeNetworkError('request mode cannot be \"same-origin\"')\n }\n\n // request’s mode is \"no-cors\"\n if (request.mode === 'no-cors') {\n // 1. If request’s redirect mode is not \"follow\", then return a network\n // error.\n if (request.redirect !== 'follow') {\n return makeNetworkError(\n 'redirect mode cannot be \"follow\" for \"no-cors\" request'\n )\n }\n\n // 2. Set request’s response tainting to \"opaque\".\n request.responseTainting = 'opaque'\n\n // 3. Return the result of running scheme fetch given fetchParams.\n return await schemeFetch(fetchParams)\n }\n\n // request’s current URL’s scheme is not an HTTP(S) scheme\n if (!urlIsHttpHttpsScheme(requestCurrentURL(request))) {\n // Return a network error.\n return makeNetworkError('URL scheme must be a HTTP(S) scheme')\n }\n\n // - request’s use-CORS-preflight flag is set\n // - request’s unsafe-request flag is set and either request’s method is\n // not a CORS-safelisted method or CORS-unsafe request-header names with\n // request’s header list is not empty\n // 1. Set request’s response tainting to \"cors\".\n // 2. Let corsWithPreflightResponse be the result of running HTTP fetch\n // given fetchParams and true.\n // 3. If corsWithPreflightResponse is a network error, then clear cache\n // entries using request.\n // 4. Return corsWithPreflightResponse.\n // TODO\n\n // Otherwise\n // 1. Set request’s response tainting to \"cors\".\n request.responseTainting = 'cors'\n\n // 2. Return the result of running HTTP fetch given fetchParams.\n return await httpFetch(fetchParams)\n })()\n }\n\n // 12. If recursive is true, then return response.\n if (recursive) {\n return response\n }\n\n // 13. If response is not a network error and response is not a filtered\n // response, then:\n if (response.status !== 0 && !response.internalResponse) {\n // If request’s response tainting is \"cors\", then:\n if (request.responseTainting === 'cors') {\n // 1. Let headerNames be the result of extracting header list values\n // given `Access-Control-Expose-Headers` and response’s header list.\n // TODO\n // 2. If request’s credentials mode is not \"include\" and headerNames\n // contains `*`, then set response’s CORS-exposed header-name list to\n // all unique header names in response’s header list.\n // TODO\n // 3. Otherwise, if headerNames is not null or failure, then set\n // response’s CORS-exposed header-name list to headerNames.\n // TODO\n }\n\n // Set response to the following filtered response with response as its\n // internal response, depending on request’s response tainting:\n if (request.responseTainting === 'basic') {\n response = filterResponse(response, 'basic')\n } else if (request.responseTainting === 'cors') {\n response = filterResponse(response, 'cors')\n } else if (request.responseTainting === 'opaque') {\n response = filterResponse(response, 'opaque')\n } else {\n assert(false)\n }\n }\n\n // 14. Let internalResponse be response, if response is a network error,\n // and response’s internal response otherwise.\n let internalResponse =\n response.status === 0 ? response : response.internalResponse\n\n // 15. If internalResponse’s URL list is empty, then set it to a clone of\n // request’s URL list.\n if (internalResponse.urlList.length === 0) {\n internalResponse.urlList.push(...request.urlList)\n }\n\n // 16. If request’s timing allow failed flag is unset, then set\n // internalResponse’s timing allow passed flag.\n if (!request.timingAllowFailed) {\n response.timingAllowPassed = true\n }\n\n // 17. If response is not a network error and any of the following returns\n // blocked\n // - should internalResponse to request be blocked as mixed content\n // - should internalResponse to request be blocked by Content Security Policy\n // - should internalResponse to request be blocked due to its MIME type\n // - should internalResponse to request be blocked due to nosniff\n // TODO\n\n // 18. If response’s type is \"opaque\", internalResponse’s status is 206,\n // internalResponse’s range-requested flag is set, and request’s header\n // list does not contain `Range`, then set response and internalResponse\n // to a network error.\n if (\n response.type === 'opaque' &&\n internalResponse.status === 206 &&\n internalResponse.rangeRequested &&\n !request.headers.contains('range')\n ) {\n response = internalResponse = makeNetworkError()\n }\n\n // 19. If response is not a network error and either request’s method is\n // `HEAD` or `CONNECT`, or internalResponse’s status is a null body status,\n // set internalResponse’s body to null and disregard any enqueuing toward\n // it (if any).\n if (\n response.status !== 0 &&\n (request.method === 'HEAD' ||\n request.method === 'CONNECT' ||\n nullBodyStatus.includes(internalResponse.status))\n ) {\n internalResponse.body = null\n fetchParams.controller.dump = true\n }\n\n // 20. If request’s integrity metadata is not the empty string, then:\n if (request.integrity) {\n // 1. Let processBodyError be this step: run fetch finale given fetchParams\n // and a network error.\n const processBodyError = (reason) =>\n fetchFinale(fetchParams, makeNetworkError(reason))\n\n // 2. If request’s response tainting is \"opaque\", or response’s body is null,\n // then run processBodyError and abort these steps.\n if (request.responseTainting === 'opaque' || response.body == null) {\n processBodyError(response.error)\n return\n }\n\n // 3. Let processBody given bytes be these steps:\n const processBody = (bytes) => {\n // 1. If bytes do not match request’s integrity metadata,\n // then run processBodyError and abort these steps. [SRI]\n if (!bytesMatch(bytes, request.integrity)) {\n processBodyError('integrity mismatch')\n return\n }\n\n // 2. Set response’s body to bytes as a body.\n response.body = safelyExtractBody(bytes)[0]\n\n // 3. Run fetch finale given fetchParams and response.\n fetchFinale(fetchParams, response)\n }\n\n // 4. Fully read response’s body given processBody and processBodyError.\n await fullyReadBody(response.body, processBody, processBodyError)\n } else {\n // 21. Otherwise, run fetch finale given fetchParams and response.\n fetchFinale(fetchParams, response)\n }\n}\n\n// https://fetch.spec.whatwg.org/#concept-scheme-fetch\n// given a fetch params fetchParams\nfunction schemeFetch (fetchParams) {\n // Note: since the connection is destroyed on redirect, which sets fetchParams to a\n // cancelled state, we do not want this condition to trigger *unless* there have been\n // no redirects. See https://github.com/nodejs/undici/issues/1776\n // 1. If fetchParams is canceled, then return the appropriate network error for fetchParams.\n if (isCancelled(fetchParams) && fetchParams.request.redirectCount === 0) {\n return Promise.resolve(makeAppropriateNetworkError(fetchParams))\n }\n\n // 2. Let request be fetchParams’s request.\n const { request } = fetchParams\n\n const { protocol: scheme } = requestCurrentURL(request)\n\n // 3. Switch on request’s current URL’s scheme and run the associated steps:\n switch (scheme) {\n case 'about:': {\n // If request’s current URL’s path is the string \"blank\", then return a new response\n // whose status message is `OK`, header list is « (`Content-Type`, `text/html;charset=utf-8`) »,\n // and body is the empty byte sequence as a body.\n\n // Otherwise, return a network error.\n return Promise.resolve(makeNetworkError('about scheme is not supported'))\n }\n case 'blob:': {\n if (!resolveObjectURL) {\n resolveObjectURL = require('buffer').resolveObjectURL\n }\n\n // 1. Let blobURLEntry be request’s current URL’s blob URL entry.\n const blobURLEntry = requestCurrentURL(request)\n\n // https://github.com/web-platform-tests/wpt/blob/7b0ebaccc62b566a1965396e5be7bb2bc06f841f/FileAPI/url/resources/fetch-tests.js#L52-L56\n // Buffer.resolveObjectURL does not ignore URL queries.\n if (blobURLEntry.search.length !== 0) {\n return Promise.resolve(makeNetworkError('NetworkError when attempting to fetch resource.'))\n }\n\n const blobURLEntryObject = resolveObjectURL(blobURLEntry.toString())\n\n // 2. If request’s method is not `GET`, blobURLEntry is null, or blobURLEntry’s\n // object is not a Blob object, then return a network error.\n if (request.method !== 'GET' || !isBlobLike(blobURLEntryObject)) {\n return Promise.resolve(makeNetworkError('invalid method'))\n }\n\n // 3. Let bodyWithType be the result of safely extracting blobURLEntry’s object.\n const bodyWithType = safelyExtractBody(blobURLEntryObject)\n\n // 4. Let body be bodyWithType’s body.\n const body = bodyWithType[0]\n\n // 5. Let length be body’s length, serialized and isomorphic encoded.\n const length = isomorphicEncode(`${body.length}`)\n\n // 6. Let type be bodyWithType’s type if it is non-null; otherwise the empty byte sequence.\n const type = bodyWithType[1] ?? ''\n\n // 7. Return a new response whose status message is `OK`, header list is\n // « (`Content-Length`, length), (`Content-Type`, type) », and body is body.\n const response = makeResponse({\n statusText: 'OK',\n headersList: [\n ['content-length', { name: 'Content-Length', value: length }],\n ['content-type', { name: 'Content-Type', value: type }]\n ]\n })\n\n response.body = body\n\n return Promise.resolve(response)\n }\n case 'data:': {\n // 1. Let dataURLStruct be the result of running the\n // data: URL processor on request’s current URL.\n const currentURL = requestCurrentURL(request)\n const dataURLStruct = dataURLProcessor(currentURL)\n\n // 2. If dataURLStruct is failure, then return a\n // network error.\n if (dataURLStruct === 'failure') {\n return Promise.resolve(makeNetworkError('failed to fetch the data URL'))\n }\n\n // 3. Let mimeType be dataURLStruct’s MIME type, serialized.\n const mimeType = serializeAMimeType(dataURLStruct.mimeType)\n\n // 4. Return a response whose status message is `OK`,\n // header list is « (`Content-Type`, mimeType) »,\n // and body is dataURLStruct’s body as a body.\n return Promise.resolve(makeResponse({\n statusText: 'OK',\n headersList: [\n ['content-type', { name: 'Content-Type', value: mimeType }]\n ],\n body: safelyExtractBody(dataURLStruct.body)[0]\n }))\n }\n case 'file:': {\n // For now, unfortunate as it is, file URLs are left as an exercise for the reader.\n // When in doubt, return a network error.\n return Promise.resolve(makeNetworkError('not implemented... yet...'))\n }\n case 'http:':\n case 'https:': {\n // Return the result of running HTTP fetch given fetchParams.\n\n return httpFetch(fetchParams)\n .catch((err) => makeNetworkError(err))\n }\n default: {\n return Promise.resolve(makeNetworkError('unknown scheme'))\n }\n }\n}\n\n// https://fetch.spec.whatwg.org/#finalize-response\nfunction finalizeResponse (fetchParams, response) {\n // 1. Set fetchParams’s request’s done flag.\n fetchParams.request.done = true\n\n // 2, If fetchParams’s process response done is not null, then queue a fetch\n // task to run fetchParams’s process response done given response, with\n // fetchParams’s task destination.\n if (fetchParams.processResponseDone != null) {\n queueMicrotask(() => fetchParams.processResponseDone(response))\n }\n}\n\n// https://fetch.spec.whatwg.org/#fetch-finale\nfunction fetchFinale (fetchParams, response) {\n // 1. If response is a network error, then:\n if (response.type === 'error') {\n // 1. Set response’s URL list to « fetchParams’s request’s URL list[0] ».\n response.urlList = [fetchParams.request.urlList[0]]\n\n // 2. Set response’s timing info to the result of creating an opaque timing\n // info for fetchParams’s timing info.\n response.timingInfo = createOpaqueTimingInfo({\n startTime: fetchParams.timingInfo.startTime\n })\n }\n\n // 2. Let processResponseEndOfBody be the following steps:\n const processResponseEndOfBody = () => {\n // 1. Set fetchParams’s request’s done flag.\n fetchParams.request.done = true\n\n // If fetchParams’s process response end-of-body is not null,\n // then queue a fetch task to run fetchParams’s process response\n // end-of-body given response with fetchParams’s task destination.\n if (fetchParams.processResponseEndOfBody != null) {\n queueMicrotask(() => fetchParams.processResponseEndOfBody(response))\n }\n }\n\n // 3. If fetchParams’s process response is non-null, then queue a fetch task\n // to run fetchParams’s process response given response, with fetchParams’s\n // task destination.\n if (fetchParams.processResponse != null) {\n queueMicrotask(() => fetchParams.processResponse(response))\n }\n\n // 4. If response’s body is null, then run processResponseEndOfBody.\n if (response.body == null) {\n processResponseEndOfBody()\n } else {\n // 5. Otherwise:\n\n // 1. Let transformStream be a new a TransformStream.\n\n // 2. Let identityTransformAlgorithm be an algorithm which, given chunk,\n // enqueues chunk in transformStream.\n const identityTransformAlgorithm = (chunk, controller) => {\n controller.enqueue(chunk)\n }\n\n // 3. Set up transformStream with transformAlgorithm set to identityTransformAlgorithm\n // and flushAlgorithm set to processResponseEndOfBody.\n const transformStream = new TransformStream({\n start () {},\n transform: identityTransformAlgorithm,\n flush: processResponseEndOfBody\n }, {\n size () {\n return 1\n }\n }, {\n size () {\n return 1\n }\n })\n\n // 4. Set response’s body to the result of piping response’s body through transformStream.\n response.body = { stream: response.body.stream.pipeThrough(transformStream) }\n }\n\n // 6. If fetchParams’s process response consume body is non-null, then:\n if (fetchParams.processResponseConsumeBody != null) {\n // 1. Let processBody given nullOrBytes be this step: run fetchParams’s\n // process response consume body given response and nullOrBytes.\n const processBody = (nullOrBytes) => fetchParams.processResponseConsumeBody(response, nullOrBytes)\n\n // 2. Let processBodyError be this step: run fetchParams’s process\n // response consume body given response and failure.\n const processBodyError = (failure) => fetchParams.processResponseConsumeBody(response, failure)\n\n // 3. If response’s body is null, then queue a fetch task to run processBody\n // given null, with fetchParams’s task destination.\n if (response.body == null) {\n queueMicrotask(() => processBody(null))\n } else {\n // 4. Otherwise, fully read response’s body given processBody, processBodyError,\n // and fetchParams’s task destination.\n return fullyReadBody(response.body, processBody, processBodyError)\n }\n return Promise.resolve()\n }\n}\n\n// https://fetch.spec.whatwg.org/#http-fetch\nasync function httpFetch (fetchParams) {\n // 1. Let request be fetchParams’s request.\n const request = fetchParams.request\n\n // 2. Let response be null.\n let response = null\n\n // 3. Let actualResponse be null.\n let actualResponse = null\n\n // 4. Let timingInfo be fetchParams’s timing info.\n const timingInfo = fetchParams.timingInfo\n\n // 5. If request’s service-workers mode is \"all\", then:\n if (request.serviceWorkers === 'all') {\n // TODO\n }\n\n // 6. If response is null, then:\n if (response === null) {\n // 1. If makeCORSPreflight is true and one of these conditions is true:\n // TODO\n\n // 2. If request’s redirect mode is \"follow\", then set request’s\n // service-workers mode to \"none\".\n if (request.redirect === 'follow') {\n request.serviceWorkers = 'none'\n }\n\n // 3. Set response and actualResponse to the result of running\n // HTTP-network-or-cache fetch given fetchParams.\n actualResponse = response = await httpNetworkOrCacheFetch(fetchParams)\n\n // 4. If request’s response tainting is \"cors\" and a CORS check\n // for request and response returns failure, then return a network error.\n if (\n request.responseTainting === 'cors' &&\n corsCheck(request, response) === 'failure'\n ) {\n return makeNetworkError('cors failure')\n }\n\n // 5. If the TAO check for request and response returns failure, then set\n // request’s timing allow failed flag.\n if (TAOCheck(request, response) === 'failure') {\n request.timingAllowFailed = true\n }\n }\n\n // 7. If either request’s response tainting or response’s type\n // is \"opaque\", and the cross-origin resource policy check with\n // request’s origin, request’s client, request’s destination,\n // and actualResponse returns blocked, then return a network error.\n if (\n (request.responseTainting === 'opaque' || response.type === 'opaque') &&\n crossOriginResourcePolicyCheck(\n request.origin,\n request.client,\n request.destination,\n actualResponse\n ) === 'blocked'\n ) {\n return makeNetworkError('blocked')\n }\n\n // 8. If actualResponse’s status is a redirect status, then:\n if (redirectStatusSet.has(actualResponse.status)) {\n // 1. If actualResponse’s status is not 303, request’s body is not null,\n // and the connection uses HTTP/2, then user agents may, and are even\n // encouraged to, transmit an RST_STREAM frame.\n // See, https://github.com/whatwg/fetch/issues/1288\n if (request.redirect !== 'manual') {\n fetchParams.controller.connection.destroy()\n }\n\n // 2. Switch on request’s redirect mode:\n if (request.redirect === 'error') {\n // Set response to a network error.\n response = makeNetworkError('unexpected redirect')\n } else if (request.redirect === 'manual') {\n // Set response to an opaque-redirect filtered response whose internal\n // response is actualResponse.\n // NOTE(spec): On the web this would return an `opaqueredirect` response,\n // but that doesn't make sense server side.\n // See https://github.com/nodejs/undici/issues/1193.\n response = actualResponse\n } else if (request.redirect === 'follow') {\n // Set response to the result of running HTTP-redirect fetch given\n // fetchParams and response.\n response = await httpRedirectFetch(fetchParams, response)\n } else {\n assert(false)\n }\n }\n\n // 9. Set response’s timing info to timingInfo.\n response.timingInfo = timingInfo\n\n // 10. Return response.\n return response\n}\n\n// https://fetch.spec.whatwg.org/#http-redirect-fetch\nfunction httpRedirectFetch (fetchParams, response) {\n // 1. Let request be fetchParams’s request.\n const request = fetchParams.request\n\n // 2. Let actualResponse be response, if response is not a filtered response,\n // and response’s internal response otherwise.\n const actualResponse = response.internalResponse\n ? response.internalResponse\n : response\n\n // 3. Let locationURL be actualResponse’s location URL given request’s current\n // URL’s fragment.\n let locationURL\n\n try {\n locationURL = responseLocationURL(\n actualResponse,\n requestCurrentURL(request).hash\n )\n\n // 4. If locationURL is null, then return response.\n if (locationURL == null) {\n return response\n }\n } catch (err) {\n // 5. If locationURL is failure, then return a network error.\n return Promise.resolve(makeNetworkError(err))\n }\n\n // 6. If locationURL’s scheme is not an HTTP(S) scheme, then return a network\n // error.\n if (!urlIsHttpHttpsScheme(locationURL)) {\n return Promise.resolve(makeNetworkError('URL scheme must be a HTTP(S) scheme'))\n }\n\n // 7. If request’s redirect count is 20, then return a network error.\n if (request.redirectCount === 20) {\n return Promise.resolve(makeNetworkError('redirect count exceeded'))\n }\n\n // 8. Increase request’s redirect count by 1.\n request.redirectCount += 1\n\n // 9. If request’s mode is \"cors\", locationURL includes credentials, and\n // request’s origin is not same origin with locationURL’s origin, then return\n // a network error.\n if (\n request.mode === 'cors' &&\n (locationURL.username || locationURL.password) &&\n !sameOrigin(request, locationURL)\n ) {\n return Promise.resolve(makeNetworkError('cross origin not allowed for request mode \"cors\"'))\n }\n\n // 10. If request’s response tainting is \"cors\" and locationURL includes\n // credentials, then return a network error.\n if (\n request.responseTainting === 'cors' &&\n (locationURL.username || locationURL.password)\n ) {\n return Promise.resolve(makeNetworkError(\n 'URL cannot contain credentials for request mode \"cors\"'\n ))\n }\n\n // 11. If actualResponse’s status is not 303, request’s body is non-null,\n // and request’s body’s source is null, then return a network error.\n if (\n actualResponse.status !== 303 &&\n request.body != null &&\n request.body.source == null\n ) {\n return Promise.resolve(makeNetworkError())\n }\n\n // 12. If one of the following is true\n // - actualResponse’s status is 301 or 302 and request’s method is `POST`\n // - actualResponse’s status is 303 and request’s method is not `GET` or `HEAD`\n if (\n ([301, 302].includes(actualResponse.status) && request.method === 'POST') ||\n (actualResponse.status === 303 &&\n !GET_OR_HEAD.includes(request.method))\n ) {\n // then:\n // 1. Set request’s method to `GET` and request’s body to null.\n request.method = 'GET'\n request.body = null\n\n // 2. For each headerName of request-body-header name, delete headerName from\n // request’s header list.\n for (const headerName of requestBodyHeader) {\n request.headersList.delete(headerName)\n }\n }\n\n // 13. If request’s current URL’s origin is not same origin with locationURL’s\n // origin, then for each headerName of CORS non-wildcard request-header name,\n // delete headerName from request’s header list.\n if (!sameOrigin(requestCurrentURL(request), locationURL)) {\n // https://fetch.spec.whatwg.org/#cors-non-wildcard-request-header-name\n request.headersList.delete('authorization')\n\n // https://fetch.spec.whatwg.org/#authentication-entries\n request.headersList.delete('proxy-authorization', true)\n\n // \"Cookie\" and \"Host\" are forbidden request-headers, which undici doesn't implement.\n request.headersList.delete('cookie')\n request.headersList.delete('host')\n }\n\n // 14. If request’s body is non-null, then set request’s body to the first return\n // value of safely extracting request’s body’s source.\n if (request.body != null) {\n assert(request.body.source != null)\n request.body = safelyExtractBody(request.body.source)[0]\n }\n\n // 15. Let timingInfo be fetchParams’s timing info.\n const timingInfo = fetchParams.timingInfo\n\n // 16. Set timingInfo’s redirect end time and post-redirect start time to the\n // coarsened shared current time given fetchParams’s cross-origin isolated\n // capability.\n timingInfo.redirectEndTime = timingInfo.postRedirectStartTime =\n coarsenedSharedCurrentTime(fetchParams.crossOriginIsolatedCapability)\n\n // 17. If timingInfo’s redirect start time is 0, then set timingInfo’s\n // redirect start time to timingInfo’s start time.\n if (timingInfo.redirectStartTime === 0) {\n timingInfo.redirectStartTime = timingInfo.startTime\n }\n\n // 18. Append locationURL to request’s URL list.\n request.urlList.push(locationURL)\n\n // 19. Invoke set request’s referrer policy on redirect on request and\n // actualResponse.\n setRequestReferrerPolicyOnRedirect(request, actualResponse)\n\n // 20. Return the result of running main fetch given fetchParams and true.\n return mainFetch(fetchParams, true)\n}\n\n// https://fetch.spec.whatwg.org/#http-network-or-cache-fetch\nasync function httpNetworkOrCacheFetch (\n fetchParams,\n isAuthenticationFetch = false,\n isNewConnectionFetch = false\n) {\n // 1. Let request be fetchParams’s request.\n const request = fetchParams.request\n\n // 2. Let httpFetchParams be null.\n let httpFetchParams = null\n\n // 3. Let httpRequest be null.\n let httpRequest = null\n\n // 4. Let response be null.\n let response = null\n\n // 5. Let storedResponse be null.\n // TODO: cache\n\n // 6. Let httpCache be null.\n const httpCache = null\n\n // 7. Let the revalidatingFlag be unset.\n const revalidatingFlag = false\n\n // 8. Run these steps, but abort when the ongoing fetch is terminated:\n\n // 1. If request’s window is \"no-window\" and request’s redirect mode is\n // \"error\", then set httpFetchParams to fetchParams and httpRequest to\n // request.\n if (request.window === 'no-window' && request.redirect === 'error') {\n httpFetchParams = fetchParams\n httpRequest = request\n } else {\n // Otherwise:\n\n // 1. Set httpRequest to a clone of request.\n httpRequest = makeRequest(request)\n\n // 2. Set httpFetchParams to a copy of fetchParams.\n httpFetchParams = { ...fetchParams }\n\n // 3. Set httpFetchParams’s request to httpRequest.\n httpFetchParams.request = httpRequest\n }\n\n // 3. Let includeCredentials be true if one of\n const includeCredentials =\n request.credentials === 'include' ||\n (request.credentials === 'same-origin' &&\n request.responseTainting === 'basic')\n\n // 4. Let contentLength be httpRequest’s body’s length, if httpRequest’s\n // body is non-null; otherwise null.\n const contentLength = httpRequest.body ? httpRequest.body.length : null\n\n // 5. Let contentLengthHeaderValue be null.\n let contentLengthHeaderValue = null\n\n // 6. If httpRequest’s body is null and httpRequest’s method is `POST` or\n // `PUT`, then set contentLengthHeaderValue to `0`.\n if (\n httpRequest.body == null &&\n ['POST', 'PUT'].includes(httpRequest.method)\n ) {\n contentLengthHeaderValue = '0'\n }\n\n // 7. If contentLength is non-null, then set contentLengthHeaderValue to\n // contentLength, serialized and isomorphic encoded.\n if (contentLength != null) {\n contentLengthHeaderValue = isomorphicEncode(`${contentLength}`)\n }\n\n // 8. If contentLengthHeaderValue is non-null, then append\n // `Content-Length`/contentLengthHeaderValue to httpRequest’s header\n // list.\n if (contentLengthHeaderValue != null) {\n httpRequest.headersList.append('content-length', contentLengthHeaderValue)\n }\n\n // 9. If contentLengthHeaderValue is non-null, then append (`Content-Length`,\n // contentLengthHeaderValue) to httpRequest’s header list.\n\n // 10. If contentLength is non-null and httpRequest’s keepalive is true,\n // then:\n if (contentLength != null && httpRequest.keepalive) {\n // NOTE: keepalive is a noop outside of browser context.\n }\n\n // 11. If httpRequest’s referrer is a URL, then append\n // `Referer`/httpRequest’s referrer, serialized and isomorphic encoded,\n // to httpRequest’s header list.\n if (httpRequest.referrer instanceof URL) {\n httpRequest.headersList.append('referer', isomorphicEncode(httpRequest.referrer.href))\n }\n\n // 12. Append a request `Origin` header for httpRequest.\n appendRequestOriginHeader(httpRequest)\n\n // 13. Append the Fetch metadata headers for httpRequest. [FETCH-METADATA]\n appendFetchMetadata(httpRequest)\n\n // 14. If httpRequest’s header list does not contain `User-Agent`, then\n // user agents should append `User-Agent`/default `User-Agent` value to\n // httpRequest’s header list.\n if (!httpRequest.headersList.contains('user-agent')) {\n httpRequest.headersList.append('user-agent', typeof esbuildDetection === 'undefined' ? 'undici' : 'node')\n }\n\n // 15. If httpRequest’s cache mode is \"default\" and httpRequest’s header\n // list contains `If-Modified-Since`, `If-None-Match`,\n // `If-Unmodified-Since`, `If-Match`, or `If-Range`, then set\n // httpRequest’s cache mode to \"no-store\".\n if (\n httpRequest.cache === 'default' &&\n (httpRequest.headersList.contains('if-modified-since') ||\n httpRequest.headersList.contains('if-none-match') ||\n httpRequest.headersList.contains('if-unmodified-since') ||\n httpRequest.headersList.contains('if-match') ||\n httpRequest.headersList.contains('if-range'))\n ) {\n httpRequest.cache = 'no-store'\n }\n\n // 16. If httpRequest’s cache mode is \"no-cache\", httpRequest’s prevent\n // no-cache cache-control header modification flag is unset, and\n // httpRequest’s header list does not contain `Cache-Control`, then append\n // `Cache-Control`/`max-age=0` to httpRequest’s header list.\n if (\n httpRequest.cache === 'no-cache' &&\n !httpRequest.preventNoCacheCacheControlHeaderModification &&\n !httpRequest.headersList.contains('cache-control')\n ) {\n httpRequest.headersList.append('cache-control', 'max-age=0')\n }\n\n // 17. If httpRequest’s cache mode is \"no-store\" or \"reload\", then:\n if (httpRequest.cache === 'no-store' || httpRequest.cache === 'reload') {\n // 1. If httpRequest’s header list does not contain `Pragma`, then append\n // `Pragma`/`no-cache` to httpRequest’s header list.\n if (!httpRequest.headersList.contains('pragma')) {\n httpRequest.headersList.append('pragma', 'no-cache')\n }\n\n // 2. If httpRequest’s header list does not contain `Cache-Control`,\n // then append `Cache-Control`/`no-cache` to httpRequest’s header list.\n if (!httpRequest.headersList.contains('cache-control')) {\n httpRequest.headersList.append('cache-control', 'no-cache')\n }\n }\n\n // 18. If httpRequest’s header list contains `Range`, then append\n // `Accept-Encoding`/`identity` to httpRequest’s header list.\n if (httpRequest.headersList.contains('range')) {\n httpRequest.headersList.append('accept-encoding', 'identity')\n }\n\n // 19. Modify httpRequest’s header list per HTTP. Do not append a given\n // header if httpRequest’s header list contains that header’s name.\n // TODO: https://github.com/whatwg/fetch/issues/1285#issuecomment-896560129\n if (!httpRequest.headersList.contains('accept-encoding')) {\n if (urlHasHttpsScheme(requestCurrentURL(httpRequest))) {\n httpRequest.headersList.append('accept-encoding', 'br, gzip, deflate')\n } else {\n httpRequest.headersList.append('accept-encoding', 'gzip, deflate')\n }\n }\n\n httpRequest.headersList.delete('host')\n\n // 20. If includeCredentials is true, then:\n if (includeCredentials) {\n // 1. If the user agent is not configured to block cookies for httpRequest\n // (see section 7 of [COOKIES]), then:\n // TODO: credentials\n // 2. If httpRequest’s header list does not contain `Authorization`, then:\n // TODO: credentials\n }\n\n // 21. If there’s a proxy-authentication entry, use it as appropriate.\n // TODO: proxy-authentication\n\n // 22. Set httpCache to the result of determining the HTTP cache\n // partition, given httpRequest.\n // TODO: cache\n\n // 23. If httpCache is null, then set httpRequest’s cache mode to\n // \"no-store\".\n if (httpCache == null) {\n httpRequest.cache = 'no-store'\n }\n\n // 24. If httpRequest’s cache mode is neither \"no-store\" nor \"reload\",\n // then:\n if (httpRequest.mode !== 'no-store' && httpRequest.mode !== 'reload') {\n // TODO: cache\n }\n\n // 9. If aborted, then return the appropriate network error for fetchParams.\n // TODO\n\n // 10. If response is null, then:\n if (response == null) {\n // 1. If httpRequest’s cache mode is \"only-if-cached\", then return a\n // network error.\n if (httpRequest.mode === 'only-if-cached') {\n return makeNetworkError('only if cached')\n }\n\n // 2. Let forwardResponse be the result of running HTTP-network fetch\n // given httpFetchParams, includeCredentials, and isNewConnectionFetch.\n const forwardResponse = await httpNetworkFetch(\n httpFetchParams,\n includeCredentials,\n isNewConnectionFetch\n )\n\n // 3. If httpRequest’s method is unsafe and forwardResponse’s status is\n // in the range 200 to 399, inclusive, invalidate appropriate stored\n // responses in httpCache, as per the \"Invalidation\" chapter of HTTP\n // Caching, and set storedResponse to null. [HTTP-CACHING]\n if (\n !safeMethodsSet.has(httpRequest.method) &&\n forwardResponse.status >= 200 &&\n forwardResponse.status <= 399\n ) {\n // TODO: cache\n }\n\n // 4. If the revalidatingFlag is set and forwardResponse’s status is 304,\n // then:\n if (revalidatingFlag && forwardResponse.status === 304) {\n // TODO: cache\n }\n\n // 5. If response is null, then:\n if (response == null) {\n // 1. Set response to forwardResponse.\n response = forwardResponse\n\n // 2. Store httpRequest and forwardResponse in httpCache, as per the\n // \"Storing Responses in Caches\" chapter of HTTP Caching. [HTTP-CACHING]\n // TODO: cache\n }\n }\n\n // 11. Set response’s URL list to a clone of httpRequest’s URL list.\n response.urlList = [...httpRequest.urlList]\n\n // 12. If httpRequest’s header list contains `Range`, then set response’s\n // range-requested flag.\n if (httpRequest.headersList.contains('range')) {\n response.rangeRequested = true\n }\n\n // 13. Set response’s request-includes-credentials to includeCredentials.\n response.requestIncludesCredentials = includeCredentials\n\n // 14. If response’s status is 401, httpRequest’s response tainting is not\n // \"cors\", includeCredentials is true, and request’s window is an environment\n // settings object, then:\n // TODO\n\n // 15. If response’s status is 407, then:\n if (response.status === 407) {\n // 1. If request’s window is \"no-window\", then return a network error.\n if (request.window === 'no-window') {\n return makeNetworkError()\n }\n\n // 2. ???\n\n // 3. If fetchParams is canceled, then return the appropriate network error for fetchParams.\n if (isCancelled(fetchParams)) {\n return makeAppropriateNetworkError(fetchParams)\n }\n\n // 4. Prompt the end user as appropriate in request’s window and store\n // the result as a proxy-authentication entry. [HTTP-AUTH]\n // TODO: Invoke some kind of callback?\n\n // 5. Set response to the result of running HTTP-network-or-cache fetch given\n // fetchParams.\n // TODO\n return makeNetworkError('proxy authentication required')\n }\n\n // 16. If all of the following are true\n if (\n // response’s status is 421\n response.status === 421 &&\n // isNewConnectionFetch is false\n !isNewConnectionFetch &&\n // request’s body is null, or request’s body is non-null and request’s body’s source is non-null\n (request.body == null || request.body.source != null)\n ) {\n // then:\n\n // 1. If fetchParams is canceled, then return the appropriate network error for fetchParams.\n if (isCancelled(fetchParams)) {\n return makeAppropriateNetworkError(fetchParams)\n }\n\n // 2. Set response to the result of running HTTP-network-or-cache\n // fetch given fetchParams, isAuthenticationFetch, and true.\n\n // TODO (spec): The spec doesn't specify this but we need to cancel\n // the active response before we can start a new one.\n // https://github.com/whatwg/fetch/issues/1293\n fetchParams.controller.connection.destroy()\n\n response = await httpNetworkOrCacheFetch(\n fetchParams,\n isAuthenticationFetch,\n true\n )\n }\n\n // 17. If isAuthenticationFetch is true, then create an authentication entry\n if (isAuthenticationFetch) {\n // TODO\n }\n\n // 18. Return response.\n return response\n}\n\n// https://fetch.spec.whatwg.org/#http-network-fetch\nasync function httpNetworkFetch (\n fetchParams,\n includeCredentials = false,\n forceNewConnection = false\n) {\n assert(!fetchParams.controller.connection || fetchParams.controller.connection.destroyed)\n\n fetchParams.controller.connection = {\n abort: null,\n destroyed: false,\n destroy (err) {\n if (!this.destroyed) {\n this.destroyed = true\n this.abort?.(err ?? new DOMException('The operation was aborted.', 'AbortError'))\n }\n }\n }\n\n // 1. Let request be fetchParams’s request.\n const request = fetchParams.request\n\n // 2. Let response be null.\n let response = null\n\n // 3. Let timingInfo be fetchParams’s timing info.\n const timingInfo = fetchParams.timingInfo\n\n // 4. Let httpCache be the result of determining the HTTP cache partition,\n // given request.\n // TODO: cache\n const httpCache = null\n\n // 5. If httpCache is null, then set request’s cache mode to \"no-store\".\n if (httpCache == null) {\n request.cache = 'no-store'\n }\n\n // 6. Let networkPartitionKey be the result of determining the network\n // partition key given request.\n // TODO\n\n // 7. Let newConnection be \"yes\" if forceNewConnection is true; otherwise\n // \"no\".\n const newConnection = forceNewConnection ? 'yes' : 'no' // eslint-disable-line no-unused-vars\n\n // 8. Switch on request’s mode:\n if (request.mode === 'websocket') {\n // Let connection be the result of obtaining a WebSocket connection,\n // given request’s current URL.\n // TODO\n } else {\n // Let connection be the result of obtaining a connection, given\n // networkPartitionKey, request’s current URL’s origin,\n // includeCredentials, and forceNewConnection.\n // TODO\n }\n\n // 9. Run these steps, but abort when the ongoing fetch is terminated:\n\n // 1. If connection is failure, then return a network error.\n\n // 2. Set timingInfo’s final connection timing info to the result of\n // calling clamp and coarsen connection timing info with connection’s\n // timing info, timingInfo’s post-redirect start time, and fetchParams’s\n // cross-origin isolated capability.\n\n // 3. If connection is not an HTTP/2 connection, request’s body is non-null,\n // and request’s body’s source is null, then append (`Transfer-Encoding`,\n // `chunked`) to request’s header list.\n\n // 4. Set timingInfo’s final network-request start time to the coarsened\n // shared current time given fetchParams’s cross-origin isolated\n // capability.\n\n // 5. Set response to the result of making an HTTP request over connection\n // using request with the following caveats:\n\n // - Follow the relevant requirements from HTTP. [HTTP] [HTTP-SEMANTICS]\n // [HTTP-COND] [HTTP-CACHING] [HTTP-AUTH]\n\n // - If request’s body is non-null, and request’s body’s source is null,\n // then the user agent may have a buffer of up to 64 kibibytes and store\n // a part of request’s body in that buffer. If the user agent reads from\n // request’s body beyond that buffer’s size and the user agent needs to\n // resend request, then instead return a network error.\n\n // - Set timingInfo’s final network-response start time to the coarsened\n // shared current time given fetchParams’s cross-origin isolated capability,\n // immediately after the user agent’s HTTP parser receives the first byte\n // of the response (e.g., frame header bytes for HTTP/2 or response status\n // line for HTTP/1.x).\n\n // - Wait until all the headers are transmitted.\n\n // - Any responses whose status is in the range 100 to 199, inclusive,\n // and is not 101, are to be ignored, except for the purposes of setting\n // timingInfo’s final network-response start time above.\n\n // - If request’s header list contains `Transfer-Encoding`/`chunked` and\n // response is transferred via HTTP/1.0 or older, then return a network\n // error.\n\n // - If the HTTP request results in a TLS client certificate dialog, then:\n\n // 1. If request’s window is an environment settings object, make the\n // dialog available in request’s window.\n\n // 2. Otherwise, return a network error.\n\n // To transmit request’s body body, run these steps:\n let requestBody = null\n // 1. If body is null and fetchParams’s process request end-of-body is\n // non-null, then queue a fetch task given fetchParams’s process request\n // end-of-body and fetchParams’s task destination.\n if (request.body == null && fetchParams.processRequestEndOfBody) {\n queueMicrotask(() => fetchParams.processRequestEndOfBody())\n } else if (request.body != null) {\n // 2. Otherwise, if body is non-null:\n\n // 1. Let processBodyChunk given bytes be these steps:\n const processBodyChunk = async function * (bytes) {\n // 1. If the ongoing fetch is terminated, then abort these steps.\n if (isCancelled(fetchParams)) {\n return\n }\n\n // 2. Run this step in parallel: transmit bytes.\n yield bytes\n\n // 3. If fetchParams’s process request body is non-null, then run\n // fetchParams’s process request body given bytes’s length.\n fetchParams.processRequestBodyChunkLength?.(bytes.byteLength)\n }\n\n // 2. Let processEndOfBody be these steps:\n const processEndOfBody = () => {\n // 1. If fetchParams is canceled, then abort these steps.\n if (isCancelled(fetchParams)) {\n return\n }\n\n // 2. If fetchParams’s process request end-of-body is non-null,\n // then run fetchParams’s process request end-of-body.\n if (fetchParams.processRequestEndOfBody) {\n fetchParams.processRequestEndOfBody()\n }\n }\n\n // 3. Let processBodyError given e be these steps:\n const processBodyError = (e) => {\n // 1. If fetchParams is canceled, then abort these steps.\n if (isCancelled(fetchParams)) {\n return\n }\n\n // 2. If e is an \"AbortError\" DOMException, then abort fetchParams’s controller.\n if (e.name === 'AbortError') {\n fetchParams.controller.abort()\n } else {\n fetchParams.controller.terminate(e)\n }\n }\n\n // 4. Incrementally read request’s body given processBodyChunk, processEndOfBody,\n // processBodyError, and fetchParams’s task destination.\n requestBody = (async function * () {\n try {\n for await (const bytes of request.body.stream) {\n yield * processBodyChunk(bytes)\n }\n processEndOfBody()\n } catch (err) {\n processBodyError(err)\n }\n })()\n }\n\n try {\n // socket is only provided for websockets\n const { body, status, statusText, headersList, socket } = await dispatch({ body: requestBody })\n\n if (socket) {\n response = makeResponse({ status, statusText, headersList, socket })\n } else {\n const iterator = body[Symbol.asyncIterator]()\n fetchParams.controller.next = () => iterator.next()\n\n response = makeResponse({ status, statusText, headersList })\n }\n } catch (err) {\n // 10. If aborted, then:\n if (err.name === 'AbortError') {\n // 1. If connection uses HTTP/2, then transmit an RST_STREAM frame.\n fetchParams.controller.connection.destroy()\n\n // 2. Return the appropriate network error for fetchParams.\n return makeAppropriateNetworkError(fetchParams, err)\n }\n\n return makeNetworkError(err)\n }\n\n // 11. Let pullAlgorithm be an action that resumes the ongoing fetch\n // if it is suspended.\n const pullAlgorithm = () => {\n fetchParams.controller.resume()\n }\n\n // 12. Let cancelAlgorithm be an algorithm that aborts fetchParams’s\n // controller with reason, given reason.\n const cancelAlgorithm = (reason) => {\n fetchParams.controller.abort(reason)\n }\n\n // 13. Let highWaterMark be a non-negative, non-NaN number, chosen by\n // the user agent.\n // TODO\n\n // 14. Let sizeAlgorithm be an algorithm that accepts a chunk object\n // and returns a non-negative, non-NaN, non-infinite number, chosen by the user agent.\n // TODO\n\n // 15. Let stream be a new ReadableStream.\n // 16. Set up stream with pullAlgorithm set to pullAlgorithm,\n // cancelAlgorithm set to cancelAlgorithm, highWaterMark set to\n // highWaterMark, and sizeAlgorithm set to sizeAlgorithm.\n if (!ReadableStream) {\n ReadableStream = require('stream/web').ReadableStream\n }\n\n const stream = new ReadableStream(\n {\n async start (controller) {\n fetchParams.controller.controller = controller\n },\n async pull (controller) {\n await pullAlgorithm(controller)\n },\n async cancel (reason) {\n await cancelAlgorithm(reason)\n }\n },\n {\n highWaterMark: 0,\n size () {\n return 1\n }\n }\n )\n\n // 17. Run these steps, but abort when the ongoing fetch is terminated:\n\n // 1. Set response’s body to a new body whose stream is stream.\n response.body = { stream }\n\n // 2. If response is not a network error and request’s cache mode is\n // not \"no-store\", then update response in httpCache for request.\n // TODO\n\n // 3. If includeCredentials is true and the user agent is not configured\n // to block cookies for request (see section 7 of [COOKIES]), then run the\n // \"set-cookie-string\" parsing algorithm (see section 5.2 of [COOKIES]) on\n // the value of each header whose name is a byte-case-insensitive match for\n // `Set-Cookie` in response’s header list, if any, and request’s current URL.\n // TODO\n\n // 18. If aborted, then:\n // TODO\n\n // 19. Run these steps in parallel:\n\n // 1. Run these steps, but abort when fetchParams is canceled:\n fetchParams.controller.on('terminated', onAborted)\n fetchParams.controller.resume = async () => {\n // 1. While true\n while (true) {\n // 1-3. See onData...\n\n // 4. Set bytes to the result of handling content codings given\n // codings and bytes.\n let bytes\n let isFailure\n try {\n const { done, value } = await fetchParams.controller.next()\n\n if (isAborted(fetchParams)) {\n break\n }\n\n bytes = done ? undefined : value\n } catch (err) {\n if (fetchParams.controller.ended && !timingInfo.encodedBodySize) {\n // zlib doesn't like empty streams.\n bytes = undefined\n } else {\n bytes = err\n\n // err may be propagated from the result of calling readablestream.cancel,\n // which might not be an error. https://github.com/nodejs/undici/issues/2009\n isFailure = true\n }\n }\n\n if (bytes === undefined) {\n // 2. Otherwise, if the bytes transmission for response’s message\n // body is done normally and stream is readable, then close\n // stream, finalize response for fetchParams and response, and\n // abort these in-parallel steps.\n readableStreamClose(fetchParams.controller.controller)\n\n finalizeResponse(fetchParams, response)\n\n return\n }\n\n // 5. Increase timingInfo’s decoded body size by bytes’s length.\n timingInfo.decodedBodySize += bytes?.byteLength ?? 0\n\n // 6. If bytes is failure, then terminate fetchParams’s controller.\n if (isFailure) {\n fetchParams.controller.terminate(bytes)\n return\n }\n\n // 7. Enqueue a Uint8Array wrapping an ArrayBuffer containing bytes\n // into stream.\n fetchParams.controller.controller.enqueue(new Uint8Array(bytes))\n\n // 8. If stream is errored, then terminate the ongoing fetch.\n if (isErrored(stream)) {\n fetchParams.controller.terminate()\n return\n }\n\n // 9. If stream doesn’t need more data ask the user agent to suspend\n // the ongoing fetch.\n if (!fetchParams.controller.controller.desiredSize) {\n return\n }\n }\n }\n\n // 2. If aborted, then:\n function onAborted (reason) {\n // 2. If fetchParams is aborted, then:\n if (isAborted(fetchParams)) {\n // 1. Set response’s aborted flag.\n response.aborted = true\n\n // 2. If stream is readable, then error stream with the result of\n // deserialize a serialized abort reason given fetchParams’s\n // controller’s serialized abort reason and an\n // implementation-defined realm.\n if (isReadable(stream)) {\n fetchParams.controller.controller.error(\n fetchParams.controller.serializedAbortReason\n )\n }\n } else {\n // 3. Otherwise, if stream is readable, error stream with a TypeError.\n if (isReadable(stream)) {\n fetchParams.controller.controller.error(new TypeError('terminated', {\n cause: isErrorLike(reason) ? reason : undefined\n }))\n }\n }\n\n // 4. If connection uses HTTP/2, then transmit an RST_STREAM frame.\n // 5. Otherwise, the user agent should close connection unless it would be bad for performance to do so.\n fetchParams.controller.connection.destroy()\n }\n\n // 20. Return response.\n return response\n\n async function dispatch ({ body }) {\n const url = requestCurrentURL(request)\n /** @type {import('../..').Agent} */\n const agent = fetchParams.controller.dispatcher\n\n return new Promise((resolve, reject) => agent.dispatch(\n {\n path: url.pathname + url.search,\n origin: url.origin,\n method: request.method,\n body: fetchParams.controller.dispatcher.isMockActive ? request.body && (request.body.source || request.body.stream) : body,\n headers: request.headersList.entries,\n maxRedirections: 0,\n upgrade: request.mode === 'websocket' ? 'websocket' : undefined\n },\n {\n body: null,\n abort: null,\n\n onConnect (abort) {\n // TODO (fix): Do we need connection here?\n const { connection } = fetchParams.controller\n\n if (connection.destroyed) {\n abort(new DOMException('The operation was aborted.', 'AbortError'))\n } else {\n fetchParams.controller.on('terminated', abort)\n this.abort = connection.abort = abort\n }\n },\n\n onHeaders (status, headersList, resume, statusText) {\n if (status < 200) {\n return\n }\n\n let codings = []\n let location = ''\n\n const headers = new Headers()\n\n // For H2, the headers are a plain JS object\n // We distinguish between them and iterate accordingly\n if (Array.isArray(headersList)) {\n for (let n = 0; n < headersList.length; n += 2) {\n const key = headersList[n + 0].toString('latin1')\n const val = headersList[n + 1].toString('latin1')\n if (key.toLowerCase() === 'content-encoding') {\n // https://www.rfc-editor.org/rfc/rfc7231#section-3.1.2.1\n // \"All content-coding values are case-insensitive...\"\n codings = val.toLowerCase().split(',').map((x) => x.trim())\n } else if (key.toLowerCase() === 'location') {\n location = val\n }\n\n headers[kHeadersList].append(key, val)\n }\n } else {\n const keys = Object.keys(headersList)\n for (const key of keys) {\n const val = headersList[key]\n if (key.toLowerCase() === 'content-encoding') {\n // https://www.rfc-editor.org/rfc/rfc7231#section-3.1.2.1\n // \"All content-coding values are case-insensitive...\"\n codings = val.toLowerCase().split(',').map((x) => x.trim()).reverse()\n } else if (key.toLowerCase() === 'location') {\n location = val\n }\n\n headers[kHeadersList].append(key, val)\n }\n }\n\n this.body = new Readable({ read: resume })\n\n const decoders = []\n\n const willFollow = request.redirect === 'follow' &&\n location &&\n redirectStatusSet.has(status)\n\n // https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Encoding\n if (request.method !== 'HEAD' && request.method !== 'CONNECT' && !nullBodyStatus.includes(status) && !willFollow) {\n for (const coding of codings) {\n // https://www.rfc-editor.org/rfc/rfc9112.html#section-7.2\n if (coding === 'x-gzip' || coding === 'gzip') {\n decoders.push(zlib.createGunzip({\n // Be less strict when decoding compressed responses, since sometimes\n // servers send slightly invalid responses that are still accepted\n // by common browsers.\n // Always using Z_SYNC_FLUSH is what cURL does.\n flush: zlib.constants.Z_SYNC_FLUSH,\n finishFlush: zlib.constants.Z_SYNC_FLUSH\n }))\n } else if (coding === 'deflate') {\n decoders.push(zlib.createInflate())\n } else if (coding === 'br') {\n decoders.push(zlib.createBrotliDecompress())\n } else {\n decoders.length = 0\n break\n }\n }\n }\n\n resolve({\n status,\n statusText,\n headersList: headers[kHeadersList],\n body: decoders.length\n ? pipeline(this.body, ...decoders, () => { })\n : this.body.on('error', () => {})\n })\n\n return true\n },\n\n onData (chunk) {\n if (fetchParams.controller.dump) {\n return\n }\n\n // 1. If one or more bytes have been transmitted from response’s\n // message body, then:\n\n // 1. Let bytes be the transmitted bytes.\n const bytes = chunk\n\n // 2. Let codings be the result of extracting header list values\n // given `Content-Encoding` and response’s header list.\n // See pullAlgorithm.\n\n // 3. Increase timingInfo’s encoded body size by bytes’s length.\n timingInfo.encodedBodySize += bytes.byteLength\n\n // 4. See pullAlgorithm...\n\n return this.body.push(bytes)\n },\n\n onComplete () {\n if (this.abort) {\n fetchParams.controller.off('terminated', this.abort)\n }\n\n fetchParams.controller.ended = true\n\n this.body.push(null)\n },\n\n onError (error) {\n if (this.abort) {\n fetchParams.controller.off('terminated', this.abort)\n }\n\n this.body?.destroy(error)\n\n fetchParams.controller.terminate(error)\n\n reject(error)\n },\n\n onUpgrade (status, headersList, socket) {\n if (status !== 101) {\n return\n }\n\n const headers = new Headers()\n\n for (let n = 0; n < headersList.length; n += 2) {\n const key = headersList[n + 0].toString('latin1')\n const val = headersList[n + 1].toString('latin1')\n\n headers[kHeadersList].append(key, val)\n }\n\n resolve({\n status,\n statusText: STATUS_CODES[status],\n headersList: headers[kHeadersList],\n socket\n })\n\n return true\n }\n }\n ))\n }\n}\n\nmodule.exports = {\n fetch,\n Fetch,\n fetching,\n finalizeAndReportTiming\n}\n","/* globals AbortController */\n\n'use strict'\n\nconst { extractBody, mixinBody, cloneBody } = require('./body')\nconst { Headers, fill: fillHeaders, HeadersList } = require('./headers')\nconst { FinalizationRegistry } = require('../compat/dispatcher-weakref')()\nconst util = require('../core/util')\nconst {\n isValidHTTPToken,\n sameOrigin,\n normalizeMethod,\n makePolicyContainer,\n normalizeMethodRecord\n} = require('./util')\nconst {\n forbiddenMethodsSet,\n corsSafeListedMethodsSet,\n referrerPolicy,\n requestRedirect,\n requestMode,\n requestCredentials,\n requestCache,\n requestDuplex\n} = require('./constants')\nconst { kEnumerableProperty } = util\nconst { kHeaders, kSignal, kState, kGuard, kRealm } = require('./symbols')\nconst { webidl } = require('./webidl')\nconst { getGlobalOrigin } = require('./global')\nconst { URLSerializer } = require('./dataURL')\nconst { kHeadersList, kConstruct } = require('../core/symbols')\nconst assert = require('assert')\nconst { getMaxListeners, setMaxListeners, getEventListeners, defaultMaxListeners } = require('events')\n\nlet TransformStream = globalThis.TransformStream\n\nconst kAbortController = Symbol('abortController')\n\nconst requestFinalizer = new FinalizationRegistry(({ signal, abort }) => {\n signal.removeEventListener('abort', abort)\n})\n\n// https://fetch.spec.whatwg.org/#request-class\nclass Request {\n // https://fetch.spec.whatwg.org/#dom-request\n constructor (input, init = {}) {\n if (input === kConstruct) {\n return\n }\n\n webidl.argumentLengthCheck(arguments, 1, { header: 'Request constructor' })\n\n input = webidl.converters.RequestInfo(input)\n init = webidl.converters.RequestInit(init)\n\n // https://html.spec.whatwg.org/multipage/webappapis.html#environment-settings-object\n this[kRealm] = {\n settingsObject: {\n baseUrl: getGlobalOrigin(),\n get origin () {\n return this.baseUrl?.origin\n },\n policyContainer: makePolicyContainer()\n }\n }\n\n // 1. Let request be null.\n let request = null\n\n // 2. Let fallbackMode be null.\n let fallbackMode = null\n\n // 3. Let baseURL be this’s relevant settings object’s API base URL.\n const baseUrl = this[kRealm].settingsObject.baseUrl\n\n // 4. Let signal be null.\n let signal = null\n\n // 5. If input is a string, then:\n if (typeof input === 'string') {\n // 1. Let parsedURL be the result of parsing input with baseURL.\n // 2. If parsedURL is failure, then throw a TypeError.\n let parsedURL\n try {\n parsedURL = new URL(input, baseUrl)\n } catch (err) {\n throw new TypeError('Failed to parse URL from ' + input, { cause: err })\n }\n\n // 3. If parsedURL includes credentials, then throw a TypeError.\n if (parsedURL.username || parsedURL.password) {\n throw new TypeError(\n 'Request cannot be constructed from a URL that includes credentials: ' +\n input\n )\n }\n\n // 4. Set request to a new request whose URL is parsedURL.\n request = makeRequest({ urlList: [parsedURL] })\n\n // 5. Set fallbackMode to \"cors\".\n fallbackMode = 'cors'\n } else {\n // 6. Otherwise:\n\n // 7. Assert: input is a Request object.\n assert(input instanceof Request)\n\n // 8. Set request to input’s request.\n request = input[kState]\n\n // 9. Set signal to input’s signal.\n signal = input[kSignal]\n }\n\n // 7. Let origin be this’s relevant settings object’s origin.\n const origin = this[kRealm].settingsObject.origin\n\n // 8. Let window be \"client\".\n let window = 'client'\n\n // 9. If request’s window is an environment settings object and its origin\n // is same origin with origin, then set window to request’s window.\n if (\n request.window?.constructor?.name === 'EnvironmentSettingsObject' &&\n sameOrigin(request.window, origin)\n ) {\n window = request.window\n }\n\n // 10. If init[\"window\"] exists and is non-null, then throw a TypeError.\n if (init.window != null) {\n throw new TypeError(`'window' option '${window}' must be null`)\n }\n\n // 11. If init[\"window\"] exists, then set window to \"no-window\".\n if ('window' in init) {\n window = 'no-window'\n }\n\n // 12. Set request to a new request with the following properties:\n request = makeRequest({\n // URL request’s URL.\n // undici implementation note: this is set as the first item in request's urlList in makeRequest\n // method request’s method.\n method: request.method,\n // header list A copy of request’s header list.\n // undici implementation note: headersList is cloned in makeRequest\n headersList: request.headersList,\n // unsafe-request flag Set.\n unsafeRequest: request.unsafeRequest,\n // client This’s relevant settings object.\n client: this[kRealm].settingsObject,\n // window window.\n window,\n // priority request’s priority.\n priority: request.priority,\n // origin request’s origin. The propagation of the origin is only significant for navigation requests\n // being handled by a service worker. In this scenario a request can have an origin that is different\n // from the current client.\n origin: request.origin,\n // referrer request’s referrer.\n referrer: request.referrer,\n // referrer policy request’s referrer policy.\n referrerPolicy: request.referrerPolicy,\n // mode request’s mode.\n mode: request.mode,\n // credentials mode request’s credentials mode.\n credentials: request.credentials,\n // cache mode request’s cache mode.\n cache: request.cache,\n // redirect mode request’s redirect mode.\n redirect: request.redirect,\n // integrity metadata request’s integrity metadata.\n integrity: request.integrity,\n // keepalive request’s keepalive.\n keepalive: request.keepalive,\n // reload-navigation flag request’s reload-navigation flag.\n reloadNavigation: request.reloadNavigation,\n // history-navigation flag request’s history-navigation flag.\n historyNavigation: request.historyNavigation,\n // URL list A clone of request’s URL list.\n urlList: [...request.urlList]\n })\n\n const initHasKey = Object.keys(init).length !== 0\n\n // 13. If init is not empty, then:\n if (initHasKey) {\n // 1. If request’s mode is \"navigate\", then set it to \"same-origin\".\n if (request.mode === 'navigate') {\n request.mode = 'same-origin'\n }\n\n // 2. Unset request’s reload-navigation flag.\n request.reloadNavigation = false\n\n // 3. Unset request’s history-navigation flag.\n request.historyNavigation = false\n\n // 4. Set request’s origin to \"client\".\n request.origin = 'client'\n\n // 5. Set request’s referrer to \"client\"\n request.referrer = 'client'\n\n // 6. Set request’s referrer policy to the empty string.\n request.referrerPolicy = ''\n\n // 7. Set request’s URL to request’s current URL.\n request.url = request.urlList[request.urlList.length - 1]\n\n // 8. Set request’s URL list to « request’s URL ».\n request.urlList = [request.url]\n }\n\n // 14. If init[\"referrer\"] exists, then:\n if (init.referrer !== undefined) {\n // 1. Let referrer be init[\"referrer\"].\n const referrer = init.referrer\n\n // 2. If referrer is the empty string, then set request’s referrer to \"no-referrer\".\n if (referrer === '') {\n request.referrer = 'no-referrer'\n } else {\n // 1. Let parsedReferrer be the result of parsing referrer with\n // baseURL.\n // 2. If parsedReferrer is failure, then throw a TypeError.\n let parsedReferrer\n try {\n parsedReferrer = new URL(referrer, baseUrl)\n } catch (err) {\n throw new TypeError(`Referrer \"${referrer}\" is not a valid URL.`, { cause: err })\n }\n\n // 3. If one of the following is true\n // - parsedReferrer’s scheme is \"about\" and path is the string \"client\"\n // - parsedReferrer’s origin is not same origin with origin\n // then set request’s referrer to \"client\".\n if (\n (parsedReferrer.protocol === 'about:' && parsedReferrer.hostname === 'client') ||\n (origin && !sameOrigin(parsedReferrer, this[kRealm].settingsObject.baseUrl))\n ) {\n request.referrer = 'client'\n } else {\n // 4. Otherwise, set request’s referrer to parsedReferrer.\n request.referrer = parsedReferrer\n }\n }\n }\n\n // 15. If init[\"referrerPolicy\"] exists, then set request’s referrer policy\n // to it.\n if (init.referrerPolicy !== undefined) {\n request.referrerPolicy = init.referrerPolicy\n }\n\n // 16. Let mode be init[\"mode\"] if it exists, and fallbackMode otherwise.\n let mode\n if (init.mode !== undefined) {\n mode = init.mode\n } else {\n mode = fallbackMode\n }\n\n // 17. If mode is \"navigate\", then throw a TypeError.\n if (mode === 'navigate') {\n throw webidl.errors.exception({\n header: 'Request constructor',\n message: 'invalid request mode navigate.'\n })\n }\n\n // 18. If mode is non-null, set request’s mode to mode.\n if (mode != null) {\n request.mode = mode\n }\n\n // 19. If init[\"credentials\"] exists, then set request’s credentials mode\n // to it.\n if (init.credentials !== undefined) {\n request.credentials = init.credentials\n }\n\n // 18. If init[\"cache\"] exists, then set request’s cache mode to it.\n if (init.cache !== undefined) {\n request.cache = init.cache\n }\n\n // 21. If request’s cache mode is \"only-if-cached\" and request’s mode is\n // not \"same-origin\", then throw a TypeError.\n if (request.cache === 'only-if-cached' && request.mode !== 'same-origin') {\n throw new TypeError(\n \"'only-if-cached' can be set only with 'same-origin' mode\"\n )\n }\n\n // 22. If init[\"redirect\"] exists, then set request’s redirect mode to it.\n if (init.redirect !== undefined) {\n request.redirect = init.redirect\n }\n\n // 23. If init[\"integrity\"] exists, then set request’s integrity metadata to it.\n if (init.integrity != null) {\n request.integrity = String(init.integrity)\n }\n\n // 24. If init[\"keepalive\"] exists, then set request’s keepalive to it.\n if (init.keepalive !== undefined) {\n request.keepalive = Boolean(init.keepalive)\n }\n\n // 25. If init[\"method\"] exists, then:\n if (init.method !== undefined) {\n // 1. Let method be init[\"method\"].\n let method = init.method\n\n // 2. If method is not a method or method is a forbidden method, then\n // throw a TypeError.\n if (!isValidHTTPToken(method)) {\n throw new TypeError(`'${method}' is not a valid HTTP method.`)\n }\n\n if (forbiddenMethodsSet.has(method.toUpperCase())) {\n throw new TypeError(`'${method}' HTTP method is unsupported.`)\n }\n\n // 3. Normalize method.\n method = normalizeMethodRecord[method] ?? normalizeMethod(method)\n\n // 4. Set request’s method to method.\n request.method = method\n }\n\n // 26. If init[\"signal\"] exists, then set signal to it.\n if (init.signal !== undefined) {\n signal = init.signal\n }\n\n // 27. Set this’s request to request.\n this[kState] = request\n\n // 28. Set this’s signal to a new AbortSignal object with this’s relevant\n // Realm.\n // TODO: could this be simplified with AbortSignal.any\n // (https://dom.spec.whatwg.org/#dom-abortsignal-any)\n const ac = new AbortController()\n this[kSignal] = ac.signal\n this[kSignal][kRealm] = this[kRealm]\n\n // 29. If signal is not null, then make this’s signal follow signal.\n if (signal != null) {\n if (\n !signal ||\n typeof signal.aborted !== 'boolean' ||\n typeof signal.addEventListener !== 'function'\n ) {\n throw new TypeError(\n \"Failed to construct 'Request': member signal is not of type AbortSignal.\"\n )\n }\n\n if (signal.aborted) {\n ac.abort(signal.reason)\n } else {\n // Keep a strong ref to ac while request object\n // is alive. This is needed to prevent AbortController\n // from being prematurely garbage collected.\n // See, https://github.com/nodejs/undici/issues/1926.\n this[kAbortController] = ac\n\n const acRef = new WeakRef(ac)\n const abort = function () {\n const ac = acRef.deref()\n if (ac !== undefined) {\n ac.abort(this.reason)\n }\n }\n\n // Third-party AbortControllers may not work with these.\n // See, https://github.com/nodejs/undici/pull/1910#issuecomment-1464495619.\n try {\n // If the max amount of listeners is equal to the default, increase it\n // This is only available in node >= v19.9.0\n if (typeof getMaxListeners === 'function' && getMaxListeners(signal) === defaultMaxListeners) {\n setMaxListeners(100, signal)\n } else if (getEventListeners(signal, 'abort').length >= defaultMaxListeners) {\n setMaxListeners(100, signal)\n }\n } catch {}\n\n util.addAbortListener(signal, abort)\n requestFinalizer.register(ac, { signal, abort })\n }\n }\n\n // 30. Set this’s headers to a new Headers object with this’s relevant\n // Realm, whose header list is request’s header list and guard is\n // \"request\".\n this[kHeaders] = new Headers(kConstruct)\n this[kHeaders][kHeadersList] = request.headersList\n this[kHeaders][kGuard] = 'request'\n this[kHeaders][kRealm] = this[kRealm]\n\n // 31. If this’s request’s mode is \"no-cors\", then:\n if (mode === 'no-cors') {\n // 1. If this’s request’s method is not a CORS-safelisted method,\n // then throw a TypeError.\n if (!corsSafeListedMethodsSet.has(request.method)) {\n throw new TypeError(\n `'${request.method} is unsupported in no-cors mode.`\n )\n }\n\n // 2. Set this’s headers’s guard to \"request-no-cors\".\n this[kHeaders][kGuard] = 'request-no-cors'\n }\n\n // 32. If init is not empty, then:\n if (initHasKey) {\n /** @type {HeadersList} */\n const headersList = this[kHeaders][kHeadersList]\n // 1. Let headers be a copy of this’s headers and its associated header\n // list.\n // 2. If init[\"headers\"] exists, then set headers to init[\"headers\"].\n const headers = init.headers !== undefined ? init.headers : new HeadersList(headersList)\n\n // 3. Empty this’s headers’s header list.\n headersList.clear()\n\n // 4. If headers is a Headers object, then for each header in its header\n // list, append header’s name/header’s value to this’s headers.\n if (headers instanceof HeadersList) {\n for (const [key, val] of headers) {\n headersList.append(key, val)\n }\n // Note: Copy the `set-cookie` meta-data.\n headersList.cookies = headers.cookies\n } else {\n // 5. Otherwise, fill this’s headers with headers.\n fillHeaders(this[kHeaders], headers)\n }\n }\n\n // 33. Let inputBody be input’s request’s body if input is a Request\n // object; otherwise null.\n const inputBody = input instanceof Request ? input[kState].body : null\n\n // 34. If either init[\"body\"] exists and is non-null or inputBody is\n // non-null, and request’s method is `GET` or `HEAD`, then throw a\n // TypeError.\n if (\n (init.body != null || inputBody != null) &&\n (request.method === 'GET' || request.method === 'HEAD')\n ) {\n throw new TypeError('Request with GET/HEAD method cannot have body.')\n }\n\n // 35. Let initBody be null.\n let initBody = null\n\n // 36. If init[\"body\"] exists and is non-null, then:\n if (init.body != null) {\n // 1. Let Content-Type be null.\n // 2. Set initBody and Content-Type to the result of extracting\n // init[\"body\"], with keepalive set to request’s keepalive.\n const [extractedBody, contentType] = extractBody(\n init.body,\n request.keepalive\n )\n initBody = extractedBody\n\n // 3, If Content-Type is non-null and this’s headers’s header list does\n // not contain `Content-Type`, then append `Content-Type`/Content-Type to\n // this’s headers.\n if (contentType && !this[kHeaders][kHeadersList].contains('content-type')) {\n this[kHeaders].append('content-type', contentType)\n }\n }\n\n // 37. Let inputOrInitBody be initBody if it is non-null; otherwise\n // inputBody.\n const inputOrInitBody = initBody ?? inputBody\n\n // 38. If inputOrInitBody is non-null and inputOrInitBody’s source is\n // null, then:\n if (inputOrInitBody != null && inputOrInitBody.source == null) {\n // 1. If initBody is non-null and init[\"duplex\"] does not exist,\n // then throw a TypeError.\n if (initBody != null && init.duplex == null) {\n throw new TypeError('RequestInit: duplex option is required when sending a body.')\n }\n\n // 2. If this’s request’s mode is neither \"same-origin\" nor \"cors\",\n // then throw a TypeError.\n if (request.mode !== 'same-origin' && request.mode !== 'cors') {\n throw new TypeError(\n 'If request is made from ReadableStream, mode should be \"same-origin\" or \"cors\"'\n )\n }\n\n // 3. Set this’s request’s use-CORS-preflight flag.\n request.useCORSPreflightFlag = true\n }\n\n // 39. Let finalBody be inputOrInitBody.\n let finalBody = inputOrInitBody\n\n // 40. If initBody is null and inputBody is non-null, then:\n if (initBody == null && inputBody != null) {\n // 1. If input is unusable, then throw a TypeError.\n if (util.isDisturbed(inputBody.stream) || inputBody.stream.locked) {\n throw new TypeError(\n 'Cannot construct a Request with a Request object that has already been used.'\n )\n }\n\n // 2. Set finalBody to the result of creating a proxy for inputBody.\n if (!TransformStream) {\n TransformStream = require('stream/web').TransformStream\n }\n\n // https://streams.spec.whatwg.org/#readablestream-create-a-proxy\n const identityTransform = new TransformStream()\n inputBody.stream.pipeThrough(identityTransform)\n finalBody = {\n source: inputBody.source,\n length: inputBody.length,\n stream: identityTransform.readable\n }\n }\n\n // 41. Set this’s request’s body to finalBody.\n this[kState].body = finalBody\n }\n\n // Returns request’s HTTP method, which is \"GET\" by default.\n get method () {\n webidl.brandCheck(this, Request)\n\n // The method getter steps are to return this’s request’s method.\n return this[kState].method\n }\n\n // Returns the URL of request as a string.\n get url () {\n webidl.brandCheck(this, Request)\n\n // The url getter steps are to return this’s request’s URL, serialized.\n return URLSerializer(this[kState].url)\n }\n\n // Returns a Headers object consisting of the headers associated with request.\n // Note that headers added in the network layer by the user agent will not\n // be accounted for in this object, e.g., the \"Host\" header.\n get headers () {\n webidl.brandCheck(this, Request)\n\n // The headers getter steps are to return this’s headers.\n return this[kHeaders]\n }\n\n // Returns the kind of resource requested by request, e.g., \"document\"\n // or \"script\".\n get destination () {\n webidl.brandCheck(this, Request)\n\n // The destination getter are to return this’s request’s destination.\n return this[kState].destination\n }\n\n // Returns the referrer of request. Its value can be a same-origin URL if\n // explicitly set in init, the empty string to indicate no referrer, and\n // \"about:client\" when defaulting to the global’s default. This is used\n // during fetching to determine the value of the `Referer` header of the\n // request being made.\n get referrer () {\n webidl.brandCheck(this, Request)\n\n // 1. If this’s request’s referrer is \"no-referrer\", then return the\n // empty string.\n if (this[kState].referrer === 'no-referrer') {\n return ''\n }\n\n // 2. If this’s request’s referrer is \"client\", then return\n // \"about:client\".\n if (this[kState].referrer === 'client') {\n return 'about:client'\n }\n\n // Return this’s request’s referrer, serialized.\n return this[kState].referrer.toString()\n }\n\n // Returns the referrer policy associated with request.\n // This is used during fetching to compute the value of the request’s\n // referrer.\n get referrerPolicy () {\n webidl.brandCheck(this, Request)\n\n // The referrerPolicy getter steps are to return this’s request’s referrer policy.\n return this[kState].referrerPolicy\n }\n\n // Returns the mode associated with request, which is a string indicating\n // whether the request will use CORS, or will be restricted to same-origin\n // URLs.\n get mode () {\n webidl.brandCheck(this, Request)\n\n // The mode getter steps are to return this’s request’s mode.\n return this[kState].mode\n }\n\n // Returns the credentials mode associated with request,\n // which is a string indicating whether credentials will be sent with the\n // request always, never, or only when sent to a same-origin URL.\n get credentials () {\n // The credentials getter steps are to return this’s request’s credentials mode.\n return this[kState].credentials\n }\n\n // Returns the cache mode associated with request,\n // which is a string indicating how the request will\n // interact with the browser’s cache when fetching.\n get cache () {\n webidl.brandCheck(this, Request)\n\n // The cache getter steps are to return this’s request’s cache mode.\n return this[kState].cache\n }\n\n // Returns the redirect mode associated with request,\n // which is a string indicating how redirects for the\n // request will be handled during fetching. A request\n // will follow redirects by default.\n get redirect () {\n webidl.brandCheck(this, Request)\n\n // The redirect getter steps are to return this’s request’s redirect mode.\n return this[kState].redirect\n }\n\n // Returns request’s subresource integrity metadata, which is a\n // cryptographic hash of the resource being fetched. Its value\n // consists of multiple hashes separated by whitespace. [SRI]\n get integrity () {\n webidl.brandCheck(this, Request)\n\n // The integrity getter steps are to return this’s request’s integrity\n // metadata.\n return this[kState].integrity\n }\n\n // Returns a boolean indicating whether or not request can outlive the\n // global in which it was created.\n get keepalive () {\n webidl.brandCheck(this, Request)\n\n // The keepalive getter steps are to return this’s request’s keepalive.\n return this[kState].keepalive\n }\n\n // Returns a boolean indicating whether or not request is for a reload\n // navigation.\n get isReloadNavigation () {\n webidl.brandCheck(this, Request)\n\n // The isReloadNavigation getter steps are to return true if this’s\n // request’s reload-navigation flag is set; otherwise false.\n return this[kState].reloadNavigation\n }\n\n // Returns a boolean indicating whether or not request is for a history\n // navigation (a.k.a. back-foward navigation).\n get isHistoryNavigation () {\n webidl.brandCheck(this, Request)\n\n // The isHistoryNavigation getter steps are to return true if this’s request’s\n // history-navigation flag is set; otherwise false.\n return this[kState].historyNavigation\n }\n\n // Returns the signal associated with request, which is an AbortSignal\n // object indicating whether or not request has been aborted, and its\n // abort event handler.\n get signal () {\n webidl.brandCheck(this, Request)\n\n // The signal getter steps are to return this’s signal.\n return this[kSignal]\n }\n\n get body () {\n webidl.brandCheck(this, Request)\n\n return this[kState].body ? this[kState].body.stream : null\n }\n\n get bodyUsed () {\n webidl.brandCheck(this, Request)\n\n return !!this[kState].body && util.isDisturbed(this[kState].body.stream)\n }\n\n get duplex () {\n webidl.brandCheck(this, Request)\n\n return 'half'\n }\n\n // Returns a clone of request.\n clone () {\n webidl.brandCheck(this, Request)\n\n // 1. If this is unusable, then throw a TypeError.\n if (this.bodyUsed || this.body?.locked) {\n throw new TypeError('unusable')\n }\n\n // 2. Let clonedRequest be the result of cloning this’s request.\n const clonedRequest = cloneRequest(this[kState])\n\n // 3. Let clonedRequestObject be the result of creating a Request object,\n // given clonedRequest, this’s headers’s guard, and this’s relevant Realm.\n const clonedRequestObject = new Request(kConstruct)\n clonedRequestObject[kState] = clonedRequest\n clonedRequestObject[kRealm] = this[kRealm]\n clonedRequestObject[kHeaders] = new Headers(kConstruct)\n clonedRequestObject[kHeaders][kHeadersList] = clonedRequest.headersList\n clonedRequestObject[kHeaders][kGuard] = this[kHeaders][kGuard]\n clonedRequestObject[kHeaders][kRealm] = this[kHeaders][kRealm]\n\n // 4. Make clonedRequestObject’s signal follow this’s signal.\n const ac = new AbortController()\n if (this.signal.aborted) {\n ac.abort(this.signal.reason)\n } else {\n util.addAbortListener(\n this.signal,\n () => {\n ac.abort(this.signal.reason)\n }\n )\n }\n clonedRequestObject[kSignal] = ac.signal\n\n // 4. Return clonedRequestObject.\n return clonedRequestObject\n }\n}\n\nmixinBody(Request)\n\nfunction makeRequest (init) {\n // https://fetch.spec.whatwg.org/#requests\n const request = {\n method: 'GET',\n localURLsOnly: false,\n unsafeRequest: false,\n body: null,\n client: null,\n reservedClient: null,\n replacesClientId: '',\n window: 'client',\n keepalive: false,\n serviceWorkers: 'all',\n initiator: '',\n destination: '',\n priority: null,\n origin: 'client',\n policyContainer: 'client',\n referrer: 'client',\n referrerPolicy: '',\n mode: 'no-cors',\n useCORSPreflightFlag: false,\n credentials: 'same-origin',\n useCredentials: false,\n cache: 'default',\n redirect: 'follow',\n integrity: '',\n cryptoGraphicsNonceMetadata: '',\n parserMetadata: '',\n reloadNavigation: false,\n historyNavigation: false,\n userActivation: false,\n taintedOrigin: false,\n redirectCount: 0,\n responseTainting: 'basic',\n preventNoCacheCacheControlHeaderModification: false,\n done: false,\n timingAllowFailed: false,\n ...init,\n headersList: init.headersList\n ? new HeadersList(init.headersList)\n : new HeadersList()\n }\n request.url = request.urlList[0]\n return request\n}\n\n// https://fetch.spec.whatwg.org/#concept-request-clone\nfunction cloneRequest (request) {\n // To clone a request request, run these steps:\n\n // 1. Let newRequest be a copy of request, except for its body.\n const newRequest = makeRequest({ ...request, body: null })\n\n // 2. If request’s body is non-null, set newRequest’s body to the\n // result of cloning request’s body.\n if (request.body != null) {\n newRequest.body = cloneBody(request.body)\n }\n\n // 3. Return newRequest.\n return newRequest\n}\n\nObject.defineProperties(Request.prototype, {\n method: kEnumerableProperty,\n url: kEnumerableProperty,\n headers: kEnumerableProperty,\n redirect: kEnumerableProperty,\n clone: kEnumerableProperty,\n signal: kEnumerableProperty,\n duplex: kEnumerableProperty,\n destination: kEnumerableProperty,\n body: kEnumerableProperty,\n bodyUsed: kEnumerableProperty,\n isHistoryNavigation: kEnumerableProperty,\n isReloadNavigation: kEnumerableProperty,\n keepalive: kEnumerableProperty,\n integrity: kEnumerableProperty,\n cache: kEnumerableProperty,\n credentials: kEnumerableProperty,\n attribute: kEnumerableProperty,\n referrerPolicy: kEnumerableProperty,\n referrer: kEnumerableProperty,\n mode: kEnumerableProperty,\n [Symbol.toStringTag]: {\n value: 'Request',\n configurable: true\n }\n})\n\nwebidl.converters.Request = webidl.interfaceConverter(\n Request\n)\n\n// https://fetch.spec.whatwg.org/#requestinfo\nwebidl.converters.RequestInfo = function (V) {\n if (typeof V === 'string') {\n return webidl.converters.USVString(V)\n }\n\n if (V instanceof Request) {\n return webidl.converters.Request(V)\n }\n\n return webidl.converters.USVString(V)\n}\n\nwebidl.converters.AbortSignal = webidl.interfaceConverter(\n AbortSignal\n)\n\n// https://fetch.spec.whatwg.org/#requestinit\nwebidl.converters.RequestInit = webidl.dictionaryConverter([\n {\n key: 'method',\n converter: webidl.converters.ByteString\n },\n {\n key: 'headers',\n converter: webidl.converters.HeadersInit\n },\n {\n key: 'body',\n converter: webidl.nullableConverter(\n webidl.converters.BodyInit\n )\n },\n {\n key: 'referrer',\n converter: webidl.converters.USVString\n },\n {\n key: 'referrerPolicy',\n converter: webidl.converters.DOMString,\n // https://w3c.github.io/webappsec-referrer-policy/#referrer-policy\n allowedValues: referrerPolicy\n },\n {\n key: 'mode',\n converter: webidl.converters.DOMString,\n // https://fetch.spec.whatwg.org/#concept-request-mode\n allowedValues: requestMode\n },\n {\n key: 'credentials',\n converter: webidl.converters.DOMString,\n // https://fetch.spec.whatwg.org/#requestcredentials\n allowedValues: requestCredentials\n },\n {\n key: 'cache',\n converter: webidl.converters.DOMString,\n // https://fetch.spec.whatwg.org/#requestcache\n allowedValues: requestCache\n },\n {\n key: 'redirect',\n converter: webidl.converters.DOMString,\n // https://fetch.spec.whatwg.org/#requestredirect\n allowedValues: requestRedirect\n },\n {\n key: 'integrity',\n converter: webidl.converters.DOMString\n },\n {\n key: 'keepalive',\n converter: webidl.converters.boolean\n },\n {\n key: 'signal',\n converter: webidl.nullableConverter(\n (signal) => webidl.converters.AbortSignal(\n signal,\n { strict: false }\n )\n )\n },\n {\n key: 'window',\n converter: webidl.converters.any\n },\n {\n key: 'duplex',\n converter: webidl.converters.DOMString,\n allowedValues: requestDuplex\n }\n])\n\nmodule.exports = { Request, makeRequest }\n","'use strict'\n\nconst { Headers, HeadersList, fill } = require('./headers')\nconst { extractBody, cloneBody, mixinBody } = require('./body')\nconst util = require('../core/util')\nconst { kEnumerableProperty } = util\nconst {\n isValidReasonPhrase,\n isCancelled,\n isAborted,\n isBlobLike,\n serializeJavascriptValueToJSONString,\n isErrorLike,\n isomorphicEncode\n} = require('./util')\nconst {\n redirectStatusSet,\n nullBodyStatus,\n DOMException\n} = require('./constants')\nconst { kState, kHeaders, kGuard, kRealm } = require('./symbols')\nconst { webidl } = require('./webidl')\nconst { FormData } = require('./formdata')\nconst { getGlobalOrigin } = require('./global')\nconst { URLSerializer } = require('./dataURL')\nconst { kHeadersList, kConstruct } = require('../core/symbols')\nconst assert = require('assert')\nconst { types } = require('util')\n\nconst ReadableStream = globalThis.ReadableStream || require('stream/web').ReadableStream\nconst textEncoder = new TextEncoder('utf-8')\n\n// https://fetch.spec.whatwg.org/#response-class\nclass Response {\n // Creates network error Response.\n static error () {\n // TODO\n const relevantRealm = { settingsObject: {} }\n\n // The static error() method steps are to return the result of creating a\n // Response object, given a new network error, \"immutable\", and this’s\n // relevant Realm.\n const responseObject = new Response()\n responseObject[kState] = makeNetworkError()\n responseObject[kRealm] = relevantRealm\n responseObject[kHeaders][kHeadersList] = responseObject[kState].headersList\n responseObject[kHeaders][kGuard] = 'immutable'\n responseObject[kHeaders][kRealm] = relevantRealm\n return responseObject\n }\n\n // https://fetch.spec.whatwg.org/#dom-response-json\n static json (data, init = {}) {\n webidl.argumentLengthCheck(arguments, 1, { header: 'Response.json' })\n\n if (init !== null) {\n init = webidl.converters.ResponseInit(init)\n }\n\n // 1. Let bytes the result of running serialize a JavaScript value to JSON bytes on data.\n const bytes = textEncoder.encode(\n serializeJavascriptValueToJSONString(data)\n )\n\n // 2. Let body be the result of extracting bytes.\n const body = extractBody(bytes)\n\n // 3. Let responseObject be the result of creating a Response object, given a new response,\n // \"response\", and this’s relevant Realm.\n const relevantRealm = { settingsObject: {} }\n const responseObject = new Response()\n responseObject[kRealm] = relevantRealm\n responseObject[kHeaders][kGuard] = 'response'\n responseObject[kHeaders][kRealm] = relevantRealm\n\n // 4. Perform initialize a response given responseObject, init, and (body, \"application/json\").\n initializeResponse(responseObject, init, { body: body[0], type: 'application/json' })\n\n // 5. Return responseObject.\n return responseObject\n }\n\n // Creates a redirect Response that redirects to url with status status.\n static redirect (url, status = 302) {\n const relevantRealm = { settingsObject: {} }\n\n webidl.argumentLengthCheck(arguments, 1, { header: 'Response.redirect' })\n\n url = webidl.converters.USVString(url)\n status = webidl.converters['unsigned short'](status)\n\n // 1. Let parsedURL be the result of parsing url with current settings\n // object’s API base URL.\n // 2. If parsedURL is failure, then throw a TypeError.\n // TODO: base-URL?\n let parsedURL\n try {\n parsedURL = new URL(url, getGlobalOrigin())\n } catch (err) {\n throw Object.assign(new TypeError('Failed to parse URL from ' + url), {\n cause: err\n })\n }\n\n // 3. If status is not a redirect status, then throw a RangeError.\n if (!redirectStatusSet.has(status)) {\n throw new RangeError('Invalid status code ' + status)\n }\n\n // 4. Let responseObject be the result of creating a Response object,\n // given a new response, \"immutable\", and this’s relevant Realm.\n const responseObject = new Response()\n responseObject[kRealm] = relevantRealm\n responseObject[kHeaders][kGuard] = 'immutable'\n responseObject[kHeaders][kRealm] = relevantRealm\n\n // 5. Set responseObject’s response’s status to status.\n responseObject[kState].status = status\n\n // 6. Let value be parsedURL, serialized and isomorphic encoded.\n const value = isomorphicEncode(URLSerializer(parsedURL))\n\n // 7. Append `Location`/value to responseObject’s response’s header list.\n responseObject[kState].headersList.append('location', value)\n\n // 8. Return responseObject.\n return responseObject\n }\n\n // https://fetch.spec.whatwg.org/#dom-response\n constructor (body = null, init = {}) {\n if (body !== null) {\n body = webidl.converters.BodyInit(body)\n }\n\n init = webidl.converters.ResponseInit(init)\n\n // TODO\n this[kRealm] = { settingsObject: {} }\n\n // 1. Set this’s response to a new response.\n this[kState] = makeResponse({})\n\n // 2. Set this’s headers to a new Headers object with this’s relevant\n // Realm, whose header list is this’s response’s header list and guard\n // is \"response\".\n this[kHeaders] = new Headers(kConstruct)\n this[kHeaders][kGuard] = 'response'\n this[kHeaders][kHeadersList] = this[kState].headersList\n this[kHeaders][kRealm] = this[kRealm]\n\n // 3. Let bodyWithType be null.\n let bodyWithType = null\n\n // 4. If body is non-null, then set bodyWithType to the result of extracting body.\n if (body != null) {\n const [extractedBody, type] = extractBody(body)\n bodyWithType = { body: extractedBody, type }\n }\n\n // 5. Perform initialize a response given this, init, and bodyWithType.\n initializeResponse(this, init, bodyWithType)\n }\n\n // Returns response’s type, e.g., \"cors\".\n get type () {\n webidl.brandCheck(this, Response)\n\n // The type getter steps are to return this’s response’s type.\n return this[kState].type\n }\n\n // Returns response’s URL, if it has one; otherwise the empty string.\n get url () {\n webidl.brandCheck(this, Response)\n\n const urlList = this[kState].urlList\n\n // The url getter steps are to return the empty string if this’s\n // response’s URL is null; otherwise this’s response’s URL,\n // serialized with exclude fragment set to true.\n const url = urlList[urlList.length - 1] ?? null\n\n if (url === null) {\n return ''\n }\n\n return URLSerializer(url, true)\n }\n\n // Returns whether response was obtained through a redirect.\n get redirected () {\n webidl.brandCheck(this, Response)\n\n // The redirected getter steps are to return true if this’s response’s URL\n // list has more than one item; otherwise false.\n return this[kState].urlList.length > 1\n }\n\n // Returns response’s status.\n get status () {\n webidl.brandCheck(this, Response)\n\n // The status getter steps are to return this’s response’s status.\n return this[kState].status\n }\n\n // Returns whether response’s status is an ok status.\n get ok () {\n webidl.brandCheck(this, Response)\n\n // The ok getter steps are to return true if this’s response’s status is an\n // ok status; otherwise false.\n return this[kState].status >= 200 && this[kState].status <= 299\n }\n\n // Returns response’s status message.\n get statusText () {\n webidl.brandCheck(this, Response)\n\n // The statusText getter steps are to return this’s response’s status\n // message.\n return this[kState].statusText\n }\n\n // Returns response’s headers as Headers.\n get headers () {\n webidl.brandCheck(this, Response)\n\n // The headers getter steps are to return this’s headers.\n return this[kHeaders]\n }\n\n get body () {\n webidl.brandCheck(this, Response)\n\n return this[kState].body ? this[kState].body.stream : null\n }\n\n get bodyUsed () {\n webidl.brandCheck(this, Response)\n\n return !!this[kState].body && util.isDisturbed(this[kState].body.stream)\n }\n\n // Returns a clone of response.\n clone () {\n webidl.brandCheck(this, Response)\n\n // 1. If this is unusable, then throw a TypeError.\n if (this.bodyUsed || (this.body && this.body.locked)) {\n throw webidl.errors.exception({\n header: 'Response.clone',\n message: 'Body has already been consumed.'\n })\n }\n\n // 2. Let clonedResponse be the result of cloning this’s response.\n const clonedResponse = cloneResponse(this[kState])\n\n // 3. Return the result of creating a Response object, given\n // clonedResponse, this’s headers’s guard, and this’s relevant Realm.\n const clonedResponseObject = new Response()\n clonedResponseObject[kState] = clonedResponse\n clonedResponseObject[kRealm] = this[kRealm]\n clonedResponseObject[kHeaders][kHeadersList] = clonedResponse.headersList\n clonedResponseObject[kHeaders][kGuard] = this[kHeaders][kGuard]\n clonedResponseObject[kHeaders][kRealm] = this[kHeaders][kRealm]\n\n return clonedResponseObject\n }\n}\n\nmixinBody(Response)\n\nObject.defineProperties(Response.prototype, {\n type: kEnumerableProperty,\n url: kEnumerableProperty,\n status: kEnumerableProperty,\n ok: kEnumerableProperty,\n redirected: kEnumerableProperty,\n statusText: kEnumerableProperty,\n headers: kEnumerableProperty,\n clone: kEnumerableProperty,\n body: kEnumerableProperty,\n bodyUsed: kEnumerableProperty,\n [Symbol.toStringTag]: {\n value: 'Response',\n configurable: true\n }\n})\n\nObject.defineProperties(Response, {\n json: kEnumerableProperty,\n redirect: kEnumerableProperty,\n error: kEnumerableProperty\n})\n\n// https://fetch.spec.whatwg.org/#concept-response-clone\nfunction cloneResponse (response) {\n // To clone a response response, run these steps:\n\n // 1. If response is a filtered response, then return a new identical\n // filtered response whose internal response is a clone of response’s\n // internal response.\n if (response.internalResponse) {\n return filterResponse(\n cloneResponse(response.internalResponse),\n response.type\n )\n }\n\n // 2. Let newResponse be a copy of response, except for its body.\n const newResponse = makeResponse({ ...response, body: null })\n\n // 3. If response’s body is non-null, then set newResponse’s body to the\n // result of cloning response’s body.\n if (response.body != null) {\n newResponse.body = cloneBody(response.body)\n }\n\n // 4. Return newResponse.\n return newResponse\n}\n\nfunction makeResponse (init) {\n return {\n aborted: false,\n rangeRequested: false,\n timingAllowPassed: false,\n requestIncludesCredentials: false,\n type: 'default',\n status: 200,\n timingInfo: null,\n cacheState: '',\n statusText: '',\n ...init,\n headersList: init.headersList\n ? new HeadersList(init.headersList)\n : new HeadersList(),\n urlList: init.urlList ? [...init.urlList] : []\n }\n}\n\nfunction makeNetworkError (reason) {\n const isError = isErrorLike(reason)\n return makeResponse({\n type: 'error',\n status: 0,\n error: isError\n ? reason\n : new Error(reason ? String(reason) : reason),\n aborted: reason && reason.name === 'AbortError'\n })\n}\n\nfunction makeFilteredResponse (response, state) {\n state = {\n internalResponse: response,\n ...state\n }\n\n return new Proxy(response, {\n get (target, p) {\n return p in state ? state[p] : target[p]\n },\n set (target, p, value) {\n assert(!(p in state))\n target[p] = value\n return true\n }\n })\n}\n\n// https://fetch.spec.whatwg.org/#concept-filtered-response\nfunction filterResponse (response, type) {\n // Set response to the following filtered response with response as its\n // internal response, depending on request’s response tainting:\n if (type === 'basic') {\n // A basic filtered response is a filtered response whose type is \"basic\"\n // and header list excludes any headers in internal response’s header list\n // whose name is a forbidden response-header name.\n\n // Note: undici does not implement forbidden response-header names\n return makeFilteredResponse(response, {\n type: 'basic',\n headersList: response.headersList\n })\n } else if (type === 'cors') {\n // A CORS filtered response is a filtered response whose type is \"cors\"\n // and header list excludes any headers in internal response’s header\n // list whose name is not a CORS-safelisted response-header name, given\n // internal response’s CORS-exposed header-name list.\n\n // Note: undici does not implement CORS-safelisted response-header names\n return makeFilteredResponse(response, {\n type: 'cors',\n headersList: response.headersList\n })\n } else if (type === 'opaque') {\n // An opaque filtered response is a filtered response whose type is\n // \"opaque\", URL list is the empty list, status is 0, status message\n // is the empty byte sequence, header list is empty, and body is null.\n\n return makeFilteredResponse(response, {\n type: 'opaque',\n urlList: Object.freeze([]),\n status: 0,\n statusText: '',\n body: null\n })\n } else if (type === 'opaqueredirect') {\n // An opaque-redirect filtered response is a filtered response whose type\n // is \"opaqueredirect\", status is 0, status message is the empty byte\n // sequence, header list is empty, and body is null.\n\n return makeFilteredResponse(response, {\n type: 'opaqueredirect',\n status: 0,\n statusText: '',\n headersList: [],\n body: null\n })\n } else {\n assert(false)\n }\n}\n\n// https://fetch.spec.whatwg.org/#appropriate-network-error\nfunction makeAppropriateNetworkError (fetchParams, err = null) {\n // 1. Assert: fetchParams is canceled.\n assert(isCancelled(fetchParams))\n\n // 2. Return an aborted network error if fetchParams is aborted;\n // otherwise return a network error.\n return isAborted(fetchParams)\n ? makeNetworkError(Object.assign(new DOMException('The operation was aborted.', 'AbortError'), { cause: err }))\n : makeNetworkError(Object.assign(new DOMException('Request was cancelled.'), { cause: err }))\n}\n\n// https://whatpr.org/fetch/1392.html#initialize-a-response\nfunction initializeResponse (response, init, body) {\n // 1. If init[\"status\"] is not in the range 200 to 599, inclusive, then\n // throw a RangeError.\n if (init.status !== null && (init.status < 200 || init.status > 599)) {\n throw new RangeError('init[\"status\"] must be in the range of 200 to 599, inclusive.')\n }\n\n // 2. If init[\"statusText\"] does not match the reason-phrase token production,\n // then throw a TypeError.\n if ('statusText' in init && init.statusText != null) {\n // See, https://datatracker.ietf.org/doc/html/rfc7230#section-3.1.2:\n // reason-phrase = *( HTAB / SP / VCHAR / obs-text )\n if (!isValidReasonPhrase(String(init.statusText))) {\n throw new TypeError('Invalid statusText')\n }\n }\n\n // 3. Set response’s response’s status to init[\"status\"].\n if ('status' in init && init.status != null) {\n response[kState].status = init.status\n }\n\n // 4. Set response’s response’s status message to init[\"statusText\"].\n if ('statusText' in init && init.statusText != null) {\n response[kState].statusText = init.statusText\n }\n\n // 5. If init[\"headers\"] exists, then fill response’s headers with init[\"headers\"].\n if ('headers' in init && init.headers != null) {\n fill(response[kHeaders], init.headers)\n }\n\n // 6. If body was given, then:\n if (body) {\n // 1. If response's status is a null body status, then throw a TypeError.\n if (nullBodyStatus.includes(response.status)) {\n throw webidl.errors.exception({\n header: 'Response constructor',\n message: 'Invalid response status code ' + response.status\n })\n }\n\n // 2. Set response's body to body's body.\n response[kState].body = body.body\n\n // 3. If body's type is non-null and response's header list does not contain\n // `Content-Type`, then append (`Content-Type`, body's type) to response's header list.\n if (body.type != null && !response[kState].headersList.contains('Content-Type')) {\n response[kState].headersList.append('content-type', body.type)\n }\n }\n}\n\nwebidl.converters.ReadableStream = webidl.interfaceConverter(\n ReadableStream\n)\n\nwebidl.converters.FormData = webidl.interfaceConverter(\n FormData\n)\n\nwebidl.converters.URLSearchParams = webidl.interfaceConverter(\n URLSearchParams\n)\n\n// https://fetch.spec.whatwg.org/#typedefdef-xmlhttprequestbodyinit\nwebidl.converters.XMLHttpRequestBodyInit = function (V) {\n if (typeof V === 'string') {\n return webidl.converters.USVString(V)\n }\n\n if (isBlobLike(V)) {\n return webidl.converters.Blob(V, { strict: false })\n }\n\n if (types.isArrayBuffer(V) || types.isTypedArray(V) || types.isDataView(V)) {\n return webidl.converters.BufferSource(V)\n }\n\n if (util.isFormDataLike(V)) {\n return webidl.converters.FormData(V, { strict: false })\n }\n\n if (V instanceof URLSearchParams) {\n return webidl.converters.URLSearchParams(V)\n }\n\n return webidl.converters.DOMString(V)\n}\n\n// https://fetch.spec.whatwg.org/#bodyinit\nwebidl.converters.BodyInit = function (V) {\n if (V instanceof ReadableStream) {\n return webidl.converters.ReadableStream(V)\n }\n\n // Note: the spec doesn't include async iterables,\n // this is an undici extension.\n if (V?.[Symbol.asyncIterator]) {\n return V\n }\n\n return webidl.converters.XMLHttpRequestBodyInit(V)\n}\n\nwebidl.converters.ResponseInit = webidl.dictionaryConverter([\n {\n key: 'status',\n converter: webidl.converters['unsigned short'],\n defaultValue: 200\n },\n {\n key: 'statusText',\n converter: webidl.converters.ByteString,\n defaultValue: ''\n },\n {\n key: 'headers',\n converter: webidl.converters.HeadersInit\n }\n])\n\nmodule.exports = {\n makeNetworkError,\n makeResponse,\n makeAppropriateNetworkError,\n filterResponse,\n Response,\n cloneResponse\n}\n","'use strict'\n\nmodule.exports = {\n kUrl: Symbol('url'),\n kHeaders: Symbol('headers'),\n kSignal: Symbol('signal'),\n kState: Symbol('state'),\n kGuard: Symbol('guard'),\n kRealm: Symbol('realm')\n}\n","'use strict'\n\nconst { redirectStatusSet, referrerPolicySet: referrerPolicyTokens, badPortsSet } = require('./constants')\nconst { getGlobalOrigin } = require('./global')\nconst { performance } = require('perf_hooks')\nconst { isBlobLike, toUSVString, ReadableStreamFrom } = require('../core/util')\nconst assert = require('assert')\nconst { isUint8Array } = require('util/types')\n\nlet supportedHashes = []\n\n// https://nodejs.org/api/crypto.html#determining-if-crypto-support-is-unavailable\n/** @type {import('crypto')|undefined} */\nlet crypto\n\ntry {\n crypto = require('crypto')\n const possibleRelevantHashes = ['sha256', 'sha384', 'sha512']\n supportedHashes = crypto.getHashes().filter((hash) => possibleRelevantHashes.includes(hash))\n/* c8 ignore next 3 */\n} catch {\n}\n\nfunction responseURL (response) {\n // https://fetch.spec.whatwg.org/#responses\n // A response has an associated URL. It is a pointer to the last URL\n // in response’s URL list and null if response’s URL list is empty.\n const urlList = response.urlList\n const length = urlList.length\n return length === 0 ? null : urlList[length - 1].toString()\n}\n\n// https://fetch.spec.whatwg.org/#concept-response-location-url\nfunction responseLocationURL (response, requestFragment) {\n // 1. If response’s status is not a redirect status, then return null.\n if (!redirectStatusSet.has(response.status)) {\n return null\n }\n\n // 2. Let location be the result of extracting header list values given\n // `Location` and response’s header list.\n let location = response.headersList.get('location')\n\n // 3. If location is a header value, then set location to the result of\n // parsing location with response’s URL.\n if (location !== null && isValidHeaderValue(location)) {\n location = new URL(location, responseURL(response))\n }\n\n // 4. If location is a URL whose fragment is null, then set location’s\n // fragment to requestFragment.\n if (location && !location.hash) {\n location.hash = requestFragment\n }\n\n // 5. Return location.\n return location\n}\n\n/** @returns {URL} */\nfunction requestCurrentURL (request) {\n return request.urlList[request.urlList.length - 1]\n}\n\nfunction requestBadPort (request) {\n // 1. Let url be request’s current URL.\n const url = requestCurrentURL(request)\n\n // 2. If url’s scheme is an HTTP(S) scheme and url’s port is a bad port,\n // then return blocked.\n if (urlIsHttpHttpsScheme(url) && badPortsSet.has(url.port)) {\n return 'blocked'\n }\n\n // 3. Return allowed.\n return 'allowed'\n}\n\nfunction isErrorLike (object) {\n return object instanceof Error || (\n object?.constructor?.name === 'Error' ||\n object?.constructor?.name === 'DOMException'\n )\n}\n\n// Check whether |statusText| is a ByteString and\n// matches the Reason-Phrase token production.\n// RFC 2616: https://tools.ietf.org/html/rfc2616\n// RFC 7230: https://tools.ietf.org/html/rfc7230\n// \"reason-phrase = *( HTAB / SP / VCHAR / obs-text )\"\n// https://github.com/chromium/chromium/blob/94.0.4604.1/third_party/blink/renderer/core/fetch/response.cc#L116\nfunction isValidReasonPhrase (statusText) {\n for (let i = 0; i < statusText.length; ++i) {\n const c = statusText.charCodeAt(i)\n if (\n !(\n (\n c === 0x09 || // HTAB\n (c >= 0x20 && c <= 0x7e) || // SP / VCHAR\n (c >= 0x80 && c <= 0xff)\n ) // obs-text\n )\n ) {\n return false\n }\n }\n return true\n}\n\n/**\n * @see https://tools.ietf.org/html/rfc7230#section-3.2.6\n * @param {number} c\n */\nfunction isTokenCharCode (c) {\n switch (c) {\n case 0x22:\n case 0x28:\n case 0x29:\n case 0x2c:\n case 0x2f:\n case 0x3a:\n case 0x3b:\n case 0x3c:\n case 0x3d:\n case 0x3e:\n case 0x3f:\n case 0x40:\n case 0x5b:\n case 0x5c:\n case 0x5d:\n case 0x7b:\n case 0x7d:\n // DQUOTE and \"(),/:;<=>?@[\\]{}\"\n return false\n default:\n // VCHAR %x21-7E\n return c >= 0x21 && c <= 0x7e\n }\n}\n\n/**\n * @param {string} characters\n */\nfunction isValidHTTPToken (characters) {\n if (characters.length === 0) {\n return false\n }\n for (let i = 0; i < characters.length; ++i) {\n if (!isTokenCharCode(characters.charCodeAt(i))) {\n return false\n }\n }\n return true\n}\n\n/**\n * @see https://fetch.spec.whatwg.org/#header-name\n * @param {string} potentialValue\n */\nfunction isValidHeaderName (potentialValue) {\n return isValidHTTPToken(potentialValue)\n}\n\n/**\n * @see https://fetch.spec.whatwg.org/#header-value\n * @param {string} potentialValue\n */\nfunction isValidHeaderValue (potentialValue) {\n // - Has no leading or trailing HTTP tab or space bytes.\n // - Contains no 0x00 (NUL) or HTTP newline bytes.\n if (\n potentialValue.startsWith('\\t') ||\n potentialValue.startsWith(' ') ||\n potentialValue.endsWith('\\t') ||\n potentialValue.endsWith(' ')\n ) {\n return false\n }\n\n if (\n potentialValue.includes('\\0') ||\n potentialValue.includes('\\r') ||\n potentialValue.includes('\\n')\n ) {\n return false\n }\n\n return true\n}\n\n// https://w3c.github.io/webappsec-referrer-policy/#set-requests-referrer-policy-on-redirect\nfunction setRequestReferrerPolicyOnRedirect (request, actualResponse) {\n // Given a request request and a response actualResponse, this algorithm\n // updates request’s referrer policy according to the Referrer-Policy\n // header (if any) in actualResponse.\n\n // 1. Let policy be the result of executing § 8.1 Parse a referrer policy\n // from a Referrer-Policy header on actualResponse.\n\n // 8.1 Parse a referrer policy from a Referrer-Policy header\n // 1. Let policy-tokens be the result of extracting header list values given `Referrer-Policy` and response’s header list.\n const { headersList } = actualResponse\n // 2. Let policy be the empty string.\n // 3. For each token in policy-tokens, if token is a referrer policy and token is not the empty string, then set policy to token.\n // 4. Return policy.\n const policyHeader = (headersList.get('referrer-policy') ?? '').split(',')\n\n // Note: As the referrer-policy can contain multiple policies\n // separated by comma, we need to loop through all of them\n // and pick the first valid one.\n // Ref: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Referrer-Policy#specify_a_fallback_policy\n let policy = ''\n if (policyHeader.length > 0) {\n // The right-most policy takes precedence.\n // The left-most policy is the fallback.\n for (let i = policyHeader.length; i !== 0; i--) {\n const token = policyHeader[i - 1].trim()\n if (referrerPolicyTokens.has(token)) {\n policy = token\n break\n }\n }\n }\n\n // 2. If policy is not the empty string, then set request’s referrer policy to policy.\n if (policy !== '') {\n request.referrerPolicy = policy\n }\n}\n\n// https://fetch.spec.whatwg.org/#cross-origin-resource-policy-check\nfunction crossOriginResourcePolicyCheck () {\n // TODO\n return 'allowed'\n}\n\n// https://fetch.spec.whatwg.org/#concept-cors-check\nfunction corsCheck () {\n // TODO\n return 'success'\n}\n\n// https://fetch.spec.whatwg.org/#concept-tao-check\nfunction TAOCheck () {\n // TODO\n return 'success'\n}\n\nfunction appendFetchMetadata (httpRequest) {\n // https://w3c.github.io/webappsec-fetch-metadata/#sec-fetch-dest-header\n // TODO\n\n // https://w3c.github.io/webappsec-fetch-metadata/#sec-fetch-mode-header\n\n // 1. Assert: r’s url is a potentially trustworthy URL.\n // TODO\n\n // 2. Let header be a Structured Header whose value is a token.\n let header = null\n\n // 3. Set header’s value to r’s mode.\n header = httpRequest.mode\n\n // 4. Set a structured field value `Sec-Fetch-Mode`/header in r’s header list.\n httpRequest.headersList.set('sec-fetch-mode', header)\n\n // https://w3c.github.io/webappsec-fetch-metadata/#sec-fetch-site-header\n // TODO\n\n // https://w3c.github.io/webappsec-fetch-metadata/#sec-fetch-user-header\n // TODO\n}\n\n// https://fetch.spec.whatwg.org/#append-a-request-origin-header\nfunction appendRequestOriginHeader (request) {\n // 1. Let serializedOrigin be the result of byte-serializing a request origin with request.\n let serializedOrigin = request.origin\n\n // 2. If request’s response tainting is \"cors\" or request’s mode is \"websocket\", then append (`Origin`, serializedOrigin) to request’s header list.\n if (request.responseTainting === 'cors' || request.mode === 'websocket') {\n if (serializedOrigin) {\n request.headersList.append('origin', serializedOrigin)\n }\n\n // 3. Otherwise, if request’s method is neither `GET` nor `HEAD`, then:\n } else if (request.method !== 'GET' && request.method !== 'HEAD') {\n // 1. Switch on request’s referrer policy:\n switch (request.referrerPolicy) {\n case 'no-referrer':\n // Set serializedOrigin to `null`.\n serializedOrigin = null\n break\n case 'no-referrer-when-downgrade':\n case 'strict-origin':\n case 'strict-origin-when-cross-origin':\n // If request’s origin is a tuple origin, its scheme is \"https\", and request’s current URL’s scheme is not \"https\", then set serializedOrigin to `null`.\n if (request.origin && urlHasHttpsScheme(request.origin) && !urlHasHttpsScheme(requestCurrentURL(request))) {\n serializedOrigin = null\n }\n break\n case 'same-origin':\n // If request’s origin is not same origin with request’s current URL’s origin, then set serializedOrigin to `null`.\n if (!sameOrigin(request, requestCurrentURL(request))) {\n serializedOrigin = null\n }\n break\n default:\n // Do nothing.\n }\n\n if (serializedOrigin) {\n // 2. Append (`Origin`, serializedOrigin) to request’s header list.\n request.headersList.append('origin', serializedOrigin)\n }\n }\n}\n\nfunction coarsenedSharedCurrentTime (crossOriginIsolatedCapability) {\n // TODO\n return performance.now()\n}\n\n// https://fetch.spec.whatwg.org/#create-an-opaque-timing-info\nfunction createOpaqueTimingInfo (timingInfo) {\n return {\n startTime: timingInfo.startTime ?? 0,\n redirectStartTime: 0,\n redirectEndTime: 0,\n postRedirectStartTime: timingInfo.startTime ?? 0,\n finalServiceWorkerStartTime: 0,\n finalNetworkResponseStartTime: 0,\n finalNetworkRequestStartTime: 0,\n endTime: 0,\n encodedBodySize: 0,\n decodedBodySize: 0,\n finalConnectionTimingInfo: null\n }\n}\n\n// https://html.spec.whatwg.org/multipage/origin.html#policy-container\nfunction makePolicyContainer () {\n // Note: the fetch spec doesn't make use of embedder policy or CSP list\n return {\n referrerPolicy: 'strict-origin-when-cross-origin'\n }\n}\n\n// https://html.spec.whatwg.org/multipage/origin.html#clone-a-policy-container\nfunction clonePolicyContainer (policyContainer) {\n return {\n referrerPolicy: policyContainer.referrerPolicy\n }\n}\n\n// https://w3c.github.io/webappsec-referrer-policy/#determine-requests-referrer\nfunction determineRequestsReferrer (request) {\n // 1. Let policy be request's referrer policy.\n const policy = request.referrerPolicy\n\n // Note: policy cannot (shouldn't) be null or an empty string.\n assert(policy)\n\n // 2. Let environment be request’s client.\n\n let referrerSource = null\n\n // 3. Switch on request’s referrer:\n if (request.referrer === 'client') {\n // Note: node isn't a browser and doesn't implement document/iframes,\n // so we bypass this step and replace it with our own.\n\n const globalOrigin = getGlobalOrigin()\n\n if (!globalOrigin || globalOrigin.origin === 'null') {\n return 'no-referrer'\n }\n\n // note: we need to clone it as it's mutated\n referrerSource = new URL(globalOrigin)\n } else if (request.referrer instanceof URL) {\n // Let referrerSource be request’s referrer.\n referrerSource = request.referrer\n }\n\n // 4. Let request’s referrerURL be the result of stripping referrerSource for\n // use as a referrer.\n let referrerURL = stripURLForReferrer(referrerSource)\n\n // 5. Let referrerOrigin be the result of stripping referrerSource for use as\n // a referrer, with the origin-only flag set to true.\n const referrerOrigin = stripURLForReferrer(referrerSource, true)\n\n // 6. If the result of serializing referrerURL is a string whose length is\n // greater than 4096, set referrerURL to referrerOrigin.\n if (referrerURL.toString().length > 4096) {\n referrerURL = referrerOrigin\n }\n\n const areSameOrigin = sameOrigin(request, referrerURL)\n const isNonPotentiallyTrustWorthy = isURLPotentiallyTrustworthy(referrerURL) &&\n !isURLPotentiallyTrustworthy(request.url)\n\n // 8. Execute the switch statements corresponding to the value of policy:\n switch (policy) {\n case 'origin': return referrerOrigin != null ? referrerOrigin : stripURLForReferrer(referrerSource, true)\n case 'unsafe-url': return referrerURL\n case 'same-origin':\n return areSameOrigin ? referrerOrigin : 'no-referrer'\n case 'origin-when-cross-origin':\n return areSameOrigin ? referrerURL : referrerOrigin\n case 'strict-origin-when-cross-origin': {\n const currentURL = requestCurrentURL(request)\n\n // 1. If the origin of referrerURL and the origin of request’s current\n // URL are the same, then return referrerURL.\n if (sameOrigin(referrerURL, currentURL)) {\n return referrerURL\n }\n\n // 2. If referrerURL is a potentially trustworthy URL and request’s\n // current URL is not a potentially trustworthy URL, then return no\n // referrer.\n if (isURLPotentiallyTrustworthy(referrerURL) && !isURLPotentiallyTrustworthy(currentURL)) {\n return 'no-referrer'\n }\n\n // 3. Return referrerOrigin.\n return referrerOrigin\n }\n case 'strict-origin': // eslint-disable-line\n /**\n * 1. If referrerURL is a potentially trustworthy URL and\n * request’s current URL is not a potentially trustworthy URL,\n * then return no referrer.\n * 2. Return referrerOrigin\n */\n case 'no-referrer-when-downgrade': // eslint-disable-line\n /**\n * 1. If referrerURL is a potentially trustworthy URL and\n * request’s current URL is not a potentially trustworthy URL,\n * then return no referrer.\n * 2. Return referrerOrigin\n */\n\n default: // eslint-disable-line\n return isNonPotentiallyTrustWorthy ? 'no-referrer' : referrerOrigin\n }\n}\n\n/**\n * @see https://w3c.github.io/webappsec-referrer-policy/#strip-url\n * @param {URL} url\n * @param {boolean|undefined} originOnly\n */\nfunction stripURLForReferrer (url, originOnly) {\n // 1. Assert: url is a URL.\n assert(url instanceof URL)\n\n // 2. If url’s scheme is a local scheme, then return no referrer.\n if (url.protocol === 'file:' || url.protocol === 'about:' || url.protocol === 'blank:') {\n return 'no-referrer'\n }\n\n // 3. Set url’s username to the empty string.\n url.username = ''\n\n // 4. Set url’s password to the empty string.\n url.password = ''\n\n // 5. Set url’s fragment to null.\n url.hash = ''\n\n // 6. If the origin-only flag is true, then:\n if (originOnly) {\n // 1. Set url’s path to « the empty string ».\n url.pathname = ''\n\n // 2. Set url’s query to null.\n url.search = ''\n }\n\n // 7. Return url.\n return url\n}\n\nfunction isURLPotentiallyTrustworthy (url) {\n if (!(url instanceof URL)) {\n return false\n }\n\n // If child of about, return true\n if (url.href === 'about:blank' || url.href === 'about:srcdoc') {\n return true\n }\n\n // If scheme is data, return true\n if (url.protocol === 'data:') return true\n\n // If file, return true\n if (url.protocol === 'file:') return true\n\n return isOriginPotentiallyTrustworthy(url.origin)\n\n function isOriginPotentiallyTrustworthy (origin) {\n // If origin is explicitly null, return false\n if (origin == null || origin === 'null') return false\n\n const originAsURL = new URL(origin)\n\n // If secure, return true\n if (originAsURL.protocol === 'https:' || originAsURL.protocol === 'wss:') {\n return true\n }\n\n // If localhost or variants, return true\n if (/^127(?:\\.[0-9]+){0,2}\\.[0-9]+$|^\\[(?:0*:)*?:?0*1\\]$/.test(originAsURL.hostname) ||\n (originAsURL.hostname === 'localhost' || originAsURL.hostname.includes('localhost.')) ||\n (originAsURL.hostname.endsWith('.localhost'))) {\n return true\n }\n\n // If any other, return false\n return false\n }\n}\n\n/**\n * @see https://w3c.github.io/webappsec-subresource-integrity/#does-response-match-metadatalist\n * @param {Uint8Array} bytes\n * @param {string} metadataList\n */\nfunction bytesMatch (bytes, metadataList) {\n // If node is not built with OpenSSL support, we cannot check\n // a request's integrity, so allow it by default (the spec will\n // allow requests if an invalid hash is given, as precedence).\n /* istanbul ignore if: only if node is built with --without-ssl */\n if (crypto === undefined) {\n return true\n }\n\n // 1. Let parsedMetadata be the result of parsing metadataList.\n const parsedMetadata = parseMetadata(metadataList)\n\n // 2. If parsedMetadata is no metadata, return true.\n if (parsedMetadata === 'no metadata') {\n return true\n }\n\n // 3. If response is not eligible for integrity validation, return false.\n // TODO\n\n // 4. If parsedMetadata is the empty set, return true.\n if (parsedMetadata.length === 0) {\n return true\n }\n\n // 5. Let metadata be the result of getting the strongest\n // metadata from parsedMetadata.\n const strongest = getStrongestMetadata(parsedMetadata)\n const metadata = filterMetadataListByAlgorithm(parsedMetadata, strongest)\n\n // 6. For each item in metadata:\n for (const item of metadata) {\n // 1. Let algorithm be the alg component of item.\n const algorithm = item.algo\n\n // 2. Let expectedValue be the val component of item.\n const expectedValue = item.hash\n\n // See https://github.com/web-platform-tests/wpt/commit/e4c5cc7a5e48093220528dfdd1c4012dc3837a0e\n // \"be liberal with padding\". This is annoying, and it's not even in the spec.\n\n // 3. Let actualValue be the result of applying algorithm to bytes.\n let actualValue = crypto.createHash(algorithm).update(bytes).digest('base64')\n\n if (actualValue[actualValue.length - 1] === '=') {\n if (actualValue[actualValue.length - 2] === '=') {\n actualValue = actualValue.slice(0, -2)\n } else {\n actualValue = actualValue.slice(0, -1)\n }\n }\n\n // 4. If actualValue is a case-sensitive match for expectedValue,\n // return true.\n if (compareBase64Mixed(actualValue, expectedValue)) {\n return true\n }\n }\n\n // 7. Return false.\n return false\n}\n\n// https://w3c.github.io/webappsec-subresource-integrity/#grammardef-hash-with-options\n// https://www.w3.org/TR/CSP2/#source-list-syntax\n// https://www.rfc-editor.org/rfc/rfc5234#appendix-B.1\nconst parseHashWithOptions = /(?sha256|sha384|sha512)-((?[A-Za-z0-9+/]+|[A-Za-z0-9_-]+)={0,2}(?:\\s|$)( +[!-~]*)?)?/i\n\n/**\n * @see https://w3c.github.io/webappsec-subresource-integrity/#parse-metadata\n * @param {string} metadata\n */\nfunction parseMetadata (metadata) {\n // 1. Let result be the empty set.\n /** @type {{ algo: string, hash: string }[]} */\n const result = []\n\n // 2. Let empty be equal to true.\n let empty = true\n\n // 3. For each token returned by splitting metadata on spaces:\n for (const token of metadata.split(' ')) {\n // 1. Set empty to false.\n empty = false\n\n // 2. Parse token as a hash-with-options.\n const parsedToken = parseHashWithOptions.exec(token)\n\n // 3. If token does not parse, continue to the next token.\n if (\n parsedToken === null ||\n parsedToken.groups === undefined ||\n parsedToken.groups.algo === undefined\n ) {\n // Note: Chromium blocks the request at this point, but Firefox\n // gives a warning that an invalid integrity was given. The\n // correct behavior is to ignore these, and subsequently not\n // check the integrity of the resource.\n continue\n }\n\n // 4. Let algorithm be the hash-algo component of token.\n const algorithm = parsedToken.groups.algo.toLowerCase()\n\n // 5. If algorithm is a hash function recognized by the user\n // agent, add the parsed token to result.\n if (supportedHashes.includes(algorithm)) {\n result.push(parsedToken.groups)\n }\n }\n\n // 4. Return no metadata if empty is true, otherwise return result.\n if (empty === true) {\n return 'no metadata'\n }\n\n return result\n}\n\n/**\n * @param {{ algo: 'sha256' | 'sha384' | 'sha512' }[]} metadataList\n */\nfunction getStrongestMetadata (metadataList) {\n // Let algorithm be the algo component of the first item in metadataList.\n // Can be sha256\n let algorithm = metadataList[0].algo\n // If the algorithm is sha512, then it is the strongest\n // and we can return immediately\n if (algorithm[3] === '5') {\n return algorithm\n }\n\n for (let i = 1; i < metadataList.length; ++i) {\n const metadata = metadataList[i]\n // If the algorithm is sha512, then it is the strongest\n // and we can break the loop immediately\n if (metadata.algo[3] === '5') {\n algorithm = 'sha512'\n break\n // If the algorithm is sha384, then a potential sha256 or sha384 is ignored\n } else if (algorithm[3] === '3') {\n continue\n // algorithm is sha256, check if algorithm is sha384 and if so, set it as\n // the strongest\n } else if (metadata.algo[3] === '3') {\n algorithm = 'sha384'\n }\n }\n return algorithm\n}\n\nfunction filterMetadataListByAlgorithm (metadataList, algorithm) {\n if (metadataList.length === 1) {\n return metadataList\n }\n\n let pos = 0\n for (let i = 0; i < metadataList.length; ++i) {\n if (metadataList[i].algo === algorithm) {\n metadataList[pos++] = metadataList[i]\n }\n }\n\n metadataList.length = pos\n\n return metadataList\n}\n\n/**\n * Compares two base64 strings, allowing for base64url\n * in the second string.\n *\n* @param {string} actualValue always base64\n * @param {string} expectedValue base64 or base64url\n * @returns {boolean}\n */\nfunction compareBase64Mixed (actualValue, expectedValue) {\n if (actualValue.length !== expectedValue.length) {\n return false\n }\n for (let i = 0; i < actualValue.length; ++i) {\n if (actualValue[i] !== expectedValue[i]) {\n if (\n (actualValue[i] === '+' && expectedValue[i] === '-') ||\n (actualValue[i] === '/' && expectedValue[i] === '_')\n ) {\n continue\n }\n return false\n }\n }\n\n return true\n}\n\n// https://w3c.github.io/webappsec-upgrade-insecure-requests/#upgrade-request\nfunction tryUpgradeRequestToAPotentiallyTrustworthyURL (request) {\n // TODO\n}\n\n/**\n * @link {https://html.spec.whatwg.org/multipage/origin.html#same-origin}\n * @param {URL} A\n * @param {URL} B\n */\nfunction sameOrigin (A, B) {\n // 1. If A and B are the same opaque origin, then return true.\n if (A.origin === B.origin && A.origin === 'null') {\n return true\n }\n\n // 2. If A and B are both tuple origins and their schemes,\n // hosts, and port are identical, then return true.\n if (A.protocol === B.protocol && A.hostname === B.hostname && A.port === B.port) {\n return true\n }\n\n // 3. Return false.\n return false\n}\n\nfunction createDeferredPromise () {\n let res\n let rej\n const promise = new Promise((resolve, reject) => {\n res = resolve\n rej = reject\n })\n\n return { promise, resolve: res, reject: rej }\n}\n\nfunction isAborted (fetchParams) {\n return fetchParams.controller.state === 'aborted'\n}\n\nfunction isCancelled (fetchParams) {\n return fetchParams.controller.state === 'aborted' ||\n fetchParams.controller.state === 'terminated'\n}\n\nconst normalizeMethodRecord = {\n delete: 'DELETE',\n DELETE: 'DELETE',\n get: 'GET',\n GET: 'GET',\n head: 'HEAD',\n HEAD: 'HEAD',\n options: 'OPTIONS',\n OPTIONS: 'OPTIONS',\n post: 'POST',\n POST: 'POST',\n put: 'PUT',\n PUT: 'PUT'\n}\n\n// Note: object prototypes should not be able to be referenced. e.g. `Object#hasOwnProperty`.\nObject.setPrototypeOf(normalizeMethodRecord, null)\n\n/**\n * @see https://fetch.spec.whatwg.org/#concept-method-normalize\n * @param {string} method\n */\nfunction normalizeMethod (method) {\n return normalizeMethodRecord[method.toLowerCase()] ?? method\n}\n\n// https://infra.spec.whatwg.org/#serialize-a-javascript-value-to-a-json-string\nfunction serializeJavascriptValueToJSONString (value) {\n // 1. Let result be ? Call(%JSON.stringify%, undefined, « value »).\n const result = JSON.stringify(value)\n\n // 2. If result is undefined, then throw a TypeError.\n if (result === undefined) {\n throw new TypeError('Value is not JSON serializable')\n }\n\n // 3. Assert: result is a string.\n assert(typeof result === 'string')\n\n // 4. Return result.\n return result\n}\n\n// https://tc39.es/ecma262/#sec-%25iteratorprototype%25-object\nconst esIteratorPrototype = Object.getPrototypeOf(Object.getPrototypeOf([][Symbol.iterator]()))\n\n/**\n * @see https://webidl.spec.whatwg.org/#dfn-iterator-prototype-object\n * @param {() => unknown[]} iterator\n * @param {string} name name of the instance\n * @param {'key'|'value'|'key+value'} kind\n */\nfunction makeIterator (iterator, name, kind) {\n const object = {\n index: 0,\n kind,\n target: iterator\n }\n\n const i = {\n next () {\n // 1. Let interface be the interface for which the iterator prototype object exists.\n\n // 2. Let thisValue be the this value.\n\n // 3. Let object be ? ToObject(thisValue).\n\n // 4. If object is a platform object, then perform a security\n // check, passing:\n\n // 5. If object is not a default iterator object for interface,\n // then throw a TypeError.\n if (Object.getPrototypeOf(this) !== i) {\n throw new TypeError(\n `'next' called on an object that does not implement interface ${name} Iterator.`\n )\n }\n\n // 6. Let index be object’s index.\n // 7. Let kind be object’s kind.\n // 8. Let values be object’s target's value pairs to iterate over.\n const { index, kind, target } = object\n const values = target()\n\n // 9. Let len be the length of values.\n const len = values.length\n\n // 10. If index is greater than or equal to len, then return\n // CreateIterResultObject(undefined, true).\n if (index >= len) {\n return { value: undefined, done: true }\n }\n\n // 11. Let pair be the entry in values at index index.\n const pair = values[index]\n\n // 12. Set object’s index to index + 1.\n object.index = index + 1\n\n // 13. Return the iterator result for pair and kind.\n return iteratorResult(pair, kind)\n },\n // The class string of an iterator prototype object for a given interface is the\n // result of concatenating the identifier of the interface and the string \" Iterator\".\n [Symbol.toStringTag]: `${name} Iterator`\n }\n\n // The [[Prototype]] internal slot of an iterator prototype object must be %IteratorPrototype%.\n Object.setPrototypeOf(i, esIteratorPrototype)\n // esIteratorPrototype needs to be the prototype of i\n // which is the prototype of an empty object. Yes, it's confusing.\n return Object.setPrototypeOf({}, i)\n}\n\n// https://webidl.spec.whatwg.org/#iterator-result\nfunction iteratorResult (pair, kind) {\n let result\n\n // 1. Let result be a value determined by the value of kind:\n switch (kind) {\n case 'key': {\n // 1. Let idlKey be pair’s key.\n // 2. Let key be the result of converting idlKey to an\n // ECMAScript value.\n // 3. result is key.\n result = pair[0]\n break\n }\n case 'value': {\n // 1. Let idlValue be pair’s value.\n // 2. Let value be the result of converting idlValue to\n // an ECMAScript value.\n // 3. result is value.\n result = pair[1]\n break\n }\n case 'key+value': {\n // 1. Let idlKey be pair’s key.\n // 2. Let idlValue be pair’s value.\n // 3. Let key be the result of converting idlKey to an\n // ECMAScript value.\n // 4. Let value be the result of converting idlValue to\n // an ECMAScript value.\n // 5. Let array be ! ArrayCreate(2).\n // 6. Call ! CreateDataProperty(array, \"0\", key).\n // 7. Call ! CreateDataProperty(array, \"1\", value).\n // 8. result is array.\n result = pair\n break\n }\n }\n\n // 2. Return CreateIterResultObject(result, false).\n return { value: result, done: false }\n}\n\n/**\n * @see https://fetch.spec.whatwg.org/#body-fully-read\n */\nasync function fullyReadBody (body, processBody, processBodyError) {\n // 1. If taskDestination is null, then set taskDestination to\n // the result of starting a new parallel queue.\n\n // 2. Let successSteps given a byte sequence bytes be to queue a\n // fetch task to run processBody given bytes, with taskDestination.\n const successSteps = processBody\n\n // 3. Let errorSteps be to queue a fetch task to run processBodyError,\n // with taskDestination.\n const errorSteps = processBodyError\n\n // 4. Let reader be the result of getting a reader for body’s stream.\n // If that threw an exception, then run errorSteps with that\n // exception and return.\n let reader\n\n try {\n reader = body.stream.getReader()\n } catch (e) {\n errorSteps(e)\n return\n }\n\n // 5. Read all bytes from reader, given successSteps and errorSteps.\n try {\n const result = await readAllBytes(reader)\n successSteps(result)\n } catch (e) {\n errorSteps(e)\n }\n}\n\n/** @type {ReadableStream} */\nlet ReadableStream = globalThis.ReadableStream\n\nfunction isReadableStreamLike (stream) {\n if (!ReadableStream) {\n ReadableStream = require('stream/web').ReadableStream\n }\n\n return stream instanceof ReadableStream || (\n stream[Symbol.toStringTag] === 'ReadableStream' &&\n typeof stream.tee === 'function'\n )\n}\n\nconst MAXIMUM_ARGUMENT_LENGTH = 65535\n\n/**\n * @see https://infra.spec.whatwg.org/#isomorphic-decode\n * @param {number[]|Uint8Array} input\n */\nfunction isomorphicDecode (input) {\n // 1. To isomorphic decode a byte sequence input, return a string whose code point\n // length is equal to input’s length and whose code points have the same values\n // as the values of input’s bytes, in the same order.\n\n if (input.length < MAXIMUM_ARGUMENT_LENGTH) {\n return String.fromCharCode(...input)\n }\n\n return input.reduce((previous, current) => previous + String.fromCharCode(current), '')\n}\n\n/**\n * @param {ReadableStreamController} controller\n */\nfunction readableStreamClose (controller) {\n try {\n controller.close()\n } catch (err) {\n // TODO: add comment explaining why this error occurs.\n if (!err.message.includes('Controller is already closed')) {\n throw err\n }\n }\n}\n\n/**\n * @see https://infra.spec.whatwg.org/#isomorphic-encode\n * @param {string} input\n */\nfunction isomorphicEncode (input) {\n // 1. Assert: input contains no code points greater than U+00FF.\n for (let i = 0; i < input.length; i++) {\n assert(input.charCodeAt(i) <= 0xFF)\n }\n\n // 2. Return a byte sequence whose length is equal to input’s code\n // point length and whose bytes have the same values as the\n // values of input’s code points, in the same order\n return input\n}\n\n/**\n * @see https://streams.spec.whatwg.org/#readablestreamdefaultreader-read-all-bytes\n * @see https://streams.spec.whatwg.org/#read-loop\n * @param {ReadableStreamDefaultReader} reader\n */\nasync function readAllBytes (reader) {\n const bytes = []\n let byteLength = 0\n\n while (true) {\n const { done, value: chunk } = await reader.read()\n\n if (done) {\n // 1. Call successSteps with bytes.\n return Buffer.concat(bytes, byteLength)\n }\n\n // 1. If chunk is not a Uint8Array object, call failureSteps\n // with a TypeError and abort these steps.\n if (!isUint8Array(chunk)) {\n throw new TypeError('Received non-Uint8Array chunk')\n }\n\n // 2. Append the bytes represented by chunk to bytes.\n bytes.push(chunk)\n byteLength += chunk.length\n\n // 3. Read-loop given reader, bytes, successSteps, and failureSteps.\n }\n}\n\n/**\n * @see https://fetch.spec.whatwg.org/#is-local\n * @param {URL} url\n */\nfunction urlIsLocal (url) {\n assert('protocol' in url) // ensure it's a url object\n\n const protocol = url.protocol\n\n return protocol === 'about:' || protocol === 'blob:' || protocol === 'data:'\n}\n\n/**\n * @param {string|URL} url\n */\nfunction urlHasHttpsScheme (url) {\n if (typeof url === 'string') {\n return url.startsWith('https:')\n }\n\n return url.protocol === 'https:'\n}\n\n/**\n * @see https://fetch.spec.whatwg.org/#http-scheme\n * @param {URL} url\n */\nfunction urlIsHttpHttpsScheme (url) {\n assert('protocol' in url) // ensure it's a url object\n\n const protocol = url.protocol\n\n return protocol === 'http:' || protocol === 'https:'\n}\n\n/**\n * Fetch supports node >= 16.8.0, but Object.hasOwn was added in v16.9.0.\n */\nconst hasOwn = Object.hasOwn || ((dict, key) => Object.prototype.hasOwnProperty.call(dict, key))\n\nmodule.exports = {\n isAborted,\n isCancelled,\n createDeferredPromise,\n ReadableStreamFrom,\n toUSVString,\n tryUpgradeRequestToAPotentiallyTrustworthyURL,\n coarsenedSharedCurrentTime,\n determineRequestsReferrer,\n makePolicyContainer,\n clonePolicyContainer,\n appendFetchMetadata,\n appendRequestOriginHeader,\n TAOCheck,\n corsCheck,\n crossOriginResourcePolicyCheck,\n createOpaqueTimingInfo,\n setRequestReferrerPolicyOnRedirect,\n isValidHTTPToken,\n requestBadPort,\n requestCurrentURL,\n responseURL,\n responseLocationURL,\n isBlobLike,\n isURLPotentiallyTrustworthy,\n isValidReasonPhrase,\n sameOrigin,\n normalizeMethod,\n serializeJavascriptValueToJSONString,\n makeIterator,\n isValidHeaderName,\n isValidHeaderValue,\n hasOwn,\n isErrorLike,\n fullyReadBody,\n bytesMatch,\n isReadableStreamLike,\n readableStreamClose,\n isomorphicEncode,\n isomorphicDecode,\n urlIsLocal,\n urlHasHttpsScheme,\n urlIsHttpHttpsScheme,\n readAllBytes,\n normalizeMethodRecord,\n parseMetadata\n}\n","'use strict'\n\nconst { types } = require('util')\nconst { hasOwn, toUSVString } = require('./util')\n\n/** @type {import('../../types/webidl').Webidl} */\nconst webidl = {}\nwebidl.converters = {}\nwebidl.util = {}\nwebidl.errors = {}\n\nwebidl.errors.exception = function (message) {\n return new TypeError(`${message.header}: ${message.message}`)\n}\n\nwebidl.errors.conversionFailed = function (context) {\n const plural = context.types.length === 1 ? '' : ' one of'\n const message =\n `${context.argument} could not be converted to` +\n `${plural}: ${context.types.join(', ')}.`\n\n return webidl.errors.exception({\n header: context.prefix,\n message\n })\n}\n\nwebidl.errors.invalidArgument = function (context) {\n return webidl.errors.exception({\n header: context.prefix,\n message: `\"${context.value}\" is an invalid ${context.type}.`\n })\n}\n\n// https://webidl.spec.whatwg.org/#implements\nwebidl.brandCheck = function (V, I, opts = undefined) {\n if (opts?.strict !== false && !(V instanceof I)) {\n throw new TypeError('Illegal invocation')\n } else {\n return V?.[Symbol.toStringTag] === I.prototype[Symbol.toStringTag]\n }\n}\n\nwebidl.argumentLengthCheck = function ({ length }, min, ctx) {\n if (length < min) {\n throw webidl.errors.exception({\n message: `${min} argument${min !== 1 ? 's' : ''} required, ` +\n `but${length ? ' only' : ''} ${length} found.`,\n ...ctx\n })\n }\n}\n\nwebidl.illegalConstructor = function () {\n throw webidl.errors.exception({\n header: 'TypeError',\n message: 'Illegal constructor'\n })\n}\n\n// https://tc39.es/ecma262/#sec-ecmascript-data-types-and-values\nwebidl.util.Type = function (V) {\n switch (typeof V) {\n case 'undefined': return 'Undefined'\n case 'boolean': return 'Boolean'\n case 'string': return 'String'\n case 'symbol': return 'Symbol'\n case 'number': return 'Number'\n case 'bigint': return 'BigInt'\n case 'function':\n case 'object': {\n if (V === null) {\n return 'Null'\n }\n\n return 'Object'\n }\n }\n}\n\n// https://webidl.spec.whatwg.org/#abstract-opdef-converttoint\nwebidl.util.ConvertToInt = function (V, bitLength, signedness, opts = {}) {\n let upperBound\n let lowerBound\n\n // 1. If bitLength is 64, then:\n if (bitLength === 64) {\n // 1. Let upperBound be 2^53 − 1.\n upperBound = Math.pow(2, 53) - 1\n\n // 2. If signedness is \"unsigned\", then let lowerBound be 0.\n if (signedness === 'unsigned') {\n lowerBound = 0\n } else {\n // 3. Otherwise let lowerBound be −2^53 + 1.\n lowerBound = Math.pow(-2, 53) + 1\n }\n } else if (signedness === 'unsigned') {\n // 2. Otherwise, if signedness is \"unsigned\", then:\n\n // 1. Let lowerBound be 0.\n lowerBound = 0\n\n // 2. Let upperBound be 2^bitLength − 1.\n upperBound = Math.pow(2, bitLength) - 1\n } else {\n // 3. Otherwise:\n\n // 1. Let lowerBound be -2^bitLength − 1.\n lowerBound = Math.pow(-2, bitLength) - 1\n\n // 2. Let upperBound be 2^bitLength − 1 − 1.\n upperBound = Math.pow(2, bitLength - 1) - 1\n }\n\n // 4. Let x be ? ToNumber(V).\n let x = Number(V)\n\n // 5. If x is −0, then set x to +0.\n if (x === 0) {\n x = 0\n }\n\n // 6. If the conversion is to an IDL type associated\n // with the [EnforceRange] extended attribute, then:\n if (opts.enforceRange === true) {\n // 1. If x is NaN, +∞, or −∞, then throw a TypeError.\n if (\n Number.isNaN(x) ||\n x === Number.POSITIVE_INFINITY ||\n x === Number.NEGATIVE_INFINITY\n ) {\n throw webidl.errors.exception({\n header: 'Integer conversion',\n message: `Could not convert ${V} to an integer.`\n })\n }\n\n // 2. Set x to IntegerPart(x).\n x = webidl.util.IntegerPart(x)\n\n // 3. If x < lowerBound or x > upperBound, then\n // throw a TypeError.\n if (x < lowerBound || x > upperBound) {\n throw webidl.errors.exception({\n header: 'Integer conversion',\n message: `Value must be between ${lowerBound}-${upperBound}, got ${x}.`\n })\n }\n\n // 4. Return x.\n return x\n }\n\n // 7. If x is not NaN and the conversion is to an IDL\n // type associated with the [Clamp] extended\n // attribute, then:\n if (!Number.isNaN(x) && opts.clamp === true) {\n // 1. Set x to min(max(x, lowerBound), upperBound).\n x = Math.min(Math.max(x, lowerBound), upperBound)\n\n // 2. Round x to the nearest integer, choosing the\n // even integer if it lies halfway between two,\n // and choosing +0 rather than −0.\n if (Math.floor(x) % 2 === 0) {\n x = Math.floor(x)\n } else {\n x = Math.ceil(x)\n }\n\n // 3. Return x.\n return x\n }\n\n // 8. If x is NaN, +0, +∞, or −∞, then return +0.\n if (\n Number.isNaN(x) ||\n (x === 0 && Object.is(0, x)) ||\n x === Number.POSITIVE_INFINITY ||\n x === Number.NEGATIVE_INFINITY\n ) {\n return 0\n }\n\n // 9. Set x to IntegerPart(x).\n x = webidl.util.IntegerPart(x)\n\n // 10. Set x to x modulo 2^bitLength.\n x = x % Math.pow(2, bitLength)\n\n // 11. If signedness is \"signed\" and x ≥ 2^bitLength − 1,\n // then return x − 2^bitLength.\n if (signedness === 'signed' && x >= Math.pow(2, bitLength) - 1) {\n return x - Math.pow(2, bitLength)\n }\n\n // 12. Otherwise, return x.\n return x\n}\n\n// https://webidl.spec.whatwg.org/#abstract-opdef-integerpart\nwebidl.util.IntegerPart = function (n) {\n // 1. Let r be floor(abs(n)).\n const r = Math.floor(Math.abs(n))\n\n // 2. If n < 0, then return -1 × r.\n if (n < 0) {\n return -1 * r\n }\n\n // 3. Otherwise, return r.\n return r\n}\n\n// https://webidl.spec.whatwg.org/#es-sequence\nwebidl.sequenceConverter = function (converter) {\n return (V) => {\n // 1. If Type(V) is not Object, throw a TypeError.\n if (webidl.util.Type(V) !== 'Object') {\n throw webidl.errors.exception({\n header: 'Sequence',\n message: `Value of type ${webidl.util.Type(V)} is not an Object.`\n })\n }\n\n // 2. Let method be ? GetMethod(V, @@iterator).\n /** @type {Generator} */\n const method = V?.[Symbol.iterator]?.()\n const seq = []\n\n // 3. If method is undefined, throw a TypeError.\n if (\n method === undefined ||\n typeof method.next !== 'function'\n ) {\n throw webidl.errors.exception({\n header: 'Sequence',\n message: 'Object is not an iterator.'\n })\n }\n\n // https://webidl.spec.whatwg.org/#create-sequence-from-iterable\n while (true) {\n const { done, value } = method.next()\n\n if (done) {\n break\n }\n\n seq.push(converter(value))\n }\n\n return seq\n }\n}\n\n// https://webidl.spec.whatwg.org/#es-to-record\nwebidl.recordConverter = function (keyConverter, valueConverter) {\n return (O) => {\n // 1. If Type(O) is not Object, throw a TypeError.\n if (webidl.util.Type(O) !== 'Object') {\n throw webidl.errors.exception({\n header: 'Record',\n message: `Value of type ${webidl.util.Type(O)} is not an Object.`\n })\n }\n\n // 2. Let result be a new empty instance of record.\n const result = {}\n\n if (!types.isProxy(O)) {\n // Object.keys only returns enumerable properties\n const keys = Object.keys(O)\n\n for (const key of keys) {\n // 1. Let typedKey be key converted to an IDL value of type K.\n const typedKey = keyConverter(key)\n\n // 2. Let value be ? Get(O, key).\n // 3. Let typedValue be value converted to an IDL value of type V.\n const typedValue = valueConverter(O[key])\n\n // 4. Set result[typedKey] to typedValue.\n result[typedKey] = typedValue\n }\n\n // 5. Return result.\n return result\n }\n\n // 3. Let keys be ? O.[[OwnPropertyKeys]]().\n const keys = Reflect.ownKeys(O)\n\n // 4. For each key of keys.\n for (const key of keys) {\n // 1. Let desc be ? O.[[GetOwnProperty]](key).\n const desc = Reflect.getOwnPropertyDescriptor(O, key)\n\n // 2. If desc is not undefined and desc.[[Enumerable]] is true:\n if (desc?.enumerable) {\n // 1. Let typedKey be key converted to an IDL value of type K.\n const typedKey = keyConverter(key)\n\n // 2. Let value be ? Get(O, key).\n // 3. Let typedValue be value converted to an IDL value of type V.\n const typedValue = valueConverter(O[key])\n\n // 4. Set result[typedKey] to typedValue.\n result[typedKey] = typedValue\n }\n }\n\n // 5. Return result.\n return result\n }\n}\n\nwebidl.interfaceConverter = function (i) {\n return (V, opts = {}) => {\n if (opts.strict !== false && !(V instanceof i)) {\n throw webidl.errors.exception({\n header: i.name,\n message: `Expected ${V} to be an instance of ${i.name}.`\n })\n }\n\n return V\n }\n}\n\nwebidl.dictionaryConverter = function (converters) {\n return (dictionary) => {\n const type = webidl.util.Type(dictionary)\n const dict = {}\n\n if (type === 'Null' || type === 'Undefined') {\n return dict\n } else if (type !== 'Object') {\n throw webidl.errors.exception({\n header: 'Dictionary',\n message: `Expected ${dictionary} to be one of: Null, Undefined, Object.`\n })\n }\n\n for (const options of converters) {\n const { key, defaultValue, required, converter } = options\n\n if (required === true) {\n if (!hasOwn(dictionary, key)) {\n throw webidl.errors.exception({\n header: 'Dictionary',\n message: `Missing required key \"${key}\".`\n })\n }\n }\n\n let value = dictionary[key]\n const hasDefault = hasOwn(options, 'defaultValue')\n\n // Only use defaultValue if value is undefined and\n // a defaultValue options was provided.\n if (hasDefault && value !== null) {\n value = value ?? defaultValue\n }\n\n // A key can be optional and have no default value.\n // When this happens, do not perform a conversion,\n // and do not assign the key a value.\n if (required || hasDefault || value !== undefined) {\n value = converter(value)\n\n if (\n options.allowedValues &&\n !options.allowedValues.includes(value)\n ) {\n throw webidl.errors.exception({\n header: 'Dictionary',\n message: `${value} is not an accepted type. Expected one of ${options.allowedValues.join(', ')}.`\n })\n }\n\n dict[key] = value\n }\n }\n\n return dict\n }\n}\n\nwebidl.nullableConverter = function (converter) {\n return (V) => {\n if (V === null) {\n return V\n }\n\n return converter(V)\n }\n}\n\n// https://webidl.spec.whatwg.org/#es-DOMString\nwebidl.converters.DOMString = function (V, opts = {}) {\n // 1. If V is null and the conversion is to an IDL type\n // associated with the [LegacyNullToEmptyString]\n // extended attribute, then return the DOMString value\n // that represents the empty string.\n if (V === null && opts.legacyNullToEmptyString) {\n return ''\n }\n\n // 2. Let x be ? ToString(V).\n if (typeof V === 'symbol') {\n throw new TypeError('Could not convert argument of type symbol to string.')\n }\n\n // 3. Return the IDL DOMString value that represents the\n // same sequence of code units as the one the\n // ECMAScript String value x represents.\n return String(V)\n}\n\n// https://webidl.spec.whatwg.org/#es-ByteString\nwebidl.converters.ByteString = function (V) {\n // 1. Let x be ? ToString(V).\n // Note: DOMString converter perform ? ToString(V)\n const x = webidl.converters.DOMString(V)\n\n // 2. If the value of any element of x is greater than\n // 255, then throw a TypeError.\n for (let index = 0; index < x.length; index++) {\n if (x.charCodeAt(index) > 255) {\n throw new TypeError(\n 'Cannot convert argument to a ByteString because the character at ' +\n `index ${index} has a value of ${x.charCodeAt(index)} which is greater than 255.`\n )\n }\n }\n\n // 3. Return an IDL ByteString value whose length is the\n // length of x, and where the value of each element is\n // the value of the corresponding element of x.\n return x\n}\n\n// https://webidl.spec.whatwg.org/#es-USVString\nwebidl.converters.USVString = toUSVString\n\n// https://webidl.spec.whatwg.org/#es-boolean\nwebidl.converters.boolean = function (V) {\n // 1. Let x be the result of computing ToBoolean(V).\n const x = Boolean(V)\n\n // 2. Return the IDL boolean value that is the one that represents\n // the same truth value as the ECMAScript Boolean value x.\n return x\n}\n\n// https://webidl.spec.whatwg.org/#es-any\nwebidl.converters.any = function (V) {\n return V\n}\n\n// https://webidl.spec.whatwg.org/#es-long-long\nwebidl.converters['long long'] = function (V) {\n // 1. Let x be ? ConvertToInt(V, 64, \"signed\").\n const x = webidl.util.ConvertToInt(V, 64, 'signed')\n\n // 2. Return the IDL long long value that represents\n // the same numeric value as x.\n return x\n}\n\n// https://webidl.spec.whatwg.org/#es-unsigned-long-long\nwebidl.converters['unsigned long long'] = function (V) {\n // 1. Let x be ? ConvertToInt(V, 64, \"unsigned\").\n const x = webidl.util.ConvertToInt(V, 64, 'unsigned')\n\n // 2. Return the IDL unsigned long long value that\n // represents the same numeric value as x.\n return x\n}\n\n// https://webidl.spec.whatwg.org/#es-unsigned-long\nwebidl.converters['unsigned long'] = function (V) {\n // 1. Let x be ? ConvertToInt(V, 32, \"unsigned\").\n const x = webidl.util.ConvertToInt(V, 32, 'unsigned')\n\n // 2. Return the IDL unsigned long value that\n // represents the same numeric value as x.\n return x\n}\n\n// https://webidl.spec.whatwg.org/#es-unsigned-short\nwebidl.converters['unsigned short'] = function (V, opts) {\n // 1. Let x be ? ConvertToInt(V, 16, \"unsigned\").\n const x = webidl.util.ConvertToInt(V, 16, 'unsigned', opts)\n\n // 2. Return the IDL unsigned short value that represents\n // the same numeric value as x.\n return x\n}\n\n// https://webidl.spec.whatwg.org/#idl-ArrayBuffer\nwebidl.converters.ArrayBuffer = function (V, opts = {}) {\n // 1. If Type(V) is not Object, or V does not have an\n // [[ArrayBufferData]] internal slot, then throw a\n // TypeError.\n // see: https://tc39.es/ecma262/#sec-properties-of-the-arraybuffer-instances\n // see: https://tc39.es/ecma262/#sec-properties-of-the-sharedarraybuffer-instances\n if (\n webidl.util.Type(V) !== 'Object' ||\n !types.isAnyArrayBuffer(V)\n ) {\n throw webidl.errors.conversionFailed({\n prefix: `${V}`,\n argument: `${V}`,\n types: ['ArrayBuffer']\n })\n }\n\n // 2. If the conversion is not to an IDL type associated\n // with the [AllowShared] extended attribute, and\n // IsSharedArrayBuffer(V) is true, then throw a\n // TypeError.\n if (opts.allowShared === false && types.isSharedArrayBuffer(V)) {\n throw webidl.errors.exception({\n header: 'ArrayBuffer',\n message: 'SharedArrayBuffer is not allowed.'\n })\n }\n\n // 3. If the conversion is not to an IDL type associated\n // with the [AllowResizable] extended attribute, and\n // IsResizableArrayBuffer(V) is true, then throw a\n // TypeError.\n // Note: resizable ArrayBuffers are currently a proposal.\n\n // 4. Return the IDL ArrayBuffer value that is a\n // reference to the same object as V.\n return V\n}\n\nwebidl.converters.TypedArray = function (V, T, opts = {}) {\n // 1. Let T be the IDL type V is being converted to.\n\n // 2. If Type(V) is not Object, or V does not have a\n // [[TypedArrayName]] internal slot with a value\n // equal to T’s name, then throw a TypeError.\n if (\n webidl.util.Type(V) !== 'Object' ||\n !types.isTypedArray(V) ||\n V.constructor.name !== T.name\n ) {\n throw webidl.errors.conversionFailed({\n prefix: `${T.name}`,\n argument: `${V}`,\n types: [T.name]\n })\n }\n\n // 3. If the conversion is not to an IDL type associated\n // with the [AllowShared] extended attribute, and\n // IsSharedArrayBuffer(V.[[ViewedArrayBuffer]]) is\n // true, then throw a TypeError.\n if (opts.allowShared === false && types.isSharedArrayBuffer(V.buffer)) {\n throw webidl.errors.exception({\n header: 'ArrayBuffer',\n message: 'SharedArrayBuffer is not allowed.'\n })\n }\n\n // 4. If the conversion is not to an IDL type associated\n // with the [AllowResizable] extended attribute, and\n // IsResizableArrayBuffer(V.[[ViewedArrayBuffer]]) is\n // true, then throw a TypeError.\n // Note: resizable array buffers are currently a proposal\n\n // 5. Return the IDL value of type T that is a reference\n // to the same object as V.\n return V\n}\n\nwebidl.converters.DataView = function (V, opts = {}) {\n // 1. If Type(V) is not Object, or V does not have a\n // [[DataView]] internal slot, then throw a TypeError.\n if (webidl.util.Type(V) !== 'Object' || !types.isDataView(V)) {\n throw webidl.errors.exception({\n header: 'DataView',\n message: 'Object is not a DataView.'\n })\n }\n\n // 2. If the conversion is not to an IDL type associated\n // with the [AllowShared] extended attribute, and\n // IsSharedArrayBuffer(V.[[ViewedArrayBuffer]]) is true,\n // then throw a TypeError.\n if (opts.allowShared === false && types.isSharedArrayBuffer(V.buffer)) {\n throw webidl.errors.exception({\n header: 'ArrayBuffer',\n message: 'SharedArrayBuffer is not allowed.'\n })\n }\n\n // 3. If the conversion is not to an IDL type associated\n // with the [AllowResizable] extended attribute, and\n // IsResizableArrayBuffer(V.[[ViewedArrayBuffer]]) is\n // true, then throw a TypeError.\n // Note: resizable ArrayBuffers are currently a proposal\n\n // 4. Return the IDL DataView value that is a reference\n // to the same object as V.\n return V\n}\n\n// https://webidl.spec.whatwg.org/#BufferSource\nwebidl.converters.BufferSource = function (V, opts = {}) {\n if (types.isAnyArrayBuffer(V)) {\n return webidl.converters.ArrayBuffer(V, opts)\n }\n\n if (types.isTypedArray(V)) {\n return webidl.converters.TypedArray(V, V.constructor)\n }\n\n if (types.isDataView(V)) {\n return webidl.converters.DataView(V, opts)\n }\n\n throw new TypeError(`Could not convert ${V} to a BufferSource.`)\n}\n\nwebidl.converters['sequence'] = webidl.sequenceConverter(\n webidl.converters.ByteString\n)\n\nwebidl.converters['sequence>'] = webidl.sequenceConverter(\n webidl.converters['sequence']\n)\n\nwebidl.converters['record'] = webidl.recordConverter(\n webidl.converters.ByteString,\n webidl.converters.ByteString\n)\n\nmodule.exports = {\n webidl\n}\n","'use strict'\n\n/**\n * @see https://encoding.spec.whatwg.org/#concept-encoding-get\n * @param {string|undefined} label\n */\nfunction getEncoding (label) {\n if (!label) {\n return 'failure'\n }\n\n // 1. Remove any leading and trailing ASCII whitespace from label.\n // 2. If label is an ASCII case-insensitive match for any of the\n // labels listed in the table below, then return the\n // corresponding encoding; otherwise return failure.\n switch (label.trim().toLowerCase()) {\n case 'unicode-1-1-utf-8':\n case 'unicode11utf8':\n case 'unicode20utf8':\n case 'utf-8':\n case 'utf8':\n case 'x-unicode20utf8':\n return 'UTF-8'\n case '866':\n case 'cp866':\n case 'csibm866':\n case 'ibm866':\n return 'IBM866'\n case 'csisolatin2':\n case 'iso-8859-2':\n case 'iso-ir-101':\n case 'iso8859-2':\n case 'iso88592':\n case 'iso_8859-2':\n case 'iso_8859-2:1987':\n case 'l2':\n case 'latin2':\n return 'ISO-8859-2'\n case 'csisolatin3':\n case 'iso-8859-3':\n case 'iso-ir-109':\n case 'iso8859-3':\n case 'iso88593':\n case 'iso_8859-3':\n case 'iso_8859-3:1988':\n case 'l3':\n case 'latin3':\n return 'ISO-8859-3'\n case 'csisolatin4':\n case 'iso-8859-4':\n case 'iso-ir-110':\n case 'iso8859-4':\n case 'iso88594':\n case 'iso_8859-4':\n case 'iso_8859-4:1988':\n case 'l4':\n case 'latin4':\n return 'ISO-8859-4'\n case 'csisolatincyrillic':\n case 'cyrillic':\n case 'iso-8859-5':\n case 'iso-ir-144':\n case 'iso8859-5':\n case 'iso88595':\n case 'iso_8859-5':\n case 'iso_8859-5:1988':\n return 'ISO-8859-5'\n case 'arabic':\n case 'asmo-708':\n case 'csiso88596e':\n case 'csiso88596i':\n case 'csisolatinarabic':\n case 'ecma-114':\n case 'iso-8859-6':\n case 'iso-8859-6-e':\n case 'iso-8859-6-i':\n case 'iso-ir-127':\n case 'iso8859-6':\n case 'iso88596':\n case 'iso_8859-6':\n case 'iso_8859-6:1987':\n return 'ISO-8859-6'\n case 'csisolatingreek':\n case 'ecma-118':\n case 'elot_928':\n case 'greek':\n case 'greek8':\n case 'iso-8859-7':\n case 'iso-ir-126':\n case 'iso8859-7':\n case 'iso88597':\n case 'iso_8859-7':\n case 'iso_8859-7:1987':\n case 'sun_eu_greek':\n return 'ISO-8859-7'\n case 'csiso88598e':\n case 'csisolatinhebrew':\n case 'hebrew':\n case 'iso-8859-8':\n case 'iso-8859-8-e':\n case 'iso-ir-138':\n case 'iso8859-8':\n case 'iso88598':\n case 'iso_8859-8':\n case 'iso_8859-8:1988':\n case 'visual':\n return 'ISO-8859-8'\n case 'csiso88598i':\n case 'iso-8859-8-i':\n case 'logical':\n return 'ISO-8859-8-I'\n case 'csisolatin6':\n case 'iso-8859-10':\n case 'iso-ir-157':\n case 'iso8859-10':\n case 'iso885910':\n case 'l6':\n case 'latin6':\n return 'ISO-8859-10'\n case 'iso-8859-13':\n case 'iso8859-13':\n case 'iso885913':\n return 'ISO-8859-13'\n case 'iso-8859-14':\n case 'iso8859-14':\n case 'iso885914':\n return 'ISO-8859-14'\n case 'csisolatin9':\n case 'iso-8859-15':\n case 'iso8859-15':\n case 'iso885915':\n case 'iso_8859-15':\n case 'l9':\n return 'ISO-8859-15'\n case 'iso-8859-16':\n return 'ISO-8859-16'\n case 'cskoi8r':\n case 'koi':\n case 'koi8':\n case 'koi8-r':\n case 'koi8_r':\n return 'KOI8-R'\n case 'koi8-ru':\n case 'koi8-u':\n return 'KOI8-U'\n case 'csmacintosh':\n case 'mac':\n case 'macintosh':\n case 'x-mac-roman':\n return 'macintosh'\n case 'iso-8859-11':\n case 'iso8859-11':\n case 'iso885911':\n case 'tis-620':\n case 'windows-874':\n return 'windows-874'\n case 'cp1250':\n case 'windows-1250':\n case 'x-cp1250':\n return 'windows-1250'\n case 'cp1251':\n case 'windows-1251':\n case 'x-cp1251':\n return 'windows-1251'\n case 'ansi_x3.4-1968':\n case 'ascii':\n case 'cp1252':\n case 'cp819':\n case 'csisolatin1':\n case 'ibm819':\n case 'iso-8859-1':\n case 'iso-ir-100':\n case 'iso8859-1':\n case 'iso88591':\n case 'iso_8859-1':\n case 'iso_8859-1:1987':\n case 'l1':\n case 'latin1':\n case 'us-ascii':\n case 'windows-1252':\n case 'x-cp1252':\n return 'windows-1252'\n case 'cp1253':\n case 'windows-1253':\n case 'x-cp1253':\n return 'windows-1253'\n case 'cp1254':\n case 'csisolatin5':\n case 'iso-8859-9':\n case 'iso-ir-148':\n case 'iso8859-9':\n case 'iso88599':\n case 'iso_8859-9':\n case 'iso_8859-9:1989':\n case 'l5':\n case 'latin5':\n case 'windows-1254':\n case 'x-cp1254':\n return 'windows-1254'\n case 'cp1255':\n case 'windows-1255':\n case 'x-cp1255':\n return 'windows-1255'\n case 'cp1256':\n case 'windows-1256':\n case 'x-cp1256':\n return 'windows-1256'\n case 'cp1257':\n case 'windows-1257':\n case 'x-cp1257':\n return 'windows-1257'\n case 'cp1258':\n case 'windows-1258':\n case 'x-cp1258':\n return 'windows-1258'\n case 'x-mac-cyrillic':\n case 'x-mac-ukrainian':\n return 'x-mac-cyrillic'\n case 'chinese':\n case 'csgb2312':\n case 'csiso58gb231280':\n case 'gb2312':\n case 'gb_2312':\n case 'gb_2312-80':\n case 'gbk':\n case 'iso-ir-58':\n case 'x-gbk':\n return 'GBK'\n case 'gb18030':\n return 'gb18030'\n case 'big5':\n case 'big5-hkscs':\n case 'cn-big5':\n case 'csbig5':\n case 'x-x-big5':\n return 'Big5'\n case 'cseucpkdfmtjapanese':\n case 'euc-jp':\n case 'x-euc-jp':\n return 'EUC-JP'\n case 'csiso2022jp':\n case 'iso-2022-jp':\n return 'ISO-2022-JP'\n case 'csshiftjis':\n case 'ms932':\n case 'ms_kanji':\n case 'shift-jis':\n case 'shift_jis':\n case 'sjis':\n case 'windows-31j':\n case 'x-sjis':\n return 'Shift_JIS'\n case 'cseuckr':\n case 'csksc56011987':\n case 'euc-kr':\n case 'iso-ir-149':\n case 'korean':\n case 'ks_c_5601-1987':\n case 'ks_c_5601-1989':\n case 'ksc5601':\n case 'ksc_5601':\n case 'windows-949':\n return 'EUC-KR'\n case 'csiso2022kr':\n case 'hz-gb-2312':\n case 'iso-2022-cn':\n case 'iso-2022-cn-ext':\n case 'iso-2022-kr':\n case 'replacement':\n return 'replacement'\n case 'unicodefffe':\n case 'utf-16be':\n return 'UTF-16BE'\n case 'csunicode':\n case 'iso-10646-ucs-2':\n case 'ucs-2':\n case 'unicode':\n case 'unicodefeff':\n case 'utf-16':\n case 'utf-16le':\n return 'UTF-16LE'\n case 'x-user-defined':\n return 'x-user-defined'\n default: return 'failure'\n }\n}\n\nmodule.exports = {\n getEncoding\n}\n","'use strict'\n\nconst {\n staticPropertyDescriptors,\n readOperation,\n fireAProgressEvent\n} = require('./util')\nconst {\n kState,\n kError,\n kResult,\n kEvents,\n kAborted\n} = require('./symbols')\nconst { webidl } = require('../fetch/webidl')\nconst { kEnumerableProperty } = require('../core/util')\n\nclass FileReader extends EventTarget {\n constructor () {\n super()\n\n this[kState] = 'empty'\n this[kResult] = null\n this[kError] = null\n this[kEvents] = {\n loadend: null,\n error: null,\n abort: null,\n load: null,\n progress: null,\n loadstart: null\n }\n }\n\n /**\n * @see https://w3c.github.io/FileAPI/#dfn-readAsArrayBuffer\n * @param {import('buffer').Blob} blob\n */\n readAsArrayBuffer (blob) {\n webidl.brandCheck(this, FileReader)\n\n webidl.argumentLengthCheck(arguments, 1, { header: 'FileReader.readAsArrayBuffer' })\n\n blob = webidl.converters.Blob(blob, { strict: false })\n\n // The readAsArrayBuffer(blob) method, when invoked,\n // must initiate a read operation for blob with ArrayBuffer.\n readOperation(this, blob, 'ArrayBuffer')\n }\n\n /**\n * @see https://w3c.github.io/FileAPI/#readAsBinaryString\n * @param {import('buffer').Blob} blob\n */\n readAsBinaryString (blob) {\n webidl.brandCheck(this, FileReader)\n\n webidl.argumentLengthCheck(arguments, 1, { header: 'FileReader.readAsBinaryString' })\n\n blob = webidl.converters.Blob(blob, { strict: false })\n\n // The readAsBinaryString(blob) method, when invoked,\n // must initiate a read operation for blob with BinaryString.\n readOperation(this, blob, 'BinaryString')\n }\n\n /**\n * @see https://w3c.github.io/FileAPI/#readAsDataText\n * @param {import('buffer').Blob} blob\n * @param {string?} encoding\n */\n readAsText (blob, encoding = undefined) {\n webidl.brandCheck(this, FileReader)\n\n webidl.argumentLengthCheck(arguments, 1, { header: 'FileReader.readAsText' })\n\n blob = webidl.converters.Blob(blob, { strict: false })\n\n if (encoding !== undefined) {\n encoding = webidl.converters.DOMString(encoding)\n }\n\n // The readAsText(blob, encoding) method, when invoked,\n // must initiate a read operation for blob with Text and encoding.\n readOperation(this, blob, 'Text', encoding)\n }\n\n /**\n * @see https://w3c.github.io/FileAPI/#dfn-readAsDataURL\n * @param {import('buffer').Blob} blob\n */\n readAsDataURL (blob) {\n webidl.brandCheck(this, FileReader)\n\n webidl.argumentLengthCheck(arguments, 1, { header: 'FileReader.readAsDataURL' })\n\n blob = webidl.converters.Blob(blob, { strict: false })\n\n // The readAsDataURL(blob) method, when invoked, must\n // initiate a read operation for blob with DataURL.\n readOperation(this, blob, 'DataURL')\n }\n\n /**\n * @see https://w3c.github.io/FileAPI/#dfn-abort\n */\n abort () {\n // 1. If this's state is \"empty\" or if this's state is\n // \"done\" set this's result to null and terminate\n // this algorithm.\n if (this[kState] === 'empty' || this[kState] === 'done') {\n this[kResult] = null\n return\n }\n\n // 2. If this's state is \"loading\" set this's state to\n // \"done\" and set this's result to null.\n if (this[kState] === 'loading') {\n this[kState] = 'done'\n this[kResult] = null\n }\n\n // 3. If there are any tasks from this on the file reading\n // task source in an affiliated task queue, then remove\n // those tasks from that task queue.\n this[kAborted] = true\n\n // 4. Terminate the algorithm for the read method being processed.\n // TODO\n\n // 5. Fire a progress event called abort at this.\n fireAProgressEvent('abort', this)\n\n // 6. If this's state is not \"loading\", fire a progress\n // event called loadend at this.\n if (this[kState] !== 'loading') {\n fireAProgressEvent('loadend', this)\n }\n }\n\n /**\n * @see https://w3c.github.io/FileAPI/#dom-filereader-readystate\n */\n get readyState () {\n webidl.brandCheck(this, FileReader)\n\n switch (this[kState]) {\n case 'empty': return this.EMPTY\n case 'loading': return this.LOADING\n case 'done': return this.DONE\n }\n }\n\n /**\n * @see https://w3c.github.io/FileAPI/#dom-filereader-result\n */\n get result () {\n webidl.brandCheck(this, FileReader)\n\n // The result attribute’s getter, when invoked, must return\n // this's result.\n return this[kResult]\n }\n\n /**\n * @see https://w3c.github.io/FileAPI/#dom-filereader-error\n */\n get error () {\n webidl.brandCheck(this, FileReader)\n\n // The error attribute’s getter, when invoked, must return\n // this's error.\n return this[kError]\n }\n\n get onloadend () {\n webidl.brandCheck(this, FileReader)\n\n return this[kEvents].loadend\n }\n\n set onloadend (fn) {\n webidl.brandCheck(this, FileReader)\n\n if (this[kEvents].loadend) {\n this.removeEventListener('loadend', this[kEvents].loadend)\n }\n\n if (typeof fn === 'function') {\n this[kEvents].loadend = fn\n this.addEventListener('loadend', fn)\n } else {\n this[kEvents].loadend = null\n }\n }\n\n get onerror () {\n webidl.brandCheck(this, FileReader)\n\n return this[kEvents].error\n }\n\n set onerror (fn) {\n webidl.brandCheck(this, FileReader)\n\n if (this[kEvents].error) {\n this.removeEventListener('error', this[kEvents].error)\n }\n\n if (typeof fn === 'function') {\n this[kEvents].error = fn\n this.addEventListener('error', fn)\n } else {\n this[kEvents].error = null\n }\n }\n\n get onloadstart () {\n webidl.brandCheck(this, FileReader)\n\n return this[kEvents].loadstart\n }\n\n set onloadstart (fn) {\n webidl.brandCheck(this, FileReader)\n\n if (this[kEvents].loadstart) {\n this.removeEventListener('loadstart', this[kEvents].loadstart)\n }\n\n if (typeof fn === 'function') {\n this[kEvents].loadstart = fn\n this.addEventListener('loadstart', fn)\n } else {\n this[kEvents].loadstart = null\n }\n }\n\n get onprogress () {\n webidl.brandCheck(this, FileReader)\n\n return this[kEvents].progress\n }\n\n set onprogress (fn) {\n webidl.brandCheck(this, FileReader)\n\n if (this[kEvents].progress) {\n this.removeEventListener('progress', this[kEvents].progress)\n }\n\n if (typeof fn === 'function') {\n this[kEvents].progress = fn\n this.addEventListener('progress', fn)\n } else {\n this[kEvents].progress = null\n }\n }\n\n get onload () {\n webidl.brandCheck(this, FileReader)\n\n return this[kEvents].load\n }\n\n set onload (fn) {\n webidl.brandCheck(this, FileReader)\n\n if (this[kEvents].load) {\n this.removeEventListener('load', this[kEvents].load)\n }\n\n if (typeof fn === 'function') {\n this[kEvents].load = fn\n this.addEventListener('load', fn)\n } else {\n this[kEvents].load = null\n }\n }\n\n get onabort () {\n webidl.brandCheck(this, FileReader)\n\n return this[kEvents].abort\n }\n\n set onabort (fn) {\n webidl.brandCheck(this, FileReader)\n\n if (this[kEvents].abort) {\n this.removeEventListener('abort', this[kEvents].abort)\n }\n\n if (typeof fn === 'function') {\n this[kEvents].abort = fn\n this.addEventListener('abort', fn)\n } else {\n this[kEvents].abort = null\n }\n }\n}\n\n// https://w3c.github.io/FileAPI/#dom-filereader-empty\nFileReader.EMPTY = FileReader.prototype.EMPTY = 0\n// https://w3c.github.io/FileAPI/#dom-filereader-loading\nFileReader.LOADING = FileReader.prototype.LOADING = 1\n// https://w3c.github.io/FileAPI/#dom-filereader-done\nFileReader.DONE = FileReader.prototype.DONE = 2\n\nObject.defineProperties(FileReader.prototype, {\n EMPTY: staticPropertyDescriptors,\n LOADING: staticPropertyDescriptors,\n DONE: staticPropertyDescriptors,\n readAsArrayBuffer: kEnumerableProperty,\n readAsBinaryString: kEnumerableProperty,\n readAsText: kEnumerableProperty,\n readAsDataURL: kEnumerableProperty,\n abort: kEnumerableProperty,\n readyState: kEnumerableProperty,\n result: kEnumerableProperty,\n error: kEnumerableProperty,\n onloadstart: kEnumerableProperty,\n onprogress: kEnumerableProperty,\n onload: kEnumerableProperty,\n onabort: kEnumerableProperty,\n onerror: kEnumerableProperty,\n onloadend: kEnumerableProperty,\n [Symbol.toStringTag]: {\n value: 'FileReader',\n writable: false,\n enumerable: false,\n configurable: true\n }\n})\n\nObject.defineProperties(FileReader, {\n EMPTY: staticPropertyDescriptors,\n LOADING: staticPropertyDescriptors,\n DONE: staticPropertyDescriptors\n})\n\nmodule.exports = {\n FileReader\n}\n","'use strict'\n\nconst { webidl } = require('../fetch/webidl')\n\nconst kState = Symbol('ProgressEvent state')\n\n/**\n * @see https://xhr.spec.whatwg.org/#progressevent\n */\nclass ProgressEvent extends Event {\n constructor (type, eventInitDict = {}) {\n type = webidl.converters.DOMString(type)\n eventInitDict = webidl.converters.ProgressEventInit(eventInitDict ?? {})\n\n super(type, eventInitDict)\n\n this[kState] = {\n lengthComputable: eventInitDict.lengthComputable,\n loaded: eventInitDict.loaded,\n total: eventInitDict.total\n }\n }\n\n get lengthComputable () {\n webidl.brandCheck(this, ProgressEvent)\n\n return this[kState].lengthComputable\n }\n\n get loaded () {\n webidl.brandCheck(this, ProgressEvent)\n\n return this[kState].loaded\n }\n\n get total () {\n webidl.brandCheck(this, ProgressEvent)\n\n return this[kState].total\n }\n}\n\nwebidl.converters.ProgressEventInit = webidl.dictionaryConverter([\n {\n key: 'lengthComputable',\n converter: webidl.converters.boolean,\n defaultValue: false\n },\n {\n key: 'loaded',\n converter: webidl.converters['unsigned long long'],\n defaultValue: 0\n },\n {\n key: 'total',\n converter: webidl.converters['unsigned long long'],\n defaultValue: 0\n },\n {\n key: 'bubbles',\n converter: webidl.converters.boolean,\n defaultValue: false\n },\n {\n key: 'cancelable',\n converter: webidl.converters.boolean,\n defaultValue: false\n },\n {\n key: 'composed',\n converter: webidl.converters.boolean,\n defaultValue: false\n }\n])\n\nmodule.exports = {\n ProgressEvent\n}\n","'use strict'\n\nmodule.exports = {\n kState: Symbol('FileReader state'),\n kResult: Symbol('FileReader result'),\n kError: Symbol('FileReader error'),\n kLastProgressEventFired: Symbol('FileReader last progress event fired timestamp'),\n kEvents: Symbol('FileReader events'),\n kAborted: Symbol('FileReader aborted')\n}\n","'use strict'\n\nconst {\n kState,\n kError,\n kResult,\n kAborted,\n kLastProgressEventFired\n} = require('./symbols')\nconst { ProgressEvent } = require('./progressevent')\nconst { getEncoding } = require('./encoding')\nconst { DOMException } = require('../fetch/constants')\nconst { serializeAMimeType, parseMIMEType } = require('../fetch/dataURL')\nconst { types } = require('util')\nconst { StringDecoder } = require('string_decoder')\nconst { btoa } = require('buffer')\n\n/** @type {PropertyDescriptor} */\nconst staticPropertyDescriptors = {\n enumerable: true,\n writable: false,\n configurable: false\n}\n\n/**\n * @see https://w3c.github.io/FileAPI/#readOperation\n * @param {import('./filereader').FileReader} fr\n * @param {import('buffer').Blob} blob\n * @param {string} type\n * @param {string?} encodingName\n */\nfunction readOperation (fr, blob, type, encodingName) {\n // 1. If fr’s state is \"loading\", throw an InvalidStateError\n // DOMException.\n if (fr[kState] === 'loading') {\n throw new DOMException('Invalid state', 'InvalidStateError')\n }\n\n // 2. Set fr’s state to \"loading\".\n fr[kState] = 'loading'\n\n // 3. Set fr’s result to null.\n fr[kResult] = null\n\n // 4. Set fr’s error to null.\n fr[kError] = null\n\n // 5. Let stream be the result of calling get stream on blob.\n /** @type {import('stream/web').ReadableStream} */\n const stream = blob.stream()\n\n // 6. Let reader be the result of getting a reader from stream.\n const reader = stream.getReader()\n\n // 7. Let bytes be an empty byte sequence.\n /** @type {Uint8Array[]} */\n const bytes = []\n\n // 8. Let chunkPromise be the result of reading a chunk from\n // stream with reader.\n let chunkPromise = reader.read()\n\n // 9. Let isFirstChunk be true.\n let isFirstChunk = true\n\n // 10. In parallel, while true:\n // Note: \"In parallel\" just means non-blocking\n // Note 2: readOperation itself cannot be async as double\n // reading the body would then reject the promise, instead\n // of throwing an error.\n ;(async () => {\n while (!fr[kAborted]) {\n // 1. Wait for chunkPromise to be fulfilled or rejected.\n try {\n const { done, value } = await chunkPromise\n\n // 2. If chunkPromise is fulfilled, and isFirstChunk is\n // true, queue a task to fire a progress event called\n // loadstart at fr.\n if (isFirstChunk && !fr[kAborted]) {\n queueMicrotask(() => {\n fireAProgressEvent('loadstart', fr)\n })\n }\n\n // 3. Set isFirstChunk to false.\n isFirstChunk = false\n\n // 4. If chunkPromise is fulfilled with an object whose\n // done property is false and whose value property is\n // a Uint8Array object, run these steps:\n if (!done && types.isUint8Array(value)) {\n // 1. Let bs be the byte sequence represented by the\n // Uint8Array object.\n\n // 2. Append bs to bytes.\n bytes.push(value)\n\n // 3. If roughly 50ms have passed since these steps\n // were last invoked, queue a task to fire a\n // progress event called progress at fr.\n if (\n (\n fr[kLastProgressEventFired] === undefined ||\n Date.now() - fr[kLastProgressEventFired] >= 50\n ) &&\n !fr[kAborted]\n ) {\n fr[kLastProgressEventFired] = Date.now()\n queueMicrotask(() => {\n fireAProgressEvent('progress', fr)\n })\n }\n\n // 4. Set chunkPromise to the result of reading a\n // chunk from stream with reader.\n chunkPromise = reader.read()\n } else if (done) {\n // 5. Otherwise, if chunkPromise is fulfilled with an\n // object whose done property is true, queue a task\n // to run the following steps and abort this algorithm:\n queueMicrotask(() => {\n // 1. Set fr’s state to \"done\".\n fr[kState] = 'done'\n\n // 2. Let result be the result of package data given\n // bytes, type, blob’s type, and encodingName.\n try {\n const result = packageData(bytes, type, blob.type, encodingName)\n\n // 4. Else:\n\n if (fr[kAborted]) {\n return\n }\n\n // 1. Set fr’s result to result.\n fr[kResult] = result\n\n // 2. Fire a progress event called load at the fr.\n fireAProgressEvent('load', fr)\n } catch (error) {\n // 3. If package data threw an exception error:\n\n // 1. Set fr’s error to error.\n fr[kError] = error\n\n // 2. Fire a progress event called error at fr.\n fireAProgressEvent('error', fr)\n }\n\n // 5. If fr’s state is not \"loading\", fire a progress\n // event called loadend at the fr.\n if (fr[kState] !== 'loading') {\n fireAProgressEvent('loadend', fr)\n }\n })\n\n break\n }\n } catch (error) {\n if (fr[kAborted]) {\n return\n }\n\n // 6. Otherwise, if chunkPromise is rejected with an\n // error error, queue a task to run the following\n // steps and abort this algorithm:\n queueMicrotask(() => {\n // 1. Set fr’s state to \"done\".\n fr[kState] = 'done'\n\n // 2. Set fr’s error to error.\n fr[kError] = error\n\n // 3. Fire a progress event called error at fr.\n fireAProgressEvent('error', fr)\n\n // 4. If fr’s state is not \"loading\", fire a progress\n // event called loadend at fr.\n if (fr[kState] !== 'loading') {\n fireAProgressEvent('loadend', fr)\n }\n })\n\n break\n }\n }\n })()\n}\n\n/**\n * @see https://w3c.github.io/FileAPI/#fire-a-progress-event\n * @see https://dom.spec.whatwg.org/#concept-event-fire\n * @param {string} e The name of the event\n * @param {import('./filereader').FileReader} reader\n */\nfunction fireAProgressEvent (e, reader) {\n // The progress event e does not bubble. e.bubbles must be false\n // The progress event e is NOT cancelable. e.cancelable must be false\n const event = new ProgressEvent(e, {\n bubbles: false,\n cancelable: false\n })\n\n reader.dispatchEvent(event)\n}\n\n/**\n * @see https://w3c.github.io/FileAPI/#blob-package-data\n * @param {Uint8Array[]} bytes\n * @param {string} type\n * @param {string?} mimeType\n * @param {string?} encodingName\n */\nfunction packageData (bytes, type, mimeType, encodingName) {\n // 1. A Blob has an associated package data algorithm, given\n // bytes, a type, a optional mimeType, and a optional\n // encodingName, which switches on type and runs the\n // associated steps:\n\n switch (type) {\n case 'DataURL': {\n // 1. Return bytes as a DataURL [RFC2397] subject to\n // the considerations below:\n // * Use mimeType as part of the Data URL if it is\n // available in keeping with the Data URL\n // specification [RFC2397].\n // * If mimeType is not available return a Data URL\n // without a media-type. [RFC2397].\n\n // https://datatracker.ietf.org/doc/html/rfc2397#section-3\n // dataurl := \"data:\" [ mediatype ] [ \";base64\" ] \",\" data\n // mediatype := [ type \"/\" subtype ] *( \";\" parameter )\n // data := *urlchar\n // parameter := attribute \"=\" value\n let dataURL = 'data:'\n\n const parsed = parseMIMEType(mimeType || 'application/octet-stream')\n\n if (parsed !== 'failure') {\n dataURL += serializeAMimeType(parsed)\n }\n\n dataURL += ';base64,'\n\n const decoder = new StringDecoder('latin1')\n\n for (const chunk of bytes) {\n dataURL += btoa(decoder.write(chunk))\n }\n\n dataURL += btoa(decoder.end())\n\n return dataURL\n }\n case 'Text': {\n // 1. Let encoding be failure\n let encoding = 'failure'\n\n // 2. If the encodingName is present, set encoding to the\n // result of getting an encoding from encodingName.\n if (encodingName) {\n encoding = getEncoding(encodingName)\n }\n\n // 3. If encoding is failure, and mimeType is present:\n if (encoding === 'failure' && mimeType) {\n // 1. Let type be the result of parse a MIME type\n // given mimeType.\n const type = parseMIMEType(mimeType)\n\n // 2. If type is not failure, set encoding to the result\n // of getting an encoding from type’s parameters[\"charset\"].\n if (type !== 'failure') {\n encoding = getEncoding(type.parameters.get('charset'))\n }\n }\n\n // 4. If encoding is failure, then set encoding to UTF-8.\n if (encoding === 'failure') {\n encoding = 'UTF-8'\n }\n\n // 5. Decode bytes using fallback encoding encoding, and\n // return the result.\n return decode(bytes, encoding)\n }\n case 'ArrayBuffer': {\n // Return a new ArrayBuffer whose contents are bytes.\n const sequence = combineByteSequences(bytes)\n\n return sequence.buffer\n }\n case 'BinaryString': {\n // Return bytes as a binary string, in which every byte\n // is represented by a code unit of equal value [0..255].\n let binaryString = ''\n\n const decoder = new StringDecoder('latin1')\n\n for (const chunk of bytes) {\n binaryString += decoder.write(chunk)\n }\n\n binaryString += decoder.end()\n\n return binaryString\n }\n }\n}\n\n/**\n * @see https://encoding.spec.whatwg.org/#decode\n * @param {Uint8Array[]} ioQueue\n * @param {string} encoding\n */\nfunction decode (ioQueue, encoding) {\n const bytes = combineByteSequences(ioQueue)\n\n // 1. Let BOMEncoding be the result of BOM sniffing ioQueue.\n const BOMEncoding = BOMSniffing(bytes)\n\n let slice = 0\n\n // 2. If BOMEncoding is non-null:\n if (BOMEncoding !== null) {\n // 1. Set encoding to BOMEncoding.\n encoding = BOMEncoding\n\n // 2. Read three bytes from ioQueue, if BOMEncoding is\n // UTF-8; otherwise read two bytes.\n // (Do nothing with those bytes.)\n slice = BOMEncoding === 'UTF-8' ? 3 : 2\n }\n\n // 3. Process a queue with an instance of encoding’s\n // decoder, ioQueue, output, and \"replacement\".\n\n // 4. Return output.\n\n const sliced = bytes.slice(slice)\n return new TextDecoder(encoding).decode(sliced)\n}\n\n/**\n * @see https://encoding.spec.whatwg.org/#bom-sniff\n * @param {Uint8Array} ioQueue\n */\nfunction BOMSniffing (ioQueue) {\n // 1. Let BOM be the result of peeking 3 bytes from ioQueue,\n // converted to a byte sequence.\n const [a, b, c] = ioQueue\n\n // 2. For each of the rows in the table below, starting with\n // the first one and going down, if BOM starts with the\n // bytes given in the first column, then return the\n // encoding given in the cell in the second column of that\n // row. Otherwise, return null.\n if (a === 0xEF && b === 0xBB && c === 0xBF) {\n return 'UTF-8'\n } else if (a === 0xFE && b === 0xFF) {\n return 'UTF-16BE'\n } else if (a === 0xFF && b === 0xFE) {\n return 'UTF-16LE'\n }\n\n return null\n}\n\n/**\n * @param {Uint8Array[]} sequences\n */\nfunction combineByteSequences (sequences) {\n const size = sequences.reduce((a, b) => {\n return a + b.byteLength\n }, 0)\n\n let offset = 0\n\n return sequences.reduce((a, b) => {\n a.set(b, offset)\n offset += b.byteLength\n return a\n }, new Uint8Array(size))\n}\n\nmodule.exports = {\n staticPropertyDescriptors,\n readOperation,\n fireAProgressEvent\n}\n","'use strict'\n\n// We include a version number for the Dispatcher API. In case of breaking changes,\n// this version number must be increased to avoid conflicts.\nconst globalDispatcher = Symbol.for('undici.globalDispatcher.1')\nconst { InvalidArgumentError } = require('./core/errors')\nconst Agent = require('./agent')\n\nif (getGlobalDispatcher() === undefined) {\n setGlobalDispatcher(new Agent())\n}\n\nfunction setGlobalDispatcher (agent) {\n if (!agent || typeof agent.dispatch !== 'function') {\n throw new InvalidArgumentError('Argument agent must implement Agent')\n }\n Object.defineProperty(globalThis, globalDispatcher, {\n value: agent,\n writable: true,\n enumerable: false,\n configurable: false\n })\n}\n\nfunction getGlobalDispatcher () {\n return globalThis[globalDispatcher]\n}\n\nmodule.exports = {\n setGlobalDispatcher,\n getGlobalDispatcher\n}\n","'use strict'\n\nmodule.exports = class DecoratorHandler {\n constructor (handler) {\n this.handler = handler\n }\n\n onConnect (...args) {\n return this.handler.onConnect(...args)\n }\n\n onError (...args) {\n return this.handler.onError(...args)\n }\n\n onUpgrade (...args) {\n return this.handler.onUpgrade(...args)\n }\n\n onHeaders (...args) {\n return this.handler.onHeaders(...args)\n }\n\n onData (...args) {\n return this.handler.onData(...args)\n }\n\n onComplete (...args) {\n return this.handler.onComplete(...args)\n }\n\n onBodySent (...args) {\n return this.handler.onBodySent(...args)\n }\n}\n","'use strict'\n\nconst util = require('../core/util')\nconst { kBodyUsed } = require('../core/symbols')\nconst assert = require('assert')\nconst { InvalidArgumentError } = require('../core/errors')\nconst EE = require('events')\n\nconst redirectableStatusCodes = [300, 301, 302, 303, 307, 308]\n\nconst kBody = Symbol('body')\n\nclass BodyAsyncIterable {\n constructor (body) {\n this[kBody] = body\n this[kBodyUsed] = false\n }\n\n async * [Symbol.asyncIterator] () {\n assert(!this[kBodyUsed], 'disturbed')\n this[kBodyUsed] = true\n yield * this[kBody]\n }\n}\n\nclass RedirectHandler {\n constructor (dispatch, maxRedirections, opts, handler) {\n if (maxRedirections != null && (!Number.isInteger(maxRedirections) || maxRedirections < 0)) {\n throw new InvalidArgumentError('maxRedirections must be a positive number')\n }\n\n util.validateHandler(handler, opts.method, opts.upgrade)\n\n this.dispatch = dispatch\n this.location = null\n this.abort = null\n this.opts = { ...opts, maxRedirections: 0 } // opts must be a copy\n this.maxRedirections = maxRedirections\n this.handler = handler\n this.history = []\n\n if (util.isStream(this.opts.body)) {\n // TODO (fix): Provide some way for the user to cache the file to e.g. /tmp\n // so that it can be dispatched again?\n // TODO (fix): Do we need 100-expect support to provide a way to do this properly?\n if (util.bodyLength(this.opts.body) === 0) {\n this.opts.body\n .on('data', function () {\n assert(false)\n })\n }\n\n if (typeof this.opts.body.readableDidRead !== 'boolean') {\n this.opts.body[kBodyUsed] = false\n EE.prototype.on.call(this.opts.body, 'data', function () {\n this[kBodyUsed] = true\n })\n }\n } else if (this.opts.body && typeof this.opts.body.pipeTo === 'function') {\n // TODO (fix): We can't access ReadableStream internal state\n // to determine whether or not it has been disturbed. This is just\n // a workaround.\n this.opts.body = new BodyAsyncIterable(this.opts.body)\n } else if (\n this.opts.body &&\n typeof this.opts.body !== 'string' &&\n !ArrayBuffer.isView(this.opts.body) &&\n util.isIterable(this.opts.body)\n ) {\n // TODO: Should we allow re-using iterable if !this.opts.idempotent\n // or through some other flag?\n this.opts.body = new BodyAsyncIterable(this.opts.body)\n }\n }\n\n onConnect (abort) {\n this.abort = abort\n this.handler.onConnect(abort, { history: this.history })\n }\n\n onUpgrade (statusCode, headers, socket) {\n this.handler.onUpgrade(statusCode, headers, socket)\n }\n\n onError (error) {\n this.handler.onError(error)\n }\n\n onHeaders (statusCode, headers, resume, statusText) {\n this.location = this.history.length >= this.maxRedirections || util.isDisturbed(this.opts.body)\n ? null\n : parseLocation(statusCode, headers)\n\n if (this.opts.origin) {\n this.history.push(new URL(this.opts.path, this.opts.origin))\n }\n\n if (!this.location) {\n return this.handler.onHeaders(statusCode, headers, resume, statusText)\n }\n\n const { origin, pathname, search } = util.parseURL(new URL(this.location, this.opts.origin && new URL(this.opts.path, this.opts.origin)))\n const path = search ? `${pathname}${search}` : pathname\n\n // Remove headers referring to the original URL.\n // By default it is Host only, unless it's a 303 (see below), which removes also all Content-* headers.\n // https://tools.ietf.org/html/rfc7231#section-6.4\n this.opts.headers = cleanRequestHeaders(this.opts.headers, statusCode === 303, this.opts.origin !== origin)\n this.opts.path = path\n this.opts.origin = origin\n this.opts.maxRedirections = 0\n this.opts.query = null\n\n // https://tools.ietf.org/html/rfc7231#section-6.4.4\n // In case of HTTP 303, always replace method to be either HEAD or GET\n if (statusCode === 303 && this.opts.method !== 'HEAD') {\n this.opts.method = 'GET'\n this.opts.body = null\n }\n }\n\n onData (chunk) {\n if (this.location) {\n /*\n https://tools.ietf.org/html/rfc7231#section-6.4\n\n TLDR: undici always ignores 3xx response bodies.\n\n Redirection is used to serve the requested resource from another URL, so it is assumes that\n no body is generated (and thus can be ignored). Even though generating a body is not prohibited.\n\n For status 301, 302, 303, 307 and 308 (the latter from RFC 7238), the specs mention that the body usually\n (which means it's optional and not mandated) contain just an hyperlink to the value of\n the Location response header, so the body can be ignored safely.\n\n For status 300, which is \"Multiple Choices\", the spec mentions both generating a Location\n response header AND a response body with the other possible location to follow.\n Since the spec explicitily chooses not to specify a format for such body and leave it to\n servers and browsers implementors, we ignore the body as there is no specified way to eventually parse it.\n */\n } else {\n return this.handler.onData(chunk)\n }\n }\n\n onComplete (trailers) {\n if (this.location) {\n /*\n https://tools.ietf.org/html/rfc7231#section-6.4\n\n TLDR: undici always ignores 3xx response trailers as they are not expected in case of redirections\n and neither are useful if present.\n\n See comment on onData method above for more detailed informations.\n */\n\n this.location = null\n this.abort = null\n\n this.dispatch(this.opts, this)\n } else {\n this.handler.onComplete(trailers)\n }\n }\n\n onBodySent (chunk) {\n if (this.handler.onBodySent) {\n this.handler.onBodySent(chunk)\n }\n }\n}\n\nfunction parseLocation (statusCode, headers) {\n if (redirectableStatusCodes.indexOf(statusCode) === -1) {\n return null\n }\n\n for (let i = 0; i < headers.length; i += 2) {\n if (headers[i].toString().toLowerCase() === 'location') {\n return headers[i + 1]\n }\n }\n}\n\n// https://tools.ietf.org/html/rfc7231#section-6.4.4\nfunction shouldRemoveHeader (header, removeContent, unknownOrigin) {\n if (header.length === 4) {\n return util.headerNameToString(header) === 'host'\n }\n if (removeContent && util.headerNameToString(header).startsWith('content-')) {\n return true\n }\n if (unknownOrigin && (header.length === 13 || header.length === 6 || header.length === 19)) {\n const name = util.headerNameToString(header)\n return name === 'authorization' || name === 'cookie' || name === 'proxy-authorization'\n }\n return false\n}\n\n// https://tools.ietf.org/html/rfc7231#section-6.4\nfunction cleanRequestHeaders (headers, removeContent, unknownOrigin) {\n const ret = []\n if (Array.isArray(headers)) {\n for (let i = 0; i < headers.length; i += 2) {\n if (!shouldRemoveHeader(headers[i], removeContent, unknownOrigin)) {\n ret.push(headers[i], headers[i + 1])\n }\n }\n } else if (headers && typeof headers === 'object') {\n for (const key of Object.keys(headers)) {\n if (!shouldRemoveHeader(key, removeContent, unknownOrigin)) {\n ret.push(key, headers[key])\n }\n }\n } else {\n assert(headers == null, 'headers must be an object or an array')\n }\n return ret\n}\n\nmodule.exports = RedirectHandler\n","const assert = require('assert')\n\nconst { kRetryHandlerDefaultRetry } = require('../core/symbols')\nconst { RequestRetryError } = require('../core/errors')\nconst { isDisturbed, parseHeaders, parseRangeHeader } = require('../core/util')\n\nfunction calculateRetryAfterHeader (retryAfter) {\n const current = Date.now()\n const diff = new Date(retryAfter).getTime() - current\n\n return diff\n}\n\nclass RetryHandler {\n constructor (opts, handlers) {\n const { retryOptions, ...dispatchOpts } = opts\n const {\n // Retry scoped\n retry: retryFn,\n maxRetries,\n maxTimeout,\n minTimeout,\n timeoutFactor,\n // Response scoped\n methods,\n errorCodes,\n retryAfter,\n statusCodes\n } = retryOptions ?? {}\n\n this.dispatch = handlers.dispatch\n this.handler = handlers.handler\n this.opts = dispatchOpts\n this.abort = null\n this.aborted = false\n this.retryOpts = {\n retry: retryFn ?? RetryHandler[kRetryHandlerDefaultRetry],\n retryAfter: retryAfter ?? true,\n maxTimeout: maxTimeout ?? 30 * 1000, // 30s,\n timeout: minTimeout ?? 500, // .5s\n timeoutFactor: timeoutFactor ?? 2,\n maxRetries: maxRetries ?? 5,\n // What errors we should retry\n methods: methods ?? ['GET', 'HEAD', 'OPTIONS', 'PUT', 'DELETE', 'TRACE'],\n // Indicates which errors to retry\n statusCodes: statusCodes ?? [500, 502, 503, 504, 429],\n // List of errors to retry\n errorCodes: errorCodes ?? [\n 'ECONNRESET',\n 'ECONNREFUSED',\n 'ENOTFOUND',\n 'ENETDOWN',\n 'ENETUNREACH',\n 'EHOSTDOWN',\n 'EHOSTUNREACH',\n 'EPIPE'\n ]\n }\n\n this.retryCount = 0\n this.start = 0\n this.end = null\n this.etag = null\n this.resume = null\n\n // Handle possible onConnect duplication\n this.handler.onConnect(reason => {\n this.aborted = true\n if (this.abort) {\n this.abort(reason)\n } else {\n this.reason = reason\n }\n })\n }\n\n onRequestSent () {\n if (this.handler.onRequestSent) {\n this.handler.onRequestSent()\n }\n }\n\n onUpgrade (statusCode, headers, socket) {\n if (this.handler.onUpgrade) {\n this.handler.onUpgrade(statusCode, headers, socket)\n }\n }\n\n onConnect (abort) {\n if (this.aborted) {\n abort(this.reason)\n } else {\n this.abort = abort\n }\n }\n\n onBodySent (chunk) {\n if (this.handler.onBodySent) return this.handler.onBodySent(chunk)\n }\n\n static [kRetryHandlerDefaultRetry] (err, { state, opts }, cb) {\n const { statusCode, code, headers } = err\n const { method, retryOptions } = opts\n const {\n maxRetries,\n timeout,\n maxTimeout,\n timeoutFactor,\n statusCodes,\n errorCodes,\n methods\n } = retryOptions\n let { counter, currentTimeout } = state\n\n currentTimeout =\n currentTimeout != null && currentTimeout > 0 ? currentTimeout : timeout\n\n // Any code that is not a Undici's originated and allowed to retry\n if (\n code &&\n code !== 'UND_ERR_REQ_RETRY' &&\n code !== 'UND_ERR_SOCKET' &&\n !errorCodes.includes(code)\n ) {\n cb(err)\n return\n }\n\n // If a set of method are provided and the current method is not in the list\n if (Array.isArray(methods) && !methods.includes(method)) {\n cb(err)\n return\n }\n\n // If a set of status code are provided and the current status code is not in the list\n if (\n statusCode != null &&\n Array.isArray(statusCodes) &&\n !statusCodes.includes(statusCode)\n ) {\n cb(err)\n return\n }\n\n // If we reached the max number of retries\n if (counter > maxRetries) {\n cb(err)\n return\n }\n\n let retryAfterHeader = headers != null && headers['retry-after']\n if (retryAfterHeader) {\n retryAfterHeader = Number(retryAfterHeader)\n retryAfterHeader = isNaN(retryAfterHeader)\n ? calculateRetryAfterHeader(retryAfterHeader)\n : retryAfterHeader * 1e3 // Retry-After is in seconds\n }\n\n const retryTimeout =\n retryAfterHeader > 0\n ? Math.min(retryAfterHeader, maxTimeout)\n : Math.min(currentTimeout * timeoutFactor ** counter, maxTimeout)\n\n state.currentTimeout = retryTimeout\n\n setTimeout(() => cb(null), retryTimeout)\n }\n\n onHeaders (statusCode, rawHeaders, resume, statusMessage) {\n const headers = parseHeaders(rawHeaders)\n\n this.retryCount += 1\n\n if (statusCode >= 300) {\n this.abort(\n new RequestRetryError('Request failed', statusCode, {\n headers,\n count: this.retryCount\n })\n )\n return false\n }\n\n // Checkpoint for resume from where we left it\n if (this.resume != null) {\n this.resume = null\n\n if (statusCode !== 206) {\n return true\n }\n\n const contentRange = parseRangeHeader(headers['content-range'])\n // If no content range\n if (!contentRange) {\n this.abort(\n new RequestRetryError('Content-Range mismatch', statusCode, {\n headers,\n count: this.retryCount\n })\n )\n return false\n }\n\n // Let's start with a weak etag check\n if (this.etag != null && this.etag !== headers.etag) {\n this.abort(\n new RequestRetryError('ETag mismatch', statusCode, {\n headers,\n count: this.retryCount\n })\n )\n return false\n }\n\n const { start, size, end = size } = contentRange\n\n assert(this.start === start, 'content-range mismatch')\n assert(this.end == null || this.end === end, 'content-range mismatch')\n\n this.resume = resume\n return true\n }\n\n if (this.end == null) {\n if (statusCode === 206) {\n // First time we receive 206\n const range = parseRangeHeader(headers['content-range'])\n\n if (range == null) {\n return this.handler.onHeaders(\n statusCode,\n rawHeaders,\n resume,\n statusMessage\n )\n }\n\n const { start, size, end = size } = range\n\n assert(\n start != null && Number.isFinite(start) && this.start !== start,\n 'content-range mismatch'\n )\n assert(Number.isFinite(start))\n assert(\n end != null && Number.isFinite(end) && this.end !== end,\n 'invalid content-length'\n )\n\n this.start = start\n this.end = end\n }\n\n // We make our best to checkpoint the body for further range headers\n if (this.end == null) {\n const contentLength = headers['content-length']\n this.end = contentLength != null ? Number(contentLength) : null\n }\n\n assert(Number.isFinite(this.start))\n assert(\n this.end == null || Number.isFinite(this.end),\n 'invalid content-length'\n )\n\n this.resume = resume\n this.etag = headers.etag != null ? headers.etag : null\n\n return this.handler.onHeaders(\n statusCode,\n rawHeaders,\n resume,\n statusMessage\n )\n }\n\n const err = new RequestRetryError('Request failed', statusCode, {\n headers,\n count: this.retryCount\n })\n\n this.abort(err)\n\n return false\n }\n\n onData (chunk) {\n this.start += chunk.length\n\n return this.handler.onData(chunk)\n }\n\n onComplete (rawTrailers) {\n this.retryCount = 0\n return this.handler.onComplete(rawTrailers)\n }\n\n onError (err) {\n if (this.aborted || isDisturbed(this.opts.body)) {\n return this.handler.onError(err)\n }\n\n this.retryOpts.retry(\n err,\n {\n state: { counter: this.retryCount++, currentTimeout: this.retryAfter },\n opts: { retryOptions: this.retryOpts, ...this.opts }\n },\n onRetry.bind(this)\n )\n\n function onRetry (err) {\n if (err != null || this.aborted || isDisturbed(this.opts.body)) {\n return this.handler.onError(err)\n }\n\n if (this.start !== 0) {\n this.opts = {\n ...this.opts,\n headers: {\n ...this.opts.headers,\n range: `bytes=${this.start}-${this.end ?? ''}`\n }\n }\n }\n\n try {\n this.dispatch(this.opts, this)\n } catch (err) {\n this.handler.onError(err)\n }\n }\n }\n}\n\nmodule.exports = RetryHandler\n","'use strict'\n\nconst RedirectHandler = require('../handler/RedirectHandler')\n\nfunction createRedirectInterceptor ({ maxRedirections: defaultMaxRedirections }) {\n return (dispatch) => {\n return function Intercept (opts, handler) {\n const { maxRedirections = defaultMaxRedirections } = opts\n\n if (!maxRedirections) {\n return dispatch(opts, handler)\n }\n\n const redirectHandler = new RedirectHandler(dispatch, maxRedirections, opts, handler)\n opts = { ...opts, maxRedirections: 0 } // Stop sub dispatcher from also redirecting.\n return dispatch(opts, redirectHandler)\n }\n }\n}\n\nmodule.exports = createRedirectInterceptor\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.SPECIAL_HEADERS = exports.HEADER_STATE = exports.MINOR = exports.MAJOR = exports.CONNECTION_TOKEN_CHARS = exports.HEADER_CHARS = exports.TOKEN = exports.STRICT_TOKEN = exports.HEX = exports.URL_CHAR = exports.STRICT_URL_CHAR = exports.USERINFO_CHARS = exports.MARK = exports.ALPHANUM = exports.NUM = exports.HEX_MAP = exports.NUM_MAP = exports.ALPHA = exports.FINISH = exports.H_METHOD_MAP = exports.METHOD_MAP = exports.METHODS_RTSP = exports.METHODS_ICE = exports.METHODS_HTTP = exports.METHODS = exports.LENIENT_FLAGS = exports.FLAGS = exports.TYPE = exports.ERROR = void 0;\nconst utils_1 = require(\"./utils\");\n// C headers\nvar ERROR;\n(function (ERROR) {\n ERROR[ERROR[\"OK\"] = 0] = \"OK\";\n ERROR[ERROR[\"INTERNAL\"] = 1] = \"INTERNAL\";\n ERROR[ERROR[\"STRICT\"] = 2] = \"STRICT\";\n ERROR[ERROR[\"LF_EXPECTED\"] = 3] = \"LF_EXPECTED\";\n ERROR[ERROR[\"UNEXPECTED_CONTENT_LENGTH\"] = 4] = \"UNEXPECTED_CONTENT_LENGTH\";\n ERROR[ERROR[\"CLOSED_CONNECTION\"] = 5] = \"CLOSED_CONNECTION\";\n ERROR[ERROR[\"INVALID_METHOD\"] = 6] = \"INVALID_METHOD\";\n ERROR[ERROR[\"INVALID_URL\"] = 7] = \"INVALID_URL\";\n ERROR[ERROR[\"INVALID_CONSTANT\"] = 8] = \"INVALID_CONSTANT\";\n ERROR[ERROR[\"INVALID_VERSION\"] = 9] = \"INVALID_VERSION\";\n ERROR[ERROR[\"INVALID_HEADER_TOKEN\"] = 10] = \"INVALID_HEADER_TOKEN\";\n ERROR[ERROR[\"INVALID_CONTENT_LENGTH\"] = 11] = \"INVALID_CONTENT_LENGTH\";\n ERROR[ERROR[\"INVALID_CHUNK_SIZE\"] = 12] = \"INVALID_CHUNK_SIZE\";\n ERROR[ERROR[\"INVALID_STATUS\"] = 13] = \"INVALID_STATUS\";\n ERROR[ERROR[\"INVALID_EOF_STATE\"] = 14] = \"INVALID_EOF_STATE\";\n ERROR[ERROR[\"INVALID_TRANSFER_ENCODING\"] = 15] = \"INVALID_TRANSFER_ENCODING\";\n ERROR[ERROR[\"CB_MESSAGE_BEGIN\"] = 16] = \"CB_MESSAGE_BEGIN\";\n ERROR[ERROR[\"CB_HEADERS_COMPLETE\"] = 17] = \"CB_HEADERS_COMPLETE\";\n ERROR[ERROR[\"CB_MESSAGE_COMPLETE\"] = 18] = \"CB_MESSAGE_COMPLETE\";\n ERROR[ERROR[\"CB_CHUNK_HEADER\"] = 19] = \"CB_CHUNK_HEADER\";\n ERROR[ERROR[\"CB_CHUNK_COMPLETE\"] = 20] = \"CB_CHUNK_COMPLETE\";\n ERROR[ERROR[\"PAUSED\"] = 21] = \"PAUSED\";\n ERROR[ERROR[\"PAUSED_UPGRADE\"] = 22] = \"PAUSED_UPGRADE\";\n ERROR[ERROR[\"PAUSED_H2_UPGRADE\"] = 23] = \"PAUSED_H2_UPGRADE\";\n ERROR[ERROR[\"USER\"] = 24] = \"USER\";\n})(ERROR = exports.ERROR || (exports.ERROR = {}));\nvar TYPE;\n(function (TYPE) {\n TYPE[TYPE[\"BOTH\"] = 0] = \"BOTH\";\n TYPE[TYPE[\"REQUEST\"] = 1] = \"REQUEST\";\n TYPE[TYPE[\"RESPONSE\"] = 2] = \"RESPONSE\";\n})(TYPE = exports.TYPE || (exports.TYPE = {}));\nvar FLAGS;\n(function (FLAGS) {\n FLAGS[FLAGS[\"CONNECTION_KEEP_ALIVE\"] = 1] = \"CONNECTION_KEEP_ALIVE\";\n FLAGS[FLAGS[\"CONNECTION_CLOSE\"] = 2] = \"CONNECTION_CLOSE\";\n FLAGS[FLAGS[\"CONNECTION_UPGRADE\"] = 4] = \"CONNECTION_UPGRADE\";\n FLAGS[FLAGS[\"CHUNKED\"] = 8] = \"CHUNKED\";\n FLAGS[FLAGS[\"UPGRADE\"] = 16] = \"UPGRADE\";\n FLAGS[FLAGS[\"CONTENT_LENGTH\"] = 32] = \"CONTENT_LENGTH\";\n FLAGS[FLAGS[\"SKIPBODY\"] = 64] = \"SKIPBODY\";\n FLAGS[FLAGS[\"TRAILING\"] = 128] = \"TRAILING\";\n // 1 << 8 is unused\n FLAGS[FLAGS[\"TRANSFER_ENCODING\"] = 512] = \"TRANSFER_ENCODING\";\n})(FLAGS = exports.FLAGS || (exports.FLAGS = {}));\nvar LENIENT_FLAGS;\n(function (LENIENT_FLAGS) {\n LENIENT_FLAGS[LENIENT_FLAGS[\"HEADERS\"] = 1] = \"HEADERS\";\n LENIENT_FLAGS[LENIENT_FLAGS[\"CHUNKED_LENGTH\"] = 2] = \"CHUNKED_LENGTH\";\n LENIENT_FLAGS[LENIENT_FLAGS[\"KEEP_ALIVE\"] = 4] = \"KEEP_ALIVE\";\n})(LENIENT_FLAGS = exports.LENIENT_FLAGS || (exports.LENIENT_FLAGS = {}));\nvar METHODS;\n(function (METHODS) {\n METHODS[METHODS[\"DELETE\"] = 0] = \"DELETE\";\n METHODS[METHODS[\"GET\"] = 1] = \"GET\";\n METHODS[METHODS[\"HEAD\"] = 2] = \"HEAD\";\n METHODS[METHODS[\"POST\"] = 3] = \"POST\";\n METHODS[METHODS[\"PUT\"] = 4] = \"PUT\";\n /* pathological */\n METHODS[METHODS[\"CONNECT\"] = 5] = \"CONNECT\";\n METHODS[METHODS[\"OPTIONS\"] = 6] = \"OPTIONS\";\n METHODS[METHODS[\"TRACE\"] = 7] = \"TRACE\";\n /* WebDAV */\n METHODS[METHODS[\"COPY\"] = 8] = \"COPY\";\n METHODS[METHODS[\"LOCK\"] = 9] = \"LOCK\";\n METHODS[METHODS[\"MKCOL\"] = 10] = \"MKCOL\";\n METHODS[METHODS[\"MOVE\"] = 11] = \"MOVE\";\n METHODS[METHODS[\"PROPFIND\"] = 12] = \"PROPFIND\";\n METHODS[METHODS[\"PROPPATCH\"] = 13] = \"PROPPATCH\";\n METHODS[METHODS[\"SEARCH\"] = 14] = \"SEARCH\";\n METHODS[METHODS[\"UNLOCK\"] = 15] = \"UNLOCK\";\n METHODS[METHODS[\"BIND\"] = 16] = \"BIND\";\n METHODS[METHODS[\"REBIND\"] = 17] = \"REBIND\";\n METHODS[METHODS[\"UNBIND\"] = 18] = \"UNBIND\";\n METHODS[METHODS[\"ACL\"] = 19] = \"ACL\";\n /* subversion */\n METHODS[METHODS[\"REPORT\"] = 20] = \"REPORT\";\n METHODS[METHODS[\"MKACTIVITY\"] = 21] = \"MKACTIVITY\";\n METHODS[METHODS[\"CHECKOUT\"] = 22] = \"CHECKOUT\";\n METHODS[METHODS[\"MERGE\"] = 23] = \"MERGE\";\n /* upnp */\n METHODS[METHODS[\"M-SEARCH\"] = 24] = \"M-SEARCH\";\n METHODS[METHODS[\"NOTIFY\"] = 25] = \"NOTIFY\";\n METHODS[METHODS[\"SUBSCRIBE\"] = 26] = \"SUBSCRIBE\";\n METHODS[METHODS[\"UNSUBSCRIBE\"] = 27] = \"UNSUBSCRIBE\";\n /* RFC-5789 */\n METHODS[METHODS[\"PATCH\"] = 28] = \"PATCH\";\n METHODS[METHODS[\"PURGE\"] = 29] = \"PURGE\";\n /* CalDAV */\n METHODS[METHODS[\"MKCALENDAR\"] = 30] = \"MKCALENDAR\";\n /* RFC-2068, section 19.6.1.2 */\n METHODS[METHODS[\"LINK\"] = 31] = \"LINK\";\n METHODS[METHODS[\"UNLINK\"] = 32] = \"UNLINK\";\n /* icecast */\n METHODS[METHODS[\"SOURCE\"] = 33] = \"SOURCE\";\n /* RFC-7540, section 11.6 */\n METHODS[METHODS[\"PRI\"] = 34] = \"PRI\";\n /* RFC-2326 RTSP */\n METHODS[METHODS[\"DESCRIBE\"] = 35] = \"DESCRIBE\";\n METHODS[METHODS[\"ANNOUNCE\"] = 36] = \"ANNOUNCE\";\n METHODS[METHODS[\"SETUP\"] = 37] = \"SETUP\";\n METHODS[METHODS[\"PLAY\"] = 38] = \"PLAY\";\n METHODS[METHODS[\"PAUSE\"] = 39] = \"PAUSE\";\n METHODS[METHODS[\"TEARDOWN\"] = 40] = \"TEARDOWN\";\n METHODS[METHODS[\"GET_PARAMETER\"] = 41] = \"GET_PARAMETER\";\n METHODS[METHODS[\"SET_PARAMETER\"] = 42] = \"SET_PARAMETER\";\n METHODS[METHODS[\"REDIRECT\"] = 43] = \"REDIRECT\";\n METHODS[METHODS[\"RECORD\"] = 44] = \"RECORD\";\n /* RAOP */\n METHODS[METHODS[\"FLUSH\"] = 45] = \"FLUSH\";\n})(METHODS = exports.METHODS || (exports.METHODS = {}));\nexports.METHODS_HTTP = [\n METHODS.DELETE,\n METHODS.GET,\n METHODS.HEAD,\n METHODS.POST,\n METHODS.PUT,\n METHODS.CONNECT,\n METHODS.OPTIONS,\n METHODS.TRACE,\n METHODS.COPY,\n METHODS.LOCK,\n METHODS.MKCOL,\n METHODS.MOVE,\n METHODS.PROPFIND,\n METHODS.PROPPATCH,\n METHODS.SEARCH,\n METHODS.UNLOCK,\n METHODS.BIND,\n METHODS.REBIND,\n METHODS.UNBIND,\n METHODS.ACL,\n METHODS.REPORT,\n METHODS.MKACTIVITY,\n METHODS.CHECKOUT,\n METHODS.MERGE,\n METHODS['M-SEARCH'],\n METHODS.NOTIFY,\n METHODS.SUBSCRIBE,\n METHODS.UNSUBSCRIBE,\n METHODS.PATCH,\n METHODS.PURGE,\n METHODS.MKCALENDAR,\n METHODS.LINK,\n METHODS.UNLINK,\n METHODS.PRI,\n // TODO(indutny): should we allow it with HTTP?\n METHODS.SOURCE,\n];\nexports.METHODS_ICE = [\n METHODS.SOURCE,\n];\nexports.METHODS_RTSP = [\n METHODS.OPTIONS,\n METHODS.DESCRIBE,\n METHODS.ANNOUNCE,\n METHODS.SETUP,\n METHODS.PLAY,\n METHODS.PAUSE,\n METHODS.TEARDOWN,\n METHODS.GET_PARAMETER,\n METHODS.SET_PARAMETER,\n METHODS.REDIRECT,\n METHODS.RECORD,\n METHODS.FLUSH,\n // For AirPlay\n METHODS.GET,\n METHODS.POST,\n];\nexports.METHOD_MAP = utils_1.enumToMap(METHODS);\nexports.H_METHOD_MAP = {};\nObject.keys(exports.METHOD_MAP).forEach((key) => {\n if (/^H/.test(key)) {\n exports.H_METHOD_MAP[key] = exports.METHOD_MAP[key];\n }\n});\nvar FINISH;\n(function (FINISH) {\n FINISH[FINISH[\"SAFE\"] = 0] = \"SAFE\";\n FINISH[FINISH[\"SAFE_WITH_CB\"] = 1] = \"SAFE_WITH_CB\";\n FINISH[FINISH[\"UNSAFE\"] = 2] = \"UNSAFE\";\n})(FINISH = exports.FINISH || (exports.FINISH = {}));\nexports.ALPHA = [];\nfor (let i = 'A'.charCodeAt(0); i <= 'Z'.charCodeAt(0); i++) {\n // Upper case\n exports.ALPHA.push(String.fromCharCode(i));\n // Lower case\n exports.ALPHA.push(String.fromCharCode(i + 0x20));\n}\nexports.NUM_MAP = {\n 0: 0, 1: 1, 2: 2, 3: 3, 4: 4,\n 5: 5, 6: 6, 7: 7, 8: 8, 9: 9,\n};\nexports.HEX_MAP = {\n 0: 0, 1: 1, 2: 2, 3: 3, 4: 4,\n 5: 5, 6: 6, 7: 7, 8: 8, 9: 9,\n A: 0XA, B: 0XB, C: 0XC, D: 0XD, E: 0XE, F: 0XF,\n a: 0xa, b: 0xb, c: 0xc, d: 0xd, e: 0xe, f: 0xf,\n};\nexports.NUM = [\n '0', '1', '2', '3', '4', '5', '6', '7', '8', '9',\n];\nexports.ALPHANUM = exports.ALPHA.concat(exports.NUM);\nexports.MARK = ['-', '_', '.', '!', '~', '*', '\\'', '(', ')'];\nexports.USERINFO_CHARS = exports.ALPHANUM\n .concat(exports.MARK)\n .concat(['%', ';', ':', '&', '=', '+', '$', ',']);\n// TODO(indutny): use RFC\nexports.STRICT_URL_CHAR = [\n '!', '\"', '$', '%', '&', '\\'',\n '(', ')', '*', '+', ',', '-', '.', '/',\n ':', ';', '<', '=', '>',\n '@', '[', '\\\\', ']', '^', '_',\n '`',\n '{', '|', '}', '~',\n].concat(exports.ALPHANUM);\nexports.URL_CHAR = exports.STRICT_URL_CHAR\n .concat(['\\t', '\\f']);\n// All characters with 0x80 bit set to 1\nfor (let i = 0x80; i <= 0xff; i++) {\n exports.URL_CHAR.push(i);\n}\nexports.HEX = exports.NUM.concat(['a', 'b', 'c', 'd', 'e', 'f', 'A', 'B', 'C', 'D', 'E', 'F']);\n/* Tokens as defined by rfc 2616. Also lowercases them.\n * token = 1*\n * separators = \"(\" | \")\" | \"<\" | \">\" | \"@\"\n * | \",\" | \";\" | \":\" | \"\\\" | <\">\n * | \"/\" | \"[\" | \"]\" | \"?\" | \"=\"\n * | \"{\" | \"}\" | SP | HT\n */\nexports.STRICT_TOKEN = [\n '!', '#', '$', '%', '&', '\\'',\n '*', '+', '-', '.',\n '^', '_', '`',\n '|', '~',\n].concat(exports.ALPHANUM);\nexports.TOKEN = exports.STRICT_TOKEN.concat([' ']);\n/*\n * Verify that a char is a valid visible (printable) US-ASCII\n * character or %x80-FF\n */\nexports.HEADER_CHARS = ['\\t'];\nfor (let i = 32; i <= 255; i++) {\n if (i !== 127) {\n exports.HEADER_CHARS.push(i);\n }\n}\n// ',' = \\x44\nexports.CONNECTION_TOKEN_CHARS = exports.HEADER_CHARS.filter((c) => c !== 44);\nexports.MAJOR = exports.NUM_MAP;\nexports.MINOR = exports.MAJOR;\nvar HEADER_STATE;\n(function (HEADER_STATE) {\n HEADER_STATE[HEADER_STATE[\"GENERAL\"] = 0] = \"GENERAL\";\n HEADER_STATE[HEADER_STATE[\"CONNECTION\"] = 1] = \"CONNECTION\";\n HEADER_STATE[HEADER_STATE[\"CONTENT_LENGTH\"] = 2] = \"CONTENT_LENGTH\";\n HEADER_STATE[HEADER_STATE[\"TRANSFER_ENCODING\"] = 3] = \"TRANSFER_ENCODING\";\n HEADER_STATE[HEADER_STATE[\"UPGRADE\"] = 4] = \"UPGRADE\";\n HEADER_STATE[HEADER_STATE[\"CONNECTION_KEEP_ALIVE\"] = 5] = \"CONNECTION_KEEP_ALIVE\";\n HEADER_STATE[HEADER_STATE[\"CONNECTION_CLOSE\"] = 6] = \"CONNECTION_CLOSE\";\n HEADER_STATE[HEADER_STATE[\"CONNECTION_UPGRADE\"] = 7] = \"CONNECTION_UPGRADE\";\n HEADER_STATE[HEADER_STATE[\"TRANSFER_ENCODING_CHUNKED\"] = 8] = \"TRANSFER_ENCODING_CHUNKED\";\n})(HEADER_STATE = exports.HEADER_STATE || (exports.HEADER_STATE = {}));\nexports.SPECIAL_HEADERS = {\n 'connection': HEADER_STATE.CONNECTION,\n 'content-length': HEADER_STATE.CONTENT_LENGTH,\n 'proxy-connection': HEADER_STATE.CONNECTION,\n 'transfer-encoding': HEADER_STATE.TRANSFER_ENCODING,\n 'upgrade': HEADER_STATE.UPGRADE,\n};\n//# sourceMappingURL=constants.js.map","module.exports = 'AGFzbQEAAAABMAhgAX8Bf2ADf39/AX9gBH9/f38Bf2AAAGADf39/AGABfwBgAn9/AGAGf39/f39/AALLAQgDZW52GHdhc21fb25faGVhZGVyc19jb21wbGV0ZQACA2VudhV3YXNtX29uX21lc3NhZ2VfYmVnaW4AAANlbnYLd2FzbV9vbl91cmwAAQNlbnYOd2FzbV9vbl9zdGF0dXMAAQNlbnYUd2FzbV9vbl9oZWFkZXJfZmllbGQAAQNlbnYUd2FzbV9vbl9oZWFkZXJfdmFsdWUAAQNlbnYMd2FzbV9vbl9ib2R5AAEDZW52GHdhc21fb25fbWVzc2FnZV9jb21wbGV0ZQAAA0ZFAwMEAAAFAAAAAAAABQEFAAUFBQAABgAAAAAGBgYGAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAAABAQcAAAUFAwABBAUBcAESEgUDAQACBggBfwFBgNQECwfRBSIGbWVtb3J5AgALX2luaXRpYWxpemUACRlfX2luZGlyZWN0X2Z1bmN0aW9uX3RhYmxlAQALbGxodHRwX2luaXQAChhsbGh0dHBfc2hvdWxkX2tlZXBfYWxpdmUAQQxsbGh0dHBfYWxsb2MADAZtYWxsb2MARgtsbGh0dHBfZnJlZQANBGZyZWUASA9sbGh0dHBfZ2V0X3R5cGUADhVsbGh0dHBfZ2V0X2h0dHBfbWFqb3IADxVsbGh0dHBfZ2V0X2h0dHBfbWlub3IAEBFsbGh0dHBfZ2V0X21ldGhvZAARFmxsaHR0cF9nZXRfc3RhdHVzX2NvZGUAEhJsbGh0dHBfZ2V0X3VwZ3JhZGUAEwxsbGh0dHBfcmVzZXQAFA5sbGh0dHBfZXhlY3V0ZQAVFGxsaHR0cF9zZXR0aW5nc19pbml0ABYNbGxodHRwX2ZpbmlzaAAXDGxsaHR0cF9wYXVzZQAYDWxsaHR0cF9yZXN1bWUAGRtsbGh0dHBfcmVzdW1lX2FmdGVyX3VwZ3JhZGUAGhBsbGh0dHBfZ2V0X2Vycm5vABsXbGxodHRwX2dldF9lcnJvcl9yZWFzb24AHBdsbGh0dHBfc2V0X2Vycm9yX3JlYXNvbgAdFGxsaHR0cF9nZXRfZXJyb3JfcG9zAB4RbGxodHRwX2Vycm5vX25hbWUAHxJsbGh0dHBfbWV0aG9kX25hbWUAIBJs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ADcDACAAQShqQgA3AwAgAEEgakIANwMAIABBEGpCADcDACAAQQhqQgA3AwAgAEHdATYCHEEAC3sBAX8CQCAAKAIMIgMNAAJAIAAoAgRFDQAgACABNgIECwJAIAAgASACEMSAgIAAIgMNACAAKAIMDwsgACADNgIcQQAhAyAAKAIEIgFFDQAgACABIAIgACgCCBGBgICAAAAiAUUNACAAIAI2AhQgACABNgIMIAEhAwsgAwvk8wEDDn8DfgR/I4CAgIAAQRBrIgMkgICAgAAgASEEIAEhBSABIQYgASEHIAEhCCABIQkgASEKIAEhCyABIQwgASENIAEhDiABIQ8CQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgACgCHCIQQX9qDt0B2gEB2QECAwQFBgcICQoLDA0O2AEPENcBERLWARMUFRYXGBkaG+AB3wEcHR7VAR8gISIjJCXUASYnKCkqKyzTAdIBLS7RAdABLzAxMjM0NTY3ODk6Ozw9Pj9AQUJDREVG2wFHSElKzwHOAUvNAUzMAU1OT1BRUlNUVVZXWFlaW1xdXl9gYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXp7fH1+f4ABgQGCAYMBhAGFAYYBhwGIAYkB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QAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAC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FCAAIBA2AgxBACEQDLIBCyAAKAIEIRAgAEEANgIEAkAgACAQIAEQp4CAgAAiEA0AIAEhAQxNCyAAQdMANgIcIAAgATYCFCAAIBA2AgxBACEQDLEBCyAAKAIEIRAgAEEANgIEAkAgACAQIAEQp4CAgAAiEA0AIAEhAQxRCyAAQeUANgIcIAAgATYCFCAAIBA2AgxBACEQDLABCyAAQQA2AhwgACABNgIUIABBxoqAgAA2AhAgAEEHNgIMQQAhEAyvAQsgACgCBCEQIABBADYCBAJAIAAgECABEKeAgIAAIhANACABIQEMSQsgAEHSADYCHCAAIAE2AhQgACAQNgIMQQAhEAyuAQsgACgCBCEQIABBADYCBAJAIAAgECABEKeAgIAAIhANACABIQEMSQsgAEHTADYCHCAAIAE2AhQgACAQNgIMQQAhEAytAQsgACgCBCEQIABBADYCBAJAIAAgECABEKeAgIAAIhANACABIQEMTQsgAEHlADYCHCAAIAE2AhQgACAQNgIMQQAhEAysAQsgAEEANgIcIAAgATYCFCAAQdyIgIAANgIQIABBBzYCDEEAIRAMqwELIBBBP0cNASABQQFqIQELQQUhEAyQAQtBACEQIABBADYCHCAAIAE2AhQgAEH9koCAADYCECAAQQc2AgwMqAELIAAoAgQhECAAQQA2AgQCQCAAIBAgARCngICAACIQDQAgASEBDEILIABB0gA2AhwgACABNgIUIAAgEDYCDEEAIRAMpwELIAAoAgQhECAAQQA2AgQCQCAAIBAgARCngICAACIQDQAgASEBDEILIABB0wA2AhwgACABNgIUIAAgEDYCDEEAIRAMpgELIAAoAgQhECAAQQA2AgQCQCAAIBAgARCngICAACIQDQAgASEBDEYLIABB5QA2AhwgACABNgIUIAAgEDYCDEEAIRAMpQELIAAoAgQhASAAQQA2AgQCQCAAIAEgFBCngICAACIBDQAgFCEBDD8LIABB0gA2AhwgACAUNgIUIAAgATYCDEEAIRAMpAELIAAoAgQhASAAQQA2AgQCQCAAIAEgFBCngICAACIBDQAgFCEBDD8LIABB0wA2AhwgACAUNgIUIAAgATYCDEEAIRAMowELIAAoAgQhASAAQQA2AgQCQCAAIAEgFBCngICAACIBDQAgFCEBDEMLIABB5QA2AhwgACAUNgIUIAAgATYCDEEAIRAMogELIABBADYCHCAAIBQ2AhQgAEHDj4CAADYCECAAQQc2AgxBACEQDKEBCyAAQQA2AhwgACABNgIUIABBw4+AgAA2AhAgAEEHNgIMQQAhEAygAQtBACEQIABBADYCHCAAIBQ2AhQgAEGMnICAADYCECAAQQc2AgwMnwELIABBADYCHCAAIBQ2AhQgAEGMnICAADYCECAAQQc2AgxBACEQDJ4BCyAAQQA2AhwgACAUNgIUIABB/pGAgAA2AhAgAEEHNgIMQQAhEAydAQsgAEEANgIcIAAgATYCFCAAQY6bgIAANgIQIABBBjYCDEEAIRAMnAELIBBBFUYNVyAAQQA2AhwgACABNgIUIABBzI6AgAA2AhAgAEEgNgIMQQAhEAybAQsgAEEANgIAIBBBAWohAUEkIRALIAAgEDoAKSAAKAIEIRAgAEEANgIEIAAgECABEKuAgIAAIhANVCABIQEMPgsgAEEANgIAC0EAIRAgAEEANgIcIAAgBDYCFCAAQfGbgIAANgIQIABBBjYCDAyXAQsgAUEVRg1QIABBADYCHCAAIAU2AhQgAEHwjICAADYCECAAQRs2AgxBACEQDJYBCyAAKAIEIQUgAEEANgIEIAAgBSAQEKmAgIAAIgUNASAQQQFqIQULQa0BIRAMewsgAEHBATYCHCAAIAU2AgwgACAQQQFqNgIUQQAhEAyTAQsgACgCBCEGIABBADYCBCAAIAYgEBCpgICAACIGDQEgEEEBaiEGC0GuASEQDHgLIABBwgE2AhwgACAGNgIMIAAgEEEBajYCFEEAIRAMkAELIABBADYCHCAAIAc2AhQgAEGXi4CAADYCECAAQQ02AgxBACEQDI8BCyAAQQA2AhwgACAINgIUIABB45CAgAA2AhAgAEEJNgIMQQAhEAyOAQsgAEEANgIcIAAgCDYCFCAAQZSNgIAANgIQIABBITYCDEEAIRAMjQELQQEhFkEAIRdBACEUQQEhEAsgACAQOgArIAlBAWohCAJAAkAgAC0ALUEQcQ0AAkACQAJAIAAtACoOAwEAAgQLIBZFDQMMAgsgFA0BDAILIBdFDQELIAAoAgQhECAAQQA2AgQgACAQIAgQrYCAgAAiEEUNPSAAQckBNgIcIAAgCDYCFCAAIBA2AgxBACEQDIwBCyAAKAIEIQQgAEEANgIEIAAgBCAIEK2AgIAAIgRFDXYgAEHKATYCHCAAIAg2AhQgACAENgIMQQAhEAyLAQsgACgCBCEEIABBADYCBCAAIAQgCRCtgICAACIERQ10IABBywE2AhwgACAJNgIUIAAgBDYCDEEAIRAMigELIAAoAgQhBCAAQQA2AgQgACAEIAoQrYCAgAAiBEUNciAAQc0BNgIcIAAgCjYCFCAAIAQ2AgxBACEQDIkBCwJAIAstAABBUGoiEEH/AXFBCk8NACAAIBA6ACogC0EBaiEKQbYBIRAMcAsgACgCBCEEIABBADYCBCAAIAQgCxCtgICAACIERQ1wIABBzwE2AhwgACALNgIUIAAgBDYCDEEAIRAMiAELIABBADYCHCAAIAQ2AhQgAEGQs4CAADYCECAAQQg2AgwgAEEANgIAQQAhEAyHAQsgAUEVRg0/IABBADYCHCAAIAw2AhQgAEHMjoCAADYCECAAQSA2AgxBACEQDIYBCyAAQYEEOwEoIAAoAgQhECAAQgA3AwAgACAQIAxBAWoiDBCrgICAACIQRQ04IABB0wE2AhwgACAMNgIUIAAgEDYCDEEAIRAMhQELIABBADYCAAtBACEQIABBADYCHCAAIAQ2AhQgAEHYm4CAADYCECAAQQg2AgwMgwELIAAoAgQhECAAQgA3AwAgACAQIAtBAWoiCxCrgICAACIQDQFBxgEhEAxpCyAAQQI6ACgMVQsgAEHVATYCHCAAIAs2AhQgACAQNgIMQQAhEAyAAQsgEEEVRg03IABBADYCHCAAIAQ2AhQgAEGkjICAADYCECAAQRA2AgxBACEQDH8LIAAtADRBAUcNNCAAIAQgAhC8gICAACIQRQ00IBBBFUcNNSAAQdwBNgIcIAAgBDYCFCAAQdWWgIAANgIQIABBFTYCDEEAIRAMfgtBACEQIABBADYCHCAAQa+LgIAANgIQIABBAjYCDCAAIBRBAWo2AhQMfQtBACEQDGMLQQIhEAxiC0ENIRAMYQtBDyEQDGALQSUhEAxfC0ETIRAMXgtBFSEQDF0LQRYhEAxcC0EXIRAMWwtBGCEQDFoLQRkhEAxZC0EaIRAMWAtBGyEQDFcLQRwhEAxWC0EdIRAMVQtBHyEQDFQLQSEhEAxTC0EjIRAMUgtBxgAhEAxRC0EuIRAMUAtBLyEQDE8LQTshEAxOC0E9IRAMTQtByAAhEAxMC0HJACEQDEsLQcsAIRAMSgtBzAAhEAxJC0HOACEQDEgLQdEAIRAMRwtB1QAhEAxGC0HYACEQDEULQdkAIRAMRAtB2wAhEAxDC0HkACEQDEILQeUAIRAMQQtB8QAhEAxAC0H0ACEQDD8LQY0BIRAMPgtBlwEhEAw9C0GpASEQDDwLQawBIRAMOwtBwAEhEAw6C0G5ASEQDDkLQa8BIRAMOAtBsQEhEAw3C0GyASEQDDYLQbQBIRAMNQtBtQEhEAw0C0G6ASEQDDMLQb0BIRAMMgtBvwEhEAwxC0HBASEQDDALIABBADYCHCAAIAQ2AhQgAEHpi4CAADYCECAAQR82AgxBACEQDEgLIABB2wE2AhwgACAENgIUIABB+paAgAA2AhAgAEEVNgIMQQAhEAxHCyAAQfgANgIcIAAgDDYCFCAAQcqYgIAANgIQIABBFTYCDEEAIRAMRgsgAEHRADYCHCAAIAU2AhQgAEGwl4CAADYCECAAQRU2AgxBACEQDEULIABB+QA2AhwgACABNgIUIAAgEDYCDEEAIRAMRAsgAEH4ADYCHCAAIAE2AhQgAEHKmICAADYCECAAQRU2AgxBACEQDEMLIABB5AA2AhwgACABNgIUIABB45eAgAA2AhAgAEEVNgIMQQAhEAxCCyAAQdcANgIcIAAgATYCFCAAQcmXgIAANgIQIABBFTYCDEEAIRAMQQsgAEEANgIcIAAgATYCFCAAQbmNgIAANgIQIABBGjYCDEEAIRAMQAsgAEHCADYCHCAAIAE2AhQgAEHjmICAADYCECAAQRU2AgxBACEQDD8LIABBADYCBCAAIA8gDxCxgICAACIERQ0BIABBOjYCHCAAIAQ2AgwgACAPQQFqNgIUQQAhEAw+CyAAKAIEIQQgAEEANgIEAkAgACAEIAEQsYCAgAAiBEUNACAAQTs2AhwgACAENgIMIAAgAUEBajYCFEEAIRAMPgsgAUEBaiEBDC0LIA9BAWohAQwtCyAAQQA2AhwgACAPNgIUIABB5JKAgAA2AhAgAEEENgIMQQAhEAw7CyAAQTY2AhwgACAENgIUIAAgAjYCDEEAIRAMOgsgAEEuNgIcIAAgDjYCFCAAIAQ2AgxBACEQDDkLIABB0AA2AhwgACABNgIUIABBkZiAgAA2AhAgAEEVNgIMQQAhEAw4CyANQQFqIQEMLAsgAEEVNgIcIAAgATYCFCAAQYKZgIAANgIQIABBFTYCDEEAIRAMNgsgAEEbNgIcIAAgATYCFCAAQZGXgIAANgIQIABBFTYCDEEAIRAMNQsgAEEPNgIcIAAgATYCFCAAQZGXgIAANgIQIABBFTYCDEEAIRAMNAsgAEELNgIcIAAgATYCFCAAQZGXgIAANgIQIABBFTYCDEEAIRAMMwsgAEEaNgIcIAAgATYCFCAAQYKZgIAANgIQIABBFTYCDEEAIRAMMgsgAEELNgIcIAAgATYCFCAAQYKZgIAANgIQIABBFTYCDEEAIRAMMQsgAEEKNgIcIAAgATYCFCAAQeSWgIAANgIQIABBFTYCDEEAIRAMMAsgAEEeNgIcIAAgATYCFCAAQfmXgIAANgIQIABBFTYCDEEAIRAMLwsgAEEANgIcIAAgEDYCFCAAQdqNgIAANgIQIABBFDYCDEEAIRAMLgsgAEEENgIcIAAgATYCFCAAQbCYgIAANgIQIABBFTYCDEEAIRAMLQsgAEEANgIAIAtBAWohCwtBuAEhEAwSCyAAQQA2AgAgEEEBaiEBQfUAIRAMEQsgASEBAkAgAC0AKUEFRw0AQeMAIRAMEQtB4gAhEAwQC0EAIRAgAEEANgIcIABB5JGAgAA2AhAgAEEHNgIMIAAgFEEBajYCFAwoCyAAQQA2AgAgF0EBaiEBQcAAIRAMDgtBASEBCyAAIAE6ACwgAEEANgIAIBdBAWohAQtBKCEQDAsLIAEhAQtBOCEQDAkLAkAgASIPIAJGDQADQAJAIA8tAABBgL6AgABqLQAAIgFBAUYNACABQQJHDQMgD0EBaiEBDAQLIA9BAWoiDyACRw0AC0E+IRAMIgtBPiEQDCELIABBADoALCAPIQEMAQtBCyEQDAYLQTohEAwFCyABQQFqIQFBLSEQDAQLIAAgAToALCAAQQA2AgAgFkEBaiEBQQwhEAwDCyAAQQA2AgAgF0EBaiEBQQohEAwCCyAAQQA2AgALIABBADoALCANIQFBCSEQDAALC0EAIRAgAEEANgIcIAAgCzYCFCAAQc2QgIAANgIQIABBCTYCDAwXC0EAIRAgAEEANgIcIAAgCjYCFCAAQemKgIAANgIQIABBCTYCDAwWC0EAIRAgAEEANgIcIAAgCTYCFCAAQbeQgIAANgIQIABBCTYCDAwVC0EAIRAgAEEANgIcIAAgCDYCFCAAQZyRgIAANgIQIABBCTYCDAwUC0EAIRAgAEEANgIcIAAgATYCFCAAQc2QgIAANgIQIABBCTYCDAwTC0EAIRAgAEEANgIcIAAgATYCFCAAQemKgIAANgIQIABBCTYCDAwSC0EAIRAgAEEANgIcIAAgATYCFCAAQbeQgIAANgIQIABBCTYCDAwRC0EAIRAgAEEANgIcIAAgATYCFCAAQZyRgIAANgIQIABBCTYCDAwQC0EAIRAgAEEANgIcIAAgATYCFCAAQZeVgIAANgIQIABBDzYCDAwPC0EAIRAgAEEANgIcIAAgATYCFCAAQZeVgIAANgIQIABBDzYCDAwOC0EAIRAgAEEANgIcIAAgATYCFCAAQcCSgIAANgIQIABBCzYCDAwNC0EAIRAgAEEANgIcIAAgATYCFCAAQZWJgIAANgIQIABBCzYCDAwMC0EAIRAgAEEANgIcIAAgATYCFCAAQeGPgIAANgIQIABBCjYCDAwLC0EAIRAgAEEANgIcIAAgATYCFCAAQfuPgIAANgIQIABBCjYCDAwKC0EAIRAgAEEANgIcIAAgATYCFCAAQfGZgIAANgIQIABBAjYCDAwJC0EAIRAgAEEANgIcIAAgATYCFCAAQcSUgIAANgIQIABBAjYCDAwIC0EAIRAgAEEANgIcIAAgATYCFCAAQfKVgIAANgIQIABBAjYCDAwHCyAAQQI2AhwgACABNgIUIABBnJqAgAA2AhAgAEEWNgIMQQAhEAwGC0EBIRAMBQtB1AAhECABIgQgAkYNBCADQQhqIAAgBCACQdjCgIAAQQoQxYCAgAAgAygCDCEEIAMoAggOAwEEAgALEMqAgIAAAAsgAEEANgIcIABBtZqAgAA2AhAgAEEXNgIMIAAgBEEBajYCFEEAIRAMAgsgAEEANgIcIAAgBDYCFCAAQcqagIAANgIQIABBCTYCDEEAIRAMAQsCQCABIgQgAkcNAEEiIRAMAQsgAEGJgICAADYCCCAAIAQ2AgRBISEQCyADQRBqJICAgIAAIBALrwEBAn8gASgCACEGAkACQCACIANGDQAgBCAGaiEEIAYgA2ogAmshByACIAZBf3MgBWoiBmohBQNAAkAgAi0AACAELQAARg0AQQIhBAwDCwJAIAYNAEEAIQQgBSECDAMLIAZBf2ohBiAEQQFqIQQgAkEBaiICIANHDQALIAchBiADIQILIABBATYCACABIAY2AgAgACACNgIEDwsgAUEANgIAIAAgBDYCACAAIAI2AgQLCgAgABDHgICAAAvyNgELfyOAgICAAEEQayIBJICAgIAAAkBBACgCoNCAgAANAEEAEMuAgIAAQYDUhIAAayICQdkASQ0AQQAhAwJAQQAoAuDTgIAAIgQNAEEAQn83AuzTgIAAQQBCgICEgICAwAA3AuTTgIAAQQAgAUEIakFwcUHYqtWqBXMiBDYC4NOAgABBAEEANgL004CAAEEAQQA2AsTTgIAAC0EAIAI2AszTgIAAQQBBgNSEgAA2AsjTgIAAQQBBgNSEgAA2ApjQgIAAQQAgBDYCrNCAgABBAEF/NgKo0ICAAANAIANBxNCAgABqIANBuNCAgABqIgQ2AgAgBCADQbDQgIAAaiIFNgIAIANBvNCAgABqIAU2AgAgA0HM0ICAAGogA0HA0ICAAGoiBTYCACAFIAQ2AgAgA0HU0ICAAGogA0HI0ICAAGoiBDYCACAEIAU2AgAgA0HQ0ICAAGogBDYCACADQSBqIgNBgAJHDQALQYDUhIAAQXhBgNSEgABrQQ9xQQBBgNSEgABBCGpBD3EbIgNqIgRBBGogAkFIaiIFIANrIgNBAXI2AgBBAEEAKALw04CAADYCpNCAgABBACADNgKU0ICAAEEAIAQ2AqDQgIAAQYDUhIAAIAVqQTg2AgQLAkACQAJAAkACQAJAAkACQAJAAkACQAJAIABB7AFLDQACQEEAKAKI0ICAACIGQRAgAEETakFwcSAAQQtJGyICQQN2IgR2IgNBA3FFDQACQAJAIANBAXEgBHJBAXMiBUEDdCIEQbDQgIAAaiIDIARBuNCAgABqKAIAIgQoAggiAkcNAEEAIAZBfiAFd3E2AojQgIAADAELIAMgAjYCCCACIAM2AgwLIARBCGohAyAEIAVBA3QiBUEDcjYCBCAEIAVqIgQgBCgCBEEBcjYCBAwMCyACQQAoApDQgIAAIgdNDQECQCADRQ0AAkACQCADIAR0QQIgBHQiA0EAIANrcnEiA0EAIANrcUF/aiIDIANBDHZBEHEiA3YiBEEFdkEIcSIFIANyIAQgBXYiA0ECdkEEcSIEciADIAR2IgNBAXZBAnEiBHIgAyAEdiIDQQF2QQFxIgRyIAMgBHZqIgRBA3QiA0Gw0ICAAGoiBSADQbjQgIAAaigCACIDKAIIIgBHDQBBACAGQX4gBHdxIgY2AojQgIAADAELIAUgADYCCCAAIAU2AgwLIAMgAkEDcjYCBCADIARBA3QiBGogBCACayIFNgIAIAMgAmoiACAFQQFyNgIEAkAgB0UNACAHQXhxQbDQgIAAaiECQQAoApzQgIAAIQQCQAJAIAZBASAHQQN2dCIIcQ0AQQAgBiAIcjYCiNCAgAAgAiEIDAELIAIoAgghCAsgCCAENgIMIAIgBDYCCCAEIAI2AgwgBCAINgIICyADQQhqIQNBACAANgKc0ICAAEEAIAU2ApDQgIAADAwLQQAoAozQgIAAIglFDQEgCUEAIAlrcUF/aiIDIANBDHZBEHEiA3YiBEEFdkEIcSIFIANyIAQgBXYiA0ECdkEEcSIEciADIAR2IgNBAXZBAnEiBHIgAyAEdiIDQQF2QQFxIgRyIAMgBHZqQQJ0QbjSgIAAaigCACIAKAIEQXhxIAJrIQQgACEFAkADQAJAIAUoAhAiAw0AIAVBFGooAgAiA0UNAgsgAygCBEF4cSACayIFIAQgBSAESSIFGyEEIAMgACAFGyEAIAMhBQwACwsgACgCGCEKAkAgACgCDCIIIABGDQAgACgCCCIDQQAoApjQgIAASRogCCADNgIIIAMgCDYCDAwLCwJAIABBFGoiBSgCACIDDQAgACgCECIDRQ0DIABBEGohBQsDQCAFIQsgAyIIQRRqIgUoAgAiAw0AIAhBEGohBSAIKAIQIgMNAAsgC0EANgIADAoLQX8hAiAAQb9/Sw0AIABBE2oiA0FwcSECQQAoAozQgIAAIgdFDQBBACELAkAgAkGAAkkNAEEfIQsgAkH///8HSw0AIANBCHYiAyADQYD+P2pBEHZBCHEiA3QiBCAEQYDgH2pBEHZBBHEiBHQiBSAFQYCAD2pBEHZBAnEiBXRBD3YgAyAEciAFcmsiA0EBdCACIANBFWp2QQFxckEcaiELC0EAIAJrIQQCQAJAAkACQCALQQJ0QbjSgIAAaigCACIFDQBBACEDQQAhCAwBC0EAIQMgAkEAQRkgC0EBdmsgC0EfRht0IQBBACEIA0ACQCAFKAIEQXhxIAJrIgYgBE8NACAGIQQgBSEIIAYNAEEAIQQgBSEIIAUhAwwDCyADIAVBFGooAgAiBiAGIAUgAEEddkEEcWpBEGooAgAiBUYbIAMgBhshAyAAQQF0IQAgBQ0ACwsCQCADIAhyDQBBACEIQQIgC3QiA0EAIANrciAHcSIDRQ0DIANBACADa3FBf2oiAyADQQx2QRBxIgN2IgVBBXZBCHEiACADciAFIAB2IgNBAnZBBHEiBXIgAyAFdiIDQQF2QQJxIgVyIAMgBXYiA0EBdkEBcSIFciADIAV2akECdEG40oCAAGooAgAhAwsgA0UNAQsDQCADKAIEQXhxIAJrIgYgBEkhAAJAIAMoAhAiBQ0AIANBFGooAgAhBQsgBiAEIAAbIQQgAyAIIAAbIQggBSEDIAUNAAsLIAhFDQAgBEEAKAKQ0ICAACACa08NACAIKAIYIQsCQCAIKAIMIgAgCEYNACAIKAIIIgNBACgCmNCAgABJGiAAIAM2AgggAyAANgIMDAkLAkAgCEEUaiIFKAIAIgMNACAIKAIQIgNFDQMgCEEQaiEFCwNAIAUhBiADIgBBFGoiBSgCACIDDQAgAEEQaiEFIAAoAhAiAw0ACyAGQQA2AgAMCAsCQEEAKAKQ0ICAACIDIAJJDQBBACgCnNCAgAAhBAJAAkAgAyACayIFQRBJDQAgBCACaiIAIAVBAXI2AgRBACAFNgKQ0ICAAEEAIAA2ApzQgIAAIAQgA2ogBTYCACAEIAJBA3I2AgQMAQsgBCADQQNyNgIEIAQgA2oiAyADKAIEQQFyNgIEQQBBADYCnNCAgABBAEEANgKQ0ICAAAsgBEEIaiEDDAoLAkBBACgClNCAgAAiACACTQ0AQQAoAqDQgIAAIgMgAmoiBCAAIAJrIgVBAXI2AgRBACAFNgKU0ICAAEEAIAQ2AqDQgIAAIAMgAkEDcjYCBCADQQhqIQMMCgsCQAJAQQAoAuDTgIAARQ0AQQAoAujTgIAAIQQMAQtBAEJ/NwLs04CAAEEAQoCAhICAgMAANwLk04CAAEEAIAFBDGpBcHFB2KrVqgVzNgLg04CAAEEAQQA2AvTTgIAAQQBBADYCxNOAgABBgIAEIQQLQQAhAwJAIAQgAkHHAGoiB2oiBkEAIARrIgtxIgggAksNAEEAQTA2AvjTgIAADAoLAkBBACgCwNOAgAAiA0UNAAJAQQAoArjTgIAAIgQgCGoiBSAETQ0AIAUgA00NAQtBACEDQQBBMDYC+NOAgAAMCgtBAC0AxNOAgABBBHENBAJAAkACQEEAKAKg0ICAACIERQ0AQcjTgIAAIQMDQAJAIAMoAgAiBSAESw0AIAUgAygCBGogBEsNAwsgAygCCCIDDQALC0EAEMuAgIAAIgBBf0YNBSAIIQYCQEEAKALk04CAACIDQX9qIgQgAHFFDQAgCCAAayAEIABqQQAgA2txaiEGCyAGIAJNDQUgBkH+////B0sNBQJAQQAoAsDTgIAAIgNFDQBBACgCuNOAgAAiBCAGaiIFIARNDQYgBSADSw0GCyAGEMuAgIAAIgMgAEcNAQwHCyAGIABrIAtxIgZB/v///wdLDQQgBhDLgICAACIAIAMoAgAgAygCBGpGDQMgACEDCwJAIANBf0YNACACQcgAaiAGTQ0AAkAgByAGa0EAKALo04CAACIEakEAIARrcSIEQf7///8HTQ0AIAMhAAwHCwJAIAQQy4CAgABBf0YNACAEIAZqIQYgAyEADAcLQQAgBmsQy4CAgAAaDAQLIAMhACADQX9HDQUMAwtBACEIDAcLQQAhAAwFCyAAQX9HDQILQQBBACgCxNOAgABBBHI2AsTTgIAACyAIQf7///8HSw0BIAgQy4CAgAAhAEEAEMuAgIAAIQMgAEF/Rg0BIANBf0YNASAAIANPDQEgAyAAayIGIAJBOGpNDQELQQBBACgCuNOAgAAgBmoiAzYCuNOAgAACQCADQQAoArzTgIAATQ0AQQAgAzYCvNOAgAALAkACQAJAAkBBACgCoNCAgAAiBEUNAEHI04CAACEDA0AgACADKAIAIgUgAygCBCIIakYNAiADKAIIIgMNAAwDCwsCQAJAQQAoApjQgIAAIgNFDQAgACADTw0BC0EAIAA2ApjQgIAAC0EAIQNBACAGNgLM04CAAEEAIAA2AsjTgIAAQQBBfzYCqNCAgABBAEEAKALg04CAADYCrNCAgABBAEEANgLU04CAAANAIANBxNCAgABqIANBuNCAgABqIgQ2AgAgBCADQbDQgIAAaiIFNgIAIANBvNCAgABqIAU2AgAgA0HM0ICAAGogA0HA0ICAAGoiBTYCACAFIAQ2AgAgA0HU0ICAAGogA0HI0ICAAGoiBDYCACAEIAU2AgAgA0HQ0ICAAGogBDYCACADQSBqIgNBgAJHDQALIABBeCAAa0EPcUEAIABBCGpBD3EbIgNqIgQgBkFIaiIFIANrIgNBAXI2AgRBAEEAKALw04CAADYCpNCAgABBACADNgKU0ICAAEEAIAQ2AqDQgIAAIAAgBWpBODYCBAwCCyADLQAMQQhxDQAgBCAFSQ0AIAQgAE8NACAEQXggBGtBD3FBACAEQQhqQQ9xGyIFaiIAQQAoApTQgIAAIAZqIgsgBWsiBUEBcjYCBCADIAggBmo2AgRBAEEAKALw04CAADYCpNCAgABBACAFNgKU0ICAAEEAIAA2AqDQgIAAIAQgC2pBODYCBAwBCwJAIABBACgCmNCAgAAiCE8NAEEAIAA2ApjQgIAAIAAhCAsgACAGaiEFQcjTgIAAIQMCQAJAAkACQAJAAkACQANAIAMoAgAgBUYNASADKAIIIgMNAAwCCwsgAy0ADEEIcUUNAQtByNOAgAAhAwNAAkAgAygCACIFIARLDQAgBSADKAIEaiIFIARLDQMLIAMoAgghAwwACwsgAyAANgIAIAMgAygCBCAGajYCBCAAQXggAGtBD3FBACAAQQhqQQ9xG2oiCyACQQNyNgIEIAVBeCAFa0EPcUEAIAVBCGpBD3EbaiIGIAsgAmoiAmshAwJAIAYgBEcNAEEAIAI2AqDQgIAAQQBBACgClNCAgAAgA2oiAzYClNCAgAAgAiADQQFyNgIEDAMLAkAgBkEAKAKc0ICAAEcNAEEAIAI2ApzQgIAAQQBBACgCkNCAgAAgA2oiAzYCkNCAgAAgAiADQQFyNgIEIAIgA2ogAzYCAAwDCwJAIAYoAgQiBEEDcUEBRw0AIARBeHEhBwJAAkAgBEH/AUsNACAGKAIIIgUgBEEDdiIIQQN0QbDQgIAAaiIARhoCQCAGKAIMIgQgBUcNAEEAQQAoAojQgIAAQX4gCHdxNgKI0ICAAAwCCyAEIABGGiAEIAU2AgggBSAENgIMDAELIAYoAhghCQJAAkAgBigCDCIAIAZGDQAgBigCCCIEIAhJGiAAIAQ2AgggBCAANgIMDAELAkAgBkEUaiIEKAIAIgUNACAGQRBqIgQoAgAiBQ0AQQAhAAwBCwNAIAQhCCAFIgBBFGoiBCgCACIFDQAgAEEQaiEEIAAoAhAiBQ0ACyAIQQA2AgALIAlFDQACQAJAIAYgBigCHCIFQQJ0QbjSgIAAaiIEKAIARw0AIAQgADYCACAADQFBAEEAKAKM0ICAAEF+IAV3cTYCjNCAgAAMAgsgCUEQQRQgCSgCECAGRhtqIAA2AgAgAEUNAQsgACAJNgIYAkAgBigCECIERQ0AIAAgBDYCECAEIAA2AhgLIAYoAhQiBEUNACAAQRRqIAQ2AgAgBCAANgIYCyAHIANqIQMgBiAHaiIGKAIEIQQLIAYgBEF+cTYCBCACIANqIAM2AgAgAiADQQFyNgIEAkAgA0H/AUsNACADQXhxQbDQgIAAaiEEAkACQEEAKAKI0ICAACIFQQEgA0EDdnQiA3ENAEEAIAUgA3I2AojQgIAAIAQhAwwBCyAEKAIIIQMLIAMgAjYCDCAEIAI2AgggAiAENgIMIAIgAzYCCAwDC0EfIQQCQCADQf///wdLDQAgA0EIdiIEIARBgP4/akEQdkEIcSIEdCIFIAVBgOAfakEQdkEEcSIFdCIAIABBgIAPakEQdkECcSIAdEEPdiAEIAVyIAByayIEQQF0IAMgBEEVanZBAXFyQRxqIQQLIAIgBDYCHCACQgA3AhAgBEECdEG40oCAAGohBQJAQQAoAozQgIAAIgBBASAEdCIIcQ0AIAUgAjYCAEEAIAAgCHI2AozQgIAAIAIgBTYCGCACIAI2AgggAiACNgIMDAMLIANBAEEZIARBAXZrIARBH0YbdCEEIAUoAgAhAANAIAAiBSgCBEF4cSADRg0CIARBHXYhACAEQQF0IQQgBSAAQQRxakEQaiIIKAIAIgANAAsgCCACNgIAIAIgBTYCGCACIAI2AgwgAiACNgIIDAILIABBeCAAa0EPcUEAIABBCGpBD3EbIgNqIgsgBkFIaiIIIANrIgNBAXI2AgQgACAIakE4NgIEIAQgBUE3IAVrQQ9xQQAgBUFJakEPcRtqQUFqIgggCCAEQRBqSRsiCEEjNgIEQQBBACgC8NOAgAA2AqTQgIAAQQAgAzYClNCAgABBACALNgKg0ICAACAIQRBqQQApAtDTgIAANwIAIAhBACkCyNOAgAA3AghBACAIQQhqNgLQ04CAAEEAIAY2AszTgIAAQQAgADYCyNOAgABBAEEANgLU04CAACAIQSRqIQMDQCADQQc2AgAgA0EEaiIDIAVJDQALIAggBEYNAyAIIAgoAgRBfnE2AgQgCCAIIARrIgA2AgAgBCAAQQFyNgIEAkAgAEH/AUsNACAAQXhxQbDQgIAAaiEDAkACQEEAKAKI0ICAACIFQQEgAEEDdnQiAHENAEEAIAUgAHI2AojQgIAAIAMhBQwBCyADKAIIIQULIAUgBDYCDCADIAQ2AgggBCADNgIMIAQgBTYCCAwEC0EfIQMCQCAAQf///wdLDQAgAEEIdiIDIANBgP4/akEQdkEIcSIDdCIFIAVBgOAfakEQdkEEcSIFdCIIIAhBgIAPakEQdkECcSIIdEEPdiADIAVyIAhyayIDQQF0IAAgA0EVanZBAXFyQRxqIQMLIAQgAzYCHCAEQgA3AhAgA0ECdEG40oCAAGohBQJAQQAoAozQgIAAIghBASADdCIGcQ0AIAUgBDYCAEEAIAggBnI2AozQgIAAIAQgBTYCGCAEIAQ2AgggBCAENgIMDAQLIABBAEEZIANBAXZrIANBH0YbdCEDIAUoAgAhCANAIAgiBSgCBEF4cSAARg0DIANBHXYhCCADQQF0IQMgBSAIQQRxakEQaiIGKAIAIggNAAsgBiAENgIAIAQgBTYCGCAEIAQ2AgwgBCAENgIIDAMLIAUoAggiAyACNgIMIAUgAjYCCCACQQA2AhggAiAFNgIMIAIgAzYCCAsgC0EIaiEDDAULIAUoAggiAyAENgIMIAUgBDYCCCAEQQA2AhggBCAFNgIMIAQgAzYCCAtBACgClNCAgAAiAyACTQ0AQQAoAqDQgIAAIgQgAmoiBSADIAJrIgNBAXI2AgRBACADNgKU0ICAAEEAIAU2AqDQgIAAIAQgAkEDcjYCBCAEQQhqIQMMAwtBACEDQQBBMDYC+NOAgAAMAgsCQCALRQ0AAkACQCAIIAgoAhwiBUECdEG40oCAAGoiAygCAEcNACADIAA2AgAgAA0BQQAgB0F+IAV3cSIHNgKM0ICAAAwCCyALQRBBFCALKAIQIAhGG2ogADYCACAARQ0BCyAAIAs2AhgCQCAIKAIQIgNFDQAgACADNgIQIAMgADYCGAsgCEEUaigCACIDRQ0AIABBFGogAzYCACADIAA2AhgLAkACQCAEQQ9LDQAgCCAEIAJqIgNBA3I2AgQgCCADaiIDIAMoAgRBAXI2AgQMAQsgCCACaiIAIARBAXI2AgQgCCACQQNyNgIEIAAgBGogBDYCAAJAIARB/wFLDQAgBEF4cUGw0ICAAGohAwJAAkBBACgCiNCAgAAiBUEBIARBA3Z0IgRxDQBBACAFIARyNgKI0ICAACADIQQMAQsgAygCCCEECyAEIAA2AgwgAyAANgIIIAAgAzYCDCAAIAQ2AggMAQtBHyEDAkAgBEH///8HSw0AIARBCHYiAyADQYD+P2pBEHZBCHEiA3QiBSAFQYDgH2pBEHZBBHEiBXQiAiACQYCAD2pBEHZBAnEiAnRBD3YgAyAFciACcmsiA0EBdCAEIANBFWp2QQFxckEcaiEDCyAAIAM2AhwgAEIANwIQIANBAnRBuNKAgABqIQUCQCAHQQEgA3QiAnENACAFIAA2AgBBACAHIAJyNgKM0ICAACAAIAU2AhggACAANgIIIAAgADYCDAwBCyAEQQBBGSADQQF2ayADQR9GG3QhAyAFKAIAIQICQANAIAIiBSgCBEF4cSAERg0BIANBHXYhAiADQQF0IQMgBSACQQRxakEQaiIGKAIAIgINAAsgBiAANgIAIAAgBTYCGCAAIAA2AgwgACAANgIIDAELIAUoAggiAyAANgIMIAUgADYCCCAAQQA2AhggACAFNgIMIAAgAzYCCAsgCEEIaiEDDAELAkAgCkUNAAJAAkAgACAAKAIcIgVBAnRBuNKAgABqIgMoAgBHDQAgAyAINgIAIAgNAUEAIAlBfiAFd3E2AozQgIAADAILIApBEEEUIAooAhAgAEYbaiAINgIAIAhFDQELIAggCjYCGAJAIAAoAhAiA0UNACAIIAM2AhAgAyAINgIYCyAAQRRqKAIAIgNFDQAgCEEUaiADNgIAIAMgCDYCGAsCQAJAIARBD0sNACAAIAQgAmoiA0EDcjYCBCAAIANqIgMgAygCBEEBcjYCBAwBCyAAIAJqIgUgBEEBcjYCBCAAIAJBA3I2AgQgBSAEaiAENgIAAkAgB0UNACAHQXhxQbDQgIAAaiECQQAoApzQgIAAIQMCQAJAQQEgB0EDdnQiCCAGcQ0AQQAgCCAGcjYCiNCAgAAgAiEIDAELIAIoAgghCAsgCCADNgIMIAIgAzYCCCADIAI2AgwgAyAINgIIC0EAIAU2ApzQgIAAQQAgBDYCkNCAgAALIABBCGohAwsgAUEQaiSAgICAACADCwoAIAAQyYCAgAAL4g0BB38CQCAARQ0AIABBeGoiASAAQXxqKAIAIgJBeHEiAGohAwJAIAJBAXENACACQQNxRQ0BIAEgASgCACICayIBQQAoApjQgIAAIgRJDQEgAiAAaiEAAkAgAUEAKAKc0ICAAEYNAAJAIAJB/wFLDQAgASgCCCIEIAJBA3YiBUEDdEGw0ICAAGoiBkYaAkAgASgCDCICIARHDQBBAEEAKAKI0ICAAEF+IAV3cTYCiNCAgAAMAwsgAiAGRhogAiAENgIIIAQgAjYCDAwCCyABKAIYIQcCQAJAIAEoAgwiBiABRg0AIAEoAggiAiAESRogBiACNgIIIAIgBjYCDAwBCwJAIAFBFGoiAigCACIEDQAgAUEQaiICKAIAIgQNAEEAIQYMAQsDQCACIQUgBCIGQRRqIgIoAgAiBA0AIAZBEGohAiAGKAIQIgQNAAsgBUEANgIACyAHRQ0BAkACQCABIAEoAhwiBEECdEG40oCAAGoiAigCAEcNACACIAY2AgAgBg0BQQBBACgCjNCAgABBfiAEd3E2AozQgIAADAMLIAdBEEEUIAcoAhAgAUYbaiAGNgIAIAZFDQILIAYgBzYCGAJAIAEoAhAiAkUNACAGIAI2AhAgAiAGNgIYCyABKAIUIgJFDQEgBkEUaiACNgIAIAIgBjYCGAwBCyADKAIEIgJBA3FBA0cNACADIAJBfnE2AgRBACAANgKQ0ICAACABIABqIAA2AgAgASAAQQFyNgIEDwsgASADTw0AIAMoAgQiAkEBcUUNAAJAAkAgAkECcQ0AAkAgA0EAKAKg0ICAAEcNAEEAIAE2AqDQgIAAQQBBACgClNCAgAAgAGoiADYClNCAgAAgASAAQQFyNgIEIAFBACgCnNCAgABHDQNBAEEANgKQ0ICAAEEAQQA2ApzQgIAADwsCQCADQQAoApzQgIAARw0AQQAgATYCnNCAgABBAEEAKAKQ0ICAACAAaiIANgKQ0ICAACABIABBAXI2AgQgASAAaiAANgIADwsgAkF4cSAAaiEAAkACQCACQf8BSw0AIAMoAggiBCACQQN2IgVBA3RBsNCAgABqIgZGGgJAIAMoAgwiAiAERw0AQQBBACgCiNCAgABBfiAFd3E2AojQgIAADAILIAIgBkYaIAIgBDYCCCAEIAI2AgwMAQsgAygCGCEHAkACQCADKAIMIgYgA0YNACADKAIIIgJBACgCmNCAgABJGiAGIAI2AgggAiAGNgIMDAELAkAgA0EUaiICKAIAIgQNACADQRBqIgIoAgAiBA0AQQAhBgwBCwNAIAIhBSAEIgZBFGoiAigCACIEDQAgBkEQaiECIAYoAhAiBA0ACyAFQQA2AgALIAdFDQACQAJAIAMgAygCHCIEQQJ0QbjSgIAAaiICKAIARw0AIAIgBjYCACAGDQFBAEEAKAKM0ICAAEF+IAR3cTYCjNCAgAAMAgsgB0EQQRQgBygCECADRhtqIAY2AgAgBkUNAQsgBiAHNgIYAkAgAygCECICRQ0AIAYgAjYCECACIAY2AhgLIAMoAhQiAkUNACAGQRRqIAI2AgAgAiAGNgIYCyABIABqIAA2AgAgASAAQQFyNgIEIAFBACgCnNCAgABHDQFBACAANgKQ0ICAAA8LIAMgAkF+cTYCBCABIABqIAA2AgAgASAAQQFyNgIECwJAIABB/wFLDQAgAEF4cUGw0ICAAGohAgJAAkBBACgCiNCAgAAiBEEBIABBA3Z0IgBxDQBBACAEIAByNgKI0ICAACACIQAMAQsgAigCCCEACyAAIAE2AgwgAiABNgIIIAEgAjYCDCABIAA2AggPC0EfIQICQCAAQf///wdLDQAgAEEIdiICIAJBgP4/akEQdkEIcSICdCIEIARBgOAfakEQdkEEcSIEdCIGIAZBgIAPakEQdkECcSIGdEEPdiACIARyIAZyayICQQF0IAAgAkEVanZBAXFyQRxqIQILIAEgAjYCHCABQgA3AhAgAkECdEG40oCAAGohBAJAAkBBACgCjNCAgAAiBkEBIAJ0IgNxDQAgBCABNgIAQQAgBiADcjYCjNCAgAAgASAENgIYIAEgATYCCCABIAE2AgwMAQsgAEEAQRkgAkEBdmsgAkEfRht0IQIgBCgCACEGAkADQCAGIgQoAgRBeHEgAEYNASACQR12IQYgAkEBdCECIAQgBkEEcWpBEGoiAygCACIGDQALIAMgATYCACABIAQ2AhggASABNgIMIAEgATYCCAwBCyAEKAIIIgAgATYCDCAEIAE2AgggAUEANgIYIAEgBDYCDCABIAA2AggLQQBBACgCqNCAgABBf2oiAUF/IAEbNgKo0ICAAAsLBAAAAAtOAAJAIAANAD8AQRB0DwsCQCAAQf//A3ENACAAQX9MDQACQCAAQRB2QAAiAEF/Rw0AQQBBMDYC+NOAgABBfw8LIABBEHQPCxDKgICAAAAL8gICA38BfgJAIAJFDQAgACABOgAAIAIgAGoiA0F/aiABOgAAIAJBA0kNACAAIAE6AAIgACABOgABIANBfWogAToAACADQX5qIAE6AAAgAkEHSQ0AIAAgAToAAyADQXxqIAE6AAAgAkEJSQ0AIABBACAAa0EDcSIEaiIDIAFB/wFxQYGChAhsIgE2AgAgAyACIARrQXxxIgRqIgJBfGogATYCACAEQQlJDQAgAyABNgIIIAMgATYCBCACQXhqIAE2AgAgAkF0aiABNgIAIARBGUkNACADIAE2AhggAyABNgIUIAMgATYCECADIAE2AgwgAkFwaiABNgIAIAJBbGogATYCACACQWhqIAE2AgAgAkFkaiABNgIAIAQgA0EEcUEYciIFayICQSBJDQAgAa1CgYCAgBB+IQYgAyAFaiEBA0AgASAGNwMYIAEgBjcDECABIAY3AwggASAGNwMAIAFBIGohASACQWBqIgJBH0sNAAsLIAALC45IAQBBgAgLhkgBAAAAAgAAAAMAAAAAAAAAAAAAAAQAAAAFAAAAAAAAAAAAAAAGAAAABwAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEludmFsaWQgY2hhciBpbiB1cmwgcXVlcnkAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9ib2R5AENvbnRlbnQtTGVuZ3RoIG92ZXJmbG93AENodW5rIHNpemUgb3ZlcmZsb3cAUmVzcG9uc2Ugb3ZlcmZsb3cASW52YWxpZCBtZXRob2QgZm9yIEhUVFAveC54IHJlcXVlc3QASW52YWxpZCBtZXRob2QgZm9yIFJUU1AveC54IHJlcXVlc3QARXhwZWN0ZWQgU09VUkNFIG1ldGhvZCBmb3IgSUNFL3gueCByZXF1ZXN0AEludmFsaWQgY2hhciBpbiB1cmwgZnJhZ21lbnQgc3RhcnQARXhwZWN0ZWQgZG90AFNwYW4gY2FsbGJhY2sgZXJyb3IgaW4gb25fc3RhdHVzAEludmFsaWQgcmVzcG9uc2Ugc3RhdHVzAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIGV4dGVuc2lvbnMAVXNlciBjYWxsYmFjayBlcnJvcgBgb25fcmVzZXRgIGNhbGxiYWNrIGVycm9yAGBvbl9jaHVua19oZWFkZXJgIGNhbGxiYWNrIGVycm9yAGBvbl9tZXNzYWdlX2JlZ2luYCBjYWxsYmFjayBlcnJvcgBgb25fY2h1bmtfZXh0ZW5zaW9uX3ZhbHVlYCBjYWxsYmFjayBlcnJvcgBgb25fc3RhdHVzX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fdmVyc2lvbl9jb21wbGV0ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX3VybF9jb21wbGV0ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX2NodW5rX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25faGVhZGVyX3ZhbHVlX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fbWVzc2FnZV9jb21wbGV0ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX21ldGhvZF9jb21wbGV0ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX2hlYWRlcl9maWVsZF9jb21wbGV0ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX2NodW5rX2V4dGVuc2lvbl9uYW1lYCBjYWxsYmFjayBlcnJvcgBVbmV4cGVjdGVkIGNoYXIgaW4gdXJsIHNlcnZlcgBJbnZhbGlkIGhlYWRlciB2YWx1ZSBjaGFyAEludmFsaWQgaGVhZGVyIGZpZWxkIGNoYXIAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl92ZXJzaW9uAEludmFsaWQgbWlub3IgdmVyc2lvbgBJbnZhbGlkIG1ham9yIHZlcnNpb24ARXhwZWN0ZWQgc3BhY2UgYWZ0ZXIgdmVyc2lvbgBFeHBlY3RlZCBDUkxGIGFmdGVyIHZlcnNpb24ASW52YWxpZCBIVFRQIHZlcnNpb24ASW52YWxpZCBoZWFkZXIgdG9rZW4AU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl91cmwASW52YWxpZCBjaGFyYWN0ZXJzIGluIHVybABVbmV4cGVjdGVkIHN0YXJ0IGNoYXIgaW4gdXJsAERvdWJsZSBAIGluIHVybABFbXB0eSBDb250ZW50LUxlbmd0aABJbnZhbGlkIGNoYXJhY3RlciBpbiBDb250ZW50LUxlbmd0aABEdXBsaWNhdGUgQ29udGVudC1MZW5ndGgASW52YWxpZCBjaGFyIGluIHVybCBwYXRoAENvbnRlbnQtTGVuZ3RoIGNhbid0IGJlIHByZXNlbnQgd2l0aCBUcmFuc2Zlci1FbmNvZGluZwBJbnZhbGlkIGNoYXJhY3RlciBpbiBjaHVuayBzaXplAFNwYW4gY2FsbGJhY2sgZXJyb3IgaW4gb25faGVhZGVyX3ZhbHVlAFNwYW4gY2FsbGJhY2sgZXJyb3IgaW4gb25fY2h1bmtfZXh0ZW5zaW9uX3ZhbHVlAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIGV4dGVuc2lvbnMgdmFsdWUATWlzc2luZyBleHBlY3RlZCBMRiBhZnRlciBoZWFkZXIgdmFsdWUASW52YWxpZCBgVHJhbnNmZXItRW5jb2RpbmdgIGhlYWRlciB2YWx1ZQBJbnZhbGlkIGNoYXJhY3RlciBpbiBjaHVuayBleHRlbnNpb25zIHF1b3RlIHZhbHVlAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIGV4dGVuc2lvbnMgcXVvdGVkIHZhbHVlAFBhdXNlZCBieSBvbl9oZWFkZXJzX2NvbXBsZXRlAEludmFsaWQgRU9GIHN0YXRlAG9uX3Jlc2V0IHBhdXNlAG9uX2NodW5rX2hlYWRlciBwYXVzZQBvbl9tZXNzYWdlX2JlZ2luIHBhdXNlAG9uX2NodW5rX2V4dGVuc2lvbl92YWx1ZSBwYXVzZQBvbl9zdGF0dXNfY29tcGxldGUgcGF1c2UAb25fdmVyc2lvbl9jb21wbGV0ZSBwYXVzZQBvbl91cmxfY29tcGxldGUgcGF1c2UAb25fY2h1bmtfY29tcGxldGUgcGF1c2UAb25faGVhZGVyX3ZhbHVlX2NvbXBsZXRlIHBhdXNlAG9uX21lc3NhZ2VfY29tcGxldGUgcGF1c2UAb25fbWV0aG9kX2NvbXBsZXRlIHBhdXNlAG9uX2hlYWRlcl9maWVsZF9jb21wbGV0ZSBwYXVzZQBvbl9jaHVua19leHRlbnNpb25fbmFtZSBwYXVzZQBVbmV4cGVjdGVkIHNwYWNlIGFmdGVyIHN0YXJ0IGxpbmUAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9jaHVua19leHRlbnNpb25fbmFtZQBJbnZhbGlkIGNoYXJhY3RlciBpbiBjaHVuayBleHRlbnNpb25zIG5hbWUAUGF1c2Ugb24gQ09OTkVDVC9VcGdyYWRlAFBhdXNlIG9uIFBSSS9VcGdyYWRlAEV4cGVjdGVkIEhUVFAvMiBDb25uZWN0aW9uIFByZWZhY2UAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9tZXRob2QARXhwZWN0ZWQgc3BhY2UgYWZ0ZXIgbWV0aG9kAFNwYW4gY2FsbGJhY2sgZXJyb3IgaW4gb25faGVhZGVyX2ZpZWxkAFBhdXNlZABJbnZhbGlkIHdvcmQgZW5jb3VudGVyZWQASW52YWxpZCBtZXRob2QgZW5jb3VudGVyZWQAVW5leHBlY3RlZCBjaGFyIGluIHVybCBzY2hlbWEAUmVxdWVzdCBoYXMgaW52YWxpZCBgVHJhbnNmZXItRW5jb2RpbmdgAFNXSVRDSF9QUk9YWQBVU0VfUFJPWFkATUtBQ1RJVklUWQBVTlBST0NFU1NBQkxFX0VOVElUWQBDT1BZAE1PVkVEX1BFUk1BTkVOVExZAFRPT19FQVJMWQBOT1RJRlkARkFJTEVEX0RFUEVOREVOQ1kAQkFEX0dBVEVXQVkAUExBWQBQVVQAQ0hFQ0tPVVQAR0FURVdBWV9USU1FT1VUAFJFUVVFU1RfVElNRU9VVABORVRXT1JLX0NPTk5FQ1RfVElNRU9VVABDT05ORUNUSU9OX1RJTUVPVVQATE9HSU5fVElNRU9VVABORVRXT1JLX1JFQURfVElNRU9VVABQT1NUAE1JU0RJUkVDVEVEX1JFUVVFU1QAQ0xJRU5UX0NMT1NFRF9SRVFVRVNUAENMSUVOVF9DTE9TRURfTE9BRF9CQUxBTkNFRF9SRVFVRVNUAEJBRF9SRVFVRVNUAEhUVFBfUkVRVUVTVF9TRU5UX1RPX0hUVFBTX1BPUlQAUkVQT1JUAElNX0FfVEVBUE9UAFJFU0VUX0NPTlRFTlQATk9fQ09OVEVOVABQQVJUSUFMX0NPTlRFTlQASFBFX0lOVkFMSURfQ09OU1RBTlQASFBFX0NCX1JFU0VUAEdFVABIUEVfU1RSSUNUAENPTkZMSUNUAFRFTVBPUkFSWV9SRURJUkVDVABQRVJNQU5FTlRfUkVESVJFQ1QAQ09OTkVDVABNVUxUSV9TVEFUVVMASFBFX0lOVkFMSURfU1RBVFVTAFRPT19NQU5ZX1JFUVVFU1RTAEVBUkxZX0hJTlRTAFVOQVZBSUxBQkxFX0ZPUl9MRUdBTF9SRUFTT05TAE9QVElPTlMAU1dJVENISU5HX1BST1RPQ09MUwBWQVJJQU5UX0FMU09fTkVHT1RJQVRFUwBNVUxUSVBMRV9DSE9JQ0VTAElOVEVSTkFMX1NFUlZFUl9FUlJPUgBXRUJfU0VSVkVSX1VOS05PV05fRVJST1IAUkFJTEdVTl9FUlJPUgBJREVOVElUWV9QUk9WSURFUl9BVVRIRU5USUNBVElPTl9FUlJPUgBTU0xfQ0VSVElGSUNBVEVfRVJST1IASU5WQUxJRF9YX0ZPUldBUkRFRF9GT1IAU0VUX1BBUkFNRVRFUgBHRVRfUEFSQU1FVEVSAEhQRV9VU0VSAFNFRV9PVEhFUgBIUEVfQ0JfQ0hVTktfSEVBREVSAE1LQ0FMRU5EQVIAU0VUVVAAV0VCX1NFUlZFUl9JU19ET1dOAFRFQVJET1dOAEhQRV9DTE9TRURfQ09OTkVDVElPTgBIRVVSSVNUSUNfRVhQSVJBVElPTgBESVNDT05ORUNURURfT1BFUkFUSU9OAE5PTl9BVVRIT1JJVEFUSVZFX0lORk9STUFUSU9OAEhQRV9JTlZBTElEX1ZFUlNJT04ASFBFX0NCX01FU1NBR0VfQkVHSU4AU0lURV9JU19GUk9aRU4ASFBFX0lOVkFMSURfSEVBREVSX1RPS0VOAElOVkFMSURfVE9LRU4ARk9SQklEREVOAEVOSEFOQ0VfWU9VUl9DQUxNAEhQRV9JTlZBTElEX1VSTABCTE9DS0VEX0JZX1BBUkVOVEFMX0NPTlRST0wATUtDT0wAQUNMAEhQRV9JTlRFUk5BTABSRVFVRVNUX0hFQURFUl9GSUVMRFNfVE9PX0xBUkdFX1VOT0ZGSUNJQUwASFBFX09LAFVOTElOSwBVTkxPQ0sAUFJJAFJFVFJZX1dJVEgASFBFX0lOVkFMSURfQ09OVEVOVF9MRU5HVEgASFBFX1VORVhQRUNURURfQ09OVEVOVF9MRU5HVEgARkxVU0gAUFJPUFBBVENIAE0tU0VBUkNIAFVSSV9UT09fTE9ORwBQUk9DRVNTSU5HAE1JU0NFTExBTkVPVVNfUEVSU0lTVEVOVF9XQVJOSU5HAE1JU0NFTExBTkVPVVNfV0FSTklORwBIUEVfSU5WQUxJRF9UUkFOU0ZFUl9FTkNPRElORwBFeHBlY3RlZCBDUkxGAEhQRV9JTlZBTElEX0NIVU5LX1NJWkUATU9WRQBDT05USU5VRQBIUEVfQ0JfU1RBVFVTX0NPTVBMRVRFAEhQRV9DQl9IRUFERVJTX0NPTVBMRVRFAEhQRV9DQl9WRVJTSU9OX0NPTVBMRVRFAEhQRV9DQl9VUkxfQ09NUExFVEUASFBFX0NCX0NIVU5LX0NPTVBMRVRFAEhQRV9DQl9IRUFERVJfVkFMVUVfQ09NUExFVEUASFBFX0NCX0NIVU5LX0VYVEVOU0lPTl9WQUxVRV9DT01QTEVURQBIUEVfQ0JfQ0hVTktfRVhURU5TSU9OX05BTUVfQ09NUExFVEUASFBFX0NCX01FU1NBR0VfQ09NUExFVEUASFBFX0NCX01FVEhPRF9DT01QTEVURQBIUEVfQ0JfSEVBREVSX0ZJRUxEX0NPTVBMRVRFAERFTEVURQBIUEVfSU5WQUxJRF9FT0ZfU1RBVEUASU5WQUxJRF9TU0xfQ0VSVElGSUNBVEUAUEFVU0UATk9fUkVTUE9OU0UAVU5TVVBQT1JURURfTUVESUFfVFlQRQBHT05FAE5PVF9BQ0NFUFRBQkxFAFNFUlZJQ0VfVU5BVkFJTEFCTEUAUkFOR0VfTk9UX1NBVElTRklBQkxFAE9SSUdJTl9JU19VTlJFQUNIQUJMRQBSRVNQT05TRV9JU19TVEFMRQBQVVJHRQBNRVJHRQBSRVFVRVNUX0hFQURFUl9GSUVMRFNfVE9PX0xBUkdFAFJFUVVFU1RfSEVBREVSX1RPT19MQVJHRQBQQVlMT0FEX1RPT19MQVJHRQBJTlNVRkZJQ0lFTlRfU1RPUkFHRQBIUEVfUEFVU0VEX1VQR1JBREUASFBFX1BBVVNFRF9IMl9VUEdSQURFAFNPVVJDRQBBTk5PVU5DRQBUUkFDRQBIUEVfVU5FWFBFQ1RFRF9TUEFDRQBERVNDUklCRQBVTlNVQlNDUklCRQBSRUNPUkQASFBFX0lOVkFMSURfTUVUSE9EAE5PVF9GT1VORABQUk9QRklORABVTkJJTkQAUkVCSU5EAFVOQVVUSE9SSVpFRABNRVRIT0RfTk9UX0FMTE9XRUQASFRUUF9WRVJTSU9OX05PVF9TVVBQT1JURUQAQUxSRUFEWV9SRVBPUlRFRABBQ0NFUFRFRABOT1RfSU1QTEVNRU5URUQATE9PUF9ERVRFQ1RFRABIUEVfQ1JfRVhQRUNURUQASFBFX0xGX0VYUEVDVEVEAENSRUFURUQASU1fVVNFRABIUEVfUEFVU0VEAFRJTUVPVVRfT0NDVVJFRABQQVlNRU5UX1JFUVVJUkVEAFBSRUNPTkRJVElPTl9SRVFVSVJFRABQUk9YWV9BVVRIRU5USUNBVElPTl9SRVFVSVJFRABORVRXT1JLX0FVVEhFTlRJQ0FUSU9OX1JFUVVJUkVEAExFTkdUSF9SRVFVSVJFRABTU0xfQ0VSVElGSUNBVEVfUkVRVUlSRUQAVVBHUkFERV9SRVFVSVJFRABQQUdFX0VYUElSRUQAUFJFQ09ORElUSU9OX0ZBSUxFRABFWFBFQ1RBVElPTl9GQUlMRUQAUkVWQUxJREFUSU9OX0ZBSUxFRABTU0xfSEFORFNIQUtFX0ZBSUxFRABMT0NLRUQAVFJBTlNGT1JNQVRJT05fQVBQTElFRABOT1RfTU9ESUZJRUQATk9UX0VYVEVOREVEAEJBTkRXSURUSF9MSU1JVF9FWENFRURFRABTSVRFX0lTX09WRVJMT0FERUQASEVBRABFeHBlY3RlZCBIVFRQLwAAXhMAACYTAAAwEAAA8BcAAJ0TAAAVEgAAORcAAPASAAAKEAAAdRIAAK0SAACCEwAATxQAAH8QAACgFQAAIxQAAIkSAACLFAAATRUAANQRAADPFAAAEBgAAMkWAADcFgAAwREAAOAXAAC7FAAAdBQAAHwVAADlFAAACBcAAB8QAABlFQAAoxQAACgVAAACFQAAmRUAACwQAACLGQAATw8AANQOAABqEAAAzhAAAAIXAACJDgAAbhMAABwTAABmFAAAVhcAAMETAADNEwAAbBMAAGgXAABmFwAAXxcAACITAADODwAAaQ4AANgOAABjFgAAyxMAAKoOAAAoFwAAJhcAAMUTAABdFgAA6BEAAGcTAABlEwAA8hYAAHMTAAAdFwAA+RYAAPMRAADPDgAAzhUAAAwSAACzEQAApREAAGEQAAAyFwAAuxMAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAIDAgICAgIAAAICAAICAAICAgICAgICAgIABAAAAAAAAgICAgICAgICAgICAgICAgICAgICAgICAgIAAAACAgICAgICAgICAgICAgICAgICAgICAgICAgICAgACAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAACAAICAgICAAACAgACAgACAgICAgICAgICAAMABAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAAgACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbG9zZWVlcC1hbGl2ZQAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBY2h1bmtlZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEAAQEBAQEAAAEBAAEBAAEBAQEBAQEBAQEAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABlY3Rpb25lbnQtbGVuZ3Rob25yb3h5LWNvbm5lY3Rpb24AAAAAAAAAAAAAAAAAAAByYW5zZmVyLWVuY29kaW5ncGdyYWRlDQoNCg0KU00NCg0KVFRQL0NFL1RTUC8AAAAAAAAAAAAAAAABAgABAwAAAAAAAAAAAAAAAAAAAAAAAAQBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAQIAAQMAAAAAAAAAAAAAAAAAAAAAAAAEAQEFAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAEAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAQAAAgAAAAAAAAAAAAAAAAAAAAAAAAMEAAAEBAQEBAQEBAQEBAUEBAQEBAQEBAQEBAQABAAGBwQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEAAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAEAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAADAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwAAAAAAAAMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAABAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAIAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAAAAAAAADAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABOT1VOQ0VFQ0tPVVRORUNURVRFQ1JJQkVMVVNIRVRFQURTRUFSQ0hSR0VDVElWSVRZTEVOREFSVkVPVElGWVBUSU9OU0NIU0VBWVNUQVRDSEdFT1JESVJFQ1RPUlRSQ0hQQVJBTUVURVJVUkNFQlNDUklCRUFSRE9XTkFDRUlORE5LQ0tVQlNDUklCRUhUVFAvQURUUC8='\n","module.exports = 'AGFzbQEAAAABMAhgAX8Bf2ADf39/AX9gBH9/f38Bf2AAAGADf39/AGABfwBgAn9/AGAGf39/f39/AALLAQgDZW52GHdhc21fb25faGVhZGVyc19jb21wbGV0ZQACA2VudhV3YXNtX29uX21lc3NhZ2VfYmVnaW4AAANlbnYLd2FzbV9vbl91cmwAAQNlbnYOd2FzbV9vbl9zdGF0dXMAAQNlbnYUd2FzbV9vbl9oZWFkZXJfZmllbGQAAQNlbnYUd2FzbV9vbl9oZWFkZXJfdmFsdWUAAQNlbnYMd2FzbV9vbl9ib2R5AAEDZW52GHdhc21fb25fbWVzc2FnZV9jb21wbGV0ZQAAA0ZFAwMEAAAFAAAAAAAABQEFAAUFBQAABgAAAAAGBgYGAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAAABAQcAAAUFAwABBAUBcAESEgUDAQACBggBfwFBgNQECwfRBSIGbWVtb3J5AgALX2luaXRpYWxpemUACRlfX2luZGlyZWN0X2Z1bmN0aW9uX3RhYmxlAQALbGxodHRwX2luaXQAChhsbGh0dHBfc2hvdWxkX2tlZXBfYWxpdmUAQQxsbGh0dHBfYWxsb2MADAZtYWxsb2MARgtsbGh0dHBfZnJlZQANBGZyZWUASA9sbGh0dHBfZ2V0X3R5cGUADhVsbGh0dHBfZ2V0X2h0dHBfbWFqb3IADxVsbGh0dHBfZ2V0X2h0dHBfbWlub3IAEBFsbGh0dHBfZ2V0X21ldGhvZAARFmxsaHR0cF9nZXRfc3RhdHVzX2NvZGUAEhJsbGh0dHBfZ2V0X3VwZ3JhZGUAEwxsbGh0dHBfcmVzZXQAFA5sbGh0dHBfZXhlY3V0ZQAVFGxsaHR0cF9zZXR0aW5nc19pbml0ABYNbGxodHRwX2ZpbmlzaAAXDGxsaHR0cF9wYXVzZQAYDWxsaHR0cF9yZXN1bWUAGRtsbGh0dHBfcmVzdW1lX2FmdGVyX3VwZ3JhZGUAGhBsbGh0dHBfZ2V0X2Vycm5vABsXbGxodHRwX2dldF9lcnJvcl9yZWFzb24AHBdsbGh0dHBfc2V0X2Vycm9yX3JlYXNvbgAdFGxsaHR0cF9nZXRfZXJyb3JfcG9zAB4RbGxodHRwX2Vycm5vX25hbWUAHxJsbGh0dHBfbWV0aG9kX25hbWUAIBJs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IAH9CwMAIABBMGogAf0LAwAgAEEgaiAB/QsDACAAQd0BNgIcQQALewEBfwJAIAAoAgwiAw0AAkAgACgCBEUNACAAIAE2AgQLAkAgACABIAIQxICAgAAiAw0AIAAoAgwPCyAAIAM2AhxBACEDIAAoAgQiAUUNACAAIAEgAiAAKAIIEYGAgIAAACIBRQ0AIAAgAjYCFCAAIAE2AgwgASEDCyADC+TzAQMOfwN+BH8jgICAgABBEGsiAySAgICAACABIQQgASEFIAEhBiABIQcgASEIIAEhCSABIQogASELIAEhDCABIQ0gASEOIAEhDwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCAAKAIcIhBBf2oO3QHaAQHZAQIDBAUGBwgJCgsMDQ7YAQ8Q1wEREtYBExQVFhcYGRob4AHfARwdHtUBHyAhIiMkJdQBJicoKSorLNMB0gEtLtEB0AEvMDEyMzQ1Njc4OTo7PD0+P0BBQkNERUbbAUdISUrPAc4BS80BTMwBTU5PUFFSU1RVVldYWVpbXF1eX2BhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ent8fX5/gAGBAYIBgwGEAYUBhgGHAYgBiQGKAYsBjAGNAY4BjwGQAZEBkgGTAZQBlQGWAZcBmAGZAZoBmwGcAZ0BngGfAaABoQGiAaMBpAGlAaYBpwGoAakBqgGrAawBrQGuAa8BsAGxAbIBswG0AbUBtgG3AcsBygG4AckBuQHIAboBuwG8Ab0BvgG/AcABwQHCAcMBxAHFAcYBANwBC0EAIRAMxgELQQ4hEAzFAQtBDSEQDMQBC0EPIRAMwwELQRAhEAzCAQtBEyEQDMEBC0EUIRAMwAELQRUhEAy/AQtBFiEQDL4BC0EXIRAMvQELQRghEAy8AQtBGSEQDLsBC0EaIRAMugELQRshEAy5AQtBHCEQDLgBC0EIIRAMtwELQR0hEAy2AQtBICEQDLUBC0EfIRAMtAELQQchEAyzAQtBISEQDLIBC0EiIRAMsQELQR4hEAywAQtBIyEQDK8BC0ESIRAMrgELQREhEAytAQtBJCEQDKwBC0ElIRAMqwELQSYhEAyqAQtBJyEQDKkBC0HDASEQDKgBC0EpIRAMpwELQSshEAymAQtBLCEQDKUBC0EtIRAMpAELQS4hEAyjAQtBLyEQDKIBC0HEASEQDKEBC0EwIRAMoAELQTQhEAyfAQtBDCEQDJ4BC0ExIRAMnQELQTIhEAycAQtBMyEQDJsBC0E5IRAMmgELQTUhEAyZAQtBxQEhEAyYAQtBCyEQDJcBC0E6IRAMlgELQTYhEAyVAQtBCiEQDJQBC0E3IRAMkwELQTghEAySAQtBPCEQDJEBC0E7IRAMkAELQT0hEAyPAQtBCSEQDI4BC0EoIRAMjQELQT4hEAyMAQtBPyEQDIsBC0HAACEQDIoBC0HBACEQDIkBC0HCACEQDIgBC0HDACEQDIcBC0HEACEQDIYBC0HFACEQDIUBC0HGACEQDIQBC0EqIRAMgwELQccAIRAMggELQcgAIRAMgQELQckAIRAMgAELQcoAIRAMfwtBywAhEAx+C0HNACEQDH0LQcwAIRAMfAtBzgAhEAx7C0HPACEQDHoLQdAAIRAMeQtB0QAhEAx4C0HSACEQDHcLQdMAIRAMdgtB1AAhEAx1C0HWACEQDHQLQdUAIRAMcwtBBiEQDHILQdcAIRAMcQtBBSEQDHALQdgAIRAMbwtBBCEQDG4LQdkAIRAMbQtB2gAhEAxsC0HbACEQDGsLQdwAIRAMagtBAyEQDGkLQd0AIRAMaAtB3gAhEAxnC0HfACEQDGYLQeEAIRAMZQtB4AAhEAxkC0HiACEQDGMLQeMAIRAMYgtBAiEQDGELQeQAIRAMYAtB5QAhEAxfC0HmACEQDF4LQecAIRAMXQtB6AAhEAxcC0HpACEQDFsLQeoAIRAMWgtB6wAhEAxZC0HsACEQDFgLQe0AIRAMVwtB7gAhEAxWC0HvACEQDFULQfAAIRAMVAtB8QAhEAxTC0HyACEQDFILQfMAIRAMUQtB9AAhEAxQC0H1ACEQDE8LQfYAIRAMTgtB9wAhEAxNC0H4ACEQDEwLQfkAIRAMSwtB+gAhEAxKC0H7ACEQDEkLQfwAIRAMSAtB/QAhEAxHC0H+ACEQDEYLQf8AIRAMRQtBgAEhEAxEC0GBASEQDEMLQYIBIRAMQgtBgwEhEAxBC0GEASEQDEALQYUBIRAMPwtBhgEhEAw+C0GHASEQDD0LQYgBIRAMPAtBiQEhEAw7C0GKASEQDDoLQYsBIRAMOQtBjAEhEAw4C0GNASEQDDcLQY4BIRAMNgtBjwEhEAw1C0GQASEQDDQLQZEBIRAMMwtBkgEhEAwyC0GTASEQDDELQZQBIRAMMAtBlQEhEAwvC0GWASEQDC4LQZcBIRAMLQtBmAEhEAwsC0GZASEQDCsLQZoBIRAMKgtBmwEhEAwpC0GcASEQDCgLQZ0BIRAMJwtBngEhEAwmC0GfASEQDCULQaABIRAMJAtBoQEhEAwjC0GiASEQDCILQaMBIRAMIQtBpAEhEAwgC0GlASEQDB8LQaYBIRAMHgtBpwEhEAwdC0GoASEQDBwLQakBIRAMGwtBqgEhEAwaC0GrASEQDBkLQawBIRAMGAtBrQEhEAwXC0GuASEQDBYLQQEhEAwVC0GvASEQDBQLQbABIRAMEwtBsQEhEAwSC0GzASEQDBELQbIBIRAMEAtBtAEhEAwPC0G1ASEQDA4LQbYBIRAMDQtBtwEhEAwMC0G4ASEQDAsLQbkBIRAMCgtBugEhEAwJC0G7ASEQDAgLQcYBIRAMBwtBvAEhEAwGC0G9ASEQDAULQb4BIRAMBAtBvwEhEAwDC0HAASEQDAILQcIBIRAMAQtBwQEhEAsDQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIBAOxwEAAQID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YWNrIGVycm9yAGBvbl9jaHVua19leHRlbnNpb25fdmFsdWVgIGNhbGxiYWNrIGVycm9yAGBvbl9zdGF0dXNfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl92ZXJzaW9uX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fdXJsX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fY2h1bmtfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl9oZWFkZXJfdmFsdWVfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl9tZXNzYWdlX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fbWV0aG9kX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25faGVhZGVyX2ZpZWxkX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fY2h1bmtfZXh0ZW5zaW9uX25hbWVgIGNhbGxiYWNrIGVycm9yAFVuZXhwZWN0ZWQgY2hhciBpbiB1cmwgc2VydmVyAEludmFsaWQgaGVhZGVyIHZhbHVlIGNoYXIASW52YWxpZCBoZWFkZXIgZmllbGQgY2hhcgBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX3ZlcnNpb24ASW52YWxpZCBtaW5vciB2ZXJzaW9uAEludmFsaWQgbWFqb3IgdmVyc2lvbgBFeHBlY3RlZCBzcGFjZSBhZnRlciB2ZXJzaW9uAEV4cGVjdGVkIENSTEYgYWZ0ZXIgdmVyc2lvbgBJbnZhbGlkIEhUVFAgdmVyc2lvbgBJbnZhbGlkIGhlYWRlciB0b2tlbgBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX3VybABJbnZhbGlkIGNoYXJhY3RlcnMgaW4gdXJsAFVuZXhwZWN0ZWQgc3RhcnQgY2hhciBpbiB1cmwARG91YmxlIEAgaW4gdXJsAEVtcHR5IENvbnRlbnQtTGVuZ3RoAEludmFsaWQgY2hhcmFjdGVyIGluIENvbnRlbnQtTGVuZ3RoAER1cGxpY2F0ZSBDb250ZW50LUxlbmd0aABJbnZhbGlkIGNoYXIgaW4gdXJsIHBhdGgAQ29udGVudC1MZW5ndGggY2FuJ3QgYmUgcHJlc2VudCB3aXRoIFRyYW5zZmVyLUVuY29kaW5nAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIHNpemUAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9oZWFkZXJfdmFsdWUAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9jaHVua19leHRlbnNpb25fdmFsdWUASW52YWxpZCBjaGFyYWN0ZXIgaW4gY2h1bmsgZXh0ZW5zaW9ucyB2YWx1ZQBNaXNzaW5nIGV4cGVjdGVkIExGIGFmdGVyIGhlYWRlciB2YWx1ZQBJbnZhbGlkIGBUcmFuc2Zlci1FbmNvZGluZ2AgaGVhZGVyIHZhbHVlAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIGV4dGVuc2lvbnMgcXVvdGUgdmFsdWUASW52YWxpZCBjaGFyYWN0ZXIgaW4gY2h1bmsgZXh0ZW5zaW9ucyBxdW90ZWQgdmFsdWUAUGF1c2VkIGJ5IG9uX2hlYWRlcnNfY29tcGxldGUASW52YWxpZCBFT0Ygc3RhdGUAb25fcmVzZXQgcGF1c2UAb25fY2h1bmtfaGVhZGVyIHBhdXNlAG9uX21lc3NhZ2VfYmVnaW4gcGF1c2UAb25fY2h1bmtfZXh0ZW5zaW9uX3ZhbHVlIHBhdXNlAG9uX3N0YXR1c19jb21wbGV0ZSBwYXVzZQBvbl92ZXJzaW9uX2NvbXBsZXRlIHBhdXNlAG9uX3VybF9jb21wbGV0ZSBwYXVzZQBvbl9jaHVua19jb21wbGV0ZSBwYXVzZQBvbl9oZWFkZXJfdmFsdWVfY29tcGxldGUgcGF1c2UAb25fbWVzc2FnZV9jb21wbGV0ZSBwYXVzZQBvbl9tZXRob2RfY29tcGxldGUgcGF1c2UAb25faGVhZGVyX2ZpZWxkX2NvbXBsZXRlIHBhdXNlAG9uX2NodW5rX2V4dGVuc2lvbl9uYW1lIHBhdXNlAFVuZXhwZWN0ZWQgc3BhY2UgYWZ0ZXIgc3RhcnQgbGluZQBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX2NodW5rX2V4dGVuc2lvbl9uYW1lAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIGV4dGVuc2lvbnMgbmFtZQBQYXVzZSBvbiBDT05ORUNUL1VwZ3JhZGUAUGF1c2Ugb24gUFJJL1VwZ3JhZGUARXhwZWN0ZWQgSFRUUC8yIENvbm5lY3Rpb24gUHJlZmFjZQBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX21ldGhvZABFeHBlY3RlZCBzcGFjZSBhZnRlciBtZXRob2QAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9oZWFkZXJfZmllbGQAUGF1c2VkAEludmFsaWQgd29yZCBlbmNvdW50ZXJlZABJbnZhbGlkIG1ldGhvZCBlbmNvdW50ZXJlZABVbmV4cGVjdGVkIGNoYXIgaW4gdXJsIHNjaGVtYQBSZXF1ZXN0IGhhcyBpbnZhbGlkIGBUcmFuc2Zlci1FbmNvZGluZ2AAU1dJVENIX1BST1hZAFVTRV9QUk9YWQBNS0FDVElWSVRZAFVOUFJPQ0VTU0FCTEVfRU5USVRZAENPUFkATU9WRURfUEVSTUFORU5UTFkAVE9PX0VBUkxZAE5PVElGWQBGQUlMRURfREVQRU5ERU5DWQBCQURfR0FURVdBWQBQTEFZAFBVVABDSEVDS09VVABHQVRFV0FZX1RJTUVPVVQAUkVRVUVTVF9USU1FT1VUAE5FVFdPUktfQ09OTkVDVF9USU1FT1VUAENPTk5FQ1RJT05fVElNRU9VVABMT0dJTl9USU1FT1VUAE5FVFdPUktfUkVBRF9USU1FT1VUAFBPU1QATUlTRElSRUNURURfUkVRVUVTVABDTElFTlRfQ0xPU0VEX1JFUVVFU1QAQ0xJRU5UX0NMT1NFRF9MT0FEX0JBTEFOQ0VEX1JFUVVFU1QAQkFEX1JFUVVFU1QASFRUUF9SRVFVRVNUX1NFTlRfVE9fSFRUUFNfUE9SVABSRVBPUlQASU1fQV9URUFQT1QAUkVTRVRfQ09OVEVOVABOT19DT05URU5UAFBBUlRJQUxfQ09OVEVOVABIUEVfSU5WQUxJRF9DT05TVEFOVABIUEVfQ0JfUkVTRVQAR0VUAEhQRV9TVFJJQ1QAQ09ORkxJQ1QAVEVNUE9SQVJZX1JFRElSRUNUAFBFUk1BTkVOVF9SRURJUkVDVABDT05ORUNUAE1VTFRJX1NUQVRVUwBIUEVfSU5WQUxJRF9TVEFUVVMAVE9PX01BTllfUkVRVUVTVFMARUFSTFlfSElOVFMAVU5BVkFJTEFCTEVfRk9SX0xFR0FMX1JFQVNPTlMAT1BUSU9OUwBTV0lUQ0hJTkdfUFJPVE9DT0xTAFZBUklBTlRfQUxTT19ORUdPVElBVEVTAE1VTFRJUExFX0NIT0lDRVMASU5URVJOQUxfU0VSVkVSX0VSUk9SAFdFQl9TRVJWRVJfVU5LTk9XTl9FUlJPUgBSQUlMR1VOX0VSUk9SAElERU5USVRZX1BST1ZJREVSX0FVVEhFTlRJQ0FUSU9OX0VSUk9SAFNTTF9DRVJUSUZJQ0FURV9FUlJPUgBJTlZBTElEX1hfRk9SV0FSREVEX0ZPUgBTRVRfUEFSQU1FVEVSAEdFVF9QQVJBTUVURVIASFBFX1VTRVIAU0VFX09USEVSAEhQRV9DQl9DSFVOS19IRUFERVIATUtDQUxFTkRBUgBTRVRVUABXRUJfU0VSVkVSX0lTX0RPV04AVEVBUkRPV04ASFBFX0NMT1NFRF9DT05ORUNUSU9OAEhFVVJJU1RJQ19FWFBJUkFUSU9OAERJU0NPTk5FQ1RFRF9PUEVSQVRJT04ATk9OX0FVVEhPUklUQVRJVkVfSU5GT1JNQVRJT04ASFBFX0lOVkFMSURfVkVSU0lPTgBIUEVfQ0JfTUVTU0FHRV9CRUdJTgBTSVRFX0lTX0ZST1pFTgBIUEVfSU5WQUxJRF9IRUFERVJfVE9LRU4ASU5WQUxJRF9UT0tFTgBGT1JCSURERU4ARU5IQU5DRV9ZT1VSX0NBTE0ASFBFX0lOVkFMSURfVVJMAEJMT0NLRURfQllfUEFSRU5UQUxfQ09OVFJPTABNS0NPTABBQ0wASFBFX0lOVEVSTkFMAFJFUVVFU1RfSEVBREVSX0ZJRUxEU19UT09fTEFSR0VfVU5PRkZJQ0lBTABIUEVfT0sAVU5MSU5LAFVOTE9DSwBQUkkAUkVUUllfV0lUSABIUEVfSU5WQUxJRF9DT05URU5UX0xFTkdUSABIUEVfVU5FWFBFQ1RFRF9DT05URU5UX0xFTkdUSABGTFVTSABQUk9QUEFUQ0gATS1TRUFSQ0gAVVJJX1RPT19MT05HAFBST0NFU1NJTkcATUlTQ0VMTEFORU9VU19QRVJTSVNURU5UX1dBUk5JTkcATUlTQ0VMTEFORU9VU19XQVJOSU5HAEhQRV9JTlZBTElEX1RSQU5TRkVSX0VOQ09ESU5HAEV4cGVjdGVkIENSTEYASFBFX0lOVkFMSURfQ0hVTktfU0laRQBNT1ZFAENPTlRJTlVFAEhQRV9DQl9TVEFUVVNfQ09NUExFVEUASFBFX0NCX0hFQURFUlNfQ09NUExFVEUASFBFX0NCX1ZFUlNJT05fQ09NUExFVEUASFBFX0NCX1VSTF9DT01QTEVURQBIUEVfQ0JfQ0hVTktfQ09NUExFVEUASFBFX0NCX0hFQURFUl9WQUxVRV9DT01QTEVURQBIUEVfQ0JfQ0hVTktfRVhURU5TSU9OX1ZBTFVFX0NPTVBMRVRFAEhQRV9DQl9DSFVOS19FWFRFTlNJT05fTkFNRV9DT01QTEVURQBIUEVfQ0JfTUVTU0FHRV9DT01QTEVURQBIUEVfQ0JfTUVUSE9EX0NPTVBMRVRFAEhQRV9DQl9IRUFERVJfRklFTERfQ09NUExFVEUAREVMRVRFAEhQRV9JTlZBTElEX0VPRl9TVEFURQBJTlZBTElEX1NTTF9DRVJUSUZJQ0FURQBQQVVTRQBOT19SRVNQT05TRQBVTlNVUFBPUlRFRF9NRURJQV9UWVBFAEdPTkUATk9UX0FDQ0VQVEFCTEUAU0VSVklDRV9VTkFWQUlMQUJMRQBSQU5HRV9OT1RfU0FUSVNGSUFCTEUAT1JJR0lOX0lTX1VOUkVBQ0hBQkxFAFJFU1BPTlNFX0lTX1NUQUxFAFBVUkdFAE1FUkdFAFJFUVVFU1RfSEVBREVSX0ZJRUxEU19UT09fTEFSR0UAUkVRVUVTVF9IRUFERVJfVE9PX0xBUkdFAFBBWUxPQURfVE9PX0xBUkdFAElOU1VGRklDSUVOVF9TVE9SQUdFAEhQRV9QQVVTRURfVVBHUkFERQBIUEVfUEFVU0VEX0gyX1VQR1JBREUAU09VUkNFAEFOTk9VTkNFAFRSQUNFAEhQRV9VTkVYUEVDVEVEX1NQQUNFAERFU0NSSUJFAFVOU1VCU0NSSUJFAFJFQ09SRABIUEVfSU5WQUxJRF9NRVRIT0QATk9UX0ZPVU5EAFBST1BGSU5EAFVOQklORABSRUJJTkQAVU5BVVRIT1JJWkVEAE1FVEhPRF9OT1RfQUxMT1dFRABIVFRQX1ZFUlNJT05fTk9UX1NVUFBPUlRFRABBTFJFQURZX1JFUE9SVEVEAEFDQ0VQVEVEAE5PVF9JTVBMRU1FTlRFRABMT09QX0RFVEVDVEVEAEhQRV9DUl9FWFBFQ1RFRABIUEVfTEZfRVhQRUNURUQAQ1JFQVRFRABJTV9VU0VEAEhQRV9QQVVTRUQAVElNRU9VVF9PQ0NVUkVEAFBBWU1FTlRfUkVRVUlSRUQAUFJFQ09ORElUSU9OX1JFUVVJUkVEAFBST1hZX0FVVEhFTlRJQ0FUSU9OX1JFUVVJUkVEAE5FVFdPUktfQVVUSEVOVElDQVRJT05fUkVRVUlSRUQATEVOR1RIX1JFUVVJUkVEAFNTTF9DRVJUSUZJQ0FURV9SRVFVSVJFRABVUEdSQURFX1JFUVVJUkVEAFBBR0VfRVhQSVJFRABQUkVDT05ESVRJT05fRkFJTEVEAEVYUEVDVEFUSU9OX0ZBSUxFRABSRVZBTElEQVRJT05fRkFJTEVEAFNTTF9IQU5EU0hBS0VfRkFJTEVEAExPQ0tFRABUUkFOU0ZPUk1BVElPTl9BUFBMSUVEAE5PVF9NT0RJRklFRABOT1RfRVhURU5ERUQAQkFORFdJRFRIX0xJTUlUX0VYQ0VFREVEAFNJVEVfSVNfT1ZFUkxPQURFRABIRUFEAEV4cGVjdGVkIEhUVFAvAABeEwAAJhMAADAQAADwFwAAnRMAABUSAAA5FwAA8BIAAAoQAAB1EgAArRIAAIITAABPFAAAfxAAAKAVAAAjFAAAiRIAAIsUAABNFQAA1BEAAM8UAAAQGAAAyRYAANwWAADBEQAA4BcAALsUAAB0FAAAfBUAAOUUAAAIFwAAHxAAAGUVAACjFAAAKBUAAAIVAACZFQAALBAAAIsZAABPDwAA1A4AAGoQAADOEAAAAhcAAIkOAABuEwAAHBMAAGYUAABWFwAAwRMAAM0TAABsEwAAaBcAAGYXAABfFwAAIhMAAM4PAABpDgAA2A4AAGMWAADLEwAAqg4AACgXAAAmFwAAxRMAAF0WAADoEQAAZxMAAGUTAADyFgAAcxMAAB0XAAD5FgAA8xEAAM8OAADOFQAADBIAALMRAAClEQAAYRAAADIXAAC7EwAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAgMCAgICAgAAAgIAAgIAAgICAgICAgICAgAEAAAAAAACAgICAgICAgICAgICAgICAgICAgICAgICAgAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAIAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAIAAgICAgIAAAICAAICAAICAgICAgICAgIAAwAEAAAAAgICAgICAgICAgICAgICAgICAgICAgICAgIAAAACAgICAgICAgICAgICAgICAgICAgICAgICAgICAgACAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABsb3NlZWVwLWFsaXZlAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQFjaHVua2VkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQABAQEBAQAAAQEAAQEAAQEBAQEBAQEBAQAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGVjdGlvbmVudC1sZW5ndGhvbnJveHktY29ubmVjdGlvbgAAAAAAAAAAAAAAAAAAAHJhbnNmZXItZW5jb2RpbmdwZ3JhZGUNCg0KDQpTTQ0KDQpUVFAvQ0UvVFNQLwAAAAAAAAAAAAAAAAECAAEDAAAAAAAAAAAAAAAAAAAAAAAABAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAABAgABAwAAAAAAAAAAAAAAAAAAAAAAAAQBAQUBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAQAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAABAAACAAAAAAAAAAAAAAAAAAAAAAAAAwQAAAQEBAQEBAQEBAQEBQQEBAQEBAQEBAQEBAAEAAYHBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQABAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAQAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAAAAAAAAAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAEAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAgAAAAACAAAAAAAAAAAAAAAAAAAAAAADAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwAAAAAAAAMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAE5PVU5DRUVDS09VVE5FQ1RFVEVDUklCRUxVU0hFVEVBRFNFQVJDSFJHRUNUSVZJVFlMRU5EQVJWRU9USUZZUFRJT05TQ0hTRUFZU1RBVENIR0VPUkRJUkVDVE9SVFJDSFBBUkFNRVRFUlVSQ0VCU0NSSUJFQVJET1dOQUNFSU5ETktDS1VCU0NSSUJFSFRUUC9BRFRQLw=='\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.enumToMap = void 0;\nfunction enumToMap(obj) {\n const res = {};\n Object.keys(obj).forEach((key) => {\n const value = obj[key];\n if (typeof value === 'number') {\n res[key] = value;\n }\n });\n return res;\n}\nexports.enumToMap = enumToMap;\n//# sourceMappingURL=utils.js.map","'use strict'\n\nconst { kClients } = require('../core/symbols')\nconst Agent = require('../agent')\nconst {\n kAgent,\n kMockAgentSet,\n kMockAgentGet,\n kDispatches,\n kIsMockActive,\n kNetConnect,\n kGetNetConnect,\n kOptions,\n kFactory\n} = require('./mock-symbols')\nconst MockClient = require('./mock-client')\nconst MockPool = require('./mock-pool')\nconst { matchValue, buildMockOptions } = require('./mock-utils')\nconst { InvalidArgumentError, UndiciError } = require('../core/errors')\nconst Dispatcher = require('../dispatcher')\nconst Pluralizer = require('./pluralizer')\nconst PendingInterceptorsFormatter = require('./pending-interceptors-formatter')\n\nclass FakeWeakRef {\n constructor (value) {\n this.value = value\n }\n\n deref () {\n return this.value\n }\n}\n\nclass MockAgent extends Dispatcher {\n constructor (opts) {\n super(opts)\n\n this[kNetConnect] = true\n this[kIsMockActive] = true\n\n // Instantiate Agent and encapsulate\n if ((opts && opts.agent && typeof opts.agent.dispatch !== 'function')) {\n throw new InvalidArgumentError('Argument opts.agent must implement Agent')\n }\n const agent = opts && opts.agent ? opts.agent : new Agent(opts)\n this[kAgent] = agent\n\n this[kClients] = agent[kClients]\n this[kOptions] = buildMockOptions(opts)\n }\n\n get (origin) {\n let dispatcher = this[kMockAgentGet](origin)\n\n if (!dispatcher) {\n dispatcher = this[kFactory](origin)\n this[kMockAgentSet](origin, dispatcher)\n }\n return dispatcher\n }\n\n dispatch (opts, handler) {\n // Call MockAgent.get to perform additional setup before dispatching as normal\n this.get(opts.origin)\n return this[kAgent].dispatch(opts, handler)\n }\n\n async close () {\n await this[kAgent].close()\n this[kClients].clear()\n }\n\n deactivate () {\n this[kIsMockActive] = false\n }\n\n activate () {\n this[kIsMockActive] = true\n }\n\n enableNetConnect (matcher) {\n if (typeof matcher === 'string' || typeof matcher === 'function' || matcher instanceof RegExp) {\n if (Array.isArray(this[kNetConnect])) {\n this[kNetConnect].push(matcher)\n } else {\n this[kNetConnect] = [matcher]\n }\n } else if (typeof matcher === 'undefined') {\n this[kNetConnect] = true\n } else {\n throw new InvalidArgumentError('Unsupported matcher. Must be one of String|Function|RegExp.')\n }\n }\n\n disableNetConnect () {\n this[kNetConnect] = false\n }\n\n // This is required to bypass issues caused by using global symbols - see:\n // https://github.com/nodejs/undici/issues/1447\n get isMockActive () {\n return this[kIsMockActive]\n }\n\n [kMockAgentSet] (origin, dispatcher) {\n this[kClients].set(origin, new FakeWeakRef(dispatcher))\n }\n\n [kFactory] (origin) {\n const mockOptions = Object.assign({ agent: this }, this[kOptions])\n return this[kOptions] && this[kOptions].connections === 1\n ? new MockClient(origin, mockOptions)\n : new MockPool(origin, mockOptions)\n }\n\n [kMockAgentGet] (origin) {\n // First check if we can immediately find it\n const ref = this[kClients].get(origin)\n if (ref) {\n return ref.deref()\n }\n\n // If the origin is not a string create a dummy parent pool and return to user\n if (typeof origin !== 'string') {\n const dispatcher = this[kFactory]('http://localhost:9999')\n this[kMockAgentSet](origin, dispatcher)\n return dispatcher\n }\n\n // If we match, create a pool and assign the same dispatches\n for (const [keyMatcher, nonExplicitRef] of Array.from(this[kClients])) {\n const nonExplicitDispatcher = nonExplicitRef.deref()\n if (nonExplicitDispatcher && typeof keyMatcher !== 'string' && matchValue(keyMatcher, origin)) {\n const dispatcher = this[kFactory](origin)\n this[kMockAgentSet](origin, dispatcher)\n dispatcher[kDispatches] = nonExplicitDispatcher[kDispatches]\n return dispatcher\n }\n }\n }\n\n [kGetNetConnect] () {\n return this[kNetConnect]\n }\n\n pendingInterceptors () {\n const mockAgentClients = this[kClients]\n\n return Array.from(mockAgentClients.entries())\n .flatMap(([origin, scope]) => scope.deref()[kDispatches].map(dispatch => ({ ...dispatch, origin })))\n .filter(({ pending }) => pending)\n }\n\n assertNoPendingInterceptors ({ pendingInterceptorsFormatter = new PendingInterceptorsFormatter() } = {}) {\n const pending = this.pendingInterceptors()\n\n if (pending.length === 0) {\n return\n }\n\n const pluralizer = new Pluralizer('interceptor', 'interceptors').pluralize(pending.length)\n\n throw new UndiciError(`\n${pluralizer.count} ${pluralizer.noun} ${pluralizer.is} pending:\n\n${pendingInterceptorsFormatter.format(pending)}\n`.trim())\n }\n}\n\nmodule.exports = MockAgent\n","'use strict'\n\nconst { promisify } = require('util')\nconst Client = require('../client')\nconst { buildMockDispatch } = require('./mock-utils')\nconst {\n kDispatches,\n kMockAgent,\n kClose,\n kOriginalClose,\n kOrigin,\n kOriginalDispatch,\n kConnected\n} = require('./mock-symbols')\nconst { MockInterceptor } = require('./mock-interceptor')\nconst Symbols = require('../core/symbols')\nconst { InvalidArgumentError } = require('../core/errors')\n\n/**\n * MockClient provides an API that extends the Client to influence the mockDispatches.\n */\nclass MockClient extends Client {\n constructor (origin, opts) {\n super(origin, opts)\n\n if (!opts || !opts.agent || typeof opts.agent.dispatch !== 'function') {\n throw new InvalidArgumentError('Argument opts.agent must implement Agent')\n }\n\n this[kMockAgent] = opts.agent\n this[kOrigin] = origin\n this[kDispatches] = []\n this[kConnected] = 1\n this[kOriginalDispatch] = this.dispatch\n this[kOriginalClose] = this.close.bind(this)\n\n this.dispatch = buildMockDispatch.call(this)\n this.close = this[kClose]\n }\n\n get [Symbols.kConnected] () {\n return this[kConnected]\n }\n\n /**\n * Sets up the base interceptor for mocking replies from undici.\n */\n intercept (opts) {\n return new MockInterceptor(opts, this[kDispatches])\n }\n\n async [kClose] () {\n await promisify(this[kOriginalClose])()\n this[kConnected] = 0\n this[kMockAgent][Symbols.kClients].delete(this[kOrigin])\n }\n}\n\nmodule.exports = MockClient\n","'use strict'\n\nconst { UndiciError } = require('../core/errors')\n\nclass MockNotMatchedError extends UndiciError {\n constructor (message) {\n super(message)\n Error.captureStackTrace(this, MockNotMatchedError)\n this.name = 'MockNotMatchedError'\n this.message = message || 'The request does not match any registered mock dispatches'\n this.code = 'UND_MOCK_ERR_MOCK_NOT_MATCHED'\n }\n}\n\nmodule.exports = {\n MockNotMatchedError\n}\n","'use strict'\n\nconst { getResponseData, buildKey, addMockDispatch } = require('./mock-utils')\nconst {\n kDispatches,\n kDispatchKey,\n kDefaultHeaders,\n kDefaultTrailers,\n kContentLength,\n kMockDispatch\n} = require('./mock-symbols')\nconst { InvalidArgumentError } = require('../core/errors')\nconst { buildURL } = require('../core/util')\n\n/**\n * Defines the scope API for an interceptor reply\n */\nclass MockScope {\n constructor (mockDispatch) {\n this[kMockDispatch] = mockDispatch\n }\n\n /**\n * Delay a reply by a set amount in ms.\n */\n delay (waitInMs) {\n if (typeof waitInMs !== 'number' || !Number.isInteger(waitInMs) || waitInMs <= 0) {\n throw new InvalidArgumentError('waitInMs must be a valid integer > 0')\n }\n\n this[kMockDispatch].delay = waitInMs\n return this\n }\n\n /**\n * For a defined reply, never mark as consumed.\n */\n persist () {\n this[kMockDispatch].persist = true\n return this\n }\n\n /**\n * Allow one to define a reply for a set amount of matching requests.\n */\n times (repeatTimes) {\n if (typeof repeatTimes !== 'number' || !Number.isInteger(repeatTimes) || repeatTimes <= 0) {\n throw new InvalidArgumentError('repeatTimes must be a valid integer > 0')\n }\n\n this[kMockDispatch].times = repeatTimes\n return this\n }\n}\n\n/**\n * Defines an interceptor for a Mock\n */\nclass MockInterceptor {\n constructor (opts, mockDispatches) {\n if (typeof opts !== 'object') {\n throw new InvalidArgumentError('opts must be an object')\n }\n if (typeof opts.path === 'undefined') {\n throw new InvalidArgumentError('opts.path must be defined')\n }\n if (typeof opts.method === 'undefined') {\n opts.method = 'GET'\n }\n // See https://github.com/nodejs/undici/issues/1245\n // As per RFC 3986, clients are not supposed to send URI\n // fragments to servers when they retrieve a document,\n if (typeof opts.path === 'string') {\n if (opts.query) {\n opts.path = buildURL(opts.path, opts.query)\n } else {\n // Matches https://github.com/nodejs/undici/blob/main/lib/fetch/index.js#L1811\n const parsedURL = new URL(opts.path, 'data://')\n opts.path = parsedURL.pathname + parsedURL.search\n }\n }\n if (typeof opts.method === 'string') {\n opts.method = opts.method.toUpperCase()\n }\n\n this[kDispatchKey] = buildKey(opts)\n this[kDispatches] = mockDispatches\n this[kDefaultHeaders] = {}\n this[kDefaultTrailers] = {}\n this[kContentLength] = false\n }\n\n createMockScopeDispatchData (statusCode, data, responseOptions = {}) {\n const responseData = getResponseData(data)\n const contentLength = this[kContentLength] ? { 'content-length': responseData.length } : {}\n const headers = { ...this[kDefaultHeaders], ...contentLength, ...responseOptions.headers }\n const trailers = { ...this[kDefaultTrailers], ...responseOptions.trailers }\n\n return { statusCode, data, headers, trailers }\n }\n\n validateReplyParameters (statusCode, data, responseOptions) {\n if (typeof statusCode === 'undefined') {\n throw new InvalidArgumentError('statusCode must be defined')\n }\n if (typeof data === 'undefined') {\n throw new InvalidArgumentError('data must be defined')\n }\n if (typeof responseOptions !== 'object') {\n throw new InvalidArgumentError('responseOptions must be an object')\n }\n }\n\n /**\n * Mock an undici request with a defined reply.\n */\n reply (replyData) {\n // Values of reply aren't available right now as they\n // can only be available when the reply callback is invoked.\n if (typeof replyData === 'function') {\n // We'll first wrap the provided callback in another function,\n // this function will properly resolve the data from the callback\n // when invoked.\n const wrappedDefaultsCallback = (opts) => {\n // Our reply options callback contains the parameter for statusCode, data and options.\n const resolvedData = replyData(opts)\n\n // Check if it is in the right format\n if (typeof resolvedData !== 'object') {\n throw new InvalidArgumentError('reply options callback must return an object')\n }\n\n const { statusCode, data = '', responseOptions = {} } = resolvedData\n this.validateReplyParameters(statusCode, data, responseOptions)\n // Since the values can be obtained immediately we return them\n // from this higher order function that will be resolved later.\n return {\n ...this.createMockScopeDispatchData(statusCode, data, responseOptions)\n }\n }\n\n // Add usual dispatch data, but this time set the data parameter to function that will eventually provide data.\n const newMockDispatch = addMockDispatch(this[kDispatches], this[kDispatchKey], wrappedDefaultsCallback)\n return new MockScope(newMockDispatch)\n }\n\n // We can have either one or three parameters, if we get here,\n // we should have 1-3 parameters. So we spread the arguments of\n // this function to obtain the parameters, since replyData will always\n // just be the statusCode.\n const [statusCode, data = '', responseOptions = {}] = [...arguments]\n this.validateReplyParameters(statusCode, data, responseOptions)\n\n // Send in-already provided data like usual\n const dispatchData = this.createMockScopeDispatchData(statusCode, data, responseOptions)\n const newMockDispatch = addMockDispatch(this[kDispatches], this[kDispatchKey], dispatchData)\n return new MockScope(newMockDispatch)\n }\n\n /**\n * Mock an undici request with a defined error.\n */\n replyWithError (error) {\n if (typeof error === 'undefined') {\n throw new InvalidArgumentError('error must be defined')\n }\n\n const newMockDispatch = addMockDispatch(this[kDispatches], this[kDispatchKey], { error })\n return new MockScope(newMockDispatch)\n }\n\n /**\n * Set default reply headers on the interceptor for subsequent replies\n */\n defaultReplyHeaders (headers) {\n if (typeof headers === 'undefined') {\n throw new InvalidArgumentError('headers must be defined')\n }\n\n this[kDefaultHeaders] = headers\n return this\n }\n\n /**\n * Set default reply trailers on the interceptor for subsequent replies\n */\n defaultReplyTrailers (trailers) {\n if (typeof trailers === 'undefined') {\n throw new InvalidArgumentError('trailers must be defined')\n }\n\n this[kDefaultTrailers] = trailers\n return this\n }\n\n /**\n * Set reply content length header for replies on the interceptor\n */\n replyContentLength () {\n this[kContentLength] = true\n return this\n }\n}\n\nmodule.exports.MockInterceptor = MockInterceptor\nmodule.exports.MockScope = MockScope\n","'use strict'\n\nconst { promisify } = require('util')\nconst Pool = require('../pool')\nconst { buildMockDispatch } = require('./mock-utils')\nconst {\n kDispatches,\n kMockAgent,\n kClose,\n kOriginalClose,\n kOrigin,\n kOriginalDispatch,\n kConnected\n} = require('./mock-symbols')\nconst { MockInterceptor } = require('./mock-interceptor')\nconst Symbols = require('../core/symbols')\nconst { InvalidArgumentError } = require('../core/errors')\n\n/**\n * MockPool provides an API that extends the Pool to influence the mockDispatches.\n */\nclass MockPool extends Pool {\n constructor (origin, opts) {\n super(origin, opts)\n\n if (!opts || !opts.agent || typeof opts.agent.dispatch !== 'function') {\n throw new InvalidArgumentError('Argument opts.agent must implement Agent')\n }\n\n this[kMockAgent] = opts.agent\n this[kOrigin] = origin\n this[kDispatches] = []\n this[kConnected] = 1\n this[kOriginalDispatch] = this.dispatch\n this[kOriginalClose] = this.close.bind(this)\n\n this.dispatch = buildMockDispatch.call(this)\n this.close = this[kClose]\n }\n\n get [Symbols.kConnected] () {\n return this[kConnected]\n }\n\n /**\n * Sets up the base interceptor for mocking replies from undici.\n */\n intercept (opts) {\n return new MockInterceptor(opts, this[kDispatches])\n }\n\n async [kClose] () {\n await promisify(this[kOriginalClose])()\n this[kConnected] = 0\n this[kMockAgent][Symbols.kClients].delete(this[kOrigin])\n }\n}\n\nmodule.exports = MockPool\n","'use strict'\n\nmodule.exports = {\n kAgent: Symbol('agent'),\n kOptions: Symbol('options'),\n kFactory: Symbol('factory'),\n kDispatches: Symbol('dispatches'),\n kDispatchKey: Symbol('dispatch key'),\n kDefaultHeaders: Symbol('default headers'),\n kDefaultTrailers: Symbol('default trailers'),\n kContentLength: Symbol('content length'),\n kMockAgent: Symbol('mock agent'),\n kMockAgentSet: Symbol('mock agent set'),\n kMockAgentGet: Symbol('mock agent get'),\n kMockDispatch: Symbol('mock dispatch'),\n kClose: Symbol('close'),\n kOriginalClose: Symbol('original agent close'),\n kOrigin: Symbol('origin'),\n kIsMockActive: Symbol('is mock active'),\n kNetConnect: Symbol('net connect'),\n kGetNetConnect: Symbol('get net connect'),\n kConnected: Symbol('connected')\n}\n","'use strict'\n\nconst { MockNotMatchedError } = require('./mock-errors')\nconst {\n kDispatches,\n kMockAgent,\n kOriginalDispatch,\n kOrigin,\n kGetNetConnect\n} = require('./mock-symbols')\nconst { buildURL, nop } = require('../core/util')\nconst { STATUS_CODES } = require('http')\nconst {\n types: {\n isPromise\n }\n} = require('util')\n\nfunction matchValue (match, value) {\n if (typeof match === 'string') {\n return match === value\n }\n if (match instanceof RegExp) {\n return match.test(value)\n }\n if (typeof match === 'function') {\n return match(value) === true\n }\n return false\n}\n\nfunction lowerCaseEntries (headers) {\n return Object.fromEntries(\n Object.entries(headers).map(([headerName, headerValue]) => {\n return [headerName.toLocaleLowerCase(), headerValue]\n })\n )\n}\n\n/**\n * @param {import('../../index').Headers|string[]|Record} headers\n * @param {string} key\n */\nfunction getHeaderByName (headers, key) {\n if (Array.isArray(headers)) {\n for (let i = 0; i < headers.length; i += 2) {\n if (headers[i].toLocaleLowerCase() === key.toLocaleLowerCase()) {\n return headers[i + 1]\n }\n }\n\n return undefined\n } else if (typeof headers.get === 'function') {\n return headers.get(key)\n } else {\n return lowerCaseEntries(headers)[key.toLocaleLowerCase()]\n }\n}\n\n/** @param {string[]} headers */\nfunction buildHeadersFromArray (headers) { // fetch HeadersList\n const clone = headers.slice()\n const entries = []\n for (let index = 0; index < clone.length; index += 2) {\n entries.push([clone[index], clone[index + 1]])\n }\n return Object.fromEntries(entries)\n}\n\nfunction matchHeaders (mockDispatch, headers) {\n if (typeof mockDispatch.headers === 'function') {\n if (Array.isArray(headers)) { // fetch HeadersList\n headers = buildHeadersFromArray(headers)\n }\n return mockDispatch.headers(headers ? lowerCaseEntries(headers) : {})\n }\n if (typeof mockDispatch.headers === 'undefined') {\n return true\n }\n if (typeof headers !== 'object' || typeof mockDispatch.headers !== 'object') {\n return false\n }\n\n for (const [matchHeaderName, matchHeaderValue] of Object.entries(mockDispatch.headers)) {\n const headerValue = getHeaderByName(headers, matchHeaderName)\n\n if (!matchValue(matchHeaderValue, headerValue)) {\n return false\n }\n }\n return true\n}\n\nfunction safeUrl (path) {\n if (typeof path !== 'string') {\n return path\n }\n\n const pathSegments = path.split('?')\n\n if (pathSegments.length !== 2) {\n return path\n }\n\n const qp = new URLSearchParams(pathSegments.pop())\n qp.sort()\n return [...pathSegments, qp.toString()].join('?')\n}\n\nfunction matchKey (mockDispatch, { path, method, body, headers }) {\n const pathMatch = matchValue(mockDispatch.path, path)\n const methodMatch = matchValue(mockDispatch.method, method)\n const bodyMatch = typeof mockDispatch.body !== 'undefined' ? matchValue(mockDispatch.body, body) : true\n const headersMatch = matchHeaders(mockDispatch, headers)\n return pathMatch && methodMatch && bodyMatch && headersMatch\n}\n\nfunction getResponseData (data) {\n if (Buffer.isBuffer(data)) {\n return data\n } else if (typeof data === 'object') {\n return JSON.stringify(data)\n } else {\n return data.toString()\n }\n}\n\nfunction getMockDispatch (mockDispatches, key) {\n const basePath = key.query ? buildURL(key.path, key.query) : key.path\n const resolvedPath = typeof basePath === 'string' ? safeUrl(basePath) : basePath\n\n // Match path\n let matchedMockDispatches = mockDispatches.filter(({ consumed }) => !consumed).filter(({ path }) => matchValue(safeUrl(path), resolvedPath))\n if (matchedMockDispatches.length === 0) {\n throw new MockNotMatchedError(`Mock dispatch not matched for path '${resolvedPath}'`)\n }\n\n // Match method\n matchedMockDispatches = matchedMockDispatches.filter(({ method }) => matchValue(method, key.method))\n if (matchedMockDispatches.length === 0) {\n throw new MockNotMatchedError(`Mock dispatch not matched for method '${key.method}'`)\n }\n\n // Match body\n matchedMockDispatches = matchedMockDispatches.filter(({ body }) => typeof body !== 'undefined' ? matchValue(body, key.body) : true)\n if (matchedMockDispatches.length === 0) {\n throw new MockNotMatchedError(`Mock dispatch not matched for body '${key.body}'`)\n }\n\n // Match headers\n matchedMockDispatches = matchedMockDispatches.filter((mockDispatch) => matchHeaders(mockDispatch, key.headers))\n if (matchedMockDispatches.length === 0) {\n throw new MockNotMatchedError(`Mock dispatch not matched for headers '${typeof key.headers === 'object' ? JSON.stringify(key.headers) : key.headers}'`)\n }\n\n return matchedMockDispatches[0]\n}\n\nfunction addMockDispatch (mockDispatches, key, data) {\n const baseData = { timesInvoked: 0, times: 1, persist: false, consumed: false }\n const replyData = typeof data === 'function' ? { callback: data } : { ...data }\n const newMockDispatch = { ...baseData, ...key, pending: true, data: { error: null, ...replyData } }\n mockDispatches.push(newMockDispatch)\n return newMockDispatch\n}\n\nfunction deleteMockDispatch (mockDispatches, key) {\n const index = mockDispatches.findIndex(dispatch => {\n if (!dispatch.consumed) {\n return false\n }\n return matchKey(dispatch, key)\n })\n if (index !== -1) {\n mockDispatches.splice(index, 1)\n }\n}\n\nfunction buildKey (opts) {\n const { path, method, body, headers, query } = opts\n return {\n path,\n method,\n body,\n headers,\n query\n }\n}\n\nfunction generateKeyValues (data) {\n return Object.entries(data).reduce((keyValuePairs, [key, value]) => [\n ...keyValuePairs,\n Buffer.from(`${key}`),\n Array.isArray(value) ? value.map(x => Buffer.from(`${x}`)) : Buffer.from(`${value}`)\n ], [])\n}\n\n/**\n * @see https://developer.mozilla.org/en-US/docs/Web/HTTP/Status\n * @param {number} statusCode\n */\nfunction getStatusText (statusCode) {\n return STATUS_CODES[statusCode] || 'unknown'\n}\n\nasync function getResponse (body) {\n const buffers = []\n for await (const data of body) {\n buffers.push(data)\n }\n return Buffer.concat(buffers).toString('utf8')\n}\n\n/**\n * Mock dispatch function used to simulate undici dispatches\n */\nfunction mockDispatch (opts, handler) {\n // Get mock dispatch from built key\n const key = buildKey(opts)\n const mockDispatch = getMockDispatch(this[kDispatches], key)\n\n mockDispatch.timesInvoked++\n\n // Here's where we resolve a callback if a callback is present for the dispatch data.\n if (mockDispatch.data.callback) {\n mockDispatch.data = { ...mockDispatch.data, ...mockDispatch.data.callback(opts) }\n }\n\n // Parse mockDispatch data\n const { data: { statusCode, data, headers, trailers, error }, delay, persist } = mockDispatch\n const { timesInvoked, times } = mockDispatch\n\n // If it's used up and not persistent, mark as consumed\n mockDispatch.consumed = !persist && timesInvoked >= times\n mockDispatch.pending = timesInvoked < times\n\n // If specified, trigger dispatch error\n if (error !== null) {\n deleteMockDispatch(this[kDispatches], key)\n handler.onError(error)\n return true\n }\n\n // Handle the request with a delay if necessary\n if (typeof delay === 'number' && delay > 0) {\n setTimeout(() => {\n handleReply(this[kDispatches])\n }, delay)\n } else {\n handleReply(this[kDispatches])\n }\n\n function handleReply (mockDispatches, _data = data) {\n // fetch's HeadersList is a 1D string array\n const optsHeaders = Array.isArray(opts.headers)\n ? buildHeadersFromArray(opts.headers)\n : opts.headers\n const body = typeof _data === 'function'\n ? _data({ ...opts, headers: optsHeaders })\n : _data\n\n // util.types.isPromise is likely needed for jest.\n if (isPromise(body)) {\n // If handleReply is asynchronous, throwing an error\n // in the callback will reject the promise, rather than\n // synchronously throw the error, which breaks some tests.\n // Rather, we wait for the callback to resolve if it is a\n // promise, and then re-run handleReply with the new body.\n body.then((newData) => handleReply(mockDispatches, newData))\n return\n }\n\n const responseData = getResponseData(body)\n const responseHeaders = generateKeyValues(headers)\n const responseTrailers = generateKeyValues(trailers)\n\n handler.abort = nop\n handler.onHeaders(statusCode, responseHeaders, resume, getStatusText(statusCode))\n handler.onData(Buffer.from(responseData))\n handler.onComplete(responseTrailers)\n deleteMockDispatch(mockDispatches, key)\n }\n\n function resume () {}\n\n return true\n}\n\nfunction buildMockDispatch () {\n const agent = this[kMockAgent]\n const origin = this[kOrigin]\n const originalDispatch = this[kOriginalDispatch]\n\n return function dispatch (opts, handler) {\n if (agent.isMockActive) {\n try {\n mockDispatch.call(this, opts, handler)\n } catch (error) {\n if (error instanceof MockNotMatchedError) {\n const netConnect = agent[kGetNetConnect]()\n if (netConnect === false) {\n throw new MockNotMatchedError(`${error.message}: subsequent request to origin ${origin} was not allowed (net.connect disabled)`)\n }\n if (checkNetConnect(netConnect, origin)) {\n originalDispatch.call(this, opts, handler)\n } else {\n throw new MockNotMatchedError(`${error.message}: subsequent request to origin ${origin} was not allowed (net.connect is not enabled for this origin)`)\n }\n } else {\n throw error\n }\n }\n } else {\n originalDispatch.call(this, opts, handler)\n }\n }\n}\n\nfunction checkNetConnect (netConnect, origin) {\n const url = new URL(origin)\n if (netConnect === true) {\n return true\n } else if (Array.isArray(netConnect) && netConnect.some((matcher) => matchValue(matcher, url.host))) {\n return true\n }\n return false\n}\n\nfunction buildMockOptions (opts) {\n if (opts) {\n const { agent, ...mockOptions } = opts\n return mockOptions\n }\n}\n\nmodule.exports = {\n getResponseData,\n getMockDispatch,\n addMockDispatch,\n deleteMockDispatch,\n buildKey,\n generateKeyValues,\n matchValue,\n getResponse,\n getStatusText,\n mockDispatch,\n buildMockDispatch,\n checkNetConnect,\n buildMockOptions,\n getHeaderByName\n}\n","'use strict'\n\nconst { Transform } = require('stream')\nconst { Console } = require('console')\n\n/**\n * Gets the output of `console.table(…)` as a string.\n */\nmodule.exports = class PendingInterceptorsFormatter {\n constructor ({ disableColors } = {}) {\n this.transform = new Transform({\n transform (chunk, _enc, cb) {\n cb(null, chunk)\n }\n })\n\n this.logger = new Console({\n stdout: this.transform,\n inspectOptions: {\n colors: !disableColors && !process.env.CI\n }\n })\n }\n\n format (pendingInterceptors) {\n const withPrettyHeaders = pendingInterceptors.map(\n ({ method, path, data: { statusCode }, persist, times, timesInvoked, origin }) => ({\n Method: method,\n Origin: origin,\n Path: path,\n 'Status code': statusCode,\n Persistent: persist ? '✅' : '❌',\n Invocations: timesInvoked,\n Remaining: persist ? Infinity : times - timesInvoked\n }))\n\n this.logger.table(withPrettyHeaders)\n return this.transform.read().toString()\n }\n}\n","'use strict'\n\nconst singulars = {\n pronoun: 'it',\n is: 'is',\n was: 'was',\n this: 'this'\n}\n\nconst plurals = {\n pronoun: 'they',\n is: 'are',\n was: 'were',\n this: 'these'\n}\n\nmodule.exports = class Pluralizer {\n constructor (singular, plural) {\n this.singular = singular\n this.plural = plural\n }\n\n pluralize (count) {\n const one = count === 1\n const keys = one ? singulars : plurals\n const noun = one ? this.singular : this.plural\n return { ...keys, count, noun }\n }\n}\n","/* eslint-disable */\n\n'use strict'\n\n// Extracted from node/lib/internal/fixed_queue.js\n\n// Currently optimal queue size, tested on V8 6.0 - 6.6. Must be power of two.\nconst kSize = 2048;\nconst kMask = kSize - 1;\n\n// The FixedQueue is implemented as a singly-linked list of fixed-size\n// circular buffers. It looks something like this:\n//\n// head tail\n// | |\n// v v\n// +-----------+ <-----\\ +-----------+ <------\\ +-----------+\n// | [null] | \\----- | next | \\------- | next |\n// +-----------+ +-----------+ +-----------+\n// | item | <-- bottom | item | <-- bottom | [empty] |\n// | item | | item | | [empty] |\n// | item | | item | | [empty] |\n// | item | | item | | [empty] |\n// | item | | item | bottom --> | item |\n// | item | | item | | item |\n// | ... | | ... | | ... |\n// | item | | item | | item |\n// | item | | item | | item |\n// | [empty] | <-- top | item | | item |\n// | [empty] | | item | | item |\n// | [empty] | | [empty] | <-- top top --> | [empty] |\n// +-----------+ +-----------+ +-----------+\n//\n// Or, if there is only one circular buffer, it looks something\n// like either of these:\n//\n// head tail head tail\n// | | | |\n// v v v v\n// +-----------+ +-----------+\n// | [null] | | [null] |\n// +-----------+ +-----------+\n// | [empty] | | item |\n// | [empty] | | item |\n// | item | <-- bottom top --> | [empty] |\n// | item | | [empty] |\n// | [empty] | <-- top bottom --> | item |\n// | [empty] | | item |\n// +-----------+ +-----------+\n//\n// Adding a value means moving `top` forward by one, removing means\n// moving `bottom` forward by one. After reaching the end, the queue\n// wraps around.\n//\n// When `top === bottom` the current queue is empty and when\n// `top + 1 === bottom` it's full. This wastes a single space of storage\n// but allows much quicker checks.\n\nclass FixedCircularBuffer {\n constructor() {\n this.bottom = 0;\n this.top = 0;\n this.list = new Array(kSize);\n this.next = null;\n }\n\n isEmpty() {\n return this.top === this.bottom;\n }\n\n isFull() {\n return ((this.top + 1) & kMask) === this.bottom;\n }\n\n push(data) {\n this.list[this.top] = data;\n this.top = (this.top + 1) & kMask;\n }\n\n shift() {\n const nextItem = this.list[this.bottom];\n if (nextItem === undefined)\n return null;\n this.list[this.bottom] = undefined;\n this.bottom = (this.bottom + 1) & kMask;\n return nextItem;\n }\n}\n\nmodule.exports = class FixedQueue {\n constructor() {\n this.head = this.tail = new FixedCircularBuffer();\n }\n\n isEmpty() {\n return this.head.isEmpty();\n }\n\n push(data) {\n if (this.head.isFull()) {\n // Head is full: Creates a new queue, sets the old queue's `.next` to it,\n // and sets it as the new main queue.\n this.head = this.head.next = new FixedCircularBuffer();\n }\n this.head.push(data);\n }\n\n shift() {\n const tail = this.tail;\n const next = tail.shift();\n if (tail.isEmpty() && tail.next !== null) {\n // If there is another queue, it forms the new tail.\n this.tail = tail.next;\n }\n return next;\n }\n};\n","'use strict'\n\nconst DispatcherBase = require('./dispatcher-base')\nconst FixedQueue = require('./node/fixed-queue')\nconst { kConnected, kSize, kRunning, kPending, kQueued, kBusy, kFree, kUrl, kClose, kDestroy, kDispatch } = require('./core/symbols')\nconst PoolStats = require('./pool-stats')\n\nconst kClients = Symbol('clients')\nconst kNeedDrain = Symbol('needDrain')\nconst kQueue = Symbol('queue')\nconst kClosedResolve = Symbol('closed resolve')\nconst kOnDrain = Symbol('onDrain')\nconst kOnConnect = Symbol('onConnect')\nconst kOnDisconnect = Symbol('onDisconnect')\nconst kOnConnectionError = Symbol('onConnectionError')\nconst kGetDispatcher = Symbol('get dispatcher')\nconst kAddClient = Symbol('add client')\nconst kRemoveClient = Symbol('remove client')\nconst kStats = Symbol('stats')\n\nclass PoolBase extends DispatcherBase {\n constructor () {\n super()\n\n this[kQueue] = new FixedQueue()\n this[kClients] = []\n this[kQueued] = 0\n\n const pool = this\n\n this[kOnDrain] = function onDrain (origin, targets) {\n const queue = pool[kQueue]\n\n let needDrain = false\n\n while (!needDrain) {\n const item = queue.shift()\n if (!item) {\n break\n }\n pool[kQueued]--\n needDrain = !this.dispatch(item.opts, item.handler)\n }\n\n this[kNeedDrain] = needDrain\n\n if (!this[kNeedDrain] && pool[kNeedDrain]) {\n pool[kNeedDrain] = false\n pool.emit('drain', origin, [pool, ...targets])\n }\n\n if (pool[kClosedResolve] && queue.isEmpty()) {\n Promise\n .all(pool[kClients].map(c => c.close()))\n .then(pool[kClosedResolve])\n }\n }\n\n this[kOnConnect] = (origin, targets) => {\n pool.emit('connect', origin, [pool, ...targets])\n }\n\n this[kOnDisconnect] = (origin, targets, err) => {\n pool.emit('disconnect', origin, [pool, ...targets], err)\n }\n\n this[kOnConnectionError] = (origin, targets, err) => {\n pool.emit('connectionError', origin, [pool, ...targets], err)\n }\n\n this[kStats] = new PoolStats(this)\n }\n\n get [kBusy] () {\n return this[kNeedDrain]\n }\n\n get [kConnected] () {\n return this[kClients].filter(client => client[kConnected]).length\n }\n\n get [kFree] () {\n return this[kClients].filter(client => client[kConnected] && !client[kNeedDrain]).length\n }\n\n get [kPending] () {\n let ret = this[kQueued]\n for (const { [kPending]: pending } of this[kClients]) {\n ret += pending\n }\n return ret\n }\n\n get [kRunning] () {\n let ret = 0\n for (const { [kRunning]: running } of this[kClients]) {\n ret += running\n }\n return ret\n }\n\n get [kSize] () {\n let ret = this[kQueued]\n for (const { [kSize]: size } of this[kClients]) {\n ret += size\n }\n return ret\n }\n\n get stats () {\n return this[kStats]\n }\n\n async [kClose] () {\n if (this[kQueue].isEmpty()) {\n return Promise.all(this[kClients].map(c => c.close()))\n } else {\n return new Promise((resolve) => {\n this[kClosedResolve] = resolve\n })\n }\n }\n\n async [kDestroy] (err) {\n while (true) {\n const item = this[kQueue].shift()\n if (!item) {\n break\n }\n item.handler.onError(err)\n }\n\n return Promise.all(this[kClients].map(c => c.destroy(err)))\n }\n\n [kDispatch] (opts, handler) {\n const dispatcher = this[kGetDispatcher]()\n\n if (!dispatcher) {\n this[kNeedDrain] = true\n this[kQueue].push({ opts, handler })\n this[kQueued]++\n } else if (!dispatcher.dispatch(opts, handler)) {\n dispatcher[kNeedDrain] = true\n this[kNeedDrain] = !this[kGetDispatcher]()\n }\n\n return !this[kNeedDrain]\n }\n\n [kAddClient] (client) {\n client\n .on('drain', this[kOnDrain])\n .on('connect', this[kOnConnect])\n .on('disconnect', this[kOnDisconnect])\n .on('connectionError', this[kOnConnectionError])\n\n this[kClients].push(client)\n\n if (this[kNeedDrain]) {\n process.nextTick(() => {\n if (this[kNeedDrain]) {\n this[kOnDrain](client[kUrl], [this, client])\n }\n })\n }\n\n return this\n }\n\n [kRemoveClient] (client) {\n client.close(() => {\n const idx = this[kClients].indexOf(client)\n if (idx !== -1) {\n this[kClients].splice(idx, 1)\n }\n })\n\n this[kNeedDrain] = this[kClients].some(dispatcher => (\n !dispatcher[kNeedDrain] &&\n dispatcher.closed !== true &&\n dispatcher.destroyed !== true\n ))\n }\n}\n\nmodule.exports = {\n PoolBase,\n kClients,\n kNeedDrain,\n kAddClient,\n kRemoveClient,\n kGetDispatcher\n}\n","const { kFree, kConnected, kPending, kQueued, kRunning, kSize } = require('./core/symbols')\nconst kPool = Symbol('pool')\n\nclass PoolStats {\n constructor (pool) {\n this[kPool] = pool\n }\n\n get connected () {\n return this[kPool][kConnected]\n }\n\n get free () {\n return this[kPool][kFree]\n }\n\n get pending () {\n return this[kPool][kPending]\n }\n\n get queued () {\n return this[kPool][kQueued]\n }\n\n get running () {\n return this[kPool][kRunning]\n }\n\n get size () {\n return this[kPool][kSize]\n }\n}\n\nmodule.exports = PoolStats\n","'use strict'\n\nconst {\n PoolBase,\n kClients,\n kNeedDrain,\n kAddClient,\n kGetDispatcher\n} = require('./pool-base')\nconst Client = require('./client')\nconst {\n InvalidArgumentError\n} = require('./core/errors')\nconst util = require('./core/util')\nconst { kUrl, kInterceptors } = require('./core/symbols')\nconst buildConnector = require('./core/connect')\n\nconst kOptions = Symbol('options')\nconst kConnections = Symbol('connections')\nconst kFactory = Symbol('factory')\n\nfunction defaultFactory (origin, opts) {\n return new Client(origin, opts)\n}\n\nclass Pool extends PoolBase {\n constructor (origin, {\n connections,\n factory = defaultFactory,\n connect,\n connectTimeout,\n tls,\n maxCachedSessions,\n socketPath,\n autoSelectFamily,\n autoSelectFamilyAttemptTimeout,\n allowH2,\n ...options\n } = {}) {\n super()\n\n if (connections != null && (!Number.isFinite(connections) || connections < 0)) {\n throw new InvalidArgumentError('invalid connections')\n }\n\n if (typeof factory !== 'function') {\n throw new InvalidArgumentError('factory must be a function.')\n }\n\n if (connect != null && typeof connect !== 'function' && typeof connect !== 'object') {\n throw new InvalidArgumentError('connect must be a function or an object')\n }\n\n if (typeof connect !== 'function') {\n connect = buildConnector({\n ...tls,\n maxCachedSessions,\n allowH2,\n socketPath,\n timeout: connectTimeout,\n ...(util.nodeHasAutoSelectFamily && autoSelectFamily ? { autoSelectFamily, autoSelectFamilyAttemptTimeout } : undefined),\n ...connect\n })\n }\n\n this[kInterceptors] = options.interceptors && options.interceptors.Pool && Array.isArray(options.interceptors.Pool)\n ? options.interceptors.Pool\n : []\n this[kConnections] = connections || null\n this[kUrl] = util.parseOrigin(origin)\n this[kOptions] = { ...util.deepClone(options), connect, allowH2 }\n this[kOptions].interceptors = options.interceptors\n ? { ...options.interceptors }\n : undefined\n this[kFactory] = factory\n }\n\n [kGetDispatcher] () {\n let dispatcher = this[kClients].find(dispatcher => !dispatcher[kNeedDrain])\n\n if (dispatcher) {\n return dispatcher\n }\n\n if (!this[kConnections] || this[kClients].length < this[kConnections]) {\n dispatcher = this[kFactory](this[kUrl], this[kOptions])\n this[kAddClient](dispatcher)\n }\n\n return dispatcher\n }\n}\n\nmodule.exports = Pool\n","'use strict'\n\nconst { kProxy, kClose, kDestroy, kInterceptors } = require('./core/symbols')\nconst { URL } = require('url')\nconst Agent = require('./agent')\nconst Pool = require('./pool')\nconst DispatcherBase = require('./dispatcher-base')\nconst { InvalidArgumentError, RequestAbortedError } = require('./core/errors')\nconst buildConnector = require('./core/connect')\n\nconst kAgent = Symbol('proxy agent')\nconst kClient = Symbol('proxy client')\nconst kProxyHeaders = Symbol('proxy headers')\nconst kRequestTls = Symbol('request tls settings')\nconst kProxyTls = Symbol('proxy tls settings')\nconst kConnectEndpoint = Symbol('connect endpoint function')\n\nfunction defaultProtocolPort (protocol) {\n return protocol === 'https:' ? 443 : 80\n}\n\nfunction buildProxyOptions (opts) {\n if (typeof opts === 'string') {\n opts = { uri: opts }\n }\n\n if (!opts || !opts.uri) {\n throw new InvalidArgumentError('Proxy opts.uri is mandatory')\n }\n\n return {\n uri: opts.uri,\n protocol: opts.protocol || 'https'\n }\n}\n\nfunction defaultFactory (origin, opts) {\n return new Pool(origin, opts)\n}\n\nclass ProxyAgent extends DispatcherBase {\n constructor (opts) {\n super(opts)\n this[kProxy] = buildProxyOptions(opts)\n this[kAgent] = new Agent(opts)\n this[kInterceptors] = opts.interceptors && opts.interceptors.ProxyAgent && Array.isArray(opts.interceptors.ProxyAgent)\n ? opts.interceptors.ProxyAgent\n : []\n\n if (typeof opts === 'string') {\n opts = { uri: opts }\n }\n\n if (!opts || !opts.uri) {\n throw new InvalidArgumentError('Proxy opts.uri is mandatory')\n }\n\n const { clientFactory = defaultFactory } = opts\n\n if (typeof clientFactory !== 'function') {\n throw new InvalidArgumentError('Proxy opts.clientFactory must be a function.')\n }\n\n this[kRequestTls] = opts.requestTls\n this[kProxyTls] = opts.proxyTls\n this[kProxyHeaders] = opts.headers || {}\n\n const resolvedUrl = new URL(opts.uri)\n const { origin, port, host, username, password } = resolvedUrl\n\n if (opts.auth && opts.token) {\n throw new InvalidArgumentError('opts.auth cannot be used in combination with opts.token')\n } else if (opts.auth) {\n /* @deprecated in favour of opts.token */\n this[kProxyHeaders]['proxy-authorization'] = `Basic ${opts.auth}`\n } else if (opts.token) {\n this[kProxyHeaders]['proxy-authorization'] = opts.token\n } else if (username && password) {\n this[kProxyHeaders]['proxy-authorization'] = `Basic ${Buffer.from(`${decodeURIComponent(username)}:${decodeURIComponent(password)}`).toString('base64')}`\n }\n\n const connect = buildConnector({ ...opts.proxyTls })\n this[kConnectEndpoint] = buildConnector({ ...opts.requestTls })\n this[kClient] = clientFactory(resolvedUrl, { connect })\n this[kAgent] = new Agent({\n ...opts,\n connect: async (opts, callback) => {\n let requestedHost = opts.host\n if (!opts.port) {\n requestedHost += `:${defaultProtocolPort(opts.protocol)}`\n }\n try {\n const { socket, statusCode } = await this[kClient].connect({\n origin,\n port,\n path: requestedHost,\n signal: opts.signal,\n headers: {\n ...this[kProxyHeaders],\n host\n }\n })\n if (statusCode !== 200) {\n socket.on('error', () => {}).destroy()\n callback(new RequestAbortedError(`Proxy response (${statusCode}) !== 200 when HTTP Tunneling`))\n }\n if (opts.protocol !== 'https:') {\n callback(null, socket)\n return\n }\n let servername\n if (this[kRequestTls]) {\n servername = this[kRequestTls].servername\n } else {\n servername = opts.servername\n }\n this[kConnectEndpoint]({ ...opts, servername, httpSocket: socket }, callback)\n } catch (err) {\n callback(err)\n }\n }\n })\n }\n\n dispatch (opts, handler) {\n const { host } = new URL(opts.origin)\n const headers = buildHeaders(opts.headers)\n throwIfProxyAuthIsSent(headers)\n return this[kAgent].dispatch(\n {\n ...opts,\n headers: {\n ...headers,\n host\n }\n },\n handler\n )\n }\n\n async [kClose] () {\n await this[kAgent].close()\n await this[kClient].close()\n }\n\n async [kDestroy] () {\n await this[kAgent].destroy()\n await this[kClient].destroy()\n }\n}\n\n/**\n * @param {string[] | Record} headers\n * @returns {Record}\n */\nfunction buildHeaders (headers) {\n // When using undici.fetch, the headers list is stored\n // as an array.\n if (Array.isArray(headers)) {\n /** @type {Record} */\n const headersPair = {}\n\n for (let i = 0; i < headers.length; i += 2) {\n headersPair[headers[i]] = headers[i + 1]\n }\n\n return headersPair\n }\n\n return headers\n}\n\n/**\n * @param {Record} headers\n *\n * Previous versions of ProxyAgent suggests the Proxy-Authorization in request headers\n * Nevertheless, it was changed and to avoid a security vulnerability by end users\n * this check was created.\n * It should be removed in the next major version for performance reasons\n */\nfunction throwIfProxyAuthIsSent (headers) {\n const existProxyAuth = headers && Object.keys(headers)\n .find((key) => key.toLowerCase() === 'proxy-authorization')\n if (existProxyAuth) {\n throw new InvalidArgumentError('Proxy-Authorization should be sent in ProxyAgent constructor')\n }\n}\n\nmodule.exports = ProxyAgent\n","'use strict'\n\nlet fastNow = Date.now()\nlet fastNowTimeout\n\nconst fastTimers = []\n\nfunction onTimeout () {\n fastNow = Date.now()\n\n let len = fastTimers.length\n let idx = 0\n while (idx < len) {\n const timer = fastTimers[idx]\n\n if (timer.state === 0) {\n timer.state = fastNow + timer.delay\n } else if (timer.state > 0 && fastNow >= timer.state) {\n timer.state = -1\n timer.callback(timer.opaque)\n }\n\n if (timer.state === -1) {\n timer.state = -2\n if (idx !== len - 1) {\n fastTimers[idx] = fastTimers.pop()\n } else {\n fastTimers.pop()\n }\n len -= 1\n } else {\n idx += 1\n }\n }\n\n if (fastTimers.length > 0) {\n refreshTimeout()\n }\n}\n\nfunction refreshTimeout () {\n if (fastNowTimeout && fastNowTimeout.refresh) {\n fastNowTimeout.refresh()\n } else {\n clearTimeout(fastNowTimeout)\n fastNowTimeout = setTimeout(onTimeout, 1e3)\n if (fastNowTimeout.unref) {\n fastNowTimeout.unref()\n }\n }\n}\n\nclass Timeout {\n constructor (callback, delay, opaque) {\n this.callback = callback\n this.delay = delay\n this.opaque = opaque\n\n // -2 not in timer list\n // -1 in timer list but inactive\n // 0 in timer list waiting for time\n // > 0 in timer list waiting for time to expire\n this.state = -2\n\n this.refresh()\n }\n\n refresh () {\n if (this.state === -2) {\n fastTimers.push(this)\n if (!fastNowTimeout || fastTimers.length === 1) {\n refreshTimeout()\n }\n }\n\n this.state = 0\n }\n\n clear () {\n this.state = -1\n }\n}\n\nmodule.exports = {\n setTimeout (callback, delay, opaque) {\n return delay < 1e3\n ? setTimeout(callback, delay, opaque)\n : new Timeout(callback, delay, opaque)\n },\n clearTimeout (timeout) {\n if (timeout instanceof Timeout) {\n timeout.clear()\n } else {\n clearTimeout(timeout)\n }\n }\n}\n","'use strict'\n\nconst diagnosticsChannel = require('diagnostics_channel')\nconst { uid, states } = require('./constants')\nconst {\n kReadyState,\n kSentClose,\n kByteParser,\n kReceivedClose\n} = require('./symbols')\nconst { fireEvent, failWebsocketConnection } = require('./util')\nconst { CloseEvent } = require('./events')\nconst { makeRequest } = require('../fetch/request')\nconst { fetching } = require('../fetch/index')\nconst { Headers } = require('../fetch/headers')\nconst { getGlobalDispatcher } = require('../global')\nconst { kHeadersList } = require('../core/symbols')\n\nconst channels = {}\nchannels.open = diagnosticsChannel.channel('undici:websocket:open')\nchannels.close = diagnosticsChannel.channel('undici:websocket:close')\nchannels.socketError = diagnosticsChannel.channel('undici:websocket:socket_error')\n\n/** @type {import('crypto')} */\nlet crypto\ntry {\n crypto = require('crypto')\n} catch {\n\n}\n\n/**\n * @see https://websockets.spec.whatwg.org/#concept-websocket-establish\n * @param {URL} url\n * @param {string|string[]} protocols\n * @param {import('./websocket').WebSocket} ws\n * @param {(response: any) => void} onEstablish\n * @param {Partial} options\n */\nfunction establishWebSocketConnection (url, protocols, ws, onEstablish, options) {\n // 1. Let requestURL be a copy of url, with its scheme set to \"http\", if url’s\n // scheme is \"ws\", and to \"https\" otherwise.\n const requestURL = url\n\n requestURL.protocol = url.protocol === 'ws:' ? 'http:' : 'https:'\n\n // 2. Let request be a new request, whose URL is requestURL, client is client,\n // service-workers mode is \"none\", referrer is \"no-referrer\", mode is\n // \"websocket\", credentials mode is \"include\", cache mode is \"no-store\" ,\n // and redirect mode is \"error\".\n const request = makeRequest({\n urlList: [requestURL],\n serviceWorkers: 'none',\n referrer: 'no-referrer',\n mode: 'websocket',\n credentials: 'include',\n cache: 'no-store',\n redirect: 'error'\n })\n\n // Note: undici extension, allow setting custom headers.\n if (options.headers) {\n const headersList = new Headers(options.headers)[kHeadersList]\n\n request.headersList = headersList\n }\n\n // 3. Append (`Upgrade`, `websocket`) to request’s header list.\n // 4. Append (`Connection`, `Upgrade`) to request’s header list.\n // Note: both of these are handled by undici currently.\n // https://github.com/nodejs/undici/blob/68c269c4144c446f3f1220951338daef4a6b5ec4/lib/client.js#L1397\n\n // 5. Let keyValue be a nonce consisting of a randomly selected\n // 16-byte value that has been forgiving-base64-encoded and\n // isomorphic encoded.\n const keyValue = crypto.randomBytes(16).toString('base64')\n\n // 6. Append (`Sec-WebSocket-Key`, keyValue) to request’s\n // header list.\n request.headersList.append('sec-websocket-key', keyValue)\n\n // 7. Append (`Sec-WebSocket-Version`, `13`) to request’s\n // header list.\n request.headersList.append('sec-websocket-version', '13')\n\n // 8. For each protocol in protocols, combine\n // (`Sec-WebSocket-Protocol`, protocol) in request’s header\n // list.\n for (const protocol of protocols) {\n request.headersList.append('sec-websocket-protocol', protocol)\n }\n\n // 9. Let permessageDeflate be a user-agent defined\n // \"permessage-deflate\" extension header value.\n // https://github.com/mozilla/gecko-dev/blob/ce78234f5e653a5d3916813ff990f053510227bc/netwerk/protocol/websocket/WebSocketChannel.cpp#L2673\n // TODO: enable once permessage-deflate is supported\n const permessageDeflate = '' // 'permessage-deflate; 15'\n\n // 10. Append (`Sec-WebSocket-Extensions`, permessageDeflate) to\n // request’s header list.\n // request.headersList.append('sec-websocket-extensions', permessageDeflate)\n\n // 11. Fetch request with useParallelQueue set to true, and\n // processResponse given response being these steps:\n const controller = fetching({\n request,\n useParallelQueue: true,\n dispatcher: options.dispatcher ?? getGlobalDispatcher(),\n processResponse (response) {\n // 1. If response is a network error or its status is not 101,\n // fail the WebSocket connection.\n if (response.type === 'error' || response.status !== 101) {\n failWebsocketConnection(ws, 'Received network error or non-101 status code.')\n return\n }\n\n // 2. If protocols is not the empty list and extracting header\n // list values given `Sec-WebSocket-Protocol` and response’s\n // header list results in null, failure, or the empty byte\n // sequence, then fail the WebSocket connection.\n if (protocols.length !== 0 && !response.headersList.get('Sec-WebSocket-Protocol')) {\n failWebsocketConnection(ws, 'Server did not respond with sent protocols.')\n return\n }\n\n // 3. Follow the requirements stated step 2 to step 6, inclusive,\n // of the last set of steps in section 4.1 of The WebSocket\n // Protocol to validate response. This either results in fail\n // the WebSocket connection or the WebSocket connection is\n // established.\n\n // 2. If the response lacks an |Upgrade| header field or the |Upgrade|\n // header field contains a value that is not an ASCII case-\n // insensitive match for the value \"websocket\", the client MUST\n // _Fail the WebSocket Connection_.\n if (response.headersList.get('Upgrade')?.toLowerCase() !== 'websocket') {\n failWebsocketConnection(ws, 'Server did not set Upgrade header to \"websocket\".')\n return\n }\n\n // 3. If the response lacks a |Connection| header field or the\n // |Connection| header field doesn't contain a token that is an\n // ASCII case-insensitive match for the value \"Upgrade\", the client\n // MUST _Fail the WebSocket Connection_.\n if (response.headersList.get('Connection')?.toLowerCase() !== 'upgrade') {\n failWebsocketConnection(ws, 'Server did not set Connection header to \"upgrade\".')\n return\n }\n\n // 4. If the response lacks a |Sec-WebSocket-Accept| header field or\n // the |Sec-WebSocket-Accept| contains a value other than the\n // base64-encoded SHA-1 of the concatenation of the |Sec-WebSocket-\n // Key| (as a string, not base64-decoded) with the string \"258EAFA5-\n // E914-47DA-95CA-C5AB0DC85B11\" but ignoring any leading and\n // trailing whitespace, the client MUST _Fail the WebSocket\n // Connection_.\n const secWSAccept = response.headersList.get('Sec-WebSocket-Accept')\n const digest = crypto.createHash('sha1').update(keyValue + uid).digest('base64')\n if (secWSAccept !== digest) {\n failWebsocketConnection(ws, 'Incorrect hash received in Sec-WebSocket-Accept header.')\n return\n }\n\n // 5. If the response includes a |Sec-WebSocket-Extensions| header\n // field and this header field indicates the use of an extension\n // that was not present in the client's handshake (the server has\n // indicated an extension not requested by the client), the client\n // MUST _Fail the WebSocket Connection_. (The parsing of this\n // header field to determine which extensions are requested is\n // discussed in Section 9.1.)\n const secExtension = response.headersList.get('Sec-WebSocket-Extensions')\n\n if (secExtension !== null && secExtension !== permessageDeflate) {\n failWebsocketConnection(ws, 'Received different permessage-deflate than the one set.')\n return\n }\n\n // 6. If the response includes a |Sec-WebSocket-Protocol| header field\n // and this header field indicates the use of a subprotocol that was\n // not present in the client's handshake (the server has indicated a\n // subprotocol not requested by the client), the client MUST _Fail\n // the WebSocket Connection_.\n const secProtocol = response.headersList.get('Sec-WebSocket-Protocol')\n\n if (secProtocol !== null && secProtocol !== request.headersList.get('Sec-WebSocket-Protocol')) {\n failWebsocketConnection(ws, 'Protocol was not set in the opening handshake.')\n return\n }\n\n response.socket.on('data', onSocketData)\n response.socket.on('close', onSocketClose)\n response.socket.on('error', onSocketError)\n\n if (channels.open.hasSubscribers) {\n channels.open.publish({\n address: response.socket.address(),\n protocol: secProtocol,\n extensions: secExtension\n })\n }\n\n onEstablish(response)\n }\n })\n\n return controller\n}\n\n/**\n * @param {Buffer} chunk\n */\nfunction onSocketData (chunk) {\n if (!this.ws[kByteParser].write(chunk)) {\n this.pause()\n }\n}\n\n/**\n * @see https://websockets.spec.whatwg.org/#feedback-from-the-protocol\n * @see https://datatracker.ietf.org/doc/html/rfc6455#section-7.1.4\n */\nfunction onSocketClose () {\n const { ws } = this\n\n // If the TCP connection was closed after the\n // WebSocket closing handshake was completed, the WebSocket connection\n // is said to have been closed _cleanly_.\n const wasClean = ws[kSentClose] && ws[kReceivedClose]\n\n let code = 1005\n let reason = ''\n\n const result = ws[kByteParser].closingInfo\n\n if (result) {\n code = result.code ?? 1005\n reason = result.reason\n } else if (!ws[kSentClose]) {\n // If _The WebSocket\n // Connection is Closed_ and no Close control frame was received by the\n // endpoint (such as could occur if the underlying transport connection\n // is lost), _The WebSocket Connection Close Code_ is considered to be\n // 1006.\n code = 1006\n }\n\n // 1. Change the ready state to CLOSED (3).\n ws[kReadyState] = states.CLOSED\n\n // 2. If the user agent was required to fail the WebSocket\n // connection, or if the WebSocket connection was closed\n // after being flagged as full, fire an event named error\n // at the WebSocket object.\n // TODO\n\n // 3. Fire an event named close at the WebSocket object,\n // using CloseEvent, with the wasClean attribute\n // initialized to true if the connection closed cleanly\n // and false otherwise, the code attribute initialized to\n // the WebSocket connection close code, and the reason\n // attribute initialized to the result of applying UTF-8\n // decode without BOM to the WebSocket connection close\n // reason.\n fireEvent('close', ws, CloseEvent, {\n wasClean, code, reason\n })\n\n if (channels.close.hasSubscribers) {\n channels.close.publish({\n websocket: ws,\n code,\n reason\n })\n }\n}\n\nfunction onSocketError (error) {\n const { ws } = this\n\n ws[kReadyState] = states.CLOSING\n\n if (channels.socketError.hasSubscribers) {\n channels.socketError.publish(error)\n }\n\n this.destroy()\n}\n\nmodule.exports = {\n establishWebSocketConnection\n}\n","'use strict'\n\n// This is a Globally Unique Identifier unique used\n// to validate that the endpoint accepts websocket\n// connections.\n// See https://www.rfc-editor.org/rfc/rfc6455.html#section-1.3\nconst uid = '258EAFA5-E914-47DA-95CA-C5AB0DC85B11'\n\n/** @type {PropertyDescriptor} */\nconst staticPropertyDescriptors = {\n enumerable: true,\n writable: false,\n configurable: false\n}\n\nconst states = {\n CONNECTING: 0,\n OPEN: 1,\n CLOSING: 2,\n CLOSED: 3\n}\n\nconst opcodes = {\n CONTINUATION: 0x0,\n TEXT: 0x1,\n BINARY: 0x2,\n CLOSE: 0x8,\n PING: 0x9,\n PONG: 0xA\n}\n\nconst maxUnsigned16Bit = 2 ** 16 - 1 // 65535\n\nconst parserStates = {\n INFO: 0,\n PAYLOADLENGTH_16: 2,\n PAYLOADLENGTH_64: 3,\n READ_DATA: 4\n}\n\nconst emptyBuffer = Buffer.allocUnsafe(0)\n\nmodule.exports = {\n uid,\n staticPropertyDescriptors,\n states,\n opcodes,\n maxUnsigned16Bit,\n parserStates,\n emptyBuffer\n}\n","'use strict'\n\nconst { webidl } = require('../fetch/webidl')\nconst { kEnumerableProperty } = require('../core/util')\nconst { MessagePort } = require('worker_threads')\n\n/**\n * @see https://html.spec.whatwg.org/multipage/comms.html#messageevent\n */\nclass MessageEvent extends Event {\n #eventInit\n\n constructor (type, eventInitDict = {}) {\n webidl.argumentLengthCheck(arguments, 1, { header: 'MessageEvent constructor' })\n\n type = webidl.converters.DOMString(type)\n eventInitDict = webidl.converters.MessageEventInit(eventInitDict)\n\n super(type, eventInitDict)\n\n this.#eventInit = eventInitDict\n }\n\n get data () {\n webidl.brandCheck(this, MessageEvent)\n\n return this.#eventInit.data\n }\n\n get origin () {\n webidl.brandCheck(this, MessageEvent)\n\n return this.#eventInit.origin\n }\n\n get lastEventId () {\n webidl.brandCheck(this, MessageEvent)\n\n return this.#eventInit.lastEventId\n }\n\n get source () {\n webidl.brandCheck(this, MessageEvent)\n\n return this.#eventInit.source\n }\n\n get ports () {\n webidl.brandCheck(this, MessageEvent)\n\n if (!Object.isFrozen(this.#eventInit.ports)) {\n Object.freeze(this.#eventInit.ports)\n }\n\n return this.#eventInit.ports\n }\n\n initMessageEvent (\n type,\n bubbles = false,\n cancelable = false,\n data = null,\n origin = '',\n lastEventId = '',\n source = null,\n ports = []\n ) {\n webidl.brandCheck(this, MessageEvent)\n\n webidl.argumentLengthCheck(arguments, 1, { header: 'MessageEvent.initMessageEvent' })\n\n return new MessageEvent(type, {\n bubbles, cancelable, data, origin, lastEventId, source, ports\n })\n }\n}\n\n/**\n * @see https://websockets.spec.whatwg.org/#the-closeevent-interface\n */\nclass CloseEvent extends Event {\n #eventInit\n\n constructor (type, eventInitDict = {}) {\n webidl.argumentLengthCheck(arguments, 1, { header: 'CloseEvent constructor' })\n\n type = webidl.converters.DOMString(type)\n eventInitDict = webidl.converters.CloseEventInit(eventInitDict)\n\n super(type, eventInitDict)\n\n this.#eventInit = eventInitDict\n }\n\n get wasClean () {\n webidl.brandCheck(this, CloseEvent)\n\n return this.#eventInit.wasClean\n }\n\n get code () {\n webidl.brandCheck(this, CloseEvent)\n\n return this.#eventInit.code\n }\n\n get reason () {\n webidl.brandCheck(this, CloseEvent)\n\n return this.#eventInit.reason\n }\n}\n\n// https://html.spec.whatwg.org/multipage/webappapis.html#the-errorevent-interface\nclass ErrorEvent extends Event {\n #eventInit\n\n constructor (type, eventInitDict) {\n webidl.argumentLengthCheck(arguments, 1, { header: 'ErrorEvent constructor' })\n\n super(type, eventInitDict)\n\n type = webidl.converters.DOMString(type)\n eventInitDict = webidl.converters.ErrorEventInit(eventInitDict ?? {})\n\n this.#eventInit = eventInitDict\n }\n\n get message () {\n webidl.brandCheck(this, ErrorEvent)\n\n return this.#eventInit.message\n }\n\n get filename () {\n webidl.brandCheck(this, ErrorEvent)\n\n return this.#eventInit.filename\n }\n\n get lineno () {\n webidl.brandCheck(this, ErrorEvent)\n\n return this.#eventInit.lineno\n }\n\n get colno () {\n webidl.brandCheck(this, ErrorEvent)\n\n return this.#eventInit.colno\n }\n\n get error () {\n webidl.brandCheck(this, ErrorEvent)\n\n return this.#eventInit.error\n }\n}\n\nObject.defineProperties(MessageEvent.prototype, {\n [Symbol.toStringTag]: {\n value: 'MessageEvent',\n configurable: true\n },\n data: kEnumerableProperty,\n origin: kEnumerableProperty,\n lastEventId: kEnumerableProperty,\n source: kEnumerableProperty,\n ports: kEnumerableProperty,\n initMessageEvent: kEnumerableProperty\n})\n\nObject.defineProperties(CloseEvent.prototype, {\n [Symbol.toStringTag]: {\n value: 'CloseEvent',\n configurable: true\n },\n reason: kEnumerableProperty,\n code: kEnumerableProperty,\n wasClean: kEnumerableProperty\n})\n\nObject.defineProperties(ErrorEvent.prototype, {\n [Symbol.toStringTag]: {\n value: 'ErrorEvent',\n configurable: true\n },\n message: kEnumerableProperty,\n filename: kEnumerableProperty,\n lineno: kEnumerableProperty,\n colno: kEnumerableProperty,\n error: kEnumerableProperty\n})\n\nwebidl.converters.MessagePort = webidl.interfaceConverter(MessagePort)\n\nwebidl.converters['sequence'] = webidl.sequenceConverter(\n webidl.converters.MessagePort\n)\n\nconst eventInit = [\n {\n key: 'bubbles',\n converter: webidl.converters.boolean,\n defaultValue: false\n },\n {\n key: 'cancelable',\n converter: webidl.converters.boolean,\n defaultValue: false\n },\n {\n key: 'composed',\n converter: webidl.converters.boolean,\n defaultValue: false\n }\n]\n\nwebidl.converters.MessageEventInit = webidl.dictionaryConverter([\n ...eventInit,\n {\n key: 'data',\n converter: webidl.converters.any,\n defaultValue: null\n },\n {\n key: 'origin',\n converter: webidl.converters.USVString,\n defaultValue: ''\n },\n {\n key: 'lastEventId',\n converter: webidl.converters.DOMString,\n defaultValue: ''\n },\n {\n key: 'source',\n // Node doesn't implement WindowProxy or ServiceWorker, so the only\n // valid value for source is a MessagePort.\n converter: webidl.nullableConverter(webidl.converters.MessagePort),\n defaultValue: null\n },\n {\n key: 'ports',\n converter: webidl.converters['sequence'],\n get defaultValue () {\n return []\n }\n }\n])\n\nwebidl.converters.CloseEventInit = webidl.dictionaryConverter([\n ...eventInit,\n {\n key: 'wasClean',\n converter: webidl.converters.boolean,\n defaultValue: false\n },\n {\n key: 'code',\n converter: webidl.converters['unsigned short'],\n defaultValue: 0\n },\n {\n key: 'reason',\n converter: webidl.converters.USVString,\n defaultValue: ''\n }\n])\n\nwebidl.converters.ErrorEventInit = webidl.dictionaryConverter([\n ...eventInit,\n {\n key: 'message',\n converter: webidl.converters.DOMString,\n defaultValue: ''\n },\n {\n key: 'filename',\n converter: webidl.converters.USVString,\n defaultValue: ''\n },\n {\n key: 'lineno',\n converter: webidl.converters['unsigned long'],\n defaultValue: 0\n },\n {\n key: 'colno',\n converter: webidl.converters['unsigned long'],\n defaultValue: 0\n },\n {\n key: 'error',\n converter: webidl.converters.any\n }\n])\n\nmodule.exports = {\n MessageEvent,\n CloseEvent,\n ErrorEvent\n}\n","'use strict'\n\nconst { maxUnsigned16Bit } = require('./constants')\n\n/** @type {import('crypto')} */\nlet crypto\ntry {\n crypto = require('crypto')\n} catch {\n\n}\n\nclass WebsocketFrameSend {\n /**\n * @param {Buffer|undefined} data\n */\n constructor (data) {\n this.frameData = data\n this.maskKey = crypto.randomBytes(4)\n }\n\n createFrame (opcode) {\n const bodyLength = this.frameData?.byteLength ?? 0\n\n /** @type {number} */\n let payloadLength = bodyLength // 0-125\n let offset = 6\n\n if (bodyLength > maxUnsigned16Bit) {\n offset += 8 // payload length is next 8 bytes\n payloadLength = 127\n } else if (bodyLength > 125) {\n offset += 2 // payload length is next 2 bytes\n payloadLength = 126\n }\n\n const buffer = Buffer.allocUnsafe(bodyLength + offset)\n\n // Clear first 2 bytes, everything else is overwritten\n buffer[0] = buffer[1] = 0\n buffer[0] |= 0x80 // FIN\n buffer[0] = (buffer[0] & 0xF0) + opcode // opcode\n\n /*! ws. MIT License. Einar Otto Stangvik */\n buffer[offset - 4] = this.maskKey[0]\n buffer[offset - 3] = this.maskKey[1]\n buffer[offset - 2] = this.maskKey[2]\n buffer[offset - 1] = this.maskKey[3]\n\n buffer[1] = payloadLength\n\n if (payloadLength === 126) {\n buffer.writeUInt16BE(bodyLength, 2)\n } else if (payloadLength === 127) {\n // Clear extended payload length\n buffer[2] = buffer[3] = 0\n buffer.writeUIntBE(bodyLength, 4, 6)\n }\n\n buffer[1] |= 0x80 // MASK\n\n // mask body\n for (let i = 0; i < bodyLength; i++) {\n buffer[offset + i] = this.frameData[i] ^ this.maskKey[i % 4]\n }\n\n return buffer\n }\n}\n\nmodule.exports = {\n WebsocketFrameSend\n}\n","'use strict'\n\nconst { Writable } = require('stream')\nconst diagnosticsChannel = require('diagnostics_channel')\nconst { parserStates, opcodes, states, emptyBuffer } = require('./constants')\nconst { kReadyState, kSentClose, kResponse, kReceivedClose } = require('./symbols')\nconst { isValidStatusCode, failWebsocketConnection, websocketMessageReceived } = require('./util')\nconst { WebsocketFrameSend } = require('./frame')\n\n// This code was influenced by ws released under the MIT license.\n// Copyright (c) 2011 Einar Otto Stangvik \n// Copyright (c) 2013 Arnout Kazemier and contributors\n// Copyright (c) 2016 Luigi Pinca and contributors\n\nconst channels = {}\nchannels.ping = diagnosticsChannel.channel('undici:websocket:ping')\nchannels.pong = diagnosticsChannel.channel('undici:websocket:pong')\n\nclass ByteParser extends Writable {\n #buffers = []\n #byteOffset = 0\n\n #state = parserStates.INFO\n\n #info = {}\n #fragments = []\n\n constructor (ws) {\n super()\n\n this.ws = ws\n }\n\n /**\n * @param {Buffer} chunk\n * @param {() => void} callback\n */\n _write (chunk, _, callback) {\n this.#buffers.push(chunk)\n this.#byteOffset += chunk.length\n\n this.run(callback)\n }\n\n /**\n * Runs whenever a new chunk is received.\n * Callback is called whenever there are no more chunks buffering,\n * or not enough bytes are buffered to parse.\n */\n run (callback) {\n while (true) {\n if (this.#state === parserStates.INFO) {\n // If there aren't enough bytes to parse the payload length, etc.\n if (this.#byteOffset < 2) {\n return callback()\n }\n\n const buffer = this.consume(2)\n\n this.#info.fin = (buffer[0] & 0x80) !== 0\n this.#info.opcode = buffer[0] & 0x0F\n\n // If we receive a fragmented message, we use the type of the first\n // frame to parse the full message as binary/text, when it's terminated\n this.#info.originalOpcode ??= this.#info.opcode\n\n this.#info.fragmented = !this.#info.fin && this.#info.opcode !== opcodes.CONTINUATION\n\n if (this.#info.fragmented && this.#info.opcode !== opcodes.BINARY && this.#info.opcode !== opcodes.TEXT) {\n // Only text and binary frames can be fragmented\n failWebsocketConnection(this.ws, 'Invalid frame type was fragmented.')\n return\n }\n\n const payloadLength = buffer[1] & 0x7F\n\n if (payloadLength <= 125) {\n this.#info.payloadLength = payloadLength\n this.#state = parserStates.READ_DATA\n } else if (payloadLength === 126) {\n this.#state = parserStates.PAYLOADLENGTH_16\n } else if (payloadLength === 127) {\n this.#state = parserStates.PAYLOADLENGTH_64\n }\n\n if (this.#info.fragmented && payloadLength > 125) {\n // A fragmented frame can't be fragmented itself\n failWebsocketConnection(this.ws, 'Fragmented frame exceeded 125 bytes.')\n return\n } else if (\n (this.#info.opcode === opcodes.PING ||\n this.#info.opcode === opcodes.PONG ||\n this.#info.opcode === opcodes.CLOSE) &&\n payloadLength > 125\n ) {\n // Control frames can have a payload length of 125 bytes MAX\n failWebsocketConnection(this.ws, 'Payload length for control frame exceeded 125 bytes.')\n return\n } else if (this.#info.opcode === opcodes.CLOSE) {\n if (payloadLength === 1) {\n failWebsocketConnection(this.ws, 'Received close frame with a 1-byte body.')\n return\n }\n\n const body = this.consume(payloadLength)\n\n this.#info.closeInfo = this.parseCloseBody(false, body)\n\n if (!this.ws[kSentClose]) {\n // If an endpoint receives a Close frame and did not previously send a\n // Close frame, the endpoint MUST send a Close frame in response. (When\n // sending a Close frame in response, the endpoint typically echos the\n // status code it received.)\n const body = Buffer.allocUnsafe(2)\n body.writeUInt16BE(this.#info.closeInfo.code, 0)\n const closeFrame = new WebsocketFrameSend(body)\n\n this.ws[kResponse].socket.write(\n closeFrame.createFrame(opcodes.CLOSE),\n (err) => {\n if (!err) {\n this.ws[kSentClose] = true\n }\n }\n )\n }\n\n // Upon either sending or receiving a Close control frame, it is said\n // that _The WebSocket Closing Handshake is Started_ and that the\n // WebSocket connection is in the CLOSING state.\n this.ws[kReadyState] = states.CLOSING\n this.ws[kReceivedClose] = true\n\n this.end()\n\n return\n } else if (this.#info.opcode === opcodes.PING) {\n // Upon receipt of a Ping frame, an endpoint MUST send a Pong frame in\n // response, unless it already received a Close frame.\n // A Pong frame sent in response to a Ping frame must have identical\n // \"Application data\"\n\n const body = this.consume(payloadLength)\n\n if (!this.ws[kReceivedClose]) {\n const frame = new WebsocketFrameSend(body)\n\n this.ws[kResponse].socket.write(frame.createFrame(opcodes.PONG))\n\n if (channels.ping.hasSubscribers) {\n channels.ping.publish({\n payload: body\n })\n }\n }\n\n this.#state = parserStates.INFO\n\n if (this.#byteOffset > 0) {\n continue\n } else {\n callback()\n return\n }\n } else if (this.#info.opcode === opcodes.PONG) {\n // A Pong frame MAY be sent unsolicited. This serves as a\n // unidirectional heartbeat. A response to an unsolicited Pong frame is\n // not expected.\n\n const body = this.consume(payloadLength)\n\n if (channels.pong.hasSubscribers) {\n channels.pong.publish({\n payload: body\n })\n }\n\n if (this.#byteOffset > 0) {\n continue\n } else {\n callback()\n return\n }\n }\n } else if (this.#state === parserStates.PAYLOADLENGTH_16) {\n if (this.#byteOffset < 2) {\n return callback()\n }\n\n const buffer = this.consume(2)\n\n this.#info.payloadLength = buffer.readUInt16BE(0)\n this.#state = parserStates.READ_DATA\n } else if (this.#state === parserStates.PAYLOADLENGTH_64) {\n if (this.#byteOffset < 8) {\n return callback()\n }\n\n const buffer = this.consume(8)\n const upper = buffer.readUInt32BE(0)\n\n // 2^31 is the maxinimum bytes an arraybuffer can contain\n // on 32-bit systems. Although, on 64-bit systems, this is\n // 2^53-1 bytes.\n // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Errors/Invalid_array_length\n // https://source.chromium.org/chromium/chromium/src/+/main:v8/src/common/globals.h;drc=1946212ac0100668f14eb9e2843bdd846e510a1e;bpv=1;bpt=1;l=1275\n // https://source.chromium.org/chromium/chromium/src/+/main:v8/src/objects/js-array-buffer.h;l=34;drc=1946212ac0100668f14eb9e2843bdd846e510a1e\n if (upper > 2 ** 31 - 1) {\n failWebsocketConnection(this.ws, 'Received payload length > 2^31 bytes.')\n return\n }\n\n const lower = buffer.readUInt32BE(4)\n\n this.#info.payloadLength = (upper << 8) + lower\n this.#state = parserStates.READ_DATA\n } else if (this.#state === parserStates.READ_DATA) {\n if (this.#byteOffset < this.#info.payloadLength) {\n // If there is still more data in this chunk that needs to be read\n return callback()\n } else if (this.#byteOffset >= this.#info.payloadLength) {\n // If the server sent multiple frames in a single chunk\n\n const body = this.consume(this.#info.payloadLength)\n\n this.#fragments.push(body)\n\n // If the frame is unfragmented, or a fragmented frame was terminated,\n // a message was received\n if (!this.#info.fragmented || (this.#info.fin && this.#info.opcode === opcodes.CONTINUATION)) {\n const fullMessage = Buffer.concat(this.#fragments)\n\n websocketMessageReceived(this.ws, this.#info.originalOpcode, fullMessage)\n\n this.#info = {}\n this.#fragments.length = 0\n }\n\n this.#state = parserStates.INFO\n }\n }\n\n if (this.#byteOffset > 0) {\n continue\n } else {\n callback()\n break\n }\n }\n }\n\n /**\n * Take n bytes from the buffered Buffers\n * @param {number} n\n * @returns {Buffer|null}\n */\n consume (n) {\n if (n > this.#byteOffset) {\n return null\n } else if (n === 0) {\n return emptyBuffer\n }\n\n if (this.#buffers[0].length === n) {\n this.#byteOffset -= this.#buffers[0].length\n return this.#buffers.shift()\n }\n\n const buffer = Buffer.allocUnsafe(n)\n let offset = 0\n\n while (offset !== n) {\n const next = this.#buffers[0]\n const { length } = next\n\n if (length + offset === n) {\n buffer.set(this.#buffers.shift(), offset)\n break\n } else if (length + offset > n) {\n buffer.set(next.subarray(0, n - offset), offset)\n this.#buffers[0] = next.subarray(n - offset)\n break\n } else {\n buffer.set(this.#buffers.shift(), offset)\n offset += next.length\n }\n }\n\n this.#byteOffset -= n\n\n return buffer\n }\n\n parseCloseBody (onlyCode, data) {\n // https://datatracker.ietf.org/doc/html/rfc6455#section-7.1.5\n /** @type {number|undefined} */\n let code\n\n if (data.length >= 2) {\n // _The WebSocket Connection Close Code_ is\n // defined as the status code (Section 7.4) contained in the first Close\n // control frame received by the application\n code = data.readUInt16BE(0)\n }\n\n if (onlyCode) {\n if (!isValidStatusCode(code)) {\n return null\n }\n\n return { code }\n }\n\n // https://datatracker.ietf.org/doc/html/rfc6455#section-7.1.6\n /** @type {Buffer} */\n let reason = data.subarray(2)\n\n // Remove BOM\n if (reason[0] === 0xEF && reason[1] === 0xBB && reason[2] === 0xBF) {\n reason = reason.subarray(3)\n }\n\n if (code !== undefined && !isValidStatusCode(code)) {\n return null\n }\n\n try {\n // TODO: optimize this\n reason = new TextDecoder('utf-8', { fatal: true }).decode(reason)\n } catch {\n return null\n }\n\n return { code, reason }\n }\n\n get closingInfo () {\n return this.#info.closeInfo\n }\n}\n\nmodule.exports = {\n ByteParser\n}\n","'use strict'\n\nmodule.exports = {\n kWebSocketURL: Symbol('url'),\n kReadyState: Symbol('ready state'),\n kController: Symbol('controller'),\n kResponse: Symbol('response'),\n kBinaryType: Symbol('binary type'),\n kSentClose: Symbol('sent close'),\n kReceivedClose: Symbol('received close'),\n kByteParser: Symbol('byte parser')\n}\n","'use strict'\n\nconst { kReadyState, kController, kResponse, kBinaryType, kWebSocketURL } = require('./symbols')\nconst { states, opcodes } = require('./constants')\nconst { MessageEvent, ErrorEvent } = require('./events')\n\n/* globals Blob */\n\n/**\n * @param {import('./websocket').WebSocket} ws\n */\nfunction isEstablished (ws) {\n // If the server's response is validated as provided for above, it is\n // said that _The WebSocket Connection is Established_ and that the\n // WebSocket Connection is in the OPEN state.\n return ws[kReadyState] === states.OPEN\n}\n\n/**\n * @param {import('./websocket').WebSocket} ws\n */\nfunction isClosing (ws) {\n // Upon either sending or receiving a Close control frame, it is said\n // that _The WebSocket Closing Handshake is Started_ and that the\n // WebSocket connection is in the CLOSING state.\n return ws[kReadyState] === states.CLOSING\n}\n\n/**\n * @param {import('./websocket').WebSocket} ws\n */\nfunction isClosed (ws) {\n return ws[kReadyState] === states.CLOSED\n}\n\n/**\n * @see https://dom.spec.whatwg.org/#concept-event-fire\n * @param {string} e\n * @param {EventTarget} target\n * @param {EventInit | undefined} eventInitDict\n */\nfunction fireEvent (e, target, eventConstructor = Event, eventInitDict) {\n // 1. If eventConstructor is not given, then let eventConstructor be Event.\n\n // 2. Let event be the result of creating an event given eventConstructor,\n // in the relevant realm of target.\n // 3. Initialize event’s type attribute to e.\n const event = new eventConstructor(e, eventInitDict) // eslint-disable-line new-cap\n\n // 4. Initialize any other IDL attributes of event as described in the\n // invocation of this algorithm.\n\n // 5. Return the result of dispatching event at target, with legacy target\n // override flag set if set.\n target.dispatchEvent(event)\n}\n\n/**\n * @see https://websockets.spec.whatwg.org/#feedback-from-the-protocol\n * @param {import('./websocket').WebSocket} ws\n * @param {number} type Opcode\n * @param {Buffer} data application data\n */\nfunction websocketMessageReceived (ws, type, data) {\n // 1. If ready state is not OPEN (1), then return.\n if (ws[kReadyState] !== states.OPEN) {\n return\n }\n\n // 2. Let dataForEvent be determined by switching on type and binary type:\n let dataForEvent\n\n if (type === opcodes.TEXT) {\n // -> type indicates that the data is Text\n // a new DOMString containing data\n try {\n dataForEvent = new TextDecoder('utf-8', { fatal: true }).decode(data)\n } catch {\n failWebsocketConnection(ws, 'Received invalid UTF-8 in text frame.')\n return\n }\n } else if (type === opcodes.BINARY) {\n if (ws[kBinaryType] === 'blob') {\n // -> type indicates that the data is Binary and binary type is \"blob\"\n // a new Blob object, created in the relevant Realm of the WebSocket\n // object, that represents data as its raw data\n dataForEvent = new Blob([data])\n } else {\n // -> type indicates that the data is Binary and binary type is \"arraybuffer\"\n // a new ArrayBuffer object, created in the relevant Realm of the\n // WebSocket object, whose contents are data\n dataForEvent = new Uint8Array(data).buffer\n }\n }\n\n // 3. Fire an event named message at the WebSocket object, using MessageEvent,\n // with the origin attribute initialized to the serialization of the WebSocket\n // object’s url's origin, and the data attribute initialized to dataForEvent.\n fireEvent('message', ws, MessageEvent, {\n origin: ws[kWebSocketURL].origin,\n data: dataForEvent\n })\n}\n\n/**\n * @see https://datatracker.ietf.org/doc/html/rfc6455\n * @see https://datatracker.ietf.org/doc/html/rfc2616\n * @see https://bugs.chromium.org/p/chromium/issues/detail?id=398407\n * @param {string} protocol\n */\nfunction isValidSubprotocol (protocol) {\n // If present, this value indicates one\n // or more comma-separated subprotocol the client wishes to speak,\n // ordered by preference. The elements that comprise this value\n // MUST be non-empty strings with characters in the range U+0021 to\n // U+007E not including separator characters as defined in\n // [RFC2616] and MUST all be unique strings.\n if (protocol.length === 0) {\n return false\n }\n\n for (const char of protocol) {\n const code = char.charCodeAt(0)\n\n if (\n code < 0x21 ||\n code > 0x7E ||\n char === '(' ||\n char === ')' ||\n char === '<' ||\n char === '>' ||\n char === '@' ||\n char === ',' ||\n char === ';' ||\n char === ':' ||\n char === '\\\\' ||\n char === '\"' ||\n char === '/' ||\n char === '[' ||\n char === ']' ||\n char === '?' ||\n char === '=' ||\n char === '{' ||\n char === '}' ||\n code === 32 || // SP\n code === 9 // HT\n ) {\n return false\n }\n }\n\n return true\n}\n\n/**\n * @see https://datatracker.ietf.org/doc/html/rfc6455#section-7-4\n * @param {number} code\n */\nfunction isValidStatusCode (code) {\n if (code >= 1000 && code < 1015) {\n return (\n code !== 1004 && // reserved\n code !== 1005 && // \"MUST NOT be set as a status code\"\n code !== 1006 // \"MUST NOT be set as a status code\"\n )\n }\n\n return code >= 3000 && code <= 4999\n}\n\n/**\n * @param {import('./websocket').WebSocket} ws\n * @param {string|undefined} reason\n */\nfunction failWebsocketConnection (ws, reason) {\n const { [kController]: controller, [kResponse]: response } = ws\n\n controller.abort()\n\n if (response?.socket && !response.socket.destroyed) {\n response.socket.destroy()\n }\n\n if (reason) {\n fireEvent('error', ws, ErrorEvent, {\n error: new Error(reason)\n })\n }\n}\n\nmodule.exports = {\n isEstablished,\n isClosing,\n isClosed,\n fireEvent,\n isValidSubprotocol,\n isValidStatusCode,\n failWebsocketConnection,\n websocketMessageReceived\n}\n","'use strict'\n\nconst { webidl } = require('../fetch/webidl')\nconst { DOMException } = require('../fetch/constants')\nconst { URLSerializer } = require('../fetch/dataURL')\nconst { getGlobalOrigin } = require('../fetch/global')\nconst { staticPropertyDescriptors, states, opcodes, emptyBuffer } = require('./constants')\nconst {\n kWebSocketURL,\n kReadyState,\n kController,\n kBinaryType,\n kResponse,\n kSentClose,\n kByteParser\n} = require('./symbols')\nconst { isEstablished, isClosing, isValidSubprotocol, failWebsocketConnection, fireEvent } = require('./util')\nconst { establishWebSocketConnection } = require('./connection')\nconst { WebsocketFrameSend } = require('./frame')\nconst { ByteParser } = require('./receiver')\nconst { kEnumerableProperty, isBlobLike } = require('../core/util')\nconst { getGlobalDispatcher } = require('../global')\nconst { types } = require('util')\n\nlet experimentalWarned = false\n\n// https://websockets.spec.whatwg.org/#interface-definition\nclass WebSocket extends EventTarget {\n #events = {\n open: null,\n error: null,\n close: null,\n message: null\n }\n\n #bufferedAmount = 0\n #protocol = ''\n #extensions = ''\n\n /**\n * @param {string} url\n * @param {string|string[]} protocols\n */\n constructor (url, protocols = []) {\n super()\n\n webidl.argumentLengthCheck(arguments, 1, { header: 'WebSocket constructor' })\n\n if (!experimentalWarned) {\n experimentalWarned = true\n process.emitWarning('WebSockets are experimental, expect them to change at any time.', {\n code: 'UNDICI-WS'\n })\n }\n\n const options = webidl.converters['DOMString or sequence or WebSocketInit'](protocols)\n\n url = webidl.converters.USVString(url)\n protocols = options.protocols\n\n // 1. Let baseURL be this's relevant settings object's API base URL.\n const baseURL = getGlobalOrigin()\n\n // 1. Let urlRecord be the result of applying the URL parser to url with baseURL.\n let urlRecord\n\n try {\n urlRecord = new URL(url, baseURL)\n } catch (e) {\n // 3. If urlRecord is failure, then throw a \"SyntaxError\" DOMException.\n throw new DOMException(e, 'SyntaxError')\n }\n\n // 4. If urlRecord’s scheme is \"http\", then set urlRecord’s scheme to \"ws\".\n if (urlRecord.protocol === 'http:') {\n urlRecord.protocol = 'ws:'\n } else if (urlRecord.protocol === 'https:') {\n // 5. Otherwise, if urlRecord’s scheme is \"https\", set urlRecord’s scheme to \"wss\".\n urlRecord.protocol = 'wss:'\n }\n\n // 6. If urlRecord’s scheme is not \"ws\" or \"wss\", then throw a \"SyntaxError\" DOMException.\n if (urlRecord.protocol !== 'ws:' && urlRecord.protocol !== 'wss:') {\n throw new DOMException(\n `Expected a ws: or wss: protocol, got ${urlRecord.protocol}`,\n 'SyntaxError'\n )\n }\n\n // 7. If urlRecord’s fragment is non-null, then throw a \"SyntaxError\"\n // DOMException.\n if (urlRecord.hash || urlRecord.href.endsWith('#')) {\n throw new DOMException('Got fragment', 'SyntaxError')\n }\n\n // 8. If protocols is a string, set protocols to a sequence consisting\n // of just that string.\n if (typeof protocols === 'string') {\n protocols = [protocols]\n }\n\n // 9. If any of the values in protocols occur more than once or otherwise\n // fail to match the requirements for elements that comprise the value\n // of `Sec-WebSocket-Protocol` fields as defined by The WebSocket\n // protocol, then throw a \"SyntaxError\" DOMException.\n if (protocols.length !== new Set(protocols.map(p => p.toLowerCase())).size) {\n throw new DOMException('Invalid Sec-WebSocket-Protocol value', 'SyntaxError')\n }\n\n if (protocols.length > 0 && !protocols.every(p => isValidSubprotocol(p))) {\n throw new DOMException('Invalid Sec-WebSocket-Protocol value', 'SyntaxError')\n }\n\n // 10. Set this's url to urlRecord.\n this[kWebSocketURL] = new URL(urlRecord.href)\n\n // 11. Let client be this's relevant settings object.\n\n // 12. Run this step in parallel:\n\n // 1. Establish a WebSocket connection given urlRecord, protocols,\n // and client.\n this[kController] = establishWebSocketConnection(\n urlRecord,\n protocols,\n this,\n (response) => this.#onConnectionEstablished(response),\n options\n )\n\n // Each WebSocket object has an associated ready state, which is a\n // number representing the state of the connection. Initially it must\n // be CONNECTING (0).\n this[kReadyState] = WebSocket.CONNECTING\n\n // The extensions attribute must initially return the empty string.\n\n // The protocol attribute must initially return the empty string.\n\n // Each WebSocket object has an associated binary type, which is a\n // BinaryType. Initially it must be \"blob\".\n this[kBinaryType] = 'blob'\n }\n\n /**\n * @see https://websockets.spec.whatwg.org/#dom-websocket-close\n * @param {number|undefined} code\n * @param {string|undefined} reason\n */\n close (code = undefined, reason = undefined) {\n webidl.brandCheck(this, WebSocket)\n\n if (code !== undefined) {\n code = webidl.converters['unsigned short'](code, { clamp: true })\n }\n\n if (reason !== undefined) {\n reason = webidl.converters.USVString(reason)\n }\n\n // 1. If code is present, but is neither an integer equal to 1000 nor an\n // integer in the range 3000 to 4999, inclusive, throw an\n // \"InvalidAccessError\" DOMException.\n if (code !== undefined) {\n if (code !== 1000 && (code < 3000 || code > 4999)) {\n throw new DOMException('invalid code', 'InvalidAccessError')\n }\n }\n\n let reasonByteLength = 0\n\n // 2. If reason is present, then run these substeps:\n if (reason !== undefined) {\n // 1. Let reasonBytes be the result of encoding reason.\n // 2. If reasonBytes is longer than 123 bytes, then throw a\n // \"SyntaxError\" DOMException.\n reasonByteLength = Buffer.byteLength(reason)\n\n if (reasonByteLength > 123) {\n throw new DOMException(\n `Reason must be less than 123 bytes; received ${reasonByteLength}`,\n 'SyntaxError'\n )\n }\n }\n\n // 3. Run the first matching steps from the following list:\n if (this[kReadyState] === WebSocket.CLOSING || this[kReadyState] === WebSocket.CLOSED) {\n // If this's ready state is CLOSING (2) or CLOSED (3)\n // Do nothing.\n } else if (!isEstablished(this)) {\n // If the WebSocket connection is not yet established\n // Fail the WebSocket connection and set this's ready state\n // to CLOSING (2).\n failWebsocketConnection(this, 'Connection was closed before it was established.')\n this[kReadyState] = WebSocket.CLOSING\n } else if (!isClosing(this)) {\n // If the WebSocket closing handshake has not yet been started\n // Start the WebSocket closing handshake and set this's ready\n // state to CLOSING (2).\n // - If neither code nor reason is present, the WebSocket Close\n // message must not have a body.\n // - If code is present, then the status code to use in the\n // WebSocket Close message must be the integer given by code.\n // - If reason is also present, then reasonBytes must be\n // provided in the Close message after the status code.\n\n const frame = new WebsocketFrameSend()\n\n // If neither code nor reason is present, the WebSocket Close\n // message must not have a body.\n\n // If code is present, then the status code to use in the\n // WebSocket Close message must be the integer given by code.\n if (code !== undefined && reason === undefined) {\n frame.frameData = Buffer.allocUnsafe(2)\n frame.frameData.writeUInt16BE(code, 0)\n } else if (code !== undefined && reason !== undefined) {\n // If reason is also present, then reasonBytes must be\n // provided in the Close message after the status code.\n frame.frameData = Buffer.allocUnsafe(2 + reasonByteLength)\n frame.frameData.writeUInt16BE(code, 0)\n // the body MAY contain UTF-8-encoded data with value /reason/\n frame.frameData.write(reason, 2, 'utf-8')\n } else {\n frame.frameData = emptyBuffer\n }\n\n /** @type {import('stream').Duplex} */\n const socket = this[kResponse].socket\n\n socket.write(frame.createFrame(opcodes.CLOSE), (err) => {\n if (!err) {\n this[kSentClose] = true\n }\n })\n\n // Upon either sending or receiving a Close control frame, it is said\n // that _The WebSocket Closing Handshake is Started_ and that the\n // WebSocket connection is in the CLOSING state.\n this[kReadyState] = states.CLOSING\n } else {\n // Otherwise\n // Set this's ready state to CLOSING (2).\n this[kReadyState] = WebSocket.CLOSING\n }\n }\n\n /**\n * @see https://websockets.spec.whatwg.org/#dom-websocket-send\n * @param {NodeJS.TypedArray|ArrayBuffer|Blob|string} data\n */\n send (data) {\n webidl.brandCheck(this, WebSocket)\n\n webidl.argumentLengthCheck(arguments, 1, { header: 'WebSocket.send' })\n\n data = webidl.converters.WebSocketSendData(data)\n\n // 1. If this's ready state is CONNECTING, then throw an\n // \"InvalidStateError\" DOMException.\n if (this[kReadyState] === WebSocket.CONNECTING) {\n throw new DOMException('Sent before connected.', 'InvalidStateError')\n }\n\n // 2. Run the appropriate set of steps from the following list:\n // https://datatracker.ietf.org/doc/html/rfc6455#section-6.1\n // https://datatracker.ietf.org/doc/html/rfc6455#section-5.2\n\n if (!isEstablished(this) || isClosing(this)) {\n return\n }\n\n /** @type {import('stream').Duplex} */\n const socket = this[kResponse].socket\n\n // If data is a string\n if (typeof data === 'string') {\n // If the WebSocket connection is established and the WebSocket\n // closing handshake has not yet started, then the user agent\n // must send a WebSocket Message comprised of the data argument\n // using a text frame opcode; if the data cannot be sent, e.g.\n // because it would need to be buffered but the buffer is full,\n // the user agent must flag the WebSocket as full and then close\n // the WebSocket connection. Any invocation of this method with a\n // string argument that does not throw an exception must increase\n // the bufferedAmount attribute by the number of bytes needed to\n // express the argument as UTF-8.\n\n const value = Buffer.from(data)\n const frame = new WebsocketFrameSend(value)\n const buffer = frame.createFrame(opcodes.TEXT)\n\n this.#bufferedAmount += value.byteLength\n socket.write(buffer, () => {\n this.#bufferedAmount -= value.byteLength\n })\n } else if (types.isArrayBuffer(data)) {\n // If the WebSocket connection is established, and the WebSocket\n // closing handshake has not yet started, then the user agent must\n // send a WebSocket Message comprised of data using a binary frame\n // opcode; if the data cannot be sent, e.g. because it would need\n // to be buffered but the buffer is full, the user agent must flag\n // the WebSocket as full and then close the WebSocket connection.\n // The data to be sent is the data stored in the buffer described\n // by the ArrayBuffer object. Any invocation of this method with an\n // ArrayBuffer argument that does not throw an exception must\n // increase the bufferedAmount attribute by the length of the\n // ArrayBuffer in bytes.\n\n const value = Buffer.from(data)\n const frame = new WebsocketFrameSend(value)\n const buffer = frame.createFrame(opcodes.BINARY)\n\n this.#bufferedAmount += value.byteLength\n socket.write(buffer, () => {\n this.#bufferedAmount -= value.byteLength\n })\n } else if (ArrayBuffer.isView(data)) {\n // If the WebSocket connection is established, and the WebSocket\n // closing handshake has not yet started, then the user agent must\n // send a WebSocket Message comprised of data using a binary frame\n // opcode; if the data cannot be sent, e.g. because it would need to\n // be buffered but the buffer is full, the user agent must flag the\n // WebSocket as full and then close the WebSocket connection. The\n // data to be sent is the data stored in the section of the buffer\n // described by the ArrayBuffer object that data references. Any\n // invocation of this method with this kind of argument that does\n // not throw an exception must increase the bufferedAmount attribute\n // by the length of data’s buffer in bytes.\n\n const ab = Buffer.from(data, data.byteOffset, data.byteLength)\n\n const frame = new WebsocketFrameSend(ab)\n const buffer = frame.createFrame(opcodes.BINARY)\n\n this.#bufferedAmount += ab.byteLength\n socket.write(buffer, () => {\n this.#bufferedAmount -= ab.byteLength\n })\n } else if (isBlobLike(data)) {\n // If the WebSocket connection is established, and the WebSocket\n // closing handshake has not yet started, then the user agent must\n // send a WebSocket Message comprised of data using a binary frame\n // opcode; if the data cannot be sent, e.g. because it would need to\n // be buffered but the buffer is full, the user agent must flag the\n // WebSocket as full and then close the WebSocket connection. The data\n // to be sent is the raw data represented by the Blob object. Any\n // invocation of this method with a Blob argument that does not throw\n // an exception must increase the bufferedAmount attribute by the size\n // of the Blob object’s raw data, in bytes.\n\n const frame = new WebsocketFrameSend()\n\n data.arrayBuffer().then((ab) => {\n const value = Buffer.from(ab)\n frame.frameData = value\n const buffer = frame.createFrame(opcodes.BINARY)\n\n this.#bufferedAmount += value.byteLength\n socket.write(buffer, () => {\n this.#bufferedAmount -= value.byteLength\n })\n })\n }\n }\n\n get readyState () {\n webidl.brandCheck(this, WebSocket)\n\n // The readyState getter steps are to return this's ready state.\n return this[kReadyState]\n }\n\n get bufferedAmount () {\n webidl.brandCheck(this, WebSocket)\n\n return this.#bufferedAmount\n }\n\n get url () {\n webidl.brandCheck(this, WebSocket)\n\n // The url getter steps are to return this's url, serialized.\n return URLSerializer(this[kWebSocketURL])\n }\n\n get extensions () {\n webidl.brandCheck(this, WebSocket)\n\n return this.#extensions\n }\n\n get protocol () {\n webidl.brandCheck(this, WebSocket)\n\n return this.#protocol\n }\n\n get onopen () {\n webidl.brandCheck(this, WebSocket)\n\n return this.#events.open\n }\n\n set onopen (fn) {\n webidl.brandCheck(this, WebSocket)\n\n if (this.#events.open) {\n this.removeEventListener('open', this.#events.open)\n }\n\n if (typeof fn === 'function') {\n this.#events.open = fn\n this.addEventListener('open', fn)\n } else {\n this.#events.open = null\n }\n }\n\n get onerror () {\n webidl.brandCheck(this, WebSocket)\n\n return this.#events.error\n }\n\n set onerror (fn) {\n webidl.brandCheck(this, WebSocket)\n\n if (this.#events.error) {\n this.removeEventListener('error', this.#events.error)\n }\n\n if (typeof fn === 'function') {\n this.#events.error = fn\n this.addEventListener('error', fn)\n } else {\n this.#events.error = null\n }\n }\n\n get onclose () {\n webidl.brandCheck(this, WebSocket)\n\n return this.#events.close\n }\n\n set onclose (fn) {\n webidl.brandCheck(this, WebSocket)\n\n if (this.#events.close) {\n this.removeEventListener('close', this.#events.close)\n }\n\n if (typeof fn === 'function') {\n this.#events.close = fn\n this.addEventListener('close', fn)\n } else {\n this.#events.close = null\n }\n }\n\n get onmessage () {\n webidl.brandCheck(this, WebSocket)\n\n return this.#events.message\n }\n\n set onmessage (fn) {\n webidl.brandCheck(this, WebSocket)\n\n if (this.#events.message) {\n this.removeEventListener('message', this.#events.message)\n }\n\n if (typeof fn === 'function') {\n this.#events.message = fn\n this.addEventListener('message', fn)\n } else {\n this.#events.message = null\n }\n }\n\n get binaryType () {\n webidl.brandCheck(this, WebSocket)\n\n return this[kBinaryType]\n }\n\n set binaryType (type) {\n webidl.brandCheck(this, WebSocket)\n\n if (type !== 'blob' && type !== 'arraybuffer') {\n this[kBinaryType] = 'blob'\n } else {\n this[kBinaryType] = type\n }\n }\n\n /**\n * @see https://websockets.spec.whatwg.org/#feedback-from-the-protocol\n */\n #onConnectionEstablished (response) {\n // processResponse is called when the \"response’s header list has been received and initialized.\"\n // once this happens, the connection is open\n this[kResponse] = response\n\n const parser = new ByteParser(this)\n parser.on('drain', function onParserDrain () {\n this.ws[kResponse].socket.resume()\n })\n\n response.socket.ws = this\n this[kByteParser] = parser\n\n // 1. Change the ready state to OPEN (1).\n this[kReadyState] = states.OPEN\n\n // 2. Change the extensions attribute’s value to the extensions in use, if\n // it is not the null value.\n // https://datatracker.ietf.org/doc/html/rfc6455#section-9.1\n const extensions = response.headersList.get('sec-websocket-extensions')\n\n if (extensions !== null) {\n this.#extensions = extensions\n }\n\n // 3. Change the protocol attribute’s value to the subprotocol in use, if\n // it is not the null value.\n // https://datatracker.ietf.org/doc/html/rfc6455#section-1.9\n const protocol = response.headersList.get('sec-websocket-protocol')\n\n if (protocol !== null) {\n this.#protocol = protocol\n }\n\n // 4. Fire an event named open at the WebSocket object.\n fireEvent('open', this)\n }\n}\n\n// https://websockets.spec.whatwg.org/#dom-websocket-connecting\nWebSocket.CONNECTING = WebSocket.prototype.CONNECTING = states.CONNECTING\n// https://websockets.spec.whatwg.org/#dom-websocket-open\nWebSocket.OPEN = WebSocket.prototype.OPEN = states.OPEN\n// https://websockets.spec.whatwg.org/#dom-websocket-closing\nWebSocket.CLOSING = WebSocket.prototype.CLOSING = states.CLOSING\n// https://websockets.spec.whatwg.org/#dom-websocket-closed\nWebSocket.CLOSED = WebSocket.prototype.CLOSED = states.CLOSED\n\nObject.defineProperties(WebSocket.prototype, {\n CONNECTING: staticPropertyDescriptors,\n OPEN: staticPropertyDescriptors,\n CLOSING: staticPropertyDescriptors,\n CLOSED: staticPropertyDescriptors,\n url: kEnumerableProperty,\n readyState: kEnumerableProperty,\n bufferedAmount: kEnumerableProperty,\n onopen: kEnumerableProperty,\n onerror: kEnumerableProperty,\n onclose: kEnumerableProperty,\n close: kEnumerableProperty,\n onmessage: kEnumerableProperty,\n binaryType: kEnumerableProperty,\n send: kEnumerableProperty,\n extensions: kEnumerableProperty,\n protocol: kEnumerableProperty,\n [Symbol.toStringTag]: {\n value: 'WebSocket',\n writable: false,\n enumerable: false,\n configurable: true\n }\n})\n\nObject.defineProperties(WebSocket, {\n CONNECTING: staticPropertyDescriptors,\n OPEN: staticPropertyDescriptors,\n CLOSING: staticPropertyDescriptors,\n CLOSED: staticPropertyDescriptors\n})\n\nwebidl.converters['sequence'] = webidl.sequenceConverter(\n webidl.converters.DOMString\n)\n\nwebidl.converters['DOMString or sequence'] = function (V) {\n if (webidl.util.Type(V) === 'Object' && Symbol.iterator in V) {\n return webidl.converters['sequence'](V)\n }\n\n return webidl.converters.DOMString(V)\n}\n\n// This implements the propsal made in https://github.com/whatwg/websockets/issues/42\nwebidl.converters.WebSocketInit = webidl.dictionaryConverter([\n {\n key: 'protocols',\n converter: webidl.converters['DOMString or sequence'],\n get defaultValue () {\n return []\n }\n },\n {\n key: 'dispatcher',\n converter: (V) => V,\n get defaultValue () {\n return getGlobalDispatcher()\n }\n },\n {\n key: 'headers',\n converter: webidl.nullableConverter(webidl.converters.HeadersInit)\n }\n])\n\nwebidl.converters['DOMString or sequence or WebSocketInit'] = function (V) {\n if (webidl.util.Type(V) === 'Object' && !(Symbol.iterator in V)) {\n return webidl.converters.WebSocketInit(V)\n }\n\n return { protocols: webidl.converters['DOMString or sequence'](V) }\n}\n\nwebidl.converters.WebSocketSendData = function (V) {\n if (webidl.util.Type(V) === 'Object') {\n if (isBlobLike(V)) {\n return webidl.converters.Blob(V, { strict: false })\n }\n\n if (ArrayBuffer.isView(V) || types.isAnyArrayBuffer(V)) {\n return webidl.converters.BufferSource(V)\n }\n }\n\n return webidl.converters.USVString(V)\n}\n\nmodule.exports = {\n WebSocket\n}\n","'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\nfunction getUserAgent() {\n if (typeof navigator === \"object\" && \"userAgent\" in navigator) {\n return navigator.userAgent;\n }\n\n if (typeof process === \"object\" && process.version !== undefined) {\n return `Node.js/${process.version.substr(1)} (${process.platform}; ${process.arch})`;\n }\n\n return \"\";\n}\n\nexports.getUserAgent = getUserAgent;\n//# sourceMappingURL=index.js.map\n","'use strict'\n\nexports.fromCallback = function (fn) {\n return Object.defineProperty(function (...args) {\n if (typeof args[args.length - 1] === 'function') fn.apply(this, args)\n else {\n return new Promise((resolve, reject) => {\n args.push((err, res) => (err != null) ? reject(err) : resolve(res))\n fn.apply(this, args)\n })\n }\n }, 'name', { value: fn.name })\n}\n\nexports.fromPromise = function (fn) {\n return Object.defineProperty(function (...args) {\n const cb = args[args.length - 1]\n if (typeof cb !== 'function') return fn.apply(this, args)\n else {\n args.pop()\n fn.apply(this, args).then(r => cb(null, r), cb)\n }\n }, 'name', { value: fn.name })\n}\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"NIL\", {\n enumerable: true,\n get: function () {\n return _nil.default;\n }\n});\nObject.defineProperty(exports, \"parse\", {\n enumerable: true,\n get: function () {\n return _parse.default;\n }\n});\nObject.defineProperty(exports, \"stringify\", {\n enumerable: true,\n get: function () {\n return _stringify.default;\n }\n});\nObject.defineProperty(exports, \"v1\", {\n enumerable: true,\n get: function () {\n return _v.default;\n }\n});\nObject.defineProperty(exports, \"v3\", {\n enumerable: true,\n get: function () {\n return _v2.default;\n }\n});\nObject.defineProperty(exports, \"v4\", {\n enumerable: true,\n get: function () {\n return _v3.default;\n }\n});\nObject.defineProperty(exports, \"v5\", {\n enumerable: true,\n get: function () {\n return _v4.default;\n }\n});\nObject.defineProperty(exports, \"validate\", {\n enumerable: true,\n get: function () {\n return _validate.default;\n }\n});\nObject.defineProperty(exports, \"version\", {\n enumerable: true,\n get: function () {\n return _version.default;\n }\n});\n\nvar _v = _interopRequireDefault(require(\"./v1.js\"));\n\nvar _v2 = _interopRequireDefault(require(\"./v3.js\"));\n\nvar _v3 = _interopRequireDefault(require(\"./v4.js\"));\n\nvar _v4 = _interopRequireDefault(require(\"./v5.js\"));\n\nvar _nil = _interopRequireDefault(require(\"./nil.js\"));\n\nvar _version = _interopRequireDefault(require(\"./version.js\"));\n\nvar _validate = _interopRequireDefault(require(\"./validate.js\"));\n\nvar _stringify = _interopRequireDefault(require(\"./stringify.js\"));\n\nvar _parse = _interopRequireDefault(require(\"./parse.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _crypto = _interopRequireDefault(require(\"crypto\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction md5(bytes) {\n if (Array.isArray(bytes)) {\n bytes = Buffer.from(bytes);\n } else if (typeof bytes === 'string') {\n bytes = Buffer.from(bytes, 'utf8');\n }\n\n return _crypto.default.createHash('md5').update(bytes).digest();\n}\n\nvar _default = md5;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _crypto = _interopRequireDefault(require(\"crypto\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar _default = {\n randomUUID: _crypto.default.randomUUID\n};\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _default = '00000000-0000-0000-0000-000000000000';\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _validate = _interopRequireDefault(require(\"./validate.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction parse(uuid) {\n if (!(0, _validate.default)(uuid)) {\n throw TypeError('Invalid UUID');\n }\n\n let v;\n const arr = new Uint8Array(16); // Parse ########-....-....-....-............\n\n arr[0] = (v = parseInt(uuid.slice(0, 8), 16)) >>> 24;\n arr[1] = v >>> 16 & 0xff;\n arr[2] = v >>> 8 & 0xff;\n arr[3] = v & 0xff; // Parse ........-####-....-....-............\n\n arr[4] = (v = parseInt(uuid.slice(9, 13), 16)) >>> 8;\n arr[5] = v & 0xff; // Parse ........-....-####-....-............\n\n arr[6] = (v = parseInt(uuid.slice(14, 18), 16)) >>> 8;\n arr[7] = v & 0xff; // Parse ........-....-....-####-............\n\n arr[8] = (v = parseInt(uuid.slice(19, 23), 16)) >>> 8;\n arr[9] = v & 0xff; // Parse ........-....-....-....-############\n // (Use \"/\" to avoid 32-bit truncation when bit-shifting high-order bytes)\n\n arr[10] = (v = parseInt(uuid.slice(24, 36), 16)) / 0x10000000000 & 0xff;\n arr[11] = v / 0x100000000 & 0xff;\n arr[12] = v >>> 24 & 0xff;\n arr[13] = v >>> 16 & 0xff;\n arr[14] = v >>> 8 & 0xff;\n arr[15] = v & 0xff;\n return arr;\n}\n\nvar _default = parse;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _default = /^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = rng;\n\nvar _crypto = _interopRequireDefault(require(\"crypto\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nconst rnds8Pool = new Uint8Array(256); // # of random values to pre-allocate\n\nlet poolPtr = rnds8Pool.length;\n\nfunction rng() {\n if (poolPtr > rnds8Pool.length - 16) {\n _crypto.default.randomFillSync(rnds8Pool);\n\n poolPtr = 0;\n }\n\n return rnds8Pool.slice(poolPtr, poolPtr += 16);\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _crypto = _interopRequireDefault(require(\"crypto\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction sha1(bytes) {\n if (Array.isArray(bytes)) {\n bytes = Buffer.from(bytes);\n } else if (typeof bytes === 'string') {\n bytes = Buffer.from(bytes, 'utf8');\n }\n\n return _crypto.default.createHash('sha1').update(bytes).digest();\n}\n\nvar _default = sha1;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nexports.unsafeStringify = unsafeStringify;\n\nvar _validate = _interopRequireDefault(require(\"./validate.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * Convert array of 16 byte values to UUID string format of the form:\n * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX\n */\nconst byteToHex = [];\n\nfor (let i = 0; i < 256; ++i) {\n byteToHex.push((i + 0x100).toString(16).slice(1));\n}\n\nfunction unsafeStringify(arr, offset = 0) {\n // Note: Be careful editing this code! It's been tuned for performance\n // and works in ways you may not expect. See https://github.com/uuidjs/uuid/pull/434\n return byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + '-' + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + '-' + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + '-' + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + '-' + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]];\n}\n\nfunction stringify(arr, offset = 0) {\n const uuid = unsafeStringify(arr, offset); // Consistency check for valid UUID. If this throws, it's likely due to one\n // of the following:\n // - One or more input array values don't map to a hex octet (leading to\n // \"undefined\" in the uuid)\n // - Invalid input values for the RFC `version` or `variant` fields\n\n if (!(0, _validate.default)(uuid)) {\n throw TypeError('Stringified UUID is invalid');\n }\n\n return uuid;\n}\n\nvar _default = stringify;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _rng = _interopRequireDefault(require(\"./rng.js\"));\n\nvar _stringify = require(\"./stringify.js\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// **`v1()` - Generate time-based UUID**\n//\n// Inspired by https://github.com/LiosK/UUID.js\n// and http://docs.python.org/library/uuid.html\nlet _nodeId;\n\nlet _clockseq; // Previous uuid creation time\n\n\nlet _lastMSecs = 0;\nlet _lastNSecs = 0; // See https://github.com/uuidjs/uuid for API details\n\nfunction v1(options, buf, offset) {\n let i = buf && offset || 0;\n const b = buf || new Array(16);\n options = options || {};\n let node = options.node || _nodeId;\n let clockseq = options.clockseq !== undefined ? options.clockseq : _clockseq; // node and clockseq need to be initialized to random values if they're not\n // specified. We do this lazily to minimize issues related to insufficient\n // system entropy. See #189\n\n if (node == null || clockseq == null) {\n const seedBytes = options.random || (options.rng || _rng.default)();\n\n if (node == null) {\n // Per 4.5, create and 48-bit node id, (47 random bits + multicast bit = 1)\n node = _nodeId = [seedBytes[0] | 0x01, seedBytes[1], seedBytes[2], seedBytes[3], seedBytes[4], seedBytes[5]];\n }\n\n if (clockseq == null) {\n // Per 4.2.2, randomize (14 bit) clockseq\n clockseq = _clockseq = (seedBytes[6] << 8 | seedBytes[7]) & 0x3fff;\n }\n } // UUID timestamps are 100 nano-second units since the Gregorian epoch,\n // (1582-10-15 00:00). JSNumbers aren't precise enough for this, so\n // time is handled internally as 'msecs' (integer milliseconds) and 'nsecs'\n // (100-nanoseconds offset from msecs) since unix epoch, 1970-01-01 00:00.\n\n\n let msecs = options.msecs !== undefined ? options.msecs : Date.now(); // Per 4.2.1.2, use count of uuid's generated during the current clock\n // cycle to simulate higher resolution clock\n\n let nsecs = options.nsecs !== undefined ? options.nsecs : _lastNSecs + 1; // Time since last uuid creation (in msecs)\n\n const dt = msecs - _lastMSecs + (nsecs - _lastNSecs) / 10000; // Per 4.2.1.2, Bump clockseq on clock regression\n\n if (dt < 0 && options.clockseq === undefined) {\n clockseq = clockseq + 1 & 0x3fff;\n } // Reset nsecs if clock regresses (new clockseq) or we've moved onto a new\n // time interval\n\n\n if ((dt < 0 || msecs > _lastMSecs) && options.nsecs === undefined) {\n nsecs = 0;\n } // Per 4.2.1.2 Throw error if too many uuids are requested\n\n\n if (nsecs >= 10000) {\n throw new Error(\"uuid.v1(): Can't create more than 10M uuids/sec\");\n }\n\n _lastMSecs = msecs;\n _lastNSecs = nsecs;\n _clockseq = clockseq; // Per 4.1.4 - Convert from unix epoch to Gregorian epoch\n\n msecs += 12219292800000; // `time_low`\n\n const tl = ((msecs & 0xfffffff) * 10000 + nsecs) % 0x100000000;\n b[i++] = tl >>> 24 & 0xff;\n b[i++] = tl >>> 16 & 0xff;\n b[i++] = tl >>> 8 & 0xff;\n b[i++] = tl & 0xff; // `time_mid`\n\n const tmh = msecs / 0x100000000 * 10000 & 0xfffffff;\n b[i++] = tmh >>> 8 & 0xff;\n b[i++] = tmh & 0xff; // `time_high_and_version`\n\n b[i++] = tmh >>> 24 & 0xf | 0x10; // include version\n\n b[i++] = tmh >>> 16 & 0xff; // `clock_seq_hi_and_reserved` (Per 4.2.2 - include variant)\n\n b[i++] = clockseq >>> 8 | 0x80; // `clock_seq_low`\n\n b[i++] = clockseq & 0xff; // `node`\n\n for (let n = 0; n < 6; ++n) {\n b[i + n] = node[n];\n }\n\n return buf || (0, _stringify.unsafeStringify)(b);\n}\n\nvar _default = v1;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _v = _interopRequireDefault(require(\"./v35.js\"));\n\nvar _md = _interopRequireDefault(require(\"./md5.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nconst v3 = (0, _v.default)('v3', 0x30, _md.default);\nvar _default = v3;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.URL = exports.DNS = void 0;\nexports.default = v35;\n\nvar _stringify = require(\"./stringify.js\");\n\nvar _parse = _interopRequireDefault(require(\"./parse.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction stringToBytes(str) {\n str = unescape(encodeURIComponent(str)); // UTF8 escape\n\n const bytes = [];\n\n for (let i = 0; i < str.length; ++i) {\n bytes.push(str.charCodeAt(i));\n }\n\n return bytes;\n}\n\nconst DNS = '6ba7b810-9dad-11d1-80b4-00c04fd430c8';\nexports.DNS = DNS;\nconst URL = '6ba7b811-9dad-11d1-80b4-00c04fd430c8';\nexports.URL = URL;\n\nfunction v35(name, version, hashfunc) {\n function generateUUID(value, namespace, buf, offset) {\n var _namespace;\n\n if (typeof value === 'string') {\n value = stringToBytes(value);\n }\n\n if (typeof namespace === 'string') {\n namespace = (0, _parse.default)(namespace);\n }\n\n if (((_namespace = namespace) === null || _namespace === void 0 ? void 0 : _namespace.length) !== 16) {\n throw TypeError('Namespace must be array-like (16 iterable integer values, 0-255)');\n } // Compute hash of namespace and value, Per 4.3\n // Future: Use spread syntax when supported on all platforms, e.g. `bytes =\n // hashfunc([...namespace, ... value])`\n\n\n let bytes = new Uint8Array(16 + value.length);\n bytes.set(namespace);\n bytes.set(value, namespace.length);\n bytes = hashfunc(bytes);\n bytes[6] = bytes[6] & 0x0f | version;\n bytes[8] = bytes[8] & 0x3f | 0x80;\n\n if (buf) {\n offset = offset || 0;\n\n for (let i = 0; i < 16; ++i) {\n buf[offset + i] = bytes[i];\n }\n\n return buf;\n }\n\n return (0, _stringify.unsafeStringify)(bytes);\n } // Function#name is not settable on some platforms (#270)\n\n\n try {\n generateUUID.name = name; // eslint-disable-next-line no-empty\n } catch (err) {} // For CommonJS default export support\n\n\n generateUUID.DNS = DNS;\n generateUUID.URL = URL;\n return generateUUID;\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _native = _interopRequireDefault(require(\"./native.js\"));\n\nvar _rng = _interopRequireDefault(require(\"./rng.js\"));\n\nvar _stringify = require(\"./stringify.js\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction v4(options, buf, offset) {\n if (_native.default.randomUUID && !buf && !options) {\n return _native.default.randomUUID();\n }\n\n options = options || {};\n\n const rnds = options.random || (options.rng || _rng.default)(); // Per 4.4, set bits for version and `clock_seq_hi_and_reserved`\n\n\n rnds[6] = rnds[6] & 0x0f | 0x40;\n rnds[8] = rnds[8] & 0x3f | 0x80; // Copy bytes to buffer, if provided\n\n if (buf) {\n offset = offset || 0;\n\n for (let i = 0; i < 16; ++i) {\n buf[offset + i] = rnds[i];\n }\n\n return buf;\n }\n\n return (0, _stringify.unsafeStringify)(rnds);\n}\n\nvar _default = v4;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _v = _interopRequireDefault(require(\"./v35.js\"));\n\nvar _sha = _interopRequireDefault(require(\"./sha1.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nconst v5 = (0, _v.default)('v5', 0x50, _sha.default);\nvar _default = v5;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _regex = _interopRequireDefault(require(\"./regex.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction validate(uuid) {\n return typeof uuid === 'string' && _regex.default.test(uuid);\n}\n\nvar _default = validate;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _validate = _interopRequireDefault(require(\"./validate.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction version(uuid) {\n if (!(0, _validate.default)(uuid)) {\n throw TypeError('Invalid UUID');\n }\n\n return parseInt(uuid.slice(14, 15), 16);\n}\n\nvar _default = version;\nexports.default = _default;","// Returns a wrapper function that returns a wrapped callback\n// The wrapper function should do some stuff, and return a\n// presumably different callback function.\n// This makes sure that own properties are retained, so that\n// decorations and such are not lost along the way.\nmodule.exports = wrappy\nfunction wrappy (fn, cb) {\n if (fn && cb) return wrappy(fn)(cb)\n\n if (typeof fn !== 'function')\n throw new TypeError('need wrapper function')\n\n Object.keys(fn).forEach(function (k) {\n wrapper[k] = fn[k]\n })\n\n return wrapper\n\n function wrapper() {\n var args = new Array(arguments.length)\n for (var i = 0; i < args.length; i++) {\n args[i] = arguments[i]\n }\n var ret = fn.apply(this, args)\n var cb = args[args.length-1]\n if (typeof ret === 'function' && ret !== cb) {\n Object.keys(cb).forEach(function (k) {\n ret[k] = cb[k]\n })\n }\n return ret\n }\n}\n","module.exports = require(\"assert\");","module.exports = require(\"async_hooks\");","module.exports = require(\"buffer\");","module.exports = require(\"child_process\");","module.exports = require(\"console\");","module.exports = require(\"constants\");","module.exports = require(\"crypto\");","module.exports = require(\"diagnostics_channel\");","module.exports = require(\"events\");","module.exports = require(\"fs\");","module.exports = require(\"fs/promises\");","module.exports = require(\"http\");","module.exports = require(\"http2\");","module.exports = require(\"https\");","module.exports = require(\"net\");","module.exports = require(\"node:events\");","module.exports = require(\"node:fs\");","module.exports = require(\"node:path\");","module.exports = require(\"node:stream\");","module.exports = require(\"node:util\");","module.exports = require(\"node:zlib\");","module.exports = require(\"os\");","module.exports = require(\"path\");","module.exports = require(\"perf_hooks\");","module.exports = require(\"process\");","module.exports = require(\"querystring\");","module.exports = require(\"stream\");","module.exports = require(\"stream/web\");","module.exports = require(\"string_decoder\");","module.exports = require(\"timers\");","module.exports = require(\"tls\");","module.exports = require(\"tty\");","module.exports = require(\"url\");","module.exports = require(\"util\");","module.exports = require(\"util/types\");","module.exports = require(\"worker_threads\");","module.exports = require(\"zlib\");","'use strict'\n\nconst WritableStream = require('node:stream').Writable\nconst inherits = require('node:util').inherits\n\nconst StreamSearch = require('../../streamsearch/sbmh')\n\nconst PartStream = require('./PartStream')\nconst HeaderParser = require('./HeaderParser')\n\nconst DASH = 45\nconst B_ONEDASH = Buffer.from('-')\nconst B_CRLF = Buffer.from('\\r\\n')\nconst EMPTY_FN = function () {}\n\nfunction Dicer (cfg) {\n if (!(this instanceof Dicer)) { return new Dicer(cfg) }\n WritableStream.call(this, cfg)\n\n if (!cfg || (!cfg.headerFirst && typeof cfg.boundary !== 'string')) { throw new TypeError('Boundary required') }\n\n if (typeof cfg.boundary === 'string') { this.setBoundary(cfg.boundary) } else { this._bparser = undefined }\n\n this._headerFirst = cfg.headerFirst\n\n this._dashes = 0\n this._parts = 0\n this._finished = false\n this._realFinish = false\n this._isPreamble = true\n this._justMatched = false\n this._firstWrite = true\n this._inHeader = true\n this._part = undefined\n this._cb = undefined\n this._ignoreData = false\n this._partOpts = { highWaterMark: cfg.partHwm }\n this._pause = false\n\n const self = this\n this._hparser = new HeaderParser(cfg)\n this._hparser.on('header', function (header) {\n self._inHeader = false\n self._part.emit('header', header)\n })\n}\ninherits(Dicer, WritableStream)\n\nDicer.prototype.emit = function (ev) {\n if (ev === 'finish' && !this._realFinish) {\n if (!this._finished) {\n const self = this\n process.nextTick(function () {\n self.emit('error', new Error('Unexpected end of multipart data'))\n if (self._part && !self._ignoreData) {\n const type = (self._isPreamble ? 'Preamble' : 'Part')\n self._part.emit('error', new Error(type + ' terminated early due to unexpected end of multipart data'))\n self._part.push(null)\n process.nextTick(function () {\n self._realFinish = true\n self.emit('finish')\n self._realFinish = false\n })\n return\n }\n self._realFinish = true\n self.emit('finish')\n self._realFinish = false\n })\n }\n } else { WritableStream.prototype.emit.apply(this, arguments) }\n}\n\nDicer.prototype._write = function (data, encoding, cb) {\n // ignore unexpected data (e.g. extra trailer data after finished)\n if (!this._hparser && !this._bparser) { return cb() }\n\n if (this._headerFirst && this._isPreamble) {\n if (!this._part) {\n this._part = new PartStream(this._partOpts)\n if (this.listenerCount('preamble') !== 0) { this.emit('preamble', this._part) } else { this._ignore() }\n }\n const r = this._hparser.push(data)\n if (!this._inHeader && r !== undefined && r < data.length) { data = data.slice(r) } else { return cb() }\n }\n\n // allows for \"easier\" testing\n if (this._firstWrite) {\n this._bparser.push(B_CRLF)\n this._firstWrite = false\n }\n\n this._bparser.push(data)\n\n if (this._pause) { this._cb = cb } else { cb() }\n}\n\nDicer.prototype.reset = function () {\n this._part = undefined\n this._bparser = undefined\n this._hparser = undefined\n}\n\nDicer.prototype.setBoundary = function (boundary) {\n const self = this\n this._bparser = new StreamSearch('\\r\\n--' + boundary)\n this._bparser.on('info', function (isMatch, data, start, end) {\n self._oninfo(isMatch, data, start, end)\n })\n}\n\nDicer.prototype._ignore = function () {\n if (this._part && !this._ignoreData) {\n this._ignoreData = true\n this._part.on('error', EMPTY_FN)\n // we must perform some kind of read on the stream even though we are\n // ignoring the data, otherwise node's Readable stream will not emit 'end'\n // after pushing null to the stream\n this._part.resume()\n }\n}\n\nDicer.prototype._oninfo = function (isMatch, data, start, end) {\n let buf; const self = this; let i = 0; let r; let shouldWriteMore = true\n\n if (!this._part && this._justMatched && data) {\n while (this._dashes < 2 && (start + i) < end) {\n if (data[start + i] === DASH) {\n ++i\n ++this._dashes\n } else {\n if (this._dashes) { buf = B_ONEDASH }\n this._dashes = 0\n break\n }\n }\n if (this._dashes === 2) {\n if ((start + i) < end && this.listenerCount('trailer') !== 0) { this.emit('trailer', data.slice(start + i, end)) }\n this.reset()\n this._finished = true\n // no more parts will be added\n if (self._parts === 0) {\n self._realFinish = true\n self.emit('finish')\n self._realFinish = false\n }\n }\n if (this._dashes) { return }\n }\n if (this._justMatched) { this._justMatched = false }\n if (!this._part) {\n this._part = new PartStream(this._partOpts)\n this._part._read = function (n) {\n self._unpause()\n }\n if (this._isPreamble && this.listenerCount('preamble') !== 0) {\n this.emit('preamble', this._part)\n } else if (this._isPreamble !== true && this.listenerCount('part') !== 0) {\n this.emit('part', this._part)\n } else {\n this._ignore()\n }\n if (!this._isPreamble) { this._inHeader = true }\n }\n if (data && start < end && !this._ignoreData) {\n if (this._isPreamble || !this._inHeader) {\n if (buf) { shouldWriteMore = this._part.push(buf) }\n shouldWriteMore = this._part.push(data.slice(start, end))\n if (!shouldWriteMore) { this._pause = true }\n } else if (!this._isPreamble && this._inHeader) {\n if (buf) { this._hparser.push(buf) }\n r = this._hparser.push(data.slice(start, end))\n if (!this._inHeader && r !== undefined && r < end) { this._oninfo(false, data, start + r, end) }\n }\n }\n if (isMatch) {\n this._hparser.reset()\n if (this._isPreamble) { this._isPreamble = false } else {\n if (start !== end) {\n ++this._parts\n this._part.on('end', function () {\n if (--self._parts === 0) {\n if (self._finished) {\n self._realFinish = true\n self.emit('finish')\n self._realFinish = false\n } else {\n self._unpause()\n }\n }\n })\n }\n }\n this._part.push(null)\n this._part = undefined\n this._ignoreData = false\n this._justMatched = true\n this._dashes = 0\n }\n}\n\nDicer.prototype._unpause = function () {\n if (!this._pause) { return }\n\n this._pause = false\n if (this._cb) {\n const cb = this._cb\n this._cb = undefined\n cb()\n }\n}\n\nmodule.exports = Dicer\n","'use strict'\n\nconst EventEmitter = require('node:events').EventEmitter\nconst inherits = require('node:util').inherits\nconst getLimit = require('../../../lib/utils/getLimit')\n\nconst StreamSearch = require('../../streamsearch/sbmh')\n\nconst B_DCRLF = Buffer.from('\\r\\n\\r\\n')\nconst RE_CRLF = /\\r\\n/g\nconst RE_HDR = /^([^:]+):[ \\t]?([\\x00-\\xFF]+)?$/ // eslint-disable-line no-control-regex\n\nfunction HeaderParser (cfg) {\n EventEmitter.call(this)\n\n cfg = cfg || {}\n const self = this\n this.nread = 0\n this.maxed = false\n this.npairs = 0\n this.maxHeaderPairs = getLimit(cfg, 'maxHeaderPairs', 2000)\n this.maxHeaderSize = getLimit(cfg, 'maxHeaderSize', 80 * 1024)\n this.buffer = ''\n this.header = {}\n this.finished = false\n this.ss = new StreamSearch(B_DCRLF)\n this.ss.on('info', function (isMatch, data, start, end) {\n if (data && !self.maxed) {\n if (self.nread + end - start >= self.maxHeaderSize) {\n end = self.maxHeaderSize - self.nread + start\n self.nread = self.maxHeaderSize\n self.maxed = true\n } else { self.nread += (end - start) }\n\n self.buffer += data.toString('binary', start, end)\n }\n if (isMatch) { self._finish() }\n })\n}\ninherits(HeaderParser, EventEmitter)\n\nHeaderParser.prototype.push = function (data) {\n const r = this.ss.push(data)\n if (this.finished) { return r }\n}\n\nHeaderParser.prototype.reset = function () {\n this.finished = false\n this.buffer = ''\n this.header = {}\n this.ss.reset()\n}\n\nHeaderParser.prototype._finish = function () {\n if (this.buffer) { this._parseHeader() }\n this.ss.matches = this.ss.maxMatches\n const header = this.header\n this.header = {}\n this.buffer = ''\n this.finished = true\n this.nread = this.npairs = 0\n this.maxed = false\n this.emit('header', header)\n}\n\nHeaderParser.prototype._parseHeader = function () {\n if (this.npairs === this.maxHeaderPairs) { return }\n\n const lines = this.buffer.split(RE_CRLF)\n const len = lines.length\n let m, h\n\n for (var i = 0; i < len; ++i) { // eslint-disable-line no-var\n if (lines[i].length === 0) { continue }\n if (lines[i][0] === '\\t' || lines[i][0] === ' ') {\n // folded header content\n // RFC2822 says to just remove the CRLF and not the whitespace following\n // it, so we follow the RFC and include the leading whitespace ...\n if (h) {\n this.header[h][this.header[h].length - 1] += lines[i]\n continue\n }\n }\n\n const posColon = lines[i].indexOf(':')\n if (\n posColon === -1 ||\n posColon === 0\n ) {\n return\n }\n m = RE_HDR.exec(lines[i])\n h = m[1].toLowerCase()\n this.header[h] = this.header[h] || []\n this.header[h].push((m[2] || ''))\n if (++this.npairs === this.maxHeaderPairs) { break }\n }\n}\n\nmodule.exports = HeaderParser\n","'use strict'\n\nconst inherits = require('node:util').inherits\nconst ReadableStream = require('node:stream').Readable\n\nfunction PartStream (opts) {\n ReadableStream.call(this, opts)\n}\ninherits(PartStream, ReadableStream)\n\nPartStream.prototype._read = function (n) {}\n\nmodule.exports = PartStream\n","'use strict'\n\n/**\n * Copyright Brian White. All rights reserved.\n *\n * @see https://github.com/mscdex/streamsearch\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n *\n * Based heavily on the Streaming Boyer-Moore-Horspool C++ implementation\n * by Hongli Lai at: https://github.com/FooBarWidget/boyer-moore-horspool\n */\nconst EventEmitter = require('node:events').EventEmitter\nconst inherits = require('node:util').inherits\n\nfunction SBMH (needle) {\n if (typeof needle === 'string') {\n needle = Buffer.from(needle)\n }\n\n if (!Buffer.isBuffer(needle)) {\n throw new TypeError('The needle has to be a String or a Buffer.')\n }\n\n const needleLength = needle.length\n\n if (needleLength === 0) {\n throw new Error('The needle cannot be an empty String/Buffer.')\n }\n\n if (needleLength > 256) {\n throw new Error('The needle cannot have a length bigger than 256.')\n }\n\n this.maxMatches = Infinity\n this.matches = 0\n\n this._occ = new Array(256)\n .fill(needleLength) // Initialize occurrence table.\n this._lookbehind_size = 0\n this._needle = needle\n this._bufpos = 0\n\n this._lookbehind = Buffer.alloc(needleLength)\n\n // Populate occurrence table with analysis of the needle,\n // ignoring last letter.\n for (var i = 0; i < needleLength - 1; ++i) { // eslint-disable-line no-var\n this._occ[needle[i]] = needleLength - 1 - i\n }\n}\ninherits(SBMH, EventEmitter)\n\nSBMH.prototype.reset = function () {\n this._lookbehind_size = 0\n this.matches = 0\n this._bufpos = 0\n}\n\nSBMH.prototype.push = function (chunk, pos) {\n if (!Buffer.isBuffer(chunk)) {\n chunk = Buffer.from(chunk, 'binary')\n }\n const chlen = chunk.length\n this._bufpos = pos || 0\n let r\n while (r !== chlen && this.matches < this.maxMatches) { r = this._sbmh_feed(chunk) }\n return r\n}\n\nSBMH.prototype._sbmh_feed = function (data) {\n const len = data.length\n const needle = this._needle\n const needleLength = needle.length\n const lastNeedleChar = needle[needleLength - 1]\n\n // Positive: points to a position in `data`\n // pos == 3 points to data[3]\n // Negative: points to a position in the lookbehind buffer\n // pos == -2 points to lookbehind[lookbehind_size - 2]\n let pos = -this._lookbehind_size\n let ch\n\n if (pos < 0) {\n // Lookbehind buffer is not empty. Perform Boyer-Moore-Horspool\n // search with character lookup code that considers both the\n // lookbehind buffer and the current round's haystack data.\n //\n // Loop until\n // there is a match.\n // or until\n // we've moved past the position that requires the\n // lookbehind buffer. In this case we switch to the\n // optimized loop.\n // or until\n // the character to look at lies outside the haystack.\n while (pos < 0 && pos <= len - needleLength) {\n ch = this._sbmh_lookup_char(data, pos + needleLength - 1)\n\n if (\n ch === lastNeedleChar &&\n this._sbmh_memcmp(data, pos, needleLength - 1)\n ) {\n this._lookbehind_size = 0\n ++this.matches\n this.emit('info', true)\n\n return (this._bufpos = pos + needleLength)\n }\n pos += this._occ[ch]\n }\n\n // No match.\n\n if (pos < 0) {\n // There's too few data for Boyer-Moore-Horspool to run,\n // so let's use a different algorithm to skip as much as\n // we can.\n // Forward pos until\n // the trailing part of lookbehind + data\n // looks like the beginning of the needle\n // or until\n // pos == 0\n while (pos < 0 && !this._sbmh_memcmp(data, pos, len - pos)) { ++pos }\n }\n\n if (pos >= 0) {\n // Discard lookbehind buffer.\n this.emit('info', false, this._lookbehind, 0, this._lookbehind_size)\n this._lookbehind_size = 0\n } else {\n // Cut off part of the lookbehind buffer that has\n // been processed and append the entire haystack\n // into it.\n const bytesToCutOff = this._lookbehind_size + pos\n if (bytesToCutOff > 0) {\n // The cut off data is guaranteed not to contain the needle.\n this.emit('info', false, this._lookbehind, 0, bytesToCutOff)\n }\n\n this._lookbehind.copy(this._lookbehind, 0, bytesToCutOff,\n this._lookbehind_size - bytesToCutOff)\n this._lookbehind_size -= bytesToCutOff\n\n data.copy(this._lookbehind, this._lookbehind_size)\n this._lookbehind_size += len\n\n this._bufpos = len\n return len\n }\n }\n\n pos += (pos >= 0) * this._bufpos\n\n // Lookbehind buffer is now empty. We only need to check if the\n // needle is in the haystack.\n if (data.indexOf(needle, pos) !== -1) {\n pos = data.indexOf(needle, pos)\n ++this.matches\n if (pos > 0) { this.emit('info', true, data, this._bufpos, pos) } else { this.emit('info', true) }\n\n return (this._bufpos = pos + needleLength)\n } else {\n pos = len - needleLength\n }\n\n // There was no match. If there's trailing haystack data that we cannot\n // match yet using the Boyer-Moore-Horspool algorithm (because the trailing\n // data is less than the needle size) then match using a modified\n // algorithm that starts matching from the beginning instead of the end.\n // Whatever trailing data is left after running this algorithm is added to\n // the lookbehind buffer.\n while (\n pos < len &&\n (\n data[pos] !== needle[0] ||\n (\n (Buffer.compare(\n data.subarray(pos, pos + len - pos),\n needle.subarray(0, len - pos)\n ) !== 0)\n )\n )\n ) {\n ++pos\n }\n if (pos < len) {\n data.copy(this._lookbehind, 0, pos, pos + (len - pos))\n this._lookbehind_size = len - pos\n }\n\n // Everything until pos is guaranteed not to contain needle data.\n if (pos > 0) { this.emit('info', false, data, this._bufpos, pos < len ? pos : len) }\n\n this._bufpos = len\n return len\n}\n\nSBMH.prototype._sbmh_lookup_char = function (data, pos) {\n return (pos < 0)\n ? this._lookbehind[this._lookbehind_size + pos]\n : data[pos]\n}\n\nSBMH.prototype._sbmh_memcmp = function (data, pos, len) {\n for (var i = 0; i < len; ++i) { // eslint-disable-line no-var\n if (this._sbmh_lookup_char(data, pos + i) !== this._needle[i]) { return false }\n }\n return true\n}\n\nmodule.exports = SBMH\n","'use strict'\n\nconst WritableStream = require('node:stream').Writable\nconst { inherits } = require('node:util')\nconst Dicer = require('../deps/dicer/lib/Dicer')\n\nconst MultipartParser = require('./types/multipart')\nconst UrlencodedParser = require('./types/urlencoded')\nconst parseParams = require('./utils/parseParams')\n\nfunction Busboy (opts) {\n if (!(this instanceof Busboy)) { return new Busboy(opts) }\n\n if (typeof opts !== 'object') {\n throw new TypeError('Busboy expected an options-Object.')\n }\n if (typeof opts.headers !== 'object') {\n throw new TypeError('Busboy expected an options-Object with headers-attribute.')\n }\n if (typeof opts.headers['content-type'] !== 'string') {\n throw new TypeError('Missing Content-Type-header.')\n }\n\n const {\n headers,\n ...streamOptions\n } = opts\n\n this.opts = {\n autoDestroy: false,\n ...streamOptions\n }\n WritableStream.call(this, this.opts)\n\n this._done = false\n this._parser = this.getParserByHeaders(headers)\n this._finished = false\n}\ninherits(Busboy, WritableStream)\n\nBusboy.prototype.emit = function (ev) {\n if (ev === 'finish') {\n if (!this._done) {\n this._parser?.end()\n return\n } else if (this._finished) {\n return\n }\n this._finished = true\n }\n WritableStream.prototype.emit.apply(this, arguments)\n}\n\nBusboy.prototype.getParserByHeaders = function (headers) {\n const parsed = parseParams(headers['content-type'])\n\n const cfg = {\n defCharset: this.opts.defCharset,\n fileHwm: this.opts.fileHwm,\n headers,\n highWaterMark: this.opts.highWaterMark,\n isPartAFile: this.opts.isPartAFile,\n limits: this.opts.limits,\n parsedConType: parsed,\n preservePath: this.opts.preservePath\n }\n\n if (MultipartParser.detect.test(parsed[0])) {\n return new MultipartParser(this, cfg)\n }\n if (UrlencodedParser.detect.test(parsed[0])) {\n return new UrlencodedParser(this, cfg)\n }\n throw new Error('Unsupported Content-Type.')\n}\n\nBusboy.prototype._write = function (chunk, encoding, cb) {\n this._parser.write(chunk, cb)\n}\n\nmodule.exports = Busboy\nmodule.exports.default = Busboy\nmodule.exports.Busboy = Busboy\n\nmodule.exports.Dicer = Dicer\n","'use strict'\n\n// TODO:\n// * support 1 nested multipart level\n// (see second multipart example here:\n// http://www.w3.org/TR/html401/interact/forms.html#didx-multipartform-data)\n// * support limits.fieldNameSize\n// -- this will require modifications to utils.parseParams\n\nconst { Readable } = require('node:stream')\nconst { inherits } = require('node:util')\n\nconst Dicer = require('../../deps/dicer/lib/Dicer')\n\nconst parseParams = require('../utils/parseParams')\nconst decodeText = require('../utils/decodeText')\nconst basename = require('../utils/basename')\nconst getLimit = require('../utils/getLimit')\n\nconst RE_BOUNDARY = /^boundary$/i\nconst RE_FIELD = /^form-data$/i\nconst RE_CHARSET = /^charset$/i\nconst RE_FILENAME = /^filename$/i\nconst RE_NAME = /^name$/i\n\nMultipart.detect = /^multipart\\/form-data/i\nfunction Multipart (boy, cfg) {\n let i\n let len\n const self = this\n let boundary\n const limits = cfg.limits\n const isPartAFile = cfg.isPartAFile || ((fieldName, contentType, fileName) => (contentType === 'application/octet-stream' || fileName !== undefined))\n const parsedConType = cfg.parsedConType || []\n const defCharset = cfg.defCharset || 'utf8'\n const preservePath = cfg.preservePath\n const fileOpts = { highWaterMark: cfg.fileHwm }\n\n for (i = 0, len = parsedConType.length; i < len; ++i) {\n if (Array.isArray(parsedConType[i]) &&\n RE_BOUNDARY.test(parsedConType[i][0])) {\n boundary = parsedConType[i][1]\n break\n }\n }\n\n function checkFinished () {\n if (nends === 0 && finished && !boy._done) {\n finished = false\n self.end()\n }\n }\n\n if (typeof boundary !== 'string') { throw new Error('Multipart: Boundary not found') }\n\n const fieldSizeLimit = getLimit(limits, 'fieldSize', 1 * 1024 * 1024)\n const fileSizeLimit = getLimit(limits, 'fileSize', Infinity)\n const filesLimit = getLimit(limits, 'files', Infinity)\n const fieldsLimit = getLimit(limits, 'fields', Infinity)\n const partsLimit = getLimit(limits, 'parts', Infinity)\n const headerPairsLimit = getLimit(limits, 'headerPairs', 2000)\n const headerSizeLimit = getLimit(limits, 'headerSize', 80 * 1024)\n\n let nfiles = 0\n let nfields = 0\n let nends = 0\n let curFile\n let curField\n let finished = false\n\n this._needDrain = false\n this._pause = false\n this._cb = undefined\n this._nparts = 0\n this._boy = boy\n\n const parserCfg = {\n boundary,\n maxHeaderPairs: headerPairsLimit,\n maxHeaderSize: headerSizeLimit,\n partHwm: fileOpts.highWaterMark,\n highWaterMark: cfg.highWaterMark\n }\n\n this.parser = new Dicer(parserCfg)\n this.parser.on('drain', function () {\n self._needDrain = false\n if (self._cb && !self._pause) {\n const cb = self._cb\n self._cb = undefined\n cb()\n }\n }).on('part', function onPart (part) {\n if (++self._nparts > partsLimit) {\n self.parser.removeListener('part', onPart)\n self.parser.on('part', skipPart)\n boy.hitPartsLimit = true\n boy.emit('partsLimit')\n return skipPart(part)\n }\n\n // hack because streams2 _always_ doesn't emit 'end' until nextTick, so let\n // us emit 'end' early since we know the part has ended if we are already\n // seeing the next part\n if (curField) {\n const field = curField\n field.emit('end')\n field.removeAllListeners('end')\n }\n\n part.on('header', function (header) {\n let contype\n let fieldname\n let parsed\n let charset\n let encoding\n let filename\n let nsize = 0\n\n if (header['content-type']) {\n parsed = parseParams(header['content-type'][0])\n if (parsed[0]) {\n contype = parsed[0].toLowerCase()\n for (i = 0, len = parsed.length; i < len; ++i) {\n if (RE_CHARSET.test(parsed[i][0])) {\n charset = parsed[i][1].toLowerCase()\n break\n }\n }\n }\n }\n\n if (contype === undefined) { contype = 'text/plain' }\n if (charset === undefined) { charset = defCharset }\n\n if (header['content-disposition']) {\n parsed = parseParams(header['content-disposition'][0])\n if (!RE_FIELD.test(parsed[0])) { return skipPart(part) }\n for (i = 0, len = parsed.length; i < len; ++i) {\n if (RE_NAME.test(parsed[i][0])) {\n fieldname = parsed[i][1]\n } else if (RE_FILENAME.test(parsed[i][0])) {\n filename = parsed[i][1]\n if (!preservePath) { filename = basename(filename) }\n }\n }\n } else { return skipPart(part) }\n\n if (header['content-transfer-encoding']) { encoding = header['content-transfer-encoding'][0].toLowerCase() } else { encoding = '7bit' }\n\n let onData,\n onEnd\n\n if (isPartAFile(fieldname, contype, filename)) {\n // file/binary field\n if (nfiles === filesLimit) {\n if (!boy.hitFilesLimit) {\n boy.hitFilesLimit = true\n boy.emit('filesLimit')\n }\n return skipPart(part)\n }\n\n ++nfiles\n\n if (boy.listenerCount('file') === 0) {\n self.parser._ignore()\n return\n }\n\n ++nends\n const file = new FileStream(fileOpts)\n curFile = file\n file.on('end', function () {\n --nends\n self._pause = false\n checkFinished()\n if (self._cb && !self._needDrain) {\n const cb = self._cb\n self._cb = undefined\n cb()\n }\n })\n file._read = function (n) {\n if (!self._pause) { return }\n self._pause = false\n if (self._cb && !self._needDrain) {\n const cb = self._cb\n self._cb = undefined\n cb()\n }\n }\n boy.emit('file', fieldname, file, filename, encoding, contype)\n\n onData = function (data) {\n if ((nsize += data.length) > fileSizeLimit) {\n const extralen = fileSizeLimit - nsize + data.length\n if (extralen > 0) { file.push(data.slice(0, extralen)) }\n file.truncated = true\n file.bytesRead = fileSizeLimit\n part.removeAllListeners('data')\n file.emit('limit')\n return\n } else if (!file.push(data)) { self._pause = true }\n\n file.bytesRead = nsize\n }\n\n onEnd = function () {\n curFile = undefined\n file.push(null)\n }\n } else {\n // non-file field\n if (nfields === fieldsLimit) {\n if (!boy.hitFieldsLimit) {\n boy.hitFieldsLimit = true\n boy.emit('fieldsLimit')\n }\n return skipPart(part)\n }\n\n ++nfields\n ++nends\n let buffer = ''\n let truncated = false\n curField = part\n\n onData = function (data) {\n if ((nsize += data.length) > fieldSizeLimit) {\n const extralen = (fieldSizeLimit - (nsize - data.length))\n buffer += data.toString('binary', 0, extralen)\n truncated = true\n part.removeAllListeners('data')\n } else { buffer += data.toString('binary') }\n }\n\n onEnd = function () {\n curField = undefined\n if (buffer.length) { buffer = decodeText(buffer, 'binary', charset) }\n boy.emit('field', fieldname, buffer, false, truncated, encoding, contype)\n --nends\n checkFinished()\n }\n }\n\n /* As of node@2efe4ab761666 (v0.10.29+/v0.11.14+), busboy had become\n broken. Streams2/streams3 is a huge black box of confusion, but\n somehow overriding the sync state seems to fix things again (and still\n seems to work for previous node versions).\n */\n part._readableState.sync = false\n\n part.on('data', onData)\n part.on('end', onEnd)\n }).on('error', function (err) {\n if (curFile) { curFile.emit('error', err) }\n })\n }).on('error', function (err) {\n boy.emit('error', err)\n }).on('finish', function () {\n finished = true\n checkFinished()\n })\n}\n\nMultipart.prototype.write = function (chunk, cb) {\n const r = this.parser.write(chunk)\n if (r && !this._pause) {\n cb()\n } else {\n this._needDrain = !r\n this._cb = cb\n }\n}\n\nMultipart.prototype.end = function () {\n const self = this\n\n if (self.parser.writable) {\n self.parser.end()\n } else if (!self._boy._done) {\n process.nextTick(function () {\n self._boy._done = true\n self._boy.emit('finish')\n })\n }\n}\n\nfunction skipPart (part) {\n part.resume()\n}\n\nfunction FileStream (opts) {\n Readable.call(this, opts)\n\n this.bytesRead = 0\n\n this.truncated = false\n}\n\ninherits(FileStream, Readable)\n\nFileStream.prototype._read = function (n) {}\n\nmodule.exports = Multipart\n","'use strict'\n\nconst Decoder = require('../utils/Decoder')\nconst decodeText = require('../utils/decodeText')\nconst getLimit = require('../utils/getLimit')\n\nconst RE_CHARSET = /^charset$/i\n\nUrlEncoded.detect = /^application\\/x-www-form-urlencoded/i\nfunction UrlEncoded (boy, cfg) {\n const limits = cfg.limits\n const parsedConType = cfg.parsedConType\n this.boy = boy\n\n this.fieldSizeLimit = getLimit(limits, 'fieldSize', 1 * 1024 * 1024)\n this.fieldNameSizeLimit = getLimit(limits, 'fieldNameSize', 100)\n this.fieldsLimit = getLimit(limits, 'fields', Infinity)\n\n let charset\n for (var i = 0, len = parsedConType.length; i < len; ++i) { // eslint-disable-line no-var\n if (Array.isArray(parsedConType[i]) &&\n RE_CHARSET.test(parsedConType[i][0])) {\n charset = parsedConType[i][1].toLowerCase()\n break\n }\n }\n\n if (charset === undefined) { charset = cfg.defCharset || 'utf8' }\n\n this.decoder = new Decoder()\n this.charset = charset\n this._fields = 0\n this._state = 'key'\n this._checkingBytes = true\n this._bytesKey = 0\n this._bytesVal = 0\n this._key = ''\n this._val = ''\n this._keyTrunc = false\n this._valTrunc = false\n this._hitLimit = false\n}\n\nUrlEncoded.prototype.write = function (data, cb) {\n if (this._fields === this.fieldsLimit) {\n if (!this.boy.hitFieldsLimit) {\n this.boy.hitFieldsLimit = true\n this.boy.emit('fieldsLimit')\n }\n return cb()\n }\n\n let idxeq; let idxamp; let i; let p = 0; const len = data.length\n\n while (p < len) {\n if (this._state === 'key') {\n idxeq = idxamp = undefined\n for (i = p; i < len; ++i) {\n if (!this._checkingBytes) { ++p }\n if (data[i] === 0x3D/* = */) {\n idxeq = i\n break\n } else if (data[i] === 0x26/* & */) {\n idxamp = i\n break\n }\n if (this._checkingBytes && this._bytesKey === this.fieldNameSizeLimit) {\n this._hitLimit = true\n break\n } else if (this._checkingBytes) { ++this._bytesKey }\n }\n\n if (idxeq !== undefined) {\n // key with assignment\n if (idxeq > p) { this._key += this.decoder.write(data.toString('binary', p, idxeq)) }\n this._state = 'val'\n\n this._hitLimit = false\n this._checkingBytes = true\n this._val = ''\n this._bytesVal = 0\n this._valTrunc = false\n this.decoder.reset()\n\n p = idxeq + 1\n } else if (idxamp !== undefined) {\n // key with no assignment\n ++this._fields\n let key; const keyTrunc = this._keyTrunc\n if (idxamp > p) { key = (this._key += this.decoder.write(data.toString('binary', p, idxamp))) } else { key = this._key }\n\n this._hitLimit = false\n this._checkingBytes = true\n this._key = ''\n this._bytesKey = 0\n this._keyTrunc = false\n this.decoder.reset()\n\n if (key.length) {\n this.boy.emit('field', decodeText(key, 'binary', this.charset),\n '',\n keyTrunc,\n false)\n }\n\n p = idxamp + 1\n if (this._fields === this.fieldsLimit) { return cb() }\n } else if (this._hitLimit) {\n // we may not have hit the actual limit if there are encoded bytes...\n if (i > p) { this._key += this.decoder.write(data.toString('binary', p, i)) }\n p = i\n if ((this._bytesKey = this._key.length) === this.fieldNameSizeLimit) {\n // yep, we actually did hit the limit\n this._checkingBytes = false\n this._keyTrunc = true\n }\n } else {\n if (p < len) { this._key += this.decoder.write(data.toString('binary', p)) }\n p = len\n }\n } else {\n idxamp = undefined\n for (i = p; i < len; ++i) {\n if (!this._checkingBytes) { ++p }\n if (data[i] === 0x26/* & */) {\n idxamp = i\n break\n }\n if (this._checkingBytes && this._bytesVal === this.fieldSizeLimit) {\n this._hitLimit = true\n break\n } else if (this._checkingBytes) { ++this._bytesVal }\n }\n\n if (idxamp !== undefined) {\n ++this._fields\n if (idxamp > p) { this._val += this.decoder.write(data.toString('binary', p, idxamp)) }\n this.boy.emit('field', decodeText(this._key, 'binary', this.charset),\n decodeText(this._val, 'binary', this.charset),\n this._keyTrunc,\n this._valTrunc)\n this._state = 'key'\n\n this._hitLimit = false\n this._checkingBytes = true\n this._key = ''\n this._bytesKey = 0\n this._keyTrunc = false\n this.decoder.reset()\n\n p = idxamp + 1\n if (this._fields === this.fieldsLimit) { return cb() }\n } else if (this._hitLimit) {\n // we may not have hit the actual limit if there are encoded bytes...\n if (i > p) { this._val += this.decoder.write(data.toString('binary', p, i)) }\n p = i\n if ((this._val === '' && this.fieldSizeLimit === 0) ||\n (this._bytesVal = this._val.length) === this.fieldSizeLimit) {\n // yep, we actually did hit the limit\n this._checkingBytes = false\n this._valTrunc = true\n }\n } else {\n if (p < len) { this._val += this.decoder.write(data.toString('binary', p)) }\n p = len\n }\n }\n }\n cb()\n}\n\nUrlEncoded.prototype.end = function () {\n if (this.boy._done) { return }\n\n if (this._state === 'key' && this._key.length > 0) {\n this.boy.emit('field', decodeText(this._key, 'binary', this.charset),\n '',\n this._keyTrunc,\n false)\n } else if (this._state === 'val') {\n this.boy.emit('field', decodeText(this._key, 'binary', this.charset),\n decodeText(this._val, 'binary', this.charset),\n this._keyTrunc,\n this._valTrunc)\n }\n this.boy._done = true\n this.boy.emit('finish')\n}\n\nmodule.exports = UrlEncoded\n","'use strict'\n\nconst RE_PLUS = /\\+/g\n\nconst HEX = [\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0,\n 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0\n]\n\nfunction Decoder () {\n this.buffer = undefined\n}\nDecoder.prototype.write = function (str) {\n // Replace '+' with ' ' before decoding\n str = str.replace(RE_PLUS, ' ')\n let res = ''\n let i = 0; let p = 0; const len = str.length\n for (; i < len; ++i) {\n if (this.buffer !== undefined) {\n if (!HEX[str.charCodeAt(i)]) {\n res += '%' + this.buffer\n this.buffer = undefined\n --i // retry character\n } else {\n this.buffer += str[i]\n ++p\n if (this.buffer.length === 2) {\n res += String.fromCharCode(parseInt(this.buffer, 16))\n this.buffer = undefined\n }\n }\n } else if (str[i] === '%') {\n if (i > p) {\n res += str.substring(p, i)\n p = i\n }\n this.buffer = ''\n ++p\n }\n }\n if (p < len && this.buffer === undefined) { res += str.substring(p) }\n return res\n}\nDecoder.prototype.reset = function () {\n this.buffer = undefined\n}\n\nmodule.exports = Decoder\n","'use strict'\n\nmodule.exports = function basename (path) {\n if (typeof path !== 'string') { return '' }\n for (var i = path.length - 1; i >= 0; --i) { // eslint-disable-line no-var\n switch (path.charCodeAt(i)) {\n case 0x2F: // '/'\n case 0x5C: // '\\'\n path = path.slice(i + 1)\n return (path === '..' || path === '.' ? '' : path)\n }\n }\n return (path === '..' || path === '.' ? '' : path)\n}\n","'use strict'\n\n// Node has always utf-8\nconst utf8Decoder = new TextDecoder('utf-8')\nconst textDecoders = new Map([\n ['utf-8', utf8Decoder],\n ['utf8', utf8Decoder]\n])\n\nfunction getDecoder (charset) {\n let lc\n while (true) {\n switch (charset) {\n case 'utf-8':\n case 'utf8':\n return decoders.utf8\n case 'latin1':\n case 'ascii': // TODO: Make these a separate, strict decoder?\n case 'us-ascii':\n case 'iso-8859-1':\n case 'iso8859-1':\n case 'iso88591':\n case 'iso_8859-1':\n case 'windows-1252':\n case 'iso_8859-1:1987':\n case 'cp1252':\n case 'x-cp1252':\n return decoders.latin1\n case 'utf16le':\n case 'utf-16le':\n case 'ucs2':\n case 'ucs-2':\n return decoders.utf16le\n case 'base64':\n return decoders.base64\n default:\n if (lc === undefined) {\n lc = true\n charset = charset.toLowerCase()\n continue\n }\n return decoders.other.bind(charset)\n }\n }\n}\n\nconst decoders = {\n utf8: (data, sourceEncoding) => {\n if (data.length === 0) {\n return ''\n }\n if (typeof data === 'string') {\n data = Buffer.from(data, sourceEncoding)\n }\n return data.utf8Slice(0, data.length)\n },\n\n latin1: (data, sourceEncoding) => {\n if (data.length === 0) {\n return ''\n }\n if (typeof data === 'string') {\n return data\n }\n return data.latin1Slice(0, data.length)\n },\n\n utf16le: (data, sourceEncoding) => {\n if (data.length === 0) {\n return ''\n }\n if (typeof data === 'string') {\n data = Buffer.from(data, sourceEncoding)\n }\n return data.ucs2Slice(0, data.length)\n },\n\n base64: (data, sourceEncoding) => {\n if (data.length === 0) {\n return ''\n }\n if (typeof data === 'string') {\n data = Buffer.from(data, sourceEncoding)\n }\n return data.base64Slice(0, data.length)\n },\n\n other: (data, sourceEncoding) => {\n if (data.length === 0) {\n return ''\n }\n if (typeof data === 'string') {\n data = Buffer.from(data, sourceEncoding)\n }\n\n if (textDecoders.has(this.toString())) {\n try {\n return textDecoders.get(this).decode(data)\n } catch {}\n }\n return typeof data === 'string'\n ? data\n : data.toString()\n }\n}\n\nfunction decodeText (text, sourceEncoding, destEncoding) {\n if (text) {\n return getDecoder(destEncoding)(text, sourceEncoding)\n }\n return text\n}\n\nmodule.exports = decodeText\n","'use strict'\n\nmodule.exports = function getLimit (limits, name, defaultLimit) {\n if (\n !limits ||\n limits[name] === undefined ||\n limits[name] === null\n ) { return defaultLimit }\n\n if (\n typeof limits[name] !== 'number' ||\n isNaN(limits[name])\n ) { throw new TypeError('Limit ' + name + ' is not a valid number') }\n\n return limits[name]\n}\n","/* eslint-disable object-property-newline */\n'use strict'\n\nconst decodeText = require('./decodeText')\n\nconst RE_ENCODED = /%[a-fA-F0-9][a-fA-F0-9]/g\n\nconst EncodedLookup = {\n '%00': '\\x00', '%01': '\\x01', '%02': '\\x02', '%03': '\\x03', '%04': '\\x04',\n '%05': '\\x05', '%06': '\\x06', '%07': '\\x07', '%08': '\\x08', '%09': '\\x09',\n '%0a': '\\x0a', '%0A': '\\x0a', '%0b': '\\x0b', '%0B': '\\x0b', '%0c': '\\x0c',\n '%0C': '\\x0c', '%0d': '\\x0d', '%0D': '\\x0d', '%0e': '\\x0e', '%0E': '\\x0e',\n '%0f': '\\x0f', '%0F': '\\x0f', '%10': '\\x10', '%11': '\\x11', '%12': '\\x12',\n '%13': '\\x13', '%14': '\\x14', '%15': '\\x15', '%16': '\\x16', '%17': '\\x17',\n '%18': '\\x18', '%19': '\\x19', '%1a': '\\x1a', '%1A': '\\x1a', '%1b': '\\x1b',\n '%1B': '\\x1b', '%1c': '\\x1c', '%1C': '\\x1c', '%1d': '\\x1d', '%1D': '\\x1d',\n '%1e': '\\x1e', '%1E': '\\x1e', '%1f': '\\x1f', '%1F': '\\x1f', '%20': '\\x20',\n '%21': '\\x21', '%22': '\\x22', '%23': '\\x23', '%24': '\\x24', '%25': '\\x25',\n '%26': '\\x26', '%27': '\\x27', '%28': '\\x28', '%29': '\\x29', '%2a': '\\x2a',\n '%2A': '\\x2a', '%2b': '\\x2b', '%2B': '\\x2b', '%2c': '\\x2c', '%2C': '\\x2c',\n '%2d': '\\x2d', '%2D': '\\x2d', '%2e': '\\x2e', '%2E': '\\x2e', '%2f': '\\x2f',\n '%2F': '\\x2f', '%30': '\\x30', '%31': '\\x31', '%32': '\\x32', '%33': '\\x33',\n '%34': '\\x34', '%35': '\\x35', '%36': '\\x36', '%37': '\\x37', '%38': '\\x38',\n '%39': '\\x39', '%3a': '\\x3a', '%3A': '\\x3a', '%3b': '\\x3b', '%3B': '\\x3b',\n '%3c': '\\x3c', '%3C': '\\x3c', '%3d': '\\x3d', '%3D': '\\x3d', '%3e': '\\x3e',\n '%3E': '\\x3e', '%3f': '\\x3f', '%3F': '\\x3f', '%40': '\\x40', '%41': '\\x41',\n '%42': '\\x42', '%43': '\\x43', '%44': '\\x44', '%45': '\\x45', '%46': '\\x46',\n '%47': '\\x47', '%48': '\\x48', '%49': '\\x49', '%4a': '\\x4a', '%4A': '\\x4a',\n '%4b': '\\x4b', '%4B': '\\x4b', '%4c': '\\x4c', '%4C': '\\x4c', '%4d': '\\x4d',\n '%4D': '\\x4d', '%4e': '\\x4e', '%4E': '\\x4e', '%4f': '\\x4f', '%4F': '\\x4f',\n '%50': '\\x50', '%51': '\\x51', '%52': '\\x52', '%53': '\\x53', '%54': '\\x54',\n '%55': '\\x55', '%56': '\\x56', '%57': '\\x57', '%58': '\\x58', '%59': '\\x59',\n '%5a': '\\x5a', '%5A': '\\x5a', '%5b': '\\x5b', '%5B': '\\x5b', '%5c': '\\x5c',\n '%5C': '\\x5c', '%5d': '\\x5d', '%5D': '\\x5d', '%5e': '\\x5e', '%5E': '\\x5e',\n '%5f': '\\x5f', '%5F': '\\x5f', '%60': '\\x60', '%61': '\\x61', '%62': '\\x62',\n '%63': '\\x63', '%64': '\\x64', '%65': '\\x65', '%66': '\\x66', '%67': '\\x67',\n '%68': '\\x68', '%69': '\\x69', '%6a': '\\x6a', '%6A': '\\x6a', '%6b': '\\x6b',\n '%6B': '\\x6b', '%6c': '\\x6c', '%6C': '\\x6c', '%6d': '\\x6d', '%6D': '\\x6d',\n '%6e': '\\x6e', '%6E': '\\x6e', '%6f': '\\x6f', '%6F': '\\x6f', '%70': '\\x70',\n '%71': '\\x71', '%72': '\\x72', '%73': '\\x73', '%74': '\\x74', '%75': '\\x75',\n '%76': '\\x76', '%77': '\\x77', '%78': '\\x78', '%79': '\\x79', '%7a': '\\x7a',\n '%7A': '\\x7a', '%7b': '\\x7b', '%7B': '\\x7b', '%7c': '\\x7c', '%7C': '\\x7c',\n '%7d': '\\x7d', '%7D': '\\x7d', '%7e': '\\x7e', '%7E': '\\x7e', '%7f': '\\x7f',\n '%7F': '\\x7f', '%80': '\\x80', '%81': '\\x81', '%82': '\\x82', '%83': '\\x83',\n '%84': '\\x84', '%85': '\\x85', '%86': '\\x86', '%87': '\\x87', '%88': '\\x88',\n '%89': '\\x89', '%8a': '\\x8a', '%8A': '\\x8a', '%8b': '\\x8b', '%8B': '\\x8b',\n '%8c': '\\x8c', '%8C': '\\x8c', '%8d': '\\x8d', '%8D': '\\x8d', '%8e': '\\x8e',\n '%8E': '\\x8e', '%8f': '\\x8f', '%8F': '\\x8f', '%90': '\\x90', '%91': '\\x91',\n '%92': '\\x92', '%93': '\\x93', '%94': '\\x94', '%95': '\\x95', '%96': '\\x96',\n '%97': '\\x97', '%98': '\\x98', '%99': '\\x99', '%9a': '\\x9a', '%9A': '\\x9a',\n '%9b': '\\x9b', '%9B': '\\x9b', '%9c': '\\x9c', '%9C': '\\x9c', '%9d': '\\x9d',\n '%9D': '\\x9d', '%9e': '\\x9e', '%9E': '\\x9e', '%9f': '\\x9f', '%9F': '\\x9f',\n '%a0': '\\xa0', '%A0': '\\xa0', '%a1': '\\xa1', '%A1': '\\xa1', '%a2': '\\xa2',\n '%A2': '\\xa2', '%a3': '\\xa3', '%A3': '\\xa3', '%a4': '\\xa4', '%A4': '\\xa4',\n '%a5': '\\xa5', '%A5': '\\xa5', '%a6': '\\xa6', '%A6': '\\xa6', '%a7': '\\xa7',\n '%A7': '\\xa7', '%a8': '\\xa8', '%A8': '\\xa8', '%a9': '\\xa9', '%A9': '\\xa9',\n '%aa': '\\xaa', '%Aa': '\\xaa', '%aA': '\\xaa', '%AA': '\\xaa', '%ab': '\\xab',\n '%Ab': '\\xab', '%aB': '\\xab', '%AB': '\\xab', '%ac': '\\xac', '%Ac': '\\xac',\n '%aC': '\\xac', '%AC': '\\xac', '%ad': '\\xad', '%Ad': '\\xad', '%aD': '\\xad',\n '%AD': '\\xad', '%ae': '\\xae', '%Ae': '\\xae', '%aE': '\\xae', '%AE': '\\xae',\n '%af': '\\xaf', '%Af': '\\xaf', '%aF': '\\xaf', '%AF': '\\xaf', '%b0': '\\xb0',\n '%B0': '\\xb0', '%b1': '\\xb1', '%B1': '\\xb1', '%b2': '\\xb2', '%B2': '\\xb2',\n '%b3': '\\xb3', '%B3': '\\xb3', '%b4': '\\xb4', '%B4': '\\xb4', '%b5': '\\xb5',\n '%B5': '\\xb5', '%b6': '\\xb6', '%B6': '\\xb6', '%b7': '\\xb7', '%B7': '\\xb7',\n '%b8': '\\xb8', '%B8': '\\xb8', '%b9': '\\xb9', '%B9': '\\xb9', '%ba': '\\xba',\n '%Ba': '\\xba', '%bA': '\\xba', '%BA': '\\xba', '%bb': '\\xbb', '%Bb': '\\xbb',\n '%bB': '\\xbb', '%BB': '\\xbb', '%bc': '\\xbc', '%Bc': '\\xbc', '%bC': '\\xbc',\n '%BC': '\\xbc', '%bd': '\\xbd', '%Bd': '\\xbd', '%bD': '\\xbd', '%BD': '\\xbd',\n '%be': '\\xbe', '%Be': '\\xbe', '%bE': '\\xbe', '%BE': '\\xbe', '%bf': '\\xbf',\n '%Bf': '\\xbf', '%bF': '\\xbf', '%BF': '\\xbf', '%c0': '\\xc0', '%C0': '\\xc0',\n '%c1': '\\xc1', '%C1': '\\xc1', '%c2': '\\xc2', '%C2': '\\xc2', '%c3': '\\xc3',\n '%C3': '\\xc3', '%c4': '\\xc4', '%C4': '\\xc4', '%c5': '\\xc5', '%C5': '\\xc5',\n '%c6': '\\xc6', '%C6': '\\xc6', '%c7': '\\xc7', '%C7': '\\xc7', '%c8': '\\xc8',\n '%C8': '\\xc8', '%c9': '\\xc9', '%C9': '\\xc9', '%ca': '\\xca', '%Ca': '\\xca',\n '%cA': '\\xca', '%CA': '\\xca', '%cb': '\\xcb', '%Cb': '\\xcb', '%cB': '\\xcb',\n '%CB': '\\xcb', '%cc': '\\xcc', '%Cc': '\\xcc', '%cC': '\\xcc', '%CC': '\\xcc',\n '%cd': '\\xcd', '%Cd': '\\xcd', '%cD': '\\xcd', '%CD': '\\xcd', '%ce': '\\xce',\n '%Ce': '\\xce', '%cE': '\\xce', '%CE': '\\xce', '%cf': '\\xcf', '%Cf': '\\xcf',\n '%cF': '\\xcf', '%CF': '\\xcf', '%d0': '\\xd0', '%D0': '\\xd0', '%d1': '\\xd1',\n '%D1': '\\xd1', '%d2': '\\xd2', '%D2': '\\xd2', '%d3': '\\xd3', '%D3': '\\xd3',\n '%d4': '\\xd4', '%D4': '\\xd4', '%d5': '\\xd5', '%D5': '\\xd5', '%d6': '\\xd6',\n '%D6': '\\xd6', '%d7': '\\xd7', '%D7': '\\xd7', '%d8': '\\xd8', '%D8': '\\xd8',\n '%d9': '\\xd9', '%D9': '\\xd9', '%da': '\\xda', '%Da': '\\xda', '%dA': '\\xda',\n '%DA': '\\xda', '%db': '\\xdb', '%Db': '\\xdb', '%dB': '\\xdb', '%DB': '\\xdb',\n '%dc': '\\xdc', '%Dc': '\\xdc', '%dC': '\\xdc', '%DC': '\\xdc', '%dd': '\\xdd',\n '%Dd': '\\xdd', '%dD': '\\xdd', '%DD': '\\xdd', '%de': '\\xde', '%De': '\\xde',\n '%dE': '\\xde', '%DE': '\\xde', '%df': '\\xdf', '%Df': '\\xdf', '%dF': '\\xdf',\n '%DF': '\\xdf', '%e0': '\\xe0', '%E0': '\\xe0', '%e1': '\\xe1', '%E1': '\\xe1',\n '%e2': '\\xe2', '%E2': '\\xe2', '%e3': '\\xe3', '%E3': '\\xe3', '%e4': '\\xe4',\n '%E4': '\\xe4', '%e5': '\\xe5', '%E5': '\\xe5', '%e6': '\\xe6', '%E6': '\\xe6',\n '%e7': '\\xe7', '%E7': '\\xe7', '%e8': '\\xe8', '%E8': '\\xe8', '%e9': '\\xe9',\n '%E9': '\\xe9', '%ea': '\\xea', '%Ea': '\\xea', '%eA': '\\xea', '%EA': '\\xea',\n '%eb': '\\xeb', '%Eb': '\\xeb', '%eB': '\\xeb', '%EB': '\\xeb', '%ec': '\\xec',\n '%Ec': '\\xec', '%eC': '\\xec', '%EC': '\\xec', '%ed': '\\xed', '%Ed': '\\xed',\n '%eD': '\\xed', '%ED': '\\xed', '%ee': '\\xee', '%Ee': '\\xee', '%eE': '\\xee',\n '%EE': '\\xee', '%ef': '\\xef', '%Ef': '\\xef', '%eF': '\\xef', '%EF': '\\xef',\n '%f0': '\\xf0', '%F0': '\\xf0', '%f1': '\\xf1', '%F1': '\\xf1', '%f2': '\\xf2',\n '%F2': '\\xf2', '%f3': '\\xf3', '%F3': '\\xf3', '%f4': '\\xf4', '%F4': '\\xf4',\n '%f5': '\\xf5', '%F5': '\\xf5', '%f6': '\\xf6', '%F6': '\\xf6', '%f7': '\\xf7',\n '%F7': '\\xf7', '%f8': '\\xf8', '%F8': '\\xf8', '%f9': '\\xf9', '%F9': '\\xf9',\n '%fa': '\\xfa', '%Fa': '\\xfa', '%fA': '\\xfa', '%FA': '\\xfa', '%fb': '\\xfb',\n '%Fb': '\\xfb', '%fB': '\\xfb', '%FB': '\\xfb', '%fc': '\\xfc', '%Fc': '\\xfc',\n '%fC': '\\xfc', '%FC': '\\xfc', '%fd': '\\xfd', '%Fd': '\\xfd', '%fD': '\\xfd',\n '%FD': '\\xfd', '%fe': '\\xfe', '%Fe': '\\xfe', '%fE': '\\xfe', '%FE': '\\xfe',\n '%ff': '\\xff', '%Ff': '\\xff', '%fF': '\\xff', '%FF': '\\xff'\n}\n\nfunction encodedReplacer (match) {\n return EncodedLookup[match]\n}\n\nconst STATE_KEY = 0\nconst STATE_VALUE = 1\nconst STATE_CHARSET = 2\nconst STATE_LANG = 3\n\nfunction parseParams (str) {\n const res = []\n let state = STATE_KEY\n let charset = ''\n let inquote = false\n let escaping = false\n let p = 0\n let tmp = ''\n const len = str.length\n\n for (var i = 0; i < len; ++i) { // eslint-disable-line no-var\n const char = str[i]\n if (char === '\\\\' && inquote) {\n if (escaping) { escaping = false } else {\n escaping = true\n continue\n }\n } else if (char === '\"') {\n if (!escaping) {\n if (inquote) {\n inquote = false\n state = STATE_KEY\n } else { inquote = true }\n continue\n } else { escaping = false }\n } else {\n if (escaping && inquote) { tmp += '\\\\' }\n escaping = false\n if ((state === STATE_CHARSET || state === STATE_LANG) && char === \"'\") {\n if (state === STATE_CHARSET) {\n state = STATE_LANG\n charset = tmp.substring(1)\n } else { state = STATE_VALUE }\n tmp = ''\n continue\n } else if (state === STATE_KEY &&\n (char === '*' || char === '=') &&\n res.length) {\n state = char === '*'\n ? STATE_CHARSET\n : STATE_VALUE\n res[p] = [tmp, undefined]\n tmp = ''\n continue\n } else if (!inquote && char === ';') {\n state = STATE_KEY\n if (charset) {\n if (tmp.length) {\n tmp = decodeText(tmp.replace(RE_ENCODED, encodedReplacer),\n 'binary',\n charset)\n }\n charset = ''\n } else if (tmp.length) {\n tmp = decodeText(tmp, 'binary', 'utf8')\n }\n if (res[p] === undefined) { res[p] = tmp } else { res[p][1] = tmp }\n tmp = ''\n ++p\n continue\n } else if (!inquote && (char === ' ' || char === '\\t')) { continue }\n }\n tmp += char\n }\n if (charset && tmp.length) {\n tmp = decodeText(tmp.replace(RE_ENCODED, encodedReplacer),\n 'binary',\n charset)\n } else if (tmp) {\n tmp = decodeText(tmp, 'binary', 'utf8')\n }\n\n if (res[p] === undefined) {\n if (tmp) { res[p] = tmp }\n } else { res[p][1] = tmp }\n\n return res\n}\n\nmodule.exports = parseParams\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\tvar threw = true;\n\ttry {\n\t\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\t\tthrew = false;\n\t} finally {\n\t\tif(threw) delete __webpack_module_cache__[moduleId];\n\t}\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","__webpack_require__.nmd = (module) => {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","\nif (typeof __webpack_require__ !== 'undefined') __webpack_require__.ab = __dirname + \"/\";","","// startup\n// Load entry module and return exports\n// This entry module is referenced by other modules so it can't be inlined\nvar __webpack_exports__ = __webpack_require__(51188);\n",""],"names":[],"sourceRoot":""} \ No newline at end of file diff --git a/dist/licenses.txt b/dist/licenses.txt index 8d4e48b..639f18d 100644 --- a/dist/licenses.txt +++ b/dist/licenses.txt @@ -10,6 +10,18 @@ The above copyright notice and this permission notice shall be included in all c THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +@actions/exec +MIT +The MIT License (MIT) + +Copyright 2019 GitHub + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + @actions/github MIT The MIT License (MIT) @@ -47,6 +59,18 @@ WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +@actions/io +MIT +The MIT License (MIT) + +Copyright 2019 GitHub + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + @aws-cdk/aws-service-spec Apache-2.0 diff --git a/package.json b/package.json index 38209f8..1419d1e 100644 --- a/package.json +++ b/package.json @@ -45,27 +45,27 @@ "constructs": "^10.0.0", "eslint": "^8", "eslint-import-resolver-typescript": "^3.6.3", - "eslint-plugin-import": "^2.30.0", + "eslint-plugin-import": "^2.31.0", "jest": "^29.7.0", "jest-junit": "^15", "mock-fs": "^5", - "projen": "^0.88.0", - "projen-github-action-typescript": "^0.0.460", + "projen": "^0.88.1", + "projen-github-action-typescript": "^0.0.467", "ts-jest": "^29.2.5", "ts-node": "^10.9.2", "typescript": "^5.6.2" }, "dependencies": { - "@actions/core": "^1.10.1", + "@actions/core": "^1.11.1", "@actions/exec": "^1.1.1", "@actions/github": "^6.0.0", "@actions/io": "^1.1.3", "@actions/tool-cache": "^2.0.0", "@aws-cdk/cloud-assembly-schema": "38.0.1", - "@aws-cdk/cloudformation-diff": "2.160.0", - "@aws-sdk/client-cloudformation": "^3.658.1", - "@aws-sdk/client-sts": "^3.658.1", - "@aws-sdk/credential-providers": "^3.658.1", + "@aws-cdk/cloudformation-diff": "2.161.1", + "@aws-sdk/client-cloudformation": "^3.665.0", + "@aws-sdk/client-sts": "^3.665.0", + "@aws-sdk/credential-providers": "^3.665.0", "@octokit/webhooks-definitions": "^3.67.3", "@smithy/types": "^2.12.0", "chalk": "^4", diff --git a/yarn.lock b/yarn.lock index c8397c1..0417dc5 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2,13 +2,13 @@ # yarn lockfile v1 -"@actions/core@^1.10.1", "@actions/core@^1.2.6": - version "1.10.1" - resolved "https://registry.yarnpkg.com/@actions/core/-/core-1.10.1.tgz#61108e7ac40acae95ee36da074fa5850ca4ced8a" - integrity sha512-3lBR9EDAY+iYIpTnTIXmWcNbX3T2kCkAEQGIQx4NVQ0575nk2k3GRZDTPQG+vVtS2izSLmINlxXf0uLtnrTP+g== +"@actions/core@^1.11.1", "@actions/core@^1.2.6": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@actions/core/-/core-1.11.1.tgz#ae683aac5112438021588030efb53b1adb86f172" + integrity sha512-hXJCSrkwfA46Vd9Z3q4cpEpHB1rL5NG04+/rbqW9d3+CSvtB1tYe8UTpAlixa1vj0m/ULglfEK2UKxMGxCxv5A== dependencies: + "@actions/exec" "^1.1.1" "@actions/http-client" "^2.0.1" - uuid "^8.3.2" "@actions/exec@^1.0.0", "@actions/exec@^1.1.1": version "1.1.1" @@ -60,12 +60,12 @@ "@jridgewell/gen-mapping" "^0.3.5" "@jridgewell/trace-mapping" "^0.3.24" -"@aws-cdk/aws-service-spec@^0.1.24": - version "0.1.24" - resolved "https://registry.yarnpkg.com/@aws-cdk/aws-service-spec/-/aws-service-spec-0.1.24.tgz#a4f76708430e7fee2f2721ba4686d4fba675fb6a" - integrity sha512-8CTXSMyuNXwp/dnDj7SJi45VG7n+gbtH6zjHBIJNRw8Xt3DdArgyG/C9D+Epl9SRKqRu/xQyM/IZwSi9Fl01Vw== +"@aws-cdk/aws-service-spec@^0.1.25": + version "0.1.26" + resolved "https://registry.yarnpkg.com/@aws-cdk/aws-service-spec/-/aws-service-spec-0.1.26.tgz#9b08f2bff08650230d948596b171c7e8f8ce4979" + integrity sha512-VXkCdPB2cIKiDXpKK94EYd91Rh1V8SljA5B+GIOQOV5KtHkssqh1hTr5lL6TXYSE79kols/A5GX9pFVdw4fhVw== dependencies: - "@aws-cdk/service-spec-types" "^0.0.91" + "@aws-cdk/service-spec-types" "^0.0.93" "@cdklabs/tskb" "^0.0.3" "@aws-cdk/cloud-assembly-schema@38.0.1": @@ -76,23 +76,30 @@ jsonschema "^1.4.1" semver "^7.6.3" -"@aws-cdk/cloudformation-diff@2.160.0": - version "2.160.0" - resolved "https://registry.yarnpkg.com/@aws-cdk/cloudformation-diff/-/cloudformation-diff-2.160.0.tgz#b974a095503eb1f520c642077681123d20fe18c8" - integrity sha512-qyHjbzpyRrMKostwIy984CS1II/zMmWAtfSTvQW80U4XnzFaSWEnPWZRRw9GemGAKM/X6bTdQdl8jpHkPxPD8g== +"@aws-cdk/cloudformation-diff@2.161.1": + version "2.161.1" + resolved "https://registry.yarnpkg.com/@aws-cdk/cloudformation-diff/-/cloudformation-diff-2.161.1.tgz#cc7625af7205c673e4909ff4e1edc336f46be3ed" + integrity sha512-/G7u3zmjdf/4gpxYn5O8zhfl+sPwrLiCaUOuXkfz2CCPqiXF9K9Mh6HxGTrDsx+7/Kga8+J9ybaViJKeunhUTw== dependencies: - "@aws-cdk/aws-service-spec" "^0.1.24" - "@aws-cdk/service-spec-types" "^0.0.91" + "@aws-cdk/aws-service-spec" "^0.1.25" + "@aws-cdk/service-spec-types" "^0.0.92" chalk "^4" diff "^5.2.0" fast-deep-equal "^3.1.3" string-width "^4.2.3" table "^6.8.2" -"@aws-cdk/service-spec-types@^0.0.91": - version "0.0.91" - resolved "https://registry.yarnpkg.com/@aws-cdk/service-spec-types/-/service-spec-types-0.0.91.tgz#e6a0daf0831a77b34dc6e72cd4908916a6909a62" - integrity sha512-J6YyYvH0Ov6bzA2FR68WUDQrp6fQkw8968UjUqMS9Vq0h2iZ/0n4nBcLGWqQuGPVT/Yex7Hfj4dhFsRXCJGEDw== +"@aws-cdk/service-spec-types@^0.0.92": + version "0.0.92" + resolved "https://registry.yarnpkg.com/@aws-cdk/service-spec-types/-/service-spec-types-0.0.92.tgz#9f102887ef7a9a5b0829869ad6910d58a91e89fa" + integrity sha512-lqZa2/ieUB4ujqEsWl4+f0CFO60aabT1+5/F9z748Jgo7Q+zmv1G0awZuvjUWijkEM4VShg4aSl9s/WkMBbVXA== + dependencies: + "@cdklabs/tskb" "^0.0.3" + +"@aws-cdk/service-spec-types@^0.0.93": + version "0.0.93" + resolved "https://registry.yarnpkg.com/@aws-cdk/service-spec-types/-/service-spec-types-0.0.93.tgz#322dc14942af734be00c8a2bba0604239e9d5901" + integrity sha512-nLT07w8q/of+8X5QGgNtS1tu68CQSGJHL0xQcLsRKgaxoIddZnUUf2d6WS+Yp0aZCXu2UZaacUxPYwU+qmNhpw== dependencies: "@cdklabs/tskb" "^0.0.3" @@ -134,459 +141,461 @@ "@smithy/util-utf8" "^2.0.0" tslib "^2.6.2" -"@aws-sdk/client-cloudformation@^3.658.1": - version "3.658.1" - resolved "https://registry.yarnpkg.com/@aws-sdk/client-cloudformation/-/client-cloudformation-3.658.1.tgz#11718f74927acba6b476923774a0d18736542661" - integrity sha512-ZvfKOXEelYQDH5tOOx8/+W4DclmKmKcwdIluCBqke6ZGMQ2LyX+5/JLxsEKn3qNmahbSyxE1+HUX84hh6H5K5A== +"@aws-sdk/client-cloudformation@^3.665.0": + version "3.665.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/client-cloudformation/-/client-cloudformation-3.665.0.tgz#23f1758ac9f11861cb14882a270f1043ed5ace56" + integrity sha512-rPTpii1hDCWpwaElFhP9CXJjxZwJrdMrt+zN/pFH64Gt/k3QQtNeiuSJOsxmonEvHUjmlVJV/hVzv5lCPhmurA== dependencies: "@aws-crypto/sha256-browser" "5.2.0" "@aws-crypto/sha256-js" "5.2.0" - "@aws-sdk/client-sso-oidc" "3.658.1" - "@aws-sdk/client-sts" "3.658.1" - "@aws-sdk/core" "3.658.1" - "@aws-sdk/credential-provider-node" "3.658.1" - "@aws-sdk/middleware-host-header" "3.654.0" - "@aws-sdk/middleware-logger" "3.654.0" - "@aws-sdk/middleware-recursion-detection" "3.654.0" - "@aws-sdk/middleware-user-agent" "3.654.0" - "@aws-sdk/region-config-resolver" "3.654.0" - "@aws-sdk/types" "3.654.0" - "@aws-sdk/util-endpoints" "3.654.0" - "@aws-sdk/util-user-agent-browser" "3.654.0" - "@aws-sdk/util-user-agent-node" "3.654.0" - "@smithy/config-resolver" "^3.0.8" - "@smithy/core" "^2.4.6" - "@smithy/fetch-http-handler" "^3.2.8" - "@smithy/hash-node" "^3.0.6" - "@smithy/invalid-dependency" "^3.0.6" - "@smithy/middleware-content-length" "^3.0.8" - "@smithy/middleware-endpoint" "^3.1.3" - "@smithy/middleware-retry" "^3.0.21" - "@smithy/middleware-serde" "^3.0.6" - "@smithy/middleware-stack" "^3.0.6" - "@smithy/node-config-provider" "^3.1.7" - "@smithy/node-http-handler" "^3.2.3" - "@smithy/protocol-http" "^4.1.3" - "@smithy/smithy-client" "^3.3.5" - "@smithy/types" "^3.4.2" - "@smithy/url-parser" "^3.0.6" + "@aws-sdk/client-sso-oidc" "3.665.0" + "@aws-sdk/client-sts" "3.665.0" + "@aws-sdk/core" "3.665.0" + "@aws-sdk/credential-provider-node" "3.665.0" + "@aws-sdk/middleware-host-header" "3.664.0" + "@aws-sdk/middleware-logger" "3.664.0" + "@aws-sdk/middleware-recursion-detection" "3.664.0" + "@aws-sdk/middleware-user-agent" "3.664.0" + "@aws-sdk/region-config-resolver" "3.664.0" + "@aws-sdk/types" "3.664.0" + "@aws-sdk/util-endpoints" "3.664.0" + "@aws-sdk/util-user-agent-browser" "3.664.0" + "@aws-sdk/util-user-agent-node" "3.664.0" + "@smithy/config-resolver" "^3.0.9" + "@smithy/core" "^2.4.7" + "@smithy/fetch-http-handler" "^3.2.9" + "@smithy/hash-node" "^3.0.7" + "@smithy/invalid-dependency" "^3.0.7" + "@smithy/middleware-content-length" "^3.0.9" + "@smithy/middleware-endpoint" "^3.1.4" + "@smithy/middleware-retry" "^3.0.22" + "@smithy/middleware-serde" "^3.0.7" + "@smithy/middleware-stack" "^3.0.7" + "@smithy/node-config-provider" "^3.1.8" + "@smithy/node-http-handler" "^3.2.4" + "@smithy/protocol-http" "^4.1.4" + "@smithy/smithy-client" "^3.3.6" + "@smithy/types" "^3.5.0" + "@smithy/url-parser" "^3.0.7" "@smithy/util-base64" "^3.0.0" "@smithy/util-body-length-browser" "^3.0.0" "@smithy/util-body-length-node" "^3.0.0" - "@smithy/util-defaults-mode-browser" "^3.0.21" - "@smithy/util-defaults-mode-node" "^3.0.21" - "@smithy/util-endpoints" "^2.1.2" - "@smithy/util-middleware" "^3.0.6" - "@smithy/util-retry" "^3.0.6" + "@smithy/util-defaults-mode-browser" "^3.0.22" + "@smithy/util-defaults-mode-node" "^3.0.22" + "@smithy/util-endpoints" "^2.1.3" + "@smithy/util-middleware" "^3.0.7" + "@smithy/util-retry" "^3.0.7" "@smithy/util-utf8" "^3.0.0" - "@smithy/util-waiter" "^3.1.5" + "@smithy/util-waiter" "^3.1.6" tslib "^2.6.2" uuid "^9.0.1" -"@aws-sdk/client-cognito-identity@3.658.1": - version "3.658.1" - resolved "https://registry.yarnpkg.com/@aws-sdk/client-cognito-identity/-/client-cognito-identity-3.658.1.tgz#87f800883330c43d41426602dbe9b5149375743e" - integrity sha512-MCYLKmNy0FlNT9TvXfOxj0jh+ZQq+G9qEy/VZqu3JsQSgiFvFRdzgzcbQ9gQx7fZrDC/TPdABOTh483zI4cu9g== +"@aws-sdk/client-cognito-identity@3.665.0": + version "3.665.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/client-cognito-identity/-/client-cognito-identity-3.665.0.tgz#83b9ae82c52674dd914d1c07713de1d0bff194a1" + integrity sha512-dHi749JNI85zHnhHDgEFyiXI6ju39i7y7ufT2Kt2oDZg/UgsNs9I3pPqPJzDdRmn86vQi984iwS+y967CtoNqA== dependencies: "@aws-crypto/sha256-browser" "5.2.0" "@aws-crypto/sha256-js" "5.2.0" - "@aws-sdk/client-sso-oidc" "3.658.1" - "@aws-sdk/client-sts" "3.658.1" - "@aws-sdk/core" "3.658.1" - "@aws-sdk/credential-provider-node" "3.658.1" - "@aws-sdk/middleware-host-header" "3.654.0" - "@aws-sdk/middleware-logger" "3.654.0" - "@aws-sdk/middleware-recursion-detection" "3.654.0" - "@aws-sdk/middleware-user-agent" "3.654.0" - "@aws-sdk/region-config-resolver" "3.654.0" - "@aws-sdk/types" "3.654.0" - "@aws-sdk/util-endpoints" "3.654.0" - "@aws-sdk/util-user-agent-browser" "3.654.0" - "@aws-sdk/util-user-agent-node" "3.654.0" - "@smithy/config-resolver" "^3.0.8" - "@smithy/core" "^2.4.6" - "@smithy/fetch-http-handler" "^3.2.8" - "@smithy/hash-node" "^3.0.6" - "@smithy/invalid-dependency" "^3.0.6" - "@smithy/middleware-content-length" "^3.0.8" - "@smithy/middleware-endpoint" "^3.1.3" - "@smithy/middleware-retry" "^3.0.21" - "@smithy/middleware-serde" "^3.0.6" - "@smithy/middleware-stack" "^3.0.6" - "@smithy/node-config-provider" "^3.1.7" - "@smithy/node-http-handler" "^3.2.3" - "@smithy/protocol-http" "^4.1.3" - "@smithy/smithy-client" "^3.3.5" - "@smithy/types" "^3.4.2" - "@smithy/url-parser" "^3.0.6" + "@aws-sdk/client-sso-oidc" "3.665.0" + "@aws-sdk/client-sts" "3.665.0" + "@aws-sdk/core" "3.665.0" + "@aws-sdk/credential-provider-node" "3.665.0" + "@aws-sdk/middleware-host-header" "3.664.0" + "@aws-sdk/middleware-logger" "3.664.0" + "@aws-sdk/middleware-recursion-detection" "3.664.0" + "@aws-sdk/middleware-user-agent" "3.664.0" + "@aws-sdk/region-config-resolver" "3.664.0" + "@aws-sdk/types" "3.664.0" + "@aws-sdk/util-endpoints" "3.664.0" + "@aws-sdk/util-user-agent-browser" "3.664.0" + "@aws-sdk/util-user-agent-node" "3.664.0" + "@smithy/config-resolver" "^3.0.9" + "@smithy/core" "^2.4.7" + "@smithy/fetch-http-handler" "^3.2.9" + "@smithy/hash-node" "^3.0.7" + "@smithy/invalid-dependency" "^3.0.7" + "@smithy/middleware-content-length" "^3.0.9" + "@smithy/middleware-endpoint" "^3.1.4" + "@smithy/middleware-retry" "^3.0.22" + "@smithy/middleware-serde" "^3.0.7" + "@smithy/middleware-stack" "^3.0.7" + "@smithy/node-config-provider" "^3.1.8" + "@smithy/node-http-handler" "^3.2.4" + "@smithy/protocol-http" "^4.1.4" + "@smithy/smithy-client" "^3.3.6" + "@smithy/types" "^3.5.0" + "@smithy/url-parser" "^3.0.7" "@smithy/util-base64" "^3.0.0" "@smithy/util-body-length-browser" "^3.0.0" "@smithy/util-body-length-node" "^3.0.0" - "@smithy/util-defaults-mode-browser" "^3.0.21" - "@smithy/util-defaults-mode-node" "^3.0.21" - "@smithy/util-endpoints" "^2.1.2" - "@smithy/util-middleware" "^3.0.6" - "@smithy/util-retry" "^3.0.6" + "@smithy/util-defaults-mode-browser" "^3.0.22" + "@smithy/util-defaults-mode-node" "^3.0.22" + "@smithy/util-endpoints" "^2.1.3" + "@smithy/util-middleware" "^3.0.7" + "@smithy/util-retry" "^3.0.7" "@smithy/util-utf8" "^3.0.0" tslib "^2.6.2" -"@aws-sdk/client-sso-oidc@3.658.1": - version "3.658.1" - resolved "https://registry.yarnpkg.com/@aws-sdk/client-sso-oidc/-/client-sso-oidc-3.658.1.tgz#67286348374146e80a0345064d101175730012ed" - integrity sha512-RGcZAI3qEA05JszPKwa0cAyp8rnS1nUvs0Sqw4hqLNQ1kD7b7V6CPjRXe7EFQqCOMvM4kGqx0+cEEVTOmBsFLw== +"@aws-sdk/client-sso-oidc@3.665.0": + version "3.665.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/client-sso-oidc/-/client-sso-oidc-3.665.0.tgz#d933f79a23aa5afbf9dddfc2685049ebff4b11d1" + integrity sha512-FQ2YyM9/6y3clWkf3d60/W4c/HZy61hbfIsR4KIh8aGOifwfIx/UpZQ61pCr/TXTNqbaAVU2/sK+J1zFkGEoLw== dependencies: "@aws-crypto/sha256-browser" "5.2.0" "@aws-crypto/sha256-js" "5.2.0" - "@aws-sdk/core" "3.658.1" - "@aws-sdk/credential-provider-node" "3.658.1" - "@aws-sdk/middleware-host-header" "3.654.0" - "@aws-sdk/middleware-logger" "3.654.0" - "@aws-sdk/middleware-recursion-detection" "3.654.0" - "@aws-sdk/middleware-user-agent" "3.654.0" - "@aws-sdk/region-config-resolver" "3.654.0" - "@aws-sdk/types" "3.654.0" - "@aws-sdk/util-endpoints" "3.654.0" - "@aws-sdk/util-user-agent-browser" "3.654.0" - "@aws-sdk/util-user-agent-node" "3.654.0" - "@smithy/config-resolver" "^3.0.8" - "@smithy/core" "^2.4.6" - "@smithy/fetch-http-handler" "^3.2.8" - "@smithy/hash-node" "^3.0.6" - "@smithy/invalid-dependency" "^3.0.6" - "@smithy/middleware-content-length" "^3.0.8" - "@smithy/middleware-endpoint" "^3.1.3" - "@smithy/middleware-retry" "^3.0.21" - "@smithy/middleware-serde" "^3.0.6" - "@smithy/middleware-stack" "^3.0.6" - "@smithy/node-config-provider" "^3.1.7" - "@smithy/node-http-handler" "^3.2.3" - "@smithy/protocol-http" "^4.1.3" - "@smithy/smithy-client" "^3.3.5" - "@smithy/types" "^3.4.2" - "@smithy/url-parser" "^3.0.6" + "@aws-sdk/core" "3.665.0" + "@aws-sdk/credential-provider-node" "3.665.0" + "@aws-sdk/middleware-host-header" "3.664.0" + "@aws-sdk/middleware-logger" "3.664.0" + "@aws-sdk/middleware-recursion-detection" "3.664.0" + "@aws-sdk/middleware-user-agent" "3.664.0" + "@aws-sdk/region-config-resolver" "3.664.0" + "@aws-sdk/types" "3.664.0" + "@aws-sdk/util-endpoints" "3.664.0" + "@aws-sdk/util-user-agent-browser" "3.664.0" + "@aws-sdk/util-user-agent-node" "3.664.0" + "@smithy/config-resolver" "^3.0.9" + "@smithy/core" "^2.4.7" + "@smithy/fetch-http-handler" "^3.2.9" + "@smithy/hash-node" "^3.0.7" + "@smithy/invalid-dependency" "^3.0.7" + "@smithy/middleware-content-length" "^3.0.9" + "@smithy/middleware-endpoint" "^3.1.4" + "@smithy/middleware-retry" "^3.0.22" + "@smithy/middleware-serde" "^3.0.7" + "@smithy/middleware-stack" "^3.0.7" + "@smithy/node-config-provider" "^3.1.8" + "@smithy/node-http-handler" "^3.2.4" + "@smithy/protocol-http" "^4.1.4" + "@smithy/smithy-client" "^3.3.6" + "@smithy/types" "^3.5.0" + "@smithy/url-parser" "^3.0.7" "@smithy/util-base64" "^3.0.0" "@smithy/util-body-length-browser" "^3.0.0" "@smithy/util-body-length-node" "^3.0.0" - "@smithy/util-defaults-mode-browser" "^3.0.21" - "@smithy/util-defaults-mode-node" "^3.0.21" - "@smithy/util-endpoints" "^2.1.2" - "@smithy/util-middleware" "^3.0.6" - "@smithy/util-retry" "^3.0.6" + "@smithy/util-defaults-mode-browser" "^3.0.22" + "@smithy/util-defaults-mode-node" "^3.0.22" + "@smithy/util-endpoints" "^2.1.3" + "@smithy/util-middleware" "^3.0.7" + "@smithy/util-retry" "^3.0.7" "@smithy/util-utf8" "^3.0.0" tslib "^2.6.2" -"@aws-sdk/client-sso@3.658.1": - version "3.658.1" - resolved "https://registry.yarnpkg.com/@aws-sdk/client-sso/-/client-sso-3.658.1.tgz#f0e660148ab2786f1028a738285742fb97f888bf" - integrity sha512-lOuaBtqPTYGn6xpXlQF4LsNDsQ8Ij2kOdnk+i69Kp6yS76TYvtUuukyLL5kx8zE1c8WbYtxj9y8VNw9/6uKl7Q== +"@aws-sdk/client-sso@3.665.0": + version "3.665.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/client-sso/-/client-sso-3.665.0.tgz#d8fff846995cfc2d3c0631a0774138395aa57ce2" + integrity sha512-zje+oaIiyviDv5dmBWhGHifPTb0Idq/HatNPy+VEiwo2dxcQBexibD5CQE5e8CWZK123Br/9DHft+iNKdiY5bA== dependencies: "@aws-crypto/sha256-browser" "5.2.0" "@aws-crypto/sha256-js" "5.2.0" - "@aws-sdk/core" "3.658.1" - "@aws-sdk/middleware-host-header" "3.654.0" - "@aws-sdk/middleware-logger" "3.654.0" - "@aws-sdk/middleware-recursion-detection" "3.654.0" - "@aws-sdk/middleware-user-agent" "3.654.0" - "@aws-sdk/region-config-resolver" "3.654.0" - "@aws-sdk/types" "3.654.0" - "@aws-sdk/util-endpoints" "3.654.0" - "@aws-sdk/util-user-agent-browser" "3.654.0" - "@aws-sdk/util-user-agent-node" "3.654.0" - "@smithy/config-resolver" "^3.0.8" - "@smithy/core" "^2.4.6" - "@smithy/fetch-http-handler" "^3.2.8" - "@smithy/hash-node" "^3.0.6" - "@smithy/invalid-dependency" "^3.0.6" - "@smithy/middleware-content-length" "^3.0.8" - "@smithy/middleware-endpoint" "^3.1.3" - "@smithy/middleware-retry" "^3.0.21" - "@smithy/middleware-serde" "^3.0.6" - "@smithy/middleware-stack" "^3.0.6" - "@smithy/node-config-provider" "^3.1.7" - "@smithy/node-http-handler" "^3.2.3" - "@smithy/protocol-http" "^4.1.3" - "@smithy/smithy-client" "^3.3.5" - "@smithy/types" "^3.4.2" - "@smithy/url-parser" "^3.0.6" + "@aws-sdk/core" "3.665.0" + "@aws-sdk/middleware-host-header" "3.664.0" + "@aws-sdk/middleware-logger" "3.664.0" + "@aws-sdk/middleware-recursion-detection" "3.664.0" + "@aws-sdk/middleware-user-agent" "3.664.0" + "@aws-sdk/region-config-resolver" "3.664.0" + "@aws-sdk/types" "3.664.0" + "@aws-sdk/util-endpoints" "3.664.0" + "@aws-sdk/util-user-agent-browser" "3.664.0" + "@aws-sdk/util-user-agent-node" "3.664.0" + "@smithy/config-resolver" "^3.0.9" + "@smithy/core" "^2.4.7" + "@smithy/fetch-http-handler" "^3.2.9" + "@smithy/hash-node" "^3.0.7" + "@smithy/invalid-dependency" "^3.0.7" + "@smithy/middleware-content-length" "^3.0.9" + "@smithy/middleware-endpoint" "^3.1.4" + "@smithy/middleware-retry" "^3.0.22" + "@smithy/middleware-serde" "^3.0.7" + "@smithy/middleware-stack" "^3.0.7" + "@smithy/node-config-provider" "^3.1.8" + "@smithy/node-http-handler" "^3.2.4" + "@smithy/protocol-http" "^4.1.4" + "@smithy/smithy-client" "^3.3.6" + "@smithy/types" "^3.5.0" + "@smithy/url-parser" "^3.0.7" "@smithy/util-base64" "^3.0.0" "@smithy/util-body-length-browser" "^3.0.0" "@smithy/util-body-length-node" "^3.0.0" - "@smithy/util-defaults-mode-browser" "^3.0.21" - "@smithy/util-defaults-mode-node" "^3.0.21" - "@smithy/util-endpoints" "^2.1.2" - "@smithy/util-middleware" "^3.0.6" - "@smithy/util-retry" "^3.0.6" + "@smithy/util-defaults-mode-browser" "^3.0.22" + "@smithy/util-defaults-mode-node" "^3.0.22" + "@smithy/util-endpoints" "^2.1.3" + "@smithy/util-middleware" "^3.0.7" + "@smithy/util-retry" "^3.0.7" "@smithy/util-utf8" "^3.0.0" tslib "^2.6.2" -"@aws-sdk/client-sts@3.658.1", "@aws-sdk/client-sts@^3.658.1": - version "3.658.1" - resolved "https://registry.yarnpkg.com/@aws-sdk/client-sts/-/client-sts-3.658.1.tgz#5e6af00f5b87f3d79a2b848241b832af20ce42ab" - integrity sha512-yw9hc5blTnbT1V6mR7Cx9HGc9KQpcLQ1QXj8rntiJi6tIYu3aFNVEyy81JHL7NsuBSeQulJTvHO3y6r3O0sfRg== +"@aws-sdk/client-sts@3.665.0", "@aws-sdk/client-sts@^3.665.0": + version "3.665.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/client-sts/-/client-sts-3.665.0.tgz#1b2b71841c1da810091b8ac79346c30f01d8897c" + integrity sha512-/OQEaWB1euXhZ/hV+wetDw1tynlrkNKzirzoiFuJ1EQsiIb9Ih/qjUF9KLdF1+/bXbnGu5YvIaAx80YReUchjg== dependencies: "@aws-crypto/sha256-browser" "5.2.0" "@aws-crypto/sha256-js" "5.2.0" - "@aws-sdk/client-sso-oidc" "3.658.1" - "@aws-sdk/core" "3.658.1" - "@aws-sdk/credential-provider-node" "3.658.1" - "@aws-sdk/middleware-host-header" "3.654.0" - "@aws-sdk/middleware-logger" "3.654.0" - "@aws-sdk/middleware-recursion-detection" "3.654.0" - "@aws-sdk/middleware-user-agent" "3.654.0" - "@aws-sdk/region-config-resolver" "3.654.0" - "@aws-sdk/types" "3.654.0" - "@aws-sdk/util-endpoints" "3.654.0" - "@aws-sdk/util-user-agent-browser" "3.654.0" - "@aws-sdk/util-user-agent-node" "3.654.0" - "@smithy/config-resolver" "^3.0.8" - "@smithy/core" "^2.4.6" - "@smithy/fetch-http-handler" "^3.2.8" - "@smithy/hash-node" "^3.0.6" - "@smithy/invalid-dependency" "^3.0.6" - "@smithy/middleware-content-length" "^3.0.8" - "@smithy/middleware-endpoint" "^3.1.3" - "@smithy/middleware-retry" "^3.0.21" - "@smithy/middleware-serde" "^3.0.6" - "@smithy/middleware-stack" "^3.0.6" - "@smithy/node-config-provider" "^3.1.7" - "@smithy/node-http-handler" "^3.2.3" - "@smithy/protocol-http" "^4.1.3" - "@smithy/smithy-client" "^3.3.5" - "@smithy/types" "^3.4.2" - "@smithy/url-parser" "^3.0.6" + "@aws-sdk/client-sso-oidc" "3.665.0" + "@aws-sdk/core" "3.665.0" + "@aws-sdk/credential-provider-node" "3.665.0" + "@aws-sdk/middleware-host-header" "3.664.0" + "@aws-sdk/middleware-logger" "3.664.0" + "@aws-sdk/middleware-recursion-detection" "3.664.0" + "@aws-sdk/middleware-user-agent" "3.664.0" + "@aws-sdk/region-config-resolver" "3.664.0" + "@aws-sdk/types" "3.664.0" + "@aws-sdk/util-endpoints" "3.664.0" + "@aws-sdk/util-user-agent-browser" "3.664.0" + "@aws-sdk/util-user-agent-node" "3.664.0" + "@smithy/config-resolver" "^3.0.9" + "@smithy/core" "^2.4.7" + "@smithy/fetch-http-handler" "^3.2.9" + "@smithy/hash-node" "^3.0.7" + "@smithy/invalid-dependency" "^3.0.7" + "@smithy/middleware-content-length" "^3.0.9" + "@smithy/middleware-endpoint" "^3.1.4" + "@smithy/middleware-retry" "^3.0.22" + "@smithy/middleware-serde" "^3.0.7" + "@smithy/middleware-stack" "^3.0.7" + "@smithy/node-config-provider" "^3.1.8" + "@smithy/node-http-handler" "^3.2.4" + "@smithy/protocol-http" "^4.1.4" + "@smithy/smithy-client" "^3.3.6" + "@smithy/types" "^3.5.0" + "@smithy/url-parser" "^3.0.7" "@smithy/util-base64" "^3.0.0" "@smithy/util-body-length-browser" "^3.0.0" "@smithy/util-body-length-node" "^3.0.0" - "@smithy/util-defaults-mode-browser" "^3.0.21" - "@smithy/util-defaults-mode-node" "^3.0.21" - "@smithy/util-endpoints" "^2.1.2" - "@smithy/util-middleware" "^3.0.6" - "@smithy/util-retry" "^3.0.6" + "@smithy/util-defaults-mode-browser" "^3.0.22" + "@smithy/util-defaults-mode-node" "^3.0.22" + "@smithy/util-endpoints" "^2.1.3" + "@smithy/util-middleware" "^3.0.7" + "@smithy/util-retry" "^3.0.7" "@smithy/util-utf8" "^3.0.0" tslib "^2.6.2" -"@aws-sdk/core@3.658.1": - version "3.658.1" - resolved "https://registry.yarnpkg.com/@aws-sdk/core/-/core-3.658.1.tgz#7b211f75a6048eba88ff33169047b4dc57fdc520" - integrity sha512-vJVMoMcSKXK2gBRSu9Ywwv6wQ7tXH8VL1fqB1uVxgCqBZ3IHfqNn4zvpMPWrwgO2/3wv7XFyikGQ5ypPTCw4jA== - dependencies: - "@smithy/core" "^2.4.6" - "@smithy/node-config-provider" "^3.1.7" - "@smithy/property-provider" "^3.1.6" - "@smithy/protocol-http" "^4.1.3" - "@smithy/signature-v4" "^4.1.4" - "@smithy/smithy-client" "^3.3.5" - "@smithy/types" "^3.4.2" - "@smithy/util-middleware" "^3.0.6" +"@aws-sdk/core@3.665.0": + version "3.665.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/core/-/core-3.665.0.tgz#388249e5114291cec88d07188c6a707957bdd4dc" + integrity sha512-nqmNNf7Ml7qDXTIisDv+OYe/rl3nAW4cmR+HxrOCWdhTHe8xRdR5c45VPoh8nv1KIry5xtd+iqPrzzjydes+Og== + dependencies: + "@aws-sdk/types" "3.664.0" + "@smithy/core" "^2.4.7" + "@smithy/node-config-provider" "^3.1.8" + "@smithy/property-provider" "^3.1.7" + "@smithy/protocol-http" "^4.1.4" + "@smithy/signature-v4" "^4.2.0" + "@smithy/smithy-client" "^3.3.6" + "@smithy/types" "^3.5.0" + "@smithy/util-middleware" "^3.0.7" fast-xml-parser "4.4.1" tslib "^2.6.2" -"@aws-sdk/credential-provider-cognito-identity@3.658.1": - version "3.658.1" - resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-cognito-identity/-/credential-provider-cognito-identity-3.658.1.tgz#deb61eb4d9b0a1aeb5c0118fe740de90618f3323" - integrity sha512-JY4rZ4e2emL7PNHCU7F/BQV8PpQGEBZLkEoPD55RO4CitaIhlVZRpUCGLih+0Hw4MOnTUqJdfQBM+qZk6G+Now== +"@aws-sdk/credential-provider-cognito-identity@3.665.0": + version "3.665.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-cognito-identity/-/credential-provider-cognito-identity-3.665.0.tgz#38042c3d2c42d34b2be37be7acdc66067d945401" + integrity sha512-CeoUhCv6tb/xV+fiww+DGzlq04rTgA1S9GP9Bqtkhjjy8B9Gai7DaTAwPB+qcjPAhqCgC/JRZVljWLEt6NEeuA== dependencies: - "@aws-sdk/client-cognito-identity" "3.658.1" - "@aws-sdk/types" "3.654.0" - "@smithy/property-provider" "^3.1.6" - "@smithy/types" "^3.4.2" + "@aws-sdk/client-cognito-identity" "3.665.0" + "@aws-sdk/types" "3.664.0" + "@smithy/property-provider" "^3.1.7" + "@smithy/types" "^3.5.0" tslib "^2.6.2" -"@aws-sdk/credential-provider-env@3.654.0": - version "3.654.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-env/-/credential-provider-env-3.654.0.tgz#5773a9d969ede7e30059472b26c9e39b3992cc0a" - integrity sha512-kogsx3Ql81JouHS7DkheCDU9MYAvK0AokxjcshDveGmf7BbgbWCA8Fnb9wjQyNDaOXNvkZu8Z8rgkX91z324/w== +"@aws-sdk/credential-provider-env@3.664.0": + version "3.664.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-env/-/credential-provider-env-3.664.0.tgz#62e81a883f9b94e593ed31a21f91d6026aba73ee" + integrity sha512-95rE+9Voaco0nmKJrXqfJAxSSkSWqlBy76zomiZrUrv7YuijQtHCW8jte6v6UHAFAaBzgFsY7QqBxs15u9SM7g== dependencies: - "@aws-sdk/types" "3.654.0" - "@smithy/property-provider" "^3.1.6" - "@smithy/types" "^3.4.2" + "@aws-sdk/types" "3.664.0" + "@smithy/property-provider" "^3.1.7" + "@smithy/types" "^3.5.0" tslib "^2.6.2" -"@aws-sdk/credential-provider-http@3.658.1": - version "3.658.1" - resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-http/-/credential-provider-http-3.658.1.tgz#35fa80fa8440e9fd5baf061bfd18862cbcabd3bd" - integrity sha512-4ubkJjEVCZflxkZnV1JDQv8P2pburxk1LrEp55telfJRzXrnowzBKwuV2ED0QMNC448g2B3VCaffS+Ct7c4IWQ== - dependencies: - "@aws-sdk/types" "3.654.0" - "@smithy/fetch-http-handler" "^3.2.8" - "@smithy/node-http-handler" "^3.2.3" - "@smithy/property-provider" "^3.1.6" - "@smithy/protocol-http" "^4.1.3" - "@smithy/smithy-client" "^3.3.5" - "@smithy/types" "^3.4.2" - "@smithy/util-stream" "^3.1.8" +"@aws-sdk/credential-provider-http@3.664.0": + version "3.664.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-http/-/credential-provider-http-3.664.0.tgz#457e0c081b3f91315f5f1c3ce4f9b625ef085787" + integrity sha512-svaPwVfWV3g/qjd4cYHTUyBtkdOwcVjC+tSj6EjoMrpZwGUXcCbYe04iU0ARZ6tuH/u3vySbTLOGjSa7g8o9Qw== + dependencies: + "@aws-sdk/types" "3.664.0" + "@smithy/fetch-http-handler" "^3.2.9" + "@smithy/node-http-handler" "^3.2.4" + "@smithy/property-provider" "^3.1.7" + "@smithy/protocol-http" "^4.1.4" + "@smithy/smithy-client" "^3.3.6" + "@smithy/types" "^3.5.0" + "@smithy/util-stream" "^3.1.9" tslib "^2.6.2" -"@aws-sdk/credential-provider-ini@3.658.1": - version "3.658.1" - resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.658.1.tgz#a451b8fc5d057b9c8473d452f4b8bcd221cdd201" - integrity sha512-2uwOamQg5ppwfegwen1ddPu5HM3/IBSnaGlaKLFhltkdtZ0jiqTZWUtX2V+4Q+buLnT0hQvLS/frQ+7QUam+0Q== - dependencies: - "@aws-sdk/credential-provider-env" "3.654.0" - "@aws-sdk/credential-provider-http" "3.658.1" - "@aws-sdk/credential-provider-process" "3.654.0" - "@aws-sdk/credential-provider-sso" "3.658.1" - "@aws-sdk/credential-provider-web-identity" "3.654.0" - "@aws-sdk/types" "3.654.0" - "@smithy/credential-provider-imds" "^3.2.3" - "@smithy/property-provider" "^3.1.6" - "@smithy/shared-ini-file-loader" "^3.1.7" - "@smithy/types" "^3.4.2" +"@aws-sdk/credential-provider-ini@3.665.0": + version "3.665.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.665.0.tgz#a7a40a0867639b1a4dea9a38d6b25fcead660a96" + integrity sha512-CSWBV5GqCkK78TTXq6qx40MWCt90t8rS/O7FIR4nbmoUhG/DysaC1G0om1fSx6k+GWcvIIIsSvD4hdbh8FRWKA== + dependencies: + "@aws-sdk/credential-provider-env" "3.664.0" + "@aws-sdk/credential-provider-http" "3.664.0" + "@aws-sdk/credential-provider-process" "3.664.0" + "@aws-sdk/credential-provider-sso" "3.665.0" + "@aws-sdk/credential-provider-web-identity" "3.664.0" + "@aws-sdk/types" "3.664.0" + "@smithy/credential-provider-imds" "^3.2.4" + "@smithy/property-provider" "^3.1.7" + "@smithy/shared-ini-file-loader" "^3.1.8" + "@smithy/types" "^3.5.0" tslib "^2.6.2" -"@aws-sdk/credential-provider-node@3.658.1": - version "3.658.1" - resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-node/-/credential-provider-node-3.658.1.tgz#ad7209177f8c1c43d767e5c342960a2d19ee124e" - integrity sha512-XwxW6N+uPXPYAuyq+GfOEdfL/MZGAlCSfB5gEWtLBFmFbikhmEuqfWtI6CD60OwudCUOh6argd21BsJf8o1SJA== - dependencies: - "@aws-sdk/credential-provider-env" "3.654.0" - "@aws-sdk/credential-provider-http" "3.658.1" - "@aws-sdk/credential-provider-ini" "3.658.1" - "@aws-sdk/credential-provider-process" "3.654.0" - "@aws-sdk/credential-provider-sso" "3.658.1" - "@aws-sdk/credential-provider-web-identity" "3.654.0" - "@aws-sdk/types" "3.654.0" - "@smithy/credential-provider-imds" "^3.2.3" - "@smithy/property-provider" "^3.1.6" - "@smithy/shared-ini-file-loader" "^3.1.7" - "@smithy/types" "^3.4.2" +"@aws-sdk/credential-provider-node@3.665.0": + version "3.665.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-node/-/credential-provider-node-3.665.0.tgz#bc8ea541fe0a5e9cbd29564a43abb6a9ea5e3edd" + integrity sha512-cmJfVi4IM0WaKMQvPXhiS5mdIZyCoa04I3D+IEKpD2GAuVZa6tgwqfPyaApFDLjyedGGNFkC4MRgAjCcCl4WFg== + dependencies: + "@aws-sdk/credential-provider-env" "3.664.0" + "@aws-sdk/credential-provider-http" "3.664.0" + "@aws-sdk/credential-provider-ini" "3.665.0" + "@aws-sdk/credential-provider-process" "3.664.0" + "@aws-sdk/credential-provider-sso" "3.665.0" + "@aws-sdk/credential-provider-web-identity" "3.664.0" + "@aws-sdk/types" "3.664.0" + "@smithy/credential-provider-imds" "^3.2.4" + "@smithy/property-provider" "^3.1.7" + "@smithy/shared-ini-file-loader" "^3.1.8" + "@smithy/types" "^3.5.0" tslib "^2.6.2" -"@aws-sdk/credential-provider-process@3.654.0": - version "3.654.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-process/-/credential-provider-process-3.654.0.tgz#2c526d0d059eddfe4176933fadbbf8bd59480642" - integrity sha512-PmQoo8sZ9Q2Ow8OMzK++Z9lI7MsRUG7sNq3E72DVA215dhtTICTDQwGlXH2AAmIp7n+G9LLRds+4wo2ehG4mkg== +"@aws-sdk/credential-provider-process@3.664.0": + version "3.664.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-process/-/credential-provider-process-3.664.0.tgz#d5ae17d404440855733a9eb0167ee8db168b7814" + integrity sha512-sQicIw/qWTsmMw8EUQNJXdrWV5SXaZc2zGdCQsQxhR6wwNO2/rZ5JmzdcwUADmleBVyPYk3KGLhcofF/qXT2Ng== dependencies: - "@aws-sdk/types" "3.654.0" - "@smithy/property-provider" "^3.1.6" - "@smithy/shared-ini-file-loader" "^3.1.7" - "@smithy/types" "^3.4.2" + "@aws-sdk/types" "3.664.0" + "@smithy/property-provider" "^3.1.7" + "@smithy/shared-ini-file-loader" "^3.1.8" + "@smithy/types" "^3.5.0" tslib "^2.6.2" -"@aws-sdk/credential-provider-sso@3.658.1": - version "3.658.1" - resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.658.1.tgz#62db3f09f08a33b5fb4827a8a8f1a640373b39b7" - integrity sha512-YOagVEsZEk9DmgJEBg+4MBXrPcw/tYas0VQ5OVBqC5XHNbi2OBGJqgmjVPesuu393E7W0VQxtJFDS00O1ewQgA== - dependencies: - "@aws-sdk/client-sso" "3.658.1" - "@aws-sdk/token-providers" "3.654.0" - "@aws-sdk/types" "3.654.0" - "@smithy/property-provider" "^3.1.6" - "@smithy/shared-ini-file-loader" "^3.1.7" - "@smithy/types" "^3.4.2" +"@aws-sdk/credential-provider-sso@3.665.0": + version "3.665.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.665.0.tgz#9ba6ea31122d863442fe7c2e9a3004dcb04f15ed" + integrity sha512-Xe8WW4r70bsetGQG3azFeK/gd+Q4OmNiidtRrG64y/V9TIvIqc7Y/yUZNhEgFkpG19o188VmXg/ulnG3E+MvLg== + dependencies: + "@aws-sdk/client-sso" "3.665.0" + "@aws-sdk/token-providers" "3.664.0" + "@aws-sdk/types" "3.664.0" + "@smithy/property-provider" "^3.1.7" + "@smithy/shared-ini-file-loader" "^3.1.8" + "@smithy/types" "^3.5.0" tslib "^2.6.2" -"@aws-sdk/credential-provider-web-identity@3.654.0": - version "3.654.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.654.0.tgz#67dc0463d20f801c8577276e2066f9151b2d5eb1" - integrity sha512-6a2g9gMtZToqSu+CusjNK5zvbLJahQ9di7buO3iXgbizXpLXU1rnawCpWxwslMpT5fLgMSKDnKDrr6wdEk7jSw== +"@aws-sdk/credential-provider-web-identity@3.664.0": + version "3.664.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.664.0.tgz#46b79cdae6adb3c7d8da966eeef06124a31e065b" + integrity sha512-10ltP1BfSKRJVXd8Yr5oLbo+VSDskWbps0X3szSsxTk0Dju1xvkz7hoIjylWLvtGbvQ+yb2pmsJYKCudW/4DJg== dependencies: - "@aws-sdk/types" "3.654.0" - "@smithy/property-provider" "^3.1.6" - "@smithy/types" "^3.4.2" + "@aws-sdk/types" "3.664.0" + "@smithy/property-provider" "^3.1.7" + "@smithy/types" "^3.5.0" tslib "^2.6.2" -"@aws-sdk/credential-providers@^3.658.1": - version "3.658.1" - resolved "https://registry.yarnpkg.com/@aws-sdk/credential-providers/-/credential-providers-3.658.1.tgz#fea93637acaab5a0b56b5b3fcfd036ab9f94afb7" - integrity sha512-lfXA6kZS6GHyi/67EbfrKdLoqHR6j7G35eFwaqxyNkfMhNBpAF0eZK3SYiwnzdR9+Wb/enTFawYiFbG5R+dQzA== - dependencies: - "@aws-sdk/client-cognito-identity" "3.658.1" - "@aws-sdk/client-sso" "3.658.1" - "@aws-sdk/client-sts" "3.658.1" - "@aws-sdk/credential-provider-cognito-identity" "3.658.1" - "@aws-sdk/credential-provider-env" "3.654.0" - "@aws-sdk/credential-provider-http" "3.658.1" - "@aws-sdk/credential-provider-ini" "3.658.1" - "@aws-sdk/credential-provider-node" "3.658.1" - "@aws-sdk/credential-provider-process" "3.654.0" - "@aws-sdk/credential-provider-sso" "3.658.1" - "@aws-sdk/credential-provider-web-identity" "3.654.0" - "@aws-sdk/types" "3.654.0" - "@smithy/credential-provider-imds" "^3.2.3" - "@smithy/property-provider" "^3.1.6" - "@smithy/types" "^3.4.2" +"@aws-sdk/credential-providers@^3.665.0": + version "3.665.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-providers/-/credential-providers-3.665.0.tgz#c16bdf40594cb8d2545ba0488e8a606709f09aca" + integrity sha512-NmIvufyx5GiyynZmLmd6s1DKFTAlOlyB2e7wBMqRmsrQo5/+WKWDwWwn7T/QvuyjDJFp35ruucET7YIqePWcHg== + dependencies: + "@aws-sdk/client-cognito-identity" "3.665.0" + "@aws-sdk/client-sso" "3.665.0" + "@aws-sdk/client-sts" "3.665.0" + "@aws-sdk/credential-provider-cognito-identity" "3.665.0" + "@aws-sdk/credential-provider-env" "3.664.0" + "@aws-sdk/credential-provider-http" "3.664.0" + "@aws-sdk/credential-provider-ini" "3.665.0" + "@aws-sdk/credential-provider-node" "3.665.0" + "@aws-sdk/credential-provider-process" "3.664.0" + "@aws-sdk/credential-provider-sso" "3.665.0" + "@aws-sdk/credential-provider-web-identity" "3.664.0" + "@aws-sdk/types" "3.664.0" + "@smithy/credential-provider-imds" "^3.2.4" + "@smithy/property-provider" "^3.1.7" + "@smithy/types" "^3.5.0" tslib "^2.6.2" -"@aws-sdk/middleware-host-header@3.654.0": - version "3.654.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-host-header/-/middleware-host-header-3.654.0.tgz#8b02dcc28467d5b48c32cec22fd6e10ffd2a0549" - integrity sha512-rxGgVHWKp8U2ubMv+t+vlIk7QYUaRCHaVpmUlJv0Wv6Q0KeO9a42T9FxHphjOTlCGQOLcjCreL9CF8Qhtb4mdQ== +"@aws-sdk/middleware-host-header@3.664.0": + version "3.664.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-host-header/-/middleware-host-header-3.664.0.tgz#14ea7fabe0f5a31ee399bb243981c951ab902560" + integrity sha512-4tCXJ+DZWTq38eLmFgnEmO8X4jfWpgPbWoCyVYpRHCPHq6xbrU65gfwS9jGx25L4YdEce641ChI9TKLryuUgRA== dependencies: - "@aws-sdk/types" "3.654.0" - "@smithy/protocol-http" "^4.1.3" - "@smithy/types" "^3.4.2" + "@aws-sdk/types" "3.664.0" + "@smithy/protocol-http" "^4.1.4" + "@smithy/types" "^3.5.0" tslib "^2.6.2" -"@aws-sdk/middleware-logger@3.654.0": - version "3.654.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-logger/-/middleware-logger-3.654.0.tgz#510495302fb134e1ef2163205f8eaedd46ffe05f" - integrity sha512-OQYb+nWlmASyXfRb989pwkJ9EVUMP1CrKn2eyTk3usl20JZmKo2Vjis6I0tLUkMSxMhnBJJlQKyWkRpD/u1FVg== +"@aws-sdk/middleware-logger@3.664.0": + version "3.664.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-logger/-/middleware-logger-3.664.0.tgz#74f47c10732b873c1f097c909b9df46babeacda4" + integrity sha512-eNykMqQuv7eg9pAcaLro44fscIe1VkFfhm+gYnlxd+PH6xqapRki1E68VHehnIptnVBdqnWfEqLUSLGm9suqhg== dependencies: - "@aws-sdk/types" "3.654.0" - "@smithy/types" "^3.4.2" + "@aws-sdk/types" "3.664.0" + "@smithy/types" "^3.5.0" tslib "^2.6.2" -"@aws-sdk/middleware-recursion-detection@3.654.0": - version "3.654.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.654.0.tgz#4ade897efb6cbbfd72dd62a66999f28fd1552f9a" - integrity sha512-gKSomgltKVmsT8sC6W7CrADZ4GHwX9epk3GcH6QhebVO3LA9LRbkL3TwOPUXakxxOLLUTYdOZLIOtFf7iH00lg== +"@aws-sdk/middleware-recursion-detection@3.664.0": + version "3.664.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.664.0.tgz#0564b857c4501e2de5a2c3d78d3a5f29fad1307b" + integrity sha512-jq27WMZhm+dY8BWZ9Ipy3eXtZj0lJzpaKQE3A3tH5AOIlUV/gqrmnJ9CdqVVef4EJsq9Yil4ZzQjKKmPsxveQg== dependencies: - "@aws-sdk/types" "3.654.0" - "@smithy/protocol-http" "^4.1.3" - "@smithy/types" "^3.4.2" + "@aws-sdk/types" "3.664.0" + "@smithy/protocol-http" "^4.1.4" + "@smithy/types" "^3.5.0" tslib "^2.6.2" -"@aws-sdk/middleware-user-agent@3.654.0": - version "3.654.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.654.0.tgz#5fa56514b97ced923fefe2653429d7b2bfb102bb" - integrity sha512-liCcqPAyRsr53cy2tYu4qeH4MMN0eh9g6k56XzI5xd4SghXH5YWh4qOYAlQ8T66ZV4nPMtD8GLtLXGzsH8moFg== +"@aws-sdk/middleware-user-agent@3.664.0": + version "3.664.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.664.0.tgz#06827a880095ddf34361662df359bdc97de6f00e" + integrity sha512-Kp5UwXwayO6d472nntiwgrxqay2KS9ozXNmKjQfDrUWbEzvgKI+jgKNMia8MMnjSxYoBGpQ1B8NGh8a6KMEJJg== dependencies: - "@aws-sdk/types" "3.654.0" - "@aws-sdk/util-endpoints" "3.654.0" - "@smithy/protocol-http" "^4.1.3" - "@smithy/types" "^3.4.2" + "@aws-sdk/types" "3.664.0" + "@aws-sdk/util-endpoints" "3.664.0" + "@smithy/core" "^2.4.7" + "@smithy/protocol-http" "^4.1.4" + "@smithy/types" "^3.5.0" tslib "^2.6.2" -"@aws-sdk/region-config-resolver@3.654.0": - version "3.654.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/region-config-resolver/-/region-config-resolver-3.654.0.tgz#f98e25a6669fde3d747db23eb589732384e213ef" - integrity sha512-ydGOrXJxj3x0sJhsXyTmvJVLAE0xxuTWFJihTl67RtaO7VRNtd82I3P3bwoMMaDn5WpmV5mPo8fEUDRlBm3fPg== +"@aws-sdk/region-config-resolver@3.664.0": + version "3.664.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/region-config-resolver/-/region-config-resolver-3.664.0.tgz#69e65abae7338e677f6be0c7c43ee622411c1304" + integrity sha512-o/B8dg8K+9714RGYPgMxZgAChPe/MTSMkf/eHXTUFHNik5i1HgVKfac22njV2iictGy/6GhpFsKa1OWNYAkcUg== dependencies: - "@aws-sdk/types" "3.654.0" - "@smithy/node-config-provider" "^3.1.7" - "@smithy/types" "^3.4.2" + "@aws-sdk/types" "3.664.0" + "@smithy/node-config-provider" "^3.1.8" + "@smithy/types" "^3.5.0" "@smithy/util-config-provider" "^3.0.0" - "@smithy/util-middleware" "^3.0.6" + "@smithy/util-middleware" "^3.0.7" tslib "^2.6.2" -"@aws-sdk/token-providers@3.654.0": - version "3.654.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/token-providers/-/token-providers-3.654.0.tgz#1aba36d510d471ccac43f90b59e2a354399ed069" - integrity sha512-D8GeJYmvbfWkQDtTB4owmIobSMexZel0fOoetwvgCQ/7L8VPph3Q2bn1TRRIXvH7wdt6DcDxA3tKMHPBkT3GlA== +"@aws-sdk/token-providers@3.664.0": + version "3.664.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/token-providers/-/token-providers-3.664.0.tgz#edeb10bf273960c8ef7172d78c0bb41a0c73d350" + integrity sha512-dBAvXW2/6bAxidvKARFxyCY2uCynYBKRFN00NhS1T5ggxm3sUnuTpWw1DTjl02CVPkacBOocZf10h8pQbHSK8w== dependencies: - "@aws-sdk/types" "3.654.0" - "@smithy/property-provider" "^3.1.6" - "@smithy/shared-ini-file-loader" "^3.1.7" - "@smithy/types" "^3.4.2" + "@aws-sdk/types" "3.664.0" + "@smithy/property-provider" "^3.1.7" + "@smithy/shared-ini-file-loader" "^3.1.8" + "@smithy/types" "^3.5.0" tslib "^2.6.2" -"@aws-sdk/types@3.654.0", "@aws-sdk/types@^3.222.0": - version "3.654.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/types/-/types-3.654.0.tgz#d368dda5e8aff9e7b6575985bb425bbbaf67aa97" - integrity sha512-VWvbED3SV+10QJIcmU/PKjsKilsTV16d1I7/on4bvD/jo1qGeMXqLDBSen3ks/tuvXZF/mFc7ZW/W2DiLVtO7A== +"@aws-sdk/types@3.664.0", "@aws-sdk/types@^3.222.0": + version "3.664.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/types/-/types-3.664.0.tgz#e6de1c0a2cdfe4f1e43271223dc0b55e613ced58" + integrity sha512-+GtXktvVgpreM2b+NJL9OqZGsOzHwlCUrO8jgQUvH/yA6Kd8QO2YFhQCp0C9sSzTteZJVqGBu8E0CQurxJHPbw== dependencies: - "@smithy/types" "^3.4.2" + "@smithy/types" "^3.5.0" tslib "^2.6.2" -"@aws-sdk/util-endpoints@3.654.0": - version "3.654.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/util-endpoints/-/util-endpoints-3.654.0.tgz#ae8ac05c8afe73cf1428942c3a6d0ab8765f3911" - integrity sha512-i902fcBknHs0Irgdpi62+QMvzxE+bczvILXigYrlHL4+PiEnlMVpni5L5W1qCkNZXf8AaMrSBuR1NZAGp6UOUw== +"@aws-sdk/util-endpoints@3.664.0": + version "3.664.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-endpoints/-/util-endpoints-3.664.0.tgz#cad1195e9b6af74f61bcad4c71d7b820e7deae8c" + integrity sha512-KrXoHz6zmAahVHkyWMRT+P6xJaxItgmklxEDrT+npsUB4d5C/lhw16Crcp9TDi828fiZK3GYKRAmmNhvmzvBNg== dependencies: - "@aws-sdk/types" "3.654.0" - "@smithy/types" "^3.4.2" - "@smithy/util-endpoints" "^2.1.2" + "@aws-sdk/types" "3.664.0" + "@smithy/types" "^3.5.0" + "@smithy/util-endpoints" "^2.1.3" tslib "^2.6.2" "@aws-sdk/util-locate-window@^3.0.0": @@ -596,151 +605,152 @@ dependencies: tslib "^2.6.2" -"@aws-sdk/util-user-agent-browser@3.654.0": - version "3.654.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.654.0.tgz#caa5e5d6d502aad1fe5a436cffbabfff1ec3b92c" - integrity sha512-ykYAJqvnxLt7wfrqya28wuH3/7NdrwzfiFd7NqEVQf7dXVxL5RPEpD7DxjcyQo3DsHvvdUvGZVaQhozycn1pzA== +"@aws-sdk/util-user-agent-browser@3.664.0": + version "3.664.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.664.0.tgz#d22da782154df1b3d6b60e89103554c07673e3b2" + integrity sha512-c/PV3+f1ss4PpskHbcOxTZ6fntV2oXy/xcDR9nW+kVaz5cM1G702gF0rvGLKPqoBwkj2rWGe6KZvEBeLzynTUQ== dependencies: - "@aws-sdk/types" "3.654.0" - "@smithy/types" "^3.4.2" + "@aws-sdk/types" "3.664.0" + "@smithy/types" "^3.5.0" bowser "^2.11.0" tslib "^2.6.2" -"@aws-sdk/util-user-agent-node@3.654.0": - version "3.654.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.654.0.tgz#d4b88fa9f3fce2fd70118d2c01abd941d30cffa7" - integrity sha512-a0ojjdBN6pqv6gB4H/QPPSfhs7mFtlVwnmKCM/QrTaFzN0U810PJ1BST3lBx5sa23I5jWHGaoFY+5q65C3clLQ== +"@aws-sdk/util-user-agent-node@3.664.0": + version "3.664.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.664.0.tgz#3699b1a959fb6781e627d6303b18cdbd41f1b90d" + integrity sha512-l/m6KkgrTw1p/VTJTk0IoP9I2OnpWp3WbBgzxoNeh9cUcxTufIn++sBxKj5hhDql57LKWsckScG/MhFuH0vZZA== dependencies: - "@aws-sdk/types" "3.654.0" - "@smithy/node-config-provider" "^3.1.7" - "@smithy/types" "^3.4.2" + "@aws-sdk/middleware-user-agent" "3.664.0" + "@aws-sdk/types" "3.664.0" + "@smithy/node-config-provider" "^3.1.8" + "@smithy/types" "^3.5.0" tslib "^2.6.2" -"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.24.7.tgz#882fd9e09e8ee324e496bd040401c6f046ef4465" - integrity sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA== +"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.25.7": + version "7.25.7" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.25.7.tgz#438f2c524071531d643c6f0188e1e28f130cebc7" + integrity sha512-0xZJFNE5XMpENsgfHYTw8FbX4kv53mFLn2i3XPoq69LyhYSCBJtitaHx9QnsVTrsogI4Z3+HtEfZ2/GFPOtf5g== dependencies: - "@babel/highlight" "^7.24.7" + "@babel/highlight" "^7.25.7" picocolors "^1.0.0" -"@babel/compat-data@^7.25.2": - version "7.25.4" - resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.25.4.tgz#7d2a80ce229890edcf4cc259d4d696cb4dae2fcb" - integrity sha512-+LGRog6RAsCJrrrg/IO6LGmpphNe5DiK30dGjCoxxeGv49B10/3XYGxPsAwrDlMFcFEvdAUavDT8r9k/hSyQqQ== +"@babel/compat-data@^7.25.7": + version "7.25.7" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.25.7.tgz#b8479fe0018ef0ac87b6b7a5c6916fcd67ae2c9c" + integrity sha512-9ickoLz+hcXCeh7jrcin+/SLWm+GkxE2kTvoYyp38p4WkdFXfQJxDFGWp/YHjiKLPx06z2A7W8XKuqbReXDzsw== "@babel/core@^7.11.6", "@babel/core@^7.12.3", "@babel/core@^7.23.9": - version "7.25.2" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.25.2.tgz#ed8eec275118d7613e77a352894cd12ded8eba77" - integrity sha512-BBt3opiCOxUr9euZ5/ro/Xv8/V7yJ5bjYMqG/C1YAo8MIKAnumZalCN+msbci3Pigy4lIQfPUpfMM27HMGaYEA== + version "7.25.7" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.25.7.tgz#1b3d144157575daf132a3bc80b2b18e6e3ca6ece" + integrity sha512-yJ474Zv3cwiSOO9nXJuqzvwEeM+chDuQ8GJirw+pZ91sCGCyOZ3dJkVE09fTV0VEVzXyLWhh3G/AolYTPX7Mow== dependencies: "@ampproject/remapping" "^2.2.0" - "@babel/code-frame" "^7.24.7" - "@babel/generator" "^7.25.0" - "@babel/helper-compilation-targets" "^7.25.2" - "@babel/helper-module-transforms" "^7.25.2" - "@babel/helpers" "^7.25.0" - "@babel/parser" "^7.25.0" - "@babel/template" "^7.25.0" - "@babel/traverse" "^7.25.2" - "@babel/types" "^7.25.2" + "@babel/code-frame" "^7.25.7" + "@babel/generator" "^7.25.7" + "@babel/helper-compilation-targets" "^7.25.7" + "@babel/helper-module-transforms" "^7.25.7" + "@babel/helpers" "^7.25.7" + "@babel/parser" "^7.25.7" + "@babel/template" "^7.25.7" + "@babel/traverse" "^7.25.7" + "@babel/types" "^7.25.7" convert-source-map "^2.0.0" debug "^4.1.0" gensync "^1.0.0-beta.2" json5 "^2.2.3" semver "^6.3.1" -"@babel/generator@^7.25.0", "@babel/generator@^7.25.6", "@babel/generator@^7.7.2": - version "7.25.6" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.25.6.tgz#0df1ad8cb32fe4d2b01d8bf437f153d19342a87c" - integrity sha512-VPC82gr1seXOpkjAAKoLhP50vx4vGNlF4msF64dSFq1P8RfB+QAuJWGHPXXPc8QyfVWwwB/TNNU4+ayZmHNbZw== +"@babel/generator@^7.25.7", "@babel/generator@^7.7.2": + version "7.25.7" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.25.7.tgz#de86acbeb975a3e11ee92dd52223e6b03b479c56" + integrity sha512-5Dqpl5fyV9pIAD62yK9P7fcA768uVPUyrQmqpqstHWgMma4feF1x/oFysBCVZLY5wJ2GkMUCdsNDnGZrPoR6rA== dependencies: - "@babel/types" "^7.25.6" + "@babel/types" "^7.25.7" "@jridgewell/gen-mapping" "^0.3.5" "@jridgewell/trace-mapping" "^0.3.25" - jsesc "^2.5.1" + jsesc "^3.0.2" -"@babel/helper-compilation-targets@^7.25.2": - version "7.25.2" - resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.25.2.tgz#e1d9410a90974a3a5a66e84ff55ef62e3c02d06c" - integrity sha512-U2U5LsSaZ7TAt3cfaymQ8WHh0pxvdHoEk6HVpaexxixjyEquMh0L0YNJNM6CTGKMXV1iksi0iZkGw4AcFkPaaw== +"@babel/helper-compilation-targets@^7.25.7": + version "7.25.7" + resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.25.7.tgz#11260ac3322dda0ef53edfae6e97b961449f5fa4" + integrity sha512-DniTEax0sv6isaw6qSQSfV4gVRNtw2rte8HHM45t9ZR0xILaufBRNkpMifCRiAPyvL4ACD6v0gfCwCmtOQaV4A== dependencies: - "@babel/compat-data" "^7.25.2" - "@babel/helper-validator-option" "^7.24.8" - browserslist "^4.23.1" + "@babel/compat-data" "^7.25.7" + "@babel/helper-validator-option" "^7.25.7" + browserslist "^4.24.0" lru-cache "^5.1.1" semver "^6.3.1" -"@babel/helper-module-imports@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.24.7.tgz#f2f980392de5b84c3328fc71d38bd81bbb83042b" - integrity sha512-8AyH3C+74cgCVVXow/myrynrAGv+nTVg5vKu2nZph9x7RcRwzmh0VFallJuFTZ9mx6u4eSdXZfcOzSqTUm0HCA== - dependencies: - "@babel/traverse" "^7.24.7" - "@babel/types" "^7.24.7" - -"@babel/helper-module-transforms@^7.25.2": - version "7.25.2" - resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.25.2.tgz#ee713c29768100f2776edf04d4eb23b8d27a66e6" - integrity sha512-BjyRAbix6j/wv83ftcVJmBt72QtHI56C7JXZoG2xATiLpmoC7dpd8WnkikExHDVPpi/3qCmO6WY1EaXOluiecQ== - dependencies: - "@babel/helper-module-imports" "^7.24.7" - "@babel/helper-simple-access" "^7.24.7" - "@babel/helper-validator-identifier" "^7.24.7" - "@babel/traverse" "^7.25.2" - -"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.24.7", "@babel/helper-plugin-utils@^7.24.8", "@babel/helper-plugin-utils@^7.8.0": - version "7.24.8" - resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.8.tgz#94ee67e8ec0e5d44ea7baeb51e571bd26af07878" - integrity sha512-FFWx5142D8h2Mgr/iPVGH5G7w6jDn4jUSpZTyDnQO0Yn7Ks2Kuz6Pci8H6MPCoUJegd/UZQ3tAvfLCxQSnWWwg== - -"@babel/helper-simple-access@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.24.7.tgz#bcade8da3aec8ed16b9c4953b74e506b51b5edb3" - integrity sha512-zBAIvbCMh5Ts+b86r/CjU+4XGYIs+R1j951gxI3KmmxBMhCg4oQMsv6ZXQ64XOm/cvzfU1FmoCyt6+owc5QMYg== - dependencies: - "@babel/traverse" "^7.24.7" - "@babel/types" "^7.24.7" - -"@babel/helper-string-parser@^7.24.8": - version "7.24.8" - resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.24.8.tgz#5b3329c9a58803d5df425e5785865881a81ca48d" - integrity sha512-pO9KhhRcuUyGnJWwyEgnRJTSIZHiT+vMD0kPeD+so0l7mxkMT19g3pjY9GTnHySck/hDzq+dtW/4VgnMkippsQ== - -"@babel/helper-validator-identifier@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.7.tgz#75b889cfaf9e35c2aaf42cf0d72c8e91719251db" - integrity sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w== - -"@babel/helper-validator-option@^7.24.8": - version "7.24.8" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.24.8.tgz#3725cdeea8b480e86d34df15304806a06975e33d" - integrity sha512-xb8t9tD1MHLungh/AIoWYN+gVHaB9kwlu8gffXGSt3FFEIT7RjS+xWbc2vUD1UTZdIpKj/ab3rdqJ7ufngyi2Q== - -"@babel/helpers@^7.25.0": - version "7.25.6" - resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.25.6.tgz#57ee60141829ba2e102f30711ffe3afab357cc60" - integrity sha512-Xg0tn4HcfTijTwfDwYlvVCl43V6h4KyVVX2aEm4qdO/PC6L2YvzLHFdmxhoeSA3eslcE6+ZVXHgWwopXYLNq4Q== - dependencies: - "@babel/template" "^7.25.0" - "@babel/types" "^7.25.6" - -"@babel/highlight@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.24.7.tgz#a05ab1df134b286558aae0ed41e6c5f731bf409d" - integrity sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw== - dependencies: - "@babel/helper-validator-identifier" "^7.24.7" +"@babel/helper-module-imports@^7.25.7": + version "7.25.7" + resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.25.7.tgz#dba00d9523539152906ba49263e36d7261040472" + integrity sha512-o0xCgpNmRohmnoWKQ0Ij8IdddjyBFE4T2kagL/x6M3+4zUgc+4qTOUBoNe4XxDskt1HPKO007ZPiMgLDq2s7Kw== + dependencies: + "@babel/traverse" "^7.25.7" + "@babel/types" "^7.25.7" + +"@babel/helper-module-transforms@^7.25.7": + version "7.25.7" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.25.7.tgz#2ac9372c5e001b19bc62f1fe7d96a18cb0901d1a" + integrity sha512-k/6f8dKG3yDz/qCwSM+RKovjMix563SLxQFo0UhRNo239SP6n9u5/eLtKD6EAjwta2JHJ49CsD8pms2HdNiMMQ== + dependencies: + "@babel/helper-module-imports" "^7.25.7" + "@babel/helper-simple-access" "^7.25.7" + "@babel/helper-validator-identifier" "^7.25.7" + "@babel/traverse" "^7.25.7" + +"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.25.7", "@babel/helper-plugin-utils@^7.8.0": + version "7.25.7" + resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.25.7.tgz#8ec5b21812d992e1ef88a9b068260537b6f0e36c" + integrity sha512-eaPZai0PiqCi09pPs3pAFfl/zYgGaE6IdXtYvmf0qlcDTd3WCtO7JWCcRd64e0EQrcYgiHibEZnOGsSY4QSgaw== + +"@babel/helper-simple-access@^7.25.7": + version "7.25.7" + resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.25.7.tgz#5eb9f6a60c5d6b2e0f76057004f8dacbddfae1c0" + integrity sha512-FPGAkJmyoChQeM+ruBGIDyrT2tKfZJO8NcxdC+CWNJi7N8/rZpSxK7yvBJ5O/nF1gfu5KzN7VKG3YVSLFfRSxQ== + dependencies: + "@babel/traverse" "^7.25.7" + "@babel/types" "^7.25.7" + +"@babel/helper-string-parser@^7.25.7": + version "7.25.7" + resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.25.7.tgz#d50e8d37b1176207b4fe9acedec386c565a44a54" + integrity sha512-CbkjYdsJNHFk8uqpEkpCvRs3YRp9tY6FmFY7wLMSYuGYkrdUi7r2lc4/wqsvlHoMznX3WJ9IP8giGPq68T/Y6g== + +"@babel/helper-validator-identifier@^7.25.7": + version "7.25.7" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.7.tgz#77b7f60c40b15c97df735b38a66ba1d7c3e93da5" + integrity sha512-AM6TzwYqGChO45oiuPqwL2t20/HdMC1rTPAesnBCgPCSF1x3oN9MVUwQV2iyz4xqWrctwK5RNC8LV22kaQCNYg== + +"@babel/helper-validator-option@^7.25.7": + version "7.25.7" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.25.7.tgz#97d1d684448228b30b506d90cace495d6f492729" + integrity sha512-ytbPLsm+GjArDYXJ8Ydr1c/KJuutjF2besPNbIZnZ6MKUxi/uTA22t2ymmA4WFjZFpjiAMO0xuuJPqK2nvDVfQ== + +"@babel/helpers@^7.25.7": + version "7.25.7" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.25.7.tgz#091b52cb697a171fe0136ab62e54e407211f09c2" + integrity sha512-Sv6pASx7Esm38KQpF/U/OXLwPPrdGHNKoeblRxgZRLXnAtnkEe4ptJPDtAZM7fBLadbc1Q07kQpSiGQ0Jg6tRA== + dependencies: + "@babel/template" "^7.25.7" + "@babel/types" "^7.25.7" + +"@babel/highlight@^7.25.7": + version "7.25.7" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.25.7.tgz#20383b5f442aa606e7b5e3043b0b1aafe9f37de5" + integrity sha512-iYyACpW3iW8Fw+ZybQK+drQre+ns/tKpXbNESfrhNnPLIklLbXr7MYJ6gPEd0iETGLOK+SxMjVvKb/ffmk+FEw== + dependencies: + "@babel/helper-validator-identifier" "^7.25.7" chalk "^2.4.2" js-tokens "^4.0.0" picocolors "^1.0.0" -"@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.20.7", "@babel/parser@^7.23.9", "@babel/parser@^7.25.0", "@babel/parser@^7.25.6": - version "7.25.6" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.25.6.tgz#85660c5ef388cbbf6e3d2a694ee97a38f18afe2f" - integrity sha512-trGdfBdbD0l1ZPmcJ83eNxB9rbEax4ALFTF7fN386TMYbeCQbyme5cOEXQhbGXKebwGaB/J52w1mrklMcbgy6Q== +"@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.20.7", "@babel/parser@^7.23.9", "@babel/parser@^7.25.7": + version "7.25.7" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.25.7.tgz#99b927720f4ddbfeb8cd195a363ed4532f87c590" + integrity sha512-aZn7ETtQsjjGG5HruveUK06cU3Hljuhd9Iojm4M8WWv3wLE6OkE5PWbDUkItmMgegmccaITudyuW5RPYrYlgWw== dependencies: - "@babel/types" "^7.25.6" + "@babel/types" "^7.25.7" "@babel/plugin-syntax-async-generators@^7.8.4": version "7.8.4" @@ -771,11 +781,11 @@ "@babel/helper-plugin-utils" "^7.14.5" "@babel/plugin-syntax-import-attributes@^7.24.7": - version "7.25.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.25.6.tgz#6d4c78f042db0e82fd6436cd65fec5dc78ad2bde" - integrity sha512-sXaDXaJN9SNLymBdlWFA+bjzBhFD617ZaFiY13dGt7TVslVvVgA6fkZOP7Ki3IGElC45lwHdOTrCtKZGVAWeLQ== + version "7.25.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.25.7.tgz#d78dd0499d30df19a598e63ab895e21b909bc43f" + integrity sha512-AqVo+dguCgmpi/3mYBdu9lkngOBlQ2w2vnNpa6gfiCxQZLzV4ZbhsXitJ2Yblkoe1VQwtHSaNmIaGll/26YWRw== dependencies: - "@babel/helper-plugin-utils" "^7.24.8" + "@babel/helper-plugin-utils" "^7.25.7" "@babel/plugin-syntax-import-meta@^7.10.4": version "7.10.4" @@ -792,11 +802,11 @@ "@babel/helper-plugin-utils" "^7.8.0" "@babel/plugin-syntax-jsx@^7.7.2": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.24.7.tgz#39a1fa4a7e3d3d7f34e2acc6be585b718d30e02d" - integrity sha512-6ddciUPe/mpMnOKv/U+RSd2vvVy+Yw/JfBB0ZHYjEZt9NLHmCUylNYlsbqCCS1Bffjlb0fCwC9Vqz+sBz6PsiQ== + version "7.25.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.25.7.tgz#5352d398d11ea5e7ef330c854dea1dae0bf18165" + integrity sha512-ruZOnKO+ajVL/MVx+PwNBPOkrnXTXoWMtte1MBpegfCArhqOe3Bj52avVj1huLLxNKYKXYaSxZ2F+woK1ekXfw== dependencies: - "@babel/helper-plugin-utils" "^7.24.7" + "@babel/helper-plugin-utils" "^7.25.7" "@babel/plugin-syntax-logical-assignment-operators@^7.10.4": version "7.10.4" @@ -855,41 +865,41 @@ "@babel/helper-plugin-utils" "^7.14.5" "@babel/plugin-syntax-typescript@^7.7.2": - version "7.25.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.25.4.tgz#04db9ce5a9043d9c635e75ae7969a2cd50ca97ff" - integrity sha512-uMOCoHVU52BsSWxPOMVv5qKRdeSlPuImUCB2dlPuBSU+W2/ROE7/Zg8F2Kepbk+8yBa68LlRKxO+xgEVWorsDg== - dependencies: - "@babel/helper-plugin-utils" "^7.24.8" - -"@babel/template@^7.25.0", "@babel/template@^7.3.3": - version "7.25.0" - resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.25.0.tgz#e733dc3134b4fede528c15bc95e89cb98c52592a" - integrity sha512-aOOgh1/5XzKvg1jvVz7AVrx2piJ2XBi227DHmbY6y+bM9H2FlN+IfecYu4Xl0cNiiVejlsCri89LUsbj8vJD9Q== - dependencies: - "@babel/code-frame" "^7.24.7" - "@babel/parser" "^7.25.0" - "@babel/types" "^7.25.0" - -"@babel/traverse@^7.24.7", "@babel/traverse@^7.25.2": - version "7.25.6" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.25.6.tgz#04fad980e444f182ecf1520504941940a90fea41" - integrity sha512-9Vrcx5ZW6UwK5tvqsj0nGpp/XzqthkT0dqIc9g1AdtygFToNtTF67XzYS//dm+SAK9cp3B9R4ZO/46p63SCjlQ== - dependencies: - "@babel/code-frame" "^7.24.7" - "@babel/generator" "^7.25.6" - "@babel/parser" "^7.25.6" - "@babel/template" "^7.25.0" - "@babel/types" "^7.25.6" + version "7.25.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.25.7.tgz#bfc05b0cc31ebd8af09964650cee723bb228108b" + integrity sha512-rR+5FDjpCHqqZN2bzZm18bVYGaejGq5ZkpVCJLXor/+zlSrSoc4KWcHI0URVWjl/68Dyr1uwZUz/1njycEAv9g== + dependencies: + "@babel/helper-plugin-utils" "^7.25.7" + +"@babel/template@^7.25.7", "@babel/template@^7.3.3": + version "7.25.7" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.25.7.tgz#27f69ce382855d915b14ab0fe5fb4cbf88fa0769" + integrity sha512-wRwtAgI3bAS+JGU2upWNL9lSlDcRCqD05BZ1n3X2ONLH1WilFP6O1otQjeMK/1g0pvYcXC7b/qVUB1keofjtZA== + dependencies: + "@babel/code-frame" "^7.25.7" + "@babel/parser" "^7.25.7" + "@babel/types" "^7.25.7" + +"@babel/traverse@^7.25.7": + version "7.25.7" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.25.7.tgz#83e367619be1cab8e4f2892ef30ba04c26a40fa8" + integrity sha512-jatJPT1Zjqvh/1FyJs6qAHL+Dzb7sTb+xr7Q+gM1b+1oBsMsQQ4FkVKb6dFlJvLlVssqkRzV05Jzervt9yhnzg== + dependencies: + "@babel/code-frame" "^7.25.7" + "@babel/generator" "^7.25.7" + "@babel/parser" "^7.25.7" + "@babel/template" "^7.25.7" + "@babel/types" "^7.25.7" debug "^4.3.1" globals "^11.1.0" -"@babel/types@^7.0.0", "@babel/types@^7.20.7", "@babel/types@^7.24.7", "@babel/types@^7.25.0", "@babel/types@^7.25.2", "@babel/types@^7.25.6", "@babel/types@^7.3.3": - version "7.25.6" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.25.6.tgz#893942ddb858f32ae7a004ec9d3a76b3463ef8e6" - integrity sha512-/l42B1qxpG6RdfYf343Uw1vmDjeNhneUXtzhojE7pDgfpEypmRhI6j1kr17XCVv4Cgl9HdAiQY2x0GwKm7rWCw== +"@babel/types@^7.0.0", "@babel/types@^7.20.7", "@babel/types@^7.25.7", "@babel/types@^7.3.3": + version "7.25.7" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.25.7.tgz#1b7725c1d3a59f328cb700ce704c46371e6eef9b" + integrity sha512-vwIVdXG+j+FOpkwqHRcBgHLYNL7XMkufrlaFvL9o6Ai9sJn9+PdyIL5qa0XzTZw084c+u9LOls53eoZWP/W5WQ== dependencies: - "@babel/helper-string-parser" "^7.24.8" - "@babel/helper-validator-identifier" "^7.24.7" + "@babel/helper-string-parser" "^7.25.7" + "@babel/helper-validator-identifier" "^7.25.7" to-fast-properties "^2.0.0" "@bcoe/v8-coverage@^0.2.3": @@ -1342,9 +1352,9 @@ "@octokit/openapi-types" "^20.0.0" "@octokit/types@^13.0.0", "@octokit/types@^13.1.0": - version "13.6.0" - resolved "https://registry.yarnpkg.com/@octokit/types/-/types-13.6.0.tgz#db13d345cc3fe1a0f7c07171c724d90f2b55f410" - integrity sha512-CrooV/vKCXqwLa+osmHLIMUb87brpgUqlqkPGc6iE2wCkUvTrHiXFMhAKoDDaAAYJrtKtrFTgSQTg5nObBEaew== + version "13.6.1" + resolved "https://registry.yarnpkg.com/@octokit/types/-/types-13.6.1.tgz#432fc6c0aaae54318e5b2d3e15c22ac97fc9b15f" + integrity sha512-PHZE9Z+kWXb23Ndik8MKPirBPziOc0D2/3KH1P+6jK5nGWe96kadZuE4jev2/Jq7FvIfTlT2Ltg8Fv2x1v0a5g== dependencies: "@octokit/openapi-types" "^22.2.0" @@ -1427,79 +1437,79 @@ resolved "https://registry.yarnpkg.com/@sinonjs/text-encoding/-/text-encoding-0.7.3.tgz#282046f03e886e352b2d5f5da5eb755e01457f3f" integrity sha512-DE427ROAphMQzU4ENbliGYrBSYPXF+TtLg9S8vzeA+OF4ZKzoDdzfL8sxuMUGS/lgRhM6j1URSk9ghf7Xo1tyA== -"@smithy/abort-controller@^3.1.4": - version "3.1.4" - resolved "https://registry.yarnpkg.com/@smithy/abort-controller/-/abort-controller-3.1.4.tgz#7cb22871f7392319c565d1d9ab3cb04e635c4dd9" - integrity sha512-VupaALAQlXViW3/enTf/f5l5JZYSAxoJL7f0nanhNNKnww6DGCg1oYIuNP78KDugnkwthBO6iEcym16HhWV8RQ== +"@smithy/abort-controller@^3.1.5": + version "3.1.5" + resolved "https://registry.yarnpkg.com/@smithy/abort-controller/-/abort-controller-3.1.5.tgz#ca7a86a3c6b20fabe59667143f58d9e198616d14" + integrity sha512-DhNPnqTqPoG8aZ5dWkFOgsuY+i0GQ3CI6hMmvCoduNsnU9gUZWZBwGfDQsTTB7NvFPkom1df7jMIJWU90kuXXg== dependencies: - "@smithy/types" "^3.4.2" + "@smithy/types" "^3.5.0" tslib "^2.6.2" -"@smithy/config-resolver@^3.0.8": - version "3.0.8" - resolved "https://registry.yarnpkg.com/@smithy/config-resolver/-/config-resolver-3.0.8.tgz#8717ea934f1d72474a709fc3535d7b8a11de2e33" - integrity sha512-Tv1obAC18XOd2OnDAjSWmmthzx6Pdeh63FbLin8MlPiuJ2ATpKkq0NcNOJFr0dO+JmZXnwu8FQxKJ3TKJ3Hulw== +"@smithy/config-resolver@^3.0.9": + version "3.0.9" + resolved "https://registry.yarnpkg.com/@smithy/config-resolver/-/config-resolver-3.0.9.tgz#dcf4b7747ca481866f9bfac21469ebe2031a599e" + integrity sha512-5d9oBf40qC7n2xUoHmntKLdqsyTMMo/r49+eqSIjJ73eDfEtljAxEhzIQ3bkgXJtR3xiv7YzMT/3FF3ORkjWdg== dependencies: - "@smithy/node-config-provider" "^3.1.7" - "@smithy/types" "^3.4.2" + "@smithy/node-config-provider" "^3.1.8" + "@smithy/types" "^3.5.0" "@smithy/util-config-provider" "^3.0.0" - "@smithy/util-middleware" "^3.0.6" + "@smithy/util-middleware" "^3.0.7" tslib "^2.6.2" -"@smithy/core@^2.4.6": - version "2.4.6" - resolved "https://registry.yarnpkg.com/@smithy/core/-/core-2.4.6.tgz#d367a047a88aceee22eda5a598db00a7e5c50e72" - integrity sha512-6lQQp99hnyuNNIzeTYSzCUXJHwvvFLY7hfdFGSJM95tjRDJGfzWYFRBXPaM9766LiiTsQ561KErtbufzUFSYUg== - dependencies: - "@smithy/middleware-endpoint" "^3.1.3" - "@smithy/middleware-retry" "^3.0.21" - "@smithy/middleware-serde" "^3.0.6" - "@smithy/protocol-http" "^4.1.3" - "@smithy/smithy-client" "^3.3.5" - "@smithy/types" "^3.4.2" +"@smithy/core@^2.4.7": + version "2.4.8" + resolved "https://registry.yarnpkg.com/@smithy/core/-/core-2.4.8.tgz#397ac17dfa8ad658b77f96f19484f0eeaf22d397" + integrity sha512-x4qWk7p/a4dcf7Vxb2MODIf4OIcqNbK182WxRvZ/3oKPrf/6Fdic5sSElhO1UtXpWKBazWfqg0ZEK9xN1DsuHA== + dependencies: + "@smithy/middleware-endpoint" "^3.1.4" + "@smithy/middleware-retry" "^3.0.23" + "@smithy/middleware-serde" "^3.0.7" + "@smithy/protocol-http" "^4.1.4" + "@smithy/smithy-client" "^3.4.0" + "@smithy/types" "^3.5.0" "@smithy/util-body-length-browser" "^3.0.0" - "@smithy/util-middleware" "^3.0.6" + "@smithy/util-middleware" "^3.0.7" "@smithy/util-utf8" "^3.0.0" tslib "^2.6.2" -"@smithy/credential-provider-imds@^3.2.3": - version "3.2.3" - resolved "https://registry.yarnpkg.com/@smithy/credential-provider-imds/-/credential-provider-imds-3.2.3.tgz#93314e58e4f81f2b641de6efac037c7a3250c050" - integrity sha512-VoxMzSzdvkkjMJNE38yQgx4CfnmT+Z+5EUXkg4x7yag93eQkVQgZvN3XBSHC/ylfBbLbAtdu7flTCChX9I+mVg== +"@smithy/credential-provider-imds@^3.2.4": + version "3.2.4" + resolved "https://registry.yarnpkg.com/@smithy/credential-provider-imds/-/credential-provider-imds-3.2.4.tgz#e1a2bfc8a0066f673756ad8735247cf284b9735c" + integrity sha512-S9bb0EIokfYEuar4kEbLta+ivlKCWOCFsLZuilkNy9i0uEUEHSi47IFLPaxqqCl+0ftKmcOTHayY5nQhAuq7+w== dependencies: - "@smithy/node-config-provider" "^3.1.7" - "@smithy/property-provider" "^3.1.6" - "@smithy/types" "^3.4.2" - "@smithy/url-parser" "^3.0.6" + "@smithy/node-config-provider" "^3.1.8" + "@smithy/property-provider" "^3.1.7" + "@smithy/types" "^3.5.0" + "@smithy/url-parser" "^3.0.7" tslib "^2.6.2" -"@smithy/fetch-http-handler@^3.2.8": - version "3.2.8" - resolved "https://registry.yarnpkg.com/@smithy/fetch-http-handler/-/fetch-http-handler-3.2.8.tgz#985623d2824138b770c81db7c872474160b3c5b1" - integrity sha512-Lqe0B8F5RM7zkw//6avq1SJ8AfaRd3ubFUS1eVp5WszV7p6Ne5hQ4dSuMHDpNRPhgTvj4va9Kd/pcVigHEHRow== +"@smithy/fetch-http-handler@^3.2.9": + version "3.2.9" + resolved "https://registry.yarnpkg.com/@smithy/fetch-http-handler/-/fetch-http-handler-3.2.9.tgz#8d5199c162a37caa37a8b6848eefa9ca58221a0b" + integrity sha512-hYNVQOqhFQ6vOpenifFME546f0GfJn2OiQ3M0FDmuUu8V/Uiwy2wej7ZXxFBNqdx0R5DZAqWM1l6VRhGz8oE6A== dependencies: - "@smithy/protocol-http" "^4.1.3" - "@smithy/querystring-builder" "^3.0.6" - "@smithy/types" "^3.4.2" + "@smithy/protocol-http" "^4.1.4" + "@smithy/querystring-builder" "^3.0.7" + "@smithy/types" "^3.5.0" "@smithy/util-base64" "^3.0.0" tslib "^2.6.2" -"@smithy/hash-node@^3.0.6": - version "3.0.6" - resolved "https://registry.yarnpkg.com/@smithy/hash-node/-/hash-node-3.0.6.tgz#7c1a869afcbd411eac04c4777dd193ea7ac4e588" - integrity sha512-c/FHEdKK/7DU2z6ZE91L36ahyXWayR3B+FzELjnYq7wH5YqIseM24V+pWCS9kFn1Ln8OFGTf+pyYPiHZuX0s/Q== +"@smithy/hash-node@^3.0.7": + version "3.0.7" + resolved "https://registry.yarnpkg.com/@smithy/hash-node/-/hash-node-3.0.7.tgz#03b5a382fb588b8c2bac11b4fe7300aaf1661c88" + integrity sha512-SAGHN+QkrwcHFjfWzs/czX94ZEjPJ0CrWJS3M43WswDXVEuP4AVy9gJ3+AF6JQHZD13bojmuf/Ap/ItDeZ+Qfw== dependencies: - "@smithy/types" "^3.4.2" + "@smithy/types" "^3.5.0" "@smithy/util-buffer-from" "^3.0.0" "@smithy/util-utf8" "^3.0.0" tslib "^2.6.2" -"@smithy/invalid-dependency@^3.0.6": - version "3.0.6" - resolved "https://registry.yarnpkg.com/@smithy/invalid-dependency/-/invalid-dependency-3.0.6.tgz#3b3e30a55b92341412626b412fe919929871eeb1" - integrity sha512-czM7Ioq3s8pIXht7oD+vmgy4Wfb4XavU/k/irO8NdXFFOx7YAlsCCcKOh/lJD1mJSYQqiR7NmpZ9JviryD/7AQ== +"@smithy/invalid-dependency@^3.0.7": + version "3.0.7" + resolved "https://registry.yarnpkg.com/@smithy/invalid-dependency/-/invalid-dependency-3.0.7.tgz#b36f258d94498f3c72ab6020091a66fc7cc16eda" + integrity sha512-Bq00GsAhHeYSuZX8Kpu4sbI9agH2BNYnqUmmbTGWOhki9NVsWn2jFr896vvoTMH8KAjNX/ErC/8t5QHuEXG+IA== dependencies: - "@smithy/types" "^3.4.2" + "@smithy/types" "^3.5.0" tslib "^2.6.2" "@smithy/is-array-buffer@^2.2.0": @@ -1516,152 +1526,152 @@ dependencies: tslib "^2.6.2" -"@smithy/middleware-content-length@^3.0.8": - version "3.0.8" - resolved "https://registry.yarnpkg.com/@smithy/middleware-content-length/-/middleware-content-length-3.0.8.tgz#4e1c1631718e4d6dfe9a06f37faa90de92e884ed" - integrity sha512-VuyszlSO49WKh3H9/kIO2kf07VUwGV80QRiaDxUfP8P8UKlokz381ETJvwLhwuypBYhLymCYyNhB3fLAGBX2og== +"@smithy/middleware-content-length@^3.0.9": + version "3.0.9" + resolved "https://registry.yarnpkg.com/@smithy/middleware-content-length/-/middleware-content-length-3.0.9.tgz#fb613d1a6b8c91e828d11c0d7a0a8576dba89b8b" + integrity sha512-t97PidoGElF9hTtLCrof32wfWMqC5g2SEJNxaVH3NjlatuNGsdxXRYO/t+RPnxA15RpYiS0f+zG7FuE2DeGgjA== dependencies: - "@smithy/protocol-http" "^4.1.3" - "@smithy/types" "^3.4.2" + "@smithy/protocol-http" "^4.1.4" + "@smithy/types" "^3.5.0" tslib "^2.6.2" -"@smithy/middleware-endpoint@^3.1.3": - version "3.1.3" - resolved "https://registry.yarnpkg.com/@smithy/middleware-endpoint/-/middleware-endpoint-3.1.3.tgz#8c84d40c9d26b77e2bbb99721fd4a3d379828505" - integrity sha512-KeM/OrK8MVFUsoJsmCN0MZMVPjKKLudn13xpgwIMpGTYpA8QZB2Xq5tJ+RE6iu3A6NhOI4VajDTwBsm8pwwrhg== - dependencies: - "@smithy/middleware-serde" "^3.0.6" - "@smithy/node-config-provider" "^3.1.7" - "@smithy/shared-ini-file-loader" "^3.1.7" - "@smithy/types" "^3.4.2" - "@smithy/url-parser" "^3.0.6" - "@smithy/util-middleware" "^3.0.6" +"@smithy/middleware-endpoint@^3.1.4": + version "3.1.4" + resolved "https://registry.yarnpkg.com/@smithy/middleware-endpoint/-/middleware-endpoint-3.1.4.tgz#222c9fa49c8af6ebf8bea8ab220d92d9b8c90d3d" + integrity sha512-/ChcVHekAyzUbyPRI8CzPPLj6y8QRAfJngWcLMgsWxKVzw/RzBV69mSOzJYDD3pRwushA1+5tHtPF8fjmzBnrQ== + dependencies: + "@smithy/middleware-serde" "^3.0.7" + "@smithy/node-config-provider" "^3.1.8" + "@smithy/shared-ini-file-loader" "^3.1.8" + "@smithy/types" "^3.5.0" + "@smithy/url-parser" "^3.0.7" + "@smithy/util-middleware" "^3.0.7" tslib "^2.6.2" -"@smithy/middleware-retry@^3.0.21": - version "3.0.21" - resolved "https://registry.yarnpkg.com/@smithy/middleware-retry/-/middleware-retry-3.0.21.tgz#c26168f761d5b72c750fb4ed66c18a2b195b7f4d" - integrity sha512-/h0fElV95LekVVEJuSw+aI11S1Y3zIUwBc6h9ZbUv43Gl2weXsbQwjLoet6j/Qtb0phfrSxS6pNg6FqgJOWZkA== - dependencies: - "@smithy/node-config-provider" "^3.1.7" - "@smithy/protocol-http" "^4.1.3" - "@smithy/service-error-classification" "^3.0.6" - "@smithy/smithy-client" "^3.3.5" - "@smithy/types" "^3.4.2" - "@smithy/util-middleware" "^3.0.6" - "@smithy/util-retry" "^3.0.6" +"@smithy/middleware-retry@^3.0.22", "@smithy/middleware-retry@^3.0.23": + version "3.0.23" + resolved "https://registry.yarnpkg.com/@smithy/middleware-retry/-/middleware-retry-3.0.23.tgz#ce5574e278dd14a7995afd5a4ed2a6c9891da8ed" + integrity sha512-x9PbGXxkcXIpm6L26qRSCC+eaYcHwybRmqU8LO/WM2RRlW0g8lz6FIiKbKgGvHuoK3dLZRiQVSQJveiCzwnA5A== + dependencies: + "@smithy/node-config-provider" "^3.1.8" + "@smithy/protocol-http" "^4.1.4" + "@smithy/service-error-classification" "^3.0.7" + "@smithy/smithy-client" "^3.4.0" + "@smithy/types" "^3.5.0" + "@smithy/util-middleware" "^3.0.7" + "@smithy/util-retry" "^3.0.7" tslib "^2.6.2" uuid "^9.0.1" -"@smithy/middleware-serde@^3.0.6": - version "3.0.6" - resolved "https://registry.yarnpkg.com/@smithy/middleware-serde/-/middleware-serde-3.0.6.tgz#9f7a9c152989b59c12865ef3a17acbdb7b6a1566" - integrity sha512-KKTUSl1MzOM0MAjGbudeaVNtIDo+PpekTBkCNwvfZlKndodrnvRo+00USatiyLOc0ujjO9UydMRu3O9dYML7ag== +"@smithy/middleware-serde@^3.0.7": + version "3.0.7" + resolved "https://registry.yarnpkg.com/@smithy/middleware-serde/-/middleware-serde-3.0.7.tgz#03f0dda75edffc4cc90ea422349cbfb82368efa7" + integrity sha512-VytaagsQqtH2OugzVTq4qvjkLNbWehHfGcGr0JLJmlDRrNCeZoWkWsSOw1nhS/4hyUUWF/TLGGml4X/OnEep5g== dependencies: - "@smithy/types" "^3.4.2" + "@smithy/types" "^3.5.0" tslib "^2.6.2" -"@smithy/middleware-stack@^3.0.6": - version "3.0.6" - resolved "https://registry.yarnpkg.com/@smithy/middleware-stack/-/middleware-stack-3.0.6.tgz#e63d09b3e292b7a46ac3b9eb482973701de15a6f" - integrity sha512-2c0eSYhTQ8xQqHMcRxLMpadFbTXg6Zla5l0mwNftFCZMQmuhI7EbAJMx6R5eqfuV3YbJ3QGyS3d5uSmrHV8Khg== +"@smithy/middleware-stack@^3.0.7": + version "3.0.7" + resolved "https://registry.yarnpkg.com/@smithy/middleware-stack/-/middleware-stack-3.0.7.tgz#813fa7b47895ce0d085eac89c056d21b1e46e771" + integrity sha512-EyTbMCdqS1DoeQsO4gI7z2Gzq1MoRFAeS8GkFYIwbedB7Lp5zlLHJdg+56tllIIG5Hnf9ZWX48YKSHlsKvugGA== dependencies: - "@smithy/types" "^3.4.2" + "@smithy/types" "^3.5.0" tslib "^2.6.2" -"@smithy/node-config-provider@^3.1.7": - version "3.1.7" - resolved "https://registry.yarnpkg.com/@smithy/node-config-provider/-/node-config-provider-3.1.7.tgz#6ae71aeff45e8c9792720986f0b1623cf6da671f" - integrity sha512-g3mfnC3Oo8pOI0dYuPXLtdW1WGVb3bR2tkV21GNkm0ZvQjLTtamXAwCWt/FCb0HGvKt3gHHmF1XerG0ICfalOg== +"@smithy/node-config-provider@^3.1.8": + version "3.1.8" + resolved "https://registry.yarnpkg.com/@smithy/node-config-provider/-/node-config-provider-3.1.8.tgz#2c1092040b4062eae0f7c9e121cc00ac6a77efee" + integrity sha512-E0rU0DglpeJn5ge64mk8wTGEXcQwmpUTY5Zr7IzTpDLmHKiIamINERNZYrPQjg58Ck236sEKSwRSHA4CwshU6Q== dependencies: - "@smithy/property-provider" "^3.1.6" - "@smithy/shared-ini-file-loader" "^3.1.7" - "@smithy/types" "^3.4.2" + "@smithy/property-provider" "^3.1.7" + "@smithy/shared-ini-file-loader" "^3.1.8" + "@smithy/types" "^3.5.0" tslib "^2.6.2" -"@smithy/node-http-handler@^3.2.3": - version "3.2.3" - resolved "https://registry.yarnpkg.com/@smithy/node-http-handler/-/node-http-handler-3.2.3.tgz#6d10ece149b441f5417d34db45ddb76407d5c186" - integrity sha512-/gcm5DJ3k1b1zEInzBGAZC8ntJ+jwrz1NcSIu+9dSXd1FfG0G6QgkDI40tt8/WYUbHtLyo8fEqtm2v29koWo/w== +"@smithy/node-http-handler@^3.2.4": + version "3.2.4" + resolved "https://registry.yarnpkg.com/@smithy/node-http-handler/-/node-http-handler-3.2.4.tgz#3c57c40d082c3bacac1e49955bd1240e8ccc40b2" + integrity sha512-49reY3+JgLMFNm7uTAKBWiKCA6XSvkNp9FqhVmusm2jpVnHORYFeFZ704LShtqWfjZW/nhX+7Iexyb6zQfXYIQ== dependencies: - "@smithy/abort-controller" "^3.1.4" - "@smithy/protocol-http" "^4.1.3" - "@smithy/querystring-builder" "^3.0.6" - "@smithy/types" "^3.4.2" + "@smithy/abort-controller" "^3.1.5" + "@smithy/protocol-http" "^4.1.4" + "@smithy/querystring-builder" "^3.0.7" + "@smithy/types" "^3.5.0" tslib "^2.6.2" -"@smithy/property-provider@^3.1.6": - version "3.1.6" - resolved "https://registry.yarnpkg.com/@smithy/property-provider/-/property-provider-3.1.6.tgz#141a245ad8cac074d29a836ec992ef7dc3363bf7" - integrity sha512-NK3y/T7Q/Bw+Z8vsVs9MYIQ5v7gOX7clyrXcwhhIBQhbPgRl6JDrZbusO9qWDhcEus75Tg+VCxtIRfo3H76fpw== +"@smithy/property-provider@^3.1.7": + version "3.1.7" + resolved "https://registry.yarnpkg.com/@smithy/property-provider/-/property-provider-3.1.7.tgz#8a304a4b9110a067a93c784e4c11e175f82da379" + integrity sha512-QfzLi1GPMisY7bAM5hOUqBdGYnY5S2JAlr201pghksrQv139f8iiiMalXtjczIP5f6owxFn3MINLNUNvUkgtPw== dependencies: - "@smithy/types" "^3.4.2" + "@smithy/types" "^3.5.0" tslib "^2.6.2" -"@smithy/protocol-http@^4.1.3": - version "4.1.3" - resolved "https://registry.yarnpkg.com/@smithy/protocol-http/-/protocol-http-4.1.3.tgz#91d894ec7d82c012c5674cb3e209800852f05abd" - integrity sha512-GcbMmOYpH9iRqtC05RbRnc/0FssxSTHlmaNhYBTgSgNCYpdR3Kt88u5GAZTBmouzv+Zlj/VRv92J9ruuDeJuEw== +"@smithy/protocol-http@^4.1.4": + version "4.1.4" + resolved "https://registry.yarnpkg.com/@smithy/protocol-http/-/protocol-http-4.1.4.tgz#6940d652b1825bda2422163ec9baab552669a338" + integrity sha512-MlWK8eqj0JlpZBnWmjQLqmFp71Ug00P+m72/1xQB3YByXD4zZ+y9N4hYrR0EDmrUCZIkyATWHOXFgtavwGDTzQ== dependencies: - "@smithy/types" "^3.4.2" + "@smithy/types" "^3.5.0" tslib "^2.6.2" -"@smithy/querystring-builder@^3.0.6": - version "3.0.6" - resolved "https://registry.yarnpkg.com/@smithy/querystring-builder/-/querystring-builder-3.0.6.tgz#bcb718b860697dca5257ca38dc8041a4696c486f" - integrity sha512-sQe08RunoObe+Usujn9+R2zrLuQERi3CWvRO3BvnoWSYUaIrLKuAIeY7cMeDax6xGyfIP3x/yFWbEKSXvOnvVg== +"@smithy/querystring-builder@^3.0.7": + version "3.0.7" + resolved "https://registry.yarnpkg.com/@smithy/querystring-builder/-/querystring-builder-3.0.7.tgz#8c443c65f4249ff1637088db1166d18411d41555" + integrity sha512-65RXGZZ20rzqqxTsChdqSpbhA6tdt5IFNgG6o7e1lnPVLCe6TNWQq4rTl4N87hTDD8mV4IxJJnvyE7brbnRkQw== dependencies: - "@smithy/types" "^3.4.2" + "@smithy/types" "^3.5.0" "@smithy/util-uri-escape" "^3.0.0" tslib "^2.6.2" -"@smithy/querystring-parser@^3.0.6": - version "3.0.6" - resolved "https://registry.yarnpkg.com/@smithy/querystring-parser/-/querystring-parser-3.0.6.tgz#f30e7e244fa674d77bdfd3c65481c5dc0aa083ef" - integrity sha512-UJKw4LlEkytzz2Wq+uIdHf6qOtFfee/o7ruH0jF5I6UAuU+19r9QV7nU3P/uI0l6+oElRHmG/5cBBcGJrD7Ozg== +"@smithy/querystring-parser@^3.0.7": + version "3.0.7" + resolved "https://registry.yarnpkg.com/@smithy/querystring-parser/-/querystring-parser-3.0.7.tgz#936206d1e6da9d862384dae730b4bad042d6a948" + integrity sha512-Fouw4KJVWqqUVIu1gZW8BH2HakwLz6dvdrAhXeXfeymOBrZw+hcqaWs+cS1AZPVp4nlbeIujYrKA921ZW2WMPA== dependencies: - "@smithy/types" "^3.4.2" + "@smithy/types" "^3.5.0" tslib "^2.6.2" -"@smithy/service-error-classification@^3.0.6": - version "3.0.6" - resolved "https://registry.yarnpkg.com/@smithy/service-error-classification/-/service-error-classification-3.0.6.tgz#e0ca00b79d9ccf00795284e01cfdc48b43b81d76" - integrity sha512-53SpchU3+DUZrN7J6sBx9tBiCVGzsib2e4sc512Q7K9fpC5zkJKs6Z9s+qbMxSYrkEkle6hnMtrts7XNkMJJMg== +"@smithy/service-error-classification@^3.0.7": + version "3.0.7" + resolved "https://registry.yarnpkg.com/@smithy/service-error-classification/-/service-error-classification-3.0.7.tgz#5bab4ad802d30bd3fa52b8134f6c171582358226" + integrity sha512-91PRkTfiBf9hxkIchhRKJfl1rsplRDyBnmyFca3y0Z3x/q0JJN480S83LBd8R6sBCkm2bBbqw2FHp0Mbh+ecSA== dependencies: - "@smithy/types" "^3.4.2" + "@smithy/types" "^3.5.0" -"@smithy/shared-ini-file-loader@^3.1.7": - version "3.1.7" - resolved "https://registry.yarnpkg.com/@smithy/shared-ini-file-loader/-/shared-ini-file-loader-3.1.7.tgz#bdcf3f0213c3c5779c3fbb41580e9a217ad52e8f" - integrity sha512-IA4K2qTJYXkF5OfVN4vsY1hfnUZjaslEE8Fsr/gGFza4TAC2A9NfnZuSY2srQIbt9bwtjHiAayrRVgKse4Q7fA== +"@smithy/shared-ini-file-loader@^3.1.8": + version "3.1.8" + resolved "https://registry.yarnpkg.com/@smithy/shared-ini-file-loader/-/shared-ini-file-loader-3.1.8.tgz#7a0bf5f20cfe8e0c4a36d8dcab8194d0d2ee958e" + integrity sha512-0NHdQiSkeGl0ICQKcJQ2lCOKH23Nb0EaAa7RDRId6ZqwXkw4LJyIyZ0t3iusD4bnKYDPLGy2/5e2rfUhrt0Acw== dependencies: - "@smithy/types" "^3.4.2" + "@smithy/types" "^3.5.0" tslib "^2.6.2" -"@smithy/signature-v4@^4.1.4": - version "4.1.4" - resolved "https://registry.yarnpkg.com/@smithy/signature-v4/-/signature-v4-4.1.4.tgz#6baa7fe14e86516d2c2568d081c67553449cbb5e" - integrity sha512-72MiK7xYukNsnLJI9NqvUHqTu0ziEsfMsYNlWpiJfuGQnCTFKpckThlEatirvcA/LmT1h7rRO+pJD06PYsPu9Q== +"@smithy/signature-v4@^4.2.0": + version "4.2.0" + resolved "https://registry.yarnpkg.com/@smithy/signature-v4/-/signature-v4-4.2.0.tgz#291f5a0e756cc251377e1e8af2a1f494e6173029" + integrity sha512-LafbclHNKnsorMgUkKm7Tk7oJ7xizsZ1VwqhGKqoCIrXh4fqDDp73fK99HOEEgcsQbtemmeY/BPv0vTVYYUNEQ== dependencies: "@smithy/is-array-buffer" "^3.0.0" - "@smithy/protocol-http" "^4.1.3" - "@smithy/types" "^3.4.2" + "@smithy/protocol-http" "^4.1.4" + "@smithy/types" "^3.5.0" "@smithy/util-hex-encoding" "^3.0.0" - "@smithy/util-middleware" "^3.0.6" + "@smithy/util-middleware" "^3.0.7" "@smithy/util-uri-escape" "^3.0.0" "@smithy/util-utf8" "^3.0.0" tslib "^2.6.2" -"@smithy/smithy-client@^3.3.5": - version "3.3.5" - resolved "https://registry.yarnpkg.com/@smithy/smithy-client/-/smithy-client-3.3.5.tgz#ded1f89b9d8b17689a87351f6d7708ce4f3b9ea6" - integrity sha512-7IZi8J3Dr9n3tX+lcpmJ/5tCYIqoXdblFBaPuv0SEKZFRpCxE+TqIWL6I3t7jLlk9TWu3JSvEZAhtjB9yvB+zA== - dependencies: - "@smithy/middleware-endpoint" "^3.1.3" - "@smithy/middleware-stack" "^3.0.6" - "@smithy/protocol-http" "^4.1.3" - "@smithy/types" "^3.4.2" - "@smithy/util-stream" "^3.1.8" +"@smithy/smithy-client@^3.3.6", "@smithy/smithy-client@^3.4.0": + version "3.4.0" + resolved "https://registry.yarnpkg.com/@smithy/smithy-client/-/smithy-client-3.4.0.tgz#ceffb92108a4ad60cbede3baf44ed224dc70b333" + integrity sha512-nOfJ1nVQsxiP6srKt43r2My0Gp5PLWCW2ASqUioxIiGmu6d32v4Nekidiv5qOmmtzIrmaD+ADX5SKHUuhReeBQ== + dependencies: + "@smithy/middleware-endpoint" "^3.1.4" + "@smithy/middleware-stack" "^3.0.7" + "@smithy/protocol-http" "^4.1.4" + "@smithy/types" "^3.5.0" + "@smithy/util-stream" "^3.1.9" tslib "^2.6.2" "@smithy/types@^2.12.0": @@ -1671,20 +1681,20 @@ dependencies: tslib "^2.6.2" -"@smithy/types@^3.4.2": - version "3.4.2" - resolved "https://registry.yarnpkg.com/@smithy/types/-/types-3.4.2.tgz#aa2d087922d57205dbad68df8a45c848699c551e" - integrity sha512-tHiFcfcVedVBHpmHUEUHOCCih8iZbIAYn9NvPsNzaPm/237I3imdDdZoOC8c87H5HBAVEa06tTgb+OcSWV9g5w== +"@smithy/types@^3.5.0": + version "3.5.0" + resolved "https://registry.yarnpkg.com/@smithy/types/-/types-3.5.0.tgz#9589e154c50d9c5d00feb7d818112ef8fc285d6e" + integrity sha512-QN0twHNfe8mNJdH9unwsCK13GURU7oEAZqkBI+rsvpv1jrmserO+WnLE7jidR9W/1dxwZ0u/CB01mV2Gms/K2Q== dependencies: tslib "^2.6.2" -"@smithy/url-parser@^3.0.6": - version "3.0.6" - resolved "https://registry.yarnpkg.com/@smithy/url-parser/-/url-parser-3.0.6.tgz#98b426f9a492e0c992fcd5dceac35444c2632837" - integrity sha512-47Op/NU8Opt49KyGpHtVdnmmJMsp2hEwBdyjuFB9M2V5QVOwA7pBhhxKN5z6ztKGrMw76gd8MlbPuzzvaAncuQ== +"@smithy/url-parser@^3.0.7": + version "3.0.7" + resolved "https://registry.yarnpkg.com/@smithy/url-parser/-/url-parser-3.0.7.tgz#9d7d7e4e38514bf75ade6e8a30d2300f3db17d1b" + integrity sha512-70UbSSR8J97c1rHZOWhl+VKiZDqHWxs/iW8ZHrHp5fCCPLSBE7GcUlUvKSle3Ca+J9LLbYCj/A79BxztBvAfpA== dependencies: - "@smithy/querystring-parser" "^3.0.6" - "@smithy/types" "^3.4.2" + "@smithy/querystring-parser" "^3.0.7" + "@smithy/types" "^3.5.0" tslib "^2.6.2" "@smithy/util-base64@^3.0.0": @@ -1733,37 +1743,37 @@ dependencies: tslib "^2.6.2" -"@smithy/util-defaults-mode-browser@^3.0.21": - version "3.0.21" - resolved "https://registry.yarnpkg.com/@smithy/util-defaults-mode-browser/-/util-defaults-mode-browser-3.0.21.tgz#cdcb9a29433d2659b7c83902e8f5fca396b8a805" - integrity sha512-M/FhTBk4c/SsB91dD/M4gMGfJO7z/qJaM9+XQQIqBOf4qzZYMExnP7R4VdGwxxH8IKMGW+8F0I4rNtVRrcfPoA== +"@smithy/util-defaults-mode-browser@^3.0.22": + version "3.0.23" + resolved "https://registry.yarnpkg.com/@smithy/util-defaults-mode-browser/-/util-defaults-mode-browser-3.0.23.tgz#6920b473126ae8857a04dd6941793bbda12adc8b" + integrity sha512-Y07qslyRtXDP/C5aWKqxTPBl4YxplEELG3xRrz2dnAQ6Lq/FgNrcKWmV561nNaZmFH+EzeGOX3ZRMbU8p1T6Nw== dependencies: - "@smithy/property-provider" "^3.1.6" - "@smithy/smithy-client" "^3.3.5" - "@smithy/types" "^3.4.2" + "@smithy/property-provider" "^3.1.7" + "@smithy/smithy-client" "^3.4.0" + "@smithy/types" "^3.5.0" bowser "^2.11.0" tslib "^2.6.2" -"@smithy/util-defaults-mode-node@^3.0.21": - version "3.0.21" - resolved "https://registry.yarnpkg.com/@smithy/util-defaults-mode-node/-/util-defaults-mode-node-3.0.21.tgz#f767702cb1416610b6818c9edb966967ea75f524" - integrity sha512-NiLinPvF86U3S2Pdx/ycqd4bnY5dmFSPNL5KYRwbNjqQFS09M5Wzqk8BNk61/47xCYz1X/6KeiSk9qgYPTtuDw== - dependencies: - "@smithy/config-resolver" "^3.0.8" - "@smithy/credential-provider-imds" "^3.2.3" - "@smithy/node-config-provider" "^3.1.7" - "@smithy/property-provider" "^3.1.6" - "@smithy/smithy-client" "^3.3.5" - "@smithy/types" "^3.4.2" +"@smithy/util-defaults-mode-node@^3.0.22": + version "3.0.23" + resolved "https://registry.yarnpkg.com/@smithy/util-defaults-mode-node/-/util-defaults-mode-node-3.0.23.tgz#d03d21816e8b2f586ccf4a87cd0b1cc55b4d75e0" + integrity sha512-9Y4WH7f0vnDGuHUa4lGX9e2p+sMwODibsceSV6rfkZOvMC+BY3StB2LdO1NHafpsyHJLpwAgChxQ38tFyd6vkg== + dependencies: + "@smithy/config-resolver" "^3.0.9" + "@smithy/credential-provider-imds" "^3.2.4" + "@smithy/node-config-provider" "^3.1.8" + "@smithy/property-provider" "^3.1.7" + "@smithy/smithy-client" "^3.4.0" + "@smithy/types" "^3.5.0" tslib "^2.6.2" -"@smithy/util-endpoints@^2.1.2": - version "2.1.2" - resolved "https://registry.yarnpkg.com/@smithy/util-endpoints/-/util-endpoints-2.1.2.tgz#e1d789d598da9ab955b8cf3257ab2f263c35031a" - integrity sha512-FEISzffb4H8DLzGq1g4MuDpcv6CIG15fXoQzDH9SjpRJv6h7J++1STFWWinilG0tQh9H1v2UKWG19Jjr2B16zQ== +"@smithy/util-endpoints@^2.1.3": + version "2.1.3" + resolved "https://registry.yarnpkg.com/@smithy/util-endpoints/-/util-endpoints-2.1.3.tgz#7498151e9dc714bdd0c6339314dd2350fa4d250a" + integrity sha512-34eACeKov6jZdHqS5hxBMJ4KyWKztTMulhuQ2UdOoP6vVxMLrOKUqIXAwJe/wiWMhXhydLW664B02CNpQBQ4Aw== dependencies: - "@smithy/node-config-provider" "^3.1.7" - "@smithy/types" "^3.4.2" + "@smithy/node-config-provider" "^3.1.8" + "@smithy/types" "^3.5.0" tslib "^2.6.2" "@smithy/util-hex-encoding@^3.0.0": @@ -1773,31 +1783,31 @@ dependencies: tslib "^2.6.2" -"@smithy/util-middleware@^3.0.6": - version "3.0.6" - resolved "https://registry.yarnpkg.com/@smithy/util-middleware/-/util-middleware-3.0.6.tgz#463c41e74d6e8d758f6cceba4dbed4dc5a4afe50" - integrity sha512-BxbX4aBhI1O9p87/xM+zWy0GzT3CEVcXFPBRDoHAM+pV0eSW156pR+PSYEz0DQHDMYDsYAflC2bQNz2uaDBUZQ== +"@smithy/util-middleware@^3.0.7": + version "3.0.7" + resolved "https://registry.yarnpkg.com/@smithy/util-middleware/-/util-middleware-3.0.7.tgz#770d09749b6d170a1641384a2e961487447446fa" + integrity sha512-OVA6fv/3o7TMJTpTgOi1H5OTwnuUa8hzRzhSFDtZyNxi6OZ70L/FHattSmhE212I7b6WSOJAAmbYnvcjTHOJCA== dependencies: - "@smithy/types" "^3.4.2" + "@smithy/types" "^3.5.0" tslib "^2.6.2" -"@smithy/util-retry@^3.0.6": - version "3.0.6" - resolved "https://registry.yarnpkg.com/@smithy/util-retry/-/util-retry-3.0.6.tgz#297de1cd5a836fb957ab2ad3439041e848815499" - integrity sha512-BRZiuF7IwDntAbevqMco67an0Sr9oLQJqqRCsSPZZHYRnehS0LHDAkJk/pSmI7Z8c/1Vet294H7fY2fWUgB+Rg== +"@smithy/util-retry@^3.0.7": + version "3.0.7" + resolved "https://registry.yarnpkg.com/@smithy/util-retry/-/util-retry-3.0.7.tgz#694e0667574ffe9772f620b35d3c7286aced35e9" + integrity sha512-nh1ZO1vTeo2YX1plFPSe/OXaHkLAHza5jpokNiiKX2M5YpNUv6RxGJZhpfmiR4jSvVHCjIDmILjrxKmP+/Ghug== dependencies: - "@smithy/service-error-classification" "^3.0.6" - "@smithy/types" "^3.4.2" + "@smithy/service-error-classification" "^3.0.7" + "@smithy/types" "^3.5.0" tslib "^2.6.2" -"@smithy/util-stream@^3.1.8": - version "3.1.8" - resolved "https://registry.yarnpkg.com/@smithy/util-stream/-/util-stream-3.1.8.tgz#31bcf460c54aae816e0789682426da522f894058" - integrity sha512-hoKOqSmb8FD3WLObuB5hwbM7bNIWgcnvkThokTvVq7J5PKjlLUK5qQQcB9zWLHIoSaIlf3VIv2OxZY2wtQjcRQ== +"@smithy/util-stream@^3.1.9": + version "3.1.9" + resolved "https://registry.yarnpkg.com/@smithy/util-stream/-/util-stream-3.1.9.tgz#d39656eae27696bdc5a3ec7c2f6b89c32dccd1ca" + integrity sha512-7YAR0Ub3MwTMjDfjnup4qa6W8gygZMxikBhFMPESi6ASsl/rZJhwLpF/0k9TuezScCojsM0FryGdz4LZtjKPPQ== dependencies: - "@smithy/fetch-http-handler" "^3.2.8" - "@smithy/node-http-handler" "^3.2.3" - "@smithy/types" "^3.4.2" + "@smithy/fetch-http-handler" "^3.2.9" + "@smithy/node-http-handler" "^3.2.4" + "@smithy/types" "^3.5.0" "@smithy/util-base64" "^3.0.0" "@smithy/util-buffer-from" "^3.0.0" "@smithy/util-hex-encoding" "^3.0.0" @@ -1827,13 +1837,13 @@ "@smithy/util-buffer-from" "^3.0.0" tslib "^2.6.2" -"@smithy/util-waiter@^3.1.5": - version "3.1.5" - resolved "https://registry.yarnpkg.com/@smithy/util-waiter/-/util-waiter-3.1.5.tgz#56b3a0fa6498ed22dfee7f40c64d13a54dd04fcc" - integrity sha512-jYOSvM3H6sZe3CHjzD2VQNCjWBJs+4DbtwBMvUp9y5EnnwNa7NQxTeYeQw0CKCAdGGZ3QvVkyJmvbvs5M/B10A== +"@smithy/util-waiter@^3.1.6": + version "3.1.6" + resolved "https://registry.yarnpkg.com/@smithy/util-waiter/-/util-waiter-3.1.6.tgz#c65870d0c802e33b96112fac5c4471b3bf2eeecb" + integrity sha512-xs/KAwWOeCklq8aMlnpk25LgxEYHKOEodfjfKclDMLcBJEVEKzDLxZxBQyztcuPJ7F54213NJS8PxoiHNMdItQ== dependencies: - "@smithy/abort-controller" "^3.1.4" - "@smithy/types" "^3.4.2" + "@smithy/abort-controller" "^3.1.5" + "@smithy/types" "^3.5.0" tslib "^2.6.2" "@swc/core-darwin-arm64@1.7.28": @@ -2546,7 +2556,7 @@ braces@^3.0.3: dependencies: fill-range "^7.1.1" -browserslist@^4.23.1: +browserslist@^4.24.0: version "4.24.0" resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.24.0.tgz#a1325fe4bc80b64fda169629fc01b3d6cecd38d4" integrity sha512-Rmb62sR1Zpjql25eSanFGEhAxcFwfA1K0GuQcLoaJBAcENegrQut3hYdhXFF1obQfiDyqIW/cLM5HSJ/9k884A== @@ -2620,9 +2630,9 @@ camelcase@^6.2.0: integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== caniuse-lite@^1.0.30001663: - version "1.0.30001664" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001664.tgz#d588d75c9682d3301956b05a3749652a80677df4" - integrity sha512-AmE7k4dXiNKQipgn7a2xg558IRqPN3jMQY/rOsbxDhrd0tyChwbITBfiwtnqz8bi2M5mIWbxAYBvk7W7QBUS2g== + version "1.0.30001667" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001667.tgz#99fc5ea0d9c6e96897a104a8352604378377f949" + integrity sha512-7LTwJjcRkzKFmtqGsibMeuXmvFDfZq/nzIjnmgCGzKKRVzjD72selLDK1oPF/Oxzmt4fNcPvTDvGqSDG4tCALw== case@^1.6.3: version "1.6.3" @@ -3153,9 +3163,9 @@ ejs@^3.1.10: jake "^10.8.5" electron-to-chromium@^1.5.28: - version "1.5.29" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.29.tgz#aa592a3caa95d07cc26a66563accf99fa573a1ee" - integrity sha512-PF8n2AlIhCKXQ+gTpiJi0VhcHDb69kYX4MtCiivctc2QD3XuNZ/XIOlbGzt7WAjjEev0TtaH6Cu3arZExm5DOw== + version "1.5.32" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.32.tgz#4a05ee78e29e240aabaf73a67ce9fe73f52e1bc7" + integrity sha512-M+7ph0VGBQqqpTT2YrabjNKSQ2fEl9PVx6AK3N558gDH9NO8O6XN9SXXFWRo9u9PbEg/bWq+tjXQr+eXmxubCw== emittery@^0.13.1: version "0.13.1" @@ -3326,17 +3336,17 @@ eslint-import-resolver-typescript@^3.6.3: is-bun-module "^1.0.2" is-glob "^4.0.3" -eslint-module-utils@^2.8.1, eslint-module-utils@^2.9.0: +eslint-module-utils@^2.12.0, eslint-module-utils@^2.8.1: version "2.12.0" resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.12.0.tgz#fe4cfb948d61f49203d7b08871982b65b9af0b0b" integrity sha512-wALZ0HFoytlyh/1+4wuZ9FJCD/leWHQzzrxJ8+rebyReSLk7LApMyd3WJaLVoN+D5+WIdJyDK1c6JnE65V4Zyg== dependencies: debug "^3.2.7" -eslint-plugin-import@^2.30.0: - version "2.30.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.30.0.tgz#21ceea0fc462657195989dd780e50c92fe95f449" - integrity sha512-/mHNE9jINJfiD2EKkg1BKyPyUk4zdnT54YgbOgfjSakWT5oyX/qQLVNTkehyfpcMxZXMy1zyonZ2v7hZTX43Yw== +eslint-plugin-import@^2.31.0: + version "2.31.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.31.0.tgz#310ce7e720ca1d9c0bb3f69adfd1c6bdd7d9e0e7" + integrity sha512-ixmkI62Rbc2/w8Vfxyh1jQRTdRTF52VxwRVHl/ykPAmqG+Nb7/kNn+byLP0LxPgI7zWA16Jt82SybJInmMia3A== dependencies: "@rtsao/scc" "^1.1.0" array-includes "^3.1.8" @@ -3346,7 +3356,7 @@ eslint-plugin-import@^2.30.0: debug "^3.2.7" doctrine "^2.1.0" eslint-import-resolver-node "^0.3.9" - eslint-module-utils "^2.9.0" + eslint-module-utils "^2.12.0" hasown "^2.0.2" is-core-module "^2.15.1" is-glob "^4.0.3" @@ -3355,6 +3365,7 @@ eslint-plugin-import@^2.30.0: object.groupby "^1.0.3" object.values "^1.2.0" semver "^6.3.1" + string.prototype.trimend "^1.0.8" tsconfig-paths "^3.15.0" eslint-scope@^7.2.2: @@ -4738,10 +4749,10 @@ jsdom@^25.0.0: ws "^8.18.0" xml-name-validator "^5.0.0" -jsesc@^2.5.1: - version "2.5.2" - resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" - integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA== +jsesc@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-3.0.2.tgz#bb8b09a6597ba426425f2e4a07245c3d00b9343e" + integrity sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g== json-buffer@3.0.1: version "3.0.1" @@ -5405,15 +5416,15 @@ process-nextick-args@~2.0.0: resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== -projen-github-action-typescript@^0.0.460: - version "0.0.460" - resolved "https://registry.yarnpkg.com/projen-github-action-typescript/-/projen-github-action-typescript-0.0.460.tgz#867a32ae3fdda3f765ebc3a569a84a3adb7bb268" - integrity sha512-UpJbtRtyulmtikOlDxLfZehTcj+hTpQo4wA6ek2nF3UfNN7F69KlCu3Yzz7iWyYUIwjM+na8GacaMBM/yDU1gg== +projen-github-action-typescript@^0.0.467: + version "0.0.467" + resolved "https://registry.yarnpkg.com/projen-github-action-typescript/-/projen-github-action-typescript-0.0.467.tgz#172563e36013b625961008365a04b14a2586bd6c" + integrity sha512-rQbA44o4s3ZGnfEiViEGy9/lASJLE/Z5R0nWnLgodn3vcrOhTcJIlx5wchHQg8tc2bI4JD8LdnxieqZOg7gJLQ== -projen@^0.88.0: - version "0.88.0" - resolved "https://registry.yarnpkg.com/projen/-/projen-0.88.0.tgz#4e3664fddc7fc0614827981c221e65776dbda390" - integrity sha512-7A6OAgL7Gz6R2yWMUlqMqZw7r5jOeqfpNLg+BZbLg3UXbtPsdOjPDp0NroGXxFkqW7NcVPzs7/lF7DZ6H9pRSQ== +projen@^0.88.1: + version "0.88.1" + resolved "https://registry.yarnpkg.com/projen/-/projen-0.88.1.tgz#82319b5b47317ddabb1bfe3555bc2bb56aa88f3c" + integrity sha512-LAv/kUAcCSTXH7/E+eeAJln3NvVFvhHgx9ezGPudcEPUOhr98M+Uojt6lniGvKESmk6rDO8AcVvzIhFH3kcz1g== dependencies: "@iarna/toml" "^2.2.5" case "^1.6.3" @@ -5547,14 +5558,14 @@ redent@^3.0.0: strip-indent "^3.0.0" regexp.prototype.flags@^1.5.2: - version "1.5.2" - resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.5.2.tgz#138f644a3350f981a858c44f6bb1a61ff59be334" - integrity sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw== + version "1.5.3" + resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.5.3.tgz#b3ae40b1d2499b8350ab2c3fe6ef3845d3a96f42" + integrity sha512-vqlC04+RQoFalODCbCumG2xIOvapzVMHwsyIGM/SIE8fRhFFsXeH8/QQ+s0T0kDAhKc4k30s73/0ydkHQz6HlQ== dependencies: - call-bind "^1.0.6" + call-bind "^1.0.7" define-properties "^1.2.1" es-errors "^1.3.0" - set-function-name "^2.0.1" + set-function-name "^2.0.2" repeat-string@^1.6.1: version "1.6.1" @@ -5718,7 +5729,7 @@ set-function-length@^1.2.1: gopd "^1.0.1" has-property-descriptors "^1.0.2" -set-function-name@^2.0.1: +set-function-name@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/set-function-name/-/set-function-name-2.0.2.tgz#16a705c5a0dc2f5e638ca96d8a8cd4e1c2b90985" integrity sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ== @@ -6045,17 +6056,17 @@ through@2, "through@>=2.2.7 <3": resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" integrity sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg== -tldts-core@^6.1.48: - version "6.1.48" - resolved "https://registry.yarnpkg.com/tldts-core/-/tldts-core-6.1.48.tgz#efa7dc689b9757d1d4326b787cd992f10a16b2fb" - integrity sha512-3gD9iKn/n2UuFH1uilBviK9gvTNT6iYwdqrj1Vr5mh8FuelvpRNaYVH4pNYqUgOGU4aAdL9X35eLuuj0gRsx+A== +tldts-core@^6.1.50: + version "6.1.50" + resolved "https://registry.yarnpkg.com/tldts-core/-/tldts-core-6.1.50.tgz#8f8f87928adde862b8bc8ce6954c463e2dded790" + integrity sha512-na2EcZqmdA2iV9zHV7OHQDxxdciEpxrjbkp+aHmZgnZKHzoElLajP59np5/4+sare9fQBfixgvXKx8ev1d7ytw== tldts@^6.1.32: - version "6.1.48" - resolved "https://registry.yarnpkg.com/tldts/-/tldts-6.1.48.tgz#bfef97f407fe73f1a88db8e0f6905378e9a348c0" - integrity sha512-SPbnh1zaSzi/OsmHb1vrPNnYuwJbdWjwo5TbBYYMlTtH3/1DSb41t8bcSxkwDmmbG2q6VLPVvQc7Yf23T+1EEw== + version "6.1.50" + resolved "https://registry.yarnpkg.com/tldts/-/tldts-6.1.50.tgz#3b259a65bb11978a2a3d1b3c37660e542dbf9896" + integrity sha512-q9GOap6q3KCsLMdOjXhWU5jVZ8/1dIib898JBRLsN+tBhENpBDcAVQbE0epADOjw11FhQQy9AcbqKGBQPUfTQA== dependencies: - tldts-core "^6.1.48" + tldts-core "^6.1.50" tmpl@1.0.5: version "1.0.5"

=7 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%0DH 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